You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by he...@apache.org on 2016/02/01 18:52:00 UTC

[01/71] [abbrv] brooklyn-ui git commit: Move mobile app to sandbox

Repository: brooklyn-ui
Updated Branches:
  refs/heads/0.7.0-incubating [created] 3adda0b97


http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/fonts/fontawesome-webfont.ttf
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/fonts/fontawesome-webfont.ttf b/usage/jsgui/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/fonts/fontawesome-webfont.ttf
deleted file mode 100644
index 5cd6cff..0000000
Binary files a/usage/jsgui/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/fonts/fontawesome-webfont.ttf and /dev/null differ

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/fonts/fontawesome-webfont.woff
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/fonts/fontawesome-webfont.woff b/usage/jsgui/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/fonts/fontawesome-webfont.woff
deleted file mode 100644
index 9eaecb3..0000000
Binary files a/usage/jsgui/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/fonts/fontawesome-webfont.woff and /dev/null differ

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/js/mobile-angular-ui.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/js/mobile-angular-ui.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/js/mobile-angular-ui.js
deleted file mode 100644
index c18a8e1..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/js/mobile-angular-ui.js
+++ /dev/null
@@ -1,1854 +0,0 @@
-/*! Overthrow. An overflow:auto polyfill for responsive design. (c) 2012: Scott Jehl, Filament Group, Inc. http://filamentgroup.github.com/Overthrow/license.txt */
-(function( w, undefined ){
-	
-	var doc = w.document,
-		docElem = doc.documentElement,
-		enabledClassName = "overthrow-enabled",
-
-		// Touch events are used in the polyfill, and thus are a prerequisite
-		canBeFilledWithPoly = "ontouchmove" in doc,
-		
-		// The following attempts to determine whether the browser has native overflow support
-		// so we can enable it but not polyfill
-		nativeOverflow = 
-			// Features-first. iOS5 overflow scrolling property check - no UA needed here. thanks Apple :)
-			"WebkitOverflowScrolling" in docElem.style ||
-			// Test the windows scrolling property as well
-			"msOverflowStyle" in docElem.style ||
-			// Touch events aren't supported and screen width is greater than X
-			// ...basically, this is a loose "desktop browser" check. 
-			// It may wrongly opt-in very large tablets with no touch support.
-			( !canBeFilledWithPoly && w.screen.width > 800 ) ||
-			// Hang on to your hats.
-			// Whitelist some popular, overflow-supporting mobile browsers for now and the future
-			// These browsers are known to get overlow support right, but give us no way of detecting it.
-			(function(){
-				var ua = w.navigator.userAgent,
-					// Webkit crosses platforms, and the browsers on our list run at least version 534
-					webkit = ua.match( /AppleWebKit\/([0-9]+)/ ),
-					wkversion = webkit && webkit[1],
-					wkLte534 = webkit && wkversion >= 534;
-					
-				return (
-					/* Android 3+ with webkit gte 534
-					~: Mozilla/5.0 (Linux; U; Android 3.0; en-us; Xoom Build/HRI39) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13 */
-					ua.match( /Android ([0-9]+)/ ) && RegExp.$1 >= 3 && wkLte534 ||
-					/* Blackberry 7+ with webkit gte 534
-					~: Mozilla/5.0 (BlackBerry; U; BlackBerry 9900; en-US) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.0.0 Mobile Safari/534.11+ */
-					ua.match( / Version\/([0-9]+)/ ) && RegExp.$1 >= 0 && w.blackberry && wkLte534 ||
-					/* Blackberry Playbook with webkit gte 534
-					~: Mozilla/5.0 (PlayBook; U; RIM Tablet OS 1.0.0; en-US) AppleWebKit/534.8+ (KHTML, like Gecko) Version/0.0.1 Safari/534.8+ */   
-					ua.indexOf( "PlayBook" ) > -1 && wkLte534 && !ua.indexOf( "Android 2" ) === -1 ||
-					/* Firefox Mobile (Fennec) 4 and up
-					~: Mozilla/5.0 (Mobile; rv:15.0) Gecko/15.0 Firefox/15.0 */
-					ua.match(/Firefox\/([0-9]+)/) && RegExp.$1 >= 4 ||
-					/* WebOS 3 and up (TouchPad too)
-					~: Mozilla/5.0 (hp-tablet; Linux; hpwOS/3.0.0; U; en-US) AppleWebKit/534.6 (KHTML, like Gecko) wOSBrowser/233.48 Safari/534.6 TouchPad/1.0 */
-					ua.match( /wOSBrowser\/([0-9]+)/ ) && RegExp.$1 >= 233 && wkLte534 ||
-					/* Nokia Browser N8
-					~: Mozilla/5.0 (Symbian/3; Series60/5.2 NokiaN8-00/012.002; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.0 Mobile Safari/533.4 3gpp-gba 
-					~: Note: the N9 doesn't have native overflow with one-finger touch. wtf */
-					ua.match( /NokiaBrowser\/([0-9\.]+)/ ) && parseFloat(RegExp.$1) === 7.3 && webkit && wkversion >= 533
-				);
-			})();
-
-	// Expose overthrow API
-	w.overthrow = {};
-
-	w.overthrow.enabledClassName = enabledClassName;
-
-	w.overthrow.addClass = function(){
-		if( docElem.className.indexOf( w.overthrow.enabledClassName ) === -1 ){
-			docElem.className += " " + w.overthrow.enabledClassName;
-		}
-	};
-
-	w.overthrow.removeClass = function(){
-		docElem.className = docElem.className.replace( w.overthrow.enabledClassName, "" );
-	};
-
-	// Enable and potentially polyfill overflow
-	w.overthrow.set = function(){
-			
-		// If nativeOverflow or at least the element canBeFilledWithPoly, add a class to cue CSS that assumes overflow scrolling will work (setting height on elements and such)
-		if( nativeOverflow ){
-			w.overthrow.addClass();
-		}
-
-	};
-
-	// expose polyfillable 
-	w.overthrow.canBeFilledWithPoly = canBeFilledWithPoly;
-
-	// Destroy everything later. If you want to.
-	w.overthrow.forget = function(){
-
-		w.overthrow.removeClass();
-		
-	};
-		
-	// Expose overthrow API
-	w.overthrow.support = nativeOverflow ? "native" : "none";
-		
-})( this );
-
-/*! Overthrow. An overflow:auto polyfill for responsive design. (c) 2012: Scott Jehl, Filament Group, Inc. http://filamentgroup.github.com/Overthrow/license.txt */
-(function( w, undefined ){
-	
-	// Auto-init
-	w.overthrow.set();
-
-}( this ));
-/*! Overthrow. An overflow:auto polyfill for responsive design. (c) 2012: Scott Jehl, Filament Group, Inc. http://filamentgroup.github.com/Overthrow/license.txt */
-(function( w, o, undefined ){
-
-	// o is overthrow reference from overthrow-polyfill.js
-	if( o === undefined ){
-		return;
-	}
-
-	o.scrollIndicatorClassName = "overthrow";
-	
-	var doc = w.document,
-		docElem = doc.documentElement,
-		// o api
-		nativeOverflow = o.support === "native",
-		canBeFilledWithPoly = o.canBeFilledWithPoly,
-		configure = o.configure,
-		set = o.set,
-		forget = o.forget,
-		scrollIndicatorClassName = o.scrollIndicatorClassName;
-
-	// find closest overthrow (elem or a parent)
-	o.closest = function( target, ascend ){
-		return !ascend && target.className && target.className.indexOf( scrollIndicatorClassName ) > -1 && target || o.closest( target.parentNode );
-	};
-		
-	// polyfill overflow
-	var enabled = false;
-	o.set = function(){
-			
-		set();
-
-		// If nativeOverflow or it doesn't look like the browser canBeFilledWithPoly, our job is done here. Exit viewport left.
-		if( enabled || nativeOverflow || !canBeFilledWithPoly ){
-			return;
-		}
-
-		w.overthrow.addClass();
-
-		enabled = true;
-
-		o.support = "polyfilled";
-
-		o.forget = function(){
-			forget();
-			enabled = false;
-			// Remove touch binding (check for method support since this part isn't qualified by touch support like the rest)
-			if( doc.removeEventListener ){
-				doc.removeEventListener( "touchstart", start, false );
-			}
-		};
-
-		// Fill 'er up!
-		// From here down, all logic is associated with touch scroll handling
-			// elem references the overthrow element in use
-		var elem,
-			
-			// The last several Y values are kept here
-			lastTops = [],
-	
-			// The last several X values are kept here
-			lastLefts = [],
-			
-			// lastDown will be true if the last scroll direction was down, false if it was up
-			lastDown,
-			
-			// lastRight will be true if the last scroll direction was right, false if it was left
-			lastRight,
-			
-			// For a new gesture, or change in direction, reset the values from last scroll
-			resetVertTracking = function(){
-				lastTops = [];
-				lastDown = null;
-			},
-			
-			resetHorTracking = function(){
-				lastLefts = [];
-				lastRight = null;
-			},
-		
-			// On webkit, touch events hardly trickle through textareas and inputs
-			// Disabling CSS pointer events makes sure they do, but it also makes the controls innaccessible
-			// Toggling pointer events at the right moments seems to do the trick
-			// Thanks Thomas Bachem http://stackoverflow.com/a/5798681 for the following
-			inputs,
-			setPointers = function( val ){
-				inputs = elem.querySelectorAll( "textarea, input" );
-				for( var i = 0, il = inputs.length; i < il; i++ ) {
-					inputs[ i ].style.pointerEvents = val;
-				}
-			},
-			
-			// For nested overthrows, changeScrollTarget restarts a touch event cycle on a parent or child overthrow
-			changeScrollTarget = function( startEvent, ascend ){
-				if( doc.createEvent ){
-					var newTarget = ( !ascend || ascend === undefined ) && elem.parentNode || elem.touchchild || elem,
-						tEnd;
-							
-					if( newTarget !== elem ){
-						tEnd = doc.createEvent( "HTMLEvents" );
-						tEnd.initEvent( "touchend", true, true );
-						elem.dispatchEvent( tEnd );
-						newTarget.touchchild = elem;
-						elem = newTarget;
-						newTarget.dispatchEvent( startEvent );
-					}
-				}
-			},
-			
-			// Touchstart handler
-			// On touchstart, touchmove and touchend are freshly bound, and all three share a bunch of vars set by touchstart
-			// Touchend unbinds them again, until next time
-			start = function( e ){
-
-				// Stop any throw in progress
-				if( o.intercept ){
-					o.intercept();
-				}
-				
-				// Reset the distance and direction tracking
-				resetVertTracking();
-				resetHorTracking();
-				
-				elem = o.closest( e.target );
-					
-				if( !elem || elem === docElem || e.touches.length > 1 ){
-					return;
-				}			
-
-				setPointers( "none" );
-				var touchStartE = e,
-					scrollT = elem.scrollTop,
-					scrollL = elem.scrollLeft,
-					height = elem.offsetHeight,
-					width = elem.offsetWidth,
-					startY = e.touches[ 0 ].pageY,
-					startX = e.touches[ 0 ].pageX,
-					scrollHeight = elem.scrollHeight,
-					scrollWidth = elem.scrollWidth,
-				
-					// Touchmove handler
-					move = function( e ){
-					
-						var ty = scrollT + startY - e.touches[ 0 ].pageY,
-							tx = scrollL + startX - e.touches[ 0 ].pageX,
-							down = ty >= ( lastTops.length ? lastTops[ 0 ] : 0 ),
-							right = tx >= ( lastLefts.length ? lastLefts[ 0 ] : 0 );
-							
-						// If there's room to scroll the current container, prevent the default window scroll
-						if( ( ty > 0 && ty < scrollHeight - height ) || ( tx > 0 && tx < scrollWidth - width ) ){
-							e.preventDefault();
-						}
-						// This bubbling is dumb. Needs a rethink.
-						else {
-							changeScrollTarget( touchStartE );
-						}
-						
-						// If down and lastDown are inequal, the y scroll has changed direction. Reset tracking.
-						if( lastDown && down !== lastDown ){
-							resetVertTracking();
-						}
-						
-						// If right and lastRight are inequal, the x scroll has changed direction. Reset tracking.
-						if( lastRight && right !== lastRight ){
-							resetHorTracking();
-						}
-						
-						// remember the last direction in which we were headed
-						lastDown = down;
-						lastRight = right;							
-						
-						// set the container's scroll
-						elem.scrollTop = ty;
-						elem.scrollLeft = tx;
-					
-						lastTops.unshift( ty );
-						lastLefts.unshift( tx );
-					
-						if( lastTops.length > 3 ){
-							lastTops.pop();
-						}
-						if( lastLefts.length > 3 ){
-							lastLefts.pop();
-						}
-					},
-				
-					// Touchend handler
-					end = function( e ){
-
-						// Bring the pointers back
-						setPointers( "auto" );
-						setTimeout( function(){
-							setPointers( "none" );
-						}, 450 );
-						elem.removeEventListener( "touchmove", move, false );
-						elem.removeEventListener( "touchend", end, false );
-					};
-				
-				elem.addEventListener( "touchmove", move, false );
-				elem.addEventListener( "touchend", end, false );
-			};
-			
-		// Bind to touch, handle move and end within
-		doc.addEventListener( "touchstart", start, false );
-	};
-		
-})( this, this.overthrow );
-
-/**
- * @preserve FastClick: polyfill to remove click delays on browsers with touch UIs.
- *
- * @version 1.0.2
- * @codingstandard ftlabs-jsv2
- * @copyright The Financial Times Limited [All Rights Reserved]
- * @license MIT License (see LICENSE.txt)
- */
-
-/*jslint browser:true, node:true*/
-/*global define, Event, Node*/
-
-
-/**
- * Instantiate fast-clicking listeners on the specified layer.
- *
- * @constructor
- * @param {Element} layer The layer to listen on
- * @param {Object} options The options to override the defaults
- */
-function FastClick(layer, options) {
-	'use strict';
-	var oldOnClick;
-
-	options = options || {};
-
-	/**
-	 * Whether a click is currently being tracked.
-	 *
-	 * @type boolean
-	 */
-	this.trackingClick = false;
-
-
-	/**
-	 * Timestamp for when click tracking started.
-	 *
-	 * @type number
-	 */
-	this.trackingClickStart = 0;
-
-
-	/**
-	 * The element being tracked for a click.
-	 *
-	 * @type EventTarget
-	 */
-	this.targetElement = null;
-
-
-	/**
-	 * X-coordinate of touch start event.
-	 *
-	 * @type number
-	 */
-	this.touchStartX = 0;
-
-
-	/**
-	 * Y-coordinate of touch start event.
-	 *
-	 * @type number
-	 */
-	this.touchStartY = 0;
-
-
-	/**
-	 * ID of the last touch, retrieved from Touch.identifier.
-	 *
-	 * @type number
-	 */
-	this.lastTouchIdentifier = 0;
-
-
-	/**
-	 * Touchmove boundary, beyond which a click will be cancelled.
-	 *
-	 * @type number
-	 */
-	this.touchBoundary = options.touchBoundary || 10;
-
-
-	/**
-	 * The FastClick layer.
-	 *
-	 * @type Element
-	 */
-	this.layer = layer;
-
-	/**
-	 * The minimum time between tap(touchstart and touchend) events
-	 *
-	 * @type number
-	 */
-	this.tapDelay = options.tapDelay || 200;
-
-	if (FastClick.notNeeded(layer)) {
-		return;
-	}
-
-	// Some old versions of Android don't have Function.prototype.bind
-	function bind(method, context) {
-		return function() { return method.apply(context, arguments); };
-	}
-
-
-	var methods = ['onMouse', 'onClick', 'onTouchStart', 'onTouchMove', 'onTouchEnd', 'onTouchCancel'];
-	var context = this;
-	for (var i = 0, l = methods.length; i < l; i++) {
-		context[methods[i]] = bind(context[methods[i]], context);
-	}
-
-	// Set up event handlers as required
-	if (deviceIsAndroid) {
-		layer.addEventListener('mouseover', this.onMouse, true);
-		layer.addEventListener('mousedown', this.onMouse, true);
-		layer.addEventListener('mouseup', this.onMouse, true);
-	}
-
-	layer.addEventListener('click', this.onClick, true);
-	layer.addEventListener('touchstart', this.onTouchStart, false);
-	layer.addEventListener('touchmove', this.onTouchMove, false);
-	layer.addEventListener('touchend', this.onTouchEnd, false);
-	layer.addEventListener('touchcancel', this.onTouchCancel, false);
-
-	// Hack is required for browsers that don't support Event#stopImmediatePropagation (e.g. Android 2)
-	// which is how FastClick normally stops click events bubbling to callbacks registered on the FastClick
-	// layer when they are cancelled.
-	if (!Event.prototype.stopImmediatePropagation) {
-		layer.removeEventListener = function(type, callback, capture) {
-			var rmv = Node.prototype.removeEventListener;
-			if (type === 'click') {
-				rmv.call(layer, type, callback.hijacked || callback, capture);
-			} else {
-				rmv.call(layer, type, callback, capture);
-			}
-		};
-
-		layer.addEventListener = function(type, callback, capture) {
-			var adv = Node.prototype.addEventListener;
-			if (type === 'click') {
-				adv.call(layer, type, callback.hijacked || (callback.hijacked = function(event) {
-					if (!event.propagationStopped) {
-						callback(event);
-					}
-				}), capture);
-			} else {
-				adv.call(layer, type, callback, capture);
-			}
-		};
-	}
-
-	// If a handler is already declared in the element's onclick attribute, it will be fired before
-	// FastClick's onClick handler. Fix this by pulling out the user-defined handler function and
-	// adding it as listener.
-	if (typeof layer.onclick === 'function') {
-
-		// Android browser on at least 3.2 requires a new reference to the function in layer.onclick
-		// - the old one won't work if passed to addEventListener directly.
-		oldOnClick = layer.onclick;
-		layer.addEventListener('click', function(event) {
-			oldOnClick(event);
-		}, false);
-		layer.onclick = null;
-	}
-}
-
-
-/**
- * Android requires exceptions.
- *
- * @type boolean
- */
-var deviceIsAndroid = navigator.userAgent.indexOf('Android') > 0;
-
-
-/**
- * iOS requires exceptions.
- *
- * @type boolean
- */
-var deviceIsIOS = /iP(ad|hone|od)/.test(navigator.userAgent);
-
-
-/**
- * iOS 4 requires an exception for select elements.
- *
- * @type boolean
- */
-var deviceIsIOS4 = deviceIsIOS && (/OS 4_\d(_\d)?/).test(navigator.userAgent);
-
-
-/**
- * iOS 6.0(+?) requires the target element to be manually derived
- *
- * @type boolean
- */
-var deviceIsIOSWithBadTarget = deviceIsIOS && (/OS ([6-9]|\d{2})_\d/).test(navigator.userAgent);
-
-
-/**
- * Determine whether a given element requires a native click.
- *
- * @param {EventTarget|Element} target Target DOM element
- * @returns {boolean} Returns true if the element needs a native click
- */
-FastClick.prototype.needsClick = function(target) {
-	'use strict';
-	switch (target.nodeName.toLowerCase()) {
-
-	// Don't send a synthetic click to disabled inputs (issue #62)
-	case 'button':
-	case 'select':
-	case 'textarea':
-		if (target.disabled) {
-			return true;
-		}
-
-		break;
-	case 'input':
-
-		// File inputs need real clicks on iOS 6 due to a browser bug (issue #68)
-		if ((deviceIsIOS && target.type === 'file') || target.disabled) {
-			return true;
-		}
-
-		break;
-	case 'label':
-	case 'video':
-		return true;
-	}
-
-	return (/\bneedsclick\b/).test(target.className);
-};
-
-
-/**
- * Determine whether a given element requires a call to focus to simulate click into element.
- *
- * @param {EventTarget|Element} target Target DOM element
- * @returns {boolean} Returns true if the element requires a call to focus to simulate native click.
- */
-FastClick.prototype.needsFocus = function(target) {
-	'use strict';
-	switch (target.nodeName.toLowerCase()) {
-	case 'textarea':
-		return true;
-	case 'select':
-		return !deviceIsAndroid;
-	case 'input':
-		switch (target.type) {
-		case 'button':
-		case 'checkbox':
-		case 'file':
-		case 'image':
-		case 'radio':
-		case 'submit':
-			return false;
-		}
-
-		// No point in attempting to focus disabled inputs
-		return !target.disabled && !target.readOnly;
-	default:
-		return (/\bneedsfocus\b/).test(target.className);
-	}
-};
-
-
-/**
- * Send a click event to the specified element.
- *
- * @param {EventTarget|Element} targetElement
- * @param {Event} event
- */
-FastClick.prototype.sendClick = function(targetElement, event) {
-	'use strict';
-	var clickEvent, touch;
-
-	// On some Android devices activeElement needs to be blurred otherwise the synthetic click will have no effect (#24)
-	if (document.activeElement && document.activeElement !== targetElement) {
-		document.activeElement.blur();
-	}
-
-	touch = event.changedTouches[0];
-
-	// Synthesise a click event, with an extra attribute so it can be tracked
-	clickEvent = document.createEvent('MouseEvents');
-	clickEvent.initMouseEvent(this.determineEventType(targetElement), true, true, window, 1, touch.screenX, touch.screenY, touch.clientX, touch.clientY, false, false, false, false, 0, null);
-	clickEvent.forwardedTouchEvent = true;
-	targetElement.dispatchEvent(clickEvent);
-};
-
-FastClick.prototype.determineEventType = function(targetElement) {
-	'use strict';
-
-	//Issue #159: Android Chrome Select Box does not open with a synthetic click event
-	if (deviceIsAndroid && targetElement.tagName.toLowerCase() === 'select') {
-		return 'mousedown';
-	}
-
-	return 'click';
-};
-
-
-/**
- * @param {EventTarget|Element} targetElement
- */
-FastClick.prototype.focus = function(targetElement) {
-	'use strict';
-	var length;
-
-	// Issue #160: on iOS 7, some input elements (e.g. date datetime) throw a vague TypeError on setSelectionRange. These elements don't have an integer value for the selectionStart and selectionEnd properties, but unfortunately that can't be used for detection because accessing the properties also throws a TypeError. Just check the type instead. Filed as Apple bug #15122724.
-	if (deviceIsIOS && targetElement.setSelectionRange && targetElement.type.indexOf('date') !== 0 && targetElement.type !== 'time') {
-		length = targetElement.value.length;
-		targetElement.setSelectionRange(length, length);
-	} else {
-		targetElement.focus();
-	}
-};
-
-
-/**
- * Check whether the given target element is a child of a scrollable layer and if so, set a flag on it.
- *
- * @param {EventTarget|Element} targetElement
- */
-FastClick.prototype.updateScrollParent = function(targetElement) {
-	'use strict';
-	var scrollParent, parentElement;
-
-	scrollParent = targetElement.fastClickScrollParent;
-
-	// Attempt to discover whether the target element is contained within a scrollable layer. Re-check if the
-	// target element was moved to another parent.
-	if (!scrollParent || !scrollParent.contains(targetElement)) {
-		parentElement = targetElement;
-		do {
-			if (parentElement.scrollHeight > parentElement.offsetHeight) {
-				scrollParent = parentElement;
-				targetElement.fastClickScrollParent = parentElement;
-				break;
-			}
-
-			parentElement = parentElement.parentElement;
-		} while (parentElement);
-	}
-
-	// Always update the scroll top tracker if possible.
-	if (scrollParent) {
-		scrollParent.fastClickLastScrollTop = scrollParent.scrollTop;
-	}
-};
-
-
-/**
- * @param {EventTarget} targetElement
- * @returns {Element|EventTarget}
- */
-FastClick.prototype.getTargetElementFromEventTarget = function(eventTarget) {
-	'use strict';
-
-	// On some older browsers (notably Safari on iOS 4.1 - see issue #56) the event target may be a text node.
-	if (eventTarget.nodeType === Node.TEXT_NODE) {
-		return eventTarget.parentNode;
-	}
-
-	return eventTarget;
-};
-
-
-/**
- * On touch start, record the position and scroll offset.
- *
- * @param {Event} event
- * @returns {boolean}
- */
-FastClick.prototype.onTouchStart = function(event) {
-	'use strict';
-	var targetElement, touch, selection;
-
-	// Ignore multiple touches, otherwise pinch-to-zoom is prevented if both fingers are on the FastClick element (issue #111).
-	if (event.targetTouches.length > 1) {
-		return true;
-	}
-
-	targetElement = this.getTargetElementFromEventTarget(event.target);
-	touch = event.targetTouches[0];
-
-	if (deviceIsIOS) {
-
-		// Only trusted events will deselect text on iOS (issue #49)
-		selection = window.getSelection();
-		if (selection.rangeCount && !selection.isCollapsed) {
-			return true;
-		}
-
-		if (!deviceIsIOS4) {
-
-			// Weird things happen on iOS when an alert or confirm dialog is opened from a click event callback (issue #23):
-			// when the user next taps anywhere else on the page, new touchstart and touchend events are dispatched
-			// with the same identifier as the touch event that previously triggered the click that triggered the alert.
-			// Sadly, there is an issue on iOS 4 that causes some normal touch events to have the same identifier as an
-			// immediately preceeding touch event (issue #52), so this fix is unavailable on that platform.
-			if (touch.identifier === this.lastTouchIdentifier) {
-				event.preventDefault();
-				return false;
-			}
-
-			this.lastTouchIdentifier = touch.identifier;
-
-			// If the target element is a child of a scrollable layer (using -webkit-overflow-scrolling: touch) and:
-			// 1) the user does a fling scroll on the scrollable layer
-			// 2) the user stops the fling scroll with another tap
-			// then the event.target of the last 'touchend' event will be the element that was under the user's finger
-			// when the fling scroll was started, causing FastClick to send a click event to that layer - unless a check
-			// is made to ensure that a parent layer was not scrolled before sending a synthetic click (issue #42).
-			this.updateScrollParent(targetElement);
-		}
-	}
-
-	this.trackingClick = true;
-	this.trackingClickStart = event.timeStamp;
-	this.targetElement = targetElement;
-
-	this.touchStartX = touch.pageX;
-	this.touchStartY = touch.pageY;
-
-	// Prevent phantom clicks on fast double-tap (issue #36)
-	if ((event.timeStamp - this.lastClickTime) < this.tapDelay) {
-		event.preventDefault();
-	}
-
-	return true;
-};
-
-
-/**
- * Based on a touchmove event object, check whether the touch has moved past a boundary since it started.
- *
- * @param {Event} event
- * @returns {boolean}
- */
-FastClick.prototype.touchHasMoved = function(event) {
-	'use strict';
-	var touch = event.changedTouches[0], boundary = this.touchBoundary;
-
-	if (Math.abs(touch.pageX - this.touchStartX) > boundary || Math.abs(touch.pageY - this.touchStartY) > boundary) {
-		return true;
-	}
-
-	return false;
-};
-
-
-/**
- * Update the last position.
- *
- * @param {Event} event
- * @returns {boolean}
- */
-FastClick.prototype.onTouchMove = function(event) {
-	'use strict';
-	if (!this.trackingClick) {
-		return true;
-	}
-
-	// If the touch has moved, cancel the click tracking
-	if (this.targetElement !== this.getTargetElementFromEventTarget(event.target) || this.touchHasMoved(event)) {
-		this.trackingClick = false;
-		this.targetElement = null;
-	}
-
-	return true;
-};
-
-
-/**
- * Attempt to find the labelled control for the given label element.
- *
- * @param {EventTarget|HTMLLabelElement} labelElement
- * @returns {Element|null}
- */
-FastClick.prototype.findControl = function(labelElement) {
-	'use strict';
-
-	// Fast path for newer browsers supporting the HTML5 control attribute
-	if (labelElement.control !== undefined) {
-		return labelElement.control;
-	}
-
-	// All browsers under test that support touch events also support the HTML5 htmlFor attribute
-	if (labelElement.htmlFor) {
-		return document.getElementById(labelElement.htmlFor);
-	}
-
-	// If no for attribute exists, attempt to retrieve the first labellable descendant element
-	// the list of which is defined here: http://www.w3.org/TR/html5/forms.html#category-label
-	return labelElement.querySelector('button, input:not([type=hidden]), keygen, meter, output, progress, select, textarea');
-};
-
-
-/**
- * On touch end, determine whether to send a click event at once.
- *
- * @param {Event} event
- * @returns {boolean}
- */
-FastClick.prototype.onTouchEnd = function(event) {
-	'use strict';
-	var forElement, trackingClickStart, targetTagName, scrollParent, touch, targetElement = this.targetElement;
-
-	if (!this.trackingClick) {
-		return true;
-	}
-
-	// Prevent phantom clicks on fast double-tap (issue #36)
-	if ((event.timeStamp - this.lastClickTime) < this.tapDelay) {
-		this.cancelNextClick = true;
-		return true;
-	}
-
-	// Reset to prevent wrong click cancel on input (issue #156).
-	this.cancelNextClick = false;
-
-	this.lastClickTime = event.timeStamp;
-
-	trackingClickStart = this.trackingClickStart;
-	this.trackingClick = false;
-	this.trackingClickStart = 0;
-
-	// On some iOS devices, the targetElement supplied with the event is invalid if the layer
-	// is performing a transition or scroll, and has to be re-detected manually. Note that
-	// for this to function correctly, it must be called *after* the event target is checked!
-	// See issue #57; also filed as rdar://13048589 .
-	if (deviceIsIOSWithBadTarget) {
-		touch = event.changedTouches[0];
-
-		// In certain cases arguments of elementFromPoint can be negative, so prevent setting targetElement to null
-		targetElement = document.elementFromPoint(touch.pageX - window.pageXOffset, touch.pageY - window.pageYOffset) || targetElement;
-		targetElement.fastClickScrollParent = this.targetElement.fastClickScrollParent;
-	}
-
-	targetTagName = targetElement.tagName.toLowerCase();
-	if (targetTagName === 'label') {
-		forElement = this.findControl(targetElement);
-		if (forElement) {
-			this.focus(targetElement);
-			if (deviceIsAndroid) {
-				return false;
-			}
-
-			targetElement = forElement;
-		}
-	} else if (this.needsFocus(targetElement)) {
-
-		// Case 1: If the touch started a while ago (best guess is 100ms based on tests for issue #36) then focus will be triggered anyway. Return early and unset the target element reference so that the subsequent click will be allowed through.
-		// Case 2: Without this exception for input elements tapped when the document is contained in an iframe, then any inputted text won't be visible even though the value attribute is updated as the user types (issue #37).
-		if ((event.timeStamp - trackingClickStart) > 100 || (deviceIsIOS && window.top !== window && targetTagName === 'input')) {
-			this.targetElement = null;
-			return false;
-		}
-
-		this.focus(targetElement);
-		this.sendClick(targetElement, event);
-
-		// Select elements need the event to go through on iOS 4, otherwise the selector menu won't open.
-		// Also this breaks opening selects when VoiceOver is active on iOS6, iOS7 (and possibly others)
-		if (!deviceIsIOS || targetTagName !== 'select') {
-			this.targetElement = null;
-			event.preventDefault();
-		}
-
-		return false;
-	}
-
-	if (deviceIsIOS && !deviceIsIOS4) {
-
-		// Don't send a synthetic click event if the target element is contained within a parent layer that was scrolled
-		// and this tap is being used to stop the scrolling (usually initiated by a fling - issue #42).
-		scrollParent = targetElement.fastClickScrollParent;
-		if (scrollParent && scrollParent.fastClickLastScrollTop !== scrollParent.scrollTop) {
-			return true;
-		}
-	}
-
-	// Prevent the actual click from going though - unless the target node is marked as requiring
-	// real clicks or if it is in the whitelist in which case only non-programmatic clicks are permitted.
-	if (!this.needsClick(targetElement)) {
-		event.preventDefault();
-		this.sendClick(targetElement, event);
-	}
-
-	return false;
-};
-
-
-/**
- * On touch cancel, stop tracking the click.
- *
- * @returns {void}
- */
-FastClick.prototype.onTouchCancel = function() {
-	'use strict';
-	this.trackingClick = false;
-	this.targetElement = null;
-};
-
-
-/**
- * Determine mouse events which should be permitted.
- *
- * @param {Event} event
- * @returns {boolean}
- */
-FastClick.prototype.onMouse = function(event) {
-	'use strict';
-
-	// If a target element was never set (because a touch event was never fired) allow the event
-	if (!this.targetElement) {
-		return true;
-	}
-
-	if (event.forwardedTouchEvent) {
-		return true;
-	}
-
-	// Programmatically generated events targeting a specific element should be permitted
-	if (!event.cancelable) {
-		return true;
-	}
-
-	// Derive and check the target element to see whether the mouse event needs to be permitted;
-	// unless explicitly enabled, prevent non-touch click events from triggering actions,
-	// to prevent ghost/doubleclicks.
-	if (!this.needsClick(this.targetElement) || this.cancelNextClick) {
-
-		// Prevent any user-added listeners declared on FastClick element from being fired.
-		if (event.stopImmediatePropagation) {
-			event.stopImmediatePropagation();
-		} else {
-
-			// Part of the hack for browsers that don't support Event#stopImmediatePropagation (e.g. Android 2)
-			event.propagationStopped = true;
-		}
-
-		// Cancel the event
-		event.stopPropagation();
-		event.preventDefault();
-
-		return false;
-	}
-
-	// If the mouse event is permitted, return true for the action to go through.
-	return true;
-};
-
-
-/**
- * On actual clicks, determine whether this is a touch-generated click, a click action occurring
- * naturally after a delay after a touch (which needs to be cancelled to avoid duplication), or
- * an actual click which should be permitted.
- *
- * @param {Event} event
- * @returns {boolean}
- */
-FastClick.prototype.onClick = function(event) {
-	'use strict';
-	var permitted;
-
-	// It's possible for another FastClick-like library delivered with third-party code to fire a click event before FastClick does (issue #44). In that case, set the click-tracking flag back to false and return early. This will cause onTouchEnd to return early.
-	if (this.trackingClick) {
-		this.targetElement = null;
-		this.trackingClick = false;
-		return true;
-	}
-
-	// Very odd behaviour on iOS (issue #18): if a submit element is present inside a form and the user hits enter in the iOS simulator or clicks the Go button on the pop-up OS keyboard the a kind of 'fake' click event will be triggered with the submit-type input element as the target.
-	if (event.target.type === 'submit' && event.detail === 0) {
-		return true;
-	}
-
-	permitted = this.onMouse(event);
-
-	// Only unset targetElement if the click is not permitted. This will ensure that the check for !targetElement in onMouse fails and the browser's click doesn't go through.
-	if (!permitted) {
-		this.targetElement = null;
-	}
-
-	// If clicks are permitted, return true for the action to go through.
-	return permitted;
-};
-
-
-/**
- * Remove all FastClick's event listeners.
- *
- * @returns {void}
- */
-FastClick.prototype.destroy = function() {
-	'use strict';
-	var layer = this.layer;
-
-	if (deviceIsAndroid) {
-		layer.removeEventListener('mouseover', this.onMouse, true);
-		layer.removeEventListener('mousedown', this.onMouse, true);
-		layer.removeEventListener('mouseup', this.onMouse, true);
-	}
-
-	layer.removeEventListener('click', this.onClick, true);
-	layer.removeEventListener('touchstart', this.onTouchStart, false);
-	layer.removeEventListener('touchmove', this.onTouchMove, false);
-	layer.removeEventListener('touchend', this.onTouchEnd, false);
-	layer.removeEventListener('touchcancel', this.onTouchCancel, false);
-};
-
-
-/**
- * Check whether FastClick is needed.
- *
- * @param {Element} layer The layer to listen on
- */
-FastClick.notNeeded = function(layer) {
-	'use strict';
-	var metaViewport;
-	var chromeVersion;
-
-	// Devices that don't support touch don't need FastClick
-	if (typeof window.ontouchstart === 'undefined') {
-		return true;
-	}
-
-	// Chrome version - zero for other browsers
-	chromeVersion = +(/Chrome\/([0-9]+)/.exec(navigator.userAgent) || [,0])[1];
-
-	if (chromeVersion) {
-
-		if (deviceIsAndroid) {
-			metaViewport = document.querySelector('meta[name=viewport]');
-
-			if (metaViewport) {
-				// Chrome on Android with user-scalable="no" doesn't need FastClick (issue #89)
-				if (metaViewport.content.indexOf('user-scalable=no') !== -1) {
-					return true;
-				}
-				// Chrome 32 and above with width=device-width or less don't need FastClick
-				if (chromeVersion > 31 && document.documentElement.scrollWidth <= window.outerWidth) {
-					return true;
-				}
-			}
-
-		// Chrome desktop doesn't need FastClick (issue #15)
-		} else {
-			return true;
-		}
-	}
-
-	// IE10 with -ms-touch-action: none, which disables double-tap-to-zoom (issue #97)
-	if (layer.style.msTouchAction === 'none') {
-		return true;
-	}
-
-	return false;
-};
-
-
-/**
- * Factory method for creating a FastClick object
- *
- * @param {Element} layer The layer to listen on
- * @param {Object} options The options to override the defaults
- */
-FastClick.attach = function(layer, options) {
-	'use strict';
-	return new FastClick(layer, options);
-};
-
-
-if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {
-
-	// AMD. Register as an anonymous module.
-	define(function() {
-		'use strict';
-		return FastClick;
-	});
-} else if (typeof module !== 'undefined' && module.exports) {
-	module.exports = FastClick.attach;
-	module.exports.FastClick = FastClick;
-} else {
-	window.FastClick = FastClick;
-}
-
-angular.module("mobile-angular-ui.active-links", []).run([
-  "$rootScope", function($rootScope) {
-    return angular.forEach(["$locationChangeSuccess", "$includeContentLoaded"], function(evtName) {
-      return $rootScope.$on(evtName, function() {
-        var newPath;
-        newPath = window.location.href;
-        angular.forEach(document.links, function(domLink) {
-          var link;
-          link = angular.element(domLink);
-          if (domLink.href === newPath) {
-            link.addClass("active");
-          } else {
-            link.removeClass("active");
-          }
-          return link = null;
-        });
-        return newPath = null;
-      });
-    });
-  }
-]);
-
-angular.module("mobile-angular-ui.directives.capture", [])
-
-.run([
-  "CaptureService", "$rootScope", function(CaptureService, $rootScope) {
-    $rootScope.$on('$routeChangeStart', function() {
-      CaptureService.resetAll();
-    });
-  }
-])
-
-.factory("CaptureService", [
-  "$compile", function($compile) {
-    var yielders = {};
-
-    return {
-      resetAll: function() {
-        for (name in yielders) {
-          this.resetYielder(name);
-        }
-      },
-      
-      resetYielder: function(name) {
-        var b = yielders[name];
-        this.setContentFor(name, b.defaultContent, b.defaultScope);
-      },
-
-      putYielder: function(name, element, defaultScope, defaultContent) {
-        var yielder = {};
-        yielder.name = name;
-        yielder.element = element;
-        yielder.defaultContent = defaultContent || "";
-        yielder.defaultScope = defaultScope;
-        yielders[name] = yielder;
-      },
-
-      getYielder: function(name) {
-        return yielders[name];
-      },
-
-      removeYielder: function(name) {
-        delete yielders[name];
-      },
-      
-      setContentFor: function(name, content, scope) {
-        var b = yielders[name];
-        if (!b) {
-          return;
-        }
-        b.element.html(content);
-        $compile(b.element.contents())(scope);
-      }
-
-    };
-  }
-])
-
-.directive("contentFor", [
-  "CaptureService", function(CaptureService) {
-    return {
-      compile: function(tElem, tAttrs) {
-        var rawContent = tElem.html();
-        if(tAttrs.duplicate == null) {
-          // no need to compile anything!
-          tElem.html("");
-        }
-        return function postLink(scope, elem, attrs) {
-          CaptureService.setContentFor(attrs.contentFor, rawContent, scope);
-          if (attrs.duplicate == null) {
-            elem.remove();
-          }
-        }
-      }
-    };
-  }
-])
-
-.directive("yieldTo", [
-  "$compile", "CaptureService", function($compile, CaptureService) {
-    return {
-      link: function(scope, element, attr) {
-        CaptureService.putYielder(attr.yieldTo, element, scope, element.html());
-        element.contents().remove();
-
-        scope.$on('$destroy', function(){
-          CaptureService.removeYielder(attr.yieldTo);
-        });
-      }
-    };
-  }
-]);
-
-angular.module('mobile-angular-ui.directives.carousel', [])
-
-.run(["$rootScope", function($rootScope) {
-    
-    $rootScope.carouselPrev = function(id) {
-      $rootScope.$emit("mobile-angular-ui.carousel.prev", id);
-    };
-    
-    $rootScope.carouselNext = function(id) {
-      $rootScope.$emit("mobile-angular-ui.carousel.next", id);
-    };
-    
-    var carouselItems = function(id) {
-      var elem = angular.element(document.getElementById(id));
-      var res = angular.element(elem.children()[0]).children();
-      elem = null;
-      return res;
-    };
-
-    var findActiveItemIndex = function(items) {
-      var idx = -1;
-      var found = false;
-
-      for (var _i = 0; _i < items.length; _i++) {
-        item = items[_i];
-        idx += 1;
-        if (angular.element(item).hasClass('active')) {
-          found = true;
-          break;
-        }
-      }
-
-      if (found) {
-        return idx;
-      } else {
-        return -1;
-      }
-
-    };
-
-    $rootScope.$on("mobile-angular-ui.carousel.prev", function(e, id) {
-      var items = carouselItems(id);
-      var idx = findActiveItemIndex(items);
-      var lastIdx = items.length - 1;
-
-      if (idx !== -1) {
-        angular.element(items[idx]).removeClass("active");
-      }
-
-      if (idx <= 0) {
-        angular.element(items[lastIdx]).addClass("active");
-      } else {
-        angular.element(items[idx - 1]).addClass("active");
-      }
-
-      items = null;
-      idx = null;
-      lastIdx = null;
-    });
-
-    $rootScope.$on("mobile-angular-ui.carousel.next", function(e, id) {
-      var items = carouselItems(id);
-      var idx = findActiveItemIndex(items);
-      var lastIdx = items.length - 1;
-      
-      if (idx !== -1) {
-        angular.element(items[idx]).removeClass("active");
-      }
-      
-      if (idx === lastIdx) {
-        angular.element(items[0]).addClass("active");
-      } else {
-        angular.element(items[idx + 1]).addClass("active");
-      }
-      
-      items = null;
-      idx = null;
-      lastIdx = null;
-    });
-  }
-]);
-
-// Provides touch events via fastclick.js
-angular.module('mobile-angular-ui.fastclick', [])
-
-.run([
-  '$window', '$document', function($window, $document) {
-    $window.addEventListener("load", (function() {
-       FastClick.attach($document[0].body);
-    }), false);
-  }
-])
-
-.directive("select", function() {
-  return {
-    replace: false,
-    restrict: "E",
-    link: function(scope, element, attr) {
-      element.addClass("needsclick");
-    }
-  };
-})
-
-.directive("input", function() {
-  return {
-    replace: false,
-    restrict: "E",
-    link: function(scope, element, attr) {
-      element.addClass("needsclick");
-    }
-  };
-})
-
-.directive("textarea", function() {
-  return {
-    replace: false,
-    restrict: "E",
-    link: function(scope, element, attr) {
-      element.addClass("needsclick");
-    }
-  };
-})
-
-angular.module('mobile-angular-ui.directives.forms', [])
-
-.directive("bsFormControl", function() {
-  var bs_col_classes = {};
-  var bs_col_sizes = ['xs', 'sm', 'md', 'lg'];
-  
-  for (var i = 0; i < bs_col_sizes.length; i++) {
-    for (var j = 1; j <= 12; j++) {
-      bs_col_classes['col-' + bs_col_sizes[i] + "-" + j] = true;
-    }
-  };
-  
-  function separeBsColClasses(clss) {
-    var intersection = "";
-    var difference = "";
-
-    for (var i = 0; i < clss.length; i++) {
-        var v = clss[i];
-        if (v in bs_col_classes) { 
-          intersection += (v + " "); 
-        } else {
-          difference += (v + " ");
-        }
-    }
-
-    return {i: intersection.trim(), d: difference.trim()};
-  }
-
-  return {
-    replace: true,
-    require: "ngModel",
-    link: function(scope, elem, attrs) {
-
-      if (attrs.labelClass == null) {
-        attrs.labelClass = "";
-      }
-
-      if (attrs.id == null) {
-        attrs.id = attrs.ngModel.replace(".", "_") + "_input";
-      }
-      
-      if ((elem[0].tagName == "SELECT") || ((elem[0].tagName == "INPUT" || elem[0].tagName == "TEXTAREA") && (attrs.type != "checkbox" && attrs.type != "radio"))) {
-        elem.addClass("form-control");
-      }
-      
-      var label = angular.element("<label for=\"" + attrs.id + "\" class=\"control-label\">" + attrs.label + "</label>");
-      var w1 = angular.element("<div class=\"form-group row\"></div>"); 
-      var w2 = angular.element("<div class=\"form-control-wrapper\"></div>");
-      
-      var labelColClasses = separeBsColClasses(attrs.labelClass.split(/\s+/));
-      if (labelColClasses.i == "") {
-        label.addClass("col-xs-12");
-      }
-      label.addClass(attrs.labelClass);
-
-      var elemColClasses = separeBsColClasses(elem[0].className.split(/\s+/));
-      elem.removeClass(elemColClasses.i);
-      w2.addClass(elemColClasses.i);
-      if (elemColClasses.i == "") {
-        w2.addClass("col-xs-12");
-      }
-      elem.wrap(w1).wrap(w2);
-      elem.parent().parent().prepend(label);
-      elem.attr('id', attrs.id);
-
-      label = w1 = w2 = labelColClasses = elemColClasses = null;
-    }
-  };
-})
-
-.directive("switch", function() {
-  return {
-    restrict: "EA",
-    replace: true,
-    scope: {
-      model: "=ngModel",
-      changeExpr: "@ngChange",
-      disabled: "@"
-    },
-    template: "<div class='switch' ng-class='{active: model}'><div class='switch-handle'></div></div>",
-    link: function(scope, elem, attrs) {
-
-      elem.on('click tap', function(){
-        if (attrs.disabled == null) {
-          scope.model = !scope.model;
-          scope.$apply();
-
-          if (scope.changeExpr != null) {
-            scope.$parent.$eval(scope.changeExpr);
-          };
-        }
-      });
-
-      elem.addClass('switch-transition-enabled');
-    }
-  };
-});
-angular.module('mobile-angular-ui.directives.navbars', [])
-
-.directive('navbarAbsoluteTop', function() {
-  return {
-    replace: false,
-    restrict: "C",
-    link: function(scope, elem, attrs) {
-      elem.parent().addClass('has-navbar-top');
-    }
-  };
-})
-
-.directive('navbarAbsoluteBottom', function() {
-  return {
-    replace: false,
-    restrict: "C",
-    link: function(scope, elem, attrs) {
-      elem.parent().addClass('has-navbar-bottom');
-    }
-  };
-});
-angular.module('mobile-angular-ui.directives.overlay', []).directive('overlay', [
-  "$compile", function($compile) {
-    return {
-        compile: function(tElem, tAttrs) {
-            var rawContent = tElem.html();
-            return function postLink(scope, elem, attrs) {
-                var active = "";
-                var body = rawContent;
-                var id = attrs.overlay;
-
-                if (attrs["default"] != null) {
-                  var active = "default='" + attrs["default"] + "'";
-                }
-
-                var html = "<div class=\"overlay\" id=\"" + id + "\" toggleable " + active + " parent-active-class=\"overlay-in\" active-class=\"overlay-show\">\n  <div class=\"overlay-inner\">\n    <div class=\"overlay-background\"></div>\n    <a href=\"#" + id + "\" toggle=\"off\" class=\"overlay-dismiss\">\n      <i class=\"fa fa-times-circle-o\"></i>\n    </a>\n    <div class=\"overlay-content\">\n      <div class=\"overlay-body\">\n        " + body + "\n      </div>\n    </div>\n  </div>\n</div>";
-                elem.remove();
-
-                var sameId = angular.element(document.getElementById(id));
-
-                if (sameId.length > 0 && sameId.hasClass('overlay')) {
-                  sameId.remove();
-                }
-
-                body = angular.element(document.body);
-                body.prepend($compile(html)(scope));
-
-                if (attrs["default"] === "active") {
-                   body.addClass('overlay-in');
-                }
-            }
-        }
-    };
-  }
-]);
-
-angular.module("mobile-angular-ui.directives.panels", [])
-
-.directive("bsPanel", function() {
-  return {
-    restrict: 'EA',
-    replace: true,
-    scope: false,
-    transclude: true,
-    link: function(scope, elem, attrs) {
-      elem.removeAttr('title');
-    },
-    template: function(elems, attrs) {
-      var heading = "";
-      if (attrs.title) {
-        heading = "<div class=\"panel-heading\">\n  <h2 class=\"panel-title\">\n    " + attrs.title + "\n  </h2>\n</div>";
-      }
-      return "<div class=\"panel\">\n  " + heading + "\n  <div class=\"panel-body\">\n     <div ng-transclude></div>\n  </div>\n</div>";
-    }
-  };
-});
-angular.module('mobile-angular-ui.pointer-events', []).run([
-  '$document', function($document) {
-    return angular.element($document).on("click tap", function(e) {
-      var target;
-      target = angular.element(e.target);
-      if (target.hasClass("disabled")) {
-        e.preventDefault();
-        e.stopPropagation();
-        target = null;
-        return false;
-      } else {
-        target = null;
-        return true;
-      }
-    });
-  }
-]);
-
- // Provides a scrollable implementation based on Overthrow
- // Many thanks to pavei (https://github.com/pavei) to submit
- // basic implementation
-
-angular.module("mobile-angular-ui.scrollable", [])
-
-.directive("scrollableContent", [
-  function() {
-    return {
-      replace: false,
-      restrict: "C",
-      link: function(scope, element, attr) {
-        if (overthrow.support !== "native") {
-          element.addClass("overthrow");
-          overthrow.forget();
-          return overthrow.set();
-        }
-      }
-    };
-  }
-]);
-angular.module('mobile-angular-ui.directives.sidebars', [])
-
-.directive('sidebar', ['$document', '$rootScope', function($document, $rootScope) {
-  return {
-    replace: false,
-    restrict: "C",
-    link: function(scope, elem, attrs) {
-      var shouldCloseOnOuterClicks = true;
-      
-      if( attrs.closeOnOuterClicks == 'false' || attrs.closeOnOuterClicks == '0') {
-        shouldCloseOnOuterClicks = false;
-      }
-
-      if (elem.hasClass('sidebar-left')) {
-        elem.parent().addClass('has-sidebar-left');
-      }
-
-      if (elem.hasClass('sidebar-right')) {
-        elem.parent().addClass('has-sidebar-right');
-      }
-
-      var isAncestorOrSelf = function(element, target) {
-        var parent = element;
-
-        while (parent.length > 0) {
-            if (parent[0] === target[0]) {
-                parent = null;     
-                return true;
-            }
-            parent = parent.parent();
-        }
-
-        parent = null;
-        return false;
-      };
-
-      var closeOnOuterClicks = function(e) {
-        if(! isAncestorOrSelf(angular.element(e.target), elem)) {
-            $rootScope.toggle(attrs.id, 'off');
-            e.preventDefault()
-            return false;
-        }
-      }
-      
-      var clearCb1 = angular.noop();
-      
-      if (shouldCloseOnOuterClicks) {
-        clearCb1 = $rootScope.$on('mobile-angular-ui.toggle.toggled', function(e, id, active){
-          if(id == attrs.id) {
-            if(active) {
-              setTimeout(function(){
-                $document.on('click tap', closeOnOuterClicks);
-              }, 300);
-            } else {
-              $document.unbind('click tap', closeOnOuterClicks);
-            }
-          }
-        });
-      }
-
-      scope.$on('$destroy', function(){
-        clearCb1();
-        $document.unbind('click tap', closeOnOuterClicks);
-      });
-
-    }
-  };
-}]);
-
-angular.module('mobile-angular-ui.directives.toggle', [])
-
-.factory('ToggleHelper', [
-  '$rootScope', function($rootScope) {
-    return {
-      
-      events: {
-        toggle: "mobile-angular-ui.toggle.toggle",
-        toggleByClass: "mobile-angular-ui.toggle.toggleByClass",
-        togglerLinked: "mobile-angular-ui.toggle.linked",
-        toggleableToggled: "mobile-angular-ui.toggle.toggled"
-      },
-
-      commands: {
-        alternate: "toggle",
-        activate: "on",
-        deactivate: "off"
-      },
-
-      toggle: function(target, command) {
-        if (command == null) {
-          command = "toggle";
-        }
-        $rootScope.$emit(this.events.toggle, target, command);
-      },
-
-      toggleByClass: function(targetClass, command) {
-        if (command == null) {
-          command = "toggle";
-        }
-        $rootScope.$emit(this.events.toggleByClass, targetClass, command);
-      },
-
-      notifyToggleState: function(elem, attrs, toggleState) {
-        $rootScope.$emit(this.events.toggleableToggled, attrs.id, toggleState, attrs.exclusionGroup);
-      },
-
-      toggleStateChanged: function(elem, attrs, toggleState) {
-        this.updateElemClasses(elem, attrs, toggleState);
-        this.notifyToggleState(elem, attrs, toggleState);
-      },
-
-      applyCommand: function(command, oldState) {
-        switch (command) {
-          case this.commands.activate:
-            return true;
-          case this.commands.deactivate:
-            return false;
-          case this.commands.alternate:
-            return !oldState;
-        }
-      },
-
-      updateElemClasses: function(elem, attrs, active) {
-
-        if (active) {
-          if (attrs.activeClass) {
-            elem.addClass(attrs.activeClass);
-          }
-          if (attrs.inactiveClass) {
-            elem.removeClass(attrs.inactiveClass);
-          }
-          var parent = elem.parent();
-          if (attrs.parentActiveClass) {
-            parent.addClass(attrs.parentActiveClass);
-          }
-          if (attrs.parentInactiveClass) {
-             parent.removeClass(attrs.parentInactiveClass);
-          }
-        } else {
-          if (attrs.inactiveClass) {
-            elem.addClass(attrs.inactiveClass);
-          }
-          if (attrs.activeClass) {
-            elem.removeClass(attrs.activeClass);
-          }
-          var parent = elem.parent();
-          if (attrs.parentInactiveClass) {
-            parent.addClass(attrs.parentInactiveClass);
-          }
-          if (attrs.parentActiveClass) {
-             parent.removeClass(attrs.parentActiveClass);
-          }
-        }
-      }
-    };
-  }
-])
-
-.run([
-  "$rootScope", "ToggleHelper", function($rootScope, ToggleHelper) {
-    
-    $rootScope.toggle = function(target, command) {
-      if (command == null) {
-        command = "toggle";
-      }
-      ToggleHelper.toggle(target, command);
-    };
-
-    $rootScope.toggleByClass = function(targetClass, command) {
-      if (command == null) {
-        command = "toggle";
-      }
-      ToggleHelper.toggleByClass(targetClass, command);
-    };
-  }
-])
-
-.directive('toggle', [
-  "$rootScope", "ToggleHelper", function($rootScope, ToggleHelper) {
-    return {
-      restrict: "A",
-      link: function(scope, elem, attrs) {
-        var command = attrs.toggle || ToggleHelper.commands.alternate;
-        var target = attrs.target;
-        var targetClass = attrs.targetClass;
-        var bubble = attrs.bubble === "true" || attrs.bubble === "1" || attrs.bubble === 1 || attrs.bubble === "" || attrs.bubble === "bubble";
-        
-        if ((!target) && attrs.href) {
-          target = attrs.href.slice(1);
-        }
-        
-        if (!(target || targetClass)) {
-          throw "'target' or 'target-class' attribute required with 'toggle'";
-        }
-        
-        elem.on("click tap", function(e) {
-          var angularElem = angular.element(e.target);
-          if (!angularElem.hasClass("disabled")) {
-            if (target != null) {
-              ToggleHelper.toggle(target, command);
-            }
-            if (targetClass != null) {
-              ToggleHelper.toggleByClass(targetClass, command);
-            }
-            if (!bubble) {
-              e.preventDefault();
-              return false;
-            } else {
-              return true;
-            }
-          }
-        });
-
-        var unbindUpdateElemClasses = $rootScope.$on(ToggleHelper.events.toggleableToggled, function(e, id, newState) {
-          if (id === target) {
-            ToggleHelper.updateElemClasses(elem, attrs, newState);
-          }
-        });
-
-        if (target != null) {
-          $rootScope.$emit(ToggleHelper.events.togglerLinked, target);
-        }
-
-        scope.$on('$destroy', unbindUpdateElemClasses);
-      }
-    };
-  }
-])
-
-.directive('toggleable', [
-  "$rootScope", "ToggleHelper", function($rootScope, ToggleHelper) {
-    return {
-      restrict: "A",
-      link: function(scope, elem, attrs) {        
-        var toggleState = false;
-        
-        if (attrs["default"]) {
-          switch (attrs["default"]) {
-            case "active":
-              toggleState = true;
-              break;
-            case "inactive":
-              toggleState = false;
-          }
-          ToggleHelper.toggleStateChanged(elem, attrs, toggleState);
-        }
-        
-        var unbindToggle = $rootScope.$on(ToggleHelper.events.toggle, function(e, target, command) {
-          var oldState;
-          if (target === attrs.id) {
-            oldState = toggleState;
-            toggleState = ToggleHelper.applyCommand(command, oldState);
-            if (oldState !== toggleState) {
-              ToggleHelper.toggleStateChanged(elem, attrs, toggleState);
-            }
-          }
-        });
-        
-        var unbindToggleByClass = $rootScope.$on(ToggleHelper.events.toggleByClass, function(e, targetClass, command) {
-          var oldState;
-          if (elem.hasClass(targetClass)) {
-            oldState = toggleState;
-            toggleState = ToggleHelper.applyCommand(command, oldState);
-            if (oldState !== toggleState) {
-              ToggleHelper.toggleStateChanged(elem, attrs, toggleState);
-            }
-          }
-        });
-        
-        var unbindToggleableToggled = $rootScope.$on(ToggleHelper.events.toggleableToggled, function(e, target, newState, sameGroup) {
-          if (newState && (attrs.id !== target) && (attrs.exclusionGroup === sameGroup) && (attrs.exclusionGroup != null)) {
-            toggleState = false;
-            ToggleHelper.toggleStateChanged(elem, attrs, toggleState);
-          }
-        });
-        
-        var unbindTogglerLinked = $rootScope.$on(ToggleHelper.events.togglerLinked, function(e, target) {
-          if (attrs.id === target) {
-            ToggleHelper.notifyToggleState(elem, attrs, toggleState);
-          }
-        });
-        
-        scope.$on('$destroy', function() {
-          unbindToggle();
-          unbindToggleByClass();
-          unbindToggleableToggled();
-          unbindTogglerLinked();
-        });
-      }
-    };
-  }
-]);
-
-angular.module("mobile-angular-ui", [
-  'mobile-angular-ui.pointer-events',
-  'mobile-angular-ui.active-links',
-  'mobile-angular-ui.fastclick',
-  'mobile-angular-ui.scrollable',
-  'mobile-angular-ui.directives.toggle',
-  'mobile-angular-ui.directives.overlay',
-  'mobile-angular-ui.directives.forms',
-  'mobile-angular-ui.directives.panels',
-  'mobile-angular-ui.directives.capture',
-  'mobile-angular-ui.directives.sidebars',
-  'mobile-angular-ui.directives.navbars',
-  'mobile-angular-ui.directives.carousel'
- ]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/js/mobile-angular-ui.min.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/js/mobile-angular-ui.min.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/js/mobile-angular-ui.min.js
deleted file mode 100644
index f073953..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/js/mobile-angular-ui.min.js
+++ /dev/null
@@ -1 +0,0 @@
-function FastClick(a,b){"use strict";function c(a,b){return function(){return a.apply(b,arguments)}}var d;if(b=b||{},this.trackingClick=!1,this.trackingClickStart=0,this.targetElement=null,this.touchStartX=0,this.touchStartY=0,this.lastTouchIdentifier=0,this.touchBoundary=b.touchBoundary||10,this.layer=a,this.tapDelay=b.tapDelay||200,!FastClick.notNeeded(a)){for(var e=["onMouse","onClick","onTouchStart","onTouchMove","onTouchEnd","onTouchCancel"],f=this,g=0,h=e.length;h>g;g++)f[e[g]]=c(f[e[g]],f);deviceIsAndroid&&(a.addEventListener("mouseover",this.onMouse,!0),a.addEventListener("mousedown",this.onMouse,!0),a.addEventListener("mouseup",this.onMouse,!0)),a.addEventListener("click",this.onClick,!0),a.addEventListener("touchstart",this.onTouchStart,!1),a.addEventListener("touchmove",this.onTouchMove,!1),a.addEventListener("touchend",this.onTouchEnd,!1),a.addEventListener("touchcancel",this.onTouchCancel,!1),Event.prototype.stopImmediatePropagation||(a.removeEventListener=function(b,c,
 d){var e=Node.prototype.removeEventListener;"click"===b?e.call(a,b,c.hijacked||c,d):e.call(a,b,c,d)},a.addEventListener=function(b,c,d){var e=Node.prototype.addEventListener;"click"===b?e.call(a,b,c.hijacked||(c.hijacked=function(a){a.propagationStopped||c(a)}),d):e.call(a,b,c,d)}),"function"==typeof a.onclick&&(d=a.onclick,a.addEventListener("click",function(a){d(a)},!1),a.onclick=null)}}!function(a){var b=a.document,c=b.documentElement,d="overthrow-enabled",e="ontouchmove"in b,f="WebkitOverflowScrolling"in c.style||"msOverflowStyle"in c.style||!e&&a.screen.width>800||function(){var b=a.navigator.userAgent,c=b.match(/AppleWebKit\/([0-9]+)/),d=c&&c[1],e=c&&d>=534;return b.match(/Android ([0-9]+)/)&&RegExp.$1>=3&&e||b.match(/ Version\/([0-9]+)/)&&RegExp.$1>=0&&a.blackberry&&e||b.indexOf("PlayBook")>-1&&e&&-1===!b.indexOf("Android 2")||b.match(/Firefox\/([0-9]+)/)&&RegExp.$1>=4||b.match(/wOSBrowser\/([0-9]+)/)&&RegExp.$1>=233&&e||b.match(/NokiaBrowser\/([0-9\.]+)/)&&7.3===parseFloat(R
 egExp.$1)&&c&&d>=533}();a.overthrow={},a.overthrow.enabledClassName=d,a.overthrow.addClass=function(){-1===c.className.indexOf(a.overthrow.enabledClassName)&&(c.className+=" "+a.overthrow.enabledClassName)},a.overthrow.removeClass=function(){c.className=c.className.replace(a.overthrow.enabledClassName,"")},a.overthrow.set=function(){f&&a.overthrow.addClass()},a.overthrow.canBeFilledWithPoly=e,a.overthrow.forget=function(){a.overthrow.removeClass()},a.overthrow.support=f?"native":"none"}(this),function(a){a.overthrow.set()}(this),function(a,b,c){if(b!==c){b.scrollIndicatorClassName="overthrow";var d=a.document,e=d.documentElement,f="native"===b.support,g=b.canBeFilledWithPoly,h=(b.configure,b.set),i=b.forget,j=b.scrollIndicatorClassName;b.closest=function(a,c){return!c&&a.className&&a.className.indexOf(j)>-1&&a||b.closest(a.parentNode)};var k=!1;b.set=function(){if(h(),!k&&!f&&g){a.overthrow.addClass(),k=!0,b.support="polyfilled",b.forget=function(){i(),k=!1,d.removeEventListener&&d.
 removeEventListener("touchstart",u,!1)};var j,l,m,n,o=[],p=[],q=function(){o=[],l=null},r=function(){p=[],m=null},s=function(a){n=j.querySelectorAll("textarea, input");for(var b=0,c=n.length;c>b;b++)n[b].style.pointerEvents=a},t=function(a,b){if(d.createEvent){var e,f=(!b||b===c)&&j.parentNode||j.touchchild||j;f!==j&&(e=d.createEvent("HTMLEvents"),e.initEvent("touchend",!0,!0),j.dispatchEvent(e),f.touchchild=j,j=f,f.dispatchEvent(a))}},u=function(a){if(b.intercept&&b.intercept(),q(),r(),j=b.closest(a.target),j&&j!==e&&!(a.touches.length>1)){s("none");var c=a,d=j.scrollTop,f=j.scrollLeft,g=j.offsetHeight,h=j.offsetWidth,i=a.touches[0].pageY,k=a.touches[0].pageX,n=j.scrollHeight,u=j.scrollWidth,v=function(a){var b=d+i-a.touches[0].pageY,e=f+k-a.touches[0].pageX,s=b>=(o.length?o[0]:0),v=e>=(p.length?p[0]:0);b>0&&n-g>b||e>0&&u-h>e?a.preventDefault():t(c),l&&s!==l&&q(),m&&v!==m&&r(),l=s,m=v,j.scrollTop=b,j.scrollLeft=e,o.unshift(b),p.unshift(e),o.length>3&&o.pop(),p.length>3&&p.pop()},w=
 function(){s("auto"),setTimeout(function(){s("none")},450),j.removeEventListener("touchmove",v,!1),j.removeEventListener("touchend",w,!1)};j.addEventListener("touchmove",v,!1),j.addEventListener("touchend",w,!1)}};d.addEventListener("touchstart",u,!1)}}}}(this,this.overthrow);var deviceIsAndroid=navigator.userAgent.indexOf("Android")>0,deviceIsIOS=/iP(ad|hone|od)/.test(navigator.userAgent),deviceIsIOS4=deviceIsIOS&&/OS 4_\d(_\d)?/.test(navigator.userAgent),deviceIsIOSWithBadTarget=deviceIsIOS&&/OS ([6-9]|\d{2})_\d/.test(navigator.userAgent);FastClick.prototype.needsClick=function(a){"use strict";switch(a.nodeName.toLowerCase()){case"button":case"select":case"textarea":if(a.disabled)return!0;break;case"input":if(deviceIsIOS&&"file"===a.type||a.disabled)return!0;break;case"label":case"video":return!0}return/\bneedsclick\b/.test(a.className)},FastClick.prototype.needsFocus=function(a){"use strict";switch(a.nodeName.toLowerCase()){case"textarea":return!0;case"select":return!deviceIsAndr
 oid;case"input":switch(a.type){case"button":case"checkbox":case"file":case"image":case"radio":case"submit":return!1}return!a.disabled&&!a.readOnly;default:return/\bneedsfocus\b/.test(a.className)}},FastClick.prototype.sendClick=function(a,b){"use strict";var c,d;document.activeElement&&document.activeElement!==a&&document.activeElement.blur(),d=b.changedTouches[0],c=document.createEvent("MouseEvents"),c.initMouseEvent(this.determineEventType(a),!0,!0,window,1,d.screenX,d.screenY,d.clientX,d.clientY,!1,!1,!1,!1,0,null),c.forwardedTouchEvent=!0,a.dispatchEvent(c)},FastClick.prototype.determineEventType=function(a){"use strict";return deviceIsAndroid&&"select"===a.tagName.toLowerCase()?"mousedown":"click"},FastClick.prototype.focus=function(a){"use strict";var b;deviceIsIOS&&a.setSelectionRange&&0!==a.type.indexOf("date")&&"time"!==a.type?(b=a.value.length,a.setSelectionRange(b,b)):a.focus()},FastClick.prototype.updateScrollParent=function(a){"use strict";var b,c;if(b=a.fastClickScroll
 Parent,!b||!b.contains(a)){c=a;do{if(c.scrollHeight>c.offsetHeight){b=c,a.fastClickScrollParent=c;break}c=c.parentElement}while(c)}b&&(b.fastClickLastScrollTop=b.scrollTop)},FastClick.prototype.getTargetElementFromEventTarget=function(a){"use strict";return a.nodeType===Node.TEXT_NODE?a.parentNode:a},FastClick.prototype.onTouchStart=function(a){"use strict";var b,c,d;if(a.targetTouches.length>1)return!0;if(b=this.getTargetElementFromEventTarget(a.target),c=a.targetTouches[0],deviceIsIOS){if(d=window.getSelection(),d.rangeCount&&!d.isCollapsed)return!0;if(!deviceIsIOS4){if(c.identifier===this.lastTouchIdentifier)return a.preventDefault(),!1;this.lastTouchIdentifier=c.identifier,this.updateScrollParent(b)}}return this.trackingClick=!0,this.trackingClickStart=a.timeStamp,this.targetElement=b,this.touchStartX=c.pageX,this.touchStartY=c.pageY,a.timeStamp-this.lastClickTime<this.tapDelay&&a.preventDefault(),!0},FastClick.prototype.touchHasMoved=function(a){"use strict";var b=a.changedTouc
 hes[0],c=this.touchBoundary;return Math.abs(b.pageX-this.touchStartX)>c||Math.abs(b.pageY-this.touchStartY)>c?!0:!1},FastClick.prototype.onTouchMove=function(a){"use strict";return this.trackingClick?((this.targetElement!==this.getTargetElementFromEventTarget(a.target)||this.touchHasMoved(a))&&(this.trackingClick=!1,this.targetElement=null),!0):!0},FastClick.prototype.findControl=function(a){"use strict";return void 0!==a.control?a.control:a.htmlFor?document.getElementById(a.htmlFor):a.querySelector("button, input:not([type=hidden]), keygen, meter, output, progress, select, textarea")},FastClick.prototype.onTouchEnd=function(a){"use strict";var b,c,d,e,f,g=this.targetElement;if(!this.trackingClick)return!0;if(a.timeStamp-this.lastClickTime<this.tapDelay)return this.cancelNextClick=!0,!0;if(this.cancelNextClick=!1,this.lastClickTime=a.timeStamp,c=this.trackingClickStart,this.trackingClick=!1,this.trackingClickStart=0,deviceIsIOSWithBadTarget&&(f=a.changedTouches[0],g=document.element
 FromPoint(f.pageX-window.pageXOffset,f.pageY-window.pageYOffset)||g,g.fastClickScrollParent=this.targetElement.fastClickScrollParent),d=g.tagName.toLowerCase(),"label"===d){if(b=this.findControl(g)){if(this.focus(g),deviceIsAndroid)return!1;g=b}}else if(this.needsFocus(g))return a.timeStamp-c>100||deviceIsIOS&&window.top!==window&&"input"===d?(this.targetElement=null,!1):(this.focus(g),this.sendClick(g,a),deviceIsIOS&&"select"===d||(this.targetElement=null,a.preventDefault()),!1);return deviceIsIOS&&!deviceIsIOS4&&(e=g.fastClickScrollParent,e&&e.fastClickLastScrollTop!==e.scrollTop)?!0:(this.needsClick(g)||(a.preventDefault(),this.sendClick(g,a)),!1)},FastClick.prototype.onTouchCancel=function(){"use strict";this.trackingClick=!1,this.targetElement=null},FastClick.prototype.onMouse=function(a){"use strict";return this.targetElement?a.forwardedTouchEvent?!0:a.cancelable&&(!this.needsClick(this.targetElement)||this.cancelNextClick)?(a.stopImmediatePropagation?a.stopImmediatePropagatio
 n():a.propagationStopped=!0,a.stopPropagation(),a.preventDefault(),!1):!0:!0},FastClick.prototype.onClick=function(a){"use strict";var b;return this.trackingClick?(this.targetElement=null,this.trackingClick=!1,!0):"submit"===a.target.type&&0===a.detail?!0:(b=this.onMouse(a),b||(this.targetElement=null),b)},FastClick.prototype.destroy=function(){"use strict";var a=this.layer;deviceIsAndroid&&(a.removeEventListener("mouseover",this.onMouse,!0),a.removeEventListener("mousedown",this.onMouse,!0),a.removeEventListener("mouseup",this.onMouse,!0)),a.removeEventListener("click",this.onClick,!0),a.removeEventListener("touchstart",this.onTouchStart,!1),a.removeEventListener("touchmove",this.onTouchMove,!1),a.removeEventListener("touchend",this.onTouchEnd,!1),a.removeEventListener("touchcancel",this.onTouchCancel,!1)},FastClick.notNeeded=function(a){"use strict";var b,c;if("undefined"==typeof window.ontouchstart)return!0;if(c=+(/Chrome\/([0-9]+)/.exec(navigator.userAgent)||[,0])[1]){if(!device
 IsAndroid)return!0;if(b=document.querySelector("meta[name=viewport]")){if(-1!==b.content.indexOf("user-scalable=no"))return!0;if(c>31&&document.documentElement.scrollWidth<=window.outerWidth)return!0}}return"none"===a.style.msTouchAction?!0:!1},FastClick.attach=function(a,b){"use strict";return new FastClick(a,b)},"function"==typeof define&&"object"==typeof define.amd&&define.amd?define(function(){"use strict";return FastClick}):"undefined"!=typeof module&&module.exports?(module.exports=FastClick.attach,module.exports.FastClick=FastClick):window.FastClick=FastClick,angular.module("mobile-angular-ui.active-links",[]).run(["$rootScope",function(a){return angular.forEach(["$locationChangeSuccess","$includeContentLoaded"],function(b){return a.$on(b,function(){var a;return a=window.location.href,angular.forEach(document.links,function(b){var c;return c=angular.element(b),b.href===a?c.addClass("active"):c.removeClass("active"),c=null}),a=null})})}]),angular.module("mobile-angular-ui.direc
 tives.capture",[]).run(["CaptureService","$rootScope",function(a,b){b.$on("$routeChangeStart",function(){a.resetAll()})}]).factory("CaptureService",["$compile",function(a){var b={};return{resetAll:function(){for(name in b)this.resetYielder(name)},resetYielder:function(a){var c=b[a];this.setContentFor(a,c.defaultContent,c.defaultScope)},putYielder:function(a,c,d,e){var f={};f.name=a,f.element=c,f.defaultContent=e||"",f.defaultScope=d,b[a]=f},getYielder:function(a){return b[a]},removeYielder:function(a){delete b[a]},setContentFor:function(c,d,e){var f=b[c];f&&(f.element.html(d),a(f.element.contents())(e))}}}]).directive("contentFor",["CaptureService",function(a){return{compile:function(b,c){var d=b.html();return null==c.duplicate&&b.html(""),function(b,c,e){a.setContentFor(e.contentFor,d,b),null==e.duplicate&&c.remove()}}}}]).directive("yieldTo",["$compile","CaptureService",function(a,b){return{link:function(a,c,d){b.putYielder(d.yieldTo,c,a,c.html()),c.contents().remove(),a.$on("$des
 troy",function(){b.removeYielder(d.yieldTo)})}}}]),angular.module("mobile-angular-ui.directives.carousel",[]).run(["$rootScope",function(a){a.carouselPrev=function(b){a.$emit("mobile-angular-ui.carousel.prev",b)},a.carouselNext=function(b){a.$emit("mobile-angular-ui.carousel.next",b)};var b=function(a){var b=angular.element(document.getElementById(a)),c=angular.element(b.children()[0]).children();return b=null,c},c=function(a){for(var b=-1,c=!1,d=0;d<a.length;d++)if(item=a[d],b+=1,angular.element(item).hasClass("active")){c=!0;break}return c?b:-1};a.$on("mobile-angular-ui.carousel.prev",function(a,d){var e=b(d),f=c(e),g=e.length-1;-1!==f&&angular.element(e[f]).removeClass("active"),0>=f?angular.element(e[g]).addClass("active"):angular.element(e[f-1]).addClass("active"),e=null,f=null,g=null}),a.$on("mobile-angular-ui.carousel.next",function(a,d){var e=b(d),f=c(e),g=e.length-1;-1!==f&&angular.element(e[f]).removeClass("active"),f===g?angular.element(e[0]).addClass("active"):angular.el
 ement(e[f+1]).addClass("active"),e=null,f=null,g=null})}]),angular.module("mobile-angular-ui.fastclick",[]).run(["$window","$document",function(a,b){a.addEventListener("load",function(){FastClick.attach(b[0].body)},!1)}]).directive("select",function(){return{replace:!1,restrict:"E",link:function(a,b){b.addClass("needsclick")}}}).directive("input",function(){return{replace:!1,restrict:"E",link:function(a,b){b.addClass("needsclick")}}}).directive("textarea",function(){return{replace:!1,restrict:"E",link:function(a,b){b.addClass("needsclick")}}}),angular.module("mobile-angular-ui.directives.forms",[]).directive("bsFormControl",function(){function a(a){for(var c="",d="",e=0;e<a.length;e++){var f=a[e];f in b?c+=f+" ":d+=f+" "}return{i:c.trim(),d:d.trim()}}for(var b={},c=["xs","sm","md","lg"],d=0;d<c.length;d++)for(var e=1;12>=e;e++)b["col-"+c[d]+"-"+e]=!0;return{replace:!0,require:"ngModel",link:function(b,c,d){null==d.labelClass&&(d.labelClass=""),null==d.id&&(d.id=d.ngModel.replace("."
 ,"_")+"_input"),("SELECT"==c[0].tagName||("INPUT"==c[0].tagName||"TEXTAREA"==c[0].tagName)&&"checkbox"!=d.type&&"radio"!=d.type)&&c.addClass("form-control");var e=angular.element('<label for="'+d.id+'" class="control-label">'+d.label+"</label>"),f=angular.element('<div class="form-group row"></div>'),g=angular.element('<div class="form-control-wrapper"></div>'),h=a(d.labelClass.split(/\s+/));""==h.i&&e.addClass("col-xs-12"),e.addClass(d.labelClass);var i=a(c[0].className.split(/\s+/));c.removeClass(i.i),g.addClass(i.i),""==i.i&&g.addClass("col-xs-12"),c.wrap(f).wrap(g),c.parent().parent().prepend(e),c.attr("id",d.id),e=f=g=h=i=null}}}).directive("switch",function(){return{restrict:"EA",replace:!0,scope:{model:"=ngModel",changeExpr:"@ngChange",disabled:"@"},template:"<div class='switch' ng-class='{active: model}'><div class='switch-handle'></div></div>",link:function(a,b,c){b.on("click tap",function(){null==c.disabled&&(a.model=!a.model,a.$apply(),null!=a.changeExpr&&a.$parent.$eval(
 a.changeExpr))}),b.addClass("switch-transition-enabled")}}}),angular.module("mobile-angular-ui.directives.navbars",[]).directive("navbarAbsoluteTop",function(){return{replace:!1,restrict:"C",link:function(a,b){b.parent().addClass("has-navbar-top")}}}).directive("navbarAbsoluteBottom",function(){return{replace:!1,restrict:"C",link:function(a,b){b.parent().addClass("has-navbar-bottom")}}}),angular.module("mobile-angular-ui.directives.overlay",[]).directive("overlay",["$compile",function(a){return{compile:function(b){var c=b.html();return function(b,d,e){var f="",g=c,h=e.overlay;if(null!=e["default"])var f="default='"+e["default"]+"'";var i='<div class="overlay" id="'+h+'" toggleable '+f+' parent-active-class="overlay-in" active-class="overlay-show">\n  <div class="overlay-inner">\n    <div class="overlay-background"></div>\n    <a href="#'+h+'" toggle="off" class="overlay-dismiss">\n      <i class="fa fa-times-circle-o"></i>\n    </a>\n    <div class="overlay-content">\n      <div cla
 ss="overlay-body">\n        '+g+"\n      </div>\n    </div>\n  </div>\n</div>";d.remove();var j=angular.element(document.getElementById(h));j.length>0&&j.hasClass("overlay")&&j.remove(),g=angular.element(document.body),g.prepend(a(i)(b)),"active"===e["default"]&&g.addClass("overlay-in")}}}}]),angular.module("mobile-angular-ui.directives.panels",[]).directive("bsPanel",function(){return{restrict:"EA",replace:!0,scope:!1,transclude:!0,link:function(a,b){b.removeAttr("title")},template:function(a,b){var c="";return b.title&&(c='<div class="panel-heading">\n  <h2 class="panel-title">\n    '+b.title+"\n  </h2>\n</div>"),'<div class="panel">\n  '+c+'\n  <div class="panel-body">\n     <div ng-transclude></div>\n  </div>\n</div>'}}}),angular.module("mobile-angular-ui.pointer-events",[]).run(["$document",function(a){return angular.element(a).on("click tap",function(a){var b;return b=angular.element(a.target),b.hasClass("disabled")?(a.preventDefault(),a.stopPropagation(),b=null,!1):(b=null,!0
 )})}]),angular.module("mobile-angular-ui.scrollable",[]).directive("scrollableContent",[function(){return{replace:!1,restrict:"C",link:function(a,b){return"native"!==overthrow.support?(b.addClass("overthrow"),overthrow.forget(),overthrow.set()):void 0}}}]),angular.module("mobile-angular-ui.directives.sidebars",[]).directive("sidebar",["$document","$rootScope",function(a,b){return{replace:!1,restrict:"C",link:function(c,d,e){var f=!0;("false"==e.closeOnOuterClicks||"0"==e.closeOnOuterClicks)&&(f=!1),d.hasClass("sidebar-left")&&d.parent().addClass("has-sidebar-left"),d.hasClass("sidebar-right")&&d.parent().addClass("has-sidebar-right");var g=function(a,b){for(var c=a;c.length>0;){if(c[0]===b[0])return c=null,!0;c=c.parent()}return c=null,!1},h=function(a){return g(angular.element(a.target),d)?void 0:(b.toggle(e.id,"off"),a.preventDefault(),!1)},i=angular.noop();f&&(i=b.$on("mobile-angular-ui.toggle.toggled",function(b,c,d){c==e.id&&(d?setTimeout(function(){a.on("click tap",h)},300):a.
 unbind("click tap",h))})),c.$on("$destroy",function(){i(),a.unbind("click tap",h)})}}}]),angular.module("mobile-angular-ui.directives.toggle",[]).factory("ToggleHelper",["$rootScope",function(a){return{events:{toggle:"mobile-angular-ui.toggle.toggle",toggleByClass:"mobile-angular-ui.toggle.toggleByClass",togglerLinked:"mobile-angular-ui.toggle.linked",toggleableToggled:"mobile-angular-ui.toggle.toggled"},commands:{alternate:"toggle",activate:"on",deactivate:"off"},toggle:function(b,c){null==c&&(c="toggle"),a.$emit(this.events.toggle,b,c)},toggleByClass:function(b,c){null==c&&(c="toggle"),a.$emit(this.events.toggleByClass,b,c)},notifyToggleState:function(b,c,d){a.$emit(this.events.toggleableToggled,c.id,d,c.exclusionGroup)},toggleStateChanged:function(a,b,c){this.updateElemClasses(a,b,c),this.notifyToggleState(a,b,c)},applyCommand:function(a,b){switch(a){case this.commands.activate:return!0;case this.commands.deactivate:return!1;case this.commands.alternate:return!b}},updateElemClass
 es:function(a,b,c){if(c){b.activeClass&&a.addClass(b.activeClass),b.inactiveClass&&a.removeClass(b.inactiveClass);var d=a.parent();b.parentActiveClass&&d.addClass(b.parentActiveClass),b.parentInactiveClass&&d.removeClass(b.parentInactiveClass)}else{b.inactiveClass&&a.addClass(b.inactiveClass),b.activeClass&&a.removeClass(b.activeClass);var d=a.parent();b.parentInactiveClass&&d.addClass(b.parentInactiveClass),b.parentActiveClass&&d.removeClass(b.parentActiveClass)}}}}]).run(["$rootScope","ToggleHelper",function(a,b){a.toggle=function(a,c){null==c&&(c="toggle"),b.toggle(a,c)},a.toggleByClass=function(a,c){null==c&&(c="toggle"),b.toggleByClass(a,c)}}]).directive("toggle",["$rootScope","ToggleHelper",function(a,b){return{restrict:"A",link:function(c,d,e){var f=e.toggle||b.commands.alternate,g=e.target,h=e.targetClass,i="true"===e.bubble||"1"===e.bubble||1===e.bubble||""===e.bubble||"bubble"===e.bubble;if(!g&&e.href&&(g=e.href.slice(1)),!g&&!h)throw"'target' or 'target-class' attribute r
 equired with 'toggle'";d.on("click tap",function(a){var c=angular.element(a.target);return c.hasClass("disabled")?void 0:(null!=g&&b.toggle(g,f),null!=h&&b.toggleByClass(h,f),i?!0:(a.preventDefault(),!1))});var j=a.$on(b.events.toggleableToggled,function(a,c,f){c===g&&b.updateElemClasses(d,e,f)});null!=g&&a.$emit(b.events.togglerLinked,g),c.$on("$destroy",j)}}}]).directive("toggleable",["$rootScope","ToggleHelper",function(a,b){return{restrict:"A",link:function(c,d,e){var f=!1;if(e["default"]){switch(e["default"]){case"active":f=!0;break;case"inactive":f=!1}b.toggleStateChanged(d,e,f)}var g=a.$on(b.events.toggle,function(a,c,g){var h;c===e.id&&(h=f,f=b.applyCommand(g,h),h!==f&&b.toggleStateChanged(d,e,f))}),h=a.$on(b.events.toggleByClass,function(a,c,g){var h;d.hasClass(c)&&(h=f,f=b.applyCommand(g,h),h!==f&&b.toggleStateChanged(d,e,f))}),i=a.$on(b.events.toggleableToggled,function(a,c,g,h){g&&e.id!==c&&e.exclusionGroup===h&&null!=e.exclusionGroup&&(f=!1,b.toggleStateChanged(d,e,f))}
 ),j=a.$on(b.events.togglerLinked,function(a,c){e.id===c&&b.notifyToggleState(d,e,f)});c.$on("$destroy",function(){g(),h(),i(),j()})}}}]),angular.module("mobile-angular-ui",["mobile-angular-ui.pointer-events","mobile-angular-ui.active-links","mobile-angular-ui.fastclick","mobile-angular-ui.scrollable","mobile-angular-ui.directives.toggle","mobile-angular-ui.directives.overlay","mobile-angular-ui.directives.forms","mobile-angular-ui.directives.panels","mobile-angular-ui.directives.capture","mobile-angular-ui.directives.sidebars","mobile-angular-ui.directives.navbars","mobile-angular-ui.directives.carousel"]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/index.html
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/index.html b/usage/jsgui/src/main/webapp/index.html
index ad32823..52e1749 100644
--- a/usage/jsgui/src/main/webapp/index.html
+++ b/usage/jsgui/src/main/webapp/index.html
@@ -39,13 +39,6 @@ under the License.
     <!--[if lt IE 9]>
     <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
     <![endif]-->
-<script language=javascript>
-<!--
-if ((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i))) {
-   location.replace("http://localhost:8081/index.m.html");
-}
--->
-</script>
 </head>
 <body>
 

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/index.m.html
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/index.m.html b/usage/jsgui/src/main/webapp/index.m.html
deleted file mode 100644
index 12a3864..0000000
--- a/usage/jsgui/src/main/webapp/index.m.html
+++ /dev/null
@@ -1,99 +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.
--->
-
-<!doctype html>
-<html ng-app="BrooklynMobile" ng-controller="MainController">
-<head title="{{'TITLE' | translate}}">
-
-<title>{{'TITLE' | translate}}</title>
-	<meta name="viewport" content="user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimal-ui" /> 
-<link rel="stylesheet" href="/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/css/mobile-angular-ui-base.min.css" /> 
-<link rel="stylesheet" href="/assets/mobile/css/mobile.css" />
-
-	<script src="/assets/mobile/libs/angular-1.2.19/angular.min.js"></script>
-    <script src="/assets/mobile/libs/angular-1.2.19/angular-route.min.js"></script>
-    <script src="/assets/mobile/libs/angular-1.2.19/angular-touch.min.js"></script>
-    <script src="/assets/mobile/libs/angular-1.2.19/angular-resource.min.js"></script>
-     <script src="/assets/mobile/libs/angular-1.2.19/angular-cookies.min.js"></script>
-    <script src="/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/js/mobile-angular-ui.min.js"></script>
-    <!-- NLS related -->
-    <script src="/assets/mobile/libs/angular-translate/angular-translate.min.js"></script>
-    <script src="/assets/mobile/libs/angular-translate-loader-static-files/angular-translate-loader-static-files.min.js"></script> 
-    <script src="/assets/mobile/libs/angular-translate-storage-cookie/angular-translate-storage-cookie.min.js"></script>
-    <script src="/assets/mobile/libs/angular-translate-storage-local/angular-translate-storage-local.min.js"></script>
-    <script src="/assets/mobile/js/services.js"></script>
-	<script src="/assets/mobile/js/controllers.js"></script>
-	<script src="/assets/mobile/js/filters.js"></script>
-	<script src="/assets/mobile/js/app.js"></script>
-
-</head>
-<body>
-
-<!-- Sidebars -->
-    <div class="sidebar sidebar-left" toggleable parent-active-class="sidebar-left-in" id="mainSidebar" yield-to="left-control-nav">
-    	<h2 class="app-name">{{'APP_NAME_SHORT' | translate}}</h2>
-
-		<div class="scrollable sidebar-scrollable">
-		  <div class="scrollable-content">
-		    <div class="list-group" toggle="off" bubble target="mainSidebar">
-		      <a class="list-group-item" href="#/v1/applications">{{'M_MENU_APPS' | translate}}</a>
-		      <a class="list-group-item" href="https://brooklyn.incubator.apache.org/quickstart/">{{'M_MENU_HELP' | translate}}</a>
-		    </div>
-		  </div>
-		</div>
-
-		 <div class="navbar navbar-app navbar-footer navbar-absolute-bottom">
-			<img class="poweredLogo" alt="{{M_MENU_POWERED_BY}}"/>
-		 </div>
-    </div>
-	<div class="sidebar sidebar-right" toggleable parent-active-class="sidebar-right-in" id="rightSidebar" yield-to="right-control-nav">
-		&nbsp;
-	</div>
-	<div class="app">
-
-      <!-- Navbars -->
-
-      <div class="navbar navbar-app navbar-absolute-top">
-        <div class="navbar-brand navbar-brand-center" yield-to="title">
-          <span>{{'APP_NAME_LONG' | translate}}</span>
-        </div>
-        <div class="btn-group pull-left" style="z-index:100;" yield-to="left-control-nav-icon-left">
-          <div ng-click="toggle('mainSidebar')" class="btn btn-navbar sidebar-toggle">
-            <i class="fa fa-bars"></i>
-          </div>
-        </div>
-        <div class="btn-group pull-right" style="z-index:100;" yield-to="right-control-nav-icon-right">
-		&nbsp;
-        </div>
-       
-      </div>
-
-      <!-- App Body -->
-      <div class="app-body" ng-class="{loading: loading}">
-        <div ng-show="loading" class="app-content-loading">
-          <i class="fa fa-spinner fa-spin fa-2x loading-spinner"></i>&nbsp;<span>{{'LOADING' | translate}}</span>
-        </div>
-
-        <ng-view class="app-content" ng-hide="loading"></ng-view>
-      </div>
-
-    </div>
-</body>
-</html>


[03/71] [abbrv] brooklyn-ui git commit: Move mobile app to sandbox

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/css/mobile-angular-ui-desktop.css
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/css/mobile-angular-ui-desktop.css b/usage/jsgui/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/css/mobile-angular-ui-desktop.css
deleted file mode 100644
index e2eb84d..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/css/mobile-angular-ui-desktop.css
+++ /dev/null
@@ -1,531 +0,0 @@
-@media (min-width: 992px) {
-  .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
-    float: left;
-  }
-  .col-md-12 {
-    width: 100%;
-  }
-  .col-md-11 {
-    width: 91.66666667%;
-  }
-  .col-md-10 {
-    width: 83.33333333%;
-  }
-  .col-md-9 {
-    width: 75%;
-  }
-  .col-md-8 {
-    width: 66.66666667%;
-  }
-  .col-md-7 {
-    width: 58.33333333%;
-  }
-  .col-md-6 {
-    width: 50%;
-  }
-  .col-md-5 {
-    width: 41.66666667%;
-  }
-  .col-md-4 {
-    width: 33.33333333%;
-  }
-  .col-md-3 {
-    width: 25%;
-  }
-  .col-md-2 {
-    width: 16.66666667%;
-  }
-  .col-md-1 {
-    width: 8.33333333%;
-  }
-  .col-md-pull-12 {
-    right: 100%;
-  }
-  .col-md-pull-11 {
-    right: 91.66666667%;
-  }
-  .col-md-pull-10 {
-    right: 83.33333333%;
-  }
-  .col-md-pull-9 {
-    right: 75%;
-  }
-  .col-md-pull-8 {
-    right: 66.66666667%;
-  }
-  .col-md-pull-7 {
-    right: 58.33333333%;
-  }
-  .col-md-pull-6 {
-    right: 50%;
-  }
-  .col-md-pull-5 {
-    right: 41.66666667%;
-  }
-  .col-md-pull-4 {
-    right: 33.33333333%;
-  }
-  .col-md-pull-3 {
-    right: 25%;
-  }
-  .col-md-pull-2 {
-    right: 16.66666667%;
-  }
-  .col-md-pull-1 {
-    right: 8.33333333%;
-  }
-  .col-md-pull-0 {
-    right: 0%;
-  }
-  .col-md-push-12 {
-    left: 100%;
-  }
-  .col-md-push-11 {
-    left: 91.66666667%;
-  }
-  .col-md-push-10 {
-    left: 83.33333333%;
-  }
-  .col-md-push-9 {
-    left: 75%;
-  }
-  .col-md-push-8 {
-    left: 66.66666667%;
-  }
-  .col-md-push-7 {
-    left: 58.33333333%;
-  }
-  .col-md-push-6 {
-    left: 50%;
-  }
-  .col-md-push-5 {
-    left: 41.66666667%;
-  }
-  .col-md-push-4 {
-    left: 33.33333333%;
-  }
-  .col-md-push-3 {
-    left: 25%;
-  }
-  .col-md-push-2 {
-    left: 16.66666667%;
-  }
-  .col-md-push-1 {
-    left: 8.33333333%;
-  }
-  .col-md-push-0 {
-    left: 0%;
-  }
-  .col-md-offset-12 {
-    margin-left: 100%;
-  }
-  .col-md-offset-11 {
-    margin-left: 91.66666667%;
-  }
-  .col-md-offset-10 {
-    margin-left: 83.33333333%;
-  }
-  .col-md-offset-9 {
-    margin-left: 75%;
-  }
-  .col-md-offset-8 {
-    margin-left: 66.66666667%;
-  }
-  .col-md-offset-7 {
-    margin-left: 58.33333333%;
-  }
-  .col-md-offset-6 {
-    margin-left: 50%;
-  }
-  .col-md-offset-5 {
-    margin-left: 41.66666667%;
-  }
-  .col-md-offset-4 {
-    margin-left: 33.33333333%;
-  }
-  .col-md-offset-3 {
-    margin-left: 25%;
-  }
-  .col-md-offset-2 {
-    margin-left: 16.66666667%;
-  }
-  .col-md-offset-1 {
-    margin-left: 8.33333333%;
-  }
-  .col-md-offset-0 {
-    margin-left: 0%;
-  }
-}
-@media (min-width: 1200px) {
-  .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
-    float: left;
-  }
-  .col-lg-12 {
-    width: 100%;
-  }
-  .col-lg-11 {
-    width: 91.66666667%;
-  }
-  .col-lg-10 {
-    width: 83.33333333%;
-  }
-  .col-lg-9 {
-    width: 75%;
-  }
-  .col-lg-8 {
-    width: 66.66666667%;
-  }
-  .col-lg-7 {
-    width: 58.33333333%;
-  }
-  .col-lg-6 {
-    width: 50%;
-  }
-  .col-lg-5 {
-    width: 41.66666667%;
-  }
-  .col-lg-4 {
-    width: 33.33333333%;
-  }
-  .col-lg-3 {
-    width: 25%;
-  }
-  .col-lg-2 {
-    width: 16.66666667%;
-  }
-  .col-lg-1 {
-    width: 8.33333333%;
-  }
-  .col-lg-pull-12 {
-    right: 100%;
-  }
-  .col-lg-pull-11 {
-    right: 91.66666667%;
-  }
-  .col-lg-pull-10 {
-    right: 83.33333333%;
-  }
-  .col-lg-pull-9 {
-    right: 75%;
-  }
-  .col-lg-pull-8 {
-    right: 66.66666667%;
-  }
-  .col-lg-pull-7 {
-    right: 58.33333333%;
-  }
-  .col-lg-pull-6 {
-    right: 50%;
-  }
-  .col-lg-pull-5 {
-    right: 41.66666667%;
-  }
-  .col-lg-pull-4 {
-    right: 33.33333333%;
-  }
-  .col-lg-pull-3 {
-    right: 25%;
-  }
-  .col-lg-pull-2 {
-    right: 16.66666667%;
-  }
-  .col-lg-pull-1 {
-    right: 8.33333333%;
-  }
-  .col-lg-pull-0 {
-    right: 0%;
-  }
-  .col-lg-push-12 {
-    left: 100%;
-  }
-  .col-lg-push-11 {
-    left: 91.66666667%;
-  }
-  .col-lg-push-10 {
-    left: 83.33333333%;
-  }
-  .col-lg-push-9 {
-    left: 75%;
-  }
-  .col-lg-push-8 {
-    left: 66.66666667%;
-  }
-  .col-lg-push-7 {
-    left: 58.33333333%;
-  }
-  .col-lg-push-6 {
-    left: 50%;
-  }
-  .col-lg-push-5 {
-    left: 41.66666667%;
-  }
-  .col-lg-push-4 {
-    left: 33.33333333%;
-  }
-  .col-lg-push-3 {
-    left: 25%;
-  }
-  .col-lg-push-2 {
-    left: 16.66666667%;
-  }
-  .col-lg-push-1 {
-    left: 8.33333333%;
-  }
-  .col-lg-push-0 {
-    left: 0%;
-  }
-  .col-lg-offset-12 {
-    margin-left: 100%;
-  }
-  .col-lg-offset-11 {
-    margin-left: 91.66666667%;
-  }
-  .col-lg-offset-10 {
-    margin-left: 83.33333333%;
-  }
-  .col-lg-offset-9 {
-    margin-left: 75%;
-  }
-  .col-lg-offset-8 {
-    margin-left: 66.66666667%;
-  }
-  .col-lg-offset-7 {
-    margin-left: 58.33333333%;
-  }
-  .col-lg-offset-6 {
-    margin-left: 50%;
-  }
-  .col-lg-offset-5 {
-    margin-left: 41.66666667%;
-  }
-  .col-lg-offset-4 {
-    margin-left: 33.33333333%;
-  }
-  .col-lg-offset-3 {
-    margin-left: 25%;
-  }
-  .col-lg-offset-2 {
-    margin-left: 16.66666667%;
-  }
-  .col-lg-offset-1 {
-    margin-left: 8.33333333%;
-  }
-  .col-lg-offset-0 {
-    margin-left: 0%;
-  }
-}
-.breadcrumb {
-  padding: 8px 15px;
-  margin-bottom: 20px;
-  list-style: none;
-  background-color: #f5f5f5;
-  border-radius: 4px;
-}
-.breadcrumb > li {
-  display: inline-block;
-}
-.breadcrumb > li + li:before {
-  content: "/\00a0";
-  padding: 0 5px;
-  color: #cccccc;
-}
-.breadcrumb > .active {
-  color: #999999;
-}
-.pagination {
-  display: inline-block;
-  padding-left: 0;
-  margin: 20px 0;
-  border-radius: 4px;
-}
-.pagination > li {
-  display: inline;
-}
-.pagination > li > a,
-.pagination > li > span {
-  position: relative;
-  float: left;
-  padding: 6px 12px;
-  line-height: 1.42857143;
-  text-decoration: none;
-  color: #007aff;
-  background-color: #ffffff;
-  border: 1px solid #dddddd;
-  margin-left: -1px;
-}
-.pagination > li:first-child > a,
-.pagination > li:first-child > span {
-  margin-left: 0;
-  border-bottom-left-radius: 4px;
-  border-top-left-radius: 4px;
-}
-.pagination > li:last-child > a,
-.pagination > li:last-child > span {
-  border-bottom-right-radius: 4px;
-  border-top-right-radius: 4px;
-}
-.pagination > li > a:hover,
-.pagination > li > span:hover,
-.pagination > li > a:focus,
-.pagination > li > span:focus {
-  color: #0055b3;
-  background-color: #eeeeee;
-  border-color: #dddddd;
-}
-.pagination > .active > a,
-.pagination > .active > span,
-.pagination > .active > a:hover,
-.pagination > .active > span:hover,
-.pagination > .active > a:focus,
-.pagination > .active > span:focus {
-  z-index: 2;
-  color: #ffffff;
-  background-color: #007aff;
-  border-color: #007aff;
-  cursor: default;
-}
-.pagination > .disabled > span,
-.pagination > .disabled > span:hover,
-.pagination > .disabled > span:focus,
-.pagination > .disabled > a,
-.pagination > .disabled > a:hover,
-.pagination > .disabled > a:focus {
-  color: #999999;
-  background-color: #ffffff;
-  border-color: #dddddd;
-  cursor: not-allowed;
-}
-.pagination-lg > li > a,
-.pagination-lg > li > span {
-  padding: 10px 16px;
-  font-size: 18px;
-}
-.pagination-lg > li:first-child > a,
-.pagination-lg > li:first-child > span {
-  border-bottom-left-radius: 6px;
-  border-top-left-radius: 6px;
-}
-.pagination-lg > li:last-child > a,
-.pagination-lg > li:last-child > span {
-  border-bottom-right-radius: 6px;
-  border-top-right-radius: 6px;
-}
-.pagination-sm > li > a,
-.pagination-sm > li > span {
-  padding: 5px 10px;
-  font-size: 12px;
-}
-.pagination-sm > li:first-child > a,
-.pagination-sm > li:first-child > span {
-  border-bottom-left-radius: 3px;
-  border-top-left-radius: 3px;
-}
-.pagination-sm > li:last-child > a,
-.pagination-sm > li:last-child > span {
-  border-bottom-right-radius: 3px;
-  border-top-right-radius: 3px;
-}
-.jumbotron {
-  padding: 30px;
-  margin-bottom: 30px;
-  color: inherit;
-  background-color: #eeeeee;
-}
-.jumbotron h1,
-.jumbotron .h1 {
-  color: inherit;
-}
-.jumbotron p {
-  margin-bottom: 15px;
-  font-size: 21px;
-  font-weight: 200;
-}
-.container .jumbotron {
-  border-radius: 6px;
-}
-.jumbotron .container {
-  max-width: 100%;
-}
-@media screen and (min-width: 768px) {
-  .jumbotron {
-    padding-top: 48px;
-    padding-bottom: 48px;
-  }
-  .container .jumbotron {
-    padding-left: 60px;
-    padding-right: 60px;
-  }
-  .jumbotron h1,
-  .jumbotron .h1 {
-    font-size: 63px;
-  }
-}
-@media (min-width: 992px) {
-  .sidebar-toggle {
-    display: none;
-  }
-  .navbar-brand-center {
-    text-align: left;
-  }
-  .sidebar-left {
-    display: block;
-    left: 0;
-    width: 300px;
-  }
-  .sidebar-right {
-    display: block;
-    right: 0;
-    left: auto;
-    width: 300px;
-  }
-  .sidebar-right-in .sidebar-left {
-    -webkit-transform: translate3d(0, 0, 0) !important;
-    -moz-transform: translate3d(0, 0, 0) !important;
-    transform: translate3d(0, 0, 0) !important;
-  }
-  .sidebar-left-in .sidebar-right {
-    -webkit-transform: translate3d(0, 0, 0) !important;
-    -moz-transform: translate3d(0, 0, 0) !important;
-    transform: translate3d(0, 0, 0) !important;
-  }
-  .has-sidebar-left .app,
-  .sidebar-left-in .app {
-    width: auto;
-    margin-left: 300px;
-    left: 0;
-    -webkit-transform: translate3d(0, 0, 0) !important;
-    -moz-transform: translate3d(0, 0, 0) !important;
-    transform: translate3d(0, 0, 0) !important;
-    position: relative;
-    -webkit-transition: -webkit-transform 0 ease;
-    -moz-transition: -moz-transform 0 ease;
-    transition: transform 0 ease;
-  }
-  .sidebar-right-in .app {
-    width: auto;
-    margin-right: 300px;
-    right: 0;
-    -webkit-transform: translate3d(0, 0, 0) !important;
-    -moz-transform: translate3d(0, 0, 0) !important;
-    transform: translate3d(0, 0, 0) !important;
-    position: relative;
-    -webkit-transition: -webkit-transform 0 ease;
-    -moz-transition: -moz-transform 0 ease;
-    transition: transform 0 ease;
-  }
-}
-@media (min-width: 1200px) {
-  .sidebar-left {
-    width: 320px;
-  }
-  .sidebar-right {
-    width: 320px;
-  }
-  .has-sidebar-left .app,
-  .sidebar-left-in .app {
-    margin-left: 320px;
-  }
-  .sidebar-right-in .app {
-    margin-right: 320px;
-  }
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/css/mobile-angular-ui-desktop.min.css
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/css/mobile-angular-ui-desktop.min.css b/usage/jsgui/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/css/mobile-angular-ui-desktop.min.css
deleted file mode 100644
index f78704b..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/css/mobile-angular-ui-desktop.min.css
+++ /dev/null
@@ -1 +0,0 @@
-@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:0}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md
 -push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:0}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33
 333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:0}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333
 333%}.col-lg-push-0{left:0}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#ccc}.breadcrumb>.active{color:#999}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.42857143;text-decor
 ation:none;color:#007aff;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{color:#0055b3;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:2;color:#fff;background-color:#007aff;border-color:#007aff;cursor:default}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#999;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pagination-lg>
 li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.jumbotron{padding:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.container .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotr
 on{padding-left:60px;padding-right:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}@media (min-width:992px){.sidebar-toggle{display:none}.navbar-brand-center{text-align:left}.sidebar-left{display:block;left:0;width:300px}.sidebar-right{display:block;right:0;left:auto;width:300px}.sidebar-left-in .sidebar-right,.sidebar-right-in .sidebar-left{-webkit-transform:translate3d(0,0,0)!important;-moz-transform:translate3d(0,0,0)!important;transform:translate3d(0,0,0)!important}.has-sidebar-left .app,.sidebar-left-in .app{width:auto;margin-left:300px;left:0;-webkit-transform:translate3d(0,0,0)!important;-moz-transform:translate3d(0,0,0)!important;transform:translate3d(0,0,0)!important;position:relative;-webkit-transition:-webkit-transform 0 ease;-moz-transition:-moz-transform 0 ease;transition:transform 0 ease}.sidebar-right-in .app{width:auto;margin-right:300px;right:0;-webkit-transform:translate3d(0,0,0)!important;-moz-transform:translate3d(0,0,0)!important;transform:translate3d(0,0,0)!i
 mportant;position:relative;-webkit-transition:-webkit-transform 0 ease;-moz-transition:-moz-transform 0 ease;transition:transform 0 ease}}@media (min-width:1200px){.sidebar-left,.sidebar-right{width:320px}.has-sidebar-left .app,.sidebar-left-in .app{margin-left:320px}.sidebar-right-in .app{margin-right:320px}}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/css/mobile-angular-ui-hover.css
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/css/mobile-angular-ui-hover.css b/usage/jsgui/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/css/mobile-angular-ui-hover.css
deleted file mode 100644
index 6965e0c..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/css/mobile-angular-ui-hover.css
+++ /dev/null
@@ -1,480 +0,0 @@
-a:hover {
-  outline: 0;
-}
-
-a:hover {
-  color: #0055b3;
-  text-decoration: underline;
-}
-
-a.text-primary:hover {
-  color: #0062cc;
-}
-
-a.text-success:hover {
-  color: #2b542c;
-}
-
-a.text-info:hover {
-  color: #245269;
-}
-
-a.text-warning:hover {
-  color: #66512c;
-}
-
-a.text-danger:hover {
-  color: #843534;
-}
-
-a.bg-primary:hover {
-  background-color: #0062cc;
-}
-
-a.bg-success:hover {
-  background-color: #c1e2b3;
-}
-
-a.bg-info:hover {
-  background-color: #afd9ee;
-}
-
-a.bg-warning:hover {
-  background-color: #f7ecb5;
-}
-
-a.bg-danger:hover {
-  background-color: #e4b9b9;
-}
-
-.table-hover > tbody > tr:hover > td,
-.table-hover > tbody > tr:hover > th {
-  background-color: #f5f5f5;
-}
-
-.table-hover > tbody > tr > td.active:hover,
-.table-hover > tbody > tr > th.active:hover,
-.table-hover > tbody > tr.active:hover > td,
-.table-hover > tbody > tr.active:hover > th {
-  background-color: #e8e8e8;
-}
-
-.table-hover > tbody > tr > td.success:hover,
-.table-hover > tbody > tr > th.success:hover,
-.table-hover > tbody > tr.success:hover > td,
-.table-hover > tbody > tr.success:hover > th {
-  background-color: #d0e9c6;
-}
-
-.table-hover > tbody > tr > td.info:hover,
-.table-hover > tbody > tr > th.info:hover,
-.table-hover > tbody > tr.info:hover > td,
-.table-hover > tbody > tr.info:hover > th {
-  background-color: #c4e3f3;
-}
-
-.table-hover > tbody > tr > td.warning:hover,
-.table-hover > tbody > tr > th.warning:hover,
-.table-hover > tbody > tr.warning:hover > td,
-.table-hover > tbody > tr.warning:hover > th {
-  background-color: #faf2cc;
-}
-
-.table-hover > tbody > tr > td.danger:hover,
-.table-hover > tbody > tr > th.danger:hover,
-.table-hover > tbody > tr.danger:hover > td,
-.table-hover > tbody > tr.danger:hover > th {
-  background-color: #ebcccc;
-}
-
-.btn:hover {
-  color: #333333;
-  text-decoration: none;
-}
-
-.btn-default:hover {
-  color: #333333;
-  background-color: #ebebeb;
-  border-color: #adadad;
-}
-
-.btn-default.disabled:hover,
-.btn-default[disabled]:hover,
-fieldset[disabled] .btn-default:hover {
-  background-color: #ffffff;
-  border-color: #cccccc;
-}
-
-.btn-primary:hover {
-  color: #ffffff;
-  background-color: #0066d6;
-  border-color: #0051a8;
-}
-
-.btn-primary.disabled:hover,
-.btn-primary[disabled]:hover,
-fieldset[disabled] .btn-primary:hover {
-  background-color: #007aff;
-  border-color: #006ee6;
-}
-
-.btn-success:hover {
-  color: #ffffff;
-  background-color: #2cd048;
-  border-color: #24aa3b;
-}
-
-.btn-success.disabled:hover,
-.btn-success[disabled]:hover,
-fieldset[disabled] .btn-success:hover {
-  background-color: #4cd964;
-  border-color: #37d552;
-}
-
-.btn-info:hover {
-  color: #ffffff;
-  background-color: #2295c5;
-  border-color: #1b779e;
-}
-
-.btn-info.disabled:hover,
-.btn-info[disabled]:hover,
-fieldset[disabled] .btn-info:hover {
-  background-color: #34aadc;
-  border-color: #249ed2;
-}
-
-.btn-warning:hover {
-  color: #ffffff;
-  background-color: #d6ab00;
-  border-color: #a88700;
-}
-
-.btn-warning.disabled:hover,
-.btn-warning[disabled]:hover,
-fieldset[disabled] .btn-warning:hover {
-  background-color: #ffcc00;
-  border-color: #e6b800;
-}
-
-.btn-danger:hover {
-  color: #ffffff;
-  background-color: #ff1407;
-  border-color: #d80b00;
-}
-
-.btn-danger.disabled:hover,
-.btn-danger[disabled]:hover,
-fieldset[disabled] .btn-danger:hover {
-  background-color: #ff3b30;
-  border-color: #ff2317;
-}
-
-.btn-link:hover {
-  border-color: transparent;
-}
-
-.btn-link:hover {
-  color: #0055b3;
-  text-decoration: underline;
-  background-color: transparent;
-}
-
-.btn-link[disabled]:hover,
-fieldset[disabled] .btn-link:hover {
-  color: #999999;
-  text-decoration: none;
-}
-
-.dropdown-menu > li > a:hover {
-  text-decoration: none;
-  color: #262626;
-  background-color: #f5f5f5;
-}
-
-.dropdown-menu > .active > a:hover {
-  color: #ffffff;
-  text-decoration: none;
-  outline: 0;
-  background-color: #007aff;
-}
-
-.dropdown-menu > .disabled > a:hover {
-  color: #999999;
-}
-
-.dropdown-menu > .disabled > a:hover {
-  text-decoration: none;
-  background-color: transparent;
-  background-image: none;
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-  cursor: not-allowed;
-}
-
-.btn-group > .btn:hover,
-.btn-group-vertical > .btn:hover {
-  z-index: 2;
-}
-
-.input-group-btn > .btn:hover {
-  z-index: 2;
-}
-
-.nav > li > a:hover {
-  text-decoration: none;
-  background-color: #eeeeee;
-}
-
-.nav > li.disabled > a:hover {
-  color: #999999;
-  text-decoration: none;
-  background-color: transparent;
-  cursor: not-allowed;
-}
-
-.nav .open > a:hover {
-  background-color: #eeeeee;
-  border-color: #007aff;
-}
-
-.nav-tabs > li > a:hover {
-  border-color: #eeeeee #eeeeee #dddddd;
-}
-
-.nav-tabs > li.active > a:hover {
-  color: #555555;
-  background-color: #ffffff;
-  border: 1px solid #dddddd;
-  border-bottom-color: transparent;
-  cursor: default;
-}
-
-.nav-tabs.nav-justified > .active > a:hover {
-  border: 1px solid #dddddd;
-}
-
-.nav-pills > li.active > a:hover {
-  color: #ffffff;
-  background-color: #007aff;
-}
-
-.nav-tabs-justified > .active > a:hover {
-  border: 1px solid #dddddd;
-}
-
-.navbar-brand:hover {
-  text-decoration: none;
-}
-
-.navbar-default .navbar-brand:hover {
-  color: #0062cc;
-  background-color: transparent;
-}
-
-.navbar-default .navbar-nav > li > a:hover {
-  color: #006ee6;
-  background-color: transparent;
-}
-
-.navbar-default .navbar-nav > .active > a:hover {
-  color: #1a87ff;
-  background-color: #e6e6e6;
-}
-
-.navbar-default .navbar-nav > .disabled > a:hover {
-  color: #66afff;
-  background-color: transparent;
-}
-
-.navbar-default .navbar-toggle:hover {
-  background-color: #dddddd;
-}
-
-.navbar-default .navbar-nav > .open > a:hover {
-  background-color: #e6e6e6;
-  color: #1a87ff;
-}
-
-.navbar-default .navbar-link:hover {
-  color: #006ee6;
-}
-
-.navbar-inverse .navbar-brand:hover {
-  color: #ffffff;
-  background-color: transparent;
-}
-
-.navbar-inverse .navbar-nav > li > a:hover {
-  color: #ffffff;
-  background-color: transparent;
-}
-
-.navbar-inverse .navbar-nav > .active > a:hover {
-  color: #ffffff;
-  background-color: #080808;
-}
-
-.navbar-inverse .navbar-nav > .disabled > a:hover {
-  color: #444444;
-  background-color: transparent;
-}
-
-.navbar-inverse .navbar-toggle:hover {
-  background-color: #333333;
-}
-
-.navbar-inverse .navbar-nav > .open > a:hover {
-  background-color: #080808;
-  color: #ffffff;
-}
-
-.navbar-inverse .navbar-link:hover {
-  color: #ffffff;
-}
-
-.pager li > a:hover {
-  text-decoration: none;
-  background-color: #eeeeee;
-}
-
-.pager .disabled > a:hover {
-  color: #999999;
-  background-color: #ffffff;
-  cursor: not-allowed;
-}
-
-.label[href]:hover {
-  color: #ffffff;
-  text-decoration: none;
-  cursor: pointer;
-}
-
-.label-default[href]:hover {
-  background-color: #808080;
-}
-
-.label-primary[href]:hover {
-  background-color: #0062cc;
-}
-
-.label-success[href]:hover {
-  background-color: #2ac845;
-}
-
-.label-info[href]:hover {
-  background-color: #218ebd;
-}
-
-.label-warning[href]:hover {
-  background-color: #cca300;
-}
-
-.label-danger[href]:hover {
-  background-color: #fc0d00;
-}
-
-a.badge:hover {
-  color: #ffffff;
-  text-decoration: none;
-  cursor: pointer;
-}
-
-a.thumbnail:hover {
-  border-color: #007aff;
-}
-
-a.list-group-item:hover {
-  text-decoration: none;
-  background-color: #f5f5f5;
-}
-
-a.list-group-item.active:hover {
-  z-index: 2;
-  color: #ffffff;
-  background-color: #007aff;
-  border-color: #007aff;
-}
-
-a.list-group-item.active:hover .list-group-item-heading {
-  color: inherit;
-}
-
-a.list-group-item.active:hover .list-group-item-text {
-  color: #cce4ff;
-}
-
-a.list-group-item-success:hover {
-  color: #3c763d;
-  background-color: #d0e9c6;
-}
-
-a.list-group-item-success.active:hover {
-  color: #fff;
-  background-color: #3c763d;
-  border-color: #3c763d;
-}
-
-a.list-group-item-info:hover {
-  color: #31708f;
-  background-color: #c4e3f3;
-}
-
-a.list-group-item-info.active:hover {
-  color: #fff;
-  background-color: #31708f;
-  border-color: #31708f;
-}
-
-a.list-group-item-warning:hover {
-  color: #8a6d3b;
-  background-color: #faf2cc;
-}
-
-a.list-group-item-warning.active:hover {
-  color: #fff;
-  background-color: #8a6d3b;
-  border-color: #8a6d3b;
-}
-
-a.list-group-item-danger:hover {
-  color: #a94442;
-  background-color: #ebcccc;
-}
-
-a.list-group-item-danger.active:hover {
-  color: #fff;
-  background-color: #a94442;
-  border-color: #a94442;
-}
-
-.close:hover {
-  color: #000000;
-  text-decoration: none;
-  cursor: pointer;
-  opacity: 0.5;
-  filter: alpha(opacity=50);
-}
-
-.carousel-control:hover {
-  outline: none;
-  color: #ffffff;
-  text-decoration: none;
-  opacity: 0.9;
-  filter: alpha(opacity=90);
-}
-
-.btn.active:hover {
-  -webkit-box-shadow: none;
-  box-shadow: none;
-}
-
-.btn-group > .btn-default.active:hover {
-  color: #ffffff;
-  background-color: #007aff;
-  border-color: #006ee6;
-}
-
-.navbar-app .btn-navbar:hover,
-.navbar-app .btn:hover {
-  color: #007aff;
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/css/mobile-angular-ui-hover.min.css
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/css/mobile-angular-ui-hover.min.css b/usage/jsgui/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/css/mobile-angular-ui-hover.min.css
deleted file mode 100644
index d02c4a2..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/css/mobile-angular-ui-hover.min.css
+++ /dev/null
@@ -1 +0,0 @@
-a:hover{outline:0;color:#0055b3;text-decoration:underline}a.text-primary:hover{color:#0062cc}a.text-success:hover{color:#2b542c}a.text-info:hover{color:#245269}a.text-warning:hover{color:#66512c}a.text-danger:hover{color:#843534}a.bg-primary:hover{background-color:#0062cc}a.bg-success:hover{background-color:#c1e2b3}a.bg-info:hover{background-color:#afd9ee}a.bg-warning:hover{background-color:#f7ecb5}a.bg-danger:hover{background-color:#e4b9b9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr>td.info:hover
 ,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.btn:hover{color:#333;text-decoration:none}.btn-default:hover{color:#333;background-color:#ebebeb;border-color:#adadad}.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-primary:hover{color:#fff;background-color:#0066d6;border-color:#0051a8}.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover{background-color:#007aff;border-color:#006ee6}.btn-success:hover{color:#fff;background-color:#2cd048;border-color:#24aa3b}.btn-success.disabled:hover,.b
 tn-success[disabled]:hover,fieldset[disabled] .btn-success:hover{background-color:#4cd964;border-color:#37d552}.btn-info:hover{color:#fff;background-color:#2295c5;border-color:#1b779e}.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover{background-color:#34aadc;border-color:#249ed2}.btn-warning:hover{color:#fff;background-color:#d6ab00;border-color:#a88700}.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover{background-color:#fc0;border-color:#e6b800}.btn-danger:hover{color:#fff;background-color:#ff1407;border-color:#d80b00}.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover{background-color:#ff3b30;border-color:#ff2317}.btn-link:hover{border-color:transparent;color:#0055b3;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover{color:#999;text-decoration:none}.dropdown-menu>li>a:hover{text-decoration:none;colo
 r:#262626;background-color:#f5f5f5}.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;outline:0;background-color:#007aff}.dropdown-menu>.disabled>a:hover{color:#999;text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.btn-group-vertical>.btn:hover,.btn-group>.btn:hover,.input-group-btn>.btn:hover{z-index:2}.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a:hover{color:#999;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a:hover{background-color:#eee;border-color:#007aff}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a:hover{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}.nav-pills>li.active>a:hover{color:#fff;background-color:#007aff}.nav-tabs-justified>.active>a:hover{borde
 r:1px solid #ddd}.navbar-brand:hover{text-decoration:none}.navbar-default .navbar-brand:hover{color:#0062cc;background-color:transparent}.navbar-default .navbar-nav>li>a:hover{color:#006ee6;background-color:transparent}.navbar-default .navbar-nav>.active>a:hover{color:#1a87ff;background-color:#e6e6e6}.navbar-default .navbar-nav>.disabled>a:hover{color:#66afff;background-color:transparent}.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-nav>.open>a:hover{background-color:#e6e6e6;color:#1a87ff}.navbar-default .navbar-link:hover{color:#006ee6}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-nav>.open>a:hover{background-color:#080808;color:#fff
 }.navbar-inverse .navbar-link:hover{color:#fff}.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .disabled>a:hover{color:#999;background-color:#fff;cursor:not-allowed}.label[href]:hover{color:#fff;text-decoration:none;cursor:pointer}.label-default[href]:hover{background-color:gray}.label-primary[href]:hover{background-color:#0062cc}.label-success[href]:hover{background-color:#2ac845}.label-info[href]:hover{background-color:#218ebd}.label-warning[href]:hover{background-color:#cca300}.label-danger[href]:hover{background-color:#fc0d00}a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}a.thumbnail:hover{border-color:#007aff}a.list-group-item:hover{text-decoration:none;background-color:#f5f5f5}a.list-group-item.active:hover{z-index:2;color:#fff;background-color:#007aff;border-color:#007aff}a.list-group-item.active:hover .list-group-item-heading{color:inherit}a.list-group-item.active:hover .list-group-item-text{color:#cce4ff}a.list-group-item-success:hover{colo
 r:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}a.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}a.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}a.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}.carousel-control:hover{outline:0;color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.btn.active:hover{-webkit-box-shadow:none;box-shadow:none}.btn-group>.btn-default.active:hover{color:#fff;background-color:#007aff;border-color:#006ee6}.navbar-app .btn-navbar
 :hover,.navbar-app .btn:hover{color:#007aff}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/fonts/FontAwesome.otf
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/fonts/FontAwesome.otf b/usage/jsgui/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/fonts/FontAwesome.otf
deleted file mode 100644
index 3461e3f..0000000
Binary files a/usage/jsgui/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/fonts/FontAwesome.otf and /dev/null differ

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/fonts/fontawesome-webfont.eot
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/fonts/fontawesome-webfont.eot b/usage/jsgui/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/fonts/fontawesome-webfont.eot
deleted file mode 100644
index 6cfd566..0000000
Binary files a/usage/jsgui/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/fonts/fontawesome-webfont.eot and /dev/null differ


[38/71] [abbrv] brooklyn-ui git commit: add js-yaml so we can parse yaml in the browser

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2d6f77df/usage/jsgui/src/test/javascript/config.txt
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/test/javascript/config.txt b/usage/jsgui/src/test/javascript/config.txt
index 6681acd..f540274 100644
--- a/usage/jsgui/src/test/javascript/config.txt
+++ b/usage/jsgui/src/test/javascript/config.txt
@@ -41,6 +41,7 @@
         "text":"js/libs/text",
         "uri":"js/libs/URI",
         "zeroclipboard":"js/libs/ZeroClipboard",
+        "js-yaml":"js/libs/js-yaml",
 
         "model":"js/model",
         "view":"js/view",


[41/71] [abbrv] brooklyn-ui git commit: if the yaml template does not include a location, don't show the yaml-edit tab but instead show the wizard to select location

Posted by he...@apache.org.
if the yaml template does not include a location, don't show the yaml-edit tab but instead show the wizard to select location


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/commit/8925128b
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/tree/8925128b
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/diff/8925128b

Branch: refs/heads/0.7.0-incubating
Commit: 8925128b2a0122d110160255e002453de7da8c80
Parents: 2d6f77d
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Sat Mar 28 20:02:10 2015 -0500
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Sat Mar 28 20:03:12 2015 -0500

----------------------------------------------------------------------
 .../assets/js/view/application-add-wizard.js    | 20 ++++++++++++++------
 1 file changed, 14 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/8925128b/usage/jsgui/src/main/webapp/assets/js/view/application-add-wizard.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/js/view/application-add-wizard.js b/usage/jsgui/src/main/webapp/assets/js/view/application-add-wizard.js
index bc5ae07..8a999d2 100644
--- a/usage/jsgui/src/main/webapp/assets/js/view/application-add-wizard.js
+++ b/usage/jsgui/src/main/webapp/assets/js/view/application-add-wizard.js
@@ -21,7 +21,7 @@
  * Also creates an empty Application model.
  */
 define([
-    "underscore", "jquery", "backbone", "brooklyn-utils",
+    "underscore", "jquery", "backbone", "brooklyn-utils", "js-yaml",
     "model/entity", "model/application", "model/location",
     "text!tpl/app-add-wizard/modal-wizard.html",
     "text!tpl/app-add-wizard/create.html",
@@ -35,7 +35,7 @@ define([
     "text!tpl/app-add-wizard/preview.html",
     "bootstrap"
     
-], function (_, $, Backbone, Util, Entity, Application, Location,
+], function (_, $, Backbone, Util, JsYaml, Entity, Application, Location,
              ModalHtml, CreateHtml, CreateStepTemplateEntryHtml, CreateEntityEntryHtml,
              RequiredConfigEntryHtml, EditConfigEntryHtml, DeployHtml,
              DeployLocationRowHtml, DeployLocationOptionHtml, PreviewHtml
@@ -250,13 +250,21 @@ define([
         nextStep:function () {
             if (this.currentStep < 2) {
                 if (this.currentView.validate()) {
-                    var isYaml = (this.currentView && this.currentView.selectedTemplate && this.currentView.selectedTemplate.yaml);
-                    if (isYaml) {
-                        // it's a yaml catalog template, show the yaml tab
+                    var yaml = (this.currentView && this.currentView.selectedTemplate && this.currentView.selectedTemplate.yaml);
+                    if (yaml) {
+                        try {
+                            yaml = JsYaml.safeLoad(yaml);
+                            yaml = (yaml.location || yaml.locations ? true : false);
+                        } catch (e) {
+                            yaml = false;
+                        }
+                    }
+                    if (yaml) {
+                        // it's a yaml catalog template which includes a location, show the yaml tab
            	            $("ul#app-add-wizard-create-tab").find("a[href='#yamlTab']").tab('show');
                         $("#yaml_code").focus()
                     } else {
-                        // it's a java catalog template, go to wizard for location + config
+                        // it's a java catalog template or yaml template without a location, go to wizard
                         this.currentStep += 1
                         this.renderCurrentStep()
                     }


[34/71] [abbrv] brooklyn-ui git commit: Addressed PR#542 comments

Posted by he...@apache.org.
Addressed PR#542 comments


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/commit/5a4b9844
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/tree/5a4b9844
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/diff/5a4b9844

Branch: refs/heads/0.7.0-incubating
Commit: 5a4b984406cd78bc5d2ce48de2a555e364121d7a
Parents: 67e671a
Author: Svetoslav Neykov <sv...@cloudsoftcorp.com>
Authored: Tue Mar 17 23:36:05 2015 +0200
Committer: Svetoslav Neykov <sv...@cloudsoftcorp.com>
Committed: Thu Mar 19 16:03:08 2015 +0200

----------------------------------------------------------------------
 .../rest/jsgui/BrooklynJavascriptGuiLauncherTest.java         | 7 +------
 1 file changed, 1 insertion(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/5a4b9844/usage/jsgui/src/test/java/brooklyn/rest/jsgui/BrooklynJavascriptGuiLauncherTest.java
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/test/java/brooklyn/rest/jsgui/BrooklynJavascriptGuiLauncherTest.java b/usage/jsgui/src/test/java/brooklyn/rest/jsgui/BrooklynJavascriptGuiLauncherTest.java
index ab55d66..9ebb40b 100644
--- a/usage/jsgui/src/test/java/brooklyn/rest/jsgui/BrooklynJavascriptGuiLauncherTest.java
+++ b/usage/jsgui/src/test/java/brooklyn/rest/jsgui/BrooklynJavascriptGuiLauncherTest.java
@@ -64,12 +64,7 @@ public class BrooklynJavascriptGuiLauncherTest {
     protected void checkUrlContains(final String path, final String text) {
         //Server may return 403 until it loads completely, wait a bit
         //until it stabilizes.
-        Asserts.succeedsEventually(new Runnable() {
-            @Override
-            public void run() {
-                HttpTestUtils.assertContentContainsText(rootUrl()+path, text);
-            }
-        });
+        HttpTestUtils.assertContentEventuallyContainsText(rootUrl()+path, text);
     }
 
     protected void checkEventuallyHealthy() {


[07/71] [abbrv] brooklyn-ui git commit: Move mobile app to sandbox

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ur-pk.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ur-pk.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ur-pk.js
deleted file mode 100644
index cd64221..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ur-pk.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u062f\u0646",
-      "\u0631\u0627\u062a"
-    ],
-    "DAY": [
-      "\u0627\u062a\u0648\u0627\u0631",
-      "\u067e\u064a\u0631",
-      "\u0645\u0646\u06af\u0644",
-      "\u0628\u062f\u0647",
-      "\u062c\u0645\u0639\u0631\u0627\u062a",
-      "\u062c\u0645\u0639\u06c1",
-      "\u06c1\u0641\u062a\u06c1"
-    ],
-    "MONTH": [
-      "\u062c\u0646\u0648\u0631\u06cc",
-      "\u0641\u0631\u0648\u0631\u06cc",
-      "\u0645\u0627\u0631\u0686",
-      "\u0627\u067e\u0631\u064a\u0644",
-      "\u0645\u0626",
-      "\u062c\u0648\u0646",
-      "\u062c\u0648\u0644\u0627\u0626",
-      "\u0627\u06af\u0633\u062a",
-      "\u0633\u062a\u0645\u0628\u0631",
-      "\u0627\u06a9\u062a\u0648\u0628\u0631",
-      "\u0646\u0648\u0645\u0628\u0631",
-      "\u062f\u0633\u0645\u0628\u0631"
-    ],
-    "SHORTDAY": [
-      "\u0627\u062a\u0648\u0627\u0631",
-      "\u067e\u064a\u0631",
-      "\u0645\u0646\u06af\u0644",
-      "\u0628\u062f\u0647",
-      "\u062c\u0645\u0639\u0631\u0627\u062a",
-      "\u062c\u0645\u0639\u06c1",
-      "\u06c1\u0641\u062a\u06c1"
-    ],
-    "SHORTMONTH": [
-      "\u062c\u0646\u0648\u0631\u06cc",
-      "\u0641\u0631\u0648\u0631\u06cc",
-      "\u0645\u0627\u0631\u0686",
-      "\u0627\u067e\u0631\u064a\u0644",
-      "\u0645\u0626",
-      "\u062c\u0648\u0646",
-      "\u062c\u0648\u0644\u0627\u0626",
-      "\u0627\u06af\u0633\u062a",
-      "\u0633\u062a\u0645\u0628\u0631",
-      "\u0627\u06a9\u062a\u0648\u0628\u0631",
-      "\u0646\u0648\u0645\u0628\u0631",
-      "\u062f\u0633\u0645\u0628\u0631"
-    ],
-    "fullDate": "EEEE\u060d d\u060d MMMM y",
-    "longDate": "d\u060d MMMM y",
-    "medium": "d\u060d MMM y h:mm:ss a",
-    "mediumDate": "d\u060d MMM y",
-    "mediumTime": "h:mm:ss a",
-    "short": "d/M/yy h:mm a",
-    "shortDate": "d/M/yy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "Rs",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "\u00a4-",
-        "negSuf": "",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "ur-pk",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ur.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ur.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ur.js
deleted file mode 100644
index d09bea8..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ur.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u062f\u0646",
-      "\u0631\u0627\u062a"
-    ],
-    "DAY": [
-      "\u0627\u062a\u0648\u0627\u0631",
-      "\u067e\u064a\u0631",
-      "\u0645\u0646\u06af\u0644",
-      "\u0628\u062f\u0647",
-      "\u062c\u0645\u0639\u0631\u0627\u062a",
-      "\u062c\u0645\u0639\u06c1",
-      "\u06c1\u0641\u062a\u06c1"
-    ],
-    "MONTH": [
-      "\u062c\u0646\u0648\u0631\u06cc",
-      "\u0641\u0631\u0648\u0631\u06cc",
-      "\u0645\u0627\u0631\u0686",
-      "\u0627\u067e\u0631\u064a\u0644",
-      "\u0645\u0626",
-      "\u062c\u0648\u0646",
-      "\u062c\u0648\u0644\u0627\u0626",
-      "\u0627\u06af\u0633\u062a",
-      "\u0633\u062a\u0645\u0628\u0631",
-      "\u0627\u06a9\u062a\u0648\u0628\u0631",
-      "\u0646\u0648\u0645\u0628\u0631",
-      "\u062f\u0633\u0645\u0628\u0631"
-    ],
-    "SHORTDAY": [
-      "\u0627\u062a\u0648\u0627\u0631",
-      "\u067e\u064a\u0631",
-      "\u0645\u0646\u06af\u0644",
-      "\u0628\u062f\u0647",
-      "\u062c\u0645\u0639\u0631\u0627\u062a",
-      "\u062c\u0645\u0639\u06c1",
-      "\u06c1\u0641\u062a\u06c1"
-    ],
-    "SHORTMONTH": [
-      "\u062c\u0646\u0648\u0631\u06cc",
-      "\u0641\u0631\u0648\u0631\u06cc",
-      "\u0645\u0627\u0631\u0686",
-      "\u0627\u067e\u0631\u064a\u0644",
-      "\u0645\u0626",
-      "\u062c\u0648\u0646",
-      "\u062c\u0648\u0644\u0627\u0626",
-      "\u0627\u06af\u0633\u062a",
-      "\u0633\u062a\u0645\u0628\u0631",
-      "\u0627\u06a9\u062a\u0648\u0628\u0631",
-      "\u0646\u0648\u0645\u0628\u0631",
-      "\u062f\u0633\u0645\u0628\u0631"
-    ],
-    "fullDate": "EEEE\u060d d\u060d MMMM y",
-    "longDate": "d\u060d MMMM y",
-    "medium": "d\u060d MMM y h:mm:ss a",
-    "mediumDate": "d\u060d MMM y",
-    "mediumTime": "h:mm:ss a",
-    "short": "d/M/yy h:mm a",
-    "shortDate": "d/M/yy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "Rs",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "\u00a4-",
-        "negSuf": "",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "ur",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_vi-vn.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_vi-vn.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_vi-vn.js
deleted file mode 100644
index 1f4fa05..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_vi-vn.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "SA",
-      "CH"
-    ],
-    "DAY": [
-      "Ch\u1ee7 nh\u1eadt",
-      "Th\u1ee9 hai",
-      "Th\u1ee9 ba",
-      "Th\u1ee9 t\u01b0",
-      "Th\u1ee9 n\u0103m",
-      "Th\u1ee9 s\u00e1u",
-      "Th\u1ee9 b\u1ea3y"
-    ],
-    "MONTH": [
-      "th\u00e1ng m\u1ed9t",
-      "th\u00e1ng hai",
-      "th\u00e1ng ba",
-      "th\u00e1ng t\u01b0",
-      "th\u00e1ng n\u0103m",
-      "th\u00e1ng s\u00e1u",
-      "th\u00e1ng b\u1ea3y",
-      "th\u00e1ng t\u00e1m",
-      "th\u00e1ng ch\u00edn",
-      "th\u00e1ng m\u01b0\u1eddi",
-      "th\u00e1ng m\u01b0\u1eddi m\u1ed9t",
-      "th\u00e1ng m\u01b0\u1eddi hai"
-    ],
-    "SHORTDAY": [
-      "CN",
-      "Th 2",
-      "Th 3",
-      "Th 4",
-      "Th 5",
-      "Th 6",
-      "Th 7"
-    ],
-    "SHORTMONTH": [
-      "thg 1",
-      "thg 2",
-      "thg 3",
-      "thg 4",
-      "thg 5",
-      "thg 6",
-      "thg 7",
-      "thg 8",
-      "thg 9",
-      "thg 10",
-      "thg 11",
-      "thg 12"
-    ],
-    "fullDate": "EEEE, 'ng\u00e0y' dd MMMM 'n\u0103m' y",
-    "longDate": "'Ng\u00e0y' dd 'th\u00e1ng' M 'n\u0103m' y",
-    "medium": "dd-MM-yyyy HH:mm:ss",
-    "mediumDate": "dd-MM-yyyy",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yyyy HH:mm",
-    "shortDate": "dd/MM/yyyy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ab",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "vi-vn",
-  "pluralCat": function (n) {  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_vi.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_vi.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_vi.js
deleted file mode 100644
index d8d478e..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_vi.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "SA",
-      "CH"
-    ],
-    "DAY": [
-      "Ch\u1ee7 nh\u1eadt",
-      "Th\u1ee9 hai",
-      "Th\u1ee9 ba",
-      "Th\u1ee9 t\u01b0",
-      "Th\u1ee9 n\u0103m",
-      "Th\u1ee9 s\u00e1u",
-      "Th\u1ee9 b\u1ea3y"
-    ],
-    "MONTH": [
-      "th\u00e1ng m\u1ed9t",
-      "th\u00e1ng hai",
-      "th\u00e1ng ba",
-      "th\u00e1ng t\u01b0",
-      "th\u00e1ng n\u0103m",
-      "th\u00e1ng s\u00e1u",
-      "th\u00e1ng b\u1ea3y",
-      "th\u00e1ng t\u00e1m",
-      "th\u00e1ng ch\u00edn",
-      "th\u00e1ng m\u01b0\u1eddi",
-      "th\u00e1ng m\u01b0\u1eddi m\u1ed9t",
-      "th\u00e1ng m\u01b0\u1eddi hai"
-    ],
-    "SHORTDAY": [
-      "CN",
-      "Th 2",
-      "Th 3",
-      "Th 4",
-      "Th 5",
-      "Th 6",
-      "Th 7"
-    ],
-    "SHORTMONTH": [
-      "thg 1",
-      "thg 2",
-      "thg 3",
-      "thg 4",
-      "thg 5",
-      "thg 6",
-      "thg 7",
-      "thg 8",
-      "thg 9",
-      "thg 10",
-      "thg 11",
-      "thg 12"
-    ],
-    "fullDate": "EEEE, 'ng\u00e0y' dd MMMM 'n\u0103m' y",
-    "longDate": "'Ng\u00e0y' dd 'th\u00e1ng' M 'n\u0103m' y",
-    "medium": "dd-MM-yyyy HH:mm:ss",
-    "mediumDate": "dd-MM-yyyy",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yyyy HH:mm",
-    "shortDate": "dd/MM/yyyy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ab",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "vi",
-  "pluralCat": function (n) {  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-cn.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-cn.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-cn.js
deleted file mode 100644
index 787d1fd..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-cn.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u4e0a\u5348",
-      "\u4e0b\u5348"
-    ],
-    "DAY": [
-      "\u661f\u671f\u65e5",
-      "\u661f\u671f\u4e00",
-      "\u661f\u671f\u4e8c",
-      "\u661f\u671f\u4e09",
-      "\u661f\u671f\u56db",
-      "\u661f\u671f\u4e94",
-      "\u661f\u671f\u516d"
-    ],
-    "MONTH": [
-      "1\u6708",
-      "2\u6708",
-      "3\u6708",
-      "4\u6708",
-      "5\u6708",
-      "6\u6708",
-      "7\u6708",
-      "8\u6708",
-      "9\u6708",
-      "10\u6708",
-      "11\u6708",
-      "12\u6708"
-    ],
-    "SHORTDAY": [
-      "\u5468\u65e5",
-      "\u5468\u4e00",
-      "\u5468\u4e8c",
-      "\u5468\u4e09",
-      "\u5468\u56db",
-      "\u5468\u4e94",
-      "\u5468\u516d"
-    ],
-    "SHORTMONTH": [
-      "1\u6708",
-      "2\u6708",
-      "3\u6708",
-      "4\u6708",
-      "5\u6708",
-      "6\u6708",
-      "7\u6708",
-      "8\u6708",
-      "9\u6708",
-      "10\u6708",
-      "11\u6708",
-      "12\u6708"
-    ],
-    "fullDate": "y\u5e74M\u6708d\u65e5EEEE",
-    "longDate": "y\u5e74M\u6708d\u65e5",
-    "medium": "yyyy-M-d ah:mm:ss",
-    "mediumDate": "yyyy-M-d",
-    "mediumTime": "ah:mm:ss",
-    "short": "yy-M-d ah:mm",
-    "shortDate": "yy-M-d",
-    "shortTime": "ah:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u00a5",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "zh-cn",
-  "pluralCat": function (n) {  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hans-cn.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hans-cn.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hans-cn.js
deleted file mode 100644
index b439a08..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hans-cn.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u4e0a\u5348",
-      "\u4e0b\u5348"
-    ],
-    "DAY": [
-      "\u661f\u671f\u65e5",
-      "\u661f\u671f\u4e00",
-      "\u661f\u671f\u4e8c",
-      "\u661f\u671f\u4e09",
-      "\u661f\u671f\u56db",
-      "\u661f\u671f\u4e94",
-      "\u661f\u671f\u516d"
-    ],
-    "MONTH": [
-      "1\u6708",
-      "2\u6708",
-      "3\u6708",
-      "4\u6708",
-      "5\u6708",
-      "6\u6708",
-      "7\u6708",
-      "8\u6708",
-      "9\u6708",
-      "10\u6708",
-      "11\u6708",
-      "12\u6708"
-    ],
-    "SHORTDAY": [
-      "\u5468\u65e5",
-      "\u5468\u4e00",
-      "\u5468\u4e8c",
-      "\u5468\u4e09",
-      "\u5468\u56db",
-      "\u5468\u4e94",
-      "\u5468\u516d"
-    ],
-    "SHORTMONTH": [
-      "1\u6708",
-      "2\u6708",
-      "3\u6708",
-      "4\u6708",
-      "5\u6708",
-      "6\u6708",
-      "7\u6708",
-      "8\u6708",
-      "9\u6708",
-      "10\u6708",
-      "11\u6708",
-      "12\u6708"
-    ],
-    "fullDate": "y\u5e74M\u6708d\u65e5EEEE",
-    "longDate": "y\u5e74M\u6708d\u65e5",
-    "medium": "yyyy-M-d ah:mm:ss",
-    "mediumDate": "yyyy-M-d",
-    "mediumTime": "ah:mm:ss",
-    "short": "yy-M-d ah:mm",
-    "shortDate": "yy-M-d",
-    "shortTime": "ah:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u00a5",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "zh-hans-cn",
-  "pluralCat": function (n) {  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hans-hk.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hans-hk.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hans-hk.js
deleted file mode 100644
index 079fdde..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hans-hk.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u4e0a\u5348",
-      "\u4e0b\u5348"
-    ],
-    "DAY": [
-      "\u661f\u671f\u65e5",
-      "\u661f\u671f\u4e00",
-      "\u661f\u671f\u4e8c",
-      "\u661f\u671f\u4e09",
-      "\u661f\u671f\u56db",
-      "\u661f\u671f\u4e94",
-      "\u661f\u671f\u516d"
-    ],
-    "MONTH": [
-      "\u4e00\u6708",
-      "\u4e8c\u6708",
-      "\u4e09\u6708",
-      "\u56db\u6708",
-      "\u4e94\u6708",
-      "\u516d\u6708",
-      "\u4e03\u6708",
-      "\u516b\u6708",
-      "\u4e5d\u6708",
-      "\u5341\u6708",
-      "\u5341\u4e00\u6708",
-      "\u5341\u4e8c\u6708"
-    ],
-    "SHORTDAY": [
-      "\u5468\u65e5",
-      "\u5468\u4e00",
-      "\u5468\u4e8c",
-      "\u5468\u4e09",
-      "\u5468\u56db",
-      "\u5468\u4e94",
-      "\u5468\u516d"
-    ],
-    "SHORTMONTH": [
-      "1\u6708",
-      "2\u6708",
-      "3\u6708",
-      "4\u6708",
-      "5\u6708",
-      "6\u6708",
-      "7\u6708",
-      "8\u6708",
-      "9\u6708",
-      "10\u6708",
-      "11\u6708",
-      "12\u6708"
-    ],
-    "fullDate": "y\u5e74M\u6708d\u65e5EEEE",
-    "longDate": "y\u5e74M\u6708d\u65e5",
-    "medium": "y\u5e74M\u6708d\u65e5 ah:mm:ss",
-    "mediumDate": "y\u5e74M\u6708d\u65e5",
-    "mediumTime": "ah:mm:ss",
-    "short": "d/M/yy ah:mm",
-    "shortDate": "d/M/yy",
-    "shortTime": "ah:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u00a5",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "zh-hans-hk",
-  "pluralCat": function (n) {  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hans-mo.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hans-mo.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hans-mo.js
deleted file mode 100644
index 4e93003..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hans-mo.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u4e0a\u5348",
-      "\u4e0b\u5348"
-    ],
-    "DAY": [
-      "\u661f\u671f\u65e5",
-      "\u661f\u671f\u4e00",
-      "\u661f\u671f\u4e8c",
-      "\u661f\u671f\u4e09",
-      "\u661f\u671f\u56db",
-      "\u661f\u671f\u4e94",
-      "\u661f\u671f\u516d"
-    ],
-    "MONTH": [
-      "\u4e00\u6708",
-      "\u4e8c\u6708",
-      "\u4e09\u6708",
-      "\u56db\u6708",
-      "\u4e94\u6708",
-      "\u516d\u6708",
-      "\u4e03\u6708",
-      "\u516b\u6708",
-      "\u4e5d\u6708",
-      "\u5341\u6708",
-      "\u5341\u4e00\u6708",
-      "\u5341\u4e8c\u6708"
-    ],
-    "SHORTDAY": [
-      "\u5468\u65e5",
-      "\u5468\u4e00",
-      "\u5468\u4e8c",
-      "\u5468\u4e09",
-      "\u5468\u56db",
-      "\u5468\u4e94",
-      "\u5468\u516d"
-    ],
-    "SHORTMONTH": [
-      "1\u6708",
-      "2\u6708",
-      "3\u6708",
-      "4\u6708",
-      "5\u6708",
-      "6\u6708",
-      "7\u6708",
-      "8\u6708",
-      "9\u6708",
-      "10\u6708",
-      "11\u6708",
-      "12\u6708"
-    ],
-    "fullDate": "y\u5e74M\u6708d\u65e5EEEE",
-    "longDate": "y\u5e74M\u6708d\u65e5",
-    "medium": "y\u5e74M\u6708d\u65e5 ah:mm:ss",
-    "mediumDate": "y\u5e74M\u6708d\u65e5",
-    "mediumTime": "ah:mm:ss",
-    "short": "d/M/yy ah:mm",
-    "shortDate": "d/M/yy",
-    "shortTime": "ah:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u00a5",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "zh-hans-mo",
-  "pluralCat": function (n) {  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hans-sg.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hans-sg.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hans-sg.js
deleted file mode 100644
index 2c2ea98..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hans-sg.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u4e0a\u5348",
-      "\u4e0b\u5348"
-    ],
-    "DAY": [
-      "\u661f\u671f\u65e5",
-      "\u661f\u671f\u4e00",
-      "\u661f\u671f\u4e8c",
-      "\u661f\u671f\u4e09",
-      "\u661f\u671f\u56db",
-      "\u661f\u671f\u4e94",
-      "\u661f\u671f\u516d"
-    ],
-    "MONTH": [
-      "\u4e00\u6708",
-      "\u4e8c\u6708",
-      "\u4e09\u6708",
-      "\u56db\u6708",
-      "\u4e94\u6708",
-      "\u516d\u6708",
-      "\u4e03\u6708",
-      "\u516b\u6708",
-      "\u4e5d\u6708",
-      "\u5341\u6708",
-      "\u5341\u4e00\u6708",
-      "\u5341\u4e8c\u6708"
-    ],
-    "SHORTDAY": [
-      "\u5468\u65e5",
-      "\u5468\u4e00",
-      "\u5468\u4e8c",
-      "\u5468\u4e09",
-      "\u5468\u56db",
-      "\u5468\u4e94",
-      "\u5468\u516d"
-    ],
-    "SHORTMONTH": [
-      "1\u6708",
-      "2\u6708",
-      "3\u6708",
-      "4\u6708",
-      "5\u6708",
-      "6\u6708",
-      "7\u6708",
-      "8\u6708",
-      "9\u6708",
-      "10\u6708",
-      "11\u6708",
-      "12\u6708"
-    ],
-    "fullDate": "y\u5e74M\u6708d\u65e5EEEE",
-    "longDate": "y\u5e74M\u6708d\u65e5",
-    "medium": "y\u5e74M\u6708d\u65e5 ah:mm:ss",
-    "mediumDate": "y\u5e74M\u6708d\u65e5",
-    "mediumTime": "ah:mm:ss",
-    "short": "dd/MM/yy ahh:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "ahh:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u00a5",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "zh-hans-sg",
-  "pluralCat": function (n) {  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hans.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hans.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hans.js
deleted file mode 100644
index 5c76da0..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hans.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u4e0a\u5348",
-      "\u4e0b\u5348"
-    ],
-    "DAY": [
-      "\u661f\u671f\u65e5",
-      "\u661f\u671f\u4e00",
-      "\u661f\u671f\u4e8c",
-      "\u661f\u671f\u4e09",
-      "\u661f\u671f\u56db",
-      "\u661f\u671f\u4e94",
-      "\u661f\u671f\u516d"
-    ],
-    "MONTH": [
-      "1\u6708",
-      "2\u6708",
-      "3\u6708",
-      "4\u6708",
-      "5\u6708",
-      "6\u6708",
-      "7\u6708",
-      "8\u6708",
-      "9\u6708",
-      "10\u6708",
-      "11\u6708",
-      "12\u6708"
-    ],
-    "SHORTDAY": [
-      "\u5468\u65e5",
-      "\u5468\u4e00",
-      "\u5468\u4e8c",
-      "\u5468\u4e09",
-      "\u5468\u56db",
-      "\u5468\u4e94",
-      "\u5468\u516d"
-    ],
-    "SHORTMONTH": [
-      "1\u6708",
-      "2\u6708",
-      "3\u6708",
-      "4\u6708",
-      "5\u6708",
-      "6\u6708",
-      "7\u6708",
-      "8\u6708",
-      "9\u6708",
-      "10\u6708",
-      "11\u6708",
-      "12\u6708"
-    ],
-    "fullDate": "y\u5e74M\u6708d\u65e5EEEE",
-    "longDate": "y\u5e74M\u6708d\u65e5",
-    "medium": "yyyy-M-d ah:mm:ss",
-    "mediumDate": "yyyy-M-d",
-    "mediumTime": "ah:mm:ss",
-    "short": "yy-M-d ah:mm",
-    "shortDate": "yy-M-d",
-    "shortTime": "ah:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u00a5",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "zh-hans",
-  "pluralCat": function (n) {  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hant-hk.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hant-hk.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hant-hk.js
deleted file mode 100644
index 822a17b..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hant-hk.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u4e0a\u5348",
-      "\u4e0b\u5348"
-    ],
-    "DAY": [
-      "\u661f\u671f\u65e5",
-      "\u661f\u671f\u4e00",
-      "\u661f\u671f\u4e8c",
-      "\u661f\u671f\u4e09",
-      "\u661f\u671f\u56db",
-      "\u661f\u671f\u4e94",
-      "\u661f\u671f\u516d"
-    ],
-    "MONTH": [
-      "1\u6708",
-      "2\u6708",
-      "3\u6708",
-      "4\u6708",
-      "5\u6708",
-      "6\u6708",
-      "7\u6708",
-      "8\u6708",
-      "9\u6708",
-      "10\u6708",
-      "11\u6708",
-      "12\u6708"
-    ],
-    "SHORTDAY": [
-      "\u9031\u65e5",
-      "\u9031\u4e00",
-      "\u9031\u4e8c",
-      "\u9031\u4e09",
-      "\u9031\u56db",
-      "\u9031\u4e94",
-      "\u9031\u516d"
-    ],
-    "SHORTMONTH": [
-      "1\u6708",
-      "2\u6708",
-      "3\u6708",
-      "4\u6708",
-      "5\u6708",
-      "6\u6708",
-      "7\u6708",
-      "8\u6708",
-      "9\u6708",
-      "10\u6708",
-      "11\u6708",
-      "12\u6708"
-    ],
-    "fullDate": "y\u5e74M\u6708d\u65e5EEEE",
-    "longDate": "y\u5e74M\u6708d\u65e5",
-    "medium": "y\u5e74M\u6708d\u65e5 ahh:mm:ss",
-    "mediumDate": "y\u5e74M\u6708d\u65e5",
-    "mediumTime": "ahh:mm:ss",
-    "short": "yy\u5e74M\u6708d\u65e5 ah:mm",
-    "shortDate": "yy\u5e74M\u6708d\u65e5",
-    "shortTime": "ah:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u00a5",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "zh-hant-hk",
-  "pluralCat": function (n) {  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hant-mo.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hant-mo.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hant-mo.js
deleted file mode 100644
index c23d3bc..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hant-mo.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u4e0a\u5348",
-      "\u4e0b\u5348"
-    ],
-    "DAY": [
-      "\u661f\u671f\u65e5",
-      "\u661f\u671f\u4e00",
-      "\u661f\u671f\u4e8c",
-      "\u661f\u671f\u4e09",
-      "\u661f\u671f\u56db",
-      "\u661f\u671f\u4e94",
-      "\u661f\u671f\u516d"
-    ],
-    "MONTH": [
-      "1\u6708",
-      "2\u6708",
-      "3\u6708",
-      "4\u6708",
-      "5\u6708",
-      "6\u6708",
-      "7\u6708",
-      "8\u6708",
-      "9\u6708",
-      "10\u6708",
-      "11\u6708",
-      "12\u6708"
-    ],
-    "SHORTDAY": [
-      "\u9031\u65e5",
-      "\u9031\u4e00",
-      "\u9031\u4e8c",
-      "\u9031\u4e09",
-      "\u9031\u56db",
-      "\u9031\u4e94",
-      "\u9031\u516d"
-    ],
-    "SHORTMONTH": [
-      "1\u6708",
-      "2\u6708",
-      "3\u6708",
-      "4\u6708",
-      "5\u6708",
-      "6\u6708",
-      "7\u6708",
-      "8\u6708",
-      "9\u6708",
-      "10\u6708",
-      "11\u6708",
-      "12\u6708"
-    ],
-    "fullDate": "y\u5e74MM\u6708dd\u65e5EEEE",
-    "longDate": "y\u5e74MM\u6708dd\u65e5",
-    "medium": "y\u5e74M\u6708d\u65e5 ahh:mm:ss",
-    "mediumDate": "y\u5e74M\u6708d\u65e5",
-    "mediumTime": "ahh:mm:ss",
-    "short": "yy\u5e74M\u6708d\u65e5 ah:mm",
-    "shortDate": "yy\u5e74M\u6708d\u65e5",
-    "shortTime": "ah:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u00a5",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "zh-hant-mo",
-  "pluralCat": function (n) {  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hant-tw.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hant-tw.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hant-tw.js
deleted file mode 100644
index d242f7f..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hant-tw.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u4e0a\u5348",
-      "\u4e0b\u5348"
-    ],
-    "DAY": [
-      "\u661f\u671f\u65e5",
-      "\u661f\u671f\u4e00",
-      "\u661f\u671f\u4e8c",
-      "\u661f\u671f\u4e09",
-      "\u661f\u671f\u56db",
-      "\u661f\u671f\u4e94",
-      "\u661f\u671f\u516d"
-    ],
-    "MONTH": [
-      "1\u6708",
-      "2\u6708",
-      "3\u6708",
-      "4\u6708",
-      "5\u6708",
-      "6\u6708",
-      "7\u6708",
-      "8\u6708",
-      "9\u6708",
-      "10\u6708",
-      "11\u6708",
-      "12\u6708"
-    ],
-    "SHORTDAY": [
-      "\u9031\u65e5",
-      "\u9031\u4e00",
-      "\u9031\u4e8c",
-      "\u9031\u4e09",
-      "\u9031\u56db",
-      "\u9031\u4e94",
-      "\u9031\u516d"
-    ],
-    "SHORTMONTH": [
-      "1\u6708",
-      "2\u6708",
-      "3\u6708",
-      "4\u6708",
-      "5\u6708",
-      "6\u6708",
-      "7\u6708",
-      "8\u6708",
-      "9\u6708",
-      "10\u6708",
-      "11\u6708",
-      "12\u6708"
-    ],
-    "fullDate": "y\u5e74M\u6708d\u65e5EEEE",
-    "longDate": "y\u5e74M\u6708d\u65e5",
-    "medium": "yyyy/M/d ah:mm:ss",
-    "mediumDate": "yyyy/M/d",
-    "mediumTime": "ah:mm:ss",
-    "short": "y/M/d ah:mm",
-    "shortDate": "y/M/d",
-    "shortTime": "ah:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u00a5",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "zh-hant-tw",
-  "pluralCat": function (n) {  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hant.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hant.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hant.js
deleted file mode 100644
index f721f68..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hant.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u4e0a\u5348",
-      "\u4e0b\u5348"
-    ],
-    "DAY": [
-      "\u661f\u671f\u65e5",
-      "\u661f\u671f\u4e00",
-      "\u661f\u671f\u4e8c",
-      "\u661f\u671f\u4e09",
-      "\u661f\u671f\u56db",
-      "\u661f\u671f\u4e94",
-      "\u661f\u671f\u516d"
-    ],
-    "MONTH": [
-      "1\u6708",
-      "2\u6708",
-      "3\u6708",
-      "4\u6708",
-      "5\u6708",
-      "6\u6708",
-      "7\u6708",
-      "8\u6708",
-      "9\u6708",
-      "10\u6708",
-      "11\u6708",
-      "12\u6708"
-    ],
-    "SHORTDAY": [
-      "\u9031\u65e5",
-      "\u9031\u4e00",
-      "\u9031\u4e8c",
-      "\u9031\u4e09",
-      "\u9031\u56db",
-      "\u9031\u4e94",
-      "\u9031\u516d"
-    ],
-    "SHORTMONTH": [
-      "1\u6708",
-      "2\u6708",
-      "3\u6708",
-      "4\u6708",
-      "5\u6708",
-      "6\u6708",
-      "7\u6708",
-      "8\u6708",
-      "9\u6708",
-      "10\u6708",
-      "11\u6708",
-      "12\u6708"
-    ],
-    "fullDate": "y\u5e74M\u6708d\u65e5EEEE",
-    "longDate": "y\u5e74M\u6708d\u65e5",
-    "medium": "yyyy/M/d ah:mm:ss",
-    "mediumDate": "yyyy/M/d",
-    "mediumTime": "ah:mm:ss",
-    "short": "y/M/d ah:mm",
-    "shortDate": "y/M/d",
-    "shortTime": "ah:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u00a5",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "zh-hant",
-  "pluralCat": function (n) {  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hk.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hk.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hk.js
deleted file mode 100644
index 0a47198..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hk.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u4e0a\u5348",
-      "\u4e0b\u5348"
-    ],
-    "DAY": [
-      "\u661f\u671f\u65e5",
-      "\u661f\u671f\u4e00",
-      "\u661f\u671f\u4e8c",
-      "\u661f\u671f\u4e09",
-      "\u661f\u671f\u56db",
-      "\u661f\u671f\u4e94",
-      "\u661f\u671f\u516d"
-    ],
-    "MONTH": [
-      "1\u6708",
-      "2\u6708",
-      "3\u6708",
-      "4\u6708",
-      "5\u6708",
-      "6\u6708",
-      "7\u6708",
-      "8\u6708",
-      "9\u6708",
-      "10\u6708",
-      "11\u6708",
-      "12\u6708"
-    ],
-    "SHORTDAY": [
-      "\u9031\u65e5",
-      "\u9031\u4e00",
-      "\u9031\u4e8c",
-      "\u9031\u4e09",
-      "\u9031\u56db",
-      "\u9031\u4e94",
-      "\u9031\u516d"
-    ],
-    "SHORTMONTH": [
-      "1\u6708",
-      "2\u6708",
-      "3\u6708",
-      "4\u6708",
-      "5\u6708",
-      "6\u6708",
-      "7\u6708",
-      "8\u6708",
-      "9\u6708",
-      "10\u6708",
-      "11\u6708",
-      "12\u6708"
-    ],
-    "fullDate": "y\u5e74M\u6708d\u65e5EEEE",
-    "longDate": "y\u5e74M\u6708d\u65e5",
-    "medium": "y\u5e74M\u6708d\u65e5 ahh:mm:ss",
-    "mediumDate": "y\u5e74M\u6708d\u65e5",
-    "mediumTime": "ahh:mm:ss",
-    "short": "yy\u5e74M\u6708d\u65e5 ah:mm",
-    "shortDate": "yy\u5e74M\u6708d\u65e5",
-    "shortTime": "ah:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "$",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "zh-hk",
-  "pluralCat": function (n) {  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-tw.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-tw.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-tw.js
deleted file mode 100644
index 8989021..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-tw.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u4e0a\u5348",
-      "\u4e0b\u5348"
-    ],
-    "DAY": [
-      "\u661f\u671f\u65e5",
-      "\u661f\u671f\u4e00",
-      "\u661f\u671f\u4e8c",
-      "\u661f\u671f\u4e09",
-      "\u661f\u671f\u56db",
-      "\u661f\u671f\u4e94",
-      "\u661f\u671f\u516d"
-    ],
-    "MONTH": [
-      "1\u6708",
-      "2\u6708",
-      "3\u6708",
-      "4\u6708",
-      "5\u6708",
-      "6\u6708",
-      "7\u6708",
-      "8\u6708",
-      "9\u6708",
-      "10\u6708",
-      "11\u6708",
-      "12\u6708"
-    ],
-    "SHORTDAY": [
-      "\u9031\u65e5",
-      "\u9031\u4e00",
-      "\u9031\u4e8c",
-      "\u9031\u4e09",
-      "\u9031\u56db",
-      "\u9031\u4e94",
-      "\u9031\u516d"
-    ],
-    "SHORTMONTH": [
-      "1\u6708",
-      "2\u6708",
-      "3\u6708",
-      "4\u6708",
-      "5\u6708",
-      "6\u6708",
-      "7\u6708",
-      "8\u6708",
-      "9\u6708",
-      "10\u6708",
-      "11\u6708",
-      "12\u6708"
-    ],
-    "fullDate": "y\u5e74M\u6708d\u65e5EEEE",
-    "longDate": "y\u5e74M\u6708d\u65e5",
-    "medium": "yyyy/M/d ah:mm:ss",
-    "mediumDate": "yyyy/M/d",
-    "mediumTime": "ah:mm:ss",
-    "short": "y/M/d ah:mm",
-    "shortDate": "y/M/d",
-    "shortTime": "ah:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "NT$",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "\u00a4-",
-        "negSuf": "",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "zh-tw",
-  "pluralCat": function (n) {  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh.js
deleted file mode 100644
index d02bfa3..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u4e0a\u5348",
-      "\u4e0b\u5348"
-    ],
-    "DAY": [
-      "\u661f\u671f\u65e5",
-      "\u661f\u671f\u4e00",
-      "\u661f\u671f\u4e8c",
-      "\u661f\u671f\u4e09",
-      "\u661f\u671f\u56db",
-      "\u661f\u671f\u4e94",
-      "\u661f\u671f\u516d"
-    ],
-    "MONTH": [
-      "1\u6708",
-      "2\u6708",
-      "3\u6708",
-      "4\u6708",
-      "5\u6708",
-      "6\u6708",
-      "7\u6708",
-      "8\u6708",
-      "9\u6708",
-      "10\u6708",
-      "11\u6708",
-      "12\u6708"
-    ],
-    "SHORTDAY": [
-      "\u5468\u65e5",
-      "\u5468\u4e00",
-      "\u5468\u4e8c",
-      "\u5468\u4e09",
-      "\u5468\u56db",
-      "\u5468\u4e94",
-      "\u5468\u516d"
-    ],
-    "SHORTMONTH": [
-      "1\u6708",
-      "2\u6708",
-      "3\u6708",
-      "4\u6708",
-      "5\u6708",
-      "6\u6708",
-      "7\u6708",
-      "8\u6708",
-      "9\u6708",
-      "10\u6708",
-      "11\u6708",
-      "12\u6708"
-    ],
-    "fullDate": "y\u5e74M\u6708d\u65e5EEEE",
-    "longDate": "y\u5e74M\u6708d\u65e5",
-    "medium": "yyyy-M-d ah:mm:ss",
-    "mediumDate": "yyyy-M-d",
-    "mediumTime": "ah:mm:ss",
-    "short": "yy-M-d ah:mm",
-    "shortDate": "yy-M-d",
-    "shortTime": "ah:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u00a5",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "zh",
-  "pluralCat": function (n) {  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zu-za.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zu-za.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zu-za.js
deleted file mode 100644
index 4c6cda6..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zu-za.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "Sonto",
-      "Msombuluko",
-      "Lwesibili",
-      "Lwesithathu",
-      "uLwesine",
-      "Lwesihlanu",
-      "Mgqibelo"
-    ],
-    "MONTH": [
-      "Januwari",
-      "Februwari",
-      "Mashi",
-      "Apreli",
-      "Meyi",
-      "Juni",
-      "Julayi",
-      "Agasti",
-      "Septhemba",
-      "Okthoba",
-      "Novemba",
-      "Disemba"
-    ],
-    "SHORTDAY": [
-      "Son",
-      "Mso",
-      "Bil",
-      "Tha",
-      "Sin",
-      "Hla",
-      "Mgq"
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Feb",
-      "Mas",
-      "Apr",
-      "Mey",
-      "Jun",
-      "Jul",
-      "Aga",
-      "Sep",
-      "Okt",
-      "Nov",
-      "Dis"
-    ],
-    "fullDate": "EEEE dd MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y h:mm:ss a",
-    "mediumDate": "d MMM y",
-    "mediumTime": "h:mm:ss a",
-    "short": "yyyy-MM-dd h:mm a",
-    "shortDate": "yyyy-MM-dd",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "R",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "zu-za",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zu.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zu.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zu.js
deleted file mode 100644
index fcadc8f..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zu.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "Sonto",
-      "Msombuluko",
-      "Lwesibili",
-      "Lwesithathu",
-      "uLwesine",
-      "Lwesihlanu",
-      "Mgqibelo"
-    ],
-    "MONTH": [
-      "Januwari",
-      "Februwari",
-      "Mashi",
-      "Apreli",
-      "Meyi",
-      "Juni",
-      "Julayi",
-      "Agasti",
-      "Septhemba",
-      "Okthoba",
-      "Novemba",
-      "Disemba"
-    ],
-    "SHORTDAY": [
-      "Son",
-      "Mso",
-      "Bil",
-      "Tha",
-      "Sin",
-      "Hla",
-      "Mgq"
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Feb",
-      "Mas",
-      "Apr",
-      "Mey",
-      "Jun",
-      "Jul",
-      "Aga",
-      "Sep",
-      "Okt",
-      "Nov",
-      "Dis"
-    ],
-    "fullDate": "EEEE dd MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y h:mm:ss a",
-    "mediumDate": "d MMM y",
-    "mediumTime": "h:mm:ss a",
-    "short": "yyyy-MM-dd h:mm a",
-    "shortDate": "yyyy-MM-dd",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "R",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "zu",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/version.json
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/version.json b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/version.json
deleted file mode 100644
index 7589655..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/version.json
+++ /dev/null
@@ -1 +0,0 @@
-{"raw":"v1.2.19","major":1,"minor":2,"patch":19,"prerelease":[],"build":[],"version":"1.2.19","codeName":"precognitive-flashbacks","full":"1.2.19","cdn":{"raw":"v1.2.18","major":1,"minor":2,"patch":18,"prerelease":[],"build":[],"version":"1.2.18","isStable":true,"docsUrl":"http://code.angularjs.org/1.2.18/docs"}}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/version.txt
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/version.txt b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/version.txt
deleted file mode 100644
index f37ae4a..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/version.txt
+++ /dev/null
@@ -1 +0,0 @@
-1.2.19
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-loader-static-files/.bower.json
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-loader-static-files/.bower.json b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-loader-static-files/.bower.json
deleted file mode 100644
index 732d397..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-loader-static-files/.bower.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-  "name": "angular-translate-loader-static-files",
-  "version": "2.2.0",
-  "main": "./angular-translate-loader-static-files.js",
-  "dependencies": {
-    "angular-translate": "~2.2.0"
-  },
-  "homepage": "https://github.com/PascalPrecht/bower-angular-translate-loader-static-files",
-  "_release": "2.2.0",
-  "_resolution": {
-    "type": "version",
-    "tag": "2.2.0",
-    "commit": "6f0cbc619d478b371000aab3a0720bf93b556a63"
-  },
-  "_source": "git://github.com/PascalPrecht/bower-angular-translate-loader-static-files.git",
-  "_target": "~2.2.0",
-  "_originalSource": "angular-translate-loader-static-files",
-  "_direct": true
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-loader-static-files/README.md
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-loader-static-files/README.md b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-loader-static-files/README.md
deleted file mode 100644
index dcc821c..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-loader-static-files/README.md
+++ /dev/null
@@ -1,9 +0,0 @@
-# bower-angular-translate-loader-static-files
-
-angular-translate-loader-static-files bower package
-
-### Installation
-
-````
-$ bower install angular-translate-loader-static-files
-````

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-loader-static-files/angular-translate-loader-static-files.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-loader-static-files/angular-translate-loader-static-files.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-loader-static-files/angular-translate-loader-static-files.js
deleted file mode 100644
index 7878387..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-loader-static-files/angular-translate-loader-static-files.js
+++ /dev/null
@@ -1,31 +0,0 @@
-/*!
- * angular-translate - v2.2.0 - 2014-06-03
- * http://github.com/PascalPrecht/angular-translate
- * Copyright (c) 2014 ; Licensed MIT
- */
-angular.module('pascalprecht.translate').factory('$translateStaticFilesLoader', [
-  '$q',
-  '$http',
-  function ($q, $http) {
-    return function (options) {
-      if (!options || (!angular.isString(options.prefix) || !angular.isString(options.suffix))) {
-        throw new Error('Couldn\'t load static files, no prefix or suffix specified!');
-      }
-      var deferred = $q.defer();
-      $http({
-        url: [
-          options.prefix,
-          options.key,
-          options.suffix
-        ].join(''),
-        method: 'GET',
-        params: ''
-      }).success(function (data) {
-        deferred.resolve(data);
-      }).error(function (data) {
-        deferred.reject(options.key);
-      });
-      return deferred.promise;
-    };
-  }
-]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-loader-static-files/angular-translate-loader-static-files.min.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-loader-static-files/angular-translate-loader-static-files.min.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-loader-static-files/angular-translate-loader-static-files.min.js
deleted file mode 100644
index 476c7df..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-loader-static-files/angular-translate-loader-static-files.min.js
+++ /dev/null
@@ -1,6 +0,0 @@
-/*!
- * angular-translate - v2.2.0 - 2014-06-03
- * http://github.com/PascalPrecht/angular-translate
- * Copyright (c) 2014 ; Licensed MIT
- */
-angular.module("pascalprecht.translate").factory("$translateStaticFilesLoader",["$q","$http",function(a,b){return function(c){if(!c||!angular.isString(c.prefix)||!angular.isString(c.suffix))throw new Error("Couldn't load static files, no prefix or suffix specified!");var d=a.defer();return b({url:[c.prefix,c.key,c.suffix].join(""),method:"GET",params:""}).success(function(a){d.resolve(a)}).error(function(){d.reject(c.key)}),d.promise}}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-loader-static-files/bower.json
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-loader-static-files/bower.json b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-loader-static-files/bower.json
deleted file mode 100644
index 25c1368..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-loader-static-files/bower.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-  "name": "angular-translate-loader-static-files",
-  "version": "2.2.0",
-  "main": "./angular-translate-loader-static-files.js",
-  "dependencies": {
-    "angular-translate": "~2.2.0"
-  }
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-loader-url
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-loader-url b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-loader-url
deleted file mode 160000
index 9f880b3..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-loader-url
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 9f880b3a44574d313012f5891e6ce7f28b9824fa

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-storage-cookie/.bower.json
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-storage-cookie/.bower.json b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-storage-cookie/.bower.json
deleted file mode 100644
index 137f75c..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-storage-cookie/.bower.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-  "name": "angular-translate-storage-cookie",
-  "version": "2.2.0",
-  "main": "./angular-translate-storage-cookie.js",
-  "dependencies": {
-    "angular-translate": "~2.2.0"
-  },
-  "homepage": "https://github.com/PascalPrecht/bower-angular-translate-storage-cookie",
-  "_release": "2.2.0",
-  "_resolution": {
-    "type": "version",
-    "tag": "2.2.0",
-    "commit": "f3b6dfcc8882f2aa23f6e18daf19acafccfdcd6e"
-  },
-  "_source": "git://github.com/PascalPrecht/bower-angular-translate-storage-cookie.git",
-  "_target": "~2.2.0",
-  "_originalSource": "angular-translate-storage-cookie"
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-storage-cookie/README.md
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-storage-cookie/README.md b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-storage-cookie/README.md
deleted file mode 100644
index a2d5176..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-storage-cookie/README.md
+++ /dev/null
@@ -1,9 +0,0 @@
-# bower-angular-translate-storage-cookie
-
-angular-translate-cookie-storage bower package
-
-### Installation
-
-````
-$ bower install angular-translate-storage-cookie
-````

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-storage-cookie/angular-translate-storage-cookie.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-storage-cookie/angular-translate-storage-cookie.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-storage-cookie/angular-translate-storage-cookie.js
deleted file mode 100644
index 497c243..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-storage-cookie/angular-translate-storage-cookie.js
+++ /dev/null
@@ -1,19 +0,0 @@
-/*!
- * angular-translate - v2.2.0 - 2014-06-03
- * http://github.com/PascalPrecht/angular-translate
- * Copyright (c) 2014 ; Licensed MIT
- */
-angular.module('pascalprecht.translate').factory('$translateCookieStorage', [
-  '$cookieStore',
-  function ($cookieStore) {
-    var $translateCookieStorage = {
-        get: function (name) {
-          return $cookieStore.get(name);
-        },
-        set: function (name, value) {
-          $cookieStore.put(name, value);
-        }
-      };
-    return $translateCookieStorage;
-  }
-]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-storage-cookie/angular-translate-storage-cookie.min.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-storage-cookie/angular-translate-storage-cookie.min.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-storage-cookie/angular-translate-storage-cookie.min.js
deleted file mode 100644
index 12cd3b7..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-storage-cookie/angular-translate-storage-cookie.min.js
+++ /dev/null
@@ -1,6 +0,0 @@
-/*!
- * angular-translate - v2.2.0 - 2014-06-03
- * http://github.com/PascalPrecht/angular-translate
- * Copyright (c) 2014 ; Licensed MIT
- */
-angular.module("pascalprecht.translate").factory("$translateCookieStorage",["$cookieStore",function(a){var b={get:function(b){return a.get(b)},set:function(b,c){a.put(b,c)}};return b}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-storage-cookie/bower.json
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-storage-cookie/bower.json b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-storage-cookie/bower.json
deleted file mode 100644
index 1c75713..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-storage-cookie/bower.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-  "name": "angular-translate-storage-cookie",
-  "version": "2.2.0",
-  "main": "./angular-translate-storage-cookie.js",
-  "dependencies": {
-    "angular-translate": "~2.2.0"
-  }
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-storage-local/.bower.json
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-storage-local/.bower.json b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-storage-local/.bower.json
deleted file mode 100644
index b7daa7a..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-storage-local/.bower.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-  "name": "angular-translate-storage-local",
-  "version": "2.2.0",
-  "main": "./angular-translate-storage-local.js",
-  "dependencies": {
-    "angular-translate": "~2.2.0",
-    "angular-translate-storage-cookie": "~2.2.0"
-  },
-  "homepage": "https://github.com/PascalPrecht/bower-angular-translate-storage-local",
-  "_release": "2.2.0",
-  "_resolution": {
-    "type": "version",
-    "tag": "2.2.0",
-    "commit": "1b2fbfc31ce70e3e75e0037f759b60fd92b46bd8"
-  },
-  "_source": "git://github.com/PascalPrecht/bower-angular-translate-storage-local.git",
-  "_target": "~2.2.0",
-  "_originalSource": "angular-translate-storage-local",
-  "_direct": true
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-storage-local/README.md
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-storage-local/README.md b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-storage-local/README.md
deleted file mode 100644
index 56f3ec1..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-storage-local/README.md
+++ /dev/null
@@ -1,9 +0,0 @@
-# bower-angular-translate-storage-local
-
-angular-translate-cookie-local bower package
-
-### Installation
-
-````
-$ bower install angular-translate-storage-local
-````

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-storage-local/angular-translate-storage-local.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-storage-local/angular-translate-storage-local.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-storage-local/angular-translate-storage-local.js
deleted file mode 100644
index d6c7cf9..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-storage-local/angular-translate-storage-local.js
+++ /dev/null
@@ -1,38 +0,0 @@
-/*!
- * angular-translate - v2.2.0 - 2014-06-03
- * http://github.com/PascalPrecht/angular-translate
- * Copyright (c) 2014 ; Licensed MIT
- */
-angular.module('pascalprecht.translate').factory('$translateLocalStorage', [
-  '$window',
-  '$translateCookieStorage',
-  function ($window, $translateCookieStorage) {
-    var localStorageAdapter = function () {
-        var langKey;
-        return {
-          get: function (name) {
-            if (!langKey) {
-              langKey = $window.localStorage.getItem(name);
-            }
-            return langKey;
-          },
-          set: function (name, value) {
-            langKey = value;
-            $window.localStorage.setItem(name, value);
-          }
-        };
-      }();
-    var hasLocalStorageSupport = 'localStorage' in $window && $window.localStorage !== null;
-    if (hasLocalStorageSupport) {
-      var testKey = 'pascalprecht.translate.storageTest';
-      try {
-        $window.localStorage.setItem(testKey, 'foo');
-        $window.localStorage.removeItem(testKey);
-      } catch (e) {
-        hasLocalStorageSupport = false;
-      }
-    }
-    var $translateLocalStorage = hasLocalStorageSupport ? localStorageAdapter : $translateCookieStorage;
-    return $translateLocalStorage;
-  }
-]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-storage-local/angular-translate-storage-local.min.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-storage-local/angular-translate-storage-local.min.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-storage-local/angular-translate-storage-local.min.js
deleted file mode 100644
index 9571ce0..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-storage-local/angular-translate-storage-local.min.js
+++ /dev/null
@@ -1,6 +0,0 @@
-/*!
- * angular-translate - v2.2.0 - 2014-06-03
- * http://github.com/PascalPrecht/angular-translate
- * Copyright (c) 2014 ; Licensed MIT
- */
-angular.module("pascalprecht.translate").factory("$translateLocalStorage",["$window","$translateCookieStorage",function(a,b){var c=function(){var b;return{get:function(c){return b||(b=a.localStorage.getItem(c)),b},set:function(c,d){b=d,a.localStorage.setItem(c,d)}}}(),d="localStorage"in a&&null!==a.localStorage;if(d){var e="pascalprecht.translate.storageTest";try{a.localStorage.setItem(e,"foo"),a.localStorage.removeItem(e)}catch(f){d=!1}}var g=d?c:b;return g}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-storage-local/bower.json
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-storage-local/bower.json b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-storage-local/bower.json
deleted file mode 100644
index 3e89c60..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate-storage-local/bower.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-  "name": "angular-translate-storage-local",
-  "version": "2.2.0",
-  "main": "./angular-translate-storage-local.js",
-  "dependencies": {
-    "angular-translate": "~2.2.0",
-    "angular-translate-storage-cookie": "~2.2.0"
-  }
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate/.bower.json
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate/.bower.json b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate/.bower.json
deleted file mode 100644
index 16a3c0a..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate/.bower.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-  "name": "angular-translate",
-  "version": "2.2.0",
-  "main": "./angular-translate.js",
-  "homepage": "https://github.com/PascalPrecht/bower-angular-translate",
-  "_release": "2.2.0",
-  "_resolution": {
-    "type": "version",
-    "tag": "2.2.0",
-    "commit": "21e6f3f41d53a53b627f3947b8e17dfb2ba26a74"
-  },
-  "_source": "git://github.com/PascalPrecht/bower-angular-translate.git",
-  "_target": "~2.2.0",
-  "_originalSource": "angular-translate",
-  "_direct": true
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate/README.md
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate/README.md b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate/README.md
deleted file mode 100644
index 65dc3ae..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate/README.md
+++ /dev/null
@@ -1,9 +0,0 @@
-# bower-angular-translate
-
-angular-translate bower package
-
-### Installation
-
-````
-$ bower install angular-translate
-````


[42/71] [abbrv] brooklyn-ui git commit: js gui app wizard "preview" click shows editable yaml tab

Posted by he...@apache.org.
js gui app wizard "preview" click shows editable yaml tab

with yaml contents not json. removes the old preview step.
also a few other tidies in the app wizard, around errors, step navigation, and method names.


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/commit/53e42a11
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/tree/53e42a11
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/diff/53e42a11

Branch: refs/heads/0.7.0-incubating
Commit: 53e42a113cd00b157e0527d5de760caf2f9f95f0
Parents: 8925128
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Sat Mar 28 21:15:06 2015 -0500
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Sat Mar 28 21:21:09 2015 -0500

----------------------------------------------------------------------
 .../assets/js/view/application-add-wizard.js    | 131 +++++++------------
 .../assets/tpl/app-add-wizard/create.html       |   3 -
 .../assets/tpl/app-add-wizard/preview.html      |  37 ------
 3 files changed, 48 insertions(+), 123 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/53e42a11/usage/jsgui/src/main/webapp/assets/js/view/application-add-wizard.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/js/view/application-add-wizard.js b/usage/jsgui/src/main/webapp/assets/js/view/application-add-wizard.js
index 8a999d2..17c0f22 100644
--- a/usage/jsgui/src/main/webapp/assets/js/view/application-add-wizard.js
+++ b/usage/jsgui/src/main/webapp/assets/js/view/application-add-wizard.js
@@ -32,13 +32,12 @@ define([
     "text!tpl/app-add-wizard/deploy.html",
     "text!tpl/app-add-wizard/deploy-location-row.html",
     "text!tpl/app-add-wizard/deploy-location-option.html",
-    "text!tpl/app-add-wizard/preview.html",
     "bootstrap"
     
 ], function (_, $, Backbone, Util, JsYaml, Entity, Application, Location,
              ModalHtml, CreateHtml, CreateStepTemplateEntryHtml, CreateEntityEntryHtml,
              RequiredConfigEntryHtml, EditConfigEntryHtml, DeployHtml,
-             DeployLocationRowHtml, DeployLocationOptionHtml, PreviewHtml
+             DeployLocationRowHtml, DeployLocationOptionHtml
 ) {
 
     /** Special ID to indicate that no locations will be provided when starting the server. */
@@ -53,31 +52,38 @@ define([
         obj.attr("disabled", !isEnabled)
     }
     
-    function specToCAMP(spec) {
+    /** converts old-style spec with "entities" to camp-style spec with services */
+    function oldSpecToCamp(spec) {
         var services;
         if (spec.type) {
-            services = [entityToCAMP(spec)];
+            services = [entityToCamp({type: spec.type, config: spec.config})];
         } else if (spec.entities) {
             services = [];
             var entities = spec.entities;
             for (var i = 0; i < entities.length; i++) {
-                services.push(entityToCAMP(entities[i]));
+                services.push(entityToCamp(entities[i]));
             }
         }
-        return {
-            name: spec.name,
-            locations: spec.locations,
-            services: services
-        };
+        var result = {};
+        if (spec.name) result.name = spec.name;
+        if (spec.locations) {
+          if (spec.locations.length>1)
+            result.locations = spec.locations;
+          else
+            result.location = spec.locations[0];
+        }
+        if (services) result.services = services;
+        // NB: currently nothing else is supported in this spec
+        return result;
     }
-
-    function entityToCAMP(entity) {
-        return {
-            name: entity.name,
-            type: entity.type,
-            "brooklyn.config": entity.config
-        };
+    function entityToCamp(entity) {
+        var result = {};
+        if (entity.name && (!options || !options.exclude_name)) result.name = entity.name;
+        if (entity.type) result.type = entity.type;
+        if (entity.config && _.size(entity.config)) result["brooklyn.config"] = entity.config;
+        return result;
     }
+    
     var ModalWizard = Backbone.View.extend({
         tagName:'div',
         className:'modal hide fade',
@@ -102,16 +108,12 @@ define([
                               view:new ModalWizard.StepCreate({ model:this.model, wizard: this })
                           },
                           {
+                              // TODO rather than make this another step -- since we now on preview revert to the yaml tab
+                              // this should probably be shown in the catalog tab, replacing the other contents.
                               step_id:'name-and-locations',
                               title:'<%= appName %>',
                               instructions:'Specify the locations to deploy to and any additional configuration',
                               view:new ModalWizard.StepDeploy({ model:this.model })
-                          },
-                          {
-                              step_id:'preview',
-                              title:'<%= appName %>',
-                              instructions:'Confirm the code which will be sent to the server, optionally tweaking it or saving it for future reference',
-                              view:new ModalWizard.StepPreview({ model:this.model })
                           }
                           ]
         },
@@ -127,7 +129,7 @@ define([
             return this
         },
 
-        renderCurrentStep:function () {
+        renderCurrentStep:function (callback) {
             var name = this.model.name || "";
             this.title = this.$("h3#step_title")
             this.instructions = this.$("p#step_instructions")
@@ -141,6 +143,7 @@ define([
             this.currentView.render()
             this.currentView.updateForState()
             this.$(".modal-body").replaceWith(this.currentView.el)
+            if (callback) callback(this.currentView);
 
             this.updateButtonVisibility();
         },
@@ -200,7 +203,7 @@ define([
             } else {
                 // Drop any "None" locations.
                 this.model.spec.pruneLocations();
-                yaml = JSON.stringify(specToCAMP(this.model.spec.toJSON()));
+                yaml = JsYaml.safeDump(oldSpecToCamp(this.model.spec.toJSON()));
             }
 
             $.ajax({
@@ -244,11 +247,11 @@ define([
         },
 
         prevStep:function () {
-            this.currentStep -= 1
-            this.renderCurrentStep()
+            this.currentStep -= 1;
+            this.renderCurrentStep();
         },
         nextStep:function () {
-            if (this.currentStep < 2) {
+            if (this.currentStep == 0) {
                 if (this.currentView.validate()) {
                     var yaml = (this.currentView && this.currentView.selectedTemplate && this.currentView.selectedTemplate.yaml);
                     if (yaml) {
@@ -262,22 +265,31 @@ define([
                     if (yaml) {
                         // it's a yaml catalog template which includes a location, show the yaml tab
            	            $("ul#app-add-wizard-create-tab").find("a[href='#yamlTab']").tab('show');
-                        $("#yaml_code").focus()
+                        $("#yaml_code").focus();
                     } else {
                         // it's a java catalog template or yaml template without a location, go to wizard
-                        this.currentStep += 1
-                        this.renderCurrentStep()
+                        this.currentStep += 1;
+                        this.renderCurrentStep();
                     }
                 } else {
                     // the call to validate will have done the showFailure
                 }
             } else {
-                this.finishStep()
+                throw "Unexpected step: "+this.currentStep;
             }
         },
         previewStep:function () {
-            // slight cheat, but good enough for now
-            this.nextStep()
+            if (this.currentView.validate()) {
+                this.currentStep = 0;
+                var that = this;
+                this.renderCurrentStep(function callback(view) {
+                    $("textarea#yaml_code").val(JsYaml.safeDump(oldSpecToCamp(that.model.spec.toJSON())));
+                    $("ul#app-add-wizard-create-tab").find("a[href='#yamlTab']").tab('show');
+                    $("#yaml_code").focus();
+                });
+            } else {
+                // call to validate should showFailure
+            }
         },
         finishStep:function () {
             if (this.currentView.validate()) {
@@ -562,7 +574,7 @@ define([
                 // TODO - other tabs not implemented yet 
                 // do nothing, show error return false below
             }
-            this.$('div.app-add-wizard-create-info-message').slideDown(250).delay(10000).slideUp(500)
+            this.showFailure("Invalid application type/spec");
             return false
         },
 
@@ -759,53 +771,6 @@ define([
             this.$('div.error-message').slideDown(250).delay(10000).slideUp(500);
         }
     })
-
-    ModalWizard.StepPreview = Backbone.View.extend({
-        className:'modal-body',
-        initialize:function () {
-            this.$el.html(_.template(PreviewHtml))
-            this.model.spec.on("change", this.render, this)
-        },
-        beforeClose:function () {
-            this.model.spec.off("change", this.render)
-        },
-        updateForState: function () {
-            if (!this.model.spec.get("entities") || this.model.spec.get("entities").length==0) {
-                delete this.model.spec.attributes["entities"]
-            }
-            if (!this.model.spec.get("name"))
-                delete this.model.spec.attributes["name"]
-            if (!this.model.spec.get("config") || _.keys(this.model.spec.get("config")).length==0) {
-                delete this.model.spec.attributes["config"]
-            }
-            this.$('#app-summary').val(Util.toTextAreaString(specToCAMP(this.model.spec.toJSON())))
-        },
-        render:function () {
-            this.delegateEvents()
-            return this
-        },
-        validate:function () {
-            // need locations, and type or entities
-            if ((this.model.spec.get("locations").length > 0) && 
-                (this.model.spec.get("type")!=null || 
-                    this.model.spec.getEntities().length > 0)) {
-                return true
-            }
-            
-            if (this.model.spec.get("locations").length <= 0) {
-                this.showFailure("A location is required");
-                return false;
-            }
-
-            this.showFailure();
-            return false
-        },
-        showFailure: function(text) {
-            if (!text) text = "Failure performing the specified action";
-            this.$('div.error-message .error-message-text').html(_.escape(text))
-            this.$('div.error-message').slideDown(250).delay(10000).slideUp(500)
-        }
-    })
-
+    
     return ModalWizard
 })

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/53e42a11/usage/jsgui/src/main/webapp/assets/tpl/app-add-wizard/create.html
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/tpl/app-add-wizard/create.html b/usage/jsgui/src/main/webapp/assets/tpl/app-add-wizard/create.html
index 673aca6..5ec0150 100644
--- a/usage/jsgui/src/main/webapp/assets/tpl/app-add-wizard/create.html
+++ b/usage/jsgui/src/main/webapp/assets/tpl/app-add-wizard/create.html
@@ -18,9 +18,6 @@ specific language governing permissions and limitations
 under the License.
 -->
 
-<div class="app-add-wizard-create-info-message label-message hide">
-    <div class="label-important">ERROR</div>  Invalid application type/spec
-</div>
 <div class="info-message label-message hide">
 	<!-- default content, should not be used -->
     Failure performing specified action

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/53e42a11/usage/jsgui/src/main/webapp/assets/tpl/app-add-wizard/preview.html
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/tpl/app-add-wizard/preview.html b/usage/jsgui/src/main/webapp/assets/tpl/app-add-wizard/preview.html
deleted file mode 100644
index e09faba..0000000
--- a/usage/jsgui/src/main/webapp/assets/tpl/app-add-wizard/preview.html
+++ /dev/null
@@ -1,37 +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.
--->
-
-<!-- New application wizard step 3: summary and submit the app -->
-<div class="preview">
-    <div>
-        <h3>Application Preview</h3>
-        <textarea id="app-summary" readonly="readonly" rows="16"
-            style="width: 100%;"></textarea>
-    </div>
-    <dl class="dl-horizontal"></dl>
-    <div class="info-message hide label-message">
-        <span class="label-important">ERROR</span> Invalid spec or server
-        failure
-    </div>
-    <div class="error-message label-message hide">
-        <div class="label-important">ERROR</div>  <span class="error-message-text">Failure performing specified action</span>
-    </div>
-
-</div>
\ No newline at end of file


[20/71] [abbrv] brooklyn-ui git commit: Move mobile app to sandbox

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-touch.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-touch.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-touch.js
deleted file mode 100644
index b4f036f..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-touch.js
+++ /dev/null
@@ -1,584 +0,0 @@
-/**
- * @license AngularJS v1.2.19
- * (c) 2010-2014 Google, Inc. http://angularjs.org
- * License: MIT
- */
-(function(window, angular, undefined) {'use strict';
-
-/**
- * @ngdoc module
- * @name ngTouch
- * @description
- *
- * # ngTouch
- *
- * The `ngTouch` module provides touch events and other helpers for touch-enabled devices.
- * The implementation is based on jQuery Mobile touch event handling
- * ([jquerymobile.com](http://jquerymobile.com/)).
- *
- *
- * See {@link ngTouch.$swipe `$swipe`} for usage.
- *
- * <div doc-module-components="ngTouch"></div>
- *
- */
-
-// define ngTouch module
-/* global -ngTouch */
-var ngTouch = angular.module('ngTouch', []);
-
-/* global ngTouch: false */
-
-    /**
-     * @ngdoc service
-     * @name $swipe
-     *
-     * @description
-     * The `$swipe` service is a service that abstracts the messier details of hold-and-drag swipe
-     * behavior, to make implementing swipe-related directives more convenient.
-     *
-     * Requires the {@link ngTouch `ngTouch`} module to be installed.
-     *
-     * `$swipe` is used by the `ngSwipeLeft` and `ngSwipeRight` directives in `ngTouch`, and by
-     * `ngCarousel` in a separate component.
-     *
-     * # Usage
-     * The `$swipe` service is an object with a single method: `bind`. `bind` takes an element
-     * which is to be watched for swipes, and an object with four handler functions. See the
-     * documentation for `bind` below.
-     */
-
-ngTouch.factory('$swipe', [function() {
-  // The total distance in any direction before we make the call on swipe vs. scroll.
-  var MOVE_BUFFER_RADIUS = 10;
-
-  function getCoordinates(event) {
-    var touches = event.touches && event.touches.length ? event.touches : [event];
-    var e = (event.changedTouches && event.changedTouches[0]) ||
-        (event.originalEvent && event.originalEvent.changedTouches &&
-            event.originalEvent.changedTouches[0]) ||
-        touches[0].originalEvent || touches[0];
-
-    return {
-      x: e.clientX,
-      y: e.clientY
-    };
-  }
-
-  return {
-    /**
-     * @ngdoc method
-     * @name $swipe#bind
-     *
-     * @description
-     * The main method of `$swipe`. It takes an element to be watched for swipe motions, and an
-     * object containing event handlers.
-     *
-     * The four events are `start`, `move`, `end`, and `cancel`. `start`, `move`, and `end`
-     * receive as a parameter a coordinates object of the form `{ x: 150, y: 310 }`.
-     *
-     * `start` is called on either `mousedown` or `touchstart`. After this event, `$swipe` is
-     * watching for `touchmove` or `mousemove` events. These events are ignored until the total
-     * distance moved in either dimension exceeds a small threshold.
-     *
-     * Once this threshold is exceeded, either the horizontal or vertical delta is greater.
-     * - If the horizontal distance is greater, this is a swipe and `move` and `end` events follow.
-     * - If the vertical distance is greater, this is a scroll, and we let the browser take over.
-     *   A `cancel` event is sent.
-     *
-     * `move` is called on `mousemove` and `touchmove` after the above logic has determined that
-     * a swipe is in progress.
-     *
-     * `end` is called when a swipe is successfully completed with a `touchend` or `mouseup`.
-     *
-     * `cancel` is called either on a `touchcancel` from the browser, or when we begin scrolling
-     * as described above.
-     *
-     */
-    bind: function(element, eventHandlers) {
-      // Absolute total movement, used to control swipe vs. scroll.
-      var totalX, totalY;
-      // Coordinates of the start position.
-      var startCoords;
-      // Last event's position.
-      var lastPos;
-      // Whether a swipe is active.
-      var active = false;
-
-      element.on('touchstart mousedown', function(event) {
-        startCoords = getCoordinates(event);
-        active = true;
-        totalX = 0;
-        totalY = 0;
-        lastPos = startCoords;
-        eventHandlers['start'] && eventHandlers['start'](startCoords, event);
-      });
-
-      element.on('touchcancel', function(event) {
-        active = false;
-        eventHandlers['cancel'] && eventHandlers['cancel'](event);
-      });
-
-      element.on('touchmove mousemove', function(event) {
-        if (!active) return;
-
-        // Android will send a touchcancel if it thinks we're starting to scroll.
-        // So when the total distance (+ or - or both) exceeds 10px in either direction,
-        // we either:
-        // - On totalX > totalY, we send preventDefault() and treat this as a swipe.
-        // - On totalY > totalX, we let the browser handle it as a scroll.
-
-        if (!startCoords) return;
-        var coords = getCoordinates(event);
-
-        totalX += Math.abs(coords.x - lastPos.x);
-        totalY += Math.abs(coords.y - lastPos.y);
-
-        lastPos = coords;
-
-        if (totalX < MOVE_BUFFER_RADIUS && totalY < MOVE_BUFFER_RADIUS) {
-          return;
-        }
-
-        // One of totalX or totalY has exceeded the buffer, so decide on swipe vs. scroll.
-        if (totalY > totalX) {
-          // Allow native scrolling to take over.
-          active = false;
-          eventHandlers['cancel'] && eventHandlers['cancel'](event);
-          return;
-        } else {
-          // Prevent the browser from scrolling.
-          event.preventDefault();
-          eventHandlers['move'] && eventHandlers['move'](coords, event);
-        }
-      });
-
-      element.on('touchend mouseup', function(event) {
-        if (!active) return;
-        active = false;
-        eventHandlers['end'] && eventHandlers['end'](getCoordinates(event), event);
-      });
-    }
-  };
-}]);
-
-/* global ngTouch: false */
-
-/**
- * @ngdoc directive
- * @name ngClick
- *
- * @description
- * A more powerful replacement for the default ngClick designed to be used on touchscreen
- * devices. Most mobile browsers wait about 300ms after a tap-and-release before sending
- * the click event. This version handles them immediately, and then prevents the
- * following click event from propagating.
- *
- * Requires the {@link ngTouch `ngTouch`} module to be installed.
- *
- * This directive can fall back to using an ordinary click event, and so works on desktop
- * browsers as well as mobile.
- *
- * This directive also sets the CSS class `ng-click-active` while the element is being held
- * down (by a mouse click or touch) so you can restyle the depressed element if you wish.
- *
- * @element ANY
- * @param {expression} ngClick {@link guide/expression Expression} to evaluate
- * upon tap. (Event object is available as `$event`)
- *
- * @example
-    <example module="ngClickExample" deps="angular-touch.js">
-      <file name="index.html">
-        <button ng-click="count = count + 1" ng-init="count=0">
-          Increment
-        </button>
-        count: {{ count }}
-      </file>
-      <file name="script.js">
-        angular.module('ngClickExample', ['ngTouch']);
-      </file>
-    </example>
- */
-
-ngTouch.config(['$provide', function($provide) {
-  $provide.decorator('ngClickDirective', ['$delegate', function($delegate) {
-    // drop the default ngClick directive
-    $delegate.shift();
-    return $delegate;
-  }]);
-}]);
-
-ngTouch.directive('ngClick', ['$parse', '$timeout', '$rootElement',
-    function($parse, $timeout, $rootElement) {
-  var TAP_DURATION = 750; // Shorter than 750ms is a tap, longer is a taphold or drag.
-  var MOVE_TOLERANCE = 12; // 12px seems to work in most mobile browsers.
-  var PREVENT_DURATION = 2500; // 2.5 seconds maximum from preventGhostClick call to click
-  var CLICKBUSTER_THRESHOLD = 25; // 25 pixels in any dimension is the limit for busting clicks.
-
-  var ACTIVE_CLASS_NAME = 'ng-click-active';
-  var lastPreventedTime;
-  var touchCoordinates;
-  var lastLabelClickCoordinates;
-
-
-  // TAP EVENTS AND GHOST CLICKS
-  //
-  // Why tap events?
-  // Mobile browsers detect a tap, then wait a moment (usually ~300ms) to see if you're
-  // double-tapping, and then fire a click event.
-  //
-  // This delay sucks and makes mobile apps feel unresponsive.
-  // So we detect touchstart, touchmove, touchcancel and touchend ourselves and determine when
-  // the user has tapped on something.
-  //
-  // What happens when the browser then generates a click event?
-  // The browser, of course, also detects the tap and fires a click after a delay. This results in
-  // tapping/clicking twice. We do "clickbusting" to prevent it.
-  //
-  // How does it work?
-  // We attach global touchstart and click handlers, that run during the capture (early) phase.
-  // So the sequence for a tap is:
-  // - global touchstart: Sets an "allowable region" at the point touched.
-  // - element's touchstart: Starts a touch
-  // (- touchmove or touchcancel ends the touch, no click follows)
-  // - element's touchend: Determines if the tap is valid (didn't move too far away, didn't hold
-  //   too long) and fires the user's tap handler. The touchend also calls preventGhostClick().
-  // - preventGhostClick() removes the allowable region the global touchstart created.
-  // - The browser generates a click event.
-  // - The global click handler catches the click, and checks whether it was in an allowable region.
-  //     - If preventGhostClick was called, the region will have been removed, the click is busted.
-  //     - If the region is still there, the click proceeds normally. Therefore clicks on links and
-  //       other elements without ngTap on them work normally.
-  //
-  // This is an ugly, terrible hack!
-  // Yeah, tell me about it. The alternatives are using the slow click events, or making our users
-  // deal with the ghost clicks, so I consider this the least of evils. Fortunately Angular
-  // encapsulates this ugly logic away from the user.
-  //
-  // Why not just put click handlers on the element?
-  // We do that too, just to be sure. If the tap event caused the DOM to change,
-  // it is possible another element is now in that position. To take account for these possibly
-  // distinct elements, the handlers are global and care only about coordinates.
-
-  // Checks if the coordinates are close enough to be within the region.
-  function hit(x1, y1, x2, y2) {
-    return Math.abs(x1 - x2) < CLICKBUSTER_THRESHOLD && Math.abs(y1 - y2) < CLICKBUSTER_THRESHOLD;
-  }
-
-  // Checks a list of allowable regions against a click location.
-  // Returns true if the click should be allowed.
-  // Splices out the allowable region from the list after it has been used.
-  function checkAllowableRegions(touchCoordinates, x, y) {
-    for (var i = 0; i < touchCoordinates.length; i += 2) {
-      if (hit(touchCoordinates[i], touchCoordinates[i+1], x, y)) {
-        touchCoordinates.splice(i, i + 2);
-        return true; // allowable region
-      }
-    }
-    return false; // No allowable region; bust it.
-  }
-
-  // Global click handler that prevents the click if it's in a bustable zone and preventGhostClick
-  // was called recently.
-  function onClick(event) {
-    if (Date.now() - lastPreventedTime > PREVENT_DURATION) {
-      return; // Too old.
-    }
-
-    var touches = event.touches && event.touches.length ? event.touches : [event];
-    var x = touches[0].clientX;
-    var y = touches[0].clientY;
-    // Work around desktop Webkit quirk where clicking a label will fire two clicks (on the label
-    // and on the input element). Depending on the exact browser, this second click we don't want
-    // to bust has either (0,0), negative coordinates, or coordinates equal to triggering label
-    // click event
-    if (x < 1 && y < 1) {
-      return; // offscreen
-    }
-    if (lastLabelClickCoordinates &&
-        lastLabelClickCoordinates[0] === x && lastLabelClickCoordinates[1] === y) {
-      return; // input click triggered by label click
-    }
-    // reset label click coordinates on first subsequent click
-    if (lastLabelClickCoordinates) {
-      lastLabelClickCoordinates = null;
-    }
-    // remember label click coordinates to prevent click busting of trigger click event on input
-    if (event.target.tagName.toLowerCase() === 'label') {
-      lastLabelClickCoordinates = [x, y];
-    }
-
-    // Look for an allowable region containing this click.
-    // If we find one, that means it was created by touchstart and not removed by
-    // preventGhostClick, so we don't bust it.
-    if (checkAllowableRegions(touchCoordinates, x, y)) {
-      return;
-    }
-
-    // If we didn't find an allowable region, bust the click.
-    event.stopPropagation();
-    event.preventDefault();
-
-    // Blur focused form elements
-    event.target && event.target.blur();
-  }
-
-
-  // Global touchstart handler that creates an allowable region for a click event.
-  // This allowable region can be removed by preventGhostClick if we want to bust it.
-  function onTouchStart(event) {
-    var touches = event.touches && event.touches.length ? event.touches : [event];
-    var x = touches[0].clientX;
-    var y = touches[0].clientY;
-    touchCoordinates.push(x, y);
-
-    $timeout(function() {
-      // Remove the allowable region.
-      for (var i = 0; i < touchCoordinates.length; i += 2) {
-        if (touchCoordinates[i] == x && touchCoordinates[i+1] == y) {
-          touchCoordinates.splice(i, i + 2);
-          return;
-        }
-      }
-    }, PREVENT_DURATION, false);
-  }
-
-  // On the first call, attaches some event handlers. Then whenever it gets called, it creates a
-  // zone around the touchstart where clicks will get busted.
-  function preventGhostClick(x, y) {
-    if (!touchCoordinates) {
-      $rootElement[0].addEventListener('click', onClick, true);
-      $rootElement[0].addEventListener('touchstart', onTouchStart, true);
-      touchCoordinates = [];
-    }
-
-    lastPreventedTime = Date.now();
-
-    checkAllowableRegions(touchCoordinates, x, y);
-  }
-
-  // Actual linking function.
-  return function(scope, element, attr) {
-    var clickHandler = $parse(attr.ngClick),
-        tapping = false,
-        tapElement,  // Used to blur the element after a tap.
-        startTime,   // Used to check if the tap was held too long.
-        touchStartX,
-        touchStartY;
-
-    function resetState() {
-      tapping = false;
-      element.removeClass(ACTIVE_CLASS_NAME);
-    }
-
-    element.on('touchstart', function(event) {
-      tapping = true;
-      tapElement = event.target ? event.target : event.srcElement; // IE uses srcElement.
-      // Hack for Safari, which can target text nodes instead of containers.
-      if(tapElement.nodeType == 3) {
-        tapElement = tapElement.parentNode;
-      }
-
-      element.addClass(ACTIVE_CLASS_NAME);
-
-      startTime = Date.now();
-
-      var touches = event.touches && event.touches.length ? event.touches : [event];
-      var e = touches[0].originalEvent || touches[0];
-      touchStartX = e.clientX;
-      touchStartY = e.clientY;
-    });
-
-    element.on('touchmove', function(event) {
-      resetState();
-    });
-
-    element.on('touchcancel', function(event) {
-      resetState();
-    });
-
-    element.on('touchend', function(event) {
-      var diff = Date.now() - startTime;
-
-      var touches = (event.changedTouches && event.changedTouches.length) ? event.changedTouches :
-          ((event.touches && event.touches.length) ? event.touches : [event]);
-      var e = touches[0].originalEvent || touches[0];
-      var x = e.clientX;
-      var y = e.clientY;
-      var dist = Math.sqrt( Math.pow(x - touchStartX, 2) + Math.pow(y - touchStartY, 2) );
-
-      if (tapping && diff < TAP_DURATION && dist < MOVE_TOLERANCE) {
-        // Call preventGhostClick so the clickbuster will catch the corresponding click.
-        preventGhostClick(x, y);
-
-        // Blur the focused element (the button, probably) before firing the callback.
-        // This doesn't work perfectly on Android Chrome, but seems to work elsewhere.
-        // I couldn't get anything to work reliably on Android Chrome.
-        if (tapElement) {
-          tapElement.blur();
-        }
-
-        if (!angular.isDefined(attr.disabled) || attr.disabled === false) {
-          element.triggerHandler('click', [event]);
-        }
-      }
-
-      resetState();
-    });
-
-    // Hack for iOS Safari's benefit. It goes searching for onclick handlers and is liable to click
-    // something else nearby.
-    element.onclick = function(event) { };
-
-    // Actual click handler.
-    // There are three different kinds of clicks, only two of which reach this point.
-    // - On desktop browsers without touch events, their clicks will always come here.
-    // - On mobile browsers, the simulated "fast" click will call this.
-    // - But the browser's follow-up slow click will be "busted" before it reaches this handler.
-    // Therefore it's safe to use this directive on both mobile and desktop.
-    element.on('click', function(event, touchend) {
-      scope.$apply(function() {
-        clickHandler(scope, {$event: (touchend || event)});
-      });
-    });
-
-    element.on('mousedown', function(event) {
-      element.addClass(ACTIVE_CLASS_NAME);
-    });
-
-    element.on('mousemove mouseup', function(event) {
-      element.removeClass(ACTIVE_CLASS_NAME);
-    });
-
-  };
-}]);
-
-/* global ngTouch: false */
-
-/**
- * @ngdoc directive
- * @name ngSwipeLeft
- *
- * @description
- * Specify custom behavior when an element is swiped to the left on a touchscreen device.
- * A leftward swipe is a quick, right-to-left slide of the finger.
- * Though ngSwipeLeft is designed for touch-based devices, it will work with a mouse click and drag
- * too.
- *
- * Requires the {@link ngTouch `ngTouch`} module to be installed.
- *
- * @element ANY
- * @param {expression} ngSwipeLeft {@link guide/expression Expression} to evaluate
- * upon left swipe. (Event object is available as `$event`)
- *
- * @example
-    <example module="ngSwipeLeftExample" deps="angular-touch.js">
-      <file name="index.html">
-        <div ng-show="!showActions" ng-swipe-left="showActions = true">
-          Some list content, like an email in the inbox
-        </div>
-        <div ng-show="showActions" ng-swipe-right="showActions = false">
-          <button ng-click="reply()">Reply</button>
-          <button ng-click="delete()">Delete</button>
-        </div>
-      </file>
-      <file name="script.js">
-        angular.module('ngSwipeLeftExample', ['ngTouch']);
-      </file>
-    </example>
- */
-
-/**
- * @ngdoc directive
- * @name ngSwipeRight
- *
- * @description
- * Specify custom behavior when an element is swiped to the right on a touchscreen device.
- * A rightward swipe is a quick, left-to-right slide of the finger.
- * Though ngSwipeRight is designed for touch-based devices, it will work with a mouse click and drag
- * too.
- *
- * Requires the {@link ngTouch `ngTouch`} module to be installed.
- *
- * @element ANY
- * @param {expression} ngSwipeRight {@link guide/expression Expression} to evaluate
- * upon right swipe. (Event object is available as `$event`)
- *
- * @example
-    <example module="ngSwipeRightExample" deps="angular-touch.js">
-      <file name="index.html">
-        <div ng-show="!showActions" ng-swipe-left="showActions = true">
-          Some list content, like an email in the inbox
-        </div>
-        <div ng-show="showActions" ng-swipe-right="showActions = false">
-          <button ng-click="reply()">Reply</button>
-          <button ng-click="delete()">Delete</button>
-        </div>
-      </file>
-      <file name="script.js">
-        angular.module('ngSwipeRightExample', ['ngTouch']);
-      </file>
-    </example>
- */
-
-function makeSwipeDirective(directiveName, direction, eventName) {
-  ngTouch.directive(directiveName, ['$parse', '$swipe', function($parse, $swipe) {
-    // The maximum vertical delta for a swipe should be less than 75px.
-    var MAX_VERTICAL_DISTANCE = 75;
-    // Vertical distance should not be more than a fraction of the horizontal distance.
-    var MAX_VERTICAL_RATIO = 0.3;
-    // At least a 30px lateral motion is necessary for a swipe.
-    var MIN_HORIZONTAL_DISTANCE = 30;
-
-    return function(scope, element, attr) {
-      var swipeHandler = $parse(attr[directiveName]);
-
-      var startCoords, valid;
-
-      function validSwipe(coords) {
-        // Check that it's within the coordinates.
-        // Absolute vertical distance must be within tolerances.
-        // Horizontal distance, we take the current X - the starting X.
-        // This is negative for leftward swipes and positive for rightward swipes.
-        // After multiplying by the direction (-1 for left, +1 for right), legal swipes
-        // (ie. same direction as the directive wants) will have a positive delta and
-        // illegal ones a negative delta.
-        // Therefore this delta must be positive, and larger than the minimum.
-        if (!startCoords) return false;
-        var deltaY = Math.abs(coords.y - startCoords.y);
-        var deltaX = (coords.x - startCoords.x) * direction;
-        return valid && // Short circuit for already-invalidated swipes.
-            deltaY < MAX_VERTICAL_DISTANCE &&
-            deltaX > 0 &&
-            deltaX > MIN_HORIZONTAL_DISTANCE &&
-            deltaY / deltaX < MAX_VERTICAL_RATIO;
-      }
-
-      $swipe.bind(element, {
-        'start': function(coords, event) {
-          startCoords = coords;
-          valid = true;
-        },
-        'cancel': function(event) {
-          valid = false;
-        },
-        'end': function(coords, event) {
-          if (validSwipe(coords)) {
-            scope.$apply(function() {
-              element.triggerHandler(eventName);
-              swipeHandler(scope, {$event: event});
-            });
-          }
-        }
-      });
-    };
-  }]);
-}
-
-// Left is negative X-coordinate, right is positive.
-makeSwipeDirective('ngSwipeLeft', -1, 'swipeleft');
-makeSwipeDirective('ngSwipeRight', 1, 'swiperight');
-
-
-
-})(window, window.angular);

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-touch.min.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-touch.min.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-touch.min.js
deleted file mode 100644
index 27791fd..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-touch.min.js
+++ /dev/null
@@ -1,13 +0,0 @@
-/*
- AngularJS v1.2.19
- (c) 2010-2014 Google, Inc. http://angularjs.org
- License: MIT
-*/
-(function(y,w,z){'use strict';function u(f,a,c){r.directive(f,["$parse","$swipe",function(m,p){var q=75,g=0.3,e=30;return function(h,n,l){function k(d){if(!b)return!1;var s=Math.abs(d.y-b.y);d=(d.x-b.x)*a;return v&&s<q&&0<d&&d>e&&s/d<g}var s=m(l[f]),b,v;p.bind(n,{start:function(d,s){b=d;v=!0},cancel:function(b){v=!1},end:function(b,a){k(b)&&h.$apply(function(){n.triggerHandler(c);s(h,{$event:a})})}})}}])}var r=w.module("ngTouch",[]);r.factory("$swipe",[function(){function f(a){var c=a.touches&&a.touches.length?
-a.touches:[a];a=a.changedTouches&&a.changedTouches[0]||a.originalEvent&&a.originalEvent.changedTouches&&a.originalEvent.changedTouches[0]||c[0].originalEvent||c[0];return{x:a.clientX,y:a.clientY}}return{bind:function(a,c){var m,p,q,g,e=!1;a.on("touchstart mousedown",function(a){q=f(a);e=!0;p=m=0;g=q;c.start&&c.start(q,a)});a.on("touchcancel",function(a){e=!1;c.cancel&&c.cancel(a)});a.on("touchmove mousemove",function(a){if(e&&q){var n=f(a);m+=Math.abs(n.x-g.x);p+=Math.abs(n.y-g.y);g=n;10>m&&10>p||
-(p>m?(e=!1,c.cancel&&c.cancel(a)):(a.preventDefault(),c.move&&c.move(n,a)))}});a.on("touchend mouseup",function(a){e&&(e=!1,c.end&&c.end(f(a),a))})}}}]);r.config(["$provide",function(f){f.decorator("ngClickDirective",["$delegate",function(a){a.shift();return a}])}]);r.directive("ngClick",["$parse","$timeout","$rootElement",function(f,a,c){function m(a,b,c){for(var d=0;d<a.length;d+=2)if(Math.abs(a[d]-b)<e&&Math.abs(a[d+1]-c)<e)return a.splice(d,d+2),!0;return!1}function p(a){if(!(Date.now()-n>g)){var b=
-a.touches&&a.touches.length?a.touches:[a],c=b[0].clientX,b=b[0].clientY;1>c&&1>b||k&&k[0]===c&&k[1]===b||(k&&(k=null),"label"===a.target.tagName.toLowerCase()&&(k=[c,b]),m(l,c,b)||(a.stopPropagation(),a.preventDefault(),a.target&&a.target.blur()))}}function q(c){c=c.touches&&c.touches.length?c.touches:[c];var b=c[0].clientX,e=c[0].clientY;l.push(b,e);a(function(){for(var a=0;a<l.length;a+=2)if(l[a]==b&&l[a+1]==e){l.splice(a,a+2);break}},g,!1)}var g=2500,e=25,h="ng-click-active",n,l,k;return function(a,
-b,e){function d(){k=!1;b.removeClass(h)}var g=f(e.ngClick),k=!1,t,r,u,x;b.on("touchstart",function(a){k=!0;t=a.target?a.target:a.srcElement;3==t.nodeType&&(t=t.parentNode);b.addClass(h);r=Date.now();a=a.touches&&a.touches.length?a.touches:[a];a=a[0].originalEvent||a[0];u=a.clientX;x=a.clientY});b.on("touchmove",function(a){d()});b.on("touchcancel",function(a){d()});b.on("touchend",function(a){var g=Date.now()-r,f=a.changedTouches&&a.changedTouches.length?a.changedTouches:a.touches&&a.touches.length?
-a.touches:[a],h=f[0].originalEvent||f[0],f=h.clientX,h=h.clientY,s=Math.sqrt(Math.pow(f-u,2)+Math.pow(h-x,2));k&&(750>g&&12>s)&&(l||(c[0].addEventListener("click",p,!0),c[0].addEventListener("touchstart",q,!0),l=[]),n=Date.now(),m(l,f,h),t&&t.blur(),w.isDefined(e.disabled)&&!1!==e.disabled||b.triggerHandler("click",[a]));d()});b.onclick=function(a){};b.on("click",function(b,c){a.$apply(function(){g(a,{$event:c||b})})});b.on("mousedown",function(a){b.addClass(h)});b.on("mousemove mouseup",function(a){b.removeClass(h)})}}]);
-u("ngSwipeLeft",-1,"swipeleft");u("ngSwipeRight",1,"swiperight")})(window,window.angular);
-//# sourceMappingURL=angular-touch.min.js.map

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-touch.min.js.map
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-touch.min.js.map b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-touch.min.js.map
deleted file mode 100644
index e26dfa8..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-touch.min.js.map
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-"version":3,
-"file":"angular-touch.min.js",
-"lineCount":12,
-"mappings":"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",
-"sources":["angular-touch.js"],
-"names":["window","angular","undefined","makeSwipeDirective","directiveName","direction","eventName","ngTouch","directive","$parse","$swipe","MAX_VERTICAL_DISTANCE","MAX_VERTICAL_RATIO","MIN_HORIZONTAL_DISTANCE","scope","element","attr","validSwipe","coords","startCoords","deltaY","Math","abs","y","deltaX","x","valid","swipeHandler","bind","start","event","cancel","end","$apply","triggerHandler","module","factory","getCoordinates","touches","length","e","changedTouches","originalEvent","clientX","clientY","eventHandlers","totalX","totalY","lastPos","active","on","MOVE_BUFFER_RADIUS","preventDefault","config","$provide","decorator","$delegate","shift","$timeout","$rootElement","checkAllowableRegions","touchCoordinates","i","x1","CLICKBUSTER_THRESHOLD","y1","splice","onClick","Date","now","lastPreventedTime","PREVENT_DURATION","lastLabelClickCoordinates","target","tagName","toLowerCase","stopPropagation","blur","onTouchStart","push","ACTIVE_CLASS_NAME","resetState","tapping","removeCl
 ass","clickHandler","ngClick","tapElement","startTime","touchStartX","touchStartY","srcElement","nodeType","parentNode","addClass","diff","dist","sqrt","pow","TAP_DURATION","MOVE_TOLERANCE","addEventListener","isDefined","disabled","onclick","element.onclick","touchend"]
-}


[53/71] [abbrv] brooklyn-ui git commit: entity spec looked up from catalog

Posted by he...@apache.org.
entity spec looked up from catalog

refactors Brooklyn{AssemblyTemplateInstantiator,ComponentTemplateResolver} so that resolution is shared between the two.  this could be cleaned up further.
also applies some better debug/logging and html/underscore-template escaping.


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/commit/98884338
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/tree/98884338
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/diff/98884338

Branch: refs/heads/0.7.0-incubating
Commit: 98884338c8d6e3de409148c7b7b668083bba4db7
Parents: 7eff206
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Tue Apr 21 09:56:40 2015 +0100
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Tue Apr 21 21:11:34 2015 +0100

----------------------------------------------------------------------
 .../tpl/app-add-wizard/create-step-template-entry.html       | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/98884338/usage/jsgui/src/main/webapp/assets/tpl/app-add-wizard/create-step-template-entry.html
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/tpl/app-add-wizard/create-step-template-entry.html b/usage/jsgui/src/main/webapp/assets/tpl/app-add-wizard/create-step-template-entry.html
index d70fd9b..b72bb10 100644
--- a/usage/jsgui/src/main/webapp/assets/tpl/app-add-wizard/create-step-template-entry.html
+++ b/usage/jsgui/src/main/webapp/assets/tpl/app-add-wizard/create-step-template-entry.html
@@ -18,16 +18,16 @@ specific language governing permissions and limitations
 under the License.
 -->
 
-<div class="template-lozenge frame" id="<%= id %>" data-name="<%= name %>" data-yaml="<%= planYaml %>">
+<div class="template-lozenge frame" id="<%- id %>" data-name="<%- name %>" data-yaml="<%- planYaml %>">
     <% if (iconUrl) { %>
     <div class="icon">
-        <img src="<%= iconUrl %>" alt="(icon)" />
+        <img src="<%- iconUrl %>" alt="(icon)" />
     </div>
     <% } %>
     <div class="blurb">
-        <div class="title"><%= name %></div>
+        <div class="title"><%- name %></div>
         <div class="description">
-            <%= description ? description : "" %>
+            <%- description ? description : "" %>
         </div>
     </div>
 </div>


[08/71] [abbrv] brooklyn-ui git commit: Move mobile app to sandbox

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-cyrl-me.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-cyrl-me.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-cyrl-me.js
deleted file mode 100644
index bf5d9e0..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-cyrl-me.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u043f\u0440\u0435 \u043f\u043e\u0434\u043d\u0435",
-      "\u043f\u043e\u043f\u043e\u0434\u043d\u0435"
-    ],
-    "DAY": [
-      "\u043d\u0435\u0434\u0435\u0459\u0430",
-      "\u043f\u043e\u043d\u0435\u0434\u0435\u0459\u0430\u043a",
-      "\u0443\u0442\u043e\u0440\u0430\u043a",
-      "\u0441\u0440\u0435\u0434\u0430",
-      "\u0447\u0435\u0442\u0432\u0440\u0442\u0430\u043a",
-      "\u043f\u0435\u0442\u0430\u043a",
-      "\u0441\u0443\u0431\u043e\u0442\u0430"
-    ],
-    "MONTH": [
-      "\u0458\u0430\u043d\u0443\u0430\u0440",
-      "\u0444\u0435\u0431\u0440\u0443\u0430\u0440",
-      "\u043c\u0430\u0440\u0442",
-      "\u0430\u043f\u0440\u0438\u043b",
-      "\u043c\u0430\u0458",
-      "\u0458\u0443\u043d",
-      "\u0458\u0443\u043b",
-      "\u0430\u0432\u0433\u0443\u0441\u0442",
-      "\u0441\u0435\u043f\u0442\u0435\u043c\u0431\u0430\u0440",
-      "\u043e\u043a\u0442\u043e\u0431\u0430\u0440",
-      "\u043d\u043e\u0432\u0435\u043c\u0431\u0430\u0440",
-      "\u0434\u0435\u0446\u0435\u043c\u0431\u0430\u0440"
-    ],
-    "SHORTDAY": [
-      "\u043d\u0435\u0434",
-      "\u043f\u043e\u043d",
-      "\u0443\u0442\u043e",
-      "\u0441\u0440\u0435",
-      "\u0447\u0435\u0442",
-      "\u043f\u0435\u0442",
-      "\u0441\u0443\u0431"
-    ],
-    "SHORTMONTH": [
-      "\u0458\u0430\u043d",
-      "\u0444\u0435\u0431",
-      "\u043c\u0430\u0440",
-      "\u0430\u043f\u0440",
-      "\u043c\u0430\u0458",
-      "\u0458\u0443\u043d",
-      "\u0458\u0443\u043b",
-      "\u0430\u0432\u0433",
-      "\u0441\u0435\u043f",
-      "\u043e\u043a\u0442",
-      "\u043d\u043e\u0432",
-      "\u0434\u0435\u0446"
-    ],
-    "fullDate": "EEEE, dd. MMMM y.",
-    "longDate": "dd. MMMM y.",
-    "medium": "dd.MM.y. HH.mm.ss",
-    "mediumDate": "dd.MM.y.",
-    "mediumTime": "HH.mm.ss",
-    "short": "d.M.yy. HH.mm",
-    "shortDate": "d.M.yy.",
-    "shortTime": "HH.mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "din",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "sr-cyrl-me",
-  "pluralCat": function (n) {  if (n % 10 == 1 && n % 100 != 11) {   return PLURAL_CATEGORY.ONE;  }  if (n == (n | 0) && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) {   return PLURAL_CATEGORY.FEW;  }  if (n % 10 == 0 || n == (n | 0) && n % 10 >= 5 && n % 10 <= 9 || n == (n | 0) && n % 100 >= 11 && n % 100 <= 14) {   return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-cyrl-rs.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-cyrl-rs.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-cyrl-rs.js
deleted file mode 100644
index d6b68dd..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-cyrl-rs.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u043f\u0440\u0435 \u043f\u043e\u0434\u043d\u0435",
-      "\u043f\u043e\u043f\u043e\u0434\u043d\u0435"
-    ],
-    "DAY": [
-      "\u043d\u0435\u0434\u0435\u0459\u0430",
-      "\u043f\u043e\u043d\u0435\u0434\u0435\u0459\u0430\u043a",
-      "\u0443\u0442\u043e\u0440\u0430\u043a",
-      "\u0441\u0440\u0435\u0434\u0430",
-      "\u0447\u0435\u0442\u0432\u0440\u0442\u0430\u043a",
-      "\u043f\u0435\u0442\u0430\u043a",
-      "\u0441\u0443\u0431\u043e\u0442\u0430"
-    ],
-    "MONTH": [
-      "\u0458\u0430\u043d\u0443\u0430\u0440",
-      "\u0444\u0435\u0431\u0440\u0443\u0430\u0440",
-      "\u043c\u0430\u0440\u0442",
-      "\u0430\u043f\u0440\u0438\u043b",
-      "\u043c\u0430\u0458",
-      "\u0458\u0443\u043d",
-      "\u0458\u0443\u043b",
-      "\u0430\u0432\u0433\u0443\u0441\u0442",
-      "\u0441\u0435\u043f\u0442\u0435\u043c\u0431\u0430\u0440",
-      "\u043e\u043a\u0442\u043e\u0431\u0430\u0440",
-      "\u043d\u043e\u0432\u0435\u043c\u0431\u0430\u0440",
-      "\u0434\u0435\u0446\u0435\u043c\u0431\u0430\u0440"
-    ],
-    "SHORTDAY": [
-      "\u043d\u0435\u0434",
-      "\u043f\u043e\u043d",
-      "\u0443\u0442\u043e",
-      "\u0441\u0440\u0435",
-      "\u0447\u0435\u0442",
-      "\u043f\u0435\u0442",
-      "\u0441\u0443\u0431"
-    ],
-    "SHORTMONTH": [
-      "\u0458\u0430\u043d",
-      "\u0444\u0435\u0431",
-      "\u043c\u0430\u0440",
-      "\u0430\u043f\u0440",
-      "\u043c\u0430\u0458",
-      "\u0458\u0443\u043d",
-      "\u0458\u0443\u043b",
-      "\u0430\u0432\u0433",
-      "\u0441\u0435\u043f",
-      "\u043e\u043a\u0442",
-      "\u043d\u043e\u0432",
-      "\u0434\u0435\u0446"
-    ],
-    "fullDate": "EEEE, dd. MMMM y.",
-    "longDate": "dd. MMMM y.",
-    "medium": "dd.MM.y. HH.mm.ss",
-    "mediumDate": "dd.MM.y.",
-    "mediumTime": "HH.mm.ss",
-    "short": "d.M.yy. HH.mm",
-    "shortDate": "d.M.yy.",
-    "shortTime": "HH.mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "din",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "sr-cyrl-rs",
-  "pluralCat": function (n) {  if (n % 10 == 1 && n % 100 != 11) {   return PLURAL_CATEGORY.ONE;  }  if (n == (n | 0) && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) {   return PLURAL_CATEGORY.FEW;  }  if (n % 10 == 0 || n == (n | 0) && n % 10 >= 5 && n % 10 <= 9 || n == (n | 0) && n % 100 >= 11 && n % 100 <= 14) {   return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-cyrl.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-cyrl.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-cyrl.js
deleted file mode 100644
index df0cd58..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-cyrl.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u043f\u0440\u0435 \u043f\u043e\u0434\u043d\u0435",
-      "\u043f\u043e\u043f\u043e\u0434\u043d\u0435"
-    ],
-    "DAY": [
-      "\u043d\u0435\u0434\u0435\u0459\u0430",
-      "\u043f\u043e\u043d\u0435\u0434\u0435\u0459\u0430\u043a",
-      "\u0443\u0442\u043e\u0440\u0430\u043a",
-      "\u0441\u0440\u0435\u0434\u0430",
-      "\u0447\u0435\u0442\u0432\u0440\u0442\u0430\u043a",
-      "\u043f\u0435\u0442\u0430\u043a",
-      "\u0441\u0443\u0431\u043e\u0442\u0430"
-    ],
-    "MONTH": [
-      "\u0458\u0430\u043d\u0443\u0430\u0440",
-      "\u0444\u0435\u0431\u0440\u0443\u0430\u0440",
-      "\u043c\u0430\u0440\u0442",
-      "\u0430\u043f\u0440\u0438\u043b",
-      "\u043c\u0430\u0458",
-      "\u0458\u0443\u043d",
-      "\u0458\u0443\u043b",
-      "\u0430\u0432\u0433\u0443\u0441\u0442",
-      "\u0441\u0435\u043f\u0442\u0435\u043c\u0431\u0430\u0440",
-      "\u043e\u043a\u0442\u043e\u0431\u0430\u0440",
-      "\u043d\u043e\u0432\u0435\u043c\u0431\u0430\u0440",
-      "\u0434\u0435\u0446\u0435\u043c\u0431\u0430\u0440"
-    ],
-    "SHORTDAY": [
-      "\u043d\u0435\u0434",
-      "\u043f\u043e\u043d",
-      "\u0443\u0442\u043e",
-      "\u0441\u0440\u0435",
-      "\u0447\u0435\u0442",
-      "\u043f\u0435\u0442",
-      "\u0441\u0443\u0431"
-    ],
-    "SHORTMONTH": [
-      "\u0458\u0430\u043d",
-      "\u0444\u0435\u0431",
-      "\u043c\u0430\u0440",
-      "\u0430\u043f\u0440",
-      "\u043c\u0430\u0458",
-      "\u0458\u0443\u043d",
-      "\u0458\u0443\u043b",
-      "\u0430\u0432\u0433",
-      "\u0441\u0435\u043f",
-      "\u043e\u043a\u0442",
-      "\u043d\u043e\u0432",
-      "\u0434\u0435\u0446"
-    ],
-    "fullDate": "EEEE, dd. MMMM y.",
-    "longDate": "dd. MMMM y.",
-    "medium": "dd.MM.y. HH.mm.ss",
-    "mediumDate": "dd.MM.y.",
-    "mediumTime": "HH.mm.ss",
-    "short": "d.M.yy. HH.mm",
-    "shortDate": "d.M.yy.",
-    "shortTime": "HH.mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "din",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "sr-cyrl",
-  "pluralCat": function (n) {  if (n % 10 == 1 && n % 100 != 11) {   return PLURAL_CATEGORY.ONE;  }  if (n == (n | 0) && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) {   return PLURAL_CATEGORY.FEW;  }  if (n % 10 == 0 || n == (n | 0) && n % 10 >= 5 && n % 10 <= 9 || n == (n | 0) && n % 100 >= 11 && n % 100 <= 14) {   return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-latn-ba.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-latn-ba.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-latn-ba.js
deleted file mode 100644
index dae6550..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-latn-ba.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "pre podne",
-      "popodne"
-    ],
-    "DAY": [
-      "nedelja",
-      "ponedeljak",
-      "utorak",
-      "sreda",
-      "\u010detvrtak",
-      "petak",
-      "subota"
-    ],
-    "MONTH": [
-      "januar",
-      "februar",
-      "mart",
-      "april",
-      "maj",
-      "jun",
-      "jul",
-      "avgust",
-      "septembar",
-      "oktobar",
-      "novembar",
-      "decembar"
-    ],
-    "SHORTDAY": [
-      "ned",
-      "pon",
-      "uto",
-      "sre",
-      "\u010det",
-      "pet",
-      "sub"
-    ],
-    "SHORTMONTH": [
-      "jan",
-      "feb",
-      "mar",
-      "apr",
-      "maj",
-      "jun",
-      "jul",
-      "avg",
-      "sep",
-      "okt",
-      "nov",
-      "dec"
-    ],
-    "fullDate": "EEEE, dd. MMMM y.",
-    "longDate": "dd. MMMM y.",
-    "medium": "dd.MM.y. HH.mm.ss",
-    "mediumDate": "dd.MM.y.",
-    "mediumTime": "HH.mm.ss",
-    "short": "d.M.yy. HH.mm",
-    "shortDate": "d.M.yy.",
-    "shortTime": "HH.mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "din",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "sr-latn-ba",
-  "pluralCat": function (n) {  if (n % 10 == 1 && n % 100 != 11) {   return PLURAL_CATEGORY.ONE;  }  if (n == (n | 0) && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) {   return PLURAL_CATEGORY.FEW;  }  if (n % 10 == 0 || n == (n | 0) && n % 10 >= 5 && n % 10 <= 9 || n == (n | 0) && n % 100 >= 11 && n % 100 <= 14) {   return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-latn-me.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-latn-me.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-latn-me.js
deleted file mode 100644
index fad8340..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-latn-me.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "pre podne",
-      "popodne"
-    ],
-    "DAY": [
-      "nedelja",
-      "ponedeljak",
-      "utorak",
-      "sreda",
-      "\u010detvrtak",
-      "petak",
-      "subota"
-    ],
-    "MONTH": [
-      "januar",
-      "februar",
-      "mart",
-      "april",
-      "maj",
-      "jun",
-      "jul",
-      "avgust",
-      "septembar",
-      "oktobar",
-      "novembar",
-      "decembar"
-    ],
-    "SHORTDAY": [
-      "ned",
-      "pon",
-      "uto",
-      "sre",
-      "\u010det",
-      "pet",
-      "sub"
-    ],
-    "SHORTMONTH": [
-      "jan",
-      "feb",
-      "mar",
-      "apr",
-      "maj",
-      "jun",
-      "jul",
-      "avg",
-      "sep",
-      "okt",
-      "nov",
-      "dec"
-    ],
-    "fullDate": "EEEE, dd. MMMM y.",
-    "longDate": "d.MM.yyyy.",
-    "medium": "dd.MM.y. HH.mm.ss",
-    "mediumDate": "dd.MM.y.",
-    "mediumTime": "HH.mm.ss",
-    "short": "d.M.yy. HH.mm",
-    "shortDate": "d.M.yy.",
-    "shortTime": "HH.mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "din",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "sr-latn-me",
-  "pluralCat": function (n) {  if (n % 10 == 1 && n % 100 != 11) {   return PLURAL_CATEGORY.ONE;  }  if (n == (n | 0) && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) {   return PLURAL_CATEGORY.FEW;  }  if (n % 10 == 0 || n == (n | 0) && n % 10 >= 5 && n % 10 <= 9 || n == (n | 0) && n % 100 >= 11 && n % 100 <= 14) {   return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-latn-rs.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-latn-rs.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-latn-rs.js
deleted file mode 100644
index 30743fd..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-latn-rs.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "pre podne",
-      "popodne"
-    ],
-    "DAY": [
-      "nedelja",
-      "ponedeljak",
-      "utorak",
-      "sreda",
-      "\u010detvrtak",
-      "petak",
-      "subota"
-    ],
-    "MONTH": [
-      "januar",
-      "februar",
-      "mart",
-      "april",
-      "maj",
-      "jun",
-      "jul",
-      "avgust",
-      "septembar",
-      "oktobar",
-      "novembar",
-      "decembar"
-    ],
-    "SHORTDAY": [
-      "ned",
-      "pon",
-      "uto",
-      "sre",
-      "\u010det",
-      "pet",
-      "sub"
-    ],
-    "SHORTMONTH": [
-      "jan",
-      "feb",
-      "mar",
-      "apr",
-      "maj",
-      "jun",
-      "jul",
-      "avg",
-      "sep",
-      "okt",
-      "nov",
-      "dec"
-    ],
-    "fullDate": "EEEE, dd. MMMM y.",
-    "longDate": "dd. MMMM y.",
-    "medium": "dd.MM.y. HH.mm.ss",
-    "mediumDate": "dd.MM.y.",
-    "mediumTime": "HH.mm.ss",
-    "short": "d.M.yy. HH.mm",
-    "shortDate": "d.M.yy.",
-    "shortTime": "HH.mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "din",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "sr-latn-rs",
-  "pluralCat": function (n) {  if (n % 10 == 1 && n % 100 != 11) {   return PLURAL_CATEGORY.ONE;  }  if (n == (n | 0) && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) {   return PLURAL_CATEGORY.FEW;  }  if (n % 10 == 0 || n == (n | 0) && n % 10 >= 5 && n % 10 <= 9 || n == (n | 0) && n % 100 >= 11 && n % 100 <= 14) {   return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-latn.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-latn.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-latn.js
deleted file mode 100644
index c2cf55a..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-latn.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "pre podne",
-      "popodne"
-    ],
-    "DAY": [
-      "nedelja",
-      "ponedeljak",
-      "utorak",
-      "sreda",
-      "\u010detvrtak",
-      "petak",
-      "subota"
-    ],
-    "MONTH": [
-      "januar",
-      "februar",
-      "mart",
-      "april",
-      "maj",
-      "jun",
-      "jul",
-      "avgust",
-      "septembar",
-      "oktobar",
-      "novembar",
-      "decembar"
-    ],
-    "SHORTDAY": [
-      "ned",
-      "pon",
-      "uto",
-      "sre",
-      "\u010det",
-      "pet",
-      "sub"
-    ],
-    "SHORTMONTH": [
-      "jan",
-      "feb",
-      "mar",
-      "apr",
-      "maj",
-      "jun",
-      "jul",
-      "avg",
-      "sep",
-      "okt",
-      "nov",
-      "dec"
-    ],
-    "fullDate": "EEEE, dd. MMMM y.",
-    "longDate": "dd. MMMM y.",
-    "medium": "dd.MM.y. HH.mm.ss",
-    "mediumDate": "dd.MM.y.",
-    "mediumTime": "HH.mm.ss",
-    "short": "d.M.yy. HH.mm",
-    "shortDate": "d.M.yy.",
-    "shortTime": "HH.mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "din",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "sr-latn",
-  "pluralCat": function (n) {  if (n % 10 == 1 && n % 100 != 11) {   return PLURAL_CATEGORY.ONE;  }  if (n == (n | 0) && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) {   return PLURAL_CATEGORY.FEW;  }  if (n % 10 == 0 || n == (n | 0) && n % 10 >= 5 && n % 10 <= 9 || n == (n | 0) && n % 100 >= 11 && n % 100 <= 14) {   return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr.js
deleted file mode 100644
index 795e9ff..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u043f\u0440\u0435 \u043f\u043e\u0434\u043d\u0435",
-      "\u043f\u043e\u043f\u043e\u0434\u043d\u0435"
-    ],
-    "DAY": [
-      "\u043d\u0435\u0434\u0435\u0459\u0430",
-      "\u043f\u043e\u043d\u0435\u0434\u0435\u0459\u0430\u043a",
-      "\u0443\u0442\u043e\u0440\u0430\u043a",
-      "\u0441\u0440\u0435\u0434\u0430",
-      "\u0447\u0435\u0442\u0432\u0440\u0442\u0430\u043a",
-      "\u043f\u0435\u0442\u0430\u043a",
-      "\u0441\u0443\u0431\u043e\u0442\u0430"
-    ],
-    "MONTH": [
-      "\u0458\u0430\u043d\u0443\u0430\u0440",
-      "\u0444\u0435\u0431\u0440\u0443\u0430\u0440",
-      "\u043c\u0430\u0440\u0442",
-      "\u0430\u043f\u0440\u0438\u043b",
-      "\u043c\u0430\u0458",
-      "\u0458\u0443\u043d",
-      "\u0458\u0443\u043b",
-      "\u0430\u0432\u0433\u0443\u0441\u0442",
-      "\u0441\u0435\u043f\u0442\u0435\u043c\u0431\u0430\u0440",
-      "\u043e\u043a\u0442\u043e\u0431\u0430\u0440",
-      "\u043d\u043e\u0432\u0435\u043c\u0431\u0430\u0440",
-      "\u0434\u0435\u0446\u0435\u043c\u0431\u0430\u0440"
-    ],
-    "SHORTDAY": [
-      "\u043d\u0435\u0434",
-      "\u043f\u043e\u043d",
-      "\u0443\u0442\u043e",
-      "\u0441\u0440\u0435",
-      "\u0447\u0435\u0442",
-      "\u043f\u0435\u0442",
-      "\u0441\u0443\u0431"
-    ],
-    "SHORTMONTH": [
-      "\u0458\u0430\u043d",
-      "\u0444\u0435\u0431",
-      "\u043c\u0430\u0440",
-      "\u0430\u043f\u0440",
-      "\u043c\u0430\u0458",
-      "\u0458\u0443\u043d",
-      "\u0458\u0443\u043b",
-      "\u0430\u0432\u0433",
-      "\u0441\u0435\u043f",
-      "\u043e\u043a\u0442",
-      "\u043d\u043e\u0432",
-      "\u0434\u0435\u0446"
-    ],
-    "fullDate": "EEEE, dd. MMMM y.",
-    "longDate": "dd. MMMM y.",
-    "medium": "dd.MM.y. HH.mm.ss",
-    "mediumDate": "dd.MM.y.",
-    "mediumTime": "HH.mm.ss",
-    "short": "d.M.yy. HH.mm",
-    "shortDate": "d.M.yy.",
-    "shortTime": "HH.mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "din",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "sr",
-  "pluralCat": function (n) {  if (n % 10 == 1 && n % 100 != 11) {   return PLURAL_CATEGORY.ONE;  }  if (n == (n | 0) && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) {   return PLURAL_CATEGORY.FEW;  }  if (n % 10 == 0 || n == (n | 0) && n % 10 >= 5 && n % 10 <= 9 || n == (n | 0) && n % 100 >= 11 && n % 100 <= 14) {   return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sv-fi.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sv-fi.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sv-fi.js
deleted file mode 100644
index cbf7195..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sv-fi.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "fm",
-      "em"
-    ],
-    "DAY": [
-      "s\u00f6ndag",
-      "m\u00e5ndag",
-      "tisdag",
-      "onsdag",
-      "torsdag",
-      "fredag",
-      "l\u00f6rdag"
-    ],
-    "MONTH": [
-      "januari",
-      "februari",
-      "mars",
-      "april",
-      "maj",
-      "juni",
-      "juli",
-      "augusti",
-      "september",
-      "oktober",
-      "november",
-      "december"
-    ],
-    "SHORTDAY": [
-      "s\u00f6n",
-      "m\u00e5n",
-      "tis",
-      "ons",
-      "tors",
-      "fre",
-      "l\u00f6r"
-    ],
-    "SHORTMONTH": [
-      "jan",
-      "feb",
-      "mar",
-      "apr",
-      "maj",
-      "jun",
-      "jul",
-      "aug",
-      "sep",
-      "okt",
-      "nov",
-      "dec"
-    ],
-    "fullDate": "EEEE'en' 'den' d:'e' MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y HH:mm:ss",
-    "mediumDate": "d MMM y",
-    "mediumTime": "HH:mm:ss",
-    "short": "yyyy-MM-dd HH:mm",
-    "shortDate": "yyyy-MM-dd",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "kr",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "sv-fi",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sv-se.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sv-se.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sv-se.js
deleted file mode 100644
index 4590ed9..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sv-se.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "fm",
-      "em"
-    ],
-    "DAY": [
-      "s\u00f6ndag",
-      "m\u00e5ndag",
-      "tisdag",
-      "onsdag",
-      "torsdag",
-      "fredag",
-      "l\u00f6rdag"
-    ],
-    "MONTH": [
-      "januari",
-      "februari",
-      "mars",
-      "april",
-      "maj",
-      "juni",
-      "juli",
-      "augusti",
-      "september",
-      "oktober",
-      "november",
-      "december"
-    ],
-    "SHORTDAY": [
-      "s\u00f6n",
-      "m\u00e5n",
-      "tis",
-      "ons",
-      "tors",
-      "fre",
-      "l\u00f6r"
-    ],
-    "SHORTMONTH": [
-      "jan",
-      "feb",
-      "mar",
-      "apr",
-      "maj",
-      "jun",
-      "jul",
-      "aug",
-      "sep",
-      "okt",
-      "nov",
-      "dec"
-    ],
-    "fullDate": "EEEE'en' 'den' d:'e' MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y HH:mm:ss",
-    "mediumDate": "d MMM y",
-    "mediumTime": "HH:mm:ss",
-    "short": "yyyy-MM-dd HH:mm",
-    "shortDate": "yyyy-MM-dd",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "kr",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "sv-se",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sv.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sv.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sv.js
deleted file mode 100644
index b49b764..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sv.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "fm",
-      "em"
-    ],
-    "DAY": [
-      "s\u00f6ndag",
-      "m\u00e5ndag",
-      "tisdag",
-      "onsdag",
-      "torsdag",
-      "fredag",
-      "l\u00f6rdag"
-    ],
-    "MONTH": [
-      "januari",
-      "februari",
-      "mars",
-      "april",
-      "maj",
-      "juni",
-      "juli",
-      "augusti",
-      "september",
-      "oktober",
-      "november",
-      "december"
-    ],
-    "SHORTDAY": [
-      "s\u00f6n",
-      "m\u00e5n",
-      "tis",
-      "ons",
-      "tors",
-      "fre",
-      "l\u00f6r"
-    ],
-    "SHORTMONTH": [
-      "jan",
-      "feb",
-      "mar",
-      "apr",
-      "maj",
-      "jun",
-      "jul",
-      "aug",
-      "sep",
-      "okt",
-      "nov",
-      "dec"
-    ],
-    "fullDate": "EEEE'en' 'den' d:'e' MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y HH:mm:ss",
-    "mediumDate": "d MMM y",
-    "mediumTime": "HH:mm:ss",
-    "short": "yyyy-MM-dd HH:mm",
-    "shortDate": "yyyy-MM-dd",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "kr",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "sv",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sw-ke.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sw-ke.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sw-ke.js
deleted file mode 100644
index 0d4ad4d..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sw-ke.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "asubuhi",
-      "alasiri"
-    ],
-    "DAY": [
-      "Jumapili",
-      "Jumatatu",
-      "Jumanne",
-      "Jumatano",
-      "Alhamisi",
-      "Ijumaa",
-      "Jumamosi"
-    ],
-    "MONTH": [
-      "Januari",
-      "Februari",
-      "Machi",
-      "Aprili",
-      "Mei",
-      "Juni",
-      "Julai",
-      "Agosti",
-      "Septemba",
-      "Oktoba",
-      "Novemba",
-      "Desemba"
-    ],
-    "SHORTDAY": [
-      "J2",
-      "J3",
-      "J4",
-      "J5",
-      "Alh",
-      "Ij",
-      "J1"
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Feb",
-      "Mac",
-      "Apr",
-      "Mei",
-      "Jun",
-      "Jul",
-      "Ago",
-      "Sep",
-      "Okt",
-      "Nov",
-      "Des"
-    ],
-    "fullDate": "EEEE, d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y h:mm:ss a",
-    "mediumDate": "d MMM y",
-    "mediumTime": "h:mm:ss a",
-    "short": "dd/MM/yyyy h:mm a",
-    "shortDate": "dd/MM/yyyy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "TSh",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "sw-ke",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sw-tz.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sw-tz.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sw-tz.js
deleted file mode 100644
index 2bea9c6..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sw-tz.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "asubuhi",
-      "alasiri"
-    ],
-    "DAY": [
-      "Jumapili",
-      "Jumatatu",
-      "Jumanne",
-      "Jumatano",
-      "Alhamisi",
-      "Ijumaa",
-      "Jumamosi"
-    ],
-    "MONTH": [
-      "Januari",
-      "Februari",
-      "Machi",
-      "Aprili",
-      "Mei",
-      "Juni",
-      "Julai",
-      "Agosti",
-      "Septemba",
-      "Oktoba",
-      "Novemba",
-      "Desemba"
-    ],
-    "SHORTDAY": [
-      "J2",
-      "J3",
-      "J4",
-      "J5",
-      "Alh",
-      "Ij",
-      "J1"
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Feb",
-      "Mac",
-      "Apr",
-      "Mei",
-      "Jun",
-      "Jul",
-      "Ago",
-      "Sep",
-      "Okt",
-      "Nov",
-      "Des"
-    ],
-    "fullDate": "EEEE, d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y h:mm:ss a",
-    "mediumDate": "d MMM y",
-    "mediumTime": "h:mm:ss a",
-    "short": "dd/MM/yyyy h:mm a",
-    "shortDate": "dd/MM/yyyy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "TSh",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "sw-tz",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sw.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sw.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sw.js
deleted file mode 100644
index 3892f2c..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sw.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "asubuhi",
-      "alasiri"
-    ],
-    "DAY": [
-      "Jumapili",
-      "Jumatatu",
-      "Jumanne",
-      "Jumatano",
-      "Alhamisi",
-      "Ijumaa",
-      "Jumamosi"
-    ],
-    "MONTH": [
-      "Januari",
-      "Februari",
-      "Machi",
-      "Aprili",
-      "Mei",
-      "Juni",
-      "Julai",
-      "Agosti",
-      "Septemba",
-      "Oktoba",
-      "Novemba",
-      "Desemba"
-    ],
-    "SHORTDAY": [
-      "J2",
-      "J3",
-      "J4",
-      "J5",
-      "Alh",
-      "Ij",
-      "J1"
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Feb",
-      "Mac",
-      "Apr",
-      "Mei",
-      "Jun",
-      "Jul",
-      "Ago",
-      "Sep",
-      "Okt",
-      "Nov",
-      "Des"
-    ],
-    "fullDate": "EEEE, d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y h:mm:ss a",
-    "mediumDate": "d MMM y",
-    "mediumTime": "h:mm:ss a",
-    "short": "dd/MM/yyyy h:mm a",
-    "shortDate": "dd/MM/yyyy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "TSh",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "sw",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ta-in.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ta-in.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ta-in.js
deleted file mode 100644
index b491909..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ta-in.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "am",
-      "pm"
-    ],
-    "DAY": [
-      "\u0b9e\u0bbe\u0baf\u0bbf\u0bb1\u0bc1",
-      "\u0ba4\u0bbf\u0b99\u0bcd\u0b95\u0bb3\u0bcd",
-      "\u0b9a\u0bc6\u0bb5\u0bcd\u0bb5\u0bbe\u0baf\u0bcd",
-      "\u0baa\u0bc1\u0ba4\u0ba9\u0bcd",
-      "\u0bb5\u0bbf\u0baf\u0bbe\u0bb4\u0ba9\u0bcd",
-      "\u0bb5\u0bc6\u0bb3\u0bcd\u0bb3\u0bbf",
-      "\u0b9a\u0ba9\u0bbf"
-    ],
-    "MONTH": [
-      "\u0b9c\u0ba9\u0bb5\u0bb0\u0bbf",
-      "\u0baa\u0bbf\u0baa\u0bcd\u0bb0\u0bb5\u0bb0\u0bbf",
-      "\u0bae\u0bbe\u0bb0\u0bcd\u0b9a\u0bcd",
-      "\u0b8f\u0baa\u0bcd\u0bb0\u0bb2\u0bcd",
-      "\u0bae\u0bc7",
-      "\u0b9c\u0bc2\u0ba9\u0bcd",
-      "\u0b9c\u0bc2\u0bb2\u0bc8",
-      "\u0b86\u0b95\u0bb8\u0bcd\u0b9f\u0bcd",
-      "\u0b9a\u0bc6\u0baa\u0bcd\u0b9f\u0bae\u0bcd\u0baa\u0bb0\u0bcd",
-      "\u0b85\u0b95\u0bcd\u0b9f\u0bcb\u0baa\u0bb0\u0bcd",
-      "\u0ba8\u0bb5\u0bae\u0bcd\u0baa\u0bb0\u0bcd",
-      "\u0b9f\u0bbf\u0b9a\u0bae\u0bcd\u0baa\u0bb0\u0bcd"
-    ],
-    "SHORTDAY": [
-      "\u0b9e\u0bbe",
-      "\u0ba4\u0bbf",
-      "\u0b9a\u0bc6",
-      "\u0baa\u0bc1",
-      "\u0bb5\u0bbf",
-      "\u0bb5\u0bc6",
-      "\u0b9a"
-    ],
-    "SHORTMONTH": [
-      "\u0b9c\u0ba9.",
-      "\u0baa\u0bbf\u0baa\u0bcd.",
-      "\u0bae\u0bbe\u0bb0\u0bcd.",
-      "\u0b8f\u0baa\u0bcd.",
-      "\u0bae\u0bc7",
-      "\u0b9c\u0bc2\u0ba9\u0bcd",
-      "\u0b9c\u0bc2\u0bb2\u0bc8",
-      "\u0b86\u0b95.",
-      "\u0b9a\u0bc6\u0baa\u0bcd.",
-      "\u0b85\u0b95\u0bcd.",
-      "\u0ba8\u0bb5.",
-      "\u0b9f\u0bbf\u0b9a."
-    ],
-    "fullDate": "EEEE, d MMMM, y",
-    "longDate": "d MMMM, y",
-    "medium": "d MMM, y h:mm:ss a",
-    "mediumDate": "d MMM, y",
-    "mediumTime": "h:mm:ss a",
-    "short": "d-M-yy h:mm a",
-    "shortDate": "d-M-yy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20b9",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 2,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 2,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "\u00a4\u00a0-",
-        "negSuf": "",
-        "posPre": "\u00a4\u00a0",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "ta-in",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ta-lk.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ta-lk.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ta-lk.js
deleted file mode 100644
index 2d661c8..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ta-lk.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "am",
-      "pm"
-    ],
-    "DAY": [
-      "\u0b9e\u0bbe\u0baf\u0bbf\u0bb1\u0bc1",
-      "\u0ba4\u0bbf\u0b99\u0bcd\u0b95\u0bb3\u0bcd",
-      "\u0b9a\u0bc6\u0bb5\u0bcd\u0bb5\u0bbe\u0baf\u0bcd",
-      "\u0baa\u0bc1\u0ba4\u0ba9\u0bcd",
-      "\u0bb5\u0bbf\u0baf\u0bbe\u0bb4\u0ba9\u0bcd",
-      "\u0bb5\u0bc6\u0bb3\u0bcd\u0bb3\u0bbf",
-      "\u0b9a\u0ba9\u0bbf"
-    ],
-    "MONTH": [
-      "\u0b9c\u0ba9\u0bb5\u0bb0\u0bbf",
-      "\u0baa\u0bbf\u0baa\u0bcd\u0bb0\u0bb5\u0bb0\u0bbf",
-      "\u0bae\u0bbe\u0bb0\u0bcd\u0b9a\u0bcd",
-      "\u0b8f\u0baa\u0bcd\u0bb0\u0bb2\u0bcd",
-      "\u0bae\u0bc7",
-      "\u0b9c\u0bc2\u0ba9\u0bcd",
-      "\u0b9c\u0bc2\u0bb2\u0bc8",
-      "\u0b86\u0b95\u0bb8\u0bcd\u0b9f\u0bcd",
-      "\u0b9a\u0bc6\u0baa\u0bcd\u0b9f\u0bae\u0bcd\u0baa\u0bb0\u0bcd",
-      "\u0b85\u0b95\u0bcd\u0b9f\u0bcb\u0baa\u0bb0\u0bcd",
-      "\u0ba8\u0bb5\u0bae\u0bcd\u0baa\u0bb0\u0bcd",
-      "\u0b9f\u0bbf\u0b9a\u0bae\u0bcd\u0baa\u0bb0\u0bcd"
-    ],
-    "SHORTDAY": [
-      "\u0b9e\u0bbe",
-      "\u0ba4\u0bbf",
-      "\u0b9a\u0bc6",
-      "\u0baa\u0bc1",
-      "\u0bb5\u0bbf",
-      "\u0bb5\u0bc6",
-      "\u0b9a"
-    ],
-    "SHORTMONTH": [
-      "\u0b9c\u0ba9.",
-      "\u0baa\u0bbf\u0baa\u0bcd.",
-      "\u0bae\u0bbe\u0bb0\u0bcd.",
-      "\u0b8f\u0baa\u0bcd.",
-      "\u0bae\u0bc7",
-      "\u0b9c\u0bc2\u0ba9\u0bcd",
-      "\u0b9c\u0bc2\u0bb2\u0bc8",
-      "\u0b86\u0b95.",
-      "\u0b9a\u0bc6\u0baa\u0bcd.",
-      "\u0b85\u0b95\u0bcd.",
-      "\u0ba8\u0bb5.",
-      "\u0b9f\u0bbf\u0b9a."
-    ],
-    "fullDate": "EEEE, d MMMM, y",
-    "longDate": "d MMMM, y",
-    "medium": "d MMM, y h:mm:ss a",
-    "mediumDate": "d MMM, y",
-    "mediumTime": "h:mm:ss a",
-    "short": "d-M-yy h:mm a",
-    "shortDate": "d-M-yy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20b9",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 2,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 2,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "\u00a4\u00a0-",
-        "negSuf": "",
-        "posPre": "\u00a4\u00a0",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "ta-lk",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ta.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ta.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ta.js
deleted file mode 100644
index 338d5f9..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ta.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "am",
-      "pm"
-    ],
-    "DAY": [
-      "\u0b9e\u0bbe\u0baf\u0bbf\u0bb1\u0bc1",
-      "\u0ba4\u0bbf\u0b99\u0bcd\u0b95\u0bb3\u0bcd",
-      "\u0b9a\u0bc6\u0bb5\u0bcd\u0bb5\u0bbe\u0baf\u0bcd",
-      "\u0baa\u0bc1\u0ba4\u0ba9\u0bcd",
-      "\u0bb5\u0bbf\u0baf\u0bbe\u0bb4\u0ba9\u0bcd",
-      "\u0bb5\u0bc6\u0bb3\u0bcd\u0bb3\u0bbf",
-      "\u0b9a\u0ba9\u0bbf"
-    ],
-    "MONTH": [
-      "\u0b9c\u0ba9\u0bb5\u0bb0\u0bbf",
-      "\u0baa\u0bbf\u0baa\u0bcd\u0bb0\u0bb5\u0bb0\u0bbf",
-      "\u0bae\u0bbe\u0bb0\u0bcd\u0b9a\u0bcd",
-      "\u0b8f\u0baa\u0bcd\u0bb0\u0bb2\u0bcd",
-      "\u0bae\u0bc7",
-      "\u0b9c\u0bc2\u0ba9\u0bcd",
-      "\u0b9c\u0bc2\u0bb2\u0bc8",
-      "\u0b86\u0b95\u0bb8\u0bcd\u0b9f\u0bcd",
-      "\u0b9a\u0bc6\u0baa\u0bcd\u0b9f\u0bae\u0bcd\u0baa\u0bb0\u0bcd",
-      "\u0b85\u0b95\u0bcd\u0b9f\u0bcb\u0baa\u0bb0\u0bcd",
-      "\u0ba8\u0bb5\u0bae\u0bcd\u0baa\u0bb0\u0bcd",
-      "\u0b9f\u0bbf\u0b9a\u0bae\u0bcd\u0baa\u0bb0\u0bcd"
-    ],
-    "SHORTDAY": [
-      "\u0b9e\u0bbe",
-      "\u0ba4\u0bbf",
-      "\u0b9a\u0bc6",
-      "\u0baa\u0bc1",
-      "\u0bb5\u0bbf",
-      "\u0bb5\u0bc6",
-      "\u0b9a"
-    ],
-    "SHORTMONTH": [
-      "\u0b9c\u0ba9.",
-      "\u0baa\u0bbf\u0baa\u0bcd.",
-      "\u0bae\u0bbe\u0bb0\u0bcd.",
-      "\u0b8f\u0baa\u0bcd.",
-      "\u0bae\u0bc7",
-      "\u0b9c\u0bc2\u0ba9\u0bcd",
-      "\u0b9c\u0bc2\u0bb2\u0bc8",
-      "\u0b86\u0b95.",
-      "\u0b9a\u0bc6\u0baa\u0bcd.",
-      "\u0b85\u0b95\u0bcd.",
-      "\u0ba8\u0bb5.",
-      "\u0b9f\u0bbf\u0b9a."
-    ],
-    "fullDate": "EEEE, d MMMM, y",
-    "longDate": "d MMMM, y",
-    "medium": "d MMM, y h:mm:ss a",
-    "mediumDate": "d MMM, y",
-    "mediumTime": "h:mm:ss a",
-    "short": "d-M-yy h:mm a",
-    "shortDate": "d-M-yy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20b9",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 2,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 2,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "\u00a4\u00a0-",
-        "negSuf": "",
-        "posPre": "\u00a4\u00a0",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "ta",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_te-in.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_te-in.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_te-in.js
deleted file mode 100644
index 4e3e5db..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_te-in.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "am",
-      "pm"
-    ],
-    "DAY": [
-      "\u0c06\u0c26\u0c3f\u0c35\u0c3e\u0c30\u0c02",
-      "\u0c38\u0c4b\u0c2e\u0c35\u0c3e\u0c30\u0c02",
-      "\u0c2e\u0c02\u0c17\u0c33\u0c35\u0c3e\u0c30\u0c02",
-      "\u0c2c\u0c41\u0c27\u0c35\u0c3e\u0c30\u0c02",
-      "\u0c17\u0c41\u0c30\u0c41\u0c35\u0c3e\u0c30\u0c02",
-      "\u0c36\u0c41\u0c15\u0c4d\u0c30\u0c35\u0c3e\u0c30\u0c02",
-      "\u0c36\u0c28\u0c3f\u0c35\u0c3e\u0c30\u0c02"
-    ],
-    "MONTH": [
-      "\u0c1c\u0c28\u0c35\u0c30\u0c3f",
-      "\u0c2b\u0c3f\u0c2c\u0c4d\u0c30\u0c35\u0c30\u0c3f",
-      "\u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c3f",
-      "\u0c0e\u0c2a\u0c4d\u0c30\u0c3f\u0c32\u0c4d",
-      "\u0c2e\u0c47",
-      "\u0c1c\u0c42\u0c28\u0c4d",
-      "\u0c1c\u0c42\u0c32\u0c48",
-      "\u0c06\u0c17\u0c38\u0c4d\u0c1f\u0c41",
-      "\u0c38\u0c46\u0c2a\u0c4d\u0c1f\u0c46\u0c02\u0c2c\u0c30\u0c4d",
-      "\u0c05\u0c15\u0c4d\u0c1f\u0c4b\u0c2c\u0c30\u0c4d",
-      "\u0c28\u0c35\u0c02\u0c2c\u0c30\u0c4d",
-      "\u0c21\u0c3f\u0c38\u0c46\u0c02\u0c2c\u0c30\u0c4d"
-    ],
-    "SHORTDAY": [
-      "\u0c06\u0c26\u0c3f",
-      "\u0c38\u0c4b\u0c2e",
-      "\u0c2e\u0c02\u0c17\u0c33",
-      "\u0c2c\u0c41\u0c27",
-      "\u0c17\u0c41\u0c30\u0c41",
-      "\u0c36\u0c41\u0c15\u0c4d\u0c30",
-      "\u0c36\u0c28\u0c3f"
-    ],
-    "SHORTMONTH": [
-      "\u0c1c\u0c28",
-      "\u0c2b\u0c3f\u0c2c\u0c4d\u0c30",
-      "\u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c3f",
-      "\u0c0f\u0c2a\u0c4d\u0c30\u0c3f",
-      "\u0c2e\u0c47",
-      "\u0c1c\u0c42\u0c28\u0c4d",
-      "\u0c1c\u0c42\u0c32\u0c48",
-      "\u0c06\u0c17\u0c38\u0c4d\u0c1f\u0c41",
-      "\u0c38\u0c46\u0c2a\u0c4d\u0c1f\u0c46\u0c02\u0c2c\u0c30\u0c4d",
-      "\u0c05\u0c15\u0c4d\u0c1f\u0c4b\u0c2c\u0c30\u0c4d",
-      "\u0c28\u0c35\u0c02\u0c2c\u0c30\u0c4d",
-      "\u0c21\u0c3f\u0c38\u0c46\u0c02\u0c2c\u0c30\u0c4d"
-    ],
-    "fullDate": "EEEE d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y h:mm:ss a",
-    "mediumDate": "d MMM y",
-    "mediumTime": "h:mm:ss a",
-    "short": "dd-MM-yy h:mm a",
-    "shortDate": "dd-MM-yy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20b9",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "te-in",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_te.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_te.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_te.js
deleted file mode 100644
index 9671277..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_te.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "am",
-      "pm"
-    ],
-    "DAY": [
-      "\u0c06\u0c26\u0c3f\u0c35\u0c3e\u0c30\u0c02",
-      "\u0c38\u0c4b\u0c2e\u0c35\u0c3e\u0c30\u0c02",
-      "\u0c2e\u0c02\u0c17\u0c33\u0c35\u0c3e\u0c30\u0c02",
-      "\u0c2c\u0c41\u0c27\u0c35\u0c3e\u0c30\u0c02",
-      "\u0c17\u0c41\u0c30\u0c41\u0c35\u0c3e\u0c30\u0c02",
-      "\u0c36\u0c41\u0c15\u0c4d\u0c30\u0c35\u0c3e\u0c30\u0c02",
-      "\u0c36\u0c28\u0c3f\u0c35\u0c3e\u0c30\u0c02"
-    ],
-    "MONTH": [
-      "\u0c1c\u0c28\u0c35\u0c30\u0c3f",
-      "\u0c2b\u0c3f\u0c2c\u0c4d\u0c30\u0c35\u0c30\u0c3f",
-      "\u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c3f",
-      "\u0c0e\u0c2a\u0c4d\u0c30\u0c3f\u0c32\u0c4d",
-      "\u0c2e\u0c47",
-      "\u0c1c\u0c42\u0c28\u0c4d",
-      "\u0c1c\u0c42\u0c32\u0c48",
-      "\u0c06\u0c17\u0c38\u0c4d\u0c1f\u0c41",
-      "\u0c38\u0c46\u0c2a\u0c4d\u0c1f\u0c46\u0c02\u0c2c\u0c30\u0c4d",
-      "\u0c05\u0c15\u0c4d\u0c1f\u0c4b\u0c2c\u0c30\u0c4d",
-      "\u0c28\u0c35\u0c02\u0c2c\u0c30\u0c4d",
-      "\u0c21\u0c3f\u0c38\u0c46\u0c02\u0c2c\u0c30\u0c4d"
-    ],
-    "SHORTDAY": [
-      "\u0c06\u0c26\u0c3f",
-      "\u0c38\u0c4b\u0c2e",
-      "\u0c2e\u0c02\u0c17\u0c33",
-      "\u0c2c\u0c41\u0c27",
-      "\u0c17\u0c41\u0c30\u0c41",
-      "\u0c36\u0c41\u0c15\u0c4d\u0c30",
-      "\u0c36\u0c28\u0c3f"
-    ],
-    "SHORTMONTH": [
-      "\u0c1c\u0c28",
-      "\u0c2b\u0c3f\u0c2c\u0c4d\u0c30",
-      "\u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c3f",
-      "\u0c0f\u0c2a\u0c4d\u0c30\u0c3f",
-      "\u0c2e\u0c47",
-      "\u0c1c\u0c42\u0c28\u0c4d",
-      "\u0c1c\u0c42\u0c32\u0c48",
-      "\u0c06\u0c17\u0c38\u0c4d\u0c1f\u0c41",
-      "\u0c38\u0c46\u0c2a\u0c4d\u0c1f\u0c46\u0c02\u0c2c\u0c30\u0c4d",
-      "\u0c05\u0c15\u0c4d\u0c1f\u0c4b\u0c2c\u0c30\u0c4d",
-      "\u0c28\u0c35\u0c02\u0c2c\u0c30\u0c4d",
-      "\u0c21\u0c3f\u0c38\u0c46\u0c02\u0c2c\u0c30\u0c4d"
-    ],
-    "fullDate": "EEEE d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y h:mm:ss a",
-    "mediumDate": "d MMM y",
-    "mediumTime": "h:mm:ss a",
-    "short": "dd-MM-yy h:mm a",
-    "shortDate": "dd-MM-yy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20b9",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "te",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_th-th.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_th-th.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_th-th.js
deleted file mode 100644
index 0791a42..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_th-th.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u0e01\u0e48\u0e2d\u0e19\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07",
-      "\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07"
-    ],
-    "DAY": [
-      "\u0e27\u0e31\u0e19\u0e2d\u0e32\u0e17\u0e34\u0e15\u0e22\u0e4c",
-      "\u0e27\u0e31\u0e19\u0e08\u0e31\u0e19\u0e17\u0e23\u0e4c",
-      "\u0e27\u0e31\u0e19\u0e2d\u0e31\u0e07\u0e04\u0e32\u0e23",
-      "\u0e27\u0e31\u0e19\u0e1e\u0e38\u0e18",
-      "\u0e27\u0e31\u0e19\u0e1e\u0e24\u0e2b\u0e31\u0e2a\u0e1a\u0e14\u0e35",
-      "\u0e27\u0e31\u0e19\u0e28\u0e38\u0e01\u0e23\u0e4c",
-      "\u0e27\u0e31\u0e19\u0e40\u0e2a\u0e32\u0e23\u0e4c"
-    ],
-    "MONTH": [
-      "\u0e21\u0e01\u0e23\u0e32\u0e04\u0e21",
-      "\u0e01\u0e38\u0e21\u0e20\u0e32\u0e1e\u0e31\u0e19\u0e18\u0e4c",
-      "\u0e21\u0e35\u0e19\u0e32\u0e04\u0e21",
-      "\u0e40\u0e21\u0e29\u0e32\u0e22\u0e19",
-      "\u0e1e\u0e24\u0e29\u0e20\u0e32\u0e04\u0e21",
-      "\u0e21\u0e34\u0e16\u0e38\u0e19\u0e32\u0e22\u0e19",
-      "\u0e01\u0e23\u0e01\u0e0e\u0e32\u0e04\u0e21",
-      "\u0e2a\u0e34\u0e07\u0e2b\u0e32\u0e04\u0e21",
-      "\u0e01\u0e31\u0e19\u0e22\u0e32\u0e22\u0e19",
-      "\u0e15\u0e38\u0e25\u0e32\u0e04\u0e21",
-      "\u0e1e\u0e24\u0e28\u0e08\u0e34\u0e01\u0e32\u0e22\u0e19",
-      "\u0e18\u0e31\u0e19\u0e27\u0e32\u0e04\u0e21"
-    ],
-    "SHORTDAY": [
-      "\u0e2d\u0e32.",
-      "\u0e08.",
-      "\u0e2d.",
-      "\u0e1e.",
-      "\u0e1e\u0e24.",
-      "\u0e28.",
-      "\u0e2a."
-    ],
-    "SHORTMONTH": [
-      "\u0e21.\u0e04.",
-      "\u0e01.\u0e1e.",
-      "\u0e21\u0e35.\u0e04.",
-      "\u0e40\u0e21.\u0e22.",
-      "\u0e1e.\u0e04.",
-      "\u0e21\u0e34.\u0e22.",
-      "\u0e01.\u0e04.",
-      "\u0e2a.\u0e04.",
-      "\u0e01.\u0e22.",
-      "\u0e15.\u0e04.",
-      "\u0e1e.\u0e22.",
-      "\u0e18.\u0e04."
-    ],
-    "fullDate": "EEEE\u0e17\u0e35\u0e48 d MMMM G y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y H:mm:ss",
-    "mediumDate": "d MMM y",
-    "mediumTime": "H:mm:ss",
-    "short": "d/M/yyyy H:mm",
-    "shortDate": "d/M/yyyy",
-    "shortTime": "H:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u0e3f",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "th-th",
-  "pluralCat": function (n) {  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_th.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_th.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_th.js
deleted file mode 100644
index be8efab..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_th.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u0e01\u0e48\u0e2d\u0e19\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07",
-      "\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07"
-    ],
-    "DAY": [
-      "\u0e27\u0e31\u0e19\u0e2d\u0e32\u0e17\u0e34\u0e15\u0e22\u0e4c",
-      "\u0e27\u0e31\u0e19\u0e08\u0e31\u0e19\u0e17\u0e23\u0e4c",
-      "\u0e27\u0e31\u0e19\u0e2d\u0e31\u0e07\u0e04\u0e32\u0e23",
-      "\u0e27\u0e31\u0e19\u0e1e\u0e38\u0e18",
-      "\u0e27\u0e31\u0e19\u0e1e\u0e24\u0e2b\u0e31\u0e2a\u0e1a\u0e14\u0e35",
-      "\u0e27\u0e31\u0e19\u0e28\u0e38\u0e01\u0e23\u0e4c",
-      "\u0e27\u0e31\u0e19\u0e40\u0e2a\u0e32\u0e23\u0e4c"
-    ],
-    "MONTH": [
-      "\u0e21\u0e01\u0e23\u0e32\u0e04\u0e21",
-      "\u0e01\u0e38\u0e21\u0e20\u0e32\u0e1e\u0e31\u0e19\u0e18\u0e4c",
-      "\u0e21\u0e35\u0e19\u0e32\u0e04\u0e21",
-      "\u0e40\u0e21\u0e29\u0e32\u0e22\u0e19",
-      "\u0e1e\u0e24\u0e29\u0e20\u0e32\u0e04\u0e21",
-      "\u0e21\u0e34\u0e16\u0e38\u0e19\u0e32\u0e22\u0e19",
-      "\u0e01\u0e23\u0e01\u0e0e\u0e32\u0e04\u0e21",
-      "\u0e2a\u0e34\u0e07\u0e2b\u0e32\u0e04\u0e21",
-      "\u0e01\u0e31\u0e19\u0e22\u0e32\u0e22\u0e19",
-      "\u0e15\u0e38\u0e25\u0e32\u0e04\u0e21",
-      "\u0e1e\u0e24\u0e28\u0e08\u0e34\u0e01\u0e32\u0e22\u0e19",
-      "\u0e18\u0e31\u0e19\u0e27\u0e32\u0e04\u0e21"
-    ],
-    "SHORTDAY": [
-      "\u0e2d\u0e32.",
-      "\u0e08.",
-      "\u0e2d.",
-      "\u0e1e.",
-      "\u0e1e\u0e24.",
-      "\u0e28.",
-      "\u0e2a."
-    ],
-    "SHORTMONTH": [
-      "\u0e21.\u0e04.",
-      "\u0e01.\u0e1e.",
-      "\u0e21\u0e35.\u0e04.",
-      "\u0e40\u0e21.\u0e22.",
-      "\u0e1e.\u0e04.",
-      "\u0e21\u0e34.\u0e22.",
-      "\u0e01.\u0e04.",
-      "\u0e2a.\u0e04.",
-      "\u0e01.\u0e22.",
-      "\u0e15.\u0e04.",
-      "\u0e1e.\u0e22.",
-      "\u0e18.\u0e04."
-    ],
-    "fullDate": "EEEE\u0e17\u0e35\u0e48 d MMMM G y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y H:mm:ss",
-    "mediumDate": "d MMM y",
-    "mediumTime": "H:mm:ss",
-    "short": "d/M/yyyy H:mm",
-    "shortDate": "d/M/yyyy",
-    "shortTime": "H:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u0e3f",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "th",
-  "pluralCat": function (n) {  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_tl.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_tl.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_tl.js
deleted file mode 100644
index 0809c01..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_tl.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "Linggo",
-      "Lunes",
-      "Martes",
-      "Miyerkules",
-      "Huwebes",
-      "Biyernes",
-      "Sabado"
-    ],
-    "MONTH": [
-      "Enero",
-      "Pebrero",
-      "Marso",
-      "Abril",
-      "Mayo",
-      "Hunyo",
-      "Hulyo",
-      "Agosto",
-      "Setyembre",
-      "Oktubre",
-      "Nobyembre",
-      "Disyembre"
-    ],
-    "SHORTDAY": [
-      "Lin",
-      "Lun",
-      "Mar",
-      "Mye",
-      "Huw",
-      "Bye",
-      "Sab"
-    ],
-    "SHORTMONTH": [
-      "Ene",
-      "Peb",
-      "Mar",
-      "Abr",
-      "May",
-      "Hun",
-      "Hul",
-      "Ago",
-      "Set",
-      "Okt",
-      "Nob",
-      "Dis"
-    ],
-    "fullDate": "EEEE, MMMM dd y",
-    "longDate": "MMMM d, y",
-    "medium": "MMM d, y HH:mm:ss",
-    "mediumDate": "MMM d, y",
-    "mediumTime": "HH:mm:ss",
-    "short": "M/d/yy HH:mm",
-    "shortDate": "M/d/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20b1",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "tl",
-  "pluralCat": function (n) {  if (n == 0 || n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_tr-tr.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_tr-tr.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_tr-tr.js
deleted file mode 100644
index 57d3ca4..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_tr-tr.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "Pazar",
-      "Pazartesi",
-      "Sal\u0131",
-      "\u00c7ar\u015famba",
-      "Per\u015fembe",
-      "Cuma",
-      "Cumartesi"
-    ],
-    "MONTH": [
-      "Ocak",
-      "\u015eubat",
-      "Mart",
-      "Nisan",
-      "May\u0131s",
-      "Haziran",
-      "Temmuz",
-      "A\u011fustos",
-      "Eyl\u00fcl",
-      "Ekim",
-      "Kas\u0131m",
-      "Aral\u0131k"
-    ],
-    "SHORTDAY": [
-      "Paz",
-      "Pzt",
-      "Sal",
-      "\u00c7ar",
-      "Per",
-      "Cum",
-      "Cmt"
-    ],
-    "SHORTMONTH": [
-      "Oca",
-      "\u015eub",
-      "Mar",
-      "Nis",
-      "May",
-      "Haz",
-      "Tem",
-      "A\u011fu",
-      "Eyl",
-      "Eki",
-      "Kas",
-      "Ara"
-    ],
-    "fullDate": "d MMMM y EEEE",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y HH:mm:ss",
-    "mediumDate": "d MMM y",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd MM yyyy HH:mm",
-    "shortDate": "dd MM yyyy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "TL",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(",
-        "negSuf": "\u00a0\u00a4)",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "tr-tr",
-  "pluralCat": function (n) {  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_tr.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_tr.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_tr.js
deleted file mode 100644
index bc36ae2..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_tr.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "Pazar",
-      "Pazartesi",
-      "Sal\u0131",
-      "\u00c7ar\u015famba",
-      "Per\u015fembe",
-      "Cuma",
-      "Cumartesi"
-    ],
-    "MONTH": [
-      "Ocak",
-      "\u015eubat",
-      "Mart",
-      "Nisan",
-      "May\u0131s",
-      "Haziran",
-      "Temmuz",
-      "A\u011fustos",
-      "Eyl\u00fcl",
-      "Ekim",
-      "Kas\u0131m",
-      "Aral\u0131k"
-    ],
-    "SHORTDAY": [
-      "Paz",
-      "Pzt",
-      "Sal",
-      "\u00c7ar",
-      "Per",
-      "Cum",
-      "Cmt"
-    ],
-    "SHORTMONTH": [
-      "Oca",
-      "\u015eub",
-      "Mar",
-      "Nis",
-      "May",
-      "Haz",
-      "Tem",
-      "A\u011fu",
-      "Eyl",
-      "Eki",
-      "Kas",
-      "Ara"
-    ],
-    "fullDate": "d MMMM y EEEE",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y HH:mm:ss",
-    "mediumDate": "d MMM y",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd MM yyyy HH:mm",
-    "shortDate": "dd MM yyyy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "TL",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(",
-        "negSuf": "\u00a0\u00a4)",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "tr",
-  "pluralCat": function (n) {  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_uk-ua.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_uk-ua.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_uk-ua.js
deleted file mode 100644
index 1e01d7c..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_uk-ua.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u0434\u043f",
-      "\u043f\u043f"
-    ],
-    "DAY": [
-      "\u041d\u0435\u0434\u0456\u043b\u044f",
-      "\u041f\u043e\u043d\u0435\u0434\u0456\u043b\u043e\u043a",
-      "\u0412\u0456\u0432\u0442\u043e\u0440\u043e\u043a",
-      "\u0421\u0435\u0440\u0435\u0434\u0430",
-      "\u0427\u0435\u0442\u0432\u0435\u0440",
-      "\u041f\u02bc\u044f\u0442\u043d\u0438\u0446\u044f",
-      "\u0421\u0443\u0431\u043e\u0442\u0430"
-    ],
-    "MONTH": [
-      "\u0441\u0456\u0447\u043d\u044f",
-      "\u043b\u044e\u0442\u043e\u0433\u043e",
-      "\u0431\u0435\u0440\u0435\u0437\u043d\u044f",
-      "\u043a\u0432\u0456\u0442\u043d\u044f",
-      "\u0442\u0440\u0430\u0432\u043d\u044f",
-      "\u0447\u0435\u0440\u0432\u043d\u044f",
-      "\u043b\u0438\u043f\u043d\u044f",
-      "\u0441\u0435\u0440\u043f\u043d\u044f",
-      "\u0432\u0435\u0440\u0435\u0441\u043d\u044f",
-      "\u0436\u043e\u0432\u0442\u043d\u044f",
-      "\u043b\u0438\u0441\u0442\u043e\u043f\u0430\u0434\u0430",
-      "\u0433\u0440\u0443\u0434\u043d\u044f"
-    ],
-    "SHORTDAY": [
-      "\u041d\u0434",
-      "\u041f\u043d",
-      "\u0412\u0442",
-      "\u0421\u0440",
-      "\u0427\u0442",
-      "\u041f\u0442",
-      "\u0421\u0431"
-    ],
-    "SHORTMONTH": [
-      "\u0441\u0456\u0447.",
-      "\u043b\u044e\u0442.",
-      "\u0431\u0435\u0440.",
-      "\u043a\u0432\u0456\u0442.",
-      "\u0442\u0440\u0430\u0432.",
-      "\u0447\u0435\u0440\u0432.",
-      "\u043b\u0438\u043f.",
-      "\u0441\u0435\u0440\u043f.",
-      "\u0432\u0435\u0440.",
-      "\u0436\u043e\u0432\u0442.",
-      "\u043b\u0438\u0441\u0442.",
-      "\u0433\u0440\u0443\u0434."
-    ],
-    "fullDate": "EEEE, d MMMM y '\u0440'.",
-    "longDate": "d MMMM y '\u0440'.",
-    "medium": "d MMM y HH:mm:ss",
-    "mediumDate": "d MMM y",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd.MM.yy HH:mm",
-    "shortDate": "dd.MM.yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20b4",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "uk-ua",
-  "pluralCat": function (n) {  if (n % 10 == 1 && n % 100 != 11) {   return PLURAL_CATEGORY.ONE;  }  if (n == (n | 0) && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) {   return PLURAL_CATEGORY.FEW;  }  if (n % 10 == 0 || n == (n | 0) && n % 10 >= 5 && n % 10 <= 9 || n == (n | 0) && n % 100 >= 11 && n % 100 <= 14) {   return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_uk.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_uk.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_uk.js
deleted file mode 100644
index 6b50582..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_uk.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u0434\u043f",
-      "\u043f\u043f"
-    ],
-    "DAY": [
-      "\u041d\u0435\u0434\u0456\u043b\u044f",
-      "\u041f\u043e\u043d\u0435\u0434\u0456\u043b\u043e\u043a",
-      "\u0412\u0456\u0432\u0442\u043e\u0440\u043e\u043a",
-      "\u0421\u0435\u0440\u0435\u0434\u0430",
-      "\u0427\u0435\u0442\u0432\u0435\u0440",
-      "\u041f\u02bc\u044f\u0442\u043d\u0438\u0446\u044f",
-      "\u0421\u0443\u0431\u043e\u0442\u0430"
-    ],
-    "MONTH": [
-      "\u0441\u0456\u0447\u043d\u044f",
-      "\u043b\u044e\u0442\u043e\u0433\u043e",
-      "\u0431\u0435\u0440\u0435\u0437\u043d\u044f",
-      "\u043a\u0432\u0456\u0442\u043d\u044f",
-      "\u0442\u0440\u0430\u0432\u043d\u044f",
-      "\u0447\u0435\u0440\u0432\u043d\u044f",
-      "\u043b\u0438\u043f\u043d\u044f",
-      "\u0441\u0435\u0440\u043f\u043d\u044f",
-      "\u0432\u0435\u0440\u0435\u0441\u043d\u044f",
-      "\u0436\u043e\u0432\u0442\u043d\u044f",
-      "\u043b\u0438\u0441\u0442\u043e\u043f\u0430\u0434\u0430",
-      "\u0433\u0440\u0443\u0434\u043d\u044f"
-    ],
-    "SHORTDAY": [
-      "\u041d\u0434",
-      "\u041f\u043d",
-      "\u0412\u0442",
-      "\u0421\u0440",
-      "\u0427\u0442",
-      "\u041f\u0442",
-      "\u0421\u0431"
-    ],
-    "SHORTMONTH": [
-      "\u0441\u0456\u0447.",
-      "\u043b\u044e\u0442.",
-      "\u0431\u0435\u0440.",
-      "\u043a\u0432\u0456\u0442.",
-      "\u0442\u0440\u0430\u0432.",
-      "\u0447\u0435\u0440\u0432.",
-      "\u043b\u0438\u043f.",
-      "\u0441\u0435\u0440\u043f.",
-      "\u0432\u0435\u0440.",
-      "\u0436\u043e\u0432\u0442.",
-      "\u043b\u0438\u0441\u0442.",
-      "\u0433\u0440\u0443\u0434."
-    ],
-    "fullDate": "EEEE, d MMMM y '\u0440'.",
-    "longDate": "d MMMM y '\u0440'.",
-    "medium": "d MMM y HH:mm:ss",
-    "mediumDate": "d MMM y",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd.MM.yy HH:mm",
-    "shortDate": "dd.MM.yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20b4",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "uk",
-  "pluralCat": function (n) {  if (n % 10 == 1 && n % 100 != 11) {   return PLURAL_CATEGORY.ONE;  }  if (n == (n | 0) && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) {   return PLURAL_CATEGORY.FEW;  }  if (n % 10 == 0 || n == (n | 0) && n % 10 >= 5 && n % 10 <= 9 || n == (n | 0) && n % 100 >= 11 && n % 100 <= 14) {   return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ur-in.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ur-in.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ur-in.js
deleted file mode 100644
index c501be6..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ur-in.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u062f\u0646",
-      "\u0631\u0627\u062a"
-    ],
-    "DAY": [
-      "\u0627\u062a\u0648\u0627\u0631",
-      "\u067e\u064a\u0631",
-      "\u0645\u0646\u06af\u0644",
-      "\u0628\u062f\u0647",
-      "\u062c\u0645\u0639\u0631\u0627\u062a",
-      "\u062c\u0645\u0639\u06c1",
-      "\u06c1\u0641\u062a\u06c1"
-    ],
-    "MONTH": [
-      "\u062c\u0646\u0648\u0631\u06cc",
-      "\u0641\u0631\u0648\u0631\u06cc",
-      "\u0645\u0627\u0631\u0686",
-      "\u0627\u067e\u0631\u064a\u0644",
-      "\u0645\u0626",
-      "\u062c\u0648\u0646",
-      "\u062c\u0648\u0644\u0627\u0626",
-      "\u0627\u06af\u0633\u062a",
-      "\u0633\u062a\u0645\u0628\u0631",
-      "\u0627\u06a9\u062a\u0648\u0628\u0631",
-      "\u0646\u0648\u0645\u0628\u0631",
-      "\u062f\u0633\u0645\u0628\u0631"
-    ],
-    "SHORTDAY": [
-      "\u0627\u062a\u0648\u0627\u0631",
-      "\u067e\u064a\u0631",
-      "\u0645\u0646\u06af\u0644",
-      "\u0628\u062f\u0647",
-      "\u062c\u0645\u0639\u0631\u0627\u062a",
-      "\u062c\u0645\u0639\u06c1",
-      "\u06c1\u0641\u062a\u06c1"
-    ],
-    "SHORTMONTH": [
-      "\u062c\u0646\u0648\u0631\u06cc",
-      "\u0641\u0631\u0648\u0631\u06cc",
-      "\u0645\u0627\u0631\u0686",
-      "\u0627\u067e\u0631\u064a\u0644",
-      "\u0645\u0626",
-      "\u062c\u0648\u0646",
-      "\u062c\u0648\u0644\u0627\u0626",
-      "\u0627\u06af\u0633\u062a",
-      "\u0633\u062a\u0645\u0628\u0631",
-      "\u0627\u06a9\u062a\u0648\u0628\u0631",
-      "\u0646\u0648\u0645\u0628\u0631",
-      "\u062f\u0633\u0645\u0628\u0631"
-    ],
-    "fullDate": "EEEE\u060d d\u060d MMMM y",
-    "longDate": "d\u060d MMMM y",
-    "medium": "d\u060d MMM y h:mm:ss a",
-    "mediumDate": "d\u060d MMM y",
-    "mediumTime": "h:mm:ss a",
-    "short": "d/M/yy h:mm a",
-    "shortDate": "d/M/yy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "Rs",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "\u00a4-",
-        "negSuf": "",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "ur-in",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file


[09/71] [abbrv] brooklyn-ui git commit: Move mobile app to sandbox

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl-nl.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl-nl.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl-nl.js
deleted file mode 100644
index 3a3e932..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl-nl.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "zondag",
-      "maandag",
-      "dinsdag",
-      "woensdag",
-      "donderdag",
-      "vrijdag",
-      "zaterdag"
-    ],
-    "MONTH": [
-      "januari",
-      "februari",
-      "maart",
-      "april",
-      "mei",
-      "juni",
-      "juli",
-      "augustus",
-      "september",
-      "oktober",
-      "november",
-      "december"
-    ],
-    "SHORTDAY": [
-      "zo",
-      "ma",
-      "di",
-      "wo",
-      "do",
-      "vr",
-      "za"
-    ],
-    "SHORTMONTH": [
-      "jan.",
-      "feb.",
-      "mrt.",
-      "apr.",
-      "mei",
-      "jun.",
-      "jul.",
-      "aug.",
-      "sep.",
-      "okt.",
-      "nov.",
-      "dec."
-    ],
-    "fullDate": "EEEE d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y HH:mm:ss",
-    "mediumDate": "d MMM y",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd-MM-yy HH:mm",
-    "shortDate": "dd-MM-yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "\u00a4\u00a0",
-        "negSuf": "-",
-        "posPre": "\u00a4\u00a0",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "nl-nl",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl-sx.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl-sx.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl-sx.js
deleted file mode 100644
index a4eda9c..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl-sx.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "zondag",
-      "maandag",
-      "dinsdag",
-      "woensdag",
-      "donderdag",
-      "vrijdag",
-      "zaterdag"
-    ],
-    "MONTH": [
-      "januari",
-      "februari",
-      "maart",
-      "april",
-      "mei",
-      "juni",
-      "juli",
-      "augustus",
-      "september",
-      "oktober",
-      "november",
-      "december"
-    ],
-    "SHORTDAY": [
-      "zo",
-      "ma",
-      "di",
-      "wo",
-      "do",
-      "vr",
-      "za"
-    ],
-    "SHORTMONTH": [
-      "jan.",
-      "feb.",
-      "mrt.",
-      "apr.",
-      "mei",
-      "jun.",
-      "jul.",
-      "aug.",
-      "sep.",
-      "okt.",
-      "nov.",
-      "dec."
-    ],
-    "fullDate": "EEEE d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y HH:mm:ss",
-    "mediumDate": "d MMM y",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd-MM-yy HH:mm",
-    "shortDate": "dd-MM-yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "\u00a4\u00a0",
-        "negSuf": "-",
-        "posPre": "\u00a4\u00a0",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "nl-sx",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl.js
deleted file mode 100644
index 955948c..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "zondag",
-      "maandag",
-      "dinsdag",
-      "woensdag",
-      "donderdag",
-      "vrijdag",
-      "zaterdag"
-    ],
-    "MONTH": [
-      "januari",
-      "februari",
-      "maart",
-      "april",
-      "mei",
-      "juni",
-      "juli",
-      "augustus",
-      "september",
-      "oktober",
-      "november",
-      "december"
-    ],
-    "SHORTDAY": [
-      "zo",
-      "ma",
-      "di",
-      "wo",
-      "do",
-      "vr",
-      "za"
-    ],
-    "SHORTMONTH": [
-      "jan.",
-      "feb.",
-      "mrt.",
-      "apr.",
-      "mei",
-      "jun.",
-      "jul.",
-      "aug.",
-      "sep.",
-      "okt.",
-      "nov.",
-      "dec."
-    ],
-    "fullDate": "EEEE d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y HH:mm:ss",
-    "mediumDate": "d MMM y",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd-MM-yy HH:mm",
-    "shortDate": "dd-MM-yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "\u00a4\u00a0",
-        "negSuf": "-",
-        "posPre": "\u00a4\u00a0",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "nl",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_no.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_no.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_no.js
deleted file mode 100644
index 313e260..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_no.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "s\u00f8ndag",
-      "mandag",
-      "tirsdag",
-      "onsdag",
-      "torsdag",
-      "fredag",
-      "l\u00f8rdag"
-    ],
-    "MONTH": [
-      "januar",
-      "februar",
-      "mars",
-      "april",
-      "mai",
-      "juni",
-      "juli",
-      "august",
-      "september",
-      "oktober",
-      "november",
-      "desember"
-    ],
-    "SHORTDAY": [
-      "s\u00f8n.",
-      "man.",
-      "tir.",
-      "ons.",
-      "tor.",
-      "fre.",
-      "l\u00f8r."
-    ],
-    "SHORTMONTH": [
-      "jan.",
-      "feb.",
-      "mars",
-      "apr.",
-      "mai",
-      "juni",
-      "juli",
-      "aug.",
-      "sep.",
-      "okt.",
-      "nov.",
-      "des."
-    ],
-    "fullDate": "EEEE d. MMMM y",
-    "longDate": "d. MMMM y",
-    "medium": "d. MMM y HH:mm:ss",
-    "mediumDate": "d. MMM y",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd.MM.yy HH:mm",
-    "shortDate": "dd.MM.yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "kr",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "\u00a4\u00a0-",
-        "negSuf": "",
-        "posPre": "\u00a4\u00a0",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "no",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_or-in.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_or-in.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_or-in.js
deleted file mode 100644
index acf991a..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_or-in.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "am",
-      "pm"
-    ],
-    "DAY": [
-      "\u0b30\u0b2c\u0b3f\u0b2c\u0b3e\u0b30",
-      "\u0b38\u0b4b\u0b2e\u0b2c\u0b3e\u0b30",
-      "\u0b2e\u0b19\u0b4d\u0b17\u0b33\u0b2c\u0b3e\u0b30",
-      "\u0b2c\u0b41\u0b27\u0b2c\u0b3e\u0b30",
-      "\u0b17\u0b41\u0b30\u0b41\u0b2c\u0b3e\u0b30",
-      "\u0b36\u0b41\u0b15\u0b4d\u0b30\u0b2c\u0b3e\u0b30",
-      "\u0b36\u0b28\u0b3f\u0b2c\u0b3e\u0b30"
-    ],
-    "MONTH": [
-      "\u0b1c\u0b3e\u0b28\u0b41\u0b06\u0b30\u0b40",
-      "\u0b2b\u0b47\u0b2c\u0b4d\u0b30\u0b41\u0b5f\u0b3e\u0b30\u0b40",
-      "\u0b2e\u0b3e\u0b30\u0b4d\u0b1a\u0b4d\u0b1a",
-      "\u0b05\u0b2a\u0b4d\u0b30\u0b47\u0b32",
-      "\u0b2e\u0b47",
-      "\u0b1c\u0b41\u0b28",
-      "\u0b1c\u0b41\u0b32\u0b3e\u0b07",
-      "\u0b05\u0b17\u0b37\u0b4d\u0b1f",
-      "\u0b38\u0b47\u0b2a\u0b4d\u0b1f\u0b47\u0b2e\u0b4d\u0b2c\u0b30",
-      "\u0b05\u0b15\u0b4d\u0b1f\u0b4b\u0b2c\u0b30",
-      "\u0b28\u0b2d\u0b47\u0b2e\u0b4d\u0b2c\u0b30",
-      "\u0b21\u0b3f\u0b38\u0b47\u0b2e\u0b4d\u0b2c\u0b30"
-    ],
-    "SHORTDAY": [
-      "\u0b30\u0b2c\u0b3f",
-      "\u0b38\u0b4b\u0b2e",
-      "\u0b2e\u0b19\u0b4d\u0b17\u0b33",
-      "\u0b2c\u0b41\u0b27",
-      "\u0b17\u0b41\u0b30\u0b41",
-      "\u0b36\u0b41\u0b15\u0b4d\u0b30",
-      "\u0b36\u0b28\u0b3f"
-    ],
-    "SHORTMONTH": [
-      "\u0b1c\u0b3e\u0b28\u0b41\u0b06\u0b30\u0b40",
-      "\u0b2b\u0b47\u0b2c\u0b4d\u0b30\u0b41\u0b5f\u0b3e\u0b30\u0b40",
-      "\u0b2e\u0b3e\u0b30\u0b4d\u0b1a\u0b4d\u0b1a",
-      "\u0b05\u0b2a\u0b4d\u0b30\u0b47\u0b32",
-      "\u0b2e\u0b47",
-      "\u0b1c\u0b41\u0b28",
-      "\u0b1c\u0b41\u0b32\u0b3e\u0b07",
-      "\u0b05\u0b17\u0b37\u0b4d\u0b1f",
-      "\u0b38\u0b47\u0b2a\u0b4d\u0b1f\u0b47\u0b2e\u0b4d\u0b2c\u0b30",
-      "\u0b05\u0b15\u0b4d\u0b1f\u0b4b\u0b2c\u0b30",
-      "\u0b28\u0b2d\u0b47\u0b2e\u0b4d\u0b2c\u0b30",
-      "\u0b21\u0b3f\u0b38\u0b47\u0b2e\u0b4d\u0b2c\u0b30"
-    ],
-    "fullDate": "EEEE, d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y h:mm:ss a",
-    "mediumDate": "d MMM y",
-    "mediumTime": "h:mm:ss a",
-    "short": "d-M-yy h:mm a",
-    "shortDate": "d-M-yy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20b9",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 2,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 2,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "\u00a4\u00a0-",
-        "negSuf": "",
-        "posPre": "\u00a4\u00a0",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "or-in",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_or.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_or.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_or.js
deleted file mode 100644
index e169682..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_or.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "am",
-      "pm"
-    ],
-    "DAY": [
-      "\u0b30\u0b2c\u0b3f\u0b2c\u0b3e\u0b30",
-      "\u0b38\u0b4b\u0b2e\u0b2c\u0b3e\u0b30",
-      "\u0b2e\u0b19\u0b4d\u0b17\u0b33\u0b2c\u0b3e\u0b30",
-      "\u0b2c\u0b41\u0b27\u0b2c\u0b3e\u0b30",
-      "\u0b17\u0b41\u0b30\u0b41\u0b2c\u0b3e\u0b30",
-      "\u0b36\u0b41\u0b15\u0b4d\u0b30\u0b2c\u0b3e\u0b30",
-      "\u0b36\u0b28\u0b3f\u0b2c\u0b3e\u0b30"
-    ],
-    "MONTH": [
-      "\u0b1c\u0b3e\u0b28\u0b41\u0b06\u0b30\u0b40",
-      "\u0b2b\u0b47\u0b2c\u0b4d\u0b30\u0b41\u0b5f\u0b3e\u0b30\u0b40",
-      "\u0b2e\u0b3e\u0b30\u0b4d\u0b1a\u0b4d\u0b1a",
-      "\u0b05\u0b2a\u0b4d\u0b30\u0b47\u0b32",
-      "\u0b2e\u0b47",
-      "\u0b1c\u0b41\u0b28",
-      "\u0b1c\u0b41\u0b32\u0b3e\u0b07",
-      "\u0b05\u0b17\u0b37\u0b4d\u0b1f",
-      "\u0b38\u0b47\u0b2a\u0b4d\u0b1f\u0b47\u0b2e\u0b4d\u0b2c\u0b30",
-      "\u0b05\u0b15\u0b4d\u0b1f\u0b4b\u0b2c\u0b30",
-      "\u0b28\u0b2d\u0b47\u0b2e\u0b4d\u0b2c\u0b30",
-      "\u0b21\u0b3f\u0b38\u0b47\u0b2e\u0b4d\u0b2c\u0b30"
-    ],
-    "SHORTDAY": [
-      "\u0b30\u0b2c\u0b3f",
-      "\u0b38\u0b4b\u0b2e",
-      "\u0b2e\u0b19\u0b4d\u0b17\u0b33",
-      "\u0b2c\u0b41\u0b27",
-      "\u0b17\u0b41\u0b30\u0b41",
-      "\u0b36\u0b41\u0b15\u0b4d\u0b30",
-      "\u0b36\u0b28\u0b3f"
-    ],
-    "SHORTMONTH": [
-      "\u0b1c\u0b3e\u0b28\u0b41\u0b06\u0b30\u0b40",
-      "\u0b2b\u0b47\u0b2c\u0b4d\u0b30\u0b41\u0b5f\u0b3e\u0b30\u0b40",
-      "\u0b2e\u0b3e\u0b30\u0b4d\u0b1a\u0b4d\u0b1a",
-      "\u0b05\u0b2a\u0b4d\u0b30\u0b47\u0b32",
-      "\u0b2e\u0b47",
-      "\u0b1c\u0b41\u0b28",
-      "\u0b1c\u0b41\u0b32\u0b3e\u0b07",
-      "\u0b05\u0b17\u0b37\u0b4d\u0b1f",
-      "\u0b38\u0b47\u0b2a\u0b4d\u0b1f\u0b47\u0b2e\u0b4d\u0b2c\u0b30",
-      "\u0b05\u0b15\u0b4d\u0b1f\u0b4b\u0b2c\u0b30",
-      "\u0b28\u0b2d\u0b47\u0b2e\u0b4d\u0b2c\u0b30",
-      "\u0b21\u0b3f\u0b38\u0b47\u0b2e\u0b4d\u0b2c\u0b30"
-    ],
-    "fullDate": "EEEE, d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y h:mm:ss a",
-    "mediumDate": "d MMM y",
-    "mediumTime": "h:mm:ss a",
-    "short": "d-M-yy h:mm a",
-    "shortDate": "d-M-yy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20b9",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 2,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 2,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "\u00a4\u00a0-",
-        "negSuf": "",
-        "posPre": "\u00a4\u00a0",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "or",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pl-pl.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pl-pl.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pl-pl.js
deleted file mode 100644
index 23f8678..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pl-pl.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "niedziela",
-      "poniedzia\u0142ek",
-      "wtorek",
-      "\u015broda",
-      "czwartek",
-      "pi\u0105tek",
-      "sobota"
-    ],
-    "MONTH": [
-      "stycznia",
-      "lutego",
-      "marca",
-      "kwietnia",
-      "maja",
-      "czerwca",
-      "lipca",
-      "sierpnia",
-      "wrze\u015bnia",
-      "pa\u017adziernika",
-      "listopada",
-      "grudnia"
-    ],
-    "SHORTDAY": [
-      "niedz.",
-      "pon.",
-      "wt.",
-      "\u015br.",
-      "czw.",
-      "pt.",
-      "sob."
-    ],
-    "SHORTMONTH": [
-      "sty",
-      "lut",
-      "mar",
-      "kwi",
-      "maj",
-      "cze",
-      "lip",
-      "sie",
-      "wrz",
-      "pa\u017a",
-      "lis",
-      "gru"
-    ],
-    "fullDate": "EEEE, d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y HH:mm:ss",
-    "mediumDate": "d MMM y",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd.MM.yyyy HH:mm",
-    "shortDate": "dd.MM.yyyy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "z\u0142",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(",
-        "negSuf": "\u00a0\u00a4)",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "pl-pl",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  if (n == (n | 0) && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) {   return PLURAL_CATEGORY.FEW;  }  if (n != 1 && (n % 10 == 0 || n % 10 == 1) || n == (n | 0) && n % 10 >= 5 && n % 10 <= 9 || n == (n | 0) && n % 100 >= 12 && n % 100 <= 14) {   return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pl.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pl.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pl.js
deleted file mode 100644
index c64b34d..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pl.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "niedziela",
-      "poniedzia\u0142ek",
-      "wtorek",
-      "\u015broda",
-      "czwartek",
-      "pi\u0105tek",
-      "sobota"
-    ],
-    "MONTH": [
-      "stycznia",
-      "lutego",
-      "marca",
-      "kwietnia",
-      "maja",
-      "czerwca",
-      "lipca",
-      "sierpnia",
-      "wrze\u015bnia",
-      "pa\u017adziernika",
-      "listopada",
-      "grudnia"
-    ],
-    "SHORTDAY": [
-      "niedz.",
-      "pon.",
-      "wt.",
-      "\u015br.",
-      "czw.",
-      "pt.",
-      "sob."
-    ],
-    "SHORTMONTH": [
-      "sty",
-      "lut",
-      "mar",
-      "kwi",
-      "maj",
-      "cze",
-      "lip",
-      "sie",
-      "wrz",
-      "pa\u017a",
-      "lis",
-      "gru"
-    ],
-    "fullDate": "EEEE, d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y HH:mm:ss",
-    "mediumDate": "d MMM y",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd.MM.yyyy HH:mm",
-    "shortDate": "dd.MM.yyyy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "z\u0142",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(",
-        "negSuf": "\u00a0\u00a4)",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "pl",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  if (n == (n | 0) && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) {   return PLURAL_CATEGORY.FEW;  }  if (n != 1 && (n % 10 == 0 || n % 10 == 1) || n == (n | 0) && n % 10 >= 5 && n % 10 <= 9 || n == (n | 0) && n % 100 >= 12 && n % 100 <= 14) {   return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-ao.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-ao.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-ao.js
deleted file mode 100644
index e08e21e..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-ao.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "domingo",
-      "segunda-feira",
-      "ter\u00e7a-feira",
-      "quarta-feira",
-      "quinta-feira",
-      "sexta-feira",
-      "s\u00e1bado"
-    ],
-    "MONTH": [
-      "janeiro",
-      "fevereiro",
-      "mar\u00e7o",
-      "abril",
-      "maio",
-      "junho",
-      "julho",
-      "agosto",
-      "setembro",
-      "outubro",
-      "novembro",
-      "dezembro"
-    ],
-    "SHORTDAY": [
-      "dom",
-      "seg",
-      "ter",
-      "qua",
-      "qui",
-      "sex",
-      "s\u00e1b"
-    ],
-    "SHORTMONTH": [
-      "jan",
-      "fev",
-      "mar",
-      "abr",
-      "mai",
-      "jun",
-      "jul",
-      "ago",
-      "set",
-      "out",
-      "nov",
-      "dez"
-    ],
-    "fullDate": "EEEE, d 'de' MMMM 'de' y",
-    "longDate": "d 'de' MMMM 'de' y",
-    "medium": "dd/MM/yyyy HH:mm:ss",
-    "mediumDate": "dd/MM/yyyy",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "R$",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "pt-ao",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-br.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-br.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-br.js
deleted file mode 100644
index 034fe73..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-br.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "domingo",
-      "segunda-feira",
-      "ter\u00e7a-feira",
-      "quarta-feira",
-      "quinta-feira",
-      "sexta-feira",
-      "s\u00e1bado"
-    ],
-    "MONTH": [
-      "janeiro",
-      "fevereiro",
-      "mar\u00e7o",
-      "abril",
-      "maio",
-      "junho",
-      "julho",
-      "agosto",
-      "setembro",
-      "outubro",
-      "novembro",
-      "dezembro"
-    ],
-    "SHORTDAY": [
-      "dom",
-      "seg",
-      "ter",
-      "qua",
-      "qui",
-      "sex",
-      "s\u00e1b"
-    ],
-    "SHORTMONTH": [
-      "jan",
-      "fev",
-      "mar",
-      "abr",
-      "mai",
-      "jun",
-      "jul",
-      "ago",
-      "set",
-      "out",
-      "nov",
-      "dez"
-    ],
-    "fullDate": "EEEE, d 'de' MMMM 'de' y",
-    "longDate": "d 'de' MMMM 'de' y",
-    "medium": "dd/MM/yyyy HH:mm:ss",
-    "mediumDate": "dd/MM/yyyy",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "R$",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "pt-br",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-gw.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-gw.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-gw.js
deleted file mode 100644
index bfbd30c..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-gw.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "domingo",
-      "segunda-feira",
-      "ter\u00e7a-feira",
-      "quarta-feira",
-      "quinta-feira",
-      "sexta-feira",
-      "s\u00e1bado"
-    ],
-    "MONTH": [
-      "janeiro",
-      "fevereiro",
-      "mar\u00e7o",
-      "abril",
-      "maio",
-      "junho",
-      "julho",
-      "agosto",
-      "setembro",
-      "outubro",
-      "novembro",
-      "dezembro"
-    ],
-    "SHORTDAY": [
-      "dom",
-      "seg",
-      "ter",
-      "qua",
-      "qui",
-      "sex",
-      "s\u00e1b"
-    ],
-    "SHORTMONTH": [
-      "jan",
-      "fev",
-      "mar",
-      "abr",
-      "mai",
-      "jun",
-      "jul",
-      "ago",
-      "set",
-      "out",
-      "nov",
-      "dez"
-    ],
-    "fullDate": "EEEE, d 'de' MMMM 'de' y",
-    "longDate": "d 'de' MMMM 'de' y",
-    "medium": "dd/MM/yyyy HH:mm:ss",
-    "mediumDate": "dd/MM/yyyy",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "R$",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "pt-gw",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-mz.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-mz.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-mz.js
deleted file mode 100644
index 35a712a..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-mz.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "domingo",
-      "segunda-feira",
-      "ter\u00e7a-feira",
-      "quarta-feira",
-      "quinta-feira",
-      "sexta-feira",
-      "s\u00e1bado"
-    ],
-    "MONTH": [
-      "janeiro",
-      "fevereiro",
-      "mar\u00e7o",
-      "abril",
-      "maio",
-      "junho",
-      "julho",
-      "agosto",
-      "setembro",
-      "outubro",
-      "novembro",
-      "dezembro"
-    ],
-    "SHORTDAY": [
-      "dom",
-      "seg",
-      "ter",
-      "qua",
-      "qui",
-      "sex",
-      "s\u00e1b"
-    ],
-    "SHORTMONTH": [
-      "jan",
-      "fev",
-      "mar",
-      "abr",
-      "mai",
-      "jun",
-      "jul",
-      "ago",
-      "set",
-      "out",
-      "nov",
-      "dez"
-    ],
-    "fullDate": "EEEE, d 'de' MMMM 'de' y",
-    "longDate": "d 'de' MMMM 'de' y",
-    "medium": "dd/MM/yyyy HH:mm:ss",
-    "mediumDate": "dd/MM/yyyy",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "R$",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "pt-mz",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-pt.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-pt.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-pt.js
deleted file mode 100644
index 75b3192..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-pt.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "a.m.",
-      "p.m."
-    ],
-    "DAY": [
-      "Domingo",
-      "Segunda-feira",
-      "Ter\u00e7a-feira",
-      "Quarta-feira",
-      "Quinta-feira",
-      "Sexta-feira",
-      "S\u00e1bado"
-    ],
-    "MONTH": [
-      "Janeiro",
-      "Fevereiro",
-      "Mar\u00e7o",
-      "Abril",
-      "Maio",
-      "Junho",
-      "Julho",
-      "Agosto",
-      "Setembro",
-      "Outubro",
-      "Novembro",
-      "Dezembro"
-    ],
-    "SHORTDAY": [
-      "dom",
-      "seg",
-      "ter",
-      "qua",
-      "qui",
-      "sex",
-      "s\u00e1b"
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Fev",
-      "Mar",
-      "Abr",
-      "Mai",
-      "Jun",
-      "Jul",
-      "Ago",
-      "Set",
-      "Out",
-      "Nov",
-      "Dez"
-    ],
-    "fullDate": "EEEE, d 'de' MMMM 'de' y",
-    "longDate": "d 'de' MMMM 'de' y",
-    "medium": "dd/MM/yyyy HH:mm:ss",
-    "mediumDate": "dd/MM/yyyy",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "pt-pt",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-st.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-st.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-st.js
deleted file mode 100644
index 728505a..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-st.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "domingo",
-      "segunda-feira",
-      "ter\u00e7a-feira",
-      "quarta-feira",
-      "quinta-feira",
-      "sexta-feira",
-      "s\u00e1bado"
-    ],
-    "MONTH": [
-      "janeiro",
-      "fevereiro",
-      "mar\u00e7o",
-      "abril",
-      "maio",
-      "junho",
-      "julho",
-      "agosto",
-      "setembro",
-      "outubro",
-      "novembro",
-      "dezembro"
-    ],
-    "SHORTDAY": [
-      "dom",
-      "seg",
-      "ter",
-      "qua",
-      "qui",
-      "sex",
-      "s\u00e1b"
-    ],
-    "SHORTMONTH": [
-      "jan",
-      "fev",
-      "mar",
-      "abr",
-      "mai",
-      "jun",
-      "jul",
-      "ago",
-      "set",
-      "out",
-      "nov",
-      "dez"
-    ],
-    "fullDate": "EEEE, d 'de' MMMM 'de' y",
-    "longDate": "d 'de' MMMM 'de' y",
-    "medium": "dd/MM/yyyy HH:mm:ss",
-    "mediumDate": "dd/MM/yyyy",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "R$",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "pt-st",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt.js
deleted file mode 100644
index b9be5cc..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "domingo",
-      "segunda-feira",
-      "ter\u00e7a-feira",
-      "quarta-feira",
-      "quinta-feira",
-      "sexta-feira",
-      "s\u00e1bado"
-    ],
-    "MONTH": [
-      "janeiro",
-      "fevereiro",
-      "mar\u00e7o",
-      "abril",
-      "maio",
-      "junho",
-      "julho",
-      "agosto",
-      "setembro",
-      "outubro",
-      "novembro",
-      "dezembro"
-    ],
-    "SHORTDAY": [
-      "dom",
-      "seg",
-      "ter",
-      "qua",
-      "qui",
-      "sex",
-      "s\u00e1b"
-    ],
-    "SHORTMONTH": [
-      "jan",
-      "fev",
-      "mar",
-      "abr",
-      "mai",
-      "jun",
-      "jul",
-      "ago",
-      "set",
-      "out",
-      "nov",
-      "dez"
-    ],
-    "fullDate": "EEEE, d 'de' MMMM 'de' y",
-    "longDate": "d 'de' MMMM 'de' y",
-    "medium": "dd/MM/yyyy HH:mm:ss",
-    "mediumDate": "dd/MM/yyyy",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "R$",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "pt",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ro-md.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ro-md.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ro-md.js
deleted file mode 100644
index b378da1..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ro-md.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "duminic\u0103",
-      "luni",
-      "mar\u021bi",
-      "miercuri",
-      "joi",
-      "vineri",
-      "s\u00e2mb\u0103t\u0103"
-    ],
-    "MONTH": [
-      "ianuarie",
-      "februarie",
-      "martie",
-      "aprilie",
-      "mai",
-      "iunie",
-      "iulie",
-      "august",
-      "septembrie",
-      "octombrie",
-      "noiembrie",
-      "decembrie"
-    ],
-    "SHORTDAY": [
-      "Du",
-      "Lu",
-      "Ma",
-      "Mi",
-      "Jo",
-      "Vi",
-      "S\u00e2"
-    ],
-    "SHORTMONTH": [
-      "ian.",
-      "feb.",
-      "mar.",
-      "apr.",
-      "mai",
-      "iun.",
-      "iul.",
-      "aug.",
-      "sept.",
-      "oct.",
-      "nov.",
-      "dec."
-    ],
-    "fullDate": "EEEE, d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "dd.MM.yyyy HH:mm:ss",
-    "mediumDate": "dd.MM.yyyy",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd.MM.yyyy HH:mm",
-    "shortDate": "dd.MM.yyyy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "RON",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "ro-md",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  if (n == 0 || n != 1 && n == (n | 0) && n % 100 >= 1 && n % 100 <= 19) {   return PLURAL_CATEGORY.FEW;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ro-ro.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ro-ro.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ro-ro.js
deleted file mode 100644
index 2f9f8cd..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ro-ro.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "duminic\u0103",
-      "luni",
-      "mar\u021bi",
-      "miercuri",
-      "joi",
-      "vineri",
-      "s\u00e2mb\u0103t\u0103"
-    ],
-    "MONTH": [
-      "ianuarie",
-      "februarie",
-      "martie",
-      "aprilie",
-      "mai",
-      "iunie",
-      "iulie",
-      "august",
-      "septembrie",
-      "octombrie",
-      "noiembrie",
-      "decembrie"
-    ],
-    "SHORTDAY": [
-      "Du",
-      "Lu",
-      "Ma",
-      "Mi",
-      "Jo",
-      "Vi",
-      "S\u00e2"
-    ],
-    "SHORTMONTH": [
-      "ian.",
-      "feb.",
-      "mar.",
-      "apr.",
-      "mai",
-      "iun.",
-      "iul.",
-      "aug.",
-      "sept.",
-      "oct.",
-      "nov.",
-      "dec."
-    ],
-    "fullDate": "EEEE, d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "dd.MM.yyyy HH:mm:ss",
-    "mediumDate": "dd.MM.yyyy",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd.MM.yyyy HH:mm",
-    "shortDate": "dd.MM.yyyy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "RON",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "ro-ro",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  if (n == 0 || n != 1 && n == (n | 0) && n % 100 >= 1 && n % 100 <= 19) {   return PLURAL_CATEGORY.FEW;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ro.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ro.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ro.js
deleted file mode 100644
index 18d0876..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ro.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "duminic\u0103",
-      "luni",
-      "mar\u021bi",
-      "miercuri",
-      "joi",
-      "vineri",
-      "s\u00e2mb\u0103t\u0103"
-    ],
-    "MONTH": [
-      "ianuarie",
-      "februarie",
-      "martie",
-      "aprilie",
-      "mai",
-      "iunie",
-      "iulie",
-      "august",
-      "septembrie",
-      "octombrie",
-      "noiembrie",
-      "decembrie"
-    ],
-    "SHORTDAY": [
-      "Du",
-      "Lu",
-      "Ma",
-      "Mi",
-      "Jo",
-      "Vi",
-      "S\u00e2"
-    ],
-    "SHORTMONTH": [
-      "ian.",
-      "feb.",
-      "mar.",
-      "apr.",
-      "mai",
-      "iun.",
-      "iul.",
-      "aug.",
-      "sept.",
-      "oct.",
-      "nov.",
-      "dec."
-    ],
-    "fullDate": "EEEE, d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "dd.MM.yyyy HH:mm:ss",
-    "mediumDate": "dd.MM.yyyy",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd.MM.yyyy HH:mm",
-    "shortDate": "dd.MM.yyyy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "RON",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "ro",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  if (n == 0 || n != 1 && n == (n | 0) && n % 100 >= 1 && n % 100 <= 19) {   return PLURAL_CATEGORY.FEW;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ru-md.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ru-md.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ru-md.js
deleted file mode 100644
index b366ede..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ru-md.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u0434\u043e \u043f\u043e\u043b\u0443\u0434\u043d\u044f",
-      "\u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u043b\u0443\u0434\u043d\u044f"
-    ],
-    "DAY": [
-      "\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435",
-      "\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a",
-      "\u0432\u0442\u043e\u0440\u043d\u0438\u043a",
-      "\u0441\u0440\u0435\u0434\u0430",
-      "\u0447\u0435\u0442\u0432\u0435\u0440\u0433",
-      "\u043f\u044f\u0442\u043d\u0438\u0446\u0430",
-      "\u0441\u0443\u0431\u0431\u043e\u0442\u0430"
-    ],
-    "MONTH": [
-      "\u044f\u043d\u0432\u0430\u0440\u044f",
-      "\u0444\u0435\u0432\u0440\u0430\u043b\u044f",
-      "\u043c\u0430\u0440\u0442\u0430",
-      "\u0430\u043f\u0440\u0435\u043b\u044f",
-      "\u043c\u0430\u044f",
-      "\u0438\u044e\u043d\u044f",
-      "\u0438\u044e\u043b\u044f",
-      "\u0430\u0432\u0433\u0443\u0441\u0442\u0430",
-      "\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f",
-      "\u043e\u043a\u0442\u044f\u0431\u0440\u044f",
-      "\u043d\u043e\u044f\u0431\u0440\u044f",
-      "\u0434\u0435\u043a\u0430\u0431\u0440\u044f"
-    ],
-    "SHORTDAY": [
-      "\u0432\u0441",
-      "\u043f\u043d",
-      "\u0432\u0442",
-      "\u0441\u0440",
-      "\u0447\u0442",
-      "\u043f\u0442",
-      "\u0441\u0431"
-    ],
-    "SHORTMONTH": [
-      "\u044f\u043d\u0432.",
-      "\u0444\u0435\u0432\u0440.",
-      "\u043c\u0430\u0440\u0442\u0430",
-      "\u0430\u043f\u0440.",
-      "\u043c\u0430\u044f",
-      "\u0438\u044e\u043d\u044f",
-      "\u0438\u044e\u043b\u044f",
-      "\u0430\u0432\u0433.",
-      "\u0441\u0435\u043d\u0442.",
-      "\u043e\u043a\u0442.",
-      "\u043d\u043e\u044f\u0431.",
-      "\u0434\u0435\u043a."
-    ],
-    "fullDate": "EEEE, d MMMM y\u00a0'\u0433'.",
-    "longDate": "d MMMM y\u00a0'\u0433'.",
-    "medium": "dd.MM.yyyy H:mm:ss",
-    "mediumDate": "dd.MM.yyyy",
-    "mediumTime": "H:mm:ss",
-    "short": "dd.MM.yy H:mm",
-    "shortDate": "dd.MM.yy",
-    "shortTime": "H:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u0440\u0443\u0431.",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "ru-md",
-  "pluralCat": function (n) {  if (n % 10 == 1 && n % 100 != 11) {   return PLURAL_CATEGORY.ONE;  }  if (n == (n | 0) && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) {   return PLURAL_CATEGORY.FEW;  }  if (n % 10 == 0 || n == (n | 0) && n % 10 >= 5 && n % 10 <= 9 || n == (n | 0) && n % 100 >= 11 && n % 100 <= 14) {   return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ru-ru.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ru-ru.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ru-ru.js
deleted file mode 100644
index e963e93..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ru-ru.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u0434\u043e \u043f\u043e\u043b\u0443\u0434\u043d\u044f",
-      "\u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u043b\u0443\u0434\u043d\u044f"
-    ],
-    "DAY": [
-      "\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435",
-      "\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a",
-      "\u0432\u0442\u043e\u0440\u043d\u0438\u043a",
-      "\u0441\u0440\u0435\u0434\u0430",
-      "\u0447\u0435\u0442\u0432\u0435\u0440\u0433",
-      "\u043f\u044f\u0442\u043d\u0438\u0446\u0430",
-      "\u0441\u0443\u0431\u0431\u043e\u0442\u0430"
-    ],
-    "MONTH": [
-      "\u044f\u043d\u0432\u0430\u0440\u044f",
-      "\u0444\u0435\u0432\u0440\u0430\u043b\u044f",
-      "\u043c\u0430\u0440\u0442\u0430",
-      "\u0430\u043f\u0440\u0435\u043b\u044f",
-      "\u043c\u0430\u044f",
-      "\u0438\u044e\u043d\u044f",
-      "\u0438\u044e\u043b\u044f",
-      "\u0430\u0432\u0433\u0443\u0441\u0442\u0430",
-      "\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f",
-      "\u043e\u043a\u0442\u044f\u0431\u0440\u044f",
-      "\u043d\u043e\u044f\u0431\u0440\u044f",
-      "\u0434\u0435\u043a\u0430\u0431\u0440\u044f"
-    ],
-    "SHORTDAY": [
-      "\u0432\u0441",
-      "\u043f\u043d",
-      "\u0432\u0442",
-      "\u0441\u0440",
-      "\u0447\u0442",
-      "\u043f\u0442",
-      "\u0441\u0431"
-    ],
-    "SHORTMONTH": [
-      "\u044f\u043d\u0432.",
-      "\u0444\u0435\u0432\u0440.",
-      "\u043c\u0430\u0440\u0442\u0430",
-      "\u0430\u043f\u0440.",
-      "\u043c\u0430\u044f",
-      "\u0438\u044e\u043d\u044f",
-      "\u0438\u044e\u043b\u044f",
-      "\u0430\u0432\u0433.",
-      "\u0441\u0435\u043d\u0442.",
-      "\u043e\u043a\u0442.",
-      "\u043d\u043e\u044f\u0431.",
-      "\u0434\u0435\u043a."
-    ],
-    "fullDate": "EEEE, d MMMM y\u00a0'\u0433'.",
-    "longDate": "d MMMM y\u00a0'\u0433'.",
-    "medium": "dd.MM.yyyy H:mm:ss",
-    "mediumDate": "dd.MM.yyyy",
-    "mediumTime": "H:mm:ss",
-    "short": "dd.MM.yy H:mm",
-    "shortDate": "dd.MM.yy",
-    "shortTime": "H:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u0440\u0443\u0431.",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "ru-ru",
-  "pluralCat": function (n) {  if (n % 10 == 1 && n % 100 != 11) {   return PLURAL_CATEGORY.ONE;  }  if (n == (n | 0) && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) {   return PLURAL_CATEGORY.FEW;  }  if (n % 10 == 0 || n == (n | 0) && n % 10 >= 5 && n % 10 <= 9 || n == (n | 0) && n % 100 >= 11 && n % 100 <= 14) {   return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ru-ua.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ru-ua.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ru-ua.js
deleted file mode 100644
index 64a035d..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ru-ua.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u0434\u043e \u043f\u043e\u043b\u0443\u0434\u043d\u044f",
-      "\u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u043b\u0443\u0434\u043d\u044f"
-    ],
-    "DAY": [
-      "\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435",
-      "\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a",
-      "\u0432\u0442\u043e\u0440\u043d\u0438\u043a",
-      "\u0441\u0440\u0435\u0434\u0430",
-      "\u0447\u0435\u0442\u0432\u0435\u0440\u0433",
-      "\u043f\u044f\u0442\u043d\u0438\u0446\u0430",
-      "\u0441\u0443\u0431\u0431\u043e\u0442\u0430"
-    ],
-    "MONTH": [
-      "\u044f\u043d\u0432\u0430\u0440\u044f",
-      "\u0444\u0435\u0432\u0440\u0430\u043b\u044f",
-      "\u043c\u0430\u0440\u0442\u0430",
-      "\u0430\u043f\u0440\u0435\u043b\u044f",
-      "\u043c\u0430\u044f",
-      "\u0438\u044e\u043d\u044f",
-      "\u0438\u044e\u043b\u044f",
-      "\u0430\u0432\u0433\u0443\u0441\u0442\u0430",
-      "\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f",
-      "\u043e\u043a\u0442\u044f\u0431\u0440\u044f",
-      "\u043d\u043e\u044f\u0431\u0440\u044f",
-      "\u0434\u0435\u043a\u0430\u0431\u0440\u044f"
-    ],
-    "SHORTDAY": [
-      "\u0432\u0441",
-      "\u043f\u043d",
-      "\u0432\u0442",
-      "\u0441\u0440",
-      "\u0447\u0442",
-      "\u043f\u0442",
-      "\u0441\u0431"
-    ],
-    "SHORTMONTH": [
-      "\u044f\u043d\u0432.",
-      "\u0444\u0435\u0432\u0440.",
-      "\u043c\u0430\u0440\u0442\u0430",
-      "\u0430\u043f\u0440.",
-      "\u043c\u0430\u044f",
-      "\u0438\u044e\u043d\u044f",
-      "\u0438\u044e\u043b\u044f",
-      "\u0430\u0432\u0433.",
-      "\u0441\u0435\u043d\u0442.",
-      "\u043e\u043a\u0442.",
-      "\u043d\u043e\u044f\u0431.",
-      "\u0434\u0435\u043a."
-    ],
-    "fullDate": "EEEE, d MMMM y\u00a0'\u0433'.",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y HH:mm:ss",
-    "mediumDate": "d MMM y",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd.MM.yy HH:mm",
-    "shortDate": "dd.MM.yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u0440\u0443\u0431.",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "ru-ua",
-  "pluralCat": function (n) {  if (n % 10 == 1 && n % 100 != 11) {   return PLURAL_CATEGORY.ONE;  }  if (n == (n | 0) && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) {   return PLURAL_CATEGORY.FEW;  }  if (n % 10 == 0 || n == (n | 0) && n % 10 >= 5 && n % 10 <= 9 || n == (n | 0) && n % 100 >= 11 && n % 100 <= 14) {   return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ru.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ru.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ru.js
deleted file mode 100644
index ac00c61..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ru.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u0434\u043e \u043f\u043e\u043b\u0443\u0434\u043d\u044f",
-      "\u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u043b\u0443\u0434\u043d\u044f"
-    ],
-    "DAY": [
-      "\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435",
-      "\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a",
-      "\u0432\u0442\u043e\u0440\u043d\u0438\u043a",
-      "\u0441\u0440\u0435\u0434\u0430",
-      "\u0447\u0435\u0442\u0432\u0435\u0440\u0433",
-      "\u043f\u044f\u0442\u043d\u0438\u0446\u0430",
-      "\u0441\u0443\u0431\u0431\u043e\u0442\u0430"
-    ],
-    "MONTH": [
-      "\u044f\u043d\u0432\u0430\u0440\u044f",
-      "\u0444\u0435\u0432\u0440\u0430\u043b\u044f",
-      "\u043c\u0430\u0440\u0442\u0430",
-      "\u0430\u043f\u0440\u0435\u043b\u044f",
-      "\u043c\u0430\u044f",
-      "\u0438\u044e\u043d\u044f",
-      "\u0438\u044e\u043b\u044f",
-      "\u0430\u0432\u0433\u0443\u0441\u0442\u0430",
-      "\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f",
-      "\u043e\u043a\u0442\u044f\u0431\u0440\u044f",
-      "\u043d\u043e\u044f\u0431\u0440\u044f",
-      "\u0434\u0435\u043a\u0430\u0431\u0440\u044f"
-    ],
-    "SHORTDAY": [
-      "\u0432\u0441",
-      "\u043f\u043d",
-      "\u0432\u0442",
-      "\u0441\u0440",
-      "\u0447\u0442",
-      "\u043f\u0442",
-      "\u0441\u0431"
-    ],
-    "SHORTMONTH": [
-      "\u044f\u043d\u0432.",
-      "\u0444\u0435\u0432\u0440.",
-      "\u043c\u0430\u0440\u0442\u0430",
-      "\u0430\u043f\u0440.",
-      "\u043c\u0430\u044f",
-      "\u0438\u044e\u043d\u044f",
-      "\u0438\u044e\u043b\u044f",
-      "\u0430\u0432\u0433.",
-      "\u0441\u0435\u043d\u0442.",
-      "\u043e\u043a\u0442.",
-      "\u043d\u043e\u044f\u0431.",
-      "\u0434\u0435\u043a."
-    ],
-    "fullDate": "EEEE, d MMMM y\u00a0'\u0433'.",
-    "longDate": "d MMMM y\u00a0'\u0433'.",
-    "medium": "dd.MM.yyyy H:mm:ss",
-    "mediumDate": "dd.MM.yyyy",
-    "mediumTime": "H:mm:ss",
-    "short": "dd.MM.yy H:mm",
-    "shortDate": "dd.MM.yy",
-    "shortTime": "H:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u0440\u0443\u0431.",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "ru",
-  "pluralCat": function (n) {  if (n % 10 == 1 && n % 100 != 11) {   return PLURAL_CATEGORY.ONE;  }  if (n == (n | 0) && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) {   return PLURAL_CATEGORY.FEW;  }  if (n % 10 == 0 || n == (n | 0) && n % 10 >= 5 && n % 10 <= 9 || n == (n | 0) && n % 100 >= 11 && n % 100 <= 14) {   return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sk-sk.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sk-sk.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sk-sk.js
deleted file mode 100644
index 39b8dff..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sk-sk.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "dopoludnia",
-      "popoludn\u00ed"
-    ],
-    "DAY": [
-      "nede\u013ea",
-      "pondelok",
-      "utorok",
-      "streda",
-      "\u0161tvrtok",
-      "piatok",
-      "sobota"
-    ],
-    "MONTH": [
-      "janu\u00e1ra",
-      "febru\u00e1ra",
-      "marca",
-      "apr\u00edla",
-      "m\u00e1ja",
-      "j\u00fana",
-      "j\u00fala",
-      "augusta",
-      "septembra",
-      "okt\u00f3bra",
-      "novembra",
-      "decembra"
-    ],
-    "SHORTDAY": [
-      "ne",
-      "po",
-      "ut",
-      "st",
-      "\u0161t",
-      "pi",
-      "so"
-    ],
-    "SHORTMONTH": [
-      "jan",
-      "feb",
-      "mar",
-      "apr",
-      "m\u00e1j",
-      "j\u00fan",
-      "j\u00fal",
-      "aug",
-      "sep",
-      "okt",
-      "nov",
-      "dec"
-    ],
-    "fullDate": "EEEE, d. MMMM y",
-    "longDate": "d. MMMM y",
-    "medium": "d.M.yyyy H:mm:ss",
-    "mediumDate": "d.M.yyyy",
-    "mediumTime": "H:mm:ss",
-    "short": "d.M.yyyy H:mm",
-    "shortDate": "d.M.yyyy",
-    "shortTime": "H:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "sk-sk",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  if (n == (n | 0) && n >= 2 && n <= 4) {   return PLURAL_CATEGORY.FEW;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sk.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sk.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sk.js
deleted file mode 100644
index a68e083..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sk.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "dopoludnia",
-      "popoludn\u00ed"
-    ],
-    "DAY": [
-      "nede\u013ea",
-      "pondelok",
-      "utorok",
-      "streda",
-      "\u0161tvrtok",
-      "piatok",
-      "sobota"
-    ],
-    "MONTH": [
-      "janu\u00e1ra",
-      "febru\u00e1ra",
-      "marca",
-      "apr\u00edla",
-      "m\u00e1ja",
-      "j\u00fana",
-      "j\u00fala",
-      "augusta",
-      "septembra",
-      "okt\u00f3bra",
-      "novembra",
-      "decembra"
-    ],
-    "SHORTDAY": [
-      "ne",
-      "po",
-      "ut",
-      "st",
-      "\u0161t",
-      "pi",
-      "so"
-    ],
-    "SHORTMONTH": [
-      "jan",
-      "feb",
-      "mar",
-      "apr",
-      "m\u00e1j",
-      "j\u00fan",
-      "j\u00fal",
-      "aug",
-      "sep",
-      "okt",
-      "nov",
-      "dec"
-    ],
-    "fullDate": "EEEE, d. MMMM y",
-    "longDate": "d. MMMM y",
-    "medium": "d.M.yyyy H:mm:ss",
-    "mediumDate": "d.M.yyyy",
-    "mediumTime": "H:mm:ss",
-    "short": "d.M.yyyy H:mm",
-    "shortDate": "d.M.yyyy",
-    "shortTime": "H:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "sk",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  if (n == (n | 0) && n >= 2 && n <= 4) {   return PLURAL_CATEGORY.FEW;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sl-si.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sl-si.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sl-si.js
deleted file mode 100644
index af7e854..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sl-si.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "dop.",
-      "pop."
-    ],
-    "DAY": [
-      "nedelja",
-      "ponedeljek",
-      "torek",
-      "sreda",
-      "\u010detrtek",
-      "petek",
-      "sobota"
-    ],
-    "MONTH": [
-      "januar",
-      "februar",
-      "marec",
-      "april",
-      "maj",
-      "junij",
-      "julij",
-      "avgust",
-      "september",
-      "oktober",
-      "november",
-      "december"
-    ],
-    "SHORTDAY": [
-      "ned.",
-      "pon.",
-      "tor.",
-      "sre.",
-      "\u010det.",
-      "pet.",
-      "sob."
-    ],
-    "SHORTMONTH": [
-      "jan.",
-      "feb.",
-      "mar.",
-      "apr.",
-      "maj",
-      "jun.",
-      "jul.",
-      "avg.",
-      "sep.",
-      "okt.",
-      "nov.",
-      "dec."
-    ],
-    "fullDate": "EEEE, dd. MMMM y",
-    "longDate": "dd. MMMM y",
-    "medium": "d. MMM yyyy HH:mm:ss",
-    "mediumDate": "d. MMM yyyy",
-    "mediumTime": "HH:mm:ss",
-    "short": "d. MM. yy HH:mm",
-    "shortDate": "d. MM. yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "sl-si",
-  "pluralCat": function (n) {  if (n % 100 == 1) {   return PLURAL_CATEGORY.ONE;  }  if (n % 100 == 2) {   return PLURAL_CATEGORY.TWO;  }  if (n % 100 == 3 || n % 100 == 4) {   return PLURAL_CATEGORY.FEW;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sl.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sl.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sl.js
deleted file mode 100644
index 7d6c02a..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sl.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "dop.",
-      "pop."
-    ],
-    "DAY": [
-      "nedelja",
-      "ponedeljek",
-      "torek",
-      "sreda",
-      "\u010detrtek",
-      "petek",
-      "sobota"
-    ],
-    "MONTH": [
-      "januar",
-      "februar",
-      "marec",
-      "april",
-      "maj",
-      "junij",
-      "julij",
-      "avgust",
-      "september",
-      "oktober",
-      "november",
-      "december"
-    ],
-    "SHORTDAY": [
-      "ned.",
-      "pon.",
-      "tor.",
-      "sre.",
-      "\u010det.",
-      "pet.",
-      "sob."
-    ],
-    "SHORTMONTH": [
-      "jan.",
-      "feb.",
-      "mar.",
-      "apr.",
-      "maj",
-      "jun.",
-      "jul.",
-      "avg.",
-      "sep.",
-      "okt.",
-      "nov.",
-      "dec."
-    ],
-    "fullDate": "EEEE, dd. MMMM y",
-    "longDate": "dd. MMMM y",
-    "medium": "d. MMM yyyy HH:mm:ss",
-    "mediumDate": "d. MMM yyyy",
-    "mediumTime": "HH:mm:ss",
-    "short": "d. MM. yy HH:mm",
-    "shortDate": "d. MM. yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "sl",
-  "pluralCat": function (n) {  if (n % 100 == 1) {   return PLURAL_CATEGORY.ONE;  }  if (n % 100 == 2) {   return PLURAL_CATEGORY.TWO;  }  if (n % 100 == 3 || n % 100 == 4) {   return PLURAL_CATEGORY.FEW;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sq-al.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sq-al.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sq-al.js
deleted file mode 100644
index 2aa93e9..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sq-al.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "PD",
-      "MD"
-    ],
-    "DAY": [
-      "e diel",
-      "e h\u00ebn\u00eb",
-      "e mart\u00eb",
-      "e m\u00ebrkur\u00eb",
-      "e enjte",
-      "e premte",
-      "e shtun\u00eb"
-    ],
-    "MONTH": [
-      "janar",
-      "shkurt",
-      "mars",
-      "prill",
-      "maj",
-      "qershor",
-      "korrik",
-      "gusht",
-      "shtator",
-      "tetor",
-      "n\u00ebntor",
-      "dhjetor"
-    ],
-    "SHORTDAY": [
-      "Die",
-      "H\u00ebn",
-      "Mar",
-      "M\u00ebr",
-      "Enj",
-      "Pre",
-      "Sht"
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Shk",
-      "Mar",
-      "Pri",
-      "Maj",
-      "Qer",
-      "Kor",
-      "Gsh",
-      "Sht",
-      "Tet",
-      "N\u00ebn",
-      "Dhj"
-    ],
-    "fullDate": "EEEE, dd MMMM y",
-    "longDate": "dd MMMM y",
-    "medium": "yyyy-MM-dd h.mm.ss.a",
-    "mediumDate": "yyyy-MM-dd",
-    "mediumTime": "h.mm.ss.a",
-    "short": "yy-MM-dd h.mm.a",
-    "shortDate": "yy-MM-dd",
-    "shortTime": "h.mm.a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "Lek",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "\u00a4-",
-        "negSuf": "",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "sq-al",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sq.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sq.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sq.js
deleted file mode 100644
index 0603e11..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sq.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "PD",
-      "MD"
-    ],
-    "DAY": [
-      "e diel",
-      "e h\u00ebn\u00eb",
-      "e mart\u00eb",
-      "e m\u00ebrkur\u00eb",
-      "e enjte",
-      "e premte",
-      "e shtun\u00eb"
-    ],
-    "MONTH": [
-      "janar",
-      "shkurt",
-      "mars",
-      "prill",
-      "maj",
-      "qershor",
-      "korrik",
-      "gusht",
-      "shtator",
-      "tetor",
-      "n\u00ebntor",
-      "dhjetor"
-    ],
-    "SHORTDAY": [
-      "Die",
-      "H\u00ebn",
-      "Mar",
-      "M\u00ebr",
-      "Enj",
-      "Pre",
-      "Sht"
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Shk",
-      "Mar",
-      "Pri",
-      "Maj",
-      "Qer",
-      "Kor",
-      "Gsh",
-      "Sht",
-      "Tet",
-      "N\u00ebn",
-      "Dhj"
-    ],
-    "fullDate": "EEEE, dd MMMM y",
-    "longDate": "dd MMMM y",
-    "medium": "yyyy-MM-dd h.mm.ss.a",
-    "mediumDate": "yyyy-MM-dd",
-    "mediumTime": "h.mm.ss.a",
-    "short": "yy-MM-dd h.mm.a",
-    "shortDate": "yy-MM-dd",
-    "shortTime": "h.mm.a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "Lek",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "\u00a4-",
-        "negSuf": "",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "sq",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-cyrl-ba.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-cyrl-ba.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-cyrl-ba.js
deleted file mode 100644
index 9f9cf3c..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-cyrl-ba.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u043f\u0440\u0435 \u043f\u043e\u0434\u043d\u0435",
-      "\u043f\u043e\u043f\u043e\u0434\u043d\u0435"
-    ],
-    "DAY": [
-      "\u043d\u0435\u0434\u0435\u0459\u0430",
-      "\u043f\u043e\u043d\u0435\u0434\u0435\u0459\u0430\u043a",
-      "\u0443\u0442\u043e\u0440\u0430\u043a",
-      "\u0441\u0440\u0438\u0458\u0435\u0434\u0430",
-      "\u0447\u0435\u0442\u0432\u0440\u0442\u0430\u043a",
-      "\u043f\u0435\u0442\u0430\u043a",
-      "\u0441\u0443\u0431\u043e\u0442\u0430"
-    ],
-    "MONTH": [
-      "\u0458\u0430\u043d\u0443\u0430\u0440",
-      "\u0444\u0435\u0431\u0440\u0443\u0430\u0440",
-      "\u043c\u0430\u0440\u0442",
-      "\u0430\u043f\u0440\u0438\u043b",
-      "\u043c\u0430\u0458",
-      "\u0458\u0443\u043d\u0438",
-      "\u0458\u0443\u043b\u0438",
-      "\u0430\u0432\u0433\u0443\u0441\u0442",
-      "\u0441\u0435\u043f\u0442\u0435\u043c\u0431\u0430\u0440",
-      "\u043e\u043a\u0442\u043e\u0431\u0430\u0440",
-      "\u043d\u043e\u0432\u0435\u043c\u0431\u0430\u0440",
-      "\u0434\u0435\u0446\u0435\u043c\u0431\u0430\u0440"
-    ],
-    "SHORTDAY": [
-      "\u043d\u0435\u0434",
-      "\u043f\u043e\u043d",
-      "\u0443\u0442\u043e",
-      "\u0441\u0440\u0438",
-      "\u0447\u0435\u0442",
-      "\u043f\u0435\u0442",
-      "\u0441\u0443\u0431"
-    ],
-    "SHORTMONTH": [
-      "\u0458\u0430\u043d",
-      "\u0444\u0435\u0431",
-      "\u043c\u0430\u0440",
-      "\u0430\u043f\u0440",
-      "\u043c\u0430\u0458",
-      "\u0458\u0443\u043d",
-      "\u0458\u0443\u043b",
-      "\u0430\u0432\u0433",
-      "\u0441\u0435\u043f",
-      "\u043e\u043a\u0442",
-      "\u043d\u043e\u0432",
-      "\u0434\u0435\u0446"
-    ],
-    "fullDate": "EEEE, dd. MMMM y.",
-    "longDate": "dd. MMMM y.",
-    "medium": "yyyy-MM-dd HH:mm:ss",
-    "mediumDate": "yyyy-MM-dd",
-    "mediumTime": "HH:mm:ss",
-    "short": "yy-MM-dd HH:mm",
-    "shortDate": "yy-MM-dd",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "din",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "sr-cyrl-ba",
-  "pluralCat": function (n) {  if (n % 10 == 1 && n % 100 != 11) {   return PLURAL_CATEGORY.ONE;  }  if (n == (n | 0) && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) {   return PLURAL_CATEGORY.FEW;  }  if (n % 10 == 0 || n == (n | 0) && n % 10 >= 5 && n % 10 <= 9 || n == (n | 0) && n % 100 >= 11 && n % 100 <= 14) {   return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file


[49/71] [abbrv] brooklyn-ui git commit: support for multi-item catalog yaml

Posted by he...@apache.org.
support for multi-item catalog yaml

adds many tests, and the rest of the features - template and policy and location; and source yaml.

also a few significant REST API changes:
* /v1/catalog/create API change returns a map (breaking)
* catalog items include more information for entity and policies


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/commit/7eff2068
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/tree/7eff2068
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/diff/7eff2068

Branch: refs/heads/0.7.0-incubating
Commit: 7eff2068729bb66bbe559b22e151b0846c786a14
Parents: bca850e
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Fri Apr 3 13:29:28 2015 -0400
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Thu Apr 16 01:25:39 2015 -0500

----------------------------------------------------------------------
 .../src/main/webapp/assets/js/view/catalog.js   | 57 ++++++++++++--------
 .../assets/tpl/catalog/add-catalog-entry.html   |  4 +-
 .../webapp/assets/tpl/catalog/add-entity.html   | 30 -----------
 .../webapp/assets/tpl/catalog/add-yaml.html     | 30 +++++++++++
 4 files changed, 68 insertions(+), 53 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/7eff2068/usage/jsgui/src/main/webapp/assets/js/view/catalog.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/js/view/catalog.js b/usage/jsgui/src/main/webapp/assets/js/view/catalog.js
index 6f75136..68b3c6f 100644
--- a/usage/jsgui/src/main/webapp/assets/js/view/catalog.js
+++ b/usage/jsgui/src/main/webapp/assets/js/view/catalog.js
@@ -24,7 +24,7 @@ define([
     "text!tpl/catalog/details-generic.html",
     "text!tpl/catalog/details-location.html",
     "text!tpl/catalog/add-catalog-entry.html",
-    "text!tpl/catalog/add-entity.html",
+    "text!tpl/catalog/add-yaml.html",
     "text!tpl/catalog/add-location.html",
     "text!tpl/catalog/nav-entry.html",
 
@@ -32,7 +32,7 @@ define([
 ], function(_, $, Backbone, Brooklyn,
         Location, Entity,
         CatalogPageHtml, DetailsEntityHtml, DetailsGenericHtml, LocationDetailsHtml,
-        AddCatalogEntryHtml, AddEntityHtml, AddLocationHtml, EntryHtml) {
+        AddCatalogEntryHtml, AddYamlHtml, AddLocationHtml, EntryHtml) {
 
     // Holds the currently active details type, e.g. applications, policies. Bit of a workaround
     // to share the active view with all instances of AccordionItemView, so clicking the 'reload
@@ -130,15 +130,21 @@ define([
         render: function (initialView) {
             this.$el.html(this.template());
             if (initialView) {
+                if (initialView == "entity") initialView = "yaml";
+                
                 this.$("[data-context='"+initialView+"']").addClass("active");
                 this.showFormForType(initialView)
             }
             return this;
         },
+        clearWithHtml: function(template) {
+            if (this.contextView) this.contextView.close();
+            this.context = undefined;
+            this.$(".btn").removeClass("active");
+            this.$("#catalog-add-form").html(template);
+        },
         beforeClose: function () {
-            if (this.contextView) {
-                this.contextView.close();
-            }
+            if (this.contextView) this.contextView.close();
         },
         showContext: function(event) {
             var $event = $(event.currentTarget);
@@ -152,13 +158,13 @@ define([
         },
         showFormForType: function (type) {
             this.context = type;
-            if (type == "entity") {
-                this.contextView = newEntityForm(this.options.parent);
+            if (type == "yaml" || type == "entity") {
+                this.contextView = newYamlForm(this, this.options.parent);
             } else if (type == "location") {
-                this.contextView = newLocationForm(this.options.parent);
+                this.contextView = newLocationForm(this, this.options.parent);
             } else if (type !== undefined) {
                 console.log("unknown catalog type " + type);
-                this.showFormForType("entity");
+                this.showFormForType("yaml");
                 return;
             }
             Backbone.history.navigate("/v1/catalog/new/" + type);
@@ -166,11 +172,10 @@ define([
         }
     });
 
-    function newEntityForm(parent) {
+    function newYamlForm(addView, addViewParent) {
         return new Brooklyn.view.Form({
-            template: _.template(AddEntityHtml),
+            template: _.template(AddYamlHtml),
             onSubmit: function (model) {
-                console.log("Submit entity", model.get("yaml"));
                 var submitButton = this.$(".catalog-submit-button");
                 // "loading" is an indicator to Bootstrap, not a string to display
                 submitButton.button("loading");
@@ -185,9 +190,13 @@ define([
                     .done(function (data, status, xhr) {
                         // Can extract location of new item with:
                         //model.url = Brooklyn.util.pathOf(xhr.getResponseHeader("Location"));
-                        self.close();  // one of the calls below should draw a different view
-                        parent.loadAccordionItem("entities", data.id);
-                        parent.loadAccordionItem("applications", data.id);
+                        if (_.size(data)==0) {
+                          addView.clearWithHtml( "No items supplied." );
+                        } else {
+                          addView.clearWithHtml( "Added: "+_.escape(_.keys(data).join(", ")) 
+                            + (_.size(data)==1 ? ". Loading..." : "") );
+                          addViewParent.loadAnyAccordionItem(_.size(data)==1 ? _.keys(data)[0] : undefined);
+                        }
                     })
                     .fail(function (xhr, status, error) {
                         submitButton.button("reset");
@@ -201,7 +210,7 @@ define([
     }
 
     // Could adapt to edit existing locations too.
-    function newLocationForm(parent) {
+    function newLocationForm(addView, addViewParent) {
         // Renders with config key list
         var body = new (Backbone.View.extend({
             beforeClose: function() {
@@ -235,10 +244,9 @@ define([
                 submitButton.button("loading");
                 location.set("config", configKeys);
                 location.save()
-                    .done(function (newModel) {
-                        newModel = new Location.Model(newModel);
-                        self.close();  // the call below should draw a different view
-                        parent.loadAccordionItem("locations", newModel.id);
+                    .done(function (data) {
+                        addView.clearWithHtml( "Added: "+data.id+". Loading..." ); 
+                        addViewParent.loadAccordionItem("locations", data.id);
                     })
                     .fail(function (response) {
                         submitButton.button("reset");
@@ -264,7 +272,7 @@ define([
             this.model = model;
         },
         url: function() {
-            return "/v1/catalog/" + this.name;
+            return "/v1/catalog/" + this.name+"?allVersions=true";
         }
     });
 
@@ -509,6 +517,13 @@ define([
             this.setDetailsView(newView);
         },
 
+        loadAnyAccordionItem: function (id) {
+            this.loadAccordionItem("entities", id);
+            this.loadAccordionItem("applications", id);
+            this.loadAccordionItem("policies", id);
+            this.loadAccordionItem("locations", id);
+        },
+
         loadAccordionItem: function (kind, id) {
             if (!this.accordion[kind]) {
                 console.error("No accordion for: " + kind);

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/7eff2068/usage/jsgui/src/main/webapp/assets/tpl/catalog/add-catalog-entry.html
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/tpl/catalog/add-catalog-entry.html b/usage/jsgui/src/main/webapp/assets/tpl/catalog/add-catalog-entry.html
index 6bd8c00..238dd77 100644
--- a/usage/jsgui/src/main/webapp/assets/tpl/catalog/add-catalog-entry.html
+++ b/usage/jsgui/src/main/webapp/assets/tpl/catalog/add-catalog-entry.html
@@ -18,11 +18,11 @@ under the License.
 -->
 <div class="catalog-details">
 
-    <h2>Add a new...</h2>
+    <h2>Add to Catalog</h2>
     <br/>
 
     <div data-toggle="buttons-radio">
-        <button class="btn btn-large show-context" data-context="entity">Entity</button>
+        <button class="btn btn-large show-context" data-context="yaml">YAML</button>
         <button class="btn btn-large show-context" data-context="location">Location</button>
     </div>
 

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/7eff2068/usage/jsgui/src/main/webapp/assets/tpl/catalog/add-entity.html
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/tpl/catalog/add-entity.html b/usage/jsgui/src/main/webapp/assets/tpl/catalog/add-entity.html
deleted file mode 100644
index 9c64e90..0000000
--- a/usage/jsgui/src/main/webapp/assets/tpl/catalog/add-entity.html
+++ /dev/null
@@ -1,30 +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.
--->
-<form>
-    <label for="new-blueprint">Enter blueprint:</label>
-    <textarea id='new-blueprint' name='yaml' rows='5' cols='15'></textarea>
-
-    <button class='catalog-submit-button btn' data-loading-text='Saving...'>Submit</button>
-    <p class="catalog-save-error hide">
-        <span class="alert-error">
-            <strong>Error:</strong><br/>
-            <span class="catalog-error-message"></span>
-        </span>
-    </p>
-</form>

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/7eff2068/usage/jsgui/src/main/webapp/assets/tpl/catalog/add-yaml.html
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/tpl/catalog/add-yaml.html b/usage/jsgui/src/main/webapp/assets/tpl/catalog/add-yaml.html
new file mode 100644
index 0000000..9c64e90
--- /dev/null
+++ b/usage/jsgui/src/main/webapp/assets/tpl/catalog/add-yaml.html
@@ -0,0 +1,30 @@
+<!--
+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.
+-->
+<form>
+    <label for="new-blueprint">Enter blueprint:</label>
+    <textarea id='new-blueprint' name='yaml' rows='5' cols='15'></textarea>
+
+    <button class='catalog-submit-button btn' data-loading-text='Saving...'>Submit</button>
+    <p class="catalog-save-error hide">
+        <span class="alert-error">
+            <strong>Error:</strong><br/>
+            <span class="catalog-error-message"></span>
+        </span>
+    </p>
+</form>


[17/71] [abbrv] brooklyn-ui git commit: Move mobile app to sandbox

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular.min.js.map
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular.min.js.map b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular.min.js.map
deleted file mode 100644
index 381d6de..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular.min.js.map
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-"version":3,
-"file":"angular.min.js",
-"lineCount":213,
-"mappings":"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

<TRUNCATED>

[51/71] [abbrv] brooklyn-ui git commit: Different LICENSE/NOTICE for usage/jsgui

Posted by he...@apache.org.
Different LICENSE/NOTICE for usage/jsgui


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/commit/a7629bf0
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/tree/a7629bf0
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/diff/a7629bf0

Branch: refs/heads/0.7.0-incubating
Commit: a7629bf096c302ff3f3ff4f01f01f6be918b2c3c
Parents: 4e043b3
Author: Richard Downer <ri...@apache.org>
Authored: Thu Apr 16 14:24:41 2015 +0100
Committer: Richard Downer <ri...@apache.org>
Committed: Thu Apr 16 16:01:01 2015 +0100

----------------------------------------------------------------------
 usage/jsgui/pom.xml                  |  33 ++++
 usage/jsgui/src/main/license/LICENSE | 292 ++++++++++++++++++++++++++++++
 usage/jsgui/src/main/license/NOTICE  |   5 +
 usage/jsgui/src/main/webapp/LICENSE  | 176 ------------------
 usage/jsgui/src/test/license/LICENSE | 175 ++++++++++++++++++
 usage/jsgui/src/test/license/NOTICE  |   5 +
 6 files changed, 510 insertions(+), 176 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/a7629bf0/usage/jsgui/pom.xml
----------------------------------------------------------------------
diff --git a/usage/jsgui/pom.xml b/usage/jsgui/pom.xml
index 20e760e..9ffdef0 100644
--- a/usage/jsgui/pom.xml
+++ b/usage/jsgui/pom.xml
@@ -146,6 +146,16 @@
                 <targetPath>${project.build.directory}/jasmine/fixtures</targetPath>
             </resource>
         </resources>
+        <!-- Insert special LICENSE/NOTICE into the <test-jar>/META-INF folder -->
+        <testResources>
+            <testResource>
+                <directory>${project.basedir}/src/test/resources</directory>
+            </testResource>
+            <testResource>
+                <targetPath>META-INF</targetPath>
+                <directory>${basedir}/src/test/license</directory>
+            </testResource>
+        </testResources>
         <plugins>
             <!--
                  run js tests with: $ mvn clean process-resources jasmine:test
@@ -220,8 +230,31 @@
                 <version>${maven-war-plugin.version}</version>
                 <configuration>
                     <useCache>true</useCache> <!-- to prevent replaced files being overwritten -->
+                    <!-- Insert special LICENSE/NOTICE into the <war>/META-INF folder -->
+                    <webResources>
+                        <webResource>
+                            <targetPath>META-INF</targetPath>
+                            <directory>${basedir}/src/main/license</directory>
+                        </webResource>
+                    </webResources>
                 </configuration>
             </plugin>
+            <!-- Disable the automatic LICENSE/NOTICE placement from the upstream pom, because we need to include
+                 bundled dependencies. See "webResources" section above for where we include the new LICENSE/NOTICE -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-remote-resources-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>process</goal>
+                        </goals>
+                        <configuration>
+                            <skip>true</skip>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
         </plugins>
 
         <pluginManagement>

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/a7629bf0/usage/jsgui/src/main/license/LICENSE
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/license/LICENSE b/usage/jsgui/src/main/license/LICENSE
new file mode 100644
index 0000000..d9f5bc7
--- /dev/null
+++ b/usage/jsgui/src/main/license/LICENSE
@@ -0,0 +1,292 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+
+
+---------------------------------------------------
+
+This distribution contains third party resources.
+
+This product includes software developed at The jQuery Foundation (http://jquery.org/):
+jquery.js, selected jquery*.js.
+Copyright (c) John Resig (2011).
+Licensed under the MIT license (see below).
+
+This product includes software developed at The Dojo Foundation (http://dojofoundation.org/):
+require.js, text.js, sizzle.js in jquery.js.
+Copyright (c) The Dojo Foundation (2011, 2012).
+Licensed under the MIT license (see below).
+
+This product includes software developed at DocumentCloud Inc (http://www.documentcloud.org/):
+backbone.js, underscore.js.
+Copyright (c) Jeremy Ashkenas, DocumentCloud Inc (2010-2013).
+Licensed under the MIT license (see below).
+
+This product includes software developed by Miller Medeiros (https://github.com/millermedeiros/):
+async.js.
+Copyright (c) Miller Medeiros (2011).
+Licensed under the MIT license (see below).
+
+This product includes software developed by Yehuda Katz (https://github.com/wycats/):
+handlebars*.js.
+Copyright (c) Yehuda Katz (2012).
+Licensed under the MIT license (see below).
+
+This product includes software developed by "Cowboy" Ben Alman (http://benalman.com/).
+jquery.ba-bbq*.js
+Copyright (c) "Cowboy" Ben Alman (2010).
+Licensed under the MIT license (see below).
+
+This product includes software developed by WonderGroup and Jordan Thomas (http://labs.wondergroup.com/demos/mini-ui/index.html):
+jquery.wiggle.js.
+Copyright (c) WonderGroup and Jordan Thomas (2010).
+Licensed under the MIT license (see below).
+
+This product includes software developed by Tim Wood (http://momentjs.com):
+moment.js
+Copyright (c) Tim Wood, Iskren Chernev, Moment.js contributors (2011-2014).
+Licensed under the MIT license (see below).
+
+This product includes software developed by ZeroClipboard contributors (https://github.com/zeroclipboard):
+ZeroClipboard.js
+Copyright (c) Jon Rohan, James M. Greene (2014).
+Licensed under the MIT license (see below).
+
+This product includes software developed at SpryMedia Ltd (http://sprymedia.co.uk/):
+jquery.dataTables.js, dataTables.extensions.js
+Copyright (c) Allan Jardine (2008-2012).
+Licensed under the New BSD license (see below).
+
+This product includes software developed by js-uri contributors (https://code.google.com/js-uri):
+URI.js.
+Copyright (c) js-uri contributors (2013).
+Licensed under the New BSD license (see below).
+
+This product includes software developed by Vitaly Puzrin (https://github.com/nodeca/):
+js-yaml.js
+Copyright (c) Vitaly Puzrin (2011-2015).
+Licensed under the MIT license (see below).
+
+
+
+The MIT License ("MIT")
+
+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.
+
+
+
+The BSD 3-Clause License ("New BSD")
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, 
+this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice, 
+this list of conditions and the following disclaimer in the documentation 
+and/or other materials provided with the distribution.
+
+3. Neither the name of the copyright holder nor the names of its contributors 
+may be used to endorse or promote products derived from this software without 
+specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
+NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
+POSSIBILITY OF SUCH DAMAGE.

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/a7629bf0/usage/jsgui/src/main/license/NOTICE
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/license/NOTICE b/usage/jsgui/src/main/license/NOTICE
new file mode 100644
index 0000000..f790f13
--- /dev/null
+++ b/usage/jsgui/src/main/license/NOTICE
@@ -0,0 +1,5 @@
+Apache Brooklyn
+Copyright 2014-2015 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/a7629bf0/usage/jsgui/src/main/webapp/LICENSE
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/LICENSE b/usage/jsgui/src/main/webapp/LICENSE
deleted file mode 100644
index e885a7b..0000000
--- a/usage/jsgui/src/main/webapp/LICENSE
+++ /dev/null
@@ -1,176 +0,0 @@
-Apache License
-
-Version 2.0, January 2004
-
-http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/a7629bf0/usage/jsgui/src/test/license/LICENSE
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/test/license/LICENSE b/usage/jsgui/src/test/license/LICENSE
new file mode 100644
index 0000000..67db858
--- /dev/null
+++ b/usage/jsgui/src/test/license/LICENSE
@@ -0,0 +1,175 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/a7629bf0/usage/jsgui/src/test/license/NOTICE
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/test/license/NOTICE b/usage/jsgui/src/test/license/NOTICE
new file mode 100644
index 0000000..f790f13
--- /dev/null
+++ b/usage/jsgui/src/test/license/NOTICE
@@ -0,0 +1,5 @@
+Apache Brooklyn
+Copyright 2014-2015 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).


[21/71] [abbrv] brooklyn-ui git commit: Move mobile app to sandbox

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-scenario.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-scenario.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-scenario.js
deleted file mode 100644
index bcb0295..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-scenario.js
+++ /dev/null
@@ -1,33778 +0,0 @@
-/*!
- * jQuery JavaScript Library v1.10.2
- * http://jquery.com/
- *
- * Includes Sizzle.js
- * http://sizzlejs.com/
- *
- * Copyright 2005, 2013 jQuery Foundation, Inc. and other contributors
- * Released under the MIT license
- * http://jquery.org/license
- *
- * Date: 2013-07-03T13:48Z
- */
-(function( window, undefined ) {'use strict';
-
-// Can't do this because several apps including ASP.NET trace
-// the stack via arguments.caller.callee and Firefox dies if
-// you try to trace through "use strict" call chains. (#13335)
-// Support: Firefox 18+
-//
-
-var
-	// The deferred used on DOM ready
-	readyList,
-
-	// A central reference to the root jQuery(document)
-	rootjQuery,
-
-	// Support: IE<10
-	// For `typeof xmlNode.method` instead of `xmlNode.method !== undefined`
-	core_strundefined = typeof undefined,
-
-	// Use the correct document accordingly with window argument (sandbox)
-	location = window.location,
-	document = window.document,
-	docElem = document.documentElement,
-
-	// Map over jQuery in case of overwrite
-	_jQuery = window.jQuery,
-
-	// Map over the $ in case of overwrite
-	_$ = window.$,
-
-	// [[Class]] -> type pairs
-	class2type = {},
-
-	// List of deleted data cache ids, so we can reuse them
-	core_deletedIds = [],
-
-	core_version = "1.10.2",
-
-	// Save a reference to some core methods
-	core_concat = core_deletedIds.concat,
-	core_push = core_deletedIds.push,
-	core_slice = core_deletedIds.slice,
-	core_indexOf = core_deletedIds.indexOf,
-	core_toString = class2type.toString,
-	core_hasOwn = class2type.hasOwnProperty,
-	core_trim = core_version.trim,
-
-	// Define a local copy of jQuery
-	jQuery = function( selector, context ) {
-		// The jQuery object is actually just the init constructor 'enhanced'
-		return new jQuery.fn.init( selector, context, rootjQuery );
-	},
-
-	// Used for matching numbers
-	core_pnum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,
-
-	// Used for splitting on whitespace
-	core_rnotwhite = /\S+/g,
-
-	// Make sure we trim BOM and NBSP (here's looking at you, Safari 5.0 and IE)
-	rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
-
-	// A simple way to check for HTML strings
-	// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
-	// Strict HTML recognition (#11290: must start with <)
-	rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
-
-	// Match a standalone tag
-	rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/,
-
-	// JSON RegExp
-	rvalidchars = /^[\],:{}\s]*$/,
-	rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,
-	rvalidescape = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,
-	rvalidtokens = /"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,
-
-	// Matches dashed string for camelizing
-	rmsPrefix = /^-ms-/,
-	rdashAlpha = /-([\da-z])/gi,
-
-	// Used by jQuery.camelCase as callback to replace()
-	fcamelCase = function( all, letter ) {
-		return letter.toUpperCase();
-	},
-
-	// The ready event handler
-	completed = function( event ) {
-
-		// readyState === "complete" is good enough for us to call the dom ready in oldIE
-		if ( document.addEventListener || event.type === "load" || document.readyState === "complete" ) {
-			detach();
-			jQuery.ready();
-		}
-	},
-	// Clean-up method for dom ready events
-	detach = function() {
-		if ( document.addEventListener ) {
-			document.removeEventListener( "DOMContentLoaded", completed, false );
-			window.removeEventListener( "load", completed, false );
-
-		} else {
-			document.detachEvent( "onreadystatechange", completed );
-			window.detachEvent( "onload", completed );
-		}
-	};
-
-jQuery.fn = jQuery.prototype = {
-	// The current version of jQuery being used
-	jquery: core_version,
-
-	constructor: jQuery,
-	init: function( selector, context, rootjQuery ) {
-		var match, elem;
-
-		// HANDLE: $(""), $(null), $(undefined), $(false)
-		if ( !selector ) {
-			return this;
-		}
-
-		// Handle HTML strings
-		if ( typeof selector === "string" ) {
-			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 = rquickExpr.exec( selector );
-			}
-
-			// Match html or make sure no context is specified for #id
-			if ( match && (match[1] || !context) ) {
-
-				// HANDLE: $(html) -> $(array)
-				if ( match[1] ) {
-					context = context instanceof jQuery ? context[0] : context;
-
-					// scripts is true for back-compat
-					jQuery.merge( this, jQuery.parseHTML(
-						match[1],
-						context && context.nodeType ? context.ownerDocument || context : document,
-						true
-					) );
-
-					// HANDLE: $(html, props)
-					if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {
-						for ( match in context ) {
-							// Properties of context are called as methods if possible
-							if ( jQuery.isFunction( this[ match ] ) ) {
-								this[ match ]( context[ match ] );
-
-							// ...and otherwise set as attributes
-							} else {
-								this.attr( match, context[ match ] );
-							}
-						}
-					}
-
-					return this;
-
-				// 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: $(DOMElement)
-		} else if ( selector.nodeType ) {
-			this.context = this[0] = selector;
-			this.length = 1;
-			return this;
-
-		// 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 default length of a jQuery object is 0
-	length: 0,
-
-	toArray: function() {
-		return core_slice.call( this );
-	},
-
-	// 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 ) {
-
-		// Build a new jQuery matched element set
-		var ret = jQuery.merge( this.constructor(), elems );
-
-		// Add the old object onto the stack (as a reference)
-		ret.prevObject = this;
-		ret.context = this.context;
-
-		// 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 ) {
-		// Add the callback
-		jQuery.ready.promise().done( fn );
-
-		return this;
-	},
-
-	slice: function() {
-		return this.pushStack( core_slice.apply( this, arguments ) );
-	},
-
-	first: function() {
-		return this.eq( 0 );
-	},
-
-	last: function() {
-		return this.eq( -1 );
-	},
-
-	eq: function( i ) {
-		var len = this.length,
-			j = +i + ( i < 0 ? len : 0 );
-		return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );
-	},
-
-	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: core_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 src, copyIsArray, copy, name, options, 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({
-	// Unique for each copy of jQuery on the page
-	// Non-digits removed to match rinlinejQuery
-	expando: "jQuery" + ( core_version + Math.random() ).replace( /\D/g, "" ),
-
-	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 ) {
-
-		// Abort if there are pending holds or we're already ready
-		if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
-			return;
-		}
-
-		// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
-		if ( !document.body ) {
-			return setTimeout( jQuery.ready );
-		}
-
-		// 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.resolveWith( document, [ jQuery ] );
-
-		// Trigger any bound ready events
-		if ( jQuery.fn.trigger ) {
-			jQuery( document ).trigger("ready").off("ready");
-		}
-	},
-
-	// 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 ) {
-		/* jshint eqeqeq: false */
-		return obj != null && obj == obj.window;
-	},
-
-	isNumeric: function( obj ) {
-		return !isNaN( parseFloat(obj) ) && isFinite( obj );
-	},
-
-	type: function( obj ) {
-		if ( obj == null ) {
-			return String( obj );
-		}
-		return typeof obj === "object" || typeof obj === "function" ?
-			class2type[ core_toString.call(obj) ] || "object" :
-			typeof obj;
-	},
-
-	isPlainObject: function( obj ) {
-		var key;
-
-		// 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 &&
-				!core_hasOwn.call(obj, "constructor") &&
-				!core_hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
-				return false;
-			}
-		} catch ( e ) {
-			// IE8,9 Will throw exceptions on certain host objects #9897
-			return false;
-		}
-
-		// Support: IE<9
-		// Handle iteration over inherited properties before own properties.
-		if ( jQuery.support.ownLast ) {
-			for ( key in obj ) {
-				return core_hasOwn.call( obj, key );
-			}
-		}
-
-		// Own properties are enumerated firstly, so to speed up,
-		// if last one is own, then all properties are own.
-		for ( key in obj ) {}
-
-		return key === undefined || core_hasOwn.call( obj, key );
-	},
-
-	isEmptyObject: function( obj ) {
-		var name;
-		for ( name in obj ) {
-			return false;
-		}
-		return true;
-	},
-
-	error: function( msg ) {
-		throw new Error( msg );
-	},
-
-	// data: string of html
-	// context (optional): If specified, the fragment will be created in this context, defaults to document
-	// keepScripts (optional): If true, will include scripts passed in the html string
-	parseHTML: function( data, context, keepScripts ) {
-		if ( !data || typeof data !== "string" ) {
-			return null;
-		}
-		if ( typeof context === "boolean" ) {
-			keepScripts = context;
-			context = false;
-		}
-		context = context || document;
-
-		var parsed = rsingleTag.exec( data ),
-			scripts = !keepScripts && [];
-
-		// Single tag
-		if ( parsed ) {
-			return [ context.createElement( parsed[1] ) ];
-		}
-
-		parsed = jQuery.buildFragment( [ data ], context, scripts );
-		if ( scripts ) {
-			jQuery( scripts ).remove();
-		}
-		return jQuery.merge( [], parsed.childNodes );
-	},
-
-	parseJSON: function( data ) {
-		// Attempt to parse using the native JSON parser first
-		if ( window.JSON && window.JSON.parse ) {
-			return window.JSON.parse( data );
-		}
-
-		if ( data === null ) {
-			return data;
-		}
-
-		if ( typeof data === "string" ) {
-
-			// Make sure leading/trailing whitespace is removed (IE can't handle it)
-			data = jQuery.trim( data );
-
-			if ( 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 ) {
-		var xml, tmp;
-		if ( !data || typeof data !== "string" ) {
-			return null;
-		}
-		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 && jQuery.trim( 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.toLowerCase() === name.toLowerCase();
-	},
-
-	// args is for internal usage only
-	each: function( obj, callback, args ) {
-		var value,
-			i = 0,
-			length = obj.length,
-			isArray = isArraylike( obj );
-
-		if ( args ) {
-			if ( isArray ) {
-				for ( ; i < length; i++ ) {
-					value = callback.apply( obj[ i ], args );
-
-					if ( value === false ) {
-						break;
-					}
-				}
-			} else {
-				for ( i in obj ) {
-					value = callback.apply( obj[ i ], args );
-
-					if ( value === false ) {
-						break;
-					}
-				}
-			}
-
-		// A special, fast, case for the most common use of each
-		} else {
-			if ( isArray ) {
-				for ( ; i < length; i++ ) {
-					value = callback.call( obj[ i ], i, obj[ i ] );
-
-					if ( value === false ) {
-						break;
-					}
-				}
-			} else {
-				for ( i in obj ) {
-					value = callback.call( obj[ i ], i, obj[ i ] );
-
-					if ( value === false ) {
-						break;
-					}
-				}
-			}
-		}
-
-		return obj;
-	},
-
-	// Use native String.trim function wherever possible
-	trim: core_trim && !core_trim.call("\uFEFF\xA0") ?
-		function( text ) {
-			return text == null ?
-				"" :
-				core_trim.call( text );
-		} :
-
-		// Otherwise use our own trimming functionality
-		function( text ) {
-			return text == null ?
-				"" :
-				( text + "" ).replace( rtrim, "" );
-		},
-
-	// results is for internal usage only
-	makeArray: function( arr, results ) {
-		var ret = results || [];
-
-		if ( arr != null ) {
-			if ( isArraylike( Object(arr) ) ) {
-				jQuery.merge( ret,
-					typeof arr === "string" ?
-					[ arr ] : arr
-				);
-			} else {
-				core_push.call( ret, arr );
-			}
-		}
-
-		return ret;
-	},
-
-	inArray: function( elem, arr, i ) {
-		var len;
-
-		if ( arr ) {
-			if ( core_indexOf ) {
-				return core_indexOf.call( arr, elem, i );
-			}
-
-			len = arr.length;
-			i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;
-
-			for ( ; i < len; i++ ) {
-				// Skip accessing in sparse arrays
-				if ( i in arr && arr[ i ] === elem ) {
-					return i;
-				}
-			}
-		}
-
-		return -1;
-	},
-
-	merge: function( first, second ) {
-		var l = second.length,
-			i = first.length,
-			j = 0;
-
-		if ( typeof l === "number" ) {
-			for ( ; 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 retVal,
-			ret = [],
-			i = 0,
-			length = elems.length;
-		inv = !!inv;
-
-		// Go through the array, only saving the items
-		// that pass the validator function
-		for ( ; 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,
-			i = 0,
-			length = elems.length,
-			isArray = isArraylike( elems ),
-			ret = [];
-
-		// 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 ( i in elems ) {
-				value = callback( elems[ i ], i, arg );
-
-				if ( value != null ) {
-					ret[ ret.length ] = value;
-				}
-			}
-		}
-
-		// Flatten any nested arrays
-		return core_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 ) {
-		var args, proxy, tmp;
-
-		if ( typeof context === "string" ) {
-			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
-		args = core_slice.call( arguments, 2 );
-		proxy = function() {
-			return fn.apply( context || this, args.concat( core_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 || jQuery.guid++;
-
-		return proxy;
-	},
-
-	// Multifunctional method to get and set values of a collection
-	// The value/s can optionally be executed if it's a function
-	access: function( elems, fn, key, value, chainable, emptyGet, raw ) {
-		var i = 0,
-			length = elems.length,
-			bulk = key == null;
-
-		// Sets many values
-		if ( jQuery.type( key ) === "object" ) {
-			chainable = true;
-			for ( i in key ) {
-				jQuery.access( elems, fn, i, key[i], true, emptyGet, raw );
-			}
-
-		// Sets one value
-		} else if ( value !== undefined ) {
-			chainable = true;
-
-			if ( !jQuery.isFunction( value ) ) {
-				raw = true;
-			}
-
-			if ( bulk ) {
-				// Bulk operations run against the entire set
-				if ( raw ) {
-					fn.call( elems, value );
-					fn = null;
-
-				// ...except when executing function values
-				} else {
-					bulk = fn;
-					fn = function( elem, key, value ) {
-						return bulk.call( jQuery( elem ), value );
-					};
-				}
-			}
-
-			if ( fn ) {
-				for ( ; i < length; i++ ) {
-					fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );
-				}
-			}
-		}
-
-		return chainable ?
-			elems :
-
-			// Gets
-			bulk ?
-				fn.call( elems ) :
-				length ? fn( elems[0], key ) : emptyGet;
-	},
-
-	now: function() {
-		return ( new Date() ).getTime();
-	},
-
-	// A method for quickly swapping in/out CSS properties to get correct calculations.
-	// Note: this method belongs to the css module but it's needed here for the support module.
-	// If support gets modularized, this method should be moved back to the css module.
-	swap: function( elem, options, callback, args ) {
-		var ret, name,
-			old = {};
-
-		// Remember the old values, and insert the new ones
-		for ( name in options ) {
-			old[ name ] = elem.style[ name ];
-			elem.style[ name ] = options[ name ];
-		}
-
-		ret = callback.apply( elem, args || [] );
-
-		// Revert the old values
-		for ( name in options ) {
-			elem.style[ name ] = old[ name ];
-		}
-
-		return ret;
-	}
-});
-
-jQuery.ready.promise = function( obj ) {
-	if ( !readyList ) {
-
-		readyList = jQuery.Deferred();
-
-		// Catch cases where $(document).ready() is called after the browser event has already occurred.
-		// we once tried to use readyState "interactive" here, but it caused issues like the one
-		// discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15
-		if ( document.readyState === "complete" ) {
-			// Handle it asynchronously to allow scripts the opportunity to delay ready
-			setTimeout( jQuery.ready );
-
-		// Standards-based browsers support DOMContentLoaded
-		} else if ( document.addEventListener ) {
-			// Use the handy event callback
-			document.addEventListener( "DOMContentLoaded", completed, false );
-
-			// A fallback to window.onload, that will always work
-			window.addEventListener( "load", completed, false );
-
-		// If IE event model is used
-		} else {
-			// Ensure firing before onload, maybe late but safe also for iframes
-			document.attachEvent( "onreadystatechange", completed );
-
-			// A fallback to window.onload, that will always work
-			window.attachEvent( "onload", completed );
-
-			// If IE and not a frame
-			// continually check to see if the document is ready
-			var top = false;
-
-			try {
-				top = window.frameElement == null && document.documentElement;
-			} catch(e) {}
-
-			if ( top && top.doScroll ) {
-				(function doScrollCheck() {
-					if ( !jQuery.isReady ) {
-
-						try {
-							// Use the trick by Diego Perini
-							// http://javascript.nwbox.com/IEContentLoaded/
-							top.doScroll("left");
-						} catch(e) {
-							return setTimeout( doScrollCheck, 50 );
-						}
-
-						// detach all dom ready events
-						detach();
-
-						// and execute any waiting functions
-						jQuery.ready();
-					}
-				})();
-			}
-		}
-	}
-	return readyList.promise( obj );
-};
-
-// Populate the class2type map
-jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) {
-	class2type[ "[object " + name + "]" ] = name.toLowerCase();
-});
-
-function isArraylike( obj ) {
-	var length = obj.length,
-		type = jQuery.type( obj );
-
-	if ( jQuery.isWindow( obj ) ) {
-		return false;
-	}
-
-	if ( obj.nodeType === 1 && length ) {
-		return true;
-	}
-
-	return type === "array" || type !== "function" &&
-		( length === 0 ||
-		typeof length === "number" && length > 0 && ( length - 1 ) in obj );
-}
-
-// All jQuery objects should point back to these
-rootjQuery = jQuery(document);
-/*!
- * Sizzle CSS Selector Engine v1.10.2
- * http://sizzlejs.com/
- *
- * Copyright 2013 jQuery Foundation, Inc. and other contributors
- * Released under the MIT license
- * http://jquery.org/license
- *
- * Date: 2013-07-03
- */
-(function( window, undefined ) {
-
-var i,
-	support,
-	cachedruns,
-	Expr,
-	getText,
-	isXML,
-	compile,
-	outermostContext,
-	sortInput,
-
-	// Local document vars
-	setDocument,
-	document,
-	docElem,
-	documentIsHTML,
-	rbuggyQSA,
-	rbuggyMatches,
-	matches,
-	contains,
-
-	// Instance-specific data
-	expando = "sizzle" + -(new Date()),
-	preferredDoc = window.document,
-	dirruns = 0,
-	done = 0,
-	classCache = createCache(),
-	tokenCache = createCache(),
-	compilerCache = createCache(),
-	hasDuplicate = false,
-	sortOrder = function( a, b ) {
-		if ( a === b ) {
-			hasDuplicate = true;
-			return 0;
-		}
-		return 0;
-	},
-
-	// General-purpose constants
-	strundefined = typeof undefined,
-	MAX_NEGATIVE = 1 << 31,
-
-	// Instance methods
-	hasOwn = ({}).hasOwnProperty,
-	arr = [],
-	pop = arr.pop,
-	push_native = arr.push,
-	push = arr.push,
-	slice = arr.slice,
-	// Use a stripped-down indexOf if we can't use a native one
-	indexOf = arr.indexOf || function( elem ) {
-		var i = 0,
-			len = this.length;
-		for ( ; i < len; i++ ) {
-			if ( this[i] === elem ) {
-				return i;
-			}
-		}
-		return -1;
-	},
-
-	booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
-
-	// Regular expressions
-
-	// Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace
-	whitespace = "[\\x20\\t\\r\\n\\f]",
-	// http://www.w3.org/TR/css3-syntax/#characters
-	characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
-
-	// Loosely modeled on CSS identifier characters
-	// An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors
-	// Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
-	identifier = characterEncoding.replace( "w", "w#" ),
-
-	// Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors
-	attributes = "\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace +
-		"*(?:([*^$|!~]?=)" + whitespace + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + whitespace + "*\\]",
-
-	// Prefer arguments quoted,
-	//   then not containing pseudos/brackets,
-	//   then attribute selectors/non-parenthetical expressions,
-	//   then anything else
-	// These preferences are here to reduce the number of selectors
-	//   needing tokenize in the PSEUDO preFilter
-	pseudos = ":(" + characterEncoding + ")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|" + attributes.replace( 3, 8 ) + ")*)|.*)\\)|)",
-
-	// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
-	rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
-
-	rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
-	rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
-
-	rsibling = new RegExp( whitespace + "*[+~]" ),
-	rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*)" + whitespace + "*\\]", "g" ),
-
-	rpseudo = new RegExp( pseudos ),
-	ridentifier = new RegExp( "^" + identifier + "$" ),
-
-	matchExpr = {
-		"ID": new RegExp( "^#(" + characterEncoding + ")" ),
-		"CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ),
-		"TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ),
-		"ATTR": new RegExp( "^" + attributes ),
-		"PSEUDO": new RegExp( "^" + pseudos ),
-		"CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
-			"*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
-			"*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
-		"bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
-		// For use in libraries implementing .is()
-		// We use this for POS matching in `select`
-		"needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
-			whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
-	},
-
-	rnative = /^[^{]+\{\s*\[native \w/,
-
-	// Easily-parseable/retrievable ID or TAG or CLASS selectors
-	rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
-
-	rinputs = /^(?:input|select|textarea|button)$/i,
-	rheader = /^h\d$/i,
-
-	rescape = /'|\\/g,
-
-	// CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
-	runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
-	funescape = function( _, escaped, escapedWhitespace ) {
-		var high = "0x" + escaped - 0x10000;
-		// NaN means non-codepoint
-		// Support: Firefox
-		// Workaround erroneous numeric interpretation of +"0x"
-		return high !== high || escapedWhitespace ?
-			escaped :
-			// BMP codepoint
-			high < 0 ?
-				String.fromCharCode( high + 0x10000 ) :
-				// Supplemental Plane codepoint (surrogate pair)
-				String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
-	};
-
-// Optimize for push.apply( _, NodeList )
-try {
-	push.apply(
-		(arr = slice.call( preferredDoc.childNodes )),
-		preferredDoc.childNodes
-	);
-	// Support: Android<4.0
-	// Detect silently failing push.apply
-	arr[ preferredDoc.childNodes.length ].nodeType;
-} catch ( e ) {
-	push = { apply: arr.length ?
-
-		// Leverage slice if possible
-		function( target, els ) {
-			push_native.apply( target, slice.call(els) );
-		} :
-
-		// Support: IE<9
-		// Otherwise append directly
-		function( target, els ) {
-			var j = target.length,
-				i = 0;
-			// Can't trust NodeList.length
-			while ( (target[j++] = els[i++]) ) {}
-			target.length = j - 1;
-		}
-	};
-}
-
-function Sizzle( selector, context, results, seed ) {
-	var match, elem, m, nodeType,
-		// QSA vars
-		i, groups, old, nid, newContext, newSelector;
-
-	if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
-		setDocument( context );
-	}
-
-	context = context || document;
-	results = results || [];
-
-	if ( !selector || typeof selector !== "string" ) {
-		return results;
-	}
-
-	if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) {
-		return [];
-	}
-
-	if ( documentIsHTML && !seed ) {
-
-		// Shortcuts
-		if ( (match = rquickExpr.exec( selector )) ) {
-			// Speed-up: Sizzle("#ID")
-			if ( (m = match[1]) ) {
-				if ( nodeType === 9 ) {
-					elem = context.getElementById( m );
-					// 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, Opera, and Webkit return items
-						// by name instead of ID
-						if ( elem.id === m ) {
-							results.push( elem );
-							return results;
-						}
-					} else {
-						return results;
-					}
-				} else {
-					// Context is not a document
-					if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&
-						contains( context, elem ) && elem.id === m ) {
-						results.push( elem );
-						return results;
-					}
-				}
-
-			// Speed-up: Sizzle("TAG")
-			} else if ( match[2] ) {
-				push.apply( results, context.getElementsByTagName( selector ) );
-				return results;
-
-			// Speed-up: Sizzle(".CLASS")
-			} else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) {
-				push.apply( results, context.getElementsByClassName( m ) );
-				return results;
-			}
-		}
-
-		// QSA path
-		if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
-			nid = old = expando;
-			newContext = context;
-			newSelector = nodeType === 9 && selector;
-
-			// qSA works strangely on Element-rooted queries
-			// We can work around this by specifying an extra ID on the root
-			// and working up from there (Thanks to Andrew Dupont for the technique)
-			// IE 8 doesn't work on object elements
-			if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
-				groups = tokenize( selector );
-
-				if ( (old = context.getAttribute("id")) ) {
-					nid = old.replace( rescape, "\\$&" );
-				} else {
-					context.setAttribute( "id", nid );
-				}
-				nid = "[id='" + nid + "'] ";
-
-				i = groups.length;
-				while ( i-- ) {
-					groups[i] = nid + toSelector( groups[i] );
-				}
-				newContext = rsibling.test( selector ) && context.parentNode || context;
-				newSelector = groups.join(",");
-			}
-
-			if ( newSelector ) {
-				try {
-					push.apply( results,
-						newContext.querySelectorAll( newSelector )
-					);
-					return results;
-				} catch(qsaError) {
-				} finally {
-					if ( !old ) {
-						context.removeAttribute("id");
-					}
-				}
-			}
-		}
-	}
-
-	// All others
-	return select( selector.replace( rtrim, "$1" ), context, results, seed );
-}
-
-/**
- * Create key-value caches of limited size
- * @returns {Function(string, Object)} Returns the Object data after storing it on itself with
- *	property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
- *	deleting the oldest entry
- */
-function createCache() {
-	var keys = [];
-
-	function cache( key, value ) {
-		// Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
-		if ( keys.push( key += " " ) > Expr.cacheLength ) {
-			// Only keep the most recent entries
-			delete cache[ keys.shift() ];
-		}
-		return (cache[ key ] = value);
-	}
-	return cache;
-}
-
-/**
- * Mark a function for special use by Sizzle
- * @param {Function} fn The function to mark
- */
-function markFunction( fn ) {
-	fn[ expando ] = true;
-	return fn;
-}
-
-/**
- * Support testing using an element
- * @param {Function} fn Passed the created div and expects a boolean result
- */
-function assert( fn ) {
-	var div = document.createElement("div");
-
-	try {
-		return !!fn( div );
-	} catch (e) {
-		return false;
-	} finally {
-		// Remove from its parent by default
-		if ( div.parentNode ) {
-			div.parentNode.removeChild( div );
-		}
-		// release memory in IE
-		div = null;
-	}
-}
-
-/**
- * Adds the same handler for all of the specified attrs
- * @param {String} attrs Pipe-separated list of attributes
- * @param {Function} handler The method that will be applied
- */
-function addHandle( attrs, handler ) {
-	var arr = attrs.split("|"),
-		i = attrs.length;
-
-	while ( i-- ) {
-		Expr.attrHandle[ arr[i] ] = handler;
-	}
-}
-
-/**
- * Checks document order of two siblings
- * @param {Element} a
- * @param {Element} b
- * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
- */
-function siblingCheck( a, b ) {
-	var cur = b && a,
-		diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
-			( ~b.sourceIndex || MAX_NEGATIVE ) -
-			( ~a.sourceIndex || MAX_NEGATIVE );
-
-	// Use IE sourceIndex if available on both nodes
-	if ( diff ) {
-		return diff;
-	}
-
-	// Check if b follows a
-	if ( cur ) {
-		while ( (cur = cur.nextSibling) ) {
-			if ( cur === b ) {
-				return -1;
-			}
-		}
-	}
-
-	return a ? 1 : -1;
-}
-
-/**
- * Returns a function to use in pseudos for input types
- * @param {String} type
- */
-function createInputPseudo( type ) {
-	return function( elem ) {
-		var name = elem.nodeName.toLowerCase();
-		return name === "input" && elem.type === type;
-	};
-}
-
-/**
- * Returns a function to use in pseudos for buttons
- * @param {String} type
- */
-function createButtonPseudo( type ) {
-	return function( elem ) {
-		var name = elem.nodeName.toLowerCase();
-		return (name === "input" || name === "button") && elem.type === type;
-	};
-}
-
-/**
- * Returns a function to use in pseudos for positionals
- * @param {Function} fn
- */
-function createPositionalPseudo( fn ) {
-	return markFunction(function( argument ) {
-		argument = +argument;
-		return markFunction(function( seed, matches ) {
-			var j,
-				matchIndexes = fn( [], seed.length, argument ),
-				i = matchIndexes.length;
-
-			// Match elements found at the specified indexes
-			while ( i-- ) {
-				if ( seed[ (j = matchIndexes[i]) ] ) {
-					seed[j] = !(matches[j] = seed[j]);
-				}
-			}
-		});
-	});
-}
-
-/**
- * Detect xml
- * @param {Element|Object} elem An element or a document
- */
-isXML = Sizzle.isXML = function( elem ) {
-	// documentElement is verified for cases where it doesn't yet exist
-	// (such as loading iframes in IE - #4833)
-	var documentElement = elem && (elem.ownerDocument || elem).documentElement;
-	return documentElement ? documentElement.nodeName !== "HTML" : false;
-};
-
-// Expose support vars for convenience
-support = Sizzle.support = {};
-
-/**
- * Sets document-related variables once based on the current document
- * @param {Element|Object} [doc] An element or document object to use to set the document
- * @returns {Object} Returns the current document
- */
-setDocument = Sizzle.setDocument = function( node ) {
-	var doc = node ? node.ownerDocument || node : preferredDoc,
-		parent = doc.defaultView;
-
-	// If no document and documentElement is available, return
-	if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
-		return document;
-	}
-
-	// Set our document
-	document = doc;
-	docElem = doc.documentElement;
-
-	// Support tests
-	documentIsHTML = !isXML( doc );
-
-	// Support: IE>8
-	// If iframe document is assigned to "document" variable and if iframe has been reloaded,
-	// IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936
-	// IE6-8 do not support the defaultView property so parent will be undefined
-	if ( parent && parent.attachEvent && parent !== parent.top ) {
-		parent.attachEvent( "onbeforeunload", function() {
-			setDocument();
-		});
-	}
-
-	/* Attributes
-	---------------------------------------------------------------------- */
-
-	// Support: IE<8
-	// Verify that getAttribute really returns attributes and not properties (excepting IE8 booleans)
-	support.attributes = assert(function( div ) {
-		div.className = "i";
-		return !div.getAttribute("className");
-	});
-
-	/* getElement(s)By*
-	---------------------------------------------------------------------- */
-
-	// Check if getElementsByTagName("*") returns only elements
-	support.getElementsByTagName = assert(function( div ) {
-		div.appendChild( doc.createComment("") );
-		return !div.getElementsByTagName("*").length;
-	});
-
-	// Check if getElementsByClassName can be trusted
-	support.getElementsByClassName = assert(function( div ) {
-		div.innerHTML = "<div class='a'></div><div class='a i'></div>";
-
-		// Support: Safari<4
-		// Catch class over-caching
-		div.firstChild.className = "i";
-		// Support: Opera<10
-		// Catch gEBCN failure to find non-leading classes
-		return div.getElementsByClassName("i").length === 2;
-	});
-
-	// Support: IE<10
-	// Check if getElementById returns elements by name
-	// The broken getElementById methods don't pick up programatically-set names,
-	// so use a roundabout getElementsByName test
-	support.getById = assert(function( div ) {
-		docElem.appendChild( div ).id = expando;
-		return !doc.getElementsByName || !doc.getElementsByName( expando ).length;
-	});
-
-	// ID find and filter
-	if ( support.getById ) {
-		Expr.find["ID"] = function( id, context ) {
-			if ( typeof context.getElementById !== strundefined && documentIsHTML ) {
-				var m = context.getElementById( id );
-				// Check parentNode to catch when Blackberry 4.6 returns
-				// nodes that are no longer in the document #6963
-				return m && m.parentNode ? [m] : [];
-			}
-		};
-		Expr.filter["ID"] = function( id ) {
-			var attrId = id.replace( runescape, funescape );
-			return function( elem ) {
-				return elem.getAttribute("id") === attrId;
-			};
-		};
-	} else {
-		// Support: IE6/7
-		// getElementById is not reliable as a find shortcut
-		delete Expr.find["ID"];
-
-		Expr.filter["ID"] =  function( id ) {
-			var attrId = id.replace( runescape, funescape );
-			return function( elem ) {
-				var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id");
-				return node && node.value === attrId;
-			};
-		};
-	}
-
-	// Tag
-	Expr.find["TAG"] = support.getElementsByTagName ?
-		function( tag, context ) {
-			if ( typeof context.getElementsByTagName !== strundefined ) {
-				return context.getElementsByTagName( tag );
-			}
-		} :
-		function( tag, context ) {
-			var elem,
-				tmp = [],
-				i = 0,
-				results = context.getElementsByTagName( tag );
-
-			// Filter out possible comments
-			if ( tag === "*" ) {
-				while ( (elem = results[i++]) ) {
-					if ( elem.nodeType === 1 ) {
-						tmp.push( elem );
-					}
-				}
-
-				return tmp;
-			}
-			return results;
-		};
-
-	// Class
-	Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
-		if ( typeof context.getElementsByClassName !== strundefined && documentIsHTML ) {
-			return context.getElementsByClassName( className );
-		}
-	};
-
-	/* QSA/matchesSelector
-	---------------------------------------------------------------------- */
-
-	// QSA and matchesSelector support
-
-	// matchesSelector(:active) reports false when true (IE9/Opera 11.5)
-	rbuggyMatches = [];
-
-	// qSa(:focus) reports false when true (Chrome 21)
-	// We allow this because of a bug in IE8/9 that throws an error
-	// whenever `document.activeElement` is accessed on an iframe
-	// So, we allow :focus to pass through QSA all the time to avoid the IE error
-	// See http://bugs.jquery.com/ticket/13378
-	rbuggyQSA = [];
-
-	if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) {
-		// Build QSA regex
-		// Regex strategy adopted from Diego Perini
-		assert(function( div ) {
-			// Select is set to empty string on purpose
-			// This is to test IE's treatment of not explicitly
-			// setting a boolean content attribute,
-			// since its presence should be enough
-			// http://bugs.jquery.com/ticket/12359
-			div.innerHTML = "<select><option selected=''></option></select>";
-
-			// Support: IE8
-			// Boolean attributes and "value" are not treated correctly
-			if ( !div.querySelectorAll("[selected]").length ) {
-				rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
-			}
-
-			// Webkit/Opera - :checked should return selected option elements
-			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
-			// IE8 throws error here and will not see later tests
-			if ( !div.querySelectorAll(":checked").length ) {
-				rbuggyQSA.push(":checked");
-			}
-		});
-
-		assert(function( div ) {
-
-			// Support: Opera 10-12/IE8
-			// ^= $= *= and empty values
-			// Should not select anything
-			// Support: Windows 8 Native Apps
-			// The type attribute is restricted during .innerHTML assignment
-			var input = doc.createElement("input");
-			input.setAttribute( "type", "hidden" );
-			div.appendChild( input ).setAttribute( "t", "" );
-
-			if ( div.querySelectorAll("[t^='']").length ) {
-				rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
-			}
-
-			// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
-			// IE8 throws error here and will not see later tests
-			if ( !div.querySelectorAll(":enabled").length ) {
-				rbuggyQSA.push( ":enabled", ":disabled" );
-			}
-
-			// Opera 10-11 does not throw on post-comma invalid pseudos
-			div.querySelectorAll("*,:x");
-			rbuggyQSA.push(",.*:");
-		});
-	}
-
-	if ( (support.matchesSelector = rnative.test( (matches = docElem.webkitMatchesSelector ||
-		docElem.mozMatchesSelector ||
-		docElem.oMatchesSelector ||
-		docElem.msMatchesSelector) )) ) {
-
-		assert(function( div ) {
-			// Check to see if it's possible to do matchesSelector
-			// on a disconnected node (IE 9)
-			support.disconnectedMatch = matches.call( div, "div" );
-
-			// This should fail with an exception
-			// Gecko does not error, returns false instead
-			matches.call( div, "[s!='']:x" );
-			rbuggyMatches.push( "!=", pseudos );
-		});
-	}
-
-	rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
-	rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
-
-	/* Contains
-	---------------------------------------------------------------------- */
-
-	// Element contains another
-	// Purposefully does not implement inclusive descendent
-	// As in, an element does not contain itself
-	contains = rnative.test( docElem.contains ) || docElem.compareDocumentPosition ?
-		function( a, b ) {
-			var adown = a.nodeType === 9 ? a.documentElement : a,
-				bup = b && b.parentNode;
-			return a === bup || !!( bup && bup.nodeType === 1 && (
-				adown.contains ?
-					adown.contains( bup ) :
-					a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
-			));
-		} :
-		function( a, b ) {
-			if ( b ) {
-				while ( (b = b.parentNode) ) {
-					if ( b === a ) {
-						return true;
-					}
-				}
-			}
-			return false;
-		};
-
-	/* Sorting
-	---------------------------------------------------------------------- */
-
-	// Document order sorting
-	sortOrder = docElem.compareDocumentPosition ?
-	function( a, b ) {
-
-		// Flag for duplicate removal
-		if ( a === b ) {
-			hasDuplicate = true;
-			return 0;
-		}
-
-		var compare = b.compareDocumentPosition && a.compareDocumentPosition && a.compareDocumentPosition( b );
-
-		if ( compare ) {
-			// Disconnected nodes
-			if ( compare & 1 ||
-				(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
-
-				// Choose the first element that is related to our preferred document
-				if ( a === doc || contains(preferredDoc, a) ) {
-					return -1;
-				}
-				if ( b === doc || contains(preferredDoc, b) ) {
-					return 1;
-				}
-
-				// Maintain original order
-				return sortInput ?
-					( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
-					0;
-			}
-
-			return compare & 4 ? -1 : 1;
-		}
-
-		// Not directly comparable, sort on existence of method
-		return a.compareDocumentPosition ? -1 : 1;
-	} :
-	function( a, b ) {
-		var cur,
-			i = 0,
-			aup = a.parentNode,
-			bup = b.parentNode,
-			ap = [ a ],
-			bp = [ b ];
-
-		// Exit early if the nodes are identical
-		if ( a === b ) {
-			hasDuplicate = true;
-			return 0;
-
-		// Parentless nodes are either documents or disconnected
-		} else if ( !aup || !bup ) {
-			return a === doc ? -1 :
-				b === doc ? 1 :
-				aup ? -1 :
-				bup ? 1 :
-				sortInput ?
-				( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
-				0;
-
-		// If the nodes are siblings, we can do a quick check
-		} else if ( aup === bup ) {
-			return siblingCheck( a, b );
-		}
-
-		// Otherwise we need full lists of their ancestors for comparison
-		cur = a;
-		while ( (cur = cur.parentNode) ) {
-			ap.unshift( cur );
-		}
-		cur = b;
-		while ( (cur = cur.parentNode) ) {
-			bp.unshift( cur );
-		}
-
-		// Walk down the tree looking for a discrepancy
-		while ( ap[i] === bp[i] ) {
-			i++;
-		}
-
-		return i ?
-			// Do a sibling check if the nodes have a common ancestor
-			siblingCheck( ap[i], bp[i] ) :
-
-			// Otherwise nodes in our document sort first
-			ap[i] === preferredDoc ? -1 :
-			bp[i] === preferredDoc ? 1 :
-			0;
-	};
-
-	return doc;
-};
-
-Sizzle.matches = function( expr, elements ) {
-	return Sizzle( expr, null, null, elements );
-};
-
-Sizzle.matchesSelector = function( elem, expr ) {
-	// Set document vars if needed
-	if ( ( elem.ownerDocument || elem ) !== document ) {
-		setDocument( elem );
-	}
-
-	// Make sure that attribute selectors are quoted
-	expr = expr.replace( rattributeQuotes, "='$1']" );
-
-	if ( support.matchesSelector && documentIsHTML &&
-		( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
-		( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) {
-
-		try {
-			var ret = matches.call( elem, expr );
-
-			// IE 9's matchesSelector returns false on disconnected nodes
-			if ( ret || support.disconnectedMatch ||
-					// As well, disconnected nodes are said to be in a document
-					// fragment in IE 9
-					elem.document && elem.document.nodeType !== 11 ) {
-				return ret;
-			}
-		} catch(e) {}
-	}
-
-	return Sizzle( expr, document, null, [elem] ).length > 0;
-};
-
-Sizzle.contains = function( context, elem ) {
-	// Set document vars if needed
-	if ( ( context.ownerDocument || context ) !== document ) {
-		setDocument( context );
-	}
-	return contains( context, elem );
-};
-
-Sizzle.attr = function( elem, name ) {
-	// Set document vars if needed
-	if ( ( elem.ownerDocument || elem ) !== document ) {
-		setDocument( elem );
-	}
-
-	var fn = Expr.attrHandle[ name.toLowerCase() ],
-		// Don't get fooled by Object.prototype properties (jQuery #13807)
-		val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
-			fn( elem, name, !documentIsHTML ) :
-			undefined;
-
-	return val === undefined ?
-		support.attributes || !documentIsHTML ?
-			elem.getAttribute( name ) :
-			(val = elem.getAttributeNode(name)) && val.specified ?
-				val.value :
-				null :
-		val;
-};
-
-Sizzle.error = function( msg ) {
-	throw new Error( "Syntax error, unrecognized expression: " + msg );
-};
-
-/**
- * Document sorting and removing duplicates
- * @param {ArrayLike} results
- */
-Sizzle.uniqueSort = function( results ) {
-	var elem,
-		duplicates = [],
-		j = 0,
-		i = 0;
-
-	// Unless we *know* we can detect duplicates, assume their presence
-	hasDuplicate = !support.detectDuplicates;
-	sortInput = !support.sortStable && results.slice( 0 );
-	results.sort( sortOrder );
-
-	if ( hasDuplicate ) {
-		while ( (elem = results[i++]) ) {
-			if ( elem === results[ i ] ) {
-				j = duplicates.push( i );
-			}
-		}
-		while ( j-- ) {
-			results.splice( duplicates[ j ], 1 );
-		}
-	}
-
-	return results;
-};
-
-/**
- * Utility function for retrieving the text value of an array of DOM nodes
- * @param {Array|Element} elem
- */
-getText = Sizzle.getText = function( elem ) {
-	var node,
-		ret = "",
-		i = 0,
-		nodeType = elem.nodeType;
-
-	if ( !nodeType ) {
-		// If no nodeType, this is expected to be an array
-		for ( ; (node = elem[i]); i++ ) {
-			// Do not traverse comment nodes
-			ret += getText( node );
-		}
-	} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
-		// Use textContent for elements
-		// innerText usage removed for consistency of new lines (see #11153)
-		if ( typeof elem.textContent === "string" ) {
-			return elem.textContent;
-		} else {
-			// Traverse its children
-			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
-				ret += getText( elem );
-			}
-		}
-	} else if ( nodeType === 3 || nodeType === 4 ) {
-		return elem.nodeValue;
-	}
-	// Do not include comment or processing instruction nodes
-
-	return ret;
-};
-
-Expr = Sizzle.selectors = {
-
-	// Can be adjusted by the user
-	cacheLength: 50,
-
-	createPseudo: markFunction,
-
-	match: matchExpr,
-
-	attrHandle: {},
-
-	find: {},
-
-	relative: {
-		">": { dir: "parentNode", first: true },
-		" ": { dir: "parentNode" },
-		"+": { dir: "previousSibling", first: true },
-		"~": { dir: "previousSibling" }
-	},
-
-	preFilter: {
-		"ATTR": function( match ) {
-			match[1] = match[1].replace( runescape, funescape );
-
-			// Move the given value to match[3] whether quoted or unquoted
-			match[3] = ( match[4] || match[5] || "" ).replace( runescape, funescape );
-
-			if ( match[2] === "~=" ) {
-				match[3] = " " + match[3] + " ";
-			}
-
-			return match.slice( 0, 4 );
-		},
-
-		"CHILD": function( match ) {
-			/* matches from matchExpr["CHILD"]
-				1 type (only|nth|...)
-				2 what (child|of-type)
-				3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
-				4 xn-component of xn+y argument ([+-]?\d*n|)
-				5 sign of xn-component
-				6 x of xn-component
-				7 sign of y-component
-				8 y of y-component
-			*/
-			match[1] = match[1].toLowerCase();
-
-			if ( match[1].slice( 0, 3 ) === "nth" ) {
-				// nth-* requires argument
-				if ( !match[3] ) {
-					Sizzle.error( match[0] );
-				}
-
-				// numeric x and y parameters for Expr.filter.CHILD
-				// remember that false/true cast respectively to 0/1
-				match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
-				match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
-
-			// other types prohibit arguments
-			} else if ( match[3] ) {
-				Sizzle.error( match[0] );
-			}
-
-			return match;
-		},
-
-		"PSEUDO": function( match ) {
-			var excess,
-				unquoted = !match[5] && match[2];
-
-			if ( matchExpr["CHILD"].test( match[0] ) ) {
-				return null;
-			}
-
-			// Accept quoted arguments as-is
-			if ( match[3] && match[4] !== undefined ) {
-				match[2] = match[4];
-
-			// Strip excess characters from unquoted arguments
-			} else if ( unquoted && rpseudo.test( unquoted ) &&
-				// Get excess from tokenize (recursively)
-				(excess = tokenize( unquoted, true )) &&
-				// advance to the next closing parenthesis
-				(excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
-
-				// excess is a negative index
-				match[0] = match[0].slice( 0, excess );
-				match[2] = unquoted.slice( 0, excess );
-			}
-
-			// Return only captures needed by the pseudo filter method (type and argument)
-			return match.slice( 0, 3 );
-		}
-	},
-
-	filter: {
-
-		"TAG": function( nodeNameSelector ) {
-			var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
-			return nodeNameSelector === "*" ?
-				function() { return true; } :
-				function( elem ) {
-					return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
-				};
-		},
-
-		"CLASS": function( className ) {
-			var pattern = classCache[ className + " " ];
-
-			return pattern ||
-				(pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
-				classCache( className, function( elem ) {
-					return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute("class") || "" );
-				});
-		},
-
-		"ATTR": function( name, operator, check ) {
-			return function( elem ) {
-				var result = Sizzle.attr( elem, name );
-
-				if ( result == null ) {
-					return operator === "!=";
-				}
-				if ( !operator ) {
-					return true;
-				}
-
-				result += "";
-
-				return operator === "=" ? result === check :
-					operator === "!=" ? result !== check :
-					operator === "^=" ? check && result.indexOf( check ) === 0 :
-					operator === "*=" ? check && result.indexOf( check ) > -1 :
-					operator === "$=" ? check && result.slice( -check.length ) === check :
-					operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 :
-					operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
-					false;
-			};
-		},
-
-		"CHILD": function( type, what, argument, first, last ) {
-			var simple = type.slice( 0, 3 ) !== "nth",
-				forward = type.slice( -4 ) !== "last",
-				ofType = what === "of-type";
-
-			return first === 1 && last === 0 ?
-
-				// Shortcut for :nth-*(n)
-				function( elem ) {
-					return !!elem.parentNode;
-				} :
-
-				function( elem, context, xml ) {
-					var cache, outerCache, node, diff, nodeIndex, start,
-						dir = simple !== forward ? "nextSibling" : "previousSibling",
-						parent = elem.parentNode,
-						name = ofType && elem.nodeName.toLowerCase(),
-						useCache = !xml && !ofType;
-
-					if ( parent ) {
-
-						// :(first|last|only)-(child|of-type)
-						if ( simple ) {
-							while ( dir ) {
-								node = elem;
-								while ( (node = node[ dir ]) ) {
-									if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) {
-										return false;
-									}
-								}
-								// Reverse direction for :only-* (if we haven't yet done so)
-								start = dir = type === "only" && !start && "nextSibling";
-							}
-							return true;
-						}
-
-						start = [ forward ? parent.firstChild : parent.lastChild ];
-
-						// non-xml :nth-child(...) stores cache data on `parent`
-						if ( forward && useCache ) {
-							// Seek `elem` from a previously-cached index
-							outerCache = parent[ expando ] || (parent[ expando ] = {});
-							cache = outerCache[ type ] || [];
-							nodeIndex = cache[0] === dirruns && cache[1];
-							diff = cache[0] === dirruns && cache[2];
-							node = nodeIndex && parent.childNodes[ nodeIndex ];
-
-							while ( (node = ++nodeIndex && node && node[ dir ] ||
-
-								// Fallback to seeking `elem` from the start
-								(diff = nodeIndex = 0) || start.pop()) ) {
-
-								// When found, cache indexes on `parent` and break
-								if ( node.nodeType === 1 && ++diff && node === elem ) {
-									outerCache[ type ] = [ dirruns, nodeIndex, diff ];
-									break;
-								}
-							}
-
-						// Use previously-cached element index if available
-						} else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) {
-							diff = cache[1];
-
-						// xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...)
-						} else {
-							// Use the same loop as above to seek `elem` from the start
-							while ( (node = ++nodeIndex && node && node[ dir ] ||
-								(diff = nodeIndex = 0) || start.pop()) ) {
-
-								if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) {
-									// Cache the index of each encountered element
-									if ( useCache ) {
-										(node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ];
-									}
-
-									if ( node === elem ) {
-										break;
-									}
-								}
-							}
-						}
-
-						// Incorporate the offset, then check against cycle size
-						diff -= last;
-						return diff === first || ( diff % first === 0 && diff / first >= 0 );
-					}
-				};
-		},
-
-		"PSEUDO": function( pseudo, argument ) {
-			// pseudo-class names are case-insensitive
-			// http://www.w3.org/TR/selectors/#pseudo-classes
-			// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
-			// Remember that setFilters inherits from pseudos
-			var args,
-				fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
-					Sizzle.error( "unsupported pseudo: " + pseudo );
-
-			// The user may use createPseudo to indicate that
-			// arguments are needed to create the filter function
-			// just as Sizzle does
-			if ( fn[ expando ] ) {
-				return fn( argument );
-			}
-
-			// But maintain support for old signatures
-			if ( fn.length > 1 ) {
-				args = [ pseudo, pseudo, "", argument ];
-				return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
-					markFunction(function( seed, matches ) {
-						var idx,
-							matched = fn( seed, argument ),
-							i = matched.length;
-						while ( i-- ) {
-							idx = indexOf.call( seed, matched[i] );
-							seed[ idx ] = !( matches[ idx ] = matched[i] );
-						}
-					}) :
-					function( elem ) {
-						return fn( elem, 0, args );
-					};
-			}
-
-			return fn;
-		}
-	},
-
-	pseudos: {
-		// Potentially complex pseudos
-		"not": markFunction(function( selector ) {
-			// Trim the selector passed to compile
-			// to avoid treating leading and trailing
-			// spaces as combinators
-			var input = [],
-				results = [],
-				matcher = compile( selector.replace( rtrim, "$1" ) );
-
-			return matcher[ expando ] ?
-				markFunction(function( seed, matches, context, xml ) {
-					var elem,
-						unmatched = matcher( seed, null, xml, [] ),
-						i = seed.length;
-
-					// Match elements unmatched by `matcher`
-					while ( i-- ) {
-						if ( (elem = unmatched[i]) ) {
-							seed[i] = !(matches[i] = elem);
-						}
-					}
-				}) :
-				function( elem, context, xml ) {
-					input[0] = elem;
-					matcher( input, null, xml, results );
-					return !results.pop();
-				};
-		}),
-
-		"has": markFunction(function( selector ) {
-			return function( elem ) {
-				return Sizzle( selector, elem ).length > 0;
-			};
-		}),
-
-		"contains": markFunction(function( text ) {
-			return function( elem ) {
-				return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
-			};
-		}),
-
-		// "Whether an element is represented by a :lang() selector
-		// is based solely on the element's language value
-		// being equal to the identifier C,
-		// or beginning with the identifier C immediately followed by "-".
-		// The matching of C against the element's language value is performed case-insensitively.
-		// The identifier C does not have to be a valid language name."
-		// http://www.w3.org/TR/selectors/#lang-pseudo
-		"lang": markFunction( function( lang ) {
-			// lang value must be a valid identifier
-			if ( !ridentifier.test(lang || "") ) {
-				Sizzle.error( "unsupported lang: " + lang );
-			}
-			lang = lang.replace( runescape, funescape ).toLowerCase();
-			return function( elem ) {
-				var elemLang;
-				do {
-					if ( (elemLang = documentIsHTML ?
-						elem.lang :
-						elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
-
-						elemLang = elemLang.toLowerCase();
-						return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
-					}
-				} while ( (elem = elem.parentNode) && elem.nodeType === 1 );
-				return false;
-			};
-		}),
-
-		// Miscellaneous
-		"target": function( elem ) {
-			var hash = window.location && window.location.hash;
-			return hash && hash.slice( 1 ) === elem.id;
-		},
-
-		"root": function( elem ) {
-			return elem === docElem;
-		},
-
-		"focus": function( elem ) {
-			return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
-		},
-
-		// Boolean properties
-		"enabled": function( elem ) {
-			return elem.disabled === false;
-		},
-
-		"disabled": function( elem ) {
-			return elem.disabled === true;
-		},
-
-		"checked": function( elem ) {
-			// In CSS3, :checked should return both checked and selected elements
-			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
-			var nodeName = elem.nodeName.toLowerCase();
-			return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
-		},
-
-		"selected": function( elem ) {
-			// Accessing this property makes selected-by-default
-			// options in Safari work properly
-			if ( elem.parentNode ) {
-				elem.parentNode.selectedIndex;
-			}
-
-			return elem.selected === true;
-		},
-
-		// Contents
-		"empty": function( elem ) {
-			// http://www.w3.org/TR/selectors/#empty-pseudo
-			// :empty is only affected by element nodes and content nodes(including text(3), cdata(4)),
-			//   not comment, processing instructions, or others
-			// Thanks to Diego Perini for the nodeName shortcut
-			//   Greater than "@" means alpha characters (specifically not starting with "#" or "?")
-			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
-				if ( elem.nodeName > "@" || elem.nodeType === 3 || elem.nodeType === 4 ) {
-					return false;
-				}
-			}
-			return true;
-		},
-
-		"parent": function( elem ) {
-			return !Expr.pseudos["empty"]( elem );
-		},
-
-		// Element/input types
-		"header": function( elem ) {
-			return rheader.test( elem.nodeName );
-		},
-
-		"input": function( elem ) {
-			return rinputs.test( elem.nodeName );
-		},
-
-		"button": function( elem ) {
-			var name = elem.nodeName.toLowerCase();
-			return name === "input" && elem.type === "button" || name === "button";
-		},
-
-		"text": function( elem ) {
-			var attr;
-			// IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)
-			// use getAttribute instead to test this case
-			return elem.nodeName.toLowerCase() === "input" &&
-				elem.type === "text" &&
-				( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === elem.type );
-		},
-
-		// Position-in-collection
-		"first": createPositionalPseudo(function() {
-			return [ 0 ];
-		}),
-
-		"last": createPositionalPseudo(function( matchIndexes, length ) {
-			return [ length - 1 ];
-		}),
-
-		"eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
-			return [ argument < 0 ? argument + length : argument ];
-		}),
-
-		"even": createPositionalPseudo(function( matchIndexes, length ) {
-			var i = 0;
-			for ( ; i < length; i += 2 ) {
-				matchIndexes.push( i );
-			}
-			return matchIndexes;
-		}),
-
-		"odd": createPositionalPseudo(function( matchIndexes, length ) {
-			var i = 1;
-			for ( ; i < length; i += 2 ) {
-				matchIndexes.push( i );
-			}
-			return matchIndexes;
-		}),
-
-		"lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
-			var i = argument < 0 ? argument + length : argument;
-			for ( ; --i >= 0; ) {
-				matchIndexes.push( i );
-			}
-			return matchIndexes;
-		}),
-
-		"gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
-			var i = argument < 0 ? argument + length : argument;
-			for ( ; ++i < length; ) {
-				matchIndexes.push( i );
-			}
-			return matchIndexes;
-		})
-	}
-};
-
-Expr.pseudos["nth"] = Expr.pseudos["eq"];
-
-// Add button/input type pseudos
-for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
-	Expr.pseudos[ i ] = createInputPseudo( i );
-}
-for ( i in { submit: true, reset: true } ) {
-	Expr.pseudos[ i ] = createButtonPseudo( i );
-}
-
-// Easy API for creating new setFilters
-function setFilters() {}
-setFilters.prototype = Expr.filters = Expr.pseudos;
-Expr.setFilters = new setFilters();
-
-function tokenize( selector, parseOnly ) {
-	var matched, match, tokens, type,
-		soFar, groups, preFilters,
-		cached = tokenCache[ selector + " " ];
-
-	if ( cached ) {
-		return parseOnly ? 0 : cached.slice( 0 );
-	}
-
-	soFar = selector;
-	groups = [];
-	preFilters = Expr.preFilter;
-
-	while ( soFar ) {
-
-		// Comma and first run
-		if ( !matched || (match = rcomma.exec( soFar )) ) {
-			if ( match ) {
-				// Don't consume trailing commas as valid
-				soFar = soFar.slice( match[0].length ) || soFar;
-			}
-			groups.push( tokens = [] );
-		}
-
-		matched = false;
-
-		// Combinators
-		if ( (match = rcombinators.exec( soFar )) ) {
-			matched = match.shift();
-			tokens.push({
-				value: matched,
-				// Cast descendant combinators to space
-				type: match[0].replace( rtrim, " " )
-			});
-			soFar = soFar.slice( matched.length );
-		}
-
-		// Filters
-		for ( type in Expr.filter ) {
-			if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
-				(match = preFilters[ type ]( match ))) ) {
-				matched = match.shift();
-				tokens.push({
-					value: matched,
-					type: type,
-					matches: match
-				});
-				soFar = soFar.slice( matched.length );
-			}
-		}
-
-		if ( !matched ) {
-			break;
-		}
-	}
-
-	// Return the length of the invalid excess
-	// if we're just parsing
-	// Otherwise, throw an error or return tokens
-	return parseOnly ?
-		soFar.length :
-		soFar ?
-			Sizzle.error( selector ) :
-			// Cache the tokens
-			tokenCache( selector, groups ).slice( 0 );
-}
-
-function toSelector( tokens ) {
-	var i = 0,
-		len = tokens.length,
-		selector = "";
-	for ( ; i < len; i++ ) {
-		selector += tokens[i].value;
-	}
-	return selector;
-}
-
-function addCombinator( matcher, combinator, base ) {
-	var dir = combinator.dir,
-		checkNonElements = base && dir === "parentNode",
-		doneName = done++;
-
-	return combinator.first ?
-		// Check against closest ancestor/preceding element
-		function( elem, context, xml ) {
-			while ( (elem = elem[ dir ]) ) {
-				if ( elem.nodeType === 1 || checkNonElements ) {
-					return matcher( elem, context, xml );
-				}
-			}
-		} :
-
-		// Check against all ancestor/preceding elements
-		function( elem, context, xml ) {
-			var data, cache, outerCache,
-				dirkey = dirruns + " " + doneName;
-
-			// We can't set arbitrary data on XML nodes, so they don't benefit from dir caching
-			if ( xml ) {
-				while ( (elem = elem[ dir ]) ) {
-					if ( elem.nodeType === 1 || checkNonElements ) {
-						if ( matcher( elem, context, xml ) ) {
-							return true;
-						}
-					}
-				}
-			} else {
-				while ( (elem = elem[ dir ]) ) {
-					if ( elem.nodeType === 1 || checkNonElements ) {
-						outerCache = elem[ expando ] || (elem[ expando ] = {});
-						if ( (cache = outerCache[ dir ]) && cache[0] === dirkey ) {
-							if ( (data = cache[1]) === true || data === cachedruns ) {
-								return data === true;
-							}
-						} else {
-							cache = outerCache[ dir ] = [ dirkey ];
-							cache[1] = matcher( elem, context, xml ) || cachedruns;
-							if ( cache[1] === true ) {
-								return true;
-							}
-						}
-					}
-				}
-			}
-		};
-}
-
-function elementMatcher( matchers ) {
-	return matchers.length > 1 ?
-		function( elem, context, xml ) {
-			var i = matchers.length;
-			while ( i-- ) {
-				if ( !matchers[i]( elem, context, xml ) ) {
-					return false;
-				}
-			}
-			return true;
-		} :
-		matchers[0];
-}
-
-function condense( unmatched, map, filter, context, xml ) {
-	var elem,
-		newUnmatched = [],
-		i = 0,
-		len = unmatched.length,
-		mapped = map != null;
-
-	for ( ; i < len; i++ ) {
-		if ( (elem = unmatched[i]) ) {
-			if ( !filter || filter( elem, context, xml ) ) {
-				newUnmatched.push( elem );
-				if ( mapped ) {
-					map.push( i );
-				}
-			}
-		}
-	}
-
-	return newUnmatched;
-}
-
-function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
-	if ( postFilter && !postFilter[ expando ] ) {
-		postFilter = setMatcher( postFilter );
-	}
-	if ( postFinder && !postFinder[ expando ] ) {
-		postFinder = setMatcher( postFinder, postSelector );
-	}
-	return markFunction(function( seed, results, context, xml ) {
-		var temp, i, elem,
-			preMap = [],
-			postMap = [],
-			preexisting = results.length,
-
-			// Get initial elements from seed or context
-			elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
-
-			// Prefilter to get matcher input, preserving a map for seed-results synchronization
-			matcherIn = preFilter && ( seed || !selector ) ?
-				condense( elems, preMap, preFilter, context, xml ) :
-				elems,
-
-			matcherOut = matcher ?
-				// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
-				postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
-
-					// ...intermediate processing is necessary
-					[] :
-
-					// ...otherwise use results directly
-					results :
-				matcherIn;
-
-		// Find primary matches
-		if ( matcher ) {
-			matcher( matcherIn, matcherOut, context, xml );
-		}
-
-		// Apply postFilter
-		if ( postFilter ) {
-			temp = condense( matcherOut, postMap );
-			postFilter( temp, [], context, xml );
-
-			// Un-match failing elements by moving them back to matcherIn
-			i = temp.length;
-			while ( i-- ) {
-				if ( (elem = temp[i]) ) {
-					matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
-				}
-			}
-		}
-
-		if ( seed ) {
-			if ( postFinder || preFilter ) {
-				if ( postFinder ) {
-					// Get the final matcherOut by condensing this intermediate into postFinder contexts
-					temp = [];
-					i = matcherOut.length;
-					while ( i-- ) {
-						if ( (elem = matcherOut[i]) ) {
-							// Restore matcherIn since elem is not yet a final match
-							temp.push( (matcherIn[i] = elem) );
-						}
-					}
-					postFinder( null, (matcherOut = []), temp, xml );
-				}
-
-				// Move matched elements from seed to results to keep them synchronized
-				i = matcherOut.length;
-				while ( i-- ) {
-					if ( (elem = matcherOut[i]) &&
-						(temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) {
-
-						seed[temp] = !(results[temp] = elem);
-					}
-				}
-			}
-
-		// Add elements to results, through postFinder if defined
-		} else {
-			matcherOut = condense(
-				matcherOut === results ?
-					matcherOut.splice( preexisting, matcherOut.length ) :
-					matcherOut
-			);
-			if ( postFinder ) {
-				postFinder( null, results, matcherOut, xml );
-			} else {
-				push.apply( results, matcherOut );
-			}
-		}
-	});
-}
-
-function matcherFromTokens( tokens ) {
-	var checkContext, matcher, j,
-		len = tokens.length,
-		leadingRelative = Expr.relative[ tokens[0].type ],
-		implicitRelative = leadingRelative || Expr.relative[" "],
-		i = leadingRelative ? 1 : 0,
-
-		// The foundational matcher ensures that elements are reachable from top-level context(s)
-		matchContext = addCombinator( function( elem ) {
-			return elem === checkContext;
-		}, implicitRelative, true ),
-		matchAnyContext = addCombinator( function( elem ) {
-			return indexOf.call( checkContext, elem ) > -1;
-		}, implicitRelative, true ),
-		matchers = [ function( elem, context, xml ) {
-			return ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
-				(checkContext = context).nodeType ?
-					matchContext( elem, context, xml ) :
-					matchAnyContext( elem, context, xml ) );
-		} ];
-
-	for ( ; i < len; i++ ) {
-		if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
-			matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
-		} else {
-			matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
-
-			// Return special upon seeing a positional matcher
-			if ( matcher[ expando ] ) {
-				// Find the next relative operator (if any) for proper handling
-				j = ++i;
-				for ( ; j < len; j++ ) {
-					if ( Expr.relative[ tokens[j].type ] ) {
-						break;
-					}
-				}
-				return setMatcher(
-					i > 1 && elementMatcher( matchers ),
-					i > 1 && toSelector(
-						// If the preceding token was a descendant combinator, insert an implicit any-element `*`
-						tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
-					).replace( rtrim, "$1" ),
-					matcher,
-					i < j && matcherFromTokens( tokens.slice( i, j ) ),
-					j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
-					j < len && toSelector( tokens )
-				);
-			}
-			matchers.push( matcher );
-		}
-	}
-
-	return elementMatcher( matchers );
-}
-
-function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
-	// A counter to specify which element is currently being matched
-	var matcherCachedRuns = 0,
-		bySet = setMatchers.length > 0,
-		byElement = elementMatchers.length > 0,
-		superMatcher = function( seed, context, xml, results, expandContext ) {
-			var elem, j, matcher,
-				setMatched = [],
-				matchedCount = 0,
-				i = "0",
-				unmatched = seed && [],
-				outermost = expandContext != null,
-				contextBackup = outermostContext,
-				// We must always have either seed elements or context
-				elems = seed || byElement && Expr.find["TAG"]( "*", expandContext && context.parentNode || context ),
-				// Use integer dirruns iff this is the outermost matcher
-				dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1);
-
-			if ( outermost ) {
-				outermostContext = context !== document && context;
-				cachedruns = matcherCachedRuns;
-			}
-
-			// Add elements passing elementMatchers directly to results
-			// Keep `i` a string if there are no elements so `matchedCount` will be "00" below
-			for ( ; (elem = elems[i]) != null; i++ ) {
-				if ( byElement && elem ) {
-					j = 0;
-					while ( (matcher = elementMatchers[j++]) ) {
-						if ( matcher( elem, context, xml ) ) {
-							results.push( elem );
-							break;
-						}
-					}
-					if ( outermost ) {
-						dirruns = dirrunsUnique;
-						cachedruns = ++matcherCachedRuns;
-					}
-				}
-
-				// Track unmatched elements for set filters
-				if ( bySet ) {
-					// They will have gone through all possible matchers
-					if ( (elem = !matcher && elem) ) {
-						matchedCount--;
-					}
-
-					// Lengthen the array for every element, matched or not
-					if ( seed ) {
-						unmatched.push( elem );
-					}
-				}
-			}
-
-			// Apply set filters to unmatched elements
-			matchedCount += i;
-			if ( bySet && i !== matchedCount ) {
-				j = 0;
-				while ( (matcher = setMatchers[j++]) ) {
-					matcher( unmatched, setMatched, context, xml );
-				}
-
-				if ( seed ) {
-					// Reintegrate element matches to eliminate the need for sorting
-					if ( matchedCount > 0 ) {
-						while ( i-- ) {
-							if ( !(unmatched[i] || setMatched[i]) ) {
-								setMatched[i] = pop.call( results );
-							}
-						}
-					}
-
-					// Discard index placeholder values to get only actual matches
-					setMatched = condense( setMatched );
-				}
-
-				// Add matches to results
-				push.apply( results, setMatched );
-
-				// Seedless set matches succeeding multiple successful matchers stipulate sorting
-				if ( outermost && !seed && setMatched.length > 0 &&
-					( matchedCount + setMatchers.length ) > 1 ) {
-
-					Sizzle.uniqueSort( results );
-				}
-			}
-
-			// Override manipulation of globals by nested matchers
-			if ( outermost ) {
-				dirruns = dirrunsUnique;
-				outermostContext = contextBackup;
-			}
-
-			return unmatched;
-		};
-
-	return bySet ?
-		markFunction( superMatcher ) :
-		superMatcher;
-}
-
-compile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) {
-	var i,
-		setMatchers = [],
-		elementMatchers = [],
-		cached = compilerCache[ selector + " " ];
-
-	if ( !cached ) {
-		// Generate a function of recursive functions that can be used to check each element
-		if ( !group ) {
-			group = tokenize( selector );
-		}
-		i = group.length;
-		while ( i-- ) {
-			cached = matcherFromTokens( group[i] );
-			if ( cached[ expando ] ) {
-				setMatchers.push( cached );
-			} else {
-				elementMatchers.push( cached );
-			}
-		}
-
-		// Cache the compiled function
-		cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
-	}
-	return cached;
-};
-
-function multipleContexts( selector, contexts, results ) {
-	var i = 0,
-		len = contexts.length;
-	for ( ; i < len; i++ ) {
-		Sizzle( selector, contexts[i], results );
-	}
-	return results;
-}
-
-function select( selector, context, results, seed ) {
-	var i, tokens, token, type, find,
-		match = tokenize( selector );
-
-	if ( !seed ) {
-		// Try to minimize operations if there is only one group
-		if ( match.length === 1 ) {
-
-			// Take a shortcut and set the context if the root selector is an ID
-			tokens = match[0] = match[0].slice( 0 );
-			if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
-					support.getById && context.nodeType === 9 && documentIsHTML &&
-					Expr.relative[ tokens[1].type ] ) {
-
-				context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
-				if ( !context ) {
-					return results;
-				}
-				selector = selector.slice( tokens.shift().value.length );
-			}
-
-			// Fetch a seed set for right-to-left matching
-			i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
-			while ( i-- ) {
-				token = tokens[i];
-
-				// Abort if we hit a combinator
-				if ( Expr.relative[ (type = token.type) ] ) {
-					break;
-				}
-				if ( (find = Expr.find[ type ]) ) {
-					// Search, expanding context for leading sibling combinators
-					if ( (seed = find(
-						token.matches[0].replace( runescape, funescape ),
-						rsibling.test( tokens[0].type ) && context.parentNode || context
-					)) ) {
-
-						// If seed is empty or no tokens remain, we can return early
-						tokens.splice( i, 1 );
-						selector = seed.length && toSelector( tokens );
-						if ( !selector ) {
-							push.apply( results, seed );
-							return results;
-						}
-
-						break;
-					}
-				}
-			}
-		}
-	}
-
-	// Compile and execute a filtering function
-	// Provide `match` to avoid retokenization if we modified the selector above
-	compile( selector, match )(
-		seed,
-		context,
-		!documentIsHTML,
-		results,
-		rsibling.test( selector )
-	);
-	return results;
-}
-
-// One-time assignments
-
-// Sort stability
-support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
-
-// Support: Chrome<14
-// Always assume duplicates if they aren't passed to the comparison function
-support.detectDuplicates = hasDuplicate;
-
-// Initialize against the default document
-setDocument();
-
-// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
-// Detached nodes confoundingly follow *each other*
-support.sortDetached = assert(function( div1 ) {
-	// Should return 1, but returns 4 (following)
-	return div1.compareDocumentPosition( document.createElement("div") ) & 1;
-});
-
-// Support: IE<8
-// Prevent attribute/property "interpolation"
-// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
-if ( !assert(function( div ) {
-	div.innerHTML = "<a href='#'></a>";
-	return div.firstChild.getAttribute("href") === "#" ;
-}) ) {
-	addHandle( "type|href|height|width", function( elem, name, isXML ) {
-		if ( !isXML ) {
-			return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
-		}
-	});
-}
-
-// Support: IE<9
-// Use defaultValue in place of getAttribute("value")
-if ( !support.attributes || !assert(function( div ) {
-	div.innerHTML = "<input/>";
-	div.firstChild.setAttribute( "value", "" );
-	return div.firstChild.getAttribute( "value" ) === "";
-}) ) {
-	addHandle( "value", function( elem, name, isXML ) {
-		if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
-			return elem.defaultValue;
-		}
-	});
-}
-
-// Support: IE<9
-// Use getAttributeNode to fetch booleans when getAttribute lies
-if ( !assert(function( div ) {
-	return div.getAttribute("disabled") == null;
-}) ) {
-	addHandle( booleans, function( elem, name, isXML ) {
-		var val;
-		if ( !isXML ) {
-			return (val = elem.getAttributeNode( name )) && val.specified ?
-				val.value :
-				elem[ name ] === true ? name.toLowerCase() : null;
-		}
-	});
-}
-
-jQuery.find = Sizzle;
-jQuery.expr = Sizzle.selectors;
-jQuery.expr[":"] = jQuery.expr.pseudos;
-jQuery.unique = Sizzle.uniqueSort;
-jQuery.text = Sizzle.getText;
-jQuery.isXMLDoc = Sizzle.isXML;
-jQuery.contains = Sizzle.contains;
-
-
-})( window );
-// String to Object options format cache
-var optionsCache = {};
-
-// Convert String-formatted options into Object-formatted ones and store in cache
-function createOptions( options ) {
-	var object = optionsCache[ options ] = {};
-	jQuery.each( options.match( core_rnotwhite ) || [], function( _, flag ) {
-		object[ flag ] = true;
-	});
-	return object;
-}
-
-/*
- * Create a callback list using the following parameters:
- *
- *	options: an optional list of space-separated options that will change how
- *			the callback list behaves or a more traditional option object
- *
- * By default a callback list will act like an event callback list and can be
- * "fired" multiple times.
- *
- * Possible options:
- *
- *	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( options ) {
-
-	// Convert options from String-formatted to Object-formatted if needed
-	// (we check in cache first)
-	options = typeof options === "string" ?
-		( optionsCache[ options ] || createOptions( options ) ) :
-		jQuery.extend( {}, options );
-
-	var // Flag to know if list is currently firing
-		firing,
-		// Last fire value (for non-forgettable lists)
-		memory,
-		// Flag to know if list was already fired
-		fired,
-		// End of the loop when firing
-		firingLength,
-		// Index of currently firing callback (modified by remove if needed)
-		firingIndex,
-		// First callback to fire (used internally by add and fireWith)
-		firingStart,
-		// Actual callback list
-		list = [],
-		// Stack of fire calls for repeatable lists
-		stack = !options.once && [],
-		// Fire callbacks
-		fire = function( data ) {
-			memory = options.memory && data;
-			fired = true;
-			firingIndex = firingStart || 0;
-			firingStart = 0;
-			firingLength = list.length;
-			firing = true;
-			for ( ; list && firingIndex < firingLength; firingIndex++ ) {
-				if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {
-					memory = false; // To prevent further calls using add
-					break;
-				}
-			}
-			firing = false;
-			if ( list ) {
-				if ( stack ) {
-					if ( stack.length ) {
-						fire( stack.shift() );
-					}
-				} else if ( memory ) {
-					list = [];
-				} else {
-					self.disable();
-				}
-			}
-		},
-		// Actual Callbacks object
-		self = {
-			// Add a callback or a collection of callbacks to the list
-			add: function() {
-				if ( list ) {
-					// First, we save the current length
-					var start = list.length;
-					(function add( args ) {
-						jQuery.each( args, function( _, arg ) {
-							var type = jQuery.type( arg );
-							if ( type === "function" ) {
-								if ( !options.unique || !self.has( arg ) ) {
-									list.push( arg );
-								}
-							} else if ( arg && arg.length && type !== "string" ) {
-								// Inspect recursively
-								add( arg );
-							}
-						});
-					})( 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
-					} else if ( memory ) {
-						firingStart = start;
-						fire( memory );
-					}
-				}
-				return this;
-			},
-			// Remove a callback from the list
-			remove: function() {
-				if ( list ) {
-					jQuery.each( arguments, function( _, arg ) {
-						var index;
-						while( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
-							list.splice( index, 1 );
-							// Handle firing indexes
-							if ( firing ) {
-								if ( index <= firingLength ) {
-									firingLength--;
-								}
-								if ( index <= firingIndex ) {
-									firingIndex--;
-								}
-							}
-						}
-					});
-				}
-				return this;
-			},
-			// Check if a given callback is in the list.
-			// If no argument is given, return whether or not list has callbacks attached.
-			has: function( fn ) {
-				return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );
-			},
-			// Remove all callbacks from the list
-			empty: function() {
-				list = [];
-				firingLength = 0;
-				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 

<TRUNCATED>

[22/71] [abbrv] brooklyn-ui git commit: Move mobile app to sandbox

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-sanitize.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-sanitize.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-sanitize.js
deleted file mode 100644
index f77386d..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-sanitize.js
+++ /dev/null
@@ -1,630 +0,0 @@
-/**
- * @license AngularJS v1.2.19
- * (c) 2010-2014 Google, Inc. http://angularjs.org
- * License: MIT
- */
-(function(window, angular, undefined) {'use strict';
-
-var $sanitizeMinErr = angular.$$minErr('$sanitize');
-
-/**
- * @ngdoc module
- * @name ngSanitize
- * @description
- *
- * # ngSanitize
- *
- * The `ngSanitize` module provides functionality to sanitize HTML.
- *
- *
- * <div doc-module-components="ngSanitize"></div>
- *
- * See {@link ngSanitize.$sanitize `$sanitize`} for usage.
- */
-
-/*
- * HTML Parser By Misko Hevery (misko@hevery.com)
- * based on:  HTML Parser By John Resig (ejohn.org)
- * Original code by Erik Arvidsson, Mozilla Public License
- * http://erik.eae.net/simplehtmlparser/simplehtmlparser.js
- *
- * // Use like so:
- * htmlParser(htmlString, {
- *     start: function(tag, attrs, unary) {},
- *     end: function(tag) {},
- *     chars: function(text) {},
- *     comment: function(text) {}
- * });
- *
- */
-
-
-/**
- * @ngdoc service
- * @name $sanitize
- * @kind function
- *
- * @description
- *   The input is sanitized by parsing the html into tokens. All safe tokens (from a whitelist) are
- *   then serialized back to properly escaped html string. This means that no unsafe input can make
- *   it into the returned string, however, since our parser is more strict than a typical browser
- *   parser, it's possible that some obscure input, which would be recognized as valid HTML by a
- *   browser, won't make it through the sanitizer.
- *   The whitelist is configured using the functions `aHrefSanitizationWhitelist` and
- *   `imgSrcSanitizationWhitelist` of {@link ng.$compileProvider `$compileProvider`}.
- *
- * @param {string} html Html input.
- * @returns {string} Sanitized html.
- *
- * @example
-   <example module="ngSanitize" deps="angular-sanitize.js">
-   <file name="index.html">
-     <script>
-       function Ctrl($scope, $sce) {
-         $scope.snippet =
-           '<p style="color:blue">an html\n' +
-           '<em onmouseover="this.textContent=\'PWN3D!\'">click here</em>\n' +
-           'snippet</p>';
-         $scope.deliberatelyTrustDangerousSnippet = function() {
-           return $sce.trustAsHtml($scope.snippet);
-         };
-       }
-     </script>
-     <div ng-controller="Ctrl">
-        Snippet: <textarea ng-model="snippet" cols="60" rows="3"></textarea>
-       <table>
-         <tr>
-           <td>Directive</td>
-           <td>How</td>
-           <td>Source</td>
-           <td>Rendered</td>
-         </tr>
-         <tr id="bind-html-with-sanitize">
-           <td>ng-bind-html</td>
-           <td>Automatically uses $sanitize</td>
-           <td><pre>&lt;div ng-bind-html="snippet"&gt;<br/>&lt;/div&gt;</pre></td>
-           <td><div ng-bind-html="snippet"></div></td>
-         </tr>
-         <tr id="bind-html-with-trust">
-           <td>ng-bind-html</td>
-           <td>Bypass $sanitize by explicitly trusting the dangerous value</td>
-           <td>
-           <pre>&lt;div ng-bind-html="deliberatelyTrustDangerousSnippet()"&gt;
-&lt;/div&gt;</pre>
-           </td>
-           <td><div ng-bind-html="deliberatelyTrustDangerousSnippet()"></div></td>
-         </tr>
-         <tr id="bind-default">
-           <td>ng-bind</td>
-           <td>Automatically escapes</td>
-           <td><pre>&lt;div ng-bind="snippet"&gt;<br/>&lt;/div&gt;</pre></td>
-           <td><div ng-bind="snippet"></div></td>
-         </tr>
-       </table>
-       </div>
-   </file>
-   <file name="protractor.js" type="protractor">
-     it('should sanitize the html snippet by default', function() {
-       expect(element(by.css('#bind-html-with-sanitize div')).getInnerHtml()).
-         toBe('<p>an html\n<em>click here</em>\nsnippet</p>');
-     });
-
-     it('should inline raw snippet if bound to a trusted value', function() {
-       expect(element(by.css('#bind-html-with-trust div')).getInnerHtml()).
-         toBe("<p style=\"color:blue\">an html\n" +
-              "<em onmouseover=\"this.textContent='PWN3D!'\">click here</em>\n" +
-              "snippet</p>");
-     });
-
-     it('should escape snippet without any filter', function() {
-       expect(element(by.css('#bind-default div')).getInnerHtml()).
-         toBe("&lt;p style=\"color:blue\"&gt;an html\n" +
-              "&lt;em onmouseover=\"this.textContent='PWN3D!'\"&gt;click here&lt;/em&gt;\n" +
-              "snippet&lt;/p&gt;");
-     });
-
-     it('should update', function() {
-       element(by.model('snippet')).clear();
-       element(by.model('snippet')).sendKeys('new <b onclick="alert(1)">text</b>');
-       expect(element(by.css('#bind-html-with-sanitize div')).getInnerHtml()).
-         toBe('new <b>text</b>');
-       expect(element(by.css('#bind-html-with-trust div')).getInnerHtml()).toBe(
-         'new <b onclick="alert(1)">text</b>');
-       expect(element(by.css('#bind-default div')).getInnerHtml()).toBe(
-         "new &lt;b onclick=\"alert(1)\"&gt;text&lt;/b&gt;");
-     });
-   </file>
-   </example>
- */
-function $SanitizeProvider() {
-  this.$get = ['$$sanitizeUri', function($$sanitizeUri) {
-    return function(html) {
-      var buf = [];
-      htmlParser(html, htmlSanitizeWriter(buf, function(uri, isImage) {
-        return !/^unsafe/.test($$sanitizeUri(uri, isImage));
-      }));
-      return buf.join('');
-    };
-  }];
-}
-
-function sanitizeText(chars) {
-  var buf = [];
-  var writer = htmlSanitizeWriter(buf, angular.noop);
-  writer.chars(chars);
-  return buf.join('');
-}
-
-
-// Regular Expressions for parsing tags and attributes
-var START_TAG_REGEXP =
-       /^<\s*([\w:-]+)((?:\s+[\w:-]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)\s*>/,
-  END_TAG_REGEXP = /^<\s*\/\s*([\w:-]+)[^>]*>/,
-  ATTR_REGEXP = /([\w:-]+)(?:\s*=\s*(?:(?:"((?:[^"])*)")|(?:'((?:[^'])*)')|([^>\s]+)))?/g,
-  BEGIN_TAG_REGEXP = /^</,
-  BEGING_END_TAGE_REGEXP = /^<\s*\//,
-  COMMENT_REGEXP = /<!--(.*?)-->/g,
-  DOCTYPE_REGEXP = /<!DOCTYPE([^>]*?)>/i,
-  CDATA_REGEXP = /<!\[CDATA\[(.*?)]]>/g,
-  SURROGATE_PAIR_REGEXP = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g,
-  // Match everything outside of normal chars and " (quote character)
-  NON_ALPHANUMERIC_REGEXP = /([^\#-~| |!])/g;
-
-
-// Good source of info about elements and attributes
-// http://dev.w3.org/html5/spec/Overview.html#semantics
-// http://simon.html5.org/html-elements
-
-// Safe Void Elements - HTML5
-// http://dev.w3.org/html5/spec/Overview.html#void-elements
-var voidElements = makeMap("area,br,col,hr,img,wbr");
-
-// Elements that you can, intentionally, leave open (and which close themselves)
-// http://dev.w3.org/html5/spec/Overview.html#optional-tags
-var optionalEndTagBlockElements = makeMap("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),
-    optionalEndTagInlineElements = makeMap("rp,rt"),
-    optionalEndTagElements = angular.extend({},
-                                            optionalEndTagInlineElements,
-                                            optionalEndTagBlockElements);
-
-// Safe Block Elements - HTML5
-var blockElements = angular.extend({}, optionalEndTagBlockElements, makeMap("address,article," +
-        "aside,blockquote,caption,center,del,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5," +
-        "h6,header,hgroup,hr,ins,map,menu,nav,ol,pre,script,section,table,ul"));
-
-// Inline Elements - HTML5
-var inlineElements = angular.extend({}, optionalEndTagInlineElements, makeMap("a,abbr,acronym,b," +
-        "bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,q,ruby,rp,rt,s," +
-        "samp,small,span,strike,strong,sub,sup,time,tt,u,var"));
-
-
-// Special Elements (can contain anything)
-var specialElements = makeMap("script,style");
-
-var validElements = angular.extend({},
-                                   voidElements,
-                                   blockElements,
-                                   inlineElements,
-                                   optionalEndTagElements);
-
-//Attributes that have href and hence need to be sanitized
-var uriAttrs = makeMap("background,cite,href,longdesc,src,usemap");
-var validAttrs = angular.extend({}, uriAttrs, makeMap(
-    'abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,'+
-    'color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,'+
-    'ismap,lang,language,nohref,nowrap,rel,rev,rows,rowspan,rules,'+
-    'scope,scrolling,shape,size,span,start,summary,target,title,type,'+
-    'valign,value,vspace,width'));
-
-function makeMap(str) {
-  var obj = {}, items = str.split(','), i;
-  for (i = 0; i < items.length; i++) obj[items[i]] = true;
-  return obj;
-}
-
-
-/**
- * @example
- * htmlParser(htmlString, {
- *     start: function(tag, attrs, unary) {},
- *     end: function(tag) {},
- *     chars: function(text) {},
- *     comment: function(text) {}
- * });
- *
- * @param {string} html string
- * @param {object} handler
- */
-function htmlParser( html, handler ) {
-  var index, chars, match, stack = [], last = html;
-  stack.last = function() { return stack[ stack.length - 1 ]; };
-
-  while ( html ) {
-    chars = true;
-
-    // Make sure we're not in a script or style element
-    if ( !stack.last() || !specialElements[ stack.last() ] ) {
-
-      // Comment
-      if ( html.indexOf("<!--") === 0 ) {
-        // comments containing -- are not allowed unless they terminate the comment
-        index = html.indexOf("--", 4);
-
-        if ( index >= 0 && html.lastIndexOf("-->", index) === index) {
-          if (handler.comment) handler.comment( html.substring( 4, index ) );
-          html = html.substring( index + 3 );
-          chars = false;
-        }
-      // DOCTYPE
-      } else if ( DOCTYPE_REGEXP.test(html) ) {
-        match = html.match( DOCTYPE_REGEXP );
-
-        if ( match ) {
-          html = html.replace( match[0], '');
-          chars = false;
-        }
-      // end tag
-      } else if ( BEGING_END_TAGE_REGEXP.test(html) ) {
-        match = html.match( END_TAG_REGEXP );
-
-        if ( match ) {
-          html = html.substring( match[0].length );
-          match[0].replace( END_TAG_REGEXP, parseEndTag );
-          chars = false;
-        }
-
-      // start tag
-      } else if ( BEGIN_TAG_REGEXP.test(html) ) {
-        match = html.match( START_TAG_REGEXP );
-
-        if ( match ) {
-          html = html.substring( match[0].length );
-          match[0].replace( START_TAG_REGEXP, parseStartTag );
-          chars = false;
-        }
-      }
-
-      if ( chars ) {
-        index = html.indexOf("<");
-
-        var text = index < 0 ? html : html.substring( 0, index );
-        html = index < 0 ? "" : html.substring( index );
-
-        if (handler.chars) handler.chars( decodeEntities(text) );
-      }
-
-    } else {
-      html = html.replace(new RegExp("(.*)<\\s*\\/\\s*" + stack.last() + "[^>]*>", 'i'),
-        function(all, text){
-          text = text.replace(COMMENT_REGEXP, "$1").replace(CDATA_REGEXP, "$1");
-
-          if (handler.chars) handler.chars( decodeEntities(text) );
-
-          return "";
-      });
-
-      parseEndTag( "", stack.last() );
-    }
-
-    if ( html == last ) {
-      throw $sanitizeMinErr('badparse', "The sanitizer was unable to parse the following block " +
-                                        "of html: {0}", html);
-    }
-    last = html;
-  }
-
-  // Clean up any remaining tags
-  parseEndTag();
-
-  function parseStartTag( tag, tagName, rest, unary ) {
-    tagName = angular.lowercase(tagName);
-    if ( blockElements[ tagName ] ) {
-      while ( stack.last() && inlineElements[ stack.last() ] ) {
-        parseEndTag( "", stack.last() );
-      }
-    }
-
-    if ( optionalEndTagElements[ tagName ] && stack.last() == tagName ) {
-      parseEndTag( "", tagName );
-    }
-
-    unary = voidElements[ tagName ] || !!unary;
-
-    if ( !unary )
-      stack.push( tagName );
-
-    var attrs = {};
-
-    rest.replace(ATTR_REGEXP,
-      function(match, name, doubleQuotedValue, singleQuotedValue, unquotedValue) {
-        var value = doubleQuotedValue
-          || singleQuotedValue
-          || unquotedValue
-          || '';
-
-        attrs[name] = decodeEntities(value);
-    });
-    if (handler.start) handler.start( tagName, attrs, unary );
-  }
-
-  function parseEndTag( tag, tagName ) {
-    var pos = 0, i;
-    tagName = angular.lowercase(tagName);
-    if ( tagName )
-      // Find the closest opened tag of the same type
-      for ( pos = stack.length - 1; pos >= 0; pos-- )
-        if ( stack[ pos ] == tagName )
-          break;
-
-    if ( pos >= 0 ) {
-      // Close all the open elements, up the stack
-      for ( i = stack.length - 1; i >= pos; i-- )
-        if (handler.end) handler.end( stack[ i ] );
-
-      // Remove the open elements from the stack
-      stack.length = pos;
-    }
-  }
-}
-
-var hiddenPre=document.createElement("pre");
-var spaceRe = /^(\s*)([\s\S]*?)(\s*)$/;
-/**
- * decodes all entities into regular string
- * @param value
- * @returns {string} A string with decoded entities.
- */
-function decodeEntities(value) {
-  if (!value) { return ''; }
-
-  // Note: IE8 does not preserve spaces at the start/end of innerHTML
-  // so we must capture them and reattach them afterward
-  var parts = spaceRe.exec(value);
-  var spaceBefore = parts[1];
-  var spaceAfter = parts[3];
-  var content = parts[2];
-  if (content) {
-    hiddenPre.innerHTML=content.replace(/</g,"&lt;");
-    // innerText depends on styling as it doesn't display hidden elements.
-    // Therefore, it's better to use textContent not to cause unnecessary
-    // reflows. However, IE<9 don't support textContent so the innerText
-    // fallback is necessary.
-    content = 'textContent' in hiddenPre ?
-      hiddenPre.textContent : hiddenPre.innerText;
-  }
-  return spaceBefore + content + spaceAfter;
-}
-
-/**
- * Escapes all potentially dangerous characters, so that the
- * resulting string can be safely inserted into attribute or
- * element text.
- * @param value
- * @returns {string} escaped text
- */
-function encodeEntities(value) {
-  return value.
-    replace(/&/g, '&amp;').
-    replace(SURROGATE_PAIR_REGEXP, function (value) {
-      var hi = value.charCodeAt(0);
-      var low = value.charCodeAt(1);
-      return '&#' + (((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000) + ';';
-    }).
-    replace(NON_ALPHANUMERIC_REGEXP, function(value){
-      return '&#' + value.charCodeAt(0) + ';';
-    }).
-    replace(/</g, '&lt;').
-    replace(/>/g, '&gt;');
-}
-
-/**
- * create an HTML/XML writer which writes to buffer
- * @param {Array} buf use buf.jain('') to get out sanitized html string
- * @returns {object} in the form of {
- *     start: function(tag, attrs, unary) {},
- *     end: function(tag) {},
- *     chars: function(text) {},
- *     comment: function(text) {}
- * }
- */
-function htmlSanitizeWriter(buf, uriValidator){
-  var ignore = false;
-  var out = angular.bind(buf, buf.push);
-  return {
-    start: function(tag, attrs, unary){
-      tag = angular.lowercase(tag);
-      if (!ignore && specialElements[tag]) {
-        ignore = tag;
-      }
-      if (!ignore && validElements[tag] === true) {
-        out('<');
-        out(tag);
-        angular.forEach(attrs, function(value, key){
-          var lkey=angular.lowercase(key);
-          var isImage = (tag === 'img' && lkey === 'src') || (lkey === 'background');
-          if (validAttrs[lkey] === true &&
-            (uriAttrs[lkey] !== true || uriValidator(value, isImage))) {
-            out(' ');
-            out(key);
-            out('="');
-            out(encodeEntities(value));
-            out('"');
-          }
-        });
-        out(unary ? '/>' : '>');
-      }
-    },
-    end: function(tag){
-        tag = angular.lowercase(tag);
-        if (!ignore && validElements[tag] === true) {
-          out('</');
-          out(tag);
-          out('>');
-        }
-        if (tag == ignore) {
-          ignore = false;
-        }
-      },
-    chars: function(chars){
-        if (!ignore) {
-          out(encodeEntities(chars));
-        }
-      }
-  };
-}
-
-
-// define ngSanitize module and register $sanitize service
-angular.module('ngSanitize', []).provider('$sanitize', $SanitizeProvider);
-
-/* global sanitizeText: false */
-
-/**
- * @ngdoc filter
- * @name linky
- * @kind function
- *
- * @description
- * Finds links in text input and turns them into html links. Supports http/https/ftp/mailto and
- * plain email address links.
- *
- * Requires the {@link ngSanitize `ngSanitize`} module to be installed.
- *
- * @param {string} text Input text.
- * @param {string} target Window (_blank|_self|_parent|_top) or named frame to open links in.
- * @returns {string} Html-linkified text.
- *
- * @usage
-   <span ng-bind-html="linky_expression | linky"></span>
- *
- * @example
-   <example module="ngSanitize" deps="angular-sanitize.js">
-     <file name="index.html">
-       <script>
-         function Ctrl($scope) {
-           $scope.snippet =
-             'Pretty text with some links:\n'+
-             'http://angularjs.org/,\n'+
-             'mailto:us@somewhere.org,\n'+
-             'another@somewhere.org,\n'+
-             'and one more: ftp://127.0.0.1/.';
-           $scope.snippetWithTarget = 'http://angularjs.org/';
-         }
-       </script>
-       <div ng-controller="Ctrl">
-       Snippet: <textarea ng-model="snippet" cols="60" rows="3"></textarea>
-       <table>
-         <tr>
-           <td>Filter</td>
-           <td>Source</td>
-           <td>Rendered</td>
-         </tr>
-         <tr id="linky-filter">
-           <td>linky filter</td>
-           <td>
-             <pre>&lt;div ng-bind-html="snippet | linky"&gt;<br>&lt;/div&gt;</pre>
-           </td>
-           <td>
-             <div ng-bind-html="snippet | linky"></div>
-           </td>
-         </tr>
-         <tr id="linky-target">
-          <td>linky target</td>
-          <td>
-            <pre>&lt;div ng-bind-html="snippetWithTarget | linky:'_blank'"&gt;<br>&lt;/div&gt;</pre>
-          </td>
-          <td>
-            <div ng-bind-html="snippetWithTarget | linky:'_blank'"></div>
-          </td>
-         </tr>
-         <tr id="escaped-html">
-           <td>no filter</td>
-           <td><pre>&lt;div ng-bind="snippet"&gt;<br>&lt;/div&gt;</pre></td>
-           <td><div ng-bind="snippet"></div></td>
-         </tr>
-       </table>
-     </file>
-     <file name="protractor.js" type="protractor">
-       it('should linkify the snippet with urls', function() {
-         expect(element(by.id('linky-filter')).element(by.binding('snippet | linky')).getText()).
-             toBe('Pretty text with some links: http://angularjs.org/, us@somewhere.org, ' +
-                  'another@somewhere.org, and one more: ftp://127.0.0.1/.');
-         expect(element.all(by.css('#linky-filter a')).count()).toEqual(4);
-       });
-
-       it('should not linkify snippet without the linky filter', function() {
-         expect(element(by.id('escaped-html')).element(by.binding('snippet')).getText()).
-             toBe('Pretty text with some links: http://angularjs.org/, mailto:us@somewhere.org, ' +
-                  'another@somewhere.org, and one more: ftp://127.0.0.1/.');
-         expect(element.all(by.css('#escaped-html a')).count()).toEqual(0);
-       });
-
-       it('should update', function() {
-         element(by.model('snippet')).clear();
-         element(by.model('snippet')).sendKeys('new http://link.');
-         expect(element(by.id('linky-filter')).element(by.binding('snippet | linky')).getText()).
-             toBe('new http://link.');
-         expect(element.all(by.css('#linky-filter a')).count()).toEqual(1);
-         expect(element(by.id('escaped-html')).element(by.binding('snippet')).getText())
-             .toBe('new http://link.');
-       });
-
-       it('should work with the target property', function() {
-        expect(element(by.id('linky-target')).
-            element(by.binding("snippetWithTarget | linky:'_blank'")).getText()).
-            toBe('http://angularjs.org/');
-        expect(element(by.css('#linky-target a')).getAttribute('target')).toEqual('_blank');
-       });
-     </file>
-   </example>
- */
-angular.module('ngSanitize').filter('linky', ['$sanitize', function($sanitize) {
-  var LINKY_URL_REGEXP =
-        /((ftp|https?):\/\/|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s.;,(){}<>]/,
-      MAILTO_REGEXP = /^mailto:/;
-
-  return function(text, target) {
-    if (!text) return text;
-    var match;
-    var raw = text;
-    var html = [];
-    var url;
-    var i;
-    while ((match = raw.match(LINKY_URL_REGEXP))) {
-      // We can not end in these as they are sometimes found at the end of the sentence
-      url = match[0];
-      // if we did not match ftp/http/mailto then assume mailto
-      if (match[2] == match[3]) url = 'mailto:' + url;
-      i = match.index;
-      addText(raw.substr(0, i));
-      addLink(url, match[0].replace(MAILTO_REGEXP, ''));
-      raw = raw.substring(i + match[0].length);
-    }
-    addText(raw);
-    return $sanitize(html.join(''));
-
-    function addText(text) {
-      if (!text) {
-        return;
-      }
-      html.push(sanitizeText(text));
-    }
-
-    function addLink(url, text) {
-      html.push('<a ');
-      if (angular.isDefined(target)) {
-        html.push('target="');
-        html.push(target);
-        html.push('" ');
-      }
-      html.push('href="');
-      html.push(url);
-      html.push('">');
-      addText(text);
-      html.push('</a>');
-    }
-  };
-}]);
-
-
-})(window, window.angular);

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-sanitize.min.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-sanitize.min.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-sanitize.min.js
deleted file mode 100644
index 50d8ce8..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-sanitize.min.js
+++ /dev/null
@@ -1,15 +0,0 @@
-/*
- AngularJS v1.2.19
- (c) 2010-2014 Google, Inc. http://angularjs.org
- License: MIT
-*/
-(function(p,h,q){'use strict';function E(a){var d=[];s(d,h.noop).chars(a);return d.join("")}function k(a){var d={};a=a.split(",");var b;for(b=0;b<a.length;b++)d[a[b]]=!0;return d}function F(a,d){function b(a,c,b,g){c=h.lowercase(c);if(t[c])for(;f.last()&&u[f.last()];)e("",f.last());v[c]&&f.last()==c&&e("",c);(g=w[c]||!!g)||f.push(c);var l={};b.replace(G,function(a,c,d,b,e){l[c]=r(d||b||e||"")});d.start&&d.start(c,l,g)}function e(a,c){var b=0,e;if(c=h.lowercase(c))for(b=f.length-1;0<=b&&f[b]!=c;b--);
-if(0<=b){for(e=f.length-1;e>=b;e--)d.end&&d.end(f[e]);f.length=b}}var c,g,f=[],l=a;for(f.last=function(){return f[f.length-1]};a;){g=!0;if(f.last()&&x[f.last()])a=a.replace(RegExp("(.*)<\\s*\\/\\s*"+f.last()+"[^>]*>","i"),function(c,a){a=a.replace(H,"$1").replace(I,"$1");d.chars&&d.chars(r(a));return""}),e("",f.last());else{if(0===a.indexOf("\x3c!--"))c=a.indexOf("--",4),0<=c&&a.lastIndexOf("--\x3e",c)===c&&(d.comment&&d.comment(a.substring(4,c)),a=a.substring(c+3),g=!1);else if(y.test(a)){if(c=a.match(y))a=
-a.replace(c[0],""),g=!1}else if(J.test(a)){if(c=a.match(z))a=a.substring(c[0].length),c[0].replace(z,e),g=!1}else K.test(a)&&(c=a.match(A))&&(a=a.substring(c[0].length),c[0].replace(A,b),g=!1);g&&(c=a.indexOf("<"),g=0>c?a:a.substring(0,c),a=0>c?"":a.substring(c),d.chars&&d.chars(r(g)))}if(a==l)throw L("badparse",a);l=a}e()}function r(a){if(!a)return"";var d=M.exec(a);a=d[1];var b=d[3];if(d=d[2])n.innerHTML=d.replace(/</g,"&lt;"),d="textContent"in n?n.textContent:n.innerText;return a+d+b}function B(a){return a.replace(/&/g,
-"&amp;").replace(N,function(a){var b=a.charCodeAt(0);a=a.charCodeAt(1);return"&#"+(1024*(b-55296)+(a-56320)+65536)+";"}).replace(O,function(a){return"&#"+a.charCodeAt(0)+";"}).replace(/</g,"&lt;").replace(/>/g,"&gt;")}function s(a,d){var b=!1,e=h.bind(a,a.push);return{start:function(a,g,f){a=h.lowercase(a);!b&&x[a]&&(b=a);b||!0!==C[a]||(e("<"),e(a),h.forEach(g,function(b,f){var g=h.lowercase(f),k="img"===a&&"src"===g||"background"===g;!0!==P[g]||!0===D[g]&&!d(b,k)||(e(" "),e(f),e('="'),e(B(b)),e('"'))}),
-e(f?"/>":">"))},end:function(a){a=h.lowercase(a);b||!0!==C[a]||(e("</"),e(a),e(">"));a==b&&(b=!1)},chars:function(a){b||e(B(a))}}}var L=h.$$minErr("$sanitize"),A=/^<\s*([\w:-]+)((?:\s+[\w:-]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)\s*>/,z=/^<\s*\/\s*([\w:-]+)[^>]*>/,G=/([\w:-]+)(?:\s*=\s*(?:(?:"((?:[^"])*)")|(?:'((?:[^'])*)')|([^>\s]+)))?/g,K=/^</,J=/^<\s*\//,H=/\x3c!--(.*?)--\x3e/g,y=/<!DOCTYPE([^>]*?)>/i,I=/<!\[CDATA\[(.*?)]]\x3e/g,N=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,O=/([^\#-~| |!])/g,
-w=k("area,br,col,hr,img,wbr");p=k("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr");q=k("rp,rt");var v=h.extend({},q,p),t=h.extend({},p,k("address,article,aside,blockquote,caption,center,del,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,map,menu,nav,ol,pre,script,section,table,ul")),u=h.extend({},q,k("a,abbr,acronym,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,q,ruby,rp,rt,s,samp,small,span,strike,strong,sub,sup,time,tt,u,var")),x=k("script,style"),
-C=h.extend({},w,t,u,v),D=k("background,cite,href,longdesc,src,usemap"),P=h.extend({},D,k("abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,ismap,lang,language,nohref,nowrap,rel,rev,rows,rowspan,rules,scope,scrolling,shape,size,span,start,summary,target,title,type,valign,value,vspace,width")),n=document.createElement("pre"),M=/^(\s*)([\s\S]*?)(\s*)$/;h.module("ngSanitize",[]).provider("$sanitize",function(){this.$get=
-["$$sanitizeUri",function(a){return function(d){var b=[];F(d,s(b,function(b,c){return!/^unsafe/.test(a(b,c))}));return b.join("")}}]});h.module("ngSanitize").filter("linky",["$sanitize",function(a){var d=/((ftp|https?):\/\/|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s.;,(){}<>]/,b=/^mailto:/;return function(e,c){function g(a){a&&m.push(E(a))}function f(a,b){m.push("<a ");h.isDefined(c)&&(m.push('target="'),m.push(c),m.push('" '));m.push('href="');m.push(a);m.push('">');g(b);m.push("</a>")}if(!e)return e;
-for(var l,k=e,m=[],n,p;l=k.match(d);)n=l[0],l[2]==l[3]&&(n="mailto:"+n),p=l.index,g(k.substr(0,p)),f(n,l[0].replace(b,"")),k=k.substring(p+l[0].length);g(k);return a(m.join(""))}}])})(window,window.angular);
-//# sourceMappingURL=angular-sanitize.min.js.map

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-sanitize.min.js.map
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-sanitize.min.js.map b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-sanitize.min.js.map
deleted file mode 100644
index b267327..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-sanitize.min.js.map
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-"version":3,
-"file":"angular-sanitize.min.js",
-"lineCount":14,
-"mappings":"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",
-"sources":["angular-sanitize.js"],
-"names":["window","angular","undefined","sanitizeText","chars","buf","htmlSanitizeWriter","writer","noop","join","makeMap","str","obj","items","split","i","length","htmlParser","html","handler","parseStartTag","tag","tagName","rest","unary","lowercase","blockElements","stack","last","inlineElements","parseEndTag","optionalEndTagElements","voidElements","push","attrs","replace","ATTR_REGEXP","match","name","doubleQuotedValue","singleQuotedValue","unquotedValue","decodeEntities","start","pos","end","index","stack.last","specialElements","RegExp","all","text","COMMENT_REGEXP","CDATA_REGEXP","indexOf","lastIndexOf","comment","substring","DOCTYPE_REGEXP","test","BEGING_END_TAGE_REGEXP","END_TAG_REGEXP","BEGIN_TAG_REGEXP","START_TAG_REGEXP","$sanitizeMinErr","value","parts","spaceRe","exec","spaceBefore","spaceAfter","content","hiddenPre","innerHTML","textContent","innerText","encodeEntities","SURROGATE_PAIR_REGEXP","hi","charCodeAt","low","NON_ALPHANUMERIC_REGEXP","uriValidator","ignore"
 ,"out","bind","validElements","forEach","key","lkey","isImage","validAttrs","uriAttrs","$$minErr","optionalEndTagBlockElements","optionalEndTagInlineElements","extend","document","createElement","module","provider","$SanitizeProvider","$get","$$sanitizeUri","uri","filter","$sanitize","LINKY_URL_REGEXP","MAILTO_REGEXP","target","addText","addLink","url","isDefined","raw","substr"]
-}


[31/71] [abbrv] brooklyn-ui git commit: Redirects web gui to root on logout to prevent login failure after logout

Posted by he...@apache.org.
Redirects web gui to root on logout to prevent login failure after logout


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/commit/f03c323f
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/tree/f03c323f
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/diff/f03c323f

Branch: refs/heads/0.7.0-incubating
Commit: f03c323f7c7124eef84578d0dd5a47cda239baf7
Parents: c7a0221
Author: Martin Harris <gi...@nakomis.com>
Authored: Thu Mar 5 13:05:00 2015 +0000
Committer: Martin Harris <gi...@nakomis.com>
Committed: Thu Mar 5 13:05:00 2015 +0000

----------------------------------------------------------------------
 .../webapp/assets/js/util/brooklyn-utils.js     | 20 ++++++++++++++++++++
 usage/jsgui/src/main/webapp/index.html          |  2 +-
 2 files changed, 21 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/f03c323f/usage/jsgui/src/main/webapp/assets/js/util/brooklyn-utils.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/js/util/brooklyn-utils.js b/usage/jsgui/src/main/webapp/assets/js/util/brooklyn-utils.js
index 94a1299..318a734 100644
--- a/usage/jsgui/src/main/webapp/assets/js/util/brooklyn-utils.js
+++ b/usage/jsgui/src/main/webapp/assets/js/util/brooklyn-utils.js
@@ -174,6 +174,26 @@ define([
         return false; 
     };
 
+    Util.logout = function logout() {
+        $.ajax({
+            type: "POST",
+            dataType: "text",
+            url: "/logout",
+            success: function() {
+                window.location.replace("/");
+            },
+            failure: function() {
+                window.location.replace("/");
+            }
+        });
+    }
+
+    $("#logout-link").on("click", function (e) {
+        e.preventDefault();
+        Util.logout()
+        return false;
+    });
+
     return Util;
 
 });

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/f03c323f/usage/jsgui/src/main/webapp/index.html
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/index.html b/usage/jsgui/src/main/webapp/index.html
index 4458026..75733ab 100644
--- a/usage/jsgui/src/main/webapp/index.html
+++ b/usage/jsgui/src/main/webapp/index.html
@@ -44,7 +44,7 @@ under the License.
 
 <div class="navbar navbar-fixed-top">
     <div class="navbar-inner">
-        <div class="userName-top"><span id="user"></span> | <a href="/logout">Log out</a></div>
+        <div class="userName-top"><span id="user"></span> | <a href="/logout" id="logout-link">Log out</a></div>
         <div class="container">
             <a class="logo" href="#" title="Brooklyn, Version 0.7.0-SNAPSHOT"><!-- Logo added via CSS --></a> <!-- BROOKLYN_VERSION -->
             <div class="menubar-top">


[61/71] [abbrv] brooklyn-ui git commit: Fix router-spec for browser.

Posted by he...@apache.org.
Fix router-spec for browser.


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/commit/2b297e3a
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/tree/2b297e3a
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/diff/2b297e3a

Branch: refs/heads/0.7.0-incubating
Commit: 2b297e3aa118b8570247135f63ff602f9ec3b792
Parents: 817b10e
Author: Sam Corbett <sa...@cloudsoftcorp.com>
Authored: Mon May 18 12:36:58 2015 +0100
Committer: Sam Corbett <sa...@cloudsoftcorp.com>
Committed: Fri May 29 14:38:53 2015 +0100

----------------------------------------------------------------------
 usage/jsgui/src/test/javascript/specs/router-spec.js        | 4 ++--
 usage/jsgui/src/test/javascript/specs/util/brooklyn-spec.js | 1 -
 2 files changed, 2 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2b297e3a/usage/jsgui/src/test/javascript/specs/router-spec.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/test/javascript/specs/router-spec.js b/usage/jsgui/src/test/javascript/specs/router-spec.js
index 0041373..8f54bb8 100644
--- a/usage/jsgui/src/test/javascript/specs/router-spec.js
+++ b/usage/jsgui/src/test/javascript/specs/router-spec.js
@@ -17,8 +17,8 @@
  * under the License.
 */
 define([
-    "brooklyn", "router", "model/ha"
-], function (Brooklyn, Router, ha) {
+    "brooklyn", "router"
+], function (Brooklyn, Router) {
 
     var View = Backbone.View.extend({
         render:function () {

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2b297e3a/usage/jsgui/src/test/javascript/specs/util/brooklyn-spec.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/test/javascript/specs/util/brooklyn-spec.js b/usage/jsgui/src/test/javascript/specs/util/brooklyn-spec.js
index 3fcfcc2..4098235 100644
--- a/usage/jsgui/src/test/javascript/specs/util/brooklyn-spec.js
+++ b/usage/jsgui/src/test/javascript/specs/util/brooklyn-spec.js
@@ -54,7 +54,6 @@ define([
                     template: formTemplate,
                     onSubmit: onSubmit
                 });
-                console.log(form.$(".submit"));
                 form.$("form").trigger("submit");
                 expect(wasCalled).toBe(true);
             });


[63/71] [abbrv] brooklyn-ui git commit: jsgui - don't wrap catalog items in accordion

Posted by he...@apache.org.
jsgui - don't wrap catalog items in accordion


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/commit/0c825e86
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/tree/0c825e86
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/diff/0c825e86

Branch: refs/heads/0.7.0-incubating
Commit: 0c825e867588b6d9be6271f438b54e78e33d85ca
Parents: e917f08
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Sat Jun 20 09:50:45 2015 -0700
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Sun Jun 21 12:22:11 2015 -0700

----------------------------------------------------------------------
 usage/jsgui/src/main/webapp/assets/css/base.css | 5 +++++
 1 file changed, 5 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/0c825e86/usage/jsgui/src/main/webapp/assets/css/base.css
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/css/base.css b/usage/jsgui/src/main/webapp/assets/css/base.css
index 20938b5..c33d015 100644
--- a/usage/jsgui/src/main/webapp/assets/css/base.css
+++ b/usage/jsgui/src/main/webapp/assets/css/base.css
@@ -1114,6 +1114,11 @@ tr.app-add-wizard-config-entry {
     margin-bottom: 6px;
     background-color: #F0F0F0;
     border-radius: 5px;
+    overflow-y: scroll;
+}
+.catalog-accordion-wrapper .accordion-nav-row {
+    white-space: pre;
+    word-wrap: normal;
 }
 .accordion-item {
     -webkit-border-radius: 5px;


[65/71] [abbrv] brooklyn-ui git commit: tidy jsgui for sensors+config

Posted by he...@apache.org.
tidy jsgui for sensors+config

* word "copied" properly removed after delay
* use nice tooltip styling
* suppress tooltip if no useful info (ad hoc sensor/config)


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/commit/e917f086
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/tree/e917f086
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/diff/e917f086

Branch: refs/heads/0.7.0-incubating
Commit: e917f086724b3d1cd338c48dbfd567b0b33f86d4
Parents: dcbed70
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Fri Jun 19 20:22:30 2015 -0700
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Sun Jun 21 12:22:11 2015 -0700

----------------------------------------------------------------------
 .../main/webapp/assets/js/view/entity-config.js | 33 +++++++++-----------
 .../webapp/assets/js/view/entity-sensors.js     | 33 +++++++++-----------
 .../webapp/assets/tpl/apps/config-name.html     | 12 ++++++-
 .../webapp/assets/tpl/apps/sensor-name.html     | 12 ++++++-
 4 files changed, 52 insertions(+), 38 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/e917f086/usage/jsgui/src/main/webapp/assets/js/view/entity-config.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/js/view/entity-config.js b/usage/jsgui/src/main/webapp/assets/js/view/entity-config.js
index 924339d..befd9f2 100644
--- a/usage/jsgui/src/main/webapp/assets/js/view/entity-config.js
+++ b/usage/jsgui/src/main/webapp/assets/js/view/entity-config.js
@@ -176,30 +176,24 @@ define([
             
             this.zeroClipboard = new ZeroClipboard();
             this.zeroClipboard.on( "dataRequested" , function(client) {
-                var text = $(this).attr('copy-value');
-                if (!text) text = $(this).closest('.floatGroup').find('.value').html();
                 try {
-//                    log("Copying text '"+text+"' to clipboard");
+                    // the zeroClipboard instance is a singleton so check our scope first
+                    if (!$(this).closest("#config-table").length) return;
+                    var text = $(this).attr('copy-value');
+                    if (!text) text = $(this).closest('.floatGroup').find('.value').html();
+                    
+//                    log("Copying config text '"+text+"' to clipboard");
                     client.setText(text);
                     
-                    var $widget = $(this);
-                    var oldHtml = $widget.html();
-                    var fnRestore = _.once(function() { $widget.html(oldHtml); });
-                    // show the word copied for feedback;
+                    // show the word "copied" for feedback;
                     // NB this occurs on mousedown, due to how flash plugin works
                     // (same style of feedback and interaction as github)
                     // the other "clicks" are now triggered by *mouseup*
+                    var $widget = $(this);
+                    var oldHtml = $widget.html();
                     $widget.html('<b>Copied!</b>');
-                    setTimeout(fnRestore, 3000);
-                    
-                    // these listeners stay registered until page is reloaded
-                    // but they do nothing after first run, due to use of _.once
-                    // however the timeout is good enough, and actually desired
-                    // because on corner case of mousedown-moveaway-mouseup,
-                    // we want to keep the feedback; so they work, but are disabled for now.
-                    // (remove once we are happy with this behaviour, since Feb 2014)
-//                    that.zeroClipboard.on( "mouseout", fnRestore);
-//                    that.zeroClipboard.on( "mouseup", fnRestore);
+                    // use a timeout to restore because mouseouts can leave corner cases (see history)
+                    setTimeout(function() { $widget.html(oldHtml); }, 600);
                 } catch (e) {
                     log("Zeroclipboard failure; falling back to prompt mechanism");
                     log(e);
@@ -229,7 +223,10 @@ define([
         floatMenuActive: false,
         lastFloatMenuRowId: null,
         lastFloatFocusInTextForEventUnmangling: null,
-        updateFloatMenus: function() { this.zeroClipboard.clip( $('.valueCopy') ); },
+        updateFloatMenus: function() {
+            $('#config-table *[rel="tooltip"]').tooltip();
+            this.zeroClipboard.clip( $('.valueCopy') );
+        },
         showFloatLeft: function(event) {
             this.noteFloatMenuFocusChange(true, event, "show-left");
             this.showFloatLeftOf($(event.currentTarget));

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/e917f086/usage/jsgui/src/main/webapp/assets/js/view/entity-sensors.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/js/view/entity-sensors.js b/usage/jsgui/src/main/webapp/assets/js/view/entity-sensors.js
index cf84508..7fbf90e 100644
--- a/usage/jsgui/src/main/webapp/assets/js/view/entity-sensors.js
+++ b/usage/jsgui/src/main/webapp/assets/js/view/entity-sensors.js
@@ -184,30 +184,24 @@ define([
             
             this.zeroClipboard = new ZeroClipboard();
             this.zeroClipboard.on( "dataRequested" , function(client) {
-                var text = $(this).attr('copy-value');
-                if (!text) text = $(this).closest('.floatGroup').find('.value').html();
                 try {
-//                    log("Copying text '"+text+"' to clipboard");
+                    // the zeroClipboard instance is a singleton so check our scope first
+                    if (!$(this).closest("#sensors-table").length) return;
+                    var text = $(this).attr('copy-value');
+                    if (!text) text = $(this).closest('.floatGroup').find('.value').html();
+                    
+//                    log("Copying sensors text '"+text+"' to clipboard");
                     client.setText(text);
                     
-                    var $widget = $(this);
-                    var oldHtml = $widget.html();
-                    var fnRestore = _.once(function() { $widget.html(oldHtml); });
-                    // show the word copied for feedback;
+                    // show the word "copied" for feedback;
                     // NB this occurs on mousedown, due to how flash plugin works
                     // (same style of feedback and interaction as github)
                     // the other "clicks" are now triggered by *mouseup*
+                    var $widget = $(this);
+                    var oldHtml = $widget.html();
                     $widget.html('<b>Copied!</b>');
-                    setTimeout(fnRestore, 3000);
-                    
-                    // these listeners stay registered until page is reloaded
-                    // but they do nothing after first run, due to use of _.once
-                    // however the timeout is good enough, and actually desired
-                    // because on corner case of mousedown-moveaway-mouseup,
-                    // we want to keep the feedback; so they work, but are disabled for now.
-                    // (remove once we are happy with this behaviour, since Feb 2014)
-//                    that.zeroClipboard.on( "mouseout", fnRestore);
-//                    that.zeroClipboard.on( "mouseup", fnRestore);
+                    // use a timeout to restore because mouseouts can leave corner cases (see history)
+                    setTimeout(function() { $widget.html(oldHtml); }, 600);
                 } catch (e) {
                     log("Zeroclipboard failure; falling back to prompt mechanism");
                     log(e);
@@ -248,7 +242,10 @@ define([
         floatMenuActive: false,
         lastFloatMenuRowId: null,
         lastFloatFocusInTextForEventUnmangling: null,
-        updateFloatMenus: function() { this.zeroClipboard.clip( $('.valueCopy') ); },
+        updateFloatMenus: function() {
+            $('#sensors-table *[rel="tooltip"]').tooltip();
+            this.zeroClipboard.clip( $('.valueCopy') );
+        },
         showFloatLeft: function(event) {
             this.noteFloatMenuFocusChange(true, event, "show-left");
             this.showFloatLeftOf($(event.currentTarget));

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/e917f086/usage/jsgui/src/main/webapp/assets/tpl/apps/config-name.html
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/tpl/apps/config-name.html b/usage/jsgui/src/main/webapp/assets/tpl/apps/config-name.html
index cc183b9..1170415 100644
--- a/usage/jsgui/src/main/webapp/assets/tpl/apps/config-name.html
+++ b/usage/jsgui/src/main/webapp/assets/tpl/apps/config-name.html
@@ -18,7 +18,17 @@ specific language governing permissions and limitations
 under the License.
 -->
 
+<% if (description || type) { %>
 <span class="config-name" rel="tooltip" data-placement="left"
-    title="<% if (description) { %><b><%- description %></b><br/><% } %>(<%- type %>)">
+    title="<% 
+         if (description) { %><b><%- description %></b><br/><% } 
+         if (type) { %>(<% 
+           if (type.startsWith("java.lang.") || type.startsWith("util.")) type = type.substring(10);
+         %><%- type %>)<% } %>">
     <%- name %>
 </span>
+<% } else { %>
+<span class="config-name">
+    <%- name %>
+</span>
+<% } %>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/e917f086/usage/jsgui/src/main/webapp/assets/tpl/apps/sensor-name.html
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/tpl/apps/sensor-name.html b/usage/jsgui/src/main/webapp/assets/tpl/apps/sensor-name.html
index 6a5577b..222ba1f 100644
--- a/usage/jsgui/src/main/webapp/assets/tpl/apps/sensor-name.html
+++ b/usage/jsgui/src/main/webapp/assets/tpl/apps/sensor-name.html
@@ -18,7 +18,17 @@ specific language governing permissions and limitations
 under the License.
 -->
 
+<% if (description || type) { %>
 <span class="sensor-name" rel="tooltip" data-placement="left"
-    title="<% if (description) { %><b><%- description %></b><br/><% } %>(<%- type %>)">
+    title="<% 
+         if (description) { %><b><%- description %></b><br/><% } 
+         if (type) { %>(<% 
+           if (type.startsWith("java.lang.") || type.startsWith("util.")) type = type.substring(10);
+         %><%- type %>)<% } %>">
     <%- name %>
 </span>
+<% } else { %>
+<span class="sensor-name">
+    <%- name %>
+</span>
+<% } %>


[70/71] [abbrv] brooklyn-ui git commit: Change version to 0.7.0-incubating

Posted by he...@apache.org.
Change version to 0.7.0-incubating


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/commit/fd0c411c
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/tree/fd0c411c
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/diff/fd0c411c

Branch: refs/heads/0.7.0-incubating
Commit: fd0c411c691e125cfe7a127a0763a7b40e6969e7
Parents: b4e78ed
Author: Richard Downer <ri...@apache.org>
Authored: Fri Jun 26 14:10:44 2015 +0000
Committer: Richard Downer <ri...@apache.org>
Committed: Fri Jun 26 14:10:44 2015 +0000

----------------------------------------------------------------------
 usage/jsgui/pom.xml                                   | 2 +-
 usage/jsgui/src/main/webapp/assets/tpl/help/page.html | 2 +-
 usage/jsgui/src/main/webapp/index.html                | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/fd0c411c/usage/jsgui/pom.xml
----------------------------------------------------------------------
diff --git a/usage/jsgui/pom.xml b/usage/jsgui/pom.xml
index 9ffdef0..ce21247 100644
--- a/usage/jsgui/pom.xml
+++ b/usage/jsgui/pom.xml
@@ -32,7 +32,7 @@
     <parent>
         <groupId>org.apache.brooklyn</groupId>
         <artifactId>brooklyn-parent</artifactId>
-        <version>0.7.0-SNAPSHOT</version><!-- BROOKLYN_VERSION -->
+        <version>0.7.0-incubating</version><!-- BROOKLYN_VERSION -->
         <relativePath>../../pom.xml</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/fd0c411c/usage/jsgui/src/main/webapp/assets/tpl/help/page.html
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/tpl/help/page.html b/usage/jsgui/src/main/webapp/assets/tpl/help/page.html
index dc35b17..eb81958 100644
--- a/usage/jsgui/src/main/webapp/assets/tpl/help/page.html
+++ b/usage/jsgui/src/main/webapp/assets/tpl/help/page.html
@@ -28,7 +28,7 @@ under the License.
     Brooklyn is an Apache-licensed open-source project for deployment and management.
     </p>
     
-    <p>You are currently using Brooklyn Version 0.7.0-SNAPSHOT.</p> <!-- BROOKLYN_VERSION -->
+    <p>You are currently using Brooklyn Version 0.7.0-incubating.</p> <!-- BROOKLYN_VERSION -->
     
     <hr/>
     Some useful references include:

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/fd0c411c/usage/jsgui/src/main/webapp/index.html
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/index.html b/usage/jsgui/src/main/webapp/index.html
index fda3514..f2052ef 100644
--- a/usage/jsgui/src/main/webapp/index.html
+++ b/usage/jsgui/src/main/webapp/index.html
@@ -45,7 +45,7 @@ under the License.
     <div class="navbar-inner">
         <div class="userName-top"><span id="user"></span> | <a href="/logout" id="logout-link">Log out</a></div>
         <div class="container">
-            <a class="logo" href="#" title="Brooklyn, Version 0.7.0-SNAPSHOT"><!-- Logo added via CSS --></a> <!-- BROOKLYN_VERSION -->
+            <a class="logo" href="#" title="Brooklyn, Version 0.7.0-incubating"><!-- Logo added via CSS --></a> <!-- BROOKLYN_VERSION -->
             <div class="menubar-top">
                 <ul class="nav">
                     <li><a href="#v1/home" class="nav1 nav1_home">Home</a></li>


[35/71] [abbrv] brooklyn-ui git commit: Fix failing tests after changes to return 403 response code

Posted by he...@apache.org.
Fix failing tests after changes to return 403 response code


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/commit/67e671af
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/tree/67e671af
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/diff/67e671af

Branch: refs/heads/0.7.0-incubating
Commit: 67e671af7e24c606664c419b64eaf0f535e2faba
Parents: 9b85ada
Author: Svetoslav Neykov <sv...@cloudsoftcorp.com>
Authored: Fri Mar 6 16:16:57 2015 +0200
Committer: Svetoslav Neykov <sv...@cloudsoftcorp.com>
Committed: Thu Mar 19 16:03:08 2015 +0200

----------------------------------------------------------------------
 .../rest/jsgui/BrooklynJavascriptGuiLauncherTest.java   | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/67e671af/usage/jsgui/src/test/java/brooklyn/rest/jsgui/BrooklynJavascriptGuiLauncherTest.java
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/test/java/brooklyn/rest/jsgui/BrooklynJavascriptGuiLauncherTest.java b/usage/jsgui/src/test/java/brooklyn/rest/jsgui/BrooklynJavascriptGuiLauncherTest.java
index ca82ee1..ab55d66 100644
--- a/usage/jsgui/src/test/java/brooklyn/rest/jsgui/BrooklynJavascriptGuiLauncherTest.java
+++ b/usage/jsgui/src/test/java/brooklyn/rest/jsgui/BrooklynJavascriptGuiLauncherTest.java
@@ -27,6 +27,7 @@ import brooklyn.config.BrooklynServiceAttributes;
 import brooklyn.entity.basic.Entities;
 import brooklyn.management.ManagementContext;
 import brooklyn.rest.BrooklynRestApiLauncherTestFixture;
+import brooklyn.test.Asserts;
 import brooklyn.test.HttpTestUtils;
 
 /** Convenience and demo for launching programmatically. */
@@ -60,8 +61,15 @@ public class BrooklynJavascriptGuiLauncherTest {
         checkUrlContains("/v1/catalog/entities", "Tomcat");
     }
 
-    protected void checkUrlContains(String path, String text) {
-        HttpTestUtils.assertContentContainsText(rootUrl()+path, text);
+    protected void checkUrlContains(final String path, final String text) {
+        //Server may return 403 until it loads completely, wait a bit
+        //until it stabilizes.
+        Asserts.succeedsEventually(new Runnable() {
+            @Override
+            public void run() {
+                HttpTestUtils.assertContentContainsText(rootUrl()+path, text);
+            }
+        });
     }
 
     protected void checkEventuallyHealthy() {


[05/71] [abbrv] brooklyn-ui git commit: Move mobile app to sandbox

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/css/mobile-angular-ui-base.css
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/css/mobile-angular-ui-base.css b/usage/jsgui/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/css/mobile-angular-ui-base.css
deleted file mode 100644
index 66bc9b3..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/css/mobile-angular-ui-base.css
+++ /dev/null
@@ -1,7543 +0,0 @@
-/* FONT PATH
- * -------------------------- */
-
-@font-face {
-  font-family: 'FontAwesome';
-  src: url('../fonts/fontawesome-webfont.eot?v=4.1.0');
-  src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.1.0') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff?v=4.1.0') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.1.0') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.1.0#fontawesomeregular') format('svg');
-  font-weight: normal;
-  font-style: normal;
-}
-
-.fa {
-  display: inline-block;
-  font-family: FontAwesome;
-  font-style: normal;
-  font-weight: normal;
-  line-height: 1;
-  -webkit-font-smoothing: antialiased;
-  -moz-osx-font-smoothing: grayscale;
-}
-
-/* makes the font 33% larger relative to the icon container */
-
-.fa-lg {
-  font-size: 1.33333333em;
-  line-height: 0.75em;
-  vertical-align: -15%;
-}
-
-.fa-2x {
-  font-size: 2em;
-}
-
-.fa-3x {
-  font-size: 3em;
-}
-
-.fa-4x {
-  font-size: 4em;
-}
-
-.fa-5x {
-  font-size: 5em;
-}
-
-.fa-fw {
-  width: 1.28571429em;
-  text-align: center;
-}
-
-.fa-ul {
-  padding-left: 0;
-  margin-left: 2.14285714em;
-  list-style-type: none;
-}
-
-.fa-ul > li {
-  position: relative;
-}
-
-.fa-li {
-  position: absolute;
-  left: -2.14285714em;
-  width: 2.14285714em;
-  top: 0.14285714em;
-  text-align: center;
-}
-
-.fa-li.fa-lg {
-  left: -1.85714286em;
-}
-
-.fa-border {
-  padding: .2em .25em .15em;
-  border: solid 0.08em #eeeeee;
-  border-radius: .1em;
-}
-
-.pull-right {
-  float: right;
-}
-
-.pull-left {
-  float: left;
-}
-
-.fa.pull-left {
-  margin-right: .3em;
-}
-
-.fa.pull-right {
-  margin-left: .3em;
-}
-
-.fa-spin {
-  -webkit-animation: spin 2s infinite linear;
-  -moz-animation: spin 2s infinite linear;
-  -o-animation: spin 2s infinite linear;
-  animation: spin 2s infinite linear;
-}
-
-@-moz-keyframes spin {
-  0% {
-    -moz-transform: rotate(0deg);
-  }
-
-  100% {
-    -moz-transform: rotate(359deg);
-  }
-}
-
-@-webkit-keyframes spin {
-  0% {
-    -webkit-transform: rotate(0deg);
-  }
-
-  100% {
-    -webkit-transform: rotate(359deg);
-  }
-}
-
-@-o-keyframes spin {
-  0% {
-    -o-transform: rotate(0deg);
-  }
-
-  100% {
-    -o-transform: rotate(359deg);
-  }
-}
-
-@keyframes spin {
-  0% {
-    -webkit-transform: rotate(0deg);
-    transform: rotate(0deg);
-  }
-
-  100% {
-    -webkit-transform: rotate(359deg);
-    transform: rotate(359deg);
-  }
-}
-
-.fa-rotate-90 {
-  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
-  -webkit-transform: rotate(90deg);
-  -moz-transform: rotate(90deg);
-  -ms-transform: rotate(90deg);
-  -o-transform: rotate(90deg);
-  transform: rotate(90deg);
-}
-
-.fa-rotate-180 {
-  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
-  -webkit-transform: rotate(180deg);
-  -moz-transform: rotate(180deg);
-  -ms-transform: rotate(180deg);
-  -o-transform: rotate(180deg);
-  transform: rotate(180deg);
-}
-
-.fa-rotate-270 {
-  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
-  -webkit-transform: rotate(270deg);
-  -moz-transform: rotate(270deg);
-  -ms-transform: rotate(270deg);
-  -o-transform: rotate(270deg);
-  transform: rotate(270deg);
-}
-
-.fa-flip-horizontal {
-  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);
-  -webkit-transform: scale(-1, 1);
-  -moz-transform: scale(-1, 1);
-  -ms-transform: scale(-1, 1);
-  -o-transform: scale(-1, 1);
-  transform: scale(-1, 1);
-}
-
-.fa-flip-vertical {
-  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);
-  -webkit-transform: scale(1, -1);
-  -moz-transform: scale(1, -1);
-  -ms-transform: scale(1, -1);
-  -o-transform: scale(1, -1);
-  transform: scale(1, -1);
-}
-
-.fa-stack {
-  position: relative;
-  display: inline-block;
-  width: 2em;
-  height: 2em;
-  line-height: 2em;
-  vertical-align: middle;
-}
-
-.fa-stack-1x,
-.fa-stack-2x {
-  position: absolute;
-  left: 0;
-  width: 100%;
-  text-align: center;
-}
-
-.fa-stack-1x {
-  line-height: inherit;
-}
-
-.fa-stack-2x {
-  font-size: 2em;
-}
-
-.fa-inverse {
-  color: #ffffff;
-}
-
-/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
-   readers do not read off random characters that represent icons */
-
-.fa-glass:before {
-  content: "\f000";
-}
-
-.fa-music:before {
-  content: "\f001";
-}
-
-.fa-search:before {
-  content: "\f002";
-}
-
-.fa-envelope-o:before {
-  content: "\f003";
-}
-
-.fa-heart:before {
-  content: "\f004";
-}
-
-.fa-star:before {
-  content: "\f005";
-}
-
-.fa-star-o:before {
-  content: "\f006";
-}
-
-.fa-user:before {
-  content: "\f007";
-}
-
-.fa-film:before {
-  content: "\f008";
-}
-
-.fa-th-large:before {
-  content: "\f009";
-}
-
-.fa-th:before {
-  content: "\f00a";
-}
-
-.fa-th-list:before {
-  content: "\f00b";
-}
-
-.fa-check:before {
-  content: "\f00c";
-}
-
-.fa-times:before {
-  content: "\f00d";
-}
-
-.fa-search-plus:before {
-  content: "\f00e";
-}
-
-.fa-search-minus:before {
-  content: "\f010";
-}
-
-.fa-power-off:before {
-  content: "\f011";
-}
-
-.fa-signal:before {
-  content: "\f012";
-}
-
-.fa-gear:before,
-.fa-cog:before {
-  content: "\f013";
-}
-
-.fa-trash-o:before {
-  content: "\f014";
-}
-
-.fa-home:before {
-  content: "\f015";
-}
-
-.fa-file-o:before {
-  content: "\f016";
-}
-
-.fa-clock-o:before {
-  content: "\f017";
-}
-
-.fa-road:before {
-  content: "\f018";
-}
-
-.fa-download:before {
-  content: "\f019";
-}
-
-.fa-arrow-circle-o-down:before {
-  content: "\f01a";
-}
-
-.fa-arrow-circle-o-up:before {
-  content: "\f01b";
-}
-
-.fa-inbox:before {
-  content: "\f01c";
-}
-
-.fa-play-circle-o:before {
-  content: "\f01d";
-}
-
-.fa-rotate-right:before,
-.fa-repeat:before {
-  content: "\f01e";
-}
-
-.fa-refresh:before {
-  content: "\f021";
-}
-
-.fa-list-alt:before {
-  content: "\f022";
-}
-
-.fa-lock:before {
-  content: "\f023";
-}
-
-.fa-flag:before {
-  content: "\f024";
-}
-
-.fa-headphones:before {
-  content: "\f025";
-}
-
-.fa-volume-off:before {
-  content: "\f026";
-}
-
-.fa-volume-down:before {
-  content: "\f027";
-}
-
-.fa-volume-up:before {
-  content: "\f028";
-}
-
-.fa-qrcode:before {
-  content: "\f029";
-}
-
-.fa-barcode:before {
-  content: "\f02a";
-}
-
-.fa-tag:before {
-  content: "\f02b";
-}
-
-.fa-tags:before {
-  content: "\f02c";
-}
-
-.fa-book:before {
-  content: "\f02d";
-}
-
-.fa-bookmark:before {
-  content: "\f02e";
-}
-
-.fa-print:before {
-  content: "\f02f";
-}
-
-.fa-camera:before {
-  content: "\f030";
-}
-
-.fa-font:before {
-  content: "\f031";
-}
-
-.fa-bold:before {
-  content: "\f032";
-}
-
-.fa-italic:before {
-  content: "\f033";
-}
-
-.fa-text-height:before {
-  content: "\f034";
-}
-
-.fa-text-width:before {
-  content: "\f035";
-}
-
-.fa-align-left:before {
-  content: "\f036";
-}
-
-.fa-align-center:before {
-  content: "\f037";
-}
-
-.fa-align-right:before {
-  content: "\f038";
-}
-
-.fa-align-justify:before {
-  content: "\f039";
-}
-
-.fa-list:before {
-  content: "\f03a";
-}
-
-.fa-dedent:before,
-.fa-outdent:before {
-  content: "\f03b";
-}
-
-.fa-indent:before {
-  content: "\f03c";
-}
-
-.fa-video-camera:before {
-  content: "\f03d";
-}
-
-.fa-photo:before,
-.fa-image:before,
-.fa-picture-o:before {
-  content: "\f03e";
-}
-
-.fa-pencil:before {
-  content: "\f040";
-}
-
-.fa-map-marker:before {
-  content: "\f041";
-}
-
-.fa-adjust:before {
-  content: "\f042";
-}
-
-.fa-tint:before {
-  content: "\f043";
-}
-
-.fa-edit:before,
-.fa-pencil-square-o:before {
-  content: "\f044";
-}
-
-.fa-share-square-o:before {
-  content: "\f045";
-}
-
-.fa-check-square-o:before {
-  content: "\f046";
-}
-
-.fa-arrows:before {
-  content: "\f047";
-}
-
-.fa-step-backward:before {
-  content: "\f048";
-}
-
-.fa-fast-backward:before {
-  content: "\f049";
-}
-
-.fa-backward:before {
-  content: "\f04a";
-}
-
-.fa-play:before {
-  content: "\f04b";
-}
-
-.fa-pause:before {
-  content: "\f04c";
-}
-
-.fa-stop:before {
-  content: "\f04d";
-}
-
-.fa-forward:before {
-  content: "\f04e";
-}
-
-.fa-fast-forward:before {
-  content: "\f050";
-}
-
-.fa-step-forward:before {
-  content: "\f051";
-}
-
-.fa-eject:before {
-  content: "\f052";
-}
-
-.fa-chevron-left:before {
-  content: "\f053";
-}
-
-.fa-chevron-right:before {
-  content: "\f054";
-}
-
-.fa-plus-circle:before {
-  content: "\f055";
-}
-
-.fa-minus-circle:before {
-  content: "\f056";
-}
-
-.fa-times-circle:before {
-  content: "\f057";
-}
-
-.fa-check-circle:before {
-  content: "\f058";
-}
-
-.fa-question-circle:before {
-  content: "\f059";
-}
-
-.fa-info-circle:before {
-  content: "\f05a";
-}
-
-.fa-crosshairs:before {
-  content: "\f05b";
-}
-
-.fa-times-circle-o:before {
-  content: "\f05c";
-}
-
-.fa-check-circle-o:before {
-  content: "\f05d";
-}
-
-.fa-ban:before {
-  content: "\f05e";
-}
-
-.fa-arrow-left:before {
-  content: "\f060";
-}
-
-.fa-arrow-right:before {
-  content: "\f061";
-}
-
-.fa-arrow-up:before {
-  content: "\f062";
-}
-
-.fa-arrow-down:before {
-  content: "\f063";
-}
-
-.fa-mail-forward:before,
-.fa-share:before {
-  content: "\f064";
-}
-
-.fa-expand:before {
-  content: "\f065";
-}
-
-.fa-compress:before {
-  content: "\f066";
-}
-
-.fa-plus:before {
-  content: "\f067";
-}
-
-.fa-minus:before {
-  content: "\f068";
-}
-
-.fa-asterisk:before {
-  content: "\f069";
-}
-
-.fa-exclamation-circle:before {
-  content: "\f06a";
-}
-
-.fa-gift:before {
-  content: "\f06b";
-}
-
-.fa-leaf:before {
-  content: "\f06c";
-}
-
-.fa-fire:before {
-  content: "\f06d";
-}
-
-.fa-eye:before {
-  content: "\f06e";
-}
-
-.fa-eye-slash:before {
-  content: "\f070";
-}
-
-.fa-warning:before,
-.fa-exclamation-triangle:before {
-  content: "\f071";
-}
-
-.fa-plane:before {
-  content: "\f072";
-}
-
-.fa-calendar:before {
-  content: "\f073";
-}
-
-.fa-random:before {
-  content: "\f074";
-}
-
-.fa-comment:before {
-  content: "\f075";
-}
-
-.fa-magnet:before {
-  content: "\f076";
-}
-
-.fa-chevron-up:before {
-  content: "\f077";
-}
-
-.fa-chevron-down:before {
-  content: "\f078";
-}
-
-.fa-retweet:before {
-  content: "\f079";
-}
-
-.fa-shopping-cart:before {
-  content: "\f07a";
-}
-
-.fa-folder:before {
-  content: "\f07b";
-}
-
-.fa-folder-open:before {
-  content: "\f07c";
-}
-
-.fa-arrows-v:before {
-  content: "\f07d";
-}
-
-.fa-arrows-h:before {
-  content: "\f07e";
-}
-
-.fa-bar-chart-o:before {
-  content: "\f080";
-}
-
-.fa-twitter-square:before {
-  content: "\f081";
-}
-
-.fa-facebook-square:before {
-  content: "\f082";
-}
-
-.fa-camera-retro:before {
-  content: "\f083";
-}
-
-.fa-key:before {
-  content: "\f084";
-}
-
-.fa-gears:before,
-.fa-cogs:before {
-  content: "\f085";
-}
-
-.fa-comments:before {
-  content: "\f086";
-}
-
-.fa-thumbs-o-up:before {
-  content: "\f087";
-}
-
-.fa-thumbs-o-down:before {
-  content: "\f088";
-}
-
-.fa-star-half:before {
-  content: "\f089";
-}
-
-.fa-heart-o:before {
-  content: "\f08a";
-}
-
-.fa-sign-out:before {
-  content: "\f08b";
-}
-
-.fa-linkedin-square:before {
-  content: "\f08c";
-}
-
-.fa-thumb-tack:before {
-  content: "\f08d";
-}
-
-.fa-external-link:before {
-  content: "\f08e";
-}
-
-.fa-sign-in:before {
-  content: "\f090";
-}
-
-.fa-trophy:before {
-  content: "\f091";
-}
-
-.fa-github-square:before {
-  content: "\f092";
-}
-
-.fa-upload:before {
-  content: "\f093";
-}
-
-.fa-lemon-o:before {
-  content: "\f094";
-}
-
-.fa-phone:before {
-  content: "\f095";
-}
-
-.fa-square-o:before {
-  content: "\f096";
-}
-
-.fa-bookmark-o:before {
-  content: "\f097";
-}
-
-.fa-phone-square:before {
-  content: "\f098";
-}
-
-.fa-twitter:before {
-  content: "\f099";
-}
-
-.fa-facebook:before {
-  content: "\f09a";
-}
-
-.fa-github:before {
-  content: "\f09b";
-}
-
-.fa-unlock:before {
-  content: "\f09c";
-}
-
-.fa-credit-card:before {
-  content: "\f09d";
-}
-
-.fa-rss:before {
-  content: "\f09e";
-}
-
-.fa-hdd-o:before {
-  content: "\f0a0";
-}
-
-.fa-bullhorn:before {
-  content: "\f0a1";
-}
-
-.fa-bell:before {
-  content: "\f0f3";
-}
-
-.fa-certificate:before {
-  content: "\f0a3";
-}
-
-.fa-hand-o-right:before {
-  content: "\f0a4";
-}
-
-.fa-hand-o-left:before {
-  content: "\f0a5";
-}
-
-.fa-hand-o-up:before {
-  content: "\f0a6";
-}
-
-.fa-hand-o-down:before {
-  content: "\f0a7";
-}
-
-.fa-arrow-circle-left:before {
-  content: "\f0a8";
-}
-
-.fa-arrow-circle-right:before {
-  content: "\f0a9";
-}
-
-.fa-arrow-circle-up:before {
-  content: "\f0aa";
-}
-
-.fa-arrow-circle-down:before {
-  content: "\f0ab";
-}
-
-.fa-globe:before {
-  content: "\f0ac";
-}
-
-.fa-wrench:before {
-  content: "\f0ad";
-}
-
-.fa-tasks:before {
-  content: "\f0ae";
-}
-
-.fa-filter:before {
-  content: "\f0b0";
-}
-
-.fa-briefcase:before {
-  content: "\f0b1";
-}
-
-.fa-arrows-alt:before {
-  content: "\f0b2";
-}
-
-.fa-group:before,
-.fa-users:before {
-  content: "\f0c0";
-}
-
-.fa-chain:before,
-.fa-link:before {
-  content: "\f0c1";
-}
-
-.fa-cloud:before {
-  content: "\f0c2";
-}
-
-.fa-flask:before {
-  content: "\f0c3";
-}
-
-.fa-cut:before,
-.fa-scissors:before {
-  content: "\f0c4";
-}
-
-.fa-copy:before,
-.fa-files-o:before {
-  content: "\f0c5";
-}
-
-.fa-paperclip:before {
-  content: "\f0c6";
-}
-
-.fa-save:before,
-.fa-floppy-o:before {
-  content: "\f0c7";
-}
-
-.fa-square:before {
-  content: "\f0c8";
-}
-
-.fa-navicon:before,
-.fa-reorder:before,
-.fa-bars:before {
-  content: "\f0c9";
-}
-
-.fa-list-ul:before {
-  content: "\f0ca";
-}
-
-.fa-list-ol:before {
-  content: "\f0cb";
-}
-
-.fa-strikethrough:before {
-  content: "\f0cc";
-}
-
-.fa-underline:before {
-  content: "\f0cd";
-}
-
-.fa-table:before {
-  content: "\f0ce";
-}
-
-.fa-magic:before {
-  content: "\f0d0";
-}
-
-.fa-truck:before {
-  content: "\f0d1";
-}
-
-.fa-pinterest:before {
-  content: "\f0d2";
-}
-
-.fa-pinterest-square:before {
-  content: "\f0d3";
-}
-
-.fa-google-plus-square:before {
-  content: "\f0d4";
-}
-
-.fa-google-plus:before {
-  content: "\f0d5";
-}
-
-.fa-money:before {
-  content: "\f0d6";
-}
-
-.fa-caret-down:before {
-  content: "\f0d7";
-}
-
-.fa-caret-up:before {
-  content: "\f0d8";
-}
-
-.fa-caret-left:before {
-  content: "\f0d9";
-}
-
-.fa-caret-right:before {
-  content: "\f0da";
-}
-
-.fa-columns:before {
-  content: "\f0db";
-}
-
-.fa-unsorted:before,
-.fa-sort:before {
-  content: "\f0dc";
-}
-
-.fa-sort-down:before,
-.fa-sort-desc:before {
-  content: "\f0dd";
-}
-
-.fa-sort-up:before,
-.fa-sort-asc:before {
-  content: "\f0de";
-}
-
-.fa-envelope:before {
-  content: "\f0e0";
-}
-
-.fa-linkedin:before {
-  content: "\f0e1";
-}
-
-.fa-rotate-left:before,
-.fa-undo:before {
-  content: "\f0e2";
-}
-
-.fa-legal:before,
-.fa-gavel:before {
-  content: "\f0e3";
-}
-
-.fa-dashboard:before,
-.fa-tachometer:before {
-  content: "\f0e4";
-}
-
-.fa-comment-o:before {
-  content: "\f0e5";
-}
-
-.fa-comments-o:before {
-  content: "\f0e6";
-}
-
-.fa-flash:before,
-.fa-bolt:before {
-  content: "\f0e7";
-}
-
-.fa-sitemap:before {
-  content: "\f0e8";
-}
-
-.fa-umbrella:before {
-  content: "\f0e9";
-}
-
-.fa-paste:before,
-.fa-clipboard:before {
-  content: "\f0ea";
-}
-
-.fa-lightbulb-o:before {
-  content: "\f0eb";
-}
-
-.fa-exchange:before {
-  content: "\f0ec";
-}
-
-.fa-cloud-download:before {
-  content: "\f0ed";
-}
-
-.fa-cloud-upload:before {
-  content: "\f0ee";
-}
-
-.fa-user-md:before {
-  content: "\f0f0";
-}
-
-.fa-stethoscope:before {
-  content: "\f0f1";
-}
-
-.fa-suitcase:before {
-  content: "\f0f2";
-}
-
-.fa-bell-o:before {
-  content: "\f0a2";
-}
-
-.fa-coffee:before {
-  content: "\f0f4";
-}
-
-.fa-cutlery:before {
-  content: "\f0f5";
-}
-
-.fa-file-text-o:before {
-  content: "\f0f6";
-}
-
-.fa-building-o:before {
-  content: "\f0f7";
-}
-
-.fa-hospital-o:before {
-  content: "\f0f8";
-}
-
-.fa-ambulance:before {
-  content: "\f0f9";
-}
-
-.fa-medkit:before {
-  content: "\f0fa";
-}
-
-.fa-fighter-jet:before {
-  content: "\f0fb";
-}
-
-.fa-beer:before {
-  content: "\f0fc";
-}
-
-.fa-h-square:before {
-  content: "\f0fd";
-}
-
-.fa-plus-square:before {
-  content: "\f0fe";
-}
-
-.fa-angle-double-left:before {
-  content: "\f100";
-}
-
-.fa-angle-double-right:before {
-  content: "\f101";
-}
-
-.fa-angle-double-up:before {
-  content: "\f102";
-}
-
-.fa-angle-double-down:before {
-  content: "\f103";
-}
-
-.fa-angle-left:before {
-  content: "\f104";
-}
-
-.fa-angle-right:before {
-  content: "\f105";
-}
-
-.fa-angle-up:before {
-  content: "\f106";
-}
-
-.fa-angle-down:before {
-  content: "\f107";
-}
-
-.fa-desktop:before {
-  content: "\f108";
-}
-
-.fa-laptop:before {
-  content: "\f109";
-}
-
-.fa-tablet:before {
-  content: "\f10a";
-}
-
-.fa-mobile-phone:before,
-.fa-mobile:before {
-  content: "\f10b";
-}
-
-.fa-circle-o:before {
-  content: "\f10c";
-}
-
-.fa-quote-left:before {
-  content: "\f10d";
-}
-
-.fa-quote-right:before {
-  content: "\f10e";
-}
-
-.fa-spinner:before {
-  content: "\f110";
-}
-
-.fa-circle:before {
-  content: "\f111";
-}
-
-.fa-mail-reply:before,
-.fa-reply:before {
-  content: "\f112";
-}
-
-.fa-github-alt:before {
-  content: "\f113";
-}
-
-.fa-folder-o:before {
-  content: "\f114";
-}
-
-.fa-folder-open-o:before {
-  content: "\f115";
-}
-
-.fa-smile-o:before {
-  content: "\f118";
-}
-
-.fa-frown-o:before {
-  content: "\f119";
-}
-
-.fa-meh-o:before {
-  content: "\f11a";
-}
-
-.fa-gamepad:before {
-  content: "\f11b";
-}
-
-.fa-keyboard-o:before {
-  content: "\f11c";
-}
-
-.fa-flag-o:before {
-  content: "\f11d";
-}
-
-.fa-flag-checkered:before {
-  content: "\f11e";
-}
-
-.fa-terminal:before {
-  content: "\f120";
-}
-
-.fa-code:before {
-  content: "\f121";
-}
-
-.fa-mail-reply-all:before,
-.fa-reply-all:before {
-  content: "\f122";
-}
-
-.fa-star-half-empty:before,
-.fa-star-half-full:before,
-.fa-star-half-o:before {
-  content: "\f123";
-}
-
-.fa-location-arrow:before {
-  content: "\f124";
-}
-
-.fa-crop:before {
-  content: "\f125";
-}
-
-.fa-code-fork:before {
-  content: "\f126";
-}
-
-.fa-unlink:before,
-.fa-chain-broken:before {
-  content: "\f127";
-}
-
-.fa-question:before {
-  content: "\f128";
-}
-
-.fa-info:before {
-  content: "\f129";
-}
-
-.fa-exclamation:before {
-  content: "\f12a";
-}
-
-.fa-superscript:before {
-  content: "\f12b";
-}
-
-.fa-subscript:before {
-  content: "\f12c";
-}
-
-.fa-eraser:before {
-  content: "\f12d";
-}
-
-.fa-puzzle-piece:before {
-  content: "\f12e";
-}
-
-.fa-microphone:before {
-  content: "\f130";
-}
-
-.fa-microphone-slash:before {
-  content: "\f131";
-}
-
-.fa-shield:before {
-  content: "\f132";
-}
-
-.fa-calendar-o:before {
-  content: "\f133";
-}
-
-.fa-fire-extinguisher:before {
-  content: "\f134";
-}
-
-.fa-rocket:before {
-  content: "\f135";
-}
-
-.fa-maxcdn:before {
-  content: "\f136";
-}
-
-.fa-chevron-circle-left:before {
-  content: "\f137";
-}
-
-.fa-chevron-circle-right:before {
-  content: "\f138";
-}
-
-.fa-chevron-circle-up:before {
-  content: "\f139";
-}
-
-.fa-chevron-circle-down:before {
-  content: "\f13a";
-}
-
-.fa-html5:before {
-  content: "\f13b";
-}
-
-.fa-css3:before {
-  content: "\f13c";
-}
-
-.fa-anchor:before {
-  content: "\f13d";
-}
-
-.fa-unlock-alt:before {
-  content: "\f13e";
-}
-
-.fa-bullseye:before {
-  content: "\f140";
-}
-
-.fa-ellipsis-h:before {
-  content: "\f141";
-}
-
-.fa-ellipsis-v:before {
-  content: "\f142";
-}
-
-.fa-rss-square:before {
-  content: "\f143";
-}
-
-.fa-play-circle:before {
-  content: "\f144";
-}
-
-.fa-ticket:before {
-  content: "\f145";
-}
-
-.fa-minus-square:before {
-  content: "\f146";
-}
-
-.fa-minus-square-o:before {
-  content: "\f147";
-}
-
-.fa-level-up:before {
-  content: "\f148";
-}
-
-.fa-level-down:before {
-  content: "\f149";
-}
-
-.fa-check-square:before {
-  content: "\f14a";
-}
-
-.fa-pencil-square:before {
-  content: "\f14b";
-}
-
-.fa-external-link-square:before {
-  content: "\f14c";
-}
-
-.fa-share-square:before {
-  content: "\f14d";
-}
-
-.fa-compass:before {
-  content: "\f14e";
-}
-
-.fa-toggle-down:before,
-.fa-caret-square-o-down:before {
-  content: "\f150";
-}
-
-.fa-toggle-up:before,
-.fa-caret-square-o-up:before {
-  content: "\f151";
-}
-
-.fa-toggle-right:before,
-.fa-caret-square-o-right:before {
-  content: "\f152";
-}
-
-.fa-euro:before,
-.fa-eur:before {
-  content: "\f153";
-}
-
-.fa-gbp:before {
-  content: "\f154";
-}
-
-.fa-dollar:before,
-.fa-usd:before {
-  content: "\f155";
-}
-
-.fa-rupee:before,
-.fa-inr:before {
-  content: "\f156";
-}
-
-.fa-cny:before,
-.fa-rmb:before,
-.fa-yen:before,
-.fa-jpy:before {
-  content: "\f157";
-}
-
-.fa-ruble:before,
-.fa-rouble:before,
-.fa-rub:before {
-  content: "\f158";
-}
-
-.fa-won:before,
-.fa-krw:before {
-  content: "\f159";
-}
-
-.fa-bitcoin:before,
-.fa-btc:before {
-  content: "\f15a";
-}
-
-.fa-file:before {
-  content: "\f15b";
-}
-
-.fa-file-text:before {
-  content: "\f15c";
-}
-
-.fa-sort-alpha-asc:before {
-  content: "\f15d";
-}
-
-.fa-sort-alpha-desc:before {
-  content: "\f15e";
-}
-
-.fa-sort-amount-asc:before {
-  content: "\f160";
-}
-
-.fa-sort-amount-desc:before {
-  content: "\f161";
-}
-
-.fa-sort-numeric-asc:before {
-  content: "\f162";
-}
-
-.fa-sort-numeric-desc:before {
-  content: "\f163";
-}
-
-.fa-thumbs-up:before {
-  content: "\f164";
-}
-
-.fa-thumbs-down:before {
-  content: "\f165";
-}
-
-.fa-youtube-square:before {
-  content: "\f166";
-}
-
-.fa-youtube:before {
-  content: "\f167";
-}
-
-.fa-xing:before {
-  content: "\f168";
-}
-
-.fa-xing-square:before {
-  content: "\f169";
-}
-
-.fa-youtube-play:before {
-  content: "\f16a";
-}
-
-.fa-dropbox:before {
-  content: "\f16b";
-}
-
-.fa-stack-overflow:before {
-  content: "\f16c";
-}
-
-.fa-instagram:before {
-  content: "\f16d";
-}
-
-.fa-flickr:before {
-  content: "\f16e";
-}
-
-.fa-adn:before {
-  content: "\f170";
-}
-
-.fa-bitbucket:before {
-  content: "\f171";
-}
-
-.fa-bitbucket-square:before {
-  content: "\f172";
-}
-
-.fa-tumblr:before {
-  content: "\f173";
-}
-
-.fa-tumblr-square:before {
-  content: "\f174";
-}
-
-.fa-long-arrow-down:before {
-  content: "\f175";
-}
-
-.fa-long-arrow-up:before {
-  content: "\f176";
-}
-
-.fa-long-arrow-left:before {
-  content: "\f177";
-}
-
-.fa-long-arrow-right:before {
-  content: "\f178";
-}
-
-.fa-apple:before {
-  content: "\f179";
-}
-
-.fa-windows:before {
-  content: "\f17a";
-}
-
-.fa-android:before {
-  content: "\f17b";
-}
-
-.fa-linux:before {
-  content: "\f17c";
-}
-
-.fa-dribbble:before {
-  content: "\f17d";
-}
-
-.fa-skype:before {
-  content: "\f17e";
-}
-
-.fa-foursquare:before {
-  content: "\f180";
-}
-
-.fa-trello:before {
-  content: "\f181";
-}
-
-.fa-female:before {
-  content: "\f182";
-}
-
-.fa-male:before {
-  content: "\f183";
-}
-
-.fa-gittip:before {
-  content: "\f184";
-}
-
-.fa-sun-o:before {
-  content: "\f185";
-}
-
-.fa-moon-o:before {
-  content: "\f186";
-}
-
-.fa-archive:before {
-  content: "\f187";
-}
-
-.fa-bug:before {
-  content: "\f188";
-}
-
-.fa-vk:before {
-  content: "\f189";
-}
-
-.fa-weibo:before {
-  content: "\f18a";
-}
-
-.fa-renren:before {
-  content: "\f18b";
-}
-
-.fa-pagelines:before {
-  content: "\f18c";
-}
-
-.fa-stack-exchange:before {
-  content: "\f18d";
-}
-
-.fa-arrow-circle-o-right:before {
-  content: "\f18e";
-}
-
-.fa-arrow-circle-o-left:before {
-  content: "\f190";
-}
-
-.fa-toggle-left:before,
-.fa-caret-square-o-left:before {
-  content: "\f191";
-}
-
-.fa-dot-circle-o:before {
-  content: "\f192";
-}
-
-.fa-wheelchair:before {
-  content: "\f193";
-}
-
-.fa-vimeo-square:before {
-  content: "\f194";
-}
-
-.fa-turkish-lira:before,
-.fa-try:before {
-  content: "\f195";
-}
-
-.fa-plus-square-o:before {
-  content: "\f196";
-}
-
-.fa-space-shuttle:before {
-  content: "\f197";
-}
-
-.fa-slack:before {
-  content: "\f198";
-}
-
-.fa-envelope-square:before {
-  content: "\f199";
-}
-
-.fa-wordpress:before {
-  content: "\f19a";
-}
-
-.fa-openid:before {
-  content: "\f19b";
-}
-
-.fa-institution:before,
-.fa-bank:before,
-.fa-university:before {
-  content: "\f19c";
-}
-
-.fa-mortar-board:before,
-.fa-graduation-cap:before {
-  content: "\f19d";
-}
-
-.fa-yahoo:before {
-  content: "\f19e";
-}
-
-.fa-google:before {
-  content: "\f1a0";
-}
-
-.fa-reddit:before {
-  content: "\f1a1";
-}
-
-.fa-reddit-square:before {
-  content: "\f1a2";
-}
-
-.fa-stumbleupon-circle:before {
-  content: "\f1a3";
-}
-
-.fa-stumbleupon:before {
-  content: "\f1a4";
-}
-
-.fa-delicious:before {
-  content: "\f1a5";
-}
-
-.fa-digg:before {
-  content: "\f1a6";
-}
-
-.fa-pied-piper-square:before,
-.fa-pied-piper:before {
-  content: "\f1a7";
-}
-
-.fa-pied-piper-alt:before {
-  content: "\f1a8";
-}
-
-.fa-drupal:before {
-  content: "\f1a9";
-}
-
-.fa-joomla:before {
-  content: "\f1aa";
-}
-
-.fa-language:before {
-  content: "\f1ab";
-}
-
-.fa-fax:before {
-  content: "\f1ac";
-}
-
-.fa-building:before {
-  content: "\f1ad";
-}
-
-.fa-child:before {
-  content: "\f1ae";
-}
-
-.fa-paw:before {
-  content: "\f1b0";
-}
-
-.fa-spoon:before {
-  content: "\f1b1";
-}
-
-.fa-cube:before {
-  content: "\f1b2";
-}
-
-.fa-cubes:before {
-  content: "\f1b3";
-}
-
-.fa-behance:before {
-  content: "\f1b4";
-}
-
-.fa-behance-square:before {
-  content: "\f1b5";
-}
-
-.fa-steam:before {
-  content: "\f1b6";
-}
-
-.fa-steam-square:before {
-  content: "\f1b7";
-}
-
-.fa-recycle:before {
-  content: "\f1b8";
-}
-
-.fa-automobile:before,
-.fa-car:before {
-  content: "\f1b9";
-}
-
-.fa-cab:before,
-.fa-taxi:before {
-  content: "\f1ba";
-}
-
-.fa-tree:before {
-  content: "\f1bb";
-}
-
-.fa-spotify:before {
-  content: "\f1bc";
-}
-
-.fa-deviantart:before {
-  content: "\f1bd";
-}
-
-.fa-soundcloud:before {
-  content: "\f1be";
-}
-
-.fa-database:before {
-  content: "\f1c0";
-}
-
-.fa-file-pdf-o:before {
-  content: "\f1c1";
-}
-
-.fa-file-word-o:before {
-  content: "\f1c2";
-}
-
-.fa-file-excel-o:before {
-  content: "\f1c3";
-}
-
-.fa-file-powerpoint-o:before {
-  content: "\f1c4";
-}
-
-.fa-file-photo-o:before,
-.fa-file-picture-o:before,
-.fa-file-image-o:before {
-  content: "\f1c5";
-}
-
-.fa-file-zip-o:before,
-.fa-file-archive-o:before {
-  content: "\f1c6";
-}
-
-.fa-file-sound-o:before,
-.fa-file-audio-o:before {
-  content: "\f1c7";
-}
-
-.fa-file-movie-o:before,
-.fa-file-video-o:before {
-  content: "\f1c8";
-}
-
-.fa-file-code-o:before {
-  content: "\f1c9";
-}
-
-.fa-vine:before {
-  content: "\f1ca";
-}
-
-.fa-codepen:before {
-  content: "\f1cb";
-}
-
-.fa-jsfiddle:before {
-  content: "\f1cc";
-}
-
-.fa-life-bouy:before,
-.fa-life-saver:before,
-.fa-support:before,
-.fa-life-ring:before {
-  content: "\f1cd";
-}
-
-.fa-circle-o-notch:before {
-  content: "\f1ce";
-}
-
-.fa-ra:before,
-.fa-rebel:before {
-  content: "\f1d0";
-}
-
-.fa-ge:before,
-.fa-empire:before {
-  content: "\f1d1";
-}
-
-.fa-git-square:before {
-  content: "\f1d2";
-}
-
-.fa-git:before {
-  content: "\f1d3";
-}
-
-.fa-hacker-news:before {
-  content: "\f1d4";
-}
-
-.fa-tencent-weibo:before {
-  content: "\f1d5";
-}
-
-.fa-qq:before {
-  content: "\f1d6";
-}
-
-.fa-wechat:before,
-.fa-weixin:before {
-  content: "\f1d7";
-}
-
-.fa-send:before,
-.fa-paper-plane:before {
-  content: "\f1d8";
-}
-
-.fa-send-o:before,
-.fa-paper-plane-o:before {
-  content: "\f1d9";
-}
-
-.fa-history:before {
-  content: "\f1da";
-}
-
-.fa-circle-thin:before {
-  content: "\f1db";
-}
-
-.fa-header:before {
-  content: "\f1dc";
-}
-
-.fa-paragraph:before {
-  content: "\f1dd";
-}
-
-.fa-sliders:before {
-  content: "\f1de";
-}
-
-.fa-share-alt:before {
-  content: "\f1e0";
-}
-
-.fa-share-alt-square:before {
-  content: "\f1e1";
-}
-
-.fa-bomb:before {
-  content: "\f1e2";
-}
-
-/*! normalize.css v3.0.0 | MIT License | git.io/normalize */
-
-html {
-  font-family: sans-serif;
-  -ms-text-size-adjust: 100%;
-  -webkit-text-size-adjust: 100%;
-}
-
-body {
-  margin: 0;
-}
-
-article,
-aside,
-details,
-figcaption,
-figure,
-footer,
-header,
-hgroup,
-main,
-nav,
-section,
-summary {
-  display: block;
-}
-
-audio,
-canvas,
-progress,
-video {
-  display: inline-block;
-  vertical-align: baseline;
-}
-
-audio:not([controls]) {
-  display: none;
-  height: 0;
-}
-
-[hidden],
-template {
-  display: none;
-}
-
-a {
-  background: transparent;
-}
-
-a:active {
-  outline: 0;
-}
-
-abbr[title] {
-  border-bottom: 1px dotted;
-}
-
-b,
-strong {
-  font-weight: bold;
-}
-
-dfn {
-  font-style: italic;
-}
-
-h1 {
-  font-size: 2em;
-  margin: 0.67em 0;
-}
-
-mark {
-  background: #ff0;
-  color: #000;
-}
-
-small {
-  font-size: 80%;
-}
-
-sub,
-sup {
-  font-size: 75%;
-  line-height: 0;
-  position: relative;
-  vertical-align: baseline;
-}
-
-sup {
-  top: -0.5em;
-}
-
-sub {
-  bottom: -0.25em;
-}
-
-img {
-  border: 0;
-}
-
-svg:not(:root) {
-  overflow: hidden;
-}
-
-figure {
-  margin: 1em 40px;
-}
-
-hr {
-  -moz-box-sizing: content-box;
-  box-sizing: content-box;
-  height: 0;
-}
-
-pre {
-  overflow: auto;
-}
-
-code,
-kbd,
-pre,
-samp {
-  font-family: monospace, monospace;
-  font-size: 1em;
-}
-
-button,
-input,
-optgroup,
-select,
-textarea {
-  color: inherit;
-  font: inherit;
-  margin: 0;
-}
-
-button {
-  overflow: visible;
-}
-
-button,
-select {
-  text-transform: none;
-}
-
-button,
-html input[type="button"],
-input[type="reset"],
-input[type="submit"] {
-  -webkit-appearance: button;
-  cursor: pointer;
-}
-
-button[disabled],
-html input[disabled] {
-  cursor: default;
-}
-
-button::-moz-focus-inner,
-input::-moz-focus-inner {
-  border: 0;
-  padding: 0;
-}
-
-input {
-  line-height: normal;
-}
-
-input[type="checkbox"],
-input[type="radio"] {
-  box-sizing: border-box;
-  padding: 0;
-}
-
-input[type="number"]::-webkit-inner-spin-button,
-input[type="number"]::-webkit-outer-spin-button {
-  height: auto;
-}
-
-input[type="search"] {
-  -webkit-appearance: textfield;
-  -moz-box-sizing: content-box;
-  -webkit-box-sizing: content-box;
-  box-sizing: content-box;
-}
-
-input[type="search"]::-webkit-search-cancel-button,
-input[type="search"]::-webkit-search-decoration {
-  -webkit-appearance: none;
-}
-
-fieldset {
-  border: 1px solid #c0c0c0;
-  margin: 0 2px;
-  padding: 0.35em 0.625em 0.75em;
-}
-
-legend {
-  border: 0;
-  padding: 0;
-}
-
-textarea {
-  overflow: auto;
-}
-
-optgroup {
-  font-weight: bold;
-}
-
-table {
-  border-collapse: collapse;
-  border-spacing: 0;
-}
-
-td,
-th {
-  padding: 0;
-}
-
-* {
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-
-*:before,
-*:after {
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-
-html {
-  font-size: 62.5%;
-  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
-}
-
-body {
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-  font-size: 14px;
-  line-height: 1.42857143;
-  color: #333333;
-  background-color: #ffffff;
-}
-
-input,
-button,
-select,
-textarea {
-  font-family: inherit;
-  font-size: inherit;
-  line-height: inherit;
-}
-
-a {
-  color: #007aff;
-  text-decoration: none;
-}
-
-a:focus {
-  color: #0055b3;
-  text-decoration: underline;
-}
-
-a:focus {
-  outline: thin dotted;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-
-figure {
-  margin: 0;
-}
-
-img {
-  vertical-align: middle;
-}
-
-.img-responsive,
-.thumbnail > img,
-.thumbnail a > img,
-.carousel-inner > .item > img,
-.carousel-inner > .item > a > img {
-  display: block;
-  max-width: 100%;
-  height: auto;
-}
-
-.img-rounded {
-  border-radius: 6px;
-}
-
-.img-thumbnail {
-  padding: 4px;
-  line-height: 1.42857143;
-  background-color: #ffffff;
-  border: 1px solid #dddddd;
-  border-radius: 4px;
-  -webkit-transition: all 0.2s ease-in-out;
-  transition: all 0.2s ease-in-out;
-  display: inline-block;
-  max-width: 100%;
-  height: auto;
-}
-
-.img-circle {
-  border-radius: 50%;
-}
-
-hr {
-  margin-top: 20px;
-  margin-bottom: 20px;
-  border: 0;
-  border-top: 1px solid #eeeeee;
-}
-
-.sr-only {
-  position: absolute;
-  width: 1px;
-  height: 1px;
-  margin: -1px;
-  padding: 0;
-  overflow: hidden;
-  clip: rect(0, 0, 0, 0);
-  border: 0;
-}
-
-h1,
-h2,
-h3,
-h4,
-h5,
-h6,
-.h1,
-.h2,
-.h3,
-.h4,
-.h5,
-.h6 {
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-  font-weight: normal;
-  line-height: 1.1;
-  color: inherit;
-}
-
-h1 small,
-h2 small,
-h3 small,
-h4 small,
-h5 small,
-h6 small,
-.h1 small,
-.h2 small,
-.h3 small,
-.h4 small,
-.h5 small,
-.h6 small,
-h1 .small,
-h2 .small,
-h3 .small,
-h4 .small,
-h5 .small,
-h6 .small,
-.h1 .small,
-.h2 .small,
-.h3 .small,
-.h4 .small,
-.h5 .small,
-.h6 .small {
-  font-weight: normal;
-  line-height: 1;
-  color: #999999;
-}
-
-h1,
-.h1,
-h2,
-.h2,
-h3,
-.h3 {
-  margin-top: 20px;
-  margin-bottom: 10px;
-}
-
-h1 small,
-.h1 small,
-h2 small,
-.h2 small,
-h3 small,
-.h3 small,
-h1 .small,
-.h1 .small,
-h2 .small,
-.h2 .small,
-h3 .small,
-.h3 .small {
-  font-size: 65%;
-}
-
-h4,
-.h4,
-h5,
-.h5,
-h6,
-.h6 {
-  margin-top: 10px;
-  margin-bottom: 10px;
-}
-
-h4 small,
-.h4 small,
-h5 small,
-.h5 small,
-h6 small,
-.h6 small,
-h4 .small,
-.h4 .small,
-h5 .small,
-.h5 .small,
-h6 .small,
-.h6 .small {
-  font-size: 75%;
-}
-
-h1,
-.h1 {
-  font-size: 36px;
-}
-
-h2,
-.h2 {
-  font-size: 30px;
-}
-
-h3,
-.h3 {
-  font-size: 24px;
-}
-
-h4,
-.h4 {
-  font-size: 18px;
-}
-
-h5,
-.h5 {
-  font-size: 14px;
-}
-
-h6,
-.h6 {
-  font-size: 12px;
-}
-
-p {
-  margin: 0 0 10px;
-}
-
-.lead {
-  margin-bottom: 20px;
-  font-size: 16px;
-  font-weight: 200;
-  line-height: 1.4;
-}
-
-small,
-.small {
-  font-size: 85%;
-}
-
-cite {
-  font-style: normal;
-}
-
-.text-left {
-  text-align: left;
-}
-
-.text-right {
-  text-align: right;
-}
-
-.text-center {
-  text-align: center;
-}
-
-.text-justify {
-  text-align: justify;
-}
-
-.text-muted {
-  color: #999999;
-}
-
-.text-primary {
-  color: #007aff;
-}
-
- {
-  color: #0062cc;
-}
-
-.text-success {
-  color: #3c763d;
-}
-
- {
-  color: #2b542c;
-}
-
-.text-info {
-  color: #31708f;
-}
-
- {
-  color: #245269;
-}
-
-.text-warning {
-  color: #8a6d3b;
-}
-
- {
-  color: #66512c;
-}
-
-.text-danger {
-  color: #a94442;
-}
-
- {
-  color: #843534;
-}
-
-.bg-primary {
-  color: #fff;
-  background-color: #007aff;
-}
-
- {
-  background-color: #0062cc;
-}
-
-.bg-success {
-  background-color: #dff0d8;
-}
-
- {
-  background-color: #c1e2b3;
-}
-
-.bg-info {
-  background-color: #d9edf7;
-}
-
- {
-  background-color: #afd9ee;
-}
-
-.bg-warning {
-  background-color: #fcf8e3;
-}
-
- {
-  background-color: #f7ecb5;
-}
-
-.bg-danger {
-  background-color: #f2dede;
-}
-
- {
-  background-color: #e4b9b9;
-}
-
-.page-header {
-  padding-bottom: 9px;
-  margin: 40px 0 20px;
-  border-bottom: 1px solid #eeeeee;
-}
-
-ul,
-ol {
-  margin-top: 0;
-  margin-bottom: 10px;
-}
-
-ul ul,
-ol ul,
-ul ol,
-ol ol {
-  margin-bottom: 0;
-}
-
-.list-unstyled {
-  padding-left: 0;
-  list-style: none;
-}
-
-.list-inline {
-  padding-left: 0;
-  list-style: none;
-  margin-left: -5px;
-}
-
-.list-inline > li {
-  display: inline-block;
-  padding-left: 5px;
-  padding-right: 5px;
-}
-
-dl {
-  margin-top: 0;
-  margin-bottom: 20px;
-}
-
-dt,
-dd {
-  line-height: 1.42857143;
-}
-
-dt {
-  font-weight: bold;
-}
-
-dd {
-  margin-left: 0;
-}
-
-abbr[title],
-abbr[data-original-title] {
-  cursor: help;
-  border-bottom: 1px dotted #999999;
-}
-
-.initialism {
-  font-size: 90%;
-  text-transform: uppercase;
-}
-
-blockquote {
-  padding: 10px 20px;
-  margin: 0 0 20px;
-  font-size: 17.5px;
-  border-left: 5px solid #eeeeee;
-}
-
-blockquote p:last-child,
-blockquote ul:last-child,
-blockquote ol:last-child {
-  margin-bottom: 0;
-}
-
-blockquote footer,
-blockquote small,
-blockquote .small {
-  display: block;
-  font-size: 80%;
-  line-height: 1.42857143;
-  color: #999999;
-}
-
-blockquote footer:before,
-blockquote small:before,
-blockquote .small:before {
-  content: '\2014 \00A0';
-}
-
-.blockquote-reverse,
-blockquote.pull-right {
-  padding-right: 15px;
-  padding-left: 0;
-  border-right: 5px solid #eeeeee;
-  border-left: 0;
-  text-align: right;
-}
-
-.blockquote-reverse footer:before,
-blockquote.pull-right footer:before,
-.blockquote-reverse small:before,
-blockquote.pull-right small:before,
-.blockquote-reverse .small:before,
-blockquote.pull-right .small:before {
-  content: '';
-}
-
-.blockquote-reverse footer:after,
-blockquote.pull-right footer:after,
-.blockquote-reverse small:after,
-blockquote.pull-right small:after,
-.blockquote-reverse .small:after,
-blockquote.pull-right .small:after {
-  content: '\00A0 \2014';
-}
-
-blockquote:before,
-blockquote:after {
-  content: "";
-}
-
-address {
-  margin-bottom: 20px;
-  font-style: normal;
-  line-height: 1.42857143;
-}
-
-code,
-kbd,
-pre,
-samp {
-  font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
-}
-
-code {
-  padding: 2px 4px;
-  font-size: 90%;
-  color: #c7254e;
-  background-color: #f9f2f4;
-  white-space: nowrap;
-  border-radius: 4px;
-}
-
-kbd {
-  padding: 2px 4px;
-  font-size: 90%;
-  color: #ffffff;
-  background-color: #333333;
-  border-radius: 3px;
-  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
-}
-
-pre {
-  display: block;
-  padding: 9.5px;
-  margin: 0 0 10px;
-  font-size: 13px;
-  line-height: 1.42857143;
-  word-break: break-all;
-  word-wrap: break-word;
-  color: #333333;
-  background-color: #f5f5f5;
-  border: 1px solid #cccccc;
-  border-radius: 4px;
-}
-
-pre code {
-  padding: 0;
-  font-size: inherit;
-  color: inherit;
-  white-space: pre-wrap;
-  background-color: transparent;
-  border-radius: 0;
-}
-
-.pre-scrollable {
-  max-height: 340px;
-  overflow-y: scroll;
-}
-
-.container {
-  margin-right: auto;
-  margin-left: auto;
-  padding-left: 15px;
-  padding-right: 15px;
-}
-
-.container-fluid {
-  margin-right: auto;
-  margin-left: auto;
-  padding-left: 15px;
-  padding-right: 15px;
-}
-
-.row {
-  margin-left: -15px;
-  margin-right: -15px;
-}
-
-.col-xs-1,
-.col-sm-1,
-.col-md-1,
-.col-lg-1,
-.col-xs-2,
-.col-sm-2,
-.col-md-2,
-.col-lg-2,
-.col-xs-3,
-.col-sm-3,
-.col-md-3,
-.col-lg-3,
-.col-xs-4,
-.col-sm-4,
-.col-md-4,
-.col-lg-4,
-.col-xs-5,
-.col-sm-5,
-.col-md-5,
-.col-lg-5,
-.col-xs-6,
-.col-sm-6,
-.col-md-6,
-.col-lg-6,
-.col-xs-7,
-.col-sm-7,
-.col-md-7,
-.col-lg-7,
-.col-xs-8,
-.col-sm-8,
-.col-md-8,
-.col-lg-8,
-.col-xs-9,
-.col-sm-9,
-.col-md-9,
-.col-lg-9,
-.col-xs-10,
-.col-sm-10,
-.col-md-10,
-.col-lg-10,
-.col-xs-11,
-.col-sm-11,
-.col-md-11,
-.col-lg-11,
-.col-xs-12,
-.col-sm-12,
-.col-md-12,
-.col-lg-12 {
-  position: relative;
-  min-height: 1px;
-  padding-left: 15px;
-  padding-right: 15px;
-}
-
-.col-xs-1,
-.col-xs-2,
-.col-xs-3,
-.col-xs-4,
-.col-xs-5,
-.col-xs-6,
-.col-xs-7,
-.col-xs-8,
-.col-xs-9,
-.col-xs-10,
-.col-xs-11,
-.col-xs-12 {
-  float: left;
-}
-
-.col-xs-12 {
-  width: 100%;
-}
-
-.col-xs-11 {
-  width: 91.66666667%;
-}
-
-.col-xs-10 {
-  width: 83.33333333%;
-}
-
-.col-xs-9 {
-  width: 75%;
-}
-
-.col-xs-8 {
-  width: 66.66666667%;
-}
-
-.col-xs-7 {
-  width: 58.33333333%;
-}
-
-.col-xs-6 {
-  width: 50%;
-}
-
-.col-xs-5 {
-  width: 41.66666667%;
-}
-
-.col-xs-4 {
-  width: 33.33333333%;
-}
-
-.col-xs-3 {
-  width: 25%;
-}
-
-.col-xs-2 {
-  width: 16.66666667%;
-}
-
-.col-xs-1 {
-  width: 8.33333333%;
-}
-
-.col-xs-pull-12 {
-  right: 100%;
-}
-
-.col-xs-pull-11 {
-  right: 91.66666667%;
-}
-
-.col-xs-pull-10 {
-  right: 83.33333333%;
-}
-
-.col-xs-pull-9 {
-  right: 75%;
-}
-
-.col-xs-pull-8 {
-  right: 66.66666667%;
-}
-
-.col-xs-pull-7 {
-  right: 58.33333333%;
-}
-
-.col-xs-pull-6 {
-  right: 50%;
-}
-
-.col-xs-pull-5 {
-  right: 41.66666667%;
-}
-
-.col-xs-pull-4 {
-  right: 33.33333333%;
-}
-
-.col-xs-pull-3 {
-  right: 25%;
-}
-
-.col-xs-pull-2 {
-  right: 16.66666667%;
-}
-
-.col-xs-pull-1 {
-  right: 8.33333333%;
-}
-
-.col-xs-pull-0 {
-  right: 0%;
-}
-
-.col-xs-push-12 {
-  left: 100%;
-}
-
-.col-xs-push-11 {
-  left: 91.66666667%;
-}
-
-.col-xs-push-10 {
-  left: 83.33333333%;
-}
-
-.col-xs-push-9 {
-  left: 75%;
-}
-
-.col-xs-push-8 {
-  left: 66.66666667%;
-}
-
-.col-xs-push-7 {
-  left: 58.33333333%;
-}
-
-.col-xs-push-6 {
-  left: 50%;
-}
-
-.col-xs-push-5 {
-  left: 41.66666667%;
-}
-
-.col-xs-push-4 {
-  left: 33.33333333%;
-}
-
-.col-xs-push-3 {
-  left: 25%;
-}
-
-.col-xs-push-2 {
-  left: 16.66666667%;
-}
-
-.col-xs-push-1 {
-  left: 8.33333333%;
-}
-
-.col-xs-push-0 {
-  left: 0%;
-}
-
-.col-xs-offset-12 {
-  margin-left: 100%;
-}
-
-.col-xs-offset-11 {
-  margin-left: 91.66666667%;
-}
-
-.col-xs-offset-10 {
-  margin-left: 83.33333333%;
-}
-
-.col-xs-offset-9 {
-  margin-left: 75%;
-}
-
-.col-xs-offset-8 {
-  margin-left: 66.66666667%;
-}
-
-.col-xs-offset-7 {
-  margin-left: 58.33333333%;
-}
-
-.col-xs-offset-6 {
-  margin-left: 50%;
-}
-
-.col-xs-offset-5 {
-  margin-left: 41.66666667%;
-}
-
-.col-xs-offset-4 {
-  margin-left: 33.33333333%;
-}
-
-.col-xs-offset-3 {
-  margin-left: 25%;
-}
-
-.col-xs-offset-2 {
-  margin-left: 16.66666667%;
-}
-
-.col-xs-offset-1 {
-  margin-left: 8.33333333%;
-}
-
-.col-xs-offset-0 {
-  margin-left: 0%;
-}
-
-table {
-  max-width: 100%;
-  background-color: transparent;
-}
-
-th {
-  text-align: left;
-}
-
-.table {
-  width: 100%;
-  margin-bottom: 20px;
-}
-
-.table > thead > tr > th,
-.table > tbody > tr > th,
-.table > tfoot > tr > th,
-.table > thead > tr > td,
-.table > tbody > tr > td,
-.table > tfoot > tr > td {
-  padding: 8px;
-  line-height: 1.42857143;
-  vertical-align: top;
-  border-top: 1px solid #dddddd;
-}
-
-.table > thead > tr > th {
-  vertical-align: bottom;
-  border-bottom: 2px solid #dddddd;
-}
-
-.table > caption + thead > tr:first-child > th,
-.table > colgroup + thead > tr:first-child > th,
-.table > thead:first-child > tr:first-child > th,
-.table > caption + thead > tr:first-child > td,
-.table > colgroup + thead > tr:first-child > td,
-.table > thead:first-child > tr:first-child > td {
-  border-top: 0;
-}
-
-.table > tbody + tbody {
-  border-top: 2px solid #dddddd;
-}
-
-.table .table {
-  background-color: #ffffff;
-}
-
-.table-condensed > thead > tr > th,
-.table-condensed > tbody > tr > th,
-.table-condensed > tfoot > tr > th,
-.table-condensed > thead > tr > td,
-.table-condensed > tbody > tr > td,
-.table-condensed > tfoot > tr > td {
-  padding: 5px;
-}
-
-.table-bordered {
-  border: 1px solid #dddddd;
-}
-
-.table-bordered > thead > tr > th,
-.table-bordered > tbody > tr > th,
-.table-bordered > tfoot > tr > th,
-.table-bordered > thead > tr > td,
-.table-bordered > tbody > tr > td,
-.table-bordered > tfoot > tr > td {
-  border: 1px solid #dddddd;
-}
-
-.table-bordered > thead > tr > th,
-.table-bordered > thead > tr > td {
-  border-bottom-width: 2px;
-}
-
-.table-striped > tbody > tr:nth-child(odd) > td,
-.table-striped > tbody > tr:nth-child(odd) > th {
-  background-color: #f9f9f9;
-}
-
- {
-  background-color: #f5f5f5;
-}
-
-table col[class*="col-"] {
-  position: static;
-  float: none;
-  display: table-column;
-}
-
-table td[class*="col-"],
-table th[class*="col-"] {
-  position: static;
-  float: none;
-  display: table-cell;
-}
-
-.table > thead > tr > td.active,
-.table > tbody > tr > td.active,
-.table > tfoot > tr > td.active,
-.table > thead > tr > th.active,
-.table > tbody > tr > th.active,
-.table > tfoot > tr > th.active,
-.table > thead > tr.active > td,
-.table > tbody > tr.active > td,
-.table > tfoot > tr.active > td,
-.table > thead > tr.active > th,
-.table > tbody > tr.active > th,
-.table > tfoot > tr.active > th {
-  background-color: #f5f5f5;
-}
-
- {
-  background-color: #e8e8e8;
-}
-
-.table > thead > tr > td.success,
-.table > tbody > tr > td.success,
-.table > tfoot > tr > td.success,
-.table > thead > tr > th.success,
-.table > tbody > tr > th.success,
-.table > tfoot > tr > th.success,
-.table > thead > tr.success > td,
-.table > tbody > tr.success > td,
-.table > tfoot > tr.success > td,
-.table > thead > tr.success > th,
-.table > tbody > tr.success > th,
-.table > tfoot > tr.success > th {
-  background-color: #dff0d8;
-}
-
- {
-  background-color: #d0e9c6;
-}
-
-.table > thead > tr > td.info,
-.table > tbody > tr > td.info,
-.table > tfoot > tr > td.info,
-.table > thead > tr > th.info,
-.table > tbody > tr > th.info,
-.table > tfoot > tr > th.info,
-.table > thead > tr.info > td,
-.table > tbody > tr.info > td,
-.table > tfoot > tr.info > td,
-.table > thead > tr.info > th,
-.table > tbody > tr.info > th,
-.table > tfoot > tr.info > th {
-  background-color: #d9edf7;
-}
-
- {
-  background-color: #c4e3f3;
-}
-
-.table > thead > tr > td.warning,
-.table > tbody > tr > td.warning,
-.table > tfoot > tr > td.warning,
-.table > thead > tr > th.warning,
-.table > tbody > tr > th.warning,
-.table > tfoot > tr > th.warning,
-.table > thead > tr.warning > td,
-.table > tbody > tr.warning > td,
-.table > tfoot > tr.warning > td,
-.table > thead > tr.warning > th,
-.table > tbody > tr.warning > th,
-.table > tfoot > tr.warning > th {
-  background-color: #fcf8e3;
-}
-
- {
-  background-color: #faf2cc;
-}
-
-.table > thead > tr > td.danger,
-.table > tbody > tr > td.danger,
-.table > tfoot > tr > td.danger,
-.table > thead > tr > th.danger,
-.table > tbody > tr > th.danger,
-.table > tfoot > tr > th.danger,
-.table > thead > tr.danger > td,
-.table > tbody > tr.danger > td,
-.table > tfoot > tr.danger > td,
-.table > thead > tr.danger > th,
-.table > tbody > tr.danger > th,
-.table > tfoot > tr.danger > th {
-  background-color: #f2dede;
-}
-
- {
-  background-color: #ebcccc;
-}
-
-fieldset {
-  padding: 0;
-  margin: 0;
-  border: 0;
-  min-width: 0;
-}
-
-legend {
-  display: block;
-  width: 100%;
-  padding: 0;
-  margin-bottom: 20px;
-  font-size: 21px;
-  line-height: inherit;
-  color: #333333;
-  border: 0;
-  border-bottom: 1px solid #e5e5e5;
-}
-
-label {
-  display: inline-block;
-  margin-bottom: 5px;
-  font-weight: bold;
-}
-
-input[type="search"] {
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-
-input[type="radio"],
-input[type="checkbox"] {
-  margin: 4px 0 0;
-  margin-top: 1px \9;
-  /* IE8-9 */
-  line-height: normal;
-}
-
-input[type="file"] {
-  display: block;
-}
-
-input[type="range"] {
-  display: block;
-  width: 100%;
-}
-
-select[multiple],
-select[size] {
-  height: auto;
-}
-
-input[type="file"]:focus,
-input[type="radio"]:focus,
-input[type="checkbox"]:focus {
-  outline: thin dotted;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-
-output {
-  display: block;
-  padding-top: 7px;
-  font-size: 14px;
-  line-height: 1.42857143;
-  color: #555555;
-}
-
-.form-control {
-  display: block;
-  width: 100%;
-  height: 34px;
-  padding: 6px 12px;
-  font-size: 14px;
-  line-height: 1.42857143;
-  color: #555555;
-  background-color: #ffffff;
-  background-image: none;
-  border: 1px solid #cccccc;
-  border-radius: 4px;
-  -webkit-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-color ease-in-out .15s, box-shadow ease-in-out .15s;
-  transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
-}
-
-.form-control:focus {
-  border-color: #66afe9;
-  outline: 0;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
-  box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
-}
-
-.form-control::-moz-placeholder {
-  color: #999999;
-  opacity: 1;
-}
-
-.form-control:-ms-input-placeholder {
-  color: #999999;
-}
-
-.form-control::-webkit-input-placeholder {
-  color: #999999;
-}
-
-.form-control[disabled],
-.form-control[readonly],
-fieldset[disabled] .form-control {
-  cursor: not-allowed;
-  background-color: #eeeeee;
-  opacity: 1;
-}
-
-textarea.form-control {
-  height: auto;
-}
-
-input[type="search"] {
-  -webkit-appearance: none;
-}
-
-input[type="date"] {
-  line-height: 34px;
-}
-
-.form-group {
-  margin-bottom: 15px;
-}
-
-.radio,
-.checkbox {
-  display: block;
-  min-height: 20px;
-  margin-top: 10px;
-  margin-bottom: 10px;
-  padding-left: 20px;
-}
-
-.radio label,
-.checkbox label {
-  display: inline;
-  font-weight: normal;
-  cursor: pointer;
-}
-
-.radio input[type="radio"],
-.radio-inline input[type="radio"],
-.checkbox input[type="checkbox"],
-.checkbox-inline input[type="checkbox"] {
-  float: left;
-  margin-left: -20px;
-}
-
-.radio + .radio,
-.checkbox + .checkbox {
-  margin-top: -5px;
-}
-
-.radio-inline,
-.checkbox-inline {
-  display: inline-block;
-  padding-left: 20px;
-  margin-bottom: 0;
-  vertical-align: middle;
-  font-weight: normal;
-  cursor: pointer;
-}
-
-.radio-inline + .radio-inline,
-.checkbox-inline + .checkbox-inline {
-  margin-top: 0;
-  margin-left: 10px;
-}
-
-input[type="radio"][disabled],
-input[type="checkbox"][disabled],
-.radio[disabled],
-.radio-inline[disabled],
-.checkbox[disabled],
-.checkbox-inline[disabled],
-fieldset[disabled] input[type="radio"],
-fieldset[disabled] input[type="checkbox"],
-fieldset[disabled] .radio,
-fieldset[disabled] .radio-inline,
-fieldset[disabled] .checkbox,
-fieldset[disabled] .checkbox-inline {
-  cursor: not-allowed;
-}
-
-.input-sm {
-  height: 30px;
-  padding: 5px 10px;
-  font-size: 12px;
-  line-height: 1.5;
-  border-radius: 3px;
-}
-
-select.input-sm {
-  height: 30px;
-  line-height: 30px;
-}
-
-textarea.input-sm,
-select[multiple].input-sm {
-  height: auto;
-}
-
-.input-lg {
-  height: 46px;
-  padding: 10px 16px;
-  font-size: 18px;
-  line-height: 1.33;
-  border-radius: 6px;
-}
-
-select.input-lg {
-  height: 46px;
-  line-height: 46px;
-}
-
-textarea.input-lg,
-select[multiple].input-lg {
-  height: auto;
-}
-
-.has-feedback {
-  position: relative;
-}
-
-.has-feedback .form-control {
-  padding-right: 42.5px;
-}
-
-.has-feedback .form-control-feedback {
-  position: absolute;
-  top: 25px;
-  right: 0;
-  display: block;
-  width: 34px;
-  height: 34px;
-  line-height: 34px;
-  text-align: center;
-}
-
-.has-success .help-block,
-.has-success .control-label,
-.has-success .radio,
-.has-success .checkbox,
-.has-success .radio-inline,
-.has-success .checkbox-inline {
-  color: #3c763d;
-}
-
-.has-success .form-control {
-  border-color: #3c763d;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-
-.has-success .form-control:focus {
-  border-color: #2b542c;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
-}
-
-.has-success .input-group-addon {
-  color: #3c763d;
-  border-color: #3c763d;
-  background-color: #dff0d8;
-}
-
-.has-success .form-control-feedback {
-  color: #3c763d;
-}
-
-.has-warning .help-block,
-.has-warning .control-label,
-.has-warning .radio,
-.has-warning .checkbox,
-.has-warning .radio-inline,
-.has-warning .checkbox-inline {
-  color: #8a6d3b;
-}
-
-.has-warning .form-control {
-  border-color: #8a6d3b;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-
-.has-warning .form-control:focus {
-  border-color: #66512c;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
-}
-
-.has-warning .input-group-addon {
-  color: #8a6d3b;
-  border-color: #8a6d3b;
-  background-color: #fcf8e3;
-}
-
-.has-warning .form-control-feedback {
-  color: #8a6d3b;
-}
-
-.has-error .help-block,
-.has-error .control-label,
-.has-error .radio,
-.has-error .checkbox,
-.has-error .radio-inline,
-.has-error .checkbox-inline {
-  color: #a94442;
-}
-
-.has-error .form-control {
-  border-color: #a94442;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-
-.has-error .form-control:focus {
-  border-color: #843534;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
-}
-
-.has-error .input-group-addon {
-  color: #a94442;
-  border-color: #a94442;
-  background-color: #f2dede;
-}
-
-.has-error .form-control-feedback {
-  color: #a94442;
-}
-
-.form-control-static {
-  margin-bottom: 0;
-}
-
-.help-block {
-  display: block;
-  margin-top: 5px;
-  margin-bottom: 10px;
-  color: #737373;
-}
-
-.form-horizontal .control-label,
-.form-horizontal .radio,
-.form-horizontal .checkbox,
-.form-horizontal .radio-inline,
-.form-horizontal .checkbox-inline {
-  margin-top: 0;
-  margin-bottom: 0;
-  padding-top: 7px;
-}
-
-.form-horizontal .radio,
-.form-horizontal .checkbox {
-  min-height: 27px;
-}
-
-.form-horizontal .form-group {
-  margin-left: -15px;
-  margin-right: -15px;
-}
-
-.form-horizontal .form-control-static {
-  padding-top: 7px;
-}
-
-.form-horizontal .has-feedback .form-control-feedback {
-  top: 0;
-  right: 15px;
-}
-
-.btn {
-  display: inline-block;
-  margin-bottom: 0;
-  font-weight: normal;
-  text-align: center;
-  vertical-align: middle;
-  cursor: pointer;
-  background-image: none;
-  border: 1px solid transparent;
-  white-space: nowrap;
-  padding: 6px 12px;
-  font-size: 14px;
-  line-height: 1.42857143;
-  border-radius: 4px;
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-}
-
-.btn:focus,
-.btn:active:focus,
-.btn.active:focus {
-  outline: thin dotted;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-
-.btn:focus {
-  color: #333333;
-  text-decoration: none;
-}
-
-.btn:active,
-.btn.active {
-  outline: 0;
-  background-image: none;
-  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
-  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
-}
-
-.btn.disabled,
-.btn[disabled],
-fieldset[disabled] .btn {
-  cursor: not-allowed;
-  pointer-events: none;
-  opacity: 0.65;
-  filter: alpha(opacity=65);
-  -webkit-box-shadow: none;
-  box-shadow: none;
-}
-
-.btn-default {
-  color: #333333;
-  background-color: #ffffff;
-  border-color: #cccccc;
-}
-
-.btn-default:focus,
-.btn-default:active,
-.btn-default.active,
-.open .dropdown-toggle.btn-default {
-  color: #333333;
-  background-color: #ebebeb;
-  border-color: #adadad;
-}
-
-.btn-default:active,
-.btn-default.active,
-.open .dropdown-toggle.btn-default {
-  background-image: none;
-}
-
-.btn-default.disabled,
-.btn-default[disabled],
-fieldset[disabled] .btn-default,
-.btn-default.disabled:focus,
-.btn-default[disabled]:focus,
-fieldset[disabled] .btn-default:focus,
-.btn-default.disabled:active,
-.btn-default[disabled]:active,
-fieldset[disabled] .btn-default:active,
-.btn-default.disabled.active,
-.btn-default[disabled].active,
-fieldset[disabled] .btn-default.active {
-  background-color: #ffffff;
-  border-color: #cccccc;
-}
-
-.btn-default .badge {
-  color: #ffffff;
-  background-color: #333333;
-}
-
-.btn-primary {
-  color: #ffffff;
-  background-color: #007aff;
-  border-color: #006ee6;
-}
-
-.btn-primary:focus,
-.btn-primary:active,
-.btn-primary.active,
-.open .dropdown-toggle.btn-primary {
-  color: #ffffff;
-  background-color: #0066d6;
-  border-color: #0051a8;
-}
-
-.btn-primary:active,
-.btn-primary.active,
-.open .dropdown-toggle.btn-primary {
-  background-image: none;
-}
-
-.btn-primary.disabled,
-.btn-primary[disabled],
-fieldset[disabled] .btn-primary,
-.btn-primary.disabled:focus,
-.btn-primary[disabled]:focus,
-fieldset[disabled] .btn-primary:focus,
-.btn-primary.disabled:active,
-.btn-primary[disabled]:active,
-fieldset[disabled] .btn-primary:active,
-.btn-primary.disabled.active,
-.btn-primary[disabled].active,
-fieldset[disabled] .btn-primary.active {
-  background-color: #007aff;
-  border-color: #006ee6;
-}
-
-.btn-primary .badge {
-  color: #007aff;
-  background-color: #ffffff;
-}
-
-.btn-success {
-  color: #ffffff;
-  background-color: #4cd964;
-  border-color: #37d552;
-}
-
-.btn-success:focus,
-.btn-success:active,
-.btn-success.active,
-.open .dropdown-toggle.btn-success {
-  color: #ffffff;
-  background-color: #2cd048;
-  border-color: #24aa3b;
-}
-
-.btn-success:active,
-.btn-success.active,
-.open .dropdown-toggle.btn-success {
-  background-image: none;
-}
-
-.btn-success.disabled,
-.btn-success[disabled],
-fieldset[disabled] .btn-success,
-.btn-success.disabled:focus,
-.btn-success[disabled]:focus,
-fieldset[disabled] .btn-success:focus,
-.btn-success.disabled:active,
-.btn-success[disabled]:active,
-fieldset[disabled] .btn-success:active,
-.btn-success.disabled.active,
-.btn-success[disabled].active,
-fieldset[disabled] .btn-success.active {
-  background-color: #4cd964;
-  border-color: #37d552;
-}
-
-.btn-success .badge {
-  color: #4cd964;
-  background-color: #ffffff;
-}
-
-.btn-info {
-  color: #ffffff;
-  background-color: #34aadc;
-  border-color: #249ed2;
-}
-
-.btn-info:focus,
-.btn-info:active,
-.btn-info.active,
-.open .dropdown-toggle.btn-info {
-  color: #ffffff;
-  background-color: #2295c5;
-  border-color: #1b779e;
-}
-
-.btn-info:active,
-.btn-info.active,
-.open .dropdown-toggle.btn-info {
-  background-image: none;
-}
-
-.btn-info.disabled,
-.btn-info[disabled],
-fieldset[disabled] .btn-info,
-.btn-info.disabled:focus,
-.btn-info[disabled]:focus,
-fieldset[disabled] .btn-info:focus,
-.btn-info.disabled:active,
-.btn-info[disabled]:active,
-fieldset[disabled] .btn-info:active,
-.btn-info.disabled.active,
-.btn-info[disabled].active,
-fieldset[disabled] .btn-info.active {
-  background-color: #34aadc;
-  border-color: #249ed2;
-}
-
-.btn-info .badge {
-  color: #34aadc;
-  background-color: #ffffff;
-}
-
-.btn-warning {
-  color: #ffffff;
-  background-color: #ffcc00;
-  border-color: #e6b800;
-}
-
-.btn-warning:focus,
-.btn-warning:active,
-.btn-warning.active,
-.open .dropdown-toggle.btn-warning {
-  color: #ffffff;
-  background-color: #d6ab00;
-  border-color: #a88700;
-}
-
-.btn-warning:active,
-.btn-warning.active,
-.open .dropdown-toggle.btn-warning {
-  background-image: none;
-}
-
-.btn-warning.disabled,
-.btn-warning[disabled],
-fieldset[disabled] .btn-warning,
-.btn-warning.disabled:focus,
-.btn-warning[disabled]:focus,
-fieldset[disabled] .btn-warning:focus,
-.btn-warning.disabled:active,
-.btn-warning[disabled]:active,
-fieldset[disabled] .btn-warning:active,
-.btn-warning.disabled.active,
-.btn-warning[disabled].active,
-fieldset[disabled] .btn-warning.active {
-  background-color: #ffcc00;
-  border-color: #e6b800;
-}
-
-.btn-warning .badge {
-  color: #ffcc00;
-  background-color: #ffffff;
-}
-
-.btn-danger {
-  color: #ffffff;
-  background-color: #ff3b30;
-  border-color: #ff2317;
-}
-
-.btn-danger:focus,
-.btn-danger:active,
-.btn-danger.active,
-.open .dropdown-toggle.btn-danger {
-  color: #ffffff;
-  background-color: #ff1407;
-  border-color: #d80b00;
-}
-
-.btn-danger:active,
-.btn-danger.active,
-.open .dropdown-toggle.btn-danger {
-  background-image: none;
-}
-
-.btn-danger.disabled,
-.btn-danger[disabled],
-fieldset[disabled] .btn-danger,
-.btn-danger.disabled:focus,
-.btn-danger[disabled]:focus,
-fieldset[disabled] .btn-danger:focus,
-.btn-danger.disabled:active,
-.btn-danger[disabled]:active,
-fieldset[disabled] .btn-danger:active,
-.btn-danger.disabled.active,
-.btn-danger[disabled].active,
-fieldset[disabled] .btn-danger.active {
-  background-color: #ff3b30;
-  border-color: #ff2317;
-}
-
-.btn-danger .badge {
-  color: #ff3b30;
-  background-color: #ffffff;
-}
-
-.btn-link {
-  color: #007aff;
-  font-weight: normal;
-  cursor: pointer;
-  border-radius: 0;
-}
-
-.btn-link,
-.btn-link:active,
-.btn-link[disabled],
-fieldset[disabled] .btn-link {
-  background-color: transparent;
-  -webkit-box-shadow: none;
-  box-shadow: none;
-}
-
-.btn-link,
-.btn-link:focus,
-.btn-link:active {
-  border-color: transparent;
-}
-
-.btn-link:focus {
-  color: #0055b3;
-  text-decoration: underline;
-  background-color: transparent;
-}
-
-.btn-link[disabled]:focus,
-fieldset[disabled] .btn-link:focus {
-  color: #999999;
-  text-decoration: none;
-}
-
-.btn-lg,
-.btn-group-lg > .btn {
-  padding: 10px 16px;
-  font-size: 18px;
-  line-height: 1.33;
-  border-radius: 6px;
-}
-
-.btn-sm,
-.btn-group-sm > .btn {
-  padding: 5px 10px;
-  font-size: 12px;
-  line-height: 1.5;
-  border-radius: 3px;
-}
-
-.btn-xs,
-.btn-group-xs > .btn {
-  padding: 1px 5px;
-  font-size: 12px;
-  line-height: 1.5;
-  border-radius: 3px;
-}
-
-.btn-block {
-  display: block;
-  width: 100%;
-  padding-left: 0;
-  padding-right: 0;
-}
-
-.btn-block + .btn-block {
-  margin-top: 5px;
-}
-
-input[type="submit"].btn-block,
-input[type="reset"].btn-block,
-input[type="button"].btn-block {
-  width: 100%;
-}
-
-.fade {
-  opacity: 0;
-  -webkit-transition: opacity 0.15s linear;
-  transition: opacity 0.15s linear;
-}
-
-.fade.in {
-  opacity: 1;
-}
-
-.collapse {
-  display: none;
-}
-
-.collapse.in {
-  display: block;
-}
-
-.collapsing {
-  position: relative;
-  height: 0;
-  overflow: hidden;
-  -webkit-transition: height 0.35s ease;
-  transition: height 0.35s ease;
-}
-
-.caret {
-  display: inline-block;
-  width: 0;
-  height: 0;
-  margin-left: 2px;
-  vertical-align: middle;
-  border-top: 4px solid;
-  border-right: 4px solid transparent;
-  border-left: 4px solid transparent;
-}
-
-.dropdown {
-  position: relative;
-}
-
-.dropdown-toggle:focus {
-  outline: 0;
-}
-
-.dropdown-menu {
-  position: absolute;
-  top: 100%;
-  left: 0;
-  z-index: 1000;
-  display: none;
-  float: left;
-  min-width: 160px;
-  padding: 5px 0;
-  margin: 2px 0 0;
-  list-style: none;
-  font-size: 14px;
-  background-color: #ffffff;
-  border: 1px solid #cccccc;
-  border: 1px solid rgba(0, 0, 0, 0.15);
-  border-radius: 4px;
-  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
-  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
-  background-clip: padding-box;
-}
-
-.dropdown-menu.pull-right {
-  right: 0;
-  left: auto;
-}
-
-.dropdown-menu .divider {
-  height: 1px;
-  margin: 9px 0;
-  overflow: hidden;
-  background-color: #e5e5e5;
-}
-
-.dropdown-menu > li > a {
-  display: block;
-  padding: 3px 20px;
-  clear: both;
-  font-weight: normal;
-  line-height: 1.42857143;
-  color: #333333;
-  white-space: nowrap;
-}
-
-.dropdown-menu > li > a:focus {
-  text-decoration: none;
-  color: #262626;
-  background-color: #f5f5f5;
-}
-
-.dropdown-menu > .active > a,
-.dropdown-menu > .active > a:focus {
-  color: #ffffff;
-  text-decoration: none;
-  outline: 0;
-  background-color: #007aff;
-}
-
-.dropdown-menu > .disabled > a,
-.dropdown-menu > .disabled > a:focus {
-  color: #999999;
-}
-
-.dropdown-menu > .disabled > a:focus {
-  text-decoration: none;
-  background-color: transparent;
-  background-image: none;
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-  cursor: not-allowed;
-}
-
-.open > .dropdown-menu {
-  display: block;
-}
-
-.open > a {
-  outline: 0;
-}
-
-.dropdown-menu-right {
-  left: auto;
-  right: 0;
-}
-
-.dropdown-menu-left {
-  left: 0;
-  right: auto;
-}
-
-.dropdown-header {
-  display: block;
-  padding: 3px 20px;
-  font-size: 12px;
-  line-height: 1.42857143;
-  color: #999999;
-}
-
-.dropdown-backdrop {
-  position: fixed;
-  left: 0;
-  right: 0;
-  bottom: 0;
-  top: 0;
-  z-index: 990;
-}
-
-.pull-right > .dropdown-menu {
-  right: 0;
-  left: auto;
-}
-
-.dropup .caret,
-.navbar-fixed-bottom .dropdown .caret {
-  border-top: 0;
-  border-bottom: 4px solid;
-  content: "";
-}
-
-.dropup .dropdown-menu,
-.navbar-fixed-bottom .dropdown .dropdown-menu {
-  top: auto;
-  bottom: 100%;
-  margin-bottom: 1px;
-}
-
-.btn-group,
-.btn-group-vertical {
-  position: relative;
-  display: inline-block;
-  vertical-align: middle;
-}
-
-.btn-group > .btn,
-.btn-group-vertical > .btn {
-  position: relative;
-  float: left;
-}
-
-.btn-group > .btn:focus,
-.btn-group-vertical > .btn:focus,
-.btn-group > .btn:active,
-.btn-group-vertical > .btn:active,
-.btn-group > .btn.active,
-.btn-group-vertical > .btn.active {
-  z-index: 2;
-}
-
-.btn-group > .btn:focus,
-.btn-group-vertical > .btn:focus {
-  outline: none;
-}
-
-.btn-group .btn + .btn,
-.btn-group .btn + .btn-group,
-.btn-group .btn-group + .btn,
-.btn-group .btn-group + .btn-group {
-  margin-left: -1px;
-}
-
-.btn-toolbar {
-  margin-left: -5px;
-}
-
-.btn-toolbar .btn-group,
-.btn-toolbar .input-group {
-  float: left;
-}
-
-.btn-toolbar > .btn,
-.btn-toolbar > .btn-group,
-.btn-toolbar > .input-group {
-  margin-left: 5px;
-}
-
-.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
-  border-radius: 0;
-}
-
-.btn-group > .btn:first-child {
-  margin-left: 0;
-}
-
-.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
-  border-bottom-right-radius: 0;
-  border-top-right-radius: 0;
-}
-
-.btn-group > .btn:last-child:not(:first-child),
-.btn-group > .dropdown-toggle:not(:first-child) {
-  border-bottom-left-radius: 0;
-  border-top-left-radius: 0;
-}
-
-.btn-group > .btn-group {
-  float: left;
-}
-
-.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
-  border-radius: 0;
-}
-
-.btn-group > .btn-group:first-child > .btn:last-child,
-.btn-group > .btn-group:first-child > .dropdown-toggle {
-  border-bottom-right-radius: 0;
-  border-top-right-radius: 0;
-}
-
-.btn-group > .btn-group:last-child > .btn:first-child {
-  border-bottom-left-radius: 0;
-  border-top-left-radius: 0;
-}
-
-.btn-group .dropdown-toggle:active,
-.btn-group.open .dropdown-toggle {
-  outline: 0;
-}
-
-.btn-group > .btn + .dropdown-toggle {
-  padding-left: 8px;
-  padding-right: 8px;
-}
-
-.btn-group > .btn-lg + .dropdown-toggle {
-  padding-left: 12px;
-  padding-right: 12px;
-}
-
-.btn-group.open .dropdown-toggle {
-  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
-  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
-}
-
-.btn-group.open .dropdown-toggle.btn-link {
-  -webkit-box-shadow: none;
-  box-shadow: none;
-}
-
-.btn .caret {
-  margin-left: 0;
-}
-
-.btn-lg .caret {
-  border-width: 5px 5px 0;
-  border-bottom-width: 0;
-}
-
-.dropup .btn-lg .caret {
-  border-width: 0 5px 5px;
-}
-
-.btn-group-vertical > .btn,
-.btn-group-vertical > .btn-group,
-.btn-group-vertical > .btn-group > .btn {
-  display: block;
-  float: none;
-  width: 100%;
-  max-width: 100%;
-}
-
-.btn-group-vertical > .btn-group > .btn {
-  float: none;
-}
-
-.btn-group-vertical > .btn + .btn,
-.btn-group-vertical > .btn + .btn-group,
-.btn-group-vertical > .btn-group + .btn,
-.btn-group-vertical > .btn-group + .btn-group {
-  margin-top: -1px;
-  margin-left: 0;
-}
-
-.btn-group-vertical > .btn:not(:first-child):not(:last-child) {
-  border-radius: 0;
-}
-
-.btn-group-vertical > .btn:first-child:not(:last-child) {
-  border-top-right-radius: 4px;
-  border-bottom-right-radius: 0;
-  border-bottom-left-radius: 0;
-}
-
-.btn-group-vertical > .btn:last-child:not(:first-child) {
-  border-bottom-left-radius: 4px;
-  border-top-right-radius: 0;
-  border-top-left-radius: 0;
-}
-
-.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
-  border-radius: 0;
-}
-
-.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
-.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
-  border-bottom-right-radius: 0;
-  border-bottom-left-radius: 0;
-}
-
-.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
-  border-top-right-radius: 0;
-  border-top-left-radius: 0;
-}
-
-.btn-group-justified {
-  display: table;
-  width: 100%;
-  table-layout: fixed;
-  border-collapse: separate;
-}
-
-.btn-group-justified > .btn,
-.btn-group-justified > .btn-group {
-  float: none;
-  display: table-cell;
-  width: 1%;
-}
-
-.btn-group-justified > .btn-group .btn {
-  width: 100%;
-}
-
-[data-toggle="buttons"] > .btn > input[type="radio"],
-[data-toggle="buttons"] > .btn > input[type="checkbox"] {
-  display: none;
-}
-
-.input-group {
-  position: relative;
-  display: table;
-  border-collapse: separate;
-}
-
-.input-group[class*="col-"] {
-  float: none;
-  padding-left: 0;
-  padding-right: 0;
-}
-
-.input-group .form-control {
-  position: relative;
-  z-index: 2;
-  float: left;
-  width: 100%;
-  margin-bottom: 0;
-}
-
-.input-group-lg > .form-control,
-.input-group-lg > .input-group-addon,
-.input-group-lg > .input-group-btn > .btn {
-  height: 46px;
-  padding: 10px 16px;
-  font-size: 18px;
-  line-height: 1.33;
-  border-radius: 6px;
-}
-
-select.input-group-lg > .form-control,
-select.input-group-lg > .input-group-addon,
-select.input-group-lg > .input-group-btn > .btn {
-  height: 46px;
-  line-height: 46px;
-}
-
-textarea.input-group-lg > .form-control,
-textarea.input-group-lg > .input-group-addon,
-textarea.input-group-lg > .input-group-btn > .btn,
-select[multiple].input-group-lg > .form-control,
-select[multiple].input-group-lg > .input-group-addon,
-select[multiple].input-group-lg > .input-group-btn > .btn {
-  height: auto;
-}
-
-.input-group-sm > .form-control,
-.input-group-sm > .input-group-addon,
-.input-group-sm > .input-group-btn > .btn {
-  height: 30px;
-  padding: 5px 10px;
-  font-size: 12px;
-  line-height: 1.5;
-  border-radius: 3px;
-}
-
-select.input-group-sm > .form-control,
-select.input-group-sm > .input-group-addon,
-select.input-group-sm > .input-group-btn > .btn {
-  height: 30px;
-  line-height: 30px;
-}
-
-textarea.input-group-sm > .form-control,
-textarea.input-group-sm > .input-group-addon,
-textarea.input-group-sm > .input-group-btn > .btn,
-select[multiple].input-group-sm > .form-control,
-select[multiple].input-group-sm > .input-group-addon,
-select[multiple].input-group-sm > .input-group-btn > .btn {
-  height: auto;
-}
-
-.input-group-addon,
-.input-group-btn,
-.input-group .form-control {
-  display: table-cell;
-}
-
-.input-group-addon:not(:first-child):not(:last-child),
-.input-group-btn:not(:first-child):not(:last-child),
-.input-group .form-control:not(:first-child):not(:last-child) {
-  border-radius: 0;
-}
-
-.input-group-addon,
-.input-group-btn {
-  width: 1%;
-  white-space: nowrap;
-  vertical-align: middle;
-}
-
-.input-group-addon {
-  padding: 6px 12px;
-  font-size: 14px;
-  font-weight: normal;
-  line-height: 1;
-  color: #555555;
-  text-align: center;
-  background-color: #eeeeee;
-  border: 1px solid #cccccc;
-  border-radius: 4px;
-}
-
-.input-group-addon.input-sm {
-  padding: 5px 10px;
-  font-size: 12px;
-  border-radius: 3px;
-}
-
-.input-group-addon.input-lg {
-  padding: 10px 16px;
-  font-size: 18px;
-  border-radius: 6px;
-}
-
-.input-group-addon input[type="radio"],
-.input-group-addon input[type="checkbox"] {
-  margin-top: 0;
-}
-
-.input-group .form-control:first-child,
-.input-group-addon:first-child,
-.input-group-btn:first-child > .btn,
-.input-group-btn:first-child > .btn-group > .btn,
-.input-group-btn:first-child > .dropdown-toggle,
-.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
-.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
-  border-bottom-right-radius: 0;
-  border-top-right-radius: 0;
-}
-
-.input-group-addon:first-child {
-  border-right: 0;
-}
-
-.input-group .form-control:last-child,
-.input-group-addon:last-child,
-.input-group-btn:last-child > .btn,
-.input-group-btn:last-child > .btn-group > .btn,
-.input-group-btn:last-child > .dropdown-toggle,
-.input-group-btn:first-child > .btn:not(:first-child),
-.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
-  border-bottom-left-radius: 0;
-  border-top-left-radius: 0;
-}
-
-.input-group-addon:last-child {
-  border-left: 0;
-}
-
-.input-group-btn {
-  position: relative;
-  font-size: 0;
-  white-space: nowrap;
-}
-
-.input-group-btn > .btn {
-  position: relative;
-}
-
-.input-group-btn > .btn + .btn {
-  margin-left: -1px;
-}
-
-.input-group-btn > .btn:focus,
-.input-group-btn > .btn:active {
-  z-index: 2;
-}
-
-.input-group-btn:first-child > .btn,
-.input-group-btn:first-child > .btn-group {
-  margin-right: -1px;
-}
-
-.input-group-btn:last-child > .btn,
-.input-group-btn:last-child > .btn-group {
-  margin-left: -1px;
-}
-
-.nav {
-  margin-bottom: 0;
-  padding-left: 0;
-  list-style: none;
-}
-
-.nav > li {
-  position: relative;
-  display: block;
-}
-
-.nav > li > a {
-  position: relative;
-  display: block;
-  padding: 10px 15px;
-}
-
-.nav > li > a:focus {
-  text-decoration: none;
-  background-color: #eeeeee;
-}
-
-.nav > li.disabled > a {
-  color: #999999;
-}
-
-.nav > li.disabled > a:focus {
-  color: #999999;
-  text-decoration: none;
-  background-color: transparent;
-  cursor: not-allowed;
-}
-
-.nav .open > a,
-.nav .open > a:focus {
-  background-color: #eeeeee;
-  border-color: #007aff;
-}
-
-.nav .nav-divider {
-  height: 1px;
-  margin: 9px 0;
-  overflow: hidden;
-  background-color: #e5e5e5;
-}
-
-.nav > li > a > img {
-  max-width: none;
-}
-
-.nav-tabs {
-  border-bottom: 1px solid #dddddd;
-}
-
-.nav-tabs > li {
-  float: left;
-  margin-bottom: -1px;
-}
-
-.nav-tabs > li > a {
-  margin-right: 2px;
-  line-height: 1.42857143;
-  border: 1px solid transparent;
-  border-radius: 4px 4px 0 0;
-}
-
- {
-  border-color: #eeeeee #eeeeee #dddddd;
-}
-
-.nav-tabs > li.active > a,
-.nav-tabs > li.active > a:focus {
-  color: #555555;
-  background-color: #ffffff;
-  border: 1px solid #dddddd;
-  border-bottom-color: transparent;
-  cursor: default;
-}
-
-.nav-tabs.nav-justified {
-  width: 100%;
-  border-bottom: 0;
-}
-
-.nav-tabs.nav-justified > li {
-  float: none;
-}
-
-.nav-tabs.nav-justified > li > a {
-  text-align: center;
-  margin-bottom: 5px;
-}
-
-.nav-tabs.nav-justified > .dropdown .dropdown-menu {
-  top: auto;
-  left: auto;
-}
-
-.nav-tabs.nav-justified > li > a {
-  margin-right: 0;
-  border-radius: 4px;
-}
-
-.nav-tabs.nav-justified > .active > a,
-.nav-tabs.nav-justified > .active > a:focus {
-  border: 1px solid #dddddd;
-}
-
-.nav-pills > li {
-  float: left;
-}
-
-.nav-pills > li > a {
-  border-radius: 4px;
-}
-
-.nav-pills > li + li {
-  margin-left: 2px;
-}
-
-.nav-pills > li.active > a,
-.nav-pills > li.active > a:focus {
-  color: #ffffff;
-  background-color: #007aff;
-}
-
-.nav-stacked > li {
-  float: none;
-}
-
-.nav-stacked > li + li {
-  margin-top: 2px;
-  margin-left: 0;
-}
-
-.nav-justified {
-  width: 100%;
-}
-
-.nav-justified > li {
-  float: none;
-}
-
-.nav-justified > li > a {
-  text-align: center;
-  margin-bottom: 5px;
-}
-
-.nav-justified > .dropdown .dropdown-menu {
-  top: auto;
-  left: auto;
-}
-
-.nav-tabs-justified {
-  border-bottom: 0;
-}
-
-.nav-tabs-justified > li > a {
-  margin-right: 0;
-  border-radius: 4px;
-}
-
-.nav-tabs-justified > .active > a,
-.nav-tabs-justified > .active > a:focus {
-  border: 1px solid #dddddd;
-}
-
-.tab-content > .tab-pane {
-  display: none;
-}
-
-.tab-content > .active {
-  display: block;
-}
-
-.nav-tabs .dropdown-menu {
-  margin-top: -1px;
-  border-top-right-radius: 0;
-  border-top-left-radius: 0;
-}
-
-.navbar {
-  position: relative;
-  min-height: 50px;
-  margin-bottom: 20px;
-  border: 1px solid transparent;
-}
-
-.navbar-collapse {
-  max-height: 340px;
-  overflow-x: visible;
-  padding-right: 15px;
-  padding-left: 15px;
-  border-top: 1px solid transparent;
-  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
-  -webkit-overflow-scrolling: touch;
-}
-
-.navbar-collapse.in {
-  overflow-y: auto;
-}
-
-.container > .navbar-header,
-.container-fluid > .navbar-header,
-.container > .navbar-collapse,
-.container-fluid > .navbar-collapse {
-  margin-right: -15px;
-  margin-left: -15px;
-}
-
-.navbar-static-top {
-  z-index: 1000;
-  border-width: 0 0 1px;
-}
-
-.navbar-fixed-top,
-.navbar-fixed-bottom {
-  position: fixed;
-  right: 0;
-  left: 0;
-  z-index: 1030;
-}
-
-.navbar-fixed-top {
-  top: 0;
-  border-width: 0 0 1px;
-}
-
-.navbar-fixed-bottom {
-  bottom: 0;
-  margin-bottom: 0;
-  border-width: 1px 0 0;
-}
-
-.navbar-brand {
-  float: left;
-  padding: 15px 15px;
-  font-size: 18px;
-  line-height: 20px;
-  height: 50px;
-}
-
-.navbar-brand:focus {
-  text-decoration: none;
-}
-
-.navbar-toggle {
-  position: relative;
-  float: right;
-  margin-right: 15px;
-  padding: 9px 10px;
-  margin-top: 8px;
-  margin-bottom: 8px;
-  background-color: transparent;
-  background-image: none;
-  border: 1px solid transparent;
-  border-radius: 4px;
-}
-
-.navbar-toggle:focus {
-  outline: none;
-}
-
-.navbar-toggle .icon-bar {
-  display: block;
-  width: 22px;
-  height: 2px;
-  border-radius: 1px;
-}
-
-.navbar-toggle .icon-bar + .icon-bar {
-  margin-top: 4px;
-}
-
-.navbar-nav {
-  margin: 7.5px -15px;
-}
-
-.navbar-nav > li > a {
-  padding-top: 10px;
-  padding-bottom: 10px;
-  line-height: 20px;
-}
-
-.navbar-form {
-  margin-left: -15px;
-  margin-right: -15px;
-  padding: 10px 15px;
-  border-top: 1px solid transparent;
-  border-bottom: 1px solid transparent;
-  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
-  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
-  margin-top: 8px;
-  margin-bottom: 8px;
-}
-
-.navbar-nav > li > .dropdown-menu {
-  margin-top: 0;
-  border-top-right-radius: 0;
-  border-top-left-radius: 0;
-}
-
-.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
-  border-bottom-right-radius: 0;
-  border-bottom-left-radius: 0;
-}
-
-.navbar-btn {
-  margin-top: 8px;
-  margin-bottom: 8px;
-}
-
-.navbar-btn.btn-sm {
-  margin-top: 10px;
-  margin-bottom: 10px;
-}
-
-.navbar-btn.btn-xs {
-  margin-top: 14px;
-  margin-bottom: 14px;
-}
-
-.navbar-text {
-  margin-top: 15px;
-  margin-bottom: 15px;
-}
-
-.navbar-default {
-  background-color: #f7f7f7;
-  border-color: #cccccc;
-}
-
-.navbar-default .navbar-brand {
-  color: #007aff;
-}
-
-.navbar-default .navbar-brand:focus {
-  color: #0062cc;
-  background-color: transparent;
-}
-
-.navbar-default .navbar-text {
-  color: #007aff;
-}
-
-.navbar-default .navbar-nav > li > a {
-  color: #007aff;
-}
-
-.navbar-default .navbar-nav > li > a:focus {
-  color: #006ee6;
-  background-color: transparent;
-}
-
-.navbar-default .navbar-nav > .active > a,
-.navbar-default .navbar-nav > .active > a:focus {
-  color: #1a87ff;
-  background-color: #e6e6e6;
-}
-
-.navbar-default .navbar-nav > .disabled > a,
-.navbar-default .navbar-nav > .disabled > a:focus {
-  color: #66afff;
-  background-color: transparent;
-}
-
-.navbar-default .navbar-toggle {
-  border-color: #dddddd;
-}
-
-.navbar-default .navbar-toggle:focus {
-  background-color: #dddddd;
-}
-
-.navbar-default .navbar-toggle .icon-bar {
-  background-color: #cccccc;
-}
-
-.navbar-default .navbar-collapse,
-.navbar-default .navbar-form {
-  border-color: #cccccc;
-}
-
-.navbar-default .navbar-nav > .open > a,
-.navbar-default .navbar-nav > .open > a:focus {
-  background-color: #e6e6e6;
-  color: #1a87ff;
-}
-
-.navbar-default .navbar-link {
-  color: #007aff;
-}
-
- {
-  color: #006ee6;
-}
-
-.navbar-inverse {
-  background-color: #222222;
-  border-color: #080808;
-}
-
-.navbar-inverse .navbar-brand {
-  color: #999999;
-}
-
-.navbar-inverse .navbar-brand:focus {
-  color: #ffffff;
-  background-color: transparent;
-}
-
-.navbar-inverse .navbar-text {
-  color: #999999;
-}
-
-.navbar-inverse .navbar-nav > li > a {
-  color: #999999;
-}
-
-.navbar-inverse .navbar-nav > li > a:focus {
-  color: #ffffff;
-  background-color: transparent;
-}
-
-.navbar-inverse .navbar-nav > .active > a,
-.navbar-inverse .navbar-nav > .active > a:focus {
-  color: #ffffff;
-  background-color: #080808;
-}
-
-.navbar-inverse .navbar-nav > .disabled > a,
-.navbar-inverse .navbar-nav > .disabled > a:focus {
-  color: #444444;
-  background-color: transparent;
-}
-
-.navbar-inverse .navbar-toggle {
-  border-color: #333333;
-}
-
-.navbar-inverse .navbar-toggle:focus {
-  background-color: #333333;
-}
-
-.navbar-inverse .navbar-toggle .icon-bar {
-  background-color: #ffffff;
-}
-
-.navbar-inverse .navbar-collapse,
-.navbar-inverse .navbar-form {
-  border-color: #101010;
-}
-
-.navbar-inverse .navbar-nav > .open > a,
-.navbar-inverse .navbar-nav > .open > a:focus {
-  background-color: #080808;
-  color: #ffffff;
-}
-
-.navbar-inverse .navbar-link {
-  color: #999999;
-}
-
- {
-  color: #ffffff;
-}
-
-.pager {
-  padding-left: 0;
-  margin: 20px 0;
-  list-style: none;
-  text-align: center;
-}
-
-.pager li {
-  display: inline;
-}
-
-.pager li > a,
-.pager li > span {
-  display: inline-block;
-  padding: 5px 14px;
-  background-color: #ffffff;
-  border: 1px solid #dddddd;
-  border-radius: 15px;
-}
-
-.pager li > a:focus {
-  text-decoration: none;
-  background-color: #eeeeee;
-}
-
-.pager .next > a,
-.pager .next > span {
-  float: right;
-}
-
-.pager .previous > a,
-.pager .previous > span {
-  float: left;
-}
-
-.pager .disabled > a,
-.pager .disabled > a:focus,
-.pager .disabled > span {
-  color: #999999;
-  background-color: #ffffff;
-  cursor: not-allowed;
-}
-
-.label {
-  display: inline;
-  padding: .2em .6em .3em;
-  font-size: 75%;
-  font-weight: bold;
-  line-height: 1;
-  color: #ffffff;
-  text-align: center;
-  white-space: nowrap;
-  vertical-align: baseline;
-  border-radius: .25em;
-}
-
-.label[href]:focus {
-  color: #ffffff;
-  text-decoration: none;
-  cursor: pointer;
-}
-
-.label:empty {
-  display: none;
-}
-
-.btn .label {
-  position: relative;
-  top: -1px;
-}
-
-.label-default {
-  background-color: #999999;
-}
-
-.label-default[href]:focus {
-  background-color: #808080;
-}
-
-.label-primary {
-  background-color: #007aff;
-}
-
-.label-primary[href]:focus {
-  background-color: #0062cc;
-}
-
-.label-success {
-  background-color: #4cd964;
-}
-
-.label-success[href]:focus {
-  background-color: #2ac845;
-}
-
-.label-info {
-  background-color: #34aadc;
-}
-
-.label-info[href]:focus {
-  background-color: #218ebd;
-}
-
-.label-warning {
-  background-color: #ffcc00;
-}
-
-.label-warning[href]:focus {
-  background-color: #cca300;
-}
-
-.label-danger {
-  background-color: #ff3b30;
-}
-
-.label-danger[href]:focus {
-  background-color: #fc0d00;
-}
-
-.badge {
-  display: inline-block;
-  min-width: 10px;
-  padding: 3px 7px;
-  font-size: 12px;
-  font-weight: normal;
-  color: #ffffff;
-  line-height: 1;
-  vertical-align: baseline;
-  white-space: nowrap;
-  text-align: center;
-  background-color: #999999;
-  border-radius: 10px;
-}
-
-.badge:empty {
-  display: none;
-}
-
-.btn .badge {
-  position: relative;
-  top: -1px;
-}
-
-.btn-xs .badge {
-  top: 0;
-  padding: 1px 5px;
-}
-
-a.badge:focus {
-  color: #ffffff;
-  text-decoration: none;
-  cursor: pointer;
-}
-
-a.list-group-item.active > .badge,
-.nav-pills > .active > a > .badge {
-  color: #007aff;
-  background-color: #ffffff;
-}
-
-.nav-pills > li > a > .badge {
-  margin-left: 3px;
-}
-
-.thumbnail {
-  display: block;
-  padding: 4px;
-  margin-bottom: 20px;
-  line-height: 1.42857143;
-  background-color: #ffffff;
-  border: 1px solid #dddddd;
-  border-radius: 4px;
-  -webkit-transition: all 0.2s ease-in-out;
-  transition: all 0.2s ease-in-out;
-}
-
-.thumbnail > img,
-.thumbnail a > img {
-  margin-left: auto;
-  margin-right: auto;
-}
-
-a.thumbnail:focus,
-a.thumbnail.active {
-  border-color: #007aff;
-}
-
-.thumbnail .caption {
-  padding: 9px;
-  color: #333333;
-}
-
-.alert {
-  padding: 15px;
-  margin-bottom: 20px;
-  border: 1px solid transparent;
-  border-radius: 4px;
-}
-
-.alert h4 {
-  margin-top: 0;
-  color: inherit;
-}
-
-.alert .alert-link {
-  font-weight: normal;
-}
-
-.alert > p,
-.alert > ul {
-  margin-bottom: 0;
-}
-
-.alert > p + p {
-  margin-top: 5px;
-}
-
-.alert-dismissable {
-  padding-right: 35px;
-}
-
-.alert-dismissable .close {
-  position: relative;
-  top: -2px;
-  right: -21px;
-  color: inherit;
-}
-
-.alert-success {
-  background-color: #dff0d8;
-  border-color: #d6e9c6;
-  color: #3c763d;
-}
-
-.alert-success hr {
-  border-top-color: #c9e2b3;
-}
-
-.alert-success .alert-link {
-  color: #2b542c;
-}
-
-.alert-info {
-  background-color: #d9edf7;
-  border-color: #bce8f1;
-  color: #31708f;
-}
-
-.alert-info hr {
-  border-top-color: #a6e1ec;
-}
-
-.alert-info .alert-link {
-  color: #245269;
-}
-
-.alert-warning {
-  background-color: #fcf8e3;
-  border-color: #faebcc;
-  color: #8a6d3b;
-}
-
-.alert-warning hr {
-  border-top-color: #f7e1b5;
-}
-
-.alert-warning .alert-link {
-  color: #66512c;
-}
-
-.alert-danger {
-  background-color: #f2dede;
-  border-color: #ebccd1;
-  color: #a94442;
-}
-
-.alert-danger hr {
-  border-top-color: #e4b9c0;
-}
-
-.alert-danger .alert-link {
-  color: #843534;
-}
-
-@-webkit-keyframes progress-bar-stripes {
-  from {
-    background-position: 40px 0;
-  }
-
-  to {
-    background-position: 0 0;
-  }
-}
-
-@keyframes progress-bar-stripes {
-  from {
-    background-position: 40px 0;
-  }
-
-  to {
-    background-position: 0 0;
-  }
-}
-
-.progress {
-  overflow: hidden;
-  height: 20px;
-  margin-bottom: 20px;
-  background-color: #f5f5f5;
-  border-radius: 4px;
-  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
-  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
-}
-
-.progress-bar {
-  float: left;
-  width: 0%;
-  height: 100%;
-  font-size: 12px;
-  line-height: 20px;
-  color: #ffffff;
-  text-align: center;
-  background-color: #007aff;
-  -webkit-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-transition: width 0.6s ease;
-  transition: width 0.6s ease;
-}
-
-.progress-striped .progress-bar {
-  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: 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-size: 40px 40px;
-}
-
-.progress.active .progress-bar {
-  -webkit-animation: progress-bar-stripes 2s linear infinite;
-  animation: progress-bar-stripes 2s linear infinite;
-}
-
-.progress-bar-success {
-  background-color: #4cd964;
-}
-
-.progress-striped .progress-bar-success {
-  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: 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-bar-info {
-  background-color: #34aadc;
-}
-
-.progress-striped .progress-bar-info {
-  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: 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-bar-warning {
-  background-color: #ffcc00;
-}
-
-.progress-striped .progress-bar-warning {
-  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: 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-bar-danger {
-  background-color: #ff3b30;
-}
-
-.progress-striped .progress-bar-danger {
-  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: 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);
-}
-
-.media,
-.media-body {
-  overflow: hidden;
-  zoom: 1;
-}
-
-.media,
-.media .media {
-  margin-top: 15px;
-}
-
-.media:first-child {
-  margin-top: 0;
-}
-
-.media-object {
-  display: block;
-}
-
-.media-heading {
-  margin: 0 0 5px;
-}
-
-.media > .pull-left {
-  margin-right: 10px;
-}
-
-.media > .pull-right {
-  margin-left: 10px;
-}
-
-.media-list {
-  padding-left: 0;
-  list-style: none;
-}
-
-.list-group {
-  margin-bottom: 20px;
-  padding-left: 0;
-}
-
-.list-group-item {
-  position: relative;
-  display: block;
-  padding: 10px 15px;
-  margin-bottom: -1px;
-  background-color: #ffffff;
-  border: 1px solid #dddddd;
-}
-
-.list-group-item:first-child {
-  border-top-right-radius: 4px;
-  border-top-left-radius: 4px;
-}
-
-.list-group-item:last-chil

<TRUNCATED>

[39/71] [abbrv] brooklyn-ui git commit: add js-yaml so we can parse yaml in the browser

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2d6f77df/usage/jsgui/src/main/webapp/assets/js/libs/js-yaml.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/js/libs/js-yaml.js b/usage/jsgui/src/main/webapp/assets/js/libs/js-yaml.js
new file mode 100644
index 0000000..890b00e
--- /dev/null
+++ b/usage/jsgui/src/main/webapp/assets/js/libs/js-yaml.js
@@ -0,0 +1,3666 @@
+/* js-yaml 3.2.7 https://github.com/nodeca/js-yaml */!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var f;"undefined"!=typeof window?f=window:"undefined"!=typeof global?f=global:"undefined"!=typeof self&&(f=self),f.jsyaml=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
+'use strict';
+
+
+var loader = require('./js-yaml/loader');
+var dumper = require('./js-yaml/dumper');
+
+
+function deprecated(name) {
+  return function () {
+    throw new Error('Function ' + name + ' is deprecated and cannot be used.');
+  };
+}
+
+
+module.exports.Type                = require('./js-yaml/type');
+module.exports.Schema              = require('./js-yaml/schema');
+module.exports.FAILSAFE_SCHEMA     = require('./js-yaml/schema/failsafe');
+module.exports.JSON_SCHEMA         = require('./js-yaml/schema/json');
+module.exports.CORE_SCHEMA         = require('./js-yaml/schema/core');
+module.exports.DEFAULT_SAFE_SCHEMA = require('./js-yaml/schema/default_safe');
+module.exports.DEFAULT_FULL_SCHEMA = require('./js-yaml/schema/default_full');
+module.exports.load                = loader.load;
+module.exports.loadAll             = loader.loadAll;
+module.exports.safeLoad            = loader.safeLoad;
+module.exports.safeLoadAll         = loader.safeLoadAll;
+module.exports.dump                = dumper.dump;
+module.exports.safeDump            = dumper.safeDump;
+module.exports.YAMLException       = require('./js-yaml/exception');
+
+// Deprecared schema names from JS-YAML 2.0.x
+module.exports.MINIMAL_SCHEMA = require('./js-yaml/schema/failsafe');
+module.exports.SAFE_SCHEMA    = require('./js-yaml/schema/default_safe');
+module.exports.DEFAULT_SCHEMA = require('./js-yaml/schema/default_full');
+
+// Deprecated functions from JS-YAML 1.x.x
+module.exports.scan           = deprecated('scan');
+module.exports.parse          = deprecated('parse');
+module.exports.compose        = deprecated('compose');
+module.exports.addConstructor = deprecated('addConstructor');
+
+},{"./js-yaml/dumper":3,"./js-yaml/exception":4,"./js-yaml/loader":5,"./js-yaml/schema":7,"./js-yaml/schema/core":8,"./js-yaml/schema/default_full":9,"./js-yaml/schema/default_safe":10,"./js-yaml/schema/failsafe":11,"./js-yaml/schema/json":12,"./js-yaml/type":13}],2:[function(require,module,exports){
+'use strict';
+
+
+function isNothing(subject) {
+  return (undefined === subject) || (null === subject);
+}
+
+
+function isObject(subject) {
+  return ('object' === typeof subject) && (null !== subject);
+}
+
+
+function toArray(sequence) {
+  if (Array.isArray(sequence)) {
+    return sequence;
+  } else if (isNothing(sequence)) {
+    return [];
+  } else {
+    return [ sequence ];
+  }
+}
+
+
+function extend(target, source) {
+  var index, length, key, sourceKeys;
+
+  if (source) {
+    sourceKeys = Object.keys(source);
+
+    for (index = 0, length = sourceKeys.length; index < length; index += 1) {
+      key = sourceKeys[index];
+      target[key] = source[key];
+    }
+  }
+
+  return target;
+}
+
+
+function repeat(string, count) {
+  var result = '', cycle;
+
+  for (cycle = 0; cycle < count; cycle += 1) {
+    result += string;
+  }
+
+  return result;
+}
+
+
+function isNegativeZero(number) {
+  return (0 === number) && (Number.NEGATIVE_INFINITY === 1 / number);
+}
+
+
+module.exports.isNothing      = isNothing;
+module.exports.isObject       = isObject;
+module.exports.toArray        = toArray;
+module.exports.repeat         = repeat;
+module.exports.isNegativeZero = isNegativeZero;
+module.exports.extend         = extend;
+
+},{}],3:[function(require,module,exports){
+'use strict';
+
+
+var common              = require('./common');
+var YAMLException       = require('./exception');
+var DEFAULT_FULL_SCHEMA = require('./schema/default_full');
+var DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');
+
+
+var _toString       = Object.prototype.toString;
+var _hasOwnProperty = Object.prototype.hasOwnProperty;
+
+
+var CHAR_TAB                  = 0x09; /* Tab */
+var CHAR_LINE_FEED            = 0x0A; /* LF */
+var CHAR_CARRIAGE_RETURN      = 0x0D; /* CR */
+var CHAR_SPACE                = 0x20; /* Space */
+var CHAR_EXCLAMATION          = 0x21; /* ! */
+var CHAR_DOUBLE_QUOTE         = 0x22; /* " */
+var CHAR_SHARP                = 0x23; /* # */
+var CHAR_PERCENT              = 0x25; /* % */
+var CHAR_AMPERSAND            = 0x26; /* & */
+var CHAR_SINGLE_QUOTE         = 0x27; /* ' */
+var CHAR_ASTERISK             = 0x2A; /* * */
+var CHAR_COMMA                = 0x2C; /* , */
+var CHAR_MINUS                = 0x2D; /* - */
+var CHAR_COLON                = 0x3A; /* : */
+var CHAR_GREATER_THAN         = 0x3E; /* > */
+var CHAR_QUESTION             = 0x3F; /* ? */
+var CHAR_COMMERCIAL_AT        = 0x40; /* @ */
+var CHAR_LEFT_SQUARE_BRACKET  = 0x5B; /* [ */
+var CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */
+var CHAR_GRAVE_ACCENT         = 0x60; /* ` */
+var CHAR_LEFT_CURLY_BRACKET   = 0x7B; /* { */
+var CHAR_VERTICAL_LINE        = 0x7C; /* | */
+var CHAR_RIGHT_CURLY_BRACKET  = 0x7D; /* } */
+
+
+var ESCAPE_SEQUENCES = {};
+
+ESCAPE_SEQUENCES[0x00]   = '\\0';
+ESCAPE_SEQUENCES[0x07]   = '\\a';
+ESCAPE_SEQUENCES[0x08]   = '\\b';
+ESCAPE_SEQUENCES[0x09]   = '\\t';
+ESCAPE_SEQUENCES[0x0A]   = '\\n';
+ESCAPE_SEQUENCES[0x0B]   = '\\v';
+ESCAPE_SEQUENCES[0x0C]   = '\\f';
+ESCAPE_SEQUENCES[0x0D]   = '\\r';
+ESCAPE_SEQUENCES[0x1B]   = '\\e';
+ESCAPE_SEQUENCES[0x22]   = '\\"';
+ESCAPE_SEQUENCES[0x5C]   = '\\\\';
+ESCAPE_SEQUENCES[0x85]   = '\\N';
+ESCAPE_SEQUENCES[0xA0]   = '\\_';
+ESCAPE_SEQUENCES[0x2028] = '\\L';
+ESCAPE_SEQUENCES[0x2029] = '\\P';
+
+
+var DEPRECATED_BOOLEANS_SYNTAX = [
+  'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON',
+  'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'
+];
+
+
+function compileStyleMap(schema, map) {
+  var result, keys, index, length, tag, style, type;
+
+  if (null === map) {
+    return {};
+  }
+
+  result = {};
+  keys = Object.keys(map);
+
+  for (index = 0, length = keys.length; index < length; index += 1) {
+    tag = keys[index];
+    style = String(map[tag]);
+
+    if ('!!' === tag.slice(0, 2)) {
+      tag = 'tag:yaml.org,2002:' + tag.slice(2);
+    }
+
+    type = schema.compiledTypeMap[tag];
+
+    if (type && _hasOwnProperty.call(type.styleAliases, style)) {
+      style = type.styleAliases[style];
+    }
+
+    result[tag] = style;
+  }
+
+  return result;
+}
+
+
+function encodeHex(character) {
+  var string, handle, length;
+
+  string = character.toString(16).toUpperCase();
+
+  if (character <= 0xFF) {
+    handle = 'x';
+    length = 2;
+  } else if (character <= 0xFFFF) {
+    handle = 'u';
+    length = 4;
+  } else if (character <= 0xFFFFFFFF) {
+    handle = 'U';
+    length = 8;
+  } else {
+    throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF');
+  }
+
+  return '\\' + handle + common.repeat('0', length - string.length) + string;
+}
+
+
+function State(options) {
+  this.schema      = options['schema'] || DEFAULT_FULL_SCHEMA;
+  this.indent      = Math.max(1, (options['indent'] || 2));
+  this.skipInvalid = options['skipInvalid'] || false;
+  this.flowLevel   = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']);
+  this.styleMap    = compileStyleMap(this.schema, options['styles'] || null);
+
+  this.implicitTypes = this.schema.compiledImplicit;
+  this.explicitTypes = this.schema.compiledExplicit;
+
+  this.tag = null;
+  this.result = '';
+
+  this.duplicates = [];
+  this.usedDuplicates = null;
+}
+
+
+function generateNextLine(state, level) {
+  return '\n' + common.repeat(' ', state.indent * level);
+}
+
+function testImplicitResolving(state, str) {
+  var index, length, type;
+
+  for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {
+    type = state.implicitTypes[index];
+
+    if (type.resolve(str)) {
+      return true;
+    }
+  }
+
+  return false;
+}
+
+function writeScalar(state, object) {
+  var isQuoted, checkpoint, position, length, character, first;
+
+  state.dump = '';
+  isQuoted = false;
+  checkpoint = 0;
+  first = object.charCodeAt(0) || 0;
+
+  if (-1 !== DEPRECATED_BOOLEANS_SYNTAX.indexOf(object)) {
+    // Ensure compatibility with YAML 1.0/1.1 loaders.
+    isQuoted = true;
+  } else if (0 === object.length) {
+    // Quote empty string
+    isQuoted = true;
+  } else if (CHAR_SPACE    === first ||
+             CHAR_SPACE    === object.charCodeAt(object.length - 1)) {
+    isQuoted = true;
+  } else if (CHAR_MINUS    === first ||
+             CHAR_QUESTION === first) {
+    // Don't check second symbol for simplicity
+    isQuoted = true;
+  }
+
+  for (position = 0, length = object.length; position < length; position += 1) {
+    character = object.charCodeAt(position);
+
+    if (!isQuoted) {
+      if (CHAR_TAB                  === character ||
+          CHAR_LINE_FEED            === character ||
+          CHAR_CARRIAGE_RETURN      === character ||
+          CHAR_COMMA                === character ||
+          CHAR_LEFT_SQUARE_BRACKET  === character ||
+          CHAR_RIGHT_SQUARE_BRACKET === character ||
+          CHAR_LEFT_CURLY_BRACKET   === character ||
+          CHAR_RIGHT_CURLY_BRACKET  === character ||
+          CHAR_SHARP                === character ||
+          CHAR_AMPERSAND            === character ||
+          CHAR_ASTERISK             === character ||
+          CHAR_EXCLAMATION          === character ||
+          CHAR_VERTICAL_LINE        === character ||
+          CHAR_GREATER_THAN         === character ||
+          CHAR_SINGLE_QUOTE         === character ||
+          CHAR_DOUBLE_QUOTE         === character ||
+          CHAR_PERCENT              === character ||
+          CHAR_COMMERCIAL_AT        === character ||
+          CHAR_COLON                === character ||
+          CHAR_GRAVE_ACCENT         === character) {
+        isQuoted = true;
+      }
+    }
+
+    if (ESCAPE_SEQUENCES[character] ||
+        !((0x00020 <= character && character <= 0x00007E) ||
+          (0x00085 === character)                         ||
+          (0x000A0 <= character && character <= 0x00D7FF) ||
+          (0x0E000 <= character && character <= 0x00FFFD) ||
+          (0x10000 <= character && character <= 0x10FFFF))) {
+      state.dump += object.slice(checkpoint, position);
+      state.dump += ESCAPE_SEQUENCES[character] || encodeHex(character);
+      checkpoint = position + 1;
+      isQuoted = true;
+    }
+  }
+
+  if (checkpoint < position) {
+    state.dump += object.slice(checkpoint, position);
+  }
+
+  if (!isQuoted && testImplicitResolving(state, state.dump)) {
+    isQuoted = true;
+  }
+
+  if (isQuoted) {
+    state.dump = '"' + state.dump + '"';
+  }
+}
+
+function writeFlowSequence(state, level, object) {
+  var _result = '',
+      _tag    = state.tag,
+      index,
+      length;
+
+  for (index = 0, length = object.length; index < length; index += 1) {
+    // Write only valid elements.
+    if (writeNode(state, level, object[index], false, false)) {
+      if (0 !== index) {
+        _result += ', ';
+      }
+      _result += state.dump;
+    }
+  }
+
+  state.tag = _tag;
+  state.dump = '[' + _result + ']';
+}
+
+function writeBlockSequence(state, level, object, compact) {
+  var _result = '',
+      _tag    = state.tag,
+      index,
+      length;
+
+  for (index = 0, length = object.length; index < length; index += 1) {
+    // Write only valid elements.
+    if (writeNode(state, level + 1, object[index], true, true)) {
+      if (!compact || 0 !== index) {
+        _result += generateNextLine(state, level);
+      }
+      _result += '- ' + state.dump;
+    }
+  }
+
+  state.tag = _tag;
+  state.dump = _result || '[]'; // Empty sequence if no valid values.
+}
+
+function writeFlowMapping(state, level, object) {
+  var _result       = '',
+      _tag          = state.tag,
+      objectKeyList = Object.keys(object),
+      index,
+      length,
+      objectKey,
+      objectValue,
+      pairBuffer;
+
+  for (index = 0, length = objectKeyList.length; index < length; index += 1) {
+    pairBuffer = '';
+
+    if (0 !== index) {
+      pairBuffer += ', ';
+    }
+
+    objectKey = objectKeyList[index];
+    objectValue = object[objectKey];
+
+    if (!writeNode(state, level, objectKey, false, false)) {
+      continue; // Skip this pair because of invalid key;
+    }
+
+    if (state.dump.length > 1024) {
+      pairBuffer += '? ';
+    }
+
+    pairBuffer += state.dump + ': ';
+
+    if (!writeNode(state, level, objectValue, false, false)) {
+      continue; // Skip this pair because of invalid value.
+    }
+
+    pairBuffer += state.dump;
+
+    // Both key and value are valid.
+    _result += pairBuffer;
+  }
+
+  state.tag = _tag;
+  state.dump = '{' + _result + '}';
+}
+
+function writeBlockMapping(state, level, object, compact) {
+  var _result       = '',
+      _tag          = state.tag,
+      objectKeyList = Object.keys(object),
+      index,
+      length,
+      objectKey,
+      objectValue,
+      explicitPair,
+      pairBuffer;
+
+  for (index = 0, length = objectKeyList.length; index < length; index += 1) {
+    pairBuffer = '';
+
+    if (!compact || 0 !== index) {
+      pairBuffer += generateNextLine(state, level);
+    }
+
+    objectKey = objectKeyList[index];
+    objectValue = object[objectKey];
+
+    if (!writeNode(state, level + 1, objectKey, true, true)) {
+      continue; // Skip this pair because of invalid key.
+    }
+
+    explicitPair = (null !== state.tag && '?' !== state.tag) ||
+                   (state.dump && state.dump.length > 1024);
+
+    if (explicitPair) {
+      if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {
+        pairBuffer += '?';
+      } else {
+        pairBuffer += '? ';
+      }
+    }
+
+    pairBuffer += state.dump;
+
+    if (explicitPair) {
+      pairBuffer += generateNextLine(state, level);
+    }
+
+    if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {
+      continue; // Skip this pair because of invalid value.
+    }
+
+    if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {
+      pairBuffer += ':';
+    } else {
+      pairBuffer += ': ';
+    }
+
+    pairBuffer += state.dump;
+
+    // Both key and value are valid.
+    _result += pairBuffer;
+  }
+
+  state.tag = _tag;
+  state.dump = _result || '{}'; // Empty mapping if no valid pairs.
+}
+
+function detectType(state, object, explicit) {
+  var _result, typeList, index, length, type, style;
+
+  typeList = explicit ? state.explicitTypes : state.implicitTypes;
+
+  for (index = 0, length = typeList.length; index < length; index += 1) {
+    type = typeList[index];
+
+    if ((type.instanceOf  || type.predicate) &&
+        (!type.instanceOf || (('object' === typeof object) && (object instanceof type.instanceOf))) &&
+        (!type.predicate  || type.predicate(object))) {
+
+      state.tag = explicit ? type.tag : '?';
+
+      if (type.represent) {
+        style = state.styleMap[type.tag] || type.defaultStyle;
+
+        if ('[object Function]' === _toString.call(type.represent)) {
+          _result = type.represent(object, style);
+        } else if (_hasOwnProperty.call(type.represent, style)) {
+          _result = type.represent[style](object, style);
+        } else {
+          throw new YAMLException('!<' + type.tag + '> tag resolver accepts not "' + style + '" style');
+        }
+
+        state.dump = _result;
+      }
+
+      return true;
+    }
+  }
+
+  return false;
+}
+
+// Serializes `object` and writes it to global `result`.
+// Returns true on success, or false on invalid object.
+//
+function writeNode(state, level, object, block, compact) {
+  state.tag = null;
+  state.dump = object;
+
+  if (!detectType(state, object, false)) {
+    detectType(state, object, true);
+  }
+
+  var type = _toString.call(state.dump);
+
+  if (block) {
+    block = (0 > state.flowLevel || state.flowLevel > level);
+  }
+
+  if ((null !== state.tag && '?' !== state.tag) || (2 !== state.indent && level > 0)) {
+    compact = false;
+  }
+
+  var objectOrArray = '[object Object]' === type || '[object Array]' === type,
+      duplicateIndex,
+      duplicate;
+
+  if (objectOrArray) {
+    duplicateIndex = state.duplicates.indexOf(object);
+    duplicate = duplicateIndex !== -1;
+  }
+
+  if (duplicate && state.usedDuplicates[duplicateIndex]) {
+    state.dump = '*ref_' + duplicateIndex;
+  } else {
+    if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {
+      state.usedDuplicates[duplicateIndex] = true;
+    }
+    if ('[object Object]' === type) {
+      if (block && (0 !== Object.keys(state.dump).length)) {
+        writeBlockMapping(state, level, state.dump, compact);
+        if (duplicate) {
+          state.dump = '&ref_' + duplicateIndex + (0 === level ? '\n' : '') + state.dump;
+        }
+      } else {
+        writeFlowMapping(state, level, state.dump);
+        if (duplicate) {
+          state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;
+        }
+      }
+    } else if ('[object Array]' === type) {
+      if (block && (0 !== state.dump.length)) {
+        writeBlockSequence(state, level, state.dump, compact);
+        if (duplicate) {
+          state.dump = '&ref_' + duplicateIndex + (0 === level ? '\n' : '') + state.dump;
+        }
+      } else {
+        writeFlowSequence(state, level, state.dump);
+        if (duplicate) {
+          state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;
+        }
+      }
+    } else if ('[object String]' === type) {
+      if ('?' !== state.tag) {
+        writeScalar(state, state.dump);
+      }
+    } else if (state.skipInvalid) {
+      return false;
+    } else {
+      throw new YAMLException('unacceptable kind of an object to dump ' + type);
+    }
+
+    if (null !== state.tag && '?' !== state.tag) {
+      state.dump = '!<' + state.tag + '> ' + state.dump;
+    }
+  }
+
+  return true;
+}
+
+function getDuplicateReferences(object, state) {
+  var objects = [],
+      duplicatesIndexes = [],
+      index,
+      length;
+
+  inspectNode(object, objects, duplicatesIndexes);
+
+  for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {
+    state.duplicates.push(objects[duplicatesIndexes[index]]);
+  }
+  state.usedDuplicates = new Array(length);
+}
+
+function inspectNode(object, objects, duplicatesIndexes) {
+  var type = _toString.call(object),
+      objectKeyList,
+      index,
+      length;
+
+  if (null !== object && 'object' === typeof object) {
+    index = objects.indexOf(object);
+    if (-1 !== index) {
+      if (-1 === duplicatesIndexes.indexOf(index)) {
+        duplicatesIndexes.push(index);
+      }
+    } else {
+      objects.push(object);
+    
+      if(Array.isArray(object)) {
+        for (index = 0, length = object.length; index < length; index += 1) {
+          inspectNode(object[index], objects, duplicatesIndexes);
+        }
+      } else {
+        objectKeyList = Object.keys(object);
+
+        for (index = 0, length = objectKeyList.length; index < length; index += 1) {
+          inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);
+        }
+      }
+    }
+  }
+}
+
+function dump(input, options) {
+  options = options || {};
+
+  var state = new State(options);
+
+  getDuplicateReferences(input, state);
+
+  if (writeNode(state, 0, input, true, true)) {
+    return state.dump + '\n';
+  } else {
+    return '';
+  }
+}
+
+
+function safeDump(input, options) {
+  return dump(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));
+}
+
+
+module.exports.dump     = dump;
+module.exports.safeDump = safeDump;
+
+},{"./common":2,"./exception":4,"./schema/default_full":9,"./schema/default_safe":10}],4:[function(require,module,exports){
+'use strict';
+
+
+function YAMLException(reason, mark) {
+  this.name    = 'YAMLException';
+  this.reason  = reason;
+  this.mark    = mark;
+  this.message = this.toString(false);
+}
+
+
+YAMLException.prototype.toString = function toString(compact) {
+  var result;
+
+  result = 'JS-YAML: ' + (this.reason || '(unknown reason)');
+
+  if (!compact && this.mark) {
+    result += ' ' + this.mark.toString();
+  }
+
+  return result;
+};
+
+
+module.exports = YAMLException;
+
+},{}],5:[function(require,module,exports){
+'use strict';
+
+
+var common              = require('./common');
+var YAMLException       = require('./exception');
+var Mark                = require('./mark');
+var DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');
+var DEFAULT_FULL_SCHEMA = require('./schema/default_full');
+
+
+var _hasOwnProperty = Object.prototype.hasOwnProperty;
+
+
+var CONTEXT_FLOW_IN   = 1;
+var CONTEXT_FLOW_OUT  = 2;
+var CONTEXT_BLOCK_IN  = 3;
+var CONTEXT_BLOCK_OUT = 4;
+
+
+var CHOMPING_CLIP  = 1;
+var CHOMPING_STRIP = 2;
+var CHOMPING_KEEP  = 3;
+
+
+var PATTERN_NON_PRINTABLE         = /[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uD800-\uDFFF\uFFFE\uFFFF]/;
+var PATTERN_NON_ASCII_LINE_BREAKS = /[\x85\u2028\u2029]/;
+var PATTERN_FLOW_INDICATORS       = /[,\[\]\{\}]/;
+var PATTERN_TAG_HANDLE            = /^(?:!|!!|![a-z\-]+!)$/i;
+var PATTERN_TAG_URI               = /^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;
+
+
+function is_EOL(c) {
+  return (c === 0x0A/* LF */) || (c === 0x0D/* CR */);
+}
+
+function is_WHITE_SPACE(c) {
+  return (c === 0x09/* Tab */) || (c === 0x20/* Space */);
+}
+
+function is_WS_OR_EOL(c) {
+  return (c === 0x09/* Tab */) ||
+         (c === 0x20/* Space */) ||
+         (c === 0x0A/* LF */) ||
+         (c === 0x0D/* CR */);
+}
+
+function is_FLOW_INDICATOR(c) {
+  return 0x2C/* , */ === c ||
+         0x5B/* [ */ === c ||
+         0x5D/* ] */ === c ||
+         0x7B/* { */ === c ||
+         0x7D/* } */ === c;
+}
+
+function fromHexCode(c) {
+  var lc;
+
+  if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {
+    return c - 0x30;
+  }
+
+  lc = c | 0x20;
+  if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) {
+    return lc - 0x61 + 10;
+  }
+
+  return -1;
+}
+
+function escapedHexLen(c) {
+  if (c === 0x78/* x */) { return 2; }
+  if (c === 0x75/* u */) { return 4; }
+  if (c === 0x55/* U */) { return 8; }
+  return 0;
+}
+
+function fromDecimalCode(c) {
+  if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {
+    return c - 0x30;
+  }
+
+  return -1;
+}
+
+function simpleEscapeSequence(c) {
+ return (c === 0x30/* 0 */) ? '\x00' :
+        (c === 0x61/* a */) ? '\x07' :
+        (c === 0x62/* b */) ? '\x08' :
+        (c === 0x74/* t */) ? '\x09' :
+        (c === 0x09/* Tab */) ? '\x09' :
+        (c === 0x6E/* n */) ? '\x0A' :
+        (c === 0x76/* v */) ? '\x0B' :
+        (c === 0x66/* f */) ? '\x0C' :
+        (c === 0x72/* r */) ? '\x0D' :
+        (c === 0x65/* e */) ? '\x1B' :
+        (c === 0x20/* Space */) ? ' ' :
+        (c === 0x22/* " */) ? '\x22' :
+        (c === 0x2F/* / */) ? '/' :
+        (c === 0x5C/* \ */) ? '\x5C' :
+        (c === 0x4E/* N */) ? '\x85' :
+        (c === 0x5F/* _ */) ? '\xA0' :
+        (c === 0x4C/* L */) ? '\u2028' :
+        (c === 0x50/* P */) ? '\u2029' : '';
+}
+
+function charFromCodepoint(c) {
+  if (c <= 0xFFFF) {
+    return String.fromCharCode(c);
+  } else {
+    // Encode UTF-16 surrogate pair
+    // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF
+    return String.fromCharCode(((c - 0x010000) >> 10) + 0xD800,
+                               ((c - 0x010000) & 0x03FF) + 0xDC00);
+  }
+}
+
+var simpleEscapeCheck = new Array(256); // integer, for fast access
+var simpleEscapeMap = new Array(256);
+for (var i = 0; i < 256; i++) {
+  simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;
+  simpleEscapeMap[i] = simpleEscapeSequence(i);
+}
+
+
+function State(input, options) {
+  this.input = input;
+
+  this.filename  = options['filename']  || null;
+  this.schema    = options['schema']    || DEFAULT_FULL_SCHEMA;
+  this.onWarning = options['onWarning'] || null;
+  this.legacy    = options['legacy']    || false;
+
+  this.implicitTypes = this.schema.compiledImplicit;
+  this.typeMap       = this.schema.compiledTypeMap;
+
+  this.length     = input.length;
+  this.position   = 0;
+  this.line       = 0;
+  this.lineStart  = 0;
+  this.lineIndent = 0;
+
+  this.documents = [];
+
+  /*
+  this.version;
+  this.checkLineBreaks;
+  this.tagMap;
+  this.anchorMap;
+  this.tag;
+  this.anchor;
+  this.kind;
+  this.result;*/
+
+}
+
+
+function generateError(state, message) {
+  return new YAMLException(
+    message,
+    new Mark(state.filename, state.input, state.position, state.line, (state.position - state.lineStart)));
+}
+
+function throwError(state, message) {
+  throw generateError(state, message);
+}
+
+function throwWarning(state, message) {
+  var error = generateError(state, message);
+
+  if (state.onWarning) {
+    state.onWarning.call(null, error);
+  } else {
+    throw error;
+  }
+}
+
+
+var directiveHandlers = {
+
+  'YAML': function handleYamlDirective(state, name, args) {
+
+      var match, major, minor;
+
+      if (null !== state.version) {
+        throwError(state, 'duplication of %YAML directive');
+      }
+
+      if (1 !== args.length) {
+        throwError(state, 'YAML directive accepts exactly one argument');
+      }
+
+      match = /^([0-9]+)\.([0-9]+)$/.exec(args[0]);
+
+      if (null === match) {
+        throwError(state, 'ill-formed argument of the YAML directive');
+      }
+
+      major = parseInt(match[1], 10);
+      minor = parseInt(match[2], 10);
+
+      if (1 !== major) {
+        throwError(state, 'unacceptable YAML version of the document');
+      }
+
+      state.version = args[0];
+      state.checkLineBreaks = (minor < 2);
+
+      if (1 !== minor && 2 !== minor) {
+        throwWarning(state, 'unsupported YAML version of the document');
+      }
+    },
+
+  'TAG': function handleTagDirective(state, name, args) {
+
+      var handle, prefix;
+
+      if (2 !== args.length) {
+        throwError(state, 'TAG directive accepts exactly two arguments');
+      }
+
+      handle = args[0];
+      prefix = args[1];
+
+      if (!PATTERN_TAG_HANDLE.test(handle)) {
+        throwError(state, 'ill-formed tag handle (first argument) of the TAG directive');
+      }
+
+      if (_hasOwnProperty.call(state.tagMap, handle)) {
+        throwError(state, 'there is a previously declared suffix for "' + handle + '" tag handle');
+      }
+
+      if (!PATTERN_TAG_URI.test(prefix)) {
+        throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive');
+      }
+
+      state.tagMap[handle] = prefix;
+    }
+};
+
+
+function captureSegment(state, start, end, checkJson) {
+  var _position, _length, _character, _result;
+
+  if (start < end) {
+    _result = state.input.slice(start, end);
+
+    if (checkJson) {
+      for (_position = 0, _length = _result.length;
+           _position < _length;
+           _position += 1) {
+        _character = _result.charCodeAt(_position);
+        if (!(0x09 === _character ||
+              0x20 <= _character && _character <= 0x10FFFF)) {
+          throwError(state, 'expected valid JSON character');
+        }
+      }
+    }
+
+    state.result += _result;
+  }
+}
+
+function mergeMappings(state, destination, source) {
+  var sourceKeys, key, index, quantity;
+
+  if (!common.isObject(source)) {
+    throwError(state, 'cannot merge mappings; the provided source object is unacceptable');
+  }
+
+  sourceKeys = Object.keys(source);
+
+  for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {
+    key = sourceKeys[index];
+
+    if (!_hasOwnProperty.call(destination, key)) {
+      destination[key] = source[key];
+    }
+  }
+}
+
+function storeMappingPair(state, _result, keyTag, keyNode, valueNode) {
+  var index, quantity;
+
+  keyNode = String(keyNode);
+
+  if (null === _result) {
+    _result = {};
+  }
+
+  if ('tag:yaml.org,2002:merge' === keyTag) {
+    if (Array.isArray(valueNode)) {
+      for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {
+        mergeMappings(state, _result, valueNode[index]);
+      }
+    } else {
+      mergeMappings(state, _result, valueNode);
+    }
+  } else {
+    _result[keyNode] = valueNode;
+  }
+
+  return _result;
+}
+
+function readLineBreak(state) {
+  var ch;
+
+  ch = state.input.charCodeAt(state.position);
+
+  if (0x0A/* LF */ === ch) {
+    state.position++;
+  } else if (0x0D/* CR */ === ch) {
+    state.position++;
+    if (0x0A/* LF */ === state.input.charCodeAt(state.position)) {
+      state.position++;
+    }
+  } else {
+    throwError(state, 'a line break is expected');
+  }
+
+  state.line += 1;
+  state.lineStart = state.position;
+}
+
+function skipSeparationSpace(state, allowComments, checkIndent) {
+  var lineBreaks = 0,
+      ch = state.input.charCodeAt(state.position);
+
+  while (0 !== ch) {
+    while (is_WHITE_SPACE(ch)) {
+      ch = state.input.charCodeAt(++state.position);
+    }
+
+    if (allowComments && 0x23/* # */ === ch) {
+      do {
+        ch = state.input.charCodeAt(++state.position);
+      } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && 0 !== ch);
+    }
+
+    if (is_EOL(ch)) {
+      readLineBreak(state);
+
+      ch = state.input.charCodeAt(state.position);
+      lineBreaks++;
+      state.lineIndent = 0;
+
+      while (0x20/* Space */ === ch) {
+        state.lineIndent++;
+        ch = state.input.charCodeAt(++state.position);
+      }
+    } else {
+      break;
+    }
+  }
+
+  if (-1 !== checkIndent && 0 !== lineBreaks && state.lineIndent < checkIndent) {
+    throwWarning(state, 'deficient indentation');
+  }
+
+  return lineBreaks;
+}
+
+function testDocumentSeparator(state) {
+  var _position = state.position,
+      ch;
+
+  ch = state.input.charCodeAt(_position);
+
+  // Condition state.position === state.lineStart is tested
+  // in parent on each call, for efficiency. No needs to test here again.
+  if ((0x2D/* - */ === ch || 0x2E/* . */ === ch) &&
+      state.input.charCodeAt(_position + 1) === ch &&
+      state.input.charCodeAt(_position+ 2) === ch) {
+
+    _position += 3;
+
+    ch = state.input.charCodeAt(_position);
+
+    if (ch === 0 || is_WS_OR_EOL(ch)) {
+      return true;
+    }
+  }
+
+  return false;
+}
+
+function writeFoldedLines(state, count) {
+  if (1 === count) {
+    state.result += ' ';
+  } else if (count > 1) {
+    state.result += common.repeat('\n', count - 1);
+  }
+}
+
+
+function readPlainScalar(state, nodeIndent, withinFlowCollection) {
+  var preceding,
+      following,
+      captureStart,
+      captureEnd,
+      hasPendingContent,
+      _line,
+      _lineStart,
+      _lineIndent,
+      _kind = state.kind,
+      _result = state.result,
+      ch;
+
+  ch = state.input.charCodeAt(state.position);
+
+  if (is_WS_OR_EOL(ch)             ||
+      is_FLOW_INDICATOR(ch)        ||
+      0x23/* # */           === ch ||
+      0x26/* & */           === ch ||
+      0x2A/* * */           === ch ||
+      0x21/* ! */           === ch ||
+      0x7C/* | */           === ch ||
+      0x3E/* > */           === ch ||
+      0x27/* ' */           === ch ||
+      0x22/* " */           === ch ||
+      0x25/* % */           === ch ||
+      0x40/* @ */           === ch ||
+      0x60/* ` */           === ch) {
+    return false;
+  }
+
+  if (0x3F/* ? */ === ch || 0x2D/* - */ === ch) {
+    following = state.input.charCodeAt(state.position + 1);
+
+    if (is_WS_OR_EOL(following) ||
+        withinFlowCollection && is_FLOW_INDICATOR(following)) {
+      return false;
+    }
+  }
+
+  state.kind = 'scalar';
+  state.result = '';
+  captureStart = captureEnd = state.position;
+  hasPendingContent = false;
+
+  while (0 !== ch) {
+    if (0x3A/* : */ === ch) {
+      following = state.input.charCodeAt(state.position+1);
+
+      if (is_WS_OR_EOL(following) ||
+          withinFlowCollection && is_FLOW_INDICATOR(following)) {
+        break;
+      }
+
+    } else if (0x23/* # */ === ch) {
+      preceding = state.input.charCodeAt(state.position - 1);
+
+      if (is_WS_OR_EOL(preceding)) {
+        break;
+      }
+
+    } else if ((state.position === state.lineStart && testDocumentSeparator(state)) ||
+               withinFlowCollection && is_FLOW_INDICATOR(ch)) {
+      break;
+
+    } else if (is_EOL(ch)) {
+      _line = state.line;
+      _lineStart = state.lineStart;
+      _lineIndent = state.lineIndent;
+      skipSeparationSpace(state, false, -1);
+
+      if (state.lineIndent >= nodeIndent) {
+        hasPendingContent = true;
+        ch = state.input.charCodeAt(state.position);
+        continue;
+      } else {
+        state.position = captureEnd;
+        state.line = _line;
+        state.lineStart = _lineStart;
+        state.lineIndent = _lineIndent;
+        break;
+      }
+    }
+
+    if (hasPendingContent) {
+      captureSegment(state, captureStart, captureEnd, false);
+      writeFoldedLines(state, state.line - _line);
+      captureStart = captureEnd = state.position;
+      hasPendingContent = false;
+    }
+
+    if (!is_WHITE_SPACE(ch)) {
+      captureEnd = state.position + 1;
+    }
+
+    ch = state.input.charCodeAt(++state.position);
+  }
+
+  captureSegment(state, captureStart, captureEnd, false);
+
+  if (state.result) {
+    return true;
+  } else {
+    state.kind = _kind;
+    state.result = _result;
+    return false;
+  }
+}
+
+function readSingleQuotedScalar(state, nodeIndent) {
+  var ch,
+      captureStart, captureEnd;
+
+  ch = state.input.charCodeAt(state.position);
+
+  if (0x27/* ' */ !== ch) {
+    return false;
+  }
+
+  state.kind = 'scalar';
+  state.result = '';
+  state.position++;
+  captureStart = captureEnd = state.position;
+
+  while (0 !== (ch = state.input.charCodeAt(state.position))) {
+    if (0x27/* ' */ === ch) {
+      captureSegment(state, captureStart, state.position, true);
+      ch = state.input.charCodeAt(++state.position);
+
+      if (0x27/* ' */ === ch) {
+        captureStart = captureEnd = state.position;
+        state.position++;
+      } else {
+        return true;
+      }
+
+    } else if (is_EOL(ch)) {
+      captureSegment(state, captureStart, captureEnd, true);
+      writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));
+      captureStart = captureEnd = state.position;
+
+    } else if (state.position === state.lineStart && testDocumentSeparator(state)) {
+      throwError(state, 'unexpected end of the document within a single quoted scalar');
+
+    } else {
+      state.position++;
+      captureEnd = state.position;
+    }
+  }
+
+  throwError(state, 'unexpected end of the stream within a single quoted scalar');
+}
+
+function readDoubleQuotedScalar(state, nodeIndent) {
+  var captureStart,
+      captureEnd,
+      hexLength,
+      hexResult,
+      tmp, tmpEsc,
+      ch;
+
+  ch = state.input.charCodeAt(state.position);
+
+  if (0x22/* " */ !== ch) {
+    return false;
+  }
+
+  state.kind = 'scalar';
+  state.result = '';
+  state.position++;
+  captureStart = captureEnd = state.position;
+
+  while (0 !== (ch = state.input.charCodeAt(state.position))) {
+    if (0x22/* " */ === ch) {
+      captureSegment(state, captureStart, state.position, true);
+      state.position++;
+      return true;
+
+    } else if (0x5C/* \ */ === ch) {
+      captureSegment(state, captureStart, state.position, true);
+      ch = state.input.charCodeAt(++state.position);
+
+      if (is_EOL(ch)) {
+        skipSeparationSpace(state, false, nodeIndent);
+
+        //TODO: rework to inline fn with no type cast?
+      } else if (ch < 256 && simpleEscapeCheck[ch]) {
+        state.result += simpleEscapeMap[ch];
+        state.position++;
+
+      } else if ((tmp = escapedHexLen(ch)) > 0) {
+        hexLength = tmp;
+        hexResult = 0;
+
+        for (; hexLength > 0; hexLength--) {
+          ch = state.input.charCodeAt(++state.position);
+
+          if ((tmp = fromHexCode(ch)) >= 0) {
+            hexResult = (hexResult << 4) + tmp;
+
+          } else {
+            throwError(state, 'expected hexadecimal character');
+          }
+        }
+
+        state.result += charFromCodepoint(hexResult);
+
+        state.position++;
+
+      } else {
+        throwError(state, 'unknown escape sequence');
+      }
+
+      captureStart = captureEnd = state.position;
+
+    } else if (is_EOL(ch)) {
+      captureSegment(state, captureStart, captureEnd, true);
+      writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));
+      captureStart = captureEnd = state.position;
+
+    } else if (state.position === state.lineStart && testDocumentSeparator(state)) {
+      throwError(state, 'unexpected end of the document within a double quoted scalar');
+
+    } else {
+      state.position++;
+      captureEnd = state.position;
+    }
+  }
+
+  throwError(state, 'unexpected end of the stream within a double quoted scalar');
+}
+
+function readFlowCollection(state, nodeIndent) {
+  var readNext = true,
+      _line,
+      _tag     = state.tag,
+      _result,
+      _anchor  = state.anchor,
+      following,
+      terminator,
+      isPair,
+      isExplicitPair,
+      isMapping,
+      keyNode,
+      keyTag,
+      valueNode,
+      ch;
+
+  ch = state.input.charCodeAt(state.position);
+
+  if (ch === 0x5B/* [ */) {
+    terminator = 0x5D/* ] */;
+    isMapping = false;
+    _result = [];
+  } else if (ch === 0x7B/* { */) {
+    terminator = 0x7D/* } */;
+    isMapping = true;
+    _result = {};
+  } else {
+    return false;
+  }
+
+  if (null !== state.anchor) {
+    state.anchorMap[state.anchor] = _result;
+  }
+
+  ch = state.input.charCodeAt(++state.position);
+
+  while (0 !== ch) {
+    skipSeparationSpace(state, true, nodeIndent);
+
+    ch = state.input.charCodeAt(state.position);
+
+    if (ch === terminator) {
+      state.position++;
+      state.tag = _tag;
+      state.anchor = _anchor;
+      state.kind = isMapping ? 'mapping' : 'sequence';
+      state.result = _result;
+      return true;
+    } else if (!readNext) {
+      throwError(state, 'missed comma between flow collection entries');
+    }
+
+    keyTag = keyNode = valueNode = null;
+    isPair = isExplicitPair = false;
+
+    if (0x3F/* ? */ === ch) {
+      following = state.input.charCodeAt(state.position + 1);
+
+      if (is_WS_OR_EOL(following)) {
+        isPair = isExplicitPair = true;
+        state.position++;
+        skipSeparationSpace(state, true, nodeIndent);
+      }
+    }
+
+    _line = state.line;
+    composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);
+    keyTag = state.tag;
+    keyNode = state.result;
+    skipSeparationSpace(state, true, nodeIndent);
+
+    ch = state.input.charCodeAt(state.position);
+
+    if ((isExplicitPair || state.line === _line) && 0x3A/* : */ === ch) {
+      isPair = true;
+      ch = state.input.charCodeAt(++state.position);
+      skipSeparationSpace(state, true, nodeIndent);
+      composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);
+      valueNode = state.result;
+    }
+
+    if (isMapping) {
+      storeMappingPair(state, _result, keyTag, keyNode, valueNode);
+    } else if (isPair) {
+      _result.push(storeMappingPair(state, null, keyTag, keyNode, valueNode));
+    } else {
+      _result.push(keyNode);
+    }
+
+    skipSeparationSpace(state, true, nodeIndent);
+
+    ch = state.input.charCodeAt(state.position);
+
+    if (0x2C/* , */ === ch) {
+      readNext = true;
+      ch = state.input.charCodeAt(++state.position);
+    } else {
+      readNext = false;
+    }
+  }
+
+  throwError(state, 'unexpected end of the stream within a flow collection');
+}
+
+function readBlockScalar(state, nodeIndent) {
+  var captureStart,
+      folding,
+      chomping       = CHOMPING_CLIP,
+      detectedIndent = false,
+      textIndent     = nodeIndent,
+      emptyLines     = 0,
+      atMoreIndented = false,
+      tmp,
+      ch;
+
+  ch = state.input.charCodeAt(state.position);
+
+  if (ch === 0x7C/* | */) {
+    folding = false;
+  } else if (ch === 0x3E/* > */) {
+    folding = true;
+  } else {
+    return false;
+  }
+
+  state.kind = 'scalar';
+  state.result = '';
+
+  while (0 !== ch) {
+    ch = state.input.charCodeAt(++state.position);
+
+    if (0x2B/* + */ === ch || 0x2D/* - */ === ch) {
+      if (CHOMPING_CLIP === chomping) {
+        chomping = (0x2B/* + */ === ch) ? CHOMPING_KEEP : CHOMPING_STRIP;
+      } else {
+        throwError(state, 'repeat of a chomping mode identifier');
+      }
+
+    } else if ((tmp = fromDecimalCode(ch)) >= 0) {
+      if (tmp === 0) {
+        throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one');
+      } else if (!detectedIndent) {
+        textIndent = nodeIndent + tmp - 1;
+        detectedIndent = true;
+      } else {
+        throwError(state, 'repeat of an indentation width identifier');
+      }
+
+    } else {
+      break;
+    }
+  }
+
+  if (is_WHITE_SPACE(ch)) {
+    do { ch = state.input.charCodeAt(++state.position); }
+    while (is_WHITE_SPACE(ch));
+
+    if (0x23/* # */ === ch) {
+      do { ch = state.input.charCodeAt(++state.position); }
+      while (!is_EOL(ch) && (0 !== ch));
+    }
+  }
+
+  while (0 !== ch) {
+    readLineBreak(state);
+    state.lineIndent = 0;
+
+    ch = state.input.charCodeAt(state.position);
+
+    while ((!detectedIndent || state.lineIndent < textIndent) &&
+           (0x20/* Space */ === ch)) {
+      state.lineIndent++;
+      ch = state.input.charCodeAt(++state.position);
+    }
+
+    if (!detectedIndent && state.lineIndent > textIndent) {
+      textIndent = state.lineIndent;
+    }
+
+    if (is_EOL(ch)) {
+      emptyLines++;
+      continue;
+    }
+
+    // End of the scalar.
+    if (state.lineIndent < textIndent) {
+
+      // Perform the chomping.
+      if (chomping === CHOMPING_KEEP) {
+        state.result += common.repeat('\n', emptyLines);
+      } else if (chomping === CHOMPING_CLIP) {
+        if (detectedIndent) { // i.e. only if the scalar is not empty.
+          state.result += '\n';
+        }
+      }
+
+      // Break this `while` cycle and go to the funciton's epilogue.
+      break;
+    }
+
+    // Folded style: use fancy rules to handle line breaks.
+    if (folding) {
+
+      // Lines starting with white space characters (more-indented lines) are not folded.
+      if (is_WHITE_SPACE(ch)) {
+        atMoreIndented = true;
+        state.result += common.repeat('\n', emptyLines + 1);
+
+      // End of more-indented block.
+      } else if (atMoreIndented) {
+        atMoreIndented = false;
+        state.result += common.repeat('\n', emptyLines + 1);
+
+      // Just one line break - perceive as the same line.
+      } else if (0 === emptyLines) {
+        if (detectedIndent) { // i.e. only if we have already read some scalar content.
+          state.result += ' ';
+        }
+
+      // Several line breaks - perceive as different lines.
+      } else {
+        state.result += common.repeat('\n', emptyLines);
+      }
+
+    // Literal style: just add exact number of line breaks between content lines.
+    } else {
+
+      // If current line isn't the first one - count line break from the last content line.
+      if (detectedIndent) {
+        state.result += common.repeat('\n', emptyLines + 1);
+
+      // In case of the first content line - count only empty lines.
+      } else {
+        state.result += common.repeat('\n', emptyLines);
+      }
+    }
+
+    detectedIndent = true;
+    emptyLines = 0;
+    captureStart = state.position;
+
+    while (!is_EOL(ch) && (0 !== ch))
+    { ch = state.input.charCodeAt(++state.position); }
+
+    captureSegment(state, captureStart, state.position, false);
+  }
+
+  return true;
+}
+
+function readBlockSequence(state, nodeIndent) {
+  var _line,
+      _tag      = state.tag,
+      _anchor   = state.anchor,
+      _result   = [],
+      following,
+      detected  = false,
+      ch;
+
+  if (null !== state.anchor) {
+    state.anchorMap[state.anchor] = _result;
+  }
+
+  ch = state.input.charCodeAt(state.position);
+
+  while (0 !== ch) {
+
+    if (0x2D/* - */ !== ch) {
+      break;
+    }
+
+    following = state.input.charCodeAt(state.position + 1);
+
+    if (!is_WS_OR_EOL(following)) {
+      break;
+    }
+
+    detected = true;
+    state.position++;
+
+    if (skipSeparationSpace(state, true, -1)) {
+      if (state.lineIndent <= nodeIndent) {
+        _result.push(null);
+        ch = state.input.charCodeAt(state.position);
+        continue;
+      }
+    }
+
+    _line = state.line;
+    composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);
+    _result.push(state.result);
+    skipSeparationSpace(state, true, -1);
+
+    ch = state.input.charCodeAt(state.position);
+
+    if ((state.line === _line || state.lineIndent > nodeIndent) && (0 !== ch)) {
+      throwError(state, 'bad indentation of a sequence entry');
+    } else if (state.lineIndent < nodeIndent) {
+      break;
+    }
+  }
+
+  if (detected) {
+    state.tag = _tag;
+    state.anchor = _anchor;
+    state.kind = 'sequence';
+    state.result = _result;
+    return true;
+  } else {
+    return false;
+  }
+}
+
+function readBlockMapping(state, nodeIndent, flowIndent) {
+  var following,
+      allowCompact,
+      _line,
+      _tag          = state.tag,
+      _anchor       = state.anchor,
+      _result       = {},
+      keyTag        = null,
+      keyNode       = null,
+      valueNode     = null,
+      atExplicitKey = false,
+      detected      = false,
+      ch;
+
+  if (null !== state.anchor) {
+    state.anchorMap[state.anchor] = _result;
+  }
+
+  ch = state.input.charCodeAt(state.position);
+
+  while (0 !== ch) {
+    following = state.input.charCodeAt(state.position + 1);
+    _line = state.line; // Save the current line.
+
+    //
+    // Explicit notation case. There are two separate blocks:
+    // first for the key (denoted by "?") and second for the value (denoted by ":")
+    //
+    if ((0x3F/* ? */ === ch || 0x3A/* : */  === ch) && is_WS_OR_EOL(following)) {
+
+      if (0x3F/* ? */ === ch) {
+        if (atExplicitKey) {
+          storeMappingPair(state, _result, keyTag, keyNode, null);
+          keyTag = keyNode = valueNode = null;
+        }
+
+        detected = true;
+        atExplicitKey = true;
+        allowCompact = true;
+
+      } else if (atExplicitKey) {
+        // i.e. 0x3A/* : */ === character after the explicit key.
+        atExplicitKey = false;
+        allowCompact = true;
+
+      } else {
+        throwError(state, 'incomplete explicit mapping pair; a key node is missed');
+      }
+
+      state.position += 1;
+      ch = following;
+
+    //
+    // Implicit notation case. Flow-style node as the key first, then ":", and the value.
+    //
+    } else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {
+
+      if (state.line === _line) {
+        ch = state.input.charCodeAt(state.position);
+
+        while (is_WHITE_SPACE(ch)) {
+          ch = state.input.charCodeAt(++state.position);
+        }
+
+        if (0x3A/* : */ === ch) {
+          ch = state.input.charCodeAt(++state.position);
+
+          if (!is_WS_OR_EOL(ch)) {
+            throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping');
+          }
+
+          if (atExplicitKey) {
+            storeMappingPair(state, _result, keyTag, keyNode, null);
+            keyTag = keyNode = valueNode = null;
+          }
+
+          detected = true;
+          atExplicitKey = false;
+          allowCompact = false;
+          keyTag = state.tag;
+          keyNode = state.result;
+
+        } else if (detected) {
+          throwError(state, 'can not read an implicit mapping pair; a colon is missed');
+
+        } else {
+          state.tag = _tag;
+          state.anchor = _anchor;
+          return true; // Keep the result of `composeNode`.
+        }
+
+      } else if (detected) {
+        throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key');
+
+      } else {
+        state.tag = _tag;
+        state.anchor = _anchor;
+        return true; // Keep the result of `composeNode`.
+      }
+
+    } else {
+      break; // Reading is done. Go to the epilogue.
+    }
+
+    //
+    // Common reading code for both explicit and implicit notations.
+    //
+    if (state.line === _line || state.lineIndent > nodeIndent) {
+      if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {
+        if (atExplicitKey) {
+          keyNode = state.result;
+        } else {
+          valueNode = state.result;
+        }
+      }
+
+      if (!atExplicitKey) {
+        storeMappingPair(state, _result, keyTag, keyNode, valueNode);
+        keyTag = keyNode = valueNode = null;
+      }
+
+      skipSeparationSpace(state, true, -1);
+      ch = state.input.charCodeAt(state.position);
+    }
+
+    if (state.lineIndent > nodeIndent && (0 !== ch)) {
+      throwError(state, 'bad indentation of a mapping entry');
+    } else if (state.lineIndent < nodeIndent) {
+      break;
+    }
+  }
+
+  //
+  // Epilogue.
+  //
+
+  // Special case: last mapping's node contains only the key in explicit notation.
+  if (atExplicitKey) {
+    storeMappingPair(state, _result, keyTag, keyNode, null);
+  }
+
+  // Expose the resulting mapping.
+  if (detected) {
+    state.tag = _tag;
+    state.anchor = _anchor;
+    state.kind = 'mapping';
+    state.result = _result;
+  }
+
+  return detected;
+}
+
+function readTagProperty(state) {
+  var _position,
+      isVerbatim = false,
+      isNamed    = false,
+      tagHandle,
+      tagName,
+      ch;
+
+  ch = state.input.charCodeAt(state.position);
+
+  if (0x21/* ! */ !== ch) {
+    return false;
+  }
+
+  if (null !== state.tag) {
+    throwError(state, 'duplication of a tag property');
+  }
+
+  ch = state.input.charCodeAt(++state.position);
+
+  if (0x3C/* < */ === ch) {
+    isVerbatim = true;
+    ch = state.input.charCodeAt(++state.position);
+
+  } else if (0x21/* ! */ === ch) {
+    isNamed = true;
+    tagHandle = '!!';
+    ch = state.input.charCodeAt(++state.position);
+
+  } else {
+    tagHandle = '!';
+  }
+
+  _position = state.position;
+
+  if (isVerbatim) {
+    do { ch = state.input.charCodeAt(++state.position); }
+    while (0 !== ch && 0x3E/* > */ !== ch);
+
+    if (state.position < state.length) {
+      tagName = state.input.slice(_position, state.position);
+      ch = state.input.charCodeAt(++state.position);
+    } else {
+      throwError(state, 'unexpected end of the stream within a verbatim tag');
+    }
+  } else {
+    while (0 !== ch && !is_WS_OR_EOL(ch)) {
+
+      if (0x21/* ! */ === ch) {
+        if (!isNamed) {
+          tagHandle = state.input.slice(_position - 1, state.position + 1);
+
+          if (!PATTERN_TAG_HANDLE.test(tagHandle)) {
+            throwError(state, 'named tag handle cannot contain such characters');
+          }
+
+          isNamed = true;
+          _position = state.position + 1;
+        } else {
+          throwError(state, 'tag suffix cannot contain exclamation marks');
+        }
+      }
+
+      ch = state.input.charCodeAt(++state.position);
+    }
+
+    tagName = state.input.slice(_position, state.position);
+
+    if (PATTERN_FLOW_INDICATORS.test(tagName)) {
+      throwError(state, 'tag suffix cannot contain flow indicator characters');
+    }
+  }
+
+  if (tagName && !PATTERN_TAG_URI.test(tagName)) {
+    throwError(state, 'tag name cannot contain such characters: ' + tagName);
+  }
+
+  if (isVerbatim) {
+    state.tag = tagName;
+
+  } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) {
+    state.tag = state.tagMap[tagHandle] + tagName;
+
+  } else if ('!' === tagHandle) {
+    state.tag = '!' + tagName;
+
+  } else if ('!!' === tagHandle) {
+    state.tag = 'tag:yaml.org,2002:' + tagName;
+
+  } else {
+    throwError(state, 'undeclared tag handle "' + tagHandle + '"');
+  }
+
+  return true;
+}
+
+function readAnchorProperty(state) {
+  var _position,
+      ch;
+
+  ch = state.input.charCodeAt(state.position);
+
+  if (0x26/* & */ !== ch) {
+    return false;
+  }
+
+  if (null !== state.anchor) {
+    throwError(state, 'duplication of an anchor property');
+  }
+
+  ch = state.input.charCodeAt(++state.position);
+  _position = state.position;
+
+  while (0 !== ch && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {
+    ch = state.input.charCodeAt(++state.position);
+  }
+
+  if (state.position === _position) {
+    throwError(state, 'name of an anchor node must contain at least one character');
+  }
+
+  state.anchor = state.input.slice(_position, state.position);
+  return true;
+}
+
+function readAlias(state) {
+  var _position, alias,
+      len = state.length,
+      input = state.input,
+      ch;
+
+  ch = state.input.charCodeAt(state.position);
+
+  if (0x2A/* * */ !== ch) {
+    return false;
+  }
+
+  ch = state.input.charCodeAt(++state.position);
+  _position = state.position;
+
+  while (0 !== ch && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {
+    ch = state.input.charCodeAt(++state.position);
+  }
+
+  if (state.position === _position) {
+    throwError(state, 'name of an alias node must contain at least one character');
+  }
+
+  alias = state.input.slice(_position, state.position);
+
+  if (!state.anchorMap.hasOwnProperty(alias)) {
+    throwError(state, 'unidentified alias "' + alias + '"');
+  }
+
+  state.result = state.anchorMap[alias];
+  skipSeparationSpace(state, true, -1);
+  return true;
+}
+
+function composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {
+  var allowBlockStyles,
+      allowBlockScalars,
+      allowBlockCollections,
+      indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this<parent
+      atNewLine  = false,
+      hasContent = false,
+      typeIndex,
+      typeQuantity,
+      type,
+      flowIndent,
+      blockIndent,
+      _result;
+
+  state.tag    = null;
+  state.anchor = null;
+  state.kind   = null;
+  state.result = null;
+
+  allowBlockStyles = allowBlockScalars = allowBlockCollections =
+    CONTEXT_BLOCK_OUT === nodeContext ||
+    CONTEXT_BLOCK_IN  === nodeContext;
+
+  if (allowToSeek) {
+    if (skipSeparationSpace(state, true, -1)) {
+      atNewLine = true;
+
+      if (state.lineIndent > parentIndent) {
+        indentStatus = 1;
+      } else if (state.lineIndent === parentIndent) {
+        indentStatus = 0;
+      } else if (state.lineIndent < parentIndent) {
+        indentStatus = -1;
+      }
+    }
+  }
+
+  if (1 === indentStatus) {
+    while (readTagProperty(state) || readAnchorProperty(state)) {
+      if (skipSeparationSpace(state, true, -1)) {
+        atNewLine = true;
+        allowBlockCollections = allowBlockStyles;
+
+        if (state.lineIndent > parentIndent) {
+          indentStatus = 1;
+        } else if (state.lineIndent === parentIndent) {
+          indentStatus = 0;
+        } else if (state.lineIndent < parentIndent) {
+          indentStatus = -1;
+        }
+      } else {
+        allowBlockCollections = false;
+      }
+    }
+  }
+
+  if (allowBlockCollections) {
+    allowBlockCollections = atNewLine || allowCompact;
+  }
+
+  if (1 === indentStatus || CONTEXT_BLOCK_OUT === nodeContext) {
+    if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {
+      flowIndent = parentIndent;
+    } else {
+      flowIndent = parentIndent + 1;
+    }
+
+    blockIndent = state.position - state.lineStart;
+
+    if (1 === indentStatus) {
+      if (allowBlockCollections &&
+          (readBlockSequence(state, blockIndent) ||
+           readBlockMapping(state, blockIndent, flowIndent)) ||
+          readFlowCollection(state, flowIndent)) {
+        hasContent = true;
+      } else {
+        if ((allowBlockScalars && readBlockScalar(state, flowIndent)) ||
+            readSingleQuotedScalar(state, flowIndent) ||
+            readDoubleQuotedScalar(state, flowIndent)) {
+          hasContent = true;
+
+        } else if (readAlias(state)) {
+          hasContent = true;
+
+          if (null !== state.tag || null !== state.anchor) {
+            throwError(state, 'alias node should not have any properties');
+          }
+
+        } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {
+          hasContent = true;
+
+          if (null === state.tag) {
+            state.tag = '?';
+          }
+        }
+
+        if (null !== state.anchor) {
+          state.anchorMap[state.anchor] = state.result;
+        }
+      }
+    } else if (0 === indentStatus) {
+      // Special case: block sequences are allowed to have same indentation level as the parent.
+      // http://www.yaml.org/spec/1.2/spec.html#id2799784
+      hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);
+    }
+  }
+
+  if (null !== state.tag && '!' !== state.tag) {
+    if ('?' === state.tag) {
+      for (typeIndex = 0, typeQuantity = state.implicitTypes.length;
+           typeIndex < typeQuantity;
+           typeIndex += 1) {
+        type = state.implicitTypes[typeIndex];
+
+        // Implicit resolving is not allowed for non-scalar types, and '?'
+        // non-specific tag is only assigned to plain scalars. So, it isn't
+        // needed to check for 'kind' conformity.
+
+        if (type.resolve(state.result)) { // `state.result` updated in resolver if matched
+          state.result = type.construct(state.result);
+          state.tag = type.tag;
+          if (null !== state.anchor) {
+            state.anchorMap[state.anchor] = state.result;
+          }
+          break;
+        }
+      }
+    } else if (_hasOwnProperty.call(state.typeMap, state.tag)) {
+      type = state.typeMap[state.tag];
+
+      if (null !== state.result && type.kind !== state.kind) {
+        throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be "' + type.kind + '", not "' + state.kind + '"');
+      }
+
+      if (!type.resolve(state.result)) { // `state.result` updated in resolver if matched
+        throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag');
+      } else {
+        state.result = type.construct(state.result);
+        if (null !== state.anchor) {
+          state.anchorMap[state.anchor] = state.result;
+        }
+      }
+    } else {
+      throwWarning(state, 'unknown tag !<' + state.tag + '>');
+    }
+  }
+
+  return null !== state.tag || null !== state.anchor || hasContent;
+}
+
+function readDocument(state) {
+  var documentStart = state.position,
+      _position,
+      directiveName,
+      directiveArgs,
+      hasDirectives = false,
+      ch;
+
+  state.version = null;
+  state.checkLineBreaks = state.legacy;
+  state.tagMap = {};
+  state.anchorMap = {};
+
+  while (0 !== (ch = state.input.charCodeAt(state.position))) {
+    skipSeparationSpace(state, true, -1);
+
+    ch = state.input.charCodeAt(state.position);
+
+    if (state.lineIndent > 0 || 0x25/* % */ !== ch) {
+      break;
+    }
+
+    hasDirectives = true;
+    ch = state.input.charCodeAt(++state.position);
+    _position = state.position;
+
+    while (0 !== ch && !is_WS_OR_EOL(ch)) {
+      ch = state.input.charCodeAt(++state.position);
+    }
+
+    directiveName = state.input.slice(_position, state.position);
+    directiveArgs = [];
+
+    if (directiveName.length < 1) {
+      throwError(state, 'directive name must not be less than one character in length');
+    }
+
+    while (0 !== ch) {
+      while (is_WHITE_SPACE(ch)) {
+        ch = state.input.charCodeAt(++state.position);
+      }
+
+      if (0x23/* # */ === ch) {
+        do { ch = state.input.charCodeAt(++state.position); }
+        while (0 !== ch && !is_EOL(ch));
+        break;
+      }
+
+      if (is_EOL(ch)) {
+        break;
+      }
+
+      _position = state.position;
+
+      while (0 !== ch && !is_WS_OR_EOL(ch)) {
+        ch = state.input.charCodeAt(++state.position);
+      }
+
+      directiveArgs.push(state.input.slice(_position, state.position));
+    }
+
+    if (0 !== ch) {
+      readLineBreak(state);
+    }
+
+    if (_hasOwnProperty.call(directiveHandlers, directiveName)) {
+      directiveHandlers[directiveName](state, directiveName, directiveArgs);
+    } else {
+      throwWarning(state, 'unknown document directive "' + directiveName + '"');
+    }
+  }
+
+  skipSeparationSpace(state, true, -1);
+
+  if (0 === state.lineIndent &&
+      0x2D/* - */ === state.input.charCodeAt(state.position) &&
+      0x2D/* - */ === state.input.charCodeAt(state.position + 1) &&
+      0x2D/* - */ === state.input.charCodeAt(state.position + 2)) {
+    state.position += 3;
+    skipSeparationSpace(state, true, -1);
+
+  } else if (hasDirectives) {
+    throwError(state, 'directives end mark is expected');
+  }
+
+  composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);
+  skipSeparationSpace(state, true, -1);
+
+  if (state.checkLineBreaks &&
+      PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {
+    throwWarning(state, 'non-ASCII line breaks are interpreted as content');
+  }
+
+  state.documents.push(state.result);
+
+  if (state.position === state.lineStart && testDocumentSeparator(state)) {
+
+    if (0x2E/* . */ === state.input.charCodeAt(state.position)) {
+      state.position += 3;
+      skipSeparationSpace(state, true, -1);
+    }
+    return;
+  }
+
+  if (state.position < (state.length - 1)) {
+    throwError(state, 'end of the stream or a document separator is expected');
+  } else {
+    return;
+  }
+}
+
+
+function loadDocuments(input, options) {
+  input = String(input);
+  options = options || {};
+
+  if (0 !== input.length &&
+      0x0A/* LF */ !== input.charCodeAt(input.length - 1) &&
+      0x0D/* CR */ !== input.charCodeAt(input.length - 1)) {
+    input += '\n';
+  }
+
+  var state = new State(input, options);
+
+  if (PATTERN_NON_PRINTABLE.test(state.input)) {
+    throwError(state, 'the stream contains non-printable characters');
+  }
+
+  // Use 0 as string terminator. That significantly simplifies bounds check.
+  state.input += '\0';
+
+  while (0x20/* Space */ === state.input.charCodeAt(state.position)) {
+    state.lineIndent += 1;
+    state.position += 1;
+  }
+
+  while (state.position < (state.length - 1)) {
+    readDocument(state);
+  }
+
+  return state.documents;
+}
+
+
+function loadAll(input, iterator, options) {
+  var documents = loadDocuments(input, options), index, length;
+
+  for (index = 0, length = documents.length; index < length; index += 1) {
+    iterator(documents[index]);
+  }
+}
+
+
+function load(input, options) {
+  var documents = loadDocuments(input, options), index, length;
+
+  if (0 === documents.length) {
+    return undefined;
+  } else if (1 === documents.length) {
+    return documents[0];
+  } else {
+    throw new YAMLException('expected a single document in the stream, but found more');
+  }
+}
+
+
+function safeLoadAll(input, output, options) {
+  loadAll(input, output, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));
+}
+
+
+function safeLoad(input, options) {
+  return load(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));
+}
+
+
+module.exports.loadAll     = loadAll;
+module.exports.load        = load;
+module.exports.safeLoadAll = safeLoadAll;
+module.exports.safeLoad    = safeLoad;
+
+},{"./common":2,"./exception":4,"./mark":6,"./schema/default_full":9,"./schema/default_safe":10}],6:[function(require,module,exports){
+'use strict';
+
+
+var common = require('./common');
+
+
+function Mark(name, buffer, position, line, column) {
+  this.name     = name;
+  this.buffer   = buffer;
+  this.position = position;
+  this.line     = line;
+  this.column   = column;
+}
+
+
+Mark.prototype.getSnippet = function getSnippet(indent, maxLength) {
+  var head, start, tail, end, snippet;
+
+  if (!this.buffer) {
+    return null;
+  }
+
+  indent = indent || 4;
+  maxLength = maxLength || 75;
+
+  head = '';
+  start = this.position;
+
+  while (start > 0 && -1 === '\x00\r\n\x85\u2028\u2029'.indexOf(this.buffer.charAt(start - 1))) {
+    start -= 1;
+    if (this.position - start > (maxLength / 2 - 1)) {
+      head = ' ... ';
+      start += 5;
+      break;
+    }
+  }
+
+  tail = '';
+  end = this.position;
+
+  while (end < this.buffer.length && -1 === '\x00\r\n\x85\u2028\u2029'.indexOf(this.buffer.charAt(end))) {
+    end += 1;
+    if (end - this.position > (maxLength / 2 - 1)) {
+      tail = ' ... ';
+      end -= 5;
+      break;
+    }
+  }
+
+  snippet = this.buffer.slice(start, end);
+
+  return common.repeat(' ', indent) + head + snippet + tail + '\n' +
+         common.repeat(' ', indent + this.position - start + head.length) + '^';
+};
+
+
+Mark.prototype.toString = function toString(compact) {
+  var snippet, where = '';
+
+  if (this.name) {
+    where += 'in "' + this.name + '" ';
+  }
+
+  where += 'at line ' + (this.line + 1) + ', column ' + (this.column + 1);
+
+  if (!compact) {
+    snippet = this.getSnippet();
+
+    if (snippet) {
+      where += ':\n' + snippet;
+    }
+  }
+
+  return where;
+};
+
+
+module.exports = Mark;
+
+},{"./common":2}],7:[function(require,module,exports){
+'use strict';
+
+
+var common        = require('./common');
+var YAMLException = require('./exception');
+var Type          = require('./type');
+
+
+function compileList(schema, name, result) {
+  var exclude = [];
+
+  schema.include.forEach(function (includedSchema) {
+    result = compileList(includedSchema, name, result);
+  });
+
+  schema[name].forEach(function (currentType) {
+    result.forEach(function (previousType, previousIndex) {
+      if (previousType.tag === currentType.tag) {
+        exclude.push(previousIndex);
+      }
+    });
+
+    result.push(currentType);
+  });
+
+  return result.filter(function (type, index) {
+    return -1 === exclude.indexOf(index);
+  });
+}
+
+
+function compileMap(/* lists... */) {
+  var result = {}, index, length;
+
+  function collectType(type) {
+    result[type.tag] = type;
+  }
+
+  for (index = 0, length = arguments.length; index < length; index += 1) {
+    arguments[index].forEach(collectType);
+  }
+
+  return result;
+}
+
+
+function Schema(definition) {
+  this.include  = definition.include  || [];
+  this.implicit = definition.implicit || [];
+  this.explicit = definition.explicit || [];
+
+  this.implicit.forEach(function (type) {
+    if (type.loadKind && 'scalar' !== type.loadKind) {
+      throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.');
+    }
+  });
+
+  this.compiledImplicit = compileList(this, 'implicit', []);
+  this.compiledExplicit = compileList(this, 'explicit', []);
+  this.compiledTypeMap  = compileMap(this.compiledImplicit, this.compiledExplicit);
+}
+
+
+Schema.DEFAULT = null;
+
+
+Schema.create = function createSchema() {
+  var schemas, types;
+
+  switch (arguments.length) {
+  case 1:
+    schemas = Schema.DEFAULT;
+    types = arguments[0];
+    break;
+
+  case 2:
+    schemas = arguments[0];
+    types = arguments[1];
+    break;
+
+  default:
+    throw new YAMLException('Wrong number of arguments for Schema.create function');
+  }
+
+  schemas = common.toArray(schemas);
+  types = common.toArray(types);
+
+  if (!schemas.every(function (schema) { return schema instanceof Schema; })) {
+    throw new YAMLException('Specified list of super schemas (or a single Schema object) contains a non-Schema object.');
+  }
+
+  if (!types.every(function (type) { return type instanceof Type; })) {
+    throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');
+  }
+
+  return new Schema({
+    include: schemas,
+    explicit: types
+  });
+};
+
+
+module.exports = Schema;
+
+},{"./common":2,"./exception":4,"./type":13}],8:[function(require,module,exports){
+// Standard YAML's Core schema.
+// http://www.yaml.org/spec/1.2/spec.html#id2804923
+//
+// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.
+// So, Core schema has no distinctions from JSON schema is JS-YAML.
+
+
+'use strict';
+
+
+var Schema = require('../schema');
+
+
+module.exports = new Schema({
+  include: [
+    require('./json')
+  ]
+});
+
+},{"../schema":7,"./json":12}],9:[function(require,module,exports){
+// JS-YAML's default schema for `load` function.
+// It is not described in the YAML specification.
+//
+// This schema is based on JS-YAML's default safe schema and includes
+// JavaScript-specific types: !!js/undefined, !!js/regexp and !!js/function.
+//
+// Also this schema is used as default base schema at `Schema.create` function.
+
+
+'use strict';
+
+
+var Schema = require('../schema');
+
+
+module.exports = Schema.DEFAULT = new Schema({
+  include: [
+    require('./default_safe')
+  ],
+  explicit: [
+    require('../type/js/undefined'),
+    require('../type/js/regexp'),
+    require('../type/js/function')
+  ]
+});
+
+},{"../schema":7,"../type/js/function":18,"../type/js/regexp":19,"../type/js/undefined":20,"./default_safe":10}],10:[function(require,module,exports){
+// JS-YAML's default schema for `safeLoad` function.
+// It is not described in the YAML specification.
+//
+// This schema is based on standard YAML's Core schema and includes most of
+// extra types described at YAML tag repository. (http://yaml.org/type/)
+
+
+'use strict';
+
+
+var Schema = require('../schema');
+
+
+module.exports = new Schema({
+  include: [
+    require('./core')
+  ],
+  implicit: [
+    require('../type/timestamp'),
+    require('../type/merge')
+  ],
+  explicit: [
+    require('../type/binary'),
+    require('../type/omap'),
+    require('../type/pairs'),
+    require('../type/set')
+  ]
+});
+
+},{"../schema":7,"../type/binary":14,"../type/merge":22,"../type/omap":24,"../type/pairs":25,"../type/set":27,"../type/timestamp":29,"./core":8}],11:[function(require,module,exports){
+// Standard YAML's Failsafe schema.
+// http://www.yaml.org/spec/1.2/spec.html#id2802346
+
+
+'use strict';
+
+
+var Schema = require('../schema');
+
+
+module.exports = new Schema({
+  explicit: [
+    require('../type/str'),
+    require('../type/seq'),
+    require('../type/map')
+  ]
+});
+
+},{"../schema":7,"../type/map":21,"../type/seq":26,"../type/str":28}],12:[function(require,module,exports){
+// Standard YAML's JSON schema.
+// http://www.yaml.org/spec/1.2/spec.html#id2803231
+//
+// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.
+// So, this schema is not such strict as defined in the YAML specification.
+// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc.
+
+
+'use strict';
+
+
+var Schema = require('../schema');
+
+
+module.exports = new Schema({
+  include: [
+    require('./failsafe')
+  ],
+  implicit: [
+    require('../type/null'),
+    require('../type/bool'),
+    require('../type/int'),
+    require('../type/float')
+  ]
+});
+
+},{"../schema":7,"../type/bool":15,"../type/float":16,"../type/int":17,"../type/null":23,"./failsafe":11}],13:[function(require,module,exports){
+'use strict';
+
+var YAMLException = require('./exception');
+
+var TYPE_CONSTRUCTOR_OPTIONS = [
+  'kind',
+  'resolve',
+  'construct',
+  'instanceOf',
+  'predicate',
+  'represent',
+  'defaultStyle',
+  'styleAliases'
+];
+
+var YAML_NODE_KINDS = [
+  'scalar',
+  'sequence',
+  'mapping'
+];
+
+function compileStyleAliases(map) {
+  var result = {};
+
+  if (null !== map) {
+    Object.keys(map).forEach(function (style) {
+      map[style].forEach(function (alias) {
+        result[String(alias)] = style;
+      });
+    });
+  }
+
+  return result;
+}
+
+function Type(tag, options) {
+  options = options || {};
+
+  Object.keys(options).forEach(function (name) {
+    if (-1 === TYPE_CONSTRUCTOR_OPTIONS.indexOf(name)) {
+      throw new YAMLException('Unknown option "' + name + '" is met in definition of "' + tag + '" YAML type.');
+    }
+  });
+
+  // TODO: Add tag format check.
+  this.tag          = tag;
+  this.kind         = options['kind']         || null;
+  this.resolve      = options['resolve']      || function () { return true; };
+  this.construct    = options['construct']    || function (data) { return data; };
+  this.instanceOf   = options['instanceOf']   || null;
+  this.predicate    = options['predicate']    || null;
+  this.represent    = options['represent']    || null;
+  this.defaultStyle = options['defaultStyle'] || null;
+  this.styleAliases = compileStyleAliases(options['styleAliases'] || null);
+
+  if (-1 === YAML_NODE_KINDS.indexOf(this.kind)) {
+    throw new YAMLException('Unknown kind "' + this.kind + '" is specified for "' + tag + '" YAML type.');
+  }
+}
+
+module.exports = Type;
+
+},{"./exception":4}],14:[function(require,module,exports){
+'use strict';
+
+
+// A trick for browserified version.
+// Since we make browserifier to ignore `buffer` module, NodeBuffer will be undefined
+var NodeBuffer = require('buffer').Buffer;
+var Type       = require('../type');
+
+
+// [ 64, 65, 66 ] -> [ padding, CR, LF ]
+var BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r';
+
+
+function resolveYamlBinary(data) {
+  if (null === data) {
+    return false;
+  }
+
+  var code, idx, bitlen = 0, len = 0, max = data.length, map = BASE64_MAP;
+
+  // Convert one by one.
+  for (idx = 0; idx < max; idx ++) {
+    code = map.indexOf(data.charAt(idx));
+
+    // Skip CR/LF
+    if (code > 64) { continue; }
+
+    // Fail on illegal characters
+    if (code < 0) { return false; }
+
+    bitlen += 6;
+  }
+
+  // If there are any bits left, source was corrupted
+  return (bitlen % 8) === 0;
+}
+
+function constructYamlBinary(data) {
+  var code, idx, tailbits,
+      input = data.replace(/[\r\n=]/g, ''), // remove CR/LF & padding to simplify scan
+      max = input.length,
+      map = BASE64_MAP,
+      bits = 0,
+      result = [];
+
+  // Collect by 6*4 bits (3 bytes)
+
+  for (idx = 0; idx < max; idx++) {
+    if ((idx % 4 === 0) && idx) {
+      result.push((bits >> 16) & 0xFF);
+      result.push((bits >> 8) & 0xFF);
+      result.push(bits & 0xFF);
+    }
+
+    bits = (bits << 6) | map.indexOf(input.charAt(idx));
+  }
+
+  // Dump tail
+
+  tailbits = (max % 4)*6;
+
+  if (tailbits === 0) {
+    result.push((bits >> 16) & 0xFF);
+    result.push((bits >> 8) & 0xFF);
+    result.push(bits & 0xFF);
+  } else if (tailbits === 18) {
+    result.push((bits >> 10) & 0xFF);
+    result.push((bits >> 2) & 0xFF);
+  } else if (tailbits === 12) {
+    result.push((bits >> 4) & 0xFF);
+  }
+
+  // Wrap into Buffer for NodeJS and leave Array for browser
+  if (NodeBuffer) {
+    return new NodeBuffer(result);
+  }
+
+  return result;
+}
+
+function representYamlBinary(object /*, style*/) {
+  var result = '', bits = 0, idx, tail,
+      max = object.length,
+      map = BASE64_MAP;
+
+  // Convert every three bytes to 4 ASCII characters.
+
+  for (idx = 0; idx < max; idx++) {
+    if ((idx % 3 === 0) && idx) {
+      result += map[(bits >> 18) & 0x3F];
+      result += map[(bits >> 12) & 0x3F];
+      result += map[(bits >> 6) & 0x3F];
+      result += map[bits & 0x3F];
+    }
+
+    bits = (bits << 8) + object[idx];
+  }
+
+  // Dump tail
+
+  tail = max % 3;
+
+  if (tail === 0) {
+    result += map[(bits >> 18) & 0x3F];
+    result += map[(bits >> 12) & 0x3F];
+    result += map[(bits >> 6) & 0x3F];
+    result += map[bits & 0x3F];
+  } else if (tail === 2) {
+    result += map[(bits >> 10) & 0x3F];
+    result += map[(bits >> 4) & 0x3F];
+    result += map[(bits << 2) & 0x3F];
+    result += map[64];
+  } else if (tail === 1) {
+    result += map[(bits >> 2) & 0x3F];
+    result += map[(bits << 4) & 0x3F];
+    result += map[64];
+    result += map[64];
+  }
+
+  return result;
+}
+
+function isBinary(object) {
+  return NodeBuffer && NodeBuffer.isBuffer(object);
+}
+
+module.exports = new Type('tag:yaml.org,2002:binary', {
+  kind: 'scalar',
+  resolve: resolveYamlBinary,
+  construct: constructYamlBinary,
+  predicate: isBinary,
+  represent: representYamlBinary
+});
+
+},{"../type":13,"buffer":30}],15:[function(require,module,exports){
+'use strict';
+
+var Type = require('../type');
+
+function resolveYamlBoolean(data) {
+  if (null === data) {
+    return false;
+  }
+
+  var max = data.length;
+
+  return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) ||
+         (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'));
+}
+
+function constructYamlBoolean(data) {
+  return data === 'true' ||
+         data === 'True' ||
+         data === 'TRUE';
+}
+
+function isBoolean(object) {
+  return '[object Boolean]' === Object.prototype.toString.call(object);
+}
+
+module.exports = new Type('tag:yaml.org,2002:bool', {
+  kind: 'scalar',
+  resolve: resolveYamlBoolean,
+  construct: constructYamlBoolean,
+  predicate: isBoolean,
+  represent: {
+    lowercase: function (object) { return object ? 'true' : 'false'; },
+    uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; },
+    camelcase: function (object) { return object ? 'True' : 'False'; }
+  },
+  defaultStyle: 'lowercase'
+});
+
+},{"../type":13}],16:[function(require,module,exports){
+'use strict';
+
+var common = require('../common');
+var Type   = require('../type');
+
+var YAML_FLOAT_PATTERN = new RegExp(
+  '^(?:[-+]?(?:[0-9][0-9_]*)\\.[0-9_]*(?:[eE][-+][0-9]+)?' +
+  '|\\.[0-9_]+(?:[eE][-+][0-9]+)?' +
+  '|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*' +
+  '|[-+]?\\.(?:inf|Inf|INF)' +
+  '|\\.(?:nan|NaN|NAN))$');
+
+function resolveYamlFloat(data) {
+  if (null === data) {
+    return false;
+  }
+
+  var value, sign, base, digits;
+
+  if (!YAML_FLOAT_PATTERN.test(data)) {
+    return false;
+  }
+  return true;
+}
+
+function constructYamlFloat(data) {
+  var value, sign, base, digits;
+
+  value  = data.replace(/_/g, '').toLowerCase();
+  sign   = '-' === value[0] ? -1 : 1;
+  digits = [];
+
+  if (0 <= '+-'.indexOf(value[0])) {
+    value = value.slice(1);
+  }
+
+  if ('.inf' === value) {
+    return (1 === sign) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;
+
+  } else if ('.nan' === value) {
+    return NaN;
+
+  } else if (0 <= value.indexOf(':')) {
+    value.split(':').forEach(function (v) {
+      digits.unshift(parseFloat(v, 10));
+    });
+
+    value = 0.0;
+    base = 1;
+
+    digits.forEach(function (d) {
+      value += d * base;
+      base *= 60;
+    });
+
+    return sign * value;
+
+  } else {
+    return sign * parseFloat(value, 10);
+  }
+}
+
+function representYamlFloat(object, style) {
+  if (isNaN(object)) {
+    switch (style) {
+    case 'lowercase':
+      return '.nan';
+    case 'uppercase':
+      return '.NAN';
+    case 'camelcase':
+      return '.NaN';
+    }
+  } else if (Number.POSITIVE_INFINITY === object) {
+    switch (style) {
+    case 'lowercase':
+      return '.inf';
+    case 'uppercase':
+      return '.INF';
+    case 'camelcase':
+      return '.Inf';
+    }
+  } else if (Number.NEGATIVE_INFINITY === object) {
+    switch (style) {
+    case 'lowercase':
+      return '-.inf';
+    case 'uppercase':
+      return '-.INF';
+    case 'camelcase':
+      return '-.Inf';
+    }
+  } else if (common.isNegativeZero(object)) {
+    return '-0.0';
+  } else {
+    return object.toString(10);
+  }
+}
+
+function isFloat(object) {
+  return ('[object Number]' === Object.prototype.toString.call(object)) &&
+         (0 !== object % 1 || common.isNegativeZero(object));
+}
+
+module.exports = new Type('tag:yaml.org,2002:float', {
+  kind: 'scalar',
+  resolve: resolveYamlFloat,
+  construct: constructYamlFloat,
+  predicate: isFloat,
+  represent: representYamlFloat,
+  defaultStyle: 'lowercase'
+});
+
+},{"../common":2,"../type":13}],17:[function(require,module,exports){
+'use strict';
+
+var common = require('../common');
+var Type   = require('../type');
+
+function isHexCode(c) {
+  return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) ||
+         ((0x41/* A */ <= c) && (c <= 0x46/* F */)) ||
+         ((0x61/* a */ <= c) && (c <= 0x66/* f */));
+}
+
+function isOctCode(c) {
+  return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */));
+}
+
+function isDecCode(c) {
+  return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */));
+}
+
+function resolveYamlInteger(data) {
+  if (null === data) {
+    return false;
+  }
+
+  var max = data.length,
+      index = 0,
+      hasDigits = false,
+      ch;
+
+  if (!max) { return false; }
+
+  ch = data[index];
+
+  // sign
+  if (ch === '-' || ch === '+') {
+    ch = data[++index];
+  }
+
+  if (ch === '0') {
+    // 0
+    if (index+1 === max) { return true; }
+    ch = data[++index];
+
+    // base 2, base 8, base 16
+
+    if (ch === 'b') {
+      // base 2
+      index++;
+
+      for (; index < max; index++) {
+        ch = data[index];
+        if (ch === '_') { continue; }
+        if (ch !== '0' && ch !== '1') {
+          return false;
+        }
+        hasDigits = true;
+      }
+      return hasDigits;
+    }
+
+
+    if (ch === 'x') {
+      // base 16
+      index++;
+
+      for (; index < max; index++) {
+        ch = data[index];
+        if (ch === '_') { continue; }
+        if (!isHexCode(data.charCodeAt(index))) {
+          return false;
+        }
+        hasDigits = true;
+      }
+      return hasDigits;
+    }
+
+    // base 8
+    for (; index < max; index++) {
+      ch = data[index];
+      if (ch === '_') { continue; }
+      if (!isOctCode(data.charCodeAt(index))) {
+        return false;
+      }
+      hasDigits = true;
+    }
+    return hasDigits;
+  }
+
+  // base 10 (except 0) or base 60
+
+  for (; index < max; index++) {
+    ch = data[index];
+    if (ch === '_') { continue; }
+    if (ch === ':') { break; }
+    if (!isDecCode(data.charCodeAt(index))) {
+      return false;
+    }
+    hasDigits = true;
+  }
+
+  if (!hasDigits) { return false; }
+
+  // if !base60 - done;
+  if (ch !== ':') { return true; }
+
+  // base60 almost not used, no needs to optimize
+  return /^(:[0-5]?[0-9])+$/.test(data.slice(index));
+}
+
+function constructYamlInteger(data) {
+  var value = data, sign = 1, ch, base, digits = [];
+
+  if (value.indexOf('_') !== -1) {
+    value = value.replace(/_/g, '');
+  }
+
+  ch = value[0];
+
+  if (ch === '-' || ch === '+') {
+    if (ch === '-') { sign = -1; }
+    value = value.slice(1);
+    ch = value[0];
+  }
+
+  if ('0' === value) {
+    return 0;
+  }
+
+  if (ch === '0') {
+    if (value[1] === 'b') {
+      return sign * parseInt(value.slice(2), 2);
+    }
+    if (value[1] === 'x') {
+      return sign * parseInt(value, 16);
+    }
+    return sign * parseInt(value, 8);
+
+  }
+
+  if (value.indexOf(':') !== -1) {
+    value.split(':').forEach(function (v) {
+      digits.unshift(parseInt(v, 10));
+    });
+
+    value = 0;
+    base = 1;
+
+    digits.forEach(function (d) {
+      value += (d * base);
+      base *= 60;
+    });
+
+    return sign * value;
+
+  }
+
+  return sign * parseInt(value, 10);
+}
+
+function isInteger(object) {
+  return ('[object Number]' === Object.prototype.toString.call(object)) &&
+         (0 === object % 1 && !common.isNegativeZero(object));
+}
+
+module.exports = new Type('tag:yaml.org,2002:int', {
+  kind: 'scalar',
+  resolve: resolveYamlInteger,
+  construct: constructYamlInteger,
+  predicate: isInteger,
+  represent: {
+    binary:      function (object) { return '0b' + object.toString(2); },
+    octal:       function (object) { return '0'  + object.toString(8); },
+    decimal:     function (object) { return        object.toString(10); },
+    hexadecimal: function (object) { return '0x' + object.toString(16).toUpperCase(); }
+  },
+  defaultStyle: 'decimal',
+  styleAliases: {
+    binary:      [ 2,  'bin' ],
+    octal:       [ 8,  'oct' ],
+    decimal:     [ 10, 'dec' ],
+    hexadecimal: [ 16, 'hex' ]
+  }
+});
+
+},{"../common":2,"../type":13}],18:[function(require,module,exports){
+'use strict';
+
+var esprima;
+
+// Browserified version does not have esprima
+//
+// 1. For node.js just require module as deps
+// 2. For browser try to require mudule via external AMD system.
+//    If not found - try to fallback to window.esprima. If not
+//    found too - then fail to parse.
+//
+try {
+  esprima = require('esprima');
+} catch (_) {
+  /*global window */
+  if (typeof window !== 'undefined') { esprima = window.esprima; }
+}
+
+var Type = require('../../type');
+
+function resolveJavascriptFunction(data) {
+  if (null === data) {
+    return false;
+  }
+
+  try {
+    var source = '(' + data + ')',
+        ast    = esprima.parse(source, { range: true }),
+        params = [],
+        body;
+
+    if ('Program'             !== ast.type         ||
+        1                     !== ast.body.length  ||
+        'ExpressionStatement' !== ast.body[0].type ||
+        'FunctionExpression'  !== ast.body[0].expression.type) {
+      return false;
+    }
+
+    return true;
+  } catch (err) {
+    return false;
+  }
+}
+
+function constructJavascriptFunction(data) {
+  /*jslint evil:true*/
+
+  var source = '(' + data + ')',
+      ast    = esprima.parse(source, { range: true }),
+      params = [],
+      body;
+
+  if ('Program'             !== ast.type         ||
+      1                     !== ast.body.length  ||
+      'ExpressionStatement' !== ast.body[0].type ||
+      'FunctionExpression'  !== ast.body[0].expression.type) {
+    throw new Error('Failed to resolve function');
+  }
+
+  ast.body[0].expression.params.forEach(function (param) {
+    params.push(param.name);
+  });
+
+  body = ast.body[0].expression.body.range;
+
+  // Esprima's ranges include the first '{' and the last '}' characters on
+  // function expressions. So cut them out.
+  return new Function(params, source.slice(body[0]+1, body[1]-1));
+}
+
+function representJavascriptFunction(object /*, style*/) {
+  return object.toString();
+}
+
+function isFunction(object) {
+  return '[object Function]' === Object.prototype.toString.call(object);
+}
+
+module.exports = new Type('tag:yaml.org,2002:js/function', {
+  kind: 'scalar',
+  resolve: resolveJavascriptFunction,
+  construct: constructJavascriptFunction,
+  predicate: isFunction,
+  represent: representJavascriptFunction
+});
+
+},{"../../type":13,"esprima":"esprima"}],19:[function(require,module,exports){
+'use strict';
+
+var Type = require('../../type');
+
+function resolveJavascriptRegExp(data) {
+  if (null === data) {
+    return false;
+  }
+
+  if (0 === data.length) {
+    return false;
+  }
+
+  var regexp = data,
+      tail   = /\/([gim]*)$/.exec(data),
+      modifiers = '';
+
+  // if regexp starts with '/' it can have modifiers and must be properly closed
+  // `/foo/gim` - modifiers tail can be maximum 3 chars
+  if ('/' === regexp[0]) {
+    if (tail) {
+      modifiers = tail[1];
+    }
+
+    if (modifiers.length > 3) { return false; }
+    // if expression starts with /, is should be properly terminated
+    if (regexp[regexp.length - modifiers.length - 1] !== '/') { return false; }
+
+    regexp = regexp.slice(1, regexp.length - modifiers.length - 1);
+  }
+
+  try {
+    var dummy = new RegExp(regexp, modifiers);
+    return true;
+  } catch (error) {
+    return false;
+  }
+}
+
+function constructJavascriptRegExp(data) {
+  var regexp = data,
+      tail   = /\/([gim]*)$/.exec(data),
+      modifiers = '';
+
+  // `/foo/gim` - tail can be maximum 4 chars
+  if ('/' === regexp[0]) {
+    if (tail) {
+      modifiers = tail[1];
+    }
+    regexp = regexp.slice(1, regexp.length - modifiers.length - 1);
+  }
+
+  return new RegExp(regexp, modifiers);
+}
+
+function representJavascriptRegExp(object /*, style*/) {
+  var result = '/' + object.source + '/';
+
+  if (object.global) {
+    result += 'g';
+  }
+
+  if (object.multiline) {
+    result += 'm';
+  }
+
+  if (object.ignoreCase) {
+    result += 'i';
+  }
+
+  return result;
+}
+
+function isRegExp(object) {
+  return '[object RegExp]' === Object.prototype.toString.call(object);
+}
+
+module.exports = new Type('tag:yaml.org,2002:js/regexp', {
+  kind: 'scalar',
+  resolve: resolveJavascriptRegExp,
+  co

<TRUNCATED>

[14/71] [abbrv] brooklyn-ui git commit: Move mobile app to sandbox

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-be.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-be.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-be.js
deleted file mode 100644
index 673beb5..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-be.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "Sunday",
-      "Monday",
-      "Tuesday",
-      "Wednesday",
-      "Thursday",
-      "Friday",
-      "Saturday"
-    ],
-    "MONTH": [
-      "January",
-      "February",
-      "March",
-      "April",
-      "May",
-      "June",
-      "July",
-      "August",
-      "September",
-      "October",
-      "November",
-      "December"
-    ],
-    "SHORTDAY": [
-      "Sun",
-      "Mon",
-      "Tue",
-      "Wed",
-      "Thu",
-      "Fri",
-      "Sat"
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Feb",
-      "Mar",
-      "Apr",
-      "May",
-      "Jun",
-      "Jul",
-      "Aug",
-      "Sep",
-      "Oct",
-      "Nov",
-      "Dec"
-    ],
-    "fullDate": "EEEE d MMMM y",
-    "longDate": "d MMM y",
-    "medium": "dd MMM y HH:mm:ss",
-    "mediumDate": "dd MMM y",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "$",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "en-be",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-bm.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-bm.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-bm.js
deleted file mode 100644
index 604db15..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-bm.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "Sunday",
-      "Monday",
-      "Tuesday",
-      "Wednesday",
-      "Thursday",
-      "Friday",
-      "Saturday"
-    ],
-    "MONTH": [
-      "January",
-      "February",
-      "March",
-      "April",
-      "May",
-      "June",
-      "July",
-      "August",
-      "September",
-      "October",
-      "November",
-      "December"
-    ],
-    "SHORTDAY": [
-      "Sun",
-      "Mon",
-      "Tue",
-      "Wed",
-      "Thu",
-      "Fri",
-      "Sat"
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Feb",
-      "Mar",
-      "Apr",
-      "May",
-      "Jun",
-      "Jul",
-      "Aug",
-      "Sep",
-      "Oct",
-      "Nov",
-      "Dec"
-    ],
-    "fullDate": "EEEE, MMMM d, y",
-    "longDate": "MMMM d, y",
-    "medium": "MMM d, y h:mm:ss a",
-    "mediumDate": "MMM d, y",
-    "mediumTime": "h:mm:ss a",
-    "short": "M/d/yy h:mm a",
-    "shortDate": "M/d/yy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "$",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "en-bm",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-bw.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-bw.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-bw.js
deleted file mode 100644
index 0aeb9f9..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-bw.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "Sunday",
-      "Monday",
-      "Tuesday",
-      "Wednesday",
-      "Thursday",
-      "Friday",
-      "Saturday"
-    ],
-    "MONTH": [
-      "January",
-      "February",
-      "March",
-      "April",
-      "May",
-      "June",
-      "July",
-      "August",
-      "September",
-      "October",
-      "November",
-      "December"
-    ],
-    "SHORTDAY": [
-      "Sun",
-      "Mon",
-      "Tue",
-      "Wed",
-      "Thu",
-      "Fri",
-      "Sat"
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Feb",
-      "Mar",
-      "Apr",
-      "May",
-      "Jun",
-      "Jul",
-      "Aug",
-      "Sep",
-      "Oct",
-      "Nov",
-      "Dec"
-    ],
-    "fullDate": "EEEE dd MMMM y",
-    "longDate": "dd MMMM y",
-    "medium": "MMM d, y h:mm:ss a",
-    "mediumDate": "MMM d, y",
-    "mediumTime": "h:mm:ss a",
-    "short": "dd/MM/yy h:mm a",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "$",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "en-bw",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-bz.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-bz.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-bz.js
deleted file mode 100644
index 17f242d..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-bz.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "Sunday",
-      "Monday",
-      "Tuesday",
-      "Wednesday",
-      "Thursday",
-      "Friday",
-      "Saturday"
-    ],
-    "MONTH": [
-      "January",
-      "February",
-      "March",
-      "April",
-      "May",
-      "June",
-      "July",
-      "August",
-      "September",
-      "October",
-      "November",
-      "December"
-    ],
-    "SHORTDAY": [
-      "Sun",
-      "Mon",
-      "Tue",
-      "Wed",
-      "Thu",
-      "Fri",
-      "Sat"
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Feb",
-      "Mar",
-      "Apr",
-      "May",
-      "Jun",
-      "Jul",
-      "Aug",
-      "Sep",
-      "Oct",
-      "Nov",
-      "Dec"
-    ],
-    "fullDate": "dd MMMM y",
-    "longDate": "dd MMMM y",
-    "medium": "dd-MMM-y HH:mm:ss",
-    "mediumDate": "dd-MMM-y",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "$",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "en-bz",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-ca.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-ca.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-ca.js
deleted file mode 100644
index 3709035..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-ca.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "Sunday",
-      "Monday",
-      "Tuesday",
-      "Wednesday",
-      "Thursday",
-      "Friday",
-      "Saturday"
-    ],
-    "MONTH": [
-      "January",
-      "February",
-      "March",
-      "April",
-      "May",
-      "June",
-      "July",
-      "August",
-      "September",
-      "October",
-      "November",
-      "December"
-    ],
-    "SHORTDAY": [
-      "Sun",
-      "Mon",
-      "Tue",
-      "Wed",
-      "Thu",
-      "Fri",
-      "Sat"
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Feb",
-      "Mar",
-      "Apr",
-      "May",
-      "Jun",
-      "Jul",
-      "Aug",
-      "Sep",
-      "Oct",
-      "Nov",
-      "Dec"
-    ],
-    "fullDate": "EEEE, d MMMM, y",
-    "longDate": "d MMMM, y",
-    "medium": "yyyy-MM-dd h:mm:ss a",
-    "mediumDate": "yyyy-MM-dd",
-    "mediumTime": "h:mm:ss a",
-    "short": "yy-MM-dd h:mm a",
-    "shortDate": "yy-MM-dd",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "$",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "en-ca",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-dsrt-us.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-dsrt-us.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-dsrt-us.js
deleted file mode 100644
index 0ede315..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-dsrt-us.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\ud801\udc08\ud801\udc23",
-      "\ud801\udc11\ud801\udc23"
-    ],
-    "DAY": [
-      "\ud801\udc1d\ud801\udc32\ud801\udc4c\ud801\udc3c\ud801\udc29",
-      "\ud801\udc23\ud801\udc32\ud801\udc4c\ud801\udc3c\ud801\udc29",
-      "\ud801\udc13\ud801\udc2d\ud801\udc46\ud801\udc3c\ud801\udc29",
-      "\ud801\udc0e\ud801\udc2f\ud801\udc4c\ud801\udc46\ud801\udc3c\ud801\udc29",
-      "\ud801\udc1b\ud801\udc32\ud801\udc49\ud801\udc46\ud801\udc3c\ud801\udc29",
-      "\ud801\udc19\ud801\udc49\ud801\udc34\ud801\udc3c\ud801\udc29",
-      "\ud801\udc1d\ud801\udc30\ud801\udc3b\ud801\udc32\ud801\udc49\ud801\udc3c\ud801\udc29"
-    ],
-    "MONTH": [
-      "\ud801\udc16\ud801\udc30\ud801\udc4c\ud801\udc37\ud801\udc2d\ud801\udc2f\ud801\udc49\ud801\udc28",
-      "\ud801\udc19\ud801\udc2f\ud801\udc3a\ud801\udc49\ud801\udc2d\ud801\udc2f\ud801\udc49\ud801\udc28",
-      "\ud801\udc23\ud801\udc2a\ud801\udc49\ud801\udc3d",
-      "\ud801\udc01\ud801\udc39\ud801\udc49\ud801\udc2e\ud801\udc4a",
-      "\ud801\udc23\ud801\udc29",
-      "\ud801\udc16\ud801\udc2d\ud801\udc4c",
-      "\ud801\udc16\ud801\udc2d\ud801\udc4a\ud801\udc34",
-      "\ud801\udc02\ud801\udc40\ud801\udc32\ud801\udc45\ud801\udc3b",
-      "\ud801\udc1d\ud801\udc2f\ud801\udc39\ud801\udc3b\ud801\udc2f\ud801\udc4b\ud801\udc3a\ud801\udc32\ud801\udc49",
-      "\ud801\udc09\ud801\udc3f\ud801\udc3b\ud801\udc2c\ud801\udc3a\ud801\udc32\ud801\udc49",
-      "\ud801\udc24\ud801\udc2c\ud801\udc42\ud801\udc2f\ud801\udc4b\ud801\udc3a\ud801\udc32\ud801\udc49",
-      "\ud801\udc14\ud801\udc28\ud801\udc45\ud801\udc2f\ud801\udc4b\ud801\udc3a\ud801\udc32\ud801\udc49"
-    ],
-    "SHORTDAY": [
-      "\ud801\udc1d\ud801\udc32\ud801\udc4c",
-      "\ud801\udc23\ud801\udc32\ud801\udc4c",
-      "\ud801\udc13\ud801\udc2d\ud801\udc46",
-      "\ud801\udc0e\ud801\udc2f\ud801\udc4c",
-      "\ud801\udc1b\ud801\udc32\ud801\udc49",
-      "\ud801\udc19\ud801\udc49\ud801\udc34",
-      "\ud801\udc1d\ud801\udc30\ud801\udc3b"
-    ],
-    "SHORTMONTH": [
-      "\ud801\udc16\ud801\udc30\ud801\udc4c",
-      "\ud801\udc19\ud801\udc2f\ud801\udc3a",
-      "\ud801\udc23\ud801\udc2a\ud801\udc49",
-      "\ud801\udc01\ud801\udc39\ud801\udc49",
-      "\ud801\udc23\ud801\udc29",
-      "\ud801\udc16\ud801\udc2d\ud801\udc4c",
-      "\ud801\udc16\ud801\udc2d\ud801\udc4a",
-      "\ud801\udc02\ud801\udc40",
-      "\ud801\udc1d\ud801\udc2f\ud801\udc39",
-      "\ud801\udc09\ud801\udc3f\ud801\udc3b",
-      "\ud801\udc24\ud801\udc2c\ud801\udc42",
-      "\ud801\udc14\ud801\udc28\ud801\udc45"
-    ],
-    "fullDate": "EEEE, MMMM d, y",
-    "longDate": "MMMM d, y",
-    "medium": "MMM d, y h:mm:ss a",
-    "mediumDate": "MMM d, y",
-    "mediumTime": "h:mm:ss a",
-    "short": "M/d/yy h:mm a",
-    "shortDate": "M/d/yy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "$",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "en-dsrt-us",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-dsrt.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-dsrt.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-dsrt.js
deleted file mode 100644
index 5e86ec5..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-dsrt.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\ud801\udc08\ud801\udc23",
-      "\ud801\udc11\ud801\udc23"
-    ],
-    "DAY": [
-      "\ud801\udc1d\ud801\udc32\ud801\udc4c\ud801\udc3c\ud801\udc29",
-      "\ud801\udc23\ud801\udc32\ud801\udc4c\ud801\udc3c\ud801\udc29",
-      "\ud801\udc13\ud801\udc2d\ud801\udc46\ud801\udc3c\ud801\udc29",
-      "\ud801\udc0e\ud801\udc2f\ud801\udc4c\ud801\udc46\ud801\udc3c\ud801\udc29",
-      "\ud801\udc1b\ud801\udc32\ud801\udc49\ud801\udc46\ud801\udc3c\ud801\udc29",
-      "\ud801\udc19\ud801\udc49\ud801\udc34\ud801\udc3c\ud801\udc29",
-      "\ud801\udc1d\ud801\udc30\ud801\udc3b\ud801\udc32\ud801\udc49\ud801\udc3c\ud801\udc29"
-    ],
-    "MONTH": [
-      "\ud801\udc16\ud801\udc30\ud801\udc4c\ud801\udc37\ud801\udc2d\ud801\udc2f\ud801\udc49\ud801\udc28",
-      "\ud801\udc19\ud801\udc2f\ud801\udc3a\ud801\udc49\ud801\udc2d\ud801\udc2f\ud801\udc49\ud801\udc28",
-      "\ud801\udc23\ud801\udc2a\ud801\udc49\ud801\udc3d",
-      "\ud801\udc01\ud801\udc39\ud801\udc49\ud801\udc2e\ud801\udc4a",
-      "\ud801\udc23\ud801\udc29",
-      "\ud801\udc16\ud801\udc2d\ud801\udc4c",
-      "\ud801\udc16\ud801\udc2d\ud801\udc4a\ud801\udc34",
-      "\ud801\udc02\ud801\udc40\ud801\udc32\ud801\udc45\ud801\udc3b",
-      "\ud801\udc1d\ud801\udc2f\ud801\udc39\ud801\udc3b\ud801\udc2f\ud801\udc4b\ud801\udc3a\ud801\udc32\ud801\udc49",
-      "\ud801\udc09\ud801\udc3f\ud801\udc3b\ud801\udc2c\ud801\udc3a\ud801\udc32\ud801\udc49",
-      "\ud801\udc24\ud801\udc2c\ud801\udc42\ud801\udc2f\ud801\udc4b\ud801\udc3a\ud801\udc32\ud801\udc49",
-      "\ud801\udc14\ud801\udc28\ud801\udc45\ud801\udc2f\ud801\udc4b\ud801\udc3a\ud801\udc32\ud801\udc49"
-    ],
-    "SHORTDAY": [
-      "\ud801\udc1d\ud801\udc32\ud801\udc4c",
-      "\ud801\udc23\ud801\udc32\ud801\udc4c",
-      "\ud801\udc13\ud801\udc2d\ud801\udc46",
-      "\ud801\udc0e\ud801\udc2f\ud801\udc4c",
-      "\ud801\udc1b\ud801\udc32\ud801\udc49",
-      "\ud801\udc19\ud801\udc49\ud801\udc34",
-      "\ud801\udc1d\ud801\udc30\ud801\udc3b"
-    ],
-    "SHORTMONTH": [
-      "\ud801\udc16\ud801\udc30\ud801\udc4c",
-      "\ud801\udc19\ud801\udc2f\ud801\udc3a",
-      "\ud801\udc23\ud801\udc2a\ud801\udc49",
-      "\ud801\udc01\ud801\udc39\ud801\udc49",
-      "\ud801\udc23\ud801\udc29",
-      "\ud801\udc16\ud801\udc2d\ud801\udc4c",
-      "\ud801\udc16\ud801\udc2d\ud801\udc4a",
-      "\ud801\udc02\ud801\udc40",
-      "\ud801\udc1d\ud801\udc2f\ud801\udc39",
-      "\ud801\udc09\ud801\udc3f\ud801\udc3b",
-      "\ud801\udc24\ud801\udc2c\ud801\udc42",
-      "\ud801\udc14\ud801\udc28\ud801\udc45"
-    ],
-    "fullDate": "EEEE, MMMM d, y",
-    "longDate": "MMMM d, y",
-    "medium": "MMM d, y h:mm:ss a",
-    "mediumDate": "MMM d, y",
-    "mediumTime": "h:mm:ss a",
-    "short": "M/d/yy h:mm a",
-    "shortDate": "M/d/yy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "$",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "en-dsrt",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-fm.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-fm.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-fm.js
deleted file mode 100644
index 525604f..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-fm.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "Sunday",
-      "Monday",
-      "Tuesday",
-      "Wednesday",
-      "Thursday",
-      "Friday",
-      "Saturday"
-    ],
-    "MONTH": [
-      "January",
-      "February",
-      "March",
-      "April",
-      "May",
-      "June",
-      "July",
-      "August",
-      "September",
-      "October",
-      "November",
-      "December"
-    ],
-    "SHORTDAY": [
-      "Sun",
-      "Mon",
-      "Tue",
-      "Wed",
-      "Thu",
-      "Fri",
-      "Sat"
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Feb",
-      "Mar",
-      "Apr",
-      "May",
-      "Jun",
-      "Jul",
-      "Aug",
-      "Sep",
-      "Oct",
-      "Nov",
-      "Dec"
-    ],
-    "fullDate": "EEEE, MMMM d, y",
-    "longDate": "MMMM d, y",
-    "medium": "MMM d, y h:mm:ss a",
-    "mediumDate": "MMM d, y",
-    "mediumTime": "h:mm:ss a",
-    "short": "M/d/yy h:mm a",
-    "shortDate": "M/d/yy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "$",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "en-fm",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-gb.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-gb.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-gb.js
deleted file mode 100644
index 4a0f59a..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-gb.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "Sunday",
-      "Monday",
-      "Tuesday",
-      "Wednesday",
-      "Thursday",
-      "Friday",
-      "Saturday"
-    ],
-    "MONTH": [
-      "January",
-      "February",
-      "March",
-      "April",
-      "May",
-      "June",
-      "July",
-      "August",
-      "September",
-      "October",
-      "November",
-      "December"
-    ],
-    "SHORTDAY": [
-      "Sun",
-      "Mon",
-      "Tue",
-      "Wed",
-      "Thu",
-      "Fri",
-      "Sat"
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Feb",
-      "Mar",
-      "Apr",
-      "May",
-      "Jun",
-      "Jul",
-      "Aug",
-      "Sep",
-      "Oct",
-      "Nov",
-      "Dec"
-    ],
-    "fullDate": "EEEE, d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y HH:mm:ss",
-    "mediumDate": "d MMM y",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yyyy HH:mm",
-    "shortDate": "dd/MM/yyyy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u00a3",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "\u00a4-",
-        "negSuf": "",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "en-gb",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-gu.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-gu.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-gu.js
deleted file mode 100644
index 994b571..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-gu.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "Sunday",
-      "Monday",
-      "Tuesday",
-      "Wednesday",
-      "Thursday",
-      "Friday",
-      "Saturday"
-    ],
-    "MONTH": [
-      "January",
-      "February",
-      "March",
-      "April",
-      "May",
-      "June",
-      "July",
-      "August",
-      "September",
-      "October",
-      "November",
-      "December"
-    ],
-    "SHORTDAY": [
-      "Sun",
-      "Mon",
-      "Tue",
-      "Wed",
-      "Thu",
-      "Fri",
-      "Sat"
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Feb",
-      "Mar",
-      "Apr",
-      "May",
-      "Jun",
-      "Jul",
-      "Aug",
-      "Sep",
-      "Oct",
-      "Nov",
-      "Dec"
-    ],
-    "fullDate": "EEEE, MMMM d, y",
-    "longDate": "MMMM d, y",
-    "medium": "MMM d, y h:mm:ss a",
-    "mediumDate": "MMM d, y",
-    "mediumTime": "h:mm:ss a",
-    "short": "M/d/yy h:mm a",
-    "shortDate": "M/d/yy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "$",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "en-gu",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-gy.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-gy.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-gy.js
deleted file mode 100644
index 0c52405..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-gy.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "Sunday",
-      "Monday",
-      "Tuesday",
-      "Wednesday",
-      "Thursday",
-      "Friday",
-      "Saturday"
-    ],
-    "MONTH": [
-      "January",
-      "February",
-      "March",
-      "April",
-      "May",
-      "June",
-      "July",
-      "August",
-      "September",
-      "October",
-      "November",
-      "December"
-    ],
-    "SHORTDAY": [
-      "Sun",
-      "Mon",
-      "Tue",
-      "Wed",
-      "Thu",
-      "Fri",
-      "Sat"
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Feb",
-      "Mar",
-      "Apr",
-      "May",
-      "Jun",
-      "Jul",
-      "Aug",
-      "Sep",
-      "Oct",
-      "Nov",
-      "Dec"
-    ],
-    "fullDate": "EEEE, MMMM d, y",
-    "longDate": "MMMM d, y",
-    "medium": "MMM d, y h:mm:ss a",
-    "mediumDate": "MMM d, y",
-    "mediumTime": "h:mm:ss a",
-    "short": "M/d/yy h:mm a",
-    "shortDate": "M/d/yy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "$",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "en-gy",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-hk.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-hk.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-hk.js
deleted file mode 100644
index 261c490..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-hk.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "Sunday",
-      "Monday",
-      "Tuesday",
-      "Wednesday",
-      "Thursday",
-      "Friday",
-      "Saturday"
-    ],
-    "MONTH": [
-      "January",
-      "February",
-      "March",
-      "April",
-      "May",
-      "June",
-      "July",
-      "August",
-      "September",
-      "October",
-      "November",
-      "December"
-    ],
-    "SHORTDAY": [
-      "Sun",
-      "Mon",
-      "Tue",
-      "Wed",
-      "Thu",
-      "Fri",
-      "Sat"
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Feb",
-      "Mar",
-      "Apr",
-      "May",
-      "Jun",
-      "Jul",
-      "Aug",
-      "Sep",
-      "Oct",
-      "Nov",
-      "Dec"
-    ],
-    "fullDate": "EEEE, d MMMM, y",
-    "longDate": "d MMMM, y",
-    "medium": "d MMM, y h:mm:ss a",
-    "mediumDate": "d MMM, y",
-    "mediumTime": "h:mm:ss a",
-    "short": "d/M/yy h:mm a",
-    "shortDate": "d/M/yy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "$",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "en-hk",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-ie.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-ie.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-ie.js
deleted file mode 100644
index a7d7b75..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-ie.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "a.m.",
-      "p.m."
-    ],
-    "DAY": [
-      "Sunday",
-      "Monday",
-      "Tuesday",
-      "Wednesday",
-      "Thursday",
-      "Friday",
-      "Saturday"
-    ],
-    "MONTH": [
-      "January",
-      "February",
-      "March",
-      "April",
-      "May",
-      "June",
-      "July",
-      "August",
-      "September",
-      "October",
-      "November",
-      "December"
-    ],
-    "SHORTDAY": [
-      "Sun",
-      "Mon",
-      "Tue",
-      "Wed",
-      "Thu",
-      "Fri",
-      "Sat"
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Feb",
-      "Mar",
-      "Apr",
-      "May",
-      "Jun",
-      "Jul",
-      "Aug",
-      "Sep",
-      "Oct",
-      "Nov",
-      "Dec"
-    ],
-    "fullDate": "EEEE d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y h:mm:ss a",
-    "mediumDate": "d MMM y",
-    "mediumTime": "h:mm:ss a",
-    "short": "dd/MM/yyyy h:mm a",
-    "shortDate": "dd/MM/yyyy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "en-ie",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-in.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-in.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-in.js
deleted file mode 100644
index ad05889..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-in.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "Sunday",
-      "Monday",
-      "Tuesday",
-      "Wednesday",
-      "Thursday",
-      "Friday",
-      "Saturday"
-    ],
-    "MONTH": [
-      "January",
-      "February",
-      "March",
-      "April",
-      "May",
-      "June",
-      "July",
-      "August",
-      "September",
-      "October",
-      "November",
-      "December"
-    ],
-    "SHORTDAY": [
-      "Sun",
-      "Mon",
-      "Tue",
-      "Wed",
-      "Thu",
-      "Fri",
-      "Sat"
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Feb",
-      "Mar",
-      "Apr",
-      "May",
-      "Jun",
-      "Jul",
-      "Aug",
-      "Sep",
-      "Oct",
-      "Nov",
-      "Dec"
-    ],
-    "fullDate": "EEEE d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "dd-MMM-y h:mm:ss a",
-    "mediumDate": "dd-MMM-y",
-    "mediumTime": "h:mm:ss a",
-    "short": "dd/MM/yy h:mm a",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20b9",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 2,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 2,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "\u00a4\u00a0-",
-        "negSuf": "",
-        "posPre": "\u00a4\u00a0",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "en-in",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-iso.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-iso.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-iso.js
deleted file mode 100644
index 158f8de..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-iso.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "Sunday",
-      "Monday",
-      "Tuesday",
-      "Wednesday",
-      "Thursday",
-      "Friday",
-      "Saturday"
-    ],
-    "MONTH": [
-      "January",
-      "February",
-      "March",
-      "April",
-      "May",
-      "June",
-      "July",
-      "August",
-      "September",
-      "October",
-      "November",
-      "December"
-    ],
-    "SHORTDAY": [
-      "Sun",
-      "Mon",
-      "Tue",
-      "Wed",
-      "Thu",
-      "Fri",
-      "Sat"
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Feb",
-      "Mar",
-      "Apr",
-      "May",
-      "Jun",
-      "Jul",
-      "Aug",
-      "Sep",
-      "Oct",
-      "Nov",
-      "Dec"
-    ],
-    "fullDate": "EEEE, y MMMM dd",
-    "longDate": "y MMMM d",
-    "medium": "y MMM d HH:mm:ss",
-    "mediumDate": "y MMM d",
-    "mediumTime": "HH:mm:ss",
-    "short": "yyyy-MM-dd HH:mm",
-    "shortDate": "yyyy-MM-dd",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "$",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "en-iso",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-jm.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-jm.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-jm.js
deleted file mode 100644
index 7aebeab..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-jm.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "Sunday",
-      "Monday",
-      "Tuesday",
-      "Wednesday",
-      "Thursday",
-      "Friday",
-      "Saturday"
-    ],
-    "MONTH": [
-      "January",
-      "February",
-      "March",
-      "April",
-      "May",
-      "June",
-      "July",
-      "August",
-      "September",
-      "October",
-      "November",
-      "December"
-    ],
-    "SHORTDAY": [
-      "Sun",
-      "Mon",
-      "Tue",
-      "Wed",
-      "Thu",
-      "Fri",
-      "Sat"
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Feb",
-      "Mar",
-      "Apr",
-      "May",
-      "Jun",
-      "Jul",
-      "Aug",
-      "Sep",
-      "Oct",
-      "Nov",
-      "Dec"
-    ],
-    "fullDate": "EEEE, MMMM d, y",
-    "longDate": "MMMM d, y",
-    "medium": "MMM d, y h:mm:ss a",
-    "mediumDate": "MMM d, y",
-    "mediumTime": "h:mm:ss a",
-    "short": "d/M/yy h:mm a",
-    "shortDate": "d/M/yy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "$",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "en-jm",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-mh.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-mh.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-mh.js
deleted file mode 100644
index 0854443..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-mh.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "Sunday",
-      "Monday",
-      "Tuesday",
-      "Wednesday",
-      "Thursday",
-      "Friday",
-      "Saturday"
-    ],
-    "MONTH": [
-      "January",
-      "February",
-      "March",
-      "April",
-      "May",
-      "June",
-      "July",
-      "August",
-      "September",
-      "October",
-      "November",
-      "December"
-    ],
-    "SHORTDAY": [
-      "Sun",
-      "Mon",
-      "Tue",
-      "Wed",
-      "Thu",
-      "Fri",
-      "Sat"
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Feb",
-      "Mar",
-      "Apr",
-      "May",
-      "Jun",
-      "Jul",
-      "Aug",
-      "Sep",
-      "Oct",
-      "Nov",
-      "Dec"
-    ],
-    "fullDate": "EEEE, MMMM d, y",
-    "longDate": "MMMM d, y",
-    "medium": "MMM d, y h:mm:ss a",
-    "mediumDate": "MMM d, y",
-    "mediumTime": "h:mm:ss a",
-    "short": "M/d/yy h:mm a",
-    "shortDate": "M/d/yy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "$",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "en-mh",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-mp.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-mp.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-mp.js
deleted file mode 100644
index c05f5c9..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-mp.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "Sunday",
-      "Monday",
-      "Tuesday",
-      "Wednesday",
-      "Thursday",
-      "Friday",
-      "Saturday"
-    ],
-    "MONTH": [
-      "January",
-      "February",
-      "March",
-      "April",
-      "May",
-      "June",
-      "July",
-      "August",
-      "September",
-      "October",
-      "November",
-      "December"
-    ],
-    "SHORTDAY": [
-      "Sun",
-      "Mon",
-      "Tue",
-      "Wed",
-      "Thu",
-      "Fri",
-      "Sat"
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Feb",
-      "Mar",
-      "Apr",
-      "May",
-      "Jun",
-      "Jul",
-      "Aug",
-      "Sep",
-      "Oct",
-      "Nov",
-      "Dec"
-    ],
-    "fullDate": "EEEE, MMMM d, y",
-    "longDate": "MMMM d, y",
-    "medium": "MMM d, y h:mm:ss a",
-    "mediumDate": "MMM d, y",
-    "mediumTime": "h:mm:ss a",
-    "short": "M/d/yy h:mm a",
-    "shortDate": "M/d/yy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "$",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "en-mp",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-mt.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-mt.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-mt.js
deleted file mode 100644
index 822d0ac..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-mt.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "Sunday",
-      "Monday",
-      "Tuesday",
-      "Wednesday",
-      "Thursday",
-      "Friday",
-      "Saturday"
-    ],
-    "MONTH": [
-      "January",
-      "February",
-      "March",
-      "April",
-      "May",
-      "June",
-      "July",
-      "August",
-      "September",
-      "October",
-      "November",
-      "December"
-    ],
-    "SHORTDAY": [
-      "Sun",
-      "Mon",
-      "Tue",
-      "Wed",
-      "Thu",
-      "Fri",
-      "Sat"
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Feb",
-      "Mar",
-      "Apr",
-      "May",
-      "Jun",
-      "Jul",
-      "Aug",
-      "Sep",
-      "Oct",
-      "Nov",
-      "Dec"
-    ],
-    "fullDate": "EEEE, d MMMM y",
-    "longDate": "dd MMMM y",
-    "medium": "dd MMM y h:mm:ss a",
-    "mediumDate": "dd MMM y",
-    "mediumTime": "h:mm:ss a",
-    "short": "dd/MM/yyyy h:mm a",
-    "shortDate": "dd/MM/yyyy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "$",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "en-mt",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-mu.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-mu.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-mu.js
deleted file mode 100644
index 13629d6..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-mu.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "Sunday",
-      "Monday",
-      "Tuesday",
-      "Wednesday",
-      "Thursday",
-      "Friday",
-      "Saturday"
-    ],
-    "MONTH": [
-      "January",
-      "February",
-      "March",
-      "April",
-      "May",
-      "June",
-      "July",
-      "August",
-      "September",
-      "October",
-      "November",
-      "December"
-    ],
-    "SHORTDAY": [
-      "Sun",
-      "Mon",
-      "Tue",
-      "Wed",
-      "Thu",
-      "Fri",
-      "Sat"
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Feb",
-      "Mar",
-      "Apr",
-      "May",
-      "Jun",
-      "Jul",
-      "Aug",
-      "Sep",
-      "Oct",
-      "Nov",
-      "Dec"
-    ],
-    "fullDate": "EEEE, MMMM d, y",
-    "longDate": "MMMM d, y",
-    "medium": "MMM d, y h:mm:ss a",
-    "mediumDate": "MMM d, y",
-    "mediumTime": "h:mm:ss a",
-    "short": "M/d/yy h:mm a",
-    "shortDate": "M/d/yy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "$",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "en-mu",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-na.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-na.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-na.js
deleted file mode 100644
index 779fb02..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-na.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "Sunday",
-      "Monday",
-      "Tuesday",
-      "Wednesday",
-      "Thursday",
-      "Friday",
-      "Saturday"
-    ],
-    "MONTH": [
-      "January",
-      "February",
-      "March",
-      "April",
-      "May",
-      "June",
-      "July",
-      "August",
-      "September",
-      "October",
-      "November",
-      "December"
-    ],
-    "SHORTDAY": [
-      "Sun",
-      "Mon",
-      "Tue",
-      "Wed",
-      "Thu",
-      "Fri",
-      "Sat"
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Feb",
-      "Mar",
-      "Apr",
-      "May",
-      "Jun",
-      "Jul",
-      "Aug",
-      "Sep",
-      "Oct",
-      "Nov",
-      "Dec"
-    ],
-    "fullDate": "EEEE, MMMM d, y",
-    "longDate": "MMMM d, y",
-    "medium": "MMM d, y h:mm:ss a",
-    "mediumDate": "MMM d, y",
-    "mediumTime": "h:mm:ss a",
-    "short": "M/d/yy h:mm a",
-    "shortDate": "M/d/yy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "$",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "en-na",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-nz.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-nz.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-nz.js
deleted file mode 100644
index 8e01073..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-nz.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "Sunday",
-      "Monday",
-      "Tuesday",
-      "Wednesday",
-      "Thursday",
-      "Friday",
-      "Saturday"
-    ],
-    "MONTH": [
-      "January",
-      "February",
-      "March",
-      "April",
-      "May",
-      "June",
-      "July",
-      "August",
-      "September",
-      "October",
-      "November",
-      "December"
-    ],
-    "SHORTDAY": [
-      "Sun",
-      "Mon",
-      "Tue",
-      "Wed",
-      "Thu",
-      "Fri",
-      "Sat"
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Feb",
-      "Mar",
-      "Apr",
-      "May",
-      "Jun",
-      "Jul",
-      "Aug",
-      "Sep",
-      "Oct",
-      "Nov",
-      "Dec"
-    ],
-    "fullDate": "EEEE, d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d/MM/yyyy h:mm:ss a",
-    "mediumDate": "d/MM/yyyy",
-    "mediumTime": "h:mm:ss a",
-    "short": "d/MM/yy h:mm a",
-    "shortDate": "d/MM/yy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "$",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "en-nz",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-ph.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-ph.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-ph.js
deleted file mode 100644
index 647b9e1..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-ph.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "Sunday",
-      "Monday",
-      "Tuesday",
-      "Wednesday",
-      "Thursday",
-      "Friday",
-      "Saturday"
-    ],
-    "MONTH": [
-      "January",
-      "February",
-      "March",
-      "April",
-      "May",
-      "June",
-      "July",
-      "August",
-      "September",
-      "October",
-      "November",
-      "December"
-    ],
-    "SHORTDAY": [
-      "Sun",
-      "Mon",
-      "Tue",
-      "Wed",
-      "Thu",
-      "Fri",
-      "Sat"
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Feb",
-      "Mar",
-      "Apr",
-      "May",
-      "Jun",
-      "Jul",
-      "Aug",
-      "Sep",
-      "Oct",
-      "Nov",
-      "Dec"
-    ],
-    "fullDate": "EEEE, MMMM d, y",
-    "longDate": "MMMM d, y",
-    "medium": "MMM d, y h:mm:ss a",
-    "mediumDate": "MMM d, y",
-    "mediumTime": "h:mm:ss a",
-    "short": "M/d/yy h:mm a",
-    "shortDate": "M/d/yy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "$",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "en-ph",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-pk.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-pk.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-pk.js
deleted file mode 100644
index bc58648..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-pk.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "Sunday",
-      "Monday",
-      "Tuesday",
-      "Wednesday",
-      "Thursday",
-      "Friday",
-      "Saturday"
-    ],
-    "MONTH": [
-      "January",
-      "February",
-      "March",
-      "April",
-      "May",
-      "June",
-      "July",
-      "August",
-      "September",
-      "October",
-      "November",
-      "December"
-    ],
-    "SHORTDAY": [
-      "Sun",
-      "Mon",
-      "Tue",
-      "Wed",
-      "Thu",
-      "Fri",
-      "Sat"
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Feb",
-      "Mar",
-      "Apr",
-      "May",
-      "Jun",
-      "Jul",
-      "Aug",
-      "Sep",
-      "Oct",
-      "Nov",
-      "Dec"
-    ],
-    "fullDate": "EEEE d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "dd-MMM-y h:mm:ss a",
-    "mediumDate": "dd-MMM-y",
-    "mediumTime": "h:mm:ss a",
-    "short": "dd/MM/yy h:mm a",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "$",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "en-pk",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-pr.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-pr.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-pr.js
deleted file mode 100644
index 6d66c08..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-pr.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "Sunday",
-      "Monday",
-      "Tuesday",
-      "Wednesday",
-      "Thursday",
-      "Friday",
-      "Saturday"
-    ],
-    "MONTH": [
-      "January",
-      "February",
-      "March",
-      "April",
-      "May",
-      "June",
-      "July",
-      "August",
-      "September",
-      "October",
-      "November",
-      "December"
-    ],
-    "SHORTDAY": [
-      "Sun",
-      "Mon",
-      "Tue",
-      "Wed",
-      "Thu",
-      "Fri",
-      "Sat"
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Feb",
-      "Mar",
-      "Apr",
-      "May",
-      "Jun",
-      "Jul",
-      "Aug",
-      "Sep",
-      "Oct",
-      "Nov",
-      "Dec"
-    ],
-    "fullDate": "EEEE, MMMM d, y",
-    "longDate": "MMMM d, y",
-    "medium": "MMM d, y h:mm:ss a",
-    "mediumDate": "MMM d, y",
-    "mediumTime": "h:mm:ss a",
-    "short": "M/d/yy h:mm a",
-    "shortDate": "M/d/yy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "$",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "en-pr",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-pw.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-pw.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-pw.js
deleted file mode 100644
index e280faa..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-pw.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "Sunday",
-      "Monday",
-      "Tuesday",
-      "Wednesday",
-      "Thursday",
-      "Friday",
-      "Saturday"
-    ],
-    "MONTH": [
-      "January",
-      "February",
-      "March",
-      "April",
-      "May",
-      "June",
-      "July",
-      "August",
-      "September",
-      "October",
-      "November",
-      "December"
-    ],
-    "SHORTDAY": [
-      "Sun",
-      "Mon",
-      "Tue",
-      "Wed",
-      "Thu",
-      "Fri",
-      "Sat"
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Feb",
-      "Mar",
-      "Apr",
-      "May",
-      "Jun",
-      "Jul",
-      "Aug",
-      "Sep",
-      "Oct",
-      "Nov",
-      "Dec"
-    ],
-    "fullDate": "EEEE, MMMM d, y",
-    "longDate": "MMMM d, y",
-    "medium": "MMM d, y h:mm:ss a",
-    "mediumDate": "MMM d, y",
-    "mediumTime": "h:mm:ss a",
-    "short": "M/d/yy h:mm a",
-    "shortDate": "M/d/yy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "$",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "en-pw",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-sg.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-sg.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-sg.js
deleted file mode 100644
index ccffcd8..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-sg.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "Sunday",
-      "Monday",
-      "Tuesday",
-      "Wednesday",
-      "Thursday",
-      "Friday",
-      "Saturday"
-    ],
-    "MONTH": [
-      "January",
-      "February",
-      "March",
-      "April",
-      "May",
-      "June",
-      "July",
-      "August",
-      "September",
-      "October",
-      "November",
-      "December"
-    ],
-    "SHORTDAY": [
-      "Sun",
-      "Mon",
-      "Tue",
-      "Wed",
-      "Thu",
-      "Fri",
-      "Sat"
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Feb",
-      "Mar",
-      "Apr",
-      "May",
-      "Jun",
-      "Jul",
-      "Aug",
-      "Sep",
-      "Oct",
-      "Nov",
-      "Dec"
-    ],
-    "fullDate": "EEEE, d MMMM, y",
-    "longDate": "d MMMM, y",
-    "medium": "d MMM, y h:mm:ss a",
-    "mediumDate": "d MMM, y",
-    "mediumTime": "h:mm:ss a",
-    "short": "d/M/yy h:mm a",
-    "shortDate": "d/M/yy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "$",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "en-sg",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-tc.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-tc.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-tc.js
deleted file mode 100644
index f9fdf66..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-tc.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "Sunday",
-      "Monday",
-      "Tuesday",
-      "Wednesday",
-      "Thursday",
-      "Friday",
-      "Saturday"
-    ],
-    "MONTH": [
-      "January",
-      "February",
-      "March",
-      "April",
-      "May",
-      "June",
-      "July",
-      "August",
-      "September",
-      "October",
-      "November",
-      "December"
-    ],
-    "SHORTDAY": [
-      "Sun",
-      "Mon",
-      "Tue",
-      "Wed",
-      "Thu",
-      "Fri",
-      "Sat"
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Feb",
-      "Mar",
-      "Apr",
-      "May",
-      "Jun",
-      "Jul",
-      "Aug",
-      "Sep",
-      "Oct",
-      "Nov",
-      "Dec"
-    ],
-    "fullDate": "EEEE, MMMM d, y",
-    "longDate": "MMMM d, y",
-    "medium": "MMM d, y h:mm:ss a",
-    "mediumDate": "MMM d, y",
-    "mediumTime": "h:mm:ss a",
-    "short": "M/d/yy h:mm a",
-    "shortDate": "M/d/yy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "$",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "en-tc",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-tt.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-tt.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-tt.js
deleted file mode 100644
index 32effe2..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-tt.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "Sunday",
-      "Monday",
-      "Tuesday",
-      "Wednesday",
-      "Thursday",
-      "Friday",
-      "Saturday"
-    ],
-    "MONTH": [
-      "January",
-      "February",
-      "March",
-      "April",
-      "May",
-      "June",
-      "July",
-      "August",
-      "September",
-      "October",
-      "November",
-      "December"
-    ],
-    "SHORTDAY": [
-      "Sun",
-      "Mon",
-      "Tue",
-      "Wed",
-      "Thu",
-      "Fri",
-      "Sat"
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Feb",
-      "Mar",
-      "Apr",
-      "May",
-      "Jun",
-      "Jul",
-      "Aug",
-      "Sep",
-      "Oct",
-      "Nov",
-      "Dec"
-    ],
-    "fullDate": "EEEE, MMMM d, y",
-    "longDate": "MMMM d, y",
-    "medium": "MMM d, y h:mm:ss a",
-    "mediumDate": "MMM d, y",
-    "mediumTime": "h:mm:ss a",
-    "short": "M/d/yy h:mm a",
-    "shortDate": "M/d/yy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "$",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "en-tt",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-um.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-um.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-um.js
deleted file mode 100644
index aaba7a3..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-um.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "Sunday",
-      "Monday",
-      "Tuesday",
-      "Wednesday",
-      "Thursday",
-      "Friday",
-      "Saturday"
-    ],
-    "MONTH": [
-      "January",
-      "February",
-      "March",
-      "April",
-      "May",
-      "June",
-      "July",
-      "August",
-      "September",
-      "October",
-      "November",
-      "December"
-    ],
-    "SHORTDAY": [
-      "Sun",
-      "Mon",
-      "Tue",
-      "Wed",
-      "Thu",
-      "Fri",
-      "Sat"
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Feb",
-      "Mar",
-      "Apr",
-      "May",
-      "Jun",
-      "Jul",
-      "Aug",
-      "Sep",
-      "Oct",
-      "Nov",
-      "Dec"
-    ],
-    "fullDate": "EEEE, MMMM d, y",
-    "longDate": "MMMM d, y",
-    "medium": "MMM d, y h:mm:ss a",
-    "mediumDate": "MMM d, y",
-    "mediumTime": "h:mm:ss a",
-    "short": "M/d/yy h:mm a",
-    "shortDate": "M/d/yy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "$",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "en-um",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-us.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-us.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-us.js
deleted file mode 100644
index 953cd10..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-us.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "Sunday",
-      "Monday",
-      "Tuesday",
-      "Wednesday",
-      "Thursday",
-      "Friday",
-      "Saturday"
-    ],
-    "MONTH": [
-      "January",
-      "February",
-      "March",
-      "April",
-      "May",
-      "June",
-      "July",
-      "August",
-      "September",
-      "October",
-      "November",
-      "December"
-    ],
-    "SHORTDAY": [
-      "Sun",
-      "Mon",
-      "Tue",
-      "Wed",
-      "Thu",
-      "Fri",
-      "Sat"
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Feb",
-      "Mar",
-      "Apr",
-      "May",
-      "Jun",
-      "Jul",
-      "Aug",
-      "Sep",
-      "Oct",
-      "Nov",
-      "Dec"
-    ],
-    "fullDate": "EEEE, MMMM d, y",
-    "longDate": "MMMM d, y",
-    "medium": "MMM d, y h:mm:ss a",
-    "mediumDate": "MMM d, y",
-    "mediumTime": "h:mm:ss a",
-    "short": "M/d/yy h:mm a",
-    "shortDate": "M/d/yy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "$",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "en-us",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-vg.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-vg.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-vg.js
deleted file mode 100644
index 7f05c15..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-vg.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "Sunday",
-      "Monday",
-      "Tuesday",
-      "Wednesday",
-      "Thursday",
-      "Friday",
-      "Saturday"
-    ],
-    "MONTH": [
-      "January",
-      "February",
-      "March",
-      "April",
-      "May",
-      "June",
-      "July",
-      "August",
-      "September",
-      "October",
-      "November",
-      "December"
-    ],
-    "SHORTDAY": [
-      "Sun",
-      "Mon",
-      "Tue",
-      "Wed",
-      "Thu",
-      "Fri",
-      "Sat"
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Feb",
-      "Mar",
-      "Apr",
-      "May",
-      "Jun",
-      "Jul",
-      "Aug",
-      "Sep",
-      "Oct",
-      "Nov",
-      "Dec"
-    ],
-    "fullDate": "EEEE, MMMM d, y",
-    "longDate": "MMMM d, y",
-    "medium": "MMM d, y h:mm:ss a",
-    "mediumDate": "MMM d, y",
-    "mediumTime": "h:mm:ss a",
-    "short": "M/d/yy h:mm a",
-    "shortDate": "M/d/yy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "$",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "en-vg",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file


[47/71] [abbrv] brooklyn-ui git commit: in js gui, show template yaml also for blueprints with yaml in a service

Posted by he...@apache.org.
in js gui, show template yaml also for blueprints with yaml in a service


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/commit/2a8f40cd
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/tree/2a8f40cd
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/diff/2a8f40cd

Branch: refs/heads/0.7.0-incubating
Commit: 2a8f40cd43a9dc01f54c243e289508bf33672179
Parents: dd37fee
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Wed Apr 8 10:10:09 2015 +0100
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Wed Apr 8 10:10:47 2015 +0100

----------------------------------------------------------------------
 .../assets/js/view/application-add-wizard.js       | 17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a8f40cd/usage/jsgui/src/main/webapp/assets/js/view/application-add-wizard.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/js/view/application-add-wizard.js b/usage/jsgui/src/main/webapp/assets/js/view/application-add-wizard.js
index 5c8ffc8..e9427dd 100644
--- a/usage/jsgui/src/main/webapp/assets/js/view/application-add-wizard.js
+++ b/usage/jsgui/src/main/webapp/assets/js/view/application-add-wizard.js
@@ -257,8 +257,23 @@ define([
                     if (yaml) {
                         try {
                             yaml = JsYaml.safeLoad(yaml);
-                            yaml = (yaml.location || yaml.locations ? true : false);
+                            hasLocation = yaml.location || yaml.locations;
+                            if (!hasLocation) {
+                              // look for locations defined in locations
+                              svcs = yaml.services;
+                              if (svcs) {
+                                for (svcI in svcs) {
+                                  if (svcs[svcI].location || svcs[svcI].locations) {
+                                    hasLocation = true;
+                                    break;
+                                  }
+                                }
+                              }
+                            }
+                            yaml = (hasLocation ? true : false);
                         } catch (e) {
+                            log("Warning: could not parse yaml template")
+                            log(yaml);
                             yaml = false;
                         }
                     }


[54/71] [abbrv] brooklyn-ui git commit: This closes #602

Posted by he...@apache.org.
This closes #602


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/commit/6741a42d
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/tree/6741a42d
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/diff/6741a42d

Branch: refs/heads/0.7.0-incubating
Commit: 6741a42d48a798c41c6225481320a788d4f9d016
Parents: 9888433 024e606
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Tue Apr 21 21:48:35 2015 +0100
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Tue Apr 21 21:48:35 2015 +0100

----------------------------------------------------------------------
 usage/cli/src/main/license/DISCLAIMER   |   8 +
 usage/cli/src/main/license/NOTICE       |   5 +
 usage/cli/src/test/license/LICENSE      | 175 ++++++++++++++++
 usage/dist/src/main/license/DISCLAIMER  |   8 +
 usage/jsgui/pom.xml                     |  33 +++
 usage/jsgui/src/main/license/DISCLAIMER |   8 +
 usage/jsgui/src/main/license/LICENSE    | 292 +++++++++++++++++++++++++++
 usage/jsgui/src/main/license/NOTICE     |   5 +
 usage/jsgui/src/main/webapp/LICENSE     | 176 ----------------
 usage/jsgui/src/test/license/DISCLAIMER |   8 +
 usage/jsgui/src/test/license/LICENSE    | 175 ++++++++++++++++
 usage/jsgui/src/test/license/NOTICE     |   5 +
 12 files changed, 722 insertions(+), 176 deletions(-)
----------------------------------------------------------------------



[10/71] [abbrv] brooklyn-ui git commit: Move mobile app to sandbox

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_it-it.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_it-it.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_it-it.js
deleted file mode 100644
index 82766cc..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_it-it.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "m.",
-      "p."
-    ],
-    "DAY": [
-      "domenica",
-      "luned\u00ec",
-      "marted\u00ec",
-      "mercoled\u00ec",
-      "gioved\u00ec",
-      "venerd\u00ec",
-      "sabato"
-    ],
-    "MONTH": [
-      "gennaio",
-      "febbraio",
-      "marzo",
-      "aprile",
-      "maggio",
-      "giugno",
-      "luglio",
-      "agosto",
-      "settembre",
-      "ottobre",
-      "novembre",
-      "dicembre"
-    ],
-    "SHORTDAY": [
-      "dom",
-      "lun",
-      "mar",
-      "mer",
-      "gio",
-      "ven",
-      "sab"
-    ],
-    "SHORTMONTH": [
-      "gen",
-      "feb",
-      "mar",
-      "apr",
-      "mag",
-      "giu",
-      "lug",
-      "ago",
-      "set",
-      "ott",
-      "nov",
-      "dic"
-    ],
-    "fullDate": "EEEE d MMMM y",
-    "longDate": "dd MMMM y",
-    "medium": "dd/MMM/y HH:mm:ss",
-    "mediumDate": "dd/MMM/y",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "\u00a4\u00a0-",
-        "negSuf": "",
-        "posPre": "\u00a4\u00a0",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "it-it",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_it-sm.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_it-sm.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_it-sm.js
deleted file mode 100644
index 6a7041d..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_it-sm.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "m.",
-      "p."
-    ],
-    "DAY": [
-      "domenica",
-      "luned\u00ec",
-      "marted\u00ec",
-      "mercoled\u00ec",
-      "gioved\u00ec",
-      "venerd\u00ec",
-      "sabato"
-    ],
-    "MONTH": [
-      "gennaio",
-      "febbraio",
-      "marzo",
-      "aprile",
-      "maggio",
-      "giugno",
-      "luglio",
-      "agosto",
-      "settembre",
-      "ottobre",
-      "novembre",
-      "dicembre"
-    ],
-    "SHORTDAY": [
-      "dom",
-      "lun",
-      "mar",
-      "mer",
-      "gio",
-      "ven",
-      "sab"
-    ],
-    "SHORTMONTH": [
-      "gen",
-      "feb",
-      "mar",
-      "apr",
-      "mag",
-      "giu",
-      "lug",
-      "ago",
-      "set",
-      "ott",
-      "nov",
-      "dic"
-    ],
-    "fullDate": "EEEE d MMMM y",
-    "longDate": "dd MMMM y",
-    "medium": "dd/MMM/y HH:mm:ss",
-    "mediumDate": "dd/MMM/y",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "\u00a4\u00a0-",
-        "negSuf": "",
-        "posPre": "\u00a4\u00a0",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "it-sm",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_it.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_it.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_it.js
deleted file mode 100644
index c5101db..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_it.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "m.",
-      "p."
-    ],
-    "DAY": [
-      "domenica",
-      "luned\u00ec",
-      "marted\u00ec",
-      "mercoled\u00ec",
-      "gioved\u00ec",
-      "venerd\u00ec",
-      "sabato"
-    ],
-    "MONTH": [
-      "gennaio",
-      "febbraio",
-      "marzo",
-      "aprile",
-      "maggio",
-      "giugno",
-      "luglio",
-      "agosto",
-      "settembre",
-      "ottobre",
-      "novembre",
-      "dicembre"
-    ],
-    "SHORTDAY": [
-      "dom",
-      "lun",
-      "mar",
-      "mer",
-      "gio",
-      "ven",
-      "sab"
-    ],
-    "SHORTMONTH": [
-      "gen",
-      "feb",
-      "mar",
-      "apr",
-      "mag",
-      "giu",
-      "lug",
-      "ago",
-      "set",
-      "ott",
-      "nov",
-      "dic"
-    ],
-    "fullDate": "EEEE d MMMM y",
-    "longDate": "dd MMMM y",
-    "medium": "dd/MMM/y HH:mm:ss",
-    "mediumDate": "dd/MMM/y",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "\u00a4\u00a0-",
-        "negSuf": "",
-        "posPre": "\u00a4\u00a0",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "it",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_iw.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_iw.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_iw.js
deleted file mode 100644
index 26d452c..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_iw.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u05dc\u05e4\u05e0\u05d4\u05f4\u05e6",
-      "\u05d0\u05d7\u05d4\u05f4\u05e6"
-    ],
-    "DAY": [
-      "\u05d9\u05d5\u05dd \u05e8\u05d0\u05e9\u05d5\u05df",
-      "\u05d9\u05d5\u05dd \u05e9\u05e0\u05d9",
-      "\u05d9\u05d5\u05dd \u05e9\u05dc\u05d9\u05e9\u05d9",
-      "\u05d9\u05d5\u05dd \u05e8\u05d1\u05d9\u05e2\u05d9",
-      "\u05d9\u05d5\u05dd \u05d7\u05de\u05d9\u05e9\u05d9",
-      "\u05d9\u05d5\u05dd \u05e9\u05d9\u05e9\u05d9",
-      "\u05d9\u05d5\u05dd \u05e9\u05d1\u05ea"
-    ],
-    "MONTH": [
-      "\u05d9\u05e0\u05d5\u05d0\u05e8",
-      "\u05e4\u05d1\u05e8\u05d5\u05d0\u05e8",
-      "\u05de\u05e8\u05e5",
-      "\u05d0\u05e4\u05e8\u05d9\u05dc",
-      "\u05de\u05d0\u05d9",
-      "\u05d9\u05d5\u05e0\u05d9",
-      "\u05d9\u05d5\u05dc\u05d9",
-      "\u05d0\u05d5\u05d2\u05d5\u05e1\u05d8",
-      "\u05e1\u05e4\u05d8\u05de\u05d1\u05e8",
-      "\u05d0\u05d5\u05e7\u05d8\u05d5\u05d1\u05e8",
-      "\u05e0\u05d5\u05d1\u05de\u05d1\u05e8",
-      "\u05d3\u05e6\u05de\u05d1\u05e8"
-    ],
-    "SHORTDAY": [
-      "\u05d9\u05d5\u05dd \u05d0\u05f3",
-      "\u05d9\u05d5\u05dd \u05d1\u05f3",
-      "\u05d9\u05d5\u05dd \u05d2\u05f3",
-      "\u05d9\u05d5\u05dd \u05d3\u05f3",
-      "\u05d9\u05d5\u05dd \u05d4\u05f3",
-      "\u05d9\u05d5\u05dd \u05d5\u05f3",
-      "\u05e9\u05d1\u05ea"
-    ],
-    "SHORTMONTH": [
-      "\u05d9\u05e0\u05d5",
-      "\u05e4\u05d1\u05e8",
-      "\u05de\u05e8\u05e5",
-      "\u05d0\u05e4\u05e8",
-      "\u05de\u05d0\u05d9",
-      "\u05d9\u05d5\u05e0",
-      "\u05d9\u05d5\u05dc",
-      "\u05d0\u05d5\u05d2",
-      "\u05e1\u05e4\u05d8",
-      "\u05d0\u05d5\u05e7",
-      "\u05e0\u05d5\u05d1",
-      "\u05d3\u05e6\u05de"
-    ],
-    "fullDate": "EEEE, d \u05d1MMMM y",
-    "longDate": "d \u05d1MMMM y",
-    "medium": "d \u05d1MMM yyyy HH:mm:ss",
-    "mediumDate": "d \u05d1MMM yyyy",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20aa",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "iw",
-  "pluralCat": function (n) {  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ja-jp.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ja-jp.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ja-jp.js
deleted file mode 100644
index f63a1b0..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ja-jp.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u5348\u524d",
-      "\u5348\u5f8c"
-    ],
-    "DAY": [
-      "\u65e5\u66dc\u65e5",
-      "\u6708\u66dc\u65e5",
-      "\u706b\u66dc\u65e5",
-      "\u6c34\u66dc\u65e5",
-      "\u6728\u66dc\u65e5",
-      "\u91d1\u66dc\u65e5",
-      "\u571f\u66dc\u65e5"
-    ],
-    "MONTH": [
-      "1\u6708",
-      "2\u6708",
-      "3\u6708",
-      "4\u6708",
-      "5\u6708",
-      "6\u6708",
-      "7\u6708",
-      "8\u6708",
-      "9\u6708",
-      "10\u6708",
-      "11\u6708",
-      "12\u6708"
-    ],
-    "SHORTDAY": [
-      "\u65e5",
-      "\u6708",
-      "\u706b",
-      "\u6c34",
-      "\u6728",
-      "\u91d1",
-      "\u571f"
-    ],
-    "SHORTMONTH": [
-      "1\u6708",
-      "2\u6708",
-      "3\u6708",
-      "4\u6708",
-      "5\u6708",
-      "6\u6708",
-      "7\u6708",
-      "8\u6708",
-      "9\u6708",
-      "10\u6708",
-      "11\u6708",
-      "12\u6708"
-    ],
-    "fullDate": "y\u5e74M\u6708d\u65e5EEEE",
-    "longDate": "y\u5e74M\u6708d\u65e5",
-    "medium": "yyyy/MM/dd H:mm:ss",
-    "mediumDate": "yyyy/MM/dd",
-    "mediumTime": "H:mm:ss",
-    "short": "yyyy/MM/dd H:mm",
-    "shortDate": "yyyy/MM/dd",
-    "shortTime": "H:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u00a5",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "\u00a4-",
-        "negSuf": "",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "ja-jp",
-  "pluralCat": function (n) {  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ja.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ja.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ja.js
deleted file mode 100644
index 71f2306..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ja.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u5348\u524d",
-      "\u5348\u5f8c"
-    ],
-    "DAY": [
-      "\u65e5\u66dc\u65e5",
-      "\u6708\u66dc\u65e5",
-      "\u706b\u66dc\u65e5",
-      "\u6c34\u66dc\u65e5",
-      "\u6728\u66dc\u65e5",
-      "\u91d1\u66dc\u65e5",
-      "\u571f\u66dc\u65e5"
-    ],
-    "MONTH": [
-      "1\u6708",
-      "2\u6708",
-      "3\u6708",
-      "4\u6708",
-      "5\u6708",
-      "6\u6708",
-      "7\u6708",
-      "8\u6708",
-      "9\u6708",
-      "10\u6708",
-      "11\u6708",
-      "12\u6708"
-    ],
-    "SHORTDAY": [
-      "\u65e5",
-      "\u6708",
-      "\u706b",
-      "\u6c34",
-      "\u6728",
-      "\u91d1",
-      "\u571f"
-    ],
-    "SHORTMONTH": [
-      "1\u6708",
-      "2\u6708",
-      "3\u6708",
-      "4\u6708",
-      "5\u6708",
-      "6\u6708",
-      "7\u6708",
-      "8\u6708",
-      "9\u6708",
-      "10\u6708",
-      "11\u6708",
-      "12\u6708"
-    ],
-    "fullDate": "y\u5e74M\u6708d\u65e5EEEE",
-    "longDate": "y\u5e74M\u6708d\u65e5",
-    "medium": "yyyy/MM/dd H:mm:ss",
-    "mediumDate": "yyyy/MM/dd",
-    "mediumTime": "H:mm:ss",
-    "short": "yyyy/MM/dd H:mm",
-    "shortDate": "yyyy/MM/dd",
-    "shortTime": "H:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u00a5",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "\u00a4-",
-        "negSuf": "",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "ja",
-  "pluralCat": function (n) {  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_kn-in.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_kn-in.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_kn-in.js
deleted file mode 100644
index 73d66f5..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_kn-in.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "am",
-      "pm"
-    ],
-    "DAY": [
-      "\u0cb0\u0cb5\u0cbf\u0cb5\u0cbe\u0cb0",
-      "\u0cb8\u0ccb\u0cae\u0cb5\u0cbe\u0cb0",
-      "\u0cae\u0c82\u0c97\u0cb3\u0cb5\u0cbe\u0cb0",
-      "\u0cac\u0cc1\u0ca7\u0cb5\u0cbe\u0cb0",
-      "\u0c97\u0cc1\u0cb0\u0cc1\u0cb5\u0cbe\u0cb0",
-      "\u0cb6\u0cc1\u0c95\u0ccd\u0cb0\u0cb5\u0cbe\u0cb0",
-      "\u0cb6\u0ca8\u0cbf\u0cb5\u0cbe\u0cb0"
-    ],
-    "MONTH": [
-      "\u0c9c\u0ca8\u0cb5\u0cb0\u0cc0",
-      "\u0cab\u0cc6\u0cac\u0ccd\u0cb0\u0cb5\u0cb0\u0cc0",
-      "\u0cae\u0cbe\u0cb0\u0ccd\u0c9a\u0ccd",
-      "\u0c8e\u0caa\u0ccd\u0cb0\u0cbf\u0cb2\u0ccd",
-      "\u0cae\u0cc6",
-      "\u0c9c\u0cc2\u0ca8\u0ccd",
-      "\u0c9c\u0cc1\u0cb2\u0cc8",
-      "\u0c86\u0c97\u0cb8\u0ccd\u0c9f\u0ccd",
-      "\u0cb8\u0caa\u0ccd\u0c9f\u0cc6\u0c82\u0cac\u0cb0\u0ccd",
-      "\u0c85\u0c95\u0ccd\u0c9f\u0ccb\u0cac\u0cb0\u0ccd",
-      "\u0ca8\u0cb5\u0cc6\u0c82\u0cac\u0cb0\u0ccd",
-      "\u0ca1\u0cbf\u0cb8\u0cc6\u0c82\u0cac\u0cb0\u0ccd"
-    ],
-    "SHORTDAY": [
-      "\u0cb0.",
-      "\u0cb8\u0ccb.",
-      "\u0cae\u0c82.",
-      "\u0cac\u0cc1.",
-      "\u0c97\u0cc1.",
-      "\u0cb6\u0cc1.",
-      "\u0cb6\u0ca8\u0cbf."
-    ],
-    "SHORTMONTH": [
-      "\u0c9c\u0ca8\u0cb5\u0cb0\u0cc0",
-      "\u0cab\u0cc6\u0cac\u0ccd\u0cb0\u0cb5\u0cb0\u0cc0",
-      "\u0cae\u0cbe\u0cb0\u0ccd\u0c9a\u0ccd",
-      "\u0c8e\u0caa\u0ccd\u0cb0\u0cbf\u0cb2\u0ccd",
-      "\u0cae\u0cc6",
-      "\u0c9c\u0cc2\u0ca8\u0ccd",
-      "\u0c9c\u0cc1\u0cb2\u0cc8",
-      "\u0c86\u0c97\u0cb8\u0ccd\u0c9f\u0ccd",
-      "\u0cb8\u0caa\u0ccd\u0c9f\u0cc6\u0c82\u0cac\u0cb0\u0ccd",
-      "\u0c85\u0c95\u0ccd\u0c9f\u0ccb\u0cac\u0cb0\u0ccd",
-      "\u0ca8\u0cb5\u0cc6\u0c82\u0cac\u0cb0\u0ccd",
-      "\u0ca1\u0cbf\u0cb8\u0cc6\u0c82\u0cac\u0cb0\u0ccd"
-    ],
-    "fullDate": "EEEE d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y hh:mm:ss a",
-    "mediumDate": "d MMM y",
-    "mediumTime": "hh:mm:ss a",
-    "short": "d-M-yy hh:mm a",
-    "shortDate": "d-M-yy",
-    "shortTime": "hh:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20b9",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "kn-in",
-  "pluralCat": function (n) {  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_kn.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_kn.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_kn.js
deleted file mode 100644
index fa7c925..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_kn.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "am",
-      "pm"
-    ],
-    "DAY": [
-      "\u0cb0\u0cb5\u0cbf\u0cb5\u0cbe\u0cb0",
-      "\u0cb8\u0ccb\u0cae\u0cb5\u0cbe\u0cb0",
-      "\u0cae\u0c82\u0c97\u0cb3\u0cb5\u0cbe\u0cb0",
-      "\u0cac\u0cc1\u0ca7\u0cb5\u0cbe\u0cb0",
-      "\u0c97\u0cc1\u0cb0\u0cc1\u0cb5\u0cbe\u0cb0",
-      "\u0cb6\u0cc1\u0c95\u0ccd\u0cb0\u0cb5\u0cbe\u0cb0",
-      "\u0cb6\u0ca8\u0cbf\u0cb5\u0cbe\u0cb0"
-    ],
-    "MONTH": [
-      "\u0c9c\u0ca8\u0cb5\u0cb0\u0cc0",
-      "\u0cab\u0cc6\u0cac\u0ccd\u0cb0\u0cb5\u0cb0\u0cc0",
-      "\u0cae\u0cbe\u0cb0\u0ccd\u0c9a\u0ccd",
-      "\u0c8e\u0caa\u0ccd\u0cb0\u0cbf\u0cb2\u0ccd",
-      "\u0cae\u0cc6",
-      "\u0c9c\u0cc2\u0ca8\u0ccd",
-      "\u0c9c\u0cc1\u0cb2\u0cc8",
-      "\u0c86\u0c97\u0cb8\u0ccd\u0c9f\u0ccd",
-      "\u0cb8\u0caa\u0ccd\u0c9f\u0cc6\u0c82\u0cac\u0cb0\u0ccd",
-      "\u0c85\u0c95\u0ccd\u0c9f\u0ccb\u0cac\u0cb0\u0ccd",
-      "\u0ca8\u0cb5\u0cc6\u0c82\u0cac\u0cb0\u0ccd",
-      "\u0ca1\u0cbf\u0cb8\u0cc6\u0c82\u0cac\u0cb0\u0ccd"
-    ],
-    "SHORTDAY": [
-      "\u0cb0.",
-      "\u0cb8\u0ccb.",
-      "\u0cae\u0c82.",
-      "\u0cac\u0cc1.",
-      "\u0c97\u0cc1.",
-      "\u0cb6\u0cc1.",
-      "\u0cb6\u0ca8\u0cbf."
-    ],
-    "SHORTMONTH": [
-      "\u0c9c\u0ca8\u0cb5\u0cb0\u0cc0",
-      "\u0cab\u0cc6\u0cac\u0ccd\u0cb0\u0cb5\u0cb0\u0cc0",
-      "\u0cae\u0cbe\u0cb0\u0ccd\u0c9a\u0ccd",
-      "\u0c8e\u0caa\u0ccd\u0cb0\u0cbf\u0cb2\u0ccd",
-      "\u0cae\u0cc6",
-      "\u0c9c\u0cc2\u0ca8\u0ccd",
-      "\u0c9c\u0cc1\u0cb2\u0cc8",
-      "\u0c86\u0c97\u0cb8\u0ccd\u0c9f\u0ccd",
-      "\u0cb8\u0caa\u0ccd\u0c9f\u0cc6\u0c82\u0cac\u0cb0\u0ccd",
-      "\u0c85\u0c95\u0ccd\u0c9f\u0ccb\u0cac\u0cb0\u0ccd",
-      "\u0ca8\u0cb5\u0cc6\u0c82\u0cac\u0cb0\u0ccd",
-      "\u0ca1\u0cbf\u0cb8\u0cc6\u0c82\u0cac\u0cb0\u0ccd"
-    ],
-    "fullDate": "EEEE d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y hh:mm:ss a",
-    "mediumDate": "d MMM y",
-    "mediumTime": "hh:mm:ss a",
-    "short": "d-M-yy hh:mm a",
-    "shortDate": "d-M-yy",
-    "shortTime": "hh:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20b9",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "kn",
-  "pluralCat": function (n) {  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ko-kr.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ko-kr.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ko-kr.js
deleted file mode 100644
index 8de6031..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ko-kr.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\uc624\uc804",
-      "\uc624\ud6c4"
-    ],
-    "DAY": [
-      "\uc77c\uc694\uc77c",
-      "\uc6d4\uc694\uc77c",
-      "\ud654\uc694\uc77c",
-      "\uc218\uc694\uc77c",
-      "\ubaa9\uc694\uc77c",
-      "\uae08\uc694\uc77c",
-      "\ud1a0\uc694\uc77c"
-    ],
-    "MONTH": [
-      "1\uc6d4",
-      "2\uc6d4",
-      "3\uc6d4",
-      "4\uc6d4",
-      "5\uc6d4",
-      "6\uc6d4",
-      "7\uc6d4",
-      "8\uc6d4",
-      "9\uc6d4",
-      "10\uc6d4",
-      "11\uc6d4",
-      "12\uc6d4"
-    ],
-    "SHORTDAY": [
-      "\uc77c",
-      "\uc6d4",
-      "\ud654",
-      "\uc218",
-      "\ubaa9",
-      "\uae08",
-      "\ud1a0"
-    ],
-    "SHORTMONTH": [
-      "1\uc6d4",
-      "2\uc6d4",
-      "3\uc6d4",
-      "4\uc6d4",
-      "5\uc6d4",
-      "6\uc6d4",
-      "7\uc6d4",
-      "8\uc6d4",
-      "9\uc6d4",
-      "10\uc6d4",
-      "11\uc6d4",
-      "12\uc6d4"
-    ],
-    "fullDate": "y\ub144 M\uc6d4 d\uc77c EEEE",
-    "longDate": "y\ub144 M\uc6d4 d\uc77c",
-    "medium": "yyyy. M. d. a h:mm:ss",
-    "mediumDate": "yyyy. M. d.",
-    "mediumTime": "a h:mm:ss",
-    "short": "yy. M. d. a h:mm",
-    "shortDate": "yy. M. d.",
-    "shortTime": "a h:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20a9",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "ko-kr",
-  "pluralCat": function (n) {  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ko.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ko.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ko.js
deleted file mode 100644
index 51efdc5..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ko.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\uc624\uc804",
-      "\uc624\ud6c4"
-    ],
-    "DAY": [
-      "\uc77c\uc694\uc77c",
-      "\uc6d4\uc694\uc77c",
-      "\ud654\uc694\uc77c",
-      "\uc218\uc694\uc77c",
-      "\ubaa9\uc694\uc77c",
-      "\uae08\uc694\uc77c",
-      "\ud1a0\uc694\uc77c"
-    ],
-    "MONTH": [
-      "1\uc6d4",
-      "2\uc6d4",
-      "3\uc6d4",
-      "4\uc6d4",
-      "5\uc6d4",
-      "6\uc6d4",
-      "7\uc6d4",
-      "8\uc6d4",
-      "9\uc6d4",
-      "10\uc6d4",
-      "11\uc6d4",
-      "12\uc6d4"
-    ],
-    "SHORTDAY": [
-      "\uc77c",
-      "\uc6d4",
-      "\ud654",
-      "\uc218",
-      "\ubaa9",
-      "\uae08",
-      "\ud1a0"
-    ],
-    "SHORTMONTH": [
-      "1\uc6d4",
-      "2\uc6d4",
-      "3\uc6d4",
-      "4\uc6d4",
-      "5\uc6d4",
-      "6\uc6d4",
-      "7\uc6d4",
-      "8\uc6d4",
-      "9\uc6d4",
-      "10\uc6d4",
-      "11\uc6d4",
-      "12\uc6d4"
-    ],
-    "fullDate": "y\ub144 M\uc6d4 d\uc77c EEEE",
-    "longDate": "y\ub144 M\uc6d4 d\uc77c",
-    "medium": "yyyy. M. d. a h:mm:ss",
-    "mediumDate": "yyyy. M. d.",
-    "mediumTime": "a h:mm:ss",
-    "short": "yy. M. d. a h:mm",
-    "shortDate": "yy. M. d.",
-    "shortTime": "a h:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20a9",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "ko",
-  "pluralCat": function (n) {  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ln-cd.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ln-cd.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ln-cd.js
deleted file mode 100644
index 51a45ed..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ln-cd.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "nt\u0254\u0301ng\u0254\u0301",
-      "mp\u00f3kwa"
-    ],
-    "DAY": [
-      "eyenga",
-      "mok\u0254l\u0254 mwa yambo",
-      "mok\u0254l\u0254 mwa m\u00edbal\u00e9",
-      "mok\u0254l\u0254 mwa m\u00eds\u00e1to",
-      "mok\u0254l\u0254 ya m\u00edn\u00e9i",
-      "mok\u0254l\u0254 ya m\u00edt\u00e1no",
-      "mp\u0254\u0301s\u0254"
-    ],
-    "MONTH": [
-      "s\u00e1nz\u00e1 ya yambo",
-      "s\u00e1nz\u00e1 ya m\u00edbal\u00e9",
-      "s\u00e1nz\u00e1 ya m\u00eds\u00e1to",
-      "s\u00e1nz\u00e1 ya m\u00ednei",
-      "s\u00e1nz\u00e1 ya m\u00edt\u00e1no",
-      "s\u00e1nz\u00e1 ya mot\u00f3b\u00e1",
-      "s\u00e1nz\u00e1 ya nsambo",
-      "s\u00e1nz\u00e1 ya mwambe",
-      "s\u00e1nz\u00e1 ya libwa",
-      "s\u00e1nz\u00e1 ya z\u00f3mi",
-      "s\u00e1nz\u00e1 ya z\u00f3mi na m\u0254\u030ck\u0254\u0301",
-      "s\u00e1nz\u00e1 ya z\u00f3mi na m\u00edbal\u00e9"
-    ],
-    "SHORTDAY": [
-      "eye",
-      "ybo",
-      "mbl",
-      "mst",
-      "min",
-      "mtn",
-      "mps"
-    ],
-    "SHORTMONTH": [
-      "yan",
-      "fbl",
-      "msi",
-      "apl",
-      "mai",
-      "yun",
-      "yul",
-      "agt",
-      "stb",
-      "\u0254tb",
-      "nvb",
-      "dsb"
-    ],
-    "fullDate": "EEEE d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y HH:mm:ss",
-    "mediumDate": "d MMM y",
-    "mediumTime": "HH:mm:ss",
-    "short": "d/M/yyyy HH:mm",
-    "shortDate": "d/M/yyyy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "FrCD",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "ln-cd",
-  "pluralCat": function (n) {  if (n == 0 || n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ln-cg.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ln-cg.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ln-cg.js
deleted file mode 100644
index 6095d33..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ln-cg.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "nt\u0254\u0301ng\u0254\u0301",
-      "mp\u00f3kwa"
-    ],
-    "DAY": [
-      "eyenga",
-      "mok\u0254l\u0254 mwa yambo",
-      "mok\u0254l\u0254 mwa m\u00edbal\u00e9",
-      "mok\u0254l\u0254 mwa m\u00eds\u00e1to",
-      "mok\u0254l\u0254 ya m\u00edn\u00e9i",
-      "mok\u0254l\u0254 ya m\u00edt\u00e1no",
-      "mp\u0254\u0301s\u0254"
-    ],
-    "MONTH": [
-      "s\u00e1nz\u00e1 ya yambo",
-      "s\u00e1nz\u00e1 ya m\u00edbal\u00e9",
-      "s\u00e1nz\u00e1 ya m\u00eds\u00e1to",
-      "s\u00e1nz\u00e1 ya m\u00ednei",
-      "s\u00e1nz\u00e1 ya m\u00edt\u00e1no",
-      "s\u00e1nz\u00e1 ya mot\u00f3b\u00e1",
-      "s\u00e1nz\u00e1 ya nsambo",
-      "s\u00e1nz\u00e1 ya mwambe",
-      "s\u00e1nz\u00e1 ya libwa",
-      "s\u00e1nz\u00e1 ya z\u00f3mi",
-      "s\u00e1nz\u00e1 ya z\u00f3mi na m\u0254\u030ck\u0254\u0301",
-      "s\u00e1nz\u00e1 ya z\u00f3mi na m\u00edbal\u00e9"
-    ],
-    "SHORTDAY": [
-      "eye",
-      "ybo",
-      "mbl",
-      "mst",
-      "min",
-      "mtn",
-      "mps"
-    ],
-    "SHORTMONTH": [
-      "yan",
-      "fbl",
-      "msi",
-      "apl",
-      "mai",
-      "yun",
-      "yul",
-      "agt",
-      "stb",
-      "\u0254tb",
-      "nvb",
-      "dsb"
-    ],
-    "fullDate": "EEEE d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y HH:mm:ss",
-    "mediumDate": "d MMM y",
-    "mediumTime": "HH:mm:ss",
-    "short": "d/M/yyyy HH:mm",
-    "shortDate": "d/M/yyyy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "FrCD",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "ln-cg",
-  "pluralCat": function (n) {  if (n == 0 || n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ln.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ln.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ln.js
deleted file mode 100644
index 0f2bb5f..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ln.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "nt\u0254\u0301ng\u0254\u0301",
-      "mp\u00f3kwa"
-    ],
-    "DAY": [
-      "eyenga",
-      "mok\u0254l\u0254 mwa yambo",
-      "mok\u0254l\u0254 mwa m\u00edbal\u00e9",
-      "mok\u0254l\u0254 mwa m\u00eds\u00e1to",
-      "mok\u0254l\u0254 ya m\u00edn\u00e9i",
-      "mok\u0254l\u0254 ya m\u00edt\u00e1no",
-      "mp\u0254\u0301s\u0254"
-    ],
-    "MONTH": [
-      "s\u00e1nz\u00e1 ya yambo",
-      "s\u00e1nz\u00e1 ya m\u00edbal\u00e9",
-      "s\u00e1nz\u00e1 ya m\u00eds\u00e1to",
-      "s\u00e1nz\u00e1 ya m\u00ednei",
-      "s\u00e1nz\u00e1 ya m\u00edt\u00e1no",
-      "s\u00e1nz\u00e1 ya mot\u00f3b\u00e1",
-      "s\u00e1nz\u00e1 ya nsambo",
-      "s\u00e1nz\u00e1 ya mwambe",
-      "s\u00e1nz\u00e1 ya libwa",
-      "s\u00e1nz\u00e1 ya z\u00f3mi",
-      "s\u00e1nz\u00e1 ya z\u00f3mi na m\u0254\u030ck\u0254\u0301",
-      "s\u00e1nz\u00e1 ya z\u00f3mi na m\u00edbal\u00e9"
-    ],
-    "SHORTDAY": [
-      "eye",
-      "ybo",
-      "mbl",
-      "mst",
-      "min",
-      "mtn",
-      "mps"
-    ],
-    "SHORTMONTH": [
-      "yan",
-      "fbl",
-      "msi",
-      "apl",
-      "mai",
-      "yun",
-      "yul",
-      "agt",
-      "stb",
-      "\u0254tb",
-      "nvb",
-      "dsb"
-    ],
-    "fullDate": "EEEE d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y HH:mm:ss",
-    "mediumDate": "d MMM y",
-    "mediumTime": "HH:mm:ss",
-    "short": "d/M/yyyy HH:mm",
-    "shortDate": "d/M/yyyy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "FrCD",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "ln",
-  "pluralCat": function (n) {  if (n == 0 || n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_lt-lt.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_lt-lt.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_lt-lt.js
deleted file mode 100644
index 0b84931..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_lt-lt.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "prie\u0161piet",
-      "popiet"
-    ],
-    "DAY": [
-      "sekmadienis",
-      "pirmadienis",
-      "antradienis",
-      "tre\u010diadienis",
-      "ketvirtadienis",
-      "penktadienis",
-      "\u0161e\u0161tadienis"
-    ],
-    "MONTH": [
-      "sausio",
-      "vasaris",
-      "kovas",
-      "balandis",
-      "gegu\u017e\u0117",
-      "bir\u017eelis",
-      "liepa",
-      "rugpj\u016btis",
-      "rugs\u0117jis",
-      "spalis",
-      "lapkritis",
-      "gruodis"
-    ],
-    "SHORTDAY": [
-      "Sk",
-      "Pr",
-      "An",
-      "Tr",
-      "Kt",
-      "Pn",
-      "\u0160t"
-    ],
-    "SHORTMONTH": [
-      "Saus.",
-      "Vas",
-      "Kov.",
-      "Bal.",
-      "Geg.",
-      "Bir.",
-      "Liep.",
-      "Rugp.",
-      "Rugs.",
-      "Spal.",
-      "Lapkr.",
-      "Gruod."
-    ],
-    "fullDate": "y 'm'. MMMM d 'd'., EEEE",
-    "longDate": "y 'm'. MMMM d 'd'.",
-    "medium": "y MMM d HH:mm:ss",
-    "mediumDate": "y MMM d",
-    "mediumTime": "HH:mm:ss",
-    "short": "yyyy-MM-dd HH:mm",
-    "shortDate": "yyyy-MM-dd",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "Lt",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "lt-lt",
-  "pluralCat": function (n) {  if (n % 10 == 1 && (n % 100 < 11 || n % 100 > 19)) {   return PLURAL_CATEGORY.ONE;  }  if (n == (n | 0) && n % 10 >= 2 && n % 10 <= 9 && (n % 100 < 11 || n % 100 > 19)) {   return PLURAL_CATEGORY.FEW;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_lt.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_lt.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_lt.js
deleted file mode 100644
index c0d3c0a..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_lt.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "prie\u0161piet",
-      "popiet"
-    ],
-    "DAY": [
-      "sekmadienis",
-      "pirmadienis",
-      "antradienis",
-      "tre\u010diadienis",
-      "ketvirtadienis",
-      "penktadienis",
-      "\u0161e\u0161tadienis"
-    ],
-    "MONTH": [
-      "sausio",
-      "vasaris",
-      "kovas",
-      "balandis",
-      "gegu\u017e\u0117",
-      "bir\u017eelis",
-      "liepa",
-      "rugpj\u016btis",
-      "rugs\u0117jis",
-      "spalis",
-      "lapkritis",
-      "gruodis"
-    ],
-    "SHORTDAY": [
-      "Sk",
-      "Pr",
-      "An",
-      "Tr",
-      "Kt",
-      "Pn",
-      "\u0160t"
-    ],
-    "SHORTMONTH": [
-      "Saus.",
-      "Vas",
-      "Kov.",
-      "Bal.",
-      "Geg.",
-      "Bir.",
-      "Liep.",
-      "Rugp.",
-      "Rugs.",
-      "Spal.",
-      "Lapkr.",
-      "Gruod."
-    ],
-    "fullDate": "y 'm'. MMMM d 'd'., EEEE",
-    "longDate": "y 'm'. MMMM d 'd'.",
-    "medium": "y MMM d HH:mm:ss",
-    "mediumDate": "y MMM d",
-    "mediumTime": "HH:mm:ss",
-    "short": "yyyy-MM-dd HH:mm",
-    "shortDate": "yyyy-MM-dd",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "Lt",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "lt",
-  "pluralCat": function (n) {  if (n % 10 == 1 && (n % 100 < 11 || n % 100 > 19)) {   return PLURAL_CATEGORY.ONE;  }  if (n == (n | 0) && n % 10 >= 2 && n % 10 <= 9 && (n % 100 < 11 || n % 100 > 19)) {   return PLURAL_CATEGORY.FEW;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_lv-lv.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_lv-lv.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_lv-lv.js
deleted file mode 100644
index 4bcfced..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_lv-lv.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "priek\u0161pusdien\u0101",
-      "p\u0113cpusdien\u0101"
-    ],
-    "DAY": [
-      "sv\u0113tdiena",
-      "pirmdiena",
-      "otrdiena",
-      "tre\u0161diena",
-      "ceturtdiena",
-      "piektdiena",
-      "sestdiena"
-    ],
-    "MONTH": [
-      "janv\u0101ris",
-      "febru\u0101ris",
-      "marts",
-      "apr\u012blis",
-      "maijs",
-      "j\u016bnijs",
-      "j\u016blijs",
-      "augusts",
-      "septembris",
-      "oktobris",
-      "novembris",
-      "decembris"
-    ],
-    "SHORTDAY": [
-      "Sv",
-      "Pr",
-      "Ot",
-      "Tr",
-      "Ce",
-      "Pk",
-      "Se"
-    ],
-    "SHORTMONTH": [
-      "janv.",
-      "febr.",
-      "marts",
-      "apr.",
-      "maijs",
-      "j\u016bn.",
-      "j\u016bl.",
-      "aug.",
-      "sept.",
-      "okt.",
-      "nov.",
-      "dec."
-    ],
-    "fullDate": "EEEE, y. 'gada' d. MMMM",
-    "longDate": "y. 'gada' d. MMMM",
-    "medium": "y. 'gada' d. MMM HH:mm:ss",
-    "mediumDate": "y. 'gada' d. MMM",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd.MM.yy HH:mm",
-    "shortDate": "dd.MM.yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "Ls",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "lv-lv",
-  "pluralCat": function (n) {  if (n == 0) {   return PLURAL_CATEGORY.ZERO;  }  if (n % 10 == 1 && n % 100 != 11) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_lv.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_lv.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_lv.js
deleted file mode 100644
index 56ec049..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_lv.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "priek\u0161pusdien\u0101",
-      "p\u0113cpusdien\u0101"
-    ],
-    "DAY": [
-      "sv\u0113tdiena",
-      "pirmdiena",
-      "otrdiena",
-      "tre\u0161diena",
-      "ceturtdiena",
-      "piektdiena",
-      "sestdiena"
-    ],
-    "MONTH": [
-      "janv\u0101ris",
-      "febru\u0101ris",
-      "marts",
-      "apr\u012blis",
-      "maijs",
-      "j\u016bnijs",
-      "j\u016blijs",
-      "augusts",
-      "septembris",
-      "oktobris",
-      "novembris",
-      "decembris"
-    ],
-    "SHORTDAY": [
-      "Sv",
-      "Pr",
-      "Ot",
-      "Tr",
-      "Ce",
-      "Pk",
-      "Se"
-    ],
-    "SHORTMONTH": [
-      "janv.",
-      "febr.",
-      "marts",
-      "apr.",
-      "maijs",
-      "j\u016bn.",
-      "j\u016bl.",
-      "aug.",
-      "sept.",
-      "okt.",
-      "nov.",
-      "dec."
-    ],
-    "fullDate": "EEEE, y. 'gada' d. MMMM",
-    "longDate": "y. 'gada' d. MMMM",
-    "medium": "y. 'gada' d. MMM HH:mm:ss",
-    "mediumDate": "y. 'gada' d. MMM",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd.MM.yy HH:mm",
-    "shortDate": "dd.MM.yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "Ls",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "lv",
-  "pluralCat": function (n) {  if (n == 0) {   return PLURAL_CATEGORY.ZERO;  }  if (n % 10 == 1 && n % 100 != 11) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ml-in.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ml-in.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ml-in.js
deleted file mode 100644
index 24641e2..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ml-in.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "am",
-      "pm"
-    ],
-    "DAY": [
-      "\u0d1e\u0d3e\u0d2f\u0d31\u0d3e\u0d34\u0d4d\u0d1a",
-      "\u0d24\u0d3f\u0d19\u0d4d\u0d15\u0d33\u0d3e\u0d34\u0d4d\u0d1a",
-      "\u0d1a\u0d4a\u0d35\u0d4d\u0d35\u0d3e\u0d34\u0d4d\u0d1a",
-      "\u0d2c\u0d41\u0d27\u0d28\u0d3e\u0d34\u0d4d\u0d1a",
-      "\u0d35\u0d4d\u0d2f\u0d3e\u0d34\u0d3e\u0d34\u0d4d\u0d1a",
-      "\u0d35\u0d46\u0d33\u0d4d\u0d33\u0d3f\u0d2f\u0d3e\u0d34\u0d4d\u0d1a",
-      "\u0d36\u0d28\u0d3f\u0d2f\u0d3e\u0d34\u0d4d\u0d1a"
-    ],
-    "MONTH": [
-      "\u0d1c\u0d28\u0d41\u0d35\u0d30\u0d3f",
-      "\u0d2b\u0d46\u0d2c\u0d4d\u0d30\u0d41\u0d35\u0d30\u0d3f",
-      "\u0d2e\u0d3e\u0d30\u0d4d\u200d\u0d1a\u0d4d\u0d1a\u0d4d",
-      "\u0d0f\u0d2a\u0d4d\u0d30\u0d3f\u0d32\u0d4d\u200d",
-      "\u0d2e\u0d47\u0d2f\u0d4d",
-      "\u0d1c\u0d42\u0d23\u0d4d\u200d",
-      "\u0d1c\u0d42\u0d32\u0d48",
-      "\u0d06\u0d17\u0d38\u0d4d\u0d31\u0d4d\u0d31\u0d4d",
-      "\u0d38\u0d46\u0d2a\u0d4d\u0d31\u0d4d\u0d31\u0d02\u0d2c\u0d30\u0d4d\u200d",
-      "\u0d12\u0d15\u0d4d\u0d1f\u0d4b\u0d2c\u0d30\u0d4d\u200d",
-      "\u0d28\u0d35\u0d02\u0d2c\u0d30\u0d4d\u200d",
-      "\u0d21\u0d3f\u0d38\u0d02\u0d2c\u0d30\u0d4d\u200d"
-    ],
-    "SHORTDAY": [
-      "\u0d1e\u0d3e\u0d2f\u0d30\u0d4d\u200d",
-      "\u0d24\u0d3f\u0d19\u0d4d\u0d15\u0d33\u0d4d\u200d",
-      "\u0d1a\u0d4a\u0d35\u0d4d\u0d35",
-      "\u0d2c\u0d41\u0d27\u0d28\u0d4d\u200d",
-      "\u0d35\u0d4d\u0d2f\u0d3e\u0d34\u0d02",
-      "\u0d35\u0d46\u0d33\u0d4d\u0d33\u0d3f",
-      "\u0d36\u0d28\u0d3f"
-    ],
-    "SHORTMONTH": [
-      "\u0d1c\u0d28\u0d41",
-      "\u0d2b\u0d46\u0d2c\u0d4d\u0d30\u0d41",
-      "\u0d2e\u0d3e\u0d30\u0d4d\u200d",
-      "\u0d0f\u0d2a\u0d4d\u0d30\u0d3f",
-      "\u0d2e\u0d47\u0d2f\u0d4d",
-      "\u0d1c\u0d42\u0d23\u0d4d\u200d",
-      "\u0d1c\u0d42\u0d32\u0d48",
-      "\u0d13\u0d17",
-      "\u0d38\u0d46\u0d2a\u0d4d\u0d31\u0d4d\u0d31\u0d02",
-      "\u0d12\u0d15\u0d4d\u0d1f\u0d4b",
-      "\u0d28\u0d35\u0d02",
-      "\u0d21\u0d3f\u0d38\u0d02"
-    ],
-    "fullDate": "y, MMMM d, EEEE",
-    "longDate": "y, MMMM d",
-    "medium": "y, MMM d h:mm:ss a",
-    "mediumDate": "y, MMM d",
-    "mediumTime": "h:mm:ss a",
-    "short": "dd/MM/yy h:mm a",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20b9",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 2,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 2,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a4"
-      }
-    ]
-  },
-  "id": "ml-in",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ml.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ml.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ml.js
deleted file mode 100644
index 2b61d30..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ml.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "am",
-      "pm"
-    ],
-    "DAY": [
-      "\u0d1e\u0d3e\u0d2f\u0d31\u0d3e\u0d34\u0d4d\u0d1a",
-      "\u0d24\u0d3f\u0d19\u0d4d\u0d15\u0d33\u0d3e\u0d34\u0d4d\u0d1a",
-      "\u0d1a\u0d4a\u0d35\u0d4d\u0d35\u0d3e\u0d34\u0d4d\u0d1a",
-      "\u0d2c\u0d41\u0d27\u0d28\u0d3e\u0d34\u0d4d\u0d1a",
-      "\u0d35\u0d4d\u0d2f\u0d3e\u0d34\u0d3e\u0d34\u0d4d\u0d1a",
-      "\u0d35\u0d46\u0d33\u0d4d\u0d33\u0d3f\u0d2f\u0d3e\u0d34\u0d4d\u0d1a",
-      "\u0d36\u0d28\u0d3f\u0d2f\u0d3e\u0d34\u0d4d\u0d1a"
-    ],
-    "MONTH": [
-      "\u0d1c\u0d28\u0d41\u0d35\u0d30\u0d3f",
-      "\u0d2b\u0d46\u0d2c\u0d4d\u0d30\u0d41\u0d35\u0d30\u0d3f",
-      "\u0d2e\u0d3e\u0d30\u0d4d\u200d\u0d1a\u0d4d\u0d1a\u0d4d",
-      "\u0d0f\u0d2a\u0d4d\u0d30\u0d3f\u0d32\u0d4d\u200d",
-      "\u0d2e\u0d47\u0d2f\u0d4d",
-      "\u0d1c\u0d42\u0d23\u0d4d\u200d",
-      "\u0d1c\u0d42\u0d32\u0d48",
-      "\u0d06\u0d17\u0d38\u0d4d\u0d31\u0d4d\u0d31\u0d4d",
-      "\u0d38\u0d46\u0d2a\u0d4d\u0d31\u0d4d\u0d31\u0d02\u0d2c\u0d30\u0d4d\u200d",
-      "\u0d12\u0d15\u0d4d\u0d1f\u0d4b\u0d2c\u0d30\u0d4d\u200d",
-      "\u0d28\u0d35\u0d02\u0d2c\u0d30\u0d4d\u200d",
-      "\u0d21\u0d3f\u0d38\u0d02\u0d2c\u0d30\u0d4d\u200d"
-    ],
-    "SHORTDAY": [
-      "\u0d1e\u0d3e\u0d2f\u0d30\u0d4d\u200d",
-      "\u0d24\u0d3f\u0d19\u0d4d\u0d15\u0d33\u0d4d\u200d",
-      "\u0d1a\u0d4a\u0d35\u0d4d\u0d35",
-      "\u0d2c\u0d41\u0d27\u0d28\u0d4d\u200d",
-      "\u0d35\u0d4d\u0d2f\u0d3e\u0d34\u0d02",
-      "\u0d35\u0d46\u0d33\u0d4d\u0d33\u0d3f",
-      "\u0d36\u0d28\u0d3f"
-    ],
-    "SHORTMONTH": [
-      "\u0d1c\u0d28\u0d41",
-      "\u0d2b\u0d46\u0d2c\u0d4d\u0d30\u0d41",
-      "\u0d2e\u0d3e\u0d30\u0d4d\u200d",
-      "\u0d0f\u0d2a\u0d4d\u0d30\u0d3f",
-      "\u0d2e\u0d47\u0d2f\u0d4d",
-      "\u0d1c\u0d42\u0d23\u0d4d\u200d",
-      "\u0d1c\u0d42\u0d32\u0d48",
-      "\u0d13\u0d17",
-      "\u0d38\u0d46\u0d2a\u0d4d\u0d31\u0d4d\u0d31\u0d02",
-      "\u0d12\u0d15\u0d4d\u0d1f\u0d4b",
-      "\u0d28\u0d35\u0d02",
-      "\u0d21\u0d3f\u0d38\u0d02"
-    ],
-    "fullDate": "y, MMMM d, EEEE",
-    "longDate": "y, MMMM d",
-    "medium": "y, MMM d h:mm:ss a",
-    "mediumDate": "y, MMM d",
-    "mediumTime": "h:mm:ss a",
-    "short": "dd/MM/yy h:mm a",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20b9",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 2,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 2,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a4"
-      }
-    ]
-  },
-  "id": "ml",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_mr-in.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_mr-in.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_mr-in.js
deleted file mode 100644
index 8d5381a..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_mr-in.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "am",
-      "pm"
-    ],
-    "DAY": [
-      "\u0930\u0935\u093f\u0935\u093e\u0930",
-      "\u0938\u094b\u092e\u0935\u093e\u0930",
-      "\u092e\u0902\u0917\u0933\u0935\u093e\u0930",
-      "\u092c\u0941\u0927\u0935\u093e\u0930",
-      "\u0917\u0941\u0930\u0941\u0935\u093e\u0930",
-      "\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930",
-      "\u0936\u0928\u093f\u0935\u093e\u0930"
-    ],
-    "MONTH": [
-      "\u091c\u093e\u0928\u0947\u0935\u093e\u0930\u0940",
-      "\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940",
-      "\u092e\u093e\u0930\u094d\u091a",
-      "\u090f\u092a\u094d\u0930\u093f\u0932",
-      "\u092e\u0947",
-      "\u091c\u0942\u0928",
-      "\u091c\u0941\u0932\u0948",
-      "\u0911\u0917\u0938\u094d\u091f",
-      "\u0938\u092a\u094d\u091f\u0947\u0902\u092c\u0930",
-      "\u0911\u0915\u094d\u091f\u094b\u092c\u0930",
-      "\u0928\u094b\u0935\u094d\u0939\u0947\u0902\u092c\u0930",
-      "\u0921\u093f\u0938\u0947\u0902\u092c\u0930"
-    ],
-    "SHORTDAY": [
-      "\u0930\u0935\u093f",
-      "\u0938\u094b\u092e",
-      "\u092e\u0902\u0917\u0933",
-      "\u092c\u0941\u0927",
-      "\u0917\u0941\u0930\u0941",
-      "\u0936\u0941\u0915\u094d\u0930",
-      "\u0936\u0928\u093f"
-    ],
-    "SHORTMONTH": [
-      "\u091c\u093e\u0928\u0947",
-      "\u092b\u0947\u092c\u094d\u0930\u0941",
-      "\u092e\u093e\u0930\u094d\u091a",
-      "\u090f\u092a\u094d\u0930\u093f",
-      "\u092e\u0947",
-      "\u091c\u0942\u0928",
-      "\u091c\u0941\u0932\u0948",
-      "\u0911\u0917",
-      "\u0938\u0947\u092a\u094d\u091f\u0947\u0902",
-      "\u0911\u0915\u094d\u091f\u094b\u092c\u0930",
-      "\u0928\u094b\u0935\u094d\u0939\u0947\u0902",
-      "\u0921\u093f\u0938\u0947\u0902"
-    ],
-    "fullDate": "EEEE d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y h-mm-ss a",
-    "mediumDate": "d MMM y",
-    "mediumTime": "h-mm-ss a",
-    "short": "d-M-yy h-mm a",
-    "shortDate": "d-M-yy",
-    "shortTime": "h-mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20b9",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "mr-in",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_mr.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_mr.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_mr.js
deleted file mode 100644
index d9d91ba..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_mr.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "am",
-      "pm"
-    ],
-    "DAY": [
-      "\u0930\u0935\u093f\u0935\u093e\u0930",
-      "\u0938\u094b\u092e\u0935\u093e\u0930",
-      "\u092e\u0902\u0917\u0933\u0935\u093e\u0930",
-      "\u092c\u0941\u0927\u0935\u093e\u0930",
-      "\u0917\u0941\u0930\u0941\u0935\u093e\u0930",
-      "\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930",
-      "\u0936\u0928\u093f\u0935\u093e\u0930"
-    ],
-    "MONTH": [
-      "\u091c\u093e\u0928\u0947\u0935\u093e\u0930\u0940",
-      "\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940",
-      "\u092e\u093e\u0930\u094d\u091a",
-      "\u090f\u092a\u094d\u0930\u093f\u0932",
-      "\u092e\u0947",
-      "\u091c\u0942\u0928",
-      "\u091c\u0941\u0932\u0948",
-      "\u0911\u0917\u0938\u094d\u091f",
-      "\u0938\u092a\u094d\u091f\u0947\u0902\u092c\u0930",
-      "\u0911\u0915\u094d\u091f\u094b\u092c\u0930",
-      "\u0928\u094b\u0935\u094d\u0939\u0947\u0902\u092c\u0930",
-      "\u0921\u093f\u0938\u0947\u0902\u092c\u0930"
-    ],
-    "SHORTDAY": [
-      "\u0930\u0935\u093f",
-      "\u0938\u094b\u092e",
-      "\u092e\u0902\u0917\u0933",
-      "\u092c\u0941\u0927",
-      "\u0917\u0941\u0930\u0941",
-      "\u0936\u0941\u0915\u094d\u0930",
-      "\u0936\u0928\u093f"
-    ],
-    "SHORTMONTH": [
-      "\u091c\u093e\u0928\u0947",
-      "\u092b\u0947\u092c\u094d\u0930\u0941",
-      "\u092e\u093e\u0930\u094d\u091a",
-      "\u090f\u092a\u094d\u0930\u093f",
-      "\u092e\u0947",
-      "\u091c\u0942\u0928",
-      "\u091c\u0941\u0932\u0948",
-      "\u0911\u0917",
-      "\u0938\u0947\u092a\u094d\u091f\u0947\u0902",
-      "\u0911\u0915\u094d\u091f\u094b\u092c\u0930",
-      "\u0928\u094b\u0935\u094d\u0939\u0947\u0902",
-      "\u0921\u093f\u0938\u0947\u0902"
-    ],
-    "fullDate": "EEEE d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y h-mm-ss a",
-    "mediumDate": "d MMM y",
-    "mediumTime": "h-mm-ss a",
-    "short": "d-M-yy h-mm a",
-    "shortDate": "d-M-yy",
-    "shortTime": "h-mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20b9",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "mr",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ms-bn.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ms-bn.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ms-bn.js
deleted file mode 100644
index cd32b56..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ms-bn.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "PG",
-      "PTG"
-    ],
-    "DAY": [
-      "Ahad",
-      "Isnin",
-      "Selasa",
-      "Rabu",
-      "Khamis",
-      "Jumaat",
-      "Sabtu"
-    ],
-    "MONTH": [
-      "Januari",
-      "Februari",
-      "Mac",
-      "April",
-      "Mei",
-      "Jun",
-      "Julai",
-      "Ogos",
-      "September",
-      "Oktober",
-      "November",
-      "Disember"
-    ],
-    "SHORTDAY": [
-      "Ahd",
-      "Isn",
-      "Sel",
-      "Rab",
-      "Kha",
-      "Jum",
-      "Sab"
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Feb",
-      "Mac",
-      "Apr",
-      "Mei",
-      "Jun",
-      "Jul",
-      "Ogos",
-      "Sep",
-      "Okt",
-      "Nov",
-      "Dis"
-    ],
-    "fullDate": "dd MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "dd/MM/yyyy h:mm:ss a",
-    "mediumDate": "dd/MM/yyyy",
-    "mediumTime": "h:mm:ss a",
-    "short": "d/MM/yy h:mm a",
-    "shortDate": "d/MM/yy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "RM",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "ms-bn",
-  "pluralCat": function (n) {  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ms-my.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ms-my.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ms-my.js
deleted file mode 100644
index 6f91161..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ms-my.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "PG",
-      "PTG"
-    ],
-    "DAY": [
-      "Ahad",
-      "Isnin",
-      "Selasa",
-      "Rabu",
-      "Khamis",
-      "Jumaat",
-      "Sabtu"
-    ],
-    "MONTH": [
-      "Januari",
-      "Februari",
-      "Mac",
-      "April",
-      "Mei",
-      "Jun",
-      "Julai",
-      "Ogos",
-      "September",
-      "Oktober",
-      "November",
-      "Disember"
-    ],
-    "SHORTDAY": [
-      "Ahd",
-      "Isn",
-      "Sel",
-      "Rab",
-      "Kha",
-      "Jum",
-      "Sab"
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Feb",
-      "Mac",
-      "Apr",
-      "Mei",
-      "Jun",
-      "Jul",
-      "Ogos",
-      "Sep",
-      "Okt",
-      "Nov",
-      "Dis"
-    ],
-    "fullDate": "EEEE, d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "dd/MM/yyyy h:mm:ss a",
-    "mediumDate": "dd/MM/yyyy",
-    "mediumTime": "h:mm:ss a",
-    "short": "d/MM/yy h:mm a",
-    "shortDate": "d/MM/yy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "RM",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "ms-my",
-  "pluralCat": function (n) {  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ms.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ms.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ms.js
deleted file mode 100644
index 4acdbff..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ms.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "PG",
-      "PTG"
-    ],
-    "DAY": [
-      "Ahad",
-      "Isnin",
-      "Selasa",
-      "Rabu",
-      "Khamis",
-      "Jumaat",
-      "Sabtu"
-    ],
-    "MONTH": [
-      "Januari",
-      "Februari",
-      "Mac",
-      "April",
-      "Mei",
-      "Jun",
-      "Julai",
-      "Ogos",
-      "September",
-      "Oktober",
-      "November",
-      "Disember"
-    ],
-    "SHORTDAY": [
-      "Ahd",
-      "Isn",
-      "Sel",
-      "Rab",
-      "Kha",
-      "Jum",
-      "Sab"
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Feb",
-      "Mac",
-      "Apr",
-      "Mei",
-      "Jun",
-      "Jul",
-      "Ogos",
-      "Sep",
-      "Okt",
-      "Nov",
-      "Dis"
-    ],
-    "fullDate": "EEEE, d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "dd/MM/yyyy h:mm:ss a",
-    "mediumDate": "dd/MM/yyyy",
-    "mediumTime": "h:mm:ss a",
-    "short": "d/MM/yy h:mm a",
-    "shortDate": "d/MM/yy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "RM",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "ms",
-  "pluralCat": function (n) {  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_mt-mt.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_mt-mt.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_mt-mt.js
deleted file mode 100644
index 9ccf8b2..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_mt-mt.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "QN",
-      "WN"
-    ],
-    "DAY": [
-      "Il-\u0126add",
-      "It-Tnejn",
-      "It-Tlieta",
-      "L-Erbg\u0127a",
-      "Il-\u0126amis",
-      "Il-\u0120img\u0127a",
-      "Is-Sibt"
-    ],
-    "MONTH": [
-      "Jannar",
-      "Frar",
-      "Marzu",
-      "April",
-      "Mejju",
-      "\u0120unju",
-      "Lulju",
-      "Awwissu",
-      "Settembru",
-      "Ottubru",
-      "Novembru",
-      "Di\u010bembru"
-    ],
-    "SHORTDAY": [
-      "\u0126ad",
-      "Tne",
-      "Tli",
-      "Erb",
-      "\u0126am",
-      "\u0120im",
-      "Sib"
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Fra",
-      "Mar",
-      "Apr",
-      "Mej",
-      "\u0120un",
-      "Lul",
-      "Aww",
-      "Set",
-      "Ott",
-      "Nov",
-      "Di\u010b"
-    ],
-    "fullDate": "EEEE, d 'ta'\u2019 MMMM y",
-    "longDate": "d 'ta'\u2019 MMMM y",
-    "medium": "dd MMM y HH:mm:ss",
-    "mediumDate": "dd MMM y",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yyyy HH:mm",
-    "shortDate": "dd/MM/yyyy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "\u00a4-",
-        "negSuf": "",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "mt-mt",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  if (n == 0 || n == (n | 0) && n % 100 >= 2 && n % 100 <= 10) {   return PLURAL_CATEGORY.FEW;  }  if (n == (n | 0) && n % 100 >= 11 && n % 100 <= 19) {   return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_mt.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_mt.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_mt.js
deleted file mode 100644
index 753d21c..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_mt.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "QN",
-      "WN"
-    ],
-    "DAY": [
-      "Il-\u0126add",
-      "It-Tnejn",
-      "It-Tlieta",
-      "L-Erbg\u0127a",
-      "Il-\u0126amis",
-      "Il-\u0120img\u0127a",
-      "Is-Sibt"
-    ],
-    "MONTH": [
-      "Jannar",
-      "Frar",
-      "Marzu",
-      "April",
-      "Mejju",
-      "\u0120unju",
-      "Lulju",
-      "Awwissu",
-      "Settembru",
-      "Ottubru",
-      "Novembru",
-      "Di\u010bembru"
-    ],
-    "SHORTDAY": [
-      "\u0126ad",
-      "Tne",
-      "Tli",
-      "Erb",
-      "\u0126am",
-      "\u0120im",
-      "Sib"
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Fra",
-      "Mar",
-      "Apr",
-      "Mej",
-      "\u0120un",
-      "Lul",
-      "Aww",
-      "Set",
-      "Ott",
-      "Nov",
-      "Di\u010b"
-    ],
-    "fullDate": "EEEE, d 'ta'\u2019 MMMM y",
-    "longDate": "d 'ta'\u2019 MMMM y",
-    "medium": "dd MMM y HH:mm:ss",
-    "mediumDate": "dd MMM y",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yyyy HH:mm",
-    "shortDate": "dd/MM/yyyy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "\u00a4-",
-        "negSuf": "",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "mt",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  if (n == 0 || n == (n | 0) && n % 100 >= 2 && n % 100 <= 10) {   return PLURAL_CATEGORY.FEW;  }  if (n == (n | 0) && n % 100 >= 11 && n % 100 <= 19) {   return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl-aw.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl-aw.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl-aw.js
deleted file mode 100644
index 171035b..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl-aw.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "zondag",
-      "maandag",
-      "dinsdag",
-      "woensdag",
-      "donderdag",
-      "vrijdag",
-      "zaterdag"
-    ],
-    "MONTH": [
-      "januari",
-      "februari",
-      "maart",
-      "april",
-      "mei",
-      "juni",
-      "juli",
-      "augustus",
-      "september",
-      "oktober",
-      "november",
-      "december"
-    ],
-    "SHORTDAY": [
-      "zo",
-      "ma",
-      "di",
-      "wo",
-      "do",
-      "vr",
-      "za"
-    ],
-    "SHORTMONTH": [
-      "jan.",
-      "feb.",
-      "mrt.",
-      "apr.",
-      "mei",
-      "jun.",
-      "jul.",
-      "aug.",
-      "sep.",
-      "okt.",
-      "nov.",
-      "dec."
-    ],
-    "fullDate": "EEEE d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y HH:mm:ss",
-    "mediumDate": "d MMM y",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd-MM-yy HH:mm",
-    "shortDate": "dd-MM-yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "\u00a4\u00a0",
-        "negSuf": "-",
-        "posPre": "\u00a4\u00a0",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "nl-aw",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl-be.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl-be.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl-be.js
deleted file mode 100644
index 86158ab..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl-be.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "zondag",
-      "maandag",
-      "dinsdag",
-      "woensdag",
-      "donderdag",
-      "vrijdag",
-      "zaterdag"
-    ],
-    "MONTH": [
-      "januari",
-      "februari",
-      "maart",
-      "april",
-      "mei",
-      "juni",
-      "juli",
-      "augustus",
-      "september",
-      "oktober",
-      "november",
-      "december"
-    ],
-    "SHORTDAY": [
-      "zo",
-      "ma",
-      "di",
-      "wo",
-      "do",
-      "vr",
-      "za"
-    ],
-    "SHORTMONTH": [
-      "jan.",
-      "feb.",
-      "mrt.",
-      "apr.",
-      "mei",
-      "jun.",
-      "jul.",
-      "aug.",
-      "sep.",
-      "okt.",
-      "nov.",
-      "dec."
-    ],
-    "fullDate": "EEEE d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d-MMM-y HH:mm:ss",
-    "mediumDate": "d-MMM-y",
-    "mediumTime": "HH:mm:ss",
-    "short": "d/MM/yy HH:mm",
-    "shortDate": "d/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "\u00a4\u00a0",
-        "negSuf": "-",
-        "posPre": "\u00a4\u00a0",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "nl-be",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl-cw.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl-cw.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl-cw.js
deleted file mode 100644
index c3351b3..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl-cw.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "zondag",
-      "maandag",
-      "dinsdag",
-      "woensdag",
-      "donderdag",
-      "vrijdag",
-      "zaterdag"
-    ],
-    "MONTH": [
-      "januari",
-      "februari",
-      "maart",
-      "april",
-      "mei",
-      "juni",
-      "juli",
-      "augustus",
-      "september",
-      "oktober",
-      "november",
-      "december"
-    ],
-    "SHORTDAY": [
-      "zo",
-      "ma",
-      "di",
-      "wo",
-      "do",
-      "vr",
-      "za"
-    ],
-    "SHORTMONTH": [
-      "jan.",
-      "feb.",
-      "mrt.",
-      "apr.",
-      "mei",
-      "jun.",
-      "jul.",
-      "aug.",
-      "sep.",
-      "okt.",
-      "nov.",
-      "dec."
-    ],
-    "fullDate": "EEEE d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y HH:mm:ss",
-    "mediumDate": "d MMM y",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd-MM-yy HH:mm",
-    "shortDate": "dd-MM-yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "\u00a4\u00a0",
-        "negSuf": "-",
-        "posPre": "\u00a4\u00a0",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "nl-cw",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file


[60/71] [abbrv] brooklyn-ui git commit: Move util test specs to util/

Posted by he...@apache.org.
Move util test specs to util/


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/commit/817b10e5
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/tree/817b10e5
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/diff/817b10e5

Branch: refs/heads/0.7.0-incubating
Commit: 817b10e598ad36718f0d86d2ca2b4a26b95fa275
Parents: 86fdc10
Author: Sam Corbett <sa...@cloudsoftcorp.com>
Authored: Mon May 18 12:08:31 2015 +0100
Committer: Sam Corbett <sa...@cloudsoftcorp.com>
Committed: Fri May 29 14:38:52 2015 +0100

----------------------------------------------------------------------
 .../src/test/javascript/specs/brooklyn-spec.js  | 129 ----------------
 .../javascript/specs/brooklyn-utils-spec.js     | 151 -------------------
 .../test/javascript/specs/util/brooklyn-spec.js | 129 ++++++++++++++++
 .../specs/util/brooklyn-utils-spec.js           | 151 +++++++++++++++++++
 4 files changed, 280 insertions(+), 280 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/817b10e5/usage/jsgui/src/test/javascript/specs/brooklyn-spec.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/test/javascript/specs/brooklyn-spec.js b/usage/jsgui/src/test/javascript/specs/brooklyn-spec.js
deleted file mode 100644
index 3fcfcc2..0000000
--- a/usage/jsgui/src/test/javascript/specs/brooklyn-spec.js
+++ /dev/null
@@ -1,129 +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.
- */
-define([
-    "brooklyn", "backbone"
-], function (B, Backbone) {
-
-    describe("view", function () {
-        describe("form", function() {
-            var formTemplate = _.template('<form>' +
-                '<input name="id" type="text"/>' +
-                '<input name="initialvalue" type="text" value="present"/>' +
-                '<button type="submit" class="submit">Submit</button>' +
-                '</form>');
-
-            it("should set existing values on the model", function() {
-                var form = new B.view.Form({template: formTemplate, onSubmit: function() {}});
-                expect(form.model.get("initialvalue")).toBe("present");
-                expect(form.model.get("id")).toBe("");
-            });
-
-            it("should maintain a model as inputs change", function () {
-                var form = new B.view.Form({
-                    template: formTemplate,
-                    onSubmit: function() {}
-                });
-                // simulate id entry
-                form.$("[name=id]").val("987");
-                form.$("[name=id]").trigger("change");
-                expect(form.model.get("id")).toBe("987");
-            });
-
-            it("should call the onSubmit callback when the form is submitted", function () {
-                var wasCalled = false;
-                var onSubmit = function (model) {
-                    wasCalled = true;
-                };
-                var form = new B.view.Form({
-                    template: formTemplate,
-                    onSubmit: onSubmit
-                });
-                console.log(form.$(".submit"));
-                form.$("form").trigger("submit");
-                expect(wasCalled).toBe(true);
-            });
-
-            it("should fail if called without template or onSubmit", function () {
-                try {
-                    new B.view.Form({template: ""});
-                    fail;
-                } catch (e) {
-                    // expected
-                }
-                try {
-                    new B.view.Form({onSubmit: function() {}});
-                    fail;
-                } catch (e) {
-                    // expected
-                }
-
-            });
-        });
-    });
-
-    describe("_.stripComments", function () {
-        it("should strip a basic comment", function () {
-            var text = "<p>abc</p>\n <!-- comment-here --> <p>cba</p>";
-            expect(_.stripComments(text)).toBe("<p>abc</p>\n  <p>cba</p>");
-        });
-
-        it("should return an empty string for an empty comment", function () {
-            expect(_.stripComments("<!---->")).toBe("");
-            expect(_.stripComments("<!-- -->")).toBe("");
-        });
-
-        it("should strip multiple comments", function () {
-            var text = "a<!-- one -->b<!--two-->c<!-- three  -->";
-            expect(_.stripComments(text)).toBe("abc");
-        });
-
-        it("should strip trailing newlines", function () {
-            expect(_.stripComments("<!-- a -->\nb")).toBe("b");
-            expect(_.stripComments("<!-- a -->\rb")).toBe("b");
-        });
-
-        it("should leave text with no comments untouched", function () {
-            var text = "<p>abc</p>";
-            expect(_.stripComments(text)).toBe(text);
-        });
-
-        it("should remove the Apache license header from an HTML template", function () {
-            var text = "<!--\n" +
-                    "Licensed to the Apache Software Foundation (ASF) under one\n" +
-                    "or more contributor license agreements.  See the NOTICE file\n" +
-                    "distributed with this work for additional information\n" +
-                    "regarding copyright ownership.  The ASF licenses this file\n" +
-                    "to you under the Apache License, Version 2.0 (the\n" +
-                    "\"License\"); you may not use this file except in compliance\n" +
-                    "with the License.  You may obtain a copy of the License at\n" +
-                    "\n" +
-                     "http://www.apache.org/licenses/LICENSE-2.0\n" +
-                    "\n" +
-                    "Unless required by applicable law or agreed to in writing,\n" +
-                    "software distributed under the License is distributed on an\n" +
-                    "\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n" +
-                    "KIND, either express or implied.  See the License for the\n" +
-                    "specific language governing permissions and limitations\n" +
-                    "under the License.\n" +
-                    "-->\n" +
-                    "real content";
-            expect(_.stripComments(text)).toBe("real content");
-        });
-    });
-});
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/817b10e5/usage/jsgui/src/test/javascript/specs/brooklyn-utils-spec.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/test/javascript/specs/brooklyn-utils-spec.js b/usage/jsgui/src/test/javascript/specs/brooklyn-utils-spec.js
deleted file mode 100644
index 4c21f50..0000000
--- a/usage/jsgui/src/test/javascript/specs/brooklyn-utils-spec.js
+++ /dev/null
@@ -1,151 +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.
- */
-define([
-    'brooklyn-utils', "backbone"
-], function (Util, Backbone) {
-
-    describe('Rounding numbers', function () {
-
-        var round = Util.roundIfNumberToNumDecimalPlaces;
-
-        it("should round in the correct direction", function() {
-            // unchanged
-            expect(round(1, 2)).toBe(1);
-            expect(round(1.1, 1)).toBe(1.1);
-            expect(round(1.9, 1)).toBe(1.9);
-            expect(round(1.123123123, 6)).toBe(1.123123);
-            expect(round(-22.222, 3)).toBe(-22.222);
-
-            // up
-            expect(round(1.9, 0)).toBe(2);
-            expect(round(1.5, 0)).toBe(2);
-            expect(round(1.49, 1)).toBe(1.5);
-
-            // down
-            expect(round(1.01, 1)).toBe(1.0);
-            expect(round(1.49, 0)).toBe(1);
-            expect(round(1.249, 1)).toBe(1.2);
-            expect(round(1.0000000000000000000001, 0)).toBe(1);
-        });
-
-        it("should round negative numbers correctly", function() {
-            // up
-            expect(round(-10, 0)).toBe(-10);
-            expect(round(-10.49999, 0)).toBe(-10);
-
-            // down
-            expect(round(-10.5, 0)).toBe(-11);
-            expect(round(-10.50001, 0)).toBe(-11);
-            expect(round(-10.49999, 1)).toBe(-10.5);
-        });
-
-        it("should ignore non-numeric values", function() {
-            expect(round("xyz", 1)).toBe("xyz");
-            expect(round("2.4", 0)).toBe("2.4");
-            expect(round({a: 2}, 0)).toEqual({a: 2});
-        });
-
-        it("should ignore negative mantissas", function() {
-            expect(round(10.5, -1)).toBe(10.5);
-            expect(round(100, -1)).toBe(100);
-            expect(round(0, -1)).toBe(0);
-        });
-
-    });
-
-    describe("pathOf", function() {
-
-        it("should extract the path component of a URI", function() {
-            expect(Util.pathOf("http://www.example.com/path/to/resource#more?a=b&c=d")).toBe("/path/to/resource");
-        });
-
-        it("should return an empty path for an empty URL", function() {
-            expect(Util.pathOf("")).toBe("");
-        });
-
-        it("should handle input without domain", function() {
-            expect(Util.pathOf("/a/b/c/d#e")).toBe("/a/b/c/d");
-        })
-    });
-
-    describe("inputValue", function () {
-        it("should return inputs as strings", function () {
-            expect(Util.inputValue($('<input type="text" value="bob"/>'))).toBe("bob");
-            expect(Util.inputValue($('<textarea rows="10" cols="5">content</textarea>'))).toBe("content");
-        });
-
-        it("should return true/false for checkboxes", function () {
-            var input = $('<input type="checkbox" checked/>');
-            expect(Util.inputValue(input)).toBe(true);
-            input = $('<input type="checkbox" />');
-            expect(Util.inputValue(input)).toBe(false);
-        });
-    });
-
-    describe("bindModelFromForm", function () {
-        // pretend to be a Backbone model without bringing in Backbone as a dependency
-        var TestModel = Backbone.Model.extend({
-            urlRoot: function () {
-                return "/foo/bar/";
-            }
-        });
-        var form = $("<form>" +
-            "<input name='id' type='input' value='text'/>" +
-            "<input name='bool' type='checkbox' checked/>" +
-            "</form>");
-
-        it("should create a new model if given a constructor", function () {
-            var model = Util.bindModelFromForm(TestModel, form);
-            expect(model instanceof TestModel).toBe(true);
-            expect(model.url()).toBe("/foo/bar/text");
-            var inputs = model.attributes;
-            expect(_.keys(inputs).length).toBe(2);
-            expect(inputs.id).toBe("text");
-            expect(inputs.bool).toBe(true);
-        });
-
-        it("should update an existing model", function () {
-            var model = new TestModel({initialAttribute: "xyz"});
-            Util.bindModelFromForm(model, form);
-            var inputs = model.attributes;
-            expect(_.keys(inputs).length).toBe(3);
-            expect(inputs.id).toBe("text");
-            expect(inputs.bool).toBe(true);
-            expect(inputs.initialAttribute).toBe("xyz");
-        });
-    });
-
-    describe("extractError", function () {
-        it("should extract the response message", function () {
-            var m = Util.extractError({ responseText: '{"message": "hello"}'}, "default");
-            expect(m).toBe("hello");
-        });
-
-        it("should return the default on invalid JSON", function () {
-            var m = Util.extractError({ responseText: "<html></html>"}, "default");
-            expect(m).toBe("default");
-        });
-
-        it("should return the default if the response has no message", function () {
-            var m = Util.extractError({ a: '{"b": "c"}'}, "default");
-            expect(m).toBe("default");
-        });
-    });
-
-});

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/817b10e5/usage/jsgui/src/test/javascript/specs/util/brooklyn-spec.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/test/javascript/specs/util/brooklyn-spec.js b/usage/jsgui/src/test/javascript/specs/util/brooklyn-spec.js
new file mode 100644
index 0000000..3fcfcc2
--- /dev/null
+++ b/usage/jsgui/src/test/javascript/specs/util/brooklyn-spec.js
@@ -0,0 +1,129 @@
+/*
+ * 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.
+ */
+define([
+    "brooklyn", "backbone"
+], function (B, Backbone) {
+
+    describe("view", function () {
+        describe("form", function() {
+            var formTemplate = _.template('<form>' +
+                '<input name="id" type="text"/>' +
+                '<input name="initialvalue" type="text" value="present"/>' +
+                '<button type="submit" class="submit">Submit</button>' +
+                '</form>');
+
+            it("should set existing values on the model", function() {
+                var form = new B.view.Form({template: formTemplate, onSubmit: function() {}});
+                expect(form.model.get("initialvalue")).toBe("present");
+                expect(form.model.get("id")).toBe("");
+            });
+
+            it("should maintain a model as inputs change", function () {
+                var form = new B.view.Form({
+                    template: formTemplate,
+                    onSubmit: function() {}
+                });
+                // simulate id entry
+                form.$("[name=id]").val("987");
+                form.$("[name=id]").trigger("change");
+                expect(form.model.get("id")).toBe("987");
+            });
+
+            it("should call the onSubmit callback when the form is submitted", function () {
+                var wasCalled = false;
+                var onSubmit = function (model) {
+                    wasCalled = true;
+                };
+                var form = new B.view.Form({
+                    template: formTemplate,
+                    onSubmit: onSubmit
+                });
+                console.log(form.$(".submit"));
+                form.$("form").trigger("submit");
+                expect(wasCalled).toBe(true);
+            });
+
+            it("should fail if called without template or onSubmit", function () {
+                try {
+                    new B.view.Form({template: ""});
+                    fail;
+                } catch (e) {
+                    // expected
+                }
+                try {
+                    new B.view.Form({onSubmit: function() {}});
+                    fail;
+                } catch (e) {
+                    // expected
+                }
+
+            });
+        });
+    });
+
+    describe("_.stripComments", function () {
+        it("should strip a basic comment", function () {
+            var text = "<p>abc</p>\n <!-- comment-here --> <p>cba</p>";
+            expect(_.stripComments(text)).toBe("<p>abc</p>\n  <p>cba</p>");
+        });
+
+        it("should return an empty string for an empty comment", function () {
+            expect(_.stripComments("<!---->")).toBe("");
+            expect(_.stripComments("<!-- -->")).toBe("");
+        });
+
+        it("should strip multiple comments", function () {
+            var text = "a<!-- one -->b<!--two-->c<!-- three  -->";
+            expect(_.stripComments(text)).toBe("abc");
+        });
+
+        it("should strip trailing newlines", function () {
+            expect(_.stripComments("<!-- a -->\nb")).toBe("b");
+            expect(_.stripComments("<!-- a -->\rb")).toBe("b");
+        });
+
+        it("should leave text with no comments untouched", function () {
+            var text = "<p>abc</p>";
+            expect(_.stripComments(text)).toBe(text);
+        });
+
+        it("should remove the Apache license header from an HTML template", function () {
+            var text = "<!--\n" +
+                    "Licensed to the Apache Software Foundation (ASF) under one\n" +
+                    "or more contributor license agreements.  See the NOTICE file\n" +
+                    "distributed with this work for additional information\n" +
+                    "regarding copyright ownership.  The ASF licenses this file\n" +
+                    "to you under the Apache License, Version 2.0 (the\n" +
+                    "\"License\"); you may not use this file except in compliance\n" +
+                    "with the License.  You may obtain a copy of the License at\n" +
+                    "\n" +
+                     "http://www.apache.org/licenses/LICENSE-2.0\n" +
+                    "\n" +
+                    "Unless required by applicable law or agreed to in writing,\n" +
+                    "software distributed under the License is distributed on an\n" +
+                    "\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n" +
+                    "KIND, either express or implied.  See the License for the\n" +
+                    "specific language governing permissions and limitations\n" +
+                    "under the License.\n" +
+                    "-->\n" +
+                    "real content";
+            expect(_.stripComments(text)).toBe("real content");
+        });
+    });
+});
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/817b10e5/usage/jsgui/src/test/javascript/specs/util/brooklyn-utils-spec.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/test/javascript/specs/util/brooklyn-utils-spec.js b/usage/jsgui/src/test/javascript/specs/util/brooklyn-utils-spec.js
new file mode 100644
index 0000000..4c21f50
--- /dev/null
+++ b/usage/jsgui/src/test/javascript/specs/util/brooklyn-utils-spec.js
@@ -0,0 +1,151 @@
+/*
+ * 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.
+ */
+define([
+    'brooklyn-utils', "backbone"
+], function (Util, Backbone) {
+
+    describe('Rounding numbers', function () {
+
+        var round = Util.roundIfNumberToNumDecimalPlaces;
+
+        it("should round in the correct direction", function() {
+            // unchanged
+            expect(round(1, 2)).toBe(1);
+            expect(round(1.1, 1)).toBe(1.1);
+            expect(round(1.9, 1)).toBe(1.9);
+            expect(round(1.123123123, 6)).toBe(1.123123);
+            expect(round(-22.222, 3)).toBe(-22.222);
+
+            // up
+            expect(round(1.9, 0)).toBe(2);
+            expect(round(1.5, 0)).toBe(2);
+            expect(round(1.49, 1)).toBe(1.5);
+
+            // down
+            expect(round(1.01, 1)).toBe(1.0);
+            expect(round(1.49, 0)).toBe(1);
+            expect(round(1.249, 1)).toBe(1.2);
+            expect(round(1.0000000000000000000001, 0)).toBe(1);
+        });
+
+        it("should round negative numbers correctly", function() {
+            // up
+            expect(round(-10, 0)).toBe(-10);
+            expect(round(-10.49999, 0)).toBe(-10);
+
+            // down
+            expect(round(-10.5, 0)).toBe(-11);
+            expect(round(-10.50001, 0)).toBe(-11);
+            expect(round(-10.49999, 1)).toBe(-10.5);
+        });
+
+        it("should ignore non-numeric values", function() {
+            expect(round("xyz", 1)).toBe("xyz");
+            expect(round("2.4", 0)).toBe("2.4");
+            expect(round({a: 2}, 0)).toEqual({a: 2});
+        });
+
+        it("should ignore negative mantissas", function() {
+            expect(round(10.5, -1)).toBe(10.5);
+            expect(round(100, -1)).toBe(100);
+            expect(round(0, -1)).toBe(0);
+        });
+
+    });
+
+    describe("pathOf", function() {
+
+        it("should extract the path component of a URI", function() {
+            expect(Util.pathOf("http://www.example.com/path/to/resource#more?a=b&c=d")).toBe("/path/to/resource");
+        });
+
+        it("should return an empty path for an empty URL", function() {
+            expect(Util.pathOf("")).toBe("");
+        });
+
+        it("should handle input without domain", function() {
+            expect(Util.pathOf("/a/b/c/d#e")).toBe("/a/b/c/d");
+        })
+    });
+
+    describe("inputValue", function () {
+        it("should return inputs as strings", function () {
+            expect(Util.inputValue($('<input type="text" value="bob"/>'))).toBe("bob");
+            expect(Util.inputValue($('<textarea rows="10" cols="5">content</textarea>'))).toBe("content");
+        });
+
+        it("should return true/false for checkboxes", function () {
+            var input = $('<input type="checkbox" checked/>');
+            expect(Util.inputValue(input)).toBe(true);
+            input = $('<input type="checkbox" />');
+            expect(Util.inputValue(input)).toBe(false);
+        });
+    });
+
+    describe("bindModelFromForm", function () {
+        // pretend to be a Backbone model without bringing in Backbone as a dependency
+        var TestModel = Backbone.Model.extend({
+            urlRoot: function () {
+                return "/foo/bar/";
+            }
+        });
+        var form = $("<form>" +
+            "<input name='id' type='input' value='text'/>" +
+            "<input name='bool' type='checkbox' checked/>" +
+            "</form>");
+
+        it("should create a new model if given a constructor", function () {
+            var model = Util.bindModelFromForm(TestModel, form);
+            expect(model instanceof TestModel).toBe(true);
+            expect(model.url()).toBe("/foo/bar/text");
+            var inputs = model.attributes;
+            expect(_.keys(inputs).length).toBe(2);
+            expect(inputs.id).toBe("text");
+            expect(inputs.bool).toBe(true);
+        });
+
+        it("should update an existing model", function () {
+            var model = new TestModel({initialAttribute: "xyz"});
+            Util.bindModelFromForm(model, form);
+            var inputs = model.attributes;
+            expect(_.keys(inputs).length).toBe(3);
+            expect(inputs.id).toBe("text");
+            expect(inputs.bool).toBe(true);
+            expect(inputs.initialAttribute).toBe("xyz");
+        });
+    });
+
+    describe("extractError", function () {
+        it("should extract the response message", function () {
+            var m = Util.extractError({ responseText: '{"message": "hello"}'}, "default");
+            expect(m).toBe("hello");
+        });
+
+        it("should return the default on invalid JSON", function () {
+            var m = Util.extractError({ responseText: "<html></html>"}, "default");
+            expect(m).toBe("default");
+        });
+
+        it("should return the default if the response has no message", function () {
+            var m = Util.extractError({ a: '{"b": "c"}'}, "default");
+            expect(m).toBe("default");
+        });
+    });
+
+});


[23/71] [abbrv] brooklyn-ui git commit: Move mobile app to sandbox

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-resource.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-resource.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-resource.js
deleted file mode 100644
index 1c4b71f..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-resource.js
+++ /dev/null
@@ -1,619 +0,0 @@
-/**
- * @license AngularJS v1.2.19
- * (c) 2010-2014 Google, Inc. http://angularjs.org
- * License: MIT
- */
-(function(window, angular, undefined) {'use strict';
-
-var $resourceMinErr = angular.$$minErr('$resource');
-
-// Helper functions and regex to lookup a dotted path on an object
-// stopping at undefined/null.  The path must be composed of ASCII
-// identifiers (just like $parse)
-var MEMBER_NAME_REGEX = /^(\.[a-zA-Z_$][0-9a-zA-Z_$]*)+$/;
-
-function isValidDottedPath(path) {
-  return (path != null && path !== '' && path !== 'hasOwnProperty' &&
-      MEMBER_NAME_REGEX.test('.' + path));
-}
-
-function lookupDottedPath(obj, path) {
-  if (!isValidDottedPath(path)) {
-    throw $resourceMinErr('badmember', 'Dotted member path "@{0}" is invalid.', path);
-  }
-  var keys = path.split('.');
-  for (var i = 0, ii = keys.length; i < ii && obj !== undefined; i++) {
-    var key = keys[i];
-    obj = (obj !== null) ? obj[key] : undefined;
-  }
-  return obj;
-}
-
-/**
- * Create a shallow copy of an object and clear other fields from the destination
- */
-function shallowClearAndCopy(src, dst) {
-  dst = dst || {};
-
-  angular.forEach(dst, function(value, key){
-    delete dst[key];
-  });
-
-  for (var key in src) {
-    if (src.hasOwnProperty(key) && !(key.charAt(0) === '$' && key.charAt(1) === '$')) {
-      dst[key] = src[key];
-    }
-  }
-
-  return dst;
-}
-
-/**
- * @ngdoc module
- * @name ngResource
- * @description
- *
- * # ngResource
- *
- * The `ngResource` module provides interaction support with RESTful services
- * via the $resource service.
- *
- *
- * <div doc-module-components="ngResource"></div>
- *
- * See {@link ngResource.$resource `$resource`} for usage.
- */
-
-/**
- * @ngdoc service
- * @name $resource
- * @requires $http
- *
- * @description
- * A factory which creates a resource object that lets you interact with
- * [RESTful](http://en.wikipedia.org/wiki/Representational_State_Transfer) server-side data sources.
- *
- * The returned resource object has action methods which provide high-level behaviors without
- * the need to interact with the low level {@link ng.$http $http} service.
- *
- * Requires the {@link ngResource `ngResource`} module to be installed.
- *
- * @param {string} url A parametrized URL template with parameters prefixed by `:` as in
- *   `/user/:username`. If you are using a URL with a port number (e.g.
- *   `http://example.com:8080/api`), it will be respected.
- *
- *   If you are using a url with a suffix, just add the suffix, like this:
- *   `$resource('http://example.com/resource.json')` or `$resource('http://example.com/:id.json')`
- *   or even `$resource('http://example.com/resource/:resource_id.:format')`
- *   If the parameter before the suffix is empty, :resource_id in this case, then the `/.` will be
- *   collapsed down to a single `.`.  If you need this sequence to appear and not collapse then you
- *   can escape it with `/\.`.
- *
- * @param {Object=} paramDefaults Default values for `url` parameters. These can be overridden in
- *   `actions` methods. If any of the parameter value is a function, it will be executed every time
- *   when a param value needs to be obtained for a request (unless the param was overridden).
- *
- *   Each key value in the parameter object is first bound to url template if present and then any
- *   excess keys are appended to the url search query after the `?`.
- *
- *   Given a template `/path/:verb` and parameter `{verb:'greet', salutation:'Hello'}` results in
- *   URL `/path/greet?salutation=Hello`.
- *
- *   If the parameter value is prefixed with `@` then the value of that parameter will be taken
- *   from the corresponding key on the data object (useful for non-GET operations).
- *
- * @param {Object.<Object>=} actions Hash with declaration of custom action that should extend
- *   the default set of resource actions. The declaration should be created in the format of {@link
- *   ng.$http#usage_parameters $http.config}:
- *
- *       {action1: {method:?, params:?, isArray:?, headers:?, ...},
- *        action2: {method:?, params:?, isArray:?, headers:?, ...},
- *        ...}
- *
- *   Where:
- *
- *   - **`action`** – {string} – The name of action. This name becomes the name of the method on
- *     your resource object.
- *   - **`method`** – {string} – HTTP request method. Valid methods are: `GET`, `POST`, `PUT`,
- *     `DELETE`, and `JSONP`.
- *   - **`params`** – {Object=} – Optional set of pre-bound parameters for this action. If any of
- *     the parameter value is a function, it will be executed every time when a param value needs to
- *     be obtained for a request (unless the param was overridden).
- *   - **`url`** – {string} – action specific `url` override. The url templating is supported just
- *     like for the resource-level urls.
- *   - **`isArray`** – {boolean=} – If true then the returned object for this action is an array,
- *     see `returns` section.
- *   - **`transformRequest`** –
- *     `{function(data, headersGetter)|Array.<function(data, headersGetter)>}` –
- *     transform function or an array of such functions. The transform function takes the http
- *     request body and headers and returns its transformed (typically serialized) version.
- *   - **`transformResponse`** –
- *     `{function(data, headersGetter)|Array.<function(data, headersGetter)>}` –
- *     transform function or an array of such functions. The transform function takes the http
- *     response body and headers and returns its transformed (typically deserialized) version.
- *   - **`cache`** – `{boolean|Cache}` – If true, a default $http cache will be used to cache the
- *     GET request, otherwise if a cache instance built with
- *     {@link ng.$cacheFactory $cacheFactory}, this cache will be used for
- *     caching.
- *   - **`timeout`** – `{number|Promise}` – timeout in milliseconds, or {@link ng.$q promise} that
- *     should abort the request when resolved.
- *   - **`withCredentials`** - `{boolean}` - whether to set the `withCredentials` flag on the
- *     XHR object. See
- *     [requests with credentials](https://developer.mozilla.org/en/http_access_control#section_5)
- *     for more information.
- *   - **`responseType`** - `{string}` - see
- *     [requestType](https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest#responseType).
- *   - **`interceptor`** - `{Object=}` - The interceptor object has two optional methods -
- *     `response` and `responseError`. Both `response` and `responseError` interceptors get called
- *     with `http response` object. See {@link ng.$http $http interceptors}.
- *
- * @returns {Object} A resource "class" object with methods for the default set of resource actions
- *   optionally extended with custom `actions`. The default set contains these actions:
- *   ```js
- *   { 'get':    {method:'GET'},
- *     'save':   {method:'POST'},
- *     'query':  {method:'GET', isArray:true},
- *     'remove': {method:'DELETE'},
- *     'delete': {method:'DELETE'} };
- *   ```
- *
- *   Calling these methods invoke an {@link ng.$http} with the specified http method,
- *   destination and parameters. When the data is returned from the server then the object is an
- *   instance of the resource class. The actions `save`, `remove` and `delete` are available on it
- *   as  methods with the `$` prefix. This allows you to easily perform CRUD operations (create,
- *   read, update, delete) on server-side data like this:
- *   ```js
- *   var User = $resource('/user/:userId', {userId:'@id'});
- *   var user = User.get({userId:123}, function() {
- *     user.abc = true;
- *     user.$save();
- *   });
- *   ```
- *
- *   It is important to realize that invoking a $resource object method immediately returns an
- *   empty reference (object or array depending on `isArray`). Once the data is returned from the
- *   server the existing reference is populated with the actual data. This is a useful trick since
- *   usually the resource is assigned to a model which is then rendered by the view. Having an empty
- *   object results in no rendering, once the data arrives from the server then the object is
- *   populated with the data and the view automatically re-renders itself showing the new data. This
- *   means that in most cases one never has to write a callback function for the action methods.
- *
- *   The action methods on the class object or instance object can be invoked with the following
- *   parameters:
- *
- *   - HTTP GET "class" actions: `Resource.action([parameters], [success], [error])`
- *   - non-GET "class" actions: `Resource.action([parameters], postData, [success], [error])`
- *   - non-GET instance actions:  `instance.$action([parameters], [success], [error])`
- *
- *   Success callback is called with (value, responseHeaders) arguments. Error callback is called
- *   with (httpResponse) argument.
- *
- *   Class actions return empty instance (with additional properties below).
- *   Instance actions return promise of the action.
- *
- *   The Resource instances and collection have these additional properties:
- *
- *   - `$promise`: the {@link ng.$q promise} of the original server interaction that created this
- *     instance or collection.
- *
- *     On success, the promise is resolved with the same resource instance or collection object,
- *     updated with data from server. This makes it easy to use in
- *     {@link ngRoute.$routeProvider resolve section of $routeProvider.when()} to defer view
- *     rendering until the resource(s) are loaded.
- *
- *     On failure, the promise is resolved with the {@link ng.$http http response} object, without
- *     the `resource` property.
- *
- *     If an interceptor object was provided, the promise will instead be resolved with the value
- *     returned by the interceptor.
- *
- *   - `$resolved`: `true` after first server interaction is completed (either with success or
- *      rejection), `false` before that. Knowing if the Resource has been resolved is useful in
- *      data-binding.
- *
- * @example
- *
- * # Credit card resource
- *
- * ```js
-     // Define CreditCard class
-     var CreditCard = $resource('/user/:userId/card/:cardId',
-      {userId:123, cardId:'@id'}, {
-       charge: {method:'POST', params:{charge:true}}
-      });
-
-     // We can retrieve a collection from the server
-     var cards = CreditCard.query(function() {
-       // GET: /user/123/card
-       // server returns: [ {id:456, number:'1234', name:'Smith'} ];
-
-       var card = cards[0];
-       // each item is an instance of CreditCard
-       expect(card instanceof CreditCard).toEqual(true);
-       card.name = "J. Smith";
-       // non GET methods are mapped onto the instances
-       card.$save();
-       // POST: /user/123/card/456 {id:456, number:'1234', name:'J. Smith'}
-       // server returns: {id:456, number:'1234', name: 'J. Smith'};
-
-       // our custom method is mapped as well.
-       card.$charge({amount:9.99});
-       // POST: /user/123/card/456?amount=9.99&charge=true {id:456, number:'1234', name:'J. Smith'}
-     });
-
-     // we can create an instance as well
-     var newCard = new CreditCard({number:'0123'});
-     newCard.name = "Mike Smith";
-     newCard.$save();
-     // POST: /user/123/card {number:'0123', name:'Mike Smith'}
-     // server returns: {id:789, number:'0123', name: 'Mike Smith'};
-     expect(newCard.id).toEqual(789);
- * ```
- *
- * The object returned from this function execution is a resource "class" which has "static" method
- * for each action in the definition.
- *
- * Calling these methods invoke `$http` on the `url` template with the given `method`, `params` and
- * `headers`.
- * When the data is returned from the server then the object is an instance of the resource type and
- * all of the non-GET methods are available with `$` prefix. This allows you to easily support CRUD
- * operations (create, read, update, delete) on server-side data.
-
-   ```js
-     var User = $resource('/user/:userId', {userId:'@id'});
-     User.get({userId:123}, function(user) {
-       user.abc = true;
-       user.$save();
-     });
-   ```
- *
- * It's worth noting that the success callback for `get`, `query` and other methods gets passed
- * in the response that came from the server as well as $http header getter function, so one
- * could rewrite the above example and get access to http headers as:
- *
-   ```js
-     var User = $resource('/user/:userId', {userId:'@id'});
-     User.get({userId:123}, function(u, getResponseHeaders){
-       u.abc = true;
-       u.$save(function(u, putResponseHeaders) {
-         //u => saved user object
-         //putResponseHeaders => $http header getter
-       });
-     });
-   ```
- *
- * You can also access the raw `$http` promise via the `$promise` property on the object returned
- *
-   ```
-     var User = $resource('/user/:userId', {userId:'@id'});
-     User.get({userId:123})
-         .$promise.then(function(user) {
-           $scope.user = user;
-         });
-   ```
-
- * # Creating a custom 'PUT' request
- * In this example we create a custom method on our resource to make a PUT request
- * ```js
- *		var app = angular.module('app', ['ngResource', 'ngRoute']);
- *
- *		// Some APIs expect a PUT request in the format URL/object/ID
- *		// Here we are creating an 'update' method
- *		app.factory('Notes', ['$resource', function($resource) {
- *    return $resource('/notes/:id', null,
- *        {
- *            'update': { method:'PUT' }
- *        });
- *		}]);
- *
- *		// In our controller we get the ID from the URL using ngRoute and $routeParams
- *		// We pass in $routeParams and our Notes factory along with $scope
- *		app.controller('NotesCtrl', ['$scope', '$routeParams', 'Notes',
-                                      function($scope, $routeParams, Notes) {
- *    // First get a note object from the factory
- *    var note = Notes.get({ id:$routeParams.id });
- *    $id = note.id;
- *
- *    // Now call update passing in the ID first then the object you are updating
- *    Notes.update({ id:$id }, note);
- *
- *    // This will PUT /notes/ID with the note object in the request payload
- *		}]);
- * ```
- */
-angular.module('ngResource', ['ng']).
-  factory('$resource', ['$http', '$q', function($http, $q) {
-
-    var DEFAULT_ACTIONS = {
-      'get':    {method:'GET'},
-      'save':   {method:'POST'},
-      'query':  {method:'GET', isArray:true},
-      'remove': {method:'DELETE'},
-      'delete': {method:'DELETE'}
-    };
-    var noop = angular.noop,
-        forEach = angular.forEach,
-        extend = angular.extend,
-        copy = angular.copy,
-        isFunction = angular.isFunction;
-
-    /**
-     * 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' : '+'));
-    }
-
-    function Route(template, defaults) {
-      this.template = template;
-      this.defaults = defaults || {};
-      this.urlParams = {};
-    }
-
-    Route.prototype = {
-      setUrlParams: function(config, params, actionUrl) {
-        var self = this,
-            url = actionUrl || self.template,
-            val,
-            encodedVal;
-
-        var urlParams = self.urlParams = {};
-        forEach(url.split(/\W/), function(param){
-          if (param === 'hasOwnProperty') {
-            throw $resourceMinErr('badname', "hasOwnProperty is not a valid parameter name.");
-          }
-          if (!(new RegExp("^\\d+$").test(param)) && param &&
-               (new RegExp("(^|[^\\\\]):" + param + "(\\W|$)").test(url))) {
-            urlParams[param] = true;
-          }
-        });
-        url = url.replace(/\\:/g, ':');
-
-        params = params || {};
-        forEach(self.urlParams, function(_, urlParam){
-          val = params.hasOwnProperty(urlParam) ? params[urlParam] : self.defaults[urlParam];
-          if (angular.isDefined(val) && val !== null) {
-            encodedVal = encodeUriSegment(val);
-            url = url.replace(new RegExp(":" + urlParam + "(\\W|$)", "g"), function(match, p1) {
-              return encodedVal + p1;
-            });
-          } else {
-            url = url.replace(new RegExp("(\/?):" + urlParam + "(\\W|$)", "g"), function(match,
-                leadingSlashes, tail) {
-              if (tail.charAt(0) == '/') {
-                return tail;
-              } else {
-                return leadingSlashes + tail;
-              }
-            });
-          }
-        });
-
-        // strip trailing slashes and set the url
-        url = url.replace(/\/+$/, '') || '/';
-        // then replace collapse `/.` if found in the last URL path segment before the query
-        // E.g. `http://url.com/id./format?q=x` becomes `http://url.com/id.format?q=x`
-        url = url.replace(/\/\.(?=\w+($|\?))/, '.');
-        // replace escaped `/\.` with `/.`
-        config.url = url.replace(/\/\\\./, '/.');
-
-
-        // set params - delegate param encoding to $http
-        forEach(params, function(value, key){
-          if (!self.urlParams[key]) {
-            config.params = config.params || {};
-            config.params[key] = value;
-          }
-        });
-      }
-    };
-
-
-    function resourceFactory(url, paramDefaults, actions) {
-      var route = new Route(url);
-
-      actions = extend({}, DEFAULT_ACTIONS, actions);
-
-      function extractParams(data, actionParams){
-        var ids = {};
-        actionParams = extend({}, paramDefaults, actionParams);
-        forEach(actionParams, function(value, key){
-          if (isFunction(value)) { value = value(); }
-          ids[key] = value && value.charAt && value.charAt(0) == '@' ?
-            lookupDottedPath(data, value.substr(1)) : value;
-        });
-        return ids;
-      }
-
-      function defaultResponseInterceptor(response) {
-        return response.resource;
-      }
-
-      function Resource(value){
-        shallowClearAndCopy(value || {}, this);
-      }
-
-      forEach(actions, function(action, name) {
-        var hasBody = /^(POST|PUT|PATCH)$/i.test(action.method);
-
-        Resource[name] = function(a1, a2, a3, a4) {
-          var params = {}, data, success, error;
-
-          /* jshint -W086 */ /* (purposefully fall through case statements) */
-          switch(arguments.length) {
-          case 4:
-            error = a4;
-            success = a3;
-            //fallthrough
-          case 3:
-          case 2:
-            if (isFunction(a2)) {
-              if (isFunction(a1)) {
-                success = a1;
-                error = a2;
-                break;
-              }
-
-              success = a2;
-              error = a3;
-              //fallthrough
-            } else {
-              params = a1;
-              data = a2;
-              success = a3;
-              break;
-            }
-          case 1:
-            if (isFunction(a1)) success = a1;
-            else if (hasBody) data = a1;
-            else params = a1;
-            break;
-          case 0: break;
-          default:
-            throw $resourceMinErr('badargs',
-              "Expected up to 4 arguments [params, data, success, error], got {0} arguments",
-              arguments.length);
-          }
-          /* jshint +W086 */ /* (purposefully fall through case statements) */
-
-          var isInstanceCall = this instanceof Resource;
-          var value = isInstanceCall ? data : (action.isArray ? [] : new Resource(data));
-          var httpConfig = {};
-          var responseInterceptor = action.interceptor && action.interceptor.response ||
-                                    defaultResponseInterceptor;
-          var responseErrorInterceptor = action.interceptor && action.interceptor.responseError ||
-                                    undefined;
-
-          forEach(action, function(value, key) {
-            if (key != 'params' && key != 'isArray' && key != 'interceptor') {
-              httpConfig[key] = copy(value);
-            }
-          });
-
-          if (hasBody) httpConfig.data = data;
-          route.setUrlParams(httpConfig,
-                             extend({}, extractParams(data, action.params || {}), params),
-                             action.url);
-
-          var promise = $http(httpConfig).then(function (response) {
-            var data = response.data,
-              promise = value.$promise;
-
-            if (data) {
-              // Need to convert action.isArray to boolean in case it is undefined
-              // jshint -W018
-              if (angular.isArray(data) !== (!!action.isArray)) {
-                throw $resourceMinErr('badcfg',
-                    'Error in resource configuration. Expected ' +
-                    'response to contain an {0} but got an {1}',
-                  action.isArray ? 'array' : 'object',
-                  angular.isArray(data) ? 'array' : 'object');
-              }
-              // jshint +W018
-              if (action.isArray) {
-                value.length = 0;
-                forEach(data, function (item) {
-                  if (typeof item === "object") {
-                    value.push(new Resource(item));
-                  } else {
-                    // Valid JSON values may be string literals, and these should not be converted
-                    // into objects. These items will not have access to the Resource prototype
-                    // methods, but unfortunately there
-                    value.push(item);
-                  }
-                });
-              } else {
-                shallowClearAndCopy(data, value);
-                value.$promise = promise;
-              }
-            }
-
-            value.$resolved = true;
-
-            response.resource = value;
-
-            return response;
-          }, function(response) {
-            value.$resolved = true;
-
-            (error||noop)(response);
-
-            return $q.reject(response);
-          });
-
-          promise = promise.then(
-              function(response) {
-                var value = responseInterceptor(response);
-                (success||noop)(value, response.headers);
-                return value;
-              },
-              responseErrorInterceptor);
-
-          if (!isInstanceCall) {
-            // we are creating instance / collection
-            // - set the initial promise
-            // - return the instance / collection
-            value.$promise = promise;
-            value.$resolved = false;
-
-            return value;
-          }
-
-          // instance call
-          return promise;
-        };
-
-
-        Resource.prototype['$' + name] = function(params, success, error) {
-          if (isFunction(params)) {
-            error = success; success = params; params = {};
-          }
-          var result = Resource[name].call(this, params, this, success, error);
-          return result.$promise || result;
-        };
-      });
-
-      Resource.bind = function(additionalParamDefaults){
-        return resourceFactory(url, extend({}, paramDefaults, additionalParamDefaults), actions);
-      };
-
-      return Resource;
-    }
-
-    return resourceFactory;
-  }]);
-
-
-})(window, window.angular);

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-resource.min.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-resource.min.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-resource.min.js
deleted file mode 100644
index 17e607d..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-resource.min.js
+++ /dev/null
@@ -1,13 +0,0 @@
-/*
- AngularJS v1.2.19
- (c) 2010-2014 Google, Inc. http://angularjs.org
- License: MIT
-*/
-(function(H,a,A){'use strict';function D(p,g){g=g||{};a.forEach(g,function(a,c){delete g[c]});for(var c in p)!p.hasOwnProperty(c)||"$"===c.charAt(0)&&"$"===c.charAt(1)||(g[c]=p[c]);return g}var v=a.$$minErr("$resource"),C=/^(\.[a-zA-Z_$][0-9a-zA-Z_$]*)+$/;a.module("ngResource",["ng"]).factory("$resource",["$http","$q",function(p,g){function c(a,c){this.template=a;this.defaults=c||{};this.urlParams={}}function t(n,w,l){function r(h,d){var e={};d=x({},w,d);s(d,function(b,d){u(b)&&(b=b());var k;if(b&&
-b.charAt&&"@"==b.charAt(0)){k=h;var a=b.substr(1);if(null==a||""===a||"hasOwnProperty"===a||!C.test("."+a))throw v("badmember",a);for(var a=a.split("."),f=0,c=a.length;f<c&&k!==A;f++){var g=a[f];k=null!==k?k[g]:A}}else k=b;e[d]=k});return e}function e(a){return a.resource}function f(a){D(a||{},this)}var F=new c(n);l=x({},B,l);s(l,function(h,d){var c=/^(POST|PUT|PATCH)$/i.test(h.method);f[d]=function(b,d,k,w){var q={},n,l,y;switch(arguments.length){case 4:y=w,l=k;case 3:case 2:if(u(d)){if(u(b)){l=
-b;y=d;break}l=d;y=k}else{q=b;n=d;l=k;break}case 1:u(b)?l=b:c?n=b:q=b;break;case 0:break;default:throw v("badargs",arguments.length);}var t=this instanceof f,m=t?n:h.isArray?[]:new f(n),z={},B=h.interceptor&&h.interceptor.response||e,C=h.interceptor&&h.interceptor.responseError||A;s(h,function(a,b){"params"!=b&&("isArray"!=b&&"interceptor"!=b)&&(z[b]=G(a))});c&&(z.data=n);F.setUrlParams(z,x({},r(n,h.params||{}),q),h.url);q=p(z).then(function(b){var d=b.data,k=m.$promise;if(d){if(a.isArray(d)!==!!h.isArray)throw v("badcfg",
-h.isArray?"array":"object",a.isArray(d)?"array":"object");h.isArray?(m.length=0,s(d,function(b){"object"===typeof b?m.push(new f(b)):m.push(b)})):(D(d,m),m.$promise=k)}m.$resolved=!0;b.resource=m;return b},function(b){m.$resolved=!0;(y||E)(b);return g.reject(b)});q=q.then(function(b){var a=B(b);(l||E)(a,b.headers);return a},C);return t?q:(m.$promise=q,m.$resolved=!1,m)};f.prototype["$"+d]=function(b,a,k){u(b)&&(k=a,a=b,b={});b=f[d].call(this,b,this,a,k);return b.$promise||b}});f.bind=function(a){return t(n,
-x({},w,a),l)};return f}var B={get:{method:"GET"},save:{method:"POST"},query:{method:"GET",isArray:!0},remove:{method:"DELETE"},"delete":{method:"DELETE"}},E=a.noop,s=a.forEach,x=a.extend,G=a.copy,u=a.isFunction;c.prototype={setUrlParams:function(c,g,l){var r=this,e=l||r.template,f,p,h=r.urlParams={};s(e.split(/\W/),function(a){if("hasOwnProperty"===a)throw v("badname");!/^\d+$/.test(a)&&(a&&RegExp("(^|[^\\\\]):"+a+"(\\W|$)").test(e))&&(h[a]=!0)});e=e.replace(/\\:/g,":");g=g||{};s(r.urlParams,function(d,
-c){f=g.hasOwnProperty(c)?g[c]:r.defaults[c];a.isDefined(f)&&null!==f?(p=encodeURIComponent(f).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"%20").replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+"),e=e.replace(RegExp(":"+c+"(\\W|$)","g"),function(a,c){return p+c})):e=e.replace(RegExp("(/?):"+c+"(\\W|$)","g"),function(a,c,d){return"/"==d.charAt(0)?d:c+d})});e=e.replace(/\/+$/,"")||"/";e=e.replace(/\/\.(?=\w+($|\?))/,".");c.url=e.replace(/\/\\\./,
-"/.");s(g,function(a,e){r.urlParams[e]||(c.params=c.params||{},c.params[e]=a)})}};return t}])})(window,window.angular);
-//# sourceMappingURL=angular-resource.min.js.map

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-resource.min.js.map
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-resource.min.js.map b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-resource.min.js.map
deleted file mode 100644
index 984d89b..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-resource.min.js.map
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-"version":3,
-"file":"angular-resource.min.js",
-"lineCount":12,
-"mappings":"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",
-"sources":["angular-resource.js"],
-"names":["window","angular","undefined","shallowClearAndCopy","src","dst","forEach","value","key","hasOwnProperty","charAt","$resourceMinErr","$$minErr","MEMBER_NAME_REGEX","module","factory","$http","$q","Route","template","defaults","urlParams","resourceFactory","url","paramDefaults","actions","extractParams","data","actionParams","ids","extend","isFunction","path","test","keys","split","i","ii","length","obj","defaultResponseInterceptor","response","resource","Resource","route","DEFAULT_ACTIONS","action","name","hasBody","method","a1","a2","a3","a4","params","success","error","arguments","isInstanceCall","isArray","httpConfig","responseInterceptor","interceptor","responseErrorInterceptor","responseError","copy","setUrlParams","promise","then","$promise","item","push","$resolved","noop","reject","headers","prototype","result","call","bind","Resource.bind","additionalParamDefaults","config","actionUrl","self","val","encodedVal","param","RegExp","replace","_","urlParam","isDefined",
 "encodeURIComponent","match","p1","leadingSlashes","tail"]
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-route.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-route.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-route.js
deleted file mode 100644
index 1fdafd3..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-route.js
+++ /dev/null
@@ -1,927 +0,0 @@
-/**
- * @license AngularJS v1.2.19
- * (c) 2010-2014 Google, Inc. http://angularjs.org
- * License: MIT
- */
-(function(window, angular, undefined) {'use strict';
-
-/**
- * @ngdoc module
- * @name ngRoute
- * @description
- *
- * # ngRoute
- *
- * The `ngRoute` module provides routing and deeplinking services and directives for angular apps.
- *
- * ## Example
- * See {@link ngRoute.$route#example $route} for an example of configuring and using `ngRoute`.
- *
- *
- * <div doc-module-components="ngRoute"></div>
- */
- /* global -ngRouteModule */
-var ngRouteModule = angular.module('ngRoute', ['ng']).
-                        provider('$route', $RouteProvider);
-
-/**
- * @ngdoc provider
- * @name $routeProvider
- * @kind function
- *
- * @description
- *
- * Used for configuring routes.
- *
- * ## Example
- * See {@link ngRoute.$route#example $route} for an example of configuring and using `ngRoute`.
- *
- * ## Dependencies
- * Requires the {@link ngRoute `ngRoute`} module to be installed.
- */
-function $RouteProvider(){
-  function inherit(parent, extra) {
-    return angular.extend(new (angular.extend(function() {}, {prototype:parent}))(), extra);
-  }
-
-  var routes = {};
-
-  /**
-   * @ngdoc method
-   * @name $routeProvider#when
-   *
-   * @param {string} path Route path (matched against `$location.path`). If `$location.path`
-   *    contains redundant trailing slash or is missing one, the route will still match and the
-   *    `$location.path` will be updated to add or drop the trailing slash to exactly match the
-   *    route definition.
-   *
-   *    * `path` can contain named groups starting with a colon: e.g. `:name`. All characters up
-   *        to the next slash are matched and stored in `$routeParams` under the given `name`
-   *        when the route matches.
-   *    * `path` can contain named groups starting with a colon and ending with a star:
-   *        e.g.`:name*`. All characters are eagerly stored in `$routeParams` under the given `name`
-   *        when the route matches.
-   *    * `path` can contain optional named groups with a question mark: e.g.`:name?`.
-   *
-   *    For example, routes like `/color/:color/largecode/:largecode*\/edit` will match
-   *    `/color/brown/largecode/code/with/slashes/edit` and extract:
-   *
-   *    * `color: brown`
-   *    * `largecode: code/with/slashes`.
-   *
-   *
-   * @param {Object} route Mapping information to be assigned to `$route.current` on route
-   *    match.
-   *
-   *    Object properties:
-   *
-   *    - `controller` – `{(string|function()=}` – Controller fn that should be associated with
-   *      newly created scope or the name of a {@link angular.Module#controller registered
-   *      controller} if passed as a string.
-   *    - `controllerAs` – `{string=}` – A controller alias name. If present the controller will be
-   *      published to scope under the `controllerAs` name.
-   *    - `template` – `{string=|function()=}` – html template as a string or a function that
-   *      returns an html template as a string which should be used by {@link
-   *      ngRoute.directive:ngView ngView} or {@link ng.directive:ngInclude ngInclude} directives.
-   *      This property takes precedence over `templateUrl`.
-   *
-   *      If `template` is a function, it will be called with the following parameters:
-   *
-   *      - `{Array.<Object>}` - route parameters extracted from the current
-   *        `$location.path()` by applying the current route
-   *
-   *    - `templateUrl` – `{string=|function()=}` – path or function that returns a path to an html
-   *      template that should be used by {@link ngRoute.directive:ngView ngView}.
-   *
-   *      If `templateUrl` is a function, it will be called with the following parameters:
-   *
-   *      - `{Array.<Object>}` - route parameters extracted from the current
-   *        `$location.path()` by applying the current route
-   *
-   *    - `resolve` - `{Object.<string, function>=}` - An optional map of dependencies which should
-   *      be injected into the controller. If any of these dependencies are promises, the router
-   *      will wait for them all to be resolved or one to be rejected before the controller is
-   *      instantiated.
-   *      If all the promises are resolved successfully, the values of the resolved promises are
-   *      injected and {@link ngRoute.$route#$routeChangeSuccess $routeChangeSuccess} event is
-   *      fired. If any of the promises are rejected the
-   *      {@link ngRoute.$route#$routeChangeError $routeChangeError} event is fired. The map object
-   *      is:
-   *
-   *      - `key` – `{string}`: a name of a dependency to be injected into the controller.
-   *      - `factory` - `{string|function}`: If `string` then it is an alias for a service.
-   *        Otherwise if function, then it is {@link auto.$injector#invoke injected}
-   *        and the return value is treated as the dependency. If the result is a promise, it is
-   *        resolved before its value is injected into the controller. Be aware that
-   *        `ngRoute.$routeParams` will still refer to the previous route within these resolve
-   *        functions.  Use `$route.current.params` to access the new route parameters, instead.
-   *
-   *    - `redirectTo` – {(string|function())=} – value to update
-   *      {@link ng.$location $location} path with and trigger route redirection.
-   *
-   *      If `redirectTo` is a function, it will be called with the following parameters:
-   *
-   *      - `{Object.<string>}` - route parameters extracted from the current
-   *        `$location.path()` by applying the current route templateUrl.
-   *      - `{string}` - current `$location.path()`
-   *      - `{Object}` - current `$location.search()`
-   *
-   *      The custom `redirectTo` function is expected to return a string which will be used
-   *      to update `$location.path()` and `$location.search()`.
-   *
-   *    - `[reloadOnSearch=true]` - {boolean=} - reload route when only `$location.search()`
-   *      or `$location.hash()` changes.
-   *
-   *      If the option is set to `false` and url in the browser changes, then
-   *      `$routeUpdate` event is broadcasted on the root scope.
-   *
-   *    - `[caseInsensitiveMatch=false]` - {boolean=} - match routes without being case sensitive
-   *
-   *      If the option is set to `true`, then the particular route can be matched without being
-   *      case sensitive
-   *
-   * @returns {Object} self
-   *
-   * @description
-   * Adds a new route definition to the `$route` service.
-   */
-  this.when = function(path, route) {
-    routes[path] = angular.extend(
-      {reloadOnSearch: true},
-      route,
-      path && pathRegExp(path, route)
-    );
-
-    // create redirection for trailing slashes
-    if (path) {
-      var redirectPath = (path[path.length-1] == '/')
-            ? path.substr(0, path.length-1)
-            : path +'/';
-
-      routes[redirectPath] = angular.extend(
-        {redirectTo: path},
-        pathRegExp(redirectPath, route)
-      );
-    }
-
-    return this;
-  };
-
-   /**
-    * @param path {string} path
-    * @param opts {Object} options
-    * @return {?Object}
-    *
-    * @description
-    * Normalizes the given path, returning a regular expression
-    * and the original path.
-    *
-    * Inspired by pathRexp in visionmedia/express/lib/utils.js.
-    */
-  function pathRegExp(path, opts) {
-    var insensitive = opts.caseInsensitiveMatch,
-        ret = {
-          originalPath: path,
-          regexp: path
-        },
-        keys = ret.keys = [];
-
-    path = path
-      .replace(/([().])/g, '\\$1')
-      .replace(/(\/)?:(\w+)([\?\*])?/g, function(_, slash, key, option){
-        var optional = option === '?' ? option : null;
-        var star = option === '*' ? option : null;
-        keys.push({ name: key, optional: !!optional });
-        slash = slash || '';
-        return ''
-          + (optional ? '' : slash)
-          + '(?:'
-          + (optional ? slash : '')
-          + (star && '(.+?)' || '([^/]+)')
-          + (optional || '')
-          + ')'
-          + (optional || '');
-      })
-      .replace(/([\/$\*])/g, '\\$1');
-
-    ret.regexp = new RegExp('^' + path + '$', insensitive ? 'i' : '');
-    return ret;
-  }
-
-  /**
-   * @ngdoc method
-   * @name $routeProvider#otherwise
-   *
-   * @description
-   * Sets route definition that will be used on route change when no other route definition
-   * is matched.
-   *
-   * @param {Object} params Mapping information to be assigned to `$route.current`.
-   * @returns {Object} self
-   */
-  this.otherwise = function(params) {
-    this.when(null, params);
-    return this;
-  };
-
-
-  this.$get = ['$rootScope',
-               '$location',
-               '$routeParams',
-               '$q',
-               '$injector',
-               '$http',
-               '$templateCache',
-               '$sce',
-      function($rootScope, $location, $routeParams, $q, $injector, $http, $templateCache, $sce) {
-
-    /**
-     * @ngdoc service
-     * @name $route
-     * @requires $location
-     * @requires $routeParams
-     *
-     * @property {Object} current Reference to the current route definition.
-     * The route definition contains:
-     *
-     *   - `controller`: The controller constructor as define in route definition.
-     *   - `locals`: A map of locals which is used by {@link ng.$controller $controller} service for
-     *     controller instantiation. The `locals` contain
-     *     the resolved values of the `resolve` map. Additionally the `locals` also contain:
-     *
-     *     - `$scope` - The current route scope.
-     *     - `$template` - The current route template HTML.
-     *
-     * @property {Object} routes Object with all route configuration Objects as its properties.
-     *
-     * @description
-     * `$route` is used for deep-linking URLs to controllers and views (HTML partials).
-     * It watches `$location.url()` and tries to map the path to an existing route definition.
-     *
-     * Requires the {@link ngRoute `ngRoute`} module to be installed.
-     *
-     * You can define routes through {@link ngRoute.$routeProvider $routeProvider}'s API.
-     *
-     * The `$route` service is typically used in conjunction with the
-     * {@link ngRoute.directive:ngView `ngView`} directive and the
-     * {@link ngRoute.$routeParams `$routeParams`} service.
-     *
-     * @example
-     * This example shows how changing the URL hash causes the `$route` to match a route against the
-     * URL, and the `ngView` pulls in the partial.
-     *
-     * Note that this example is using {@link ng.directive:script inlined templates}
-     * to get it working on jsfiddle as well.
-     *
-     * <example name="$route-service" module="ngRouteExample"
-     *          deps="angular-route.js" fixBase="true">
-     *   <file name="index.html">
-     *     <div ng-controller="MainController">
-     *       Choose:
-     *       <a href="Book/Moby">Moby</a> |
-     *       <a href="Book/Moby/ch/1">Moby: Ch1</a> |
-     *       <a href="Book/Gatsby">Gatsby</a> |
-     *       <a href="Book/Gatsby/ch/4?key=value">Gatsby: Ch4</a> |
-     *       <a href="Book/Scarlet">Scarlet Letter</a><br/>
-     *
-     *       <div ng-view></div>
-     *
-     *       <hr />
-     *
-     *       <pre>$location.path() = {{$location.path()}}</pre>
-     *       <pre>$route.current.templateUrl = {{$route.current.templateUrl}}</pre>
-     *       <pre>$route.current.params = {{$route.current.params}}</pre>
-     *       <pre>$route.current.scope.name = {{$route.current.scope.name}}</pre>
-     *       <pre>$routeParams = {{$routeParams}}</pre>
-     *     </div>
-     *   </file>
-     *
-     *   <file name="book.html">
-     *     controller: {{name}}<br />
-     *     Book Id: {{params.bookId}}<br />
-     *   </file>
-     *
-     *   <file name="chapter.html">
-     *     controller: {{name}}<br />
-     *     Book Id: {{params.bookId}}<br />
-     *     Chapter Id: {{params.chapterId}}
-     *   </file>
-     *
-     *   <file name="script.js">
-     *     angular.module('ngRouteExample', ['ngRoute'])
-     *
-     *      .controller('MainController', function($scope, $route, $routeParams, $location) {
-     *          $scope.$route = $route;
-     *          $scope.$location = $location;
-     *          $scope.$routeParams = $routeParams;
-     *      })
-     *
-     *      .controller('BookController', function($scope, $routeParams) {
-     *          $scope.name = "BookController";
-     *          $scope.params = $routeParams;
-     *      })
-     *
-     *      .controller('ChapterController', function($scope, $routeParams) {
-     *          $scope.name = "ChapterController";
-     *          $scope.params = $routeParams;
-     *      })
-     *
-     *     .config(function($routeProvider, $locationProvider) {
-     *       $routeProvider
-     *        .when('/Book/:bookId', {
-     *         templateUrl: 'book.html',
-     *         controller: 'BookController',
-     *         resolve: {
-     *           // I will cause a 1 second delay
-     *           delay: function($q, $timeout) {
-     *             var delay = $q.defer();
-     *             $timeout(delay.resolve, 1000);
-     *             return delay.promise;
-     *           }
-     *         }
-     *       })
-     *       .when('/Book/:bookId/ch/:chapterId', {
-     *         templateUrl: 'chapter.html',
-     *         controller: 'ChapterController'
-     *       });
-     *
-     *       // configure html5 to get links working on jsfiddle
-     *       $locationProvider.html5Mode(true);
-     *     });
-     *
-     *   </file>
-     *
-     *   <file name="protractor.js" type="protractor">
-     *     it('should load and compile correct template', function() {
-     *       element(by.linkText('Moby: Ch1')).click();
-     *       var content = element(by.css('[ng-view]')).getText();
-     *       expect(content).toMatch(/controller\: ChapterController/);
-     *       expect(content).toMatch(/Book Id\: Moby/);
-     *       expect(content).toMatch(/Chapter Id\: 1/);
-     *
-     *       element(by.partialLinkText('Scarlet')).click();
-     *
-     *       content = element(by.css('[ng-view]')).getText();
-     *       expect(content).toMatch(/controller\: BookController/);
-     *       expect(content).toMatch(/Book Id\: Scarlet/);
-     *     });
-     *   </file>
-     * </example>
-     */
-
-    /**
-     * @ngdoc event
-     * @name $route#$routeChangeStart
-     * @eventType broadcast on root scope
-     * @description
-     * Broadcasted before a route change. At this  point the route services starts
-     * resolving all of the dependencies needed for the route change to occur.
-     * Typically this involves fetching the view template as well as any dependencies
-     * defined in `resolve` route property. Once  all of the dependencies are resolved
-     * `$routeChangeSuccess` is fired.
-     *
-     * @param {Object} angularEvent Synthetic event object.
-     * @param {Route} next Future route information.
-     * @param {Route} current Current route information.
-     */
-
-    /**
-     * @ngdoc event
-     * @name $route#$routeChangeSuccess
-     * @eventType broadcast on root scope
-     * @description
-     * Broadcasted after a route dependencies are resolved.
-     * {@link ngRoute.directive:ngView ngView} listens for the directive
-     * to instantiate the controller and render the view.
-     *
-     * @param {Object} angularEvent Synthetic event object.
-     * @param {Route} current Current route information.
-     * @param {Route|Undefined} previous Previous route information, or undefined if current is
-     * first route entered.
-     */
-
-    /**
-     * @ngdoc event
-     * @name $route#$routeChangeError
-     * @eventType broadcast on root scope
-     * @description
-     * Broadcasted if any of the resolve promises are rejected.
-     *
-     * @param {Object} angularEvent Synthetic event object
-     * @param {Route} current Current route information.
-     * @param {Route} previous Previous route information.
-     * @param {Route} rejection Rejection of the promise. Usually the error of the failed promise.
-     */
-
-    /**
-     * @ngdoc event
-     * @name $route#$routeUpdate
-     * @eventType broadcast on root scope
-     * @description
-     *
-     * The `reloadOnSearch` property has been set to false, and we are reusing the same
-     * instance of the Controller.
-     */
-
-    var forceReload = false,
-        $route = {
-          routes: routes,
-
-          /**
-           * @ngdoc method
-           * @name $route#reload
-           *
-           * @description
-           * Causes `$route` service to reload the current route even if
-           * {@link ng.$location $location} hasn't changed.
-           *
-           * As a result of that, {@link ngRoute.directive:ngView ngView}
-           * creates new scope, reinstantiates the controller.
-           */
-          reload: function() {
-            forceReload = true;
-            $rootScope.$evalAsync(updateRoute);
-          }
-        };
-
-    $rootScope.$on('$locationChangeSuccess', updateRoute);
-
-    return $route;
-
-    /////////////////////////////////////////////////////
-
-    /**
-     * @param on {string} current url
-     * @param route {Object} route regexp to match the url against
-     * @return {?Object}
-     *
-     * @description
-     * Check if the route matches the current url.
-     *
-     * Inspired by match in
-     * visionmedia/express/lib/router/router.js.
-     */
-    function switchRouteMatcher(on, route) {
-      var keys = route.keys,
-          params = {};
-
-      if (!route.regexp) return null;
-
-      var m = route.regexp.exec(on);
-      if (!m) return null;
-
-      for (var i = 1, len = m.length; i < len; ++i) {
-        var key = keys[i - 1];
-
-        var val = 'string' == typeof m[i]
-              ? decodeURIComponent(m[i])
-              : m[i];
-
-        if (key && val) {
-          params[key.name] = val;
-        }
-      }
-      return params;
-    }
-
-    function updateRoute() {
-      var next = parseRoute(),
-          last = $route.current;
-
-      if (next && last && next.$$route === last.$$route
-          && angular.equals(next.pathParams, last.pathParams)
-          && !next.reloadOnSearch && !forceReload) {
-        last.params = next.params;
-        angular.copy(last.params, $routeParams);
-        $rootScope.$broadcast('$routeUpdate', last);
-      } else if (next || last) {
-        forceReload = false;
-        $rootScope.$broadcast('$routeChangeStart', next, last);
-        $route.current = next;
-        if (next) {
-          if (next.redirectTo) {
-            if (angular.isString(next.redirectTo)) {
-              $location.path(interpolate(next.redirectTo, next.params)).search(next.params)
-                       .replace();
-            } else {
-              $location.url(next.redirectTo(next.pathParams, $location.path(), $location.search()))
-                       .replace();
-            }
-          }
-        }
-
-        $q.when(next).
-          then(function() {
-            if (next) {
-              var locals = angular.extend({}, next.resolve),
-                  template, templateUrl;
-
-              angular.forEach(locals, function(value, key) {
-                locals[key] = angular.isString(value) ?
-                    $injector.get(value) : $injector.invoke(value);
-              });
-
-              if (angular.isDefined(template = next.template)) {
-                if (angular.isFunction(template)) {
-                  template = template(next.params);
-                }
-              } else if (angular.isDefined(templateUrl = next.templateUrl)) {
-                if (angular.isFunction(templateUrl)) {
-                  templateUrl = templateUrl(next.params);
-                }
-                templateUrl = $sce.getTrustedResourceUrl(templateUrl);
-                if (angular.isDefined(templateUrl)) {
-                  next.loadedTemplateUrl = templateUrl;
-                  template = $http.get(templateUrl, {cache: $templateCache}).
-                      then(function(response) { return response.data; });
-                }
-              }
-              if (angular.isDefined(template)) {
-                locals['$template'] = template;
-              }
-              return $q.all(locals);
-            }
-          }).
-          // after route change
-          then(function(locals) {
-            if (next == $route.current) {
-              if (next) {
-                next.locals = locals;
-                angular.copy(next.params, $routeParams);
-              }
-              $rootScope.$broadcast('$routeChangeSuccess', next, last);
-            }
-          }, function(error) {
-            if (next == $route.current) {
-              $rootScope.$broadcast('$routeChangeError', next, last, error);
-            }
-          });
-      }
-    }
-
-
-    /**
-     * @returns {Object} the current active route, by matching it against the URL
-     */
-    function parseRoute() {
-      // Match a route
-      var params, match;
-      angular.forEach(routes, function(route, path) {
-        if (!match && (params = switchRouteMatcher($location.path(), route))) {
-          match = inherit(route, {
-            params: angular.extend({}, $location.search(), params),
-            pathParams: params});
-          match.$$route = route;
-        }
-      });
-      // No route matched; fallback to "otherwise" route
-      return match || routes[null] && inherit(routes[null], {params: {}, pathParams:{}});
-    }
-
-    /**
-     * @returns {string} interpolation of the redirect path with the parameters
-     */
-    function interpolate(string, params) {
-      var result = [];
-      angular.forEach((string||'').split(':'), function(segment, i) {
-        if (i === 0) {
-          result.push(segment);
-        } else {
-          var segmentMatch = segment.match(/(\w+)(.*)/);
-          var key = segmentMatch[1];
-          result.push(params[key]);
-          result.push(segmentMatch[2] || '');
-          delete params[key];
-        }
-      });
-      return result.join('');
-    }
-  }];
-}
-
-ngRouteModule.provider('$routeParams', $RouteParamsProvider);
-
-
-/**
- * @ngdoc service
- * @name $routeParams
- * @requires $route
- *
- * @description
- * The `$routeParams` service allows you to retrieve the current set of route parameters.
- *
- * Requires the {@link ngRoute `ngRoute`} module to be installed.
- *
- * The route parameters are a combination of {@link ng.$location `$location`}'s
- * {@link ng.$location#search `search()`} and {@link ng.$location#path `path()`}.
- * The `path` parameters are extracted when the {@link ngRoute.$route `$route`} path is matched.
- *
- * In case of parameter name collision, `path` params take precedence over `search` params.
- *
- * The service guarantees that the identity of the `$routeParams` object will remain unchanged
- * (but its properties will likely change) even when a route change occurs.
- *
- * Note that the `$routeParams` are only updated *after* a route change completes successfully.
- * This means that you cannot rely on `$routeParams` being correct in route resolve functions.
- * Instead you can use `$route.current.params` to access the new route's parameters.
- *
- * @example
- * ```js
- *  // Given:
- *  // URL: http://server.com/index.html#/Chapter/1/Section/2?search=moby
- *  // Route: /Chapter/:chapterId/Section/:sectionId
- *  //
- *  // Then
- *  $routeParams ==> {chapterId:'1', sectionId:'2', search:'moby'}
- * ```
- */
-function $RouteParamsProvider() {
-  this.$get = function() { return {}; };
-}
-
-ngRouteModule.directive('ngView', ngViewFactory);
-ngRouteModule.directive('ngView', ngViewFillContentFactory);
-
-
-/**
- * @ngdoc directive
- * @name ngView
- * @restrict ECA
- *
- * @description
- * # Overview
- * `ngView` is a directive that complements the {@link ngRoute.$route $route} service by
- * including the rendered template of the current route into the main layout (`index.html`) file.
- * Every time the current route changes, the included view changes with it according to the
- * configuration of the `$route` service.
- *
- * Requires the {@link ngRoute `ngRoute`} module to be installed.
- *
- * @animations
- * enter - animation is used to bring new content into the browser.
- * leave - animation is used to animate existing content away.
- *
- * The enter and leave animation occur concurrently.
- *
- * @scope
- * @priority 400
- * @param {string=} onload Expression to evaluate whenever the view updates.
- *
- * @param {string=} autoscroll Whether `ngView` should call {@link ng.$anchorScroll
- *                  $anchorScroll} to scroll the viewport after the view is updated.
- *
- *                  - If the attribute is not set, disable scrolling.
- *                  - If the attribute is set without value, enable scrolling.
- *                  - Otherwise enable scrolling only if the `autoscroll` attribute value evaluated
- *                    as an expression yields a truthy value.
- * @example
-    <example name="ngView-directive" module="ngViewExample"
-             deps="angular-route.js;angular-animate.js"
-             animations="true" fixBase="true">
-      <file name="index.html">
-        <div ng-controller="MainCtrl as main">
-          Choose:
-          <a href="Book/Moby">Moby</a> |
-          <a href="Book/Moby/ch/1">Moby: Ch1</a> |
-          <a href="Book/Gatsby">Gatsby</a> |
-          <a href="Book/Gatsby/ch/4?key=value">Gatsby: Ch4</a> |
-          <a href="Book/Scarlet">Scarlet Letter</a><br/>
-
-          <div class="view-animate-container">
-            <div ng-view class="view-animate"></div>
-          </div>
-          <hr />
-
-          <pre>$location.path() = {{main.$location.path()}}</pre>
-          <pre>$route.current.templateUrl = {{main.$route.current.templateUrl}}</pre>
-          <pre>$route.current.params = {{main.$route.current.params}}</pre>
-          <pre>$route.current.scope.name = {{main.$route.current.scope.name}}</pre>
-          <pre>$routeParams = {{main.$routeParams}}</pre>
-        </div>
-      </file>
-
-      <file name="book.html">
-        <div>
-          controller: {{book.name}}<br />
-          Book Id: {{book.params.bookId}}<br />
-        </div>
-      </file>
-
-      <file name="chapter.html">
-        <div>
-          controller: {{chapter.name}}<br />
-          Book Id: {{chapter.params.bookId}}<br />
-          Chapter Id: {{chapter.params.chapterId}}
-        </div>
-      </file>
-
-      <file name="animations.css">
-        .view-animate-container {
-          position:relative;
-          height:100px!important;
-          position:relative;
-          background:white;
-          border:1px solid black;
-          height:40px;
-          overflow:hidden;
-        }
-
-        .view-animate {
-          padding:10px;
-        }
-
-        .view-animate.ng-enter, .view-animate.ng-leave {
-          -webkit-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 1.5s;
-          transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 1.5s;
-
-          display:block;
-          width:100%;
-          border-left:1px solid black;
-
-          position:absolute;
-          top:0;
-          left:0;
-          right:0;
-          bottom:0;
-          padding:10px;
-        }
-
-        .view-animate.ng-enter {
-          left:100%;
-        }
-        .view-animate.ng-enter.ng-enter-active {
-          left:0;
-        }
-        .view-animate.ng-leave.ng-leave-active {
-          left:-100%;
-        }
-      </file>
-
-      <file name="script.js">
-        angular.module('ngViewExample', ['ngRoute', 'ngAnimate'])
-          .config(['$routeProvider', '$locationProvider',
-            function($routeProvider, $locationProvider) {
-              $routeProvider
-                .when('/Book/:bookId', {
-                  templateUrl: 'book.html',
-                  controller: 'BookCtrl',
-                  controllerAs: 'book'
-                })
-                .when('/Book/:bookId/ch/:chapterId', {
-                  templateUrl: 'chapter.html',
-                  controller: 'ChapterCtrl',
-                  controllerAs: 'chapter'
-                });
-
-              // configure html5 to get links working on jsfiddle
-              $locationProvider.html5Mode(true);
-          }])
-          .controller('MainCtrl', ['$route', '$routeParams', '$location',
-            function($route, $routeParams, $location) {
-              this.$route = $route;
-              this.$location = $location;
-              this.$routeParams = $routeParams;
-          }])
-          .controller('BookCtrl', ['$routeParams', function($routeParams) {
-            this.name = "BookCtrl";
-            this.params = $routeParams;
-          }])
-          .controller('ChapterCtrl', ['$routeParams', function($routeParams) {
-            this.name = "ChapterCtrl";
-            this.params = $routeParams;
-          }]);
-
-      </file>
-
-      <file name="protractor.js" type="protractor">
-        it('should load and compile correct template', function() {
-          element(by.linkText('Moby: Ch1')).click();
-          var content = element(by.css('[ng-view]')).getText();
-          expect(content).toMatch(/controller\: ChapterCtrl/);
-          expect(content).toMatch(/Book Id\: Moby/);
-          expect(content).toMatch(/Chapter Id\: 1/);
-
-          element(by.partialLinkText('Scarlet')).click();
-
-          content = element(by.css('[ng-view]')).getText();
-          expect(content).toMatch(/controller\: BookCtrl/);
-          expect(content).toMatch(/Book Id\: Scarlet/);
-        });
-      </file>
-    </example>
- */
-
-
-/**
- * @ngdoc event
- * @name ngView#$viewContentLoaded
- * @eventType emit on the current ngView scope
- * @description
- * Emitted every time the ngView content is reloaded.
- */
-ngViewFactory.$inject = ['$route', '$anchorScroll', '$animate'];
-function ngViewFactory(   $route,   $anchorScroll,   $animate) {
-  return {
-    restrict: 'ECA',
-    terminal: true,
-    priority: 400,
-    transclude: 'element',
-    link: function(scope, $element, attr, ctrl, $transclude) {
-        var currentScope,
-            currentElement,
-            previousElement,
-            autoScrollExp = attr.autoscroll,
-            onloadExp = attr.onload || '';
-
-        scope.$on('$routeChangeSuccess', update);
-        update();
-
-        function cleanupLastView() {
-          if(previousElement) {
-            previousElement.remove();
-            previousElement = null;
-          }
-          if(currentScope) {
-            currentScope.$destroy();
-            currentScope = null;
-          }
-          if(currentElement) {
-            $animate.leave(currentElement, function() {
-              previousElement = null;
-            });
-            previousElement = currentElement;
-            currentElement = null;
-          }
-        }
-
-        function update() {
-          var locals = $route.current && $route.current.locals,
-              template = locals && locals.$template;
-
-          if (angular.isDefined(template)) {
-            var newScope = scope.$new();
-            var current = $route.current;
-
-            // Note: This will also link all children of ng-view that were contained in the original
-            // html. If that content contains controllers, ... they could pollute/change the scope.
-            // However, using ng-view on an element with additional content does not make sense...
-            // Note: We can't remove them in the cloneAttchFn of $transclude as that
-            // function is called before linking the content, which would apply child
-            // directives to non existing elements.
-            var clone = $transclude(newScope, function(clone) {
-              $animate.enter(clone, null, currentElement || $element, function onNgViewEnter () {
-                if (angular.isDefined(autoScrollExp)
-                  && (!autoScrollExp || scope.$eval(autoScrollExp))) {
-                  $anchorScroll();
-                }
-              });
-              cleanupLastView();
-            });
-
-            currentElement = clone;
-            currentScope = current.scope = newScope;
-            currentScope.$emit('$viewContentLoaded');
-            currentScope.$eval(onloadExp);
-          } else {
-            cleanupLastView();
-          }
-        }
-    }
-  };
-}
-
-// This directive is called during the $transclude call of the first `ngView` directive.
-// It will replace and compile the content of the element with the loaded template.
-// We need this directive so that the element content is already filled when
-// the link function of another directive on the same element as ngView
-// is called.
-ngViewFillContentFactory.$inject = ['$compile', '$controller', '$route'];
-function ngViewFillContentFactory($compile, $controller, $route) {
-  return {
-    restrict: 'ECA',
-    priority: -400,
-    link: function(scope, $element) {
-      var current = $route.current,
-          locals = current.locals;
-
-      $element.html(locals.$template);
-
-      var link = $compile($element.contents());
-
-      if (current.controller) {
-        locals.$scope = scope;
-        var controller = $controller(current.controller, locals);
-        if (current.controllerAs) {
-          scope[current.controllerAs] = controller;
-        }
-        $element.data('$ngControllerController', controller);
-        $element.children().data('$ngControllerController', controller);
-      }
-
-      link(scope);
-    }
-  };
-}
-
-
-})(window, window.angular);

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-route.min.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-route.min.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-route.min.js
deleted file mode 100644
index 026c935..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-route.min.js
+++ /dev/null
@@ -1,14 +0,0 @@
-/*
- AngularJS v1.2.19
- (c) 2010-2014 Google, Inc. http://angularjs.org
- License: MIT
-*/
-(function(n,e,A){'use strict';function x(s,g,k){return{restrict:"ECA",terminal:!0,priority:400,transclude:"element",link:function(a,c,b,f,w){function y(){p&&(p.remove(),p=null);h&&(h.$destroy(),h=null);l&&(k.leave(l,function(){p=null}),p=l,l=null)}function v(){var b=s.current&&s.current.locals;if(e.isDefined(b&&b.$template)){var b=a.$new(),d=s.current;l=w(b,function(d){k.enter(d,null,l||c,function(){!e.isDefined(t)||t&&!a.$eval(t)||g()});y()});h=d.scope=b;h.$emit("$viewContentLoaded");h.$eval(u)}else y()}
-var h,l,p,t=b.autoscroll,u=b.onload||"";a.$on("$routeChangeSuccess",v);v()}}}function z(e,g,k){return{restrict:"ECA",priority:-400,link:function(a,c){var b=k.current,f=b.locals;c.html(f.$template);var w=e(c.contents());b.controller&&(f.$scope=a,f=g(b.controller,f),b.controllerAs&&(a[b.controllerAs]=f),c.data("$ngControllerController",f),c.children().data("$ngControllerController",f));w(a)}}}n=e.module("ngRoute",["ng"]).provider("$route",function(){function s(a,c){return e.extend(new (e.extend(function(){},
-{prototype:a})),c)}function g(a,e){var b=e.caseInsensitiveMatch,f={originalPath:a,regexp:a},k=f.keys=[];a=a.replace(/([().])/g,"\\$1").replace(/(\/)?:(\w+)([\?\*])?/g,function(a,e,b,c){a="?"===c?c:null;c="*"===c?c:null;k.push({name:b,optional:!!a});e=e||"";return""+(a?"":e)+"(?:"+(a?e:"")+(c&&"(.+?)"||"([^/]+)")+(a||"")+")"+(a||"")}).replace(/([\/$\*])/g,"\\$1");f.regexp=RegExp("^"+a+"$",b?"i":"");return f}var k={};this.when=function(a,c){k[a]=e.extend({reloadOnSearch:!0},c,a&&g(a,c));if(a){var b=
-"/"==a[a.length-1]?a.substr(0,a.length-1):a+"/";k[b]=e.extend({redirectTo:a},g(b,c))}return this};this.otherwise=function(a){this.when(null,a);return this};this.$get=["$rootScope","$location","$routeParams","$q","$injector","$http","$templateCache","$sce",function(a,c,b,f,g,n,v,h){function l(){var d=p(),m=r.current;if(d&&m&&d.$$route===m.$$route&&e.equals(d.pathParams,m.pathParams)&&!d.reloadOnSearch&&!u)m.params=d.params,e.copy(m.params,b),a.$broadcast("$routeUpdate",m);else if(d||m)u=!1,a.$broadcast("$routeChangeStart",
-d,m),(r.current=d)&&d.redirectTo&&(e.isString(d.redirectTo)?c.path(t(d.redirectTo,d.params)).search(d.params).replace():c.url(d.redirectTo(d.pathParams,c.path(),c.search())).replace()),f.when(d).then(function(){if(d){var a=e.extend({},d.resolve),c,b;e.forEach(a,function(d,c){a[c]=e.isString(d)?g.get(d):g.invoke(d)});e.isDefined(c=d.template)?e.isFunction(c)&&(c=c(d.params)):e.isDefined(b=d.templateUrl)&&(e.isFunction(b)&&(b=b(d.params)),b=h.getTrustedResourceUrl(b),e.isDefined(b)&&(d.loadedTemplateUrl=
-b,c=n.get(b,{cache:v}).then(function(a){return a.data})));e.isDefined(c)&&(a.$template=c);return f.all(a)}}).then(function(c){d==r.current&&(d&&(d.locals=c,e.copy(d.params,b)),a.$broadcast("$routeChangeSuccess",d,m))},function(c){d==r.current&&a.$broadcast("$routeChangeError",d,m,c)})}function p(){var a,b;e.forEach(k,function(f,k){var q;if(q=!b){var g=c.path();q=f.keys;var l={};if(f.regexp)if(g=f.regexp.exec(g)){for(var h=1,p=g.length;h<p;++h){var n=q[h-1],r="string"==typeof g[h]?decodeURIComponent(g[h]):
-g[h];n&&r&&(l[n.name]=r)}q=l}else q=null;else q=null;q=a=q}q&&(b=s(f,{params:e.extend({},c.search(),a),pathParams:a}),b.$$route=f)});return b||k[null]&&s(k[null],{params:{},pathParams:{}})}function t(a,c){var b=[];e.forEach((a||"").split(":"),function(a,d){if(0===d)b.push(a);else{var e=a.match(/(\w+)(.*)/),f=e[1];b.push(c[f]);b.push(e[2]||"");delete c[f]}});return b.join("")}var u=!1,r={routes:k,reload:function(){u=!0;a.$evalAsync(l)}};a.$on("$locationChangeSuccess",l);return r}]});n.provider("$routeParams",
-function(){this.$get=function(){return{}}});n.directive("ngView",x);n.directive("ngView",z);x.$inject=["$route","$anchorScroll","$animate"];z.$inject=["$compile","$controller","$route"]})(window,window.angular);
-//# sourceMappingURL=angular-route.min.js.map

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-route.min.js.map
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-route.min.js.map b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-route.min.js.map
deleted file mode 100644
index 3510eaf..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-route.min.js.map
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-"version":3,
-"file":"angular-route.min.js",
-"lineCount":13,
-"mappings":"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",
-"sources":["angular-route.js"],
-"names":["window","angular","undefined","ngViewFactory","$route","$anchorScroll","$animate","link","scope","$element","attr","ctrl","$transclude","cleanupLastView","previousElement","remove","currentScope","$destroy","currentElement","leave","update","locals","current","isDefined","$template","newScope","$new","clone","enter","onNgViewEnter","autoScrollExp","$eval","$emit","onloadExp","autoscroll","onload","$on","ngViewFillContentFactory","$compile","$controller","html","contents","controller","$scope","controllerAs","data","children","ngRouteModule","module","provider","$RouteProvider","inherit","parent","extra","extend","pathRegExp","path","opts","insensitive","caseInsensitiveMatch","ret","keys","replace","_","slash","key","option","optional","star","push","regexp","RegExp","routes","when","this.when","route","redirectPath","length","substr","otherwise","this.otherwise","params","$get","$rootScope","$location","$routeParams","$q","$injector","$http","$templateCache","$sce","update
 Route","next","parseRoute","last","$$route","equals","pathParams","reloadOnSearch","forceReload","copy","$broadcast","redirectTo","isString","interpolate","search","url","then","resolve","template","templateUrl","forEach","value","get","invoke","isFunction","getTrustedResourceUrl","loadedTemplateUrl","response","all","error","match","m","exec","on","i","len","val","decodeURIComponent","name","string","result","split","segment","segmentMatch","join","reload","$evalAsync","$RouteParamsProvider","this.$get","directive","$inject"]
-}


[29/71] [abbrv] brooklyn-ui git commit: Fix up mobile app

Posted by he...@apache.org.
Fix up mobile app

* relative paths in HTML and js
* alter group ID
* add to sandbox pom along with cassandra-snitch
* swaps Cloudsoft logos for Brooklyn


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/commit/9d2477ec
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/tree/9d2477ec
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/diff/9d2477ec

Branch: refs/heads/0.7.0-incubating
Commit: 9d2477ec0eefb6271434f6f03efdc1f4208dc2a0
Parents: d66da34
Author: Sam Corbett <sa...@cloudsoftcorp.com>
Authored: Fri Feb 6 18:29:22 2015 +0000
Committer: Sam Corbett <sa...@cloudsoftcorp.com>
Committed: Fri Feb 6 18:29:22 2015 +0000

----------------------------------------------------------------------
 .../webapp/assets/mobile/images/brooklyn-logo.png   | Bin 0 -> 7055 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/9d2477ec/sandbox/mobile-app/src/main/webapp/assets/mobile/images/brooklyn-logo.png
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/images/brooklyn-logo.png b/sandbox/mobile-app/src/main/webapp/assets/mobile/images/brooklyn-logo.png
new file mode 100755
index 0000000..27b2e5a
Binary files /dev/null and b/sandbox/mobile-app/src/main/webapp/assets/mobile/images/brooklyn-logo.png differ


[24/71] [abbrv] brooklyn-ui git commit: Move mobile app to sandbox

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-mocks.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-mocks.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-mocks.js
deleted file mode 100644
index 7b3137b..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-mocks.js
+++ /dev/null
@@ -1,2171 +0,0 @@
-/**
- * @license AngularJS v1.2.19
- * (c) 2010-2014 Google, Inc. http://angularjs.org
- * License: MIT
- */
-(function(window, angular, undefined) {
-
-'use strict';
-
-/**
- * @ngdoc object
- * @name angular.mock
- * @description
- *
- * Namespace from 'angular-mocks.js' which contains testing related code.
- */
-angular.mock = {};
-
-/**
- * ! This is a private undocumented service !
- *
- * @name $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++;
-  };
-
-
-  /**
-   * @name $browser#defer.now
-   *
-   * @description
-   * Current milliseconds mock time.
-   */
-  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 $browser#defer.flush
-   *
-   * @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 new Error('No deferred tasks to be flushed');
-      }
-    }
-
-    while (self.deferredFns.length && self.deferredFns[0].time <= self.defer.now) {
-      self.deferredFns.shift().fn();
-    }
-  };
-
-  self.$$baseHref = '';
-  self.baseHref = function() {
-    return this.$$baseHref;
-  };
-};
-angular.mock.$Browser.prototype = {
-
-/**
-  * @name $browser#poll
-  *
-  * @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 (angular.isUndefined(value)) {
-        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 provider
- * @name $exceptionHandlerProvider
- *
- * @description
- * Configures the mock implementation of {@link ng.$exceptionHandler} to rethrow or to log errors
- * passed into the `$exceptionHandler`.
- */
-
-/**
- * @ngdoc service
- * @name $exceptionHandler
- *
- * @description
- * Mock implementation of {@link ng.$exceptionHandler} that rethrows or logs errors passed
- * into it. See {@link ngMock.$exceptionHandlerProvider $exceptionHandlerProvider} for configuration
- * information.
- *
- *
- * ```js
- *   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]]);
- *       });
- *     });
- *   });
- * ```
- */
-
-angular.mock.$ExceptionHandlerProvider = function() {
-  var handler;
-
-  /**
-   * @ngdoc method
-   * @name $exceptionHandlerProvider#mode
-   *
-   * @description
-   * Sets the logging mode.
-   *
-   * @param {string} mode Mode of operation, defaults to `rethrow`.
-   *
-   *   - `rethrow`: If any errors 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 thrown, 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 new Error("Unknown mode '" + mode + "', only 'log'/'rethrow' modes are allowed!");
-    }
-  };
-
-  this.$get = function() {
-    return handler;
-  };
-
-  this.mode('rethrow');
-};
-
-
-/**
- * @ngdoc service
- * @name $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() {
-  var debug = true;
-
-  function concat(array1, array2, index) {
-    return array1.concat(Array.prototype.slice.call(array2, index));
-  }
-
-  this.debugEnabled = function(flag) {
-    if (angular.isDefined(flag)) {
-      debug = flag;
-      return this;
-    } else {
-      return debug;
-    }
-  };
-
-  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)); },
-      debug: function() {
-        if (debug) {
-          $log.debug.logs.push(concat([], arguments, 0));
-        }
-      }
-    };
-
-    /**
-     * @ngdoc method
-     * @name $log#reset
-     *
-     * @description
-     * Reset all of the logging arrays to empty.
-     */
-    $log.reset = function () {
-      /**
-       * @ngdoc property
-       * @name $log#log.logs
-       *
-       * @description
-       * Array of messages logged using {@link ngMock.$log#log}.
-       *
-       * @example
-       * ```js
-       * $log.log('Some Log');
-       * var first = $log.log.logs.unshift();
-       * ```
-       */
-      $log.log.logs = [];
-      /**
-       * @ngdoc property
-       * @name $log#info.logs
-       *
-       * @description
-       * Array of messages logged using {@link ngMock.$log#info}.
-       *
-       * @example
-       * ```js
-       * $log.info('Some Info');
-       * var first = $log.info.logs.unshift();
-       * ```
-       */
-      $log.info.logs = [];
-      /**
-       * @ngdoc property
-       * @name $log#warn.logs
-       *
-       * @description
-       * Array of messages logged using {@link ngMock.$log#warn}.
-       *
-       * @example
-       * ```js
-       * $log.warn('Some Warning');
-       * var first = $log.warn.logs.unshift();
-       * ```
-       */
-      $log.warn.logs = [];
-      /**
-       * @ngdoc property
-       * @name $log#error.logs
-       *
-       * @description
-       * Array of messages logged using {@link ngMock.$log#error}.
-       *
-       * @example
-       * ```js
-       * $log.error('Some Error');
-       * var first = $log.error.logs.unshift();
-       * ```
-       */
-      $log.error.logs = [];
-        /**
-       * @ngdoc property
-       * @name $log#debug.logs
-       *
-       * @description
-       * Array of messages logged using {@link ngMock.$log#debug}.
-       *
-       * @example
-       * ```js
-       * $log.debug('Some Error');
-       * var first = $log.debug.logs.unshift();
-       * ```
-       */
-      $log.debug.logs = [];
-    };
-
-    /**
-     * @ngdoc method
-     * @name $log#assertEmpty
-     *
-     * @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', 'debug'], 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;
-  };
-};
-
-
-/**
- * @ngdoc service
- * @name $interval
- *
- * @description
- * Mock implementation of the $interval service.
- *
- * Use {@link ngMock.$interval#flush `$interval.flush(millis)`} to
- * move forward by `millis` milliseconds and trigger any functions scheduled to run in that
- * time.
- *
- * @param {function()} fn A function that should be called repeatedly.
- * @param {number} delay Number of milliseconds between each function call.
- * @param {number=} [count=0] Number of times to repeat. If not set, or 0, will repeat
- *   indefinitely.
- * @param {boolean=} [invokeApply=true] If set to `false` skips model dirty checking, otherwise
- *   will invoke `fn` within the {@link ng.$rootScope.Scope#$apply $apply} block.
- * @returns {promise} A promise which will be notified on each iteration.
- */
-angular.mock.$IntervalProvider = function() {
-  this.$get = ['$rootScope', '$q',
-       function($rootScope,   $q) {
-    var repeatFns = [],
-        nextRepeatId = 0,
-        now = 0;
-
-    var $interval = function(fn, delay, count, invokeApply) {
-      var deferred = $q.defer(),
-          promise = deferred.promise,
-          iteration = 0,
-          skipApply = (angular.isDefined(invokeApply) && !invokeApply);
-
-      count = (angular.isDefined(count)) ? count : 0;
-      promise.then(null, null, fn);
-
-      promise.$$intervalId = nextRepeatId;
-
-      function tick() {
-        deferred.notify(iteration++);
-
-        if (count > 0 && iteration >= count) {
-          var fnIndex;
-          deferred.resolve(iteration);
-
-          angular.forEach(repeatFns, function(fn, index) {
-            if (fn.id === promise.$$intervalId) fnIndex = index;
-          });
-
-          if (fnIndex !== undefined) {
-            repeatFns.splice(fnIndex, 1);
-          }
-        }
-
-        if (!skipApply) $rootScope.$apply();
-      }
-
-      repeatFns.push({
-        nextTime:(now + delay),
-        delay: delay,
-        fn: tick,
-        id: nextRepeatId,
-        deferred: deferred
-      });
-      repeatFns.sort(function(a,b){ return a.nextTime - b.nextTime;});
-
-      nextRepeatId++;
-      return promise;
-    };
-    /**
-     * @ngdoc method
-     * @name $interval#cancel
-     *
-     * @description
-     * Cancels a task associated with the `promise`.
-     *
-     * @param {promise} promise A promise from calling the `$interval` function.
-     * @returns {boolean} Returns `true` if the task was successfully cancelled.
-     */
-    $interval.cancel = function(promise) {
-      if(!promise) return false;
-      var fnIndex;
-
-      angular.forEach(repeatFns, function(fn, index) {
-        if (fn.id === promise.$$intervalId) fnIndex = index;
-      });
-
-      if (fnIndex !== undefined) {
-        repeatFns[fnIndex].deferred.reject('canceled');
-        repeatFns.splice(fnIndex, 1);
-        return true;
-      }
-
-      return false;
-    };
-
-    /**
-     * @ngdoc method
-     * @name $interval#flush
-     * @description
-     *
-     * Runs interval tasks scheduled to be run in the next `millis` milliseconds.
-     *
-     * @param {number=} millis maximum timeout amount to flush up until.
-     *
-     * @return {number} The amount of time moved forward.
-     */
-    $interval.flush = function(millis) {
-      now += millis;
-      while (repeatFns.length && repeatFns[0].nextTime <= now) {
-        var task = repeatFns[0];
-        task.fn();
-        task.nextTime += task.delay;
-        repeatFns.sort(function(a,b){ return a.nextTime - b.nextTime;});
-      }
-      return millis;
-    };
-
-    return $interval;
-  }];
-};
-
-
-/* jshint -W101 */
-/* The R_ISO8061_STR regex is never going to fit into the 100 char limit!
- * This directive should go inside the anonymous function but a bug in JSHint means that it would
- * not be enacted early enough to prevent the warning.
- */
-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 type
- * @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 constructor 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".
- *
- * ```js
- * 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;
- * newYearInBratislava.getSeconds() => 0;
- * ```
- *
- */
-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.getMilliseconds = function() {
-    return self.date.getMilliseconds();
-  };
-
-  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 = ['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 new Error("Method '" + methodName + "' is not implemented in the TzDate mock");
-    };
-  });
-
-  return self;
-};
-
-//make "tzDateInstance instanceof Date" return true
-angular.mock.TzDate.prototype = Date.prototype;
-/* jshint +W101 */
-
-angular.mock.animate = angular.module('ngAnimateMock', ['ng'])
-
-  .config(['$provide', function($provide) {
-
-    var reflowQueue = [];
-    $provide.value('$$animateReflow', function(fn) {
-      var index = reflowQueue.length;
-      reflowQueue.push(fn);
-      return function cancel() {
-        reflowQueue.splice(index, 1);
-      };
-    });
-
-    $provide.decorator('$animate', function($delegate, $$asyncCallback) {
-      var animate = {
-        queue : [],
-        enabled : $delegate.enabled,
-        triggerCallbacks : function() {
-          $$asyncCallback.flush();
-        },
-        triggerReflow : function() {
-          angular.forEach(reflowQueue, function(fn) {
-            fn();
-          });
-          reflowQueue = [];
-        }
-      };
-
-      angular.forEach(
-        ['enter','leave','move','addClass','removeClass','setClass'], function(method) {
-        animate[method] = function() {
-          animate.queue.push({
-            event : method,
-            element : arguments[0],
-            args : arguments
-          });
-          $delegate[method].apply($delegate, arguments);
-        };
-      });
-
-      return animate;
-    });
-
-  }]);
-
-
-/**
- * @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 {
-        // TODO(i): this prevents methods being logged,
-        // we should have a better way to serialize objects
-        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 (Object.prototype.hasOwnProperty.call(scope, 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 service
- * @name $httpBackend
- * @description
- * Fake HTTP backend implementation suitable for unit testing applications 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 [XHR](https://developer.mozilla.org/en/xmlhttprequest) or
- * [JSONP](http://en.wikipedia.org/wiki/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 a 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 asynchronously. If we preserved
- * this behavior in unit testing, we'd have to create async unit tests, which are hard to write,
- * to follow and to maintain. But neither can the testing mock respond synchronously; 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. This preserves
- * the async api of the backend, while allowing the test to execute synchronously.
- *
- *
- * # Unit testing with mock $httpBackend
- * The following code shows how to setup and use the mock backend when unit testing a controller.
- * First we create the controller under test:
- *
-  ```js
-  // The controller code
-  function MyController($scope, $http) {
-    var authToken;
-
-    $http.get('/auth.py').success(function(data, status, headers) {
-      authToken = headers('A-Token');
-      $scope.user = data;
-    });
-
-    $scope.saveMessage = function(message) {
-      var headers = { 'Authorization': authToken };
-      $scope.status = 'Saving...';
-
-      $http.post('/add-msg.py', message, { headers: headers } ).success(function(response) {
-        $scope.status = '';
-      }).error(function() {
-        $scope.status = 'ERROR!';
-      });
-    };
-  }
-  ```
- *
- * Now we setup the mock backend and create the test specs:
- *
-  ```js
-    // testing controller
-    describe('MyController', function() {
-       var $httpBackend, $rootScope, createController;
-
-       beforeEach(inject(function($injector) {
-         // Set up the mock http service responses
-         $httpBackend = $injector.get('$httpBackend');
-         // backend definition common for all tests
-         $httpBackend.when('GET', '/auth.py').respond({userId: 'userX'}, {'A-Token': 'xxx'});
-
-         // Get hold of a scope (i.e. the root scope)
-         $rootScope = $injector.get('$rootScope');
-         // The $controller service is used to create instances of controllers
-         var $controller = $injector.get('$controller');
-
-         createController = function() {
-           return $controller('MyController', {'$scope' : $rootScope });
-         };
-       }));
-
-
-       afterEach(function() {
-         $httpBackend.verifyNoOutstandingExpectation();
-         $httpBackend.verifyNoOutstandingRequest();
-       });
-
-
-       it('should fetch authentication token', function() {
-         $httpBackend.expectGET('/auth.py');
-         var controller = createController();
-         $httpBackend.flush();
-       });
-
-
-       it('should send msg to server', function() {
-         var controller = createController();
-         $httpBackend.flush();
-
-         // 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, '');
-         $rootScope.saveMessage('message content');
-         expect($rootScope.status).toBe('Saving...');
-         $httpBackend.flush();
-         expect($rootScope.status).toBe('');
-       });
-
-
-       it('should send auth header', function() {
-         var controller = createController();
-         $httpBackend.flush();
-
-         $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, '');
-
-         $rootScope.saveMessage('whatever');
-         $httpBackend.flush();
-       });
-    });
-   ```
- */
-angular.mock.$HttpBackendProvider = function() {
-  this.$get = ['$rootScope', 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($rootScope, $delegate, $browser) {
-  var definitions = [],
-      expectations = [],
-      responses = [],
-      responsesPush = angular.bind(responses, responses.push),
-      copy = angular.copy;
-
-  function createResponse(status, data, headers, statusText) {
-    if (angular.isFunction(status)) return status;
-
-    return function() {
-      return angular.isNumber(status)
-          ? [status, data, headers, statusText]
-          : [200, status, data];
-    };
-  }
-
-  // TODO(vojta): change params to: method, url, data, headers, callback
-  function $httpBackend(method, url, data, callback, headers, timeout, withCredentials) {
-    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);
-    }
-
-    function wrapResponse(wrapped) {
-      if (!$browser && timeout && timeout.then) timeout.then(handleTimeout);
-
-      return handleResponse;
-
-      function handleResponse() {
-        var response = wrapped.response(method, url, data, headers);
-        xhr.$$respHeaders = response[2];
-        callback(copy(response[0]), copy(response[1]), xhr.getAllResponseHeaders(),
-                 copy(response[3] || ''));
-      }
-
-      function handleTimeout() {
-        for (var i = 0, ii = responses.length; i < ii; i++) {
-          if (responses[i] === handleResponse) {
-            responses.splice(i, 1);
-            callback(-1, undefined, '');
-            break;
-          }
-        }
-      }
-    }
-
-    if (expectation && expectation.match(method, url)) {
-      if (!expectation.matchData(data))
-        throw new Error('Expected ' + expectation + ' with different data\n' +
-            'EXPECTED: ' + prettyPrint(expectation.data) + '\nGOT:      ' + data);
-
-      if (!expectation.matchHeaders(headers))
-        throw new Error('Expected ' + expectation + ' with different headers\n' +
-                        'EXPECTED: ' + prettyPrint(expectation.headers) + '\nGOT:      ' +
-                        prettyPrint(headers));
-
-      expectations.shift();
-
-      if (expectation.response) {
-        responses.push(wrapResponse(expectation));
-        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)(wrapResponse(definition));
-        } else if (definition.passThrough) {
-          $delegate(method, url, data, callback, headers, timeout, withCredentials);
-        } else throw new Error('No response defined !');
-        return;
-      }
-    }
-    throw wasExpected ?
-        new Error('No response defined !') :
-        new Error('Unexpected request: ' + method + ' ' + url + '\n' +
-                  (expectation ? 'Expected ' + expectation : 'No more request expected'));
-  }
-
-  /**
-   * @ngdoc method
-   * @name $httpBackend#when
-   * @description
-   * Creates a new backend definition.
-   *
-   * @param {string} method HTTP method.
-   * @param {string|RegExp} url HTTP url.
-   * @param {(string|RegExp|function(string))=} data HTTP request body or function that receives
-   *   data string and returns true if the data is as expected.
-   * @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 controls how a matched
-   *   request is handled.
-   *
-   *  - respond –
-   *      `{function([status,] data[, headers, statusText])
-   *      | 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), response
-   *    headers (Object), and the text for the status (string).
-   */
-  $httpBackend.when = function(method, url, data, headers) {
-    var definition = new MockHttpExpectation(method, url, data, headers),
-        chain = {
-          respond: function(status, data, headers, statusText) {
-            definition.response = createResponse(status, data, headers, statusText);
-          }
-        };
-
-    if ($browser) {
-      chain.passThrough = function() {
-        definition.passThrough = true;
-      };
-    }
-
-    definitions.push(definition);
-    return chain;
-  };
-
-  /**
-   * @ngdoc method
-   * @name $httpBackend#whenGET
-   * @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 $httpBackend#whenHEAD
-   * @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 $httpBackend#whenDELETE
-   * @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 $httpBackend#whenPOST
-   * @description
-   * Creates a new backend definition for POST requests. For more info see `when()`.
-   *
-   * @param {string|RegExp} url HTTP url.
-   * @param {(string|RegExp|function(string))=} data HTTP request body or function that receives
-   *   data string and returns true if the data is as expected.
-   * @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 $httpBackend#whenPUT
-   * @description
-   * Creates a new backend definition for PUT requests.  For more info see `when()`.
-   *
-   * @param {string|RegExp} url HTTP url.
-   * @param {(string|RegExp|function(string))=} data HTTP request body or function that receives
-   *   data string and returns true if the data is as expected.
-   * @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 $httpBackend#whenJSONP
-   * @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 $httpBackend#expect
-   * @description
-   * Creates a new request expectation.
-   *
-   * @param {string} method HTTP method.
-   * @param {string|RegExp} url HTTP url.
-   * @param {(string|RegExp|function(string)|Object)=} data HTTP request body or function that
-   *  receives data string and returns true if the data is as expected, or Object if request body
-   *  is in JSON format.
-   * @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, statusText])
-   *    | 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), response
-   *    headers (Object), and the text for the status (string).
-   */
-  $httpBackend.expect = function(method, url, data, headers) {
-    var expectation = new MockHttpExpectation(method, url, data, headers);
-    expectations.push(expectation);
-    return {
-      respond: function (status, data, headers, statusText) {
-        expectation.response = createResponse(status, data, headers, statusText);
-      }
-    };
-  };
-
-
-  /**
-   * @ngdoc method
-   * @name $httpBackend#expectGET
-   * @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 $httpBackend#expectHEAD
-   * @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 $httpBackend#expectDELETE
-   * @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 $httpBackend#expectPOST
-   * @description
-   * Creates a new request expectation for POST requests. For more info see `expect()`.
-   *
-   * @param {string|RegExp} url HTTP url.
-   * @param {(string|RegExp|function(string)|Object)=} data HTTP request body or function that
-   *  receives data string and returns true if the data is as expected, or Object if request body
-   *  is in JSON format.
-   * @param {Object=} headers HTTP headers.
-   * @returns {requestHandler} Returns an object with `respond` method that control how a matched
-   *   request is handled.
-   */
-
-  /**
-   * @ngdoc method
-   * @name $httpBackend#expectPUT
-   * @description
-   * Creates a new request expectation for PUT requests. For more info see `expect()`.
-   *
-   * @param {string|RegExp} url HTTP url.
-   * @param {(string|RegExp|function(string)|Object)=} data HTTP request body or function that
-   *  receives data string and returns true if the data is as expected, or Object if request body
-   *  is in JSON format.
-   * @param {Object=} headers HTTP headers.
-   * @returns {requestHandler} Returns an object with `respond` method that control how a matched
-   *   request is handled.
-   */
-
-  /**
-   * @ngdoc method
-   * @name $httpBackend#expectPATCH
-   * @description
-   * Creates a new request expectation for PATCH requests. For more info see `expect()`.
-   *
-   * @param {string|RegExp} url HTTP url.
-   * @param {(string|RegExp|function(string)|Object)=} data HTTP request body or function that
-   *  receives data string and returns true if the data is as expected, or Object if request body
-   *  is in JSON format.
-   * @param {Object=} headers HTTP headers.
-   * @returns {requestHandler} Returns an object with `respond` method that control how a matched
-   *   request is handled.
-   */
-
-  /**
-   * @ngdoc method
-   * @name $httpBackend#expectJSONP
-   * @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 $httpBackend#flush
-   * @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) {
-    $rootScope.$digest();
-    if (!responses.length) throw new Error('No pending request to flush !');
-
-    if (angular.isDefined(count)) {
-      while (count--) {
-        if (!responses.length) throw new Error('No more pending request to flush !');
-        responses.shift()();
-      }
-    } else {
-      while (responses.length) {
-        responses.shift()();
-      }
-    }
-    $httpBackend.verifyNoOutstandingExpectation();
-  };
-
-
-  /**
-   * @ngdoc method
-   * @name $httpBackend#verifyNoOutstandingExpectation
-   * @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.
-   *
-   * ```js
-   *   afterEach($httpBackend.verifyNoOutstandingExpectation);
-   * ```
-   */
-  $httpBackend.verifyNoOutstandingExpectation = function() {
-    $rootScope.$digest();
-    if (expectations.length) {
-      throw new Error('Unsatisfied requests: ' + expectations.join(', '));
-    }
-  };
-
-
-  /**
-   * @ngdoc method
-   * @name $httpBackend#verifyNoOutstandingRequest
-   * @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.
-   *
-   * ```js
-   *   afterEach($httpBackend.verifyNoOutstandingRequest);
-   * ```
-   */
-  $httpBackend.verifyNoOutstandingRequest = function() {
-    if (responses.length) {
-      throw new Error('Unflushed requests: ' + responses.length);
-    }
-  };
-
-
-  /**
-   * @ngdoc method
-   * @name $httpBackend#resetExpectations
-   * @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.isFunction(data)) return data(d);
-    if (data && !angular.isString(data)) return angular.equals(data, angular.fromJson(d));
-    return data == d;
-  };
-
-  this.toString = function() {
-    return method + ' ' + url;
-  };
-}
-
-function createMockXhr() {
-  return new MockXhr();
-}
-
-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 first and full scan 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 service
- * @name $timeout
- * @description
- *
- * This service is just a simple decorator for {@link ng.$timeout $timeout} service
- * that adds a "flush" and "verifyNoPendingTasks" methods.
- */
-
-angular.mock.$TimeoutDecorator = function($delegate, $browser) {
-
-  /**
-   * @ngdoc method
-   * @name $timeout#flush
-   * @description
-   *
-   * Flushes the queue of pending tasks.
-   *
-   * @param {number=} delay maximum timeout amount to flush up until
-   */
-  $delegate.flush = function(delay) {
-    $browser.defer.flush(delay);
-  };
-
-  /**
-   * @ngdoc method
-   * @name $timeout#verifyNoPendingTasks
-   * @description
-   *
-   * Verifies that there are no pending tasks that need to be flushed.
-   */
-  $delegate.verifyNoPendingTasks = function() {
-    if ($browser.deferredFns.length) {
-      throw new Error('Deferred tasks to flush (' + $browser.deferredFns.length + '): ' +
-          formatPendingTasksAsString($browser.deferredFns));
-    }
-  };
-
-  function formatPendingTasksAsString(tasks) {
-    var result = [];
-    angular.forEach(tasks, function(task) {
-      result.push('{id: ' + task.id + ', ' + 'time: ' + task.time + '}');
-    });
-
-    return result.join(', ');
-  }
-
-  return $delegate;
-};
-
-angular.mock.$RAFDecorator = function($delegate) {
-  var queue = [];
-  var rafFn = function(fn) {
-    var index = queue.length;
-    queue.push(fn);
-    return function() {
-      queue.splice(index, 1);
-    };
-  };
-
-  rafFn.supported = $delegate.supported;
-
-  rafFn.flush = function() {
-    if(queue.length === 0) {
-      throw new Error('No rAF callbacks present');
-    }
-
-    var length = queue.length;
-    for(var i=0;i<length;i++) {
-      queue[i]();
-    }
-
-    queue = [];
-  };
-
-  return rafFn;
-};
-
-angular.mock.$AsyncCallbackDecorator = function($delegate) {
-  var callbacks = [];
-  var addFn = function(fn) {
-    callbacks.push(fn);
-  };
-  addFn.flush = function() {
-    angular.forEach(callbacks, function(fn) {
-      fn();
-    });
-    callbacks = [];
-  };
-  return addFn;
-};
-
-/**
- *
- */
-angular.mock.$RootElementProvider = function() {
-  this.$get = function() {
-    return angular.element('<div ng-app></div>');
-  };
-};
-
-/**
- * @ngdoc module
- * @name ngMock
- * @description
- *
- * # ngMock
- *
- * The `ngMock` module provides support to inject and mock Angular services into unit tests.
- * In addition, ngMock also extends various core ng services such that they can be
- * inspected and controlled in a synchronous manner within test code.
- *
- *
- * <div doc-module-components="ngMock"></div>
- *
- */
-angular.module('ngMock', ['ng']).provider({
-  $browser: angular.mock.$BrowserProvider,
-  $exceptionHandler: angular.mock.$ExceptionHandlerProvider,
-  $log: angular.mock.$LogProvider,
-  $interval: angular.mock.$IntervalProvider,
-  $httpBackend: angular.mock.$HttpBackendProvider,
-  $rootElement: angular.mock.$RootElementProvider
-}).config(['$provide', function($provide) {
-  $provide.decorator('$timeout', angular.mock.$TimeoutDecorator);
-  $provide.decorator('$$rAF', angular.mock.$RAFDecorator);
-  $provide.decorator('$$asyncCallback', angular.mock.$AsyncCallbackDecorator);
-}]);
-
-/**
- * @ngdoc module
- * @name ngMockE2E
- * @module 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(['$provide', function($provide) {
-  $provide.decorator('$httpBackend', angular.mock.e2e.$httpBackendDecorator);
-}]);
-
-/**
- * @ngdoc service
- * @name $httpBackend
- * @module ngMockE2E
- * @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:
- *
- * ```js
- *   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) {
- *       var phone = angular.fromJson(data);
- *       phones.push(phone);
- *       return [200, phone, {}];
- *     });
- *     $httpBackend.whenGET(/^\/templates\//).passThrough();
- *     //...
- *   });
- * ```
- *
- * Afterwards, bootstrap your app with this new module.
- */
-
-/**
- * @ngdoc method
- * @name $httpBackend#when
- * @module ngMockE2E
- * @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, statusText])
- *    | 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), response headers
- *    (Object), and the text for the status (string).
- *  - passThrough – `{function()}` – Any request matching a backend definition with
- *    `passThrough` handler will be passed through to the real backend (an XHR request will be made
- *    to the server.)
- */
-
-/**
- * @ngdoc method
- * @name $httpBackend#whenGET
- * @module ngMockE2E
- * @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 $httpBackend#whenHEAD
- * @module ngMockE2E
- * @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 $httpBackend#whenDELETE
- * @module ngMockE2E
- * @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 $httpBackend#whenPOST
- * @module ngMockE2E
- * @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 $httpBackend#whenPUT
- * @module ngMockE2E
- * @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 $httpBackend#whenPATCH
- * @module ngMockE2E
- * @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 $httpBackend#whenJSONP
- * @module ngMockE2E
- * @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 =
-  ['$rootScope', '$delegate', '$browser', createHttpBackendMock];
-
-
-angular.mock.clearDataCache = function() {
-  var key,
-      cache = angular.element.cache;
-
-  for(key in cache) {
-    if (Object.prototype.hasOwnProperty.call(cache,key)) {
-      var handle = cache[key].handle;
-
-      handle && angular.element(handle.elem).off();
-      delete cache[key];
-    }
-  }
-};
-
-
-if(window.jasmine || window.mocha) {
-
-  var currentSpec = null,
-      isSpecRunning = function() {
-        return !!currentSpec;
-      };
-
-
-  (window.beforeEach || window.setup)(function() {
-    currentSpec = this;
-  });
-
-  (window.afterEach || window.teardown)(function() {
-    var injector = currentSpec.$injector;
-
-    angular.forEach(currentSpec.$modules, function(module) {
-      if (module && module.$$hashKey) {
-        module.$$hashKey = undefined;
-      }
-    });
-
-    currentSpec.$injector = null;
-    currentSpec.$modules = null;
-    currentSpec = null;
-
-    if (injector) {
-      injector.get('$rootElement').off();
-      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;
-  });
-
-  /**
-   * @ngdoc function
-   * @name angular.mock.module
-   * @description
-   *
-   * *NOTE*: This function is also published on window for easy access.<br>
-   *
-   * 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|Object)} 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. If an
-   *        object literal is passed they will be registered as values in the module, the key being
-   *        the module name and the value being what is returned.
-   */
-  window.module = angular.mock.module = function() {
-    var moduleFns = Array.prototype.slice.call(arguments, 0);
-    return isSpecRunning() ? workFn() : workFn;
-    /////////////////////
-    function workFn() {
-      if (currentSpec.$injector) {
-        throw new Error('Injector already created, can not register a module!');
-      } else {
-        var modules = currentSpec.$modules || (currentSpec.$modules = []);
-        angular.forEach(moduleFns, function(module) {
-          if (angular.isObject(module) && !angular.isArray(module)) {
-            modules.push(function($provide) {
-              angular.forEach(module, function(value, key) {
-                $provide.value(key, value);
-              });
-            });
-          } else {
-            modules.push(module);
-          }
-        });
-      }
-    }
-  };
-
-  /**
-   * @ngdoc function
-   * @name angular.mock.inject
-   * @description
-   *
-   * *NOTE*: This function is also published on window for easy access.<br>
-   *
-   * 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.
-   *
-   *
-   * ## Resolving References (Underscore Wrapping)
-   * Often, we would like to inject a reference once, in a `beforeEach()` block and reuse this
-   * in multiple `it()` clauses. To be able to do this we must assign the reference to a variable
-   * that is declared in the scope of the `describe()` block. Since we would, most likely, want
-   * the variable to have the same name of the reference we have a problem, since the parameter
-   * to the `inject()` function would hide the outer variable.
-   *
-   * To help with this, the injected parameters can, optionally, be enclosed with underscores.
-   * These are ignored by the injector when the reference name is resolved.
-   *
-   * For example, the parameter `_myService_` would be resolved as the reference `myService`.
-   * Since it is available in the function body as _myService_, we can then assign it to a variable
-   * defined in an outer scope.
-   *
-   * ```
-   * // Defined out reference variable outside
-   * var myService;
-   *
-   * // Wrap the parameter in underscores
-   * beforeEach( inject( function(_myService_){
-   *   myService = _myService_;
-   * }));
-   *
-   * // Use myService in a series of tests.
-   * it('makes use of myService', function() {
-   *   myService.doStuff();
-   * });
-   *
-   * ```
-   *
-   * See also {@link angular.mock.module angular.mock.module}
-   *
-   * ## Example
-   * Example of what a typical jasmine tests looks like with the inject method.
-   * ```js
-   *
-   *   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');
-   *       });
-   *     });
-   *   });
-   *
-   * ```
-   *
-   * @param {...Function} fns any number of functions which will be injected using the injector.
-   */
-
-
-
-  var ErrorAddingDeclarationLocationStack = function(e, errorForStack) {
-    this.message = e.message;
-    this.name = e.name;
-    if (e.line) this.line = e.line;
-    if (e.sourceId) this.sourceId = e.sourceId;
-    if (e.stack && errorForStack)
-      this.stack = e.stack + '\n' + errorForStack.stack;
-    if (e.stackArray) this.stackArray = e.stackArray;
-  };
-  ErrorAddingDeclarationLocationStack.prototype.toString = Error.prototype.toString;
-
-  window.inject = angular.mock.inject = function() {
-    var blockFns = Array.prototype.slice.call(arguments, 0);
-    var errorForStack = new Error('Declaration Location');
-    return isSpecRunning() ? workFn.call(currentSpec) : workFn;
-    /////////////////////
-    function workFn() {
-      var modules = currentSpec.$modules || [];
-
-      modules.unshift('ngMock');
-      modules.unshift('ng');
-      var injector = currentSpec.$injector;
-      if (!injector) {
-        injector = currentSpec.$injector = angular.injector(modules);
-      }
-      for(var i = 0, ii = blockFns.length; i < ii; i++) {
-        try {
-          /* jshint -W040 *//* Jasmine explicitly provides a `this` object when calling functions */
-          injector.invoke(blockFns[i] || angular.noop, this);
-          /* jshint +W040 */
-        } catch (e) {
-          if (e.stack && errorForStack) {
-            throw new ErrorAddingDeclarationLocationStack(e, errorForStack);
-          }
-          throw e;
-        } finally {
-          errorForStack = null;
-        }
-      }
-    }
-  };
-}
-
-
-})(window, window.angular);


[30/71] [abbrv] brooklyn-ui git commit: This closes #491

Posted by he...@apache.org.
This closes #491


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/commit/c7a0221d
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/tree/c7a0221d
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/diff/c7a0221d

Branch: refs/heads/0.7.0-incubating
Commit: c7a0221d6b36dff93f939d7887bb4d6591145b50
Parents: cbb51c2 13a7688
Author: Aled Sage <al...@gmail.com>
Authored: Mon Feb 9 14:57:07 2015 +0000
Committer: Aled Sage <al...@gmail.com>
Committed: Mon Feb 9 14:57:07 2015 +0000

----------------------------------------------------------------------
 .../main/webapp/assets/js/model/application.js  |  4 ++
 .../assets/js/view/application-add-wizard.js    | 76 ++++++++++++--------
 .../assets/tpl/app-add-wizard/deploy.html       |  4 --
 3 files changed, 49 insertions(+), 35 deletions(-)
----------------------------------------------------------------------



[25/71] [abbrv] brooklyn-ui git commit: Move mobile app to sandbox

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-animate.min.js.map
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-animate.min.js.map b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-animate.min.js.map
deleted file mode 100644
index 1772348..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-animate.min.js.map
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-"version":3,
-"file":"angular-animate.min.js",
-"lineCount":27,
-"mappings":"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",
-"sources":["angular-animate.js"],
-"names":["window","angular","undefined","module","factory","$$rAF","$document","fn","config","$provide","$animateProvider","extractElementNode","element","i","length","elm","nodeType","ELEMENT_NODE","stripCommentsFromElement","noop","forEach","selectors","$$selectors","NG_ANIMATE_STATE","NG_ANIMATE_CLASS_NAME","rootAnimateState","decorator","$delegate","$injector","$sniffer","$rootElement","$$asyncCallback","$rootScope","lookup","name","matches","flagMap","classes","substr","split","transitions","animations","push","get","klass","selectorFactoryName","animationRunner","animationEvent","className","registerAnimation","animationFactory","event","afterFn","beforeFn","charAt","toUpperCase","after","before","run","fns","cancellations","allCompleteFn","animation","count","index","progress","classNameAdd","classNameRemove","node","isSetClassOperation","isClassBased","isArray","attr","currentClassName","isAnimatableClassName","beforeComplete","beforeCancel","afterComplete","afterCancel","an
 imationLookup","replace","created","cancel","cancelFn","performAnimation","parentElement","afterElement","domOperation","doneCallback","fireDOMCallback","animationPhase","eventName","elementEvents","triggerHandler","fireBeforeCallbackAsync","fireAfterCallbackAsync","fireDoneCallbackAsync","fireDOMOperation","hasBeenRun","closeAnimation","data","runner","cleanup","localAnimationCount","_data","events","parent","ngAnimateState","runningAnimations","active","totalActiveAnimations","totalActive","lastAnimation","last","disabled","animationsDisabled","skipAnimation","animationsToCancel","current","operation","hasClass","one","e","state","activeLeaveAnimation","addClass","globalAnimationCounter","cancelled","cancelChildAnimations","nodes","isFunction","getElementsByClassName","querySelectorAll","running","structural","removeAnimations","removeClass","removeData","isRoot","result","$$postDigest","classNameFilter","test","enter","enabled","leave","move","setClass","add","remove","value","ar
 guments","register","$window","$timeout","$$animateReflow","afterReflow","callback","cancelAnimationReflow","animationReflowQueue","lookupCache","animationCloseHandler","totalTime","animationElementQueue","futureTimestamp","Date","now","closingTimestamp","closingTimer","closeAllAnimations","elements","elementData","NG_ANIMATE_CSS_DATA_KEY","closeAnimationFn","getElementAnimationDetails","cacheKey","transitionDuration","transitionDelay","animationDuration","animationDelay","transitionDelayStyle","animationDelayStyle","transitionDurationStyle","transitionPropertyStyle","elementStyles","getComputedStyle","TRANSITION_PROP","DURATION_KEY","Math","max","parseMaxTime","PROPERTY_KEY","DELAY_KEY","ANIMATION_PROP","aDuration","parseInt","ANIMATION_ITERATION_COUNT_KEY","str","maxValue","values","isString","parseFloat","getCacheKey","parentID","NG_ANIMATE_PARENT_KEY","parentCounter","getAttribute","animateSetup","calculationDecorator","eventCacheKey","itemIndex","total","stagger","staggerClassN
 ame","staggerCacheKey","applyClasses","formerData","timings","isCurrentlyAnimating","blockTransitions","style","isAnimating","NG_ANIMATE_BLOCK_CLASS_NAME","unblockTransitions","prop","unblockKeyframeAnimations","animateRun","activeAnimationComplete","onEnd","off","css3AnimationEvents","onAnimationProgress","activeClassName","animateClose","appliedStyles","removeProperty","stopPropagation","ev","originalEvent","timeStamp","$manualTimeStamp","elapsedTime","toFixed","ELAPSED_TIME_MAX_DECIMAL_PLACES","startTime","maxDelayTime","maxDuration","indexOf","maxDelay","ONE_SECOND","ANIMATIONEND_EVENT","TRANSITIONEND_EVENT","propertyStyle","CSS_PREFIX","prepareStaggerDelay","oldStyle","setAttribute","on","elementData.closeAnimationFn","CLOSING_TIME_BUFFER","delayStyle","staggerDelay","val","animateBefore","animateAfter","afterAnimationComplete","animate","animationComplete","preReflowCancellation","suffixClasses","suffix","ontransitionend","onwebkittransitionend","onanimationend","onwebkitanima
 tionend","animationCompleted","beforeSetClass","cancellationMethod","beforeAddClass","beforeRemoveClass"]
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-cookies.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-cookies.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-cookies.js
deleted file mode 100644
index 22f397a..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-cookies.js
+++ /dev/null
@@ -1,204 +0,0 @@
-/**
- * @license AngularJS v1.2.19
- * (c) 2010-2014 Google, Inc. http://angularjs.org
- * License: MIT
- */
-(function(window, angular, undefined) {'use strict';
-
-/**
- * @ngdoc module
- * @name ngCookies
- * @description
- *
- * # ngCookies
- *
- * The `ngCookies` module provides a convenient wrapper for reading and writing browser cookies.
- *
- *
- * <div doc-module-components="ngCookies"></div>
- *
- * See {@link ngCookies.$cookies `$cookies`} and
- * {@link ngCookies.$cookieStore `$cookieStore`} for usage.
- */
-
-
-angular.module('ngCookies', ['ng']).
-  /**
-   * @ngdoc service
-   * @name $cookies
-   *
-   * @description
-   * Provides read/write access to browser's cookies.
-   *
-   * Only a simple Object is exposed and by adding or removing properties to/from this object, new
-   * cookies are created/deleted at the end of current $eval.
-   * The object's properties can only be strings.
-   *
-   * Requires the {@link ngCookies `ngCookies`} module to be installed.
-   *
-   * @example
-   *
-   * ```js
-   * function ExampleController($cookies) {
-   *   // Retrieving a cookie
-   *   var favoriteCookie = $cookies.myFavorite;
-   *   // Setting a cookie
-   *   $cookies.myFavorite = 'oatmeal';
-   * }
-   * ```
-   */
-   factory('$cookies', ['$rootScope', '$browser', function ($rootScope, $browser) {
-      var cookies = {},
-          lastCookies = {},
-          lastBrowserCookies,
-          runEval = false,
-          copy = angular.copy,
-          isUndefined = angular.isUndefined;
-
-      //creates a poller fn that copies all cookies from the $browser to service & inits the service
-      $browser.addPollFn(function() {
-        var currentCookies = $browser.cookies();
-        if (lastBrowserCookies != currentCookies) { //relies on browser.cookies() impl
-          lastBrowserCookies = currentCookies;
-          copy(currentCookies, lastCookies);
-          copy(currentCookies, cookies);
-          if (runEval) $rootScope.$apply();
-        }
-      })();
-
-      runEval = true;
-
-      //at the end of each eval, push cookies
-      //TODO: this should happen before the "delayed" watches fire, because if some cookies are not
-      //      strings or browser refuses to store some cookies, we update the model in the push fn.
-      $rootScope.$watch(push);
-
-      return cookies;
-
-
-      /**
-       * Pushes all the cookies from the service to the browser and verifies if all cookies were
-       * stored.
-       */
-      function push() {
-        var name,
-            value,
-            browserCookies,
-            updated;
-
-        //delete any cookies deleted in $cookies
-        for (name in lastCookies) {
-          if (isUndefined(cookies[name])) {
-            $browser.cookies(name, undefined);
-          }
-        }
-
-        //update all cookies updated in $cookies
-        for(name in cookies) {
-          value = cookies[name];
-          if (!angular.isString(value)) {
-            value = '' + value;
-            cookies[name] = value;
-          }
-          if (value !== lastCookies[name]) {
-            $browser.cookies(name, value);
-            updated = true;
-          }
-        }
-
-        //verify what was actually stored
-        if (updated){
-          updated = false;
-          browserCookies = $browser.cookies();
-
-          for (name in cookies) {
-            if (cookies[name] !== browserCookies[name]) {
-              //delete or reset all cookies that the browser dropped from $cookies
-              if (isUndefined(browserCookies[name])) {
-                delete cookies[name];
-              } else {
-                cookies[name] = browserCookies[name];
-              }
-              updated = true;
-            }
-          }
-        }
-      }
-    }]).
-
-
-  /**
-   * @ngdoc service
-   * @name $cookieStore
-   * @requires $cookies
-   *
-   * @description
-   * Provides a key-value (string-object) storage, that is backed by session cookies.
-   * Objects put or retrieved from this storage are automatically serialized or
-   * deserialized by angular's toJson/fromJson.
-   *
-   * Requires the {@link ngCookies `ngCookies`} module to be installed.
-   *
-   * @example
-   *
-   * ```js
-   * function ExampleController($cookies) {
-   *   // Put cookie
-   *   $cookieStore.put('myFavorite','oatmeal');
-   *   // Get cookie
-   *   var favoriteCookie = $cookieStore.get('myFavorite');
-   *   // Removing a cookie
-   *   $cookieStore.remove('myFavorite');
-   * }
-   * ```
-   */
-   factory('$cookieStore', ['$cookies', function($cookies) {
-
-      return {
-        /**
-         * @ngdoc method
-         * @name $cookieStore#get
-         *
-         * @description
-         * Returns the value of given cookie key
-         *
-         * @param {string} key Id to use for lookup.
-         * @returns {Object} Deserialized cookie value.
-         */
-        get: function(key) {
-          var value = $cookies[key];
-          return value ? angular.fromJson(value) : value;
-        },
-
-        /**
-         * @ngdoc method
-         * @name $cookieStore#put
-         *
-         * @description
-         * Sets a value for given cookie key
-         *
-         * @param {string} key Id for the `value`.
-         * @param {Object} value Value to be stored.
-         */
-        put: function(key, value) {
-          $cookies[key] = angular.toJson(value);
-        },
-
-        /**
-         * @ngdoc method
-         * @name $cookieStore#remove
-         *
-         * @description
-         * Remove given cookie
-         *
-         * @param {string} key Id of the key-value pair to delete.
-         */
-        remove: function(key) {
-          delete $cookies[key];
-        }
-      };
-
-    }]);
-
-
-})(window, window.angular);

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-cookies.min.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-cookies.min.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-cookies.min.js
deleted file mode 100644
index db53d64..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-cookies.min.js
+++ /dev/null
@@ -1,8 +0,0 @@
-/*
- AngularJS v1.2.19
- (c) 2010-2014 Google, Inc. http://angularjs.org
- License: MIT
-*/
-(function(p,f,n){'use strict';f.module("ngCookies",["ng"]).factory("$cookies",["$rootScope","$browser",function(e,b){var c={},g={},h,k=!1,l=f.copy,m=f.isUndefined;b.addPollFn(function(){var a=b.cookies();h!=a&&(h=a,l(a,g),l(a,c),k&&e.$apply())})();k=!0;e.$watch(function(){var a,d,e;for(a in g)m(c[a])&&b.cookies(a,n);for(a in c)d=c[a],f.isString(d)||(d=""+d,c[a]=d),d!==g[a]&&(b.cookies(a,d),e=!0);if(e)for(a in d=b.cookies(),c)c[a]!==d[a]&&(m(d[a])?delete c[a]:c[a]=d[a])});return c}]).factory("$cookieStore",
-["$cookies",function(e){return{get:function(b){return(b=e[b])?f.fromJson(b):b},put:function(b,c){e[b]=f.toJson(c)},remove:function(b){delete e[b]}}}])})(window,window.angular);
-//# sourceMappingURL=angular-cookies.min.js.map

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-cookies.min.js.map
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-cookies.min.js.map b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-cookies.min.js.map
deleted file mode 100644
index 4e6f87a..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-cookies.min.js.map
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-"version":3,
-"file":"angular-cookies.min.js",
-"lineCount":7,
-"mappings":"A;;;;;aAKC,SAAQ,CAACA,CAAD,CAASC,CAAT,CAAkBC,CAAlB,CAA6B,CAmBtCD,CAAAE,OAAA,CAAe,WAAf,CAA4B,CAAC,IAAD,CAA5B,CAAAC,QAAA,CAyBW,UAzBX,CAyBuB,CAAC,YAAD,CAAe,UAAf,CAA2B,QAAS,CAACC,CAAD,CAAaC,CAAb,CAAuB,CAAA,IACxEC,EAAU,EAD8D,CAExEC,EAAc,EAF0D,CAGxEC,CAHwE,CAIxEC,EAAU,CAAA,CAJ8D,CAKxEC,EAAOV,CAAAU,KALiE,CAMxEC,EAAcX,CAAAW,YAGlBN,EAAAO,UAAA,CAAmB,QAAQ,EAAG,CAC5B,IAAIC,EAAiBR,CAAAC,QAAA,EACjBE,EAAJ,EAA0BK,CAA1B,GACEL,CAGA,CAHqBK,CAGrB,CAFAH,CAAA,CAAKG,CAAL,CAAqBN,CAArB,CAEA,CADAG,CAAA,CAAKG,CAAL,CAAqBP,CAArB,CACA,CAAIG,CAAJ,EAAaL,CAAAU,OAAA,EAJf,CAF4B,CAA9B,CAAA,EAUAL,EAAA,CAAU,CAAA,CAKVL,EAAAW,OAAA,CASAC,QAAa,EAAG,CAAA,IACVC,CADU,CAEVC,CAFU,CAIVC,CAGJ,KAAKF,CAAL,GAAaV,EAAb,CACMI,CAAA,CAAYL,CAAA,CAAQW,CAAR,CAAZ,CAAJ,EACEZ,CAAAC,QAAA,CAAiBW,CAAjB,CAAuBhB,CAAvB,CAKJ,KAAIgB,CAAJ,GAAYX,EAAZ,CACEY,CAKA,CALQZ,CAAA,CAAQW,CAAR,CAKR,CAJKjB,CAAAoB,SAAA,CAAiBF,CAAjB,CAIL,GAHEA,CACA,CADQ,EACR,CADaA,CACb,CAAAZ,CAAA,CAAQW,CAAR,CAAA,CAAgBC,CAElB,EAAIA,CAAJ,GAAcX,CAAA,CAAYU,CAAZ,CAAd,GACEZ,CAAA
 C,QAAA,CAAiBW,CAAjB,CAAuBC,CAAvB,CACA,CAAAC,CAAA,CAAU,CAAA,CAFZ,CAOF,IAAIA,CAAJ,CAIE,IAAKF,CAAL,GAFAI,EAEaf,CAFID,CAAAC,QAAA,EAEJA,CAAAA,CAAb,CACMA,CAAA,CAAQW,CAAR,CAAJ,GAAsBI,CAAA,CAAeJ,CAAf,CAAtB,GAEMN,CAAA,CAAYU,CAAA,CAAeJ,CAAf,CAAZ,CAAJ,CACE,OAAOX,CAAA,CAAQW,CAAR,CADT,CAGEX,CAAA,CAAQW,CAAR,CAHF,CAGkBI,CAAA,CAAeJ,CAAf,CALpB,CAhCU,CAThB,CAEA,OAAOX,EA1BqE,CAA3D,CAzBvB,CAAAH,QAAA,CAkIW,cAlIX;AAkI2B,CAAC,UAAD,CAAa,QAAQ,CAACmB,CAAD,CAAW,CAErD,MAAO,KAWAC,QAAQ,CAACC,CAAD,CAAM,CAEjB,MAAO,CADHN,CACG,CADKI,CAAA,CAASE,CAAT,CACL,EAAQxB,CAAAyB,SAAA,CAAiBP,CAAjB,CAAR,CAAkCA,CAFxB,CAXd,KA0BAQ,QAAQ,CAACF,CAAD,CAAMN,CAAN,CAAa,CACxBI,CAAA,CAASE,CAAT,CAAA,CAAgBxB,CAAA2B,OAAA,CAAeT,CAAf,CADQ,CA1BrB,QAuCGU,QAAQ,CAACJ,CAAD,CAAM,CACpB,OAAOF,CAAA,CAASE,CAAT,CADa,CAvCjB,CAF8C,CAAhC,CAlI3B,CAnBsC,CAArC,CAAA,CAsMEzB,MAtMF,CAsMUA,MAAAC,QAtMV;",
-"sources":["angular-cookies.js"],
-"names":["window","angular","undefined","module","factory","$rootScope","$browser","cookies","lastCookies","lastBrowserCookies","runEval","copy","isUndefined","addPollFn","currentCookies","$apply","$watch","push","name","value","updated","isString","browserCookies","$cookies","get","key","fromJson","put","toJson","remove"]
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-csp.css
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-csp.css b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-csp.css
deleted file mode 100644
index 3abb3a0..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-csp.css
+++ /dev/null
@@ -1,24 +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;
-}
-
-.ng-animate-block-transitions {
-  transition:0s all!important;
-  -webkit-transition:0s all!important;
-}
-
-/* show the element during a show/hide animation when the
- * animation is ongoing, but the .ng-hide class is active */
-.ng-hide-add-active, .ng-hide-remove {
-  display: block!important;
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-loader.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-loader.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-loader.js
deleted file mode 100644
index e98487d..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-loader.js
+++ /dev/null
@@ -1,414 +0,0 @@
-/**
- * @license AngularJS v1.2.19
- * (c) 2010-2014 Google, Inc. http://angularjs.org
- * License: MIT
- */
-
-(function() {'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.2.19/' +
-      (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);
-  };
-}
-
-/**
- * @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, controllers, 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.
-           * For more about how to configure services, see
-           * {@link providers#providers_provider-recipe Provider Recipe}.
-           */
-          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;
-          };
-        }
-      });
-    };
-  });
-
-}
-
-setupModuleLoader(window);
-})(window);
-
-/**
- * Closure compiler type information
- *
- * @typedef { {
- *   requires: !Array.<string>,
- *   invokeQueue: !Array.<Array.<*>>,
- *
- *   service: function(string, Function):angular.Module,
- *   factory: function(string, Function):angular.Module,
- *   value: function(string, *):angular.Module,
- *
- *   filter: function(string, Function):angular.Module,
- *
- *   init: function(Function):angular.Module
- * } }
- */
-angular.Module;
-

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-loader.min.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-loader.min.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-loader.min.js
deleted file mode 100644
index 75f2c86..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-loader.min.js
+++ /dev/null
@@ -1,9 +0,0 @@
-/*
- AngularJS v1.2.19
- (c) 2010-2014 Google, Inc. http://angularjs.org
- License: MIT
-*/
-(function(){'use strict';function d(a){return function(){var c=arguments[0],b,c="["+(a?a+":":"")+c+"] http://errors.angularjs.org/1.2.19/"+(a?a+"/":"")+c;for(b=1;b<arguments.length;b++)c=c+(1==b?"?":"&")+"p"+(b-1)+"="+encodeURIComponent("function"==typeof arguments[b]?arguments[b].toString().replace(/ \{[\s\S]*$/,""):"undefined"==typeof arguments[b]?"undefined":"string"!=typeof arguments[b]?JSON.stringify(arguments[b]):arguments[b]);return Error(c)}}(function(a){var c=d("$injector"),b=d("ng");a=a.angular||
-(a.angular={});a.$$minErr=a.$$minErr||d;return a.module||(a.module=function(){var a={};return function(e,d,f){if("hasOwnProperty"===e)throw b("badname","module");d&&a.hasOwnProperty(e)&&(a[e]=null);return a[e]||(a[e]=function(){function a(c,d,e){return function(){b[e||"push"]([c,d,arguments]);return g}}if(!d)throw c("nomod",e);var b=[],h=[],k=a("$injector","invoke"),g={_invokeQueue:b,_runBlocks:h,requires:d,name:e,provider:a("$provide","provider"),factory:a("$provide","factory"),service:a("$provide",
-"service"),value:a("$provide","value"),constant:a("$provide","constant","unshift"),animation:a("$animateProvider","register"),filter:a("$filterProvider","register"),controller:a("$controllerProvider","register"),directive:a("$compileProvider","directive"),config:k,run:function(a){h.push(a);return this}};f&&k(f);return g}())}}())})(window)})(window);
-//# sourceMappingURL=angular-loader.min.js.map

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-loader.min.js.map
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-loader.min.js.map b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-loader.min.js.map
deleted file mode 100644
index c61fa8b..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-loader.min.js.map
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-"version":3,
-"file":"angular-loader.min.js",
-"lineCount":8,
-"mappings":"A;;;;;aAMC,SAAQ,EAAG,CA8BZA,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,uCAAAA,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,CAuDAC,SAA0B,CAACC,CAAD,CAAS,CAEjC,IAAIC,EAAkBH,CAAA,CAAO,WAAP,CAAtB,CACII,EAAWJ,CAAA,CAAO,IAAP,CAMXK,EAAAA,CAAiBH,CAHZ,QAGLG;CAAiBH,
 CAHE,QAGnBG,CAH+B,EAG/BA,CAGJA,EAAAC,SAAA,CAAmBD,CAAAC,SAAnB,EAAuCN,CAEvC,OAAcK,EARL,OAQT,GAAcA,CARS,OAQvB,CAAiCE,QAAQ,EAAG,CAE1C,IAAIC,EAAU,EAqDd,OAAOC,SAAe,CAACC,CAAD,CAAOC,CAAP,CAAiBC,CAAjB,CAA2B,CAE7C,GAAa,gBAAb,GAKsBF,CALtB,CACE,KAAMN,EAAA,CAAS,SAAT,CAIoBS,QAJpB,CAAN,CAKAF,CAAJ,EAAgBH,CAAAM,eAAA,CAAuBJ,CAAvB,CAAhB,GACEF,CAAA,CAAQE,CAAR,CADF,CACkB,IADlB,CAGA,OAAcF,EA1ET,CA0EkBE,CA1ElB,CA0EL,GAAcF,CA1EK,CA0EIE,CA1EJ,CA0EnB,CAA6BH,QAAQ,EAAG,CAkNtCQ,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,CAAmBG,SAAnB,CAApC,CACA,OAAOC,EAFS,CADiC,CAjNrD,GAAI,CAACV,CAAL,CACE,KAAMR,EAAA,CAAgB,OAAhB,CAEiDO,CAFjD,CAAN,CAMF,IAAIS,EAAc,EAAlB,CAGIG,EAAY,EAHhB,CAKIC,EAASR,CAAA,CAAY,WAAZ,CAAyB,QAAzB,CALb,CAQIM,EAAiB,cAELF,CAFK,YAGPG,CAHO,UAcTX,CAdS,MAuBbD,CAvBa,UAoCTK,CAAA,CAAY,UAAZ,CAAwB,UAAxB,CApCS,SA+CVA,CAAA,CAAY,UAAZ,CAAwB,SAAxB,CA/CU,SA0DVA,CAAA,CAAY,UAAZ;AAAwB,SAAxB,CA1DU,OAqEZA,CAAA,CAAY,UAAZ,CAAwB,OA
 AxB,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,QAoKXQ,CApKW,KAgLdC,QAAQ,CAACC,CAAD,CAAQ,CACnBH,CAAAI,KAAA,CAAeD,CAAf,CACA,OAAO,KAFY,CAhLF,CAsLjBb,EAAJ,EACEW,CAAA,CAAOX,CAAP,CAGF,OAAQS,EA1M8B,CA1ET,EA0E/B,CAX+C,CAvDP,CART,EAQnC,CAdiC,CAAnCpB,CA8SA,CAAkBC,MAAlB,CAnYY,CAAX,CAAA,CAoYEA,MApYF;",
-"sources":["angular-loader.js"],
-"names":["minErr","setupModuleLoader","window","$injectorMinErr","ngMinErr","angular","$$minErr","factory","modules","module","name","requires","configFn","context","hasOwnProperty","invokeLater","provider","method","insertMethod","invokeQueue","arguments","moduleInstance","runBlocks","config","run","block","push"]
-}


[69/71] [abbrv] brooklyn-ui git commit: remove overflow-y where it doesn't belong

Posted by he...@apache.org.
remove overflow-y where it doesn't belong


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/commit/b4e78ede
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/tree/b4e78ede
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/diff/b4e78ede

Branch: refs/heads/0.7.0-incubating
Commit: b4e78ede37a057c3139ef15c40a0c35dabb40a8f
Parents: af222b0
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Wed Jun 24 00:37:08 2015 -0700
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Wed Jun 24 00:37:08 2015 -0700

----------------------------------------------------------------------
 usage/jsgui/src/main/webapp/assets/css/base.css | 1 -
 1 file changed, 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/b4e78ede/usage/jsgui/src/main/webapp/assets/css/base.css
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/css/base.css b/usage/jsgui/src/main/webapp/assets/css/base.css
index c33d015..745540c 100644
--- a/usage/jsgui/src/main/webapp/assets/css/base.css
+++ b/usage/jsgui/src/main/webapp/assets/css/base.css
@@ -1114,7 +1114,6 @@ tr.app-add-wizard-config-entry {
     margin-bottom: 6px;
     background-color: #F0F0F0;
     border-radius: 5px;
-    overflow-y: scroll;
 }
 .catalog-accordion-wrapper .accordion-nav-row {
     white-space: pre;


[48/71] [abbrv] brooklyn-ui git commit: This closes #576

Posted by he...@apache.org.
This closes #576


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/commit/bca850e9
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/tree/bca850e9
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/diff/bca850e9

Branch: refs/heads/0.7.0-incubating
Commit: bca850e9facef49a78a1188d0f331e22f18032c7
Parents: 0a5bbe4 2a8f40c
Author: Sam Corbett <sa...@cloudsoftcorp.com>
Authored: Wed Apr 8 10:29:25 2015 +0100
Committer: Sam Corbett <sa...@cloudsoftcorp.com>
Committed: Wed Apr 8 10:29:25 2015 +0100

----------------------------------------------------------------------
 LICENSE                                         |   11 +-
 usage/jsgui/src/main/webapp/assets/js/config.js |    1 +
 .../src/main/webapp/assets/js/libs/js-yaml.js   | 3666 ++++++++++++++++++
 .../main/webapp/assets/js/model/application.js  |    4 +-
 .../assets/js/model/catalog-item-summary.js     |    8 +-
 .../assets/js/view/application-add-wizard.js    |  181 +-
 .../create-step-template-entry.html             |    2 +-
 .../assets/tpl/app-add-wizard/create.html       |    3 -
 .../assets/tpl/app-add-wizard/preview.html      |   37 -
 usage/jsgui/src/test/javascript/config.txt      |    1 +
 10 files changed, 3779 insertions(+), 135 deletions(-)
----------------------------------------------------------------------



[45/71] [abbrv] brooklyn-ui git commit: This closes #577

Posted by he...@apache.org.
This closes #577


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/commit/0a5bbe47
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/tree/0a5bbe47
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/diff/0a5bbe47

Branch: refs/heads/0.7.0-incubating
Commit: 0a5bbe47097506283d29052d31be1c39fce772d0
Parents: 8bfefad 83c958a
Author: Aled Sage <al...@gmail.com>
Authored: Wed Apr 1 22:20:59 2015 +0100
Committer: Aled Sage <al...@gmail.com>
Committed: Wed Apr 1 22:20:59 2015 +0100

----------------------------------------------------------------------
 usage/jsgui/src/main/webapp/assets/js/router.js | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
----------------------------------------------------------------------



[57/71] [abbrv] brooklyn-ui git commit: address code review for startup info

Posted by he...@apache.org.
address code review for startup info

JS masterUri fix, HA check cleanups, removing unneeded classes, and catch catalog error


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/commit/7680018f
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/tree/7680018f
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/diff/7680018f

Branch: refs/heads/0.7.0-incubating
Commit: 7680018fb3cd573d6df56b62cb53da46e19f24ba
Parents: b06aa95
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Wed May 6 10:48:16 2015 +0100
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Wed May 6 10:48:16 2015 +0100

----------------------------------------------------------------------
 .../main/webapp/assets/js/model/server-extended-status.js | 10 +++-------
 1 file changed, 3 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/7680018f/usage/jsgui/src/main/webapp/assets/js/model/server-extended-status.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/js/model/server-extended-status.js b/usage/jsgui/src/main/webapp/assets/js/model/server-extended-status.js
index 2f5ccb3..e774294 100644
--- a/usage/jsgui/src/main/webapp/assets/js/model/server-extended-status.js
+++ b/usage/jsgui/src/main/webapp/assets/js/model/server-extended-status.js
@@ -73,13 +73,9 @@ define(["backbone", "brooklyn", "view/viewutils"], function (Backbone, Brooklyn,
         getMasterUri: function() {
             // Might be undefined if first fetch hasn't completed
             ha = this.get("ha") || {};
-            states = ha.states || {};
-            if (!states) return null;
-            
-            var nodes = this.get("nodes") || {};
-            var master = nodes[this.get("masterId")];
-            // defensive, if this happens something more serious has gone wrong!
-            if (!master) {
+            nodes = ha.nodes || {};
+            master = nodes[ha.masterId];
+            if (!master || master.status != "MASTER") {
                 return null;
             } else {
                 return master.nodeUri;


[19/71] [abbrv] brooklyn-ui git commit: Move mobile app to sandbox

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular.js
deleted file mode 100644
index 50a0512..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular.js
+++ /dev/null
@@ -1,21778 +0,0 @@
-/**
- * @license AngularJS v1.2.19
- * (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.2.19/' +
-      (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,
-    -angularModule,
-    -nodeName_,
-    -uid,
-    -VALIDITY_STATE_PROPERTY,
-
-    -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>
- */
-
-// The name of a form control's ValidityState property.
-// This is used so that it's possible for internal tests to create mock ValidityStates.
-var VALIDITY_STATE_PROPERTY = 'validity';
-
-/**
- * @ngdoc function
- * @name angular.lowercase
- * @module ng
- * @kind 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
- * @kind 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'),
-
-    /** @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
- * @kind 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
- * @kind 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
- * @kind 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
- * @kind 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
- * @kind 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
- * @kind 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
- * @kind 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
- * @kind 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
- * @kind 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
- * @kind 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
- * @kind function
- *
- * @description
- * Determines if a reference is an `Array`.
- *
- * @param {*} value Reference to check.
- * @returns {boolean} True if `value` is an `Array`.
- */
-var isArray = (function() {
-  if (!isFunction(Array.isArray)) {
-    return function(value) {
-      return toString.call(value) === '[object Array]';
-    };
-  }
-  return Array.isArray;
-})();
-
-/**
- * @ngdoc function
- * @name angular.isFunction
- * @module ng
- * @kind 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
- * @kind 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
- * @kind 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, stackSource, stackDest) {
-  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, [], stackSource, stackDest);
-      } 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, {}, stackSource, stackDest);
-      }
-    }
-  } else {
-    if (source === destination) throw ngMinErr('cpi',
-      "Can't copy! Source and destination are identical.");
-
-    stackSource = stackSource || [];
-    stackDest = stackDest || [];
-
-    if (isObject(source)) {
-      var index = indexOf(stackSource, source);
-      if (index !== -1) return stackDest[index];
-
-      stackSource.push(source);
-      stackDest.push(destination);
-    }
-
-    var result;
-    if (isArray(source)) {
-      destination.length = 0;
-      for ( var i = 0; i < source.length; i++) {
-        result = copy(source[i], null, stackSource, stackDest);
-        if (isObject(source[i])) {
-          stackSource.push(source[i]);
-          stackDest.push(result);
-        }
-        destination.push(result);
-      }
-    } else {
-      var h = destination.$$hashKey;
-      forEach(destination, function(value, key) {
-        delete destination[key];
-      });
-      for ( var key in source) {
-        result = copy(source[key], null, stackSource, stackDest);
-        if (isObject(source[key])) {
-          stackSource.push(source[key]);
-          stackDest.push(result);
-        }
-        destination[key] = result;
-      }
-      setHashKey(destination,h);
-    }
-
-  }
-  return destination;
-}
-
-/**
- * Creates a shallow copy of an object, an array or a primitive
- */
-function shallowCopy(src, dst) {
-  if (isArray(src)) {
-    dst = dst || [];
-
-    for ( var i = 0; i < src.length; i++) {
-      dst[i] = src[i];
-    }
-  } else if (isObject(src)) {
-    dst = dst || {};
-
-    for (var key in src) {
-      if (hasOwnProperty.call(src, key) && !(key.charAt(0) === '$' && key.charAt(1) === '$')) {
-        dst[key] = src[key];
-      }
-    }
-  }
-
-  return dst || src;
-}
-
-
-/**
- * @ngdoc function
- * @name angular.equals
- * @module ng
- * @kind 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 JavaScript,
- *   /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
- * @kind 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
- * @kind 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
- * @kind 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' : '+'));
-}
-
-
-/**
- * @ngdoc directive
- * @name ngApp
- * @module ng
- *
- * @element ANY
- * @param {angular.Module} ngApp an optional application
- *   {@link angular.module module} name to load.
- *
- * @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>
- *
- */
-function angularInit(element, bootstrap) {
-  var elements = [element],
-      appElement,
-      module,
-      names = ['ng:app', 'ng-app', 'x-ng-app', 'data-ng-app'],
-      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) {
-    bootstrap(appElement, module ? [module] : []);
-  }
-}
-
-/**
- * @ngdoc function
- * @name angular.bootstrap
- * @module ng
- * @description
- * Use this function to manually start up angular application.
- *
- * See: {@link guide/bootstrap Bootstrap}
- *
- * Note that ngScenario-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.
- *
- * <example name="multi-bootstrap" module="multi-bootstrap">
- * <file name="index.html">
- * <script src="../../../angular.js"></script>
- * <div ng-controller="BrokenTable">
- *   <table>
- *   <tr>
- *     <th ng-repeat="heading in headings">{{heading}}</th>
- *   </tr>
- *   <tr ng-repeat="filling in fillings">
- *     <td ng-repeat="fill in filling">{{fill}}</td>
- *   </tr>
- * </table>
- * </div>
- * </file>
- * <file name="controller.js">
- * var app = angular.module('multi-bootstrap', [])
- *
- * .controller('BrokenTable', function($scope) {
- *     $scope.headings = ['One', 'Two', 'Three'];
- *     $scope.fillings = [[1, 2, 3], ['A', 'B', 'C'], [7, 8, 9]];
- * });
- * </file>
- * <file name="protractor.js" type="protractor">
- * it('should only insert one table cell for each item in $scope.fillings', function() {
- *  expect(element.all(by.css('td')).count())
- *      .toBe(9);
- * });
- * </file>
- * </example>
- *
- * @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}
- * @returns {auto.$injector} Returns the newly created injector for this app.
- */
-function bootstrap(element, modules) {
-  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);
-    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;
-  // Use jQuery if it exists with proper functionality, otherwise default to us.
-  // Angular 1.2+ requires jQuery 1.7.1+ for on()/off() support.
-  if (jQuery && jQuery.fn.on) {
-    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, controllers, 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.
-           * For more about how to configure services, see
-           * {@link providers#providers_provider-recipe Provider Recipe}.
-           */
-          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,
-    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.2.19',    // all of these placeholder strings will be replaced by grunt's
-  major: 1,    // package task
-  minor: 2,
-  dot: 19,
-  codeName: 'precognitive-flashbacks'
-};
-
-
-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
-        }).
-        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
- * @kind 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.
- */
-
-JQLite.expando = 'ng339';
-
-var jqCache = JQLite.cache = {},
-    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, j, jj;
-
-  if (jqLiteIsTextNode(html)) {
-    // Convert non-html into a text node
-    nodes.push(context.createTextNode(html));
-  } else {
-    tmp = fragment.appendChild(context.createElement('div'));
-    // Convert html into DOM nodes
-    tag = (TAG_NAME_REGEXP.exec(html) || ["", ""])[1].toLowerCase();
-    wrap = wrapMap[tag] || wrapMap._default;
-    tmp.innerHTML = '<div>&#160;</div>' +
-      wrap[1] + html.replace(XHTML_TAG_REGEXP, "<$1></$2>") + wrap[2];
-    tmp.removeChild(tmp.firstChild);
-
-    // Descend through wrappers to the right content
-    i = wrap[0];
-    while (i--) {
-      tmp = tmp.lastChild;
-    }
-
-    for (j=0, jj=tmp.childNodes.length; j<jj; ++j) nodes.push(tmp.childNodes[j]);
-
-    tmp = fragment.firstChild;
-    tmp.textContent = "";
-  }
-
-  // Remove wrapper from fragment
-  fragment.textContent = "";
-  fragment.innerHTML = ""; // Clear inner HTML
-  return nodes;
-}
-
-function jqLiteParseHTML(html, context) {
-  context = context || document;
-  var parsed;
-
-  if ((parsed = SINGLE_TAG_REGEXP.exec(html))) {
-    return [context.createElement(parsed[1])];
-  }
-
-  return jqLiteBuildFragment(html, context);
-}
-
-/////////////////////////////////////////////
-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));
-    var fragment = jqLite(document.createDocumentFragment());
-    fragment.append(this);
-  } 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.ng339,
-      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.ng339 = undefined; // don't delete DOM expandos. IE and Chrome don't like it
-  }
-}
-
-function jqLiteExpandoStore(element, key, value) {
-  var expandoId = element.ng339,
-      expandoStore = jqCache[expandoId || -1];
-
-  if (isDefined(value)) {
-    if (!expandoStore) {
-      element.ng339 = 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;
-    var nodeCount = this.length;
-
-    // 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 < nodeCount; 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.
-        // TODO: do we still need this?
-        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(nodeCount, 1) : nodeCount;
-        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 < nodeCount; 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 (!event.stopPropagation) {
-      event.stopPropagation = function() {
-        event.cancelBubble = true; //ie
-      };
-    }
-
-    if (!event.target) {
-      event.target = event.srcElement || document;
-    }
-
-    if (isUndefined(event.defaultPrevented)) {
-      var prevent = event.preventDefault;
-      event.preventDefault = function() {
-        event.defaultPrevented = true;
-        prevent.call(event);
-      };
-      event.defaultPrevented = false;
-    }
-
-    event.isDefaultPrevented = function() {
-      return event.defaultPrevented || event.returnValue === false;
-    };
-
-    // Copy event handlers in case event handlers array is modified during execution.
-    var eventHandlersCopy = shallowCopy(events[type || event.type] || []);
-
-    forEach(eventHandlersCopy, function(fn) {
-      fn.call(element, event);
-    });
-
-    // Remove monkey-patched methods (IE),
-    // as they would cause memory leaks in IE8.
-    if (msie <= 8) {
-      // IE7/8 does not allow to delete property on native object
-      event.preventDefault = null;
-      event.stopPropagation = null;
-      event.isDefaultPrevented = null;
-    } else {
-      // It shouldn't affect normal browsers (native methods are defined on prototype).
-      delete event.preventDefault;
-      delete event.stopPropagation;
-      delete event.isDefaultPrevented;
-    }
-  };
-  eventHandler.elem = element;
-  return eventHandler;
-}
-
-//////////////////////////////////////////
-// Functions iterating traversal.
-// These functions chain results into a single
-// selector.
-//////////////////////////////////////////
-forEach({
-  removeData: jqLiteRemoveData,
-
-  dealoc: jqLiteDealoc,
-
-  on: function onFn(element, type, fn, unsupported){
-    if (isDefined(unsupported)) throw jqLiteMinErr('onargs', 'jqLite#on() does not support the `selector` or `eventData` parameters');
-
-    var events = jqLiteExpandoStore(element, 'events'),
-        handle = jqLiteExpandoStore(element, 'handle');
-
-    if (!events) jqLiteExpandoStore(element, 'events', events = {});
-    if (!handle) jqLiteExpandoStore(elem

<TRUNCATED>

[36/71] [abbrv] brooklyn-ui git commit: JS gui is smart about going to wizard page or yaml page after selecting item from template

Posted by he...@apache.org.
JS gui is smart about going to wizard page or yaml page after selecting item from template


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/commit/19ee8b87
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/tree/19ee8b87
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/diff/19ee8b87

Branch: refs/heads/0.7.0-incubating
Commit: 19ee8b874965440b8ee1fe2e916beeea47ed88d6
Parents: bc8b2c9
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Fri Mar 27 18:44:57 2015 -0500
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Sat Mar 28 10:02:49 2015 -0500

----------------------------------------------------------------------
 .../assets/js/model/catalog-item-summary.js     | 11 ++++--
 .../assets/js/view/application-add-wizard.js    | 40 ++++++++++++--------
 2 files changed, 31 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/19ee8b87/usage/jsgui/src/main/webapp/assets/js/model/catalog-item-summary.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/js/model/catalog-item-summary.js b/usage/jsgui/src/main/webapp/assets/js/model/catalog-item-summary.js
index 8e4d3c4..2d8da58 100644
--- a/usage/jsgui/src/main/webapp/assets/js/model/catalog-item-summary.js
+++ b/usage/jsgui/src/main/webapp/assets/js/model/catalog-item-summary.js
@@ -18,7 +18,10 @@
 */
 define(["underscore", "backbone"], function (_, Backbone) {
 
-    // not used currently
+    // NB: THIS IS NOT USED CURRENTLY
+    // the logic in application-add-wizard.js simply loads and manipulates json
+    // TODO change that so that it uses this backbone model + collection 
+    // allowing a way to specify on creation what we are looking up in the catalog -- apps or entities or policies
     
     var CatalogItem = {}
 
@@ -29,15 +32,15 @@ define(["underscore", "backbone"], function (_, Backbone) {
                 name:"",
                 type:"",
                 description:"",
-                iconUrl:"", 
-                planYaml:""
+                planYaml:"",
+                iconUrl:""
             }
         }
     })
 
     CatalogItem.Collection = Backbone.Collection.extend({
         model:CatalogItem.Model,
-        url:'/v1/catalog'  // not used?
+        url:'/v1/catalog'  // TODO is this application or entities or policies?
     })
 
     return CatalogItem

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/19ee8b87/usage/jsgui/src/main/webapp/assets/js/view/application-add-wizard.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/js/view/application-add-wizard.js b/usage/jsgui/src/main/webapp/assets/js/view/application-add-wizard.js
index a936a0c..bc5ae07 100644
--- a/usage/jsgui/src/main/webapp/assets/js/view/application-add-wizard.js
+++ b/usage/jsgui/src/main/webapp/assets/js/view/application-add-wizard.js
@@ -248,18 +248,21 @@ define([
             this.renderCurrentStep()
         },
         nextStep:function () {
-        	  
             if (this.currentStep < 2) {
-//                if (this.currentView.validate()) {
-//                    this.currentStep += 1
-//                    this.renderCurrentStep()
-//                } else {
-//                    // call to validate should showFailure
-//                }
-           	 $("ul#app-add-wizard-create-tab").find("a[href='#yamlTab']").tab('show')
-                $("#yaml_code").focus()
-              
-
+                if (this.currentView.validate()) {
+                    var isYaml = (this.currentView && this.currentView.selectedTemplate && this.currentView.selectedTemplate.yaml);
+                    if (isYaml) {
+                        // it's a yaml catalog template, show the yaml tab
+           	            $("ul#app-add-wizard-create-tab").find("a[href='#yamlTab']").tab('show');
+                        $("#yaml_code").focus()
+                    } else {
+                        // it's a java catalog template, go to wizard for location + config
+                        this.currentStep += 1
+                        this.renderCurrentStep()
+                    }
+                } else {
+                    // the call to validate will have done the showFailure
+                }
             } else {
                 this.finishStep()
             }
@@ -318,6 +321,7 @@ define([
                 self.catalogEntityIds = _.map(result, function(item) { return item.id })
                 self.$(".entity-type-input").typeahead().data('typeahead').source = self.catalogEntityIds
             })
+            // TODO use catalog-item-summary.js instead of raw json; see comments in that file
             $.get('/v1/catalog/applications', {}, function (result) {
                 self.catalogApplicationItems = result
                 self.catalogApplicationIds = _.map(result, function(item) { return item.id })
@@ -402,12 +406,11 @@ define([
         addTemplateLozenge: function(that, item) {
             var $tempel = _.template(CreateStepTemplateEntryHtml, {
                 id: item.id,
-                name: item.name,
+                name: item.name || item.id,
                 description: item.description,
                 planYaml:  item.planYaml,
-                iconUrl: item.iconUrTeml
+                iconUrl: item.iconUr
             })
-            //alert("yaml:"+item.planYaml)
             $("#create-step-template-entries", that.$el).append($tempel)
         },
         templateClick: function(event) {
@@ -418,9 +421,14 @@ define([
                 $tl.addClass("selected")
                 this.selectedTemplate = {
                     type: $tl.attr('id'),
-                    name: $tl.data("name")
+                    name: $tl.data("name"),
+                    yaml: $tl.data("yaml")
                 };
-                $("textarea#yaml_code").val($tl.data("yaml"));
+                if (this.selectedTemplate.yaml) {
+                    $("textarea#yaml_code").val(this.selectedTemplate.yaml);
+                } else {
+                    $("textarea#yaml_code").val("services:\n- type: "+this.selectedTemplate.type);
+                }
             } else {
                 this.selectedTemplate = null;
             }


[50/71] [abbrv] brooklyn-ui git commit: Different LICENSE/NOTICE for usage/cli

Posted by he...@apache.org.
Different LICENSE/NOTICE for usage/cli


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/commit/4e043b3a
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/tree/4e043b3a
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/diff/4e043b3a

Branch: refs/heads/0.7.0-incubating
Commit: 4e043b3ad08c475cccd06282cd8f8038fd5a30b7
Parents: bca850e
Author: Richard Downer <ri...@apache.org>
Authored: Thu Apr 16 12:02:15 2015 +0100
Committer: Richard Downer <ri...@apache.org>
Committed: Thu Apr 16 16:01:01 2015 +0100

----------------------------------------------------------------------
 usage/cli/src/main/license/NOTICE  |   5 +
 usage/cli/src/test/license/LICENSE | 175 ++++++++++++++++++++++++++++++++
 2 files changed, 180 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/4e043b3a/usage/cli/src/main/license/NOTICE
----------------------------------------------------------------------
diff --git a/usage/cli/src/main/license/NOTICE b/usage/cli/src/main/license/NOTICE
new file mode 100644
index 0000000..f790f13
--- /dev/null
+++ b/usage/cli/src/main/license/NOTICE
@@ -0,0 +1,5 @@
+Apache Brooklyn
+Copyright 2014-2015 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/4e043b3a/usage/cli/src/test/license/LICENSE
----------------------------------------------------------------------
diff --git a/usage/cli/src/test/license/LICENSE b/usage/cli/src/test/license/LICENSE
new file mode 100644
index 0000000..67db858
--- /dev/null
+++ b/usage/cli/src/test/license/LICENSE
@@ -0,0 +1,175 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.


[44/71] [abbrv] brooklyn-ui git commit: This closes #508

Posted by he...@apache.org.
This closes #508


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/commit/8bfefad1
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/tree/8bfefad1
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/diff/8bfefad1

Branch: refs/heads/0.7.0-incubating
Commit: 8bfefad19bdfa2fa8d8b6aeef8a87d4afd41f846
Parents: 5a4b984 9d2477e
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Sat Mar 28 21:43:58 2015 -0500
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Sat Mar 28 21:43:58 2015 -0500

----------------------------------------------------------------------
 .../webapp/assets/mobile/images/brooklyn-logo.png   | Bin 0 -> 7055 bytes
 usage/jsgui/src/main/webapp/index.html              |   1 -
 2 files changed, 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/8bfefad1/usage/jsgui/src/main/webapp/index.html
----------------------------------------------------------------------


[52/71] [abbrv] brooklyn-ui git commit: Add DISCLAIMER file to Maven artifacts

Posted by he...@apache.org.
Add DISCLAIMER file to Maven artifacts

Project: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/commit/024e6069
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/tree/024e6069
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/diff/024e6069

Branch: refs/heads/0.7.0-incubating
Commit: 024e60695fb7e80ddf0e07fe08eaed632b51161f
Parents: a7629bf
Author: Richard Downer <ri...@apache.org>
Authored: Fri Apr 17 16:01:59 2015 +0100
Committer: Richard Downer <ri...@apache.org>
Committed: Fri Apr 17 16:26:11 2015 +0100

----------------------------------------------------------------------
 usage/cli/src/main/license/DISCLAIMER   | 8 ++++++++
 usage/dist/src/main/license/DISCLAIMER  | 8 ++++++++
 usage/jsgui/src/main/license/DISCLAIMER | 8 ++++++++
 usage/jsgui/src/test/license/DISCLAIMER | 8 ++++++++
 4 files changed, 32 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/024e6069/usage/cli/src/main/license/DISCLAIMER
----------------------------------------------------------------------
diff --git a/usage/cli/src/main/license/DISCLAIMER b/usage/cli/src/main/license/DISCLAIMER
new file mode 100644
index 0000000..9e6119b
--- /dev/null
+++ b/usage/cli/src/main/license/DISCLAIMER
@@ -0,0 +1,8 @@
+
+Apache Brooklyn is an effort undergoing incubation at The Apache Software Foundation (ASF), 
+sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until 
+a further review indicates that the infrastructure, communications, and decision making process 
+have stabilized in a manner consistent with other successful ASF projects. While incubation 
+status is not necessarily a reflection of the completeness or stability of the code, it does 
+indicate that the project has yet to be fully endorsed by the ASF.
+

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/024e6069/usage/dist/src/main/license/DISCLAIMER
----------------------------------------------------------------------
diff --git a/usage/dist/src/main/license/DISCLAIMER b/usage/dist/src/main/license/DISCLAIMER
new file mode 100644
index 0000000..9e6119b
--- /dev/null
+++ b/usage/dist/src/main/license/DISCLAIMER
@@ -0,0 +1,8 @@
+
+Apache Brooklyn is an effort undergoing incubation at The Apache Software Foundation (ASF), 
+sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until 
+a further review indicates that the infrastructure, communications, and decision making process 
+have stabilized in a manner consistent with other successful ASF projects. While incubation 
+status is not necessarily a reflection of the completeness or stability of the code, it does 
+indicate that the project has yet to be fully endorsed by the ASF.
+

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/024e6069/usage/jsgui/src/main/license/DISCLAIMER
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/license/DISCLAIMER b/usage/jsgui/src/main/license/DISCLAIMER
new file mode 100644
index 0000000..9e6119b
--- /dev/null
+++ b/usage/jsgui/src/main/license/DISCLAIMER
@@ -0,0 +1,8 @@
+
+Apache Brooklyn is an effort undergoing incubation at The Apache Software Foundation (ASF), 
+sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until 
+a further review indicates that the infrastructure, communications, and decision making process 
+have stabilized in a manner consistent with other successful ASF projects. While incubation 
+status is not necessarily a reflection of the completeness or stability of the code, it does 
+indicate that the project has yet to be fully endorsed by the ASF.
+

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/024e6069/usage/jsgui/src/test/license/DISCLAIMER
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/test/license/DISCLAIMER b/usage/jsgui/src/test/license/DISCLAIMER
new file mode 100644
index 0000000..9e6119b
--- /dev/null
+++ b/usage/jsgui/src/test/license/DISCLAIMER
@@ -0,0 +1,8 @@
+
+Apache Brooklyn is an effort undergoing incubation at The Apache Software Foundation (ASF), 
+sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until 
+a further review indicates that the infrastructure, communications, and decision making process 
+have stabilized in a manner consistent with other successful ASF projects. While incubation 
+status is not necessarily a reflection of the completeness or stability of the code, it does 
+indicate that the project has yet to be fully endorsed by the ASF.
+


[58/71] [abbrv] brooklyn-ui git commit: misc cleanups for HA and shutdown

Posted by he...@apache.org.
misc cleanups for HA and shutdown

* HA list in GUI reports if data is stale (makes it obvious is some servers are likely dead)
* On "Clear HA nodes" false masters are removed (fix bug where lots of masters, including stale, aren't cleared)
* On shutdown, RebindManager.waitForPending wasn't doing the right thing when invoked by stop, meaning state wasn't being written (really bad if you click "stop all apps", as the final deletion isn't actually persisted!)


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/commit/86fdc10e
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/tree/86fdc10e
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/diff/86fdc10e

Branch: refs/heads/0.7.0-incubating
Commit: 86fdc10e344a258133a8d9823465b21bdbeb2e66
Parents: 7680018
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Sat May 9 12:58:29 2015 +0100
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Sun May 10 10:02:33 2015 -0700

----------------------------------------------------------------------
 .../main/webapp/assets/js/view/ha-summary.js    | 98 ++++++++++++--------
 1 file changed, 60 insertions(+), 38 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/86fdc10e/usage/jsgui/src/main/webapp/assets/js/view/ha-summary.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/js/view/ha-summary.js b/usage/jsgui/src/main/webapp/assets/js/view/ha-summary.js
index 2032d1d..250977e 100644
--- a/usage/jsgui/src/main/webapp/assets/js/view/ha-summary.js
+++ b/usage/jsgui/src/main/webapp/assets/js/view/ha-summary.js
@@ -29,10 +29,11 @@ define([
                 "<% if (nodeUri && !isTerminated) { %><a href='<%= nodeUri %>'><%= nodeId %></a><% } else { %><%= nodeId %><%    } %>" +
                 "<% if (isSelf) { %><span class='pull-right badge badge-success'>this</span><% } %>" +
             "</td>" +
-            "<td><%= status %></td>" +
+            "<td><% if (isPretendMaster) {%>EX-MASTER<%} else {%><%= status %><%} if (isStale) { %> (stale)<% } %></td>" +
             "<td><%= timestampDisplayPrefix %><span class='timestamp' data-timestamp='<%= timestamp %>'><%= timestampDisplay %><span><%= timestampDisplaySuffix %></td>" +
         "</tr>");
-    var noServers = "<tr><td colspan='3'><i>Failed to load servers!</i></td></tr>";
+    var noServers = "<tr><td colspan='3'><i>Failed to load data of servers</i></td></tr>";
+    var waitingServers = "<tr><td colspan='3'><i>Waiting on detail for servers...</i></td></tr>";
 
     var HASummaryView = Backbone.View.extend({
         initialize: function() {
@@ -49,53 +50,74 @@ define([
         },
         render: function() {
             this.$el.html(template());
-            if (serverStatus.loaded) {
-                this.renderNodeStatus();
-            }
+            this.renderNodeStatus();
             return this;
         },
         renderNodeStatus: function() {
+            var $target = this.$(".ha-summary-table-body");
+            if (!serverStatus.loaded) {
+                $target.html(waitingServers);
+                return;
+            }
+            
             var serverHa = serverStatus.get("ha") || {};
             var master = serverHa.masterId,
                 self = serverHa.ownId,
-                nodes = serverHa.nodes,
-                $target = this.$(".ha-summary-table-body");
-            $target.empty();
+                nodes = serverHa.nodes;
+                
             // undefined check just in case server returns something odd
             if (nodes == undefined || _.isEmpty(nodes)) {
                 $target.html(noServers);
-            } else {
-                _.each(nodes, function (n) {
-                    var node = _.clone(n);
-                    node.timestampDisplayPrefix = "";
-                    node.timestampDisplaySuffix = "";
-                    if (node['remoteTimestamp']) {
-                        node.timestamp = node.remoteTimestamp;
-                    } else {
-                        node.timestamp = node.localTimestamp;
-                        node.timestampDisplaySuffix = " (local)";
-                    }
-                    if (node.timestamp >= moment().utc() + 10*1000) {
-                        // if server reports time significantly in future, report this, with no timestampe
-                        node.timestampDisplayPrefix = "server clock in future by "+
-                            moment.duration(moment(node.timestamp).diff(moment())).humanize();
-                        node.timestamp = "";
-                        node.timestampDisplay = "";
-                    } else {
-                        // else use timestamp
-                        if (node.timestamp >= moment().utc()) {
-                            // but if just a little bit in future, backdate to show "a few seconds ago"
-                            node.timestamp = moment().utc()-1;
-                        }
-                        node.timestampDisplay = moment(node.timestamp).fromNow();
+                return;
+            }
+            
+            $target.empty();
+            var masterTimestamp;
+            _.each(nodes, function (n) {
+                    if (n.nodeId == master && n.remoteTimestamp) {
+                        masterTimestamp = n.remoteTimestamp;
                     }
-                    
-                    node.isSelf = node.nodeId == self;
-                    node.isMaster = self == master;
-                    node.isTerminated = node.status == "TERMINATED";
-                    $target.append(nodeRowTemplate(node));
                 });
-            }
+            
+            _.each(nodes, function (n) {
+                var node = _.clone(n);
+                node.timestampDisplayPrefix = "";
+                node.timestampDisplaySuffix = "";
+                if (node['remoteTimestamp']) {
+                    node.timestamp = node.remoteTimestamp;
+                } else {
+                    node.timestamp = node.localTimestamp;
+                    node.timestampDisplaySuffix = " (local)";
+                }
+                if (node.timestamp >= moment().utc() + 10*1000) {
+                    // if server reports time significantly in future, report this, with no timestampe
+                    node.timestampDisplayPrefix = "server clock in future by "+
+                        moment.duration(moment(node.timestamp).diff(moment())).humanize();
+                    node.timestamp = "";
+                    node.timestampDisplay = "";
+                } else {
+                    // else use timestamp
+                    if (node.timestamp >= moment().utc()) {
+                        // but if just a little bit in future, backdate to show "a few seconds ago"
+                        node.timestamp = moment().utc()-1;
+                    }
+                    node.timestampDisplay = moment(node.timestamp).fromNow();
+                }
+                
+                node.isSelf = node.nodeId == self;
+                node.isMaster = self == master;
+                if (node.status == "TERMINATED") {
+                    node.isTerminated = true;
+                    node.isPretendMaster = false;
+                    node.isStale = false;
+                } else {
+                    node.isTerminated = false;
+                    node.isPretendMaster = (!node.isMaster && node.status == "MASTER" && master != node.nodeId);
+                    node.isStale = (masterTimestamp && node.timestamp + 30*1000 < masterTimestamp);
+                }
+                 
+                $target.append(nodeRowTemplate(node));
+            });
         },
         updateTimestamps: function() {
             this.$(".timestamp").each(function(index, t) {


[40/71] [abbrv] brooklyn-ui git commit: add js-yaml so we can parse yaml in the browser

Posted by he...@apache.org.
add js-yaml so we can parse yaml in the browser


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/commit/2d6f77df
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/tree/2d6f77df
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/diff/2d6f77df

Branch: refs/heads/0.7.0-incubating
Commit: 2d6f77df480875cbb9347dcacd8ec529a3faf2f1
Parents: 19ee8b8
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Sat Mar 28 20:02:00 2015 -0500
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Sat Mar 28 20:03:06 2015 -0500

----------------------------------------------------------------------
 usage/jsgui/src/main/webapp/assets/js/config.js |    1 +
 .../src/main/webapp/assets/js/libs/js-yaml.js   | 3666 ++++++++++++++++++
 usage/jsgui/src/test/javascript/config.txt      |    1 +
 3 files changed, 3668 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2d6f77df/usage/jsgui/src/main/webapp/assets/js/config.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/js/config.js b/usage/jsgui/src/main/webapp/assets/js/config.js
index 360ce84..918a7ca 100644
--- a/usage/jsgui/src/main/webapp/assets/js/config.js
+++ b/usage/jsgui/src/main/webapp/assets/js/config.js
@@ -46,6 +46,7 @@ require.config({
         "text":"libs/text",
         "uri":"libs/URI",
         "zeroclipboard":"libs/ZeroClipboard",
+        "js-yaml":"libs/js-yaml",
         
         "tpl":"../tpl"
     },


[26/71] [abbrv] brooklyn-ui git commit: Move mobile app to sandbox

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-animate.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-animate.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-animate.js
deleted file mode 100644
index 01a3e3e..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-animate.js
+++ /dev/null
@@ -1,1633 +0,0 @@
-/**
- * @license AngularJS v1.2.19
- * (c) 2010-2014 Google, Inc. http://angularjs.org
- * License: MIT
- */
-(function(window, angular, undefined) {'use strict';
-
-/* jshint maxlen: false */
-
-/**
- * @ngdoc module
- * @name ngAnimate
- * @description
- *
- * # ngAnimate
- *
- * The `ngAnimate` module provides support for JavaScript, CSS3 transition and CSS3 keyframe animation hooks within existing core and custom directives.
- *
- *
- * <div doc-module-components="ngAnimate"></div>
- *
- * # Usage
- *
- * To see animations in action, all that is required is to define the appropriate CSS classes
- * or to register a JavaScript animation via the myModule.animation() function. The directives that support animation automatically are:
- * `ngRepeat`, `ngInclude`, `ngIf`, `ngSwitch`, `ngShow`, `ngHide`, `ngView` and `ngClass`. Custom directives can take advantage of animation
- * by using the `$animate` service.
- *
- * Below is a more detailed breakdown of the supported animation events provided by pre-existing ng directives:
- *
- * | Directive                                                 | Supported Animations                               |
- * |---------------------------------------------------------- |----------------------------------------------------|
- * | {@link ng.directive:ngRepeat#usage_animations ngRepeat}         | enter, leave and move                              |
- * | {@link ngRoute.directive:ngView#usage_animations ngView}        | enter and leave                                    |
- * | {@link ng.directive:ngInclude#usage_animations ngInclude}       | enter and leave                                    |
- * | {@link ng.directive:ngSwitch#usage_animations ngSwitch}         | enter and leave                                    |
- * | {@link ng.directive:ngIf#usage_animations ngIf}                 | enter and leave                                    |
- * | {@link ng.directive:ngClass#usage_animations ngClass}           | add and remove                                     |
- * | {@link ng.directive:ngShow#usage_animations ngShow & ngHide}    | add and remove (the ng-hide class value)           |
- * | {@link ng.directive:form#usage_animations form}                 | add and remove (dirty, pristine, valid, invalid & all other validations)                |
- * | {@link ng.directive:ngModel#usage_animations ngModel}           | add and remove (dirty, pristine, valid, invalid & all other validations)                |
- *
- * You can find out more information about animations upon visiting each directive page.
- *
- * Below is an example of how to apply animations to a directive that supports animation hooks:
- *
- * ```html
- * <style type="text/css">
- * .slide.ng-enter, .slide.ng-leave {
- *   -webkit-transition:0.5s linear all;
- *   transition:0.5s linear all;
- * }
- *
- * .slide.ng-enter { }        /&#42; starting animations for enter &#42;/
- * .slide.ng-enter-active { } /&#42; terminal animations for enter &#42;/
- * .slide.ng-leave { }        /&#42; starting animations for leave &#42;/
- * .slide.ng-leave-active { } /&#42; terminal animations for leave &#42;/
- * </style>
- *
- * <!--
- * the animate service will automatically add .ng-enter and .ng-leave to the element
- * to trigger the CSS transition/animations
- * -->
- * <ANY class="slide" ng-include="..."></ANY>
- * ```
- *
- * Keep in mind that if an animation is running, any child elements cannot be animated until the parent element's
- * animation has completed.
- *
- * <h2>CSS-defined Animations</h2>
- * The animate service will automatically apply two CSS classes to the animated element and these two CSS classes
- * are designed to contain the start and end CSS styling. Both CSS transitions and keyframe animations are supported
- * and can be used to play along with this naming structure.
- *
- * The following code below demonstrates how to perform animations using **CSS transitions** with Angular:
- *
- * ```html
- * <style type="text/css">
- * /&#42;
- *  The animate class is apart of the element and the ng-enter class
- *  is attached to the element once the enter animation event is triggered
- * &#42;/
- * .reveal-animation.ng-enter {
- *  -webkit-transition: 1s linear all; /&#42; Safari/Chrome &#42;/
- *  transition: 1s linear all; /&#42; All other modern browsers and IE10+ &#42;/
- *
- *  /&#42; The animation preparation code &#42;/
- *  opacity: 0;
- * }
- *
- * /&#42;
- *  Keep in mind that you want to combine both CSS
- *  classes together to avoid any CSS-specificity
- *  conflicts
- * &#42;/
- * .reveal-animation.ng-enter.ng-enter-active {
- *  /&#42; The animation code itself &#42;/
- *  opacity: 1;
- * }
- * </style>
- *
- * <div class="view-container">
- *   <div ng-view class="reveal-animation"></div>
- * </div>
- * ```
- *
- * The following code below demonstrates how to perform animations using **CSS animations** with Angular:
- *
- * ```html
- * <style type="text/css">
- * .reveal-animation.ng-enter {
- *   -webkit-animation: enter_sequence 1s linear; /&#42; Safari/Chrome &#42;/
- *   animation: enter_sequence 1s linear; /&#42; IE10+ and Future Browsers &#42;/
- * }
- * @-webkit-keyframes enter_sequence {
- *   from { opacity:0; }
- *   to { opacity:1; }
- * }
- * @keyframes enter_sequence {
- *   from { opacity:0; }
- *   to { opacity:1; }
- * }
- * </style>
- *
- * <div class="view-container">
- *   <div ng-view class="reveal-animation"></div>
- * </div>
- * ```
- *
- * Both CSS3 animations and transitions can be used together and the animate service will figure out the correct duration and delay timing.
- *
- * Upon DOM mutation, the event class is added first (something like `ng-enter`), then the browser prepares itself to add
- * the active class (in this case `ng-enter-active`) which then triggers the animation. The animation module will automatically
- * detect the CSS code to determine when the animation ends. Once the animation is over then both CSS classes will be
- * removed from the DOM. If a browser does not support CSS transitions or CSS animations then the animation will start and end
- * immediately resulting in a DOM element that is at its final state. This final state is when the DOM element
- * has no CSS transition/animation classes applied to it.
- *
- * <h3>CSS Staggering Animations</h3>
- * A Staggering animation is a collection of animations that are issued with a slight delay in between each successive operation resulting in a
- * curtain-like effect. The ngAnimate module, as of 1.2.0, supports staggering animations and the stagger effect can be
- * performed by creating a **ng-EVENT-stagger** CSS class and attaching that class to the base CSS class used for
- * the animation. The style property expected within the stagger class can either be a **transition-delay** or an
- * **animation-delay** property (or both if your animation contains both transitions and keyframe animations).
- *
- * ```css
- * .my-animation.ng-enter {
- *   /&#42; standard transition code &#42;/
- *   -webkit-transition: 1s linear all;
- *   transition: 1s linear all;
- *   opacity:0;
- * }
- * .my-animation.ng-enter-stagger {
- *   /&#42; this will have a 100ms delay between each successive leave animation &#42;/
- *   -webkit-transition-delay: 0.1s;
- *   transition-delay: 0.1s;
- *
- *   /&#42; in case the stagger doesn't work then these two values
- *    must be set to 0 to avoid an accidental CSS inheritance &#42;/
- *   -webkit-transition-duration: 0s;
- *   transition-duration: 0s;
- * }
- * .my-animation.ng-enter.ng-enter-active {
- *   /&#42; standard transition styles &#42;/
- *   opacity:1;
- * }
- * ```
- *
- * Staggering animations work by default in ngRepeat (so long as the CSS class is defined). Outside of ngRepeat, to use staggering animations
- * on your own, they can be triggered by firing multiple calls to the same event on $animate. However, the restrictions surrounding this
- * are that each of the elements must have the same CSS className value as well as the same parent element. A stagger operation
- * will also be reset if more than 10ms has passed after the last animation has been fired.
- *
- * The following code will issue the **ng-leave-stagger** event on the element provided:
- *
- * ```js
- * var kids = parent.children();
- *
- * $animate.leave(kids[0]); //stagger index=0
- * $animate.leave(kids[1]); //stagger index=1
- * $animate.leave(kids[2]); //stagger index=2
- * $animate.leave(kids[3]); //stagger index=3
- * $animate.leave(kids[4]); //stagger index=4
- *
- * $timeout(function() {
- *   //stagger has reset itself
- *   $animate.leave(kids[5]); //stagger index=0
- *   $animate.leave(kids[6]); //stagger index=1
- * }, 100, false);
- * ```
- *
- * Stagger animations are currently only supported within CSS-defined animations.
- *
- * <h2>JavaScript-defined Animations</h2>
- * In the event that you do not want to use CSS3 transitions or CSS3 animations or if you wish to offer animations on browsers that do not
- * yet support CSS transitions/animations, then you can make use of JavaScript animations defined inside of your AngularJS module.
- *
- * ```js
- * //!annotate="YourApp" Your AngularJS Module|Replace this or ngModule with the module that you used to define your application.
- * var ngModule = angular.module('YourApp', ['ngAnimate']);
- * ngModule.animation('.my-crazy-animation', function() {
- *   return {
- *     enter: function(element, done) {
- *       //run the animation here and call done when the animation is complete
- *       return function(cancelled) {
- *         //this (optional) function will be called when the animation
- *         //completes or when the animation is cancelled (the cancelled
- *         //flag will be set to true if cancelled).
- *       };
- *     },
- *     leave: function(element, done) { },
- *     move: function(element, done) { },
- *
- *     //animation that can be triggered before the class is added
- *     beforeAddClass: function(element, className, done) { },
- *
- *     //animation that can be triggered after the class is added
- *     addClass: function(element, className, done) { },
- *
- *     //animation that can be triggered before the class is removed
- *     beforeRemoveClass: function(element, className, done) { },
- *
- *     //animation that can be triggered after the class is removed
- *     removeClass: function(element, className, done) { }
- *   };
- * });
- * ```
- *
- * JavaScript-defined animations are created with a CSS-like class selector and a collection of events which are set to run
- * a javascript callback function. When an animation is triggered, $animate will look for a matching animation which fits
- * the element's CSS class attribute value and then run the matching animation event function (if found).
- * In other words, if the CSS classes present on the animated element match any of the JavaScript animations then the callback function will
- * be executed. It should be also noted that only simple, single class selectors are allowed (compound class selectors are not supported).
- *
- * Within a JavaScript animation, an object containing various event callback animation functions is expected to be returned.
- * As explained above, these callbacks are triggered based on the animation event. Therefore if an enter animation is run,
- * and the JavaScript animation is found, then the enter callback will handle that animation (in addition to the CSS keyframe animation
- * or transition code that is defined via a stylesheet).
- *
- */
-
-angular.module('ngAnimate', ['ng'])
-
-  /**
-   * @ngdoc provider
-   * @name $animateProvider
-   * @description
-   *
-   * The `$animateProvider` allows developers to register JavaScript animation event handlers directly inside of a module.
-   * When an animation is triggered, the $animate service will query the $animate service to find any animations that match
-   * the provided name value.
-   *
-   * Requires the {@link ngAnimate `ngAnimate`} module to be installed.
-   *
-   * Please visit the {@link ngAnimate `ngAnimate`} module overview page learn more about how to use animations in your application.
-   *
-   */
-
-  //this private service is only used within CSS-enabled animations
-  //IE8 + IE9 do not support rAF natively, but that is fine since they
-  //also don't support transitions and keyframes which means that the code
-  //below will never be used by the two browsers.
-  .factory('$$animateReflow', ['$$rAF', '$document', function($$rAF, $document) {
-    var bod = $document[0].body;
-    return function(fn) {
-      //the returned function acts as the cancellation function
-      return $$rAF(function() {
-        //the line below will force the browser to perform a repaint
-        //so that all the animated elements within the animation frame
-        //will be properly updated and drawn on screen. This is
-        //required to perform multi-class CSS based animations with
-        //Firefox. DO NOT REMOVE THIS LINE.
-        var a = bod.offsetWidth + 1;
-        fn();
-      });
-    };
-  }])
-
-  .config(['$provide', '$animateProvider', function($provide, $animateProvider) {
-    var noop = angular.noop;
-    var forEach = angular.forEach;
-    var selectors = $animateProvider.$$selectors;
-
-    var ELEMENT_NODE = 1;
-    var NG_ANIMATE_STATE = '$$ngAnimateState';
-    var NG_ANIMATE_CLASS_NAME = 'ng-animate';
-    var rootAnimateState = {running: true};
-
-    function extractElementNode(element) {
-      for(var i = 0; i < element.length; i++) {
-        var elm = element[i];
-        if(elm.nodeType == ELEMENT_NODE) {
-          return elm;
-        }
-      }
-    }
-
-    function prepareElement(element) {
-      return element && angular.element(element);
-    }
-
-    function stripCommentsFromElement(element) {
-      return angular.element(extractElementNode(element));
-    }
-
-    function isMatchingElement(elm1, elm2) {
-      return extractElementNode(elm1) == extractElementNode(elm2);
-    }
-
-    $provide.decorator('$animate', ['$delegate', '$injector', '$sniffer', '$rootElement', '$$asyncCallback', '$rootScope', '$document',
-                            function($delegate,   $injector,   $sniffer,   $rootElement,   $$asyncCallback,    $rootScope,   $document) {
-
-      var globalAnimationCounter = 0;
-      $rootElement.data(NG_ANIMATE_STATE, rootAnimateState);
-
-      // disable animations during bootstrap, but once we bootstrapped, wait again
-      // for another digest until enabling animations. The reason why we digest twice
-      // is because all structural animations (enter, leave and move) all perform a
-      // post digest operation before animating. If we only wait for a single digest
-      // to pass then the structural animation would render its animation on page load.
-      // (which is what we're trying to avoid when the application first boots up.)
-      $rootScope.$$postDigest(function() {
-        $rootScope.$$postDigest(function() {
-          rootAnimateState.running = false;
-        });
-      });
-
-      var classNameFilter = $animateProvider.classNameFilter();
-      var isAnimatableClassName = !classNameFilter
-              ? function() { return true; }
-              : function(className) {
-                return classNameFilter.test(className);
-              };
-
-      function lookup(name) {
-        if (name) {
-          var matches = [],
-              flagMap = {},
-              classes = name.substr(1).split('.');
-
-          //the empty string value is the default animation
-          //operation which performs CSS transition and keyframe
-          //animations sniffing. This is always included for each
-          //element animation procedure if the browser supports
-          //transitions and/or keyframe animations. The default
-          //animation is added to the top of the list to prevent
-          //any previous animations from affecting the element styling
-          //prior to the element being animated.
-          if ($sniffer.transitions || $sniffer.animations) {
-            matches.push($injector.get(selectors['']));
-          }
-
-          for(var i=0; i < classes.length; i++) {
-            var klass = classes[i],
-                selectorFactoryName = selectors[klass];
-            if(selectorFactoryName && !flagMap[klass]) {
-              matches.push($injector.get(selectorFactoryName));
-              flagMap[klass] = true;
-            }
-          }
-          return matches;
-        }
-      }
-
-      function animationRunner(element, animationEvent, className) {
-        //transcluded directives may sometimes fire an animation using only comment nodes
-        //best to catch this early on to prevent any animation operations from occurring
-        var node = element[0];
-        if(!node) {
-          return;
-        }
-
-        var isSetClassOperation = animationEvent == 'setClass';
-        var isClassBased = isSetClassOperation ||
-                           animationEvent == 'addClass' ||
-                           animationEvent == 'removeClass';
-
-        var classNameAdd, classNameRemove;
-        if(angular.isArray(className)) {
-          classNameAdd = className[0];
-          classNameRemove = className[1];
-          className = classNameAdd + ' ' + classNameRemove;
-        }
-
-        var currentClassName = element.attr('class');
-        var classes = currentClassName + ' ' + className;
-        if(!isAnimatableClassName(classes)) {
-          return;
-        }
-
-        var beforeComplete = noop,
-            beforeCancel = [],
-            before = [],
-            afterComplete = noop,
-            afterCancel = [],
-            after = [];
-
-        var animationLookup = (' ' + classes).replace(/\s+/g,'.');
-        forEach(lookup(animationLookup), function(animationFactory) {
-          var created = registerAnimation(animationFactory, animationEvent);
-          if(!created && isSetClassOperation) {
-            registerAnimation(animationFactory, 'addClass');
-            registerAnimation(animationFactory, 'removeClass');
-          }
-        });
-
-        function registerAnimation(animationFactory, event) {
-          var afterFn = animationFactory[event];
-          var beforeFn = animationFactory['before' + event.charAt(0).toUpperCase() + event.substr(1)];
-          if(afterFn || beforeFn) {
-            if(event == 'leave') {
-              beforeFn = afterFn;
-              //when set as null then animation knows to skip this phase
-              afterFn = null;
-            }
-            after.push({
-              event : event, fn : afterFn
-            });
-            before.push({
-              event : event, fn : beforeFn
-            });
-            return true;
-          }
-        }
-
-        function run(fns, cancellations, allCompleteFn) {
-          var animations = [];
-          forEach(fns, function(animation) {
-            animation.fn && animations.push(animation);
-          });
-
-          var count = 0;
-          function afterAnimationComplete(index) {
-            if(cancellations) {
-              (cancellations[index] || noop)();
-              if(++count < animations.length) return;
-              cancellations = null;
-            }
-            allCompleteFn();
-          }
-
-          //The code below adds directly to the array in order to work with
-          //both sync and async animations. Sync animations are when the done()
-          //operation is called right away. DO NOT REFACTOR!
-          forEach(animations, function(animation, index) {
-            var progress = function() {
-              afterAnimationComplete(index);
-            };
-            switch(animation.event) {
-              case 'setClass':
-                cancellations.push(animation.fn(element, classNameAdd, classNameRemove, progress));
-                break;
-              case 'addClass':
-                cancellations.push(animation.fn(element, classNameAdd || className,     progress));
-                break;
-              case 'removeClass':
-                cancellations.push(animation.fn(element, classNameRemove || className,  progress));
-                break;
-              default:
-                cancellations.push(animation.fn(element, progress));
-                break;
-            }
-          });
-
-          if(cancellations && cancellations.length === 0) {
-            allCompleteFn();
-          }
-        }
-
-        return {
-          node : node,
-          event : animationEvent,
-          className : className,
-          isClassBased : isClassBased,
-          isSetClassOperation : isSetClassOperation,
-          before : function(allCompleteFn) {
-            beforeComplete = allCompleteFn;
-            run(before, beforeCancel, function() {
-              beforeComplete = noop;
-              allCompleteFn();
-            });
-          },
-          after : function(allCompleteFn) {
-            afterComplete = allCompleteFn;
-            run(after, afterCancel, function() {
-              afterComplete = noop;
-              allCompleteFn();
-            });
-          },
-          cancel : function() {
-            if(beforeCancel) {
-              forEach(beforeCancel, function(cancelFn) {
-                (cancelFn || noop)(true);
-              });
-              beforeComplete(true);
-            }
-            if(afterCancel) {
-              forEach(afterCancel, function(cancelFn) {
-                (cancelFn || noop)(true);
-              });
-              afterComplete(true);
-            }
-          }
-        };
-      }
-
-      /**
-       * @ngdoc service
-       * @name $animate
-       * @kind function
-       *
-       * @description
-       * The `$animate` service provides animation detection support while performing DOM operations (enter, leave and move) as well as during addClass and removeClass operations.
-       * When any of these operations are run, the $animate service
-       * will examine any JavaScript-defined animations (which are defined by using the $animateProvider provider object)
-       * as well as any CSS-defined animations against the CSS classes present on the element once the DOM operation is run.
-       *
-       * The `$animate` service is used behind the scenes with pre-existing directives and animation with these directives
-       * will work out of the box without any extra configuration.
-       *
-       * Requires the {@link ngAnimate `ngAnimate`} module to be installed.
-       *
-       * Please visit the {@link ngAnimate `ngAnimate`} module overview page learn more about how to use animations in your application.
-       *
-       */
-      return {
-        /**
-         * @ngdoc method
-         * @name $animate#enter
-         * @kind function
-         *
-         * @description
-         * Appends the element to the parentElement element that resides in the document and then runs the enter animation. Once
-         * the animation is started, the following CSS classes will be present on the element for the duration of the animation:
-         *
-         * Below is a breakdown of each step that occurs during enter animation:
-         *
-         * | Animation Step                                                                               | What the element class attribute looks like |
-         * |----------------------------------------------------------------------------------------------|---------------------------------------------|
-         * | 1. $animate.enter(...) is called                                                             | class="my-animation"                        |
-         * | 2. element is inserted into the parentElement element or beside the afterElement element     | class="my-animation"                        |
-         * | 3. $animate runs any JavaScript-defined animations on the element                            | class="my-animation ng-animate"             |
-         * | 4. the .ng-enter class is added to the element                                               | class="my-animation ng-animate ng-enter"    |
-         * | 5. $animate scans the element styles to get the CSS transition/animation duration and delay  | class="my-animation ng-animate ng-enter"    |
-         * | 6. $animate waits for 10ms (this performs a reflow)                                          | class="my-animation ng-animate ng-enter"    |
-         * | 7. the .ng-enter-active and .ng-animate-active classes are added (this triggers the CSS transition/animation) | class="my-animation ng-animate ng-animate-active ng-enter ng-enter-active" |
-         * | 8. $animate waits for X milliseconds for the animation to complete                           | class="my-animation ng-animate ng-animate-active ng-enter ng-enter-active" |
-         * | 9. The animation ends and all generated CSS classes are removed from the element             | class="my-animation"                        |
-         * | 10. The doneCallback() callback is fired (if provided)                                       | class="my-animation"                        |
-         *
-         * @param {DOMElement} element the element that will be the focus of the enter animation
-         * @param {DOMElement} parentElement the parent element of the element that will be the focus of the enter animation
-         * @param {DOMElement} afterElement the sibling element (which is the previous element) of the element that will be the focus of the enter animation
-         * @param {function()=} doneCallback the callback function that will be called once the animation is complete
-        */
-        enter : function(element, parentElement, afterElement, doneCallback) {
-          element = angular.element(element);
-          parentElement = prepareElement(parentElement);
-          afterElement = prepareElement(afterElement);
-
-          this.enabled(false, element);
-          $delegate.enter(element, parentElement, afterElement);
-          $rootScope.$$postDigest(function() {
-            element = stripCommentsFromElement(element);
-            performAnimation('enter', 'ng-enter', element, parentElement, afterElement, noop, doneCallback);
-          });
-        },
-
-        /**
-         * @ngdoc method
-         * @name $animate#leave
-         * @kind function
-         *
-         * @description
-         * Runs the leave animation operation and, upon completion, removes the element from the DOM. Once
-         * the animation is started, the following CSS classes will be added for the duration of the animation:
-         *
-         * Below is a breakdown of each step that occurs during leave animation:
-         *
-         * | Animation Step                                                                               | What the element class attribute looks like |
-         * |----------------------------------------------------------------------------------------------|---------------------------------------------|
-         * | 1. $animate.leave(...) is called                                                             | class="my-animation"                        |
-         * | 2. $animate runs any JavaScript-defined animations on the element                            | class="my-animation ng-animate"             |
-         * | 3. the .ng-leave class is added to the element                                               | class="my-animation ng-animate ng-leave"    |
-         * | 4. $animate scans the element styles to get the CSS transition/animation duration and delay  | class="my-animation ng-animate ng-leave"    |
-         * | 5. $animate waits for 10ms (this performs a reflow)                                          | class="my-animation ng-animate ng-leave"    |
-         * | 6. the .ng-leave-active and .ng-animate-active classes is added (this triggers the CSS transition/animation) | class="my-animation ng-animate ng-animate-active ng-leave ng-leave-active" |
-         * | 7. $animate waits for X milliseconds for the animation to complete                           | class="my-animation ng-animate ng-animate-active ng-leave ng-leave-active" |
-         * | 8. The animation ends and all generated CSS classes are removed from the element             | class="my-animation"                        |
-         * | 9. The element is removed from the DOM                                                       | ...                                         |
-         * | 10. The doneCallback() callback is fired (if provided)                                       | ...                                         |
-         *
-         * @param {DOMElement} element the element that will be the focus of the leave animation
-         * @param {function()=} doneCallback the callback function that will be called once the animation is complete
-        */
-        leave : function(element, doneCallback) {
-          element = angular.element(element);
-          cancelChildAnimations(element);
-          this.enabled(false, element);
-          $rootScope.$$postDigest(function() {
-            performAnimation('leave', 'ng-leave', stripCommentsFromElement(element), null, null, function() {
-              $delegate.leave(element);
-            }, doneCallback);
-          });
-        },
-
-        /**
-         * @ngdoc method
-         * @name $animate#move
-         * @kind function
-         *
-         * @description
-         * Fires the move DOM operation. Just before the animation starts, the animate service will either append it into the parentElement container or
-         * add the element directly after the afterElement element if present. Then the move animation will be run. Once
-         * the animation is started, the following CSS classes will be added for the duration of the animation:
-         *
-         * Below is a breakdown of each step that occurs during move animation:
-         *
-         * | Animation Step                                                                               | What the element class attribute looks like |
-         * |----------------------------------------------------------------------------------------------|---------------------------------------------|
-         * | 1. $animate.move(...) is called                                                              | class="my-animation"                        |
-         * | 2. element is moved into the parentElement element or beside the afterElement element        | class="my-animation"                        |
-         * | 3. $animate runs any JavaScript-defined animations on the element                            | class="my-animation ng-animate"             |
-         * | 4. the .ng-move class is added to the element                                                | class="my-animation ng-animate ng-move"     |
-         * | 5. $animate scans the element styles to get the CSS transition/animation duration and delay  | class="my-animation ng-animate ng-move"     |
-         * | 6. $animate waits for 10ms (this performs a reflow)                                          | class="my-animation ng-animate ng-move"     |
-         * | 7. the .ng-move-active and .ng-animate-active classes is added (this triggers the CSS transition/animation) | class="my-animation ng-animate ng-animate-active ng-move ng-move-active" |
-         * | 8. $animate waits for X milliseconds for the animation to complete                           | class="my-animation ng-animate ng-animate-active ng-move ng-move-active" |
-         * | 9. The animation ends and all generated CSS classes are removed from the element             | class="my-animation"                        |
-         * | 10. The doneCallback() callback is fired (if provided)                                       | class="my-animation"                        |
-         *
-         * @param {DOMElement} element the element that will be the focus of the move animation
-         * @param {DOMElement} parentElement the parentElement element of the element that will be the focus of the move animation
-         * @param {DOMElement} afterElement the sibling element (which is the previous element) of the element that will be the focus of the move animation
-         * @param {function()=} doneCallback the callback function that will be called once the animation is complete
-        */
-        move : function(element, parentElement, afterElement, doneCallback) {
-          element = angular.element(element);
-          parentElement = prepareElement(parentElement);
-          afterElement = prepareElement(afterElement);
-
-          cancelChildAnimations(element);
-          this.enabled(false, element);
-          $delegate.move(element, parentElement, afterElement);
-          $rootScope.$$postDigest(function() {
-            element = stripCommentsFromElement(element);
-            performAnimation('move', 'ng-move', element, parentElement, afterElement, noop, doneCallback);
-          });
-        },
-
-        /**
-         * @ngdoc method
-         * @name $animate#addClass
-         *
-         * @description
-         * Triggers a custom animation event based off the className variable and then attaches the className value to the element as a CSS class.
-         * Unlike the other animation methods, the animate service will suffix the className value with {@type -add} in order to provide
-         * the animate service the setup and active CSS classes in order to trigger the animation (this will be skipped if no CSS transitions
-         * or keyframes are defined on the -add or base CSS class).
-         *
-         * Below is a breakdown of each step that occurs during addClass animation:
-         *
-         * | Animation Step                                                                                 | What the element class attribute looks like |
-         * |------------------------------------------------------------------------------------------------|---------------------------------------------|
-         * | 1. $animate.addClass(element, 'super') is called                                               | class="my-animation"                        |
-         * | 2. $animate runs any JavaScript-defined animations on the element                              | class="my-animation ng-animate"             |
-         * | 3. the .super-add class are added to the element                                               | class="my-animation ng-animate super-add"   |
-         * | 4. $animate scans the element styles to get the CSS transition/animation duration and delay    | class="my-animation ng-animate super-add"   |
-         * | 5. $animate waits for 10ms (this performs a reflow)                                            | class="my-animation ng-animate super-add"   |
-         * | 6. the .super, .super-add-active and .ng-animate-active classes are added (this triggers the CSS transition/animation) | class="my-animation ng-animate ng-animate-active super super-add super-add-active"          |
-         * | 7. $animate waits for X milliseconds for the animation to complete                             | class="my-animation super super-add super-add-active"  |
-         * | 8. The animation ends and all generated CSS classes are removed from the element               | class="my-animation super"                  |
-         * | 9. The super class is kept on the element                                                      | class="my-animation super"                  |
-         * | 10. The doneCallback() callback is fired (if provided)                                         | class="my-animation super"                  |
-         *
-         * @param {DOMElement} element the element that will be animated
-         * @param {string} className the CSS class that will be added to the element and then animated
-         * @param {function()=} doneCallback the callback function that will be called once the animation is complete
-        */
-        addClass : function(element, className, doneCallback) {
-          element = angular.element(element);
-          element = stripCommentsFromElement(element);
-          performAnimation('addClass', className, element, null, null, function() {
-            $delegate.addClass(element, className);
-          }, doneCallback);
-        },
-
-        /**
-         * @ngdoc method
-         * @name $animate#removeClass
-         *
-         * @description
-         * Triggers a custom animation event based off the className variable and then removes the CSS class provided by the className value
-         * from the element. Unlike the other animation methods, the animate service will suffix the className value with {@type -remove} in
-         * order to provide the animate service the setup and active CSS classes in order to trigger the animation (this will be skipped if
-         * no CSS transitions or keyframes are defined on the -remove or base CSS classes).
-         *
-         * Below is a breakdown of each step that occurs during removeClass animation:
-         *
-         * | Animation Step                                                                                | What the element class attribute looks like     |
-         * |-----------------------------------------------------------------------------------------------|---------------------------------------------|
-         * | 1. $animate.removeClass(element, 'super') is called                                           | class="my-animation super"                  |
-         * | 2. $animate runs any JavaScript-defined animations on the element                             | class="my-animation super ng-animate"       |
-         * | 3. the .super-remove class are added to the element                                           | class="my-animation super ng-animate super-remove"|
-         * | 4. $animate scans the element styles to get the CSS transition/animation duration and delay   | class="my-animation super ng-animate super-remove"   |
-         * | 5. $animate waits for 10ms (this performs a reflow)                                           | class="my-animation super ng-animate super-remove"   |
-         * | 6. the .super-remove-active and .ng-animate-active classes are added and .super is removed (this triggers the CSS transition/animation) | class="my-animation ng-animate ng-animate-active super-remove super-remove-active"          |
-         * | 7. $animate waits for X milliseconds for the animation to complete                            | class="my-animation ng-animate ng-animate-active super-remove super-remove-active"   |
-         * | 8. The animation ends and all generated CSS classes are removed from the element              | class="my-animation"                        |
-         * | 9. The doneCallback() callback is fired (if provided)                                         | class="my-animation"                        |
-         *
-         *
-         * @param {DOMElement} element the element that will be animated
-         * @param {string} className the CSS class that will be animated and then removed from the element
-         * @param {function()=} doneCallback the callback function that will be called once the animation is complete
-        */
-        removeClass : function(element, className, doneCallback) {
-          element = angular.element(element);
-          element = stripCommentsFromElement(element);
-          performAnimation('removeClass', className, element, null, null, function() {
-            $delegate.removeClass(element, className);
-          }, doneCallback);
-        },
-
-          /**
-           *
-           * @ngdoc function
-           * @name $animate#setClass
-           * @function
-           * @description Adds and/or removes the given CSS classes to and from the element.
-           * Once complete, the done() callback will be fired (if provided).
-           * @param {DOMElement} element the element which will its CSS classes changed
-           *   removed from it
-           * @param {string} add the CSS classes which will be added to the element
-           * @param {string} remove the CSS class which will be removed from the element
-           * @param {Function=} done the callback function (if provided) that will be fired after the
-           *   CSS classes have been set on the element
-           */
-        setClass : function(element, add, remove, doneCallback) {
-          element = angular.element(element);
-          element = stripCommentsFromElement(element);
-          performAnimation('setClass', [add, remove], element, null, null, function() {
-            $delegate.setClass(element, add, remove);
-          }, doneCallback);
-        },
-
-        /**
-         * @ngdoc method
-         * @name $animate#enabled
-         * @kind function
-         *
-         * @param {boolean=} value If provided then set the animation on or off.
-         * @param {DOMElement=} element If provided then the element will be used to represent the enable/disable operation
-         * @return {boolean} Current animation state.
-         *
-         * @description
-         * Globally enables/disables animations.
-         *
-        */
-        enabled : function(value, element) {
-          switch(arguments.length) {
-            case 2:
-              if(value) {
-                cleanup(element);
-              } else {
-                var data = element.data(NG_ANIMATE_STATE) || {};
-                data.disabled = true;
-                element.data(NG_ANIMATE_STATE, data);
-              }
-            break;
-
-            case 1:
-              rootAnimateState.disabled = !value;
-            break;
-
-            default:
-              value = !rootAnimateState.disabled;
-            break;
-          }
-          return !!value;
-         }
-      };
-
-      /*
-        all animations call this shared animation triggering function internally.
-        The animationEvent variable refers to the JavaScript animation event that will be triggered
-        and the className value is the name of the animation that will be applied within the
-        CSS code. Element, parentElement and afterElement are provided DOM elements for the animation
-        and the onComplete callback will be fired once the animation is fully complete.
-      */
-      function performAnimation(animationEvent, className, element, parentElement, afterElement, domOperation, doneCallback) {
-
-        var runner = animationRunner(element, animationEvent, className);
-        if(!runner) {
-          fireDOMOperation();
-          fireBeforeCallbackAsync();
-          fireAfterCallbackAsync();
-          closeAnimation();
-          return;
-        }
-
-        className = runner.className;
-        var elementEvents = angular.element._data(runner.node);
-        elementEvents = elementEvents && elementEvents.events;
-
-        if (!parentElement) {
-          parentElement = afterElement ? afterElement.parent() : element.parent();
-        }
-
-        var ngAnimateState  = element.data(NG_ANIMATE_STATE) || {};
-        var runningAnimations     = ngAnimateState.active || {};
-        var totalActiveAnimations = ngAnimateState.totalActive || 0;
-        var lastAnimation         = ngAnimateState.last;
-
-        //only allow animations if the currently running animation is not structural
-        //or if there is no animation running at all
-        var skipAnimations = runner.isClassBased ?
-          ngAnimateState.disabled || (lastAnimation && !lastAnimation.isClassBased) :
-          false;
-
-        //skip the animation if animations are disabled, a parent is already being animated,
-        //the element is not currently attached to the document body or then completely close
-        //the animation if any matching animations are not found at all.
-        //NOTE: IE8 + IE9 should close properly (run closeAnimation()) in case an animation was found.
-        if (skipAnimations || animationsDisabled(element, parentElement)) {
-          fireDOMOperation();
-          fireBeforeCallbackAsync();
-          fireAfterCallbackAsync();
-          closeAnimation();
-          return;
-        }
-
-        var skipAnimation = false;
-        if(totalActiveAnimations > 0) {
-          var animationsToCancel = [];
-          if(!runner.isClassBased) {
-            if(animationEvent == 'leave' && runningAnimations['ng-leave']) {
-              skipAnimation = true;
-            } else {
-              //cancel all animations when a structural animation takes place
-              for(var klass in runningAnimations) {
-                animationsToCancel.push(runningAnimations[klass]);
-                cleanup(element, klass);
-              }
-              runningAnimations = {};
-              totalActiveAnimations = 0;
-            }
-          } else if(lastAnimation.event == 'setClass') {
-            animationsToCancel.push(lastAnimation);
-            cleanup(element, className);
-          }
-          else if(runningAnimations[className]) {
-            var current = runningAnimations[className];
-            if(current.event == animationEvent) {
-              skipAnimation = true;
-            } else {
-              animationsToCancel.push(current);
-              cleanup(element, className);
-            }
-          }
-
-          if(animationsToCancel.length > 0) {
-            forEach(animationsToCancel, function(operation) {
-              operation.cancel();
-            });
-          }
-        }
-
-        if(runner.isClassBased && !runner.isSetClassOperation && !skipAnimation) {
-          skipAnimation = (animationEvent == 'addClass') == element.hasClass(className); //opposite of XOR
-        }
-
-        if(skipAnimation) {
-          fireDOMOperation();
-          fireBeforeCallbackAsync();
-          fireAfterCallbackAsync();
-          fireDoneCallbackAsync();
-          return;
-        }
-
-        if(animationEvent == 'leave') {
-          //there's no need to ever remove the listener since the element
-          //will be removed (destroyed) after the leave animation ends or
-          //is cancelled midway
-          element.one('$destroy', function(e) {
-            var element = angular.element(this);
-            var state = element.data(NG_ANIMATE_STATE);
-            if(state) {
-              var activeLeaveAnimation = state.active['ng-leave'];
-              if(activeLeaveAnimation) {
-                activeLeaveAnimation.cancel();
-                cleanup(element, 'ng-leave');
-              }
-            }
-          });
-        }
-
-        //the ng-animate class does nothing, but it's here to allow for
-        //parent animations to find and cancel child animations when needed
-        element.addClass(NG_ANIMATE_CLASS_NAME);
-
-        var localAnimationCount = globalAnimationCounter++;
-        totalActiveAnimations++;
-        runningAnimations[className] = runner;
-
-        element.data(NG_ANIMATE_STATE, {
-          last : runner,
-          active : runningAnimations,
-          index : localAnimationCount,
-          totalActive : totalActiveAnimations
-        });
-
-        //first we run the before animations and when all of those are complete
-        //then we perform the DOM operation and run the next set of animations
-        fireBeforeCallbackAsync();
-        runner.before(function(cancelled) {
-          var data = element.data(NG_ANIMATE_STATE);
-          cancelled = cancelled ||
-                        !data || !data.active[className] ||
-                        (runner.isClassBased && data.active[className].event != animationEvent);
-
-          fireDOMOperation();
-          if(cancelled === true) {
-            closeAnimation();
-          } else {
-            fireAfterCallbackAsync();
-            runner.after(closeAnimation);
-          }
-        });
-
-        function fireDOMCallback(animationPhase) {
-          var eventName = '$animate:' + animationPhase;
-          if(elementEvents && elementEvents[eventName] && elementEvents[eventName].length > 0) {
-            $$asyncCallback(function() {
-              element.triggerHandler(eventName, {
-                event : animationEvent,
-                className : className
-              });
-            });
-          }
-        }
-
-        function fireBeforeCallbackAsync() {
-          fireDOMCallback('before');
-        }
-
-        function fireAfterCallbackAsync() {
-          fireDOMCallback('after');
-        }
-
-        function fireDoneCallbackAsync() {
-          fireDOMCallback('close');
-          if(doneCallback) {
-            $$asyncCallback(function() {
-              doneCallback();
-            });
-          }
-        }
-
-        //it is less complicated to use a flag than managing and canceling
-        //timeouts containing multiple callbacks.
-        function fireDOMOperation() {
-          if(!fireDOMOperation.hasBeenRun) {
-            fireDOMOperation.hasBeenRun = true;
-            domOperation();
-          }
-        }
-
-        function closeAnimation() {
-          if(!closeAnimation.hasBeenRun) {
-            closeAnimation.hasBeenRun = true;
-            var data = element.data(NG_ANIMATE_STATE);
-            if(data) {
-              /* only structural animations wait for reflow before removing an
-                 animation, but class-based animations don't. An example of this
-                 failing would be when a parent HTML tag has a ng-class attribute
-                 causing ALL directives below to skip animations during the digest */
-              if(runner && runner.isClassBased) {
-                cleanup(element, className);
-              } else {
-                $$asyncCallback(function() {
-                  var data = element.data(NG_ANIMATE_STATE) || {};
-                  if(localAnimationCount == data.index) {
-                    cleanup(element, className, animationEvent);
-                  }
-                });
-                element.data(NG_ANIMATE_STATE, data);
-              }
-            }
-            fireDoneCallbackAsync();
-          }
-        }
-      }
-
-      function cancelChildAnimations(element) {
-        var node = extractElementNode(element);
-        if (node) {
-          var nodes = angular.isFunction(node.getElementsByClassName) ?
-            node.getElementsByClassName(NG_ANIMATE_CLASS_NAME) :
-            node.querySelectorAll('.' + NG_ANIMATE_CLASS_NAME);
-          forEach(nodes, function(element) {
-            element = angular.element(element);
-            var data = element.data(NG_ANIMATE_STATE);
-            if(data && data.active) {
-              forEach(data.active, function(runner) {
-                runner.cancel();
-              });
-            }
-          });
-        }
-      }
-
-      function cleanup(element, className) {
-        if(isMatchingElement(element, $rootElement)) {
-          if(!rootAnimateState.disabled) {
-            rootAnimateState.running = false;
-            rootAnimateState.structural = false;
-          }
-        } else if(className) {
-          var data = element.data(NG_ANIMATE_STATE) || {};
-
-          var removeAnimations = className === true;
-          if(!removeAnimations && data.active && data.active[className]) {
-            data.totalActive--;
-            delete data.active[className];
-          }
-
-          if(removeAnimations || !data.totalActive) {
-            element.removeClass(NG_ANIMATE_CLASS_NAME);
-            element.removeData(NG_ANIMATE_STATE);
-          }
-        }
-      }
-
-      function animationsDisabled(element, parentElement) {
-        if (rootAnimateState.disabled) return true;
-
-        if(isMatchingElement(element, $rootElement)) {
-          return rootAnimateState.disabled || rootAnimateState.running;
-        }
-
-        do {
-          //the element did not reach the root element which means that it
-          //is not apart of the DOM. Therefore there is no reason to do
-          //any animations on it
-          if(parentElement.length === 0) break;
-
-          var isRoot = isMatchingElement(parentElement, $rootElement);
-          var state = isRoot ? rootAnimateState : parentElement.data(NG_ANIMATE_STATE);
-          var result = state && (!!state.disabled || state.running || state.totalActive > 0);
-          if(isRoot || result) {
-            return result;
-          }
-
-          if(isRoot) return true;
-        }
-        while(parentElement = parentElement.parent());
-
-        return true;
-      }
-    }]);
-
-    $animateProvider.register('', ['$window', '$sniffer', '$timeout', '$$animateReflow',
-                           function($window,   $sniffer,   $timeout,   $$animateReflow) {
-      // Detect proper transitionend/animationend event names.
-      var CSS_PREFIX = '', TRANSITION_PROP, TRANSITIONEND_EVENT, ANIMATION_PROP, ANIMATIONEND_EVENT;
-
-      // If unprefixed events are not supported but webkit-prefixed are, use the latter.
-      // Otherwise, just use W3C names, browsers not supporting them at all will just ignore them.
-      // Note: Chrome implements `window.onwebkitanimationend` and doesn't implement `window.onanimationend`
-      // but at the same time dispatches the `animationend` event and not `webkitAnimationEnd`.
-      // Register both events in case `window.onanimationend` is not supported because of that,
-      // do the same for `transitionend` as Safari is likely to exhibit similar behavior.
-      // Also, the only modern browser that uses vendor prefixes for transitions/keyframes is webkit
-      // therefore there is no reason to test anymore for other vendor prefixes: http://caniuse.com/#search=transition
-      if (window.ontransitionend === undefined && window.onwebkittransitionend !== undefined) {
-        CSS_PREFIX = '-webkit-';
-        TRANSITION_PROP = 'WebkitTransition';
-        TRANSITIONEND_EVENT = 'webkitTransitionEnd transitionend';
-      } else {
-        TRANSITION_PROP = 'transition';
-        TRANSITIONEND_EVENT = 'transitionend';
-      }
-
-      if (window.onanimationend === undefined && window.onwebkitanimationend !== undefined) {
-        CSS_PREFIX = '-webkit-';
-        ANIMATION_PROP = 'WebkitAnimation';
-        ANIMATIONEND_EVENT = 'webkitAnimationEnd animationend';
-      } else {
-        ANIMATION_PROP = 'animation';
-        ANIMATIONEND_EVENT = 'animationend';
-      }
-
-      var DURATION_KEY = 'Duration';
-      var PROPERTY_KEY = 'Property';
-      var DELAY_KEY = 'Delay';
-      var ANIMATION_ITERATION_COUNT_KEY = 'IterationCount';
-      var NG_ANIMATE_PARENT_KEY = '$$ngAnimateKey';
-      var NG_ANIMATE_CSS_DATA_KEY = '$$ngAnimateCSS3Data';
-      var NG_ANIMATE_BLOCK_CLASS_NAME = 'ng-animate-block-transitions';
-      var ELAPSED_TIME_MAX_DECIMAL_PLACES = 3;
-      var CLOSING_TIME_BUFFER = 1.5;
-      var ONE_SECOND = 1000;
-
-      var lookupCache = {};
-      var parentCounter = 0;
-      var animationReflowQueue = [];
-      var cancelAnimationReflow;
-      function afterReflow(element, callback) {
-        if(cancelAnimationReflow) {
-          cancelAnimationReflow();
-        }
-        animationReflowQueue.push(callback);
-        cancelAnimationReflow = $$animateReflow(function() {
-          forEach(animationReflowQueue, function(fn) {
-            fn();
-          });
-
-          animationReflowQueue = [];
-          cancelAnimationReflow = null;
-          lookupCache = {};
-        });
-      }
-
-      var closingTimer = null;
-      var closingTimestamp = 0;
-      var animationElementQueue = [];
-      function animationCloseHandler(element, totalTime) {
-        var node = extractElementNode(element);
-        element = angular.element(node);
-
-        //this item will be garbage collected by the closing
-        //animation timeout
-        animationElementQueue.push(element);
-
-        //but it may not need to cancel out the existing timeout
-        //if the timestamp is less than the previous one
-        var futureTimestamp = Date.now() + totalTime;
-        if(futureTimestamp <= closingTimestamp) {
-          return;
-        }
-
-        $timeout.cancel(closingTimer);
-
-        closingTimestamp = futureTimestamp;
-        closingTimer = $timeout(function() {
-          closeAllAnimations(animationElementQueue);
-          animationElementQueue = [];
-        }, totalTime, false);
-      }
-
-      function closeAllAnimations(elements) {
-        forEach(elements, function(element) {
-          var elementData = element.data(NG_ANIMATE_CSS_DATA_KEY);
-          if(elementData) {
-            (elementData.closeAnimationFn || noop)();
-          }
-        });
-      }
-
-      function getElementAnimationDetails(element, cacheKey) {
-        var data = cacheKey ? lookupCache[cacheKey] : null;
-        if(!data) {
-          var transitionDuration = 0;
-          var transitionDelay = 0;
-          var animationDuration = 0;
-          var animationDelay = 0;
-          var transitionDelayStyle;
-          var animationDelayStyle;
-          var transitionDurationStyle;
-          var transitionPropertyStyle;
-
-          //we want all the styles defined before and after
-          forEach(element, function(element) {
-            if (element.nodeType == ELEMENT_NODE) {
-              var elementStyles = $window.getComputedStyle(element) || {};
-
-              transitionDurationStyle = elementStyles[TRANSITION_PROP + DURATION_KEY];
-
-              transitionDuration = Math.max(parseMaxTime(transitionDurationStyle), transitionDuration);
-
-              transitionPropertyStyle = elementStyles[TRANSITION_PROP + PROPERTY_KEY];
-
-              transitionDelayStyle = elementStyles[TRANSITION_PROP + DELAY_KEY];
-
-              transitionDelay  = Math.max(parseMaxTime(transitionDelayStyle), transitionDelay);
-
-              animationDelayStyle = elementStyles[ANIMATION_PROP + DELAY_KEY];
-
-              animationDelay   = Math.max(parseMaxTime(animationDelayStyle), animationDelay);
-
-              var aDuration  = parseMaxTime(elementStyles[ANIMATION_PROP + DURATION_KEY]);
-
-              if(aDuration > 0) {
-                aDuration *= parseInt(elementStyles[ANIMATION_PROP + ANIMATION_ITERATION_COUNT_KEY], 10) || 1;
-              }
-
-              animationDuration = Math.max(aDuration, animationDuration);
-            }
-          });
-          data = {
-            total : 0,
-            transitionPropertyStyle: transitionPropertyStyle,
-            transitionDurationStyle: transitionDurationStyle,
-            transitionDelayStyle: transitionDelayStyle,
-            transitionDelay: transitionDelay,
-            transitionDuration: transitionDuration,
-            animationDelayStyle: animationDelayStyle,
-            animationDelay: animationDelay,
-            animationDuration: animationDuration
-          };
-          if(cacheKey) {
-            lookupCache[cacheKey] = data;
-          }
-        }
-        return data;
-      }
-
-      function parseMaxTime(str) {
-        var maxValue = 0;
-        var values = angular.isString(str) ?
-          str.split(/\s*,\s*/) :
-          [];
-        forEach(values, function(value) {
-          maxValue = Math.max(parseFloat(value) || 0, maxValue);
-        });
-        return maxValue;
-      }
-
-      function getCacheKey(element) {
-        var parentElement = element.parent();
-        var parentID = parentElement.data(NG_ANIMATE_PARENT_KEY);
-        if(!parentID) {
-          parentElement.data(NG_ANIMATE_PARENT_KEY, ++parentCounter);
-          parentID = parentCounter;
-        }
-        return parentID + '-' + extractElementNode(element).getAttribute('class');
-      }
-
-      function animateSetup(animationEvent, element, className, calculationDecorator) {
-        var cacheKey = getCacheKey(element);
-        var eventCacheKey = cacheKey + ' ' + className;
-        var itemIndex = lookupCache[eventCacheKey] ? ++lookupCache[eventCacheKey].total : 0;
-
-        var stagger = {};
-        if(itemIndex > 0) {
-          var staggerClassName = className + '-stagger';
-          var staggerCacheKey = cacheKey + ' ' + staggerClassName;
-          var applyClasses = !lookupCache[staggerCacheKey];
-
-          applyClasses && element.addClass(staggerClassName);
-
-          stagger = getElementAnimationDetails(element, staggerCacheKey);
-
-          applyClasses && element.removeClass(staggerClassName);
-        }
-
-        /* the animation itself may need to add/remove special CSS classes
-         * before calculating the anmation styles */
-        calculationDecorator = calculationDecorator ||
-                               function(fn) { return fn(); };
-
-        element.addClass(className);
-
-        var formerData = element.data(NG_ANIMATE_CSS_DATA_KEY) || {};
-
-        var timings = calculationDecorator(function() {
-          return getElementAnimationDetails(element, eventCacheKey);
-        });
-
-        var transitionDuration = timings.transitionDuration;
-        var animationDuration = timings.animationDuration;
-        if(transitionDuration === 0 && animationDuration === 0) {
-          element.removeClass(className);
-          return false;
-        }
-
-        element.data(NG_ANIMATE_CSS_DATA_KEY, {
-          running : formerData.running || 0,
-          itemIndex : itemIndex,
-          stagger : stagger,
-          timings : timings,
-          closeAnimationFn : noop
-        });
-
-        //temporarily disable the transition so that the enter styles
-        //don't animate twice (this is here to avoid a bug in Chrome/FF).
-        var isCurrentlyAnimating = formerData.running > 0 || animationEvent == 'setClass';
-        if(transitionDuration > 0) {
-          blockTransitions(element, className, isCurrentlyAnimating);
-        }
-
-        //staggering keyframe animations work by adjusting the `animation-delay` CSS property
-        //on the given element, however, the delay value can only calculated after the reflow
-        //since by that time $animate knows how many elements are being animated. Therefore,
-        //until the reflow occurs the element needs to be blocked (where the keyframe animation
-        //is set to `none 0s`). This blocking mechanism should only be set for when a stagger
-        //animation is detected and when the element item index is greater than 0.
-        if(animationDuration > 0 && stagger.animationDelay > 0 && stagger.animationDuration === 0) {
-          blockKeyframeAnimations(element);
-        }
-
-        return true;
-      }
-
-      function isStructuralAnimation(className) {
-        return className == 'ng-enter' || className == 'ng-move' || className == 'ng-leave';
-      }
-
-      function blockTransitions(element, className, isAnimating) {
-        if(isStructuralAnimation(className) || !isAnimating) {
-          extractElementNode(element).style[TRANSITION_PROP + PROPERTY_KEY] = 'none';
-        } else {
-          element.addClass(NG_ANIMATE_BLOCK_CLASS_NAME);
-        }
-      }
-
-      function blockKeyframeAnimations(element) {
-        extractElementNode(element).style[ANIMATION_PROP] = 'none 0s';
-      }
-
-      function unblockTransitions(element, className) {
-        var prop = TRANSITION_PROP + PROPERTY_KEY;
-        var node = extractElementNode(element);
-        if(node.style[prop] && node.style[prop].length > 0) {
-          node.style[prop] = '';
-        }
-        element.removeClass(NG_ANIMATE_BLOCK_CLASS_NAME);
-      }
-
-      function unblockKeyframeAnimations(element) {
-        var prop = ANIMATION_PROP;
-        var node = extractElementNode(element);
-        if(node.style[prop] && node.style[prop].length > 0) {
-          node.style[prop] = '';
-        }
-      }
-
-      function animateRun(animationEvent, element, className, activeAnimationComplete) {
-        var node = extractElementNode(element);
-        var elementData = element.data(NG_ANIMATE_CSS_DATA_KEY);
-        if(node.getAttribute('class').indexOf(className) == -1 || !elementData) {
-          activeAnimationComplete();
-          return;
-        }
-
-        var activeClassName = '';
-        forEach(className.split(' '), function(klass, i) {
-          activeClassName += (i > 0 ? ' ' : '') + klass + '-active';
-        });
-
-        var stagger = elementData.stagger;
-        var timings = elementData.timings;
-        var itemIndex = elementData.itemIndex;
-        var maxDuration = Math.max(timings.transitionDuration, timings.animationDuration);
-        var maxDelay = Math.max(timings.transitionDelay, timings.animationDelay);
-        var maxDelayTime = maxDelay * ONE_SECOND;
-
-        var startTime = Date.now();
-        var css3AnimationEvents = ANIMATIONEND_EVENT + ' ' + TRANSITIONEND_EVENT;
-
-        var style = '', appliedStyles = [];
-        if(timings.transitionDuration > 0) {
-          var propertyStyle = timings.transitionPropertyStyle;
-          if(propertyStyle.indexOf('all') == -1) {
-            style += CSS_PREFIX + 'transition-property: ' + propertyStyle + ';';
-            style += CSS_PREFIX + 'transition-duration: ' + timings.transitionDurationStyle + ';';
-            appliedStyles.push(CSS_PREFIX + 'transition-property');
-            appliedStyles.push(CSS_PREFIX + 'transition-duration');
-          }
-        }
-
-        if(itemIndex > 0) {
-          if(stagger.transitionDelay > 0 && stagger.transitionDuration === 0) {
-            var delayStyle = timings.transitionDelayStyle;
-            style += CSS_PREFIX + 'transition-delay: ' +
-                     prepareStaggerDelay(delayStyle, stagger.transitionDelay, itemIndex) + '; ';
-            appliedStyles.push(CSS_PREFIX + 'transition-delay');
-          }
-
-          if(stagger.animationDelay > 0 && stagger.animationDuration === 0) {
-            style += CSS_PREFIX + 'animation-delay: ' +
-                     prepareStaggerDelay(timings.animationDelayStyle, stagger.animationDelay, itemIndex) + '; ';
-            appliedStyles.push(CSS_PREFIX + 'animation-delay');
-          }
-        }
-
-        if(appliedStyles.length > 0) {
-          //the element being animated may sometimes contain comment nodes in
-          //the jqLite object, so we're safe to use a single variable to house
-          //the styles since there is always only one element being animated
-          var oldStyle = node.getAttribute('style') || '';
-          node.setAttribute('style', oldStyle + '; ' + style);
-        }
-
-        element.on(css3AnimationEvents, onAnimationProgress);
-        element.addClass(activeClassName);
-        elementData.closeAnimationFn = function() {
-          onEnd();
-          activeAnimationComplete();
-        };
-
-        var staggerTime       = itemIndex * (Math.max(stagger.animationDelay, stagger.transitionDelay) || 0);
-        var animationTime     = (maxDelay + maxDuration) * CLOSING_TIME_BUFFER;
-        var totalTime         = (staggerTime + animationTime) * ONE_SECOND;
-
-        elementData.running++;
-        animationCloseHandler(element, totalTime);
-        return onEnd;
-
-        // This will automatically be called by $animate so
-        // there is no need to attach this internally to the
-        // timeout done method.
-        function onEnd(cancelled) {
-          element.off(css3AnimationEvents, onAnimationProgress);
-          element.removeClass(activeClassName);
-          animateClose(element, className);
-          var node = extractElementNode(element);
-          for (var i in appliedStyles) {
-            node.style.removeProperty(appliedStyles[i]);
-          }
-        }
-
-        function onAnimationProgress(event) {
-          event.stopPropagation();
-          var ev = event.originalEvent || event;
-          var timeStamp = ev.$manualTimeStamp || ev.timeStamp || Date.now();
-
-          /* Firefox (or possibly just Gecko) likes to not round values up
-           * when a ms measurement is used for the animation */
-          var elapsedTime = parseFloat(ev.elapsedTime.toFixed(ELAPSED_TIME_MAX_DECIMAL_PLACES));
-
-          /* $manualTimeStamp is a mocked timeStamp value which is set
-           * within browserTrigger(). This is only here so that tests can
-           * mock animations properly. Real events fallback to event.timeStamp,
-           * or, if they don't, then a timeStamp is automatically created for them.
-           * We're checking to see if the timeStamp surpasses the expected delay,
-           * but we're using elapsedTime instead of the timeStamp on the 2nd
-           * pre-condition since animations sometimes close off early */
-          if(Math.max(timeStamp - startTime, 0) >= maxDelayTime && elapsedTime >= maxDuration) {
-            activeAnimationComplete();
-          }
-        }
-      }
-
-      function prepareStaggerDelay(delayStyle, staggerDelay, index) {
-        var style = '';
-        forEach(delayStyle.split(','), function(val, i) {
-          style += (i > 0 ? ',' : '') +
-                   (index * staggerDelay + parseInt(val, 10)) + 's';
-        });
-        return style;
-      }
-
-      function animateBefore(animationEvent, element, className, calculationDecorator) {
-        if(animateSetup(animationEvent, element, className, calculationDecorator)) {
-          return function(cancelled) {
-            cancelled && animateClose(element, className);
-          };
-        }
-      }
-
-      function animateAfter(animationEvent, element, className, afterAnimationComplete) {
-        if(element.data(NG_ANIMATE_CSS_DATA_KEY)) {
-          return animateRun(animationEvent, element, className, afterAnimationComplete);
-        } else {
-          animateClose(element, className);
-          afterAnimationComplete();
-        }
-      }
-
-      function animate(animationEvent, element, className, animationComplete) {
-        //If the animateSetup function doesn't bother returning a
-        //cancellation function then it means that there is no animation
-        //to perform at all
-        var preReflowCancellation = animateBefore(animationEvent, element, className);
-        if(!preReflowCancellation) {
-          animationComplete();
-          return;
-        }
-
-        //There are two cancellation functions: one is before the first
-        //reflow animation and the second is during the active state
-        //animation. The first function will take care of removing the
-        //data from the element which will not make the 2nd animation
-        //happen in the first place
-        var cancel = preReflowCancellation;
-        afterReflow(element, function() {
-          unblockTransitions(element, className);
-          unblockKeyframeAnimations(element);
-          //once the reflow is complete then we point cancel to
-          //the new cancellation function which will remove all of the
-          //animation properties from the active animation
-          cancel = animateAfter(animationEvent, element, className, animationComplete);
-        });
-
-        return function(cancelled) {
-          (cancel || noop)(cancelled);
-        };
-      }
-
-      function animateClose(element, className) {
-        element.removeClass(className);
-        var data = element.data(NG_ANIMATE_CSS_DATA_KEY);
-        if(data) {
-          if(data.running) {
-            data.running--;
-          }
-          if(!data.running || data.running === 0) {
-            element.removeData(NG_ANIMATE_CSS_DATA_KEY);
-          }
-        }
-      }
-
-      return {
-        enter : function(element, animationCompleted) {
-          return animate('enter', element, 'ng-enter', animationCompleted);
-        },
-
-        leave : function(element, animationCompleted) {
-          return animate('leave', element, 'ng-leave', animationCompleted);
-        },
-
-        move : function(element, animationCompleted) {
-          return animate('move', element, 'ng-move', animationCompleted);
-        },
-
-        beforeSetClass : function(element, add, remove, animationCompleted) {
-          var className = suffixClasses(remove, '-remove') + ' ' +
-                          suffixClasses(add, '-add');
-          var cancellationMethod = animateBefore('setClass', element, className, function(fn) {
-            /* when classes are removed from an element then the transition style
-             * that is applied is the transition defined on the element without the
-             * CSS class being there. This is how CSS3 functions outside of ngAnimate.
-             * http://plnkr.co/edit/j8OzgTNxHTb4n3zLyjGW?p=preview */
-            var klass = element.attr('class');
-            element.removeClass(remove);
-            element.addClass(add);
-            var timings = fn();
-            element.attr('class', klass);
-            return timings;
-          });
-
-          if(cancellationMethod) {
-            afterReflow(element, function() {
-              unblockTransitions(element, className);
-              unblockKeyframeAnimations(element);
-              animationCompleted();
-            });
-            return cancellationMethod;
-          }
-          animationCompleted();
-        },
-
-        beforeAddClass : function(element, className, animationCompleted) {
-          var cancellationMethod = animateBefore('addClass', element, suffixClasses(className, '-add'), function(fn) {
-
-            /* when a CSS class is added to an element then the transition style that
-             * is applied is the transition defined on the element when the CSS class
-             * is added at the time of the animation. This is how CSS3 functions
-             * outside of ngAnimate. */
-            element.addClass(className);
-            var timings = fn();
-            element.removeClass(className);
-            return timings;
-          });
-
-          if(cancellationMethod) {
-            afterReflow(element, function() {
-              unblockTransitions(element, className);
-              unblockKeyframeAnimations(element);
-              animationCompleted();
-            });
-            return cancellationMethod;
-          }
-          animationCompleted();
-        },
-
-        setClass : function(element, add, remove, animationCompleted) {
-          remove = suffixClasses(remove, '-remove');
-          add = suffixClasses(add, '-add');
-          var className = remove + ' ' + add;
-          return animateAfter('setClass', element, className, animationCompleted);
-        },
-
-        addClass : function(element, className, animationCompleted) {
-          return animateAfter('addClass', element, suffixClasses(className, '-add'), animationCompleted);
-        },
-
-        beforeRemoveClass : function(element, className, animationCompleted) {
-          var cancellationMethod = animateBefore('removeClass', element, suffixClasses(className, '-remove'), function(fn) {
-            /* when classes are removed from an element then the transition style
-             * that is applied is the transition defined on the element without the
-             * CSS class being there. This is how CSS3 functions outside of ngAnimate.
-             * http://plnkr.co/edit/j8OzgTNxHTb4n3zLyjGW?p=preview */
-            var klass = element.attr('class');
-            element.removeClass(className);
-            var timings = fn();
-            element.attr('class', klass);
-            return timings;
-          });
-
-          if(cancellationMethod) {
-            afterReflow(element, function() {
-              unblockTransitions(element, className);
-              unblockKeyframeAnimations(element);
-              animationCompleted();
-            });
-            return cancellationMethod;
-          }
-          animationCompleted();
-        },
-
-        removeClass : function(element, className, animationCompleted) {
-          return animateAfter('removeClass', element, suffixClasses(className, '-remove'), animationCompleted);
-        }
-      };
-
-      function suffixClasses(classes, suffix) {
-        var className = '';
-        classes = angular.isArray(classes) ? classes : classes.split(/\s+/);
-        forEach(classes, function(klass, i) {
-          if(klass && klass.length > 0) {
-            className += (i > 0 ? ' ' : '') + klass + suffix;
-          }
-        });
-        return className;
-      }
-    }]);
-  }]);
-
-
-})(window, window.angular);

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-animate.min.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-animate.min.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-animate.min.js
deleted file mode 100644
index 7d00562..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-animate.min.js
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- AngularJS v1.2.19
- (c) 2010-2014 Google, Inc. http://angularjs.org
- License: MIT
-*/
-(function(u,f,P){'use strict';f.module("ngAnimate",["ng"]).factory("$$animateReflow",["$$rAF","$document",function(f,u){return function(e){return f(function(){e()})}}]).config(["$provide","$animateProvider",function(W,H){function e(f){for(var e=0;e<f.length;e++){var h=f[e];if(h.nodeType==aa)return h}}function C(h){return f.element(e(h))}var n=f.noop,h=f.forEach,Q=H.$$selectors,aa=1,k="$$ngAnimateState",K="ng-animate",g={running:!0};W.decorator("$animate",["$delegate","$injector","$sniffer","$rootElement",
-"$$asyncCallback","$rootScope","$document",function(y,u,$,L,F,I,P){function R(a){if(a){var b=[],c={};a=a.substr(1).split(".");($.transitions||$.animations)&&b.push(u.get(Q[""]));for(var d=0;d<a.length;d++){var f=a[d],e=Q[f];e&&!c[f]&&(b.push(u.get(e)),c[f]=!0)}return b}}function M(a,b,c){function d(a,b){var c=a[b],d=a["before"+b.charAt(0).toUpperCase()+b.substr(1)];if(c||d)return"leave"==b&&(d=c,c=null),t.push({event:b,fn:c}),l.push({event:b,fn:d}),!0}function e(b,d,f){var q=[];h(b,function(a){a.fn&&
-q.push(a)});var m=0;h(q,function(b,e){var h=function(){a:{if(d){(d[e]||n)();if(++m<q.length)break a;d=null}f()}};switch(b.event){case "setClass":d.push(b.fn(a,p,A,h));break;case "addClass":d.push(b.fn(a,p||c,h));break;case "removeClass":d.push(b.fn(a,A||c,h));break;default:d.push(b.fn(a,h))}});d&&0===d.length&&f()}var w=a[0];if(w){var k="setClass"==b,g=k||"addClass"==b||"removeClass"==b,p,A;f.isArray(c)&&(p=c[0],A=c[1],c=p+" "+A);var B=a.attr("class")+" "+c;if(T(B)){var r=n,v=[],l=[],x=n,m=[],t=[],
-B=(" "+B).replace(/\s+/g,".");h(R(B),function(a){!d(a,b)&&k&&(d(a,"addClass"),d(a,"removeClass"))});return{node:w,event:b,className:c,isClassBased:g,isSetClassOperation:k,before:function(a){r=a;e(l,v,function(){r=n;a()})},after:function(a){x=a;e(t,m,function(){x=n;a()})},cancel:function(){v&&(h(v,function(a){(a||n)(!0)}),r(!0));m&&(h(m,function(a){(a||n)(!0)}),x(!0))}}}}}function z(a,b,c,d,e,w,g){function n(d){var e="$animate:"+d;x&&(x[e]&&0<x[e].length)&&F(function(){c.triggerHandler(e,{event:a,
-className:b})})}function p(){n("before")}function A(){n("after")}function B(){n("close");g&&F(function(){g()})}function r(){r.hasBeenRun||(r.hasBeenRun=!0,w())}function v(){if(!v.hasBeenRun){v.hasBeenRun=!0;var d=c.data(k);d&&(l&&l.isClassBased?D(c,b):(F(function(){var d=c.data(k)||{};z==d.index&&D(c,b,a)}),c.data(k,d)));B()}}var l=M(c,a,b);if(l){b=l.className;var x=f.element._data(l.node),x=x&&x.events;d||(d=e?e.parent():c.parent());var m=c.data(k)||{};e=m.active||{};var t=m.totalActive||0,u=m.last;
-if(l.isClassBased&&(m.disabled||u&&!u.isClassBased)||N(c,d))r(),p(),A(),v();else{d=!1;if(0<t){m=[];if(l.isClassBased)"setClass"==u.event?(m.push(u),D(c,b)):e[b]&&(y=e[b],y.event==a?d=!0:(m.push(y),D(c,b)));else if("leave"==a&&e["ng-leave"])d=!0;else{for(var y in e)m.push(e[y]),D(c,y);e={};t=0}0<m.length&&h(m,function(a){a.cancel()})}!l.isClassBased||(l.isSetClassOperation||d)||(d="addClass"==a==c.hasClass(b));if(d)r(),p(),A(),B();else{if("leave"==a)c.one("$destroy",function(a){a=f.element(this);var b=
-a.data(k);b&&(b=b.active["ng-leave"])&&(b.cancel(),D(a,"ng-leave"))});c.addClass(K);var z=O++;t++;e[b]=l;c.data(k,{last:l,active:e,index:z,totalActive:t});p();l.before(function(d){var e=c.data(k);d=d||!e||!e.active[b]||l.isClassBased&&e.active[b].event!=a;r();!0===d?v():(A(),l.after(v))})}}}else r(),p(),A(),v()}function U(a){if(a=e(a))a=f.isFunction(a.getElementsByClassName)?a.getElementsByClassName(K):a.querySelectorAll("."+K),h(a,function(a){a=f.element(a);(a=a.data(k))&&a.active&&h(a.active,function(a){a.cancel()})})}
-function D(a,b){if(e(a)==e(L))g.disabled||(g.running=!1,g.structural=!1);else if(b){var c=a.data(k)||{},d=!0===b;!d&&(c.active&&c.active[b])&&(c.totalActive--,delete c.active[b]);if(d||!c.totalActive)a.removeClass(K),a.removeData(k)}}function N(a,b){if(g.disabled)return!0;if(e(a)==e(L))return g.disabled||g.running;do{if(0===b.length)break;var c=e(b)==e(L),d=c?g:b.data(k),d=d&&(!!d.disabled||d.running||0<d.totalActive);if(c||d)return d;if(c)break}while(b=b.parent());return!0}var O=0;L.data(k,g);I.$$postDigest(function(){I.$$postDigest(function(){g.running=
-!1})});var V=H.classNameFilter(),T=V?function(a){return V.test(a)}:function(){return!0};return{enter:function(a,b,c,d){a=f.element(a);b=b&&f.element(b);c=c&&f.element(c);this.enabled(!1,a);y.enter(a,b,c);I.$$postDigest(function(){a=C(a);z("enter","ng-enter",a,b,c,n,d)})},leave:function(a,b){a=f.element(a);U(a);this.enabled(!1,a);I.$$postDigest(function(){z("leave","ng-leave",C(a),null,null,function(){y.leave(a)},b)})},move:function(a,b,c,d){a=f.element(a);b=b&&f.element(b);c=c&&f.element(c);U(a);
-this.enabled(!1,a);y.move(a,b,c);I.$$postDigest(function(){a=C(a);z("move","ng-move",a,b,c,n,d)})},addClass:function(a,b,c){a=f.element(a);a=C(a);z("addClass",b,a,null,null,function(){y.addClass(a,b)},c)},removeClass:function(a,b,c){a=f.element(a);a=C(a);z("removeClass",b,a,null,null,function(){y.removeClass(a,b)},c)},setClass:function(a,b,c,d){a=f.element(a);a=C(a);z("setClass",[b,c],a,null,null,function(){y.setClass(a,b,c)},d)},enabled:function(a,b){switch(arguments.length){case 2:if(a)D(b);else{var c=
-b.data(k)||{};c.disabled=!0;b.data(k,c)}break;case 1:g.disabled=!a;break;default:a=!g.disabled}return!!a}}}]);H.register("",["$window","$sniffer","$timeout","$$animateReflow",function(k,g,C,L){function F(a,E){S&&S();X.push(E);S=L(function(){h(X,function(a){a()});X=[];S=null;q={}})}function I(a,E){var b=e(a);a=f.element(b);Y.push(a);b=Date.now()+E;b<=ea||(C.cancel(da),ea=b,da=C(function(){K(Y);Y=[]},E,!1))}function K(a){h(a,function(a){(a=a.data(m))&&(a.closeAnimationFn||n)()})}function R(a,E){var b=
-E?q[E]:null;if(!b){var c=0,d=0,e=0,f=0,m,Z,s,g;h(a,function(a){if(a.nodeType==aa){a=k.getComputedStyle(a)||{};s=a[J+B];c=Math.max(M(s),c);g=a[J+r];m=a[J+v];d=Math.max(M(m),d);Z=a[p+v];f=Math.max(M(Z),f);var b=M(a[p+B]);0<b&&(b*=parseInt(a[p+l],10)||1);e=Math.max(b,e)}});b={total:0,transitionPropertyStyle:g,transitionDurationStyle:s,transitionDelayStyle:m,transitionDelay:d,transitionDuration:c,animationDelayStyle:Z,animationDelay:f,animationDuration:e};E&&(q[E]=b)}return b}function M(a){var b=0;a=
-f.isString(a)?a.split(/\s*,\s*/):[];h(a,function(a){b=Math.max(parseFloat(a)||0,b)});return b}function z(a){var b=a.parent(),c=b.data(x);c||(b.data(x,++ca),c=ca);return c+"-"+e(a).getAttribute("class")}function U(a,b,c,d){var f=z(b),h=f+" "+c,k=q[h]?++q[h].total:0,g={};if(0<k){var l=c+"-stagger",g=f+" "+l;(f=!q[g])&&b.addClass(l);g=R(b,g);f&&b.removeClass(l)}d=d||function(a){return a()};b.addClass(c);var l=b.data(m)||{},s=d(function(){return R(b,h)});d=s.transitionDuration;f=s.animationDuration;if(0===
-d&&0===f)return b.removeClass(c),!1;b.data(m,{running:l.running||0,itemIndex:k,stagger:g,timings:s,closeAnimationFn:n});a=0<l.running||"setClass"==a;0<d&&D(b,c,a);0<f&&(0<g.animationDelay&&0===g.animationDuration)&&(e(b).style[p]="none 0s");return!0}function D(a,b,c){"ng-enter"!=b&&("ng-move"!=b&&"ng-leave"!=b)&&c?a.addClass(t):e(a).style[J+r]="none"}function N(a,b){var c=J+r,d=e(a);d.style[c]&&0<d.style[c].length&&(d.style[c]="");a.removeClass(t)}function O(a){var b=p;a=e(a);a.style[b]&&0<a.style[b].length&&
-(a.style[b]="")}function V(a,b,c,f){function g(a){b.off(z,l);b.removeClass(p);d(b,c);a=e(b);for(var fa in t)a.style.removeProperty(t[fa])}function l(a){a.stopPropagation();var b=a.originalEvent||a;a=b.$manualTimeStamp||b.timeStamp||Date.now();b=parseFloat(b.elapsedTime.toFixed(Q));Math.max(a-y,0)>=x&&b>=u&&f()}var k=e(b);a=b.data(m);if(-1!=k.getAttribute("class").indexOf(c)&&a){var p="";h(c.split(" "),function(a,b){p+=(0<b?" ":"")+a+"-active"});var n=a.stagger,s=a.timings,r=a.itemIndex,u=Math.max(s.transitionDuration,
-s.animationDuration),v=Math.max(s.transitionDelay,s.animationDelay),x=v*ba,y=Date.now(),z=A+" "+H,q="",t=[];if(0<s.transitionDuration){var B=s.transitionPropertyStyle;-1==B.indexOf("all")&&(q+=w+"transition-property: "+B+";",q+=w+"transition-duration: "+s.transitionDurationStyle+";",t.push(w+"transition-property"),t.push(w+"transition-duration"))}0<r&&(0<n.transitionDelay&&0===n.transitionDuration&&(q+=w+"transition-delay: "+T(s.transitionDelayStyle,n.transitionDelay,r)+"; ",t.push(w+"transition-delay")),
-0<n.animationDelay&&0===n.animationDuration&&(q+=w+"animation-delay: "+T(s.animationDelayStyle,n.animationDelay,r)+"; ",t.push(w+"animation-delay")));0<t.length&&(s=k.getAttribute("style")||"",k.setAttribute("style",s+"; "+q));b.on(z,l);b.addClass(p);a.closeAnimationFn=function(){g();f()};k=(r*(Math.max(n.animationDelay,n.transitionDelay)||0)+(v+u)*W)*ba;a.running++;I(b,k);return g}f()}function T(a,b,c){var d="";h(a.split(","),function(a,e){d+=(0<e?",":"")+(c*b+parseInt(a,10))+"s"});return d}function a(a,
-b,c,e){if(U(a,b,c,e))return function(a){a&&d(b,c)}}function b(a,b,c,e){if(b.data(m))return V(a,b,c,e);d(b,c);e()}function c(c,d,e,f){var g=a(c,d,e);if(g){var h=g;F(d,function(){N(d,e);O(d);h=b(c,d,e,f)});return function(a){(h||n)(a)}}f()}function d(a,b){a.removeClass(b);var c=a.data(m);c&&(c.running&&c.running--,c.running&&0!==c.running||a.removeData(m))}function G(a,b){var c="";a=f.isArray(a)?a:a.split(/\s+/);h(a,function(a,d){a&&0<a.length&&(c+=(0<d?" ":"")+a+b)});return c}var w="",J,H,p,A;u.ontransitionend===
-P&&u.onwebkittransitionend!==P?(w="-webkit-",J="WebkitTransition",H="webkitTransitionEnd transitionend"):(J="transition",H="transitionend");u.onanimationend===P&&u.onwebkitanimationend!==P?(w="-webkit-",p="WebkitAnimation",A="webkitAnimationEnd animationend"):(p="animation",A="animationend");var B="Duration",r="Property",v="Delay",l="IterationCount",x="$$ngAnimateKey",m="$$ngAnimateCSS3Data",t="ng-animate-block-transitions",Q=3,W=1.5,ba=1E3,q={},ca=0,X=[],S,da=null,ea=0,Y=[];return{enter:function(a,
-b){return c("enter",a,"ng-enter",b)},leave:function(a,b){return c("leave",a,"ng-leave",b)},move:function(a,b){return c("move",a,"ng-move",b)},beforeSetClass:function(b,c,d,e){var f=G(d,"-remove")+" "+G(c,"-add"),g=a("setClass",b,f,function(a){var e=b.attr("class");b.removeClass(d);b.addClass(c);a=a();b.attr("class",e);return a});if(g)return F(b,function(){N(b,f);O(b);e()}),g;e()},beforeAddClass:function(b,c,d){var e=a("addClass",b,G(c,"-add"),function(a){b.addClass(c);a=a();b.removeClass(c);return a});
-if(e)return F(b,function(){N(b,c);O(b);d()}),e;d()},setClass:function(a,c,d,e){d=G(d,"-remove");c=G(c,"-add");return b("setClass",a,d+" "+c,e)},addClass:function(a,c,d){return b("addClass",a,G(c,"-add"),d)},beforeRemoveClass:function(b,c,d){var e=a("removeClass",b,G(c,"-remove"),function(a){var d=b.attr("class");b.removeClass(c);a=a();b.attr("class",d);return a});if(e)return F(b,function(){N(b,c);O(b);d()}),e;d()},removeClass:function(a,c,d){return b("removeClass",a,G(c,"-remove"),d)}}}])}])})(window,
-window.angular);
-//# sourceMappingURL=angular-animate.min.js.map


[15/71] [abbrv] brooklyn-ui git commit: Move mobile app to sandbox

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-tn.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-tn.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-tn.js
deleted file mode 100644
index a78f0de..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-tn.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u0635",
-      "\u0645"
-    ],
-    "DAY": [
-      "\u0627\u0644\u0623\u062d\u062f",
-      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
-      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
-      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
-      "\u0627\u0644\u062e\u0645\u064a\u0633",
-      "\u0627\u0644\u062c\u0645\u0639\u0629",
-      "\u0627\u0644\u0633\u0628\u062a"
-    ],
-    "MONTH": [
-      "\u064a\u0646\u0627\u064a\u0631",
-      "\u0641\u0628\u0631\u0627\u064a\u0631",
-      "\u0645\u0627\u0631\u0633",
-      "\u0623\u0628\u0631\u064a\u0644",
-      "\u0645\u0627\u064a\u0648",
-      "\u064a\u0648\u0646\u064a\u0648",
-      "\u064a\u0648\u0644\u064a\u0648",
-      "\u0623\u063a\u0633\u0637\u0633",
-      "\u0633\u0628\u062a\u0645\u0628\u0631",
-      "\u0623\u0643\u062a\u0648\u0628\u0631",
-      "\u0646\u0648\u0641\u0645\u0628\u0631",
-      "\u062f\u064a\u0633\u0645\u0628\u0631"
-    ],
-    "SHORTDAY": [
-      "\u0627\u0644\u0623\u062d\u062f",
-      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
-      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
-      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
-      "\u0627\u0644\u062e\u0645\u064a\u0633",
-      "\u0627\u0644\u062c\u0645\u0639\u0629",
-      "\u0627\u0644\u0633\u0628\u062a"
-    ],
-    "SHORTMONTH": [
-      "\u064a\u0646\u0627\u064a\u0631",
-      "\u0641\u0628\u0631\u0627\u064a\u0631",
-      "\u0645\u0627\u0631\u0633",
-      "\u0623\u0628\u0631\u064a\u0644",
-      "\u0645\u0627\u064a\u0648",
-      "\u064a\u0648\u0646\u064a\u0648",
-      "\u064a\u0648\u0644\u064a\u0648",
-      "\u0623\u063a\u0633\u0637\u0633",
-      "\u0633\u0628\u062a\u0645\u0628\u0631",
-      "\u0623\u0643\u062a\u0648\u0628\u0631",
-      "\u0646\u0648\u0641\u0645\u0628\u0631",
-      "\u062f\u064a\u0633\u0645\u0628\u0631"
-    ],
-    "fullDate": "EEEE\u060c d MMMM\u060c y",
-    "longDate": "d MMMM\u060c y",
-    "medium": "yyyy/MM/dd h:mm:ss a",
-    "mediumDate": "yyyy/MM/dd",
-    "mediumTime": "h:mm:ss a",
-    "short": "yyyy/M/d h:mm a",
-    "shortDate": "yyyy/M/d",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u00a3",
-    "DECIMAL_SEP": "\u066b",
-    "GROUP_SEP": "\u066c",
-    "PATTERNS": [
-      {
-        "gSize": 0,
-        "lgSize": 0,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "",
-        "negSuf": "-",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 0,
-        "lgSize": 0,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "\u00a4\u00a0",
-        "negSuf": "-",
-        "posPre": "\u00a4\u00a0",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "ar-tn",
-  "pluralCat": function (n) {  if (n == 0) {   return PLURAL_CATEGORY.ZERO;  }  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  if (n == 2) {   return PLURAL_CATEGORY.TWO;  }  if (n == (n | 0) && n % 100 >= 3 && n % 100 <= 10) {   return PLURAL_CATEGORY.FEW;  }  if (n == (n | 0) && n % 100 >= 11 && n % 100 <= 99) {   return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-ye.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-ye.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-ye.js
deleted file mode 100644
index 6b28d2f..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-ye.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u0635",
-      "\u0645"
-    ],
-    "DAY": [
-      "\u0627\u0644\u0623\u062d\u062f",
-      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
-      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
-      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
-      "\u0627\u0644\u062e\u0645\u064a\u0633",
-      "\u0627\u0644\u062c\u0645\u0639\u0629",
-      "\u0627\u0644\u0633\u0628\u062a"
-    ],
-    "MONTH": [
-      "\u064a\u0646\u0627\u064a\u0631",
-      "\u0641\u0628\u0631\u0627\u064a\u0631",
-      "\u0645\u0627\u0631\u0633",
-      "\u0623\u0628\u0631\u064a\u0644",
-      "\u0645\u0627\u064a\u0648",
-      "\u064a\u0648\u0646\u064a\u0648",
-      "\u064a\u0648\u0644\u064a\u0648",
-      "\u0623\u063a\u0633\u0637\u0633",
-      "\u0633\u0628\u062a\u0645\u0628\u0631",
-      "\u0623\u0643\u062a\u0648\u0628\u0631",
-      "\u0646\u0648\u0641\u0645\u0628\u0631",
-      "\u062f\u064a\u0633\u0645\u0628\u0631"
-    ],
-    "SHORTDAY": [
-      "\u0627\u0644\u0623\u062d\u062f",
-      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
-      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
-      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
-      "\u0627\u0644\u062e\u0645\u064a\u0633",
-      "\u0627\u0644\u062c\u0645\u0639\u0629",
-      "\u0627\u0644\u0633\u0628\u062a"
-    ],
-    "SHORTMONTH": [
-      "\u064a\u0646\u0627\u064a\u0631",
-      "\u0641\u0628\u0631\u0627\u064a\u0631",
-      "\u0645\u0627\u0631\u0633",
-      "\u0623\u0628\u0631\u064a\u0644",
-      "\u0645\u0627\u064a\u0648",
-      "\u064a\u0648\u0646\u064a\u0648",
-      "\u064a\u0648\u0644\u064a\u0648",
-      "\u0623\u063a\u0633\u0637\u0633",
-      "\u0633\u0628\u062a\u0645\u0628\u0631",
-      "\u0623\u0643\u062a\u0648\u0628\u0631",
-      "\u0646\u0648\u0641\u0645\u0628\u0631",
-      "\u062f\u064a\u0633\u0645\u0628\u0631"
-    ],
-    "fullDate": "EEEE\u060c d MMMM\u060c y",
-    "longDate": "d MMMM\u060c y",
-    "medium": "dd\u200f/MM\u200f/yyyy h:mm:ss a",
-    "mediumDate": "dd\u200f/MM\u200f/yyyy",
-    "mediumTime": "h:mm:ss a",
-    "short": "d\u200f/M\u200f/yyyy h:mm a",
-    "shortDate": "d\u200f/M\u200f/yyyy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u00a3",
-    "DECIMAL_SEP": "\u066b",
-    "GROUP_SEP": "\u066c",
-    "PATTERNS": [
-      {
-        "gSize": 0,
-        "lgSize": 0,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "",
-        "negSuf": "-",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 0,
-        "lgSize": 0,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "\u00a4\u00a0",
-        "negSuf": "-",
-        "posPre": "\u00a4\u00a0",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "ar-ye",
-  "pluralCat": function (n) {  if (n == 0) {   return PLURAL_CATEGORY.ZERO;  }  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  if (n == 2) {   return PLURAL_CATEGORY.TWO;  }  if (n == (n | 0) && n % 100 >= 3 && n % 100 <= 10) {   return PLURAL_CATEGORY.FEW;  }  if (n == (n | 0) && n % 100 >= 11 && n % 100 <= 99) {   return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar.js
deleted file mode 100644
index 872194e..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u0635",
-      "\u0645"
-    ],
-    "DAY": [
-      "\u0627\u0644\u0623\u062d\u062f",
-      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
-      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
-      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
-      "\u0627\u0644\u062e\u0645\u064a\u0633",
-      "\u0627\u0644\u062c\u0645\u0639\u0629",
-      "\u0627\u0644\u0633\u0628\u062a"
-    ],
-    "MONTH": [
-      "\u064a\u0646\u0627\u064a\u0631",
-      "\u0641\u0628\u0631\u0627\u064a\u0631",
-      "\u0645\u0627\u0631\u0633",
-      "\u0623\u0628\u0631\u064a\u0644",
-      "\u0645\u0627\u064a\u0648",
-      "\u064a\u0648\u0646\u064a\u0648",
-      "\u064a\u0648\u0644\u064a\u0648",
-      "\u0623\u063a\u0633\u0637\u0633",
-      "\u0633\u0628\u062a\u0645\u0628\u0631",
-      "\u0623\u0643\u062a\u0648\u0628\u0631",
-      "\u0646\u0648\u0641\u0645\u0628\u0631",
-      "\u062f\u064a\u0633\u0645\u0628\u0631"
-    ],
-    "SHORTDAY": [
-      "\u0627\u0644\u0623\u062d\u062f",
-      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
-      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
-      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
-      "\u0627\u0644\u062e\u0645\u064a\u0633",
-      "\u0627\u0644\u062c\u0645\u0639\u0629",
-      "\u0627\u0644\u0633\u0628\u062a"
-    ],
-    "SHORTMONTH": [
-      "\u064a\u0646\u0627\u064a\u0631",
-      "\u0641\u0628\u0631\u0627\u064a\u0631",
-      "\u0645\u0627\u0631\u0633",
-      "\u0623\u0628\u0631\u064a\u0644",
-      "\u0645\u0627\u064a\u0648",
-      "\u064a\u0648\u0646\u064a\u0648",
-      "\u064a\u0648\u0644\u064a\u0648",
-      "\u0623\u063a\u0633\u0637\u0633",
-      "\u0633\u0628\u062a\u0645\u0628\u0631",
-      "\u0623\u0643\u062a\u0648\u0628\u0631",
-      "\u0646\u0648\u0641\u0645\u0628\u0631",
-      "\u062f\u064a\u0633\u0645\u0628\u0631"
-    ],
-    "fullDate": "EEEE\u060c d MMMM\u060c y",
-    "longDate": "d MMMM\u060c y",
-    "medium": "dd\u200f/MM\u200f/yyyy h:mm:ss a",
-    "mediumDate": "dd\u200f/MM\u200f/yyyy",
-    "mediumTime": "h:mm:ss a",
-    "short": "d\u200f/M\u200f/yyyy h:mm a",
-    "shortDate": "d\u200f/M\u200f/yyyy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u00a3",
-    "DECIMAL_SEP": "\u066b",
-    "GROUP_SEP": "\u066c",
-    "PATTERNS": [
-      {
-        "gSize": 0,
-        "lgSize": 0,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "",
-        "negSuf": "-",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 0,
-        "lgSize": 0,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "\u00a4\u00a0",
-        "negSuf": "-",
-        "posPre": "\u00a4\u00a0",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "ar",
-  "pluralCat": function (n) {  if (n == 0) {   return PLURAL_CATEGORY.ZERO;  }  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  if (n == 2) {   return PLURAL_CATEGORY.TWO;  }  if (n == (n | 0) && n % 100 >= 3 && n % 100 <= 10) {   return PLURAL_CATEGORY.FEW;  }  if (n == (n | 0) && n % 100 >= 11 && n % 100 <= 99) {   return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_bg-bg.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_bg-bg.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_bg-bg.js
deleted file mode 100644
index c88bb88..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_bg-bg.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u043f\u0440. \u043e\u0431.",
-      "\u0441\u043b. \u043e\u0431."
-    ],
-    "DAY": [
-      "\u043d\u0435\u0434\u0435\u043b\u044f",
-      "\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a",
-      "\u0432\u0442\u043e\u0440\u043d\u0438\u043a",
-      "\u0441\u0440\u044f\u0434\u0430",
-      "\u0447\u0435\u0442\u0432\u044a\u0440\u0442\u044a\u043a",
-      "\u043f\u0435\u0442\u044a\u043a",
-      "\u0441\u044a\u0431\u043e\u0442\u0430"
-    ],
-    "MONTH": [
-      "\u044f\u043d\u0443\u0430\u0440\u0438",
-      "\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438",
-      "\u043c\u0430\u0440\u0442",
-      "\u0430\u043f\u0440\u0438\u043b",
-      "\u043c\u0430\u0439",
-      "\u044e\u043d\u0438",
-      "\u044e\u043b\u0438",
-      "\u0430\u0432\u0433\u0443\u0441\u0442",
-      "\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438",
-      "\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438",
-      "\u043d\u043e\u0435\u043c\u0432\u0440\u0438",
-      "\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438"
-    ],
-    "SHORTDAY": [
-      "\u043d\u0434",
-      "\u043f\u043d",
-      "\u0432\u0442",
-      "\u0441\u0440",
-      "\u0447\u0442",
-      "\u043f\u0442",
-      "\u0441\u0431"
-    ],
-    "SHORTMONTH": [
-      "\u044f\u043d.",
-      "\u0444\u0435\u0432\u0440.",
-      "\u043c\u0430\u0440\u0442",
-      "\u0430\u043f\u0440.",
-      "\u043c\u0430\u0439",
-      "\u044e\u043d\u0438",
-      "\u044e\u043b\u0438",
-      "\u0430\u0432\u0433.",
-      "\u0441\u0435\u043f\u0442.",
-      "\u043e\u043a\u0442.",
-      "\u043d\u043e\u0435\u043c.",
-      "\u0434\u0435\u043a."
-    ],
-    "fullDate": "dd MMMM y, EEEE",
-    "longDate": "dd MMMM y",
-    "medium": "dd.MM.yyyy HH:mm:ss",
-    "mediumDate": "dd.MM.yyyy",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd.MM.yy HH:mm",
-    "shortDate": "dd.MM.yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "lev",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "bg-bg",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_bg.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_bg.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_bg.js
deleted file mode 100644
index db0865b..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_bg.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u043f\u0440. \u043e\u0431.",
-      "\u0441\u043b. \u043e\u0431."
-    ],
-    "DAY": [
-      "\u043d\u0435\u0434\u0435\u043b\u044f",
-      "\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a",
-      "\u0432\u0442\u043e\u0440\u043d\u0438\u043a",
-      "\u0441\u0440\u044f\u0434\u0430",
-      "\u0447\u0435\u0442\u0432\u044a\u0440\u0442\u044a\u043a",
-      "\u043f\u0435\u0442\u044a\u043a",
-      "\u0441\u044a\u0431\u043e\u0442\u0430"
-    ],
-    "MONTH": [
-      "\u044f\u043d\u0443\u0430\u0440\u0438",
-      "\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438",
-      "\u043c\u0430\u0440\u0442",
-      "\u0430\u043f\u0440\u0438\u043b",
-      "\u043c\u0430\u0439",
-      "\u044e\u043d\u0438",
-      "\u044e\u043b\u0438",
-      "\u0430\u0432\u0433\u0443\u0441\u0442",
-      "\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438",
-      "\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438",
-      "\u043d\u043e\u0435\u043c\u0432\u0440\u0438",
-      "\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438"
-    ],
-    "SHORTDAY": [
-      "\u043d\u0434",
-      "\u043f\u043d",
-      "\u0432\u0442",
-      "\u0441\u0440",
-      "\u0447\u0442",
-      "\u043f\u0442",
-      "\u0441\u0431"
-    ],
-    "SHORTMONTH": [
-      "\u044f\u043d.",
-      "\u0444\u0435\u0432\u0440.",
-      "\u043c\u0430\u0440\u0442",
-      "\u0430\u043f\u0440.",
-      "\u043c\u0430\u0439",
-      "\u044e\u043d\u0438",
-      "\u044e\u043b\u0438",
-      "\u0430\u0432\u0433.",
-      "\u0441\u0435\u043f\u0442.",
-      "\u043e\u043a\u0442.",
-      "\u043d\u043e\u0435\u043c.",
-      "\u0434\u0435\u043a."
-    ],
-    "fullDate": "dd MMMM y, EEEE",
-    "longDate": "dd MMMM y",
-    "medium": "dd.MM.yyyy HH:mm:ss",
-    "mediumDate": "dd.MM.yyyy",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd.MM.yy HH:mm",
-    "shortDate": "dd.MM.yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "lev",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "bg",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_bn-bd.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_bn-bd.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_bn-bd.js
deleted file mode 100644
index 980495c..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_bn-bd.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "am",
-      "pm"
-    ],
-    "DAY": [
-      "\u09b0\u09ac\u09bf\u09ac\u09be\u09b0",
-      "\u09b8\u09cb\u09ae\u09ac\u09be\u09b0",
-      "\u09ae\u0999\u09cd\u0997\u09b2\u09ac\u09be\u09b0",
-      "\u09ac\u09c1\u09a7\u09ac\u09be\u09b0",
-      "\u09ac\u09c3\u09b9\u09b7\u09cd\u09aa\u09a4\u09bf\u09ac\u09be\u09b0",
-      "\u09b6\u09c1\u0995\u09cd\u09b0\u09ac\u09be\u09b0",
-      "\u09b6\u09a8\u09bf\u09ac\u09be\u09b0"
-    ],
-    "MONTH": [
-      "\u099c\u09be\u09a8\u09c1\u09af\u09bc\u09be\u09b0\u09c0",
-      "\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09af\u09bc\u09be\u09b0\u09c0",
-      "\u09ae\u09be\u09b0\u09cd\u099a",
-      "\u098f\u09aa\u09cd\u09b0\u09bf\u09b2",
-      "\u09ae\u09c7",
-      "\u099c\u09c1\u09a8",
-      "\u099c\u09c1\u09b2\u09be\u0987",
-      "\u0986\u0997\u09b8\u09cd\u099f",
-      "\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0",
-      "\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0",
-      "\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0",
-      "\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0"
-    ],
-    "SHORTDAY": [
-      "\u09b0\u09ac\u09bf",
-      "\u09b8\u09cb\u09ae",
-      "\u09ae\u0999\u09cd\u0997\u09b2",
-      "\u09ac\u09c1\u09a7",
-      "\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf",
-      "\u09b6\u09c1\u0995\u09cd\u09b0",
-      "\u09b6\u09a8\u09bf"
-    ],
-    "SHORTMONTH": [
-      "\u099c\u09be\u09a8\u09c1\u09af\u09bc\u09be\u09b0\u09c0",
-      "\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09af\u09bc\u09be\u09b0\u09c0",
-      "\u09ae\u09be\u09b0\u09cd\u099a",
-      "\u098f\u09aa\u09cd\u09b0\u09bf\u09b2",
-      "\u09ae\u09c7",
-      "\u099c\u09c1\u09a8",
-      "\u099c\u09c1\u09b2\u09be\u0987",
-      "\u0986\u0997\u09b8\u09cd\u099f",
-      "\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0",
-      "\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0",
-      "\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0",
-      "\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0"
-    ],
-    "fullDate": "EEEE, d MMMM, y",
-    "longDate": "d MMMM, y",
-    "medium": "d MMM, y h:mm:ss a",
-    "mediumDate": "d MMM, y",
-    "mediumTime": "h:mm:ss a",
-    "short": "d/M/yy h:mm a",
-    "shortDate": "d/M/yy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u09f3",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 2,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 2,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(",
-        "negSuf": "\u00a4)",
-        "posPre": "",
-        "posSuf": "\u00a4"
-      }
-    ]
-  },
-  "id": "bn-bd",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_bn-in.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_bn-in.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_bn-in.js
deleted file mode 100644
index 0b41428..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_bn-in.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "am",
-      "pm"
-    ],
-    "DAY": [
-      "\u09b0\u09ac\u09bf\u09ac\u09be\u09b0",
-      "\u09b8\u09cb\u09ae\u09ac\u09be\u09b0",
-      "\u09ae\u0999\u09cd\u0997\u09b2\u09ac\u09be\u09b0",
-      "\u09ac\u09c1\u09a7\u09ac\u09be\u09b0",
-      "\u09ac\u09c3\u09b9\u09b7\u09cd\u09aa\u09a4\u09bf\u09ac\u09be\u09b0",
-      "\u09b6\u09c1\u0995\u09cd\u09b0\u09ac\u09be\u09b0",
-      "\u09b6\u09a8\u09bf\u09ac\u09be\u09b0"
-    ],
-    "MONTH": [
-      "\u099c\u09be\u09a8\u09c1\u09af\u09bc\u09be\u09b0\u09c0",
-      "\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09af\u09bc\u09be\u09b0\u09c0",
-      "\u09ae\u09be\u09b0\u09cd\u099a",
-      "\u098f\u09aa\u09cd\u09b0\u09bf\u09b2",
-      "\u09ae\u09c7",
-      "\u099c\u09c1\u09a8",
-      "\u099c\u09c1\u09b2\u09be\u0987",
-      "\u0986\u0997\u09b8\u09cd\u099f",
-      "\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0",
-      "\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0",
-      "\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0",
-      "\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0"
-    ],
-    "SHORTDAY": [
-      "\u09b0\u09ac\u09bf",
-      "\u09b8\u09cb\u09ae",
-      "\u09ae\u0999\u09cd\u0997\u09b2",
-      "\u09ac\u09c1\u09a7",
-      "\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf",
-      "\u09b6\u09c1\u0995\u09cd\u09b0",
-      "\u09b6\u09a8\u09bf"
-    ],
-    "SHORTMONTH": [
-      "\u099c\u09be\u09a8\u09c1\u09af\u09bc\u09be\u09b0\u09c0",
-      "\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09af\u09bc\u09be\u09b0\u09c0",
-      "\u09ae\u09be\u09b0\u09cd\u099a",
-      "\u098f\u09aa\u09cd\u09b0\u09bf\u09b2",
-      "\u09ae\u09c7",
-      "\u099c\u09c1\u09a8",
-      "\u099c\u09c1\u09b2\u09be\u0987",
-      "\u0986\u0997\u09b8\u09cd\u099f",
-      "\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0",
-      "\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0",
-      "\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0",
-      "\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0"
-    ],
-    "fullDate": "EEEE, d MMMM, y",
-    "longDate": "d MMMM, y",
-    "medium": "d MMM, y h:mm:ss a",
-    "mediumDate": "d MMM, y",
-    "mediumTime": "h:mm:ss a",
-    "short": "d/M/yy h:mm a",
-    "shortDate": "d/M/yy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u09f3",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 2,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 2,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(",
-        "negSuf": "\u00a4)",
-        "posPre": "",
-        "posSuf": "\u00a4"
-      }
-    ]
-  },
-  "id": "bn-in",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_bn.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_bn.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_bn.js
deleted file mode 100644
index 5cc14cc..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_bn.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "am",
-      "pm"
-    ],
-    "DAY": [
-      "\u09b0\u09ac\u09bf\u09ac\u09be\u09b0",
-      "\u09b8\u09cb\u09ae\u09ac\u09be\u09b0",
-      "\u09ae\u0999\u09cd\u0997\u09b2\u09ac\u09be\u09b0",
-      "\u09ac\u09c1\u09a7\u09ac\u09be\u09b0",
-      "\u09ac\u09c3\u09b9\u09b7\u09cd\u09aa\u09a4\u09bf\u09ac\u09be\u09b0",
-      "\u09b6\u09c1\u0995\u09cd\u09b0\u09ac\u09be\u09b0",
-      "\u09b6\u09a8\u09bf\u09ac\u09be\u09b0"
-    ],
-    "MONTH": [
-      "\u099c\u09be\u09a8\u09c1\u09af\u09bc\u09be\u09b0\u09c0",
-      "\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09af\u09bc\u09be\u09b0\u09c0",
-      "\u09ae\u09be\u09b0\u09cd\u099a",
-      "\u098f\u09aa\u09cd\u09b0\u09bf\u09b2",
-      "\u09ae\u09c7",
-      "\u099c\u09c1\u09a8",
-      "\u099c\u09c1\u09b2\u09be\u0987",
-      "\u0986\u0997\u09b8\u09cd\u099f",
-      "\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0",
-      "\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0",
-      "\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0",
-      "\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0"
-    ],
-    "SHORTDAY": [
-      "\u09b0\u09ac\u09bf",
-      "\u09b8\u09cb\u09ae",
-      "\u09ae\u0999\u09cd\u0997\u09b2",
-      "\u09ac\u09c1\u09a7",
-      "\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf",
-      "\u09b6\u09c1\u0995\u09cd\u09b0",
-      "\u09b6\u09a8\u09bf"
-    ],
-    "SHORTMONTH": [
-      "\u099c\u09be\u09a8\u09c1\u09af\u09bc\u09be\u09b0\u09c0",
-      "\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09af\u09bc\u09be\u09b0\u09c0",
-      "\u09ae\u09be\u09b0\u09cd\u099a",
-      "\u098f\u09aa\u09cd\u09b0\u09bf\u09b2",
-      "\u09ae\u09c7",
-      "\u099c\u09c1\u09a8",
-      "\u099c\u09c1\u09b2\u09be\u0987",
-      "\u0986\u0997\u09b8\u09cd\u099f",
-      "\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0",
-      "\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0",
-      "\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0",
-      "\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0"
-    ],
-    "fullDate": "EEEE, d MMMM, y",
-    "longDate": "d MMMM, y",
-    "medium": "d MMM, y h:mm:ss a",
-    "mediumDate": "d MMM, y",
-    "mediumTime": "h:mm:ss a",
-    "short": "d/M/yy h:mm a",
-    "shortDate": "d/M/yy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u09f3",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 2,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 2,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(",
-        "negSuf": "\u00a4)",
-        "posPre": "",
-        "posSuf": "\u00a4"
-      }
-    ]
-  },
-  "id": "bn",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ca-ad.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ca-ad.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ca-ad.js
deleted file mode 100644
index a7f1e6e..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ca-ad.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "a.m.",
-      "p.m."
-    ],
-    "DAY": [
-      "diumenge",
-      "dilluns",
-      "dimarts",
-      "dimecres",
-      "dijous",
-      "divendres",
-      "dissabte"
-    ],
-    "MONTH": [
-      "de gener",
-      "de febrer",
-      "de mar\u00e7",
-      "d\u2019abril",
-      "de maig",
-      "de juny",
-      "de juliol",
-      "d\u2019agost",
-      "de setembre",
-      "d\u2019octubre",
-      "de novembre",
-      "de desembre"
-    ],
-    "SHORTDAY": [
-      "dg.",
-      "dl.",
-      "dt.",
-      "dc.",
-      "dj.",
-      "dv.",
-      "ds."
-    ],
-    "SHORTMONTH": [
-      "de gen.",
-      "de febr.",
-      "de mar\u00e7",
-      "d\u2019abr.",
-      "de maig",
-      "de juny",
-      "de jul.",
-      "d\u2019ag.",
-      "de set.",
-      "d\u2019oct.",
-      "de nov.",
-      "de des."
-    ],
-    "fullDate": "EEEE d MMMM 'de' y",
-    "longDate": "d MMMM 'de' y",
-    "medium": "dd/MM/yyyy H:mm:ss",
-    "mediumDate": "dd/MM/yyyy",
-    "mediumTime": "H:mm:ss",
-    "short": "dd/MM/yy H:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "H:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "ca-ad",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ca-es.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ca-es.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ca-es.js
deleted file mode 100644
index b589a21..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ca-es.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "a.m.",
-      "p.m."
-    ],
-    "DAY": [
-      "diumenge",
-      "dilluns",
-      "dimarts",
-      "dimecres",
-      "dijous",
-      "divendres",
-      "dissabte"
-    ],
-    "MONTH": [
-      "de gener",
-      "de febrer",
-      "de mar\u00e7",
-      "d\u2019abril",
-      "de maig",
-      "de juny",
-      "de juliol",
-      "d\u2019agost",
-      "de setembre",
-      "d\u2019octubre",
-      "de novembre",
-      "de desembre"
-    ],
-    "SHORTDAY": [
-      "dg.",
-      "dl.",
-      "dt.",
-      "dc.",
-      "dj.",
-      "dv.",
-      "ds."
-    ],
-    "SHORTMONTH": [
-      "de gen.",
-      "de febr.",
-      "de mar\u00e7",
-      "d\u2019abr.",
-      "de maig",
-      "de juny",
-      "de jul.",
-      "d\u2019ag.",
-      "de set.",
-      "d\u2019oct.",
-      "de nov.",
-      "de des."
-    ],
-    "fullDate": "EEEE d MMMM 'de' y",
-    "longDate": "d MMMM 'de' y",
-    "medium": "dd/MM/yyyy H:mm:ss",
-    "mediumDate": "dd/MM/yyyy",
-    "mediumTime": "H:mm:ss",
-    "short": "dd/MM/yy H:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "H:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "ca-es",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ca.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ca.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ca.js
deleted file mode 100644
index 3bced03..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ca.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "a.m.",
-      "p.m."
-    ],
-    "DAY": [
-      "diumenge",
-      "dilluns",
-      "dimarts",
-      "dimecres",
-      "dijous",
-      "divendres",
-      "dissabte"
-    ],
-    "MONTH": [
-      "de gener",
-      "de febrer",
-      "de mar\u00e7",
-      "d\u2019abril",
-      "de maig",
-      "de juny",
-      "de juliol",
-      "d\u2019agost",
-      "de setembre",
-      "d\u2019octubre",
-      "de novembre",
-      "de desembre"
-    ],
-    "SHORTDAY": [
-      "dg.",
-      "dl.",
-      "dt.",
-      "dc.",
-      "dj.",
-      "dv.",
-      "ds."
-    ],
-    "SHORTMONTH": [
-      "de gen.",
-      "de febr.",
-      "de mar\u00e7",
-      "d\u2019abr.",
-      "de maig",
-      "de juny",
-      "de jul.",
-      "d\u2019ag.",
-      "de set.",
-      "d\u2019oct.",
-      "de nov.",
-      "de des."
-    ],
-    "fullDate": "EEEE d MMMM 'de' y",
-    "longDate": "d MMMM 'de' y",
-    "medium": "dd/MM/yyyy H:mm:ss",
-    "mediumDate": "dd/MM/yyyy",
-    "mediumTime": "H:mm:ss",
-    "short": "dd/MM/yy H:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "H:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "ca",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_cs-cz.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_cs-cz.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_cs-cz.js
deleted file mode 100644
index 3c88d94..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_cs-cz.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "dop.",
-      "odp."
-    ],
-    "DAY": [
-      "ned\u011ble",
-      "pond\u011bl\u00ed",
-      "\u00fater\u00fd",
-      "st\u0159eda",
-      "\u010dtvrtek",
-      "p\u00e1tek",
-      "sobota"
-    ],
-    "MONTH": [
-      "ledna",
-      "\u00fanora",
-      "b\u0159ezna",
-      "dubna",
-      "kv\u011btna",
-      "\u010dervna",
-      "\u010dervence",
-      "srpna",
-      "z\u00e1\u0159\u00ed",
-      "\u0159\u00edjna",
-      "listopadu",
-      "prosince"
-    ],
-    "SHORTDAY": [
-      "ne",
-      "po",
-      "\u00fat",
-      "st",
-      "\u010dt",
-      "p\u00e1",
-      "so"
-    ],
-    "SHORTMONTH": [
-      "Led",
-      "\u00dano",
-      "B\u0159e",
-      "Dub",
-      "Kv\u011b",
-      "\u010cer",
-      "\u010cvc",
-      "Srp",
-      "Z\u00e1\u0159",
-      "\u0158\u00edj",
-      "Lis",
-      "Pro"
-    ],
-    "fullDate": "EEEE, d. MMMM y",
-    "longDate": "d. MMMM y",
-    "medium": "d. M. yyyy H:mm:ss",
-    "mediumDate": "d. M. yyyy",
-    "mediumTime": "H:mm:ss",
-    "short": "dd.MM.yy H:mm",
-    "shortDate": "dd.MM.yy",
-    "shortTime": "H:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "K\u010d",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "cs-cz",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  if (n == (n | 0) && n >= 2 && n <= 4) {   return PLURAL_CATEGORY.FEW;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_cs.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_cs.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_cs.js
deleted file mode 100644
index c0a1e33..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_cs.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "dop.",
-      "odp."
-    ],
-    "DAY": [
-      "ned\u011ble",
-      "pond\u011bl\u00ed",
-      "\u00fater\u00fd",
-      "st\u0159eda",
-      "\u010dtvrtek",
-      "p\u00e1tek",
-      "sobota"
-    ],
-    "MONTH": [
-      "ledna",
-      "\u00fanora",
-      "b\u0159ezna",
-      "dubna",
-      "kv\u011btna",
-      "\u010dervna",
-      "\u010dervence",
-      "srpna",
-      "z\u00e1\u0159\u00ed",
-      "\u0159\u00edjna",
-      "listopadu",
-      "prosince"
-    ],
-    "SHORTDAY": [
-      "ne",
-      "po",
-      "\u00fat",
-      "st",
-      "\u010dt",
-      "p\u00e1",
-      "so"
-    ],
-    "SHORTMONTH": [
-      "Led",
-      "\u00dano",
-      "B\u0159e",
-      "Dub",
-      "Kv\u011b",
-      "\u010cer",
-      "\u010cvc",
-      "Srp",
-      "Z\u00e1\u0159",
-      "\u0158\u00edj",
-      "Lis",
-      "Pro"
-    ],
-    "fullDate": "EEEE, d. MMMM y",
-    "longDate": "d. MMMM y",
-    "medium": "d. M. yyyy H:mm:ss",
-    "mediumDate": "d. M. yyyy",
-    "mediumTime": "H:mm:ss",
-    "short": "dd.MM.yy H:mm",
-    "shortDate": "dd.MM.yy",
-    "shortTime": "H:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "K\u010d",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "cs",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  if (n == (n | 0) && n >= 2 && n <= 4) {   return PLURAL_CATEGORY.FEW;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_da-dk.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_da-dk.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_da-dk.js
deleted file mode 100644
index 399a1e4..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_da-dk.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "f.m.",
-      "e.m."
-    ],
-    "DAY": [
-      "s\u00f8ndag",
-      "mandag",
-      "tirsdag",
-      "onsdag",
-      "torsdag",
-      "fredag",
-      "l\u00f8rdag"
-    ],
-    "MONTH": [
-      "januar",
-      "februar",
-      "marts",
-      "april",
-      "maj",
-      "juni",
-      "juli",
-      "august",
-      "september",
-      "oktober",
-      "november",
-      "december"
-    ],
-    "SHORTDAY": [
-      "s\u00f8n",
-      "man",
-      "tir",
-      "ons",
-      "tor",
-      "fre",
-      "l\u00f8r"
-    ],
-    "SHORTMONTH": [
-      "jan.",
-      "feb.",
-      "mar.",
-      "apr.",
-      "maj",
-      "jun.",
-      "jul.",
-      "aug.",
-      "sep.",
-      "okt.",
-      "nov.",
-      "dec."
-    ],
-    "fullDate": "EEEE 'den' d. MMMM y",
-    "longDate": "d. MMM y",
-    "medium": "dd/MM/yyyy HH.mm.ss",
-    "mediumDate": "dd/MM/yyyy",
-    "mediumTime": "HH.mm.ss",
-    "short": "dd/MM/yy HH.mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH.mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "kr",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "da-dk",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_da.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_da.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_da.js
deleted file mode 100644
index 1d8bcbe..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_da.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "f.m.",
-      "e.m."
-    ],
-    "DAY": [
-      "s\u00f8ndag",
-      "mandag",
-      "tirsdag",
-      "onsdag",
-      "torsdag",
-      "fredag",
-      "l\u00f8rdag"
-    ],
-    "MONTH": [
-      "januar",
-      "februar",
-      "marts",
-      "april",
-      "maj",
-      "juni",
-      "juli",
-      "august",
-      "september",
-      "oktober",
-      "november",
-      "december"
-    ],
-    "SHORTDAY": [
-      "s\u00f8n",
-      "man",
-      "tir",
-      "ons",
-      "tor",
-      "fre",
-      "l\u00f8r"
-    ],
-    "SHORTMONTH": [
-      "jan.",
-      "feb.",
-      "mar.",
-      "apr.",
-      "maj",
-      "jun.",
-      "jul.",
-      "aug.",
-      "sep.",
-      "okt.",
-      "nov.",
-      "dec."
-    ],
-    "fullDate": "EEEE 'den' d. MMMM y",
-    "longDate": "d. MMM y",
-    "medium": "dd/MM/yyyy HH.mm.ss",
-    "mediumDate": "dd/MM/yyyy",
-    "mediumTime": "HH.mm.ss",
-    "short": "dd/MM/yy HH.mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH.mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "kr",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "da",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-at.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-at.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-at.js
deleted file mode 100644
index 257e7d8..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-at.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "vorm.",
-      "nachm."
-    ],
-    "DAY": [
-      "Sonntag",
-      "Montag",
-      "Dienstag",
-      "Mittwoch",
-      "Donnerstag",
-      "Freitag",
-      "Samstag"
-    ],
-    "MONTH": [
-      "J\u00e4nner",
-      "Februar",
-      "M\u00e4rz",
-      "April",
-      "Mai",
-      "Juni",
-      "Juli",
-      "August",
-      "September",
-      "Oktober",
-      "November",
-      "Dezember"
-    ],
-    "SHORTDAY": [
-      "So.",
-      "Mo.",
-      "Di.",
-      "Mi.",
-      "Do.",
-      "Fr.",
-      "Sa."
-    ],
-    "SHORTMONTH": [
-      "J\u00e4n",
-      "Feb",
-      "M\u00e4r",
-      "Apr",
-      "Mai",
-      "Jun",
-      "Jul",
-      "Aug",
-      "Sep",
-      "Okt",
-      "Nov",
-      "Dez"
-    ],
-    "fullDate": "EEEE, dd. MMMM y",
-    "longDate": "dd. MMMM y",
-    "medium": "dd.MM.yyyy HH:mm:ss",
-    "mediumDate": "dd.MM.yyyy",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd.MM.yy HH:mm",
-    "shortDate": "dd.MM.yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "\u00a4\u00a0-",
-        "negSuf": "",
-        "posPre": "\u00a4\u00a0",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "de-at",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-be.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-be.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-be.js
deleted file mode 100644
index d07143b..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-be.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "vorm.",
-      "nachm."
-    ],
-    "DAY": [
-      "Sonntag",
-      "Montag",
-      "Dienstag",
-      "Mittwoch",
-      "Donnerstag",
-      "Freitag",
-      "Samstag"
-    ],
-    "MONTH": [
-      "Januar",
-      "Februar",
-      "M\u00e4rz",
-      "April",
-      "Mai",
-      "Juni",
-      "Juli",
-      "August",
-      "September",
-      "Oktober",
-      "November",
-      "Dezember"
-    ],
-    "SHORTDAY": [
-      "So.",
-      "Mo.",
-      "Di.",
-      "Mi.",
-      "Do.",
-      "Fr.",
-      "Sa."
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Feb",
-      "M\u00e4r",
-      "Apr",
-      "Mai",
-      "Jun",
-      "Jul",
-      "Aug",
-      "Sep",
-      "Okt",
-      "Nov",
-      "Dez"
-    ],
-    "fullDate": "EEEE, d. MMMM y",
-    "longDate": "d. MMMM y",
-    "medium": "dd.MM.yyyy HH:mm:ss",
-    "mediumDate": "dd.MM.yyyy",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd.MM.yy HH:mm",
-    "shortDate": "dd.MM.yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "de-be",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-ch.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-ch.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-ch.js
deleted file mode 100644
index b249939..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-ch.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "vorm.",
-      "nachm."
-    ],
-    "DAY": [
-      "Sonntag",
-      "Montag",
-      "Dienstag",
-      "Mittwoch",
-      "Donnerstag",
-      "Freitag",
-      "Samstag"
-    ],
-    "MONTH": [
-      "Januar",
-      "Februar",
-      "M\u00e4rz",
-      "April",
-      "Mai",
-      "Juni",
-      "Juli",
-      "August",
-      "September",
-      "Oktober",
-      "November",
-      "Dezember"
-    ],
-    "SHORTDAY": [
-      "So.",
-      "Mo.",
-      "Di.",
-      "Mi.",
-      "Do.",
-      "Fr.",
-      "Sa."
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Feb",
-      "M\u00e4r",
-      "Apr",
-      "Mai",
-      "Jun",
-      "Jul",
-      "Aug",
-      "Sep",
-      "Okt",
-      "Nov",
-      "Dez"
-    ],
-    "fullDate": "EEEE, d. MMMM y",
-    "longDate": "d. MMMM y",
-    "medium": "dd.MM.yyyy HH:mm:ss",
-    "mediumDate": "dd.MM.yyyy",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd.MM.yy HH:mm",
-    "shortDate": "dd.MM.yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "CHF",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": "'",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "\u00a4-",
-        "negSuf": "",
-        "posPre": "\u00a4\u00a0",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "de-ch",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-de.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-de.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-de.js
deleted file mode 100644
index 58e7043..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-de.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "vorm.",
-      "nachm."
-    ],
-    "DAY": [
-      "Sonntag",
-      "Montag",
-      "Dienstag",
-      "Mittwoch",
-      "Donnerstag",
-      "Freitag",
-      "Samstag"
-    ],
-    "MONTH": [
-      "Januar",
-      "Februar",
-      "M\u00e4rz",
-      "April",
-      "Mai",
-      "Juni",
-      "Juli",
-      "August",
-      "September",
-      "Oktober",
-      "November",
-      "Dezember"
-    ],
-    "SHORTDAY": [
-      "So.",
-      "Mo.",
-      "Di.",
-      "Mi.",
-      "Do.",
-      "Fr.",
-      "Sa."
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Feb",
-      "M\u00e4r",
-      "Apr",
-      "Mai",
-      "Jun",
-      "Jul",
-      "Aug",
-      "Sep",
-      "Okt",
-      "Nov",
-      "Dez"
-    ],
-    "fullDate": "EEEE, d. MMMM y",
-    "longDate": "d. MMMM y",
-    "medium": "dd.MM.yyyy HH:mm:ss",
-    "mediumDate": "dd.MM.yyyy",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd.MM.yy HH:mm",
-    "shortDate": "dd.MM.yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "de-de",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-li.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-li.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-li.js
deleted file mode 100644
index 2886513..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-li.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "vorm.",
-      "nachm."
-    ],
-    "DAY": [
-      "Sonntag",
-      "Montag",
-      "Dienstag",
-      "Mittwoch",
-      "Donnerstag",
-      "Freitag",
-      "Samstag"
-    ],
-    "MONTH": [
-      "Januar",
-      "Februar",
-      "M\u00e4rz",
-      "April",
-      "Mai",
-      "Juni",
-      "Juli",
-      "August",
-      "September",
-      "Oktober",
-      "November",
-      "Dezember"
-    ],
-    "SHORTDAY": [
-      "So.",
-      "Mo.",
-      "Di.",
-      "Mi.",
-      "Do.",
-      "Fr.",
-      "Sa."
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Feb",
-      "M\u00e4r",
-      "Apr",
-      "Mai",
-      "Jun",
-      "Jul",
-      "Aug",
-      "Sep",
-      "Okt",
-      "Nov",
-      "Dez"
-    ],
-    "fullDate": "EEEE, d. MMMM y",
-    "longDate": "d. MMMM y",
-    "medium": "dd.MM.yyyy HH:mm:ss",
-    "mediumDate": "dd.MM.yyyy",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd.MM.yy HH:mm",
-    "shortDate": "dd.MM.yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "de-li",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-lu.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-lu.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-lu.js
deleted file mode 100644
index 61aa489..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-lu.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "vorm.",
-      "nachm."
-    ],
-    "DAY": [
-      "Sonntag",
-      "Montag",
-      "Dienstag",
-      "Mittwoch",
-      "Donnerstag",
-      "Freitag",
-      "Samstag"
-    ],
-    "MONTH": [
-      "Januar",
-      "Februar",
-      "M\u00e4rz",
-      "April",
-      "Mai",
-      "Juni",
-      "Juli",
-      "August",
-      "September",
-      "Oktober",
-      "November",
-      "Dezember"
-    ],
-    "SHORTDAY": [
-      "So.",
-      "Mo.",
-      "Di.",
-      "Mi.",
-      "Do.",
-      "Fr.",
-      "Sa."
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Feb",
-      "M\u00e4r",
-      "Apr",
-      "Mai",
-      "Jun",
-      "Jul",
-      "Aug",
-      "Sep",
-      "Okt",
-      "Nov",
-      "Dez"
-    ],
-    "fullDate": "EEEE, d. MMMM y",
-    "longDate": "d. MMMM y",
-    "medium": "dd.MM.yyyy HH:mm:ss",
-    "mediumDate": "dd.MM.yyyy",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd.MM.yy HH:mm",
-    "shortDate": "dd.MM.yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "de-lu",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de.js
deleted file mode 100644
index 6ea1f22..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "vorm.",
-      "nachm."
-    ],
-    "DAY": [
-      "Sonntag",
-      "Montag",
-      "Dienstag",
-      "Mittwoch",
-      "Donnerstag",
-      "Freitag",
-      "Samstag"
-    ],
-    "MONTH": [
-      "Januar",
-      "Februar",
-      "M\u00e4rz",
-      "April",
-      "Mai",
-      "Juni",
-      "Juli",
-      "August",
-      "September",
-      "Oktober",
-      "November",
-      "Dezember"
-    ],
-    "SHORTDAY": [
-      "So.",
-      "Mo.",
-      "Di.",
-      "Mi.",
-      "Do.",
-      "Fr.",
-      "Sa."
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Feb",
-      "M\u00e4r",
-      "Apr",
-      "Mai",
-      "Jun",
-      "Jul",
-      "Aug",
-      "Sep",
-      "Okt",
-      "Nov",
-      "Dez"
-    ],
-    "fullDate": "EEEE, d. MMMM y",
-    "longDate": "d. MMMM y",
-    "medium": "dd.MM.yyyy HH:mm:ss",
-    "mediumDate": "dd.MM.yyyy",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd.MM.yy HH:mm",
-    "shortDate": "dd.MM.yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "de",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_el-cy.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_el-cy.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_el-cy.js
deleted file mode 100644
index e7a4c94..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_el-cy.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u03c0.\u03bc.",
-      "\u03bc.\u03bc."
-    ],
-    "DAY": [
-      "\u039a\u03c5\u03c1\u03b9\u03b1\u03ba\u03ae",
-      "\u0394\u03b5\u03c5\u03c4\u03ad\u03c1\u03b1",
-      "\u03a4\u03c1\u03af\u03c4\u03b7",
-      "\u03a4\u03b5\u03c4\u03ac\u03c1\u03c4\u03b7",
-      "\u03a0\u03ad\u03bc\u03c0\u03c4\u03b7",
-      "\u03a0\u03b1\u03c1\u03b1\u03c3\u03ba\u03b5\u03c5\u03ae",
-      "\u03a3\u03ac\u03b2\u03b2\u03b1\u03c4\u03bf"
-    ],
-    "MONTH": [
-      "\u0399\u03b1\u03bd\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5",
-      "\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5",
-      "\u039c\u03b1\u03c1\u03c4\u03af\u03bf\u03c5",
-      "\u0391\u03c0\u03c1\u03b9\u03bb\u03af\u03bf\u03c5",
-      "\u039c\u03b1\u0390\u03bf\u03c5",
-      "\u0399\u03bf\u03c5\u03bd\u03af\u03bf\u03c5",
-      "\u0399\u03bf\u03c5\u03bb\u03af\u03bf\u03c5",
-      "\u0391\u03c5\u03b3\u03bf\u03cd\u03c3\u03c4\u03bf\u03c5",
-      "\u03a3\u03b5\u03c0\u03c4\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5",
-      "\u039f\u03ba\u03c4\u03c9\u03b2\u03c1\u03af\u03bf\u03c5",
-      "\u039d\u03bf\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5",
-      "\u0394\u03b5\u03ba\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5"
-    ],
-    "SHORTDAY": [
-      "\u039a\u03c5\u03c1",
-      "\u0394\u03b5\u03c5",
-      "\u03a4\u03c1\u03b9",
-      "\u03a4\u03b5\u03c4",
-      "\u03a0\u03b5\u03bc",
-      "\u03a0\u03b1\u03c1",
-      "\u03a3\u03b1\u03b2"
-    ],
-    "SHORTMONTH": [
-      "\u0399\u03b1\u03bd",
-      "\u03a6\u03b5\u03b2",
-      "\u039c\u03b1\u03c1",
-      "\u0391\u03c0\u03c1",
-      "\u039c\u03b1\u03ca",
-      "\u0399\u03bf\u03c5\u03bd",
-      "\u0399\u03bf\u03c5\u03bb",
-      "\u0391\u03c5\u03b3",
-      "\u03a3\u03b5\u03c0",
-      "\u039f\u03ba\u03c4",
-      "\u039d\u03bf\u03b5",
-      "\u0394\u03b5\u03ba"
-    ],
-    "fullDate": "EEEE, d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y h:mm:ss a",
-    "mediumDate": "d MMM y",
-    "mediumTime": "h:mm:ss a",
-    "short": "d/M/yy h:mm a",
-    "shortDate": "d/M/yy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "el-cy",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_el-gr.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_el-gr.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_el-gr.js
deleted file mode 100644
index 101464f..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_el-gr.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u03c0.\u03bc.",
-      "\u03bc.\u03bc."
-    ],
-    "DAY": [
-      "\u039a\u03c5\u03c1\u03b9\u03b1\u03ba\u03ae",
-      "\u0394\u03b5\u03c5\u03c4\u03ad\u03c1\u03b1",
-      "\u03a4\u03c1\u03af\u03c4\u03b7",
-      "\u03a4\u03b5\u03c4\u03ac\u03c1\u03c4\u03b7",
-      "\u03a0\u03ad\u03bc\u03c0\u03c4\u03b7",
-      "\u03a0\u03b1\u03c1\u03b1\u03c3\u03ba\u03b5\u03c5\u03ae",
-      "\u03a3\u03ac\u03b2\u03b2\u03b1\u03c4\u03bf"
-    ],
-    "MONTH": [
-      "\u0399\u03b1\u03bd\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5",
-      "\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5",
-      "\u039c\u03b1\u03c1\u03c4\u03af\u03bf\u03c5",
-      "\u0391\u03c0\u03c1\u03b9\u03bb\u03af\u03bf\u03c5",
-      "\u039c\u03b1\u0390\u03bf\u03c5",
-      "\u0399\u03bf\u03c5\u03bd\u03af\u03bf\u03c5",
-      "\u0399\u03bf\u03c5\u03bb\u03af\u03bf\u03c5",
-      "\u0391\u03c5\u03b3\u03bf\u03cd\u03c3\u03c4\u03bf\u03c5",
-      "\u03a3\u03b5\u03c0\u03c4\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5",
-      "\u039f\u03ba\u03c4\u03c9\u03b2\u03c1\u03af\u03bf\u03c5",
-      "\u039d\u03bf\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5",
-      "\u0394\u03b5\u03ba\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5"
-    ],
-    "SHORTDAY": [
-      "\u039a\u03c5\u03c1",
-      "\u0394\u03b5\u03c5",
-      "\u03a4\u03c1\u03b9",
-      "\u03a4\u03b5\u03c4",
-      "\u03a0\u03b5\u03bc",
-      "\u03a0\u03b1\u03c1",
-      "\u03a3\u03b1\u03b2"
-    ],
-    "SHORTMONTH": [
-      "\u0399\u03b1\u03bd",
-      "\u03a6\u03b5\u03b2",
-      "\u039c\u03b1\u03c1",
-      "\u0391\u03c0\u03c1",
-      "\u039c\u03b1\u03ca",
-      "\u0399\u03bf\u03c5\u03bd",
-      "\u0399\u03bf\u03c5\u03bb",
-      "\u0391\u03c5\u03b3",
-      "\u03a3\u03b5\u03c0",
-      "\u039f\u03ba\u03c4",
-      "\u039d\u03bf\u03b5",
-      "\u0394\u03b5\u03ba"
-    ],
-    "fullDate": "EEEE, d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y h:mm:ss a",
-    "mediumDate": "d MMM y",
-    "mediumTime": "h:mm:ss a",
-    "short": "d/M/yy h:mm a",
-    "shortDate": "d/M/yy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "el-gr",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_el.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_el.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_el.js
deleted file mode 100644
index 8433050..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_el.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u03c0.\u03bc.",
-      "\u03bc.\u03bc."
-    ],
-    "DAY": [
-      "\u039a\u03c5\u03c1\u03b9\u03b1\u03ba\u03ae",
-      "\u0394\u03b5\u03c5\u03c4\u03ad\u03c1\u03b1",
-      "\u03a4\u03c1\u03af\u03c4\u03b7",
-      "\u03a4\u03b5\u03c4\u03ac\u03c1\u03c4\u03b7",
-      "\u03a0\u03ad\u03bc\u03c0\u03c4\u03b7",
-      "\u03a0\u03b1\u03c1\u03b1\u03c3\u03ba\u03b5\u03c5\u03ae",
-      "\u03a3\u03ac\u03b2\u03b2\u03b1\u03c4\u03bf"
-    ],
-    "MONTH": [
-      "\u0399\u03b1\u03bd\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5",
-      "\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5",
-      "\u039c\u03b1\u03c1\u03c4\u03af\u03bf\u03c5",
-      "\u0391\u03c0\u03c1\u03b9\u03bb\u03af\u03bf\u03c5",
-      "\u039c\u03b1\u0390\u03bf\u03c5",
-      "\u0399\u03bf\u03c5\u03bd\u03af\u03bf\u03c5",
-      "\u0399\u03bf\u03c5\u03bb\u03af\u03bf\u03c5",
-      "\u0391\u03c5\u03b3\u03bf\u03cd\u03c3\u03c4\u03bf\u03c5",
-      "\u03a3\u03b5\u03c0\u03c4\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5",
-      "\u039f\u03ba\u03c4\u03c9\u03b2\u03c1\u03af\u03bf\u03c5",
-      "\u039d\u03bf\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5",
-      "\u0394\u03b5\u03ba\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5"
-    ],
-    "SHORTDAY": [
-      "\u039a\u03c5\u03c1",
-      "\u0394\u03b5\u03c5",
-      "\u03a4\u03c1\u03b9",
-      "\u03a4\u03b5\u03c4",
-      "\u03a0\u03b5\u03bc",
-      "\u03a0\u03b1\u03c1",
-      "\u03a3\u03b1\u03b2"
-    ],
-    "SHORTMONTH": [
-      "\u0399\u03b1\u03bd",
-      "\u03a6\u03b5\u03b2",
-      "\u039c\u03b1\u03c1",
-      "\u0391\u03c0\u03c1",
-      "\u039c\u03b1\u03ca",
-      "\u0399\u03bf\u03c5\u03bd",
-      "\u0399\u03bf\u03c5\u03bb",
-      "\u0391\u03c5\u03b3",
-      "\u03a3\u03b5\u03c0",
-      "\u039f\u03ba\u03c4",
-      "\u039d\u03bf\u03b5",
-      "\u0394\u03b5\u03ba"
-    ],
-    "fullDate": "EEEE, d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y h:mm:ss a",
-    "mediumDate": "d MMM y",
-    "mediumTime": "h:mm:ss a",
-    "short": "d/M/yy h:mm a",
-    "shortDate": "d/M/yy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "el",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-as.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-as.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-as.js
deleted file mode 100644
index 3cc5eb5..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-as.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "Sunday",
-      "Monday",
-      "Tuesday",
-      "Wednesday",
-      "Thursday",
-      "Friday",
-      "Saturday"
-    ],
-    "MONTH": [
-      "January",
-      "February",
-      "March",
-      "April",
-      "May",
-      "June",
-      "July",
-      "August",
-      "September",
-      "October",
-      "November",
-      "December"
-    ],
-    "SHORTDAY": [
-      "Sun",
-      "Mon",
-      "Tue",
-      "Wed",
-      "Thu",
-      "Fri",
-      "Sat"
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Feb",
-      "Mar",
-      "Apr",
-      "May",
-      "Jun",
-      "Jul",
-      "Aug",
-      "Sep",
-      "Oct",
-      "Nov",
-      "Dec"
-    ],
-    "fullDate": "EEEE, MMMM d, y",
-    "longDate": "MMMM d, y",
-    "medium": "MMM d, y h:mm:ss a",
-    "mediumDate": "MMM d, y",
-    "mediumTime": "h:mm:ss a",
-    "short": "M/d/yy h:mm a",
-    "shortDate": "M/d/yy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "$",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "en-as",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-au.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-au.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-au.js
deleted file mode 100644
index c09f4ae..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-au.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "Sunday",
-      "Monday",
-      "Tuesday",
-      "Wednesday",
-      "Thursday",
-      "Friday",
-      "Saturday"
-    ],
-    "MONTH": [
-      "January",
-      "February",
-      "March",
-      "April",
-      "May",
-      "June",
-      "July",
-      "August",
-      "September",
-      "October",
-      "November",
-      "December"
-    ],
-    "SHORTDAY": [
-      "Sun",
-      "Mon",
-      "Tue",
-      "Wed",
-      "Thu",
-      "Fri",
-      "Sat"
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Feb",
-      "Mar",
-      "Apr",
-      "May",
-      "Jun",
-      "Jul",
-      "Aug",
-      "Sep",
-      "Oct",
-      "Nov",
-      "Dec"
-    ],
-    "fullDate": "EEEE, d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "dd/MM/yyyy h:mm:ss a",
-    "mediumDate": "dd/MM/yyyy",
-    "mediumTime": "h:mm:ss a",
-    "short": "d/MM/yy h:mm a",
-    "shortDate": "d/MM/yy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "$",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "en-au",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-bb.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-bb.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-bb.js
deleted file mode 100644
index dcf93ad..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-bb.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "Sunday",
-      "Monday",
-      "Tuesday",
-      "Wednesday",
-      "Thursday",
-      "Friday",
-      "Saturday"
-    ],
-    "MONTH": [
-      "January",
-      "February",
-      "March",
-      "April",
-      "May",
-      "June",
-      "July",
-      "August",
-      "September",
-      "October",
-      "November",
-      "December"
-    ],
-    "SHORTDAY": [
-      "Sun",
-      "Mon",
-      "Tue",
-      "Wed",
-      "Thu",
-      "Fri",
-      "Sat"
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Feb",
-      "Mar",
-      "Apr",
-      "May",
-      "Jun",
-      "Jul",
-      "Aug",
-      "Sep",
-      "Oct",
-      "Nov",
-      "Dec"
-    ],
-    "fullDate": "EEEE, MMMM d, y",
-    "longDate": "MMMM d, y",
-    "medium": "MMM d, y h:mm:ss a",
-    "mediumDate": "MMM d, y",
-    "mediumTime": "h:mm:ss a",
-    "short": "M/d/yy h:mm a",
-    "shortDate": "M/d/yy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "$",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "en-bb",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file


[68/71] [abbrv] brooklyn-ui git commit: Merge remote-tracking branch 'apache-gh/master'

Posted by he...@apache.org.
Merge remote-tracking branch 'apache-gh/master'


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/commit/af222b07
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/tree/af222b07
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/diff/af222b07

Branch: refs/heads/0.7.0-incubating
Commit: af222b071a348799d9a5c7f521de325ecfb5eaef
Parents: 0ccf922 2f5d777
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Wed Jun 24 00:36:47 2015 -0700
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Wed Jun 24 00:36:47 2015 -0700

----------------------------------------------------------------------
 usage/jsgui/src/main/webapp/assets/css/base.css |  5 +++
 .../webapp/assets/js/util/brooklyn-utils.js     | 26 +++++++++++++++
 .../assets/js/view/application-add-wizard.js    |  4 +--
 .../main/webapp/assets/js/view/entity-config.js | 33 +++++++++-----------
 .../webapp/assets/js/view/entity-sensors.js     | 33 +++++++++-----------
 .../webapp/assets/tpl/apps/config-name.html     | 12 ++++++-
 .../webapp/assets/tpl/apps/sensor-name.html     | 12 ++++++-
 7 files changed, 85 insertions(+), 40 deletions(-)
----------------------------------------------------------------------



[13/71] [abbrv] brooklyn-ui git commit: Move mobile app to sandbox

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-vi.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-vi.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-vi.js
deleted file mode 100644
index ea7a166..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-vi.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "Sunday",
-      "Monday",
-      "Tuesday",
-      "Wednesday",
-      "Thursday",
-      "Friday",
-      "Saturday"
-    ],
-    "MONTH": [
-      "January",
-      "February",
-      "March",
-      "April",
-      "May",
-      "June",
-      "July",
-      "August",
-      "September",
-      "October",
-      "November",
-      "December"
-    ],
-    "SHORTDAY": [
-      "Sun",
-      "Mon",
-      "Tue",
-      "Wed",
-      "Thu",
-      "Fri",
-      "Sat"
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Feb",
-      "Mar",
-      "Apr",
-      "May",
-      "Jun",
-      "Jul",
-      "Aug",
-      "Sep",
-      "Oct",
-      "Nov",
-      "Dec"
-    ],
-    "fullDate": "EEEE, MMMM d, y",
-    "longDate": "MMMM d, y",
-    "medium": "MMM d, y h:mm:ss a",
-    "mediumDate": "MMM d, y",
-    "mediumTime": "h:mm:ss a",
-    "short": "M/d/yy h:mm a",
-    "shortDate": "M/d/yy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "$",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "en-vi",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-za.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-za.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-za.js
deleted file mode 100644
index 2896970..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-za.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "Sunday",
-      "Monday",
-      "Tuesday",
-      "Wednesday",
-      "Thursday",
-      "Friday",
-      "Saturday"
-    ],
-    "MONTH": [
-      "January",
-      "February",
-      "March",
-      "April",
-      "May",
-      "June",
-      "July",
-      "August",
-      "September",
-      "October",
-      "November",
-      "December"
-    ],
-    "SHORTDAY": [
-      "Sun",
-      "Mon",
-      "Tue",
-      "Wed",
-      "Thu",
-      "Fri",
-      "Sat"
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Feb",
-      "Mar",
-      "Apr",
-      "May",
-      "Jun",
-      "Jul",
-      "Aug",
-      "Sep",
-      "Oct",
-      "Nov",
-      "Dec"
-    ],
-    "fullDate": "EEEE dd MMMM y",
-    "longDate": "dd MMMM y",
-    "medium": "dd MMM y h:mm:ss a",
-    "mediumDate": "dd MMM y",
-    "mediumTime": "h:mm:ss a",
-    "short": "yyyy/MM/dd h:mm a",
-    "shortDate": "yyyy/MM/dd",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "R",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "en-za",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-zw.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-zw.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-zw.js
deleted file mode 100644
index 162da1e..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-zw.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "Sunday",
-      "Monday",
-      "Tuesday",
-      "Wednesday",
-      "Thursday",
-      "Friday",
-      "Saturday"
-    ],
-    "MONTH": [
-      "January",
-      "February",
-      "March",
-      "April",
-      "May",
-      "June",
-      "July",
-      "August",
-      "September",
-      "October",
-      "November",
-      "December"
-    ],
-    "SHORTDAY": [
-      "Sun",
-      "Mon",
-      "Tue",
-      "Wed",
-      "Thu",
-      "Fri",
-      "Sat"
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Feb",
-      "Mar",
-      "Apr",
-      "May",
-      "Jun",
-      "Jul",
-      "Aug",
-      "Sep",
-      "Oct",
-      "Nov",
-      "Dec"
-    ],
-    "fullDate": "EEEE dd MMMM y",
-    "longDate": "dd MMMM y",
-    "medium": "dd MMM,y h:mm:ss a",
-    "mediumDate": "dd MMM,y",
-    "mediumTime": "h:mm:ss a",
-    "short": "d/M/yyyy h:mm a",
-    "shortDate": "d/M/yyyy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "$",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "en-zw",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en.js
deleted file mode 100644
index ae07737..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "Sunday",
-      "Monday",
-      "Tuesday",
-      "Wednesday",
-      "Thursday",
-      "Friday",
-      "Saturday"
-    ],
-    "MONTH": [
-      "January",
-      "February",
-      "March",
-      "April",
-      "May",
-      "June",
-      "July",
-      "August",
-      "September",
-      "October",
-      "November",
-      "December"
-    ],
-    "SHORTDAY": [
-      "Sun",
-      "Mon",
-      "Tue",
-      "Wed",
-      "Thu",
-      "Fri",
-      "Sat"
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Feb",
-      "Mar",
-      "Apr",
-      "May",
-      "Jun",
-      "Jul",
-      "Aug",
-      "Sep",
-      "Oct",
-      "Nov",
-      "Dec"
-    ],
-    "fullDate": "EEEE, MMMM d, y",
-    "longDate": "MMMM d, y",
-    "medium": "MMM d, y h:mm:ss a",
-    "mediumDate": "MMM d, y",
-    "mediumTime": "h:mm:ss a",
-    "short": "M/d/yy h:mm a",
-    "shortDate": "M/d/yy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "$",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "en",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-419.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-419.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-419.js
deleted file mode 100644
index 91efc78..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-419.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "a.m.",
-      "p.m."
-    ],
-    "DAY": [
-      "domingo",
-      "lunes",
-      "martes",
-      "mi\u00e9rcoles",
-      "jueves",
-      "viernes",
-      "s\u00e1bado"
-    ],
-    "MONTH": [
-      "enero",
-      "febrero",
-      "marzo",
-      "abril",
-      "mayo",
-      "junio",
-      "julio",
-      "agosto",
-      "septiembre",
-      "octubre",
-      "noviembre",
-      "diciembre"
-    ],
-    "SHORTDAY": [
-      "dom",
-      "lun",
-      "mar",
-      "mi\u00e9",
-      "jue",
-      "vie",
-      "s\u00e1b"
-    ],
-    "SHORTMONTH": [
-      "ene",
-      "feb",
-      "mar",
-      "abr",
-      "may",
-      "jun",
-      "jul",
-      "ago",
-      "sep",
-      "oct",
-      "nov",
-      "dic"
-    ],
-    "fullDate": "EEEE, d 'de' MMMM 'de' y",
-    "longDate": "d 'de' MMMM 'de' y",
-    "medium": "dd/MM/yyyy HH:mm:ss",
-    "mediumDate": "dd/MM/yyyy",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "$",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "\u00a4-",
-        "negSuf": "",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "es-419",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ar.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ar.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ar.js
deleted file mode 100644
index 409a360..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ar.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "a.m.",
-      "p.m."
-    ],
-    "DAY": [
-      "domingo",
-      "lunes",
-      "martes",
-      "mi\u00e9rcoles",
-      "jueves",
-      "viernes",
-      "s\u00e1bado"
-    ],
-    "MONTH": [
-      "enero",
-      "febrero",
-      "marzo",
-      "abril",
-      "mayo",
-      "junio",
-      "julio",
-      "agosto",
-      "septiembre",
-      "octubre",
-      "noviembre",
-      "diciembre"
-    ],
-    "SHORTDAY": [
-      "dom",
-      "lun",
-      "mar",
-      "mi\u00e9",
-      "jue",
-      "vie",
-      "s\u00e1b"
-    ],
-    "SHORTMONTH": [
-      "ene",
-      "feb",
-      "mar",
-      "abr",
-      "may",
-      "jun",
-      "jul",
-      "ago",
-      "sep",
-      "oct",
-      "nov",
-      "dic"
-    ],
-    "fullDate": "EEEE, d 'de' MMMM 'de' y",
-    "longDate": "d 'de' MMMM 'de' y",
-    "medium": "dd/MM/yyyy HH:mm:ss",
-    "mediumDate": "dd/MM/yyyy",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "es-ar",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-bo.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-bo.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-bo.js
deleted file mode 100644
index fce7a39..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-bo.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "a.m.",
-      "p.m."
-    ],
-    "DAY": [
-      "domingo",
-      "lunes",
-      "martes",
-      "mi\u00e9rcoles",
-      "jueves",
-      "viernes",
-      "s\u00e1bado"
-    ],
-    "MONTH": [
-      "enero",
-      "febrero",
-      "marzo",
-      "abril",
-      "mayo",
-      "junio",
-      "julio",
-      "agosto",
-      "septiembre",
-      "octubre",
-      "noviembre",
-      "diciembre"
-    ],
-    "SHORTDAY": [
-      "dom",
-      "lun",
-      "mar",
-      "mi\u00e9",
-      "jue",
-      "vie",
-      "s\u00e1b"
-    ],
-    "SHORTMONTH": [
-      "ene",
-      "feb",
-      "mar",
-      "abr",
-      "may",
-      "jun",
-      "jul",
-      "ago",
-      "sep",
-      "oct",
-      "nov",
-      "dic"
-    ],
-    "fullDate": "EEEE, d 'de' MMMM 'de' y",
-    "longDate": "d 'de' MMMM 'de' y",
-    "medium": "dd/MM/yyyy HH:mm:ss",
-    "mediumDate": "dd/MM/yyyy",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "es-bo",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-cl.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-cl.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-cl.js
deleted file mode 100644
index 094dc29..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-cl.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "a.m.",
-      "p.m."
-    ],
-    "DAY": [
-      "domingo",
-      "lunes",
-      "martes",
-      "mi\u00e9rcoles",
-      "jueves",
-      "viernes",
-      "s\u00e1bado"
-    ],
-    "MONTH": [
-      "enero",
-      "febrero",
-      "marzo",
-      "abril",
-      "mayo",
-      "junio",
-      "julio",
-      "agosto",
-      "septiembre",
-      "octubre",
-      "noviembre",
-      "diciembre"
-    ],
-    "SHORTDAY": [
-      "dom",
-      "lun",
-      "mar",
-      "mi\u00e9",
-      "jue",
-      "vie",
-      "s\u00e1b"
-    ],
-    "SHORTMONTH": [
-      "ene",
-      "feb",
-      "mar",
-      "abr",
-      "may",
-      "jun",
-      "jul",
-      "ago",
-      "sep",
-      "oct",
-      "nov",
-      "dic"
-    ],
-    "fullDate": "EEEE, d 'de' MMMM 'de' y",
-    "longDate": "d 'de' MMMM 'de' y",
-    "medium": "dd-MM-yyyy H:mm:ss",
-    "mediumDate": "dd-MM-yyyy",
-    "mediumTime": "H:mm:ss",
-    "short": "dd-MM-yy H:mm",
-    "shortDate": "dd-MM-yy",
-    "shortTime": "H:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "es-cl",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-co.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-co.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-co.js
deleted file mode 100644
index 28bcf76..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-co.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "a.m.",
-      "p.m."
-    ],
-    "DAY": [
-      "domingo",
-      "lunes",
-      "martes",
-      "mi\u00e9rcoles",
-      "jueves",
-      "viernes",
-      "s\u00e1bado"
-    ],
-    "MONTH": [
-      "enero",
-      "febrero",
-      "marzo",
-      "abril",
-      "mayo",
-      "junio",
-      "julio",
-      "agosto",
-      "septiembre",
-      "octubre",
-      "noviembre",
-      "diciembre"
-    ],
-    "SHORTDAY": [
-      "dom",
-      "lun",
-      "mar",
-      "mi\u00e9",
-      "jue",
-      "vie",
-      "s\u00e1b"
-    ],
-    "SHORTMONTH": [
-      "ene",
-      "feb",
-      "mar",
-      "abr",
-      "may",
-      "jun",
-      "jul",
-      "ago",
-      "sep",
-      "oct",
-      "nov",
-      "dic"
-    ],
-    "fullDate": "EEEE, d 'de' MMMM 'de' y",
-    "longDate": "d 'de' MMMM 'de' y",
-    "medium": "d/MM/yyyy H:mm:ss",
-    "mediumDate": "d/MM/yyyy",
-    "mediumTime": "H:mm:ss",
-    "short": "d/MM/yy H:mm",
-    "shortDate": "d/MM/yy",
-    "shortTime": "H:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "es-co",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-cr.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-cr.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-cr.js
deleted file mode 100644
index 321ed8b..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-cr.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "a.m.",
-      "p.m."
-    ],
-    "DAY": [
-      "domingo",
-      "lunes",
-      "martes",
-      "mi\u00e9rcoles",
-      "jueves",
-      "viernes",
-      "s\u00e1bado"
-    ],
-    "MONTH": [
-      "enero",
-      "febrero",
-      "marzo",
-      "abril",
-      "mayo",
-      "junio",
-      "julio",
-      "agosto",
-      "septiembre",
-      "octubre",
-      "noviembre",
-      "diciembre"
-    ],
-    "SHORTDAY": [
-      "dom",
-      "lun",
-      "mar",
-      "mi\u00e9",
-      "jue",
-      "vie",
-      "s\u00e1b"
-    ],
-    "SHORTMONTH": [
-      "ene",
-      "feb",
-      "mar",
-      "abr",
-      "may",
-      "jun",
-      "jul",
-      "ago",
-      "sep",
-      "oct",
-      "nov",
-      "dic"
-    ],
-    "fullDate": "EEEE, d 'de' MMMM 'de' y",
-    "longDate": "d 'de' MMMM 'de' y",
-    "medium": "dd/MM/yyyy HH:mm:ss",
-    "mediumDate": "dd/MM/yyyy",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "es-cr",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-do.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-do.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-do.js
deleted file mode 100644
index 48f5014..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-do.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "a.m.",
-      "p.m."
-    ],
-    "DAY": [
-      "domingo",
-      "lunes",
-      "martes",
-      "mi\u00e9rcoles",
-      "jueves",
-      "viernes",
-      "s\u00e1bado"
-    ],
-    "MONTH": [
-      "enero",
-      "febrero",
-      "marzo",
-      "abril",
-      "mayo",
-      "junio",
-      "julio",
-      "agosto",
-      "septiembre",
-      "octubre",
-      "noviembre",
-      "diciembre"
-    ],
-    "SHORTDAY": [
-      "dom",
-      "lun",
-      "mar",
-      "mi\u00e9",
-      "jue",
-      "vie",
-      "s\u00e1b"
-    ],
-    "SHORTMONTH": [
-      "ene",
-      "feb",
-      "mar",
-      "abr",
-      "may",
-      "jun",
-      "jul",
-      "ago",
-      "sep",
-      "oct",
-      "nov",
-      "dic"
-    ],
-    "fullDate": "EEEE, d 'de' MMMM 'de' y",
-    "longDate": "d 'de' MMMM 'de' y",
-    "medium": "dd/MM/yyyy HH:mm:ss",
-    "mediumDate": "dd/MM/yyyy",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "es-do",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ea.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ea.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ea.js
deleted file mode 100644
index 39d0ea7..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ea.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "a.m.",
-      "p.m."
-    ],
-    "DAY": [
-      "domingo",
-      "lunes",
-      "martes",
-      "mi\u00e9rcoles",
-      "jueves",
-      "viernes",
-      "s\u00e1bado"
-    ],
-    "MONTH": [
-      "enero",
-      "febrero",
-      "marzo",
-      "abril",
-      "mayo",
-      "junio",
-      "julio",
-      "agosto",
-      "septiembre",
-      "octubre",
-      "noviembre",
-      "diciembre"
-    ],
-    "SHORTDAY": [
-      "dom",
-      "lun",
-      "mar",
-      "mi\u00e9",
-      "jue",
-      "vie",
-      "s\u00e1b"
-    ],
-    "SHORTMONTH": [
-      "ene",
-      "feb",
-      "mar",
-      "abr",
-      "may",
-      "jun",
-      "jul",
-      "ago",
-      "sep",
-      "oct",
-      "nov",
-      "dic"
-    ],
-    "fullDate": "EEEE, d 'de' MMMM 'de' y",
-    "longDate": "d 'de' MMMM 'de' y",
-    "medium": "dd/MM/yyyy HH:mm:ss",
-    "mediumDate": "dd/MM/yyyy",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "es-ea",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ec.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ec.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ec.js
deleted file mode 100644
index cc6eb76..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ec.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "a.m.",
-      "p.m."
-    ],
-    "DAY": [
-      "domingo",
-      "lunes",
-      "martes",
-      "mi\u00e9rcoles",
-      "jueves",
-      "viernes",
-      "s\u00e1bado"
-    ],
-    "MONTH": [
-      "enero",
-      "febrero",
-      "marzo",
-      "abril",
-      "mayo",
-      "junio",
-      "julio",
-      "agosto",
-      "septiembre",
-      "octubre",
-      "noviembre",
-      "diciembre"
-    ],
-    "SHORTDAY": [
-      "dom",
-      "lun",
-      "mar",
-      "mi\u00e9",
-      "jue",
-      "vie",
-      "s\u00e1b"
-    ],
-    "SHORTMONTH": [
-      "ene",
-      "feb",
-      "mar",
-      "abr",
-      "may",
-      "jun",
-      "jul",
-      "ago",
-      "sep",
-      "oct",
-      "nov",
-      "dic"
-    ],
-    "fullDate": "EEEE, d 'de' MMMM 'de' y",
-    "longDate": "d 'de' MMMM 'de' y",
-    "medium": "dd/MM/yyyy H:mm:ss",
-    "mediumDate": "dd/MM/yyyy",
-    "mediumTime": "H:mm:ss",
-    "short": "dd/MM/yy H:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "H:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "es-ec",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-es.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-es.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-es.js
deleted file mode 100644
index a72164f..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-es.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "a.m.",
-      "p.m."
-    ],
-    "DAY": [
-      "domingo",
-      "lunes",
-      "martes",
-      "mi\u00e9rcoles",
-      "jueves",
-      "viernes",
-      "s\u00e1bado"
-    ],
-    "MONTH": [
-      "enero",
-      "febrero",
-      "marzo",
-      "abril",
-      "mayo",
-      "junio",
-      "julio",
-      "agosto",
-      "septiembre",
-      "octubre",
-      "noviembre",
-      "diciembre"
-    ],
-    "SHORTDAY": [
-      "dom",
-      "lun",
-      "mar",
-      "mi\u00e9",
-      "jue",
-      "vie",
-      "s\u00e1b"
-    ],
-    "SHORTMONTH": [
-      "ene",
-      "feb",
-      "mar",
-      "abr",
-      "may",
-      "jun",
-      "jul",
-      "ago",
-      "sep",
-      "oct",
-      "nov",
-      "dic"
-    ],
-    "fullDate": "EEEE, d 'de' MMMM 'de' y",
-    "longDate": "d 'de' MMMM 'de' y",
-    "medium": "dd/MM/yyyy HH:mm:ss",
-    "mediumDate": "dd/MM/yyyy",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "es-es",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-gq.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-gq.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-gq.js
deleted file mode 100644
index c7bab0e..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-gq.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "a.m.",
-      "p.m."
-    ],
-    "DAY": [
-      "domingo",
-      "lunes",
-      "martes",
-      "mi\u00e9rcoles",
-      "jueves",
-      "viernes",
-      "s\u00e1bado"
-    ],
-    "MONTH": [
-      "enero",
-      "febrero",
-      "marzo",
-      "abril",
-      "mayo",
-      "junio",
-      "julio",
-      "agosto",
-      "septiembre",
-      "octubre",
-      "noviembre",
-      "diciembre"
-    ],
-    "SHORTDAY": [
-      "dom",
-      "lun",
-      "mar",
-      "mi\u00e9",
-      "jue",
-      "vie",
-      "s\u00e1b"
-    ],
-    "SHORTMONTH": [
-      "ene",
-      "feb",
-      "mar",
-      "abr",
-      "may",
-      "jun",
-      "jul",
-      "ago",
-      "sep",
-      "oct",
-      "nov",
-      "dic"
-    ],
-    "fullDate": "EEEE, d 'de' MMMM 'de' y",
-    "longDate": "d 'de' MMMM 'de' y",
-    "medium": "dd/MM/yyyy HH:mm:ss",
-    "mediumDate": "dd/MM/yyyy",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "es-gq",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-gt.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-gt.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-gt.js
deleted file mode 100644
index c6d1078..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-gt.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "a.m.",
-      "p.m."
-    ],
-    "DAY": [
-      "domingo",
-      "lunes",
-      "martes",
-      "mi\u00e9rcoles",
-      "jueves",
-      "viernes",
-      "s\u00e1bado"
-    ],
-    "MONTH": [
-      "enero",
-      "febrero",
-      "marzo",
-      "abril",
-      "mayo",
-      "junio",
-      "julio",
-      "agosto",
-      "septiembre",
-      "octubre",
-      "noviembre",
-      "diciembre"
-    ],
-    "SHORTDAY": [
-      "dom",
-      "lun",
-      "mar",
-      "mi\u00e9",
-      "jue",
-      "vie",
-      "s\u00e1b"
-    ],
-    "SHORTMONTH": [
-      "ene",
-      "feb",
-      "mar",
-      "abr",
-      "may",
-      "jun",
-      "jul",
-      "ago",
-      "sep",
-      "oct",
-      "nov",
-      "dic"
-    ],
-    "fullDate": "EEEE, d 'de' MMMM 'de' y",
-    "longDate": "d 'de' MMMM 'de' y",
-    "medium": "d/MM/yyyy HH:mm:ss",
-    "mediumDate": "d/MM/yyyy",
-    "mediumTime": "HH:mm:ss",
-    "short": "d/MM/yy HH:mm",
-    "shortDate": "d/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "es-gt",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-hn.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-hn.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-hn.js
deleted file mode 100644
index 9b9023a..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-hn.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "a.m.",
-      "p.m."
-    ],
-    "DAY": [
-      "domingo",
-      "lunes",
-      "martes",
-      "mi\u00e9rcoles",
-      "jueves",
-      "viernes",
-      "s\u00e1bado"
-    ],
-    "MONTH": [
-      "enero",
-      "febrero",
-      "marzo",
-      "abril",
-      "mayo",
-      "junio",
-      "julio",
-      "agosto",
-      "septiembre",
-      "octubre",
-      "noviembre",
-      "diciembre"
-    ],
-    "SHORTDAY": [
-      "dom",
-      "lun",
-      "mar",
-      "mi\u00e9",
-      "jue",
-      "vie",
-      "s\u00e1b"
-    ],
-    "SHORTMONTH": [
-      "ene",
-      "feb",
-      "mar",
-      "abr",
-      "may",
-      "jun",
-      "jul",
-      "ago",
-      "sep",
-      "oct",
-      "nov",
-      "dic"
-    ],
-    "fullDate": "EEEE dd 'de' MMMM 'de' y",
-    "longDate": "dd 'de' MMMM 'de' y",
-    "medium": "dd/MM/yyyy HH:mm:ss",
-    "mediumDate": "dd/MM/yyyy",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "es-hn",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ic.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ic.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ic.js
deleted file mode 100644
index 0f2bfa1..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ic.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "a.m.",
-      "p.m."
-    ],
-    "DAY": [
-      "domingo",
-      "lunes",
-      "martes",
-      "mi\u00e9rcoles",
-      "jueves",
-      "viernes",
-      "s\u00e1bado"
-    ],
-    "MONTH": [
-      "enero",
-      "febrero",
-      "marzo",
-      "abril",
-      "mayo",
-      "junio",
-      "julio",
-      "agosto",
-      "septiembre",
-      "octubre",
-      "noviembre",
-      "diciembre"
-    ],
-    "SHORTDAY": [
-      "dom",
-      "lun",
-      "mar",
-      "mi\u00e9",
-      "jue",
-      "vie",
-      "s\u00e1b"
-    ],
-    "SHORTMONTH": [
-      "ene",
-      "feb",
-      "mar",
-      "abr",
-      "may",
-      "jun",
-      "jul",
-      "ago",
-      "sep",
-      "oct",
-      "nov",
-      "dic"
-    ],
-    "fullDate": "EEEE, d 'de' MMMM 'de' y",
-    "longDate": "d 'de' MMMM 'de' y",
-    "medium": "dd/MM/yyyy HH:mm:ss",
-    "mediumDate": "dd/MM/yyyy",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "es-ic",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-mx.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-mx.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-mx.js
deleted file mode 100644
index 7eb4087..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-mx.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "a.m.",
-      "p.m."
-    ],
-    "DAY": [
-      "domingo",
-      "lunes",
-      "martes",
-      "mi\u00e9rcoles",
-      "jueves",
-      "viernes",
-      "s\u00e1bado"
-    ],
-    "MONTH": [
-      "enero",
-      "febrero",
-      "marzo",
-      "abril",
-      "mayo",
-      "junio",
-      "julio",
-      "agosto",
-      "septiembre",
-      "octubre",
-      "noviembre",
-      "diciembre"
-    ],
-    "SHORTDAY": [
-      "dom",
-      "lun",
-      "mar",
-      "mi\u00e9",
-      "jue",
-      "vie",
-      "s\u00e1b"
-    ],
-    "SHORTMONTH": [
-      "ene",
-      "feb",
-      "mar",
-      "abr",
-      "may",
-      "jun",
-      "jul",
-      "ago",
-      "sep",
-      "oct",
-      "nov",
-      "dic"
-    ],
-    "fullDate": "EEEE, d 'de' MMMM 'de' y",
-    "longDate": "d 'de' MMMM 'de' y",
-    "medium": "dd/MM/yyyy HH:mm:ss",
-    "mediumDate": "dd/MM/yyyy",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "es-mx",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ni.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ni.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ni.js
deleted file mode 100644
index a93b701..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ni.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "a.m.",
-      "p.m."
-    ],
-    "DAY": [
-      "domingo",
-      "lunes",
-      "martes",
-      "mi\u00e9rcoles",
-      "jueves",
-      "viernes",
-      "s\u00e1bado"
-    ],
-    "MONTH": [
-      "enero",
-      "febrero",
-      "marzo",
-      "abril",
-      "mayo",
-      "junio",
-      "julio",
-      "agosto",
-      "septiembre",
-      "octubre",
-      "noviembre",
-      "diciembre"
-    ],
-    "SHORTDAY": [
-      "dom",
-      "lun",
-      "mar",
-      "mi\u00e9",
-      "jue",
-      "vie",
-      "s\u00e1b"
-    ],
-    "SHORTMONTH": [
-      "ene",
-      "feb",
-      "mar",
-      "abr",
-      "may",
-      "jun",
-      "jul",
-      "ago",
-      "sep",
-      "oct",
-      "nov",
-      "dic"
-    ],
-    "fullDate": "EEEE, d 'de' MMMM 'de' y",
-    "longDate": "d 'de' MMMM 'de' y",
-    "medium": "dd/MM/yyyy HH:mm:ss",
-    "mediumDate": "dd/MM/yyyy",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "es-ni",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-pa.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-pa.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-pa.js
deleted file mode 100644
index 8496553..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-pa.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "a.m.",
-      "p.m."
-    ],
-    "DAY": [
-      "domingo",
-      "lunes",
-      "martes",
-      "mi\u00e9rcoles",
-      "jueves",
-      "viernes",
-      "s\u00e1bado"
-    ],
-    "MONTH": [
-      "enero",
-      "febrero",
-      "marzo",
-      "abril",
-      "mayo",
-      "junio",
-      "julio",
-      "agosto",
-      "septiembre",
-      "octubre",
-      "noviembre",
-      "diciembre"
-    ],
-    "SHORTDAY": [
-      "dom",
-      "lun",
-      "mar",
-      "mi\u00e9",
-      "jue",
-      "vie",
-      "s\u00e1b"
-    ],
-    "SHORTMONTH": [
-      "ene",
-      "feb",
-      "mar",
-      "abr",
-      "may",
-      "jun",
-      "jul",
-      "ago",
-      "sep",
-      "oct",
-      "nov",
-      "dic"
-    ],
-    "fullDate": "EEEE, d 'de' MMMM 'de' y",
-    "longDate": "d 'de' MMMM 'de' y",
-    "medium": "MM/dd/yyyy HH:mm:ss",
-    "mediumDate": "MM/dd/yyyy",
-    "mediumTime": "HH:mm:ss",
-    "short": "MM/dd/yy HH:mm",
-    "shortDate": "MM/dd/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "es-pa",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-pe.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-pe.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-pe.js
deleted file mode 100644
index b88b21f..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-pe.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "a.m.",
-      "p.m."
-    ],
-    "DAY": [
-      "domingo",
-      "lunes",
-      "martes",
-      "mi\u00e9rcoles",
-      "jueves",
-      "viernes",
-      "s\u00e1bado"
-    ],
-    "MONTH": [
-      "enero",
-      "febrero",
-      "marzo",
-      "abril",
-      "mayo",
-      "junio",
-      "julio",
-      "agosto",
-      "septiembre",
-      "octubre",
-      "noviembre",
-      "diciembre"
-    ],
-    "SHORTDAY": [
-      "dom",
-      "lun",
-      "mar",
-      "mi\u00e9",
-      "jue",
-      "vie",
-      "s\u00e1b"
-    ],
-    "SHORTMONTH": [
-      "ene",
-      "feb",
-      "mar",
-      "abr",
-      "may",
-      "jun",
-      "jul",
-      "ago",
-      "sep",
-      "oct",
-      "nov",
-      "dic"
-    ],
-    "fullDate": "EEEE, d 'de' MMMM 'de' y",
-    "longDate": "d 'de' MMMM 'de' y",
-    "medium": "dd/MM/yyyy HH:mm:ss",
-    "mediumDate": "dd/MM/yyyy",
-    "mediumTime": "HH:mm:ss",
-    "short": "d/MM/yy HH:mm",
-    "shortDate": "d/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "es-pe",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-pr.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-pr.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-pr.js
deleted file mode 100644
index 2917c36..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-pr.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "a.m.",
-      "p.m."
-    ],
-    "DAY": [
-      "domingo",
-      "lunes",
-      "martes",
-      "mi\u00e9rcoles",
-      "jueves",
-      "viernes",
-      "s\u00e1bado"
-    ],
-    "MONTH": [
-      "enero",
-      "febrero",
-      "marzo",
-      "abril",
-      "mayo",
-      "junio",
-      "julio",
-      "agosto",
-      "septiembre",
-      "octubre",
-      "noviembre",
-      "diciembre"
-    ],
-    "SHORTDAY": [
-      "dom",
-      "lun",
-      "mar",
-      "mi\u00e9",
-      "jue",
-      "vie",
-      "s\u00e1b"
-    ],
-    "SHORTMONTH": [
-      "ene",
-      "feb",
-      "mar",
-      "abr",
-      "may",
-      "jun",
-      "jul",
-      "ago",
-      "sep",
-      "oct",
-      "nov",
-      "dic"
-    ],
-    "fullDate": "EEEE, d 'de' MMMM 'de' y",
-    "longDate": "d 'de' MMMM 'de' y",
-    "medium": "MM/dd/yyyy HH:mm:ss",
-    "mediumDate": "MM/dd/yyyy",
-    "mediumTime": "HH:mm:ss",
-    "short": "MM/dd/yy HH:mm",
-    "shortDate": "MM/dd/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "es-pr",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-py.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-py.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-py.js
deleted file mode 100644
index 6253d14..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-py.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "a.m.",
-      "p.m."
-    ],
-    "DAY": [
-      "domingo",
-      "lunes",
-      "martes",
-      "mi\u00e9rcoles",
-      "jueves",
-      "viernes",
-      "s\u00e1bado"
-    ],
-    "MONTH": [
-      "enero",
-      "febrero",
-      "marzo",
-      "abril",
-      "mayo",
-      "junio",
-      "julio",
-      "agosto",
-      "septiembre",
-      "octubre",
-      "noviembre",
-      "diciembre"
-    ],
-    "SHORTDAY": [
-      "dom",
-      "lun",
-      "mar",
-      "mi\u00e9",
-      "jue",
-      "vie",
-      "s\u00e1b"
-    ],
-    "SHORTMONTH": [
-      "ene",
-      "feb",
-      "mar",
-      "abr",
-      "may",
-      "jun",
-      "jul",
-      "ago",
-      "sep",
-      "oct",
-      "nov",
-      "dic"
-    ],
-    "fullDate": "EEEE, d 'de' MMMM 'de' y",
-    "longDate": "d 'de' MMMM 'de' y",
-    "medium": "dd/MM/yyyy HH:mm:ss",
-    "mediumDate": "dd/MM/yyyy",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "es-py",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-sv.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-sv.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-sv.js
deleted file mode 100644
index 63f0756..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-sv.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "a.m.",
-      "p.m."
-    ],
-    "DAY": [
-      "domingo",
-      "lunes",
-      "martes",
-      "mi\u00e9rcoles",
-      "jueves",
-      "viernes",
-      "s\u00e1bado"
-    ],
-    "MONTH": [
-      "enero",
-      "febrero",
-      "marzo",
-      "abril",
-      "mayo",
-      "junio",
-      "julio",
-      "agosto",
-      "septiembre",
-      "octubre",
-      "noviembre",
-      "diciembre"
-    ],
-    "SHORTDAY": [
-      "dom",
-      "lun",
-      "mar",
-      "mi\u00e9",
-      "jue",
-      "vie",
-      "s\u00e1b"
-    ],
-    "SHORTMONTH": [
-      "ene",
-      "feb",
-      "mar",
-      "abr",
-      "may",
-      "jun",
-      "jul",
-      "ago",
-      "sep",
-      "oct",
-      "nov",
-      "dic"
-    ],
-    "fullDate": "EEEE, d 'de' MMMM 'de' y",
-    "longDate": "d 'de' MMMM 'de' y",
-    "medium": "dd/MM/yyyy HH:mm:ss",
-    "mediumDate": "dd/MM/yyyy",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "es-sv",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-us.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-us.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-us.js
deleted file mode 100644
index c929595..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-us.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "a.m.",
-      "p.m."
-    ],
-    "DAY": [
-      "domingo",
-      "lunes",
-      "martes",
-      "mi\u00e9rcoles",
-      "jueves",
-      "viernes",
-      "s\u00e1bado"
-    ],
-    "MONTH": [
-      "enero",
-      "febrero",
-      "marzo",
-      "abril",
-      "mayo",
-      "junio",
-      "julio",
-      "agosto",
-      "septiembre",
-      "octubre",
-      "noviembre",
-      "diciembre"
-    ],
-    "SHORTDAY": [
-      "dom",
-      "lun",
-      "mar",
-      "mi\u00e9",
-      "jue",
-      "vie",
-      "s\u00e1b"
-    ],
-    "SHORTMONTH": [
-      "ene",
-      "feb",
-      "mar",
-      "abr",
-      "may",
-      "jun",
-      "jul",
-      "ago",
-      "sep",
-      "oct",
-      "nov",
-      "dic"
-    ],
-    "fullDate": "EEEE, d 'de' MMMM 'de' y",
-    "longDate": "d 'de' MMMM 'de' y",
-    "medium": "MMM d, y h:mm:ss a",
-    "mediumDate": "MMM d, y",
-    "mediumTime": "h:mm:ss a",
-    "short": "M/d/yy h:mm a",
-    "shortDate": "M/d/yy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "es-us",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-uy.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-uy.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-uy.js
deleted file mode 100644
index f656e1a..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-uy.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "a.m.",
-      "p.m."
-    ],
-    "DAY": [
-      "domingo",
-      "lunes",
-      "martes",
-      "mi\u00e9rcoles",
-      "jueves",
-      "viernes",
-      "s\u00e1bado"
-    ],
-    "MONTH": [
-      "enero",
-      "febrero",
-      "marzo",
-      "abril",
-      "mayo",
-      "junio",
-      "julio",
-      "agosto",
-      "septiembre",
-      "octubre",
-      "noviembre",
-      "diciembre"
-    ],
-    "SHORTDAY": [
-      "dom",
-      "lun",
-      "mar",
-      "mi\u00e9",
-      "jue",
-      "vie",
-      "s\u00e1b"
-    ],
-    "SHORTMONTH": [
-      "ene",
-      "feb",
-      "mar",
-      "abr",
-      "may",
-      "jun",
-      "jul",
-      "ago",
-      "sep",
-      "oct",
-      "nov",
-      "dic"
-    ],
-    "fullDate": "EEEE, d 'de' MMMM 'de' y",
-    "longDate": "d 'de' MMMM 'de' y",
-    "medium": "dd/MM/yyyy HH:mm:ss",
-    "mediumDate": "dd/MM/yyyy",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "es-uy",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ve.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ve.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ve.js
deleted file mode 100644
index 6641877..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ve.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "a.m.",
-      "p.m."
-    ],
-    "DAY": [
-      "domingo",
-      "lunes",
-      "martes",
-      "mi\u00e9rcoles",
-      "jueves",
-      "viernes",
-      "s\u00e1bado"
-    ],
-    "MONTH": [
-      "enero",
-      "febrero",
-      "marzo",
-      "abril",
-      "mayo",
-      "junio",
-      "julio",
-      "agosto",
-      "septiembre",
-      "octubre",
-      "noviembre",
-      "diciembre"
-    ],
-    "SHORTDAY": [
-      "dom",
-      "lun",
-      "mar",
-      "mi\u00e9",
-      "jue",
-      "vie",
-      "s\u00e1b"
-    ],
-    "SHORTMONTH": [
-      "ene",
-      "feb",
-      "mar",
-      "abr",
-      "may",
-      "jun",
-      "jul",
-      "ago",
-      "sep",
-      "oct",
-      "nov",
-      "dic"
-    ],
-    "fullDate": "EEEE, d 'de' MMMM 'de' y",
-    "longDate": "d 'de' MMMM 'de' y",
-    "medium": "dd/MM/yyyy HH:mm:ss",
-    "mediumDate": "dd/MM/yyyy",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "es-ve",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es.js
deleted file mode 100644
index 91aba87..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "a.m.",
-      "p.m."
-    ],
-    "DAY": [
-      "domingo",
-      "lunes",
-      "martes",
-      "mi\u00e9rcoles",
-      "jueves",
-      "viernes",
-      "s\u00e1bado"
-    ],
-    "MONTH": [
-      "enero",
-      "febrero",
-      "marzo",
-      "abril",
-      "mayo",
-      "junio",
-      "julio",
-      "agosto",
-      "septiembre",
-      "octubre",
-      "noviembre",
-      "diciembre"
-    ],
-    "SHORTDAY": [
-      "dom",
-      "lun",
-      "mar",
-      "mi\u00e9",
-      "jue",
-      "vie",
-      "s\u00e1b"
-    ],
-    "SHORTMONTH": [
-      "ene",
-      "feb",
-      "mar",
-      "abr",
-      "may",
-      "jun",
-      "jul",
-      "ago",
-      "sep",
-      "oct",
-      "nov",
-      "dic"
-    ],
-    "fullDate": "EEEE, d 'de' MMMM 'de' y",
-    "longDate": "d 'de' MMMM 'de' y",
-    "medium": "dd/MM/yyyy HH:mm:ss",
-    "mediumDate": "dd/MM/yyyy",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "es",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_et-ee.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_et-ee.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_et-ee.js
deleted file mode 100644
index c763947..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_et-ee.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "enne keskp\u00e4eva",
-      "p\u00e4rast keskp\u00e4eva"
-    ],
-    "DAY": [
-      "p\u00fchap\u00e4ev",
-      "esmasp\u00e4ev",
-      "teisip\u00e4ev",
-      "kolmap\u00e4ev",
-      "neljap\u00e4ev",
-      "reede",
-      "laup\u00e4ev"
-    ],
-    "MONTH": [
-      "jaanuar",
-      "veebruar",
-      "m\u00e4rts",
-      "aprill",
-      "mai",
-      "juuni",
-      "juuli",
-      "august",
-      "september",
-      "oktoober",
-      "november",
-      "detsember"
-    ],
-    "SHORTDAY": [
-      "P",
-      "E",
-      "T",
-      "K",
-      "N",
-      "R",
-      "L"
-    ],
-    "SHORTMONTH": [
-      "jaan",
-      "veebr",
-      "m\u00e4rts",
-      "apr",
-      "mai",
-      "juuni",
-      "juuli",
-      "aug",
-      "sept",
-      "okt",
-      "nov",
-      "dets"
-    ],
-    "fullDate": "EEEE, d. MMMM y",
-    "longDate": "d. MMMM y",
-    "medium": "dd.MM.yyyy H:mm.ss",
-    "mediumDate": "dd.MM.yyyy",
-    "mediumTime": "H:mm.ss",
-    "short": "dd.MM.yy H:mm",
-    "shortDate": "dd.MM.yy",
-    "shortTime": "H:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 0,
-        "lgSize": 0,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(",
-        "negSuf": "\u00a4)",
-        "posPre": "",
-        "posSuf": "\u00a4"
-      }
-    ]
-  },
-  "id": "et-ee",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_et.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_et.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_et.js
deleted file mode 100644
index f996bba..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_et.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "enne keskp\u00e4eva",
-      "p\u00e4rast keskp\u00e4eva"
-    ],
-    "DAY": [
-      "p\u00fchap\u00e4ev",
-      "esmasp\u00e4ev",
-      "teisip\u00e4ev",
-      "kolmap\u00e4ev",
-      "neljap\u00e4ev",
-      "reede",
-      "laup\u00e4ev"
-    ],
-    "MONTH": [
-      "jaanuar",
-      "veebruar",
-      "m\u00e4rts",
-      "aprill",
-      "mai",
-      "juuni",
-      "juuli",
-      "august",
-      "september",
-      "oktoober",
-      "november",
-      "detsember"
-    ],
-    "SHORTDAY": [
-      "P",
-      "E",
-      "T",
-      "K",
-      "N",
-      "R",
-      "L"
-    ],
-    "SHORTMONTH": [
-      "jaan",
-      "veebr",
-      "m\u00e4rts",
-      "apr",
-      "mai",
-      "juuni",
-      "juuli",
-      "aug",
-      "sept",
-      "okt",
-      "nov",
-      "dets"
-    ],
-    "fullDate": "EEEE, d. MMMM y",
-    "longDate": "d. MMMM y",
-    "medium": "dd.MM.yyyy H:mm.ss",
-    "mediumDate": "dd.MM.yyyy",
-    "mediumTime": "H:mm.ss",
-    "short": "dd.MM.yy H:mm",
-    "shortDate": "dd.MM.yy",
-    "shortTime": "H:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 0,
-        "lgSize": 0,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(",
-        "negSuf": "\u00a4)",
-        "posPre": "",
-        "posSuf": "\u00a4"
-      }
-    ]
-  },
-  "id": "et",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_eu-es.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_eu-es.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_eu-es.js
deleted file mode 100644
index d5fe45a..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_eu-es.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "igandea",
-      "astelehena",
-      "asteartea",
-      "asteazkena",
-      "osteguna",
-      "ostirala",
-      "larunbata"
-    ],
-    "MONTH": [
-      "urtarrila",
-      "otsaila",
-      "martxoa",
-      "apirila",
-      "maiatza",
-      "ekaina",
-      "uztaila",
-      "abuztua",
-      "iraila",
-      "urria",
-      "azaroa",
-      "abendua"
-    ],
-    "SHORTDAY": [
-      "ig",
-      "al",
-      "as",
-      "az",
-      "og",
-      "or",
-      "lr"
-    ],
-    "SHORTMONTH": [
-      "urt",
-      "ots",
-      "mar",
-      "api",
-      "mai",
-      "eka",
-      "uzt",
-      "abu",
-      "ira",
-      "urr",
-      "aza",
-      "abe"
-    ],
-    "fullDate": "EEEE, y'eko' MMMM'ren' dd'a'",
-    "longDate": "y'eko' MMM'ren' dd'a'",
-    "medium": "y MMM d HH:mm:ss",
-    "mediumDate": "y MMM d",
-    "mediumTime": "HH:mm:ss",
-    "short": "yyyy-MM-dd HH:mm",
-    "shortDate": "yyyy-MM-dd",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(",
-        "negSuf": "\u00a0\u00a4)",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "eu-es",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_eu.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_eu.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_eu.js
deleted file mode 100644
index 67faf10..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_eu.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "igandea",
-      "astelehena",
-      "asteartea",
-      "asteazkena",
-      "osteguna",
-      "ostirala",
-      "larunbata"
-    ],
-    "MONTH": [
-      "urtarrila",
-      "otsaila",
-      "martxoa",
-      "apirila",
-      "maiatza",
-      "ekaina",
-      "uztaila",
-      "abuztua",
-      "iraila",
-      "urria",
-      "azaroa",
-      "abendua"
-    ],
-    "SHORTDAY": [
-      "ig",
-      "al",
-      "as",
-      "az",
-      "og",
-      "or",
-      "lr"
-    ],
-    "SHORTMONTH": [
-      "urt",
-      "ots",
-      "mar",
-      "api",
-      "mai",
-      "eka",
-      "uzt",
-      "abu",
-      "ira",
-      "urr",
-      "aza",
-      "abe"
-    ],
-    "fullDate": "EEEE, y'eko' MMMM'ren' dd'a'",
-    "longDate": "y'eko' MMM'ren' dd'a'",
-    "medium": "y MMM d HH:mm:ss",
-    "mediumDate": "y MMM d",
-    "mediumTime": "HH:mm:ss",
-    "short": "yyyy-MM-dd HH:mm",
-    "shortDate": "yyyy-MM-dd",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(",
-        "negSuf": "\u00a0\u00a4)",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "eu",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file


[28/71] [abbrv] brooklyn-ui git commit: Merge remote-tracking branch 'apache/master' into mobile-app

Posted by he...@apache.org.
Merge remote-tracking branch 'apache/master' into mobile-app


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/commit/d66da341
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/tree/d66da341
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/diff/d66da341

Branch: refs/heads/0.7.0-incubating
Commit: d66da34126c4c8cf8541a5efa9de2674f2c423a7
Parents: 2a6fa4e cbb51c2
Author: Sam Corbett <sa...@cloudsoftcorp.com>
Authored: Fri Feb 6 17:05:59 2015 +0000
Committer: Sam Corbett <sa...@cloudsoftcorp.com>
Committed: Fri Feb 6 17:05:59 2015 +0000

----------------------------------------------------------------------
 .gitattributes                                  |     6 +
 LICENSE                                         |   292 +
 NOTICE                                          |     5 +
 usage/jsgui/.gitignore                          |     1 +
 usage/jsgui/pom.xml                             |    59 +-
 usage/jsgui/src/build/.gitattributes            |     2 +
 usage/jsgui/src/main/dev/info.txt               |    15 -
 .../src/main/dev/js/libs/jquery.dataTables.js   | 12099 -----------------
 usage/jsgui/src/main/dev/js/libs/jquery.js      |  9404 -------------
 usage/jsgui/src/main/dev/js/libs/moment.js      |  1662 ---
 usage/jsgui/src/main/webapp/LICENSE             |   176 +
 usage/jsgui/src/main/webapp/assets/css/base.css |    78 +-
 .../src/main/webapp/assets/css/brooklyn.css     |     4 +
 .../assets/images/main-menu-tab-active.png      |   Bin 974 -> 1051 bytes
 .../assets/img/magnifying-glass-right-icon.png  |   Bin 0 -> 958 bytes
 usage/jsgui/src/main/webapp/assets/js/config.js |    13 +-
 .../jsgui/src/main/webapp/assets/js/libs/URI.js |     2 +-
 .../main/webapp/assets/js/libs/ZeroClipboard.js |     7 +-
 .../webapp/assets/js/libs/ZeroClipboard.swf     |   Bin 1891 -> 0 bytes
 .../src/main/webapp/assets/js/libs/bootstrap.js |    36 +-
 .../webapp/assets/js/libs/brooklyn-utils.js     |   115 -
 .../main/webapp/assets/js/libs/brooklyn-view.js |    74 -
 .../src/main/webapp/assets/js/libs/brooklyn.js  |    53 -
 .../assets/js/libs/dataTables.extensions.js     |     4 +-
 .../assets/js/libs/handlebars-1.0.rc.1.js       |     3 +
 .../webapp/assets/js/libs/jquery.slideto.min.js |     6 +
 .../webapp/assets/js/libs/json-formatter.js     |    88 -
 .../src/main/webapp/assets/js/libs/moment.js    |  1662 +++
 .../main/webapp/assets/js/libs/moment.min.js    |     6 -
 .../main/webapp/assets/js/libs/swagger-ui.js    |   334 +-
 .../src/main/webapp/assets/js/libs/swagger.js   |     2 +
 .../webapp/assets/js/model/entity-summary.js    |     1 +
 .../src/main/webapp/assets/js/model/entity.js   |    15 +
 .../src/main/webapp/assets/js/model/location.js |     6 +-
 .../main/webapp/assets/js/model/task-summary.js |     2 +-
 usage/jsgui/src/main/webapp/assets/js/router.js |    78 +-
 .../webapp/assets/js/util/brooklyn-utils.js     |   180 +
 .../main/webapp/assets/js/util/brooklyn-view.js |   352 +
 .../src/main/webapp/assets/js/util/brooklyn.js  |    86 +
 .../webapp/assets/js/view/activity-details.js   |    37 +-
 .../webapp/assets/js/view/add-child-invoke.js   |    61 +
 .../src/main/webapp/assets/js/view/apidoc.js    |     4 +-
 .../assets/js/view/application-add-wizard.js    |   126 +-
 .../webapp/assets/js/view/application-tree.js   |    20 +-
 .../js/view/catalog-add-location-modal.js       |   115 -
 .../src/main/webapp/assets/js/view/catalog.js   |   167 +-
 .../webapp/assets/js/view/change-name-invoke.js |    57 +
 .../webapp/assets/js/view/effector-invoke.js    |    12 +-
 .../webapp/assets/js/view/entity-activities.js  |     2 +-
 .../webapp/assets/js/view/entity-advanced.js    |   177 +
 .../main/webapp/assets/js/view/entity-config.js |   521 +-
 .../webapp/assets/js/view/entity-details.js     |    28 +-
 .../webapp/assets/js/view/entity-lifecycle.js   |    54 -
 .../webapp/assets/js/view/entity-policies.js    |    92 +-
 .../webapp/assets/js/view/entity-sensors.js     |    77 +-
 .../webapp/assets/js/view/entity-summary.js     |    93 +-
 .../webapp/assets/js/view/expunge-invoke.js     |    63 -
 .../main/webapp/assets/js/view/ha-summary.js    |    33 +-
 .../src/main/webapp/assets/js/view/home.js      |    36 +-
 .../assets/js/view/policy-config-invoke.js      |    83 +-
 .../main/webapp/assets/js/view/policy-new.js    |    82 +
 .../main/webapp/assets/js/view/script-groovy.js |     1 +
 .../src/main/webapp/assets/js/view/viewutils.js |    14 +-
 .../assets/tpl/app-add-wizard/create.html       |     8 +
 .../tpl/app-add-wizard/deploy-location-row.html |     4 +-
 .../webapp/assets/tpl/apps/add-child-modal.html |    35 +
 .../main/webapp/assets/tpl/apps/advanced.html   |    75 +
 .../assets/tpl/apps/change-name-modal.html      |    29 +
 .../webapp/assets/tpl/apps/config-name.html     |    24 +
 .../src/main/webapp/assets/tpl/apps/config.html |     6 +-
 .../main/webapp/assets/tpl/apps/details.html    |     6 +-
 .../webapp/assets/tpl/apps/expunge-modal.html   |    38 -
 .../main/webapp/assets/tpl/apps/lifecycle.html  |    40 -
 .../src/main/webapp/assets/tpl/apps/param.html  |     4 +-
 .../assets/tpl/apps/policy-config-modal.html    |    41 -
 .../main/webapp/assets/tpl/apps/policy-new.html |    37 +
 .../tpl/apps/policy-parameter-config.html       |    30 +
 .../src/main/webapp/assets/tpl/apps/policy.html |    10 +-
 .../main/webapp/assets/tpl/apps/summary.html    |    39 +-
 .../assets/tpl/catalog/add-catalog-entry.html   |     1 +
 .../assets/tpl/catalog/add-location-modal.html  |    66 -
 .../webapp/assets/tpl/catalog/add-location.html |    37 +
 .../assets/tpl/catalog/details-entity.html      |    49 +-
 .../assets/tpl/catalog/details-location.html    |     8 +-
 .../assets/tpl/catalog/location-config.html     |    24 -
 .../webapp/assets/tpl/catalog/nav-entry.html    |     2 +-
 .../src/main/webapp/assets/tpl/help/page.html   |     4 +-
 .../webapp/assets/tpl/home/applications.html    |    19 +-
 .../assets/tpl/home/server-not-ha-master.html   |     4 +-
 .../src/main/webapp/assets/tpl/labs/page.html   |     2 +-
 .../main/webapp/assets/tpl/lib/basic-modal.html |    29 +
 .../lib/config-key-type-value-input-pair.html   |    23 +
 .../main/webapp/assets/tpl/script/groovy.html   |     2 +-
 .../main/webapp/assets/tpl/script/swagger.html  |     3 +
 usage/jsgui/src/main/webapp/index.html          |     9 +-
 .../jsgui/BrooklynJavascriptGuiLauncher.java    |     6 +
 .../BrooklynJavascriptGuiLauncherTest.java      |    13 +-
 usage/jsgui/src/test/javascript/config.txt      |    27 +-
 .../src/test/javascript/specs/brooklyn-spec.js  |    54 +-
 .../javascript/specs/brooklyn-utils-spec.js     |    18 +
 .../src/test/javascript/specs/library-spec.js   |    12 +-
 .../src/test/javascript/specs/router-spec.js    |     8 +-
 .../specs/view/effector-invoke-spec.js          |     5 +
 .../specs/view/entity-details-spec.js           |     8 +-
 104 files changed, 5049 insertions(+), 24693 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/d66da341/usage/jsgui/src/main/webapp/index.html
----------------------------------------------------------------------


[56/71] [abbrv] brooklyn-ui git commit: show caution dialog if shutting down or if server is unresponsive

Posted by he...@apache.org.
show caution dialog if shutting down or if server is unresponsive

and include shutting down message in rest api.
tested that i can stop and restart the server and it nicely cycles through sequence of:
"shutting down", "server unreachable", then "starting up", then restores page.


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/commit/b06aa95a
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/tree/b06aa95a
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/diff/b06aa95a

Branch: refs/heads/0.7.0-incubating
Commit: b06aa95af8622e90160b619b4fa082c1aba43806
Parents: a889930
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Mon Apr 27 14:30:26 2015 +0100
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Mon Apr 27 14:30:26 2015 +0100

----------------------------------------------------------------------
 .../assets/js/model/server-extended-status.js   | 25 +++++++++++++++++---
 usage/jsgui/src/main/webapp/assets/js/router.js | 18 +++++++++++---
 .../src/main/webapp/assets/tpl/help/page.html   |  5 ++--
 .../webapp/assets/tpl/home/server-caution.html  | 18 +++++++++++---
 4 files changed, 55 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/b06aa95a/usage/jsgui/src/main/webapp/assets/js/model/server-extended-status.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/js/model/server-extended-status.js b/usage/jsgui/src/main/webapp/assets/js/model/server-extended-status.js
index 88e1ef2..2f5ccb3 100644
--- a/usage/jsgui/src/main/webapp/assets/js/model/server-extended-status.js
+++ b/usage/jsgui/src/main/webapp/assets/js/model/server-extended-status.js
@@ -22,6 +22,20 @@ define(["backbone", "brooklyn", "view/viewutils"], function (Backbone, Brooklyn,
         callbacks: [],
         loaded: false,
         url: "/v1/server/up/extended",
+        onError: function(thiz,xhr,modelish) {
+            log("ServerExtendedStatus: error contacting Brooklyn server");
+            log(xhr);
+            if (xhr.readyState==0) {
+                // server not contactable
+                this.loaded = false;
+            } else {
+                // server error
+                log(xhr.responseText);
+                // simply set unhealthy
+                this.set("healthy", false);
+            }
+            this.applyCallbacks();
+        },
         whenUp: function(f) {
             var that = this;
             if (this.isUp()) {
@@ -48,6 +62,7 @@ define(["backbone", "brooklyn", "view/viewutils"], function (Backbone, Brooklyn,
         },
 
         isUp: function() { return this.get("up") },
+        isShuttingDown: function() { return this.get("shuttingDown") },
         isHealthy: function() { return this.get("healthy") },
         isMaster: function() {
             ha = this.get("ha") || {};
@@ -70,15 +85,19 @@ define(["backbone", "brooklyn", "view/viewutils"], function (Backbone, Brooklyn,
                 return master.nodeUri;
             }
         },
+        applyCallbacks: function() {
+            var currentCallbacks = this.callbacks;
+            this.callbacks = [];
+            _.invoke(currentCallbacks, "apply");
+        },
     });
 
     var serverExtendedStatus = new ServerExtendedStatus();
     serverExtendedStatus.on("sync", function() {
         serverExtendedStatus.loaded = true;
-        var currentCallbacks = serverExtendedStatus.callbacks;
-        serverExtendedStatus.callbacks = [];
-        _.invoke(currentCallbacks, "apply");
+        serverExtendedStatus.applyCallbacks();
     });
+    serverExtendedStatus.on("error", serverExtendedStatus.onError);
 
     // Will returning the instance rather than the object be confusing?
     // It breaks the pattern used by all the other models.

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/b06aa95a/usage/jsgui/src/main/webapp/assets/js/router.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/js/router.js b/usage/jsgui/src/main/webapp/assets/js/router.js
index 4c7689a..8eb9c34 100644
--- a/usage/jsgui/src/main/webapp/assets/js/router.js
+++ b/usage/jsgui/src/main/webapp/assets/js/router.js
@@ -48,15 +48,22 @@ define([
             var state = {
                     loaded: serverStatus.loaded,
                     up: serverStatus.isUp(),
+                    shuttingDown: serverStatus.isShuttingDown(),
                     healthy: serverStatus.isHealthy(),
                     master: serverStatus.isMaster(),
                     masterUri: serverStatus.getMasterUri(),
                 };
-            if (state.loaded && state.up && state.healthy && state.master) return this.renderEmpty();
+            
+            if (state.loaded && state.up && state.healthy && state.master) {
+                // this div shows nothing in normal operation
+                return this.renderEmpty();
+            }
             
             this.warningActive = true;
             this.$el.html(this.template(state));
-                
+            $('#application-content').fadeTo(500,0.1);
+            this.$el.fadeTo(200,1);
+            
             $("#dismiss-standby-warning", this.$el).click(function() {
                 that.carryOnRegardless = true;
                 if (that.redirectPending) {
@@ -91,8 +98,13 @@ define([
             return this;
         },
         renderEmpty: function() {
+            var that = this;
             this.warningActive = false;
-            this.$el.empty();
+            this.$el.fadeTo(200,0.2, function() {
+                if (!that.warningActive)
+                    that.$el.empty();
+            });
+            $('#application-content').fadeTo(200,1);
             return this;
         },
         beforeClose: function() {

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/b06aa95a/usage/jsgui/src/main/webapp/assets/tpl/help/page.html
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/tpl/help/page.html b/usage/jsgui/src/main/webapp/assets/tpl/help/page.html
index 7d3ef0a..dc35b17 100644
--- a/usage/jsgui/src/main/webapp/assets/tpl/help/page.html
+++ b/usage/jsgui/src/main/webapp/assets/tpl/help/page.html
@@ -52,10 +52,11 @@ under the License.
                 url:"/v1/server/shutdown",
                 data: { stopAppsFirst: stopAppsFirst, shutdownTimeout: 0, requestTimeout: 0 },
                 success:function (data) {
-                    $('#help-page').fadeTo(500,0.1);
+                    // unfaded if server restarted, in router.js ServerCautionOverlay
+                    $('#application-content').fadeTo(500,0.1);
                 },
                 error: function(data) {
-                    $('#help-page')
+                    $('#application-content')
                         .fadeTo(200,0.2)
                         .delay(200).fadeTo(200,1)
                         .delay(200).fadeTo(100,0.2)

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/b06aa95a/usage/jsgui/src/main/webapp/assets/tpl/home/server-caution.html
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/tpl/home/server-caution.html b/usage/jsgui/src/main/webapp/assets/tpl/home/server-caution.html
index 0f767c0..94bd622 100644
--- a/usage/jsgui/src/main/webapp/assets/tpl/home/server-caution.html
+++ b/usage/jsgui/src/main/webapp/assets/tpl/home/server-caution.html
@@ -27,16 +27,28 @@ under the License.
         <p><strong>
             Connecting to server...</strong></p>
 
-            <center><img src="/assets/images/throbber.gif"/></center>        
         <p>
             No response from server (yet). 
-            Please check your network connection, or if you are on a slow connection simply be patient!
+            Please check your network connection and the URL, or if you are on a slow connection simply be patient!
             This dialog will disappear if and when the server responds.</p>
         
         <p><i>
             If you understand the risks, that information may be unavailable and operations may fail, 
             and wish to proceed regardless, click <a id="dismiss-standby-warning">here</a>.</i></p>
 
+<% } else if (shuttingDown) { %>
+        <p><strong>
+            Server shutting down...</strong></p>
+                    
+        <p>
+            The Brooklyn server is shutting down.
+            This dialog will disappear if and when the server is restarted at this address.
+            If in doubt, contact your system administrator.</p>
+        
+        <p><i>
+            If you understand the risks, that information may be unavailable and operations may fail, 
+            and wish to proceed regardless, click <a id="dismiss-standby-warning">here</a>.</i></p>
+
 <% } else if (!up) { %>
             <div style="float: right; position: relative; top: -45px; height: 0; overflow: visible;">
                 <img src="/assets/img/icon-status-starting.gif" width="60"/></div>
@@ -50,7 +62,7 @@ under the License.
             This dialog will disappear when the server is ready.</p>
         
         <p><i>
-            If you understand the risks, that information may be unavailable and operations may fail, 
+            If you understand the risks, that information may be incomplete and operations may fail, 
             and wish to proceed regardless, click <a id="dismiss-standby-warning">here</a>.</i></p>
 
 <% } else if (healthy && !master) { %>


[06/71] [abbrv] brooklyn-ui git commit: Move mobile app to sandbox

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate/angular-translate.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate/angular-translate.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate/angular-translate.js
deleted file mode 100644
index dbf3feb..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate/angular-translate.js
+++ /dev/null
@@ -1,883 +0,0 @@
-/*!
- * angular-translate - v2.2.0 - 2014-06-03
- * http://github.com/PascalPrecht/angular-translate
- * Copyright (c) 2014 ; Licensed MIT
- */
-angular.module('pascalprecht.translate', ['ng']).run([
-  '$translate',
-  function ($translate) {
-    var key = $translate.storageKey(), storage = $translate.storage();
-    if (storage) {
-      if (!storage.get(key)) {
-        if (angular.isString($translate.preferredLanguage())) {
-          $translate.use($translate.preferredLanguage());
-        } else {
-          storage.set(key, $translate.use());
-        }
-      } else {
-        $translate.use(storage.get(key));
-      }
-    } else if (angular.isString($translate.preferredLanguage())) {
-      $translate.use($translate.preferredLanguage());
-    }
-  }
-]);
-angular.module('pascalprecht.translate').provider('$translate', [
-  '$STORAGE_KEY',
-  function ($STORAGE_KEY) {
-    var $translationTable = {}, $preferredLanguage, $availableLanguageKeys = [], $languageKeyAliases, $fallbackLanguage, $fallbackWasString, $uses, $nextLang, $storageFactory, $storageKey = $STORAGE_KEY, $storagePrefix, $missingTranslationHandlerFactory, $interpolationFactory, $interpolatorFactories = [], $interpolationSanitizationStrategy = false, $loaderFactory, $cloakClassName = 'translate-cloak', $loaderOptions, $notFoundIndicatorLeft, $notFoundIndicatorRight, $postCompilingEnabled = false, NESTED_OBJECT_DELIMITER = '.';
-    var getLocale = function () {
-      var nav = window.navigator;
-      return (nav.language || nav.browserLanguage || nav.systemLanguage || nav.userLanguage || '').split('-').join('_');
-    };
-    var negotiateLocale = function (preferred) {
-      var avail = [], locale = angular.lowercase(preferred), i = 0, n = $availableLanguageKeys.length;
-      for (; i < n; i++) {
-        avail.push(angular.lowercase($availableLanguageKeys[i]));
-      }
-      if (avail.indexOf(locale) > -1) {
-        return preferred;
-      }
-      if ($languageKeyAliases) {
-        var alias;
-        for (var langKeyAlias in $languageKeyAliases) {
-          var hasWildcardKey = false;
-          var hasExactKey = $languageKeyAliases.hasOwnProperty(langKeyAlias) && angular.lowercase(langKeyAlias) === angular.lowercase(preferred);
-          if (langKeyAlias.slice(-1) === '*') {
-            hasWildcardKey = langKeyAlias.slice(0, -1) === preferred.slice(0, langKeyAlias.length - 1);
-          }
-          if (hasExactKey || hasWildcardKey) {
-            alias = $languageKeyAliases[langKeyAlias];
-            if (avail.indexOf(angular.lowercase(alias)) > -1) {
-              return alias;
-            }
-          }
-        }
-      }
-      var parts = preferred.split('_');
-      if (parts.length > 1 && avail.indexOf(angular.lowercase(parts[0])) > -1) {
-        return parts[0];
-      }
-      return preferred;
-    };
-    var translations = function (langKey, translationTable) {
-      if (!langKey && !translationTable) {
-        return $translationTable;
-      }
-      if (langKey && !translationTable) {
-        if (angular.isString(langKey)) {
-          return $translationTable[langKey];
-        }
-      } else {
-        if (!angular.isObject($translationTable[langKey])) {
-          $translationTable[langKey] = {};
-        }
-        angular.extend($translationTable[langKey], flatObject(translationTable));
-      }
-      return this;
-    };
-    this.translations = translations;
-    this.cloakClassName = function (name) {
-      if (!name) {
-        return $cloakClassName;
-      }
-      $cloakClassName = name;
-      return this;
-    };
-    var flatObject = function (data, path, result, prevKey) {
-      var key, keyWithPath, keyWithShortPath, val;
-      if (!path) {
-        path = [];
-      }
-      if (!result) {
-        result = {};
-      }
-      for (key in data) {
-        if (!data.hasOwnProperty(key)) {
-          continue;
-        }
-        val = data[key];
-        if (angular.isObject(val)) {
-          flatObject(val, path.concat(key), result, key);
-        } else {
-          keyWithPath = path.length ? '' + path.join(NESTED_OBJECT_DELIMITER) + NESTED_OBJECT_DELIMITER + key : key;
-          if (path.length && key === prevKey) {
-            keyWithShortPath = '' + path.join(NESTED_OBJECT_DELIMITER);
-            result[keyWithShortPath] = '@:' + keyWithPath;
-          }
-          result[keyWithPath] = val;
-        }
-      }
-      return result;
-    };
-    this.addInterpolation = function (factory) {
-      $interpolatorFactories.push(factory);
-      return this;
-    };
-    this.useMessageFormatInterpolation = function () {
-      return this.useInterpolation('$translateMessageFormatInterpolation');
-    };
-    this.useInterpolation = function (factory) {
-      $interpolationFactory = factory;
-      return this;
-    };
-    this.useSanitizeValueStrategy = function (value) {
-      $interpolationSanitizationStrategy = value;
-      return this;
-    };
-    this.preferredLanguage = function (langKey) {
-      if (langKey) {
-        $preferredLanguage = langKey;
-        return this;
-      }
-      return $preferredLanguage;
-    };
-    this.translationNotFoundIndicator = function (indicator) {
-      this.translationNotFoundIndicatorLeft(indicator);
-      this.translationNotFoundIndicatorRight(indicator);
-      return this;
-    };
-    this.translationNotFoundIndicatorLeft = function (indicator) {
-      if (!indicator) {
-        return $notFoundIndicatorLeft;
-      }
-      $notFoundIndicatorLeft = indicator;
-      return this;
-    };
-    this.translationNotFoundIndicatorRight = function (indicator) {
-      if (!indicator) {
-        return $notFoundIndicatorRight;
-      }
-      $notFoundIndicatorRight = indicator;
-      return this;
-    };
-    this.fallbackLanguage = function (langKey) {
-      fallbackStack(langKey);
-      return this;
-    };
-    var fallbackStack = function (langKey) {
-      if (langKey) {
-        if (angular.isString(langKey)) {
-          $fallbackWasString = true;
-          $fallbackLanguage = [langKey];
-        } else if (angular.isArray(langKey)) {
-          $fallbackWasString = false;
-          $fallbackLanguage = langKey;
-        }
-        if (angular.isString($preferredLanguage)) {
-          $fallbackLanguage.push($preferredLanguage);
-        }
-        return this;
-      } else {
-        if ($fallbackWasString) {
-          return $fallbackLanguage[0];
-        } else {
-          return $fallbackLanguage;
-        }
-      }
-    };
-    this.use = function (langKey) {
-      if (langKey) {
-        if (!$translationTable[langKey] && !$loaderFactory) {
-          throw new Error('$translateProvider couldn\'t find translationTable for langKey: \'' + langKey + '\'');
-        }
-        $uses = langKey;
-        return this;
-      }
-      return $uses;
-    };
-    var storageKey = function (key) {
-      if (!key) {
-        if ($storagePrefix) {
-          return $storagePrefix + $storageKey;
-        }
-        return $storageKey;
-      }
-      $storageKey = key;
-    };
-    this.storageKey = storageKey;
-    this.useUrlLoader = function (url) {
-      return this.useLoader('$translateUrlLoader', { url: url });
-    };
-    this.useStaticFilesLoader = function (options) {
-      return this.useLoader('$translateStaticFilesLoader', options);
-    };
-    this.useLoader = function (loaderFactory, options) {
-      $loaderFactory = loaderFactory;
-      $loaderOptions = options || {};
-      return this;
-    };
-    this.useLocalStorage = function () {
-      return this.useStorage('$translateLocalStorage');
-    };
-    this.useCookieStorage = function () {
-      return this.useStorage('$translateCookieStorage');
-    };
-    this.useStorage = function (storageFactory) {
-      $storageFactory = storageFactory;
-      return this;
-    };
-    this.storagePrefix = function (prefix) {
-      if (!prefix) {
-        return prefix;
-      }
-      $storagePrefix = prefix;
-      return this;
-    };
-    this.useMissingTranslationHandlerLog = function () {
-      return this.useMissingTranslationHandler('$translateMissingTranslationHandlerLog');
-    };
-    this.useMissingTranslationHandler = function (factory) {
-      $missingTranslationHandlerFactory = factory;
-      return this;
-    };
-    this.usePostCompiling = function (value) {
-      $postCompilingEnabled = !!value;
-      return this;
-    };
-    this.determinePreferredLanguage = function (fn) {
-      var locale = fn && angular.isFunction(fn) ? fn() : getLocale();
-      if (!$availableLanguageKeys.length) {
-        $preferredLanguage = locale;
-      } else {
-        $preferredLanguage = negotiateLocale(locale);
-      }
-      return this;
-    };
-    this.registerAvailableLanguageKeys = function (languageKeys, aliases) {
-      if (languageKeys) {
-        $availableLanguageKeys = languageKeys;
-        if (aliases) {
-          $languageKeyAliases = aliases;
-        }
-        return this;
-      }
-      return $availableLanguageKeys;
-    };
-    this.$get = [
-      '$log',
-      '$injector',
-      '$rootScope',
-      '$q',
-      function ($log, $injector, $rootScope, $q) {
-        var Storage, defaultInterpolator = $injector.get($interpolationFactory || '$translateDefaultInterpolation'), pendingLoader = false, interpolatorHashMap = {}, langPromises = {}, fallbackIndex, startFallbackIteration;
-        var $translate = function (translationId, interpolateParams, interpolationId) {
-          if (angular.isArray(translationId)) {
-            var translateAll = function (translationIds) {
-              var results = {};
-              var promises = [];
-              var translate = function (translationId) {
-                var deferred = $q.defer();
-                var regardless = function (value) {
-                  results[translationId] = value;
-                  deferred.resolve([
-                    translationId,
-                    value
-                  ]);
-                };
-                $translate(translationId, interpolateParams, interpolationId).then(regardless, regardless);
-                return deferred.promise;
-              };
-              for (var i = 0, c = translationIds.length; i < c; i++) {
-                promises.push(translate(translationIds[i]));
-              }
-              return $q.all(promises).then(function () {
-                return results;
-              });
-            };
-            return translateAll(translationId);
-          }
-          var deferred = $q.defer();
-          if (translationId) {
-            translationId = translationId.trim();
-          }
-          var promiseToWaitFor = function () {
-              var promise = $preferredLanguage ? langPromises[$preferredLanguage] : langPromises[$uses];
-              fallbackIndex = 0;
-              if ($storageFactory && !promise) {
-                var langKey = Storage.get($storageKey);
-                promise = langPromises[langKey];
-                if ($fallbackLanguage && $fallbackLanguage.length) {
-                  var index = indexOf($fallbackLanguage, langKey);
-                  fallbackIndex = index > -1 ? index += 1 : 0;
-                  $fallbackLanguage.push($preferredLanguage);
-                }
-              }
-              return promise;
-            }();
-          if (!promiseToWaitFor) {
-            determineTranslation(translationId, interpolateParams, interpolationId).then(deferred.resolve, deferred.reject);
-          } else {
-            promiseToWaitFor.then(function () {
-              determineTranslation(translationId, interpolateParams, interpolationId).then(deferred.resolve, deferred.reject);
-            }, deferred.reject);
-          }
-          return deferred.promise;
-        };
-        var indexOf = function (array, searchElement) {
-          for (var i = 0, len = array.length; i < len; i++) {
-            if (array[i] === searchElement) {
-              return i;
-            }
-          }
-          return -1;
-        };
-        var applyNotFoundIndicators = function (translationId) {
-          if ($notFoundIndicatorLeft) {
-            translationId = [
-              $notFoundIndicatorLeft,
-              translationId
-            ].join(' ');
-          }
-          if ($notFoundIndicatorRight) {
-            translationId = [
-              translationId,
-              $notFoundIndicatorRight
-            ].join(' ');
-          }
-          return translationId;
-        };
-        var useLanguage = function (key) {
-          $uses = key;
-          $rootScope.$emit('$translateChangeSuccess');
-          if ($storageFactory) {
-            Storage.set($translate.storageKey(), $uses);
-          }
-          defaultInterpolator.setLocale($uses);
-          angular.forEach(interpolatorHashMap, function (interpolator, id) {
-            interpolatorHashMap[id].setLocale($uses);
-          });
-          $rootScope.$emit('$translateChangeEnd');
-        };
-        var loadAsync = function (key) {
-          if (!key) {
-            throw 'No language key specified for loading.';
-          }
-          var deferred = $q.defer();
-          $rootScope.$emit('$translateLoadingStart');
-          pendingLoader = true;
-          $injector.get($loaderFactory)(angular.extend($loaderOptions, { key: key })).then(function (data) {
-            var translationTable = {};
-            $rootScope.$emit('$translateLoadingSuccess');
-            if (angular.isArray(data)) {
-              angular.forEach(data, function (table) {
-                angular.extend(translationTable, flatObject(table));
-              });
-            } else {
-              angular.extend(translationTable, flatObject(data));
-            }
-            pendingLoader = false;
-            deferred.resolve({
-              key: key,
-              table: translationTable
-            });
-            $rootScope.$emit('$translateLoadingEnd');
-          }, function (key) {
-            $rootScope.$emit('$translateLoadingError');
-            deferred.reject(key);
-            $rootScope.$emit('$translateLoadingEnd');
-          });
-          return deferred.promise;
-        };
-        if ($storageFactory) {
-          Storage = $injector.get($storageFactory);
-          if (!Storage.get || !Storage.set) {
-            throw new Error('Couldn\'t use storage \'' + $storageFactory + '\', missing get() or set() method!');
-          }
-        }
-        if (angular.isFunction(defaultInterpolator.useSanitizeValueStrategy)) {
-          defaultInterpolator.useSanitizeValueStrategy($interpolationSanitizationStrategy);
-        }
-        if ($interpolatorFactories.length) {
-          angular.forEach($interpolatorFactories, function (interpolatorFactory) {
-            var interpolator = $injector.get(interpolatorFactory);
-            interpolator.setLocale($preferredLanguage || $uses);
-            if (angular.isFunction(interpolator.useSanitizeValueStrategy)) {
-              interpolator.useSanitizeValueStrategy($interpolationSanitizationStrategy);
-            }
-            interpolatorHashMap[interpolator.getInterpolationIdentifier()] = interpolator;
-          });
-        }
-        var getTranslationTable = function (langKey) {
-          var deferred = $q.defer();
-          if ($translationTable.hasOwnProperty(langKey)) {
-            deferred.resolve($translationTable[langKey]);
-            return deferred.promise;
-          } else {
-            langPromises[langKey].then(function (data) {
-              translations(data.key, data.table);
-              deferred.resolve(data.table);
-            }, deferred.reject);
-          }
-          return deferred.promise;
-        };
-        var getFallbackTranslation = function (langKey, translationId, interpolateParams, Interpolator) {
-          var deferred = $q.defer();
-          getTranslationTable(langKey).then(function (translationTable) {
-            if (translationTable.hasOwnProperty(translationId)) {
-              Interpolator.setLocale(langKey);
-              deferred.resolve(Interpolator.interpolate(translationTable[translationId], interpolateParams));
-              Interpolator.setLocale($uses);
-            } else {
-              deferred.reject();
-            }
-          }, deferred.reject);
-          return deferred.promise;
-        };
-        var getFallbackTranslationInstant = function (langKey, translationId, interpolateParams, Interpolator) {
-          var result, translationTable = $translationTable[langKey];
-          if (translationTable.hasOwnProperty(translationId)) {
-            Interpolator.setLocale(langKey);
-            result = Interpolator.interpolate(translationTable[translationId], interpolateParams);
-            Interpolator.setLocale($uses);
-          }
-          return result;
-        };
-        var resolveForFallbackLanguage = function (fallbackLanguageIndex, translationId, interpolateParams, Interpolator) {
-          var deferred = $q.defer();
-          if (fallbackLanguageIndex < $fallbackLanguage.length) {
-            var langKey = $fallbackLanguage[fallbackLanguageIndex];
-            getFallbackTranslation(langKey, translationId, interpolateParams, Interpolator).then(function (translation) {
-              deferred.resolve(translation);
-            }, function () {
-              var nextFallbackLanguagePromise = resolveForFallbackLanguage(fallbackLanguageIndex + 1, translationId, interpolateParams, Interpolator);
-              deferred.resolve(nextFallbackLanguagePromise);
-            });
-          } else {
-            if ($missingTranslationHandlerFactory) {
-              var resultString = $injector.get($missingTranslationHandlerFactory)(translationId, $uses);
-              if (resultString !== undefined) {
-                deferred.resolve(resultString);
-              } else {
-                deferred.resolve(translationId);
-              }
-            } else {
-              deferred.resolve(translationId);
-            }
-          }
-          return deferred.promise;
-        };
-        var resolveForFallbackLanguageInstant = function (fallbackLanguageIndex, translationId, interpolateParams, Interpolator) {
-          var result;
-          if (fallbackLanguageIndex < $fallbackLanguage.length) {
-            var langKey = $fallbackLanguage[fallbackLanguageIndex];
-            result = getFallbackTranslationInstant(langKey, translationId, interpolateParams, Interpolator);
-            if (!result) {
-              result = resolveForFallbackLanguageInstant(fallbackLanguageIndex + 1, translationId, interpolateParams, Interpolator);
-            }
-          }
-          return result;
-        };
-        var fallbackTranslation = function (translationId, interpolateParams, Interpolator) {
-          return resolveForFallbackLanguage(startFallbackIteration > 0 ? startFallbackIteration : fallbackIndex, translationId, interpolateParams, Interpolator);
-        };
-        var fallbackTranslationInstant = function (translationId, interpolateParams, Interpolator) {
-          return resolveForFallbackLanguageInstant(startFallbackIteration > 0 ? startFallbackIteration : fallbackIndex, translationId, interpolateParams, Interpolator);
-        };
-        var determineTranslation = function (translationId, interpolateParams, interpolationId) {
-          var deferred = $q.defer();
-          var table = $uses ? $translationTable[$uses] : $translationTable, Interpolator = interpolationId ? interpolatorHashMap[interpolationId] : defaultInterpolator;
-          if (table && table.hasOwnProperty(translationId)) {
-            var translation = table[translationId];
-            if (translation.substr(0, 2) === '@:') {
-              $translate(translation.substr(2), interpolateParams, interpolationId).then(deferred.resolve, deferred.reject);
-            } else {
-              deferred.resolve(Interpolator.interpolate(translation, interpolateParams));
-            }
-          } else {
-            if ($missingTranslationHandlerFactory && !pendingLoader) {
-              $injector.get($missingTranslationHandlerFactory)(translationId, $uses);
-            }
-            if ($uses && $fallbackLanguage && $fallbackLanguage.length) {
-              fallbackTranslation(translationId, interpolateParams, Interpolator).then(function (translation) {
-                deferred.resolve(translation);
-              }, function (_translationId) {
-                deferred.reject(applyNotFoundIndicators(_translationId));
-              });
-            } else {
-              deferred.reject(applyNotFoundIndicators(translationId));
-            }
-          }
-          return deferred.promise;
-        };
-        var determineTranslationInstant = function (translationId, interpolateParams, interpolationId) {
-          var result, table = $uses ? $translationTable[$uses] : $translationTable, Interpolator = interpolationId ? interpolatorHashMap[interpolationId] : defaultInterpolator;
-          if (table && table.hasOwnProperty(translationId)) {
-            var translation = table[translationId];
-            if (translation.substr(0, 2) === '@:') {
-              result = determineTranslationInstant(translation.substr(2), interpolateParams, interpolationId);
-            } else {
-              result = Interpolator.interpolate(translation, interpolateParams);
-            }
-          } else {
-            if ($missingTranslationHandlerFactory && !pendingLoader) {
-              $injector.get($missingTranslationHandlerFactory)(translationId, $uses);
-            }
-            if ($uses && $fallbackLanguage && $fallbackLanguage.length) {
-              fallbackIndex = 0;
-              result = fallbackTranslationInstant(translationId, interpolateParams, Interpolator);
-            } else {
-              result = applyNotFoundIndicators(translationId);
-            }
-          }
-          return result;
-        };
-        $translate.preferredLanguage = function () {
-          return $preferredLanguage;
-        };
-        $translate.cloakClassName = function () {
-          return $cloakClassName;
-        };
-        $translate.fallbackLanguage = function (langKey) {
-          if (langKey !== undefined && langKey !== null) {
-            fallbackStack(langKey);
-            if ($loaderFactory) {
-              if ($fallbackLanguage && $fallbackLanguage.length) {
-                for (var i = 0, len = $fallbackLanguage.length; i < len; i++) {
-                  if (!langPromises[$fallbackLanguage[i]]) {
-                    langPromises[$fallbackLanguage[i]] = loadAsync($fallbackLanguage[i]);
-                  }
-                }
-              }
-            }
-            $translate.use($translate.use());
-          }
-          if ($fallbackWasString) {
-            return $fallbackLanguage[0];
-          } else {
-            return $fallbackLanguage;
-          }
-        };
-        $translate.useFallbackLanguage = function (langKey) {
-          if (langKey !== undefined && langKey !== null) {
-            if (!langKey) {
-              startFallbackIteration = 0;
-            } else {
-              var langKeyPosition = indexOf($fallbackLanguage, langKey);
-              if (langKeyPosition > -1) {
-                startFallbackIteration = langKeyPosition;
-              }
-            }
-          }
-        };
-        $translate.proposedLanguage = function () {
-          return $nextLang;
-        };
-        $translate.storage = function () {
-          return Storage;
-        };
-        $translate.use = function (key) {
-          if (!key) {
-            return $uses;
-          }
-          var deferred = $q.defer();
-          $rootScope.$emit('$translateChangeStart');
-          var aliasedKey = negotiateLocale(key);
-          if (aliasedKey) {
-            key = aliasedKey;
-          }
-          if (!$translationTable[key] && $loaderFactory) {
-            $nextLang = key;
-            langPromises[key] = loadAsync(key).then(function (translation) {
-              translations(translation.key, translation.table);
-              deferred.resolve(translation.key);
-              if ($nextLang === key) {
-                useLanguage(translation.key);
-                $nextLang = undefined;
-              }
-            }, function (key) {
-              $nextLang = undefined;
-              $rootScope.$emit('$translateChangeError');
-              deferred.reject(key);
-              $rootScope.$emit('$translateChangeEnd');
-            });
-          } else {
-            deferred.resolve(key);
-            useLanguage(key);
-          }
-          return deferred.promise;
-        };
-        $translate.storageKey = function () {
-          return storageKey();
-        };
-        $translate.isPostCompilingEnabled = function () {
-          return $postCompilingEnabled;
-        };
-        $translate.refresh = function (langKey) {
-          if (!$loaderFactory) {
-            throw new Error('Couldn\'t refresh translation table, no loader registered!');
-          }
-          var deferred = $q.defer();
-          function resolve() {
-            deferred.resolve();
-            $rootScope.$emit('$translateRefreshEnd');
-          }
-          function reject() {
-            deferred.reject();
-            $rootScope.$emit('$translateRefreshEnd');
-          }
-          $rootScope.$emit('$translateRefreshStart');
-          if (!langKey) {
-            var tables = [];
-            if ($fallbackLanguage && $fallbackLanguage.length) {
-              for (var i = 0, len = $fallbackLanguage.length; i < len; i++) {
-                tables.push(loadAsync($fallbackLanguage[i]));
-              }
-            }
-            if ($uses) {
-              tables.push(loadAsync($uses));
-            }
-            $q.all(tables).then(function (tableData) {
-              angular.forEach(tableData, function (data) {
-                if ($translationTable[data.key]) {
-                  delete $translationTable[data.key];
-                }
-                translations(data.key, data.table);
-              });
-              if ($uses) {
-                useLanguage($uses);
-              }
-              resolve();
-            });
-          } else if ($translationTable[langKey]) {
-            loadAsync(langKey).then(function (data) {
-              translations(data.key, data.table);
-              if (langKey === $uses) {
-                useLanguage($uses);
-              }
-              resolve();
-            }, reject);
-          } else {
-            reject();
-          }
-          return deferred.promise;
-        };
-        $translate.instant = function (translationId, interpolateParams, interpolationId) {
-          if (translationId === null || angular.isUndefined(translationId)) {
-            return translationId;
-          }
-          if (angular.isArray(translationId)) {
-            var results = {};
-            for (var i = 0, c = translationId.length; i < c; i++) {
-              results[translationId[i]] = $translate.instant(translationId[i], interpolateParams, interpolationId);
-            }
-            return results;
-          }
-          if (angular.isString(translationId) && translationId.length < 1) {
-            return translationId;
-          }
-          if (translationId) {
-            translationId = translationId.trim();
-          }
-          var result, possibleLangKeys = [];
-          if ($preferredLanguage) {
-            possibleLangKeys.push($preferredLanguage);
-          }
-          if ($uses) {
-            possibleLangKeys.push($uses);
-          }
-          if ($fallbackLanguage && $fallbackLanguage.length) {
-            possibleLangKeys = possibleLangKeys.concat($fallbackLanguage);
-          }
-          for (var j = 0, d = possibleLangKeys.length; j < d; j++) {
-            var possibleLangKey = possibleLangKeys[j];
-            if ($translationTable[possibleLangKey]) {
-              if (typeof $translationTable[possibleLangKey][translationId] !== 'undefined') {
-                result = determineTranslationInstant(translationId, interpolateParams, interpolationId);
-              }
-            }
-            if (typeof result !== 'undefined') {
-              break;
-            }
-          }
-          if (!result && result !== '') {
-            result = translationId;
-            if ($missingTranslationHandlerFactory && !pendingLoader) {
-              $injector.get($missingTranslationHandlerFactory)(translationId, $uses);
-            }
-          }
-          return result;
-        };
-        if ($loaderFactory) {
-          if (angular.equals($translationTable, {})) {
-            $translate.use($translate.use());
-          }
-          if ($fallbackLanguage && $fallbackLanguage.length) {
-            for (var i = 0, len = $fallbackLanguage.length; i < len; i++) {
-              langPromises[$fallbackLanguage[i]] = loadAsync($fallbackLanguage[i]);
-            }
-          }
-        }
-        return $translate;
-      }
-    ];
-  }
-]);
-angular.module('pascalprecht.translate').factory('$translateDefaultInterpolation', [
-  '$interpolate',
-  function ($interpolate) {
-    var $translateInterpolator = {}, $locale, $identifier = 'default', $sanitizeValueStrategy = null, sanitizeValueStrategies = {
-        escaped: function (params) {
-          var result = {};
-          for (var key in params) {
-            if (params.hasOwnProperty(key)) {
-              result[key] = angular.element('<div></div>').text(params[key]).html();
-            }
-          }
-          return result;
-        }
-      };
-    var sanitizeParams = function (params) {
-      var result;
-      if (angular.isFunction(sanitizeValueStrategies[$sanitizeValueStrategy])) {
-        result = sanitizeValueStrategies[$sanitizeValueStrategy](params);
-      } else {
-        result = params;
-      }
-      return result;
-    };
-    $translateInterpolator.setLocale = function (locale) {
-      $locale = locale;
-    };
-    $translateInterpolator.getInterpolationIdentifier = function () {
-      return $identifier;
-    };
-    $translateInterpolator.useSanitizeValueStrategy = function (value) {
-      $sanitizeValueStrategy = value;
-      return this;
-    };
-    $translateInterpolator.interpolate = function (string, interpolateParams) {
-      if ($sanitizeValueStrategy) {
-        interpolateParams = sanitizeParams(interpolateParams);
-      }
-      return $interpolate(string)(interpolateParams || {});
-    };
-    return $translateInterpolator;
-  }
-]);
-angular.module('pascalprecht.translate').constant('$STORAGE_KEY', 'NG_TRANSLATE_LANG_KEY');
-angular.module('pascalprecht.translate').directive('translate', [
-  '$translate',
-  '$q',
-  '$interpolate',
-  '$compile',
-  '$parse',
-  '$rootScope',
-  function ($translate, $q, $interpolate, $compile, $parse, $rootScope) {
-    return {
-      restrict: 'AE',
-      scope: true,
-      compile: function (tElement, tAttr) {
-        var translateValuesExist = tAttr.translateValues ? tAttr.translateValues : undefined;
-        var translateInterpolation = tAttr.translateInterpolation ? tAttr.translateInterpolation : undefined;
-        var translateValueExist = tElement[0].outerHTML.match(/translate-value-+/i);
-        return function linkFn(scope, iElement, iAttr) {
-          scope.interpolateParams = {};
-          iAttr.$observe('translate', function (translationId) {
-            if (angular.equals(translationId, '') || !angular.isDefined(translationId)) {
-              scope.translationId = $interpolate(iElement.text().replace(/^\s+|\s+$/g, ''))(scope.$parent);
-            } else {
-              scope.translationId = translationId;
-            }
-          });
-          iAttr.$observe('translateDefault', function (value) {
-            scope.defaultText = value;
-          });
-          if (translateValuesExist) {
-            iAttr.$observe('translateValues', function (interpolateParams) {
-              if (interpolateParams) {
-                scope.$parent.$watch(function () {
-                  angular.extend(scope.interpolateParams, $parse(interpolateParams)(scope.$parent));
-                });
-              }
-            });
-          }
-          if (translateValueExist) {
-            var fn = function (attrName) {
-              iAttr.$observe(attrName, function (value) {
-                scope.interpolateParams[angular.lowercase(attrName.substr(14, 1)) + attrName.substr(15)] = value;
-              });
-            };
-            for (var attr in iAttr) {
-              if (iAttr.hasOwnProperty(attr) && attr.substr(0, 14) === 'translateValue' && attr !== 'translateValues') {
-                fn(attr);
-              }
-            }
-          }
-          var applyElementContent = function (value, scope, successful) {
-            if (!successful && typeof scope.defaultText !== 'undefined') {
-              value = scope.defaultText;
-            }
-            iElement.html(value);
-            var globallyEnabled = $translate.isPostCompilingEnabled();
-            var locallyDefined = typeof tAttr.translateCompile !== 'undefined';
-            var locallyEnabled = locallyDefined && tAttr.translateCompile !== 'false';
-            if (globallyEnabled && !locallyDefined || locallyEnabled) {
-              $compile(iElement.contents())(scope);
-            }
-          };
-          var updateTranslationFn = function () {
-              if (!translateValuesExist && !translateValueExist) {
-                return function () {
-                  var unwatch = scope.$watch('translationId', function (value) {
-                      if (scope.translationId && value) {
-                        $translate(value, {}, translateInterpolation).then(function (translation) {
-                          applyElementContent(translation, scope, true);
-                          unwatch();
-                        }, function (translationId) {
-                          applyElementContent(translationId, scope, false);
-                          unwatch();
-                        });
-                      }
-                    }, true);
-                };
-              } else {
-                return function () {
-                  var updateTranslations = function () {
-                    if (scope.translationId && scope.interpolateParams) {
-                      $translate(scope.translationId, scope.interpolateParams, translateInterpolation).then(function (translation) {
-                        applyElementContent(translation, scope, true);
-                      }, function (translationId) {
-                        applyElementContent(translationId, scope, false);
-                      });
-                    }
-                  };
-                  scope.$watch('interpolateParams', updateTranslations, true);
-                  scope.$watch('translationId', updateTranslations);
-                };
-              }
-            }();
-          var unbind = $rootScope.$on('$translateChangeSuccess', updateTranslationFn);
-          updateTranslationFn();
-          scope.$on('$destroy', unbind);
-        };
-      }
-    };
-  }
-]);
-angular.module('pascalprecht.translate').directive('translateCloak', [
-  '$rootScope',
-  '$translate',
-  function ($rootScope, $translate) {
-    return {
-      compile: function (tElement) {
-        $rootScope.$on('$translateLoadingSuccess', function () {
-          tElement.removeClass($translate.cloakClassName());
-        });
-        tElement.addClass($translate.cloakClassName());
-      }
-    };
-  }
-]);
-angular.module('pascalprecht.translate').filter('translate', [
-  '$parse',
-  '$translate',
-  function ($parse, $translate) {
-    return function (translationId, interpolateParams, interpolation) {
-      if (!angular.isObject(interpolateParams)) {
-        interpolateParams = $parse(interpolateParams)(this);
-      }
-      return $translate.instant(translationId, interpolateParams, interpolation);
-    };
-  }
-]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate/angular-translate.min.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate/angular-translate.min.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate/angular-translate.min.js
deleted file mode 100644
index b160cb2..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate/angular-translate.min.js
+++ /dev/null
@@ -1,6 +0,0 @@
-/*!
- * angular-translate - v2.2.0 - 2014-06-03
- * http://github.com/PascalPrecht/angular-translate
- * Copyright (c) 2014 ; Licensed MIT
- */
-angular.module("pascalprecht.translate",["ng"]).run(["$translate",function(a){var b=a.storageKey(),c=a.storage();c?c.get(b)?a.use(c.get(b)):angular.isString(a.preferredLanguage())?a.use(a.preferredLanguage()):c.set(b,a.use()):angular.isString(a.preferredLanguage())&&a.use(a.preferredLanguage())}]),angular.module("pascalprecht.translate").provider("$translate",["$STORAGE_KEY",function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p={},q=[],r=a,s=[],t=!1,u="translate-cloak",v=!1,w=".",x=function(){var a=window.navigator;return(a.language||a.browserLanguage||a.systemLanguage||a.userLanguage||"").split("-").join("_")},y=function(a){for(var b=[],d=angular.lowercase(a),e=0,f=q.length;f>e;e++)b.push(angular.lowercase(q[e]));if(b.indexOf(d)>-1)return a;if(c){var g;for(var h in c){var i=!1,j=c.hasOwnProperty(h)&&angular.lowercase(h)===angular.lowercase(a);if("*"===h.slice(-1)&&(i=h.slice(0,-1)===a.slice(0,h.length-1)),(j||i)&&(g=c[h],b.indexOf(angular.lowercase(g))>-1))return g}}var k=a.split("_");retu
 rn k.length>1&&b.indexOf(angular.lowercase(k[0]))>-1?k[0]:a},z=function(a,b){if(!a&&!b)return p;if(a&&!b){if(angular.isString(a))return p[a]}else angular.isObject(p[a])||(p[a]={}),angular.extend(p[a],A(b));return this};this.translations=z,this.cloakClassName=function(a){return a?(u=a,this):u};var A=function(a,b,c,d){var e,f,g,h;b||(b=[]),c||(c={});for(e in a)a.hasOwnProperty(e)&&(h=a[e],angular.isObject(h)?A(h,b.concat(e),c,e):(f=b.length?""+b.join(w)+w+e:e,b.length&&e===d&&(g=""+b.join(w),c[g]="@:"+f),c[f]=h));return c};this.addInterpolation=function(a){return s.push(a),this},this.useMessageFormatInterpolation=function(){return this.useInterpolation("$translateMessageFormatInterpolation")},this.useInterpolation=function(a){return k=a,this},this.useSanitizeValueStrategy=function(a){return t=a,this},this.preferredLanguage=function(a){return a?(b=a,this):b},this.translationNotFoundIndicator=function(a){return this.translationNotFoundIndicatorLeft(a),this.translationNotFoundIndicatorRi
 ght(a),this},this.translationNotFoundIndicatorLeft=function(a){return a?(n=a,this):n},this.translationNotFoundIndicatorRight=function(a){return a?(o=a,this):o},this.fallbackLanguage=function(a){return B(a),this};var B=function(a){return a?(angular.isString(a)?(e=!0,d=[a]):angular.isArray(a)&&(e=!1,d=a),angular.isString(b)&&d.push(b),this):e?d[0]:d};this.use=function(a){if(a){if(!p[a]&&!l)throw new Error("$translateProvider couldn't find translationTable for langKey: '"+a+"'");return f=a,this}return f};var C=function(a){return a?(r=a,void 0):i?i+r:r};this.storageKey=C,this.useUrlLoader=function(a){return this.useLoader("$translateUrlLoader",{url:a})},this.useStaticFilesLoader=function(a){return this.useLoader("$translateStaticFilesLoader",a)},this.useLoader=function(a,b){return l=a,m=b||{},this},this.useLocalStorage=function(){return this.useStorage("$translateLocalStorage")},this.useCookieStorage=function(){return this.useStorage("$translateCookieStorage")},this.useStorage=function(
 a){return h=a,this},this.storagePrefix=function(a){return a?(i=a,this):a},this.useMissingTranslationHandlerLog=function(){return this.useMissingTranslationHandler("$translateMissingTranslationHandlerLog")},this.useMissingTranslationHandler=function(a){return j=a,this},this.usePostCompiling=function(a){return v=!!a,this},this.determinePreferredLanguage=function(a){var c=a&&angular.isFunction(a)?a():x();return b=q.length?y(c):c,this},this.registerAvailableLanguageKeys=function(a,b){return a?(q=a,b&&(c=b),this):q},this.$get=["$log","$injector","$rootScope","$q",function(a,c,i,q){var w,x,D,E=c.get(k||"$translateDefaultInterpolation"),F=!1,G={},H={},I=function(a,c,e){if(angular.isArray(a)){var g=function(a){for(var b={},d=[],f=function(a){var d=q.defer(),f=function(c){b[a]=c,d.resolve([a,c])};return I(a,c,e).then(f,f),d.promise},g=0,h=a.length;h>g;g++)d.push(f(a[g]));return q.all(d).then(function(){return b})};return g(a)}var i=q.defer();a&&(a=a.trim());var j=function(){var a=b?H[b]:H[f]
 ;if(x=0,h&&!a){var c=w.get(r);if(a=H[c],d&&d.length){var e=J(d,c);x=e>-1?e+=1:0,d.push(b)}}return a}();return j?j.then(function(){U(a,c,e).then(i.resolve,i.reject)},i.reject):U(a,c,e).then(i.resolve,i.reject),i.promise},J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K=function(a){return n&&(a=[n,a].join(" ")),o&&(a=[a,o].join(" ")),a},L=function(a){f=a,i.$emit("$translateChangeSuccess"),h&&w.set(I.storageKey(),f),E.setLocale(f),angular.forEach(G,function(a,b){G[b].setLocale(f)}),i.$emit("$translateChangeEnd")},M=function(a){if(!a)throw"No language key specified for loading.";var b=q.defer();return i.$emit("$translateLoadingStart"),F=!0,c.get(l)(angular.extend(m,{key:a})).then(function(c){var d={};i.$emit("$translateLoadingSuccess"),angular.isArray(c)?angular.forEach(c,function(a){angular.extend(d,A(a))}):angular.extend(d,A(c)),F=!1,b.resolve({key:a,table:d}),i.$emit("$translateLoadingEnd")},function(a){i.$emit("$translateLoadingError"),b.reject(a),i.$e
 mit("$translateLoadingEnd")}),b.promise};if(h&&(w=c.get(h),!w.get||!w.set))throw new Error("Couldn't use storage '"+h+"', missing get() or set() method!");angular.isFunction(E.useSanitizeValueStrategy)&&E.useSanitizeValueStrategy(t),s.length&&angular.forEach(s,function(a){var d=c.get(a);d.setLocale(b||f),angular.isFunction(d.useSanitizeValueStrategy)&&d.useSanitizeValueStrategy(t),G[d.getInterpolationIdentifier()]=d});var N=function(a){var b=q.defer();return p.hasOwnProperty(a)?(b.resolve(p[a]),b.promise):(H[a].then(function(a){z(a.key,a.table),b.resolve(a.table)},b.reject),b.promise)},O=function(a,b,c,d){var e=q.defer();return N(a).then(function(g){g.hasOwnProperty(b)?(d.setLocale(a),e.resolve(d.interpolate(g[b],c)),d.setLocale(f)):e.reject()},e.reject),e.promise},P=function(a,b,c,d){var e,g=p[a];return g.hasOwnProperty(b)&&(d.setLocale(a),e=d.interpolate(g[b],c),d.setLocale(f)),e},Q=function(a,b,e,g){var h=q.defer();if(a<d.length){var i=d[a];O(i,b,e,g).then(function(a){h.resolve(a
 )},function(){var c=Q(a+1,b,e,g);h.resolve(c)})}else if(j){var k=c.get(j)(b,f);void 0!==k?h.resolve(k):h.resolve(b)}else h.resolve(b);return h.promise},R=function(a,b,c,e){var f;if(a<d.length){var g=d[a];f=P(g,b,c,e),f||(f=R(a+1,b,c,e))}return f},S=function(a,b,c){return Q(D>0?D:x,a,b,c)},T=function(a,b,c){return R(D>0?D:x,a,b,c)},U=function(a,b,e){var g=q.defer(),h=f?p[f]:p,i=e?G[e]:E;if(h&&h.hasOwnProperty(a)){var k=h[a];"@:"===k.substr(0,2)?I(k.substr(2),b,e).then(g.resolve,g.reject):g.resolve(i.interpolate(k,b))}else j&&!F&&c.get(j)(a,f),f&&d&&d.length?S(a,b,i).then(function(a){g.resolve(a)},function(a){g.reject(K(a))}):g.reject(K(a));return g.promise},V=function(a,b,e){var g,h=f?p[f]:p,i=e?G[e]:E;if(h&&h.hasOwnProperty(a)){var k=h[a];g="@:"===k.substr(0,2)?V(k.substr(2),b,e):i.interpolate(k,b)}else j&&!F&&c.get(j)(a,f),f&&d&&d.length?(x=0,g=T(a,b,i)):g=K(a);return g};if(I.preferredLanguage=function(){return b},I.cloakClassName=function(){return u},I.fallbackLanguage=function(a)
 {if(void 0!==a&&null!==a){if(B(a),l&&d&&d.length)for(var b=0,c=d.length;c>b;b++)H[d[b]]||(H[d[b]]=M(d[b]));I.use(I.use())}return e?d[0]:d},I.useFallbackLanguage=function(a){if(void 0!==a&&null!==a)if(a){var b=J(d,a);b>-1&&(D=b)}else D=0},I.proposedLanguage=function(){return g},I.storage=function(){return w},I.use=function(a){if(!a)return f;var b=q.defer();i.$emit("$translateChangeStart");var c=y(a);return c&&(a=c),!p[a]&&l?(g=a,H[a]=M(a).then(function(c){z(c.key,c.table),b.resolve(c.key),g===a&&(L(c.key),g=void 0)},function(a){g=void 0,i.$emit("$translateChangeError"),b.reject(a),i.$emit("$translateChangeEnd")})):(b.resolve(a),L(a)),b.promise},I.storageKey=function(){return C()},I.isPostCompilingEnabled=function(){return v},I.refresh=function(a){function b(){e.resolve(),i.$emit("$translateRefreshEnd")}function c(){e.reject(),i.$emit("$translateRefreshEnd")}if(!l)throw new Error("Couldn't refresh translation table, no loader registered!");var e=q.defer();if(i.$emit("$translateRefresh
 Start"),a)p[a]?M(a).then(function(c){z(c.key,c.table),a===f&&L(f),b()},c):c();else{var g=[];if(d&&d.length)for(var h=0,j=d.length;j>h;h++)g.push(M(d[h]));f&&g.push(M(f)),q.all(g).then(function(a){angular.forEach(a,function(a){p[a.key]&&delete p[a.key],z(a.key,a.table)}),f&&L(f),b()})}return e.promise},I.instant=function(a,e,g){if(null===a||angular.isUndefined(a))return a;if(angular.isArray(a)){for(var h={},i=0,k=a.length;k>i;i++)h[a[i]]=I.instant(a[i],e,g);return h}if(angular.isString(a)&&a.length<1)return a;a&&(a=a.trim());var l,m=[];b&&m.push(b),f&&m.push(f),d&&d.length&&(m=m.concat(d));for(var n=0,o=m.length;o>n;n++){var q=m[n];if(p[q]&&"undefined"!=typeof p[q][a]&&(l=V(a,e,g)),"undefined"!=typeof l)break}return l||""===l||(l=a,j&&!F&&c.get(j)(a,f)),l},l&&(angular.equals(p,{})&&I.use(I.use()),d&&d.length))for(var W=0,X=d.length;X>W;W++)H[d[W]]=M(d[W]);return I}]}]),angular.module("pascalprecht.translate").factory("$translateDefaultInterpolation",["$interpolate",function(a){var b,
 c={},d="default",e=null,f={escaped:function(a){var b={};for(var c in a)a.hasOwnProperty(c)&&(b[c]=angular.element("<div></div>").text(a[c]).html());return b}},g=function(a){var b;return b=angular.isFunction(f[e])?f[e](a):a};return c.setLocale=function(a){b=a},c.getInterpolationIdentifier=function(){return d},c.useSanitizeValueStrategy=function(a){return e=a,this},c.interpolate=function(b,c){return e&&(c=g(c)),a(b)(c||{})},c}]),angular.module("pascalprecht.translate").constant("$STORAGE_KEY","NG_TRANSLATE_LANG_KEY"),angular.module("pascalprecht.translate").directive("translate",["$translate","$q","$interpolate","$compile","$parse","$rootScope",function(a,b,c,d,e,f){return{restrict:"AE",scope:!0,compile:function(b,g){var h=g.translateValues?g.translateValues:void 0,i=g.translateInterpolation?g.translateInterpolation:void 0,j=b[0].outerHTML.match(/translate-value-+/i);return function(b,k,l){if(b.interpolateParams={},l.$observe("translate",function(a){b.translationId=angular.equals(a,""
 )||!angular.isDefined(a)?c(k.text().replace(/^\s+|\s+$/g,""))(b.$parent):a}),l.$observe("translateDefault",function(a){b.defaultText=a}),h&&l.$observe("translateValues",function(a){a&&b.$parent.$watch(function(){angular.extend(b.interpolateParams,e(a)(b.$parent))})}),j){var m=function(a){l.$observe(a,function(c){b.interpolateParams[angular.lowercase(a.substr(14,1))+a.substr(15)]=c})};for(var n in l)l.hasOwnProperty(n)&&"translateValue"===n.substr(0,14)&&"translateValues"!==n&&m(n)}var o=function(b,c,e){e||"undefined"==typeof c.defaultText||(b=c.defaultText),k.html(b);var f=a.isPostCompilingEnabled(),h="undefined"!=typeof g.translateCompile,i=h&&"false"!==g.translateCompile;(f&&!h||i)&&d(k.contents())(c)},p=function(){return h||j?function(){var c=function(){b.translationId&&b.interpolateParams&&a(b.translationId,b.interpolateParams,i).then(function(a){o(a,b,!0)},function(a){o(a,b,!1)})};b.$watch("interpolateParams",c,!0),b.$watch("translationId",c)}:function(){var c=b.$watch("transla
 tionId",function(d){b.translationId&&d&&a(d,{},i).then(function(a){o(a,b,!0),c()},function(a){o(a,b,!1),c()})},!0)}}(),q=f.$on("$translateChangeSuccess",p);p(),b.$on("$destroy",q)}}}}]),angular.module("pascalprecht.translate").directive("translateCloak",["$rootScope","$translate",function(a,b){return{compile:function(c){a.$on("$translateLoadingSuccess",function(){c.removeClass(b.cloakClassName())}),c.addClass(b.cloakClassName())}}}]),angular.module("pascalprecht.translate").filter("translate",["$parse","$translate",function(a,b){return function(c,d,e){return angular.isObject(d)||(d=a(d)(this)),b.instant(c,d,e)}}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate/bower.json
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate/bower.json b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate/bower.json
deleted file mode 100644
index 3dc3dab..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-translate/bower.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-  "name": "angular-translate",
-  "version": "2.2.0",
-  "main": "./angular-translate.js"
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/.gitignore
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/.gitignore b/usage/jsgui/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/.gitignore
deleted file mode 100644
index a6d9724..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/.gitignore
+++ /dev/null
@@ -1,102 +0,0 @@
-# Created by http://gitignore.io
-
-tmp
-
-### OSX ###
-.DS_Store
-.AppleDouble
-.LSOverride
-Icon
-
-logo.ai
-
-gh-pages
-
-# Thumbnails
-._*
-
-# Files that might appear on external disk
-.Spotlight-V100
-.Trashes
-
-### Windows ###
-# Windows image file caches
-Thumbs.db
-ehthumbs.db
-
-# Folder config file
-Desktop.ini
-
-# Recycle Bin used on file shares
-$RECYCLE.BIN/
-
-### Linux ###
-.*
-!.gitignore
-!.git*
-*~
-
-
-### Eclipse ###
-*.pydevproject
-.project
-.metadata
-bin/**
-tmp/**
-tmp/**/*
-*.tmp
-*.bak
-*.swp
-*~.nib
-local.properties
-.classpath
-.settings/
-.loadpath
-
-# External tool builders
-.externalToolBuilders/
-
-# Locally stored "Eclipse launch configurations"
-*.launch
-
-# CDT-specific
-.cproject
-
-# PDT-specific
-.buildpath
-
-### TextMate ###
-*.tmproj
-*.tmproject
-tmtags
-
-### SublimeText ###
-# SublimeText project files
-*.sublime-workspace
-
-### Node ###
-lib-cov
-*.seed
-*.log
-*.csv
-*.dat
-*.out
-*.pid
-*.gz
-
-pids
-logs
-results
-
-npm-debug.log
-node_modules
-
-### Bower ###
-bower_components
-
-experiments
-site/output
-site/tmp
-
-site/crash.log
-site/Gemfile.lock
\ No newline at end of file


[43/71] [abbrv] brooklyn-ui git commit: fix some js errors on startup due to fields not initialized properly

Posted by he...@apache.org.
fix some js errors on startup due to fields not initialized properly


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/commit/83c958a0
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/tree/83c958a0
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/diff/83c958a0

Branch: refs/heads/0.7.0-incubating
Commit: 83c958a0ade7b0fd789e6243cdc59f1ccd48bdd0
Parents: 5a4b984
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Fri Mar 27 18:42:36 2015 -0500
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Sat Mar 28 21:27:28 2015 -0500

----------------------------------------------------------------------
 usage/jsgui/src/main/webapp/assets/js/router.js | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/83c958a0/usage/jsgui/src/main/webapp/assets/js/router.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/js/router.js b/usage/jsgui/src/main/webapp/assets/js/router.js
index 3e38841..186dd72 100644
--- a/usage/jsgui/src/main/webapp/assets/js/router.js
+++ b/usage/jsgui/src/main/webapp/assets/js/router.js
@@ -88,14 +88,15 @@ define([
 
         homePage:function (trail) {
             var that = this;
+            var veryFirstViewLoad, homeView;
             // render the page after we fetch the collection -- no rendering on error
             function render() {
-                var homeView = new HomeView({
+                homeView = new HomeView({
                     collection:that.applications,
                     locations:that.locations,
                     appRouter:that
                 });
-                var veryFirstViewLoad = !that.currentView;
+                veryFirstViewLoad = !that.currentView;
                 that.showView("#application-content", homeView);
             }
             this.applications.fetch({success:function () {


[32/71] [abbrv] brooklyn-ui git commit: Ignore netbeans files

Posted by he...@apache.org.
Ignore netbeans files


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/commit/c765b16f
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/tree/c765b16f
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/diff/c765b16f

Branch: refs/heads/0.7.0-incubating
Commit: c765b16fe9bf81b2896170442fde992856b1830a
Parents: f03c323
Author: Ciprian Ciubotariu <ch...@gmx.net>
Authored: Fri Nov 28 15:22:25 2014 +0200
Committer: Ciprian Ciubotariu <ch...@gmx.net>
Committed: Fri Mar 13 23:27:42 2015 +0200

----------------------------------------------------------------------
 .gitignore | 3 +++
 1 file changed, 3 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/c765b16f/.gitignore
----------------------------------------------------------------------
diff --git a/.gitignore b/.gitignore
index 045e2de..ed439f2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -19,6 +19,9 @@ test-output/
 .idea/
 *.iml
 
+nbactions.xml
+nb-configuration.xml
+
 prodDb.*
 
 *.log


[67/71] [abbrv] brooklyn-ui git commit: fix package reference from jsgui to tidy up displayed strings

Posted by he...@apache.org.
fix package reference from jsgui to tidy up displayed strings


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/commit/2f5d777d
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/tree/2f5d777d
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/diff/2f5d777d

Branch: refs/heads/0.7.0-incubating
Commit: 2f5d777d97c1fedd382ec3fad161c5e8875e1051
Parents: 8930be2
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Mon Jun 22 10:45:56 2015 -0700
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Mon Jun 22 10:46:22 2015 -0700

----------------------------------------------------------------------
 usage/jsgui/src/main/webapp/assets/tpl/apps/config-name.html | 2 +-
 usage/jsgui/src/main/webapp/assets/tpl/apps/sensor-name.html | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2f5d777d/usage/jsgui/src/main/webapp/assets/tpl/apps/config-name.html
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/tpl/apps/config-name.html b/usage/jsgui/src/main/webapp/assets/tpl/apps/config-name.html
index 1170415..2c44974 100644
--- a/usage/jsgui/src/main/webapp/assets/tpl/apps/config-name.html
+++ b/usage/jsgui/src/main/webapp/assets/tpl/apps/config-name.html
@@ -23,7 +23,7 @@ under the License.
     title="<% 
          if (description) { %><b><%- description %></b><br/><% } 
          if (type) { %>(<% 
-           if (type.startsWith("java.lang.") || type.startsWith("util.")) type = type.substring(10);
+           if (type.startsWith("java.lang.") || type.startsWith("java.util.")) type = type.substring(10);
          %><%- type %>)<% } %>">
     <%- name %>
 </span>

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2f5d777d/usage/jsgui/src/main/webapp/assets/tpl/apps/sensor-name.html
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/tpl/apps/sensor-name.html b/usage/jsgui/src/main/webapp/assets/tpl/apps/sensor-name.html
index 222ba1f..619aa32 100644
--- a/usage/jsgui/src/main/webapp/assets/tpl/apps/sensor-name.html
+++ b/usage/jsgui/src/main/webapp/assets/tpl/apps/sensor-name.html
@@ -23,7 +23,7 @@ under the License.
     title="<% 
          if (description) { %><b><%- description %></b><br/><% } 
          if (type) { %>(<% 
-           if (type.startsWith("java.lang.") || type.startsWith("util.")) type = type.substring(10);
+           if (type.startsWith("java.lang.") || type.startsWith("java.util.")) type = type.substring(10);
          %><%- type %>)<% } %>">
     <%- name %>
 </span>


[18/71] [abbrv] brooklyn-ui git commit: Move mobile app to sandbox

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

<TRUNCATED>

[16/71] [abbrv] brooklyn-ui git commit: Move mobile app to sandbox

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/errors.json
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/errors.json b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/errors.json
deleted file mode 100644
index 91a32c9..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/errors.json
+++ /dev/null
@@ -1 +0,0 @@
-{"id":"ng","generated":"Tue Jul 01 2014 10:38:05 GMT-0700 (PDT)","errors":{"$cacheFactory":{"iid":"CacheId '{0}' is already taken!"},"ngModel":{"nonassign":"Expression '{0}' is non-assignable. Element: {1}"},"$sce":{"iequirks":"Strict Contextual Escaping does not support Internet Explorer version < 9 in quirks mode.  You can fix this by adding the text <!doctype html> to the top of your HTML document.  See http://docs.angularjs.org/api/ng.$sce for more information.","insecurl":"Blocked loading resource from url not allowed by $sceDelegate policy.  URL: {0}","icontext":"Attempted to trust a value in invalid context. Context: {0}; Value: {1}","imatcher":"Matchers may only be \"self\", string patterns or RegExp objects","iwcard":"Illegal sequence *** in string matcher.  String: {0}","itype":"Attempted to trust a non-string value in a content requiring a string: Context: {0}","unsafe":"Attempting to use an unsafe value in a safe context."},"$controller":{"noscp":"Cannot export controlle
 r '{0}' as '{1}'! No $scope object provided via `locals`."},"$compile":{"nodomevents":"Interpolations for HTML DOM event attributes are disallowed.  Please use the ng- versions (such as ng-click instead of onclick) instead.","multidir":"Multiple directives [{0}, {1}] asking for {2} on: {3}","nonassign":"Expression '{0}' used with directive '{1}' is non-assignable!","tplrt":"Template for directive '{0}' must have exactly one root element. {1}","selmulti":"Binding to the 'multiple' attribute is not supported. Element: {0}","tpload":"Failed to load template: {0}","iscp":"Invalid isolate scope definition for directive '{0}'. Definition: {... {1}: '{2}' ...}","ctreq":"Controller '{0}', required by directive '{1}', can't be found!","uterdir":"Unterminated attribute, found '{0}' but no matching '{1}' found."},"$injector":{"modulerr":"Failed to instantiate module {0} due to:\n{1}","unpr":"Unknown provider: {0}","itkn":"Incorrect injection token! Expected service name as string, got {0}","cd
 ep":"Circular dependency found: {0}","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.","pget":"Provider '{0}' must define $get factory method."},"$rootScope":{"inprog":"{0} already in progress","infdig":"{0} $digest() iterations reached. Aborting!\nWatchers fired in the last 5 iterations: {1}"},"ngPattern":{"noregexp":"Expected {0} to be a RegExp but was {1}. Element: {2}"},"$interpolate":{"noconcat":"Error while interpolating: {0}\nStrict Contextual Escaping disallows interpolations that concatenate multiple expressions when a trusted value is required.  See http://docs.angularjs.org/api/ng.$sce","interr":"Can't interpolate: {0}\n{1}"},"jqLite":{"offargs":"jqLite#off() does not support the `selector` argument","onargs":"jqLite#on() does not support the `selector` or `eventData` parameters","nosel":"Looking up elements via selectors is not suppo
 rted by jqLite! See: http://docs.angularjs.org/api/angular.element"},"ngOptions":{"iexp":"Expected expression in form of '_select_ (as _label_)? for (_key_,)?_value_ in _collection_' but got '{0}'. Element: {1}"},"ngRepeat":{"iidexp":"'_item_' in '_item_ in _collection_' should be an identifier or '(_key_, _value_)' expression, but got '{0}'.","dupes":"Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: {0}, Duplicate key: {1}","iexp":"Expected expression in form of '_item_ in _collection_[ track by _id_]' but got '{0}'."},"ng":{"areq":"Argument '{0}' is {1}","cpws":"Can't copy! Making copies of Window or Scope instances is not supported.","badname":"hasOwnProperty is not a valid {0} name","btstrpd":"App Already Bootstrapped with this Element '{0}'","cpi":"Can't copy! Source and destination are identical."},"$animate":{"notcsel":"Expecting class selector starting with '.' got '{0}'."},"ngTransclude":{"orphan":"Illegal use of ngTransc
 lude directive in the template! No parent directive that requires a transclusion found. Element: {0}"},"$parse":{"isecfld":"Attempting to access a disallowed field in Angular expressions! Expression: {0}","syntax":"Syntax Error: Token '{0}' {1} at column {2} of the expression [{3}] starting at [{4}].","isecff":"Referencing call, apply or bind in Angular expressions is disallowed! Expression: {0}","isecdom":"Referencing DOM nodes in Angular expressions is disallowed! Expression: {0}","lexerr":"Lexer Error: {0} at column{1} in expression [{2}].","ueoe":"Unexpected end of expression: {0}","isecwindow":"Referencing the Window in Angular expressions is disallowed! Expression: {0}","isecfn":"Referencing Function in Angular expressions is disallowed! Expression: {0}","isecobj":"Referencing Object in Angular expressions is disallowed! Expression: {0}"},"$httpBackend":{"noxhr":"This browser does not support XMLHttpRequest."},"$location":{"ipthprfx":"Invalid url \"{0}\", missing path prefix \
 "{1}\".","isrcharg":"The first argument of the `$location#search()` call must be a string or an object.","ihshprfx":"Invalid url \"{0}\", missing hash prefix \"{1}\"."},"$resource":{"badargs":"Expected up to 4 arguments [params, data, success, error], got {0} arguments","badmember":"Dotted member path \"@{0}\" is invalid.","badcfg":"Error in resource configuration. Expected response to contain an {0} but got an {1}","badname":"hasOwnProperty is not a valid parameter name."},"$sanitize":{"badparse":"The sanitizer was unable to parse the following block of html: {0}"}}}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_af-na.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_af-na.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_af-na.js
deleted file mode 100644
index e40bd16..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_af-na.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "vm.",
-      "nm."
-    ],
-    "DAY": [
-      "Sondag",
-      "Maandag",
-      "Dinsdag",
-      "Woensdag",
-      "Donderdag",
-      "Vrydag",
-      "Saterdag"
-    ],
-    "MONTH": [
-      "Januarie",
-      "Februarie",
-      "Maart",
-      "April",
-      "Mei",
-      "Junie",
-      "Julie",
-      "Augustus",
-      "September",
-      "Oktober",
-      "November",
-      "Desember"
-    ],
-    "SHORTDAY": [
-      "So",
-      "Ma",
-      "Di",
-      "Wo",
-      "Do",
-      "Vr",
-      "Sa"
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Feb",
-      "Mar",
-      "Apr",
-      "Mei",
-      "Jun",
-      "Jul",
-      "Aug",
-      "Sep",
-      "Okt",
-      "Nov",
-      "Des"
-    ],
-    "fullDate": "EEEE d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y HH:mm:ss",
-    "mediumDate": "d MMM y",
-    "mediumTime": "HH:mm:ss",
-    "short": "yyyy-MM-dd HH:mm",
-    "shortDate": "yyyy-MM-dd",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "R",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "af-na",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_af-za.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_af-za.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_af-za.js
deleted file mode 100644
index dddd6ca..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_af-za.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "vm.",
-      "nm."
-    ],
-    "DAY": [
-      "Sondag",
-      "Maandag",
-      "Dinsdag",
-      "Woensdag",
-      "Donderdag",
-      "Vrydag",
-      "Saterdag"
-    ],
-    "MONTH": [
-      "Januarie",
-      "Februarie",
-      "Maart",
-      "April",
-      "Mei",
-      "Junie",
-      "Julie",
-      "Augustus",
-      "September",
-      "Oktober",
-      "November",
-      "Desember"
-    ],
-    "SHORTDAY": [
-      "So",
-      "Ma",
-      "Di",
-      "Wo",
-      "Do",
-      "Vr",
-      "Sa"
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Feb",
-      "Mar",
-      "Apr",
-      "Mei",
-      "Jun",
-      "Jul",
-      "Aug",
-      "Sep",
-      "Okt",
-      "Nov",
-      "Des"
-    ],
-    "fullDate": "EEEE dd MMMM y",
-    "longDate": "dd MMMM y",
-    "medium": "dd MMM y h:mm:ss a",
-    "mediumDate": "dd MMM y",
-    "mediumTime": "h:mm:ss a",
-    "short": "yyyy-MM-dd h:mm a",
-    "shortDate": "yyyy-MM-dd",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "R",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "af-za",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_af.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_af.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_af.js
deleted file mode 100644
index aacbefd..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_af.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "vm.",
-      "nm."
-    ],
-    "DAY": [
-      "Sondag",
-      "Maandag",
-      "Dinsdag",
-      "Woensdag",
-      "Donderdag",
-      "Vrydag",
-      "Saterdag"
-    ],
-    "MONTH": [
-      "Januarie",
-      "Februarie",
-      "Maart",
-      "April",
-      "Mei",
-      "Junie",
-      "Julie",
-      "Augustus",
-      "September",
-      "Oktober",
-      "November",
-      "Desember"
-    ],
-    "SHORTDAY": [
-      "So",
-      "Ma",
-      "Di",
-      "Wo",
-      "Do",
-      "Vr",
-      "Sa"
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Feb",
-      "Mar",
-      "Apr",
-      "Mei",
-      "Jun",
-      "Jul",
-      "Aug",
-      "Sep",
-      "Okt",
-      "Nov",
-      "Des"
-    ],
-    "fullDate": "EEEE dd MMMM y",
-    "longDate": "dd MMMM y",
-    "medium": "dd MMM y h:mm:ss a",
-    "mediumDate": "dd MMM y",
-    "mediumTime": "h:mm:ss a",
-    "short": "yyyy-MM-dd h:mm a",
-    "shortDate": "yyyy-MM-dd",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "R",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "af",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_am-et.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_am-et.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_am-et.js
deleted file mode 100644
index decae2d..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_am-et.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u1321\u12cb\u1275",
-      "\u12a8\u1233\u12d3\u1275"
-    ],
-    "DAY": [
-      "\u12a5\u1211\u12f5",
-      "\u1230\u129e",
-      "\u121b\u12ad\u1230\u129e",
-      "\u1228\u1261\u12d5",
-      "\u1210\u1219\u1235",
-      "\u12d3\u122d\u1265",
-      "\u1245\u12f3\u121c"
-    ],
-    "MONTH": [
-      "\u1303\u1295\u12e9\u12c8\u122a",
-      "\u134c\u1265\u1229\u12c8\u122a",
-      "\u121b\u122d\u127d",
-      "\u12a4\u1355\u1228\u120d",
-      "\u121c\u12ed",
-      "\u1301\u1295",
-      "\u1301\u120b\u12ed",
-      "\u12a6\u1308\u1235\u1275",
-      "\u1234\u1355\u1274\u121d\u1260\u122d",
-      "\u12a6\u12ad\u1270\u12cd\u1260\u122d",
-      "\u1296\u126c\u121d\u1260\u122d",
-      "\u12f2\u1234\u121d\u1260\u122d"
-    ],
-    "SHORTDAY": [
-      "\u12a5\u1211\u12f5",
-      "\u1230\u129e",
-      "\u121b\u12ad\u1230",
-      "\u1228\u1261\u12d5",
-      "\u1210\u1219\u1235",
-      "\u12d3\u122d\u1265",
-      "\u1245\u12f3\u121c"
-    ],
-    "SHORTMONTH": [
-      "\u1303\u1295\u12e9",
-      "\u134c\u1265\u1229",
-      "\u121b\u122d\u127d",
-      "\u12a4\u1355\u1228",
-      "\u121c\u12ed",
-      "\u1301\u1295",
-      "\u1301\u120b\u12ed",
-      "\u12a6\u1308\u1235",
-      "\u1234\u1355\u1274",
-      "\u12a6\u12ad\u1270",
-      "\u1296\u126c\u121d",
-      "\u12f2\u1234\u121d"
-    ],
-    "fullDate": "EEEE, d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y h:mm:ss a",
-    "mediumDate": "d MMM y",
-    "mediumTime": "h:mm:ss a",
-    "short": "dd/MM/yyyy h:mm a",
-    "shortDate": "dd/MM/yyyy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "Birr",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "am-et",
-  "pluralCat": function (n) {  if (n == 0 || n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_am.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_am.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_am.js
deleted file mode 100644
index 6a7ad5f..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_am.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u1321\u12cb\u1275",
-      "\u12a8\u1233\u12d3\u1275"
-    ],
-    "DAY": [
-      "\u12a5\u1211\u12f5",
-      "\u1230\u129e",
-      "\u121b\u12ad\u1230\u129e",
-      "\u1228\u1261\u12d5",
-      "\u1210\u1219\u1235",
-      "\u12d3\u122d\u1265",
-      "\u1245\u12f3\u121c"
-    ],
-    "MONTH": [
-      "\u1303\u1295\u12e9\u12c8\u122a",
-      "\u134c\u1265\u1229\u12c8\u122a",
-      "\u121b\u122d\u127d",
-      "\u12a4\u1355\u1228\u120d",
-      "\u121c\u12ed",
-      "\u1301\u1295",
-      "\u1301\u120b\u12ed",
-      "\u12a6\u1308\u1235\u1275",
-      "\u1234\u1355\u1274\u121d\u1260\u122d",
-      "\u12a6\u12ad\u1270\u12cd\u1260\u122d",
-      "\u1296\u126c\u121d\u1260\u122d",
-      "\u12f2\u1234\u121d\u1260\u122d"
-    ],
-    "SHORTDAY": [
-      "\u12a5\u1211\u12f5",
-      "\u1230\u129e",
-      "\u121b\u12ad\u1230",
-      "\u1228\u1261\u12d5",
-      "\u1210\u1219\u1235",
-      "\u12d3\u122d\u1265",
-      "\u1245\u12f3\u121c"
-    ],
-    "SHORTMONTH": [
-      "\u1303\u1295\u12e9",
-      "\u134c\u1265\u1229",
-      "\u121b\u122d\u127d",
-      "\u12a4\u1355\u1228",
-      "\u121c\u12ed",
-      "\u1301\u1295",
-      "\u1301\u120b\u12ed",
-      "\u12a6\u1308\u1235",
-      "\u1234\u1355\u1274",
-      "\u12a6\u12ad\u1270",
-      "\u1296\u126c\u121d",
-      "\u12f2\u1234\u121d"
-    ],
-    "fullDate": "EEEE, d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y h:mm:ss a",
-    "mediumDate": "d MMM y",
-    "mediumTime": "h:mm:ss a",
-    "short": "dd/MM/yyyy h:mm a",
-    "shortDate": "dd/MM/yyyy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "Birr",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "am",
-  "pluralCat": function (n) {  if (n == 0 || n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-001.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-001.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-001.js
deleted file mode 100644
index 9ed1dae..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-001.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u0635",
-      "\u0645"
-    ],
-    "DAY": [
-      "\u0627\u0644\u0623\u062d\u062f",
-      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
-      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
-      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
-      "\u0627\u0644\u062e\u0645\u064a\u0633",
-      "\u0627\u0644\u062c\u0645\u0639\u0629",
-      "\u0627\u0644\u0633\u0628\u062a"
-    ],
-    "MONTH": [
-      "\u064a\u0646\u0627\u064a\u0631",
-      "\u0641\u0628\u0631\u0627\u064a\u0631",
-      "\u0645\u0627\u0631\u0633",
-      "\u0623\u0628\u0631\u064a\u0644",
-      "\u0645\u0627\u064a\u0648",
-      "\u064a\u0648\u0646\u064a\u0648",
-      "\u064a\u0648\u0644\u064a\u0648",
-      "\u0623\u063a\u0633\u0637\u0633",
-      "\u0633\u0628\u062a\u0645\u0628\u0631",
-      "\u0623\u0643\u062a\u0648\u0628\u0631",
-      "\u0646\u0648\u0641\u0645\u0628\u0631",
-      "\u062f\u064a\u0633\u0645\u0628\u0631"
-    ],
-    "SHORTDAY": [
-      "\u0627\u0644\u0623\u062d\u062f",
-      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
-      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
-      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
-      "\u0627\u0644\u062e\u0645\u064a\u0633",
-      "\u0627\u0644\u062c\u0645\u0639\u0629",
-      "\u0627\u0644\u0633\u0628\u062a"
-    ],
-    "SHORTMONTH": [
-      "\u064a\u0646\u0627\u064a\u0631",
-      "\u0641\u0628\u0631\u0627\u064a\u0631",
-      "\u0645\u0627\u0631\u0633",
-      "\u0623\u0628\u0631\u064a\u0644",
-      "\u0645\u0627\u064a\u0648",
-      "\u064a\u0648\u0646\u064a\u0648",
-      "\u064a\u0648\u0644\u064a\u0648",
-      "\u0623\u063a\u0633\u0637\u0633",
-      "\u0633\u0628\u062a\u0645\u0628\u0631",
-      "\u0623\u0643\u062a\u0648\u0628\u0631",
-      "\u0646\u0648\u0641\u0645\u0628\u0631",
-      "\u062f\u064a\u0633\u0645\u0628\u0631"
-    ],
-    "fullDate": "EEEE\u060c d MMMM\u060c y",
-    "longDate": "d MMMM\u060c y",
-    "medium": "dd\u200f/MM\u200f/yyyy h:mm:ss a",
-    "mediumDate": "dd\u200f/MM\u200f/yyyy",
-    "mediumTime": "h:mm:ss a",
-    "short": "d\u200f/M\u200f/yyyy h:mm a",
-    "shortDate": "d\u200f/M\u200f/yyyy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u00a3",
-    "DECIMAL_SEP": "\u066b",
-    "GROUP_SEP": "\u066c",
-    "PATTERNS": [
-      {
-        "gSize": 0,
-        "lgSize": 0,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "",
-        "negSuf": "-",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 0,
-        "lgSize": 0,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "\u00a4\u00a0",
-        "negSuf": "-",
-        "posPre": "\u00a4\u00a0",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "ar-001",
-  "pluralCat": function (n) {  if (n == 0) {   return PLURAL_CATEGORY.ZERO;  }  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  if (n == 2) {   return PLURAL_CATEGORY.TWO;  }  if (n == (n | 0) && n % 100 >= 3 && n % 100 <= 10) {   return PLURAL_CATEGORY.FEW;  }  if (n == (n | 0) && n % 100 >= 11 && n % 100 <= 99) {   return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-ae.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-ae.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-ae.js
deleted file mode 100644
index 2440d71..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-ae.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u0635",
-      "\u0645"
-    ],
-    "DAY": [
-      "\u0627\u0644\u0623\u062d\u062f",
-      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
-      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
-      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
-      "\u0627\u0644\u062e\u0645\u064a\u0633",
-      "\u0627\u0644\u062c\u0645\u0639\u0629",
-      "\u0627\u0644\u0633\u0628\u062a"
-    ],
-    "MONTH": [
-      "\u064a\u0646\u0627\u064a\u0631",
-      "\u0641\u0628\u0631\u0627\u064a\u0631",
-      "\u0645\u0627\u0631\u0633",
-      "\u0623\u0628\u0631\u064a\u0644",
-      "\u0645\u0627\u064a\u0648",
-      "\u064a\u0648\u0646\u064a\u0648",
-      "\u064a\u0648\u0644\u064a\u0648",
-      "\u0623\u063a\u0633\u0637\u0633",
-      "\u0633\u0628\u062a\u0645\u0628\u0631",
-      "\u0623\u0643\u062a\u0648\u0628\u0631",
-      "\u0646\u0648\u0641\u0645\u0628\u0631",
-      "\u062f\u064a\u0633\u0645\u0628\u0631"
-    ],
-    "SHORTDAY": [
-      "\u0627\u0644\u0623\u062d\u062f",
-      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
-      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
-      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
-      "\u0627\u0644\u062e\u0645\u064a\u0633",
-      "\u0627\u0644\u062c\u0645\u0639\u0629",
-      "\u0627\u0644\u0633\u0628\u062a"
-    ],
-    "SHORTMONTH": [
-      "\u064a\u0646\u0627\u064a\u0631",
-      "\u0641\u0628\u0631\u0627\u064a\u0631",
-      "\u0645\u0627\u0631\u0633",
-      "\u0623\u0628\u0631\u064a\u0644",
-      "\u0645\u0627\u064a\u0648",
-      "\u064a\u0648\u0646\u064a\u0648",
-      "\u064a\u0648\u0644\u064a\u0648",
-      "\u0623\u063a\u0633\u0637\u0633",
-      "\u0633\u0628\u062a\u0645\u0628\u0631",
-      "\u0623\u0643\u062a\u0648\u0628\u0631",
-      "\u0646\u0648\u0641\u0645\u0628\u0631",
-      "\u062f\u064a\u0633\u0645\u0628\u0631"
-    ],
-    "fullDate": "EEEE\u060c d MMMM\u060c y",
-    "longDate": "d MMMM\u060c y",
-    "medium": "dd\u200f/MM\u200f/yyyy h:mm:ss a",
-    "mediumDate": "dd\u200f/MM\u200f/yyyy",
-    "mediumTime": "h:mm:ss a",
-    "short": "d\u200f/M\u200f/yyyy h:mm a",
-    "shortDate": "d\u200f/M\u200f/yyyy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u00a3",
-    "DECIMAL_SEP": "\u066b",
-    "GROUP_SEP": "\u066c",
-    "PATTERNS": [
-      {
-        "gSize": 0,
-        "lgSize": 0,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "",
-        "negSuf": "-",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 0,
-        "lgSize": 0,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "\u00a4\u00a0",
-        "negSuf": "-",
-        "posPre": "\u00a4\u00a0",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "ar-ae",
-  "pluralCat": function (n) {  if (n == 0) {   return PLURAL_CATEGORY.ZERO;  }  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  if (n == 2) {   return PLURAL_CATEGORY.TWO;  }  if (n == (n | 0) && n % 100 >= 3 && n % 100 <= 10) {   return PLURAL_CATEGORY.FEW;  }  if (n == (n | 0) && n % 100 >= 11 && n % 100 <= 99) {   return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-bh.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-bh.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-bh.js
deleted file mode 100644
index bb53289..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-bh.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u0635",
-      "\u0645"
-    ],
-    "DAY": [
-      "\u0627\u0644\u0623\u062d\u062f",
-      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
-      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
-      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
-      "\u0627\u0644\u062e\u0645\u064a\u0633",
-      "\u0627\u0644\u062c\u0645\u0639\u0629",
-      "\u0627\u0644\u0633\u0628\u062a"
-    ],
-    "MONTH": [
-      "\u064a\u0646\u0627\u064a\u0631",
-      "\u0641\u0628\u0631\u0627\u064a\u0631",
-      "\u0645\u0627\u0631\u0633",
-      "\u0623\u0628\u0631\u064a\u0644",
-      "\u0645\u0627\u064a\u0648",
-      "\u064a\u0648\u0646\u064a\u0648",
-      "\u064a\u0648\u0644\u064a\u0648",
-      "\u0623\u063a\u0633\u0637\u0633",
-      "\u0633\u0628\u062a\u0645\u0628\u0631",
-      "\u0623\u0643\u062a\u0648\u0628\u0631",
-      "\u0646\u0648\u0641\u0645\u0628\u0631",
-      "\u062f\u064a\u0633\u0645\u0628\u0631"
-    ],
-    "SHORTDAY": [
-      "\u0627\u0644\u0623\u062d\u062f",
-      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
-      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
-      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
-      "\u0627\u0644\u062e\u0645\u064a\u0633",
-      "\u0627\u0644\u062c\u0645\u0639\u0629",
-      "\u0627\u0644\u0633\u0628\u062a"
-    ],
-    "SHORTMONTH": [
-      "\u064a\u0646\u0627\u064a\u0631",
-      "\u0641\u0628\u0631\u0627\u064a\u0631",
-      "\u0645\u0627\u0631\u0633",
-      "\u0623\u0628\u0631\u064a\u0644",
-      "\u0645\u0627\u064a\u0648",
-      "\u064a\u0648\u0646\u064a\u0648",
-      "\u064a\u0648\u0644\u064a\u0648",
-      "\u0623\u063a\u0633\u0637\u0633",
-      "\u0633\u0628\u062a\u0645\u0628\u0631",
-      "\u0623\u0643\u062a\u0648\u0628\u0631",
-      "\u0646\u0648\u0641\u0645\u0628\u0631",
-      "\u062f\u064a\u0633\u0645\u0628\u0631"
-    ],
-    "fullDate": "EEEE\u060c d MMMM\u060c y",
-    "longDate": "d MMMM\u060c y",
-    "medium": "dd\u200f/MM\u200f/yyyy h:mm:ss a",
-    "mediumDate": "dd\u200f/MM\u200f/yyyy",
-    "mediumTime": "h:mm:ss a",
-    "short": "d\u200f/M\u200f/yyyy h:mm a",
-    "shortDate": "d\u200f/M\u200f/yyyy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u00a3",
-    "DECIMAL_SEP": "\u066b",
-    "GROUP_SEP": "\u066c",
-    "PATTERNS": [
-      {
-        "gSize": 0,
-        "lgSize": 0,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "",
-        "negSuf": "-",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 0,
-        "lgSize": 0,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "\u00a4\u00a0",
-        "negSuf": "-",
-        "posPre": "\u00a4\u00a0",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "ar-bh",
-  "pluralCat": function (n) {  if (n == 0) {   return PLURAL_CATEGORY.ZERO;  }  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  if (n == 2) {   return PLURAL_CATEGORY.TWO;  }  if (n == (n | 0) && n % 100 >= 3 && n % 100 <= 10) {   return PLURAL_CATEGORY.FEW;  }  if (n == (n | 0) && n % 100 >= 11 && n % 100 <= 99) {   return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-dz.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-dz.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-dz.js
deleted file mode 100644
index ab02398..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-dz.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u0635",
-      "\u0645"
-    ],
-    "DAY": [
-      "\u0627\u0644\u0623\u062d\u062f",
-      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
-      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
-      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
-      "\u0627\u0644\u062e\u0645\u064a\u0633",
-      "\u0627\u0644\u062c\u0645\u0639\u0629",
-      "\u0627\u0644\u0633\u0628\u062a"
-    ],
-    "MONTH": [
-      "\u064a\u0646\u0627\u064a\u0631",
-      "\u0641\u0628\u0631\u0627\u064a\u0631",
-      "\u0645\u0627\u0631\u0633",
-      "\u0623\u0628\u0631\u064a\u0644",
-      "\u0645\u0627\u064a\u0648",
-      "\u064a\u0648\u0646\u064a\u0648",
-      "\u064a\u0648\u0644\u064a\u0648",
-      "\u0623\u063a\u0633\u0637\u0633",
-      "\u0633\u0628\u062a\u0645\u0628\u0631",
-      "\u0623\u0643\u062a\u0648\u0628\u0631",
-      "\u0646\u0648\u0641\u0645\u0628\u0631",
-      "\u062f\u064a\u0633\u0645\u0628\u0631"
-    ],
-    "SHORTDAY": [
-      "\u0627\u0644\u0623\u062d\u062f",
-      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
-      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
-      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
-      "\u0627\u0644\u062e\u0645\u064a\u0633",
-      "\u0627\u0644\u062c\u0645\u0639\u0629",
-      "\u0627\u0644\u0633\u0628\u062a"
-    ],
-    "SHORTMONTH": [
-      "\u064a\u0646\u0627\u064a\u0631",
-      "\u0641\u0628\u0631\u0627\u064a\u0631",
-      "\u0645\u0627\u0631\u0633",
-      "\u0623\u0628\u0631\u064a\u0644",
-      "\u0645\u0627\u064a\u0648",
-      "\u064a\u0648\u0646\u064a\u0648",
-      "\u064a\u0648\u0644\u064a\u0648",
-      "\u0623\u063a\u0633\u0637\u0633",
-      "\u0633\u0628\u062a\u0645\u0628\u0631",
-      "\u0623\u0643\u062a\u0648\u0628\u0631",
-      "\u0646\u0648\u0641\u0645\u0628\u0631",
-      "\u062f\u064a\u0633\u0645\u0628\u0631"
-    ],
-    "fullDate": "EEEE\u060c d MMMM\u060c y",
-    "longDate": "d MMMM\u060c y",
-    "medium": "yyyy/MM/dd h:mm:ss a",
-    "mediumDate": "yyyy/MM/dd",
-    "mediumTime": "h:mm:ss a",
-    "short": "yyyy/M/d h:mm a",
-    "shortDate": "yyyy/M/d",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u00a3",
-    "DECIMAL_SEP": "\u066b",
-    "GROUP_SEP": "\u066c",
-    "PATTERNS": [
-      {
-        "gSize": 0,
-        "lgSize": 0,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "",
-        "negSuf": "-",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 0,
-        "lgSize": 0,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "\u00a4\u00a0",
-        "negSuf": "-",
-        "posPre": "\u00a4\u00a0",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "ar-dz",
-  "pluralCat": function (n) {  if (n == 0) {   return PLURAL_CATEGORY.ZERO;  }  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  if (n == 2) {   return PLURAL_CATEGORY.TWO;  }  if (n == (n | 0) && n % 100 >= 3 && n % 100 <= 10) {   return PLURAL_CATEGORY.FEW;  }  if (n == (n | 0) && n % 100 >= 11 && n % 100 <= 99) {   return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-eg.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-eg.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-eg.js
deleted file mode 100644
index 1a45444..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-eg.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u0635",
-      "\u0645"
-    ],
-    "DAY": [
-      "\u0627\u0644\u0623\u062d\u062f",
-      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
-      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
-      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
-      "\u0627\u0644\u062e\u0645\u064a\u0633",
-      "\u0627\u0644\u062c\u0645\u0639\u0629",
-      "\u0627\u0644\u0633\u0628\u062a"
-    ],
-    "MONTH": [
-      "\u064a\u0646\u0627\u064a\u0631",
-      "\u0641\u0628\u0631\u0627\u064a\u0631",
-      "\u0645\u0627\u0631\u0633",
-      "\u0623\u0628\u0631\u064a\u0644",
-      "\u0645\u0627\u064a\u0648",
-      "\u064a\u0648\u0646\u064a\u0648",
-      "\u064a\u0648\u0644\u064a\u0648",
-      "\u0623\u063a\u0633\u0637\u0633",
-      "\u0633\u0628\u062a\u0645\u0628\u0631",
-      "\u0623\u0643\u062a\u0648\u0628\u0631",
-      "\u0646\u0648\u0641\u0645\u0628\u0631",
-      "\u062f\u064a\u0633\u0645\u0628\u0631"
-    ],
-    "SHORTDAY": [
-      "\u0627\u0644\u0623\u062d\u062f",
-      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
-      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
-      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
-      "\u0627\u0644\u062e\u0645\u064a\u0633",
-      "\u0627\u0644\u062c\u0645\u0639\u0629",
-      "\u0627\u0644\u0633\u0628\u062a"
-    ],
-    "SHORTMONTH": [
-      "\u064a\u0646\u0627\u064a\u0631",
-      "\u0641\u0628\u0631\u0627\u064a\u0631",
-      "\u0645\u0627\u0631\u0633",
-      "\u0623\u0628\u0631\u064a\u0644",
-      "\u0645\u0627\u064a\u0648",
-      "\u064a\u0648\u0646\u064a\u0648",
-      "\u064a\u0648\u0644\u064a\u0648",
-      "\u0623\u063a\u0633\u0637\u0633",
-      "\u0633\u0628\u062a\u0645\u0628\u0631",
-      "\u0623\u0643\u062a\u0648\u0628\u0631",
-      "\u0646\u0648\u0641\u0645\u0628\u0631",
-      "\u062f\u064a\u0633\u0645\u0628\u0631"
-    ],
-    "fullDate": "EEEE\u060c d MMMM\u060c y",
-    "longDate": "d MMMM\u060c y",
-    "medium": "dd\u200f/MM\u200f/yyyy h:mm:ss a",
-    "mediumDate": "dd\u200f/MM\u200f/yyyy",
-    "mediumTime": "h:mm:ss a",
-    "short": "d\u200f/M\u200f/yyyy h:mm a",
-    "shortDate": "d\u200f/M\u200f/yyyy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u00a3",
-    "DECIMAL_SEP": "\u066b",
-    "GROUP_SEP": "\u066c",
-    "PATTERNS": [
-      {
-        "gSize": 0,
-        "lgSize": 0,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "",
-        "negSuf": "-",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 0,
-        "lgSize": 0,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "\u00a4\u00a0",
-        "negSuf": "-",
-        "posPre": "\u00a4\u00a0",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "ar-eg",
-  "pluralCat": function (n) {  if (n == 0) {   return PLURAL_CATEGORY.ZERO;  }  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  if (n == 2) {   return PLURAL_CATEGORY.TWO;  }  if (n == (n | 0) && n % 100 >= 3 && n % 100 <= 10) {   return PLURAL_CATEGORY.FEW;  }  if (n == (n | 0) && n % 100 >= 11 && n % 100 <= 99) {   return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-iq.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-iq.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-iq.js
deleted file mode 100644
index a141d14..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-iq.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u0635",
-      "\u0645"
-    ],
-    "DAY": [
-      "\u0627\u0644\u0623\u062d\u062f",
-      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
-      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
-      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
-      "\u0627\u0644\u062e\u0645\u064a\u0633",
-      "\u0627\u0644\u062c\u0645\u0639\u0629",
-      "\u0627\u0644\u0633\u0628\u062a"
-    ],
-    "MONTH": [
-      "\u064a\u0646\u0627\u064a\u0631",
-      "\u0641\u0628\u0631\u0627\u064a\u0631",
-      "\u0645\u0627\u0631\u0633",
-      "\u0623\u0628\u0631\u064a\u0644",
-      "\u0645\u0627\u064a\u0648",
-      "\u064a\u0648\u0646\u064a\u0648",
-      "\u064a\u0648\u0644\u064a\u0648",
-      "\u0623\u063a\u0633\u0637\u0633",
-      "\u0633\u0628\u062a\u0645\u0628\u0631",
-      "\u0623\u0643\u062a\u0648\u0628\u0631",
-      "\u0646\u0648\u0641\u0645\u0628\u0631",
-      "\u062f\u064a\u0633\u0645\u0628\u0631"
-    ],
-    "SHORTDAY": [
-      "\u0627\u0644\u0623\u062d\u062f",
-      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
-      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
-      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
-      "\u0627\u0644\u062e\u0645\u064a\u0633",
-      "\u0627\u0644\u062c\u0645\u0639\u0629",
-      "\u0627\u0644\u0633\u0628\u062a"
-    ],
-    "SHORTMONTH": [
-      "\u064a\u0646\u0627\u064a\u0631",
-      "\u0641\u0628\u0631\u0627\u064a\u0631",
-      "\u0645\u0627\u0631\u0633",
-      "\u0623\u0628\u0631\u064a\u0644",
-      "\u0645\u0627\u064a\u0648",
-      "\u064a\u0648\u0646\u064a\u0648",
-      "\u064a\u0648\u0644\u064a\u0648",
-      "\u0623\u063a\u0633\u0637\u0633",
-      "\u0633\u0628\u062a\u0645\u0628\u0631",
-      "\u0623\u0643\u062a\u0648\u0628\u0631",
-      "\u0646\u0648\u0641\u0645\u0628\u0631",
-      "\u062f\u064a\u0633\u0645\u0628\u0631"
-    ],
-    "fullDate": "EEEE\u060c d MMMM\u060c y",
-    "longDate": "d MMMM\u060c y",
-    "medium": "dd\u200f/MM\u200f/yyyy h:mm:ss a",
-    "mediumDate": "dd\u200f/MM\u200f/yyyy",
-    "mediumTime": "h:mm:ss a",
-    "short": "d\u200f/M\u200f/yyyy h:mm a",
-    "shortDate": "d\u200f/M\u200f/yyyy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u00a3",
-    "DECIMAL_SEP": "\u066b",
-    "GROUP_SEP": "\u066c",
-    "PATTERNS": [
-      {
-        "gSize": 0,
-        "lgSize": 0,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "",
-        "negSuf": "-",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 0,
-        "lgSize": 0,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "\u00a4\u00a0",
-        "negSuf": "-",
-        "posPre": "\u00a4\u00a0",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "ar-iq",
-  "pluralCat": function (n) {  if (n == 0) {   return PLURAL_CATEGORY.ZERO;  }  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  if (n == 2) {   return PLURAL_CATEGORY.TWO;  }  if (n == (n | 0) && n % 100 >= 3 && n % 100 <= 10) {   return PLURAL_CATEGORY.FEW;  }  if (n == (n | 0) && n % 100 >= 11 && n % 100 <= 99) {   return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-jo.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-jo.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-jo.js
deleted file mode 100644
index 67e5d70..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-jo.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u0635",
-      "\u0645"
-    ],
-    "DAY": [
-      "\u0627\u0644\u0623\u062d\u062f",
-      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
-      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
-      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
-      "\u0627\u0644\u062e\u0645\u064a\u0633",
-      "\u0627\u0644\u062c\u0645\u0639\u0629",
-      "\u0627\u0644\u0633\u0628\u062a"
-    ],
-    "MONTH": [
-      "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
-      "\u0634\u0628\u0627\u0637",
-      "\u0622\u0630\u0627\u0631",
-      "\u0646\u064a\u0633\u0627\u0646",
-      "\u0623\u064a\u0627\u0631",
-      "\u062d\u0632\u064a\u0631\u0627\u0646",
-      "\u062a\u0645\u0648\u0632",
-      "\u0622\u0628",
-      "\u0623\u064a\u0644\u0648\u0644",
-      "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644",
-      "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
-      "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644"
-    ],
-    "SHORTDAY": [
-      "\u0627\u0644\u0623\u062d\u062f",
-      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
-      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
-      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
-      "\u0627\u0644\u062e\u0645\u064a\u0633",
-      "\u0627\u0644\u062c\u0645\u0639\u0629",
-      "\u0627\u0644\u0633\u0628\u062a"
-    ],
-    "SHORTMONTH": [
-      "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
-      "\u0634\u0628\u0627\u0637",
-      "\u0622\u0630\u0627\u0631",
-      "\u0646\u064a\u0633\u0627\u0646",
-      "\u0623\u064a\u0627\u0631",
-      "\u062d\u0632\u064a\u0631\u0627\u0646",
-      "\u062a\u0645\u0648\u0632",
-      "\u0622\u0628",
-      "\u0623\u064a\u0644\u0648\u0644",
-      "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644",
-      "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
-      "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644"
-    ],
-    "fullDate": "EEEE\u060c d MMMM\u060c y",
-    "longDate": "d MMMM\u060c y",
-    "medium": "dd\u200f/MM\u200f/yyyy h:mm:ss a",
-    "mediumDate": "dd\u200f/MM\u200f/yyyy",
-    "mediumTime": "h:mm:ss a",
-    "short": "d\u200f/M\u200f/yyyy h:mm a",
-    "shortDate": "d\u200f/M\u200f/yyyy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u00a3",
-    "DECIMAL_SEP": "\u066b",
-    "GROUP_SEP": "\u066c",
-    "PATTERNS": [
-      {
-        "gSize": 0,
-        "lgSize": 0,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "",
-        "negSuf": "-",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 0,
-        "lgSize": 0,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "\u00a4\u00a0",
-        "negSuf": "-",
-        "posPre": "\u00a4\u00a0",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "ar-jo",
-  "pluralCat": function (n) {  if (n == 0) {   return PLURAL_CATEGORY.ZERO;  }  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  if (n == 2) {   return PLURAL_CATEGORY.TWO;  }  if (n == (n | 0) && n % 100 >= 3 && n % 100 <= 10) {   return PLURAL_CATEGORY.FEW;  }  if (n == (n | 0) && n % 100 >= 11 && n % 100 <= 99) {   return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-kw.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-kw.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-kw.js
deleted file mode 100644
index 7507c5a..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-kw.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u0635",
-      "\u0645"
-    ],
-    "DAY": [
-      "\u0627\u0644\u0623\u062d\u062f",
-      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
-      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
-      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
-      "\u0627\u0644\u062e\u0645\u064a\u0633",
-      "\u0627\u0644\u062c\u0645\u0639\u0629",
-      "\u0627\u0644\u0633\u0628\u062a"
-    ],
-    "MONTH": [
-      "\u064a\u0646\u0627\u064a\u0631",
-      "\u0641\u0628\u0631\u0627\u064a\u0631",
-      "\u0645\u0627\u0631\u0633",
-      "\u0623\u0628\u0631\u064a\u0644",
-      "\u0645\u0627\u064a\u0648",
-      "\u064a\u0648\u0646\u064a\u0648",
-      "\u064a\u0648\u0644\u064a\u0648",
-      "\u0623\u063a\u0633\u0637\u0633",
-      "\u0633\u0628\u062a\u0645\u0628\u0631",
-      "\u0623\u0643\u062a\u0648\u0628\u0631",
-      "\u0646\u0648\u0641\u0645\u0628\u0631",
-      "\u062f\u064a\u0633\u0645\u0628\u0631"
-    ],
-    "SHORTDAY": [
-      "\u0627\u0644\u0623\u062d\u062f",
-      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
-      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
-      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
-      "\u0627\u0644\u062e\u0645\u064a\u0633",
-      "\u0627\u0644\u062c\u0645\u0639\u0629",
-      "\u0627\u0644\u0633\u0628\u062a"
-    ],
-    "SHORTMONTH": [
-      "\u064a\u0646\u0627\u064a\u0631",
-      "\u0641\u0628\u0631\u0627\u064a\u0631",
-      "\u0645\u0627\u0631\u0633",
-      "\u0623\u0628\u0631\u064a\u0644",
-      "\u0645\u0627\u064a\u0648",
-      "\u064a\u0648\u0646\u064a\u0648",
-      "\u064a\u0648\u0644\u064a\u0648",
-      "\u0623\u063a\u0633\u0637\u0633",
-      "\u0633\u0628\u062a\u0645\u0628\u0631",
-      "\u0623\u0643\u062a\u0648\u0628\u0631",
-      "\u0646\u0648\u0641\u0645\u0628\u0631",
-      "\u062f\u064a\u0633\u0645\u0628\u0631"
-    ],
-    "fullDate": "EEEE\u060c d MMMM\u060c y",
-    "longDate": "d MMMM\u060c y",
-    "medium": "dd\u200f/MM\u200f/yyyy h:mm:ss a",
-    "mediumDate": "dd\u200f/MM\u200f/yyyy",
-    "mediumTime": "h:mm:ss a",
-    "short": "d\u200f/M\u200f/yyyy h:mm a",
-    "shortDate": "d\u200f/M\u200f/yyyy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u00a3",
-    "DECIMAL_SEP": "\u066b",
-    "GROUP_SEP": "\u066c",
-    "PATTERNS": [
-      {
-        "gSize": 0,
-        "lgSize": 0,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "",
-        "negSuf": "-",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 0,
-        "lgSize": 0,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "\u00a4\u00a0",
-        "negSuf": "-",
-        "posPre": "\u00a4\u00a0",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "ar-kw",
-  "pluralCat": function (n) {  if (n == 0) {   return PLURAL_CATEGORY.ZERO;  }  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  if (n == 2) {   return PLURAL_CATEGORY.TWO;  }  if (n == (n | 0) && n % 100 >= 3 && n % 100 <= 10) {   return PLURAL_CATEGORY.FEW;  }  if (n == (n | 0) && n % 100 >= 11 && n % 100 <= 99) {   return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-lb.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-lb.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-lb.js
deleted file mode 100644
index 8c867b6..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-lb.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u0635",
-      "\u0645"
-    ],
-    "DAY": [
-      "\u0627\u0644\u0623\u062d\u062f",
-      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
-      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
-      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
-      "\u0627\u0644\u062e\u0645\u064a\u0633",
-      "\u0627\u0644\u062c\u0645\u0639\u0629",
-      "\u0627\u0644\u0633\u0628\u062a"
-    ],
-    "MONTH": [
-      "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
-      "\u0634\u0628\u0627\u0637",
-      "\u0622\u0630\u0627\u0631",
-      "\u0646\u064a\u0633\u0627\u0646",
-      "\u0623\u064a\u0627\u0631",
-      "\u062d\u0632\u064a\u0631\u0627\u0646",
-      "\u062a\u0645\u0648\u0632",
-      "\u0622\u0628",
-      "\u0623\u064a\u0644\u0648\u0644",
-      "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644",
-      "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
-      "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644"
-    ],
-    "SHORTDAY": [
-      "\u0627\u0644\u0623\u062d\u062f",
-      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
-      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
-      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
-      "\u0627\u0644\u062e\u0645\u064a\u0633",
-      "\u0627\u0644\u062c\u0645\u0639\u0629",
-      "\u0627\u0644\u0633\u0628\u062a"
-    ],
-    "SHORTMONTH": [
-      "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
-      "\u0634\u0628\u0627\u0637",
-      "\u0622\u0630\u0627\u0631",
-      "\u0646\u064a\u0633\u0627\u0646",
-      "\u0623\u064a\u0627\u0631",
-      "\u062d\u0632\u064a\u0631\u0627\u0646",
-      "\u062a\u0645\u0648\u0632",
-      "\u0622\u0628",
-      "\u0623\u064a\u0644\u0648\u0644",
-      "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644",
-      "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
-      "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644"
-    ],
-    "fullDate": "EEEE\u060c d MMMM\u060c y",
-    "longDate": "d MMMM\u060c y",
-    "medium": "dd\u200f/MM\u200f/yyyy h:mm:ss a",
-    "mediumDate": "dd\u200f/MM\u200f/yyyy",
-    "mediumTime": "h:mm:ss a",
-    "short": "d\u200f/M\u200f/yyyy h:mm a",
-    "shortDate": "d\u200f/M\u200f/yyyy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u00a3",
-    "DECIMAL_SEP": "\u066b",
-    "GROUP_SEP": "\u066c",
-    "PATTERNS": [
-      {
-        "gSize": 0,
-        "lgSize": 0,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "",
-        "negSuf": "-",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 0,
-        "lgSize": 0,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "\u00a4\u00a0",
-        "negSuf": "-",
-        "posPre": "\u00a4\u00a0",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "ar-lb",
-  "pluralCat": function (n) {  if (n == 0) {   return PLURAL_CATEGORY.ZERO;  }  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  if (n == 2) {   return PLURAL_CATEGORY.TWO;  }  if (n == (n | 0) && n % 100 >= 3 && n % 100 <= 10) {   return PLURAL_CATEGORY.FEW;  }  if (n == (n | 0) && n % 100 >= 11 && n % 100 <= 99) {   return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-ly.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-ly.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-ly.js
deleted file mode 100644
index 4b59d39..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-ly.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u0635",
-      "\u0645"
-    ],
-    "DAY": [
-      "\u0627\u0644\u0623\u062d\u062f",
-      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
-      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
-      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
-      "\u0627\u0644\u062e\u0645\u064a\u0633",
-      "\u0627\u0644\u062c\u0645\u0639\u0629",
-      "\u0627\u0644\u0633\u0628\u062a"
-    ],
-    "MONTH": [
-      "\u064a\u0646\u0627\u064a\u0631",
-      "\u0641\u0628\u0631\u0627\u064a\u0631",
-      "\u0645\u0627\u0631\u0633",
-      "\u0623\u0628\u0631\u064a\u0644",
-      "\u0645\u0627\u064a\u0648",
-      "\u064a\u0648\u0646\u064a\u0648",
-      "\u064a\u0648\u0644\u064a\u0648",
-      "\u0623\u063a\u0633\u0637\u0633",
-      "\u0633\u0628\u062a\u0645\u0628\u0631",
-      "\u0623\u0643\u062a\u0648\u0628\u0631",
-      "\u0646\u0648\u0641\u0645\u0628\u0631",
-      "\u062f\u064a\u0633\u0645\u0628\u0631"
-    ],
-    "SHORTDAY": [
-      "\u0627\u0644\u0623\u062d\u062f",
-      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
-      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
-      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
-      "\u0627\u0644\u062e\u0645\u064a\u0633",
-      "\u0627\u0644\u062c\u0645\u0639\u0629",
-      "\u0627\u0644\u0633\u0628\u062a"
-    ],
-    "SHORTMONTH": [
-      "\u064a\u0646\u0627\u064a\u0631",
-      "\u0641\u0628\u0631\u0627\u064a\u0631",
-      "\u0645\u0627\u0631\u0633",
-      "\u0623\u0628\u0631\u064a\u0644",
-      "\u0645\u0627\u064a\u0648",
-      "\u064a\u0648\u0646\u064a\u0648",
-      "\u064a\u0648\u0644\u064a\u0648",
-      "\u0623\u063a\u0633\u0637\u0633",
-      "\u0633\u0628\u062a\u0645\u0628\u0631",
-      "\u0623\u0643\u062a\u0648\u0628\u0631",
-      "\u0646\u0648\u0641\u0645\u0628\u0631",
-      "\u062f\u064a\u0633\u0645\u0628\u0631"
-    ],
-    "fullDate": "EEEE\u060c d MMMM\u060c y",
-    "longDate": "d MMMM\u060c y",
-    "medium": "dd\u200f/MM\u200f/yyyy h:mm:ss a",
-    "mediumDate": "dd\u200f/MM\u200f/yyyy",
-    "mediumTime": "h:mm:ss a",
-    "short": "d\u200f/M\u200f/yyyy h:mm a",
-    "shortDate": "d\u200f/M\u200f/yyyy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u00a3",
-    "DECIMAL_SEP": "\u066b",
-    "GROUP_SEP": "\u066c",
-    "PATTERNS": [
-      {
-        "gSize": 0,
-        "lgSize": 0,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "",
-        "negSuf": "-",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 0,
-        "lgSize": 0,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "\u00a4\u00a0",
-        "negSuf": "-",
-        "posPre": "\u00a4\u00a0",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "ar-ly",
-  "pluralCat": function (n) {  if (n == 0) {   return PLURAL_CATEGORY.ZERO;  }  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  if (n == 2) {   return PLURAL_CATEGORY.TWO;  }  if (n == (n | 0) && n % 100 >= 3 && n % 100 <= 10) {   return PLURAL_CATEGORY.FEW;  }  if (n == (n | 0) && n % 100 >= 11 && n % 100 <= 99) {   return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-ma.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-ma.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-ma.js
deleted file mode 100644
index 44fcfcc..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-ma.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u0635",
-      "\u0645"
-    ],
-    "DAY": [
-      "\u0627\u0644\u0623\u062d\u062f",
-      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
-      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
-      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
-      "\u0627\u0644\u062e\u0645\u064a\u0633",
-      "\u0627\u0644\u062c\u0645\u0639\u0629",
-      "\u0627\u0644\u0633\u0628\u062a"
-    ],
-    "MONTH": [
-      "\u064a\u0646\u0627\u064a\u0631",
-      "\u0641\u0628\u0631\u0627\u064a\u0631",
-      "\u0645\u0627\u0631\u0633",
-      "\u0623\u0628\u0631\u064a\u0644",
-      "\u0645\u0627\u064a\u0648",
-      "\u064a\u0648\u0646\u064a\u0648",
-      "\u064a\u0648\u0644\u064a\u0648",
-      "\u0623\u063a\u0633\u0637\u0633",
-      "\u0633\u0628\u062a\u0645\u0628\u0631",
-      "\u0623\u0643\u062a\u0648\u0628\u0631",
-      "\u0646\u0648\u0641\u0645\u0628\u0631",
-      "\u062f\u064a\u0633\u0645\u0628\u0631"
-    ],
-    "SHORTDAY": [
-      "\u0627\u0644\u0623\u062d\u062f",
-      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
-      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
-      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
-      "\u0627\u0644\u062e\u0645\u064a\u0633",
-      "\u0627\u0644\u062c\u0645\u0639\u0629",
-      "\u0627\u0644\u0633\u0628\u062a"
-    ],
-    "SHORTMONTH": [
-      "\u064a\u0646\u0627\u064a\u0631",
-      "\u0641\u0628\u0631\u0627\u064a\u0631",
-      "\u0645\u0627\u0631\u0633",
-      "\u0623\u0628\u0631\u064a\u0644",
-      "\u0645\u0627\u064a\u0648",
-      "\u064a\u0648\u0646\u064a\u0648",
-      "\u064a\u0648\u0644\u064a\u0648",
-      "\u0623\u063a\u0633\u0637\u0633",
-      "\u0633\u0628\u062a\u0645\u0628\u0631",
-      "\u0623\u0643\u062a\u0648\u0628\u0631",
-      "\u0646\u0648\u0641\u0645\u0628\u0631",
-      "\u062f\u064a\u0633\u0645\u0628\u0631"
-    ],
-    "fullDate": "EEEE\u060c d MMMM\u060c y",
-    "longDate": "d MMMM\u060c y",
-    "medium": "yyyy/MM/dd h:mm:ss a",
-    "mediumDate": "yyyy/MM/dd",
-    "mediumTime": "h:mm:ss a",
-    "short": "yyyy/M/d h:mm a",
-    "shortDate": "yyyy/M/d",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u00a3",
-    "DECIMAL_SEP": "\u066b",
-    "GROUP_SEP": "\u066c",
-    "PATTERNS": [
-      {
-        "gSize": 0,
-        "lgSize": 0,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "",
-        "negSuf": "-",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 0,
-        "lgSize": 0,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "\u00a4\u00a0",
-        "negSuf": "-",
-        "posPre": "\u00a4\u00a0",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "ar-ma",
-  "pluralCat": function (n) {  if (n == 0) {   return PLURAL_CATEGORY.ZERO;  }  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  if (n == 2) {   return PLURAL_CATEGORY.TWO;  }  if (n == (n | 0) && n % 100 >= 3 && n % 100 <= 10) {   return PLURAL_CATEGORY.FEW;  }  if (n == (n | 0) && n % 100 >= 11 && n % 100 <= 99) {   return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-om.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-om.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-om.js
deleted file mode 100644
index 822aede..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-om.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u0635",
-      "\u0645"
-    ],
-    "DAY": [
-      "\u0627\u0644\u0623\u062d\u062f",
-      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
-      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
-      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
-      "\u0627\u0644\u062e\u0645\u064a\u0633",
-      "\u0627\u0644\u062c\u0645\u0639\u0629",
-      "\u0627\u0644\u0633\u0628\u062a"
-    ],
-    "MONTH": [
-      "\u064a\u0646\u0627\u064a\u0631",
-      "\u0641\u0628\u0631\u0627\u064a\u0631",
-      "\u0645\u0627\u0631\u0633",
-      "\u0623\u0628\u0631\u064a\u0644",
-      "\u0645\u0627\u064a\u0648",
-      "\u064a\u0648\u0646\u064a\u0648",
-      "\u064a\u0648\u0644\u064a\u0648",
-      "\u0623\u063a\u0633\u0637\u0633",
-      "\u0633\u0628\u062a\u0645\u0628\u0631",
-      "\u0623\u0643\u062a\u0648\u0628\u0631",
-      "\u0646\u0648\u0641\u0645\u0628\u0631",
-      "\u062f\u064a\u0633\u0645\u0628\u0631"
-    ],
-    "SHORTDAY": [
-      "\u0627\u0644\u0623\u062d\u062f",
-      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
-      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
-      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
-      "\u0627\u0644\u062e\u0645\u064a\u0633",
-      "\u0627\u0644\u062c\u0645\u0639\u0629",
-      "\u0627\u0644\u0633\u0628\u062a"
-    ],
-    "SHORTMONTH": [
-      "\u064a\u0646\u0627\u064a\u0631",
-      "\u0641\u0628\u0631\u0627\u064a\u0631",
-      "\u0645\u0627\u0631\u0633",
-      "\u0623\u0628\u0631\u064a\u0644",
-      "\u0645\u0627\u064a\u0648",
-      "\u064a\u0648\u0646\u064a\u0648",
-      "\u064a\u0648\u0644\u064a\u0648",
-      "\u0623\u063a\u0633\u0637\u0633",
-      "\u0633\u0628\u062a\u0645\u0628\u0631",
-      "\u0623\u0643\u062a\u0648\u0628\u0631",
-      "\u0646\u0648\u0641\u0645\u0628\u0631",
-      "\u062f\u064a\u0633\u0645\u0628\u0631"
-    ],
-    "fullDate": "EEEE\u060c d MMMM\u060c y",
-    "longDate": "d MMMM\u060c y",
-    "medium": "dd\u200f/MM\u200f/yyyy h:mm:ss a",
-    "mediumDate": "dd\u200f/MM\u200f/yyyy",
-    "mediumTime": "h:mm:ss a",
-    "short": "d\u200f/M\u200f/yyyy h:mm a",
-    "shortDate": "d\u200f/M\u200f/yyyy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u00a3",
-    "DECIMAL_SEP": "\u066b",
-    "GROUP_SEP": "\u066c",
-    "PATTERNS": [
-      {
-        "gSize": 0,
-        "lgSize": 0,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "",
-        "negSuf": "-",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 0,
-        "lgSize": 0,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "\u00a4\u00a0",
-        "negSuf": "-",
-        "posPre": "\u00a4\u00a0",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "ar-om",
-  "pluralCat": function (n) {  if (n == 0) {   return PLURAL_CATEGORY.ZERO;  }  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  if (n == 2) {   return PLURAL_CATEGORY.TWO;  }  if (n == (n | 0) && n % 100 >= 3 && n % 100 <= 10) {   return PLURAL_CATEGORY.FEW;  }  if (n == (n | 0) && n % 100 >= 11 && n % 100 <= 99) {   return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-qa.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-qa.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-qa.js
deleted file mode 100644
index f7dfd65..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-qa.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u0635",
-      "\u0645"
-    ],
-    "DAY": [
-      "\u0627\u0644\u0623\u062d\u062f",
-      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
-      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
-      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
-      "\u0627\u0644\u062e\u0645\u064a\u0633",
-      "\u0627\u0644\u062c\u0645\u0639\u0629",
-      "\u0627\u0644\u0633\u0628\u062a"
-    ],
-    "MONTH": [
-      "\u064a\u0646\u0627\u064a\u0631",
-      "\u0641\u0628\u0631\u0627\u064a\u0631",
-      "\u0645\u0627\u0631\u0633",
-      "\u0623\u0628\u0631\u064a\u0644",
-      "\u0645\u0627\u064a\u0648",
-      "\u064a\u0648\u0646\u064a\u0648",
-      "\u064a\u0648\u0644\u064a\u0648",
-      "\u0623\u063a\u0633\u0637\u0633",
-      "\u0633\u0628\u062a\u0645\u0628\u0631",
-      "\u0623\u0643\u062a\u0648\u0628\u0631",
-      "\u0646\u0648\u0641\u0645\u0628\u0631",
-      "\u062f\u064a\u0633\u0645\u0628\u0631"
-    ],
-    "SHORTDAY": [
-      "\u0627\u0644\u0623\u062d\u062f",
-      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
-      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
-      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
-      "\u0627\u0644\u062e\u0645\u064a\u0633",
-      "\u0627\u0644\u062c\u0645\u0639\u0629",
-      "\u0627\u0644\u0633\u0628\u062a"
-    ],
-    "SHORTMONTH": [
-      "\u064a\u0646\u0627\u064a\u0631",
-      "\u0641\u0628\u0631\u0627\u064a\u0631",
-      "\u0645\u0627\u0631\u0633",
-      "\u0623\u0628\u0631\u064a\u0644",
-      "\u0645\u0627\u064a\u0648",
-      "\u064a\u0648\u0646\u064a\u0648",
-      "\u064a\u0648\u0644\u064a\u0648",
-      "\u0623\u063a\u0633\u0637\u0633",
-      "\u0633\u0628\u062a\u0645\u0628\u0631",
-      "\u0623\u0643\u062a\u0648\u0628\u0631",
-      "\u0646\u0648\u0641\u0645\u0628\u0631",
-      "\u062f\u064a\u0633\u0645\u0628\u0631"
-    ],
-    "fullDate": "EEEE\u060c d MMMM\u060c y",
-    "longDate": "d MMMM\u060c y",
-    "medium": "dd\u200f/MM\u200f/yyyy h:mm:ss a",
-    "mediumDate": "dd\u200f/MM\u200f/yyyy",
-    "mediumTime": "h:mm:ss a",
-    "short": "d\u200f/M\u200f/yyyy h:mm a",
-    "shortDate": "d\u200f/M\u200f/yyyy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u00a3",
-    "DECIMAL_SEP": "\u066b",
-    "GROUP_SEP": "\u066c",
-    "PATTERNS": [
-      {
-        "gSize": 0,
-        "lgSize": 0,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "",
-        "negSuf": "-",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 0,
-        "lgSize": 0,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "\u00a4\u00a0",
-        "negSuf": "-",
-        "posPre": "\u00a4\u00a0",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "ar-qa",
-  "pluralCat": function (n) {  if (n == 0) {   return PLURAL_CATEGORY.ZERO;  }  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  if (n == 2) {   return PLURAL_CATEGORY.TWO;  }  if (n == (n | 0) && n % 100 >= 3 && n % 100 <= 10) {   return PLURAL_CATEGORY.FEW;  }  if (n == (n | 0) && n % 100 >= 11 && n % 100 <= 99) {   return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-sa.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-sa.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-sa.js
deleted file mode 100644
index 8ee44d4..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-sa.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u0635",
-      "\u0645"
-    ],
-    "DAY": [
-      "\u0627\u0644\u0623\u062d\u062f",
-      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
-      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
-      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
-      "\u0627\u0644\u062e\u0645\u064a\u0633",
-      "\u0627\u0644\u062c\u0645\u0639\u0629",
-      "\u0627\u0644\u0633\u0628\u062a"
-    ],
-    "MONTH": [
-      "\u064a\u0646\u0627\u064a\u0631",
-      "\u0641\u0628\u0631\u0627\u064a\u0631",
-      "\u0645\u0627\u0631\u0633",
-      "\u0623\u0628\u0631\u064a\u0644",
-      "\u0645\u0627\u064a\u0648",
-      "\u064a\u0648\u0646\u064a\u0648",
-      "\u064a\u0648\u0644\u064a\u0648",
-      "\u0623\u063a\u0633\u0637\u0633",
-      "\u0633\u0628\u062a\u0645\u0628\u0631",
-      "\u0623\u0643\u062a\u0648\u0628\u0631",
-      "\u0646\u0648\u0641\u0645\u0628\u0631",
-      "\u062f\u064a\u0633\u0645\u0628\u0631"
-    ],
-    "SHORTDAY": [
-      "\u0627\u0644\u0623\u062d\u062f",
-      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
-      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
-      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
-      "\u0627\u0644\u062e\u0645\u064a\u0633",
-      "\u0627\u0644\u062c\u0645\u0639\u0629",
-      "\u0627\u0644\u0633\u0628\u062a"
-    ],
-    "SHORTMONTH": [
-      "\u064a\u0646\u0627\u064a\u0631",
-      "\u0641\u0628\u0631\u0627\u064a\u0631",
-      "\u0645\u0627\u0631\u0633",
-      "\u0623\u0628\u0631\u064a\u0644",
-      "\u0645\u0627\u064a\u0648",
-      "\u064a\u0648\u0646\u064a\u0648",
-      "\u064a\u0648\u0644\u064a\u0648",
-      "\u0623\u063a\u0633\u0637\u0633",
-      "\u0633\u0628\u062a\u0645\u0628\u0631",
-      "\u0623\u0643\u062a\u0648\u0628\u0631",
-      "\u0646\u0648\u0641\u0645\u0628\u0631",
-      "\u062f\u064a\u0633\u0645\u0628\u0631"
-    ],
-    "fullDate": "EEEE\u060c d MMMM\u060c y",
-    "longDate": "d MMMM\u060c y",
-    "medium": "dd\u200f/MM\u200f/yyyy h:mm:ss a",
-    "mediumDate": "dd\u200f/MM\u200f/yyyy",
-    "mediumTime": "h:mm:ss a",
-    "short": "d\u200f/M\u200f/yyyy h:mm a",
-    "shortDate": "d\u200f/M\u200f/yyyy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u00a3",
-    "DECIMAL_SEP": "\u066b",
-    "GROUP_SEP": "\u066c",
-    "PATTERNS": [
-      {
-        "gSize": 0,
-        "lgSize": 0,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "",
-        "negSuf": "-",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 0,
-        "lgSize": 0,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "\u00a4\u00a0",
-        "negSuf": "-",
-        "posPre": "\u00a4\u00a0",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "ar-sa",
-  "pluralCat": function (n) {  if (n == 0) {   return PLURAL_CATEGORY.ZERO;  }  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  if (n == 2) {   return PLURAL_CATEGORY.TWO;  }  if (n == (n | 0) && n % 100 >= 3 && n % 100 <= 10) {   return PLURAL_CATEGORY.FEW;  }  if (n == (n | 0) && n % 100 >= 11 && n % 100 <= 99) {   return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-sd.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-sd.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-sd.js
deleted file mode 100644
index 0141e05..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-sd.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u0635",
-      "\u0645"
-    ],
-    "DAY": [
-      "\u0627\u0644\u0623\u062d\u062f",
-      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
-      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
-      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
-      "\u0627\u0644\u062e\u0645\u064a\u0633",
-      "\u0627\u0644\u062c\u0645\u0639\u0629",
-      "\u0627\u0644\u0633\u0628\u062a"
-    ],
-    "MONTH": [
-      "\u064a\u0646\u0627\u064a\u0631",
-      "\u0641\u0628\u0631\u0627\u064a\u0631",
-      "\u0645\u0627\u0631\u0633",
-      "\u0623\u0628\u0631\u064a\u0644",
-      "\u0645\u0627\u064a\u0648",
-      "\u064a\u0648\u0646\u064a\u0648",
-      "\u064a\u0648\u0644\u064a\u0648",
-      "\u0623\u063a\u0633\u0637\u0633",
-      "\u0633\u0628\u062a\u0645\u0628\u0631",
-      "\u0623\u0643\u062a\u0648\u0628\u0631",
-      "\u0646\u0648\u0641\u0645\u0628\u0631",
-      "\u062f\u064a\u0633\u0645\u0628\u0631"
-    ],
-    "SHORTDAY": [
-      "\u0627\u0644\u0623\u062d\u062f",
-      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
-      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
-      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
-      "\u0627\u0644\u062e\u0645\u064a\u0633",
-      "\u0627\u0644\u062c\u0645\u0639\u0629",
-      "\u0627\u0644\u0633\u0628\u062a"
-    ],
-    "SHORTMONTH": [
-      "\u064a\u0646\u0627\u064a\u0631",
-      "\u0641\u0628\u0631\u0627\u064a\u0631",
-      "\u0645\u0627\u0631\u0633",
-      "\u0623\u0628\u0631\u064a\u0644",
-      "\u0645\u0627\u064a\u0648",
-      "\u064a\u0648\u0646\u064a\u0648",
-      "\u064a\u0648\u0644\u064a\u0648",
-      "\u0623\u063a\u0633\u0637\u0633",
-      "\u0633\u0628\u062a\u0645\u0628\u0631",
-      "\u0623\u0643\u062a\u0648\u0628\u0631",
-      "\u0646\u0648\u0641\u0645\u0628\u0631",
-      "\u062f\u064a\u0633\u0645\u0628\u0631"
-    ],
-    "fullDate": "EEEE\u060c d MMMM\u060c y",
-    "longDate": "d MMMM\u060c y",
-    "medium": "dd\u200f/MM\u200f/yyyy h:mm:ss a",
-    "mediumDate": "dd\u200f/MM\u200f/yyyy",
-    "mediumTime": "h:mm:ss a",
-    "short": "d\u200f/M\u200f/yyyy h:mm a",
-    "shortDate": "d\u200f/M\u200f/yyyy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u00a3",
-    "DECIMAL_SEP": "\u066b",
-    "GROUP_SEP": "\u066c",
-    "PATTERNS": [
-      {
-        "gSize": 0,
-        "lgSize": 0,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "",
-        "negSuf": "-",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 0,
-        "lgSize": 0,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "\u00a4\u00a0",
-        "negSuf": "-",
-        "posPre": "\u00a4\u00a0",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "ar-sd",
-  "pluralCat": function (n) {  if (n == 0) {   return PLURAL_CATEGORY.ZERO;  }  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  if (n == 2) {   return PLURAL_CATEGORY.TWO;  }  if (n == (n | 0) && n % 100 >= 3 && n % 100 <= 10) {   return PLURAL_CATEGORY.FEW;  }  if (n == (n | 0) && n % 100 >= 11 && n % 100 <= 99) {   return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-sy.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-sy.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-sy.js
deleted file mode 100644
index cb324e8..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-sy.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u0635",
-      "\u0645"
-    ],
-    "DAY": [
-      "\u0627\u0644\u0623\u062d\u062f",
-      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
-      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
-      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
-      "\u0627\u0644\u062e\u0645\u064a\u0633",
-      "\u0627\u0644\u062c\u0645\u0639\u0629",
-      "\u0627\u0644\u0633\u0628\u062a"
-    ],
-    "MONTH": [
-      "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
-      "\u0634\u0628\u0627\u0637",
-      "\u0622\u0630\u0627\u0631",
-      "\u0646\u064a\u0633\u0627\u0646",
-      "\u0623\u064a\u0627\u0631",
-      "\u062d\u0632\u064a\u0631\u0627\u0646",
-      "\u062a\u0645\u0648\u0632",
-      "\u0622\u0628",
-      "\u0623\u064a\u0644\u0648\u0644",
-      "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644",
-      "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
-      "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644"
-    ],
-    "SHORTDAY": [
-      "\u0627\u0644\u0623\u062d\u062f",
-      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
-      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
-      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
-      "\u0627\u0644\u062e\u0645\u064a\u0633",
-      "\u0627\u0644\u062c\u0645\u0639\u0629",
-      "\u0627\u0644\u0633\u0628\u062a"
-    ],
-    "SHORTMONTH": [
-      "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
-      "\u0634\u0628\u0627\u0637",
-      "\u0622\u0630\u0627\u0631",
-      "\u0646\u064a\u0633\u0627\u0646",
-      "\u0623\u064a\u0627\u0631",
-      "\u062d\u0632\u064a\u0631\u0627\u0646",
-      "\u062a\u0645\u0648\u0632",
-      "\u0622\u0628",
-      "\u0623\u064a\u0644\u0648\u0644",
-      "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644",
-      "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
-      "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644"
-    ],
-    "fullDate": "EEEE\u060c d MMMM\u060c y",
-    "longDate": "d MMMM\u060c y",
-    "medium": "dd\u200f/MM\u200f/yyyy h:mm:ss a",
-    "mediumDate": "dd\u200f/MM\u200f/yyyy",
-    "mediumTime": "h:mm:ss a",
-    "short": "d\u200f/M\u200f/yyyy h:mm a",
-    "shortDate": "d\u200f/M\u200f/yyyy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u00a3",
-    "DECIMAL_SEP": "\u066b",
-    "GROUP_SEP": "\u066c",
-    "PATTERNS": [
-      {
-        "gSize": 0,
-        "lgSize": 0,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "",
-        "negSuf": "-",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 0,
-        "lgSize": 0,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "\u00a4\u00a0",
-        "negSuf": "-",
-        "posPre": "\u00a4\u00a0",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "ar-sy",
-  "pluralCat": function (n) {  if (n == 0) {   return PLURAL_CATEGORY.ZERO;  }  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  if (n == 2) {   return PLURAL_CATEGORY.TWO;  }  if (n == (n | 0) && n % 100 >= 3 && n % 100 <= 10) {   return PLURAL_CATEGORY.FEW;  }  if (n == (n | 0) && n % 100 >= 11 && n % 100 <= 99) {   return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file


[66/71] [abbrv] brooklyn-ui git commit: clean up how locations are rendered in the js gui, and expand "delete"

Posted by he...@apache.org.
clean up how locations are rendered in the js gui, and expand "delete"

there was (is) confusion between catalog name and location displayName and a named location.
it deserves a major sort-out, i think treating location defs as catalog items and location instances as entities;
and only using the catalog api, not a dedicated locations api (or if there is, it delegates to catalog),
also removing all the LocationManager blah.

but until then we needed something which avoided confusion where catalog item names for locations
aren't rendered, and magic display names from location-metadata were being showed so it looked
like nothing was being added, though the location worked.

for locations, a catalog item name now does nothing, but the location's name (i.e. human-readable ID aka catalog item ID, not the display name)
is shown in the catalog accordion list (the "IdentifierName"), better info (but not the full yaml yet) is shown in the detail,
and versions are at least handled without bugs, even if only one version for location is really supported in the gui.

also adds delete for entity and apps and policies, and fixes delete for locations.


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/commit/0ccf9222
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/tree/0ccf9222
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/diff/0ccf9222

Branch: refs/heads/0.7.0-incubating
Commit: 0ccf9222d3a2d38421697b6fa50db24d88099ceb
Parents: dcbed70
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Sun Jun 21 12:21:21 2015 -0700
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Sun Jun 21 14:30:07 2015 -0700

----------------------------------------------------------------------
 .../assets/js/model/catalog-item-summary.js     |  7 +--
 .../src/main/webapp/assets/js/model/location.js |  6 +++
 .../src/main/webapp/assets/js/view/catalog.js   | 46 +++++++++++++++++---
 .../assets/tpl/catalog/details-entity.html      |  5 +++
 .../assets/tpl/catalog/details-generic.html     |  4 ++
 .../assets/tpl/catalog/details-location.html    | 22 ++++++----
 6 files changed, 71 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/0ccf9222/usage/jsgui/src/main/webapp/assets/js/model/catalog-item-summary.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/js/model/catalog-item-summary.js b/usage/jsgui/src/main/webapp/assets/js/model/catalog-item-summary.js
index 2d8da58..60d1eda 100644
--- a/usage/jsgui/src/main/webapp/assets/js/model/catalog-item-summary.js
+++ b/usage/jsgui/src/main/webapp/assets/js/model/catalog-item-summary.js
@@ -19,8 +19,9 @@
 define(["underscore", "backbone"], function (_, Backbone) {
 
     // NB: THIS IS NOT USED CURRENTLY
-    // the logic in application-add-wizard.js simply loads and manipulates json
-    // TODO change that so that it uses this backbone model + collection 
+    // the logic in application-add-wizard.js simply loads and manipulates json;
+    // logic in catalog.js (view) defines its own local model
+    // TODO change those so that they use this backbone model + collection,
     // allowing a way to specify on creation what we are looking up in the catalog -- apps or entities or policies
     
     var CatalogItem = {}
@@ -40,7 +41,7 @@ define(["underscore", "backbone"], function (_, Backbone) {
 
     CatalogItem.Collection = Backbone.Collection.extend({
         model:CatalogItem.Model,
-        url:'/v1/catalog'  // TODO is this application or entities or policies?
+        url:'/v1/catalog'  // TODO is this application or entities or policies? (but note THIS IS NOT USED)
     })
 
     return CatalogItem

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/0ccf9222/usage/jsgui/src/main/webapp/assets/js/model/location.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/js/model/location.js b/usage/jsgui/src/main/webapp/assets/js/model/location.js
index 3bb3db2..4e33860 100644
--- a/usage/jsgui/src/main/webapp/assets/js/model/location.js
+++ b/usage/jsgui/src/main/webapp/assets/js/model/location.js
@@ -69,6 +69,12 @@ define(["underscore", "backbone"], function (_, Backbone) {
             name = this.get('name')
             if (name!=null && name.length>0) return name
             return this.get('spec')
+        },
+        getIdentifierName: function() {
+            var name = null;
+            name = this.get('name')
+            if (name!=null && name.length>0) return name
+            return this.get('spec')
         }
 
     })

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/0ccf9222/usage/jsgui/src/main/webapp/assets/js/view/catalog.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/js/view/catalog.js b/usage/jsgui/src/main/webapp/assets/js/view/catalog.js
index 68b3c6f..51d8a0a 100644
--- a/usage/jsgui/src/main/webapp/assets/js/view/catalog.js
+++ b/usage/jsgui/src/main/webapp/assets/js/view/catalog.js
@@ -113,9 +113,16 @@ define([
             // Could use wait flag to block removal of model from collection
             // until server confirms deletion and success handler to perform
             // removal. Useful if delete fails for e.g. lack of entitlement.
-            this.activeModel.destroy();
-            var displayName = $(event.currentTarget).data("name");
-            this.renderEmpty(displayName ? "Deleted " + displayName : "");
+            var that = this;
+            var displayName = $(event.currentTarget).data("name") || "item";
+            this.activeModel.destroy({
+                success: function() {
+                    that.renderEmpty("Deleted " + displayName);
+                },
+                error: function(info) {
+                    that.renderEmpty("Unable to permanently delete " + displayName+". Deletion is temporary, client-side only.");
+                }
+            });
         }
     });
 
@@ -259,6 +266,11 @@ define([
     }
 
     var Catalog = Backbone.Collection.extend({
+        modelX: Backbone.Model.extend({
+          url: function() {
+            return "/v1/catalog/" + this.name + "/" + this.id + "?allVersions=true";
+          }
+        }),
         initialize: function(models, options) {
             this.name = options["name"];
             if (!this.name) {
@@ -267,7 +279,12 @@ define([
             //this.model is a constructor so it shouldn't be _.bind'ed to this
             //It actually works when a browser provided .bind is used, but the
             //fallback implementation doesn't support it.
-            var model = this.model;
+            var that = this; 
+            var model = this.model.extend({
+              url: function() {
+                return "/v1/catalog/" + that.name + "/" + this.id.split(":").join("/");
+              }
+            });
             _.bindAll(this);
             this.model = model;
         },
@@ -466,7 +483,7 @@ define([
                     autoOpen: this.options.kind == "locations",
                     entryTemplateArgs: function (location, index) {
                         return {
-                            type: location.getPrettyName(),
+                            type: location.getIdentifierName(),
                             id: location.getLinkByName("self")
                         };
                     }
@@ -536,13 +553,28 @@ define([
                     .then(function() {
                         var model = accordion.collection.get(id);
                         if (!model) {
-                            // caller probably passed the wrong kind (in case of entity v app, the caller might try both)                        
-                        } else {
+                            // if a version is supplied, try it without a version - needed for locations, navigating after deletion
+                            if (id && id.split(":").length>1) {
+                                model = accordion.collection.get( id.split(":")[0] );
+                            }
+                        }
+                        if (!model) {
+                            // if an ID is supplied without a version, look for first matching version (should be newest)
+                            if (id && id.split(":").length==1 && accordion.collection.models) {
+                                model = _.find(accordion.collection.models, function(m) { 
+                                    return m && m.id && m.id.startsWith(id+":");
+                                });
+                            }
+                        }
+                        // TODO could look in collection for any starting with ID
+                        if (model) {
                             Backbone.history.navigate("/v1/catalog/"+kind+"/"+id);
                             activeDetailsView = kind;
                             accordion.activeCid = model.cid;
                             accordion.options.onItemSelected(kind, model);
                             accordion.show();
+                        } else {
+                            // catalog item not found, or not found yet (it might be reloaded and another callback will try again)
                         }
                     });
             }

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/0ccf9222/usage/jsgui/src/main/webapp/assets/tpl/catalog/details-entity.html
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/tpl/catalog/details-entity.html b/usage/jsgui/src/main/webapp/assets/tpl/catalog/details-entity.html
index f123913..2e43fe5 100644
--- a/usage/jsgui/src/main/webapp/assets/tpl/catalog/details-entity.html
+++ b/usage/jsgui/src/main/webapp/assets/tpl/catalog/details-entity.html
@@ -16,8 +16,13 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 -->
+
 <div class="catalog-details">
 
+    <div class="float-right">
+        <button data-name="<%= model.id %>" class="btn btn-danger delete">Delete</button>
+    </div>
+
     <% if (model.get("name") != model.get("symbolicName")) { %>
         <h2><%- model.get("name") %></h2>
         <p><%- model.getVersionedAttr("symbolicName") %></p>

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/0ccf9222/usage/jsgui/src/main/webapp/assets/tpl/catalog/details-generic.html
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/tpl/catalog/details-generic.html b/usage/jsgui/src/main/webapp/assets/tpl/catalog/details-generic.html
index f57500e..49a29a0 100644
--- a/usage/jsgui/src/main/webapp/assets/tpl/catalog/details-generic.html
+++ b/usage/jsgui/src/main/webapp/assets/tpl/catalog/details-generic.html
@@ -19,6 +19,10 @@ under the License.
 
 <div class="catalog-details">
 
+    <div class="float-right">
+        <button data-name="<%= model.id %>" class="btn btn-danger delete">Delete</button>
+    </div>
+
     <% if (model.get("name") !== undefined) { %>
         <h2><%= model.get("name") %></h2>
     <% } else if (model.get("type") !== undefined) { %>

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/0ccf9222/usage/jsgui/src/main/webapp/assets/tpl/catalog/details-location.html
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/tpl/catalog/details-location.html b/usage/jsgui/src/main/webapp/assets/tpl/catalog/details-location.html
index 27fe3e2..03dd596 100644
--- a/usage/jsgui/src/main/webapp/assets/tpl/catalog/details-location.html
+++ b/usage/jsgui/src/main/webapp/assets/tpl/catalog/details-location.html
@@ -16,26 +16,30 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 -->
+
 <div class="catalog-details">
 
-    <h3><%- model.getPrettyName() %></h3>
+    <h3><%- model.getIdentifierName() %></h3>
 
     <div class="float-right">
-        <button data-name="<%= model.getPrettyName() %>" class="btn btn-danger delete">Delete</button>
+        <button data-name="<%= model.getIdentifierName() %>" class="btn btn-danger delete">Delete</button>
     </div>
 
-<% if (!model.get("config") || _.isEmpty(model.get("config"))) { %>
-    <em>No special configuration</em>
-<% } else { %>
-
     <br/>
     <table>
-        <tr><td><strong>ID:</strong>&nbsp;&nbsp;</td><td><%- model.get("id") || "" %></td></tr>
-        <tr><td><strong>Name:</strong>&nbsp;&nbsp;</td><td><%- model.get("name") || "" %></td></tr>
-        <tr><td><strong>Spec:</strong>&nbsp;&nbsp;</td><td><%- model.get("spec") || "" %></td></tr>
+        <tr><td><strong>Display Name:</strong>&nbsp;&nbsp;</td><td><%- model.getPrettyName() || "" %></td></tr>
+        <tr><td><strong>Reference Name:</strong>&nbsp;&nbsp;</td><td><%- model.get("name") || "" %></td></tr>
+        <tr><td><strong>Internal ID:</strong>&nbsp;&nbsp;</td><td><%- model.get("id") || "" %></td></tr>
+        <tr><td><strong>Implementation Spec:</strong>&nbsp;&nbsp;</td><td><%- model.get("spec") || "" %></td></tr>
     </table>
     
     <br/>
+    
+<% if (!model.get("config") || _.isEmpty(model.get("config"))) { %>
+    <!-- either no config or it comes from a yaml plan and config not yet available;
+         TODO need to use the /v1/catalog/location API not the /v1/locations/ API -->
+<% } else { %>
+
     <table class="table table-striped table-condensed nonDatatables">
         <thead><tr>
             <th>Configuration Key</th>


[11/71] [abbrv] brooklyn-ui git commit: Move mobile app to sandbox

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ml.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ml.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ml.js
deleted file mode 100644
index e2b6d8a..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ml.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "dimanche",
-      "lundi",
-      "mardi",
-      "mercredi",
-      "jeudi",
-      "vendredi",
-      "samedi"
-    ],
-    "MONTH": [
-      "janvier",
-      "f\u00e9vrier",
-      "mars",
-      "avril",
-      "mai",
-      "juin",
-      "juillet",
-      "ao\u00fbt",
-      "septembre",
-      "octobre",
-      "novembre",
-      "d\u00e9cembre"
-    ],
-    "SHORTDAY": [
-      "dim.",
-      "lun.",
-      "mar.",
-      "mer.",
-      "jeu.",
-      "ven.",
-      "sam."
-    ],
-    "SHORTMONTH": [
-      "janv.",
-      "f\u00e9vr.",
-      "mars",
-      "avr.",
-      "mai",
-      "juin",
-      "juil.",
-      "ao\u00fbt",
-      "sept.",
-      "oct.",
-      "nov.",
-      "d\u00e9c."
-    ],
-    "fullDate": "EEEE d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y HH:mm:ss",
-    "mediumDate": "d MMM y",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(",
-        "negSuf": "\u00a0\u00a4)",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "fr-ml",
-  "pluralCat": function (n) {  if (n >= 0 && n <= 2 && n != 2) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-mq.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-mq.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-mq.js
deleted file mode 100644
index b99ce2f..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-mq.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "dimanche",
-      "lundi",
-      "mardi",
-      "mercredi",
-      "jeudi",
-      "vendredi",
-      "samedi"
-    ],
-    "MONTH": [
-      "janvier",
-      "f\u00e9vrier",
-      "mars",
-      "avril",
-      "mai",
-      "juin",
-      "juillet",
-      "ao\u00fbt",
-      "septembre",
-      "octobre",
-      "novembre",
-      "d\u00e9cembre"
-    ],
-    "SHORTDAY": [
-      "dim.",
-      "lun.",
-      "mar.",
-      "mer.",
-      "jeu.",
-      "ven.",
-      "sam."
-    ],
-    "SHORTMONTH": [
-      "janv.",
-      "f\u00e9vr.",
-      "mars",
-      "avr.",
-      "mai",
-      "juin",
-      "juil.",
-      "ao\u00fbt",
-      "sept.",
-      "oct.",
-      "nov.",
-      "d\u00e9c."
-    ],
-    "fullDate": "EEEE d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y HH:mm:ss",
-    "mediumDate": "d MMM y",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(",
-        "negSuf": "\u00a0\u00a4)",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "fr-mq",
-  "pluralCat": function (n) {  if (n >= 0 && n <= 2 && n != 2) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ne.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ne.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ne.js
deleted file mode 100644
index 2e61a66..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ne.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "dimanche",
-      "lundi",
-      "mardi",
-      "mercredi",
-      "jeudi",
-      "vendredi",
-      "samedi"
-    ],
-    "MONTH": [
-      "janvier",
-      "f\u00e9vrier",
-      "mars",
-      "avril",
-      "mai",
-      "juin",
-      "juillet",
-      "ao\u00fbt",
-      "septembre",
-      "octobre",
-      "novembre",
-      "d\u00e9cembre"
-    ],
-    "SHORTDAY": [
-      "dim.",
-      "lun.",
-      "mar.",
-      "mer.",
-      "jeu.",
-      "ven.",
-      "sam."
-    ],
-    "SHORTMONTH": [
-      "janv.",
-      "f\u00e9vr.",
-      "mars",
-      "avr.",
-      "mai",
-      "juin",
-      "juil.",
-      "ao\u00fbt",
-      "sept.",
-      "oct.",
-      "nov.",
-      "d\u00e9c."
-    ],
-    "fullDate": "EEEE d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y HH:mm:ss",
-    "mediumDate": "d MMM y",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(",
-        "negSuf": "\u00a0\u00a4)",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "fr-ne",
-  "pluralCat": function (n) {  if (n >= 0 && n <= 2 && n != 2) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-re.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-re.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-re.js
deleted file mode 100644
index 5cb611b..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-re.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "dimanche",
-      "lundi",
-      "mardi",
-      "mercredi",
-      "jeudi",
-      "vendredi",
-      "samedi"
-    ],
-    "MONTH": [
-      "janvier",
-      "f\u00e9vrier",
-      "mars",
-      "avril",
-      "mai",
-      "juin",
-      "juillet",
-      "ao\u00fbt",
-      "septembre",
-      "octobre",
-      "novembre",
-      "d\u00e9cembre"
-    ],
-    "SHORTDAY": [
-      "dim.",
-      "lun.",
-      "mar.",
-      "mer.",
-      "jeu.",
-      "ven.",
-      "sam."
-    ],
-    "SHORTMONTH": [
-      "janv.",
-      "f\u00e9vr.",
-      "mars",
-      "avr.",
-      "mai",
-      "juin",
-      "juil.",
-      "ao\u00fbt",
-      "sept.",
-      "oct.",
-      "nov.",
-      "d\u00e9c."
-    ],
-    "fullDate": "EEEE d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y HH:mm:ss",
-    "mediumDate": "d MMM y",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(",
-        "negSuf": "\u00a0\u00a4)",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "fr-re",
-  "pluralCat": function (n) {  if (n >= 0 && n <= 2 && n != 2) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-rw.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-rw.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-rw.js
deleted file mode 100644
index f3688b2..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-rw.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "dimanche",
-      "lundi",
-      "mardi",
-      "mercredi",
-      "jeudi",
-      "vendredi",
-      "samedi"
-    ],
-    "MONTH": [
-      "janvier",
-      "f\u00e9vrier",
-      "mars",
-      "avril",
-      "mai",
-      "juin",
-      "juillet",
-      "ao\u00fbt",
-      "septembre",
-      "octobre",
-      "novembre",
-      "d\u00e9cembre"
-    ],
-    "SHORTDAY": [
-      "dim.",
-      "lun.",
-      "mar.",
-      "mer.",
-      "jeu.",
-      "ven.",
-      "sam."
-    ],
-    "SHORTMONTH": [
-      "janv.",
-      "f\u00e9vr.",
-      "mars",
-      "avr.",
-      "mai",
-      "juin",
-      "juil.",
-      "ao\u00fbt",
-      "sept.",
-      "oct.",
-      "nov.",
-      "d\u00e9c."
-    ],
-    "fullDate": "EEEE d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y HH:mm:ss",
-    "mediumDate": "d MMM y",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(",
-        "negSuf": "\u00a0\u00a4)",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "fr-rw",
-  "pluralCat": function (n) {  if (n >= 0 && n <= 2 && n != 2) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-sn.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-sn.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-sn.js
deleted file mode 100644
index 1ac1399..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-sn.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "dimanche",
-      "lundi",
-      "mardi",
-      "mercredi",
-      "jeudi",
-      "vendredi",
-      "samedi"
-    ],
-    "MONTH": [
-      "janvier",
-      "f\u00e9vrier",
-      "mars",
-      "avril",
-      "mai",
-      "juin",
-      "juillet",
-      "ao\u00fbt",
-      "septembre",
-      "octobre",
-      "novembre",
-      "d\u00e9cembre"
-    ],
-    "SHORTDAY": [
-      "dim.",
-      "lun.",
-      "mar.",
-      "mer.",
-      "jeu.",
-      "ven.",
-      "sam."
-    ],
-    "SHORTMONTH": [
-      "janv.",
-      "f\u00e9vr.",
-      "mars",
-      "avr.",
-      "mai",
-      "juin",
-      "juil.",
-      "ao\u00fbt",
-      "sept.",
-      "oct.",
-      "nov.",
-      "d\u00e9c."
-    ],
-    "fullDate": "EEEE d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y HH:mm:ss",
-    "mediumDate": "d MMM y",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(",
-        "negSuf": "\u00a0\u00a4)",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "fr-sn",
-  "pluralCat": function (n) {  if (n >= 0 && n <= 2 && n != 2) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-td.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-td.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-td.js
deleted file mode 100644
index 7e447eb..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-td.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "dimanche",
-      "lundi",
-      "mardi",
-      "mercredi",
-      "jeudi",
-      "vendredi",
-      "samedi"
-    ],
-    "MONTH": [
-      "janvier",
-      "f\u00e9vrier",
-      "mars",
-      "avril",
-      "mai",
-      "juin",
-      "juillet",
-      "ao\u00fbt",
-      "septembre",
-      "octobre",
-      "novembre",
-      "d\u00e9cembre"
-    ],
-    "SHORTDAY": [
-      "dim.",
-      "lun.",
-      "mar.",
-      "mer.",
-      "jeu.",
-      "ven.",
-      "sam."
-    ],
-    "SHORTMONTH": [
-      "janv.",
-      "f\u00e9vr.",
-      "mars",
-      "avr.",
-      "mai",
-      "juin",
-      "juil.",
-      "ao\u00fbt",
-      "sept.",
-      "oct.",
-      "nov.",
-      "d\u00e9c."
-    ],
-    "fullDate": "EEEE d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y HH:mm:ss",
-    "mediumDate": "d MMM y",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(",
-        "negSuf": "\u00a0\u00a4)",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "fr-td",
-  "pluralCat": function (n) {  if (n >= 0 && n <= 2 && n != 2) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-tg.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-tg.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-tg.js
deleted file mode 100644
index 9189a44..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-tg.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "dimanche",
-      "lundi",
-      "mardi",
-      "mercredi",
-      "jeudi",
-      "vendredi",
-      "samedi"
-    ],
-    "MONTH": [
-      "janvier",
-      "f\u00e9vrier",
-      "mars",
-      "avril",
-      "mai",
-      "juin",
-      "juillet",
-      "ao\u00fbt",
-      "septembre",
-      "octobre",
-      "novembre",
-      "d\u00e9cembre"
-    ],
-    "SHORTDAY": [
-      "dim.",
-      "lun.",
-      "mar.",
-      "mer.",
-      "jeu.",
-      "ven.",
-      "sam."
-    ],
-    "SHORTMONTH": [
-      "janv.",
-      "f\u00e9vr.",
-      "mars",
-      "avr.",
-      "mai",
-      "juin",
-      "juil.",
-      "ao\u00fbt",
-      "sept.",
-      "oct.",
-      "nov.",
-      "d\u00e9c."
-    ],
-    "fullDate": "EEEE d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y HH:mm:ss",
-    "mediumDate": "d MMM y",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(",
-        "negSuf": "\u00a0\u00a4)",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "fr-tg",
-  "pluralCat": function (n) {  if (n >= 0 && n <= 2 && n != 2) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-yt.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-yt.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-yt.js
deleted file mode 100644
index eb64853..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-yt.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "dimanche",
-      "lundi",
-      "mardi",
-      "mercredi",
-      "jeudi",
-      "vendredi",
-      "samedi"
-    ],
-    "MONTH": [
-      "janvier",
-      "f\u00e9vrier",
-      "mars",
-      "avril",
-      "mai",
-      "juin",
-      "juillet",
-      "ao\u00fbt",
-      "septembre",
-      "octobre",
-      "novembre",
-      "d\u00e9cembre"
-    ],
-    "SHORTDAY": [
-      "dim.",
-      "lun.",
-      "mar.",
-      "mer.",
-      "jeu.",
-      "ven.",
-      "sam."
-    ],
-    "SHORTMONTH": [
-      "janv.",
-      "f\u00e9vr.",
-      "mars",
-      "avr.",
-      "mai",
-      "juin",
-      "juil.",
-      "ao\u00fbt",
-      "sept.",
-      "oct.",
-      "nov.",
-      "d\u00e9c."
-    ],
-    "fullDate": "EEEE d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y HH:mm:ss",
-    "mediumDate": "d MMM y",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(",
-        "negSuf": "\u00a0\u00a4)",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "fr-yt",
-  "pluralCat": function (n) {  if (n >= 0 && n <= 2 && n != 2) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr.js
deleted file mode 100644
index b45cdc2..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "dimanche",
-      "lundi",
-      "mardi",
-      "mercredi",
-      "jeudi",
-      "vendredi",
-      "samedi"
-    ],
-    "MONTH": [
-      "janvier",
-      "f\u00e9vrier",
-      "mars",
-      "avril",
-      "mai",
-      "juin",
-      "juillet",
-      "ao\u00fbt",
-      "septembre",
-      "octobre",
-      "novembre",
-      "d\u00e9cembre"
-    ],
-    "SHORTDAY": [
-      "dim.",
-      "lun.",
-      "mar.",
-      "mer.",
-      "jeu.",
-      "ven.",
-      "sam."
-    ],
-    "SHORTMONTH": [
-      "janv.",
-      "f\u00e9vr.",
-      "mars",
-      "avr.",
-      "mai",
-      "juin",
-      "juil.",
-      "ao\u00fbt",
-      "sept.",
-      "oct.",
-      "nov.",
-      "d\u00e9c."
-    ],
-    "fullDate": "EEEE d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y HH:mm:ss",
-    "mediumDate": "d MMM y",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(",
-        "negSuf": "\u00a0\u00a4)",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "fr",
-  "pluralCat": function (n) {  if (n >= 0 && n <= 2 && n != 2) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gl-es.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gl-es.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gl-es.js
deleted file mode 100644
index f9dc628..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gl-es.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "a.m.",
-      "p.m."
-    ],
-    "DAY": [
-      "Domingo",
-      "Luns",
-      "Martes",
-      "M\u00e9rcores",
-      "Xoves",
-      "Venres",
-      "S\u00e1bado"
-    ],
-    "MONTH": [
-      "Xaneiro",
-      "Febreiro",
-      "Marzo",
-      "Abril",
-      "Maio",
-      "Xu\u00f1o",
-      "Xullo",
-      "Agosto",
-      "Setembro",
-      "Outubro",
-      "Novembro",
-      "Decembro"
-    ],
-    "SHORTDAY": [
-      "Dom",
-      "Lun",
-      "Mar",
-      "M\u00e9r",
-      "Xov",
-      "Ven",
-      "S\u00e1b"
-    ],
-    "SHORTMONTH": [
-      "Xan",
-      "Feb",
-      "Mar",
-      "Abr",
-      "Mai",
-      "Xu\u00f1",
-      "Xul",
-      "Ago",
-      "Set",
-      "Out",
-      "Nov",
-      "Dec"
-    ],
-    "fullDate": "EEEE dd MMMM y",
-    "longDate": "dd MMMM y",
-    "medium": "d MMM, y HH:mm:ss",
-    "mediumDate": "d MMM, y",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "gl-es",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gl.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gl.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gl.js
deleted file mode 100644
index b5f47b4..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gl.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "a.m.",
-      "p.m."
-    ],
-    "DAY": [
-      "Domingo",
-      "Luns",
-      "Martes",
-      "M\u00e9rcores",
-      "Xoves",
-      "Venres",
-      "S\u00e1bado"
-    ],
-    "MONTH": [
-      "Xaneiro",
-      "Febreiro",
-      "Marzo",
-      "Abril",
-      "Maio",
-      "Xu\u00f1o",
-      "Xullo",
-      "Agosto",
-      "Setembro",
-      "Outubro",
-      "Novembro",
-      "Decembro"
-    ],
-    "SHORTDAY": [
-      "Dom",
-      "Lun",
-      "Mar",
-      "M\u00e9r",
-      "Xov",
-      "Ven",
-      "S\u00e1b"
-    ],
-    "SHORTMONTH": [
-      "Xan",
-      "Feb",
-      "Mar",
-      "Abr",
-      "Mai",
-      "Xu\u00f1",
-      "Xul",
-      "Ago",
-      "Set",
-      "Out",
-      "Nov",
-      "Dec"
-    ],
-    "fullDate": "EEEE dd MMMM y",
-    "longDate": "dd MMMM y",
-    "medium": "d MMM, y HH:mm:ss",
-    "mediumDate": "d MMM, y",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "gl",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gsw-ch.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gsw-ch.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gsw-ch.js
deleted file mode 100644
index 759974d..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gsw-ch.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "vorm.",
-      "nam."
-    ],
-    "DAY": [
-      "Sunntig",
-      "M\u00e4\u00e4ntig",
-      "Ziischtig",
-      "Mittwuch",
-      "Dunschtig",
-      "Friitig",
-      "Samschtig"
-    ],
-    "MONTH": [
-      "Januar",
-      "Februar",
-      "M\u00e4rz",
-      "April",
-      "Mai",
-      "Juni",
-      "Juli",
-      "Auguscht",
-      "Sept\u00e4mber",
-      "Oktoober",
-      "Nov\u00e4mber",
-      "Dez\u00e4mber"
-    ],
-    "SHORTDAY": [
-      "Su.",
-      "M\u00e4.",
-      "Zi.",
-      "Mi.",
-      "Du.",
-      "Fr.",
-      "Sa."
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Feb",
-      "M\u00e4r",
-      "Apr",
-      "Mai",
-      "Jun",
-      "Jul",
-      "Aug",
-      "Sep",
-      "Okt",
-      "Nov",
-      "Dez"
-    ],
-    "fullDate": "EEEE, d. MMMM y",
-    "longDate": "d. MMMM y",
-    "medium": "dd.MM.yyyy HH:mm:ss",
-    "mediumDate": "dd.MM.yyyy",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd.MM.yy HH:mm",
-    "shortDate": "dd.MM.yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "CHF",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": "\u2019",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "gsw-ch",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gsw.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gsw.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gsw.js
deleted file mode 100644
index 0824756..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gsw.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "vorm.",
-      "nam."
-    ],
-    "DAY": [
-      "Sunntig",
-      "M\u00e4\u00e4ntig",
-      "Ziischtig",
-      "Mittwuch",
-      "Dunschtig",
-      "Friitig",
-      "Samschtig"
-    ],
-    "MONTH": [
-      "Januar",
-      "Februar",
-      "M\u00e4rz",
-      "April",
-      "Mai",
-      "Juni",
-      "Juli",
-      "Auguscht",
-      "Sept\u00e4mber",
-      "Oktoober",
-      "Nov\u00e4mber",
-      "Dez\u00e4mber"
-    ],
-    "SHORTDAY": [
-      "Su.",
-      "M\u00e4.",
-      "Zi.",
-      "Mi.",
-      "Du.",
-      "Fr.",
-      "Sa."
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Feb",
-      "M\u00e4r",
-      "Apr",
-      "Mai",
-      "Jun",
-      "Jul",
-      "Aug",
-      "Sep",
-      "Okt",
-      "Nov",
-      "Dez"
-    ],
-    "fullDate": "EEEE, d. MMMM y",
-    "longDate": "d. MMMM y",
-    "medium": "dd.MM.yyyy HH:mm:ss",
-    "mediumDate": "dd.MM.yyyy",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd.MM.yy HH:mm",
-    "shortDate": "dd.MM.yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "CHF",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": "\u2019",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "gsw",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gu-in.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gu-in.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gu-in.js
deleted file mode 100644
index d661a68..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gu-in.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "am",
-      "pm"
-    ],
-    "DAY": [
-      "\u0ab0\u0ab5\u0abf\u0ab5\u0abe\u0ab0",
-      "\u0ab8\u0acb\u0aae\u0ab5\u0abe\u0ab0",
-      "\u0aae\u0a82\u0a97\u0ab3\u0ab5\u0abe\u0ab0",
-      "\u0aac\u0ac1\u0aa7\u0ab5\u0abe\u0ab0",
-      "\u0a97\u0ac1\u0ab0\u0ac1\u0ab5\u0abe\u0ab0",
-      "\u0ab6\u0ac1\u0a95\u0acd\u0ab0\u0ab5\u0abe\u0ab0",
-      "\u0ab6\u0aa8\u0abf\u0ab5\u0abe\u0ab0"
-    ],
-    "MONTH": [
-      "\u0a9c\u0abe\u0aa8\u0acd\u0aaf\u0ac1\u0a86\u0ab0\u0ac0",
-      "\u0aab\u0ac7\u0aac\u0acd\u0ab0\u0ac1\u0a86\u0ab0\u0ac0",
-      "\u0aae\u0abe\u0ab0\u0acd\u0a9a",
-      "\u0a8f\u0aaa\u0acd\u0ab0\u0abf\u0ab2",
-      "\u0aae\u0ac7",
-      "\u0a9c\u0ac2\u0aa8",
-      "\u0a9c\u0ac1\u0ab2\u0abe\u0a88",
-      "\u0a91\u0a97\u0ab8\u0acd\u0a9f",
-      "\u0ab8\u0aaa\u0acd\u0a9f\u0ac7\u0aae\u0acd\u0aac\u0ab0",
-      "\u0a91\u0a95\u0acd\u0a9f\u0acb\u0aac\u0ab0",
-      "\u0aa8\u0ab5\u0ac7\u0aae\u0acd\u0aac\u0ab0",
-      "\u0aa1\u0abf\u0ab8\u0ac7\u0aae\u0acd\u0aac\u0ab0"
-    ],
-    "SHORTDAY": [
-      "\u0ab0\u0ab5\u0abf",
-      "\u0ab8\u0acb\u0aae",
-      "\u0aae\u0a82\u0a97\u0ab3",
-      "\u0aac\u0ac1\u0aa7",
-      "\u0a97\u0ac1\u0ab0\u0ac1",
-      "\u0ab6\u0ac1\u0a95\u0acd\u0ab0",
-      "\u0ab6\u0aa8\u0abf"
-    ],
-    "SHORTMONTH": [
-      "\u0a9c\u0abe\u0aa8\u0acd\u0aaf\u0ac1",
-      "\u0aab\u0ac7\u0aac\u0acd\u0ab0\u0ac1",
-      "\u0aae\u0abe\u0ab0\u0acd\u0a9a",
-      "\u0a8f\u0aaa\u0acd\u0ab0\u0abf\u0ab2",
-      "\u0aae\u0ac7",
-      "\u0a9c\u0ac2\u0aa8",
-      "\u0a9c\u0ac1\u0ab2\u0abe\u0a88",
-      "\u0a91\u0a97\u0ab8\u0acd\u0a9f",
-      "\u0ab8\u0aaa\u0acd\u0a9f\u0ac7",
-      "\u0a91\u0a95\u0acd\u0a9f\u0acb",
-      "\u0aa8\u0ab5\u0ac7",
-      "\u0aa1\u0abf\u0ab8\u0ac7"
-    ],
-    "fullDate": "EEEE, d MMMM, y",
-    "longDate": "d MMMM, y",
-    "medium": "d MMM, y hh:mm:ss a",
-    "mediumDate": "d MMM, y",
-    "mediumTime": "hh:mm:ss a",
-    "short": "d-MM-yy hh:mm a",
-    "shortDate": "d-MM-yy",
-    "shortTime": "hh:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20b9",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "gu-in",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gu.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gu.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gu.js
deleted file mode 100644
index c804511..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gu.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "am",
-      "pm"
-    ],
-    "DAY": [
-      "\u0ab0\u0ab5\u0abf\u0ab5\u0abe\u0ab0",
-      "\u0ab8\u0acb\u0aae\u0ab5\u0abe\u0ab0",
-      "\u0aae\u0a82\u0a97\u0ab3\u0ab5\u0abe\u0ab0",
-      "\u0aac\u0ac1\u0aa7\u0ab5\u0abe\u0ab0",
-      "\u0a97\u0ac1\u0ab0\u0ac1\u0ab5\u0abe\u0ab0",
-      "\u0ab6\u0ac1\u0a95\u0acd\u0ab0\u0ab5\u0abe\u0ab0",
-      "\u0ab6\u0aa8\u0abf\u0ab5\u0abe\u0ab0"
-    ],
-    "MONTH": [
-      "\u0a9c\u0abe\u0aa8\u0acd\u0aaf\u0ac1\u0a86\u0ab0\u0ac0",
-      "\u0aab\u0ac7\u0aac\u0acd\u0ab0\u0ac1\u0a86\u0ab0\u0ac0",
-      "\u0aae\u0abe\u0ab0\u0acd\u0a9a",
-      "\u0a8f\u0aaa\u0acd\u0ab0\u0abf\u0ab2",
-      "\u0aae\u0ac7",
-      "\u0a9c\u0ac2\u0aa8",
-      "\u0a9c\u0ac1\u0ab2\u0abe\u0a88",
-      "\u0a91\u0a97\u0ab8\u0acd\u0a9f",
-      "\u0ab8\u0aaa\u0acd\u0a9f\u0ac7\u0aae\u0acd\u0aac\u0ab0",
-      "\u0a91\u0a95\u0acd\u0a9f\u0acb\u0aac\u0ab0",
-      "\u0aa8\u0ab5\u0ac7\u0aae\u0acd\u0aac\u0ab0",
-      "\u0aa1\u0abf\u0ab8\u0ac7\u0aae\u0acd\u0aac\u0ab0"
-    ],
-    "SHORTDAY": [
-      "\u0ab0\u0ab5\u0abf",
-      "\u0ab8\u0acb\u0aae",
-      "\u0aae\u0a82\u0a97\u0ab3",
-      "\u0aac\u0ac1\u0aa7",
-      "\u0a97\u0ac1\u0ab0\u0ac1",
-      "\u0ab6\u0ac1\u0a95\u0acd\u0ab0",
-      "\u0ab6\u0aa8\u0abf"
-    ],
-    "SHORTMONTH": [
-      "\u0a9c\u0abe\u0aa8\u0acd\u0aaf\u0ac1",
-      "\u0aab\u0ac7\u0aac\u0acd\u0ab0\u0ac1",
-      "\u0aae\u0abe\u0ab0\u0acd\u0a9a",
-      "\u0a8f\u0aaa\u0acd\u0ab0\u0abf\u0ab2",
-      "\u0aae\u0ac7",
-      "\u0a9c\u0ac2\u0aa8",
-      "\u0a9c\u0ac1\u0ab2\u0abe\u0a88",
-      "\u0a91\u0a97\u0ab8\u0acd\u0a9f",
-      "\u0ab8\u0aaa\u0acd\u0a9f\u0ac7",
-      "\u0a91\u0a95\u0acd\u0a9f\u0acb",
-      "\u0aa8\u0ab5\u0ac7",
-      "\u0aa1\u0abf\u0ab8\u0ac7"
-    ],
-    "fullDate": "EEEE, d MMMM, y",
-    "longDate": "d MMMM, y",
-    "medium": "d MMM, y hh:mm:ss a",
-    "mediumDate": "d MMM, y",
-    "mediumTime": "hh:mm:ss a",
-    "short": "d-MM-yy hh:mm a",
-    "shortDate": "d-MM-yy",
-    "shortTime": "hh:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20b9",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "gu",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_he-il.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_he-il.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_he-il.js
deleted file mode 100644
index bc99779..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_he-il.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u05dc\u05e4\u05e0\u05d4\u05f4\u05e6",
-      "\u05d0\u05d7\u05d4\u05f4\u05e6"
-    ],
-    "DAY": [
-      "\u05d9\u05d5\u05dd \u05e8\u05d0\u05e9\u05d5\u05df",
-      "\u05d9\u05d5\u05dd \u05e9\u05e0\u05d9",
-      "\u05d9\u05d5\u05dd \u05e9\u05dc\u05d9\u05e9\u05d9",
-      "\u05d9\u05d5\u05dd \u05e8\u05d1\u05d9\u05e2\u05d9",
-      "\u05d9\u05d5\u05dd \u05d7\u05de\u05d9\u05e9\u05d9",
-      "\u05d9\u05d5\u05dd \u05e9\u05d9\u05e9\u05d9",
-      "\u05d9\u05d5\u05dd \u05e9\u05d1\u05ea"
-    ],
-    "MONTH": [
-      "\u05d9\u05e0\u05d5\u05d0\u05e8",
-      "\u05e4\u05d1\u05e8\u05d5\u05d0\u05e8",
-      "\u05de\u05e8\u05e5",
-      "\u05d0\u05e4\u05e8\u05d9\u05dc",
-      "\u05de\u05d0\u05d9",
-      "\u05d9\u05d5\u05e0\u05d9",
-      "\u05d9\u05d5\u05dc\u05d9",
-      "\u05d0\u05d5\u05d2\u05d5\u05e1\u05d8",
-      "\u05e1\u05e4\u05d8\u05de\u05d1\u05e8",
-      "\u05d0\u05d5\u05e7\u05d8\u05d5\u05d1\u05e8",
-      "\u05e0\u05d5\u05d1\u05de\u05d1\u05e8",
-      "\u05d3\u05e6\u05de\u05d1\u05e8"
-    ],
-    "SHORTDAY": [
-      "\u05d9\u05d5\u05dd \u05d0\u05f3",
-      "\u05d9\u05d5\u05dd \u05d1\u05f3",
-      "\u05d9\u05d5\u05dd \u05d2\u05f3",
-      "\u05d9\u05d5\u05dd \u05d3\u05f3",
-      "\u05d9\u05d5\u05dd \u05d4\u05f3",
-      "\u05d9\u05d5\u05dd \u05d5\u05f3",
-      "\u05e9\u05d1\u05ea"
-    ],
-    "SHORTMONTH": [
-      "\u05d9\u05e0\u05d5",
-      "\u05e4\u05d1\u05e8",
-      "\u05de\u05e8\u05e5",
-      "\u05d0\u05e4\u05e8",
-      "\u05de\u05d0\u05d9",
-      "\u05d9\u05d5\u05e0",
-      "\u05d9\u05d5\u05dc",
-      "\u05d0\u05d5\u05d2",
-      "\u05e1\u05e4\u05d8",
-      "\u05d0\u05d5\u05e7",
-      "\u05e0\u05d5\u05d1",
-      "\u05d3\u05e6\u05de"
-    ],
-    "fullDate": "EEEE, d \u05d1MMMM y",
-    "longDate": "d \u05d1MMMM y",
-    "medium": "d \u05d1MMM yyyy HH:mm:ss",
-    "mediumDate": "d \u05d1MMM yyyy",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20aa",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "he-il",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_he.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_he.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_he.js
deleted file mode 100644
index 88ae35a..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_he.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u05dc\u05e4\u05e0\u05d4\u05f4\u05e6",
-      "\u05d0\u05d7\u05d4\u05f4\u05e6"
-    ],
-    "DAY": [
-      "\u05d9\u05d5\u05dd \u05e8\u05d0\u05e9\u05d5\u05df",
-      "\u05d9\u05d5\u05dd \u05e9\u05e0\u05d9",
-      "\u05d9\u05d5\u05dd \u05e9\u05dc\u05d9\u05e9\u05d9",
-      "\u05d9\u05d5\u05dd \u05e8\u05d1\u05d9\u05e2\u05d9",
-      "\u05d9\u05d5\u05dd \u05d7\u05de\u05d9\u05e9\u05d9",
-      "\u05d9\u05d5\u05dd \u05e9\u05d9\u05e9\u05d9",
-      "\u05d9\u05d5\u05dd \u05e9\u05d1\u05ea"
-    ],
-    "MONTH": [
-      "\u05d9\u05e0\u05d5\u05d0\u05e8",
-      "\u05e4\u05d1\u05e8\u05d5\u05d0\u05e8",
-      "\u05de\u05e8\u05e5",
-      "\u05d0\u05e4\u05e8\u05d9\u05dc",
-      "\u05de\u05d0\u05d9",
-      "\u05d9\u05d5\u05e0\u05d9",
-      "\u05d9\u05d5\u05dc\u05d9",
-      "\u05d0\u05d5\u05d2\u05d5\u05e1\u05d8",
-      "\u05e1\u05e4\u05d8\u05de\u05d1\u05e8",
-      "\u05d0\u05d5\u05e7\u05d8\u05d5\u05d1\u05e8",
-      "\u05e0\u05d5\u05d1\u05de\u05d1\u05e8",
-      "\u05d3\u05e6\u05de\u05d1\u05e8"
-    ],
-    "SHORTDAY": [
-      "\u05d9\u05d5\u05dd \u05d0\u05f3",
-      "\u05d9\u05d5\u05dd \u05d1\u05f3",
-      "\u05d9\u05d5\u05dd \u05d2\u05f3",
-      "\u05d9\u05d5\u05dd \u05d3\u05f3",
-      "\u05d9\u05d5\u05dd \u05d4\u05f3",
-      "\u05d9\u05d5\u05dd \u05d5\u05f3",
-      "\u05e9\u05d1\u05ea"
-    ],
-    "SHORTMONTH": [
-      "\u05d9\u05e0\u05d5",
-      "\u05e4\u05d1\u05e8",
-      "\u05de\u05e8\u05e5",
-      "\u05d0\u05e4\u05e8",
-      "\u05de\u05d0\u05d9",
-      "\u05d9\u05d5\u05e0",
-      "\u05d9\u05d5\u05dc",
-      "\u05d0\u05d5\u05d2",
-      "\u05e1\u05e4\u05d8",
-      "\u05d0\u05d5\u05e7",
-      "\u05e0\u05d5\u05d1",
-      "\u05d3\u05e6\u05de"
-    ],
-    "fullDate": "EEEE, d \u05d1MMMM y",
-    "longDate": "d \u05d1MMMM y",
-    "medium": "d \u05d1MMM yyyy HH:mm:ss",
-    "mediumDate": "d \u05d1MMM yyyy",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20aa",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "he",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hi-in.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hi-in.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hi-in.js
deleted file mode 100644
index 17399a3..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hi-in.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "am",
-      "pm"
-    ],
-    "DAY": [
-      "\u0930\u0935\u093f\u0935\u093e\u0930",
-      "\u0938\u094b\u092e\u0935\u093e\u0930",
-      "\u092e\u0902\u0917\u0932\u0935\u093e\u0930",
-      "\u092c\u0941\u0927\u0935\u093e\u0930",
-      "\u092c\u0943\u0939\u0938\u094d\u092a\u0924\u093f\u0935\u093e\u0930",
-      "\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930",
-      "\u0936\u0928\u093f\u0935\u093e\u0930"
-    ],
-    "MONTH": [
-      "\u091c\u0928\u0935\u0930\u0940",
-      "\u092b\u0930\u0935\u0930\u0940",
-      "\u092e\u093e\u0930\u094d\u091a",
-      "\u0905\u092a\u094d\u0930\u0948\u0932",
-      "\u092e\u0908",
-      "\u091c\u0942\u0928",
-      "\u091c\u0941\u0932\u093e\u0908",
-      "\u0905\u0917\u0938\u094d\u0924",
-      "\u0938\u093f\u0924\u092e\u094d\u092c\u0930",
-      "\u0905\u0915\u094d\u0924\u0942\u092c\u0930",
-      "\u0928\u0935\u092e\u094d\u092c\u0930",
-      "\u0926\u093f\u0938\u092e\u094d\u092c\u0930"
-    ],
-    "SHORTDAY": [
-      "\u0930\u0935\u093f.",
-      "\u0938\u094b\u092e.",
-      "\u092e\u0902\u0917\u0932.",
-      "\u092c\u0941\u0927.",
-      "\u092c\u0943\u0939.",
-      "\u0936\u0941\u0915\u094d\u0930.",
-      "\u0936\u0928\u093f."
-    ],
-    "SHORTMONTH": [
-      "\u091c\u0928\u0935\u0930\u0940",
-      "\u092b\u0930\u0935\u0930\u0940",
-      "\u092e\u093e\u0930\u094d\u091a",
-      "\u0905\u092a\u094d\u0930\u0948\u0932",
-      "\u092e\u0908",
-      "\u091c\u0942\u0928",
-      "\u091c\u0941\u0932\u093e\u0908",
-      "\u0905\u0917\u0938\u094d\u0924",
-      "\u0938\u093f\u0924\u092e\u094d\u092c\u0930",
-      "\u0905\u0915\u094d\u0924\u0942\u092c\u0930",
-      "\u0928\u0935\u092e\u094d\u092c\u0930",
-      "\u0926\u093f\u0938\u092e\u094d\u092c\u0930"
-    ],
-    "fullDate": "EEEE, d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "dd-MM-yyyy h:mm:ss a",
-    "mediumDate": "dd-MM-yyyy",
-    "mediumTime": "h:mm:ss a",
-    "short": "d-M-yy h:mm a",
-    "shortDate": "d-M-yy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20b9",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 2,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 2,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "\u00a4\u00a0-",
-        "negSuf": "",
-        "posPre": "\u00a4\u00a0",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "hi-in",
-  "pluralCat": function (n) {  if (n == 0 || n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hi.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hi.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hi.js
deleted file mode 100644
index 165c639..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hi.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "am",
-      "pm"
-    ],
-    "DAY": [
-      "\u0930\u0935\u093f\u0935\u093e\u0930",
-      "\u0938\u094b\u092e\u0935\u093e\u0930",
-      "\u092e\u0902\u0917\u0932\u0935\u093e\u0930",
-      "\u092c\u0941\u0927\u0935\u093e\u0930",
-      "\u092c\u0943\u0939\u0938\u094d\u092a\u0924\u093f\u0935\u093e\u0930",
-      "\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930",
-      "\u0936\u0928\u093f\u0935\u093e\u0930"
-    ],
-    "MONTH": [
-      "\u091c\u0928\u0935\u0930\u0940",
-      "\u092b\u0930\u0935\u0930\u0940",
-      "\u092e\u093e\u0930\u094d\u091a",
-      "\u0905\u092a\u094d\u0930\u0948\u0932",
-      "\u092e\u0908",
-      "\u091c\u0942\u0928",
-      "\u091c\u0941\u0932\u093e\u0908",
-      "\u0905\u0917\u0938\u094d\u0924",
-      "\u0938\u093f\u0924\u092e\u094d\u092c\u0930",
-      "\u0905\u0915\u094d\u0924\u0942\u092c\u0930",
-      "\u0928\u0935\u092e\u094d\u092c\u0930",
-      "\u0926\u093f\u0938\u092e\u094d\u092c\u0930"
-    ],
-    "SHORTDAY": [
-      "\u0930\u0935\u093f.",
-      "\u0938\u094b\u092e.",
-      "\u092e\u0902\u0917\u0932.",
-      "\u092c\u0941\u0927.",
-      "\u092c\u0943\u0939.",
-      "\u0936\u0941\u0915\u094d\u0930.",
-      "\u0936\u0928\u093f."
-    ],
-    "SHORTMONTH": [
-      "\u091c\u0928\u0935\u0930\u0940",
-      "\u092b\u0930\u0935\u0930\u0940",
-      "\u092e\u093e\u0930\u094d\u091a",
-      "\u0905\u092a\u094d\u0930\u0948\u0932",
-      "\u092e\u0908",
-      "\u091c\u0942\u0928",
-      "\u091c\u0941\u0932\u093e\u0908",
-      "\u0905\u0917\u0938\u094d\u0924",
-      "\u0938\u093f\u0924\u092e\u094d\u092c\u0930",
-      "\u0905\u0915\u094d\u0924\u0942\u092c\u0930",
-      "\u0928\u0935\u092e\u094d\u092c\u0930",
-      "\u0926\u093f\u0938\u092e\u094d\u092c\u0930"
-    ],
-    "fullDate": "EEEE, d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "dd-MM-yyyy h:mm:ss a",
-    "mediumDate": "dd-MM-yyyy",
-    "mediumTime": "h:mm:ss a",
-    "short": "d-M-yy h:mm a",
-    "shortDate": "d-M-yy",
-    "shortTime": "h:mm a"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20b9",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 2,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 2,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "\u00a4\u00a0-",
-        "negSuf": "",
-        "posPre": "\u00a4\u00a0",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "hi",
-  "pluralCat": function (n) {  if (n == 0 || n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hr-hr.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hr-hr.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hr-hr.js
deleted file mode 100644
index 3ef9ff3..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hr-hr.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "nedjelja",
-      "ponedjeljak",
-      "utorak",
-      "srijeda",
-      "\u010detvrtak",
-      "petak",
-      "subota"
-    ],
-    "MONTH": [
-      "sije\u010dnja",
-      "velja\u010de",
-      "o\u017eujka",
-      "travnja",
-      "svibnja",
-      "lipnja",
-      "srpnja",
-      "kolovoza",
-      "rujna",
-      "listopada",
-      "studenoga",
-      "prosinca"
-    ],
-    "SHORTDAY": [
-      "ned",
-      "pon",
-      "uto",
-      "sri",
-      "\u010det",
-      "pet",
-      "sub"
-    ],
-    "SHORTMONTH": [
-      "sij",
-      "velj",
-      "o\u017eu",
-      "tra",
-      "svi",
-      "lip",
-      "srp",
-      "kol",
-      "ruj",
-      "lis",
-      "stu",
-      "pro"
-    ],
-    "fullDate": "EEEE, d. MMMM y.",
-    "longDate": "d. MMMM y.",
-    "medium": "d. M. y. HH:mm:ss",
-    "mediumDate": "d. M. y.",
-    "mediumTime": "HH:mm:ss",
-    "short": "d.M.y. HH:mm",
-    "shortDate": "d.M.y.",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "kn",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "hr-hr",
-  "pluralCat": function (n) {  if (n % 10 == 1 && n % 100 != 11) {   return PLURAL_CATEGORY.ONE;  }  if (n == (n | 0) && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) {   return PLURAL_CATEGORY.FEW;  }  if (n % 10 == 0 || n == (n | 0) && n % 10 >= 5 && n % 10 <= 9 || n == (n | 0) && n % 100 >= 11 && n % 100 <= 14) {   return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hr.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hr.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hr.js
deleted file mode 100644
index 6702e6b..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hr.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "nedjelja",
-      "ponedjeljak",
-      "utorak",
-      "srijeda",
-      "\u010detvrtak",
-      "petak",
-      "subota"
-    ],
-    "MONTH": [
-      "sije\u010dnja",
-      "velja\u010de",
-      "o\u017eujka",
-      "travnja",
-      "svibnja",
-      "lipnja",
-      "srpnja",
-      "kolovoza",
-      "rujna",
-      "listopada",
-      "studenoga",
-      "prosinca"
-    ],
-    "SHORTDAY": [
-      "ned",
-      "pon",
-      "uto",
-      "sri",
-      "\u010det",
-      "pet",
-      "sub"
-    ],
-    "SHORTMONTH": [
-      "sij",
-      "velj",
-      "o\u017eu",
-      "tra",
-      "svi",
-      "lip",
-      "srp",
-      "kol",
-      "ruj",
-      "lis",
-      "stu",
-      "pro"
-    ],
-    "fullDate": "EEEE, d. MMMM y.",
-    "longDate": "d. MMMM y.",
-    "medium": "d. M. y. HH:mm:ss",
-    "mediumDate": "d. M. y.",
-    "mediumTime": "HH:mm:ss",
-    "short": "d.M.y. HH:mm",
-    "shortDate": "d.M.y.",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "kn",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "hr",
-  "pluralCat": function (n) {  if (n % 10 == 1 && n % 100 != 11) {   return PLURAL_CATEGORY.ONE;  }  if (n == (n | 0) && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) {   return PLURAL_CATEGORY.FEW;  }  if (n % 10 == 0 || n == (n | 0) && n % 10 >= 5 && n % 10 <= 9 || n == (n | 0) && n % 100 >= 11 && n % 100 <= 14) {   return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hu-hu.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hu-hu.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hu-hu.js
deleted file mode 100644
index 8a7f126..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hu-hu.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "de.",
-      "du."
-    ],
-    "DAY": [
-      "vas\u00e1rnap",
-      "h\u00e9tf\u0151",
-      "kedd",
-      "szerda",
-      "cs\u00fct\u00f6rt\u00f6k",
-      "p\u00e9ntek",
-      "szombat"
-    ],
-    "MONTH": [
-      "janu\u00e1r",
-      "febru\u00e1r",
-      "m\u00e1rcius",
-      "\u00e1prilis",
-      "m\u00e1jus",
-      "j\u00fanius",
-      "j\u00falius",
-      "augusztus",
-      "szeptember",
-      "okt\u00f3ber",
-      "november",
-      "december"
-    ],
-    "SHORTDAY": [
-      "V",
-      "H",
-      "K",
-      "Sze",
-      "Cs",
-      "P",
-      "Szo"
-    ],
-    "SHORTMONTH": [
-      "jan.",
-      "febr.",
-      "m\u00e1rc.",
-      "\u00e1pr.",
-      "m\u00e1j.",
-      "j\u00fan.",
-      "j\u00fal.",
-      "aug.",
-      "szept.",
-      "okt.",
-      "nov.",
-      "dec."
-    ],
-    "fullDate": "y. MMMM d., EEEE",
-    "longDate": "y. MMMM d.",
-    "medium": "yyyy.MM.dd. H:mm:ss",
-    "mediumDate": "yyyy.MM.dd.",
-    "mediumTime": "H:mm:ss",
-    "short": "yyyy.MM.dd. H:mm",
-    "shortDate": "yyyy.MM.dd.",
-    "shortTime": "H:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "Ft",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "hu-hu",
-  "pluralCat": function (n) {  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hu.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hu.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hu.js
deleted file mode 100644
index 26558ed..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hu.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "de.",
-      "du."
-    ],
-    "DAY": [
-      "vas\u00e1rnap",
-      "h\u00e9tf\u0151",
-      "kedd",
-      "szerda",
-      "cs\u00fct\u00f6rt\u00f6k",
-      "p\u00e9ntek",
-      "szombat"
-    ],
-    "MONTH": [
-      "janu\u00e1r",
-      "febru\u00e1r",
-      "m\u00e1rcius",
-      "\u00e1prilis",
-      "m\u00e1jus",
-      "j\u00fanius",
-      "j\u00falius",
-      "augusztus",
-      "szeptember",
-      "okt\u00f3ber",
-      "november",
-      "december"
-    ],
-    "SHORTDAY": [
-      "V",
-      "H",
-      "K",
-      "Sze",
-      "Cs",
-      "P",
-      "Szo"
-    ],
-    "SHORTMONTH": [
-      "jan.",
-      "febr.",
-      "m\u00e1rc.",
-      "\u00e1pr.",
-      "m\u00e1j.",
-      "j\u00fan.",
-      "j\u00fal.",
-      "aug.",
-      "szept.",
-      "okt.",
-      "nov.",
-      "dec."
-    ],
-    "fullDate": "y. MMMM d., EEEE",
-    "longDate": "y. MMMM d.",
-    "medium": "yyyy.MM.dd. H:mm:ss",
-    "mediumDate": "yyyy.MM.dd.",
-    "mediumTime": "H:mm:ss",
-    "short": "yyyy.MM.dd. H:mm",
-    "shortDate": "yyyy.MM.dd.",
-    "shortTime": "H:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "Ft",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "hu",
-  "pluralCat": function (n) {  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_id-id.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_id-id.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_id-id.js
deleted file mode 100644
index b63dd77..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_id-id.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "Minggu",
-      "Senin",
-      "Selasa",
-      "Rabu",
-      "Kamis",
-      "Jumat",
-      "Sabtu"
-    ],
-    "MONTH": [
-      "Januari",
-      "Februari",
-      "Maret",
-      "April",
-      "Mei",
-      "Juni",
-      "Juli",
-      "Agustus",
-      "September",
-      "Oktober",
-      "November",
-      "Desember"
-    ],
-    "SHORTDAY": [
-      "Min",
-      "Sen",
-      "Sel",
-      "Rab",
-      "Kam",
-      "Jum",
-      "Sab"
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Feb",
-      "Mar",
-      "Apr",
-      "Mei",
-      "Jun",
-      "Jul",
-      "Agt",
-      "Sep",
-      "Okt",
-      "Nov",
-      "Des"
-    ],
-    "fullDate": "EEEE, dd MMMM yyyy",
-    "longDate": "d MMMM yyyy",
-    "medium": "d MMM yyyy HH:mm:ss",
-    "mediumDate": "d MMM yyyy",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "Rp",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "\u00a4-",
-        "negSuf": "",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "id-id",
-  "pluralCat": function (n) {  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_id.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_id.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_id.js
deleted file mode 100644
index b17ce79..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_id.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "Minggu",
-      "Senin",
-      "Selasa",
-      "Rabu",
-      "Kamis",
-      "Jumat",
-      "Sabtu"
-    ],
-    "MONTH": [
-      "Januari",
-      "Februari",
-      "Maret",
-      "April",
-      "Mei",
-      "Juni",
-      "Juli",
-      "Agustus",
-      "September",
-      "Oktober",
-      "November",
-      "Desember"
-    ],
-    "SHORTDAY": [
-      "Min",
-      "Sen",
-      "Sel",
-      "Rab",
-      "Kam",
-      "Jum",
-      "Sab"
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Feb",
-      "Mar",
-      "Apr",
-      "Mei",
-      "Jun",
-      "Jul",
-      "Agt",
-      "Sep",
-      "Okt",
-      "Nov",
-      "Des"
-    ],
-    "fullDate": "EEEE, dd MMMM yyyy",
-    "longDate": "d MMMM yyyy",
-    "medium": "d MMM yyyy HH:mm:ss",
-    "mediumDate": "d MMM yyyy",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "Rp",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "\u00a4-",
-        "negSuf": "",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "id",
-  "pluralCat": function (n) {  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_in.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_in.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_in.js
deleted file mode 100644
index c83cce1..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_in.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "Minggu",
-      "Senin",
-      "Selasa",
-      "Rabu",
-      "Kamis",
-      "Jumat",
-      "Sabtu"
-    ],
-    "MONTH": [
-      "Januari",
-      "Februari",
-      "Maret",
-      "April",
-      "Mei",
-      "Juni",
-      "Juli",
-      "Agustus",
-      "September",
-      "Oktober",
-      "November",
-      "Desember"
-    ],
-    "SHORTDAY": [
-      "Min",
-      "Sen",
-      "Sel",
-      "Rab",
-      "Kam",
-      "Jum",
-      "Sab"
-    ],
-    "SHORTMONTH": [
-      "Jan",
-      "Feb",
-      "Mar",
-      "Apr",
-      "Mei",
-      "Jun",
-      "Jul",
-      "Agt",
-      "Sep",
-      "Okt",
-      "Nov",
-      "Des"
-    ],
-    "fullDate": "EEEE, dd MMMM yyyy",
-    "longDate": "d MMMM yyyy",
-    "medium": "d MMM yyyy HH:mm:ss",
-    "mediumDate": "d MMM yyyy",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "Rp",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "\u00a4-",
-        "negSuf": "",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "in",
-  "pluralCat": function (n) {  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_is-is.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_is-is.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_is-is.js
deleted file mode 100644
index fe25142..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_is-is.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "f.h.",
-      "e.h."
-    ],
-    "DAY": [
-      "sunnudagur",
-      "m\u00e1nudagur",
-      "\u00feri\u00f0judagur",
-      "mi\u00f0vikudagur",
-      "fimmtudagur",
-      "f\u00f6studagur",
-      "laugardagur"
-    ],
-    "MONTH": [
-      "jan\u00faar",
-      "febr\u00faar",
-      "mars",
-      "apr\u00edl",
-      "ma\u00ed",
-      "j\u00fan\u00ed",
-      "j\u00fal\u00ed",
-      "\u00e1g\u00fast",
-      "september",
-      "okt\u00f3ber",
-      "n\u00f3vember",
-      "desember"
-    ],
-    "SHORTDAY": [
-      "sun",
-      "m\u00e1n",
-      "\u00feri",
-      "mi\u00f0",
-      "fim",
-      "f\u00f6s",
-      "lau"
-    ],
-    "SHORTMONTH": [
-      "jan",
-      "feb",
-      "mar",
-      "apr",
-      "ma\u00ed",
-      "j\u00fan",
-      "j\u00fal",
-      "\u00e1g\u00fa",
-      "sep",
-      "okt",
-      "n\u00f3v",
-      "des"
-    ],
-    "fullDate": "EEEE, d. MMMM y",
-    "longDate": "d. MMMM y",
-    "medium": "d.M.yyyy HH:mm:ss",
-    "mediumDate": "d.M.yyyy",
-    "mediumTime": "HH:mm:ss",
-    "short": "d.M.yyyy HH:mm",
-    "shortDate": "d.M.yyyy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "kr",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "is-is",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_is.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_is.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_is.js
deleted file mode 100644
index a579b0e..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_is.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "f.h.",
-      "e.h."
-    ],
-    "DAY": [
-      "sunnudagur",
-      "m\u00e1nudagur",
-      "\u00feri\u00f0judagur",
-      "mi\u00f0vikudagur",
-      "fimmtudagur",
-      "f\u00f6studagur",
-      "laugardagur"
-    ],
-    "MONTH": [
-      "jan\u00faar",
-      "febr\u00faar",
-      "mars",
-      "apr\u00edl",
-      "ma\u00ed",
-      "j\u00fan\u00ed",
-      "j\u00fal\u00ed",
-      "\u00e1g\u00fast",
-      "september",
-      "okt\u00f3ber",
-      "n\u00f3vember",
-      "desember"
-    ],
-    "SHORTDAY": [
-      "sun",
-      "m\u00e1n",
-      "\u00feri",
-      "mi\u00f0",
-      "fim",
-      "f\u00f6s",
-      "lau"
-    ],
-    "SHORTMONTH": [
-      "jan",
-      "feb",
-      "mar",
-      "apr",
-      "ma\u00ed",
-      "j\u00fan",
-      "j\u00fal",
-      "\u00e1g\u00fa",
-      "sep",
-      "okt",
-      "n\u00f3v",
-      "des"
-    ],
-    "fullDate": "EEEE, d. MMMM y",
-    "longDate": "d. MMMM y",
-    "medium": "d.M.yyyy HH:mm:ss",
-    "mediumDate": "d.M.yyyy",
-    "mediumTime": "HH:mm:ss",
-    "short": "d.M.yyyy HH:mm",
-    "shortDate": "d.M.yyyy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "kr",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "is",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_it-ch.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_it-ch.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_it-ch.js
deleted file mode 100644
index 653cd89..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_it-ch.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "m.",
-      "p."
-    ],
-    "DAY": [
-      "domenica",
-      "luned\u00ec",
-      "marted\u00ec",
-      "mercoled\u00ec",
-      "gioved\u00ec",
-      "venerd\u00ec",
-      "sabato"
-    ],
-    "MONTH": [
-      "gennaio",
-      "febbraio",
-      "marzo",
-      "aprile",
-      "maggio",
-      "giugno",
-      "luglio",
-      "agosto",
-      "settembre",
-      "ottobre",
-      "novembre",
-      "dicembre"
-    ],
-    "SHORTDAY": [
-      "dom",
-      "lun",
-      "mar",
-      "mer",
-      "gio",
-      "ven",
-      "sab"
-    ],
-    "SHORTMONTH": [
-      "gen",
-      "feb",
-      "mar",
-      "apr",
-      "mag",
-      "giu",
-      "lug",
-      "ago",
-      "set",
-      "ott",
-      "nov",
-      "dic"
-    ],
-    "fullDate": "EEEE, d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d-MMM-y HH:mm:ss",
-    "mediumDate": "d-MMM-y",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd.MM.yy HH:mm",
-    "shortDate": "dd.MM.yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": ".",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "\u00a4\u00a0-",
-        "negSuf": "",
-        "posPre": "\u00a4\u00a0",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "it-ch",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file


[64/71] [abbrv] brooklyn-ui git commit: in yaml preview window, scroll to top after setting contents

Posted by he...@apache.org.
in yaml preview window, scroll to top after setting contents


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/commit/8930be28
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/tree/8930be28
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/diff/8930be28

Branch: refs/heads/0.7.0-incubating
Commit: 8930be2890af11ac3dbc4c3303f7b398708673cd
Parents: 0c825e8
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Sat Jun 20 10:13:28 2015 -0700
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Sun Jun 21 12:22:11 2015 -0700

----------------------------------------------------------------------
 .../webapp/assets/js/util/brooklyn-utils.js     | 26 ++++++++++++++++++++
 .../assets/js/view/application-add-wizard.js    |  4 +--
 2 files changed, 28 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/8930be28/usage/jsgui/src/main/webapp/assets/js/util/brooklyn-utils.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/js/util/brooklyn-utils.js b/usage/jsgui/src/main/webapp/assets/js/util/brooklyn-utils.js
index 318a734..5f3915c 100644
--- a/usage/jsgui/src/main/webapp/assets/js/util/brooklyn-utils.js
+++ b/usage/jsgui/src/main/webapp/assets/js/util/brooklyn-utils.js
@@ -188,6 +188,32 @@ define([
         });
     }
 
+    Util.setSelectionRange = function (input, selectionStart, selectionEnd) {
+      if (input.setSelectionRange) {
+        input.focus();
+        input.setSelectionRange(selectionStart, selectionEnd);
+      }
+      else if (input.createTextRange) {
+        var range = input.createTextRange();
+        range.collapse(true);
+        range.moveEnd('character', selectionEnd);
+        range.moveStart('character', selectionStart);
+        range.select();
+      }
+    };
+            
+    Util.setCaretToPos = function (input, pos) {
+      Util.setSelectionRange(input, pos, pos);
+    };
+
+    $.fn.setCaretToStart = function() {
+      this.each(function(index, elem) {
+        Util.setCaretToPos(elem, 0);
+        $(elem).scrollTop(0);
+      });
+      return this;
+    };
+
     $("#logout-link").on("click", function (e) {
         e.preventDefault();
         Util.logout()

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/8930be28/usage/jsgui/src/main/webapp/assets/js/view/application-add-wizard.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/js/view/application-add-wizard.js b/usage/jsgui/src/main/webapp/assets/js/view/application-add-wizard.js
index e9427dd..09fd1c4 100644
--- a/usage/jsgui/src/main/webapp/assets/js/view/application-add-wizard.js
+++ b/usage/jsgui/src/main/webapp/assets/js/view/application-add-wizard.js
@@ -280,7 +280,7 @@ define([
                     if (yaml) {
                         // it's a yaml catalog template which includes a location, show the yaml tab
            	            $("ul#app-add-wizard-create-tab").find("a[href='#yamlTab']").tab('show');
-                        $("#yaml_code").focus();
+                        $("#yaml_code").setCaretToStart();
                     } else {
                         // it's a java catalog template or yaml template without a location, go to wizard
                         this.currentStep += 1;
@@ -302,7 +302,7 @@ define([
                     that.model.spec.pruneLocations();
                     $("textarea#yaml_code").val(JsYaml.safeDump(oldSpecToCamp(that.model.spec.toJSON())));
                     $("ul#app-add-wizard-create-tab").find("a[href='#yamlTab']").tab('show');
-                    $("#yaml_code").focus();
+                    $("#yaml_code").setCaretToStart();
                 });
             } else {
                 // call to validate should showFailure


[02/71] [abbrv] brooklyn-ui git commit: Move mobile app to sandbox

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/fonts/fontawesome-webfont.svg
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/fonts/fontawesome-webfont.svg b/usage/jsgui/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/fonts/fontawesome-webfont.svg
deleted file mode 100644
index a9f8469..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/fonts/fontawesome-webfont.svg
+++ /dev/null
@@ -1,504 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
-<svg xmlns="http://www.w3.org/2000/svg">
-<metadata></metadata>
-<defs>
-<font id="fontawesomeregular" horiz-adv-x="1536" >
-<font-face units-per-em="1792" ascent="1536" descent="-256" />
-<missing-glyph horiz-adv-x="448" />
-<glyph unicode=" "  horiz-adv-x="448" />
-<glyph unicode="&#x09;" horiz-adv-x="448" />
-<glyph unicode="&#xa0;" horiz-adv-x="448" />
-<glyph unicode="&#xa8;" horiz-adv-x="1792" />
-<glyph unicode="&#xa9;" horiz-adv-x="1792" />
-<glyph unicode="&#xae;" horiz-adv-x="1792" />
-<glyph unicode="&#xb4;" horiz-adv-x="1792" />
-<glyph unicode="&#xc6;" horiz-adv-x="1792" />
-<glyph unicode="&#xd8;" horiz-adv-x="1792" />
-<glyph unicode="&#x2000;" horiz-adv-x="768" />
-<glyph unicode="&#x2001;" horiz-adv-x="1537" />
-<glyph unicode="&#x2002;" horiz-adv-x="768" />
-<glyph unicode="&#x2003;" horiz-adv-x="1537" />
-<glyph unicode="&#x2004;" horiz-adv-x="512" />
-<glyph unicode="&#x2005;" horiz-adv-x="384" />
-<glyph unicode="&#x2006;" horiz-adv-x="256" />
-<glyph unicode="&#x2007;" horiz-adv-x="256" />
-<glyph unicode="&#x2008;" horiz-adv-x="192" />
-<glyph unicode="&#x2009;" horiz-adv-x="307" />
-<glyph unicode="&#x200a;" horiz-adv-x="85" />
-<glyph unicode="&#x202f;" horiz-adv-x="307" />
-<glyph unicode="&#x205f;" horiz-adv-x="384" />
-<glyph unicode="&#x2122;" horiz-adv-x="1792" />
-<glyph unicode="&#x221e;" horiz-adv-x="1792" />
-<glyph unicode="&#x2260;" horiz-adv-x="1792" />
-<glyph unicode="&#x25fc;" horiz-adv-x="500" d="M0 0z" />
-<glyph unicode="&#xf000;" horiz-adv-x="1792" d="M93 1350q0 23 18 36.5t38 17.5t43 4h1408q23 0 43 -4t38 -17.5t18 -36.5q0 -35 -43 -78l-632 -632v-768h320q26 0 45 -19t19 -45t-19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45t45 19h320v768l-632 632q-43 43 -43 78z" />
-<glyph unicode="&#xf001;" d="M0 -64q0 50 34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v967q0 31 19 56.5t49 35.5l832 256q12 4 28 4q40 0 68 -28t28 -68v-1120q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89t34 89t86 60.5t103.5 32t96.5 10.5 q105 0 192 -39v537l-768 -237v-709q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89z" />
-<glyph unicode="&#xf002;" horiz-adv-x="1664" d="M0 704q0 143 55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90q0 -52 -38 -90t-90 -38q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5z M256 704q0 -185 131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5z" />
-<glyph unicode="&#xf003;" horiz-adv-x="1792" d="M0 32v1088q0 66 47 113t113 47h1472q66 0 113 -47t47 -113v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113zM128 32q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5v768q-32 -36 -69 -66q-268 -206 -426 -338q-51 -43 -83 -67t-86.5 -48.5 t-102.5 -24.5h-1h-1q-48 0 -102.5 24.5t-86.5 48.5t-83 67q-158 132 -426 338q-37 30 -69 66v-768zM128 1120q0 -168 147 -284q193 -152 401 -317q6 -5 35 -29.5t46 -37.5t44.5 -31.5t50.5 -27.5t43 -9h1h1q20 0 43 9t50.5 27.5t44.5 31.5t46 37.5t35 29.5q208 165 401 317 q54 43 100.5 115.5t46.5 131.5v11v13.5t-0.5 13t-3 12.5t-5.5 9t-9 7.5t-14 2.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5z" />
-<glyph unicode="&#xf004;" horiz-adv-x="1792" d="M0 940q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5q224 0 351 -124t127 -344q0 -221 -229 -450l-623 -600q-18 -18 -44 -18t-44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138z " />
-<glyph unicode="&#xf005;" horiz-adv-x="1664" d="M0 889q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455l502 -73q56 -9 56 -46q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -21 -10.5 -35.5t-30.5 -14.5q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500 l-364 354q-25 27 -25 48z" />
-<glyph unicode="&#xf006;" horiz-adv-x="1664" d="M0 889q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455l502 -73q56 -9 56 -46q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -50 -41 -50q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354 q-25 27 -25 48zM221 829l306 -297l-73 -421l378 199l377 -199l-72 421l306 297l-422 62l-189 382l-189 -382z" />
-<glyph unicode="&#xf007;" horiz-adv-x="1408" d="M0 131q0 53 3.5 103.5t14 109t26.5 108.5t43 97.5t62 81t85.5 53.5t111.5 20q9 0 42 -21.5t74.5 -48t108 -48t133.5 -21.5t133.5 21.5t108 48t74.5 48t42 21.5q61 0 111.5 -20t85.5 -53.5t62 -81t43 -97.5t26.5 -108.5t14 -109t3.5 -103.5q0 -120 -73 -189.5t-194 -69.5 h-874q-121 0 -194 69.5t-73 189.5zM320 1024q0 159 112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5t-112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5z" />
-<glyph unicode="&#xf008;" horiz-adv-x="1920" d="M0 -96v1344q0 66 47 113t113 47h1600q66 0 113 -47t47 -113v-1344q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113zM128 64v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45zM128 320q0 -26 19 -45t45 -19h128 q26 0 45 19t19 45v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128zM128 704q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128zM128 1088q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v128q0 26 -19 45t-45 19 h-128q-26 0 -45 -19t-19 -45v-128zM512 -64q0 -26 19 -45t45 -19h768q26 0 45 19t19 45v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512zM512 704q0 -26 19 -45t45 -19h768q26 0 45 19t19 45v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512zM1536 64 v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45zM1536 320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19
  -45v-128zM1536 704q0 -26 19 -45t45 -19h128q26 0 45 19t19 45 v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128zM1536 1088q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128z" />
-<glyph unicode="&#xf009;" horiz-adv-x="1664" d="M0 128v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90zM0 896v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90zM896 128v384q0 52 38 90t90 38h512q52 0 90 -38 t38 -90v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90zM896 896v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90z" />
-<glyph unicode="&#xf00a;" horiz-adv-x="1792" d="M0 96v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68zM0 608v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68zM0 1120v192q0 40 28 68t68 28h320q40 0 68 -28 t28 -68v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68zM640 96v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68zM640 608v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-320 q-40 0 -68 28t-28 68zM640 1120v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68zM1280 96v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68zM1280 608v192 q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68zM1280 1120v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68z" />
-<glyph unicode="&#xf00b;" horiz-adv-x="1792" d="M0 96v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68zM0 608v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68zM0 1120v192q0 40 28 68t68 28h320q40 0 68 -28 t28 -68v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68zM640 96v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68zM640 608v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-960 q-40 0 -68 28t-28 68zM640 1120v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68z" />
-<glyph unicode="&#xf00c;" horiz-adv-x="1792" d="M121 608q0 40 28 68l136 136q28 28 68 28t68 -28l294 -295l656 657q28 28 68 28t68 -28l136 -136q28 -28 28 -68t-28 -68l-724 -724l-136 -136q-28 -28 -68 -28t-68 28l-136 136l-362 362q-28 28 -28 68z" />
-<glyph unicode="&#xf00d;" horiz-adv-x="1408" d="M110 214q0 40 28 68l294 294l-294 294q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -294l294 294q28 28 68 28t68 -28l136 -136q28 -28 28 -68t-28 -68l-294 -294l294 -294q28 -28 28 -68t-28 -68l-136 -136q-28 -28 -68 -28t-68 28l-294 294l-294 -294 q-28 -28 -68 -28t-68 28l-136 136q-28 28 -28 68z" />
-<glyph unicode="&#xf00e;" horiz-adv-x="1664" d="M0 704q0 143 55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90t-37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5z M256 704q0 -185 131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5zM384 672v64q0 13 9.5 22.5t22.5 9.5h224v224q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-224h224q13 0 22.5 -9.5t9.5 -22.5v-64 q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-224q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v224h-224q-13 0 -22.5 9.5t-9.5 22.5z" />
-<glyph unicode="&#xf010;" horiz-adv-x="1664" d="M0 704q0 143 55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90t-37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5z M256 704q0 -185 131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5zM384 672v64q0 13 9.5 22.5t22.5 9.5h576q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-576q-13 0 -22.5 9.5t-9.5 22.5z" />
-<glyph unicode="&#xf011;" d="M0 640q0 182 80.5 343t226.5 270q43 32 95.5 25t83.5 -50q32 -42 24.5 -94.5t-49.5 -84.5q-98 -74 -151.5 -181t-53.5 -228q0 -104 40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5t198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5q0 121 -53.5 228t-151.5 181 q-42 32 -49.5 84.5t24.5 94.5q31 43 84 50t95 -25q146 -109 226.5 -270t80.5 -343q0 -156 -61 -298t-164 -245t-245 -164t-298 -61t-298 61t-245 164t-164 245t-61 298zM640 768v640q0 52 38 90t90 38t90 -38t38 -90v-640q0 -52 -38 -90t-90 -38t-90 38t-38 90z" />
-<glyph unicode="&#xf012;" horiz-adv-x="1792" d="M0 -96v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23zM384 -96v320q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-320q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23zM768 -96v576q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-576 q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23zM1152 -96v960q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-960q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23zM1536 -96v1472q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1472q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23z" />
-<glyph unicode="&#xf013;" d="M0 531v222q0 12 8 23t19 13l186 28q14 46 39 92q-40 57 -107 138q-10 12 -10 24q0 10 9 23q26 36 98.5 107.5t94.5 71.5q13 0 26 -10l138 -107q44 23 91 38q16 136 29 186q7 28 36 28h222q14 0 24.5 -8.5t11.5 -21.5l28 -184q49 -16 90 -37l142 107q9 9 24 9q13 0 25 -10 q129 -119 165 -170q7 -8 7 -22q0 -12 -8 -23q-15 -21 -51 -66.5t-54 -70.5q26 -50 41 -98l183 -28q13 -2 21 -12.5t8 -23.5v-222q0 -12 -8 -23t-20 -13l-185 -28q-19 -54 -39 -91q35 -50 107 -138q10 -12 10 -25t-9 -23q-27 -37 -99 -108t-94 -71q-12 0 -26 9l-138 108 q-44 -23 -91 -38q-16 -136 -29 -186q-7 -28 -36 -28h-222q-14 0 -24.5 8.5t-11.5 21.5l-28 184q-49 16 -90 37l-141 -107q-10 -9 -25 -9q-14 0 -25 11q-126 114 -165 168q-7 10 -7 23q0 12 8 23q15 21 51 66.5t54 70.5q-27 50 -41 99l-183 27q-13 2 -21 12.5t-8 23.5z M512 640q0 -106 75 -181t181 -75t181 75t75 181t-75 181t-181 75t-181 -75t-75 -181z" />
-<glyph unicode="&#xf014;" horiz-adv-x="1408" d="M0 1056v64q0 14 9 23t23 9h309l70 167q15 37 54 63t79 26h320q40 0 79 -26t54 -63l70 -167h309q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-948q0 -83 -47 -143.5t-113 -60.5h-832q-66 0 -113 58.5t-47 141.5v952h-96q-14 0 -23 9t-9 23zM256 76q0 -22 7 -40.5 t14.5 -27t10.5 -8.5h832q3 0 10.5 8.5t14.5 27t7 40.5v948h-896v-948zM384 224v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23zM480 1152h448l-48 117q-7 9 -17 11h-317q-10 -2 -17 -11zM640 224v576q0 14 9 23t23 9h64 q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23zM896 224v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23z" />
-<glyph unicode="&#xf015;" horiz-adv-x="1664" d="M26 636.5q1 13.5 11 21.5l719 599q32 26 76 26t76 -26l244 -204v195q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-408l219 -182q10 -8 11 -21.5t-7 -23.5l-62 -74q-8 -9 -21 -11h-3q-13 0 -21 7l-692 577l-692 -577q-12 -8 -24 -7q-13 2 -21 11l-62 74q-8 10 -7 23.5zM256 64 v480q0 1 0.5 3t0.5 3l575 474l575 -474q1 -2 1 -6v-480q0 -26 -19 -45t-45 -19h-384v384h-256v-384h-384q-26 0 -45 19t-19 45z" />
-<glyph unicode="&#xf016;" d="M0 -160v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48l312 -312q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68zM128 -128h1280v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536zM1024 1024h376q-10 29 -22 41l-313 313q-12 12 -41 22 v-376z" />
-<glyph unicode="&#xf017;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM224 640q0 -148 73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73t-273 -73 t-198 -198t-73 -273zM512 544v64q0 14 9 23t23 9h224v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23z" />
-<glyph unicode="&#xf018;" horiz-adv-x="1920" d="M50 73q0 54 26 116l417 1044q8 19 26 33t38 14h339q-13 0 -23 -9.5t-11 -22.5l-15 -192q-1 -14 8 -23t22 -9h166q13 0 22 9t8 23l-15 192q-1 13 -11 22.5t-23 9.5h339q20 0 38 -14t26 -33l417 -1044q26 -62 26 -116q0 -73 -46 -73h-704q13 0 22 9.5t8 22.5l-20 256 q-1 13 -11 22.5t-23 9.5h-272q-13 0 -23 -9.5t-11 -22.5l-20 -256q-1 -13 8 -22.5t22 -9.5h-704q-46 0 -46 73zM809 540q-1 -12 8 -20t21 -8h244q12 0 21 8t8 20v4l-24 320q-1 13 -11 22.5t-23 9.5h-186q-13 0 -23 -9.5t-11 -22.5l-24 -320v-4z" />
-<glyph unicode="&#xf019;" horiz-adv-x="1664" d="M0 96v320q0 40 28 68t68 28h465l135 -136q58 -56 136 -56t136 56l136 136h464q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68zM325 985q17 39 59 39h256v448q0 26 19 45t45 19h256q26 0 45 -19t19 -45v-448h256q42 0 59 -39q17 -41 -14 -70 l-448 -448q-18 -19 -45 -19t-45 19l-448 448q-31 29 -14 70zM1152 192q0 -26 19 -45t45 -19t45 19t19 45t-19 45t-45 19t-45 -19t-19 -45zM1408 192q0 -26 19 -45t45 -19t45 19t19 45t-19 45t-45 19t-45 -19t-19 -45z" />
-<glyph unicode="&#xf01a;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM224 640q0 -148 73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73t-273 -73 t-198 -198t-73 -273zM418 620q8 20 30 20h192v352q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-352h192q14 0 23 -9t9 -23q0 -12 -10 -24l-319 -319q-11 -9 -23 -9t-23 9l-320 320q-15 16 -7 35z" />
-<glyph unicode="&#xf01b;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM224 640q0 -148 73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73t-273 -73 t-198 -198t-73 -273zM416 672q0 12 10 24l319 319q11 9 23 9t23 -9l320 -320q15 -16 7 -35q-8 -20 -30 -20h-192v-352q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v352h-192q-14 0 -23 9t-9 23z" />
-<glyph unicode="&#xf01c;" d="M0 64v482q0 62 25 123l238 552q10 25 36.5 42t52.5 17h832q26 0 52.5 -17t36.5 -42l238 -552q25 -61 25 -123v-482q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45zM197 576h316l95 -192h320l95 192h316q-1 3 -2.5 8t-2.5 8l-212 496h-708l-212 -496q-1 -2 -2.5 -8 t-2.5 -8z" />
-<glyph unicode="&#xf01d;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM224 640q0 -148 73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73t-273 -73 t-198 -198t-73 -273zM512 320v640q0 37 32 56q33 18 64 -1l544 -320q32 -18 32 -55t-32 -55l-544 -320q-15 -9 -32 -9q-16 0 -32 8q-32 19 -32 56z" />
-<glyph unicode="&#xf01e;" d="M0 640q0 156 61 298t164 245t245 164t298 61q147 0 284.5 -55.5t244.5 -156.5l130 129q29 31 70 14q39 -17 39 -59v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l138 138q-148 137 -349 137q-104 0 -198.5 -40.5t-163.5 -109.5t-109.5 -163.5 t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5q119 0 225 52t179 147q7 10 23 12q14 0 25 -9l137 -138q9 -8 9.5 -20.5t-7.5 -22.5q-109 -132 -264 -204.5t-327 -72.5q-156 0 -298 61t-245 164t-164 245t-61 298z" />
-<glyph unicode="&#xf021;" d="M0 0v448q0 26 19 45t45 19h448q26 0 45 -19t19 -45t-19 -45l-137 -137q71 -66 161 -102t187 -36q134 0 250 65t186 179q11 17 53 117q8 23 30 23h192q13 0 22.5 -9.5t9.5 -22.5q0 -5 -1 -7q-64 -268 -268 -434.5t-478 -166.5q-146 0 -282.5 55t-243.5 157l-129 -129 q-19 -19 -45 -19t-45 19t-19 45zM18 800v7q65 268 270 434.5t480 166.5q146 0 284 -55.5t245 -156.5l130 129q19 19 45 19t45 -19t19 -45v-448q0 -26 -19 -45t-45 -19h-448q-26 0 -45 19t-19 45t19 45l138 138q-148 137 -349 137q-134 0 -250 -65t-186 -179 q-11 -17 -53 -117q-8 -23 -30 -23h-199q-13 0 -22.5 9.5t-9.5 22.5z" />
-<glyph unicode="&#xf022;" horiz-adv-x="1792" d="M0 160v1088q0 66 47 113t113 47h1472q66 0 113 -47t47 -113v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113zM128 160q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5v832q0 13 -9.5 22.5t-22.5 9.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5v-832z M256 288v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5zM256 544v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5z M256 800v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5zM512 288v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5z M512 544v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5zM512 800v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5v-64q0 -
 13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5z " />
-<glyph unicode="&#xf023;" horiz-adv-x="1152" d="M0 96v576q0 40 28 68t68 28h32v192q0 184 132 316t316 132t316 -132t132 -316v-192h32q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68zM320 768h512v192q0 106 -75 181t-181 75t-181 -75t-75 -181v-192z" />
-<glyph unicode="&#xf024;" horiz-adv-x="1792" d="M64 1280q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5q0 -72 -64 -110v-1266q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v1266q-64 38 -64 110zM320 320v742q0 32 31 55q21 14 79 43q236 120 421 120q107 0 200 -29t219 -88q38 -19 88 -19 q54 0 117.5 21t110 47t88 47t54.5 21q26 0 45 -19t19 -45v-763q0 -25 -12.5 -38.5t-39.5 -27.5q-215 -116 -369 -116q-61 0 -123.5 22t-108.5 48t-115.5 48t-142.5 22q-192 0 -464 -146q-17 -9 -33 -9q-26 0 -45 19t-19 45z" />
-<glyph unicode="&#xf025;" horiz-adv-x="1664" d="M0 650q0 151 67 291t179 242.5t266 163.5t320 61t320 -61t266 -163.5t179 -242.5t67 -291q0 -166 -60 -314l-20 -49l-185 -33q-22 -83 -90.5 -136.5t-156.5 -53.5v-32q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-32 q71 0 130 -35.5t93 -95.5l68 12q29 95 29 193q0 148 -88 279t-236.5 209t-315.5 78t-315.5 -78t-236.5 -209t-88 -279q0 -98 29 -193l68 -12q34 60 93 95.5t130 35.5v32q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v32 q-88 0 -156.5 53.5t-90.5 136.5l-185 33l-20 49q-60 148 -60 314z" />
-<glyph unicode="&#xf026;" horiz-adv-x="768" d="M0 448v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45z" />
-<glyph unicode="&#xf027;" horiz-adv-x="1152" d="M0 448v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45zM908 464q0 21 12 35.5t29 25t34 23t29 35.5t12 57t-12 57t-29 35.5t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5 q15 0 25 -5q70 -27 112.5 -93t42.5 -142t-42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5z" />
-<glyph unicode="&#xf028;" horiz-adv-x="1664" d="M0 448v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45zM908 464q0 21 12 35.5t29 25t34 23t29 35.5t12 57t-12 57t-29 35.5t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5 q15 0 25 -5q70 -27 112.5 -93t42.5 -142t-42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5zM1008 228q0 39 39 59q56 29 76 44q74 54 115.5 135.5t41.5 173.5t-41.5 173.5t-115.5 135.5q-20 15 -76 44q-39 20 -39 59q0 26 19 45t45 19q13 0 26 -5 q140 -59 225 -188.5t85 -282.5t-85 -282.5t-225 -188.5q-13 -5 -25 -5q-27 0 -46 19t-19 45zM1109 -7q0 36 39 59q7 4 22.5 10.5t22.5 10.5q46 25 82 51q123 91 192 227t69 289t-69 289t-192 227q-36 26 -82 51q-7 4 -22.5 10.5t-22.5 10.5q-39 23 -39 59q0 26 19 45t45 19 q13 0 26 -5q211 -91 338 -283.5t127 -422.5t-127 -422.5t-338 -283.5q-13 -5 -26 -5q-26 0 -45 19t-19 45z" />
-<glyph unicode="&#xf029;" horiz-adv-x="1408" d="M0 0v640h640v-640h-640zM0 768v640h640v-640h-640zM128 129h384v383h-384v-383zM128 896h384v384h-384v-384zM256 256v128h128v-128h-128zM256 1024v128h128v-128h-128zM768 0v640h384v-128h128v128h128v-384h-384v128h-128v-384h-128zM768 768v640h640v-640h-640z M896 896h384v384h-384v-384zM1024 0v128h128v-128h-128zM1024 1024v128h128v-128h-128zM1280 0v128h128v-128h-128z" />
-<glyph unicode="&#xf02a;" horiz-adv-x="1792" d="M0 0v1408h63v-1408h-63zM94 1v1407h32v-1407h-32zM189 1v1407h31v-1407h-31zM346 1v1407h31v-1407h-31zM472 1v1407h62v-1407h-62zM629 1v1407h31v-1407h-31zM692 1v1407h31v-1407h-31zM755 1v1407h31v-1407h-31zM880 1v1407h63v-1407h-63zM1037 1v1407h63v-1407h-63z M1163 1v1407h63v-1407h-63zM1289 1v1407h63v-1407h-63zM1383 1v1407h63v-1407h-63zM1541 1v1407h94v-1407h-94zM1666 1v1407h32v-1407h-32zM1729 0v1408h63v-1408h-63z" />
-<glyph unicode="&#xf02b;" d="M0 864v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5l715 -714q37 -39 37 -91q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117zM192 1088q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5 t-90.5 -37.5t-37.5 -90.5z" />
-<glyph unicode="&#xf02c;" horiz-adv-x="1920" d="M0 864v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5l715 -714q37 -39 37 -91q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117zM192 1088q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5 t-90.5 -37.5t-37.5 -90.5zM704 1408h224q53 0 117 -26.5t102 -64.5l715 -714q37 -39 37 -91q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-36 0 -59 14t-53 45l470 470q37 37 37 90q0 52 -37 91l-715 714q-38 38 -102 64.5t-117 26.5z" />
-<glyph unicode="&#xf02d;" horiz-adv-x="1664" d="M10 184q0 4 3 27t4 37q1 8 -3 21.5t-3 19.5q2 11 8 21t16.5 23.5t16.5 23.5q23 38 45 91.5t30 91.5q3 10 0.5 30t-0.5 28q3 11 17 28t17 23q21 36 42 92t25 90q1 9 -2.5 32t0.5 28q4 13 22 30.5t22 22.5q19 26 42.5 84.5t27.5 96.5q1 8 -3 25.5t-2 26.5q2 8 9 18t18 23 t17 21q8 12 16.5 30.5t15 35t16 36t19.5 32t26.5 23.5t36 11.5t47.5 -5.5l-1 -3q38 9 51 9h761q74 0 114 -56t18 -130l-274 -906q-36 -119 -71.5 -153.5t-128.5 -34.5h-869q-27 0 -38 -15q-11 -16 -1 -43q24 -70 144 -70h923q29 0 56 15.5t35 41.5l300 987q7 22 5 57 q38 -15 59 -43q40 -57 18 -129l-275 -906q-19 -64 -76.5 -107.5t-122.5 -43.5h-923q-77 0 -148.5 53.5t-99.5 131.5q-24 67 -2 127zM492 800q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5t-16.5 -22.5zM575 1056 q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5t-16.5 -22.5z" />
-<glyph unicode="&#xf02e;" horiz-adv-x="1280" d="M0 7v1289q0 34 19.5 62t52.5 41q21 9 44 9h1048q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62z" />
-<glyph unicode="&#xf02f;" horiz-adv-x="1664" d="M0 160v416q0 79 56.5 135.5t135.5 56.5h64v544q0 40 28 68t68 28h672q40 0 88 -20t76 -48l152 -152q28 -28 48 -76t20 -88v-256h64q79 0 135.5 -56.5t56.5 -135.5v-416q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-160q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v160h-224 q-13 0 -22.5 9.5t-9.5 22.5zM384 0h896v256h-896v-256zM384 640h896v384h-160q-40 0 -68 28t-28 68v160h-640v-640zM1408 576q0 -26 19 -45t45 -19t45 19t19 45t-19 45t-45 19t-45 -19t-19 -45z" />
-<glyph unicode="&#xf030;" horiz-adv-x="1920" d="M0 128v896q0 106 75 181t181 75h224l51 136q19 49 69.5 84.5t103.5 35.5h512q53 0 103.5 -35.5t69.5 -84.5l51 -136h224q106 0 181 -75t75 -181v-896q0 -106 -75 -181t-181 -75h-1408q-106 0 -181 75t-75 181zM512 576q0 -185 131.5 -316.5t316.5 -131.5t316.5 131.5 t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5zM672 576q0 119 84.5 203.5t203.5 84.5t203.5 -84.5t84.5 -203.5t-84.5 -203.5t-203.5 -84.5t-203.5 84.5t-84.5 203.5z" />
-<glyph unicode="&#xf031;" horiz-adv-x="1664" d="M0 -128l2 79q23 7 56 12.5t57 10.5t49.5 14.5t44.5 29t31 50.5l237 616l280 724h75h53q8 -14 11 -21l205 -480q33 -78 106 -257.5t114 -274.5q15 -34 58 -144.5t72 -168.5q20 -45 35 -57q19 -15 88 -29.5t84 -20.5q6 -38 6 -57q0 -4 -0.5 -13t-0.5 -13q-63 0 -190 8 t-191 8q-76 0 -215 -7t-178 -8q0 43 4 78l131 28q1 0 12.5 2.5t15.5 3.5t14.5 4.5t15 6.5t11 8t9 11t2.5 14q0 16 -31 96.5t-72 177.5t-42 100l-450 2q-26 -58 -76.5 -195.5t-50.5 -162.5q0 -22 14 -37.5t43.5 -24.5t48.5 -13.5t57 -8.5t41 -4q1 -19 1 -58q0 -9 -2 -27 q-58 0 -174.5 10t-174.5 10q-8 0 -26.5 -4t-21.5 -4q-80 -14 -188 -14zM555 527q33 0 136.5 -2t160.5 -2q19 0 57 2q-87 253 -184 452z" />
-<glyph unicode="&#xf032;" horiz-adv-x="1408" d="M0 -128l2 94q15 4 85 16t106 27q7 12 12.5 27t8.5 33.5t5.5 32.5t3 37.5t0.5 34v35.5v30q0 982 -22 1025q-4 8 -22 14.5t-44.5 11t-49.5 7t-48.5 4.5t-30.5 3l-4 83q98 2 340 11.5t373 9.5q23 0 68.5 -0.5t67.5 -0.5q70 0 136.5 -13t128.5 -42t108 -71t74 -104.5 t28 -137.5q0 -52 -16.5 -95.5t-39 -72t-64.5 -57.5t-73 -45t-84 -40q154 -35 256.5 -134t102.5 -248q0 -100 -35 -179.5t-93.5 -130.5t-138 -85.5t-163.5 -48.5t-176 -14q-44 0 -132 3t-132 3q-106 0 -307 -11t-231 -12zM533 1292q0 -50 4 -151t4 -152q0 -27 -0.5 -80 t-0.5 -79q0 -46 1 -69q42 -7 109 -7q82 0 143 13t110 44.5t74.5 89.5t25.5 142q0 70 -29 122.5t-79 82t-108 43.5t-124 14q-50 0 -130 -13zM538.5 165q0.5 -37 4.5 -83.5t12 -66.5q74 -32 140 -32q376 0 376 335q0 114 -41 180q-27 44 -61.5 74t-67.5 46.5t-80.5 25 t-84 10.5t-94.5 2q-73 0 -101 -10q0 -53 -0.5 -159t-0.5 -158q0 -8 -1 -67.5t-0.5 -96.5z" />
-<glyph unicode="&#xf033;" horiz-adv-x="1024" d="M0 -126l17 85q6 2 81.5 21.5t111.5 37.5q28 35 41 101q1 7 62 289t114 543.5t52 296.5v25q-24 13 -54.5 18.5t-69.5 8t-58 5.5l19 103q33 -2 120 -6.5t149.5 -7t120.5 -2.5q48 0 98.5 2.5t121 7t98.5 6.5q-5 -39 -19 -89q-30 -10 -101.5 -28.5t-108.5 -33.5 q-8 -19 -14 -42.5t-9 -40t-7.5 -45.5t-6.5 -42q-27 -148 -87.5 -419.5t-77.5 -355.5q-2 -9 -13 -58t-20 -90t-16 -83.5t-6 -57.5l1 -18q17 -4 185 -31q-3 -44 -16 -99q-11 0 -32.5 -1.5t-32.5 -1.5q-29 0 -87 10t-86 10q-138 2 -206 2q-51 0 -143 -9t-121 -11z" />
-<glyph unicode="&#xf034;" horiz-adv-x="1792" d="M0 1023v383l81 1l54 -27q12 -5 211 -5q44 0 132 2t132 2q36 0 107.5 -0.5t107.5 -0.5h293q6 0 21 -0.5t20.5 0t16 3t17.5 9t15 17.5l42 1q4 0 14 -0.5t14 -0.5q2 -112 2 -336q0 -80 -5 -109q-39 -14 -68 -18q-25 44 -54 128q-3 9 -11 48t-14.5 73.5t-7.5 35.5 q-6 8 -12 12.5t-15.5 6t-13 2.5t-18 0.5t-16.5 -0.5q-17 0 -66.5 0.5t-74.5 0.5t-64 -2t-71 -6q-9 -81 -8 -136q0 -94 2 -388t2 -455q0 -16 -2.5 -71.5t0 -91.5t12.5 -69q40 -21 124 -42.5t120 -37.5q5 -40 5 -50q0 -14 -3 -29l-34 -1q-76 -2 -218 8t-207 10q-50 0 -151 -9 t-152 -9q-3 51 -3 52v9q17 27 61.5 43t98.5 29t78 27q19 42 19 383q0 101 -3 303t-3 303v117q0 2 0.5 15.5t0.5 25t-1 25.5t-3 24t-5 14q-11 12 -162 12q-33 0 -93 -12t-80 -26q-19 -13 -34 -72.5t-31.5 -111t-42.5 -53.5q-42 26 -56 44zM1414 109.5q9 18.5 42 18.5h80v1024 h-80q-33 0 -42 18.5t11 44.5l126 162q20 26 49 26t49 -26l126 -162q20 -26 11 -44.5t-42 -18.5h-80v-1024h80q33 0 42 -18.5t-11 -44.5l-126 -162q-20 -26 -49 -26t-49 26l-126 162q-20 26 -11 44.5z" />
-<glyph unicode="&#xf035;" d="M0 1023v383l81 1l54 -27q12 -5 211 -5q44 0 132 2t132 2q70 0 246.5 1t304.5 0.5t247 -4.5q33 -1 56 31l42 1q4 0 14 -0.5t14 -0.5q2 -112 2 -336q0 -80 -5 -109q-39 -14 -68 -18q-25 44 -54 128q-3 9 -11 47.5t-15 73.5t-7 36q-10 13 -27 19q-5 2 -66 2q-30 0 -93 1 t-103 1t-94 -2t-96 -7q-9 -81 -8 -136l1 -152v52q0 -55 1 -154t1.5 -180t0.5 -153q0 -16 -2.5 -71.5t0 -91.5t12.5 -69q40 -21 124 -42.5t120 -37.5q5 -40 5 -50q0 -14 -3 -29l-34 -1q-76 -2 -218 8t-207 10q-50 0 -151 -9t-152 -9q-3 51 -3 52v9q17 27 61.5 43t98.5 29 t78 27q7 16 11.5 74t6 145.5t1.5 155t-0.5 153.5t-0.5 89q0 7 -2.5 21.5t-2.5 22.5q0 7 0.5 44t1 73t0 76.5t-3 67.5t-6.5 32q-11 12 -162 12q-41 0 -163 -13.5t-138 -24.5q-19 -12 -34 -71.5t-31.5 -111.5t-42.5 -54q-42 26 -56 44zM5 -64q0 28 26 49q4 3 36 30t59.5 49 t57.5 41.5t42 19.5q13 0 20.5 -10.5t10 -28.5t2.5 -33.5t-1.5 -33t-1.5 -19.5h1024q0 2 -1.5 19.5t-1.5 33t2.5 33.5t10 28.5t20.5 10.5q12 0 42 -19.5t57.5 -41.5t59.5 -49t36 -30q26 -21 26 -49t-26 -49q-4 -3 -36 -30t-59.5 -49t-5
 7.5 -41.5t-42 -19.5q-13 0 -20.5 10.5 t-10 28.5t-2.5 33.5t1.5 33t1.5 19.5h-1024q0 -2 1.5 -19.5t1.5 -33t-2.5 -33.5t-10 -28.5t-20.5 -10.5q-12 0 -42 19.5t-57.5 41.5t-59.5 49t-36 30q-26 21 -26 49z" />
-<glyph unicode="&#xf036;" horiz-adv-x="1792" d="M0 64v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45zM0 448v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45zM0 832v128q0 26 19 45t45 19h1536 q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1536q-26 0 -45 19t-19 45zM0 1216v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45z" />
-<glyph unicode="&#xf037;" horiz-adv-x="1792" d="M0 64v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45zM128 832v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45zM384 448v128q0 26 19 45t45 19h896 q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45zM512 1216v128q0 26 19 45t45 19h640q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45z" />
-<glyph unicode="&#xf038;" horiz-adv-x="1792" d="M0 64v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45zM128 832v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1536q-26 0 -45 19t-19 45zM384 448v128q0 26 19 45t45 19h1280 q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45zM512 1216v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45z" />
-<glyph unicode="&#xf039;" horiz-adv-x="1792" d="M0 64v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45zM0 448v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45zM0 832v128q0 26 19 45t45 19h1664 q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45zM0 1216v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45z" />
-<glyph unicode="&#xf03a;" horiz-adv-x="1792" d="M0 32v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5zM0 416v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5 t-9.5 22.5zM0 800v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5zM0 1184v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192 q-13 0 -22.5 9.5t-9.5 22.5zM384 32v192q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5zM384 416v192q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5 t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5zM384 800v192q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5zM384 1184v192q0 13 9.5 22.5t22.5 9.5h1344q13 0
  22.5 -9.5t9.5 -22.5v-192 q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5z" />
-<glyph unicode="&#xf03b;" horiz-adv-x="1792" d="M0 32v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5zM0 1184v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5 t-9.5 22.5zM32 704q0 14 9 23l288 288q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5v-576q0 -13 -9.5 -22.5t-22.5 -9.5q-14 0 -23 9l-288 288q-9 9 -9 23zM640 416v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088 q-13 0 -22.5 9.5t-9.5 22.5zM640 800v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5z" />
-<glyph unicode="&#xf03c;" horiz-adv-x="1792" d="M0 32v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5zM0 416v576q0 13 9.5 22.5t22.5 9.5q14 0 23 -9l288 -288q9 -9 9 -23t-9 -23l-288 -288q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5z M0 1184v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5zM640 416v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5 t-9.5 22.5zM640 800v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5z" />
-<glyph unicode="&#xf03d;" horiz-adv-x="1792" d="M0 288v704q0 119 84.5 203.5t203.5 84.5h704q119 0 203.5 -84.5t84.5 -203.5v-165l403 402q18 19 45 19q12 0 25 -5q39 -17 39 -59v-1088q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-403 403v-166q0 -119 -84.5 -203.5t-203.5 -84.5h-704q-119 0 -203.5 84.5 t-84.5 203.5z" />
-<glyph unicode="&#xf03e;" horiz-adv-x="1920" d="M0 32v1216q0 66 47 113t113 47h1600q66 0 113 -47t47 -113v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113zM128 32q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5v1216q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-1216z M256 128v192l320 320l160 -160l512 512l416 -416v-448h-1408zM256 960q0 80 56 136t136 56t136 -56t56 -136t-56 -136t-136 -56t-136 56t-56 136z" />
-<glyph unicode="&#xf040;" d="M0 -128v416l832 832l416 -416l-832 -832h-416zM128 128h128v-128h107l91 91l-235 235l-91 -91v-107zM298 384q0 -22 22 -22q10 0 17 7l542 542q7 7 7 17q0 22 -22 22q-10 0 -17 -7l-542 -542q-7 -7 -7 -17zM896 1184l166 165q36 38 90 38q53 0 91 -38l235 -234 q37 -39 37 -91q0 -53 -37 -90l-166 -166z" />
-<glyph unicode="&#xf041;" horiz-adv-x="1024" d="M0 896q0 212 150 362t362 150t362 -150t150 -362q0 -109 -33 -179l-364 -774q-16 -33 -47.5 -52t-67.5 -19t-67.5 19t-46.5 52l-365 774q-33 70 -33 179zM256 896q0 -106 75 -181t181 -75t181 75t75 181t-75 181t-181 75t-181 -75t-75 -181z" />
-<glyph unicode="&#xf042;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM224 640q0 -148 73 -273t198 -198t273 -73v1088q-148 0 -273 -73t-198 -198t-73 -273z" />
-<glyph unicode="&#xf043;" horiz-adv-x="1024" d="M0 512q0 145 81 275q6 9 62.5 90.5t101 151t99.5 178t83 201.5q9 30 34 47t51 17t51.5 -17t33.5 -47q28 -93 83 -201.5t99.5 -178t101 -151t62.5 -90.5q81 -127 81 -275q0 -212 -150 -362t-362 -150t-362 150t-150 362zM256 384q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5 t37.5 90.5q0 36 -20 69q-1 1 -15.5 22.5t-25.5 38t-25 44t-21 50.5q-4 16 -21 16t-21 -16q-7 -23 -21 -50.5t-25 -44t-25.5 -38t-15.5 -22.5q-20 -33 -20 -69z" />
-<glyph unicode="&#xf044;" horiz-adv-x="1792" d="M0 288v832q0 119 84.5 203.5t203.5 84.5h832q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-14 -14 -32 -8q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v126q0 13 9 22l64 64q15 15 35 7t20 -29v-190 q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5zM640 256v288l672 672l288 -288l-672 -672h-288zM736 448h96v-96h56l116 116l-152 152l-116 -116v-56zM944 688q16 -16 33 1l350 350q17 17 1 33t-33 -1l-350 -350q-17 -17 -1 -33zM1376 1280l92 92 q28 28 68 28t68 -28l152 -152q28 -28 28 -68t-28 -68l-92 -92z" />
-<glyph unicode="&#xf045;" horiz-adv-x="1664" d="M0 288v832q0 119 84.5 203.5t203.5 84.5h255q13 0 22.5 -9.5t9.5 -22.5q0 -27 -26 -32q-77 -26 -133 -60q-10 -4 -16 -4h-112q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v214q0 19 18 29q28 13 54 37q16 16 35 8q21 -9 21 -29v-259 q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5zM256 704q0 49 3.5 91t14 90t28 88t47 81.5t68.5 74t94.5 61.5t124.5 48.5t159.5 30.5t196.5 11h160v192q0 42 39 59q13 5 25 5q26 0 45 -19l384 -384q19 -19 19 -45t-19 -45l-384 -384 q-18 -19 -45 -19q-12 0 -25 5q-39 17 -39 59v192h-160q-323 0 -438 -131q-119 -137 -74 -473q3 -23 -20 -34q-8 -2 -12 -2q-16 0 -26 13q-10 14 -21 31t-39.5 68.5t-49.5 99.5t-38.5 114t-17.5 122z" />
-<glyph unicode="&#xf046;" horiz-adv-x="1664" d="M0 288v832q0 119 84.5 203.5t203.5 84.5h832q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-10 -10 -23 -10q-3 0 -9 2q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v254q0 13 9 22l64 64q10 10 23 10q6 0 12 -3 q20 -8 20 -29v-318q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5zM257 768q0 33 24 57l110 110q24 24 57 24t57 -24l263 -263l647 647q24 24 57 24t57 -24l110 -110q24 -24 24 -57t-24 -57l-814 -814q-24 -24 -57 -24t-57 24l-430 430 q-24 24 -24 57z" />
-<glyph unicode="&#xf047;" horiz-adv-x="1792" d="M0 640q0 26 19 45l256 256q19 19 45 19t45 -19t19 -45v-128h384v384h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45t-19 -45t-45 -19h-128v-384h384v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45t-19 -45l-256 -256 q-19 -19 -45 -19t-45 19t-19 45v128h-384v-384h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v384h-384v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45z" />
-<glyph unicode="&#xf048;" horiz-adv-x="1024" d="M0 -64v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 11 13 19l710 710q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45z" />
-<glyph unicode="&#xf049;" horiz-adv-x="1792" d="M0 -64v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 11 13 19l710 710q19 19 32 13t13 -32v-710q4 11 13 19l710 710q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45 t-45 -19h-128q-26 0 -45 19t-19 45z" />
-<glyph unicode="&#xf04a;" horiz-adv-x="1664" d="M122 640q0 26 19 45l710 710q19 19 32 13t13 -32v-710q5 11 13 19l710 710q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-8 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-19 19 -19 45z" />
-<glyph unicode="&#xf04b;" horiz-adv-x="1408" d="M0 -96v1472q0 26 16.5 36t39.5 -3l1328 -738q23 -13 23 -31t-23 -31l-1328 -738q-23 -13 -39.5 -3t-16.5 36z" />
-<glyph unicode="&#xf04c;" d="M0 -64v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45zM896 -64v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45z" />
-<glyph unicode="&#xf04d;" d="M0 -64v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45z" />
-<glyph unicode="&#xf04e;" horiz-adv-x="1664" d="M0 -96v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v710q0 26 13 32t32 -13l710 -710q19 -19 19 -45t-19 -45l-710 -710q-19 -19 -32 -13t-13 32v710q-5 -10 -13 -19l-710 -710q-19 -19 -32 -13t-13 32z" />
-<glyph unicode="&#xf050;" horiz-adv-x="1792" d="M0 -96v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v710q0 26 13 32t32 -13l710 -710q8 -8 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-5 -10 -13 -19l-710 -710q-19 -19 -32 -13t-13 32v710 q-5 -10 -13 -19l-710 -710q-19 -19 -32 -13t-13 32z" />
-<glyph unicode="&#xf051;" horiz-adv-x="1024" d="M0 -96v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-5 -10 -13 -19l-710 -710q-19 -19 -32 -13t-13 32z" />
-<glyph unicode="&#xf052;" horiz-adv-x="1538" d="M1 64v256q0 26 19 45t45 19h1408q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45zM1 525q-6 13 13 32l710 710q19 19 45 19t45 -19l710 -710q19 -19 13 -32t-32 -13h-1472q-26 0 -32 13z" />
-<glyph unicode="&#xf053;" horiz-adv-x="1280" d="M154 704q0 26 19 45l742 742q19 19 45 19t45 -19l166 -166q19 -19 19 -45t-19 -45l-531 -531l531 -531q19 -19 19 -45t-19 -45l-166 -166q-19 -19 -45 -19t-45 19l-742 742q-19 19 -19 45z" />
-<glyph unicode="&#xf054;" horiz-adv-x="1280" d="M90 128q0 26 19 45l531 531l-531 531q-19 19 -19 45t19 45l166 166q19 19 45 19t45 -19l742 -742q19 -19 19 -45t-19 -45l-742 -742q-19 -19 -45 -19t-45 19l-166 166q-19 19 -19 45z" />
-<glyph unicode="&#xf055;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM320 576q0 -26 19 -45t45 -19h256v-256q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v256h256q26 0 45 19 t19 45v128q0 26 -19 45t-45 19h-256v256q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-256h-256q-26 0 -45 -19t-19 -45v-128z" />
-<glyph unicode="&#xf056;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM320 576q0 -26 19 -45t45 -19h768q26 0 45 19t19 45v128q0 26 -19 45t-45 19h-768q-26 0 -45 -19 t-19 -45v-128z" />
-<glyph unicode="&#xf057;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM387 414q0 -27 19 -46l90 -90q19 -19 46 -19q26 0 45 19l181 181l181 -181q19 -19 45 -19q27 0 46 19 l90 90q19 19 19 46q0 26 -19 45l-181 181l181 181q19 19 19 45q0 27 -19 46l-90 90q-19 19 -46 19q-26 0 -45 -19l-181 -181l-181 181q-19 19 -45 19q-27 0 -46 -19l-90 -90q-19 -19 -19 -46q0 -26 19 -45l181 -181l-181 -181q-19 -19 -19 -45z" />
-<glyph unicode="&#xf058;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM252 621q0 -27 18 -45l362 -362q19 -19 45 -19q27 0 46 19l543 543q18 18 18 45q0 28 -18 46l-91 90 q-19 19 -45 19t-45 -19l-408 -407l-226 226q-19 19 -45 19t-45 -19l-91 -90q-18 -18 -18 -46z" />
-<glyph unicode="&#xf059;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM417 939q-15 -24 8 -42l132 -100q7 -6 19 -6q16 0 25 12q53 68 86 92q34 24 86 24q48 0 85.5 -26 t37.5 -59q0 -38 -20 -61t-68 -45q-63 -28 -115.5 -86.5t-52.5 -125.5v-36q0 -14 9 -23t23 -9h192q14 0 23 9t9 23q0 19 21.5 49.5t54.5 49.5q32 18 49 28.5t46 35t44.5 48t28 60.5t12.5 81q0 88 -55.5 163t-138.5 116t-170 41q-243 0 -371 -213zM640 160q0 -14 9 -23t23 -9 h192q14 0 23 9t9 23v192q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-192z" />
-<glyph unicode="&#xf05a;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM512 160q0 -14 9 -23t23 -9h448q14 0 23 9t9 23v160q0 14 -9 23t-23 9h-96v512q0 14 -9 23t-23 9h-320 q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h96v-320h-96q-14 0 -23 -9t-9 -23v-160zM640 1056q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v160q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-160z" />
-<glyph unicode="&#xf05b;" d="M0 576v128q0 26 19 45t45 19h143q37 161 154.5 278.5t278.5 154.5v143q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-143q161 -37 278.5 -154.5t154.5 -278.5h143q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-143q-37 -161 -154.5 -278.5t-278.5 -154.5v-143 q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v143q-161 37 -278.5 154.5t-154.5 278.5h-143q-26 0 -45 19t-19 45zM339 512q32 -108 112.5 -188.5t188.5 -112.5v109q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-109q108 32 188.5 112.5t112.5 188.5h-109q-26 0 -45 19 t-19 45v128q0 26 19 45t45 19h109q-32 108 -112.5 188.5t-188.5 112.5v-109q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v109q-108 -32 -188.5 -112.5t-112.5 -188.5h109q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-109z" />
-<glyph unicode="&#xf05c;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM224 640q0 -148 73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73t-273 -73 t-198 -198t-73 -273zM429 480q0 13 10 23l137 137l-137 137q-10 10 -10 23t10 23l146 146q10 10 23 10t23 -10l137 -137l137 137q10 10 23 10t23 -10l146 -146q10 -10 10 -23t-10 -23l-137 -137l137 -137q10 -10 10 -23t-10 -23l-146 -146q-10 -10 -23 -10t-23 10l-137 137 l-137 -137q-10 -10 -23 -10t-23 10l-146 146q-10 10 -10 23z" />
-<glyph unicode="&#xf05d;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM224 640q0 -148 73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73t-273 -73 t-198 -198t-73 -273zM346 640q0 26 19 45l102 102q19 19 45 19t45 -19l147 -147l275 275q19 19 45 19t45 -19l102 -102q19 -19 19 -45t-19 -45l-422 -422q-19 -19 -45 -19t-45 19l-294 294q-19 19 -19 45z" />
-<glyph unicode="&#xf05e;" d="M0 643q0 157 61 299.5t163.5 245.5t245 164t298.5 61t298.5 -61t245 -164t163.5 -245.5t61 -299.5t-61 -300t-163.5 -246t-245 -164t-298.5 -61t-298.5 61t-245 164t-163.5 246t-61 300zM224 643q0 -162 89 -299l755 754q-135 91 -300 91q-148 0 -273 -73t-198 -199 t-73 -274zM471 185q137 -89 297 -89q111 0 211.5 43.5t173.5 116.5t116 174.5t43 212.5q0 161 -87 295z" />
-<glyph unicode="&#xf060;" d="M64 576q0 52 37 91l651 650q38 38 91 38q52 0 90 -38l75 -74q38 -38 38 -91t-38 -91l-293 -293h704q52 0 84.5 -37.5t32.5 -90.5v-128q0 -53 -32.5 -90.5t-84.5 -37.5h-704l293 -294q38 -36 38 -90t-38 -90l-75 -76q-37 -37 -90 -37q-52 0 -91 37l-651 652q-37 37 -37 90 z" />
-<glyph unicode="&#xf061;" d="M0 512v128q0 53 32.5 90.5t84.5 37.5h704l-293 294q-38 36 -38 90t38 90l75 75q38 38 90 38q53 0 91 -38l651 -651q37 -35 37 -90q0 -54 -37 -91l-651 -651q-39 -37 -91 -37q-51 0 -90 37l-75 75q-38 38 -38 91t38 91l293 293h-704q-52 0 -84.5 37.5t-32.5 90.5z" />
-<glyph unicode="&#xf062;" horiz-adv-x="1664" d="M53 565q0 53 38 91l651 651q35 37 90 37q54 0 91 -37l651 -651q37 -39 37 -91q0 -51 -37 -90l-75 -75q-38 -38 -91 -38q-54 0 -90 38l-294 293v-704q0 -52 -37.5 -84.5t-90.5 -32.5h-128q-53 0 -90.5 32.5t-37.5 84.5v704l-294 -293q-36 -38 -90 -38t-90 38l-75 75 q-38 38 -38 90z" />
-<glyph unicode="&#xf063;" horiz-adv-x="1664" d="M53 704q0 53 38 91l74 75q39 37 91 37q53 0 90 -37l294 -294v704q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-704l294 294q37 37 90 37q52 0 91 -37l75 -75q37 -39 37 -91q0 -53 -37 -90l-651 -652q-39 -37 -91 -37q-53 0 -90 37l-651 652q-38 36 -38 90z" />
-<glyph unicode="&#xf064;" horiz-adv-x="1792" d="M0 416q0 199 53 333q162 403 875 403h224v256q0 26 19 45t45 19t45 -19l512 -512q19 -19 19 -45t-19 -45l-512 -512q-19 -19 -45 -19t-45 19t-19 45v256h-224q-98 0 -175.5 -6t-154 -21.5t-133 -42.5t-105.5 -69.5t-80 -101t-48.5 -138.5t-17.5 -181q0 -55 5 -123 q0 -6 2.5 -23.5t2.5 -26.5q0 -15 -8.5 -25t-23.5 -10q-16 0 -28 17q-7 9 -13 22t-13.5 30t-10.5 24q-127 285 -127 451z" />
-<glyph unicode="&#xf065;" d="M0 -64v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23t-10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45t-45 -19h-448q-26 0 -45 19t-19 45zM781 800q0 13 10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448 q26 0 45 -19t19 -45v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23z" />
-<glyph unicode="&#xf066;" d="M13 32q0 13 10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23zM768 704v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10 t23 -10l114 -114q10 -10 10 -23t-10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45t-45 -19h-448q-26 0 -45 19t-19 45z" />
-<glyph unicode="&#xf067;" horiz-adv-x="1408" d="M0 608v192q0 40 28 68t68 28h416v416q0 40 28 68t68 28h192q40 0 68 -28t28 -68v-416h416q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-416v-416q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v416h-416q-40 0 -68 28t-28 68z" />
-<glyph unicode="&#xf068;" horiz-adv-x="1408" d="M0 608v192q0 40 28 68t68 28h1216q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-1216q-40 0 -68 28t-28 68z" />
-<glyph unicode="&#xf069;" horiz-adv-x="1664" d="M122.5 408.5q13.5 51.5 59.5 77.5l266 154l-266 154q-46 26 -59.5 77.5t12.5 97.5l64 110q26 46 77.5 59.5t97.5 -12.5l266 -153v307q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-307l266 153q46 26 97.5 12.5t77.5 -59.5l64 -110q26 -46 12.5 -97.5t-59.5 -77.5 l-266 -154l266 -154q46 -26 59.5 -77.5t-12.5 -97.5l-64 -110q-26 -46 -77.5 -59.5t-97.5 12.5l-266 153v-307q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v307l-266 -153q-46 -26 -97.5 -12.5t-77.5 59.5l-64 110q-26 46 -12.5 97.5z" />
-<glyph unicode="&#xf06a;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM624 1126l17 -621q0 -10 10 -17.5t24 -7.5h185q14 0 23.5 7.5t10.5 17.5l18 621q0 12 -10 18 q-10 8 -24 8h-220q-14 0 -24 -8q-10 -6 -10 -18zM640 161q0 -13 10 -23t23 -10h192q13 0 22 9.5t9 23.5v190q0 14 -9 23.5t-22 9.5h-192q-13 0 -23 -10t-10 -23v-190z" />
-<glyph unicode="&#xf06b;" d="M0 544v320q0 14 9 23t23 9h440q-93 0 -158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5q107 0 168 -77l128 -165l128 165q61 77 168 77q93 0 158.5 -65.5t65.5 -158.5t-65.5 -158.5t-158.5 -65.5h440q14 0 23 -9t9 -23v-320q0 -14 -9 -23t-23 -9h-96v-416q0 -40 -28 -68 t-68 -28h-1088q-40 0 -68 28t-28 68v416h-96q-14 0 -23 9t-9 23zM376 1120q0 -40 28 -68t68 -28h195l-126 161q-26 31 -69 31q-40 0 -68 -28t-28 -68zM608 180q0 -25 18 -38.5t46 -13.5h192q28 0 46 13.5t18 38.5v56v468v192h-320v-192v-468v-56zM870 1024h194q40 0 68 28 t28 68t-28 68t-68 28q-43 0 -69 -31z" />
-<glyph unicode="&#xf06c;" horiz-adv-x="1792" d="M0 121q0 35 31 73.5t68 65.5t68 56t31 48q0 4 -14 38t-16 44q-9 51 -9 104q0 115 43.5 220t119 184.5t170.5 139t204 95.5q55 18 145 25.5t179.5 9t178.5 6t163.5 24t113.5 56.5l29.5 29.5t29.5 28t27 20t36.5 16t43.5 4.5q39 0 70.5 -46t47.5 -112t24 -124t8 -96 q0 -95 -20 -193q-46 -224 -184.5 -383t-357.5 -268q-214 -108 -438 -108q-148 0 -286 47q-15 5 -88 42t-96 37q-16 0 -39.5 -32t-45 -70t-52.5 -70t-60 -32q-30 0 -51 11t-31 24t-27 42q-2 4 -6 11t-5.5 10t-3 9.5t-1.5 13.5zM384 448q0 -26 19 -45t45 -19q24 0 45 19 q27 24 74 71t67 66q137 124 268.5 176t313.5 52q26 0 45 19t19 45t-19 45t-45 19q-172 0 -318 -49.5t-259.5 -134t-235.5 -219.5q-19 -21 -19 -45z" />
-<glyph unicode="&#xf06d;" horiz-adv-x="1408" d="M0 -160q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v64zM256 640q0 78 24.5 144t64 112.5t87.5 88t96 77.5t87.5 72t64 81.5t24.5 96.5q0 94 -66 224l3 -1l-1 1q90 -41 160 -83t138.5 -100 t113.5 -122.5t72.5 -150.5t27.5 -184q0 -78 -24.5 -144t-64 -112.5t-87.5 -88t-96 -77.5t-87.5 -72t-64 -81.5t-24.5 -96.5q0 -96 67 -224l-4 1l1 -1q-90 41 -160 83t-138.5 100t-113.5 122.5t-72.5 150.5t-27.5 184z" />
-<glyph unicode="&#xf06e;" horiz-adv-x="1792" d="M0 576q0 34 20 69q140 229 376.5 368t499.5 139t499.5 -139t376.5 -368q20 -35 20 -69t-20 -69q-140 -230 -376.5 -368.5t-499.5 -138.5t-499.5 139t-376.5 368q-20 35 -20 69zM128 576q133 -205 333.5 -326.5t434.5 -121.5t434.5 121.5t333.5 326.5q-152 236 -381 353 q61 -104 61 -225q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 121 61 225q-229 -117 -381 -353zM592 704q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34t-14 34t-34 14q-125 0 -214.5 -89.5t-89.5 -214.5z" />
-<glyph unicode="&#xf070;" horiz-adv-x="1792" d="M0 576q0 38 20 69q153 235 380 371t496 136q89 0 180 -17l54 97q10 16 28 16q5 0 18 -6t31 -15.5t33 -18.5t31.5 -18.5t19.5 -11.5q16 -10 16 -27q0 -7 -1 -9q-105 -188 -315 -566t-316 -567l-49 -89q-10 -16 -28 -16q-12 0 -134 70q-16 10 -16 28q0 12 44 87 q-143 65 -263.5 173t-208.5 245q-20 31 -20 69zM128 576q167 -258 427 -375l78 141q-87 63 -136 159t-49 203q0 121 61 225q-229 -117 -381 -353zM592 704q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34t-14 34t-34 14q-125 0 -214.5 -89.5 t-89.5 -214.5zM896 0l74 132q212 18 392.5 137t301.5 307q-115 179 -282 294l63 112q95 -64 182.5 -153t144.5 -184q20 -34 20 -69t-20 -69q-39 -64 -109 -145q-150 -172 -347.5 -267t-419.5 -95zM1056 286l280 502q8 -45 8 -84q0 -139 -79 -253.5t-209 -164.5z" />
-<glyph unicode="&#xf071;" horiz-adv-x="1792" d="M16 61l768 1408q17 31 47 49t65 18t65 -18t47 -49l768 -1408q35 -63 -2 -126q-17 -29 -46.5 -46t-63.5 -17h-1536q-34 0 -63.5 17t-46.5 46q-37 63 -2 126zM752 992l17 -457q0 -10 10 -16.5t24 -6.5h185q14 0 23.5 6.5t10.5 16.5l18 459q0 12 -10 19q-13 11 -24 11h-220 q-11 0 -24 -11q-10 -7 -10 -21zM768 161q0 -14 9.5 -23.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 23.5v190q0 14 -9.5 23.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -23.5v-190z" />
-<glyph unicode="&#xf072;" horiz-adv-x="1408" d="M0 477q-1 13 9 25l96 97q9 9 23 9q6 0 8 -1l194 -53l259 259l-508 279q-14 8 -17 24q-2 16 9 27l128 128q14 13 30 8l665 -159l160 160q76 76 172 108t148 -12q44 -52 12 -148t-108 -172l-161 -161l160 -696q5 -19 -12 -33l-128 -96q-7 -6 -19 -6q-4 0 -7 1q-15 3 -21 16 l-279 508l-259 -259l53 -194q5 -17 -8 -31l-96 -96q-9 -9 -23 -9h-2q-15 2 -24 13l-189 252l-252 189q-11 7 -13 23z" />
-<glyph unicode="&#xf073;" horiz-adv-x="1664" d="M0 -128v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90zM128 -128h288v288h-288v-288zM128 224 h288v320h-288v-320zM128 608h288v288h-288v-288zM384 1088q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5v288q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-288zM480 -128h320v288h-320v-288zM480 224h320v320h-320v-320zM480 608h320v288h-320 v-288zM864 -128h320v288h-320v-288zM864 224h320v320h-320v-320zM864 608h320v288h-320v-288zM1152 1088q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5v288q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-288zM1248 -128h288v288h-288v-288z M1248 224h288v320h-288v-320zM1248 608h288v288h-288v-288z" />
-<glyph unicode="&#xf074;" horiz-adv-x="1792" d="M0 160v192q0 14 9 23t23 9h224q48 0 87 15t69 45t51 61.5t45 77.5q32 62 78 171q29 66 49.5 111t54 105t64 100t74 83t90 68.5t106.5 42t128 16.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23t-9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192 h-256q-48 0 -87 -15t-69 -45t-51 -61.5t-45 -77.5q-32 -62 -78 -171q-29 -66 -49.5 -111t-54 -105t-64 -100t-74 -83t-90 -68.5t-106.5 -42t-128 -16.5h-224q-14 0 -23 9t-9 23zM0 1056v192q0 14 9 23t23 9h224q250 0 410 -225q-60 -92 -137 -273q-22 45 -37 72.5 t-40.5 63.5t-51 56.5t-63 35t-81.5 14.5h-224q-14 0 -23 9t-9 23zM743 353q59 93 136 273q22 -45 37 -72.5t40.5 -63.5t51 -56.5t63 -35t81.5 -14.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23t-9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192 q-32 0 -85 -0.5t-81 -1t-73 1t-71 5t-64 10.5t-63 18.5t-58 28.5t-59 40t-55 53.5t-56 69.5z" />
-<glyph unicode="&#xf075;" horiz-adv-x="1792" d="M0 640q0 130 71 248.5t191 204.5t286 136.5t348 50.5q244 0 450 -85.5t326 -233t120 -321.5t-120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22q-17 -2 -30.5 9t-17.5 29v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5 t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281z" />
-<glyph unicode="&#xf076;" d="M0 576v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-128q0 -52 23.5 -90t53.5 -57t71 -30t64 -13t44 -2t44 2t64 13t71 30t53.5 57t23.5 90v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-128q0 -201 -98.5 -362t-274 -251.5t-395.5 -90.5t-395.5 90.5t-274 251.5 t-98.5 362zM0 960v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45zM1024 960v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45z" />
-<glyph unicode="&#xf077;" horiz-adv-x="1792" d="M90 250.5q0 26.5 19 45.5l742 741q19 19 45 19t45 -19l742 -741q19 -19 19 -45.5t-19 -45.5l-166 -165q-19 -19 -45 -19t-45 19l-531 531l-531 -531q-19 -19 -45 -19t-45 19l-166 165q-19 19 -19 45.5z" />
-<glyph unicode="&#xf078;" horiz-adv-x="1792" d="M90 773.5q0 26.5 19 45.5l166 165q19 19 45 19t45 -19l531 -531l531 531q19 19 45 19t45 -19l166 -165q19 -19 19 -45.5t-19 -45.5l-742 -741q-19 -19 -45 -19t-45 19l-742 741q-19 19 -19 45.5z" />
-<glyph unicode="&#xf079;" horiz-adv-x="1920" d="M0 704q0 24 15 41l320 384q19 22 49 22t49 -22l320 -384q15 -17 15 -41q0 -26 -19 -45t-45 -19h-192v-384h576q16 0 25 -11l160 -192q7 -11 7 -21q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-8 0 -13.5 2t-9 7t-5.5 8t-3 11.5t-1 11.5v13v11v160v416h-192q-26 0 -45 19t-19 45z M640 1120q0 13 9.5 22.5t22.5 9.5h960q8 0 13.5 -2t9 -7t5.5 -8t3 -11.5t1 -11.5v-13v-11v-160v-416h192q26 0 45 -19t19 -45q0 -24 -15 -41l-320 -384q-20 -23 -49 -23t-49 23l-320 384q-15 17 -15 41q0 26 19 45t45 19h192v384h-576q-16 0 -25 12l-160 192q-7 9 -7 20z " />
-<glyph unicode="&#xf07a;" horiz-adv-x="1664" d="M0 1216q0 26 19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45v-512q0 -24 -16 -42.5t-41 -21.5l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024 q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45zM384 0q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5zM1280 0q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5t-37.5 -90.5 t-90.5 -37.5t-90.5 37.5t-37.5 90.5z" />
-<glyph unicode="&#xf07b;" horiz-adv-x="1664" d="M0 224v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158z" />
-<glyph unicode="&#xf07c;" horiz-adv-x="1920" d="M0 224v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158v-160h-832q-94 0 -197 -47.5t-164 -119.5l-337 -396l-5 -6q0 4 -0.5 12.5t-0.5 12.5zM73 56q0 31 31 66l336 396q43 51 120.5 86.5t143.5 35.5h1088q34 0 60.5 -13t26.5 -43 q0 -31 -31 -66l-336 -396q-43 -51 -120.5 -86.5t-143.5 -35.5h-1088q-34 0 -60.5 13t-26.5 43z" />
-<glyph unicode="&#xf07d;" horiz-adv-x="768" d="M64 64q0 26 19 45t45 19h128v1024h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45t-19 -45t-45 -19h-128v-1024h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45z" />
-<glyph unicode="&#xf07e;" horiz-adv-x="1792" d="M0 640q0 26 19 45l256 256q19 19 45 19t45 -19t19 -45v-128h1024v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-1024v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45z" />
-<glyph unicode="&#xf080;" horiz-adv-x="1920" d="M0 32v1216q0 66 47 113t113 47h1600q66 0 113 -47t47 -113v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113zM128 32q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5v1216q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-1216z M256 128v384h256v-384h-256zM640 128v896h256v-896h-256zM1024 128v640h256v-640h-256zM1408 128v1024h256v-1024h-256z" />
-<glyph unicode="&#xf081;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM256 286q148 -94 322 -94q112 0 210 35.5t168 95t120.5 137t75 162t24.5 168.5q0 18 -1 27q63 45 105 109 q-56 -25 -121 -34q68 40 93 117q-65 -38 -134 -51q-61 66 -153 66q-87 0 -148.5 -61.5t-61.5 -148.5q0 -29 5 -48q-129 7 -242 65t-192 155q-29 -50 -29 -106q0 -114 91 -175q-47 1 -100 26v-2q0 -75 50 -133.5t123 -72.5q-29 -8 -51 -8q-13 0 -39 4q21 -63 74.5 -104 t121.5 -42q-116 -90 -261 -90q-26 0 -50 3z" />
-<glyph unicode="&#xf082;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-192v608h203l30 224h-233v143q0 54 28 83t96 29l132 1v207q-96 9 -180 9q-136 0 -218 -80.5t-82 -225.5v-166h-224v-224h224v-608h-544 q-119 0 -203.5 84.5t-84.5 203.5z" />
-<glyph unicode="&#xf083;" horiz-adv-x="1792" d="M0 0v1280q0 53 37.5 90.5t90.5 37.5h1536q53 0 90.5 -37.5t37.5 -90.5v-1280q0 -53 -37.5 -90.5t-90.5 -37.5h-1536q-53 0 -90.5 37.5t-37.5 90.5zM128 0h1536v128h-1536v-128zM128 1024h1536v118v138h-828l-64 -128h-644v-128zM256 1216h384v128h-384v-128zM512 574 q0 -159 112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5t-112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5zM640 574q0 106 75 181t181 75t181 -75t75 -181t-75 -181t-181 -75t-181 75t-75 181zM736 576q0 -14 9 -23t23 -9t23 9t9 23q0 40 28 68t68 28q14 0 23 9 t9 23t-9 23t-23 9q-66 0 -113 -47t-47 -113z" />
-<glyph unicode="&#xf084;" horiz-adv-x="1792" d="M0 752q0 160 95 313t248 248t313 95q163 0 265.5 -102.5t102.5 -265.5q0 -189 -131 -365l355 -355l96 96q-3 3 -26 24.5t-40 38.5t-33 36.5t-16 28.5q0 17 49 66t66 49q13 0 23 -10q6 -6 46 -44.5t82 -79.5t86.5 -86t73 -78t28.5 -41q0 -17 -49 -66t-66 -49 q-9 0 -28.5 16t-36.5 33t-38.5 40t-24.5 26l-96 -96l220 -220q28 -28 28 -68q0 -42 -39 -81t-81 -39q-40 0 -68 28l-671 671q-176 -131 -365 -131q-163 0 -265.5 102.5t-102.5 265.5zM192 768q0 -80 56 -136t136 -56t136 56t56 136q0 42 -19 83q41 -19 83 -19q80 0 136 56 t56 136t-56 136t-136 56t-136 -56t-56 -136q0 -42 19 -83q-41 19 -83 19q-80 0 -136 -56t-56 -136z" />
-<glyph unicode="&#xf085;" horiz-adv-x="1920" d="M0 549v185q0 10 7 19.5t16 10.5l155 24q11 35 32 76q-34 48 -90 115q-7 11 -7 20q0 12 7 20q22 30 82 89t79 59q11 0 21 -7l115 -90q34 18 77 32q11 108 23 154q7 24 30 24h186q11 0 20 -7.5t10 -17.5l23 -153q34 -10 75 -31l118 89q8 7 20 7q11 0 21 -8 q144 -133 144 -160q0 -9 -7 -19q-12 -16 -42 -54t-45 -60q23 -48 34 -82l152 -23q10 -2 17 -10.5t7 -19.5v-185q0 -10 -7 -19.5t-16 -10.5l-155 -24q-11 -35 -32 -76q34 -48 90 -115q7 -10 7 -20q0 -12 -7 -19q-23 -30 -82.5 -89.5t-78.5 -59.5q-11 0 -21 7l-115 90 q-37 -19 -77 -31q-11 -108 -23 -155q-7 -24 -30 -24h-186q-11 0 -20 7.5t-10 17.5l-23 153q-34 10 -75 31l-118 -89q-7 -7 -20 -7q-11 0 -21 8q-144 133 -144 160q0 9 7 19q10 14 41 53t47 61q-23 44 -35 82l-152 24q-10 1 -17 9.5t-7 19.5zM384 640q0 -106 75 -181t181 -75 t181 75t75 181t-75 181t-181 75t-181 -75t-75 -181zM1152 58v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70q4 -3 4 -7q0 
 -25 -51 -138q17 -23 30 -52q149 -15 149 -31 v-140q0 -16 -149 -31q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31zM1152 1082v140q0 16 149 31q13 29 30 52 q-51 113 -51 138q0 4 4 7q4 2 35 20t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31v-140q0 -16 -149 -31q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71 q-8 0 -46 47t-52 68q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31zM1408 128q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5q0 52 -38 90t-90 38t-90 -38t-38 -90zM1408 1152q0 -53 37.5 -90.5 t90.5 -37.5t90.5 37.5t37.5 90.5q0 52 -38 90t-90 38t-90 -38t-38 -90z" />
-<glyph unicode="&#xf086;" horiz-adv-x="1792" d="M0 768q0 139 94 257t256.5 186.5t353.5 68.5t353.5 -68.5t256.5 -186.5t94 -257t-94 -257t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25 t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224zM616 132q58 -4 88 -4q161 0 309 45t264 129q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230q0 -120 -71 -224.5t-195 -176.5q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5 t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132z" />
-<glyph unicode="&#xf087;" d="M0 128v640q0 53 37.5 90.5t90.5 37.5h274q36 24 137 155q58 75 107 128q24 25 35.5 85.5t30.5 126.5t62 108q39 37 90 37q84 0 151 -32.5t102 -101.5t35 -186q0 -93 -48 -192h176q104 0 180 -76t76 -179q0 -89 -49 -163q9 -33 9 -69q0 -77 -38 -144q3 -21 3 -43 q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5h-36h-93q-96 0 -189.5 22.5t-216.5 65.5q-116 40 -138 40h-288q-53 0 -90.5 37.5t-37.5 90.5zM128 192q0 -26 19 -45t45 -19t45 19t19 45t-19 45t-45 19t-45 -19t-19 -45zM384 128h32q13 0 31.5 -3t33 -6.5t38 -11t35 -11.5 t35.5 -12.5t29 -10.5q211 -73 342 -73h121q192 0 192 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5q32 1 53.5 47t21.5 81q0 51 -39 89.5t-89 38.5h-352q0 58 48 159.5t48 160.5q0 98 -32 145t-128 47q-26 -26 -38 -85 t-30.5 -125.5t-59.5 -109.5q-22 -23 -77 -91q-4 -5 -23 -30t-31.5 -41t-34.5 -42.5t-40 -44t-38.5 -35.5t-40 -27t-35.5 -9h-32v-640z" />
-<glyph unicode="&#xf088;" d="M0 512v640q0 53 37.5 90.5t90.5 37.5h288q22 0 138 40q128 44 223 66t200 22h112q140 0 226.5 -79t85.5 -216v-5q60 -77 60 -178q0 -22 -3 -43q38 -67 38 -144q0 -36 -9 -69q49 -74 49 -163q0 -103 -76 -179t-180 -76h-176q48 -99 48 -192q0 -118 -35 -186 q-35 -69 -102 -101.5t-151 -32.5q-51 0 -90 37q-34 33 -54 82t-25.5 90.5t-17.5 84.5t-31 64q-48 50 -107 127q-101 131 -137 155h-274q-53 0 -90.5 37.5t-37.5 90.5zM128 1088q0 -26 19 -45t45 -19t45 19t19 45t-19 45t-45 19t-45 -19t-19 -45zM384 512h32q16 0 35.5 -9 t40 -27t38.5 -35.5t40 -44t34.5 -42.5t31.5 -41t23 -30q55 -68 77 -91q41 -43 59.5 -109.5t30.5 -125.5t38 -85q96 0 128 47t32 145q0 59 -48 160.5t-48 159.5h352q50 0 89 38.5t39 89.5q0 35 -21.5 81t-53.5 47q15 17 25 47.5t10 55.5q0 69 -53 119q18 32 18 69t-17.5 73.5 t-47.5 52.5q5 30 5 56q0 85 -49 126t-136 41h-128q-131 0 -342 -73q-5 -2 -29 -10.5t-35.5 -12.5t-35 -11.5t-38 -11t-33 -6.5t-31.5 -3h-32v-640z" />
-<glyph unicode="&#xf089;" horiz-adv-x="896" d="M0 889q0 37 56 46l502 73l225 455q19 41 49 41v-1339l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48z" />
-<glyph unicode="&#xf08a;" horiz-adv-x="1792" d="M0 940q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5q224 0 351 -124t127 -344q0 -221 -229 -450l-623 -600q-18 -18 -44 -18t-44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138z M128 940q0 -168 187 -355l581 -560l580 559q188 188 188 356q0 81 -21.5 143t-55 98.5t-81.5 59.5t-94 31t-98 8t-112 -25.5t-110.5 -64t-86.5 -72t-60 -61.5q-18 -22 -49 -22t-49 22q-24 28 -60 61.5t-86.5 72t-110.5 64t-112 25.5t-98 -8t-94 -31t-81.5 -59.5t-55 -98.5 t-21.5 -143z" />
-<glyph unicode="&#xf08b;" horiz-adv-x="1664" d="M0 288v704q0 119 84.5 203.5t203.5 84.5h320q13 0 22.5 -9.5t9.5 -22.5q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-66 0 -113 -47t-47 -113v-704q0 -66 47 -113t113 -47h288h11h13t11.5 -1t11.5 -3t8 -5.5t7 -9t2 -13.5q0 -4 1 -20t0.5 -26.5t-3 -23.5 t-10 -19.5t-20.5 -6.5h-320q-119 0 -203.5 84.5t-84.5 203.5zM384 448v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45t-19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45z" />
-<glyph unicode="&#xf08c;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM223 1030q0 -51 35.5 -85.5t92.5 -34.5h1q59 0 95 34.5t36 85.5q-1 52 -36 86t-93 34t-94.5 -34t-36.5 -86z M237 122h231v694h-231v-694zM595 122h231v388q0 38 7 56q15 35 45 59.5t74 24.5q116 0 116 -157v-371h231v398q0 154 -73 233t-193 79q-136 0 -209 -117h2v101h-231q3 -66 0 -694z" />
-<glyph unicode="&#xf08d;" horiz-adv-x="1152" d="M0 320q0 123 78.5 221.5t177.5 98.5v512q-52 0 -90 38t-38 90t38 90t90 38h640q52 0 90 -38t38 -90t-38 -90t-90 -38v-512q99 0 177.5 -98.5t78.5 -221.5q0 -26 -19 -45t-45 -19h-429l-51 -483q-2 -12 -10.5 -20.5t-20.5 -8.5h-1q-27 0 -32 27l-76 485h-404q-26 0 -45 19 t-19 45zM416 672q0 -14 9 -23t23 -9t23 9t9 23v448q0 14 -9 23t-23 9t-23 -9t-9 -23v-448z" />
-<glyph unicode="&#xf08e;" horiz-adv-x="1792" d="M0 288v832q0 119 84.5 203.5t203.5 84.5h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v320q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-320q0 -119 -84.5 -203.5t-203.5 -84.5h-832 q-119 0 -203.5 84.5t-84.5 203.5zM685 576q0 13 10 23l652 652l-176 176q-19 19 -19 45t19 45t45 19h512q26 0 45 -19t19 -45v-512q0 -26 -19 -45t-45 -19t-45 19l-176 176l-652 -652q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23z" />
-<glyph unicode="&#xf090;" d="M0 448v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45t-19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45zM894.5 78.5q0.5 10.5 3 23.5t10 19.5t20.5 6.5h320q66 0 113 47t47 113v704q0 66 -47 113 t-113 47h-288h-11h-13t-11.5 1t-11.5 3t-8 5.5t-7 9t-2 13.5q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q119 0 203.5 -84.5t84.5 -203.5v-704q0 -119 -84.5 -203.5t-203.5 -84.5h-320q-13 0 -22.5 9.5t-9.5 22.5q0 4 -1 20t-0.5 26.5z" />
-<glyph unicode="&#xf091;" horiz-adv-x="1664" d="M0 928v128q0 40 28 68t68 28h288v96q0 66 47 113t113 47h576q66 0 113 -47t47 -113v-96h288q40 0 68 -28t28 -68v-128q0 -71 -41.5 -143t-112 -130t-173 -97.5t-215.5 -44.5q-42 -54 -95 -95q-38 -34 -52.5 -72.5t-14.5 -89.5q0 -54 30.5 -91t97.5 -37q75 0 133.5 -45.5 t58.5 -114.5v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 69 58.5 114.5t133.5 45.5q67 0 97.5 37t30.5 91q0 51 -14.5 89.5t-52.5 72.5q-53 41 -95 95q-113 5 -215.5 44.5t-173 97.5t-112 130t-41.5 143zM128 928q0 -78 94.5 -162t235.5 -113q-74 162 -74 371 h-256v-96zM1206 653q141 29 235.5 113t94.5 162v96h-256q0 -209 -74 -371z" />
-<glyph unicode="&#xf092;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-224q-16 0 -24.5 1t-19.5 5t-16 14.5t-5 27.5v239q0 97 -52 142q57 6 102.5 18t94 39t81 66.5t53 105t20.5 150.5q0 121 -79 206q37 91 -8 204 q-28 9 -81 -11t-92 -44l-38 -24q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-86 13.5q-44 -113 -7 -204q-79 -85 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-40 -36 -49 -103q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52 t-49.5 24l-20 3q-21 0 -29 -4.5t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -103t0.5 -68q0 -22 -11 -33.5t-22 -13t-33 -1.5h-224q-119 0 -203.5 84.5t-84.5 203.5zM271 315q3 5 13 2 q10 -5 7 -12q-5 -7 -13 -2q-10 5 -7 12zM304 290q6 6 16 -3q9 -11 2 -16q-6 -7 -16 3q-9 11 -2 16zM335 233q-9 13 0 18q9 7 17 -6q9 -12 0 -19q-8 -6 -17 7zM370 206q8 9 20 -3q12 -11 4 -19q-8 -9 -20 3q-13 11 -4 19zM419 168q4 11 19 7q
 16 -5 13 -16q-4 -12 -19 -6 q-17 4 -13 15zM481 154q0 11 16 11q17 2 17 -11q0 -11 -16 -11q-17 -2 -17 11zM540 158q-2 12 14 15q16 2 18 -9q2 -10 -14 -14t-18 8z" />
-<glyph unicode="&#xf093;" horiz-adv-x="1664" d="M0 -32v320q0 40 28 68t68 28h427q21 -56 70.5 -92t110.5 -36h256q61 0 110.5 36t70.5 92h427q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68zM325 936q-17 39 14 69l448 448q18 19 45 19t45 -19l448 -448q31 -30 14 -69q-17 -40 -59 -40 h-256v-448q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v448h-256q-42 0 -59 40zM1152 64q0 -26 19 -45t45 -19t45 19t19 45t-19 45t-45 19t-45 -19t-19 -45zM1408 64q0 -26 19 -45t45 -19t45 19t19 45t-19 45t-45 19t-45 -19t-19 -45z" />
-<glyph unicode="&#xf094;" d="M0 433q0 111 18 217.5t54.5 209.5t100.5 194t150 156q78 59 232 120q194 78 316 78q60 0 175.5 -24t173.5 -24q19 0 57 5t58 5q81 0 118 -50.5t37 -134.5q0 -23 -5 -68t-5 -68q0 -10 1 -18.5t3 -17t4 -13.5t6.5 -16t6.5 -17q16 -40 25 -118.5t9 -136.5q0 -165 -70 -327.5 t-196 -288t-281 -180.5q-124 -44 -326 -44q-57 0 -170 14.5t-169 14.5q-24 0 -72.5 -14.5t-73.5 -14.5q-73 0 -123.5 55.5t-50.5 128.5q0 24 11 68t11 67q0 40 -12.5 120.5t-12.5 121.5zM128 434q0 -40 12.5 -120t12.5 -121q0 -23 -11 -66.5t-11 -65.5t12 -36.5t34 -14.5 q24 0 72.5 11t73.5 11q57 0 169.5 -15.5t169.5 -15.5q181 0 284 36q129 45 235.5 152.5t166 245.5t59.5 275q0 44 -7 113.5t-18 96.5q-12 30 -17 44t-9 36.5t-4 48.5q0 23 5 68.5t5 67.5q0 37 -10 55q-4 1 -13 1q-19 0 -58 -4.5t-59 -4.5q-60 0 -176 24t-175 24 q-43 0 -94.5 -11.5t-85 -23.5t-89.5 -34q-137 -54 -202 -103q-96 -73 -159.5 -189.5t-88 -236t-24.5 -248.5z" />
-<glyph unicode="&#xf095;" horiz-adv-x="1408" d="M0 1069q0 92 51 186q56 101 106 122q25 11 68.5 21t70.5 10q14 0 21 -3q18 -6 53 -76q11 -19 30 -54t35 -63.5t31 -53.5q3 -4 17.5 -25t21.5 -35.5t7 -28.5q0 -20 -28.5 -50t-62 -55t-62 -53t-28.5 -46q0 -9 5 -22.5t8.5 -20.5t14 -24t11.5 -19q76 -137 174 -235 t235 -174q2 -1 19 -11.5t24 -14t20.5 -8.5t22.5 -5q18 0 46 28.5t53 62t55 62t50 28.5q14 0 28.5 -7t35.5 -21.5t25 -17.5q25 -15 53.5 -31t63.5 -35t54 -30q70 -35 76 -53q3 -7 3 -21q0 -27 -10 -70.5t-21 -68.5q-21 -50 -122 -106q-94 -51 -186 -51q-27 0 -52.5 3.5 t-57.5 12.5t-47.5 14.5t-55.5 20.5t-49 18q-98 35 -175 83q-128 79 -264.5 215.5t-215.5 264.5q-48 77 -83 175q-3 9 -18 49t-20.5 55.5t-14.5 47.5t-12.5 57.5t-3.5 52.5z" />
-<glyph unicode="&#xf096;" horiz-adv-x="1408" d="M0 288v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5zM128 288q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v832q0 66 -47 113t-113 47h-832q-66 0 -113 -47 t-47 -113v-832z" />
-<glyph unicode="&#xf097;" horiz-adv-x="1280" d="M0 7v1289q0 34 19.5 62t52.5 41q21 9 44 9h1048q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62zM128 38l423 406l89 85l89 -85l423 -406 v1242h-1024v-1242z" />
-<glyph unicode="&#xf098;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM256 905q0 -16 2.5 -34t5 -30.5t9 -33t10 -29.5t12.5 -33t11 -30q60 -164 216.5 -320.5t320.5 -216.5 q6 -2 30 -11t33 -12.5t29.5 -10t33 -9t30.5 -5t34 -2.5q57 0 130.5 34t94.5 80q22 53 22 101q0 11 -2 16q-3 8 -38.5 29.5t-88.5 49.5l-53 29q-5 3 -19 13t-25 15t-21 5q-18 0 -47 -32.5t-57 -65.5t-44 -33q-7 0 -16.5 3.5t-15.5 6.5t-17 9.5t-14 8.5q-99 55 -170.5 126.5 t-126.5 170.5q-2 3 -8.5 14t-9.5 17t-6.5 15.5t-3.5 16.5q0 13 20.5 33.5t45 38.5t45 39.5t20.5 36.5q0 10 -5 21t-15 25t-13 19q-3 6 -15 28.5t-25 45.5t-26.5 47.5t-25 40.5t-16.5 18t-16 2q-48 0 -101 -22q-46 -21 -80 -94.5t-34 -130.5z" />
-<glyph unicode="&#xf099;" horiz-adv-x="1664" d="M44 145q35 -4 78 -4q225 0 401 138q-105 2 -188 64.5t-114 159.5q33 -5 61 -5q43 0 85 11q-112 23 -185.5 111.5t-73.5 205.5v4q68 -38 146 -41q-66 44 -105 115t-39 154q0 88 44 163q121 -149 294.5 -238.5t371.5 -99.5q-8 38 -8 74q0 134 94.5 228.5t228.5 94.5 q140 0 236 -102q109 21 205 78q-37 -115 -142 -178q93 10 186 50q-67 -98 -162 -167q1 -14 1 -42q0 -130 -38 -259.5t-115.5 -248.5t-184.5 -210.5t-258 -146t-323 -54.5q-271 0 -496 145z" />
-<glyph unicode="&#xf09a;" horiz-adv-x="1024" d="M95 631v296h255v218q0 186 104 288.5t277 102.5q147 0 228 -12v-264h-157q-86 0 -116 -36t-30 -108v-189h293l-39 -296h-254v-759h-306v759h-255z" />
-<glyph unicode="&#xf09b;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5q0 -251 -146.5 -451.5t-378.5 -277.5q-27 -5 -39.5 7t-12.5 30v211q0 97 -52 142q57 6 102.5 18t94 39t81 66.5t53 105t20.5 150.5q0 121 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44 l-38 -24q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-86 13.5q-44 -113 -7 -204q-79 -85 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-40 -36 -49 -103q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52t-49.5 24l-20 3 q-21 0 -29 -4.5t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -89t0.5 -54q0 -18 -13 -30t-40 -7q-232 77 -378.5 277.5t-146.5 451.5z" />
-<glyph unicode="&#xf09c;" horiz-adv-x="1664" d="M0 96v576q0 40 28 68t68 28h672v192q0 185 131.5 316.5t316.5 131.5t316.5 -131.5t131.5 -316.5v-256q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45v256q0 106 -75 181t-181 75t-181 -75t-75 -181v-192h96q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960 q-40 0 -68 28t-28 68z" />
-<glyph unicode="&#xf09d;" horiz-adv-x="1920" d="M0 32v1216q0 66 47 113t113 47h1600q66 0 113 -47t47 -113v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113zM128 32q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5v608h-1664v-608zM128 1024h1664v224q0 13 -9.5 22.5t-22.5 9.5h-1600 q-13 0 -22.5 -9.5t-9.5 -22.5v-224zM256 128v128h256v-128h-256zM640 128v128h384v-128h-384z" />
-<glyph unicode="&#xf09e;" horiz-adv-x="1408" d="M0 192q0 80 56 136t136 56t136 -56t56 -136t-56 -136t-136 -56t-136 56t-56 136zM0 697v135q0 29 21 47q17 17 43 17h5q160 -13 306 -80.5t259 -181.5q114 -113 181.5 -259t80.5 -306q2 -28 -17 -48q-18 -21 -47 -21h-135q-25 0 -43 16.5t-20 41.5q-22 229 -184.5 391.5 t-391.5 184.5q-25 2 -41.5 20t-16.5 43zM0 1201v143q0 28 20 46q18 18 44 18h3q262 -13 501.5 -120t425.5 -294q187 -186 294 -425.5t120 -501.5q2 -27 -18 -47q-18 -20 -46 -20h-143q-26 0 -44.5 17.5t-19.5 42.5q-12 215 -101 408.5t-231.5 336t-336 231.5t-408.5 102 q-25 1 -42.5 19.5t-17.5 43.5z" />
-<glyph unicode="&#xf0a0;" d="M0 160v320q0 25 16 75l197 606q17 53 63 86t101 33h782q55 0 101 -33t63 -86l197 -606q16 -50 16 -75v-320q0 -66 -47 -113t-113 -47h-1216q-66 0 -113 47t-47 113zM128 160q0 -13 9.5 -22.5t22.5 -9.5h1216q13 0 22.5 9.5t9.5 22.5v320q0 13 -9.5 22.5t-22.5 9.5h-1216 q-13 0 -22.5 -9.5t-9.5 -22.5v-320zM178 640h1180l-157 482q-4 13 -16 21.5t-26 8.5h-782q-14 0 -26 -8.5t-16 -21.5zM880 320q0 33 23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5t-23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5zM1136 320q0 33 23.5 56.5t56.5 23.5 t56.5 -23.5t23.5 -56.5t-23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5z" />
-<glyph unicode="&#xf0a1;" horiz-adv-x="1792" d="M0 672v192q0 66 47 113t113 47h480q435 0 896 384q52 0 90 -38t38 -90v-384q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5v-384q0 -52 -38 -90t-90 -38q-417 347 -812 380q-58 -19 -91 -66t-31 -100.5t40 -92.5q-20 -33 -23 -65.5t6 -58t33.5 -55t48 -50 t61.5 -50.5q-29 -58 -111.5 -83t-168.5 -11.5t-132 55.5q-7 23 -29.5 87.5t-32 94.5t-23 89t-15 101t3.5 98.5t22 110.5h-122q-66 0 -113 47t-47 113zM768 633q377 -42 768 -341v954q-394 -302 -768 -343v-270z" />
-<glyph unicode="&#xf0a2;" horiz-adv-x="1664" d="M0 128q190 161 287 397.5t97 498.5q0 165 96 262t264 117q-8 18 -8 37q0 40 28 68t68 28t68 -28t28 -68q0 -19 -8 -37q168 -20 264 -117t96 -262q0 -262 97 -498.5t287 -397.5q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38 t-38 90zM183 128h1298q-164 181 -246.5 411.5t-82.5 484.5q0 256 -320 256t-320 -256q0 -254 -82.5 -484.5t-246.5 -411.5zM656 0q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16t-16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16z" />
-<glyph unicode="&#xf0a3;" d="M2 435q-10 42 20 70l138 135l-138 135q-30 28 -20 70q12 41 52 51l188 48l-53 186q-12 41 19 70q29 31 70 19l186 -53l48 188q10 41 51 51q41 12 70 -19l135 -139l135 139q29 30 70 19q41 -10 51 -51l48 -188l186 53q41 12 70 -19q31 -29 19 -70l-53 -186l188 -48 q40 -10 52 -51q10 -42 -20 -70l-138 -135l138 -135q30 -28 20 -70q-12 -41 -52 -51l-188 -48l53 -186q12 -41 -19 -70q-29 -31 -70 -19l-186 53l-48 -188q-10 -40 -51 -52q-12 -2 -19 -2q-31 0 -51 22l-135 138l-135 -138q-28 -30 -70 -20q-41 11 -51 52l-48 188l-186 -53 q-41 -12 -70 19q-31 29 -19 70l53 186l-188 48q-40 10 -52 51z" />
-<glyph unicode="&#xf0a4;" horiz-adv-x="1792" d="M0 128v640q0 53 37.5 90.5t90.5 37.5h288q10 0 21.5 4.5t23.5 14t22.5 18t24 22.5t20.5 21.5t19 21.5t14 17q65 74 100 129q13 21 33 62t37 72t40.5 63t55 49.5t69.5 17.5q125 0 206.5 -67t81.5 -189q0 -68 -22 -128h374q104 0 180 -76t76 -179q0 -105 -75.5 -181 t-180.5 -76h-169q-4 -62 -37 -119q3 -21 3 -43q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5q-133 0 -322 69q-164 59 -223 59h-288q-53 0 -90.5 37.5t-37.5 90.5zM128 192q0 -26 19 -45t45 -19t45 19t19 45t-19 45t-45 19t-45 -19t-19 -45zM384 128h32q72 0 167 -32 t193.5 -64t179.5 -32q189 0 189 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5h331q52 0 90 38t38 90q0 51 -39 89.5t-89 38.5h-576q0 20 15 48.5t33 55t33 68t15 84.5q0 67 -44.5 97.5t-115.5 30.5q-24 0 -90 -139 q-24 -44 -37 -65q-40 -64 -112 -145q-71 -81 -101 -106q-69 -57 -140 -57h-32v-640z" />
-<glyph unicode="&#xf0a5;" horiz-adv-x="1792" d="M0 769q0 103 76 179t180 76h374q-22 60 -22 128q0 122 81.5 189t206.5 67q38 0 69.5 -17.5t55 -49.5t40.5 -63t37 -72t33 -62q35 -55 100 -129q2 -3 14 -17t19 -21.5t20.5 -21.5t24 -22.5t22.5 -18t23.5 -14t21.5 -4.5h288q53 0 90.5 -37.5t37.5 -90.5v-640 q0 -53 -37.5 -90.5t-90.5 -37.5h-288q-59 0 -223 -59q-190 -69 -317 -69q-142 0 -230 77.5t-87 217.5l1 5q-61 76 -61 178q0 22 3 43q-33 57 -37 119h-169q-105 0 -180.5 76t-75.5 181zM128 768q0 -52 38 -90t90 -38h331q-15 -17 -25 -47.5t-10 -55.5q0 -69 53 -119 q-18 -32 -18 -69t17.5 -73.5t47.5 -52.5q-4 -24 -4 -56q0 -85 48.5 -126t135.5 -41q84 0 183 32t194 64t167 32h32v640h-32q-35 0 -67.5 12t-62.5 37t-50 46t-49 54q-2 3 -3.5 4.5t-4 4.5t-4.5 5q-72 81 -112 145q-14 22 -38 68q-1 3 -10.5 22.5t-18.5 36t-20 35.5 t-21.5 30.5t-18.5 11.5q-71 0 -115.5 -30.5t-44.5 -97.5q0 -43 15 -84.5t33 -68t33 -55t15 -48.5h-576q-50 0 -89 -38.5t-39 -89.5zM1536 192q0 -26 19 -45t45 -19t45 19t19 45t-19 45t-45 19t-45 -19t-19 -45z" />
-<glyph unicode="&#xf0a6;" d="M0 640q0 125 67 206.5t189 81.5q68 0 128 -22v374q0 104 76 180t179 76q105 0 181 -75.5t76 -180.5v-169q62 -4 119 -37q21 3 43 3q101 0 178 -60q139 1 219.5 -85t80.5 -227q0 -133 -69 -322q-59 -164 -59 -223v-288q0 -53 -37.5 -90.5t-90.5 -37.5h-640 q-53 0 -90.5 37.5t-37.5 90.5v288q0 10 -4.5 21.5t-14 23.5t-18 22.5t-22.5 24t-21.5 20.5t-21.5 19t-17 14q-74 65 -129 100q-21 13 -62 33t-72 37t-63 40.5t-49.5 55t-17.5 69.5zM128 640q0 -24 139 -90q44 -24 65 -37q64 -40 145 -112q81 -71 106 -101q57 -69 57 -140 v-32h640v32q0 72 32 167t64 193.5t32 179.5q0 189 -167 189q-26 0 -56 -5q-16 30 -52.5 47.5t-73.5 17.5t-69 -18q-50 53 -119 53q-25 0 -55.5 -10t-47.5 -25v331q0 52 -38 90t-90 38q-51 0 -89.5 -39t-38.5 -89v-576q-20 0 -48.5 15t-55 33t-68 33t-84.5 15 q-67 0 -97.5 -44.5t-30.5 -115.5zM1152 -64q0 -26 19 -45t45 -19t45 19t19 45t-19 45t-45 19t-45 -19t-19 -45z" />
-<glyph unicode="&#xf0a7;" d="M0 640q0 38 17.5 69.5t49.5 55t63 40.5t72 37t62 33q55 35 129 100q3 2 17 14t21.5 19t21.5 20.5t22.5 24t18 22.5t14 23.5t4.5 21.5v288q0 53 37.5 90.5t90.5 37.5h640q53 0 90.5 -37.5t37.5 -90.5v-288q0 -59 59 -223q69 -190 69 -317q0 -142 -77.5 -230t-217.5 -87 l-5 1q-76 -61 -178 -61q-22 0 -43 3q-54 -30 -119 -37v-169q0 -105 -76 -180.5t-181 -75.5q-103 0 -179 76t-76 180v374q-54 -22 -128 -22q-121 0 -188.5 81.5t-67.5 206.5zM128 640q0 -71 30.5 -115.5t97.5 -44.5q43 0 84.5 15t68 33t55 33t48.5 15v-576q0 -50 38.5 -89 t89.5 -39q52 0 90 38t38 90v331q46 -35 103 -35q69 0 119 53q32 -18 69 -18t73.5 17.5t52.5 47.5q24 -4 56 -4q85 0 126 48.5t41 135.5q0 84 -32 183t-64 194t-32 167v32h-640v-32q0 -35 -12 -67.5t-37 -62.5t-46 -50t-54 -49q-9 -8 -14 -12q-81 -72 -145 -112 q-22 -14 -68 -38q-3 -1 -22.5 -10.5t-36 -18.5t-35.5 -20t-30.5 -21.5t-11.5 -18.5zM1152 1344q0 -26 19 -45t45 -19t45 19t19 45t-19 45t-45 19t-45 -19t-19 -45z" />
-<glyph unicode="&#xf0a8;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM251 640q0 -27 18 -45l91 -91l362 -362q18 -18 45 -18t45 18l91 91q18 18 18 45t-18 45l-189 189h502 q26 0 45 19t19 45v128q0 26 -19 45t-45 19h-502l189 189q19 19 19 45t-19 45l-91 91q-18 18 -45 18t-45 -18l-362 -362l-91 -91q-18 -18 -18 -45z" />
-<glyph unicode="&#xf0a9;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM256 576q0 -26 19 -45t45 -19h502l-189 -189q-19 -19 -19 -45t19 -45l91 -91q18 -18 45 -18t45 18 l362 362l91 91q18 18 18 45t-18 45l-91 91l-362 362q-18 18 -45 18t-45 -18l-91 -91q-18 -18 -18 -45t18 -45l189 -189h-502q-26 0 -45 -19t-19 -45v-128z" />
-<glyph unicode="&#xf0aa;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM252 641q0 -27 18 -45l91 -91q18 -18 45 -18t45 18l189 189v-502q0 -26 19 -45t45 -19h128q26 0 45 19 t19 45v502l189 -189q19 -19 45 -19t45 19l91 91q18 18 18 45t-18 45l-362 362l-91 91q-18 18 -45 18t-45 -18l-91 -91l-362 -362q-18 -18 -18 -45z" />
-<glyph unicode="&#xf0ab;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM252 639q0 -27 18 -45l362 -362l91 -91q18 -18 45 -18t45 18l91 91l362 362q18 18 18 45t-18 45l-91 91 q-18 18 -45 18t-45 -18l-189 -189v502q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-502l-189 189q-19 19 -45 19t-45 -19l-91 -91q-18 -18 -18 -45z" />
-<glyph unicode="&#xf0ac;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM226 979q7 -7 12 -8q4 -1 5 -9t2.5 -11t11.5 3q9 -8 3 -19q1 1 44 -27q19 -17 21 -21q3 -11 -10 -18 q-1 2 -9 9t-9 4q-3 -5 0.5 -18.5t10.5 -12.5q-7 0 -9.5 -16t-2.5 -35.5t-1 -23.5l2 -1q-3 -12 5.5 -34.5t21.5 -19.5q-13 -3 20 -43q6 -8 8 -9q3 -2 12 -7.5t15 -10t10 -10.5q4 -5 10 -22.5t14 -23.5q-2 -6 9.5 -20t10.5 -23q-1 0 -2.5 -1t-2.5 -1q3 -7 15.5 -14t15.5 -13 q1 -3 2 -10t3 -11t8 -2q2 20 -24 62q-15 25 -17 29q-3 5 -5.5 15.5t-4.5 14.5q2 0 6 -1.5t8.5 -3.5t7.5 -4t2 -3q-3 -7 2 -17.5t12 -18.5t17 -19t12 -13q6 -6 14 -19.5t0 -13.5q9 0 20 -10t17 -20q5 -8 8 -26t5 -24q2 -7 8.5 -13.5t12.5 -9.5l16 -8t13 -7q5 -2 18.5 -10.5 t21.5 -11.5q10 -4 16 -4t14.5 2.5t13.5 3.5q15 2 29 -15t21 -21q36 -19 55 -11q-2 -1 0.5 -7.5t8 -15.5t9 -14.5t5.5 -8.5q5 -6 18 -15t18 -15q6 4 7 9q-3 -8 7 -20t18 -10q14 3 14 32q-31 -15 -49 18q0 1 -2.5 5.5t-4 8.5t-2.5 8.
 5t0 7.5t5 3q9 0 10 3.5t-2 12.5t-4 13 q-1 8 -11 20t-12 15q-5 -9 -16 -8t-16 9q0 -1 -1.5 -5.5t-1.5 -6.5q-13 0 -15 1q1 3 2.5 17.5t3.5 22.5q1 4 5.5 12t7.5 14.5t4 12.5t-4.5 9.5t-17.5 2.5q-19 -1 -26 -20q-1 -3 -3 -10.5t-5 -11.5t-9 -7q-7 -3 -24 -2t-24 5q-13 8 -22.5 29t-9.5 37q0 10 2.5 26.5t3 25 t-5.5 24.5q3 2 9 9.5t10 10.5q2 1 4.5 1.5t4.5 0t4 1.5t3 6q-1 1 -4 3q-3 3 -4 3q7 -3 28.5 1.5t27.5 -1.5q15 -11 22 2q0 1 -2.5 9.5t-0.5 13.5q5 -27 29 -9q3 -3 15.5 -5t17.5 -5q3 -2 7 -5.5t5.5 -4.5t5 0.5t8.5 6.5q10 -14 12 -24q11 -40 19 -44q7 -3 11 -2t4.5 9.5 t0 14t-1.5 12.5l-1 8v18l-1 8q-15 3 -18.5 12t1.5 18.5t15 18.5q1 1 8 3.5t15.5 6.5t12.5 8q21 19 15 35q7 0 11 9q-1 0 -5 3t-7.5 5t-4.5 2q9 5 2 16q5 3 7.5 11t7.5 10q9 -12 21 -2q7 8 1 16q5 7 20.5 10.5t18.5 9.5q7 -2 8 2t1 12t3 12q4 5 15 9t13 5l17 11q3 4 0 4 q18 -2 31 11q10 11 -6 20q3 6 -3 9.5t-15 5.5q3 1 11.5 0.5t10.5 1.5q15 10 -7 16q-17 5 -43 -12q-2 -1 -9.5 -9.5t-13.5 -9.5q2 0 4.5 5t5 11t3.5 7q6 7 22 15q14 6 52 12q34 8 51 -11q-2 2 9.5 13t14.5 12q3 2 15 4.5t15 7.
 5l2 22q-12 -1 -17.5 7t-6.5 21q0 -2 -6 -8 q0 7 -4.5 8t-11.5 -1t-9 -1q-10 3 -15 7.5t-8 16.5t-4 15q-2 5 -9.5 10.5t-9.5 10.5q-1 2 -2.5 5.5t-3 6.5t-4 5.5t-5.5 2.5t-7 -5t-7.5 -10t-4.5 -5q-3 2 -6 1.5t-4.5 -1t-4.5 -3t-5 -3.5q-3 -2 -8.5 -3t-8.5 -2q15 5 -1 11q-10 4 -16 3q9 4 7.5 12t-8.5 14h5 q-1 4 -8.5 8.5t-17.5 8.5t-13 6q-8 5 -34 9.5t-33 0.5q-5 -6 -4.5 -10.5t4 -14t3.5 -12.5q1 -6 -5.5 -13t-6.5 -12q0 -7 14 -15.5t10 -21.5q-3 -8 -16 -16t-16 -12q-5 -8 -1.5 -18.5t10.5 -16.5q2 -2 1.5 -4t-3.5 -4.5t-5.5 -4t-6.5 -3.5l-3 -2q-11 -5 -20.5 6t-13.5 26 q-7 25 -16 30q-23 8 -29 -1q-5 13 -41 26q-25 9 -58 4q6 1 0 15q-7 15 -19 12q3 6 4 17.5t1 13.5q3 13 12 23q1 1 7 8.5t9.5 13.5t0.5 6q35 -4 50 11q5 5 11.5 17t10.5 17q9 6 14 5.5t14.5 -5.5t14.5 -5q14 -1 15.5 11t-7.5 20q12 -1 3 17q-5 7 -8 9q-12 4 -27 -5 q-8 -4 2 -8q-1 1 -9.5 -10.5t-16.5 -17.5t-16 5q-1 1 -5.5 13.5t-9.5 13.5q-8 0 -16 -15q3 8 -11 15t-24 8q19 12 -8 27q-7 4 -20.5 5t-19.5 -4q-5 -7 -5.5 -11.5t5 -8t10.5 -5.5t11.5 -4t8.5 -3q14 -10 8 -14q-2 -1 -8.5 -3.5t-11.5 -
 4.5t-6 -4q-3 -4 0 -14t-2 -14 q-5 5 -9 17.5t-7 16.5q7 -9 -25 -6l-10 1q-4 0 -16 -2t-20.5 -1t-13.5 8q-4 8 0 20q1 4 4 2q-4 3 -11 9.5t-10 8.5q-46 -15 -94 -41q6 -1 12 1q5 2 13 6.5t10 5.5q34 14 42 7l5 5q14 -16 20 -25q-7 4 -30 1q-20 -6 -22 -12q7 -12 5 -18q-4 3 -11.5 10t-14.5 11t-15 5 q-16 0 -22 -1q-146 -80 -235 -222zM877 26q0 -6 2 -16q206 36 351 189q-3 3 -12.5 4.5t-12.5 3.5q-18 7 -24 8q1 7 -2.5 13t-8 9t-12.5 8t-11 7q-2 2 -7 6t-7 5.5t-7.5 4.5t-8.5 2t-10 -1l-3 -1q-3 -1 -5.5 -2.5t-5.5 -3t-4 -3t0 -2.5q-21 17 -36 22q-5 1 -11 5.5t-10.5 7 t-10 1.5t-11.5 -7q-5 -5 -6 -15t-2 -13q-7 5 0 17.5t2 18.5q-3 6 -10.5 4.5t-12 -4.5t-11.5 -8.5t-9 -6.5t-8.5 -5.5t-8.5 -7.5q-3 -4 -6 -12t-5 -11q-2 4 -11.5 6.5t-9.5 5.5q2 -10 4 -35t5 -38q7 -31 -12 -48q-27 -25 -29 -40q-4 -22 12 -26q0 -7 -8 -20.5t-7 -21.5z" />
-<glyph unicode="&#xf0ad;" horiz-adv-x="1664" d="M21 0q0 53 38 91l681 681q3

<TRUNCATED>

[46/71] [abbrv] brooklyn-ui git commit: address code review comments

Posted by he...@apache.org.
address code review comments

* add js-yaml to license
* ensure None location works (see below)
* fix iconUr mis-spelling

with the None location it was odd but the old pruneLocation / set("location", []) caused the same yaml parse errors Undefined. however unsetting it works fine.


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/commit/dd37fee6
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/tree/dd37fee6
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/diff/dd37fee6

Branch: refs/heads/0.7.0-incubating
Commit: dd37fee621609025c1860077fe9bda68acbd8cde
Parents: 53e42a1
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Mon Apr 6 11:49:58 2015 +0100
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Mon Apr 6 11:51:19 2015 +0100

----------------------------------------------------------------------
 LICENSE                                                  | 11 ++++++++---
 .../jsgui/src/main/webapp/assets/js/model/application.js |  4 +++-
 .../main/webapp/assets/js/view/application-add-wizard.js |  4 +++-
 3 files changed, 14 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/dd37fee6/LICENSE
----------------------------------------------------------------------
diff --git a/LICENSE b/LICENSE
index 3adafea..c13cc54 100644
--- a/LICENSE
+++ b/LICENSE
@@ -230,9 +230,8 @@ ZeroClipboard.js
 Copyright (c) Jon Rohan, James M. Greene (2014).
 Licensed under the MIT license (see below).
 
-
-This product includes software developed at SpryMedia Ltd  (http://sprymedia.co.uk/):
-jquery.dataTables.js, dataTables.extensions.js.
+This product includes software developed at SpryMedia Ltd (http://sprymedia.co.uk/):
+jquery.dataTables.js, dataTables.extensions.js
 Copyright (c) Allan Jardine (2008-2012).
 Licensed under the New BSD license (see below).
 
@@ -241,6 +240,12 @@ URI.js.
 Copyright (c) js-uri contributors (2013).
 Licensed under the New BSD license (see below).
 
+This product includes software developed by Vitaly Puzrin (https://github.com/nodeca/):
+js-yaml.js
+Copyright (c) Vitaly Puzrin (2011-2015).
+Licensed under the MIT license (see below).
+
+
 
 The MIT License ("MIT")
 

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/dd37fee6/usage/jsgui/src/main/webapp/assets/js/model/application.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/js/model/application.js b/usage/jsgui/src/main/webapp/assets/js/model/application.js
index 5c3a3ea..589ea40 100644
--- a/usage/jsgui/src/main/webapp/assets/js/model/application.js
+++ b/usage/jsgui/src/main/webapp/assets/js/model/application.js
@@ -65,7 +65,9 @@ define([
         },
         /* Drops falsy locations */
         pruneLocations: function() {
-            this.set('locations', _.compact(this.get('locations')));
+            var newLocations = _.compact(this.get('locations'));
+            if (newLocations && _.size(newLocations)) this.set('locations', newLocations);
+            else this.unset("locations");
         },
         setLocationAtIndex:function (locationNumber, val) {
             var newLocations = [],

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/dd37fee6/usage/jsgui/src/main/webapp/assets/js/view/application-add-wizard.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/js/view/application-add-wizard.js b/usage/jsgui/src/main/webapp/assets/js/view/application-add-wizard.js
index 17c0f22..5c8ffc8 100644
--- a/usage/jsgui/src/main/webapp/assets/js/view/application-add-wizard.js
+++ b/usage/jsgui/src/main/webapp/assets/js/view/application-add-wizard.js
@@ -283,6 +283,8 @@ define([
                 this.currentStep = 0;
                 var that = this;
                 this.renderCurrentStep(function callback(view) {
+                    // Drop any "None" locations.
+                    that.model.spec.pruneLocations();
                     $("textarea#yaml_code").val(JsYaml.safeDump(oldSpecToCamp(that.model.spec.toJSON())));
                     $("ul#app-add-wizard-create-tab").find("a[href='#yamlTab']").tab('show');
                     $("#yaml_code").focus();
@@ -429,7 +431,7 @@ define([
                 name: item.name || item.id,
                 description: item.description,
                 planYaml:  item.planYaml,
-                iconUrl: item.iconUr
+                iconUrl: item.iconUrl
             })
             $("#create-step-template-entries", that.$el).append($tempel)
         },


[71/71] [abbrv] brooklyn-ui git commit: Introduce a parent/pom and prepare for release

Posted by he...@apache.org.
Introduce a parent/pom and prepare for release

Backport of fix on master by Hadrian Zbarcea <ha...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/commit/3adda0b9
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/tree/3adda0b9
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/diff/3adda0b9

Branch: refs/heads/0.7.0-incubating
Commit: 3adda0b975d042374e3796f07d698fe5a80ea136
Parents: fd0c411
Author: Hadrian Zbarcea <ha...@apache.org>
Authored: Mon Jul 6 22:47:05 2015 -0400
Committer: Richard Downer <ri...@apache.org>
Committed: Wed Jul 15 08:22:09 2015 +0000

----------------------------------------------------------------------
 usage/jsgui/pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/3adda0b9/usage/jsgui/pom.xml
----------------------------------------------------------------------
diff --git a/usage/jsgui/pom.xml b/usage/jsgui/pom.xml
index ce21247..dcaf11c 100644
--- a/usage/jsgui/pom.xml
+++ b/usage/jsgui/pom.xml
@@ -33,7 +33,7 @@
         <groupId>org.apache.brooklyn</groupId>
         <artifactId>brooklyn-parent</artifactId>
         <version>0.7.0-incubating</version><!-- BROOKLYN_VERSION -->
-        <relativePath>../../pom.xml</relativePath>
+        <relativePath>../../parent/pom.xml</relativePath>
     </parent>
 
     <properties>


[55/71] [abbrv] brooklyn-ui git commit: javascript checks up on start, shows caution

Posted by he...@apache.org.
javascript checks up on start, shows caution

popup now appears while server is starting, or if there are errors, and comes back if server changes to standby.
changed to plug in *before* the routes are evaluated, so we don't load the wrong data.

expands rest api to return several pieces of information to simplify gui checks.

simplifies code in rest filters to block requests not compatible with server state, including checking for upness there.


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/commit/a8899307
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/tree/a8899307
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/diff/a8899307

Branch: refs/heads/0.7.0-incubating
Commit: a8899307d8de566b64cbd7c10a70c14b0000f859
Parents: 6741a42
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Thu Apr 23 16:31:30 2015 +0100
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Mon Apr 27 08:37:04 2015 +0100

----------------------------------------------------------------------
 usage/jsgui/src/main/webapp/assets/js/config.js |  10 +-
 .../jsgui/src/main/webapp/assets/js/model/ha.js |  62 ------
 .../assets/js/model/server-extended-status.js   |  87 ++++++++
 usage/jsgui/src/main/webapp/assets/js/router.js | 205 ++++++++++---------
 .../main/webapp/assets/js/view/ha-summary.js    |  17 +-
 .../src/main/webapp/assets/js/view/home.js      |   4 +-
 .../webapp/assets/tpl/home/server-caution.html  |  94 +++++++++
 .../assets/tpl/home/server-not-ha-master.html   |  35 ----
 usage/jsgui/src/main/webapp/index.html          |   2 +-
 .../src/test/javascript/specs/model/ha-spec.js  |  41 ----
 .../src/test/javascript/specs/router-spec.js    |   3 -
 11 files changed, 303 insertions(+), 257 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/a8899307/usage/jsgui/src/main/webapp/assets/js/config.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/js/config.js b/usage/jsgui/src/main/webapp/assets/js/config.js
index 918a7ca..4fa477d 100644
--- a/usage/jsgui/src/main/webapp/assets/js/config.js
+++ b/usage/jsgui/src/main/webapp/assets/js/config.js
@@ -76,13 +76,9 @@ require.config({
 
 /*
  * Main application entry point.
- *
- * Inclusion of brooklyn module sets up logging.
  */
 require([
-    "backbone", "brooklyn", "router", "model/ha"
-], function (Backbone, Brooklyn, Router, ha) {
-    ha.autoUpdate();
-    var router = new Router();
-    Backbone.history.start();
+    "router"
+], function (Router) {
+    new Router().startBrooklynGui();
 });

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/a8899307/usage/jsgui/src/main/webapp/assets/js/model/ha.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/js/model/ha.js b/usage/jsgui/src/main/webapp/assets/js/model/ha.js
deleted file mode 100644
index 8ece989..0000000
--- a/usage/jsgui/src/main/webapp/assets/js/model/ha.js
+++ /dev/null
@@ -1,62 +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.
-*/
-define(["backbone", "brooklyn", "view/viewutils"], function (Backbone, Brooklyn, ViewUtils) {
-
-    var HAStatus = Backbone.Model.extend({
-        callbacks: [],
-        loaded: false,
-        url: "/v1/server/highAvailability",
-        isMaster: function() {
-            return this.get("masterId") == this.get("ownId");
-        },
-        getMasterUri: function() {
-            // Might be undefined if first fetch hasn't completed
-            var nodes = this.get("nodes") || {};
-            var master = nodes[this.get("masterId")];
-            // defensive, if this happens something more serious has gone wrong!
-            if (!master) {
-                return null;
-            } else {
-                return master.nodeUri;
-            }
-        },
-        onLoad: function(f) {
-            if (this.loaded) {
-                f();
-            } else {
-                this.callbacks.push(f);
-            }
-        },
-        autoUpdate: function() {
-            ViewUtils.fetchModelRepeatedlyWithDelay(this, { doitnow: true });
-        }
-    });
-
-    var haStatus = new HAStatus();
-    haStatus.once("sync", function() {
-        haStatus.loaded = true;
-        _.invoke(haStatus.callbacks, "apply");
-        haStatus.callbacks = undefined;
-    });
-
-    // Will returning the instance rather than the object be confusing?
-    // It breaks the pattern used by all the other models.
-    return haStatus;
-
-});
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/a8899307/usage/jsgui/src/main/webapp/assets/js/model/server-extended-status.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/js/model/server-extended-status.js b/usage/jsgui/src/main/webapp/assets/js/model/server-extended-status.js
new file mode 100644
index 0000000..88e1ef2
--- /dev/null
+++ b/usage/jsgui/src/main/webapp/assets/js/model/server-extended-status.js
@@ -0,0 +1,87 @@
+/*
+ * 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.
+*/
+define(["backbone", "brooklyn", "view/viewutils"], function (Backbone, Brooklyn, ViewUtils) {
+
+    var ServerExtendedStatus = Backbone.Model.extend({
+        callbacks: [],
+        loaded: false,
+        url: "/v1/server/up/extended",
+        whenUp: function(f) {
+            var that = this;
+            if (this.isUp()) {
+                f();
+            } else {
+                this.addCallback(function() { that.whenUp(f); });
+            }
+        },
+        onLoad: function(f) {
+            if (this.loaded) {
+                f();
+            } else {
+                this.addCallback(f);
+            }
+        },
+        addCallback: function(f) {
+            this.callbacks.push(f);
+        },
+        autoUpdate: function() {
+            var that = this;
+            // to debug:
+//            serverExtendedStatus.onLoad(function() { log("loaded server status:"); log(that.attributes); })
+            ViewUtils.fetchModelRepeatedlyWithDelay(this, { doitnow: true });
+        },
+
+        isUp: function() { return this.get("up") },
+        isHealthy: function() { return this.get("healthy") },
+        isMaster: function() {
+            ha = this.get("ha") || {};
+            ownId = ha.ownId;
+            if (!ownId) return null;
+            return ha.masterId == ownId;
+        },
+        getMasterUri: function() {
+            // Might be undefined if first fetch hasn't completed
+            ha = this.get("ha") || {};
+            states = ha.states || {};
+            if (!states) return null;
+            
+            var nodes = this.get("nodes") || {};
+            var master = nodes[this.get("masterId")];
+            // defensive, if this happens something more serious has gone wrong!
+            if (!master) {
+                return null;
+            } else {
+                return master.nodeUri;
+            }
+        },
+    });
+
+    var serverExtendedStatus = new ServerExtendedStatus();
+    serverExtendedStatus.on("sync", function() {
+        serverExtendedStatus.loaded = true;
+        var currentCallbacks = serverExtendedStatus.callbacks;
+        serverExtendedStatus.callbacks = [];
+        _.invoke(currentCallbacks, "apply");
+    });
+
+    // Will returning the instance rather than the object be confusing?
+    // It breaks the pattern used by all the other models.
+    return serverExtendedStatus;
+
+});
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/a8899307/usage/jsgui/src/main/webapp/assets/js/router.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/js/router.js b/usage/jsgui/src/main/webapp/assets/js/router.js
index 186dd72..4c7689a 100644
--- a/usage/jsgui/src/main/webapp/assets/js/router.js
+++ b/usage/jsgui/src/main/webapp/assets/js/router.js
@@ -18,46 +18,95 @@
 */
 define([
     "brooklyn", "underscore", "jquery", "backbone",
-    "model/application", "model/app-tree", "model/location", "model/ha",
+    "model/application", "model/app-tree", "model/location", 
+    "model/server-extended-status",
     "view/home", "view/application-explorer", "view/catalog", "view/apidoc", "view/script-groovy",
-    "text!tpl/help/page.html","text!tpl/labs/page.html", "text!tpl/home/server-not-ha-master.html"
+    "text!tpl/help/page.html","text!tpl/labs/page.html", "text!tpl/home/server-caution.html"
 ], function (Brooklyn, _, $, Backbone,
-        Application, AppTree, Location, ha,
-        HomeView, ExplorerView, CatalogView, ApidocView, ScriptGroovyView,
-        HelpHtml, LabsHtml, ServerNotMasterHtml) {
+        Application, AppTree, Location, 
+        serverStatus,
+        HomeView, ExplorerView, CatalogView, ApidocView, ScriptGroovyView, 
+        HelpHtml, LabsHtml, ServerCautionHtml) {
 
-    /**
-     * @returns {jquery.Deferred}
-     *      A promise that resolves when the high availability status has been
-     *      loaded. Actions to be taken on the view after it has loaded should
-     *      be registered with calls to .done()
-     */
-    // Not just defined as a function on Router because the delay if the HA status
-    // hasn't loaded requires a reference to the function, which we lose if we use
-    // 'this.showView'.
-    function showViewImpl(router, selector, view) {
-        // Don't do anything until the HA status has loaded.
-        var promise = $.Deferred()
-            .done(function () {
-                // close the previous view - does binding clean-up and avoids memory leaks
-                if (router.currentView) {
-                    router.currentView.close();
-                }
-                // render the view inside the selector element
-                $(selector).html(view.render().el);
-                router.currentView = view;
-                return view
+    var ServerCautionOverlay = Backbone.View.extend({
+        template: _.template(ServerCautionHtml),
+        scheduledRedirect: false,
+        initialize: function() {
+            var that = this;
+            this.carryOnRegardless = false;
+            _.bindAll(this);
+            serverStatus.addCallback(this.renderAndAddCallback);
+        },
+        renderAndAddCallback: function() {
+            this.renderOnUpdate();
+            serverStatus.addCallback(this.renderAndAddCallback);
+        },
+        renderOnUpdate: function() {
+            var that = this;
+            if (this.carryOnRegardless) return this.renderEmpty();
+            
+            var state = {
+                    loaded: serverStatus.loaded,
+                    up: serverStatus.isUp(),
+                    healthy: serverStatus.isHealthy(),
+                    master: serverStatus.isMaster(),
+                    masterUri: serverStatus.getMasterUri(),
+                };
+            if (state.loaded && state.up && state.healthy && state.master) return this.renderEmpty();
+            
+            this.warningActive = true;
+            this.$el.html(this.template(state));
+                
+            $("#dismiss-standby-warning", this.$el).click(function() {
+                that.carryOnRegardless = true;
+                if (that.redirectPending) {
+                    log("Cancelling redirect, using this non-master instance");
+                    clearTimeout(that.redirectPending);
+                    that.redirectPending = null;
+                }       
+                that.renderOnUpdate();
             });
-        (function isComplete() {
-            if (ha.loaded) {
-                promise.resolve();
-            } else {
-                _.defer(isComplete, 100);
+            
+            if (!state.master && state.masterUri) {
+                if (!this.scheduledRedirect && !this.redirectPending) {
+                    log("Not master; will redirect shortly to: "+state.masterUri);
+                    var destination = state.masterUri + "#" + Backbone.history.fragment;
+                    var time = 10;
+                    this.scheduledRedirect = true;
+                    log("Redirecting to " + destination + " in " + time + " seconds");
+                    this.redirectPending = setTimeout(function () {
+                        // re-check, in case the server's status changed in the wait
+                        if (!serverStatus.isMaster()) {
+                            if (that.redirectPending) {
+                                window.location.href = destination;
+                            } else {
+                                log("Cancelled redirect, using this non-master instance");
+                            }
+                        } else {
+                            log("Cancelled redirect, this instance is now master");
+                        }
+                    }, time * 1000);
+                }
             }
-        })();
-        return promise;
-    }
-
+            return this;
+        },
+        renderEmpty: function() {
+            this.warningActive = false;
+            this.$el.empty();
+            return this;
+        },
+        beforeClose: function() {
+            this.stopListening();
+        },
+        warnIfNotLoaded: function() {
+            if (!this.loaded)
+                this.renderOnUpdate();
+        }
+    });
+    // look for ha-standby-overlay for compatibility with older index.html copies
+    var serverCautionOverlay = new ServerCautionOverlay({ el: $("#server-caution-overlay").length ? $("#server-caution-overlay") : $("#ha-standby-overlay")});
+    serverCautionOverlay.render();
+    
     var Router = Backbone.Router.extend({
         routes:{
             'v1/home/*trail':'homePage',
@@ -75,7 +124,14 @@ define([
         },
 
         showView: function(selector, view) {
-            return showViewImpl(this, selector, view);
+            // close the previous view - does binding clean-up and avoids memory leaks
+            if (this.currentView) {
+                this.currentView.close();
+            }
+            // render the view inside the selector element
+            $(selector).html(view.render().el);
+            this.currentView = view;
+            return view;
         },
 
         defaultRoute: function() {
@@ -94,6 +150,7 @@ define([
                 homeView = new HomeView({
                     collection:that.applications,
                     locations:that.locations,
+                    cautionOverlay:serverCautionOverlay,
                     appRouter:that
                 });
                 veryFirstViewLoad = !that.currentView;
@@ -102,13 +159,10 @@ define([
             this.applications.fetch({success:function () {
                 render();
                 // show add application wizard if none already exist and this is the first page load
-                if ((veryFirstViewLoad && trail=='auto' && that.applications.isEmpty()) ||
-                     (trail=='add_application') ) {
-                    ha.onLoad(function() {
-                        if (ha.isMaster()) {
-                            homeView.createApplication();
-                        }
-                    });
+                if ((veryFirstViewLoad && trail=='auto' && that.applications.isEmpty()) || (trail=='add_application') ) {
+                    if (serverStatus.isMaster()) {
+                        homeView.createApplication();
+                    }
                 }
             }, error: render});
         },
@@ -156,64 +210,17 @@ define([
         labsPage:function () {
             $("#application-content").html(_.template(LabsHtml, {}))
             $(".nav1").removeClass("active")
-        }
-    })
-
-    var HaStandbyOverlay = Backbone.View.extend({
-        template: _.template(ServerNotMasterHtml),
-        scheduledRedirect: false,
-        initialize: function() {
-            this.carryOnRegardless = false;
-            this.listenTo(ha, "change", this.render);
         },
-        render: function() {
-            var that = this;
-            
-            if (!ha.isMaster() && !this.carryOnRegardless) {
-                var masterUri = ha.getMasterUri();
-                this.$el.html(this.template({"masterUri": masterUri}));
-                
-                log("render, redirect = "+this.redirectPending);
-                
-                $("#dismiss-standby-warning", this.$el).click(function() {
-                    that.carryOnRegardless = true;
-                    if (that.redirectPending) {
-                        console.log("Cancelling redirect, using this non-master instance");
-                        clearTimeout(that.redirectPending);
-                        that.redirectPending = null;
-                    }       
-                    that.render();
-                });
-                
-                if (masterUri && !this.scheduledRedirect && !this.redirectPending) {
-                    var destination = masterUri + "#" + Backbone.history.fragment;
-                    var time = 10;
-                    this.scheduledRedirect = true;
-                    console.log("Redirecting to " + destination + " in " + time + " seconds");
-                    this.redirectPending = setTimeout(function () {
-                        // re-check, in case the server's status changed in the wait
-                        if (!ha.isMaster()) {
-                            if (that.redirectPending) {
-                                window.location.href = destination;
-                            } else {
-                                console.log("Cancelled redirect, using this non-master instance");
-                            }
-                        } else {
-                            console.log("Cancelled redirect, this instance is now master");
-                        }
-                    }, time * 1000);
-                }
-            } else {
-                this.$el.empty();
-            }
-            return this;
-        },
-        beforeClose: function() {
-            this.stopListening();
+
+        /** Triggers the Backbone.Router process which drives this GUI through Backbone.history,
+         *  after starting background server health checks and waiting for confirmation of health
+         *  (or user click-through). */
+        startBrooklynGui: function() {
+            serverStatus.whenUp(function() { Backbone.history.start(); });
+            serverStatus.autoUpdate();
+            _.delay(serverCautionOverlay.warnIfNotLoaded, 2*1000)
         }
     });
-    new HaStandbyOverlay({ el: $("#ha-standby-overlay") }).render();
-
 
     $.ajax({
         type: "GET",
@@ -221,7 +228,7 @@ define([
         dataType: "text"
     }).done(function (data) {
         if (data != null) {
-            $("#user").html(data);
+            $("#user").html(_.escape(data));
         }
     });
 

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/a8899307/usage/jsgui/src/main/webapp/assets/js/view/ha-summary.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/js/view/ha-summary.js b/usage/jsgui/src/main/webapp/assets/js/view/ha-summary.js
index 62b5c3e..2032d1d 100644
--- a/usage/jsgui/src/main/webapp/assets/js/view/ha-summary.js
+++ b/usage/jsgui/src/main/webapp/assets/js/view/ha-summary.js
@@ -18,9 +18,9 @@
 */
 define([
     "jquery", "underscore", "backbone", "moment", "view/viewutils",
-    "model/ha",
+    "model/server-extended-status",
     "text!tpl/home/ha-summary.html"
-], function ($, _, Backbone, moment, ViewUtils, ha, HASummaryHtml) {
+], function ($, _, Backbone, moment, ViewUtils, serverStatus, HASummaryHtml) {
 
     var template = _.template(HASummaryHtml);
     var nodeRowTemplate = _.template(
@@ -38,26 +38,27 @@ define([
         initialize: function() {
             _.bindAll(this);
             this.updateTimestampCallback = setInterval(this.updateTimestamps, 1000);
-            this.listenTo(ha, "change", this.renderNodeStatus);
+            this.listenTo(serverStatus, "change", this.renderNodeStatus);
         },
         beforeClose: function() {
             clearInterval(this.updateTimestampCallback);
             this.stopListening();
         },
         updateNow: function() {
-            ha.fetch();
+            serverStatus.fetch();
         },
         render: function() {
             this.$el.html(template());
-            if (ha.loaded) {
+            if (serverStatus.loaded) {
                 this.renderNodeStatus();
             }
             return this;
         },
         renderNodeStatus: function() {
-            var master = ha.get("masterId"),
-                self = ha.get("ownId"),
-                nodes = ha.get("nodes"),
+            var serverHa = serverStatus.get("ha") || {};
+            var master = serverHa.masterId,
+                self = serverHa.ownId,
+                nodes = serverHa.nodes,
                 $target = this.$(".ha-summary-table-body");
             $target.empty();
             // undefined check just in case server returns something odd

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/a8899307/usage/jsgui/src/main/webapp/assets/js/view/home.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/js/view/home.js b/usage/jsgui/src/main/webapp/assets/js/view/home.js
index de9ce69..ae2ba3a 100644
--- a/usage/jsgui/src/main/webapp/assets/js/view/home.js
+++ b/usage/jsgui/src/main/webapp/assets/js/view/home.js
@@ -139,7 +139,9 @@ define([
                 this._modal.close()
             }
             var that = this;
-            if (!this.options.offline) {
+            if (this.options.offline || (this.options.cautionOverlay && this.options.cautionOverlay.warningActive)) {
+                // don't show wizard
+            } else {
                 var wizard = new AppAddWizard({appRouter:this.options.appRouter})
                 this._modal = wizard
                 this.$(".add-app #modal-container").html(wizard.render().el)

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/a8899307/usage/jsgui/src/main/webapp/assets/tpl/home/server-caution.html
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/tpl/home/server-caution.html b/usage/jsgui/src/main/webapp/assets/tpl/home/server-caution.html
new file mode 100644
index 0000000..0f767c0
--- /dev/null
+++ b/usage/jsgui/src/main/webapp/assets/tpl/home/server-caution.html
@@ -0,0 +1,94 @@
+
+<!--
+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.
+-->
+
+<div class="server-caution-overlay overlay-with-opacity"></div>
+<div class="server-caution-overlay">
+    <div class="overlay-content">
+        <h1 class="lead">Warning!</h1>
+
+<% if (!loaded) { %>
+        <p><strong>
+            Connecting to server...</strong></p>
+
+            <center><img src="/assets/images/throbber.gif"/></center>        
+        <p>
+            No response from server (yet). 
+            Please check your network connection, or if you are on a slow connection simply be patient!
+            This dialog will disappear if and when the server responds.</p>
+        
+        <p><i>
+            If you understand the risks, that information may be unavailable and operations may fail, 
+            and wish to proceed regardless, click <a id="dismiss-standby-warning">here</a>.</i></p>
+
+<% } else if (!up) { %>
+            <div style="float: right; position: relative; top: -45px; height: 0; overflow: visible;">
+                <img src="/assets/img/icon-status-starting.gif" width="60"/></div>
+            
+        <p><strong>
+            Starting up...</strong></p>
+                    
+        <p>
+            The Brooklyn server is starting.
+            It is recommended to wait before proceeding.
+            This dialog will disappear when the server is ready.</p>
+        
+        <p><i>
+            If you understand the risks, that information may be unavailable and operations may fail, 
+            and wish to proceed regardless, click <a id="dismiss-standby-warning">here</a>.</i></p>
+
+<% } else if (healthy && !master) { %>
+        <p><strong>
+            This Brooklyn server is not the high availability master.</strong></p>
+        
+        <p>
+            It is recommended not to use this server directly.</p>
+            
+    <% if (masterUri) { %>
+        <p>Redirecting to the master server at <a href="<%= masterUri %>"><%= masterUri %></a> shortly.</p>
+    <% } else { %>
+        <p>The address of the master Brooklyn server is not currently known.</p>
+    <% } %>
+
+        <p><i>
+            If you understand the risks, that write operations will likely fail, 
+            and wish to proceed regardless, click <a id="dismiss-standby-warning">here</a>.</i></p>
+          
+<% } else { %>
+        <p><strong>
+            This Brooklyn server has errors.</strong></p>
+        
+        <p>
+            Please check with your system administrator.</p>
+
+    <% if (healthy) { /* this page should not be displayed in this case */ %>
+        <p>
+            The misconfiguration may be in Javascript as the server is reporting it is healthy.</p><% } %>
+        
+        <p><i>
+          If you would like to debug the server, click <a id="dismiss-standby-warning">here</a>
+          to dismiss this warning until you reload this page. 
+          (You should reload the page once you believe the errors are fixed
+          to confirm that this dialog does not return.)
+          </i></p>
+
+<% } %>
+
+    </div>
+</div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/a8899307/usage/jsgui/src/main/webapp/assets/tpl/home/server-not-ha-master.html
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/tpl/home/server-not-ha-master.html b/usage/jsgui/src/main/webapp/assets/tpl/home/server-not-ha-master.html
deleted file mode 100644
index b9b8b73..0000000
--- a/usage/jsgui/src/main/webapp/assets/tpl/home/server-not-ha-master.html
+++ /dev/null
@@ -1,35 +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.
--->
-
-<div class="ha-standby-overlay overlay-with-opacity"></div>
-<div class="ha-standby-overlay">
-    <div class="overlay-content">
-        <h1 class="lead">Warning!</h1>
-        <p><strong>This Brooklyn server is not the high availability master.</strong></p>
-        <p>It is recommended not to use this server directly.</p>
-    <% if (masterUri) { %>
-        <p>Redirecting to the master server at <a href="<%= masterUri %>"><%= masterUri %></a> shortly.</p>
-    <% } else { %>
-        <p>The address of the master Brooklyn server is not currently known.</p>
-    <% } %>
-        <p><i>If you understand the risks, that write operations will likely fail, 
-          and wish to proceed regardless, click <a id="dismiss-standby-warning">here</a>.</i>
-    </div>
-</div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/a8899307/usage/jsgui/src/main/webapp/index.html
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/index.html b/usage/jsgui/src/main/webapp/index.html
index 856830e..fda3514 100644
--- a/usage/jsgui/src/main/webapp/index.html
+++ b/usage/jsgui/src/main/webapp/index.html
@@ -67,7 +67,7 @@ under the License.
 
 <div id="main-content">
     <div id="application-content"></div>
-    <div id="ha-standby-overlay"></div>
+    <div id="server-caution-overlay"></div>
 </div>
 
 <!-- load our code with require.js. data-main is replaced with optimised file at build -->

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/a8899307/usage/jsgui/src/test/javascript/specs/model/ha-spec.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/test/javascript/specs/model/ha-spec.js b/usage/jsgui/src/test/javascript/specs/model/ha-spec.js
deleted file mode 100644
index 0e51ef0..0000000
--- a/usage/jsgui/src/test/javascript/specs/model/ha-spec.js
+++ /dev/null
@@ -1,41 +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.
-*/
-define([
-    "model/ha"
-], function (ha) {
-
-    describe("model/ha", function() {
-
-        beforeEach(function () {
-            ha.url = "fixtures/ha-summary.json";
-            ha.fetch();
-        });
-
-        it("should determine the master's URI", function() {
-            expect(ha.getMasterUri()).toBe("http://10.30.40.50:8081/");
-        });
-
-        it("should determine isMaster", function() {
-            expect(ha.isMaster()).toBe(true);
-            ha.set("masterId", "something else");
-            expect(ha.isMaster()).toBe(false);
-        });
-
-    });
-});
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/a8899307/usage/jsgui/src/test/javascript/specs/router-spec.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/test/javascript/specs/router-spec.js b/usage/jsgui/src/test/javascript/specs/router-spec.js
index bd30eca..0041373 100644
--- a/usage/jsgui/src/test/javascript/specs/router-spec.js
+++ b/usage/jsgui/src/test/javascript/specs/router-spec.js
@@ -20,9 +20,6 @@ define([
     "brooklyn", "router", "model/ha"
 ], function (Brooklyn, Router, ha) {
 
-    ha.url = "fixtures/ha-summary.json";
-    ha.loaded = true;
-
     var View = Backbone.View.extend({
         render:function () {
             this.$el.html("<p>fake view</p>")


[59/71] [abbrv] brooklyn-ui git commit: Adds MSSQL (YAML-based) blueprint

Posted by he...@apache.org.
Adds MSSQL (YAML-based) blueprint


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/commit/48896883
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/tree/48896883
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/diff/48896883

Branch: refs/heads/0.7.0-incubating
Commit: 488968838d11bb00611e98cee0fc72a977ad1738
Parents: 7680018
Author: Martin Harris <gi...@nakomis.com>
Authored: Thu May 21 13:07:32 2015 +0100
Committer: Richard Downer <ri...@apache.org>
Committed: Thu May 28 17:27:35 2015 +0100

----------------------------------------------------------------------
 .gitattributes | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/48896883/.gitattributes
----------------------------------------------------------------------
diff --git a/.gitattributes b/.gitattributes
index 21ceeba..7920d0e 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -3,4 +3,4 @@
 *.sh text eol=lf
 *.bat text eol=crlf
 *.ps1 text eol=crlf
-
+*.ini text eol=crlf


[33/71] [abbrv] brooklyn-ui git commit: Decline requests for resources relying on rebinded state in non HOT states

Posted by he...@apache.org.
Decline requests for resources relying on rebinded state in non HOT states

No point in asking for applications when HA state is STANDBY. For example 404 response should mean that the resource doesn't exist, not that it's not loaded yet.


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/commit/9b85ada8
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/tree/9b85ada8
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/diff/9b85ada8

Branch: refs/heads/0.7.0-incubating
Commit: 9b85ada85f00d6e0cec39f6fd3b9776637e5db48
Parents: c765b16
Author: Svetoslav Neykov <sv...@cloudsoftcorp.com>
Authored: Wed Mar 4 16:50:00 2015 +0200
Committer: Svetoslav Neykov <sv...@cloudsoftcorp.com>
Committed: Thu Mar 19 16:01:29 2015 +0200

----------------------------------------------------------------------
 usage/jsgui/src/main/webapp/assets/js/router.js | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/9b85ada8/usage/jsgui/src/main/webapp/assets/js/router.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/js/router.js b/usage/jsgui/src/main/webapp/assets/js/router.js
index 485af82..3e38841 100644
--- a/usage/jsgui/src/main/webapp/assets/js/router.js
+++ b/usage/jsgui/src/main/webapp/assets/js/router.js
@@ -89,7 +89,7 @@ define([
         homePage:function (trail) {
             var that = this;
             // render the page after we fetch the collection -- no rendering on error
-            this.applications.fetch({success:function () {
+            function render() {
                 var homeView = new HomeView({
                     collection:that.applications,
                     locations:that.locations,
@@ -97,6 +97,9 @@ define([
                 });
                 var veryFirstViewLoad = !that.currentView;
                 that.showView("#application-content", homeView);
+            }
+            this.applications.fetch({success:function () {
+                render();
                 // show add application wizard if none already exist and this is the first page load
                 if ((veryFirstViewLoad && trail=='auto' && that.applications.isEmpty()) ||
                      (trail=='add_application') ) {
@@ -106,7 +109,7 @@ define([
                         }
                     });
                 }
-            }})
+            }, error: render});
         },
         applicationsPage:function (app, trail, tab) {
             if (trail === undefined) trail = app


[37/71] [abbrv] brooklyn-ui git commit: add application wizard changes - switch to yaml tab on next

Posted by he...@apache.org.
add application wizard changes - switch to yaml tab on next


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/commit/bc8b2c92
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/tree/bc8b2c92
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/diff/bc8b2c92

Branch: refs/heads/0.7.0-incubating
Commit: bc8b2c92f30ad6a306c13d67f57bd329dfc8ba97
Parents: 5a4b984
Author: Galina Grunin <gg...@us.ibm.com>
Authored: Thu Mar 26 16:07:26 2015 -0400
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Sat Mar 28 10:02:49 2015 -0500

----------------------------------------------------------------------
 .../assets/js/model/catalog-item-summary.js     |  3 ++-
 .../assets/js/view/application-add-wizard.js    | 23 +++++++++++++-------
 .../create-step-template-entry.html             |  2 +-
 3 files changed, 18 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/bc8b2c92/usage/jsgui/src/main/webapp/assets/js/model/catalog-item-summary.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/js/model/catalog-item-summary.js b/usage/jsgui/src/main/webapp/assets/js/model/catalog-item-summary.js
index 68039db..8e4d3c4 100644
--- a/usage/jsgui/src/main/webapp/assets/js/model/catalog-item-summary.js
+++ b/usage/jsgui/src/main/webapp/assets/js/model/catalog-item-summary.js
@@ -29,7 +29,8 @@ define(["underscore", "backbone"], function (_, Backbone) {
                 name:"",
                 type:"",
                 description:"",
-                iconUrl:""
+                iconUrl:"", 
+                planYaml:""
             }
         }
     })

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/bc8b2c92/usage/jsgui/src/main/webapp/assets/js/view/application-add-wizard.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/js/view/application-add-wizard.js b/usage/jsgui/src/main/webapp/assets/js/view/application-add-wizard.js
index c960f44..a936a0c 100644
--- a/usage/jsgui/src/main/webapp/assets/js/view/application-add-wizard.js
+++ b/usage/jsgui/src/main/webapp/assets/js/view/application-add-wizard.js
@@ -78,7 +78,6 @@ define([
             "brooklyn.config": entity.config
         };
     }
-
     var ModalWizard = Backbone.View.extend({
         tagName:'div',
         className:'modal hide fade',
@@ -249,13 +248,18 @@ define([
             this.renderCurrentStep()
         },
         nextStep:function () {
+        	  
             if (this.currentStep < 2) {
-                if (this.currentView.validate()) {
-                    this.currentStep += 1
-                    this.renderCurrentStep()
-                } else {
-                    // call to validate should showFailure
-                }
+//                if (this.currentView.validate()) {
+//                    this.currentStep += 1
+//                    this.renderCurrentStep()
+//                } else {
+//                    // call to validate should showFailure
+//                }
+           	 $("ul#app-add-wizard-create-tab").find("a[href='#yamlTab']").tab('show')
+                $("#yaml_code").focus()
+              
+
             } else {
                 this.finishStep()
             }
@@ -400,8 +404,10 @@ define([
                 id: item.id,
                 name: item.name,
                 description: item.description,
-                iconUrl: item.iconUrl
+                planYaml:  item.planYaml,
+                iconUrl: item.iconUrTeml
             })
+            //alert("yaml:"+item.planYaml)
             $("#create-step-template-entries", that.$el).append($tempel)
         },
         templateClick: function(event) {
@@ -414,6 +420,7 @@ define([
                     type: $tl.attr('id'),
                     name: $tl.data("name")
                 };
+                $("textarea#yaml_code").val($tl.data("yaml"));
             } else {
                 this.selectedTemplate = null;
             }

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/bc8b2c92/usage/jsgui/src/main/webapp/assets/tpl/app-add-wizard/create-step-template-entry.html
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/tpl/app-add-wizard/create-step-template-entry.html b/usage/jsgui/src/main/webapp/assets/tpl/app-add-wizard/create-step-template-entry.html
index 973b990..d70fd9b 100644
--- a/usage/jsgui/src/main/webapp/assets/tpl/app-add-wizard/create-step-template-entry.html
+++ b/usage/jsgui/src/main/webapp/assets/tpl/app-add-wizard/create-step-template-entry.html
@@ -18,7 +18,7 @@ specific language governing permissions and limitations
 under the License.
 -->
 
-<div class="template-lozenge frame" id="<%= id %>" data-name="<%= name %>">
+<div class="template-lozenge frame" id="<%= id %>" data-name="<%= name %>" data-yaml="<%= planYaml %>">
     <% if (iconUrl) { %>
     <div class="icon">
         <img src="<%= iconUrl %>" alt="(icon)" />


[62/71] [abbrv] brooklyn-ui git commit: This closes #665

Posted by he...@apache.org.
This closes #665


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/commit/dcbed707
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/tree/dcbed707
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/diff/dcbed707

Branch: refs/heads/0.7.0-incubating
Commit: dcbed707ed3a802895cc15f0a287259ea64a1b35
Parents: 2b297e3 4889688
Author: Aled Sage <al...@gmail.com>
Authored: Fri May 29 18:18:43 2015 +0100
Committer: Aled Sage <al...@gmail.com>
Committed: Fri May 29 18:18:43 2015 +0100

----------------------------------------------------------------------
 .gitattributes | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------



[04/71] [abbrv] brooklyn-ui git commit: Move mobile app to sandbox

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/css/mobile-angular-ui-base.min.css
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/css/mobile-angular-ui-base.min.css b/usage/jsgui/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/css/mobile-angular-ui-base.min.css
deleted file mode 100644
index 3e9bfde..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/css/mobile-angular-ui-base.min.css
+++ /dev/null
@@ -1 +0,0 @@
-@font-face{font-family:FontAwesome;src:url(../fonts/fontawesome-webfont.eot?v=4.1.0);src:url(../fonts/fontawesome-webfont.eot?#iefix&v=4.1.0) format('embedded-opentype'),url(../fonts/fontawesome-webfont.woff?v=4.1.0) format('woff'),url(../fonts/fontawesome-webfont.ttf?v=4.1.0) format('truetype'),url(../fonts/fontawesome-webfont.svg?v=4.1.0#fontawesomeregular) format('svg');font-weight:400;font-style:normal}.fa{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}
 .fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:spin 2s infinite linear;-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;animation:spin 2s infinite linear}@-moz-keyframes spin{0%{-moz-transform:rotate(0deg)}100%{-moz-transform:rotate(359deg)}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg)}}@-o-keyframes spin{0%{-o-transform:rotate(0deg)}100%{-o-transform:rotate(359deg)}}@keyframes spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rota
 tion=2);-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1,1);-moz-transform:scale(-1,1);-ms-transform:scale(-1,1);-o-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1,-1);-moz-transform:scale(1,-1);-ms-transform:scale(1,-1);-o-transform:scale(1,-1);transform:scale(1,-1)}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text
 -align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-cog:before,.fa-gear:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{
 content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-repeat:before,.fa-rotate-right:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f03
 7"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-ch
 evron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye
 :before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-exclamation-triangle:before,.fa-warning:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-cogs:before,.fa-gears:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.
 fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-dow
 n:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-floppy-o:before,.fa-save:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline
 :before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-sort:before,.fa-unsorted:before{content:"\f0dc"}.fa-sort-desc:before,.fa-sort-down:before{content:"\f0dd"}.fa-sort-asc:before,.fa-sort-up:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-gavel:before,.fa-legal:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-bolt:befo
 re,.fa-flash:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-clipboard:before,.fa-paste:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}
 .fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}
 .fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-chain-broken:before,.fa-unlink:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:
 before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:"\f150"}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:"\f151"}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:"\f152"
 }.fa-eur:before,.fa-euro:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-inr:before,.fa-rupee:before{content:"\f156"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:"\f157"}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:"\f158"}.fa-krw:before,.fa-won:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{conte
 nt:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.
 fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-try:before,.fa-turkish-lira:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-bank:before,.fa-institution:before,.fa-university:before{content:"\f19c"}.fa-graduation-cap:before,.fa-mortar-board:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:bef
 ore{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-square:before,.fa-pied-piper:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{cont
 ent:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:"\f1c5"}.fa-file-archive-o:before,.fa-file-zip-o:before{content:"\f1c6"}.fa-file-audio-o:before,.fa-file-sound-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-empire:before,.fa-ge:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:befor
 e{content:"\f1d3"}.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-paper-plane:before,.fa-send:before{content:"\f1d8"}.fa-paper-plane-o:before,.fa-send-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}/*! normalize.css v3.0.0 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{ba
 ckground:0 0}a:active{outline:0}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0}mark{background:#ff0;color:#000}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]::-webkit-search-cancel-button,input[type=sear
 ch]::-webkit-search-decoration{-webkit-appearance:none}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}*,:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:62.5%;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a:focus{color:#0055b3;text-decoration:underline;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2
 s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:400;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#999}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .
 small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:200;line-height:1.4}.small,small{font-size:85%}cite{font-style:normal}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-muted{color:#999}.text-primary{color:#007aff}.text-success{color:#3c763d}.text-info{color:#31708f}.text-warning{color:#8a6d3b}.text-danger{color:#a94442}.bg-primary{color:#fff;background-color:#007aff}.bg-success{background-color:#dff0d8}.bg-info{background-color:#d9edf7}.bg-warning{background-color:#fcf8e3}.bg-danger{background-color:#f2dede}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-uns
 tyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #999}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#999}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.bl
 ockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}blockquote:after,blockquote:before{content:""}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;white-space:nowrap;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#333;background-color:#f5f5f5;border:1px solid #ccc;border-radi
 us:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container,.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-
 xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:0}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.3333
 3333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:0}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}table{max-width:100%;background-color:transparent}th{text-align:left}.table{width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>c
 aption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered,.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}table col[class*=col-]{position:static;float:none;display:table-column}table td[class*
 =col-],table th[class*=col-]{position:static;float:none;display:table-cell}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info
 >th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}{background-color:#ebcccc}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{displ
 ay:inline-block;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9}.form-control::-moz-placeholder{color:#999;opacity:1
 }.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee;opacity:1}textarea.form-control{height:auto}input[type=date]{line-height:34px}.checkbox,.radio{display:block;min-height:20px;margin-top:10px;margin-bottom:10px;padding-left:20px}.checkbox label,.radio label{display:inline;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{float:left;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:400;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}.checkbox-inline[disabled],.checkbox[disabled],.radio-inline[disabled],.radio[disabled
 ],fieldset[disabled] .checkbox,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio,fieldset[disabled] .radio-inline,fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox][disabled],input[type=radio][disabled]{cursor:not-allowed}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.has-feedback .form-control-feedback{position:absolute;top:25px;right:0;display:block;width:34px;height:34px;line-height:34px;text-align:center}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-
 success .radio,.has-success .radio-inline{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.0
 75),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback{color:#a94442}.form-control-static{margin-bottom:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .control-label,.form-horizontal
  .radio,.form-horizontal .radio-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .form-control-static{padding-top:7px}.form-horizontal .has-feedback .form-control-feedback{top:0;right:15px}.btn{display:inline-block;margin-bottom:0;font-weight:400;text-align:center;vertical-align:middle;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn.active:focus,.btn:active:focus,.btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:focus{color:#333;text-decoration:none}.btn.active,.btn:active{outline:0;background-image:none}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;pointer-events
 :none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.active,.btn-default:active,.btn-default:focus,.open .dropdown-toggle.btn-default{color:#333;background-color:#ebebeb;border-color:#adadad}.btn-default.active,.btn-default:active,.open .dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled]:active,.btn-default[disabled]:focus,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#007aff;border-color:#006ee6}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.open .dropd
 own-toggle.btn-primary{color:#fff;background-color:#0066d6;border-color:#0051a8}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus{background-color:#007aff;border-color:#006ee6}.btn-primary .badge{color:#007aff;background-color:#fff}.btn-success{color:#fff;background-color:#4cd964;border-color:#37d552}.btn-success.active,.btn-success:active,.btn-success:focus,.open .dropdown-toggle.btn-success{color:#fff;background-color:#2cd048;border-color:#24aa3b}.btn-success.active,.btn-success:active,.open .dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-succe
 ss.disabled.active,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled]:active,.btn-success[disabled]:focus,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus{background-color:#4cd964;border-color:#37d552}.btn-success .badge{color:#4cd964;background-color:#fff}.btn-info{color:#fff;background-color:#34aadc;border-color:#249ed2}.btn-info.active,.btn-info:active,.btn-info:focus,.open .dropdown-toggle.btn-info{color:#fff;background-color:#2295c5;border-color:#1b779e}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fiel
 dset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus{background-color:#34aadc;border-color:#249ed2}.btn-info .badge{color:#34aadc;background-color:#fff}.btn-warning{color:#fff;background-color:#fc0;border-color:#e6b800}.btn-warning.active,.btn-warning:active,.btn-warning:focus,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#d6ab00;border-color:#a88700}.btn-warning.active,.btn-warning:active,.open .dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus{background-color:#fc0;border-color:#e6b800}.btn-warning .badge{color:#fc0;background-color:#fff}.btn-danger{color:#fff;background-color:#ff3b30;bord
 er-color:#ff2317}.btn-danger.active,.btn-danger:active,.btn-danger:focus,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#ff1407;border-color:#d80b00}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus{background-color:#ff3b30;border-color:#ff2317}.btn-danger .badge{color:#ff3b30;background-color:#fff}.btn-link{color:#007aff;font-weight:400;cursor:pointer;border-radius:0}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus{border-color:transparen
 t}.btn-link:focus{color:#0055b3;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%;padding-left:0;padding-right:0}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;transition:height .35s ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;v
 ertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;outline:0;backgr
 ound-color:#007aff}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus{color:#999}.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#999}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left
 }.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus{z-index:2}.btn-group-vertical>.btn:focus,.btn-group>.btn:focus{outline:0}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:fir
 st-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;
 max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-
 left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}[data-toggle=buttons]>.btn>input[type=checkbox],[data-toggle=buttons]>.btn>input[type=radio]{display:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>
 .input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:n
 ot(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-chil
 d{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus{text-decorat
 ion:none;background-color:#eee}.nav>li.disabled>a{color:#999}.nav>li.disabled>a:focus{color:#999;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:focus{background-color:#eee;border-color:#007aff}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}.nav-tabs.nav-justified>li>a{margin-right:0;borde
 r-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus{color:#fff;background-color:#007aff}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus{border:1px solid #ddd}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.navbar-collapse{max-height:
 340px;overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}.navbar-static-top{z-index:1000;border-width:0 0 1px}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:focus{text-decoration:none}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .ic
 on-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin-top:8px;margin-bottom:8px}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}.navbar-default{background-color:#f7f7f7;border-color
 :#ccc}.navbar-default .navbar-brand{color:#007aff}.navbar-default .navbar-brand:focus{color:#0062cc;background-color:transparent}.navbar-default .navbar-nav>li>a,.navbar-default .navbar-text{color:#007aff}.navbar-default .navbar-nav>li>a:focus{color:#006ee6;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus{color:#1a87ff;background-color:#e6e6e6}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus{color:#66afff;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#ccc}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#ccc}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus{background-color:#e6e6e6;color:#1a87ff}.navbar-default .navbar-link{color:#007aff}.navbar-inverse{background-color:#222;border-colo
 r:#080808}.navbar-inverse .navbar-brand{color:#999}.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>li>a,.navbar-inverse .navbar-text{color:#999}.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#080808;color:#fff}.navbar-inverse .navbar-link{color:#999}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:cen
 ter}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>span{color:#999;background-color:#fff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.label[href]:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#999}.label-default[href]:focus{background-color:gray}.label-primary{background-color:#007aff}.label-primary[href]:focus{background-color:#0062cc}.label-success{background-color:#4cd964}.label-success[href]:focus{backgro
 und-color:#2ac845}.label-info{background-color:#34aadc}.label-info[href]:focus{background-color:#218ebd}.label-warning{background-color:#fc0}.label-warning[href]:focus{background-color:#cca300}.label-danger{background-color:#ff3b30}.label-danger[href]:focus{background-color:#fc0d00}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:400;color:#fff;line-height:1;vertical-align:baseline;white-space:nowrap;text-align:center;background-color:#999;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.nav-pills>.active>a>.badge,a.list-group-item.active>.badge{color:#007aff;background-color:#fff}.nav-pills>li>a>.badge{margin-left:3px}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s 
 ease-in-out}.thumbnail a>img,.thumbnail>img{margin-left:auto;margin-right:auto}a.thumbnail.active,a.thumbnail:focus{border-color:#007aff}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:400}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable{padding-right:35px}.alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger
 {background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#007aff;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75
 %,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:40px 40px}.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#4cd964}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#34aadc}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,tr
 ansparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#fc0}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#ff3b30}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);backg
 round-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media,.media-body{overflow:hidden;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;background-color:#fff}.list-group-item:last-child{margin-bottom:0}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus{text-decoration:none;background-color:#f5f5f5}a.list-group-item.active,a.list-group-item.active:focus{z-index:2;color:#fff;background-color:#007aff;border-color:#007aff}a
 .list-group-item.active .list-group-item-heading,a.list-group-item.active:focus .list-group-item-heading{color:inherit}a.list-group-item.active .list-group-item-text,a.list-group-item.active:focus .list-group-item-text{color:#cce4ff}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;backg
 round-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;border:1px solid transparent}.panel-heading{border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margi
 n-top:0;margin-bottom:0}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group{margin-bottom:0}.panel>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-chi
 ld>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.pa
 nel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-chil
 d,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.panel>.table>tbody:first-c
 hild>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-
 bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-borde
 red>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;overflow:hidden}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.panel-default>.panel-footer+.panel-collapse .panel-body{border-bott
 om-color:#ddd}.panel-primary{border-color:#007aff}.panel-primary>.panel-heading{color:#fff;background-color:#007aff;border-color:#007aff}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#007aff}.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#007aff}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-colo
 r:#faebcc}.panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#faebcc}.panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#ebccd1}.panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ebccd1}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:400;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:focus{color:#000;text-decor
 ation:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:auto;overflow-y:scroll;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5);backg
 round-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.42857143px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:20px}.modal-footer{margin-top:15px;padding:19px 20px 20px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.tooltip{position:absolute;z-index:1030;display:block;visibility:visible;font-size:12px;line-height:1.4;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{ma
 rgin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;right:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-
 width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);white-space:normal}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{bor
 der-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;
 bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:.5;filter:alpha(opacity=50);font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-control.left{background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,.5) 0),color-stop(rgba(0,0,0,.0001) 10
 0%));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,.0001) 0),color-stop(rgba(0,0,0,.5) 100%));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:focus{outline:0;color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%}.
 carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #fff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#fff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}.btn-group-vertic
 al>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{content:" ";display:table}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.form-horizontal .form-group:after,.modal-footer:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right!important}.pull-left{float:left!important}
 .hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important;visibility:hidden!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-print,.visible-sm,.visible-xs{display:none!important}body{font-weight:200}a{text-decoration:none;-webkit-tap-highlight-color:rgba(0,0,0,0);color:#007aff}.btn:active,a:active{opacity:.6;filter:alpha(opacity=60);-webkit-box-shadow:none;box-shadow:none}a:focus{outline:0 none}h1,h2,h3,h4,h5,h6{margin-top:0;padding-top:0}.page-header{margin-top:10px}.page-header h1,.page-header h2,.page-header h3,.page-header h4,.page-header h5,.page-header h6{margin-bottom:0;padding-bottom:0}img{max-width:100%}body,html{height:100%;width:100%;overflow:hidden}input[type=email],input[type=number],input[type=search],input[type=tel],input[type=text],input[type=url],textarea{-webkit-a
 ppearance:none}.form-control:focus{outline:0;-webkit-box-shadow:none;box-shadow:none}.form-control{border-radius:0;-webkit-box-shadow:none;box-shadow:none;border:1px solid #ccc}.form-group{margin-bottom:0;padding:10px 0}.input-group-addon{background:#fff}.control-label{line-height:34px;margin:0}input[type=search]{border-radius:0}.form-actions{margin-top:-20px}.switch{cursor:pointer;position:relative;display:block;width:68px;height:34px;background-color:#fff;border:1px solid #ccc;border-radius:999px}.switch .switch-handle{position:absolute;top:-1px;left:-1px;z-index:2;width:34px;height:34px;background-color:#fff;border:1px solid #ccc;border-radius:100px}.switch.active{background-color:#007aff;border:1px solid #007aff}.switch.active .switch-handle{border-color:#007aff;-webkit-transform:translate3d(34px,0,0);transform:translate3d(34px,0,0)}.switch-transition-enabled{-webkit-transition:background-color 200ms ease,border 200ms ease;transition:background-color 200ms ease,border 200ms ease
 }.switch-transition-enabled>.swit

<TRUNCATED>

[27/71] [abbrv] brooklyn-ui git commit: Move mobile app to sandbox

Posted by he...@apache.org.
Move mobile app to sandbox


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/commit/2a6fa4ed
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/tree/2a6fa4ed
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/diff/2a6fa4ed

Branch: refs/heads/0.7.0-incubating
Commit: 2a6fa4ed2a9faa09cf67e5905126a1933093443a
Parents: 07b96e4
Author: Sam Corbett <sa...@cloudsoftcorp.com>
Authored: Fri Feb 6 17:05:37 2015 +0000
Committer: Sam Corbett <sa...@cloudsoftcorp.com>
Committed: Fri Feb 6 17:05:37 2015 +0000

----------------------------------------------------------------------
 usage/jsgui/pom.xml                             |    11 -
 .../main/webapp/assets/mobile/css/mobile.css    |    74 -
 .../Powered-by-Cloudsoft-AMP-Logo-on-blue.png   |   Bin 30107 -> 0 bytes
 .../Powered-by-Cloudsoft-AMP-Logo-on-white.png  |   Bin 28288 -> 0 bytes
 .../images/Powered-by-Cloudsoft-AMP-Logo.png    |   Bin 30522 -> 0 bytes
 .../src/main/webapp/assets/mobile/js/app.js     |    84 -
 .../main/webapp/assets/mobile/js/controllers.js |   202 -
 .../src/main/webapp/assets/mobile/js/filters.js |    29 -
 .../webapp/assets/mobile/js/i18n/en-us.json     |    27 -
 .../main/webapp/assets/mobile/js/services.js    |    28 -
 .../mobile/js/templates/applicationsList.html   |    72 -
 .../mobile/js/templates/entitiesList.html       |    53 -
 .../mobile/js/templates/entitySummary.html      |   250 -
 .../libs/angular-1.2.19/angular-animate.js      |  1633 -
 .../libs/angular-1.2.19/angular-animate.min.js  |    28 -
 .../angular-1.2.19/angular-animate.min.js.map   |     8 -
 .../libs/angular-1.2.19/angular-cookies.js      |   204 -
 .../libs/angular-1.2.19/angular-cookies.min.js  |     8 -
 .../angular-1.2.19/angular-cookies.min.js.map   |     8 -
 .../mobile/libs/angular-1.2.19/angular-csp.css  |    24 -
 .../libs/angular-1.2.19/angular-loader.js       |   414 -
 .../libs/angular-1.2.19/angular-loader.min.js   |     9 -
 .../angular-1.2.19/angular-loader.min.js.map    |     8 -
 .../mobile/libs/angular-1.2.19/angular-mocks.js |  2171 --
 .../libs/angular-1.2.19/angular-resource.js     |   619 -
 .../libs/angular-1.2.19/angular-resource.min.js |    13 -
 .../angular-1.2.19/angular-resource.min.js.map  |     8 -
 .../mobile/libs/angular-1.2.19/angular-route.js |   927 -
 .../libs/angular-1.2.19/angular-route.min.js    |    14 -
 .../angular-1.2.19/angular-route.min.js.map     |     8 -
 .../libs/angular-1.2.19/angular-sanitize.js     |   630 -
 .../libs/angular-1.2.19/angular-sanitize.min.js |    15 -
 .../angular-1.2.19/angular-sanitize.min.js.map  |     8 -
 .../libs/angular-1.2.19/angular-scenario.js     | 33778 -----------------
 .../mobile/libs/angular-1.2.19/angular-touch.js |   584 -
 .../libs/angular-1.2.19/angular-touch.min.js    |    13 -
 .../angular-1.2.19/angular-touch.min.js.map     |     8 -
 .../mobile/libs/angular-1.2.19/angular.js       | 21778 -----------
 .../mobile/libs/angular-1.2.19/angular.min.js   |   214 -
 .../libs/angular-1.2.19/angular.min.js.map      |     8 -
 .../mobile/libs/angular-1.2.19/errors.json      |     1 -
 .../angular-1.2.19/i18n/angular-locale_af-na.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_af-za.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_af.js    |    99 -
 .../angular-1.2.19/i18n/angular-locale_am-et.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_am.js    |    99 -
 .../i18n/angular-locale_ar-001.js               |    99 -
 .../angular-1.2.19/i18n/angular-locale_ar-ae.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_ar-bh.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_ar-dz.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_ar-eg.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_ar-iq.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_ar-jo.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_ar-kw.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_ar-lb.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_ar-ly.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_ar-ma.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_ar-om.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_ar-qa.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_ar-sa.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_ar-sd.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_ar-sy.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_ar-tn.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_ar-ye.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_ar.js    |    99 -
 .../angular-1.2.19/i18n/angular-locale_bg-bg.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_bg.js    |    99 -
 .../angular-1.2.19/i18n/angular-locale_bn-bd.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_bn-in.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_bn.js    |    99 -
 .../angular-1.2.19/i18n/angular-locale_ca-ad.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_ca-es.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_ca.js    |    99 -
 .../angular-1.2.19/i18n/angular-locale_cs-cz.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_cs.js    |    99 -
 .../angular-1.2.19/i18n/angular-locale_da-dk.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_da.js    |    99 -
 .../angular-1.2.19/i18n/angular-locale_de-at.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_de-be.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_de-ch.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_de-de.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_de-li.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_de-lu.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_de.js    |    99 -
 .../angular-1.2.19/i18n/angular-locale_el-cy.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_el-gr.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_el.js    |    99 -
 .../angular-1.2.19/i18n/angular-locale_en-as.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_en-au.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_en-bb.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_en-be.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_en-bm.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_en-bw.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_en-bz.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_en-ca.js |    99 -
 .../i18n/angular-locale_en-dsrt-us.js           |    99 -
 .../i18n/angular-locale_en-dsrt.js              |    99 -
 .../angular-1.2.19/i18n/angular-locale_en-fm.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_en-gb.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_en-gu.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_en-gy.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_en-hk.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_en-ie.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_en-in.js |    99 -
 .../i18n/angular-locale_en-iso.js               |    99 -
 .../angular-1.2.19/i18n/angular-locale_en-jm.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_en-mh.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_en-mp.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_en-mt.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_en-mu.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_en-na.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_en-nz.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_en-ph.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_en-pk.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_en-pr.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_en-pw.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_en-sg.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_en-tc.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_en-tt.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_en-um.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_en-us.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_en-vg.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_en-vi.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_en-za.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_en-zw.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_en.js    |    99 -
 .../i18n/angular-locale_es-419.js               |    99 -
 .../angular-1.2.19/i18n/angular-locale_es-ar.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_es-bo.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_es-cl.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_es-co.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_es-cr.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_es-do.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_es-ea.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_es-ec.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_es-es.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_es-gq.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_es-gt.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_es-hn.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_es-ic.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_es-mx.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_es-ni.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_es-pa.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_es-pe.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_es-pr.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_es-py.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_es-sv.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_es-us.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_es-uy.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_es-ve.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_es.js    |    99 -
 .../angular-1.2.19/i18n/angular-locale_et-ee.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_et.js    |    99 -
 .../angular-1.2.19/i18n/angular-locale_eu-es.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_eu.js    |    99 -
 .../angular-1.2.19/i18n/angular-locale_fa-af.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_fa-ir.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_fa.js    |    99 -
 .../angular-1.2.19/i18n/angular-locale_fi-fi.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_fi.js    |    99 -
 .../i18n/angular-locale_fil-ph.js               |    99 -
 .../angular-1.2.19/i18n/angular-locale_fil.js   |    99 -
 .../angular-1.2.19/i18n/angular-locale_fr-be.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_fr-bf.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_fr-bi.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_fr-bj.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_fr-bl.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_fr-ca.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_fr-cd.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_fr-cf.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_fr-cg.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_fr-ch.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_fr-ci.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_fr-cm.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_fr-dj.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_fr-fr.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_fr-ga.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_fr-gf.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_fr-gn.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_fr-gp.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_fr-gq.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_fr-km.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_fr-lu.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_fr-mc.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_fr-mf.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_fr-mg.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_fr-ml.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_fr-mq.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_fr-ne.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_fr-re.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_fr-rw.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_fr-sn.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_fr-td.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_fr-tg.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_fr-yt.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_fr.js    |    99 -
 .../angular-1.2.19/i18n/angular-locale_gl-es.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_gl.js    |    99 -
 .../i18n/angular-locale_gsw-ch.js               |    99 -
 .../angular-1.2.19/i18n/angular-locale_gsw.js   |    99 -
 .../angular-1.2.19/i18n/angular-locale_gu-in.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_gu.js    |    99 -
 .../angular-1.2.19/i18n/angular-locale_he-il.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_he.js    |    99 -
 .../angular-1.2.19/i18n/angular-locale_hi-in.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_hi.js    |    99 -
 .../angular-1.2.19/i18n/angular-locale_hr-hr.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_hr.js    |    99 -
 .../angular-1.2.19/i18n/angular-locale_hu-hu.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_hu.js    |    99 -
 .../angular-1.2.19/i18n/angular-locale_id-id.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_id.js    |    99 -
 .../angular-1.2.19/i18n/angular-locale_in.js    |    99 -
 .../angular-1.2.19/i18n/angular-locale_is-is.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_is.js    |    99 -
 .../angular-1.2.19/i18n/angular-locale_it-ch.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_it-it.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_it-sm.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_it.js    |    99 -
 .../angular-1.2.19/i18n/angular-locale_iw.js    |    99 -
 .../angular-1.2.19/i18n/angular-locale_ja-jp.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_ja.js    |    99 -
 .../angular-1.2.19/i18n/angular-locale_kn-in.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_kn.js    |    99 -
 .../angular-1.2.19/i18n/angular-locale_ko-kr.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_ko.js    |    99 -
 .../angular-1.2.19/i18n/angular-locale_ln-cd.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_ln-cg.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_ln.js    |    99 -
 .../angular-1.2.19/i18n/angular-locale_lt-lt.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_lt.js    |    99 -
 .../angular-1.2.19/i18n/angular-locale_lv-lv.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_lv.js    |    99 -
 .../angular-1.2.19/i18n/angular-locale_ml-in.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_ml.js    |    99 -
 .../angular-1.2.19/i18n/angular-locale_mr-in.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_mr.js    |    99 -
 .../angular-1.2.19/i18n/angular-locale_ms-bn.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_ms-my.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_ms.js    |    99 -
 .../angular-1.2.19/i18n/angular-locale_mt-mt.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_mt.js    |    99 -
 .../angular-1.2.19/i18n/angular-locale_nl-aw.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_nl-be.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_nl-cw.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_nl-nl.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_nl-sx.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_nl.js    |    99 -
 .../angular-1.2.19/i18n/angular-locale_no.js    |    99 -
 .../angular-1.2.19/i18n/angular-locale_or-in.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_or.js    |    99 -
 .../angular-1.2.19/i18n/angular-locale_pl-pl.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_pl.js    |    99 -
 .../angular-1.2.19/i18n/angular-locale_pt-ao.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_pt-br.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_pt-gw.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_pt-mz.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_pt-pt.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_pt-st.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_pt.js    |    99 -
 .../angular-1.2.19/i18n/angular-locale_ro-md.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_ro-ro.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_ro.js    |    99 -
 .../angular-1.2.19/i18n/angular-locale_ru-md.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_ru-ru.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_ru-ua.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_ru.js    |    99 -
 .../angular-1.2.19/i18n/angular-locale_sk-sk.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_sk.js    |    99 -
 .../angular-1.2.19/i18n/angular-locale_sl-si.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_sl.js    |    99 -
 .../angular-1.2.19/i18n/angular-locale_sq-al.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_sq.js    |    99 -
 .../i18n/angular-locale_sr-cyrl-ba.js           |    99 -
 .../i18n/angular-locale_sr-cyrl-me.js           |    99 -
 .../i18n/angular-locale_sr-cyrl-rs.js           |    99 -
 .../i18n/angular-locale_sr-cyrl.js              |    99 -
 .../i18n/angular-locale_sr-latn-ba.js           |    99 -
 .../i18n/angular-locale_sr-latn-me.js           |    99 -
 .../i18n/angular-locale_sr-latn-rs.js           |    99 -
 .../i18n/angular-locale_sr-latn.js              |    99 -
 .../angular-1.2.19/i18n/angular-locale_sr.js    |    99 -
 .../angular-1.2.19/i18n/angular-locale_sv-fi.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_sv-se.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_sv.js    |    99 -
 .../angular-1.2.19/i18n/angular-locale_sw-ke.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_sw-tz.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_sw.js    |    99 -
 .../angular-1.2.19/i18n/angular-locale_ta-in.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_ta-lk.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_ta.js    |    99 -
 .../angular-1.2.19/i18n/angular-locale_te-in.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_te.js    |    99 -
 .../angular-1.2.19/i18n/angular-locale_th-th.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_th.js    |    99 -
 .../angular-1.2.19/i18n/angular-locale_tl.js    |    99 -
 .../angular-1.2.19/i18n/angular-locale_tr-tr.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_tr.js    |    99 -
 .../angular-1.2.19/i18n/angular-locale_uk-ua.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_uk.js    |    99 -
 .../angular-1.2.19/i18n/angular-locale_ur-in.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_ur-pk.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_ur.js    |    99 -
 .../angular-1.2.19/i18n/angular-locale_vi-vn.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_vi.js    |    99 -
 .../angular-1.2.19/i18n/angular-locale_zh-cn.js |    99 -
 .../i18n/angular-locale_zh-hans-cn.js           |    99 -
 .../i18n/angular-locale_zh-hans-hk.js           |    99 -
 .../i18n/angular-locale_zh-hans-mo.js           |    99 -
 .../i18n/angular-locale_zh-hans-sg.js           |    99 -
 .../i18n/angular-locale_zh-hans.js              |    99 -
 .../i18n/angular-locale_zh-hant-hk.js           |    99 -
 .../i18n/angular-locale_zh-hant-mo.js           |    99 -
 .../i18n/angular-locale_zh-hant-tw.js           |    99 -
 .../i18n/angular-locale_zh-hant.js              |    99 -
 .../angular-1.2.19/i18n/angular-locale_zh-hk.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_zh-tw.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_zh.js    |    99 -
 .../angular-1.2.19/i18n/angular-locale_zu-za.js |    99 -
 .../angular-1.2.19/i18n/angular-locale_zu.js    |    99 -
 .../mobile/libs/angular-1.2.19/version.json     |     1 -
 .../mobile/libs/angular-1.2.19/version.txt      |     1 -
 .../.bower.json                                 |    19 -
 .../README.md                                   |     9 -
 .../angular-translate-loader-static-files.js    |    31 -
 ...angular-translate-loader-static-files.min.js |     6 -
 .../bower.json                                  |     8 -
 .../mobile/libs/angular-translate-loader-url    |     1 -
 .../.bower.json                                 |    18 -
 .../angular-translate-storage-cookie/README.md  |     9 -
 .../angular-translate-storage-cookie.js         |    19 -
 .../angular-translate-storage-cookie.min.js     |     6 -
 .../angular-translate-storage-cookie/bower.json |     8 -
 .../angular-translate-storage-local/.bower.json |    20 -
 .../angular-translate-storage-local/README.md   |     9 -
 .../angular-translate-storage-local.js          |    38 -
 .../angular-translate-storage-local.min.js      |     6 -
 .../angular-translate-storage-local/bower.json  |     9 -
 .../mobile/libs/angular-translate/.bower.json   |    16 -
 .../mobile/libs/angular-translate/README.md     |     9 -
 .../libs/angular-translate/angular-translate.js |   883 -
 .../angular-translate/angular-translate.min.js  |     6 -
 .../mobile/libs/angular-translate/bower.json    |     5 -
 .../.gitignore                                  |   102 -
 .../dist/css/mobile-angular-ui-base.css         |  7543 ----
 .../dist/css/mobile-angular-ui-base.min.css     |     1 -
 .../dist/css/mobile-angular-ui-desktop.css      |   531 -
 .../dist/css/mobile-angular-ui-desktop.min.css  |     1 -
 .../dist/css/mobile-angular-ui-hover.css        |   480 -
 .../dist/css/mobile-angular-ui-hover.min.css    |     1 -
 .../dist/fonts/FontAwesome.otf                  |   Bin 75188 -> 0 bytes
 .../dist/fonts/fontawesome-webfont.eot          |   Bin 72449 -> 0 bytes
 .../dist/fonts/fontawesome-webfont.svg          |   504 -
 .../dist/fonts/fontawesome-webfont.ttf          |   Bin 141564 -> 0 bytes
 .../dist/fonts/fontawesome-webfont.woff         |   Bin 83760 -> 0 bytes
 .../dist/js/mobile-angular-ui.js                |  1854 -
 .../dist/js/mobile-angular-ui.min.js            |     1 -
 usage/jsgui/src/main/webapp/index.html          |     7 -
 usage/jsgui/src/main/webapp/index.m.html        |    99 -
 359 files changed, 103853 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/pom.xml
----------------------------------------------------------------------
diff --git a/usage/jsgui/pom.xml b/usage/jsgui/pom.xml
index 1763270..85e90bc 100644
--- a/usage/jsgui/pom.xml
+++ b/usage/jsgui/pom.xml
@@ -238,17 +238,6 @@
                             <exclude>**/src/main/dev/js/libs/*</exclude>
                             <exclude>**/src/build/requirejs-maven-plugin/r.js</exclude>
                             <exclude>**/src/test/javascript/config.txt</exclude>
-                            <exclude>**/src/main/webapp/assets/mobile/js/i18n/*</exclude>
-                            <exclude>**/src/main/webapp/assets/mobile/libs/angular-1.2.19/*</exclude>
-                            <exclude>**/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/*</exclude>
-                            <exclude>**/src/main/webapp/assets/mobile/libs/angular-translate/*</exclude>
-                            <exclude>**/src/main/webapp/assets/mobile/libs/angular-translate-loader-static-files/*</exclude>
-                            <exclude>**/src/main/webapp/assets/mobile/libs/angular-translate-loader-url/*</exclude>
-                            <exclude>**/src/main/webapp/assets/mobile/libs/angular-translate-storage-cookie/*</exclude>
-                            <exclude>**/src/main/webapp/assets/mobile/libs/angular-translate-storage-local/*</exclude>
-                            <exclude>**/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/css/*</exclude>
-                            <exclude>**/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/fonts/*</exclude>
-                            <exclude>**/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/js/*</exclude>
                         </excludes>
                     </configuration>
                 </plugin>

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/css/mobile.css
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/css/mobile.css b/usage/jsgui/src/main/webapp/assets/mobile/css/mobile.css
deleted file mode 100644
index 8ddaf8a..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/css/mobile.css
+++ /dev/null
@@ -1,74 +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.
-*/
-.poweredLogo{
-	width:150px;
-	height:28px;
-	float:right;
-	margin: 20px 20px;
-	content:url("/assets/mobile/images/Powered-by-Cloudsoft-AMP-Logo-on-blue.png");
-}
-
-.navbar-absolute-bottom{
-	border-top-width: 0px;
-}
-
-.navbar-app{
-	color:#419641;
-}
-.list-group-item a{
-	color:#666;
-}
-
-.navbar-app .btn, .navbar-app .btn-navbar{
-	color:#777;
-}
-
-.sidebar-left{
-	background: none repeat scroll 0 0 #555;
-}
-
-.navbar-footer{
-	background: none repeat scroll 0 0 #555;
-}
-
-.list-group-item span, .list-group-item h4, .navbar-brand span, .panel-body .panel h4{
-	white-space: nowrap;
-	/*width: 100%;*/
-	overflow: hidden;              /* "overflow" value must be different from "visible" */
-	text-overflow: ellipsis;
-}
-
-.panel-heading .btn-navbar:last-child{
-	padding:0px 0px 6px 12px;
-}
-
-.entityListHeader {
-	padding: 10px 0px 40px 0px;
-}
-
-.entityListHeader .navbar-brand-center {
-	margin: 0px 35px;
-}
-.navbar-brand{
-	padding:15px 30px !important;
-}
-
-.wrapword{
-	word-wrap: break-word;
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/images/Powered-by-Cloudsoft-AMP-Logo-on-blue.png
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/images/Powered-by-Cloudsoft-AMP-Logo-on-blue.png b/usage/jsgui/src/main/webapp/assets/mobile/images/Powered-by-Cloudsoft-AMP-Logo-on-blue.png
deleted file mode 100644
index 4e6b2b3..0000000
Binary files a/usage/jsgui/src/main/webapp/assets/mobile/images/Powered-by-Cloudsoft-AMP-Logo-on-blue.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/images/Powered-by-Cloudsoft-AMP-Logo-on-white.png
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/images/Powered-by-Cloudsoft-AMP-Logo-on-white.png b/usage/jsgui/src/main/webapp/assets/mobile/images/Powered-by-Cloudsoft-AMP-Logo-on-white.png
deleted file mode 100644
index 7143636..0000000
Binary files a/usage/jsgui/src/main/webapp/assets/mobile/images/Powered-by-Cloudsoft-AMP-Logo-on-white.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/images/Powered-by-Cloudsoft-AMP-Logo.png
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/images/Powered-by-Cloudsoft-AMP-Logo.png b/usage/jsgui/src/main/webapp/assets/mobile/images/Powered-by-Cloudsoft-AMP-Logo.png
deleted file mode 100644
index a627f53..0000000
Binary files a/usage/jsgui/src/main/webapp/assets/mobile/images/Powered-by-Cloudsoft-AMP-Logo.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/js/app.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/js/app.js b/usage/jsgui/src/main/webapp/assets/mobile/js/app.js
deleted file mode 100644
index cedad5d..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/js/app.js
+++ /dev/null
@@ -1,84 +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.
-*/
-var app = angular.module('BrooklynMobile', [ 
-  "ngRoute",
-  "ngTouch",
-  "mobile-angular-ui", 
-  "BrooklynApp.Services",
-  "BrooklynApp.filters",
-  "BrooklynApp.controllers",
-  "pascalprecht.translate",
-  "ngCookies"]);
-
-app.config(function($routeProvider, $translateProvider) {
-	//Defaults root to applications.  Should change in the future
-	$routeProvider.when('/', {
-		templateUrl : "/assets/mobile/js/templates/applicationsList.html",
-		controller:"ApplicationListController"
-	});
-	
-	//Lists applications
-	$routeProvider.when('/v1/applications', {
-		templateUrl : "/assets/mobile/js/templates/applicationsList.html",
-		controller:"ApplicationListController"
-	});
-	
-	//List entities
-	$routeProvider.when('/v1/applications/:appId/entities/:id', {
-		templateUrl : "/assets/mobile/js/templates/entitiesList.html",
-		controller:"EntityListController"
-	});
-	$routeProvider.when('/v1/applications/:appId/entities', {
-		templateUrl : "/assets/mobile/js/templates/entitiesList.html",
-		controller:"EntityListController"
-	});
-	$routeProvider.when('/v1/applications/:appId', {
-		templateUrl : "/assets/mobile/js/templates/entitiesList.html",
-		controller:"EntityListController"
-	});
-	
-	//Application and entity details
-	$routeProvider.when('/v1/applications/:appId/entities/:id/summary', {
-		templateUrl : "/assets/mobile/js/templates/entitySummary.html",
-		controller:"EntityDetailsController"
-	});
-	$routeProvider.when('/v1/applications/:appId/summary', {
-		templateUrl : "/assets/mobile/js/templates/entitySummary.html",
-		controller:"EntityDetailsController"
-	});
-	
-	$translateProvider.useStaticFilesLoader({
-		  prefix: '/assets/mobile/js/i18n/',
-		  suffix: '.json'
-		});
-	//$translateProvider.useLocalStorage();
-	$translateProvider.preferredLanguage('en-us');
-	
-});
-
-app.controller('MainController', function($rootScope, $scope) {
-
-	$rootScope.$on("$routeChangeStart", function() {
-		$rootScope.loading = true;
-	});
-
-	$rootScope.$on("$routeChangeSuccess", function() {
-		$rootScope.loading = false;
-	});
-});
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/js/controllers.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/js/controllers.js b/usage/jsgui/src/main/webapp/assets/mobile/js/controllers.js
deleted file mode 100644
index 68e21d1..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/js/controllers.js
+++ /dev/null
@@ -1,202 +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.
-*/
-var bklnControllers = angular.module('BrooklynApp.controllers',['ngResource']);
-
-//Brooklyn ApplicationList controller
-bklnControllers.controller('ApplicationListController', function($scope, $interval, ApplicationService){
-	//
-	$scope.reloadTimer;
-	$scope.loadData = function(){
-		ApplicationService.query({}, function (applications){
-			$scope.applications = applications;
-			console.log('ApplicationListController: new data loaded');
-		});
-	};
-	
-	$scope.showDetails = function($event){
-		alert("swipe happened");
-		$event.stopPropagation();
-		console.dir ($event);
-	};
-	
-	$scope.$on('$viewContentLoaded', function() {
-	    console.log('ApplicationListController: loadeding');
-	    $scope.loadData();
-	    console.log('ApplicationListController: requested data');
-	    $scope.reloadTimer = $interval($scope.loadData, 10000);
-	    console.log('ApplicationListController: reload timer set');
-	    console.log('ApplicationListController: loaded');
-	  });
-	
-	$scope.$on('$destroy', function() {
-	    console.log('ApplicationListController: unloading');
-	    if (angular.isDefined($scope.reloadTimer)) {
-	        $interval.cancel($scope.reloadTimer);
-	        $scope.reloadTimer = undefined;
-	      }
-	    console.log('ApplicationListController: reload timer stopped');
-	    console.log('ApplicationListController: unloaded');
-	  });
-	
-});
-
-
-bklnControllers.controller('EntityListController', function($scope, $http, $interval, $location, $routeParams){
-	
-	$scope.reloadTimer;
-	$scope.path = $location.path().replace("#",'');
-	var shownPath = false;
-	$scope.loadData = function(){
-		
-		$http({method: 'GET', url: $scope.path}).
-	    success(function(data) {
-	    	$scope.entity = data;
-	    	$scope.name = (data.spec) ? data.spec.name : data.name;
-	    	var children = (data.links.children) ? data.links.children : data.links.entities ;
-	    	$scope.back = (data.links.parent) ? data.links.parent : "/v1/applications";
-	    	if (!shownPath) {
-	    		console.info ("Current path: "+ $location.path());
-	    		console.info ("Back path: "+ $scope.back);
-	    		shownPath = true;
-			}
-	    	console.log('EntityListController: new data loaded');
-	    	$http({method: 'GET', url: children}).
-	        success(function(data) {
-	        	$scope.entities = data;
-	        	//get status sequentially..
-	        	angular.forEach($scope.entities, function (value, index){
-	        		$http.get(value.links.sensors + "/service.state")
-	        		.success(function(data){
-	        			data = data.replace(/"/g,'');
-	        			value.status = (data.length > 0) ? data : "Unknown";
-	        		});
-	        	});
-	        	
-	        });
-	    });
-	};
-		
-	$scope.$on('$viewContentLoaded', function() {
-	    console.log('EntityListController: loadeding');
-	    $scope.loadData();
-	    console.log('EntityListController: requested data');
-	    $scope.reloadTimer = $interval($scope.loadData, 10000);
-	    console.log('EntityListController: reload timer set');
-	    console.log('EntityListController: loaded');
-	  });
-	
-	$scope.$on('$destroy', function() {
-	    console.log('EntityListController: unloading');
-	    if (angular.isDefined($scope.reloadTimer)) {
-	        $interval.cancel($scope.reloadTimer);
-	        $scope.reloadTimer = undefined;
-	      }
-	    console.log('EntityListController: reload timer stopped');
-	    console.log('EntityListController: unloaded');
-	  });
-	
-});
-
-bklnControllers.controller('EntityDetailsController', function($scope, $filter, $window, $location, $http, $resource, $routeParams){
-
-	
-	$scope.goBack = function (){
-		$window.history.back();
-	};
-	
-	$scope.init = function(){
-		$scope.path = $location.path().replace("#",'');
-		
-		$scope.selfLink = $location.path().replace("/summary",'');
-		
-		$http({method: 'GET', url: $scope.selfLink}).
-	    success(function(data) {
-	    	$scope.entity = data;
-	    	$scope.name = (data.spec) ? data.spec.name : data.name;
-	    	var sensors = ($scope.entity.links.sensors) ? $scope.entity.links.sensors : $scope.selfLink + "/sensors"; 
-	    	$http({method:'GET', url:$scope.entity.links.effectors}).
-	    	success(function(data){
-	    		$scope.entity.effectors = data;
-	    		console.dir (data);
-	    	});
-	    	
-	    	$http({method: 'GET', url: sensors + '/current-state'}).
-		    success(function(data) {
-		    	$scope.entity.status = (data["service.state"]) ? data["service.state"].replace(/"/g,'') : null;
-		    	$scope.entity.isUp = data["service.isUp"];
-		    });
-
-	    	var activities = ($scope.entity.links.activities) ? $scope.entity.links.activities : $scope.selfLink + "/activities"; 
-	    	$http({method: 'GET', url: activities}).
-		    success(function(data) {
-		    	console.info(activities);
-		    	console.dir(data);
-		    	$scope.entity.activities = data;
-		    });
-	    	var config = ($scope.entity.links.config) ? $scope.entity.links.config : $scope.selfLink + "/config"; 
-	    	var configUrl = config +  '/current-state';
-	    	$http({method: 'GET', url: configUrl}).
-		    success(function(data) {
-		    	console.info(configUrl);
-		    	console.dir(data);
-		    	var config = [];
-		    	angular.forEach(data, function (v, k){
-		    		config.push({"key": k, "value":v});
-		    	});
-		    	$scope.entity.config = config;
-		    });
-	    	
-			console.dir ($scope.entity);
-	    });
-	};
-	
-	$scope.isTopLevelActivity = function(input){
-		var submitter = input.submittedByTask;
-		return (submitter == null ||(submitter != null && $filter('filter')($scope.entity.activities,{"id":submitter.metadata.id}).length == 0 ));
-	};
-	
-	$scope.expunge = function (){
-		//TODO: show dialog requesting if user wants to release resources
-		var expungeURL = $scope.selfLink + "/expunge?replace=false";
-		$http({method: 'POST', url: expungeURL}).
-	    success(function(data) {
-	    	console.info(expungeURL);
-	    	console.dir(data);
-	    });
-		
-		
-	};
-	
-	$scope.executeEffector = function (uri){
-		var effector = uri + "?timeout=0";
-		var data = ""; 
-		console.info ("Executing: " + effector);
-		$http({method: 'POST', url: effector, data:data, headers: {'Content-Type': 'application/x-www-form-urlencoded'}}).
-	    success(function(data) {
-	    	console.info("Success");
-	    	console.dir(data);
-	    }).
-	    error(function(data, status){
-	    	console.error ("Failed: " + status);
-	    	console.dir (data);
-	    });
-	};
-	$scope.init();
-	
-});
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/js/filters.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/js/filters.js b/usage/jsgui/src/main/webapp/assets/mobile/js/filters.js
deleted file mode 100644
index 289bd3f..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/js/filters.js
+++ /dev/null
@@ -1,29 +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.
-*/
-'use strict';
-var bklnFilters = angular.module('BrooklynApp.filters',[]);
-
-bklnFilters.filter('Capitalize', function(){
-	return function(input){
-	input = input || '';
-	var out = input.toLocaleLowerCase();
-	out = out.charAt(0).toLocaleUpperCase() + out.substring(1);
-	return out;
-};
-});
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/js/i18n/en-us.json
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/js/i18n/en-us.json b/usage/jsgui/src/main/webapp/assets/mobile/js/i18n/en-us.json
deleted file mode 100644
index ca3ea5e..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/js/i18n/en-us.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
-	"TITLE"     : "Brooklyn",
-	"APP_NAME_LONG"    : "Brooklyn",
-	"APP_NAME_SHORT"    : "Brooklyn",
-	"APPLICATION_LIST_TITLE":"Applications",
-	"NO_APPS_FOUND": "No applications found.",
-	"NO_ENTITIES_FOUND": "No entities found.",
-	"M_MENU_APPS": "Applications",
-	"M_MENU_HELP": "Help",
-	"M_MEMU_POWERED_BY":"",
-	"LOADING": "Loading ...",
-	"E_DISMISS_BUTTON":"Dismiss",
-	"E_DETIALS_SUMMARY":"Summary",
-	"E_DETIALS_CONFIG": "Config",
-	"E_DETIALS_LIFECYCLE": "Lifecycle",
-	"E_DETIALS_POLICIES":"Policies",
-	"E_DETIALS_ACTIVITIES":"Activities",
-	"E_DETIALS_NO_CONFIG_FOUND":"No configurations found",
-	"E_DETIALS_NO_POLICIES_FOUND":"No policies found",
-	"E_DETIALS_NO_ACTIVITIES_FOUND":"No activities found",
-	"E_SUMMARY_NAME":"Name",
-	"E_SUMMARY_ID": "Id",
-	"E_SUMMARY_STATUS":"Status",
-	"E_SUMMARY_TYPE": "Type",
-	"E_SUMMARY_SERVICE_UP":"Service up"
-	
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/js/services.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/js/services.js b/usage/jsgui/src/main/webapp/assets/mobile/js/services.js
deleted file mode 100644
index 6e16afa..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/js/services.js
+++ /dev/null
@@ -1,28 +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.
-*/
-
-var brooklynServices = angular.module('BrooklynApp.Services', ['ngResource']);
-
-brooklynServices.factory('ApplicationService', ['$resource', function ($resource) {
-    var Application = $resource('/v1/applications/:id', {url:'/v1/applications/:id'}, {
-    	query: {method:'GET', params:{}, isArray:true},
-    	entities:{url:'v1/applications/:id/entities', method:'GET', isArray:true},
-    });
-    return Application;
-}]);

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/js/templates/applicationsList.html
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/js/templates/applicationsList.html b/usage/jsgui/src/main/webapp/assets/mobile/js/templates/applicationsList.html
deleted file mode 100644
index 1ab6fc5..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/js/templates/applicationsList.html
+++ /dev/null
@@ -1,72 +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.
--->
-
-<div class="scrollable">
-	<div class="scrollable-content">
-		<div class="list-group">
-			<div style="padding: 10px 0px 19px 0px;" class="list-group-item">
-				<span style="font-size: 1.5em; font-weight: 400; padding-left: 15px">{{'APPLICATION_LIST_TITLE' | translate}}</span>
-				<!-- <div class="btn-group pull-right">
-					<a href="{{$scope.loadData()}}" class="btn btn-navbar"> <i
-						class="fa fa-refresh"></i>
-					</a>
-				</div> -->
-			</div>
-
-			<div ng-if="applications.length == 0" class="list-group-item">
-				<h5 class="list-group-item-text text-center">{{'NO_APPS_FOUND' | translate}}</h5>
-			</div>
-
-			<div ng-repeat="application in applications"
-				href="#{{application.links.entities}}/{{application.id}}"
-				class="list-group-item">
-				<a href="#{{application.links.entities}}/{{application.id}}" ng-show="!showActions" ng-swipe-left="showDetails($event)">
-					<i class="fa fa-chevron-right pull-right"></i>
-					<h5 class="list-group-item-heading">{{application.spec.name}}</h5>
-	
-					<p class="list-group-item-text">
-	
-						<i ng-if="application.status == 'RUNNING'"
-							class="fa fa-circle text-success"></i> <i
-							ng-if="application.status == 'UNKNOWN'"
-							class="fa fa-exclamation text-warning"></i> <i
-							ng-if="application.status == 'STARTING'"
-							class="fa fa-circle text-info"></i> {{application.status | Capitalize}}
-					</p>
-				</a>
-				
-				<a href="#{{application.links.entities}}/{{application.id}}" ng-show="showActions" ng-swipe-right="showActions = false">
-					<span ng-href="#{{application.links.self}}/summary" class="fa pull-right" style="background-color:green;margin: -10px 0px;padding: 20px 20px;color: white;display: block;z-index: 2000;"> Details</span>
-					<i class="fa fa-chevron-right pull-right"></i>
-					<h5 class="list-group-item-heading">{{application.spec.name}}</h5>
-	
-					<p class="list-group-item-text">
-	
-						<i ng-if="application.status == 'RUNNING'"
-							class="fa fa-circle text-success"></i> <i
-							ng-if="application.status == 'UNKNOWN'"
-							class="fa fa-exclamation text-warning"></i> <i
-							ng-if="application.status == 'STARTING'"
-							class="fa fa-circle text-info"></i> {{application.status | Capitalize}}
-					</p>
-				</a>
-			</div>
-		</div>
-	</div>
-</div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/js/templates/entitiesList.html
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/js/templates/entitiesList.html b/usage/jsgui/src/main/webapp/assets/mobile/js/templates/entitiesList.html
deleted file mode 100644
index 0417f8b..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/js/templates/entitiesList.html
+++ /dev/null
@@ -1,53 +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.
--->
-<div class="scrollable">
-
-	<div class="list-group-item entityListHeader">
-
-		<div class="btn-group pull-left">
-			<a href="#{{back}}" class="btn btn-navbar "> <i
-				class="fa fa-chevron-left"></i>
-			</a>
-		</div>
-		<div class=" navbar-brand navbar-brand-center"><span style="font-size: 1.5em; font-weight: 400;">{{name}}</span></div>
-		
-		<div class="btn-group pull-right">
-			<a href="#{{entity.links.self}}/summary" class="btn btn-navbar">
-				<i class="fa fa-info"></i>
-			</a>
-		</div>
-
-	</div>
-	<div ng-if="entities.length == 0" class="list-group-item">
-		<h5 class="list-group-item-text text-center">{{'NO_ENTITIES_FOUND' | translate}}</h5>
-	</div>
-	<a ng-repeat="entry in entities" href="#{{entry.links.self}}"
-		class="list-group-item"> <i class="fa fa-chevron-right pull-right"></i>
-		<h4 class="list-group-item-heading">{{entry.name}}</h4>
-		<p class="list-group-item-text">
-			<i ng-if="entry.status == 'running'"
-				class="fa fa-circle text-success"></i> <i
-				ng-if="entry.status == 'Unknown'"
-				class="fa fa-exclamation text-warning"></i> <i
-				ng-if="entry.status == 'on-fire'" class="fa fa-fire text-danger"></i>
-			<i ng-if="entry.status == 'starting'" class="fa fa-circle text-info"></i>
-			{{entry.status | Capitalize}}
-		</p>
-	</a>
-</div>

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/js/templates/entitySummary.html
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/js/templates/entitySummary.html b/usage/jsgui/src/main/webapp/assets/mobile/js/templates/entitySummary.html
deleted file mode 100644
index 832700d..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/js/templates/entitySummary.html
+++ /dev/null
@@ -1,250 +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.
--->
-<div content-for="title">
-	<span ng-click="goBack()">{{entity.name}}</span>
-</div>
-<!-- Left icon -->
-<div content-for="left-control-nav-icon-left">
-	<div ng-click="toggle('mainSidebar')"
-		class="btn btn-navbar sidebar-toggle">
-		<i class="fa fa-cogs"></i>
-	</div>
-</div>
-
-<!-- Right icon -->
-<div content-for="right-control-nav-icon-right">
-	<div ng-click="toggle('rightSidebar')"
-		class="btn btn-navbar sidebar-toggle">
-		<i class="fa fa-list"></i>
-	</div>
-</div>
-
-<!-- Left navigation (effectors) -->
-<div content-for="left-control-nav">
-	<h2 class="app-name">&nbsp;</h2>
-	<div class="scrollable sidebar-scrollable">
-		<div class="scrollable-content">
-			<div class="list-group" toggle="off" bubble target="mainSidebar">
-				<a class="list-group-item" ng-repeat="effector in entity.effectors"
-					ng-click="executeEffector(effector.links.self); toggle('leftSidebar');" > <span ng-switch on="effector.name"> <i
-						ng-switch-when="restart" class="fa fa-refresh fa-2x"></i> <i
-						ng-switch-when="start" class="fa fa-play fa-2x"></i> <i
-						ng-switch-when="stop" class="fa fa-power-off fa-2x"></i> <i
-						ng-switch-when="resize" class="fa fa-arrows fa-2x"></i> <i
-						ng-switch-when="deploy" class="fa fa-cloud-upload fa-2x"></i> <i
-						ng-switch-when="undeploy" class="fa fa-cloud-download fa-2x"></i>
-						<i ng-switch-default class="fa fa-cloud fa-2x"></i>
-				</span> <span style="padding-left: 10px; font-size: 1.5em;">{{effector.name | Capitalize}}</span>
-				</a>
-			</div>
-
-		</div>
-	</div>
-</div>
-
-<div content-for="right-control-nav">
-	<h2 class="app-name">&nbsp;</h2>
-	<div class="scrollable sidebar-scrollable">
-		<div class="scrollable-content">
-			<div class="list-group" toggle="off" bubble target="rightSidebar">
-				<a class="list-group-item" href="" ng-click="selected = 'Summary'; toggle('rightSidebar')"> <span ng-switch
-					on="effector.name"> <i ng-switch-default
-						class="fa fa-bullseye fa-2x"></i>
-				</span> <span style="padding-left: 10px; font-size: 1.5em;">{{'E_DETIALS_SUMMARY' | translate}}</span>
-				</a> <a class="list-group-item" href="" ng-click="selected = 'Lifecycle'; toggle('rightSidebar')"> <span ng-switch
-					on="effector.name"> <i ng-switch-default
-						class="fa fa-sun-o fa-2x"></i>
-				</span> <span style="padding-left: 10px; font-size: 1.5em;">{{'E_DETIALS_LIFECYCLE' | translate}}</span>
-				</a> <a class="list-group-item" href="" ng-click="selected = 'Config'; toggle('rightSidebar')"> <span ng-switch
-					on="effector.name"> <i ng-switch-default
-						class="fa fa-cogs fa-2x"></i>
-				</span> <span style="padding-left: 10px; font-size: 1.5em;">{{'E_DETIALS_CONFIG' | translate}}</span>
-				</a> <a class="list-group-item" href="" ng-click="selected = 'Policies'; toggle('rightSidebar')"> <span ng-switch
-					on="effector.name"> <i ng-switch-default
-						class="fa fa-legal fa-2x"></i>
-				</span> <span style="padding-left: 10px; font-size: 1.5em;">{{'E_DETIALS_POLICIES' | translate}}</span>
-				</a> <a class="list-group-item" href="" ng-click="selected = 'Activities'; toggle('rightSidebar')"> <span ng-switch
-					on="effector.name"> <i ng-switch-default
-						class="fa fa-tasks fa-2x"></i>
-				</span> <span style="padding-left: 10px; font-size: 1.5em;">{{'E_DETIALS_ACTIVITIES' | translate}}</span>
-				</a>
-			</div>
-	
-		</div>
-	</div>
-</div>
-
-<!-- Entity Details/Summary -->
-
-<div class="scrollable" ng-init="selected = 'Summary'" >
-	<div class="scrollable-content section" ng-show="selected == 'Summary'">
-
-		<form action="" id="">
-
-			<div class="panel">
-				<div class="panel-heading">
-					<div class="panel-title">
-						<span>{{'E_DETIALS_SUMMARY' | translate}}</span>
-					</div>
-				</div>
-				<div class="panel-body">
-
-					<div class="block">
-						<label class="control-label">{{'E_SUMMARY_NAME' | translate}}</label> <input type="text"
-							ng-model="entity.name" placeholder="Name" class="form-control"
-							readonly>
-					</div>
-					<div class="block">
-						<label class="control-label">{{'E_SUMMARY_STATUS' | translate}}</label> <input type="text"
-							ng-model="entity.status" placeholder="Status"
-							class="form-control" readonly>
-					</div>
-					<div class="block">
-						<label class="control-label">{{'E_SUMMARY_SERVICE_UP' | translate}}</label> <input type="text"
-							ng-model="entity.isUp" placeholder="Service isUp"
-							class="form-control" readonly>
-					</div>
-
-					<div class="block">
-						<label class="control-label">{{'E_SUMMARY_TYPE' | translate}}</label> <input type="text"
-							ng-model="entity.type" placeholder="Type" class="form-control"
-							readonly>
-					</div>
-
-					<div class="block">
-						<label class="control-label">{{'E_SUMMARY_ID' | translate}}</label> <input type="text"
-							ng-model="entity.id" placeholder="Id" class="form-control"
-							readonly>
-					</div>
-
-				</div>
-				<br />
-				<br />
-
-				<div bs-panel class="form-actions">
-					<button class="btn btn-success btn-block" ng-click="goBack()">{{'E_DISMISS_BUTTON' | translate}}</button>
-				</div>
-			</div>
-		</form>
-	</div>
-	
-	<div class="scrollable-content section" ng-show="selected == 'Lifecycle'">
-
-			<div class="panel">
-				<div class="panel-heading">
-					<div class="panel-title">
-						<span>{{'E_DETIALS_LIFECYCLE' | translate}}</span>
-					</div>
-				</div>
-				<div class="panel-body">
-					<p> Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. </p>
-					<br/>
-					
-				</div>
-				<div bs-panel class="form-actions">
-					<button class="btn btn-danger btn-block" ng-click="expunge(); goBack();">Expunge</button>
-				</div>
-				<div bs-panel class="form-actions">
-					<button class="btn btn-success btn-block" ng-click="goBack()">{{'E_DISMISS_BUTTON' | translate}}</button>
-				</div>
-			</div>
-	</div>
-	<div class="scrollable-content section" ng-show="selected == 'Config'">
-
-			<div class="panel">
-				<div class="panel-heading">
-					<div class="panel-title">
-						<span>{{'E_DETIALS_CONFIG' | translate}}</span>
-					</div>
-				</div>
-				<div class="panel-body">
-					<br/>
-					<div ng-if="entity.config.length == 0">
-						<h5 class="list-group-item-text text-center">{{'E_DETIALS_NO_CONFIG_FOUND' | translate}}</h5>
-						<br/>
-					</div>
-					<div class="panel panel-default" ng-repeat="conf in entity.config | orderBy:'key'">
-					   <div class="panel-heading">
-					      <h4>{{conf.key | Capitalize}}</h4>
-					   </div>
-					   <div class="panel-body wrapword">
-					      {{conf.value}}
-					   </div>
-					</div>
-				</div>
-				<div bs-panel class="form-actions">
-					<button class="btn btn-success btn-block" ng-click="goBack()">{{'E_DISMISS_BUTTON' | translate}}</button>
-				</div>
-			</div>
-	</div>
-	<div class="scrollable-content section" ng-show="selected == 'Policies'">
-
-			<div class="panel">
-				<div class="panel-heading">
-					<div class="panel-title">
-						<span>{{'E_DETIALS_POLICIES' | translate}}</span>
-					</div>
-				</div>
-				<div class="panel-body">
-					<p> Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. </p>
-					<br/>
-
-				</div>
-				<div bs-panel class="form-actions">
-					<button class="btn btn-success btn-block" ng-click="goBack()">{{'E_DISMISS_BUTTON' | translate}}</button>
-				</div>
-				
-			</div>
-	</div>
-	<div class="scrollable-content section" ng-show="selected == 'Activities'">
-
-			<div class="panel">
-				<div class="panel-heading">
-					<div class="panel-title">
-						<span>{{'E_DETIALS_ACTIVITIES' | translate}}</span>
-					</div>
-				</div>
-				<div class="panel-body">
-					<!--<p> Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. </p>
-					--><br/>
-
-					<div ng-if="entity.activities.length == 0">
-						<h5 class="list-group-item-text text-center">{{'E_DETIALS_NO_ACTIVITIES_FOUND' | translate}}</h5>
-					</div>
-					<!-- <div class="panel panel-default" ng-repeat="activity in entity.activities" ng-if="activity.submittedByTask == null || (ctivity.submittedByTask != null && $filter('filter')($scope.entity.links.activities,{'id':activity.submittedByTask.metadata.id}).length) == 0"> -->
-					<div class="panel panel-default" ng-repeat="activity in entity.activities" ng-if ="isTopLevelActivity(activity)"> 
-					   <div class="panel-heading">
-					      <h4>{{activity.displayName | Capitalize}}</h4>
-					   </div>
-					   <!-- <div class="panel-body">
-					      Panel content
-					   </div> -->
-					   <table class="table">
-					      <tr><td>Submitted</td><td>{{activity.submitTimeUtc | date:'MM/dd/yyyy @ h:mma'}}</td></tr>
-					      <tr><td>Status</td><td>{{activity.currentStatus}}</td></tr>
-					   </table>
-					</div>
-
-				</div>
-				<div bs-panel class="form-actions">
-					<button class="btn btn-success btn-block" ng-click="goBack()">{{'E_DISMISS_BUTTON' | translate}}</button>
-				</div>
-			</div>
-	</div>
-</div>
\ No newline at end of file


[12/71] [abbrv] brooklyn-ui git commit: Move mobile app to sandbox

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fa-af.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fa-af.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fa-af.js
deleted file mode 100644
index c96ecde..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fa-af.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u0642\u0628\u0644\u200c\u0627\u0632\u0638\u0647\u0631",
-      "\u0628\u0639\u062f\u0627\u0632\u0638\u0647\u0631"
-    ],
-    "DAY": [
-      "\u06cc\u06a9\u0634\u0646\u0628\u0647",
-      "\u062f\u0648\u0634\u0646\u0628\u0647",
-      "\u0633\u0647\u200c\u0634\u0646\u0628\u0647",
-      "\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647",
-      "\u067e\u0646\u062c\u0634\u0646\u0628\u0647",
-      "\u062c\u0645\u0639\u0647",
-      "\u0634\u0646\u0628\u0647"
-    ],
-    "MONTH": [
-      "\u062c\u0646\u0648\u0631\u06cc",
-      "\u0641\u0628\u0631\u0648\u0631\u06cc",
-      "\u0645\u0627\u0631\u0686",
-      "\u0627\u067e\u0631\u06cc\u0644",
-      "\u0645\u06cc",
-      "\u062c\u0648\u0646",
-      "\u062c\u0648\u0644\u0627\u06cc",
-      "\u0627\u06af\u0633\u062a",
-      "\u0633\u067e\u062a\u0645\u0628\u0631",
-      "\u0627\u06a9\u062a\u0648\u0628\u0631",
-      "\u0646\u0648\u0645\u0628\u0631",
-      "\u062f\u0633\u0645\u0628\u0631"
-    ],
-    "SHORTDAY": [
-      "\u06cc\u06a9\u0634\u0646\u0628\u0647",
-      "\u062f\u0648\u0634\u0646\u0628\u0647",
-      "\u0633\u0647\u200c\u0634\u0646\u0628\u0647",
-      "\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647",
-      "\u067e\u0646\u062c\u0634\u0646\u0628\u0647",
-      "\u062c\u0645\u0639\u0647",
-      "\u0634\u0646\u0628\u0647"
-    ],
-    "SHORTMONTH": [
-      "\u062c\u0646\u0648",
-      "\u0641\u0648\u0631\u06cc\u0647\u0654",
-      "\u0645\u0627\u0631\u0633",
-      "\u0622\u0648\u0631\u06cc\u0644",
-      "\u0645\u0640\u06cc",
-      "\u0698\u0648\u0626\u0646",
-      "\u062c\u0648\u0644",
-      "\u0627\u0648\u062a",
-      "\u0633\u067e\u062a\u0627\u0645\u0628\u0631",
-      "\u0627\u06a9\u062a\u0628\u0631",
-      "\u0646\u0648\u0627\u0645\u0628\u0631",
-      "\u062f\u0633\u0645"
-    ],
-    "fullDate": "EEEE d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y H:mm:ss",
-    "mediumDate": "d MMM y",
-    "mediumTime": "H:mm:ss",
-    "short": "yyyy/M/d H:mm",
-    "shortDate": "yyyy/M/d",
-    "shortTime": "H:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "Rial",
-    "DECIMAL_SEP": "\u066b",
-    "GROUP_SEP": "\u066c",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "\u200e(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u200e\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "fa-af",
-  "pluralCat": function (n) {  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fa-ir.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fa-ir.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fa-ir.js
deleted file mode 100644
index 27099d7..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fa-ir.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u0642\u0628\u0644\u200c\u0627\u0632\u0638\u0647\u0631",
-      "\u0628\u0639\u062f\u0627\u0632\u0638\u0647\u0631"
-    ],
-    "DAY": [
-      "\u06cc\u06a9\u0634\u0646\u0628\u0647",
-      "\u062f\u0648\u0634\u0646\u0628\u0647",
-      "\u0633\u0647\u200c\u0634\u0646\u0628\u0647",
-      "\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647",
-      "\u067e\u0646\u062c\u0634\u0646\u0628\u0647",
-      "\u062c\u0645\u0639\u0647",
-      "\u0634\u0646\u0628\u0647"
-    ],
-    "MONTH": [
-      "\u0698\u0627\u0646\u0648\u06cc\u0647\u0654",
-      "\u0641\u0648\u0631\u06cc\u0647\u0654",
-      "\u0645\u0627\u0631\u0633",
-      "\u0622\u0648\u0631\u06cc\u0644",
-      "\u0645\u0647\u0654",
-      "\u0698\u0648\u0626\u0646",
-      "\u0698\u0648\u0626\u06cc\u0647\u0654",
-      "\u0627\u0648\u062a",
-      "\u0633\u067e\u062a\u0627\u0645\u0628\u0631",
-      "\u0627\u06a9\u062a\u0628\u0631",
-      "\u0646\u0648\u0627\u0645\u0628\u0631",
-      "\u062f\u0633\u0627\u0645\u0628\u0631"
-    ],
-    "SHORTDAY": [
-      "\u06cc\u06a9\u0634\u0646\u0628\u0647",
-      "\u062f\u0648\u0634\u0646\u0628\u0647",
-      "\u0633\u0647\u200c\u0634\u0646\u0628\u0647",
-      "\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647",
-      "\u067e\u0646\u062c\u0634\u0646\u0628\u0647",
-      "\u062c\u0645\u0639\u0647",
-      "\u0634\u0646\u0628\u0647"
-    ],
-    "SHORTMONTH": [
-      "\u0698\u0627\u0646\u0648\u06cc\u0647\u0654",
-      "\u0641\u0648\u0631\u06cc\u0647\u0654",
-      "\u0645\u0627\u0631\u0633",
-      "\u0622\u0648\u0631\u06cc\u0644",
-      "\u0645\u0647\u0654",
-      "\u0698\u0648\u0626\u0646",
-      "\u0698\u0648\u0626\u06cc\u0647\u0654",
-      "\u0627\u0648\u062a",
-      "\u0633\u067e\u062a\u0627\u0645\u0628\u0631",
-      "\u0627\u06a9\u062a\u0628\u0631",
-      "\u0646\u0648\u0627\u0645\u0628\u0631",
-      "\u062f\u0633\u0627\u0645\u0628\u0631"
-    ],
-    "fullDate": "EEEE d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y H:mm:ss",
-    "mediumDate": "d MMM y",
-    "mediumTime": "H:mm:ss",
-    "short": "yyyy/M/d H:mm",
-    "shortDate": "yyyy/M/d",
-    "shortTime": "H:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "Rial",
-    "DECIMAL_SEP": "\u066b",
-    "GROUP_SEP": "\u066c",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "\u200e(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u200e\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "fa-ir",
-  "pluralCat": function (n) {  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fa.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fa.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fa.js
deleted file mode 100644
index c94c6c1..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fa.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "\u0642\u0628\u0644\u200c\u0627\u0632\u0638\u0647\u0631",
-      "\u0628\u0639\u062f\u0627\u0632\u0638\u0647\u0631"
-    ],
-    "DAY": [
-      "\u06cc\u06a9\u0634\u0646\u0628\u0647",
-      "\u062f\u0648\u0634\u0646\u0628\u0647",
-      "\u0633\u0647\u200c\u0634\u0646\u0628\u0647",
-      "\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647",
-      "\u067e\u0646\u062c\u0634\u0646\u0628\u0647",
-      "\u062c\u0645\u0639\u0647",
-      "\u0634\u0646\u0628\u0647"
-    ],
-    "MONTH": [
-      "\u0698\u0627\u0646\u0648\u06cc\u0647\u0654",
-      "\u0641\u0648\u0631\u06cc\u0647\u0654",
-      "\u0645\u0627\u0631\u0633",
-      "\u0622\u0648\u0631\u06cc\u0644",
-      "\u0645\u0647\u0654",
-      "\u0698\u0648\u0626\u0646",
-      "\u0698\u0648\u0626\u06cc\u0647\u0654",
-      "\u0627\u0648\u062a",
-      "\u0633\u067e\u062a\u0627\u0645\u0628\u0631",
-      "\u0627\u06a9\u062a\u0628\u0631",
-      "\u0646\u0648\u0627\u0645\u0628\u0631",
-      "\u062f\u0633\u0627\u0645\u0628\u0631"
-    ],
-    "SHORTDAY": [
-      "\u06cc\u06a9\u0634\u0646\u0628\u0647",
-      "\u062f\u0648\u0634\u0646\u0628\u0647",
-      "\u0633\u0647\u200c\u0634\u0646\u0628\u0647",
-      "\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647",
-      "\u067e\u0646\u062c\u0634\u0646\u0628\u0647",
-      "\u062c\u0645\u0639\u0647",
-      "\u0634\u0646\u0628\u0647"
-    ],
-    "SHORTMONTH": [
-      "\u0698\u0627\u0646\u0648\u06cc\u0647\u0654",
-      "\u0641\u0648\u0631\u06cc\u0647\u0654",
-      "\u0645\u0627\u0631\u0633",
-      "\u0622\u0648\u0631\u06cc\u0644",
-      "\u0645\u0647\u0654",
-      "\u0698\u0648\u0626\u0646",
-      "\u0698\u0648\u0626\u06cc\u0647\u0654",
-      "\u0627\u0648\u062a",
-      "\u0633\u067e\u062a\u0627\u0645\u0628\u0631",
-      "\u0627\u06a9\u062a\u0628\u0631",
-      "\u0646\u0648\u0627\u0645\u0628\u0631",
-      "\u062f\u0633\u0627\u0645\u0628\u0631"
-    ],
-    "fullDate": "EEEE d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y H:mm:ss",
-    "mediumDate": "d MMM y",
-    "mediumTime": "H:mm:ss",
-    "short": "yyyy/M/d H:mm",
-    "shortDate": "yyyy/M/d",
-    "shortTime": "H:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "Rial",
-    "DECIMAL_SEP": "\u066b",
-    "GROUP_SEP": "\u066c",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "\u200e(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u200e\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "fa",
-  "pluralCat": function (n) {  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fi-fi.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fi-fi.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fi-fi.js
deleted file mode 100644
index 60c57d6..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fi-fi.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "ap.",
-      "ip."
-    ],
-    "DAY": [
-      "sunnuntaina",
-      "maanantaina",
-      "tiistaina",
-      "keskiviikkona",
-      "torstaina",
-      "perjantaina",
-      "lauantaina"
-    ],
-    "MONTH": [
-      "tammikuuta",
-      "helmikuuta",
-      "maaliskuuta",
-      "huhtikuuta",
-      "toukokuuta",
-      "kes\u00e4kuuta",
-      "hein\u00e4kuuta",
-      "elokuuta",
-      "syyskuuta",
-      "lokakuuta",
-      "marraskuuta",
-      "joulukuuta"
-    ],
-    "SHORTDAY": [
-      "su",
-      "ma",
-      "ti",
-      "ke",
-      "to",
-      "pe",
-      "la"
-    ],
-    "SHORTMONTH": [
-      "tammikuuta",
-      "helmikuuta",
-      "maaliskuuta",
-      "huhtikuuta",
-      "toukokuuta",
-      "kes\u00e4kuuta",
-      "hein\u00e4kuuta",
-      "elokuuta",
-      "syyskuuta",
-      "lokakuuta",
-      "marraskuuta",
-      "joulukuuta"
-    ],
-    "fullDate": "cccc, d. MMMM y",
-    "longDate": "d. MMMM y",
-    "medium": "d.M.yyyy H.mm.ss",
-    "mediumDate": "d.M.yyyy",
-    "mediumTime": "H.mm.ss",
-    "short": "d.M.yyyy H.mm",
-    "shortDate": "d.M.yyyy",
-    "shortTime": "H.mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "fi-fi",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fi.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fi.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fi.js
deleted file mode 100644
index 6570dde..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fi.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "ap.",
-      "ip."
-    ],
-    "DAY": [
-      "sunnuntaina",
-      "maanantaina",
-      "tiistaina",
-      "keskiviikkona",
-      "torstaina",
-      "perjantaina",
-      "lauantaina"
-    ],
-    "MONTH": [
-      "tammikuuta",
-      "helmikuuta",
-      "maaliskuuta",
-      "huhtikuuta",
-      "toukokuuta",
-      "kes\u00e4kuuta",
-      "hein\u00e4kuuta",
-      "elokuuta",
-      "syyskuuta",
-      "lokakuuta",
-      "marraskuuta",
-      "joulukuuta"
-    ],
-    "SHORTDAY": [
-      "su",
-      "ma",
-      "ti",
-      "ke",
-      "to",
-      "pe",
-      "la"
-    ],
-    "SHORTMONTH": [
-      "tammikuuta",
-      "helmikuuta",
-      "maaliskuuta",
-      "huhtikuuta",
-      "toukokuuta",
-      "kes\u00e4kuuta",
-      "hein\u00e4kuuta",
-      "elokuuta",
-      "syyskuuta",
-      "lokakuuta",
-      "marraskuuta",
-      "joulukuuta"
-    ],
-    "fullDate": "cccc, d. MMMM y",
-    "longDate": "d. MMMM y",
-    "medium": "d.M.yyyy H.mm.ss",
-    "mediumDate": "d.M.yyyy",
-    "mediumTime": "H.mm.ss",
-    "short": "d.M.yyyy H.mm",
-    "shortDate": "d.M.yyyy",
-    "shortTime": "H.mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "\u00a0\u00a4",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "fi",
-  "pluralCat": function (n) {  if (n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fil-ph.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fil-ph.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fil-ph.js
deleted file mode 100644
index 8873e5a..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fil-ph.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "Linggo",
-      "Lunes",
-      "Martes",
-      "Miyerkules",
-      "Huwebes",
-      "Biyernes",
-      "Sabado"
-    ],
-    "MONTH": [
-      "Enero",
-      "Pebrero",
-      "Marso",
-      "Abril",
-      "Mayo",
-      "Hunyo",
-      "Hulyo",
-      "Agosto",
-      "Setyembre",
-      "Oktubre",
-      "Nobyembre",
-      "Disyembre"
-    ],
-    "SHORTDAY": [
-      "Lin",
-      "Lun",
-      "Mar",
-      "Mye",
-      "Huw",
-      "Bye",
-      "Sab"
-    ],
-    "SHORTMONTH": [
-      "Ene",
-      "Peb",
-      "Mar",
-      "Abr",
-      "May",
-      "Hun",
-      "Hul",
-      "Ago",
-      "Set",
-      "Okt",
-      "Nob",
-      "Dis"
-    ],
-    "fullDate": "EEEE, MMMM dd y",
-    "longDate": "MMMM d, y",
-    "medium": "MMM d, y HH:mm:ss",
-    "mediumDate": "MMM d, y",
-    "mediumTime": "HH:mm:ss",
-    "short": "M/d/yy HH:mm",
-    "shortDate": "M/d/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20b1",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "fil-ph",
-  "pluralCat": function (n) {  if (n == 0 || n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fil.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fil.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fil.js
deleted file mode 100644
index 893e768..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fil.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "Linggo",
-      "Lunes",
-      "Martes",
-      "Miyerkules",
-      "Huwebes",
-      "Biyernes",
-      "Sabado"
-    ],
-    "MONTH": [
-      "Enero",
-      "Pebrero",
-      "Marso",
-      "Abril",
-      "Mayo",
-      "Hunyo",
-      "Hulyo",
-      "Agosto",
-      "Setyembre",
-      "Oktubre",
-      "Nobyembre",
-      "Disyembre"
-    ],
-    "SHORTDAY": [
-      "Lin",
-      "Lun",
-      "Mar",
-      "Mye",
-      "Huw",
-      "Bye",
-      "Sab"
-    ],
-    "SHORTMONTH": [
-      "Ene",
-      "Peb",
-      "Mar",
-      "Abr",
-      "May",
-      "Hun",
-      "Hul",
-      "Ago",
-      "Set",
-      "Okt",
-      "Nob",
-      "Dis"
-    ],
-    "fullDate": "EEEE, MMMM dd y",
-    "longDate": "MMMM d, y",
-    "medium": "MMM d, y HH:mm:ss",
-    "mediumDate": "MMM d, y",
-    "mediumTime": "HH:mm:ss",
-    "short": "M/d/yy HH:mm",
-    "shortDate": "M/d/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20b1",
-    "DECIMAL_SEP": ".",
-    "GROUP_SEP": ",",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(\u00a4",
-        "negSuf": ")",
-        "posPre": "\u00a4",
-        "posSuf": ""
-      }
-    ]
-  },
-  "id": "fil",
-  "pluralCat": function (n) {  if (n == 0 || n == 1) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-be.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-be.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-be.js
deleted file mode 100644
index 7de5ef7..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-be.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "dimanche",
-      "lundi",
-      "mardi",
-      "mercredi",
-      "jeudi",
-      "vendredi",
-      "samedi"
-    ],
-    "MONTH": [
-      "janvier",
-      "f\u00e9vrier",
-      "mars",
-      "avril",
-      "mai",
-      "juin",
-      "juillet",
-      "ao\u00fbt",
-      "septembre",
-      "octobre",
-      "novembre",
-      "d\u00e9cembre"
-    ],
-    "SHORTDAY": [
-      "dim.",
-      "lun.",
-      "mar.",
-      "mer.",
-      "jeu.",
-      "ven.",
-      "sam."
-    ],
-    "SHORTMONTH": [
-      "janv.",
-      "f\u00e9vr.",
-      "mars",
-      "avr.",
-      "mai",
-      "juin",
-      "juil.",
-      "ao\u00fbt",
-      "sept.",
-      "oct.",
-      "nov.",
-      "d\u00e9c."
-    ],
-    "fullDate": "EEEE d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y HH:mm:ss",
-    "mediumDate": "d MMM y",
-    "mediumTime": "HH:mm:ss",
-    "short": "d/MM/yy HH:mm",
-    "shortDate": "d/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(",
-        "negSuf": "\u00a0\u00a4)",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "fr-be",
-  "pluralCat": function (n) {  if (n >= 0 && n <= 2 && n != 2) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-bf.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-bf.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-bf.js
deleted file mode 100644
index d158381..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-bf.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "dimanche",
-      "lundi",
-      "mardi",
-      "mercredi",
-      "jeudi",
-      "vendredi",
-      "samedi"
-    ],
-    "MONTH": [
-      "janvier",
-      "f\u00e9vrier",
-      "mars",
-      "avril",
-      "mai",
-      "juin",
-      "juillet",
-      "ao\u00fbt",
-      "septembre",
-      "octobre",
-      "novembre",
-      "d\u00e9cembre"
-    ],
-    "SHORTDAY": [
-      "dim.",
-      "lun.",
-      "mar.",
-      "mer.",
-      "jeu.",
-      "ven.",
-      "sam."
-    ],
-    "SHORTMONTH": [
-      "janv.",
-      "f\u00e9vr.",
-      "mars",
-      "avr.",
-      "mai",
-      "juin",
-      "juil.",
-      "ao\u00fbt",
-      "sept.",
-      "oct.",
-      "nov.",
-      "d\u00e9c."
-    ],
-    "fullDate": "EEEE d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y HH:mm:ss",
-    "mediumDate": "d MMM y",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(",
-        "negSuf": "\u00a0\u00a4)",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "fr-bf",
-  "pluralCat": function (n) {  if (n >= 0 && n <= 2 && n != 2) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-bi.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-bi.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-bi.js
deleted file mode 100644
index 8fe8736..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-bi.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "dimanche",
-      "lundi",
-      "mardi",
-      "mercredi",
-      "jeudi",
-      "vendredi",
-      "samedi"
-    ],
-    "MONTH": [
-      "janvier",
-      "f\u00e9vrier",
-      "mars",
-      "avril",
-      "mai",
-      "juin",
-      "juillet",
-      "ao\u00fbt",
-      "septembre",
-      "octobre",
-      "novembre",
-      "d\u00e9cembre"
-    ],
-    "SHORTDAY": [
-      "dim.",
-      "lun.",
-      "mar.",
-      "mer.",
-      "jeu.",
-      "ven.",
-      "sam."
-    ],
-    "SHORTMONTH": [
-      "janv.",
-      "f\u00e9vr.",
-      "mars",
-      "avr.",
-      "mai",
-      "juin",
-      "juil.",
-      "ao\u00fbt",
-      "sept.",
-      "oct.",
-      "nov.",
-      "d\u00e9c."
-    ],
-    "fullDate": "EEEE d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y HH:mm:ss",
-    "mediumDate": "d MMM y",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(",
-        "negSuf": "\u00a0\u00a4)",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "fr-bi",
-  "pluralCat": function (n) {  if (n >= 0 && n <= 2 && n != 2) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-bj.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-bj.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-bj.js
deleted file mode 100644
index d5be5b8..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-bj.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "dimanche",
-      "lundi",
-      "mardi",
-      "mercredi",
-      "jeudi",
-      "vendredi",
-      "samedi"
-    ],
-    "MONTH": [
-      "janvier",
-      "f\u00e9vrier",
-      "mars",
-      "avril",
-      "mai",
-      "juin",
-      "juillet",
-      "ao\u00fbt",
-      "septembre",
-      "octobre",
-      "novembre",
-      "d\u00e9cembre"
-    ],
-    "SHORTDAY": [
-      "dim.",
-      "lun.",
-      "mar.",
-      "mer.",
-      "jeu.",
-      "ven.",
-      "sam."
-    ],
-    "SHORTMONTH": [
-      "janv.",
-      "f\u00e9vr.",
-      "mars",
-      "avr.",
-      "mai",
-      "juin",
-      "juil.",
-      "ao\u00fbt",
-      "sept.",
-      "oct.",
-      "nov.",
-      "d\u00e9c."
-    ],
-    "fullDate": "EEEE d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y HH:mm:ss",
-    "mediumDate": "d MMM y",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(",
-        "negSuf": "\u00a0\u00a4)",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "fr-bj",
-  "pluralCat": function (n) {  if (n >= 0 && n <= 2 && n != 2) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-bl.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-bl.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-bl.js
deleted file mode 100644
index 73abcdd..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-bl.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "dimanche",
-      "lundi",
-      "mardi",
-      "mercredi",
-      "jeudi",
-      "vendredi",
-      "samedi"
-    ],
-    "MONTH": [
-      "janvier",
-      "f\u00e9vrier",
-      "mars",
-      "avril",
-      "mai",
-      "juin",
-      "juillet",
-      "ao\u00fbt",
-      "septembre",
-      "octobre",
-      "novembre",
-      "d\u00e9cembre"
-    ],
-    "SHORTDAY": [
-      "dim.",
-      "lun.",
-      "mar.",
-      "mer.",
-      "jeu.",
-      "ven.",
-      "sam."
-    ],
-    "SHORTMONTH": [
-      "janv.",
-      "f\u00e9vr.",
-      "mars",
-      "avr.",
-      "mai",
-      "juin",
-      "juil.",
-      "ao\u00fbt",
-      "sept.",
-      "oct.",
-      "nov.",
-      "d\u00e9c."
-    ],
-    "fullDate": "EEEE d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y HH:mm:ss",
-    "mediumDate": "d MMM y",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(",
-        "negSuf": "\u00a0\u00a4)",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "fr-bl",
-  "pluralCat": function (n) {  if (n >= 0 && n <= 2 && n != 2) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ca.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ca.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ca.js
deleted file mode 100644
index 04fd552..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ca.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "dimanche",
-      "lundi",
-      "mardi",
-      "mercredi",
-      "jeudi",
-      "vendredi",
-      "samedi"
-    ],
-    "MONTH": [
-      "janvier",
-      "f\u00e9vrier",
-      "mars",
-      "avril",
-      "mai",
-      "juin",
-      "juillet",
-      "ao\u00fbt",
-      "septembre",
-      "octobre",
-      "novembre",
-      "d\u00e9cembre"
-    ],
-    "SHORTDAY": [
-      "dim.",
-      "lun.",
-      "mar.",
-      "mer.",
-      "jeu.",
-      "ven.",
-      "sam."
-    ],
-    "SHORTMONTH": [
-      "janv.",
-      "f\u00e9vr.",
-      "mars",
-      "avr.",
-      "mai",
-      "juin",
-      "juil.",
-      "ao\u00fbt",
-      "sept.",
-      "oct.",
-      "nov.",
-      "d\u00e9c."
-    ],
-    "fullDate": "EEEE d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "yyyy-MM-dd HH:mm:ss",
-    "mediumDate": "yyyy-MM-dd",
-    "mediumTime": "HH:mm:ss",
-    "short": "yy-MM-dd HH:mm",
-    "shortDate": "yy-MM-dd",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "$",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(",
-        "negSuf": "\u00a0\u00a4)",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "fr-ca",
-  "pluralCat": function (n) {  if (n >= 0 && n <= 2 && n != 2) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-cd.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-cd.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-cd.js
deleted file mode 100644
index 996c7f5..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-cd.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "dimanche",
-      "lundi",
-      "mardi",
-      "mercredi",
-      "jeudi",
-      "vendredi",
-      "samedi"
-    ],
-    "MONTH": [
-      "janvier",
-      "f\u00e9vrier",
-      "mars",
-      "avril",
-      "mai",
-      "juin",
-      "juillet",
-      "ao\u00fbt",
-      "septembre",
-      "octobre",
-      "novembre",
-      "d\u00e9cembre"
-    ],
-    "SHORTDAY": [
-      "dim.",
-      "lun.",
-      "mar.",
-      "mer.",
-      "jeu.",
-      "ven.",
-      "sam."
-    ],
-    "SHORTMONTH": [
-      "janv.",
-      "f\u00e9vr.",
-      "mars",
-      "avr.",
-      "mai",
-      "juin",
-      "juil.",
-      "ao\u00fbt",
-      "sept.",
-      "oct.",
-      "nov.",
-      "d\u00e9c."
-    ],
-    "fullDate": "EEEE d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y HH:mm:ss",
-    "mediumDate": "d MMM y",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(",
-        "negSuf": "\u00a0\u00a4)",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "fr-cd",
-  "pluralCat": function (n) {  if (n >= 0 && n <= 2 && n != 2) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-cf.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-cf.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-cf.js
deleted file mode 100644
index 614add5..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-cf.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "dimanche",
-      "lundi",
-      "mardi",
-      "mercredi",
-      "jeudi",
-      "vendredi",
-      "samedi"
-    ],
-    "MONTH": [
-      "janvier",
-      "f\u00e9vrier",
-      "mars",
-      "avril",
-      "mai",
-      "juin",
-      "juillet",
-      "ao\u00fbt",
-      "septembre",
-      "octobre",
-      "novembre",
-      "d\u00e9cembre"
-    ],
-    "SHORTDAY": [
-      "dim.",
-      "lun.",
-      "mar.",
-      "mer.",
-      "jeu.",
-      "ven.",
-      "sam."
-    ],
-    "SHORTMONTH": [
-      "janv.",
-      "f\u00e9vr.",
-      "mars",
-      "avr.",
-      "mai",
-      "juin",
-      "juil.",
-      "ao\u00fbt",
-      "sept.",
-      "oct.",
-      "nov.",
-      "d\u00e9c."
-    ],
-    "fullDate": "EEEE d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y HH:mm:ss",
-    "mediumDate": "d MMM y",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(",
-        "negSuf": "\u00a0\u00a4)",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "fr-cf",
-  "pluralCat": function (n) {  if (n >= 0 && n <= 2 && n != 2) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-cg.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-cg.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-cg.js
deleted file mode 100644
index 9431c2c..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-cg.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "dimanche",
-      "lundi",
-      "mardi",
-      "mercredi",
-      "jeudi",
-      "vendredi",
-      "samedi"
-    ],
-    "MONTH": [
-      "janvier",
-      "f\u00e9vrier",
-      "mars",
-      "avril",
-      "mai",
-      "juin",
-      "juillet",
-      "ao\u00fbt",
-      "septembre",
-      "octobre",
-      "novembre",
-      "d\u00e9cembre"
-    ],
-    "SHORTDAY": [
-      "dim.",
-      "lun.",
-      "mar.",
-      "mer.",
-      "jeu.",
-      "ven.",
-      "sam."
-    ],
-    "SHORTMONTH": [
-      "janv.",
-      "f\u00e9vr.",
-      "mars",
-      "avr.",
-      "mai",
-      "juin",
-      "juil.",
-      "ao\u00fbt",
-      "sept.",
-      "oct.",
-      "nov.",
-      "d\u00e9c."
-    ],
-    "fullDate": "EEEE d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y HH:mm:ss",
-    "mediumDate": "d MMM y",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(",
-        "negSuf": "\u00a0\u00a4)",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "fr-cg",
-  "pluralCat": function (n) {  if (n >= 0 && n <= 2 && n != 2) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ch.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ch.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ch.js
deleted file mode 100644
index 6a47fb0..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ch.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "dimanche",
-      "lundi",
-      "mardi",
-      "mercredi",
-      "jeudi",
-      "vendredi",
-      "samedi"
-    ],
-    "MONTH": [
-      "janvier",
-      "f\u00e9vrier",
-      "mars",
-      "avril",
-      "mai",
-      "juin",
-      "juillet",
-      "ao\u00fbt",
-      "septembre",
-      "octobre",
-      "novembre",
-      "d\u00e9cembre"
-    ],
-    "SHORTDAY": [
-      "dim.",
-      "lun.",
-      "mar.",
-      "mer.",
-      "jeu.",
-      "ven.",
-      "sam."
-    ],
-    "SHORTMONTH": [
-      "janv.",
-      "f\u00e9vr.",
-      "mars",
-      "avr.",
-      "mai",
-      "juin",
-      "juil.",
-      "ao\u00fbt",
-      "sept.",
-      "oct.",
-      "nov.",
-      "d\u00e9c."
-    ],
-    "fullDate": "EEEE, d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y HH:mm:ss",
-    "mediumDate": "d MMM y",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd.MM.yy HH:mm",
-    "shortDate": "dd.MM.yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(",
-        "negSuf": "\u00a0\u00a4)",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "fr-ch",
-  "pluralCat": function (n) {  if (n >= 0 && n <= 2 && n != 2) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ci.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ci.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ci.js
deleted file mode 100644
index 7ba2130..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ci.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "dimanche",
-      "lundi",
-      "mardi",
-      "mercredi",
-      "jeudi",
-      "vendredi",
-      "samedi"
-    ],
-    "MONTH": [
-      "janvier",
-      "f\u00e9vrier",
-      "mars",
-      "avril",
-      "mai",
-      "juin",
-      "juillet",
-      "ao\u00fbt",
-      "septembre",
-      "octobre",
-      "novembre",
-      "d\u00e9cembre"
-    ],
-    "SHORTDAY": [
-      "dim.",
-      "lun.",
-      "mar.",
-      "mer.",
-      "jeu.",
-      "ven.",
-      "sam."
-    ],
-    "SHORTMONTH": [
-      "janv.",
-      "f\u00e9vr.",
-      "mars",
-      "avr.",
-      "mai",
-      "juin",
-      "juil.",
-      "ao\u00fbt",
-      "sept.",
-      "oct.",
-      "nov.",
-      "d\u00e9c."
-    ],
-    "fullDate": "EEEE d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y HH:mm:ss",
-    "mediumDate": "d MMM y",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(",
-        "negSuf": "\u00a0\u00a4)",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "fr-ci",
-  "pluralCat": function (n) {  if (n >= 0 && n <= 2 && n != 2) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-cm.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-cm.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-cm.js
deleted file mode 100644
index ef8e7de..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-cm.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "dimanche",
-      "lundi",
-      "mardi",
-      "mercredi",
-      "jeudi",
-      "vendredi",
-      "samedi"
-    ],
-    "MONTH": [
-      "janvier",
-      "f\u00e9vrier",
-      "mars",
-      "avril",
-      "mai",
-      "juin",
-      "juillet",
-      "ao\u00fbt",
-      "septembre",
-      "octobre",
-      "novembre",
-      "d\u00e9cembre"
-    ],
-    "SHORTDAY": [
-      "dim.",
-      "lun.",
-      "mar.",
-      "mer.",
-      "jeu.",
-      "ven.",
-      "sam."
-    ],
-    "SHORTMONTH": [
-      "janv.",
-      "f\u00e9vr.",
-      "mars",
-      "avr.",
-      "mai",
-      "juin",
-      "juil.",
-      "ao\u00fbt",
-      "sept.",
-      "oct.",
-      "nov.",
-      "d\u00e9c."
-    ],
-    "fullDate": "EEEE d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y HH:mm:ss",
-    "mediumDate": "d MMM y",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(",
-        "negSuf": "\u00a0\u00a4)",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "fr-cm",
-  "pluralCat": function (n) {  if (n >= 0 && n <= 2 && n != 2) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-dj.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-dj.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-dj.js
deleted file mode 100644
index 052750c..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-dj.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "dimanche",
-      "lundi",
-      "mardi",
-      "mercredi",
-      "jeudi",
-      "vendredi",
-      "samedi"
-    ],
-    "MONTH": [
-      "janvier",
-      "f\u00e9vrier",
-      "mars",
-      "avril",
-      "mai",
-      "juin",
-      "juillet",
-      "ao\u00fbt",
-      "septembre",
-      "octobre",
-      "novembre",
-      "d\u00e9cembre"
-    ],
-    "SHORTDAY": [
-      "dim.",
-      "lun.",
-      "mar.",
-      "mer.",
-      "jeu.",
-      "ven.",
-      "sam."
-    ],
-    "SHORTMONTH": [
-      "janv.",
-      "f\u00e9vr.",
-      "mars",
-      "avr.",
-      "mai",
-      "juin",
-      "juil.",
-      "ao\u00fbt",
-      "sept.",
-      "oct.",
-      "nov.",
-      "d\u00e9c."
-    ],
-    "fullDate": "EEEE d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y HH:mm:ss",
-    "mediumDate": "d MMM y",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(",
-        "negSuf": "\u00a0\u00a4)",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "fr-dj",
-  "pluralCat": function (n) {  if (n >= 0 && n <= 2 && n != 2) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-fr.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-fr.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-fr.js
deleted file mode 100644
index 8e38aa0..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-fr.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "dimanche",
-      "lundi",
-      "mardi",
-      "mercredi",
-      "jeudi",
-      "vendredi",
-      "samedi"
-    ],
-    "MONTH": [
-      "janvier",
-      "f\u00e9vrier",
-      "mars",
-      "avril",
-      "mai",
-      "juin",
-      "juillet",
-      "ao\u00fbt",
-      "septembre",
-      "octobre",
-      "novembre",
-      "d\u00e9cembre"
-    ],
-    "SHORTDAY": [
-      "dim.",
-      "lun.",
-      "mar.",
-      "mer.",
-      "jeu.",
-      "ven.",
-      "sam."
-    ],
-    "SHORTMONTH": [
-      "janv.",
-      "f\u00e9vr.",
-      "mars",
-      "avr.",
-      "mai",
-      "juin",
-      "juil.",
-      "ao\u00fbt",
-      "sept.",
-      "oct.",
-      "nov.",
-      "d\u00e9c."
-    ],
-    "fullDate": "EEEE d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y HH:mm:ss",
-    "mediumDate": "d MMM y",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(",
-        "negSuf": "\u00a0\u00a4)",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "fr-fr",
-  "pluralCat": function (n) {  if (n >= 0 && n <= 2 && n != 2) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ga.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ga.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ga.js
deleted file mode 100644
index a732c27..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ga.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "dimanche",
-      "lundi",
-      "mardi",
-      "mercredi",
-      "jeudi",
-      "vendredi",
-      "samedi"
-    ],
-    "MONTH": [
-      "janvier",
-      "f\u00e9vrier",
-      "mars",
-      "avril",
-      "mai",
-      "juin",
-      "juillet",
-      "ao\u00fbt",
-      "septembre",
-      "octobre",
-      "novembre",
-      "d\u00e9cembre"
-    ],
-    "SHORTDAY": [
-      "dim.",
-      "lun.",
-      "mar.",
-      "mer.",
-      "jeu.",
-      "ven.",
-      "sam."
-    ],
-    "SHORTMONTH": [
-      "janv.",
-      "f\u00e9vr.",
-      "mars",
-      "avr.",
-      "mai",
-      "juin",
-      "juil.",
-      "ao\u00fbt",
-      "sept.",
-      "oct.",
-      "nov.",
-      "d\u00e9c."
-    ],
-    "fullDate": "EEEE d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y HH:mm:ss",
-    "mediumDate": "d MMM y",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(",
-        "negSuf": "\u00a0\u00a4)",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "fr-ga",
-  "pluralCat": function (n) {  if (n >= 0 && n <= 2 && n != 2) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-gf.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-gf.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-gf.js
deleted file mode 100644
index 3ef7c4a..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-gf.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "dimanche",
-      "lundi",
-      "mardi",
-      "mercredi",
-      "jeudi",
-      "vendredi",
-      "samedi"
-    ],
-    "MONTH": [
-      "janvier",
-      "f\u00e9vrier",
-      "mars",
-      "avril",
-      "mai",
-      "juin",
-      "juillet",
-      "ao\u00fbt",
-      "septembre",
-      "octobre",
-      "novembre",
-      "d\u00e9cembre"
-    ],
-    "SHORTDAY": [
-      "dim.",
-      "lun.",
-      "mar.",
-      "mer.",
-      "jeu.",
-      "ven.",
-      "sam."
-    ],
-    "SHORTMONTH": [
-      "janv.",
-      "f\u00e9vr.",
-      "mars",
-      "avr.",
-      "mai",
-      "juin",
-      "juil.",
-      "ao\u00fbt",
-      "sept.",
-      "oct.",
-      "nov.",
-      "d\u00e9c."
-    ],
-    "fullDate": "EEEE d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y HH:mm:ss",
-    "mediumDate": "d MMM y",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(",
-        "negSuf": "\u00a0\u00a4)",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "fr-gf",
-  "pluralCat": function (n) {  if (n >= 0 && n <= 2 && n != 2) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-gn.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-gn.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-gn.js
deleted file mode 100644
index a239cc8..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-gn.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "dimanche",
-      "lundi",
-      "mardi",
-      "mercredi",
-      "jeudi",
-      "vendredi",
-      "samedi"
-    ],
-    "MONTH": [
-      "janvier",
-      "f\u00e9vrier",
-      "mars",
-      "avril",
-      "mai",
-      "juin",
-      "juillet",
-      "ao\u00fbt",
-      "septembre",
-      "octobre",
-      "novembre",
-      "d\u00e9cembre"
-    ],
-    "SHORTDAY": [
-      "dim.",
-      "lun.",
-      "mar.",
-      "mer.",
-      "jeu.",
-      "ven.",
-      "sam."
-    ],
-    "SHORTMONTH": [
-      "janv.",
-      "f\u00e9vr.",
-      "mars",
-      "avr.",
-      "mai",
-      "juin",
-      "juil.",
-      "ao\u00fbt",
-      "sept.",
-      "oct.",
-      "nov.",
-      "d\u00e9c."
-    ],
-    "fullDate": "EEEE d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y HH:mm:ss",
-    "mediumDate": "d MMM y",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(",
-        "negSuf": "\u00a0\u00a4)",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "fr-gn",
-  "pluralCat": function (n) {  if (n >= 0 && n <= 2 && n != 2) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-gp.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-gp.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-gp.js
deleted file mode 100644
index 7e00d06..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-gp.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "dimanche",
-      "lundi",
-      "mardi",
-      "mercredi",
-      "jeudi",
-      "vendredi",
-      "samedi"
-    ],
-    "MONTH": [
-      "janvier",
-      "f\u00e9vrier",
-      "mars",
-      "avril",
-      "mai",
-      "juin",
-      "juillet",
-      "ao\u00fbt",
-      "septembre",
-      "octobre",
-      "novembre",
-      "d\u00e9cembre"
-    ],
-    "SHORTDAY": [
-      "dim.",
-      "lun.",
-      "mar.",
-      "mer.",
-      "jeu.",
-      "ven.",
-      "sam."
-    ],
-    "SHORTMONTH": [
-      "janv.",
-      "f\u00e9vr.",
-      "mars",
-      "avr.",
-      "mai",
-      "juin",
-      "juil.",
-      "ao\u00fbt",
-      "sept.",
-      "oct.",
-      "nov.",
-      "d\u00e9c."
-    ],
-    "fullDate": "EEEE d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y HH:mm:ss",
-    "mediumDate": "d MMM y",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(",
-        "negSuf": "\u00a0\u00a4)",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "fr-gp",
-  "pluralCat": function (n) {  if (n >= 0 && n <= 2 && n != 2) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-gq.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-gq.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-gq.js
deleted file mode 100644
index 107f5ff..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-gq.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "dimanche",
-      "lundi",
-      "mardi",
-      "mercredi",
-      "jeudi",
-      "vendredi",
-      "samedi"
-    ],
-    "MONTH": [
-      "janvier",
-      "f\u00e9vrier",
-      "mars",
-      "avril",
-      "mai",
-      "juin",
-      "juillet",
-      "ao\u00fbt",
-      "septembre",
-      "octobre",
-      "novembre",
-      "d\u00e9cembre"
-    ],
-    "SHORTDAY": [
-      "dim.",
-      "lun.",
-      "mar.",
-      "mer.",
-      "jeu.",
-      "ven.",
-      "sam."
-    ],
-    "SHORTMONTH": [
-      "janv.",
-      "f\u00e9vr.",
-      "mars",
-      "avr.",
-      "mai",
-      "juin",
-      "juil.",
-      "ao\u00fbt",
-      "sept.",
-      "oct.",
-      "nov.",
-      "d\u00e9c."
-    ],
-    "fullDate": "EEEE d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y HH:mm:ss",
-    "mediumDate": "d MMM y",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(",
-        "negSuf": "\u00a0\u00a4)",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "fr-gq",
-  "pluralCat": function (n) {  if (n >= 0 && n <= 2 && n != 2) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-km.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-km.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-km.js
deleted file mode 100644
index 8e17c22..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-km.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "dimanche",
-      "lundi",
-      "mardi",
-      "mercredi",
-      "jeudi",
-      "vendredi",
-      "samedi"
-    ],
-    "MONTH": [
-      "janvier",
-      "f\u00e9vrier",
-      "mars",
-      "avril",
-      "mai",
-      "juin",
-      "juillet",
-      "ao\u00fbt",
-      "septembre",
-      "octobre",
-      "novembre",
-      "d\u00e9cembre"
-    ],
-    "SHORTDAY": [
-      "dim.",
-      "lun.",
-      "mar.",
-      "mer.",
-      "jeu.",
-      "ven.",
-      "sam."
-    ],
-    "SHORTMONTH": [
-      "janv.",
-      "f\u00e9vr.",
-      "mars",
-      "avr.",
-      "mai",
-      "juin",
-      "juil.",
-      "ao\u00fbt",
-      "sept.",
-      "oct.",
-      "nov.",
-      "d\u00e9c."
-    ],
-    "fullDate": "EEEE d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y HH:mm:ss",
-    "mediumDate": "d MMM y",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(",
-        "negSuf": "\u00a0\u00a4)",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "fr-km",
-  "pluralCat": function (n) {  if (n >= 0 && n <= 2 && n != 2) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-lu.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-lu.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-lu.js
deleted file mode 100644
index 86f1a7c..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-lu.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "dimanche",
-      "lundi",
-      "mardi",
-      "mercredi",
-      "jeudi",
-      "vendredi",
-      "samedi"
-    ],
-    "MONTH": [
-      "janvier",
-      "f\u00e9vrier",
-      "mars",
-      "avril",
-      "mai",
-      "juin",
-      "juillet",
-      "ao\u00fbt",
-      "septembre",
-      "octobre",
-      "novembre",
-      "d\u00e9cembre"
-    ],
-    "SHORTDAY": [
-      "dim.",
-      "lun.",
-      "mar.",
-      "mer.",
-      "jeu.",
-      "ven.",
-      "sam."
-    ],
-    "SHORTMONTH": [
-      "janv.",
-      "f\u00e9vr.",
-      "mars",
-      "avr.",
-      "mai",
-      "juin",
-      "juil.",
-      "ao\u00fbt",
-      "sept.",
-      "oct.",
-      "nov.",
-      "d\u00e9c."
-    ],
-    "fullDate": "EEEE d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y HH:mm:ss",
-    "mediumDate": "d MMM y",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(",
-        "negSuf": "\u00a0\u00a4)",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "fr-lu",
-  "pluralCat": function (n) {  if (n >= 0 && n <= 2 && n != 2) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-mc.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-mc.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-mc.js
deleted file mode 100644
index 3fb2bc8..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-mc.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "dimanche",
-      "lundi",
-      "mardi",
-      "mercredi",
-      "jeudi",
-      "vendredi",
-      "samedi"
-    ],
-    "MONTH": [
-      "janvier",
-      "f\u00e9vrier",
-      "mars",
-      "avril",
-      "mai",
-      "juin",
-      "juillet",
-      "ao\u00fbt",
-      "septembre",
-      "octobre",
-      "novembre",
-      "d\u00e9cembre"
-    ],
-    "SHORTDAY": [
-      "dim.",
-      "lun.",
-      "mar.",
-      "mer.",
-      "jeu.",
-      "ven.",
-      "sam."
-    ],
-    "SHORTMONTH": [
-      "janv.",
-      "f\u00e9vr.",
-      "mars",
-      "avr.",
-      "mai",
-      "juin",
-      "juil.",
-      "ao\u00fbt",
-      "sept.",
-      "oct.",
-      "nov.",
-      "d\u00e9c."
-    ],
-    "fullDate": "EEEE d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y HH:mm:ss",
-    "mediumDate": "d MMM y",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(",
-        "negSuf": "\u00a0\u00a4)",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "fr-mc",
-  "pluralCat": function (n) {  if (n >= 0 && n <= 2 && n != 2) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-mf.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-mf.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-mf.js
deleted file mode 100644
index 6e35abe..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-mf.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "dimanche",
-      "lundi",
-      "mardi",
-      "mercredi",
-      "jeudi",
-      "vendredi",
-      "samedi"
-    ],
-    "MONTH": [
-      "janvier",
-      "f\u00e9vrier",
-      "mars",
-      "avril",
-      "mai",
-      "juin",
-      "juillet",
-      "ao\u00fbt",
-      "septembre",
-      "octobre",
-      "novembre",
-      "d\u00e9cembre"
-    ],
-    "SHORTDAY": [
-      "dim.",
-      "lun.",
-      "mar.",
-      "mer.",
-      "jeu.",
-      "ven.",
-      "sam."
-    ],
-    "SHORTMONTH": [
-      "janv.",
-      "f\u00e9vr.",
-      "mars",
-      "avr.",
-      "mai",
-      "juin",
-      "juil.",
-      "ao\u00fbt",
-      "sept.",
-      "oct.",
-      "nov.",
-      "d\u00e9c."
-    ],
-    "fullDate": "EEEE d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y HH:mm:ss",
-    "mediumDate": "d MMM y",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(",
-        "negSuf": "\u00a0\u00a4)",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "fr-mf",
-  "pluralCat": function (n) {  if (n >= 0 && n <= 2 && n != 2) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/2a6fa4ed/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-mg.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-mg.js b/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-mg.js
deleted file mode 100644
index 35e8308..0000000
--- a/usage/jsgui/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-mg.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-angular.module("ngLocale", [], ["$provide", function($provide) {
-var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
-$provide.value("$locale", {
-  "DATETIME_FORMATS": {
-    "AMPMS": [
-      "AM",
-      "PM"
-    ],
-    "DAY": [
-      "dimanche",
-      "lundi",
-      "mardi",
-      "mercredi",
-      "jeudi",
-      "vendredi",
-      "samedi"
-    ],
-    "MONTH": [
-      "janvier",
-      "f\u00e9vrier",
-      "mars",
-      "avril",
-      "mai",
-      "juin",
-      "juillet",
-      "ao\u00fbt",
-      "septembre",
-      "octobre",
-      "novembre",
-      "d\u00e9cembre"
-    ],
-    "SHORTDAY": [
-      "dim.",
-      "lun.",
-      "mar.",
-      "mer.",
-      "jeu.",
-      "ven.",
-      "sam."
-    ],
-    "SHORTMONTH": [
-      "janv.",
-      "f\u00e9vr.",
-      "mars",
-      "avr.",
-      "mai",
-      "juin",
-      "juil.",
-      "ao\u00fbt",
-      "sept.",
-      "oct.",
-      "nov.",
-      "d\u00e9c."
-    ],
-    "fullDate": "EEEE d MMMM y",
-    "longDate": "d MMMM y",
-    "medium": "d MMM y HH:mm:ss",
-    "mediumDate": "d MMM y",
-    "mediumTime": "HH:mm:ss",
-    "short": "dd/MM/yy HH:mm",
-    "shortDate": "dd/MM/yy",
-    "shortTime": "HH:mm"
-  },
-  "NUMBER_FORMATS": {
-    "CURRENCY_SYM": "\u20ac",
-    "DECIMAL_SEP": ",",
-    "GROUP_SEP": "\u00a0",
-    "PATTERNS": [
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 3,
-        "minFrac": 0,
-        "minInt": 1,
-        "negPre": "-",
-        "negSuf": "",
-        "posPre": "",
-        "posSuf": ""
-      },
-      {
-        "gSize": 3,
-        "lgSize": 3,
-        "macFrac": 0,
-        "maxFrac": 2,
-        "minFrac": 2,
-        "minInt": 1,
-        "negPre": "(",
-        "negSuf": "\u00a0\u00a4)",
-        "posPre": "",
-        "posSuf": "\u00a0\u00a4"
-      }
-    ]
-  },
-  "id": "fr-mg",
-  "pluralCat": function (n) {  if (n >= 0 && n <= 2 && n != 2) {   return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
-});
-}]);
\ No newline at end of file