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 2015/03/29 05:02:19 UTC

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

Repository: incubator-brooklyn
Updated Branches:
  refs/heads/master 4fb2c7027 -> 77a7f6f68


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/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-enable

<TRUNCATED>

[53/71] [abbrv] incubator-brooklyn 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/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/d9850a16
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/d9850a16
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/d9850a16

Branch: refs/heads/master
Commit: d9850a168f1b762b78ca42ac622a76f77c8baf07
Parents: 1234266 21d9a91
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 +
 COPYRIGHT.md                                    |    13 -
 DISCLAIMER                                      |     8 +
 LICENSE                                         |   292 +
 LICENSE.md                                      |   176 -
 NOTICE                                          |     5 +
 README.md                                       |    44 +-
 api/pom.xml                                     |    13 +-
 .../basic/AbstractBrooklynObjectSpec.java       |    26 +-
 .../java/brooklyn/basic/BrooklynObject.java     |    20 +
 .../basic/internal/ApiObjectsFactory.java       |    61 +
 .../internal/ApiObjectsFactoryInterface.java    |    29 +
 .../java/brooklyn/catalog/BrooklynCatalog.java  |    57 +-
 .../main/java/brooklyn/catalog/CatalogItem.java |    77 +-
 api/src/main/java/brooklyn/entity/Entity.java   |    27 +-
 api/src/main/java/brooklyn/entity/Feed.java     |    76 +
 api/src/main/java/brooklyn/entity/Group.java    |     1 +
 .../java/brooklyn/entity/basic/EntityLocal.java |    36 +-
 .../entity/drivers/DriverDependentEntity.java   |     5 +
 .../brooklyn/entity/proxying/EntitySpec.java    |    25 +-
 .../entity/rebind/BrooklynObjectType.java       |    48 +-
 .../rebind/PersistenceExceptionHandler.java     |     2 +
 .../brooklyn/entity/rebind/RebindContext.java   |    30 +-
 .../entity/rebind/RebindExceptionHandler.java   |    36 +-
 .../brooklyn/entity/rebind/RebindManager.java   |    71 +-
 .../brooklyn/entity/rebind/RebindSupport.java   |     4 +-
 .../java/brooklyn/entity/rebind/Rebindable.java |     7 +
 .../java/brooklyn/event/AttributeSensor.java    |    28 +-
 .../location/LocationNotAvailableException.java |    35 +
 .../brooklyn/location/LocationRegistry.java     |    51 +-
 .../java/brooklyn/location/LocationSpec.java    |     2 +-
 .../java/brooklyn/location/MachineLocation.java |     4 +-
 .../location/MachineProvisioningLocation.java   |     4 +-
 .../location/NoMachinesAvailableException.java  |     2 +-
 .../brooklyn/location/ProvisioningLocation.java |    44 +
 .../brooklyn/management/ExecutionContext.java   |     8 +
 .../brooklyn/management/ExecutionManager.java   |    12 +-
 .../brooklyn/management/LocationManager.java    |     5 +-
 .../brooklyn/management/ManagementContext.java  |    35 +-
 .../management/SubscriptionManager.java         |     2 +-
 api/src/main/java/brooklyn/management/Task.java |     8 +
 .../management/TaskQueueingContext.java         |     2 +-
 .../java/brooklyn/management/TaskWrapper.java   |     2 -
 .../management/ha/HighAvailabilityManager.java  |    53 +-
 .../management/ha/HighAvailabilityMode.java     |    30 +-
 .../management/ha/ManagementNodeState.java      |    47 +
 .../management/ha/ManagementNodeSyncRecord.java |     2 +
 .../ha/ManagementPlaneSyncRecordPersister.java  |     1 +
 .../brooklyn/management/ha/MementoCopyMode.java |    29 +
 .../java/brooklyn/mementos/BrooklynMemento.java |    19 +-
 .../mementos/BrooklynMementoManifest.java       |    19 +-
 .../mementos/BrooklynMementoPersister.java      |    68 +-
 .../mementos/BrooklynMementoRawData.java        |   179 +
 .../brooklyn/mementos/CatalogItemMemento.java   |    47 +
 .../java/brooklyn/mementos/EntityMemento.java   |     5 +
 .../java/brooklyn/mementos/FeedMemento.java     |    33 +
 .../main/java/brooklyn/mementos/Memento.java    |     8 +
 api/src/main/java/brooklyn/policy/Enricher.java |     6 +
 .../main/java/brooklyn/policy/EnricherSpec.java |    70 +-
 .../java/brooklyn/policy/EntityAdjunct.java     |     2 +-
 api/src/main/java/brooklyn/policy/Policy.java   |     6 +
 .../main/java/brooklyn/policy/PolicySpec.java   |     2 +-
 brooklyn-install.sh                             |   315 +
 camp/camp-base/pom.xml                          |    10 +-
 .../io/brooklyn/camp/spi/AbstractResource.java  |    55 +-
 .../brooklyn/camp/spi/ApplicationComponent.java |    31 +-
 .../camp/spi/ApplicationComponentTemplate.java  |     7 +-
 .../java/io/brooklyn/camp/spi/Assembly.java     |    33 +-
 .../io/brooklyn/camp/spi/AssemblyTemplate.java  |    38 +-
 .../io/brooklyn/camp/spi/PlatformComponent.java |    33 +-
 .../camp/spi/PlatformComponentTemplate.java     |     7 +-
 .../brooklyn/camp/spi/PlatformRootSummary.java  |     7 +-
 .../spi/pdp/AssemblyTemplateConstructor.java    |     6 +
 .../brooklyn/camp/spi/pdp/DeploymentPlan.java   |    12 +-
 .../java/io/brooklyn/camp/spi/pdp/Service.java  |     2 +-
 .../brooklyn/camp/spi/resolve/PdpProcessor.java |    20 +-
 camp/camp-server/pom.xml                        |    29 +-
 .../main/java/io/brooklyn/camp/CampServer.java  |     2 +-
 camp/pom.xml                                    |     7 +-
 core/pom.xml                                    |    82 +-
 .../GeoIPJava-1.2.8/ASNumLookupTest.java        |    39 -
 .../GeoIPJava-1.2.8/ASNumLookupTestV6.java      |    39 -
 .../maxmind/GeoIPJava-1.2.8/BenchmarkGeoIP.java |    97 -
 core/src/3rd/maxmind/GeoIPJava-1.2.8/Changes    |   121 -
 .../maxmind/GeoIPJava-1.2.8/CityLookupTest.java |    54 -
 .../GeoIPJava-1.2.8/CityLookupTestV6.java       |    54 -
 .../GeoIPJava-1.2.8/CountryLookupTest.java      |    57 -
 .../GeoIPJava-1.2.8/CountryLookupTestV6.java    |    56 -
 .../GeoIPJava-1.2.8/DistributedServiceTest.java |    45 -
 core/src/3rd/maxmind/GeoIPJava-1.2.8/LICENSE    |   504 -
 .../GeoIPJava-1.2.8/NetSpeedCellLookupTest.java |    39 -
 .../GeoIPJava-1.2.8/NetspeedLookupTest.java     |    50 -
 .../maxmind/GeoIPJava-1.2.8/OrgLookupTest.java  |    42 -
 core/src/3rd/maxmind/GeoIPJava-1.2.8/README     |    77 -
 .../GeoIPJava-1.2.8/RegionLookupTest.java       |    41 -
 .../admin/generate_regionName.pl                |   113 -
 .../GeoIPJava-1.2.8/admin/generate_timeZone.pl  |    66 -
 .../admin/new_generate_TimeZone.pl              |   110 -
 .../source/com/maxmind/geoip/Country.java       |    61 -
 .../source/com/maxmind/geoip/DatabaseInfo.java  |   127 -
 .../source/com/maxmind/geoip/Location.java      |    60 -
 .../source/com/maxmind/geoip/LookupService.java |  1204 -
 .../source/com/maxmind/geoip/Region.java        |     8 -
 .../source/com/maxmind/geoip/regionName.java    | 12782 ---------
 .../source/com/maxmind/geoip/timeZone.java      |  1459 -
 .../brooklyn/basic/AbstractBrooklynObject.java  |   115 +-
 .../brooklyn/basic/BasicConfigurableObject.java |    78 +
 .../brooklyn/basic/BrooklynDynamicType.java     |     9 +-
 .../brooklyn/basic/BrooklynObjectInternal.java  |     7 +
 .../main/java/brooklyn/basic/BrooklynTypes.java |    13 +-
 .../basic/internal/ApiObjectsFactoryImpl.java   |    41 +
 .../api/AssemblyTemplateSpecInstantiator.java   |     8 +-
 .../api/HasBrooklynManagementContext.java       |     2 +-
 .../java/brooklyn/catalog/CatalogLoadMode.java  |    70 +
 .../brooklyn/catalog/CatalogPredicates.java     |    29 +-
 .../catalog/internal/BasicBrooklynCatalog.java  |   572 +-
 .../internal/CatalogBundleConverter.java        |    63 +
 .../catalog/internal/CatalogBundleDto.java      |    74 +
 .../catalog/internal/CatalogClasspathDo.java    |    16 +-
 .../internal/CatalogConfigurationDto.java       |    44 -
 .../brooklyn/catalog/internal/CatalogDo.java    |   159 +-
 .../brooklyn/catalog/internal/CatalogDto.java   |    71 +-
 .../catalog/internal/CatalogItemBuilder.java    |   117 +
 .../catalog/internal/CatalogItemComparator.java |   142 +
 .../catalog/internal/CatalogItemDo.java         |    70 +-
 .../internal/CatalogItemDtoAbstract.java        |   342 +-
 .../brooklyn/catalog/internal/CatalogItems.java |    74 -
 .../catalog/internal/CatalogLibrariesDo.java    |    39 +-
 .../catalog/internal/CatalogLibrariesDto.java   |    51 +-
 .../brooklyn/catalog/internal/CatalogUtils.java |   230 +
 .../catalog/internal/CatalogXmlSerializer.java  |    18 +-
 .../java/brooklyn/config/BrooklynLogging.java   |    48 +
 .../brooklyn/config/BrooklynProperties.java     |    81 +-
 .../brooklyn/config/BrooklynServerConfig.java   |   182 +-
 .../brooklyn/config/BrooklynServerPaths.java    |   280 +
 .../config/BrooklynServiceAttributes.java       |     5 +-
 .../brooklyn/config/render/RendererHints.java   |   165 +-
 .../main/java/brooklyn/enricher/Enrichers.java  |   292 +-
 .../enricher/basic/AbstractAggregator.java      |   215 +
 .../enricher/basic/AbstractEnricher.java        |    47 +
 .../basic/AbstractMultipleSensorAggregator.java |   152 +
 .../basic/AbstractTypeTransformingEnricher.java |     1 +
 .../brooklyn/enricher/basic/Aggregator.java     |   180 +-
 .../java/brooklyn/enricher/basic/Combiner.java  |    12 +-
 .../enricher/basic/EnricherDynamicType.java     |     4 +
 .../brooklyn/enricher/basic/Propagator.java     |    18 +-
 .../basic/SensorPropagatingEnricher.java        |     1 +
 .../brooklyn/enricher/basic/Transformer.java    |    19 +-
 .../brooklyn/enricher/basic/UpdatingMap.java    |   159 +
 .../entity/basic/AbstractApplication.java       |    77 +-
 .../AbstractConfigurableEntityFactory.java      |    11 +-
 .../brooklyn/entity/basic/AbstractEffector.java |    23 +-
 .../brooklyn/entity/basic/AbstractEntity.java   |   450 +-
 .../brooklyn/entity/basic/AbstractGroup.java    |    20 +-
 .../entity/basic/AbstractGroupImpl.java         |    67 +-
 .../java/brooklyn/entity/basic/Attributes.java  |    60 +-
 .../entity/basic/BasicApplicationImpl.java      |     6 +-
 .../basic/BasicConfigurableEntityFactory.java   |     2 +
 .../entity/basic/BasicParameterType.java        |    25 +-
 .../entity/basic/BasicStartableImpl.java        |     2 +-
 .../entity/basic/BrooklynConfigKeys.java        |   138 +-
 .../brooklyn/entity/basic/BrooklynTags.java     |    66 +
 .../brooklyn/entity/basic/BrooklynTaskTags.java |   203 +-
 .../java/brooklyn/entity/basic/ConfigKeys.java  |    32 +-
 .../brooklyn/entity/basic/DataEntityImpl.java   |     2 +-
 .../brooklyn/entity/basic/DelegateEntity.java   |    28 +-
 .../brooklyn/entity/basic/DynamicGroup.java     |    15 +-
 .../brooklyn/entity/basic/DynamicGroupImpl.java |     7 +-
 .../java/brooklyn/entity/basic/Entities.java    |   391 +-
 .../brooklyn/entity/basic/EntityAdjuncts.java   |    70 +
 .../entity/basic/EntityAndAttribute.java        |    17 +-
 .../brooklyn/entity/basic/EntityConfigMap.java  |    82 +-
 .../brooklyn/entity/basic/EntityFactory.java    |     8 +-
 .../brooklyn/entity/basic/EntityFunctions.java  |    77 +-
 .../entity/basic/EntityInitializers.java        |     2 +-
 .../brooklyn/entity/basic/EntityInternal.java   |    44 +-
 .../brooklyn/entity/basic/EntityPredicates.java |   292 +-
 .../brooklyn/entity/basic/EntitySuppliers.java  |    47 +
 .../java/brooklyn/entity/basic/EntityTasks.java |    81 +
 .../basic/EntityTransientCopyInternal.java      |   123 +
 .../brooklyn/entity/basic/ExplicitEffector.java |     2 +-
 .../java/brooklyn/entity/basic/Lifecycle.java   |   100 +-
 .../java/brooklyn/entity/basic/QuorumCheck.java |   108 +
 .../entity/basic/ServiceStateLogic.java         |   621 +
 .../drivers/BasicEntityDriverManager.java       |     8 +
 .../drivers/ReflectiveEntityDriverFactory.java  |   218 +-
 .../downloads/BasicDownloadRequirement.java     |     2 +-
 .../drivers/downloads/BasicDownloadTargets.java |     2 +-
 .../DownloadProducerFromLocalRepo.java          |     1 +
 .../DownloadProducerFromProperties.java         |     2 +-
 .../drivers/downloads/FilenameProducers.java    |     6 +-
 .../entity/effector/AddChildrenEffector.java    |   118 +
 .../brooklyn/entity/effector/AddEffector.java   |    32 +-
 .../brooklyn/entity/effector/AddSensor.java     |    93 +-
 .../brooklyn/entity/effector/EffectorTasks.java |    15 +-
 .../brooklyn/entity/effector/Effectors.java     |     6 +
 .../group/AbstractMembershipTrackingPolicy.java |     9 +-
 .../brooklyn/entity/group/DynamicCluster.java   |    10 +-
 .../entity/group/DynamicClusterImpl.java        |   243 +-
 .../brooklyn/entity/group/DynamicFabric.java    |     2 +-
 .../entity/group/DynamicFabricImpl.java         |    15 +-
 .../entity/group/DynamicMultiGroup.java         |     5 +
 .../entity/group/DynamicMultiGroupImpl.java     |    62 +-
 .../entity/group/QuarantineGroupImpl.java       |     5 +
 .../entity/proxying/EntityProxyImpl.java        |   141 +-
 .../entity/proxying/InternalEntityFactory.java  |    46 +-
 .../proxying/InternalLocationFactory.java       |     7 +-
 .../entity/proxying/InternalPolicyFactory.java  |    21 +-
 .../AbstractBrooklynObjectRebindSupport.java    |    17 +-
 .../rebind/BasicCatalogItemRebindSupport.java   |    66 +
 .../rebind/BasicEnricherRebindSupport.java      |     7 +-
 .../entity/rebind/BasicEntityRebindSupport.java |    62 +-
 .../entity/rebind/BasicFeedRebindSupport.java   |    48 +
 .../rebind/BasicLocationRebindSupport.java      |    21 +-
 .../rebind/ImmediateDeltaChangeListener.java    |     6 +
 .../rebind/PeriodicDeltaChangeListener.java     |   370 +-
 .../rebind/PersistenceExceptionHandlerImpl.java |    16 +-
 .../entity/rebind/PersisterDeltaImpl.java       |   160 +-
 .../entity/rebind/RebindContextImpl.java        |    96 +-
 .../rebind/RebindContextLookupContext.java      |    57 +-
 .../rebind/RebindExceptionHandlerImpl.java      |   191 +-
 .../brooklyn/entity/rebind/RebindIteration.java |  1086 +
 .../entity/rebind/RebindManagerImpl.java        |   846 +-
 .../entity/rebind/dto/AbstractMemento.java      |    68 +-
 .../rebind/dto/BasicCatalogItemMemento.java     |   242 +
 .../entity/rebind/dto/BasicEnricherMemento.java |     5 +-
 .../entity/rebind/dto/BasicEntityMemento.java   |    51 +-
 .../entity/rebind/dto/BasicFeedMemento.java     |    92 +
 .../entity/rebind/dto/BasicLocationMemento.java |    32 +-
 .../entity/rebind/dto/BasicPolicyMemento.java   |     5 +-
 .../entity/rebind/dto/BrooklynMementoImpl.java  |    63 +-
 .../rebind/dto/BrooklynMementoManifestImpl.java |    81 +-
 .../rebind/dto/EntityMementoManifestImpl.java   |    56 +
 .../entity/rebind/dto/MementosGenerators.java   |    92 +-
 .../rebind/dto/MutableBrooklynMemento.java      |    71 +-
 .../AbstractBrooklynMementoPersister.java       |    43 +-
 .../BrooklynMementoPersisterInMemory.java       |    40 +-
 .../BrooklynMementoPersisterToMultiFile.java    |   123 +-
 .../BrooklynMementoPersisterToObjectStore.java  |   620 +-
 .../persister/BrooklynPersistenceUtils.java     |   270 +
 .../CatalogItemLibrariesConverter.java          |    68 +
 .../rebind/persister/FileBasedObjectStore.java  |    29 +-
 .../persister/FileBasedStoreObjectAccessor.java |    22 +-
 .../persister/LocationWithObjectStore.java      |    27 +
 .../persister/PersistenceActivityMetrics.java   |    83 +
 .../persister/RetryingMementoSerializer.java    |    17 +-
 .../persister/StoreObjectAccessorLocking.java   |     3 +-
 .../rebind/persister/XmlMementoSerializer.java  |    57 +-
 .../dto/BasicManagementNodeSyncRecord.java      |    22 +-
 .../transformer/BrooklynMementoTransformer.java |    32 +
 .../rebind/transformer/CompoundTransformer.java |   272 +
 .../transformer/CompoundTransformerLoader.java  |    97 +
 .../rebind/transformer/RawDataTransformer.java  |    30 +
 .../DeleteOrphanedLocationsTransformer.java     |   125 +
 .../transformer/impl/XsltTransformer.java       |    59 +
 .../java/brooklyn/entity/trait/Startable.java   |    53 +-
 .../brooklyn/entity/trait/StartableMethods.java |    27 +-
 .../java/brooklyn/event/basic/AttributeMap.java |    28 +-
 .../event/basic/BasicAttributeSensor.java       |    18 +-
 .../brooklyn/event/basic/BasicConfigKey.java    |    58 +-
 .../brooklyn/event/basic/BasicSensorEvent.java  |    38 +-
 .../event/basic/DependentConfiguration.java     |   594 +-
 .../brooklyn/event/basic/ListConfigKey.java     |     2 +-
 .../basic/PortAttributeSensorAndConfigKey.java  |    68 +-
 .../main/java/brooklyn/event/basic/Sensors.java |    81 +-
 .../java/brooklyn/event/basic/SetConfigKey.java |     2 +-
 .../java/brooklyn/event/feed/AbstractFeed.java  |   168 +-
 .../event/feed/AttributePollHandler.java        |    27 +-
 .../brooklyn/event/feed/ConfigToAttributes.java |     7 +-
 .../event/feed/DelegatingPollHandler.java       |     6 +-
 .../java/brooklyn/event/feed/FeedConfig.java    |    88 +
 .../java/brooklyn/event/feed/PollConfig.java    |    16 +-
 .../main/java/brooklyn/event/feed/Poller.java   |    34 +-
 .../event/feed/function/FunctionFeed.java       |    40 +-
 .../event/feed/function/FunctionPollConfig.java |    54 +-
 .../java/brooklyn/event/feed/http/HttpFeed.java |    36 +-
 .../event/feed/http/HttpPollConfig.java         |    41 +-
 .../brooklyn/event/feed/http/JsonFunctions.java |     2 +-
 .../brooklyn/event/feed/shell/ShellFeed.java    |    36 +-
 .../event/feed/shell/ShellPollConfig.java       |     6 +
 .../java/brooklyn/event/feed/ssh/SshFeed.java   |    89 +-
 .../brooklyn/event/feed/ssh/SshPollConfig.java  |    12 +
 .../windows/WindowsPerformanceCounterFeed.java  |   107 +-
 .../WindowsPerformanceCounterPollConfig.java    |    52 +
 .../internal/BrooklynFeatureEnablement.java     |   100 +-
 .../internal/BrooklynInitialization.java        |    81 +
 .../location/access/BrooklynAccessUtils.java    |     2 +-
 .../location/access/PortForwardManager.java     |   247 +-
 .../access/PortForwardManagerAuthority.java     |   221 +-
 .../access/PortForwardManagerClient.java        |   277 +-
 .../location/access/PortForwardManagerImpl.java |   449 +
 .../PortForwardManagerLocationResolver.java     |    89 +
 .../brooklyn/location/access/PortMapping.java   |    45 +-
 .../location/basic/AbstractLocation.java        |   128 +-
 .../basic/AbstractLocationResolver.java         |   189 +
 .../AggregatingMachineProvisioningLocation.java |     2 +-
 .../location/basic/BasicLocationRegistry.java   |    89 +-
 .../location/basic/ByonLocationResolver.java    |   126 +-
 .../FixedListMachineProvisioningLocation.java   |     2 +-
 .../location/basic/HostLocationResolver.java    |    76 +-
 .../basic/LocalhostLocationResolver.java        |    72 +
 .../LocalhostMachineProvisioningLocation.java   |    24 +-
 .../location/basic/LocalhostResolver.java       |   129 -
 .../location/basic/LocationConfigKeys.java      |     4 +-
 .../location/basic/LocationConfigUtils.java     |   353 +-
 .../location/basic/LocationInternal.java        |    12 +-
 .../java/brooklyn/location/basic/Locations.java |    51 +
 .../location/basic/NamedLocationResolver.java   |     1 +
 .../brooklyn/location/basic/PortRanges.java     |    18 +-
 .../location/basic/SimulatedLocation.java       |    17 +
 .../basic/SingleMachineLocationResolver.java    |    78 +-
 .../location/basic/SshMachineLocation.java      |   219 +-
 .../location/cloud/CloudLocationConfig.java     |    16 +-
 .../location/dynamic/LocationOwner.java         |     4 +
 .../java/brooklyn/location/geo/HostGeoInfo.java |    38 +-
 .../location/geo/LocalhostExternalIpLoader.java |     9 +-
 .../location/geo/MaxMind2HostGeoLookup.java     |   115 +
 .../location/geo/MaxMindHostGeoLookup.java      |    94 -
 .../location/geo/UtraceHostGeoLookup.java       |    52 +
 .../management/ManagementContextInjectable.java |    33 +
 .../BrooklynClassLoadingContextSequential.java  |    12 +-
 ...ssLoaderFromBrooklynClassLoadingContext.java |    64 +
 .../JavaBrooklynClassLoadingContext.java        |    61 +-
 .../OsgiBrooklynClassLoadingContext.java        |    54 +-
 .../entitlement/EntitlementManagerAdapter.java  |    99 +-
 .../management/entitlement/Entitlements.java    |   169 +-
 .../entitlement/NotEntitledException.java       |     5 +
 .../entitlement/PerUserEntitlementManager.java  |    97 +
 .../PerUserEntitlementManagerWithDefault.java   |    27 +-
 .../entitlement/WebEntitlementContext.java      |    11 +-
 .../management/ha/BasicMasterChooser.java       |   160 +-
 .../ha/HighAvailabilityManagerImpl.java         |   690 +-
 .../ha/ManagementPlaneSyncRecordDeltaImpl.java  |    21 +-
 ...mentPlaneSyncRecordPersisterToMultiFile.java |     4 -
 ...ntPlaneSyncRecordPersisterToObjectStore.java |    59 +-
 .../brooklyn/management/ha/OsgiManager.java     |   192 +-
 .../internal/AbstractManagementContext.java     |   135 +-
 .../internal/AbstractSubscriptionManager.java   |     2 +-
 .../internal/AsyncCollectionChangeAdapter.java  |    46 +-
 .../internal/BasicSubscriptionContext.java      |     4 +-
 .../internal/BrooklynGarbageCollector.java      |   578 +-
 .../management/internal/EffectorUtils.java      |   142 +-
 .../internal/EntityChangeListener.java          |    11 +-
 .../internal/EntityManagementSupport.java       |   110 +-
 .../internal/EntityManagementUtils.java         |   312 +
 .../internal/EntityManagerInternal.java         |    15 +
 .../management/internal/LocalAccessManager.java |     1 -
 .../management/internal/LocalEntityManager.java |   420 +-
 .../internal/LocalLocationManager.java          |   237 +-
 .../internal/LocalManagementContext.java        |    29 +-
 .../internal/LocalSubscriptionManager.java      |    23 +-
 .../management/internal/LocalUsageManager.java  |   140 +-
 .../internal/LocationManagerInternal.java       |    40 +
 .../internal/ManagementTransitionInfo.java      |    35 +-
 .../internal/NonDeploymentEntityManager.java    |    39 +
 .../internal/NonDeploymentLocationManager.java  |    51 +-
 .../NonDeploymentManagementContext.java         |   100 +-
 .../internal/NonDeploymentUsageManager.java     |    22 +
 .../management/internal/UsageManager.java       |    47 +
 .../management/usage/ApplicationUsage.java      |    18 +-
 .../management/usage/LocationUsage.java         |    22 +-
 .../policy/basic/AbstractEntityAdjunct.java     |    32 +-
 .../java/brooklyn/policy/basic/AdjunctType.java |    10 +-
 .../brooklyn/policy/basic/ConfigMapImpl.java    |     2 +-
 .../policy/basic/GeneralPurposePolicy.java      |     4 +
 .../policy/basic/PolicyDynamicType.java         |     4 +
 .../util/BrooklynLanguageExtensions.java        |    10 +-
 .../main/java/brooklyn/util/ResourceUtils.java  |   120 +-
 .../java/brooklyn/util/config/ConfigBag.java    |     8 +-
 .../brooklyn/util/crypto/FluentKeySigner.java   |    36 +-
 .../java/brooklyn/util/crypto/SecureKeys.java   |   247 +-
 .../java/brooklyn/util/file/ArchiveBuilder.java |    10 +-
 .../java/brooklyn/util/file/ArchiveTasks.java   |    11 +-
 .../java/brooklyn/util/file/ArchiveUtils.java   |    35 +-
 .../java/brooklyn/util/flags/FlagUtils.java     |   107 +-
 .../java/brooklyn/util/flags/TypeCoercions.java |   108 +-
 .../main/java/brooklyn/util/http/HttpTool.java  |    58 +-
 .../brooklyn/util/http/HttpToolResponse.java    |    26 +-
 .../util/internal/ConfigKeySelfExtracting.java  |    11 +-
 .../java/brooklyn/util/internal/Repeater.java   |    72 +-
 .../util/internal/ssh/ShellAbstractTool.java    |   177 +-
 .../brooklyn/util/internal/ssh/ShellTool.java   |    11 +-
 .../util/internal/ssh/process/ProcessTool.java  |     3 +-
 .../internal/ssh/sshj/SshjClientConnection.java |     2 +-
 .../util/internal/ssh/sshj/SshjTool.java        |   364 +-
 .../src/main/java/brooklyn/util/osgi/Osgis.java |   362 +-
 .../util/task/AbstractExecutionContext.java     |     7 +-
 .../util/task/BasicExecutionContext.java        |    21 +-
 .../util/task/BasicExecutionManager.java        |   487 +-
 .../main/java/brooklyn/util/task/BasicTask.java |   274 +-
 .../util/task/DynamicSequentialTask.java        |    57 +-
 .../java/brooklyn/util/task/DynamicTasks.java   |     1 -
 .../brooklyn/util/task/ExecutionListener.java   |     5 +
 .../java/brooklyn/util/task/ForwardingTask.java |    13 +-
 .../java/brooklyn/util/task/ScheduledTask.java  |   173 +-
 .../java/brooklyn/util/task/TaskInternal.java   |    14 +-
 .../main/java/brooklyn/util/task/TaskTags.java  |     6 +-
 .../src/main/java/brooklyn/util/task/Tasks.java |   289 +-
 .../java/brooklyn/util/task/ValueResolver.java  |   353 +
 .../util/task/system/ProcessTaskWrapper.java    |     4 +-
 .../system/internal/ExecWithLoggingHelpers.java |    29 +-
 .../brooklyn/util/text/DataUriSchemeParser.java |    28 +-
 .../brooklyn/util/text/TemplateProcessor.java   |   290 +-
 ...yn.basic.internal.ApiObjectsFactoryInterface |    19 +
 .../services/brooklyn.location.LocationResolver |     5 +-
 .../recursiveCopyWithExtraRules.xslt            |    32 +
 .../geo/external-ip-address-resolvers.txt       |    19 +-
 core/src/test/dependencies/osgi/README.md       |    29 +
 .../src/test/dependencies/osgi/entities/pom.xml |    15 +-
 .../java/brooklyn/osgi/tests/SimplePolicy.java  |    36 +
 .../dependencies/osgi/more-entities-v1/pom.xml  |    82 +
 .../brooklyn/osgi/tests/more/MoreEntity.java    |    38 +
 .../osgi/tests/more/MoreEntityImpl.java         |    44 +
 .../osgi/more-entities-v2-evil-twin/pom.xml     |    88 +
 .../brooklyn/osgi/tests/more/MoreEntity.java    |    38 +
 .../osgi/tests/more/MoreEntityImpl.java         |    47 +
 .../dependencies/osgi/more-entities-v2/pom.xml  |    87 +
 .../brooklyn/osgi/tests/more/MoreEntity.java    |    39 +
 .../osgi/tests/more/MoreEntityImpl.java         |    47 +
 .../brooklyn/camp/lite/CampYamlLiteTest.java    |   205 +-
 .../camp/lite/TestAppAssemblyInstantiator.java  |    50 +-
 .../catalog/internal/CatalogDtoTest.java        |    85 +-
 .../internal/CatalogItemComparatorTest.java     |    81 +
 .../catalog/internal/CatalogLoadTest.java       |    31 +-
 .../catalog/internal/CatalogScanTest.java       |    13 +-
 .../catalog/internal/CatalogVersioningTest.java |   133 +
 .../catalog/internal/MyCatalogItems.java        |     4 -
 .../enricher/CustomAggregatingEnricherTest.java |     2 +-
 .../java/brooklyn/enricher/EnrichersTest.java   |   107 +-
 .../enricher/basic/BasicEnricherTest.java       |    29 +-
 .../entity/BrooklynAppUnitTestSupport.java      |     6 +-
 .../java/brooklyn/entity/EffectorSayHiTest.java |    14 +-
 .../java/brooklyn/entity/SetFromFlagTest.groovy |   200 -
 .../java/brooklyn/entity/SetFromFlagTest.java   |   213 +
 .../entity/basic/AbstractEntityLegacyTest.java  |    31 +-
 .../brooklyn/entity/basic/AttributeMapTest.java |   143 +-
 .../entity/basic/BasicStartableTest.java        |     2 +-
 .../basic/ConfigEntityInheritanceTest.java      |    25 +-
 .../brooklyn/entity/basic/ConfigKeysTest.java   |    27 +
 .../basic/DependentConfigurationTest.java       |   118 +-
 .../entity/basic/DynamicEntityTest.java         |     3 +-
 .../brooklyn/entity/basic/DynamicGroupTest.java |    91 +-
 .../brooklyn/entity/basic/EntitiesTest.java     |    24 +-
 .../brooklyn/entity/basic/EntityConfigTest.java |    16 +-
 .../entity/basic/EntityFunctionsTest.java       |    12 +
 .../entity/basic/EntityLocationsTest.java       |    88 +-
 .../entity/basic/EntityPredicatesTest.java      |    15 +-
 .../brooklyn/entity/basic/EntitySpecTest.java   |    29 +-
 .../entity/basic/EntitySubscriptionTest.groovy  |   248 -
 .../entity/basic/EntitySubscriptionTest.java    |   251 +
 .../entity/basic/EntitySuppliersTest.java       |    70 +
 .../brooklyn/entity/basic/EntityTypeTest.java   |    58 +-
 .../entity/basic/LifecycleTransitionTest.java   |    38 +
 .../entity/basic/OwnedChildrenTest.groovy       |   209 -
 .../entity/basic/OwnedChildrenTest.java         |   211 +
 .../entity/basic/PolicyRegistrationTest.java    |     6 +-
 .../entity/basic/ServiceStateLogicTest.java     |   272 +
 .../ReflectiveEntityDriverFactoryTest.java      |    63 +-
 .../downloads/FilenameProducersTest.java        |     2 +-
 .../entity/group/DynamicClusterTest.java        |    30 +-
 .../entity/group/DynamicFabricTest.java         |    30 +-
 .../entity/group/DynamicMultiGroupTest.java     |    40 +-
 .../entity/group/GroupPickUpEntitiesTest.java   |    16 +-
 .../entity/hello/LocalEntitiesTest.java         |    77 +-
 .../java/brooklyn/entity/rebind/Dumpers.java    |     4 +-
 .../entity/rebind/RebindCatalogEntityTest.java  |    24 +-
 .../entity/rebind/RebindCatalogItemTest.java    |   204 +
 ...talogWhenCatalogPersistenceDisabledTest.java |    94 +
 .../entity/rebind/RebindEnricherTest.java       |    12 +-
 .../rebind/RebindEntityDynamicTypeInfoTest.java |     5 -
 .../entity/rebind/RebindEntityTest.java         |    53 +-
 .../entity/rebind/RebindFailuresTest.java       |    50 +-
 .../brooklyn/entity/rebind/RebindFeedTest.java  |   383 +
 .../entity/rebind/RebindFeedWithHaTest.java     |   132 +
 .../entity/rebind/RebindLocationTest.java       |    18 +-
 .../entity/rebind/RebindManagerSorterTest.java  |     2 +-
 .../brooklyn/entity/rebind/RebindOptions.java   |    92 +
 .../entity/rebind/RebindPolicyTest.java         |    10 +-
 .../entity/rebind/RebindTestFixture.java        |   203 +-
 .../entity/rebind/RebindTestFixtureWithApp.java |     3 +-
 .../brooklyn/entity/rebind/RebindTestUtils.java |   320 +-
 .../rebind/RecordingRebindExceptionHandler.java |    11 +-
 .../BrooklynMementoPersisterFileBasedTest.java  |     2 +-
 .../BrooklynMementoPersisterTestFixture.java    |    44 +-
 ...BrooklynMementoPersisterToMultiFileTest.java |     4 +-
 ...nceStoreObjectAccessorWriterTestFixture.java |     2 +-
 .../persister/XmlMementoSerializerTest.java     |   123 +-
 .../CompoundTransformerLoaderTest.java          |    77 +
 .../transformer/CompoundTransformerTest.java    |   442 +
 .../transformer/impl/XsltTransformerTest.java   |   168 +
 .../event/feed/function/FunctionFeedTest.java   |    59 +-
 .../brooklyn/event/feed/http/HttpFeedTest.java  |    20 +-
 .../feed/shell/ShellFeedIntegrationTest.java    |    21 +
 .../event/feed/ssh/SshFeedIntegrationTest.java  |    16 +
 .../WindowsPerformanceCounterFeedLiveTest.java  |    32 +-
 .../WindowsPerformanceCounterFeedTest.java      |     4 +-
 .../internal/BrooklynFeatureEnablementTest.java |    27 +
 .../PortForwardManagerLocationResolverTest.java |    83 +
 .../access/PortForwardManagerRebindTest.java    |    65 +-
 .../location/access/PortForwardManagerTest.java |   157 +
 .../location/basic/AbstractLocationTest.java    |    10 +-
 .../basic/ByonLocationResolverTest.java         |    81 +-
 ...stMachineProvisioningLocationRebindTest.java |    82 +-
 ...ixedListMachineProvisioningLocationTest.java |    12 +-
 .../basic/HostLocationResolverTest.java         |     8 +-
 .../basic/LegacyAbstractLocationTest.java       |     8 +-
 .../basic/LocalhostLocationResolverTest.java    |    42 +-
 ...ocalhostMachineProvisioningLocationTest.java |    25 +-
 .../location/basic/LocationConfigTest.java      |     2 +-
 .../location/basic/LocationConfigUtilsTest.java |   103 +-
 .../location/basic/LocationExtensionsTest.java  |     4 +-
 .../location/basic/LocationPredicatesTest.java  |     3 +-
 .../location/basic/LocationRegistryTest.java    |    17 +-
 .../location/basic/MachineDetailsTest.java      |     5 +-
 .../basic/MultiLocationResolverTest.java        |     3 +-
 .../location/basic/MultiLocationTest.java       |     3 +-
 .../SingleMachineLocationResolverTest.java      |    25 +-
 .../SingleMachineProvisioningLocationTest.java  |     3 +-
 .../SshMachineLocationIntegrationTest.java      |    65 +-
 .../SshMachineLocationPerformanceTest.java      |     2 +-
 .../SshMachineLocationReuseIntegrationTest.java |    39 +-
 .../location/basic/SshMachineLocationTest.java  |    13 +-
 .../basic/TestPortSupplierLocation.groovy       |    94 -
 .../basic/TestPortSupplierLocation.java         |    90 +
 .../location/cloud/CloudMachineNamerTest.java   |    13 +-
 .../location/cloud/CustomMachineNamerTest.java  |     3 +-
 .../location/geo/HostGeoInfoTest.groovy         |    69 -
 .../brooklyn/location/geo/HostGeoInfoTest.java  |    52 +
 .../geo/HostGeoLookupIntegrationTest.java       |    16 +-
 .../entitlement/AcmeEntitlementManager.java     |    24 +-
 .../entitlement/AcmeEntitlementManagerTest.java |   115 +-
 .../AcmeEntitlementManagerTestFixture.java      |   158 +
 .../entitlement/EntitlementsTest.java           |     8 +-
 .../entitlement/EntityEntitlementTest.java      |     9 +-
 ...PerUserEntitlementManagerPropertiesTest.java |    52 +
 .../ha/HighAvailabilityManagerInMemoryTest.java |    90 +
 .../HighAvailabilityManagerSplitBrainTest.java  |   214 +-
 .../ha/HighAvailabilityManagerTestFixture.java  |    32 +-
 .../brooklyn/management/ha/HotStandbyTest.java  |   660 +
 .../management/ha/MasterChooserTest.java        |    71 +-
 .../management/ha/TestEntityFailingRebind.java  |    56 +
 .../brooklyn/management/ha/WarmStandbyTest.java |   150 +
 .../internal/EntityExecutionManagerTest.java    |   338 +-
 .../internal/LocalManagementContextTest.java    |    15 +-
 .../brooklyn/management/osgi/OsgiPathTest.java  |   105 +
 .../management/osgi/OsgiStandaloneTest.java     |   109 +-
 .../management/osgi/OsgiTestResources.java      |    73 +
 .../osgi/OsgiVersionMoreEntityTest.java         |   433 +
 .../brooklyn/policy/basic/BasicPolicyTest.java  |     2 +-
 .../brooklyn/policy/basic/EnricherTypeTest.java |     2 +-
 .../policy/basic/PolicySubscriptionTest.groovy  |   138 -
 .../policy/basic/PolicySubscriptionTest.java    |   134 +
 .../EntityCleanupLongevityTestFixture.java      |     7 +-
 .../EntityPersistencePerformanceTest.java       |     1 +
 .../qa/performance/PerformanceTestUtils.java    |    99 -
 .../test/java/brooklyn/test/HttpService.java    |     5 +-
 .../entity/LocalManagementContextForTests.java  |   113 +-
 .../brooklyn/test/entity/TestApplication.java   |     2 +
 .../test/entity/TestApplicationImpl.java        |    12 +-
 .../entity/TestApplicationNoEnrichersImpl.java  |    29 +
 .../brooklyn/test/entity/TestClusterImpl.java   |     9 +
 .../java/brooklyn/test/entity/TestEntity.java   |     4 +-
 .../brooklyn/test/entity/TestEntityImpl.java    |    27 +-
 .../test/entity/TestEntityNoEnrichersImpl.java  |    32 +
 .../entity/TestEntityTransientCopyImpl.java     |    28 +
 .../util/BrooklynMavenArtifactsTest.java        |    27 +-
 .../brooklyn/util/ResourceUtilsHttpTest.java    |   244 +
 .../java/brooklyn/util/ResourceUtilsTest.java   |    18 +-
 .../util/crypto/SecureKeysAndSignerTest.java    |    41 +
 .../brooklyn/util/internal/FlagUtilsTest.java   |    66 +-
 .../brooklyn/util/internal/RepeaterTest.groovy  |     3 +-
 .../util/internal/TypeCoercionsTest.java        |    37 +
 .../util/internal/ssh/RecordingSshTool.java     |     1 +
 .../internal/ssh/ShellToolAbstractTest.java     |     7 +-
 .../ssh/SshToolAbstractIntegrationTest.java     |    13 +
 .../sshj/SshjToolAsyncStubIntegrationTest.java  |   177 +
 .../ssh/sshj/SshjToolIntegrationTest.java       |   115 +-
 .../test/java/brooklyn/util/osgi/OsgisTest.java |    41 +
 .../task/BasicTaskExecutionPerformanceTest.java |     4 +
 .../util/task/BasicTaskExecutionTest.java       |    10 +-
 .../util/task/CompoundTaskExecutionTest.java    |     9 -
 .../util/task/ScheduledExecutionTest.java       |   264 +-
 .../test/java/brooklyn/util/task/TasksTest.java |    55 +
 .../brooklyn/util/task/ValueResolverTest.java   |   132 +
 .../util/text/TemplateProcessorTest.java        |   179 +
 .../util/xstream/StringKeyMapConverterTest.java |     2 +-
 .../camp/lite/test-app-service-blueprint.yaml   |     4 +-
 .../brooklyn/catalog/internal/osgi-catalog.xml  |     4 +-
 .../entity/rebind/brooklyn-AppInCatalog.jar     |   Bin 843 -> 2387 bytes
 .../entity/rebind/brooklyn-AppInCatalog.txt     |    28 +
 .../rebind/rebind-catalog-item-test-catalog.xml |    28 +
 .../rebind/transformer/impl/renameClass.xslt    |    35 +
 .../rebind/transformer/impl/renameField.xslt    |    35 +
 .../rebind/transformer/impl/renameType.xslt     |    41 +
 .../brooklyn/location/basic/sample_id_rsa       |    27 +
 .../brooklyn/location/basic/sample_id_rsa.pub   |     1 +
 core/src/test/resources/brooklyn/osgi/README.md |    10 +-
 .../osgi/brooklyn-osgi-test-a_0.1.0.txt         |    26 +
 .../osgi/brooklyn-test-osgi-entities.jar        |   Bin 10891 -> 12406 bytes
 .../osgi/brooklyn-test-osgi-entities.txt        |    26 +
 .../brooklyn-test-osgi-more-entities_0.1.0.jar  |   Bin 0 -> 12452 bytes
 .../brooklyn-test-osgi-more-entities_0.1.0.txt  |    26 +
 .../brooklyn-test-osgi-more-entities_0.2.0.jar  |   Bin 0 -> 12615 bytes
 .../brooklyn-test-osgi-more-entities_0.2.0.txt  |    26 +
 ...-test-osgi-more-entities_evil-twin_0.2.0.jar |   Bin 0 -> 12757 bytes
 ...-test-osgi-more-entities_evil-twin_0.2.0.txt |    26 +
 .../test/resources/hello-world-no-mapping.txt   |    18 +
 .../test/resources/hello-world-no-mapping.war   |   Bin 0 -> 14693 bytes
 core/src/test/resources/hello-world.txt         |    18 +
 core/src/test/resources/hello-world.war         |   Bin 14718 -> 14729 bytes
 docs/.gitignore                                 |     2 +
 docs/Gemfile                                    |    30 +-
 docs/Gemfile.lock                               |   102 +-
 docs/README.md                                  |   282 +
 docs/_build/build.sh                            |   297 +
 docs/_build/config-exclude-all-but-guide.yml    |     1 +
 docs/_build/config-exclude-guide.yml            |     1 +
 docs/_build/config-exclude-root-index.yml       |     1 +
 docs/_build/config-guide-latest.yml             |     3 +
 docs/_build/config-guide-root.yml               |     2 +
 docs/_build/config-guide-version.yml            |     6 +
 docs/_build/config-production.yml               |     5 +
 docs/_build/config-pygments.yml                 |    28 +
 docs/_build/config-rdiscount.yml                |    28 +
 docs/_build/config-style-latest.yml             |     2 +
 docs/_build/config-subpath-brooklyn.yml         |     9 +
 docs/_build/config-website-root.yml             |     3 +
 docs/_build/help.txt                            |    22 +
 docs/_build/htmlproof-brooklyn.sh               |    21 +
 docs/_build/javadoc-overview.html               |    22 +
 docs/_build/make-javadoc.sh                     |    66 +
 docs/_build/quick-make-few-javadoc.sh           |     6 +
 docs/_build/serve-public-site.sh                |     1 +
 docs/_build/serve-site.sh                       |     1 +
 docs/_build/tests/jsonball/test_jsonball.md     |    18 +
 .../tests/jsonball/test_jsonball_file.json      |     1 +
 .../tests/jsonball/test_jsonball_page.json      |     2 +
 docs/_build/tests/jsonball/toc.json             |     6 +
 docs/_config.yml                                |    39 +-
 .../_extra/big_examples/before-begin.include.md |    56 +
 .../console-geoscaling-details-w700.png         |   Bin 0 -> 167441 bytes
 .../console-geoscaling-details.png              |   Bin 0 -> 176651 bytes
 .../global-web-fabric/console-map-w700.png      |   Bin 0 -> 201060 bytes
 .../global-web-fabric/console-map.png           |   Bin 0 -> 331520 bytes
 .../geopaas-deployed-app-w700.png               |   Bin 0 -> 153738 bytes
 .../global-web-fabric/geopaas-deployed-app.png  |   Bin 0 -> 114615 bytes
 .../big_examples/global-web-fabric/index.md     |   378 +
 docs/_extra/big_examples/index.md               |    18 +
 docs/_extra/big_examples/messaging/index.md     |   181 +
 .../nosql-cassandra/cassandra.include.md        |   282 +
 .../big_examples/nosql-cassandra/index.md       |     7 +
 docs/_extra/big_examples/simple-web-cluster.md  |     9 +
 docs/_extra/big_examples/toc.json               |    13 +
 docs/_extra/big_examples/webcluster.md          |     9 +
 docs/_extra/big_examples/webcluster/index.md    |     7 +
 .../webcluster/webcluster.include.md            |   124 +
 docs/_extra/brooklyn-gpg-public-key.asc         |    21 +
 docs/_extra/deploying-yaml.md                   |    39 +
 docs/_extra/highlevel1.md                       |    50 +
 docs/_extra/list-of-blueprints.md               |   160 +
 docs/_extra/local-artifact-repo.md              |    32 +
 docs/_extra/release.md                          |   288 +
 .../example_files/tomcat_multi-location.java    |    15 +
 .../example_files/tomcat_nginx.java             |    17 +
 .../example_files/tomcat_simple.java            |     9 +
 docs/_extra/simple_java_examples/examples.md    |   121 +
 docs/_extra/update-docs.md                      |    14 +
 docs/_includes/base-head.html                   |    17 +
 docs/_includes/base-scss.scss                   |    36 +
 docs/_includes/breadcrumbs.html                 |    71 -
 docs/_includes/feature-image.html               |     4 +
 docs/_includes/feature-item-end.html            |    14 +
 docs/_includes/feature-item.html                |     4 +
 docs/_includes/fields.md                        |    54 +-
 docs/_includes/footer.html                      |    20 +
 docs/_includes/java_link.html                   |    18 +
 docs/_includes/list-children.html               |     9 +
 docs/_includes/sidebar.html                     |    77 -
 docs/_includes/sidemenu.html                    |   244 +
 docs/_includes/sitemap-item.html                |    36 +
 docs/_includes/topbar.html                      |    49 -
 docs/_includes/topmenu.html                     |    75 +
 docs/_javadoc/make-javadoc.sh                   |    47 -
 docs/_javadoc/quick-make-few-javadoc.sh         |    39 -
 docs/_layouts/base.html                         |   186 +
 docs/_layouts/page.html                         |   247 -
 docs/_layouts/website-base.html                 |    33 +
 docs/_layouts/website-landing.html              |    50 +
 docs/_layouts/website-normal.html               |    39 +
 docs/_plugins/brooklyn_jekyll_util.rb           |   129 +
 docs/_plugins/brooklyn_metadata.rb              |    72 +
 docs/_plugins/dependency_url.rb                 |    31 +
 docs/_plugins/read.rb                           |    56 +-
 docs/_plugins/site_structure.rb                 |   334 +
 docs/_scripts/build.sh                          |    21 -
 docs/_scripts/help.txt                          |    34 -
 docs/_scripts/jekyll-debug.sh                   |     6 -
 docs/dev/build/developers-catalog.xml           |   105 -
 docs/dev/build/eclipse.include.md               |    15 -
 docs/dev/build/ide.md                           |    95 -
 docs/dev/build/index.md                         |   184 -
 docs/dev/build/tests.md                         |    26 -
 docs/dev/build/toc.json                         |     8 -
 docs/dev/code/entity.md                         |    91 -
 docs/dev/code/index.include.md                  |    98 -
 docs/dev/code/index.md                          |     7 -
 docs/dev/code/policy.md                         |    47 -
 docs/dev/code/toc.json                          |    10 -
 docs/dev/how-to-contrib.md                      |    38 -
 docs/dev/index.md                               |     7 -
 docs/dev/links.md                               |    18 -
 docs/dev/tips/index.md                          |    50 -
 docs/dev/tips/local-artifact-repo.md            |    32 -
 docs/dev/tips/logging.md                        |   140 -
 docs/dev/tips/release.md                        |   284 -
 docs/dev/tips/standards.md                      |    15 -
 docs/dev/tips/toc.json                          |    14 -
 docs/dev/tips/update-docs.md                    |    70 -
 docs/dev/toc.json                               |    26 -
 docs/guide/concepts/advanced-concepts.md        |    14 +
 .../concepts/application-parent-membership.md   |    25 +
 ...ooklyn-flow-websequencediagrams.com-w400.png |   Bin 0 -> 58518 bytes
 .../brooklyn-flow-websequencediagrams.com.png   |   Bin 0 -> 106928 bytes
 .../concepts/configuration-sensor-effectors.md  |    42 +
 docs/guide/concepts/dependent-configuration.md  |    34 +
 docs/guide/concepts/entities.md                 |    23 +
 docs/guide/concepts/execution.md                |    34 +
 docs/guide/concepts/index.md                    |    21 +
 .../concepts/lifecycle-managementcontext.md     |    44 +
 docs/guide/concepts/location.md                 |    22 +
 docs/guide/concepts/policies.md                 |    11 +
 docs/guide/dev/code/index.md                    |    97 +
 docs/guide/dev/code/tests.md                    |    26 +
 docs/guide/dev/env/ide/eclipse.include.md       |    13 +
 docs/guide/dev/env/ide/index.md                 |   122 +
 docs/guide/dev/env/index.md                     |    13 +
 docs/guide/dev/env/maven-build.md               |   180 +
 docs/guide/dev/index.md                         |    37 +
 .../guide/dev/tips/debugging-remote-brooklyn.md |   138 +
 docs/guide/dev/tips/index.md                    |    49 +
 docs/guide/dev/tips/logging.md                  |   143 +
 docs/guide/index.md                             |    20 +
 docs/guide/java/archetype.md                    |    64 +
 docs/guide/java/common-usage.md                 |   140 +
 docs/guide/java/defining-and-deploying.md       |   125 +
 docs/guide/java/entities.md                     |   126 +
 docs/guide/java/entitlements.md                 |    42 +
 docs/guide/java/entity.md                       |    90 +
 docs/guide/java/index.md                        |    23 +
 docs/guide/java/policies.md                     |   123 +
 docs/guide/java/policy.md                       |    46 +
 docs/guide/java/service-state.md                |    73 +
 ...topology-dependencies-management-policies.md |    69 +
 docs/guide/java/wt-deployed-application-700.png |   Bin 0 -> 176494 bytes
 docs/guide/java/wt-deployed-application.png     |   Bin 0 -> 127347 bytes
 docs/guide/java/wt-starting-700.png             |   Bin 0 -> 303892 bytes
 docs/guide/java/wt-starting.png                 |   Bin 0 -> 332710 bytes
 docs/guide/java/wt-tree-jboss-sensors-700.png   |   Bin 0 -> 268853 bytes
 docs/guide/java/wt-tree-jboss-sensors.png       |   Bin 0 -> 169929 bytes
 docs/guide/misc/download.md                     |   176 +
 docs/guide/misc/index.md                        |    20 +
 docs/guide/misc/javadoc/index.md                |    11 +
 docs/guide/misc/known-issues.md                 |    27 +
 docs/guide/misc/release-notes.md                |    50 +
 docs/guide/ops/brooklyn_properties.md           |   189 +
 docs/guide/ops/catalog/index.md                 |   174 +
 .../guide/ops/catalog/mysql-in-catalog-w700.png |   Bin 0 -> 92767 bytes
 docs/guide/ops/catalog/mysql-in-catalog.png     |   Bin 0 -> 168831 bytes
 docs/guide/ops/cli.md                           |   143 +
 docs/guide/ops/index.md                         |    13 +
 docs/guide/ops/locations/index.md               |   268 +
 docs/guide/ops/locations/more-locations.md      |    55 +
 docs/guide/ops/locations/ssh-keys.md            |    85 +
 docs/guide/ops/logging.md                       |    46 +
 docs/guide/ops/persistence/index.md             |   281 +
 docs/guide/start/_my-web-cluster.yaml           |    21 +
 docs/guide/start/blueprints.md                  |    63 +
 docs/guide/start/brooklyn.properties            |   324 +
 docs/guide/start/catalog.xml                    |    22 +
 ...cation-catalog-web-cluster-with-db-large.png |   Bin 0 -> 131618 bytes
 ...talog-web-cluster-with-db-location-large.png |   Bin 0 -> 152721 bytes
 ...ion-catalog-web-cluster-with-db-location.png |   Bin 0 -> 86425 bytes
 ...-application-catalog-web-cluster-with-db.png |   Bin 0 -> 76065 bytes
 .../start/images/add-application-modal-yaml.png |   Bin 0 -> 68401 bytes
 .../images/jboss7-cluster-policies-large.png    |   Bin 0 -> 157883 bytes
 .../start/images/jboss7-cluster-policies.png    |   Bin 0 -> 94056 bytes
 .../start/images/my-db-activities-large.png     |   Bin 0 -> 208313 bytes
 docs/guide/start/images/my-db-activities.png    |   Bin 0 -> 130262 bytes
 .../start/images/my-web-cluster-starting.png    |   Bin 0 -> 32948 bytes
 .../my-web-cluster-stop-confirm-large.png       |   Bin 0 -> 148155 bytes
 .../images/my-web-cluster-stop-confirm.png      |   Bin 0 -> 79280 bytes
 .../guide/start/images/my-web-summary-large.png |   Bin 0 -> 178785 bytes
 docs/guide/start/images/my-web-summary.png      |   Bin 0 -> 80583 bytes
 docs/guide/start/images/my-web.png              |   Bin 0 -> 83081 bytes
 docs/guide/start/index.md                       |    12 +
 docs/guide/start/managing.md                    |    56 +
 docs/guide/start/policies.md                    |    51 +
 docs/guide/start/running.md                     |    68 +
 docs/guide/yaml/chef/about-chef.md              |    50 +
 .../yaml/chef/advanced-chef-integration.md      |    48 +
 docs/guide/yaml/chef/chef-call-flow.png         |   Bin 0 -> 36222 bytes
 docs/guide/yaml/chef/creating-blueprints.md     |   103 +
 .../yaml/chef/example_yaml/mysql-chef-1.yaml    |    24 +
 .../yaml/chef/example_yaml/mysql-chef-2.yaml    |    28 +
 docs/guide/yaml/chef/index.md                   |    18 +
 docs/guide/yaml/chef/writing-chef.md            |    79 +
 docs/guide/yaml/clusters-and-policies.md        |    42 +
 docs/guide/yaml/clusters.md                     |    34 +
 docs/guide/yaml/configuring-vms.md              |    31 +
 docs/guide/yaml/creating-yaml.md                |    78 +
 docs/guide/yaml/custom-entities.md              |   107 +
 .../appserver-clustered-w-db-concise.yaml       |    15 +
 .../example_yaml/appserver-clustered-w-db.yaml  |    18 +
 .../appserver-configured-in-config.yaml         |     6 +
 .../yaml/example_yaml/appserver-configured.yaml |     5 +
 .../appserver-w-db-other-flavor.yaml            |    17 +
 .../guide/yaml/example_yaml/appserver-w-db.yaml |    15 +
 .../yaml/example_yaml/appserver-w-policy.yaml   |    26 +
 docs/guide/yaml/example_yaml/cluster-vm.yaml    |    12 +
 .../simple-appserver-with-location-byon.yaml    |    12 +
 .../simple-appserver-with-location.yaml         |     8 +
 .../yaml/example_yaml/simple-appserver.yaml     |     4 +
 docs/guide/yaml/example_yaml/simple-vm.yaml     |     8 +
 .../example_yaml/vanilla-bash-netcat-file.yaml  |     6 +
 .../vanilla-bash-netcat-restarter.yaml          |    20 +
 .../vanilla-bash-netcat-w-client.yaml           |    76 +
 .../yaml/example_yaml/vanilla-bash-netcat.yaml  |    18 +
 docs/guide/yaml/index.md                        |    17 +
 docs/guide/yaml/multiple-services.md            |    97 +
 docs/guide/yaml/setting-locations.md            |    45 +
 docs/guide/yaml/web-console-yaml-700.png        |   Bin 0 -> 138229 bytes
 docs/guide/yaml/web-console-yaml.png            |   Bin 0 -> 661136 bytes
 docs/guide/yaml/yaml-reference.md               |   181 +
 docs/index.md                                   |    21 +-
 .../contributor-agreements/brooklyn-ccla.txt    |   175 -
 .../contributor-agreements/brooklyn-icla.txt    |   128 -
 .../corporate-update-schedule.md                |     7 -
 .../license/contributor-agreements/corporate.md |     7 -
 docs/license/contributor-agreements/index.md    |    36 -
 .../contributor-agreements/individual.md        |     7 -
 docs/license/contributor-agreements/toc.json    |    14 -
 docs/license/index.md                           |    21 -
 docs/license/license.md                         |   194 -
 docs/license/toc.json                           |     8 -
 docs/meta/brooklyn-gpg-public-key.asc           |    21 -
 docs/meta/contact.include.md                    |     9 -
 docs/meta/contact.md                            |     7 -
 docs/meta/governance.md                         |    60 -
 docs/meta/irc.md                                |    31 -
 docs/meta/toc.json                              |    10 -
 docs/meta/verify.md                             |    36 -
 docs/meta/versions.md                           |   106 -
 docs/start/docs-summary.include.md              |     7 -
 docs/start/docs-summary.md                      |     9 -
 docs/start/download.md                          |   185 -
 docs/start/index.include.md                     |    50 -
 docs/start/index.md                             |     8 -
 docs/start/known-issues.md                      |    28 -
 docs/start/release-notes.md                     |    56 -
 docs/start/toc.json                             |    10 -
 docs/start/video.md                             |     7 -
 docs/start/walkthrough/index.md                 |   240 -
 .../walkthrough/wt-deployed-application-700.png |   Bin 176494 -> 0 bytes
 .../walkthrough/wt-deployed-application.png     |   Bin 127347 -> 0 bytes
 docs/start/walkthrough/wt-starting-700.png      |   Bin 303892 -> 0 bytes
 docs/start/walkthrough/wt-starting.png          |   Bin 332710 -> 0 bytes
 .../walkthrough/wt-tree-jboss-sensors-700.png   |   Bin 268853 -> 0 bytes
 .../start/walkthrough/wt-tree-jboss-sensors.png |   Bin 169929 -> 0 bytes
 docs/style/css/_archive_warning.scss            |    31 +
 docs/style/css/_basic.scss                      |    62 +
 docs/style/css/_blueprint_tour.scss             |   181 +
 docs/style/css/_code_blocks.scss                |    98 +
 docs/style/css/_feature_list.scss               |    60 +
 docs/style/css/_footer.scss                     |    36 +
 docs/style/css/_landing.scss                    |    26 +
 docs/style/css/_main_container.scss             |    84 +
 docs/style/css/_menu.scss                       |   201 +
 docs/style/css/_search.scss                     |    29 +
 docs/style/css/_tooltips.scss                   |    14 +
 docs/style/css/_util.scss                       |    27 +
 docs/style/css/code.css                         |    79 +
 docs/style/css/javadoc.scss                     |   119 +
 docs/style/css/website.scss                     |    20 +
 docs/style/deps/README.md                       |     3 +
 .../glyphicons-halflings-regular.eot            |   Bin 0 -> 20335 bytes
 .../glyphicons-halflings-regular.svg            |   229 +
 .../glyphicons-halflings-regular.ttf            |   Bin 0 -> 41280 bytes
 .../glyphicons-halflings-regular.woff           |   Bin 0 -> 23320 bytes
 docs/style/deps/bootstrap-theme.css             |   346 +
 docs/style/deps/bootstrap.css                   |  5784 ++++
 docs/style/deps/bootstrap.js                    |  1951 ++
 docs/style/deps/bootstrap.min.css               |     7 +
 docs/style/deps/bootstrap.min.js                |     6 +
 docs/style/deps/font-awesome-4.2.0/_LICENSE     |     1 +
 .../font-awesome-4.2.0/css/font-awesome.css     |  1672 ++
 .../font-awesome-4.2.0/css/font-awesome.min.css |     4 +
 .../font-awesome-4.2.0/fonts/FontAwesome.otf    |   Bin 0 -> 85908 bytes
 .../fonts/fontawesome-webfont.eot               |   Bin 0 -> 56006 bytes
 .../fonts/fontawesome-webfont.svg               |   520 +
 .../fonts/fontawesome-webfont.ttf               |   Bin 0 -> 112160 bytes
 .../fonts/fontawesome-webfont.woff              |   Bin 0 -> 65452 bytes
 .../less/bordered-pulled.less                   |    16 +
 .../deps/font-awesome-4.2.0/less/core.less      |    11 +
 .../font-awesome-4.2.0/less/fixed-width.less    |     6 +
 .../font-awesome-4.2.0/less/font-awesome.less   |    17 +
 .../deps/font-awesome-4.2.0/less/icons.less     |   552 +
 .../deps/font-awesome-4.2.0/less/larger.less    |    13 +
 .../deps/font-awesome-4.2.0/less/list.less      |    19 +
 .../deps/font-awesome-4.2.0/less/mixins.less    |    25 +
 .../deps/font-awesome-4.2.0/less/path.less      |    14 +
 .../less/rotated-flipped.less                   |    20 +
 .../deps/font-awesome-4.2.0/less/spinning.less  |    29 +
 .../deps/font-awesome-4.2.0/less/stacked.less   |    20 +
 .../deps/font-awesome-4.2.0/less/variables.less |   561 +
 .../scss/_bordered-pulled.scss                  |    16 +
 .../deps/font-awesome-4.2.0/scss/_core.scss     |    11 +
 .../font-awesome-4.2.0/scss/_fixed-width.scss   |     6 +
 .../deps/font-awesome-4.2.0/scss/_icons.scss    |   552 +
 .../deps/font-awesome-4.2.0/scss/_larger.scss   |    13 +
 .../deps/font-awesome-4.2.0/scss/_list.scss     |    19 +
 .../deps/font-awesome-4.2.0/scss/_mixins.scss   |    25 +
 .../deps/font-awesome-4.2.0/scss/_path.scss     |    14 +
 .../scss/_rotated-flipped.scss                  |    20 +
 .../deps/font-awesome-4.2.0/scss/_spinning.scss |    29 +
 .../deps/font-awesome-4.2.0/scss/_stacked.scss  |    20 +
 .../font-awesome-4.2.0/scss/_variables.scss     |   561 +
 .../font-awesome-4.2.0/scss/font-awesome.scss   |    17 +
 .../images/ui-bg_flat_0_aaaaaa_40x100.png       |   Bin 0 -> 180 bytes
 .../images/ui-bg_flat_75_ffffff_40x100.png      |   Bin 0 -> 178 bytes
 .../images/ui-bg_glass_55_fbf9ee_1x400.png      |   Bin 0 -> 120 bytes
 .../images/ui-bg_glass_65_ffffff_1x400.png      |   Bin 0 -> 105 bytes
 .../images/ui-bg_glass_75_dadada_1x400.png      |   Bin 0 -> 111 bytes
 .../images/ui-bg_glass_75_e6e6e6_1x400.png      |   Bin 0 -> 110 bytes
 .../images/ui-bg_glass_95_fef1ec_1x400.png      |   Bin 0 -> 119 bytes
 .../ui-bg_highlight-soft_75_cccccc_1x100.png    |   Bin 0 -> 101 bytes
 .../images/ui-icons_222222_256x240.png          |   Bin 0 -> 4369 bytes
 .../images/ui-icons_2e83ff_256x240.png          |   Bin 0 -> 4369 bytes
 .../images/ui-icons_454545_256x240.png          |   Bin 0 -> 4369 bytes
 .../images/ui-icons_888888_256x240.png          |   Bin 0 -> 4369 bytes
 .../images/ui-icons_cd0a0a_256x240.png          |   Bin 0 -> 4369 bytes
 .../deps/jquery-ui/jquery-ui-1.8.18.custom.css  |   565 +
 .../jquery-ui/jquery-ui-1.8.18.custom.min.js    |   356 +
 docs/style/deps/jquery.cookie.js                |    94 +
 docs/style/deps/jquery.js                       |  9190 ++++++
 docs/style/deps/jquery.min.js                   |     4 +
 docs/style/deps/octicons/LICENSE.txt            |     9 +
 docs/style/deps/octicons/README.md              |     1 +
 docs/style/deps/octicons/octicons-local.ttf     |   Bin 0 -> 52764 bytes
 docs/style/deps/octicons/octicons.css           |   235 +
 docs/style/deps/octicons/octicons.eot           |   Bin 0 -> 31440 bytes
 docs/style/deps/octicons/octicons.less          |   233 +
 docs/style/deps/octicons/octicons.svg           |   198 +
 docs/style/deps/octicons/octicons.ttf           |   Bin 0 -> 31272 bytes
 docs/style/deps/octicons/octicons.woff          |   Bin 0 -> 17492 bytes
 .../style/deps/octicons/sprockets-octicons.scss |   230 +
 docs/style/deps/superfish.js                    |   121 +
 docs/style/deps/underscore-min.js               |     6 +
 docs/style/deps/underscore-min.map              |     1 +
 docs/style/docs/code.css                        |    79 -
 docs/style/icons/clipboard-green-click.png      |   Bin 51832 -> 0 bytes
 docs/style/icons/clipboard-green-hover.png      |   Bin 51473 -> 0 bytes
 docs/style/icons/clipboard-green-normal.png     |   Bin 61853 -> 0 bytes
 docs/style/icons/clipboard.png                  |   Bin 3981 -> 0 bytes
 docs/style/icons/ok.png                         |   Bin 595 -> 0 bytes
 docs/style/icons/warning.png                    |   Bin 29886 -> 0 bytes
 docs/style/images/bridge.png                    |   Bin 20450 -> 0 bytes
 docs/style/images/brooklyn.gif                  |   Bin 4873 -> 0 bytes
 docs/style/images/divider-quicklinks.gif        |   Bin 817 -> 0 bytes
 .../img/apache-brooklyn-logo-244px-wide.png     |   Bin 0 -> 4892 bytes
 .../img/apache-brooklyn-logo-817px-wide.png     |   Bin 0 -> 10688 bytes
 docs/style/img/bridge-large-no-title.png        |   Bin 0 -> 66113 bytes
 docs/style/img/bridge.png                       |   Bin 0 -> 20450 bytes
 docs/style/img/brooklyn.gif                     |   Bin 0 -> 4873 bytes
 docs/style/img/clipboard-green-click.png        |   Bin 0 -> 51832 bytes
 docs/style/img/clipboard-green-hover.png        |   Bin 0 -> 51473 bytes
 docs/style/img/clipboard-green-normal.png       |   Bin 0 -> 61853 bytes
 docs/style/img/clipboard.png                    |   Bin 0 -> 3981 bytes
 docs/style/img/divider-quicklinks.gif           |   Bin 0 -> 817 bytes
 docs/style/img/feather.png                      |   Bin 0 -> 40042 bytes
 docs/style/img/github-1024-black.png            |   Bin 0 -> 15613 bytes
 docs/style/img/github-256-black.png             |   Bin 0 -> 12166 bytes
 docs/style/img/github-256-green.png             |   Bin 0 -> 13875 bytes
 docs/style/img/irc-256-black.png                |   Bin 0 -> 4446 bytes
 docs/style/img/irc-256-green.png                |   Bin 0 -> 5731 bytes
 docs/style/img/irc-icon.graffle                 |   640 +
 docs/style/img/ok.png                           |   Bin 0 -> 595 bytes
 docs/style/img/twitter-256-black.png            |   Bin 0 -> 10590 bytes
 docs/style/img/twitter-256-green.png            |   Bin 0 -> 11732 bytes
 docs/style/img/twitter-4096-black.png           |   Bin 0 -> 45680 bytes
 docs/style/img/warning.png                      |   Bin 0 -> 29886 bytes
 docs/style/js/_readme.txt                       |     2 +
 docs/style/js/jquery.cookie.js                  |    94 -
 docs/style/js/jquery/jquery-1.7.1.min.js        |     4 -
 .../js/jquery/jquery-ui-1.8.18.custom.min.js    |   356 -
 .../images/ui-bg_flat_0_aaaaaa_40x100.png       |   Bin 180 -> 0 bytes
 .../images/ui-bg_flat_75_ffffff_40x100.png      |   Bin 178 -> 0 bytes
 .../images/ui-bg_glass_55_fbf9ee_1x400.png      |   Bin 120 -> 0 bytes
 .../images/ui-bg_glass_65_ffffff_1x400.png      |   Bin 105 -> 0 bytes
 .../images/ui-bg_glass_75_dadada_1x400.png      |   Bin 111 -> 0 bytes
 .../images/ui-bg_glass_75_e6e6e6_1x400.png      |   Bin 110 -> 0 bytes
 .../images/ui-bg_glass_95_fef1ec_1x400.png      |   Bin 119 -> 0 bytes
 .../ui-bg_highlight-soft_75_cccccc_1x100.png    |   Bin 101 -> 0 bytes
 .../images/ui-icons_222222_256x240.png          |   Bin 4369 -> 0 bytes
 .../images/ui-icons_2e83ff_256x240.png          |   Bin 4369 -> 0 bytes
 .../images/ui-icons_454545_256x240.png          |   Bin 4369 -> 0 bytes
 .../images/ui-icons_888888_256x240.png          |   Bin 4369 -> 0 bytes
 .../images/ui-icons_cd0a0a_256x240.png          |   Bin 4369 -> 0 bytes
 .../smoothness/jquery-ui-1.8.18.custom.css      |   565 -
 docs/style/js/superfish.js                      |   121 -
 docs/style/js/underscore-min.js                 |     6 +
 docs/style/js/underscore-min.map                |     1 +
 docs/style/js/zeroclipboard/ZeroClipboard.js    |  1010 -
 .../style/js/zeroclipboard/ZeroClipboard.min.js |     9 -
 docs/style/js/zeroclipboard/ZeroClipboard.swf   |   Bin 1891 -> 0 bytes
 docs/style/style.css                            |   152 -
 docs/style/toc.css                              |    88 -
 docs/tests/jsonball/test_jsonball.md            |    18 -
 docs/tests/jsonball/test_jsonball_file.json     |     1 -
 docs/tests/jsonball/test_jsonball_page.json     |     2 -
 docs/tests/jsonball/toc.json                    |     6 -
 docs/toc-menu.json                              |    20 -
 docs/toc.json                                   |    21 -
 docs/use/api/index.md                           |    11 -
 docs/use/contact.md                             |     7 -
 docs/use/examples/before-begin.include.md       |    57 -
 .../console-geoscaling-details-w700.png         |   Bin 167441 -> 0 bytes
 .../console-geoscaling-details.png              |   Bin 176651 -> 0 bytes
 .../global-web-fabric/console-map-w700.png      |   Bin 201060 -> 0 bytes
 .../examples/global-web-fabric/console-map.png  |   Bin 331520 -> 0 bytes
 .../geopaas-deployed-app-w700.png               |   Bin 153738 -> 0 bytes
 .../global-web-fabric/geopaas-deployed-app.png  |   Bin 114615 -> 0 bytes
 docs/use/examples/global-web-fabric/index.md    |   378 -
 docs/use/examples/index.md                      |    18 -
 docs/use/examples/messaging/index.md            |   183 -
 .../nosql-cassandra/cassandra.include.md        |   282 -
 docs/use/examples/nosql-cassandra/index.md      |     7 -
 docs/use/examples/simple-web-cluster.md         |     9 -
 docs/use/examples/toc.json                      |    13 -
 docs/use/examples/webcluster.md                 |     9 -
 docs/use/examples/webcluster/index.md           |     7 -
 .../examples/webcluster/webcluster.include.md   |   124 -
 .../defining-applications/advanced-concepts.md  |   137 -
 .../guide/defining-applications/archetype.md    |    64 -
 .../defining-applications/basic-concepts.md     |    95 -
 ...ooklyn-flow-websequencediagrams.com-w400.png |   Bin 58518 -> 0 bytes
 .../brooklyn-flow-websequencediagrams.com.png   |   Bin 106928 -> 0 bytes
 .../defining-applications/chef-blueprints.md    |   235 -
 .../guide/defining-applications/common-usage.md |   145 -
 .../defining-applications/creating-yaml.md      |   417 -
 .../defining-applications/deploying-yaml.md     |    37 -
 .../example_files/tomcat_multi-location.java    |    33 -
 .../example_files/tomcat_nginx.java             |    35 -
 .../example_files/tomcat_simple.java            |    27 -
 .../appserver-clustered-w-db-concise.yaml       |    33 -
 .../example_yaml/appserver-clustered-w-db.yaml  |    36 -
 .../appserver-configured-in-config.yaml         |    24 -
 .../example_yaml/appserver-configured.yaml      |    23 -
 .../appserver-w-db-other-flavor.yaml            |    35 -
 .../example_yaml/appserver-w-db.yaml            |    33 -
 .../example_yaml/appserver-w-policy.yaml        |    44 -
 .../example_yaml/cluster-vm.yaml                |    30 -
 .../example_yaml/mysql-chef-1.yaml              |    42 -
 .../example_yaml/mysql-chef-2.yaml              |    46 -
 .../simple-appserver-with-location-byon.yaml    |    30 -
 .../simple-appserver-with-location.yaml         |    26 -
 .../example_yaml/simple-appserver.yaml          |    22 -
 .../example_yaml/simple-vm.yaml                 |    26 -
 .../example_yaml/vanilla-bash-netcat-file.yaml  |    24 -
 .../vanilla-bash-netcat-restarter.yaml          |    37 -
 .../vanilla-bash-netcat-w-client.yaml           |    90 -
 .../example_yaml/vanilla-bash-netcat.yaml       |    36 -
 .../use/guide/defining-applications/examples.md |   120 -
 docs/use/guide/defining-applications/toc.json   |    17 -
 .../web-console-yaml-700.png                    |   Bin 138229 -> 0 bytes
 .../defining-applications/web-console-yaml.png  |   Bin 661136 -> 0 bytes
 .../defining-applications/yaml-reference.md     |   183 -
 docs/use/guide/entities/index.md                |   133 -
 docs/use/guide/entities/toc.json                |    12 -
 docs/use/guide/extras/index.md                  |   160 -
 docs/use/guide/extras/toc.json                  |    11 -
 docs/use/guide/guide_toc.json                   |    25 -
 docs/use/guide/index.md                         |    33 -
 docs/use/guide/locations/index.md               |   104 -
 docs/use/guide/locations/toc.json               |     1 -
 docs/use/guide/management/index.md              |   383 -
 docs/use/guide/management/toc.json              |    18 -
 .../management/webconsole-dashboard-w400.png    |   Bin 137463 -> 0 bytes
 .../guide/management/webconsole-dashboard.png   |   Bin 214723 -> 0 bytes
 .../guide/management/webconsole-detail-w400.png |   Bin 111993 -> 0 bytes
 docs/use/guide/management/webconsole-detail.png |   Bin 165359 -> 0 bytes
 docs/use/guide/persistence/index.md             |   219 -
 docs/use/guide/persistence/toc.json             |    14 -
 docs/use/guide/policies/index.md                |   129 -
 docs/use/guide/policies/toc.json                |     8 -
 docs/use/guide/quickstart/brooklyn.properties   |   324 -
 docs/use/guide/quickstart/catalog.xml           |    41 -
 ...cation-catalog-web-cluster-with-db-large.png |   Bin 131618 -> 0 bytes
 ...talog-web-cluster-with-db-location-large.png |   Bin 152721 -> 0 bytes
 ...ion-catalog-web-cluster-with-db-location.png |   Bin 86425 -> 0 bytes
 ...-application-catalog-web-cluster-with-db.png |   Bin 76065 -> 0 bytes
 .../images/add-application-modal-yaml.png       |   Bin 68401 -> 0 bytes
 .../images/jboss7-cluster-policies-large.png    |   Bin 157883 -> 0 bytes
 .../images/jboss7-cluster-policies.png          |   Bin 94056 -> 0 bytes
 .../images/my-db-activities-large.png           |   Bin 208313 -> 0 bytes
 .../quickstart/images/my-db-activities.png      |   Bin 130262 -> 0 bytes
 .../images/my-web-cluster-starting.png          |   Bin 32948 -> 0 bytes
 .../my-web-cluster-stop-confirm-large.png       |   Bin 148155 -> 0 bytes
 .../images/my-web-cluster-stop-confirm.png      |   Bin 79280 -> 0 bytes
 .../quickstart/images/my-web-summary-large.png  |   Bin 178785 -> 0 bytes
 .../guide/quickstart/images/my-web-summary.png  |   Bin 80583 -> 0 bytes
 docs/use/guide/quickstart/images/my-web.png     |   Bin 83081 -> 0 bytes
 docs/use/guide/quickstart/index.md              |   221 -
 docs/use/guide/quickstart/my-web-cluster.yaml   |    37 -
 .../guide/quickstart/policies-and-catalogs.md   |    66 -
 docs/use/guide/quickstart/toc.json              |     4 -
 docs/use/guide/toc.json                         |    25 -
 docs/use/index.md                               |     9 -
 docs/use/toc.json                               |    12 -
 .../website/community/how-to-contribute-docs.md |   158 +
 docs/website/community/index.md                 |    73 +
 docs/website/community/irc.md                   |    14 +
 docs/website/community/mailing-lists.md         |    36 +
 docs/website/developers/code-standards.md       |    14 +
 docs/website/developers/committers/index.md     |    10 +
 .../committers/merging-contributed-code.md      |   118 +
 docs/website/developers/fork-after.png          |   Bin 0 -> 134377 bytes
 docs/website/developers/fork-before.png         |   Bin 0 -> 131674 bytes
 docs/website/developers/fork-new.png            |   Bin 0 -> 137626 bytes
 docs/website/developers/how-to-contribute.md    |   109 +
 docs/website/developers/index.md                |    42 +
 docs/website/developers/links.md                |    22 +
 docs/website/developers/pull-request.png        |   Bin 0 -> 94166 bytes
 docs/website/documentation/faq.md               |    22 +
 docs/website/documentation/glossary.md          |    92 +
 docs/website/documentation/increase-entropy.md  |    31 +
 docs/website/documentation/index.md             |    34 +
 docs/website/documentation/install-on-server.md |   128 +
 docs/website/documentation/other-docs.md        |    11 +
 docs/website/download/index.md                  |    42 +
 docs/website/download/verify.md                 |    92 +
 docs/website/index.md                           |    76 +
 docs/website/learnmore/blueprint-tour.md        |   191 +
 docs/website/learnmore/catalog/common.js        |    94 +
 .../brooklyn.enricher.DeltaEnricher.html        |    59 +
 .../brooklyn.enricher.HttpLatencyDetector.html  |    59 +
 .../brooklyn.enricher.RollingMeanEnricher.html  |    59 +
 ....enricher.RollingTimeWindowMeanEnricher.html |    59 +
 ...klyn.enricher.TimeFractionDeltaEnricher.html |    59 +
 ...klyn.enricher.TimeWeightedDeltaEnricher.html |    59 +
 .../brooklyn.enricher.basic.Aggregator.html     |    59 +
 .../brooklyn.enricher.basic.Combiner.html       |    59 +
 .../brooklyn.enricher.basic.Propagator.html     |    59 +
 .../brooklyn.enricher.basic.Transformer.html    |    59 +
 ...ooklyn.policy.ha.ServiceFailureDetector.html |    59 +
 ...lyn.entity.basic.VanillaSoftwareProcess.html |    66 +
 ...ntity.brooklynnode.BrooklynEntityMirror.html |    66 +
 ...ooklyn.entity.brooklynnode.BrooklynNode.html |    66 +
 ...lyn.entity.database.mariadb.MariaDbNode.html |    66 +
 ...rooklyn.entity.database.mysql.MySqlNode.html |    66 +
 ...tity.database.postgresql.PostgreSqlNode.html |    66 +
 ...lyn.entity.database.rubyrep.RubyRepNode.html |    66 +
 .../brooklyn.entity.machine.MachineEntity.html  |    66 +
 ...ntity.messaging.activemq.ActiveMQBroker.html |    66 +
 ...lyn.entity.messaging.kafka.KafkaCluster.html |    66 +
 ...ooklyn.entity.messaging.qpid.QpidBroker.html |    66 +
 ...yn.entity.messaging.rabbit.RabbitBroker.html |    66 +
 .../brooklyn.entity.messaging.storm.Storm.html  |    66 +
 ....entity.messaging.storm.StormDeployment.html |    66 +
 ...oklyn.entity.monitoring.monit.MonitNode.html |    66 +
 ...oklyn.entity.network.bind.BindDnsServer.html |    66 +
 ...ity.nosql.cassandra.CassandraDatacenter.html |    66 +
 ....entity.nosql.cassandra.CassandraFabric.html |    66 +
 ...yn.entity.nosql.cassandra.CassandraNode.html |    66 +
 ...entity.nosql.couchbase.CouchbaseCluster.html |    66 +
 ...yn.entity.nosql.couchbase.CouchbaseNode.html |    66 +
 ...ooklyn.entity.nosql.couchdb.CouchDBNode.html |    66 +
 ...osql.elasticsearch.ElasticSearchCluster.html |    66 +
 ...y.nosql.elasticsearch.ElasticSearchNode.html |    66 +
 ...klyn.entity.nosql.mongodb.MongoDBServer.html |    66 +
 ...ty.nosql.mongodb.sharding.MongoDBRouter.html |    66 +
 ...ngodb.sharding.MongoDBShardedDeployment.html |    66 +
 ...rooklyn.entity.nosql.redis.RedisCluster.html |    66 +
 .../brooklyn.entity.nosql.redis.RedisStore.html |    66 +
 .../brooklyn.entity.nosql.riak.RiakCluster.html |    66 +
 .../brooklyn.entity.nosql.riak.RiakNode.html    |    66 +
 .../brooklyn.entity.nosql.solr.SolrServer.html  |    66 +
 ...ooklyn.entity.osgi.karaf.KarafContainer.html |    66 +
 .../brooklyn.entity.pool.ServerPool.html        |    66 +
 ...klyn.entity.proxy.nginx.NginxController.html |    66 +
 ...y.webapp.ControlledDynamicWebAppCluster.html |    66 +
 ...klyn.entity.webapp.DynamicWebAppCluster.html |    66 +
 ...ooklyn.entity.webapp.jboss.JBoss6Server.html |    66 +
 ...ooklyn.entity.webapp.jboss.JBoss7Server.html |    66 +
 ...ooklyn.entity.webapp.jetty.Jetty6Server.html |    66 +
 ...ntity.webapp.nodejs.NodeJsWebAppService.html |    66 +
 ...oklyn.entity.webapp.tomcat.TomcatServer.html |    66 +
 ...klyn.entity.zookeeper.ZooKeeperEnsemble.html |    66 +
 ...brooklyn.entity.zookeeper.ZooKeeperNode.html |    66 +
 docs/website/learnmore/catalog/index.md         |   131 +
 docs/website/learnmore/catalog/items.css        |   153 +
 docs/website/learnmore/catalog/items.js         | 24674 +++++++++++++++++
 .../learnmore/catalog/libs/js/bloodhound.js     |   727 +
 ...brooklyn.entity.pool.ServerPoolLocation.html |    62 +
 .../brooklyn.location.AddressableLocation.html  |    62 +
 .../brooklyn.location.MachineLocation.html      |    62 +
 ...tMixins$RichMachineProvisioningLocation.html |    62 +
 ...yn.location.MachineProvisioningLocation.html |    62 +
 ...rooklyn.location.basic.AbstractLocation.html |    62 +
 ....AggregatingMachineProvisioningLocation.html |    62 +
 ...ic.FixedListMachineProvisioningLocation.html |    62 +
 ...neProvisioningLocation$LocalhostMachine.html |    62 +
 ...ic.LocalhostMachineProvisioningLocation.html |    62 +
 ...rooklyn.location.basic.LocationInternal.html |    62 +
 .../brooklyn.location.basic.MultiLocation.html  |    62 +
 ...ooklyn.location.basic.SimulatedLocation.html |    62 +
 ...basic.SingleMachineProvisioningLocation.html |    62 +
 ...oklyn.location.basic.SshMachineLocation.html |    62 +
 ...bstractCloudMachineProvisioningLocation.html |    62 +
 ...AbstractJcloudsSubnetSshMachineLocation.html |    62 +
 ...ooklyn.location.jclouds.JcloudsLocation.html |    62 +
 ...ation.jclouds.JcloudsSshMachineLocation.html |    62 +
 ...followthesun.DefaultFollowTheSunModel$1.html |    62 +
 ...lyn.policy.autoscaling.AutoScalerPolicy.html |    59 +
 ....policy.followthesun.FollowTheSunPolicy.html |    59 +
 ...lyn.policy.ha.ConnectionFailureDetector.html |    59 +
 .../brooklyn.policy.ha.ServiceReplacer.html     |    59 +
 .../brooklyn.policy.ha.ServiceRestarter.html    |    59 +
 ...olicy.loadbalancing.LoadBalancingPolicy.html |    59 +
 .../learnmore/features/blueprint-compose.png    |   Bin 0 -> 15299 bytes
 .../features/blueprint-machine-specs.png        |   Bin 0 -> 16214 bytes
 docs/website/learnmore/features/blueprinting.md |    24 +
 docs/website/learnmore/features/index.md        |    18 +
 .../learnmore/features/java-hierarchy.png       |   Bin 0 -> 106962 bytes
 docs/website/learnmore/features/java.md         |    41 +
 docs/website/learnmore/features/operations.md   |    75 +
 docs/website/learnmore/features/ops-console.png |   Bin 0 -> 491417 bytes
 docs/website/learnmore/features/ops-rest.png    |   Bin 0 -> 62894 bytes
 .../learnmore/features/policy-based-mgmt.md     |    28 +
 docs/website/learnmore/index.md                 |    30 +
 docs/website/learnmore/theory.md                |   184 +
 docs/website/meta/license.md                    |   205 +
 docs/website/meta/sitemap.md                    |    25 +
 docs/website/meta/versions.md                   |    73 +
 examples/global-web-fabric/pom.xml              |     6 +-
 .../brooklyn/demo/GlobalWebFabricExample.java   |     2 +-
 examples/pom.xml                                |    30 +-
 examples/simple-messaging-pubsub/pom.xml        |    18 +-
 .../src/main/java/brooklyn/demo/Publish.java    |    18 +-
 .../demo/StandaloneQpidBrokerExample.java       |    24 +-
 .../src/main/resources/passwd                   |    18 +
 examples/simple-nosql-cluster/pom.xml           |     9 +-
 .../brooklyn/demo/CumulusRDFApplication.java    |    37 +-
 .../demo/HighAvailabilityCassandraCluster.java  |     7 +-
 .../java/brooklyn/demo/ResilientMongoDbApp.java |     4 +-
 .../java/brooklyn/demo/RiakClusterExample.java  |    11 +-
 .../brooklyn/demo/SimpleCassandraCluster.java   |     2 +-
 .../main/java/brooklyn/demo/StormSampleApp.java |     2 +-
 .../brooklyn/demo/WideAreaCassandraCluster.java |    13 +-
 .../brooklyn/demo/ha-cassandra-cluster.yaml     |    45 +
 .../brooklyn/demo/simple-cassandra-cluster.yaml |    28 +
 .../demo/wide-area-cassandra-cluster.yaml       |    41 +
 .../src/main/resources/cumulusrdf-0.6.1-pre.jar |   Bin 22259221 -> 0 bytes
 .../src/main/resources/cumulusrdf.war           |   Bin 21491919 -> 0 bytes
 examples/simple-open-loop-policy/README.txt     |    72 -
 .../org.marre.smsj-1.0.0-20051126.jar           |   Bin 134604 -> 0 bytes
 .../org.marre.smsj-1.0.0-20051126.pom           |     9 -
 .../org.marre.smsj/maven-metadata-local.xml     |    30 -
 examples/simple-open-loop-policy/pom.xml        |   141 -
 .../resources/jmeter-test-plan.jmx              |   143 -
 .../src/main/java/brooklyn/demo/Sms.java        |    63 -
 .../demo/WebClusterDatabaseOpenLoopExample.java |   157 -
 .../main/resources/visitors-creation-script.sql |    35 -
 .../src/test/java/brooklyn/demo/SmsTest.java    |    50 -
 examples/simple-web-cluster/pom.xml             |    14 +-
 .../brooklyn/demo/NodeJsTodoApplication.java    |    59 +
 .../brooklyn/demo/SingleWebServerExample.java   |     2 +-
 .../demo/WebClusterDatabaseExample.java         |     2 +-
 .../demo/WebClusterDatabaseExampleApp.java      |     8 +-
 .../demo/WebClusterDatabaseExampleGroovy.groovy |     2 +-
 .../java/brooklyn/demo/WebClusterExample.java   |     2 +-
 .../resources/brooklyn/demo/nodejs-todo.yaml    |    53 +
 ...lusterDatabaseExampleAppIntegrationTest.java |    31 +-
 examples/webapps/hello-world-sql/.gitignore     |     1 +
 examples/webapps/hello-world-sql/pom.xml        |    28 +-
 .../src/main/webapp/available.jsp               |   156 +-
 .../hello-world-sql/src/main/webapp/db.jsp      |   246 +-
 .../src/main/webapp/hadoop-chat.jsp             |   220 +-
 .../src/main/webapp/hadoop-wordcount.jsp        |   228 +-
 .../hello-world-sql/src/main/webapp/index.html  |    50 +-
 .../hello-world-sql/src/main/webapp/riak.jsp    |   148 +
 examples/webapps/hello-world-webapp/.gitignore  |     1 +
 examples/webapps/hello-world-webapp/pom.xml     |     2 +-
 .../src/main/webapp/available.jsp               |   152 +-
 .../hello-world-webapp/src/main/webapp/db.jsp   |   246 +-
 .../src/main/webapp/hadoop-chat.jsp             |   220 +-
 .../src/main/webapp/hadoop-wordcount.jsp        |   228 +-
 .../src/main/webapp/index.html                  |    50 +-
 examples/webapps/pom.xml                        |     5 +-
 locations/jclouds/pom.xml                       |    64 +-
 .../JcloudsBlobStoreBasedObjectStore.java       |    67 +-
 .../jclouds/JcloudsStoreObjectAccessor.java     |     2 +-
 .../location/jclouds/BrooklynImageChooser.java  |    44 +-
 .../jclouds/ComputeServiceRegistry.java         |    28 +
 .../jclouds/ComputeServiceRegistryImpl.java     |   175 +
 .../jclouds/JcloudsByonLocationResolver.java    |    22 +-
 .../location/jclouds/JcloudsLocation.java       |   594 +-
 .../location/jclouds/JcloudsLocationConfig.java |    50 +-
 .../jclouds/JcloudsLocationResolver.java        |   223 +
 .../location/jclouds/JcloudsMachineNamer.java   |    14 +-
 .../location/jclouds/JcloudsResolver.java       |   222 -
 .../jclouds/JcloudsSshMachineLocation.java      |    53 +-
 .../brooklyn/location/jclouds/JcloudsUtil.java  |   190 +-
 .../jclouds/SudoTtyFixingCustomizer.java        |    56 +
 .../BrooklynStandardJcloudsGuiceModule.java     |    32 -
 ...SoftLayerFastVirtualGuestToNodeMetadata.java |    96 -
 .../JcloudsPortForwarderExtension.java          |    13 +
 .../services/brooklyn.location.LocationResolver |     2 +-
 .../resources/sample/script/setup-server.sh     |     2 +-
 .../persister/jclouds/BlobStoreExpiryTest.java  |    32 +-
 ...nMementoPersisterJcloudsObjectStoreTest.java |    12 +-
 .../JcloudsBlobStoreBasedObjectStoreTest.java   |   119 +
 .../JcloudsObjectStoreAccessorWriterTest.java   |    89 +-
 .../jclouds/AbstractJcloudsLiveTest.java        |   158 +
 .../jclouds/AbstractJcloudsStubbedLiveTest.java |   133 +
 .../location/jclouds/AbstractJcloudsTest.java   |   151 -
 .../jclouds/BrooklynMachinePoolLiveTest.java    |     2 +-
 .../jclouds/DelegatingComputeService.java       |   229 +
 .../JcloudsByonLocationResolverAwsLiveTest.java |   178 +
 ...dsByonLocationResolverSoftlayerLiveTest.java |   105 +
 .../JcloudsByonLocationResolverTest.java        |   172 +-
 .../JcloudsHardwareProfilesStubbedLiveTest.java |    78 +
 .../jclouds/JcloudsLocationMetadataTest.java    |     3 +-
 .../JcloudsLocationRebindMachineLiveTest.java   |    13 +-
 .../jclouds/JcloudsLocationResolverTest.java    |    21 +-
 ...ationTemplateOptionsCustomisersLiveTest.java |    96 +
 .../location/jclouds/JcloudsLocationTest.java   |    14 +-
 .../location/jclouds/JcloudsLoginLiveTest.java  |    67 +-
 .../location/jclouds/JcloudsMinRamLiveTest.java |    59 -
 .../location/jclouds/JcloudsSshingLiveTest.java |    61 +
 .../location/jclouds/LiveTestEntity.java        |    15 +-
 .../jclouds/RebindJcloudsLocationLiveTest.java  |    36 +-
 ...loudsLocationUserLoginAndConfigLiveTest.java |     3 +-
 ...hineProvisioningLocationJcloudsLiveTest.java |     2 +-
 .../jclouds/StandaloneJcloudsLiveTest.java      |     4 +-
 .../JcloudsPortForwardingLiveTest.java          |   117 -
 .../JcloudsPortForwardingStubbedLiveTest.java   |   197 +
 .../pool/JcloudsMachinePoolLiveTest.java        |     4 +-
 .../GreenhouseDataLocationLiveTest.groovy       |    59 -
 .../zone/AwsAvailabilityZoneExtensionTest.java  |     8 +-
 ...location-test-various-login-credentials.yaml |    67 +
 policy/pom.xml                                  |    33 +-
 .../java/brooklyn/enricher/DeltaEnricher.java   |     3 +
 .../brooklyn/enricher/HttpLatencyDetector.java  |    43 +-
 .../brooklyn/enricher/RollingMeanEnricher.java  |     3 +
 .../enricher/RollingTimeWindowMeanEnricher.java |     3 +
 .../enricher/TimeFractionDeltaEnricher.java     |     3 +
 .../enricher/TimeWeightedDeltaEnricher.java     |     4 +
 .../policy/autoscaling/AutoScalerPolicy.java    |    56 +-
 .../policy/followthesun/FollowTheSunPolicy.java |     3 +-
 .../policy/followthesun/WeightedObject.java     |    94 +-
 .../policy/ha/ConnectionFailureDetector.java    |     3 +
 .../policy/ha/MemberFailureDetectionPolicy.java |     8 +-
 .../policy/ha/ServiceFailureDetector.java       |   462 +-
 .../brooklyn/policy/ha/ServiceReplacer.java     |     9 +-
 .../brooklyn/policy/ha/ServiceRestarter.java    |     8 +-
 .../loadbalancing/BalanceableContainer.java     |    13 +-
 .../loadbalancing/BalanceableWorkerPool.java    |     3 +
 .../BalanceableWorkerPoolImpl.java              |     6 +-
 .../DefaultBalanceablePoolModel.java            |     2 +-
 .../loadbalancing/LoadBalancingPolicy.java      |    22 +-
 .../entity/brooklyn/BrooklynMetricsTest.java    |    25 +-
 .../autoscaling/AutoScalerPolicyMetricTest.java |    54 +-
 .../autoscaling/AutoScalerPolicyRebindTest.java |     8 +-
 .../AutoScalerPolicyReconfigurationTest.java    |    29 +-
 .../autoscaling/AutoScalerPolicyTest.java       |    76 +-
 .../AbstractFollowTheSunPolicyTest.java         |     7 +-
 .../FollowTheSunPolicySoakTest.java             |    16 +-
 .../brooklyn/policy/ha/HaPolicyRebindTest.java  |     9 +-
 ...ServiceFailureDetectorStabilizationTest.java |    38 +-
 .../policy/ha/ServiceFailureDetectorTest.java   |   207 +-
 .../brooklyn/policy/ha/ServiceReplacerTest.java |    39 +-
 .../policy/ha/ServiceRestarterTest.java         |     4 +-
 .../AbstractLoadBalancingPolicyTest.java        |     2 +-
 .../loadbalancing/LoadBalancingPolicyTest.java  |     7 +-
 .../loadbalancing/MockContainerEntity.java      |     5 +-
 .../loadbalancing/MockContainerEntityImpl.java  |     9 +-
 .../policy/loadbalancing/MockItemEntity.java    |     1 +
 pom.xml                                         |   499 +-
 sandbox/cassandra-multicloud-snitch/pom.xml     |     2 +-
 sandbox/database/pom.xml                        |    28 +-
 .../entity/database/derby/DerbyDatabase.java    |     4 +-
 sandbox/dropwizard/README.txt                   |    31 -
 sandbox/dropwizard/brooklyn                     |    25 -
 sandbox/dropwizard/brooklynd                    |    21 -
 sandbox/dropwizard/config.sample.yml            |    65 -
 sandbox/dropwizard/pom.xml                      |   232 -
 .../AppByType_WebClusterDatabaseExample.json    |     7 -
 .../AppByType_WebClusterDatabaseExample.sh      |    21 -
 .../samples/WebClusterWithMySQLDatabase.groovy  |    83 -
 sandbox/dropwizard/samples/location.json        |     1 -
 sandbox/dropwizard/samples/mysql.json           |    10 -
 sandbox/dropwizard/samples/redis.json           |    11 -
 .../src/main/java/brooklyn/cli/Client.java      |   116 -
 .../brooklyn/cli/commands/BrooklynCommand.java  |   245 -
 .../cli/commands/CatalogEntitiesCommand.java    |    58 -
 .../cli/commands/CatalogPoliciesCommand.java    |    58 -
 .../cli/commands/CommandExecutionException.java |    33 -
 .../brooklyn/cli/commands/DeployCommand.java    |   220 -
 .../java/brooklyn/cli/commands/HelpCommand.java |    40 -
 .../cli/commands/ListApplicationsCommand.java   |    60 -
 .../brooklyn/cli/commands/UndeployCommand.java  |    62 -
 .../brooklyn/cli/commands/VersionCommand.java   |    50 -
 .../brooklyn/rest/BrooklynConfiguration.java    |    96 -
 .../java/brooklyn/rest/BrooklynService.java     |   175 -
 .../brooklyn/rest/ExecutorConfiguration.java    |    40 -
 .../brooklyn/rest/auth/BasicAuthFilter.java     |   120 -
 .../rest/auth/ConfigBasedAuthenticator.java     |    54 -
 .../src/main/java/brooklyn/rest/auth/User.java  |    84 -
 .../brooklyn/rest/commands/BrooklynCommand.java |   190 -
 .../applications/DeleteApplicationCommand.java  |    53 -
 .../applications/InvokeEffectorCommand.java     |    62 -
 .../applications/ListApplicationsCommand.java   |    53 -
 .../applications/ListEffectorsCommand.java      |    83 -
 .../applications/QuerySensorsCommand.java       |    84 -
 .../applications/StartApplicationCommand.java   |   101 -
 .../catalog/CatalogEntityDetailsCommand.java    |    56 -
 .../catalog/ListCatalogEntitiesCommand.java     |    48 -
 .../catalog/ListCatalogPoliciesCommand.java     |    47 -
 .../rest/commands/catalog/LoadClassCommand.java |    61 -
 .../commands/locations/AddLocationCommand.java  |    59 -
 .../locations/ListLocationsCommand.java         |    49 -
 .../rest/health/GeneralHealthCheck.java         |    33 -
 .../brooklyn/rest/views/SwaggerUiResource.java  |    52 -
 .../java/brooklyn/rest/views/SwaggerUiView.java |   114 -
 .../brooklyn/rest/views/WebClientResource.java  |    52 -
 .../dropwizard/logging/AsyncAppender.java       |    98 -
 .../dropwizard/src/main/resources/banner.txt    |     8 -
 .../brooklyn/rest/views/swagger-ui.ftl          |   192 -
 .../java/brooklyn/cli/ClientNoAuthTest.java     |    37 -
 .../src/test/java/brooklyn/cli/ClientTest.java  |   214 -
 .../java/brooklyn/cli/ClientWithAuthTest.java   |    53 -
 .../src/test/java/brooklyn/cli/ExampleApp.java  |    38 -
 .../cli/commands/DeployCommandTest.java         |    61 -
 .../ApplicationCommandsIntegrationTest.java     |   115 -
 .../rest/commands/ApplicationCommandsTest.java  |   120 -
 .../rest/commands/BrooklynCommandTest.java      |   106 -
 .../rest/commands/CatalogCommandsTest.java      |    95 -
 .../rest/commands/LocationCommandsTest.java     |    51 -
 .../brooklyn/rest/views/SwaggerUiViewTest.java  |   113 -
 .../resources/config/test-config-with-auth.yml  |    64 -
 .../src/test/resources/config/test-config.yml   |    59 -
 .../demo/todo/CustomLocationInfo.groovy         |   164 -
 .../brooklyn/demo/todo/GemfireExample.groovy    |    77 -
 .../brooklyn/demo/todo/PreBuiltImages.groovy    |   123 -
 .../demo/todo/WebAppFabricExample.groovy        |   116 -
 .../demo/todo/WebAppWideAreaExample.groovy      |   134 -
 .../todo/WebClusterExampleNewDsl.groovyMock     |   106 -
 .../demo/tomcat/todo/TomcatClusterApp.groovy    |    51 -
 .../todo/TomcatClusterWithNginxApp.groovy       |    63 -
 .../demo/tomcat/todo/TomcatFabricApp.groovy     |    72 -
 .../demo/tomcat/todo/TomcatServerApp.groovy     |    42 -
 .../brooklyn/earlythoughts/BigAppBixby.groovy   |    54 -
 .../earlythoughts/BigAppBrooklyn.groovy         |    54 -
 .../earlythoughts/PretendLocations.groovy       |    90 -
 .../main/resources/gemfire/gemfire-myapp.jar    |     0
 .../src/main/resources/gemfire/server-conf.xml  |    50 -
 .../gemfire/springtravel-datamodel.jar          |   Bin 704694 -> 0 bytes
 .../examples/src/main/resources/hello-world.war |   Bin 85280 -> 0 bytes
 .../src/main/resources/swf-booking-mvc.war      |   Bin 12415853 -> 0 bytes
 sandbox/examples/src/main/scripts/amis.txt      |     5 -
 .../src/main/scripts/create-all-instances.sh    |    63 -
 .../src/main/scripts/create-instance.sh         |   121 -
 .../src/main/scripts/run-at-instances.sh        |    47 -
 .../examples/src/main/scripts/stop-instances.sh |    40 -
 sandbox/extra/pom.xml                           |    16 +-
 sandbox/monitoring/pom.xml                      |    12 +-
 .../entity/monitoring/zabbix/ZabbixFeed.java    |    86 +-
 .../monitoring/zabbix/ZabbixPollConfig.java     |     6 +
 sandbox/nosql/pom.xml                           |    30 +-
 .../nosql/infinispan/Infinispan5Server.java     |     4 +-
 .../nosql/infinispan/Infinispan5SshDriver.java  |     5 -
 software/base/pom.xml                           |    25 +-
 .../basic/AbstractSoftwareProcessDriver.java    |   121 +-
 .../basic/AbstractSoftwareProcessSshDriver.java |   339 +-
 .../entity/basic/EmptySoftwareProcessImpl.java  |    11 +-
 .../basic/EmptySoftwareProcessSshDriver.java    |    27 +-
 .../brooklyn/entity/basic/SameServerEntity.java |     7 +-
 .../entity/basic/SameServerEntityImpl.java      |    24 +-
 .../brooklyn/entity/basic/SoftwareProcess.java  |   193 +-
 .../entity/basic/SoftwareProcessDriver.java     |     4 +-
 ...wareProcessDriverLifecycleEffectorTasks.java |    58 +-
 .../entity/basic/SoftwareProcessImpl.java       |   201 +-
 .../entity/basic/VanillaSoftwareProcess.java    |    46 +-
 .../basic/VanillaSoftwareProcessSshDriver.java  |     2 -
 .../entity/basic/lifecycle/ScriptHelper.java    |    31 +-
 .../entity/brooklynnode/BrooklynCluster.java    |    65 +
 .../brooklynnode/BrooklynClusterImpl.java       |   116 +
 .../brooklynnode/BrooklynEntityMirror.java      |     5 +
 .../brooklynnode/BrooklynEntityMirrorImpl.java  |   160 +-
 .../entity/brooklynnode/BrooklynNode.java       |   139 +-
 .../entity/brooklynnode/BrooklynNodeDriver.java |     2 +
 .../entity/brooklynnode/BrooklynNodeImpl.java   |   281 +-
 .../brooklynnode/BrooklynNodeSshDriver.java     |    93 +-
 .../entity/brooklynnode/EntityHttpClient.java   |    67 +
 .../brooklynnode/EntityHttpClientImpl.java      |   153 +
 .../entity/brooklynnode/LocalBrooklynNode.java  |    37 +
 .../brooklynnode/LocalBrooklynNodeImpl.java     |    46 +
 .../brooklynnode/RemoteEffectorBuilder.java     |    84 +
 .../BrooklynClusterUpgradeEffectorBody.java     |   207 +
 .../BrooklynNodeUpgradeEffectorBody.java        |   229 +
 .../effector/SelectMasterEffectorBody.java      |   175 +
 .../SetHighAvailabilityModeEffectorBody.java    |    64 +
 ...SetHighAvailabilityPriorityEffectorBody.java |    55 +
 .../brooklyn/entity/chef/ChefAttributeFeed.java |   112 +-
 .../entity/chef/ChefAttributePollConfig.java    |    53 +
 .../entity/chef/ChefLifecycleEffectorTasks.java |    10 +-
 .../java/brooklyn/entity/chef/ChefTasks.java    |    14 +-
 .../brooklyn/entity/chef/KnifeTaskFactory.java  |     4 +-
 .../java/JavaSoftwareProcessSshDriver.java      |    32 +-
 .../java/brooklyn/entity/java/JmxSupport.java   |   129 +-
 .../java/brooklyn/entity/java/UsesJava.java     |     2 +-
 .../main/java/brooklyn/entity/java/UsesJmx.java |   125 +-
 .../entity/machine/MachineAttributes.java       |     3 -
 .../brooklyn/entity/machine/MachineEntity.java  |     2 +
 .../entity/machine/MachineEntityImpl.java       |    16 +-
 .../java/brooklyn/entity/pool/ServerPool.java   |     7 +-
 .../brooklyn/entity/pool/ServerPoolImpl.java    |     8 +-
 .../software/MachineLifecycleEffectorTasks.java |   460 +-
 .../entity/software/http/HttpRequestSensor.java |    65 +-
 .../software/java/JmxAttributeSensor.java       |   123 +
 .../entity/software/ssh/SshCommandEffector.java |     6 +-
 .../entity/software/ssh/SshCommandSensor.java   |    97 +-
 .../event/feed/jmx/JmxAttributePollConfig.java  |     7 +-
 .../java/brooklyn/event/feed/jmx/JmxFeed.java   |   122 +-
 .../java/brooklyn/event/feed/jmx/JmxHelper.java |    10 +-
 .../jmx/JmxNotificationSubscriptionConfig.java  |    14 +
 .../event/feed/jmx/JmxOperationPollConfig.java  |     4 +
 .../entity/brooklynnode/brooklyn-cluster.yaml   |    33 +
 .../brooklyn-node-persisting-to-tmp.yaml        |    27 +
 .../entity/brooklynnode/brooklyn-node.yaml      |    35 +
 .../brooklyn/entity/AbstractEc2LiveTest.java    |     6 +-
 .../entity/AbstractSoftlayerLiveTest.java       |    10 +-
 ...ctSoftwareProcessRestartIntegrationTest.java |    93 +
 .../entity/basic/SameServerEntityTest.java      |     2 +-
 .../entity/basic/SoftwareProcessEntityTest.java |   237 +-
 ...SoftwareProcessSshDriverIntegrationTest.java |   110 +-
 .../basic/SoftwareProcessSubclassTest.java      |    21 +-
 ...ftwareProcessAndChildrenIntegrationTest.java |     2 +-
 .../entity/basic/lifecycle/MyEntityImpl.java    |     3 +-
 .../basic/lifecycle/NaiveScriptRunnerTest.java  |     3 +
 .../basic/lifecycle/ScriptHelperTest.java       |    60 +-
 .../lifecycle/StartStopSshDriverTest.groovy     |   135 -
 .../basic/lifecycle/StartStopSshDriverTest.java |   166 +
 .../BrooklynNodeIntegrationTest.java            |   344 +-
 .../entity/brooklynnode/BrooklynNodeTest.java   |    48 +-
 .../brooklynnode/CallbackEntityHttpClient.java  |    95 +
 .../entity/brooklynnode/MockBrooklynNode.java   |    68 +
 .../brooklynnode/SameBrooklynNodeImpl.java      |     5 +
 .../brooklynnode/SelectMasterEffectorTest.java  |   257 +
 .../entity/chef/ChefLiveTestSupport.java        |    11 +-
 .../AbstractChefToyMySqlEntityLiveTest.java     |     3 +-
 .../ChefSoloDriverMySqlEntityLiveTest.java      |     3 +-
 ...micChefAutodetectToyMySqlEntityLiveTest.java |     3 +-
 ...DynamicChefServerToyMySqlEntityLiveTest.java |     3 +-
 .../DynamicChefSoloToyMySqlEntityLiveTest.java  |     3 +-
 .../brooklyn/entity/java/EntityPollingTest.java |     8 +-
 .../brooklyn/entity/java/JmxSupportTest.java    |     2 +-
 .../entity/java/VanillaJavaAppTest.java         |     8 +-
 .../entity/machine/MachineEntityRebindTest.java |    45 +
 .../entity/pool/AbstractServerPoolTest.java     |    29 +-
 .../entity/pool/ServerPoolRebindTest.java       |    15 +-
 .../brooklyn/entity/pool/ServerPoolTest.java    |    44 +-
 .../MachineLifecycleEffectorTasksTest.java      |    51 +
 .../entity/software/SoftwareEffectorTest.java   |     3 +-
 .../entity/software/SshEffectorTasksTest.java   |     2 +-
 .../software/http/HttpRequestSensorTest.java    |    13 +-
 .../mysql/AbstractToyMySqlEntityTest.java       |    18 +-
 .../mysql/DynamicToyMySqlEntityBuilder.java     |     9 +
 .../mysql/DynamicToyMySqlEntityTest.java        |     6 +-
 .../software/ssh/SshCommandIntegrationTest.java |    19 +-
 .../brooklyn/event/feed/jmx/JmxFeedTest.java    |     2 +-
 .../event/feed/jmx/RebindJmxFeedTest.java       |   146 +
 .../usage/ApplicationUsageTrackingTest.java     |   182 +
 .../usage/LocationUsageTrackingTest.java        |   108 +-
 .../usage/RecordingUsageListener.java           |    70 +
 .../management/usage/UsageListenerTest.java     |   108 +
 .../resources/brooklyn/entity/basic/frogs.txt   |    27 +
 .../brooklyn/entity/basic/template.yaml         |    23 +
 .../basic/template_with_extra_substitutions.txt |    17 +
 software/database/pom.xml                       |    61 +-
 .../entity/database/mariadb/MariaDbNode.java    |     9 +-
 .../database/mariadb/MariaDbSshDriver.java      |    16 +-
 .../entity/database/mysql/MySqlNodeImpl.java    |     2 +-
 .../entity/database/mysql/MySqlSshDriver.java   |    15 +-
 .../database/postgresql/PostgreSqlNodeImpl.java |    30 +-
 .../database/rubyrep/RubyRepSshDriver.java      |    13 +-
 .../brooklyn/entity/database/mariadb/my.cnf     |    19 -
 .../brooklyn/entity/database/mysql/mysql.conf   |    19 -
 .../entity/database/postgresql/postgresql.conf  |    17 -
 .../entity/database/rubyrep/rubyrep.conf        |    17 -
 .../database/mariadb/MariaDbLiveEc2Test.java    |     7 +-
 .../mysql/MySqlRestartIntegrationTest.java      |    42 +
 .../PostgreSqlRebindIntegrationTest.java        |    58 +
 .../PostgreSqlRestartIntegrationTest.java       |    50 +
 software/messaging/pom.xml                      |    44 +-
 .../messaging/activemq/ActiveMQBroker.java      |    11 +-
 .../messaging/activemq/ActiveMQBrokerImpl.java  |    32 +-
 .../activemq/ActiveMQDestinationImpl.java       |    16 +-
 .../messaging/activemq/ActiveMQDriver.java      |     2 +
 .../messaging/activemq/ActiveMQQueueImpl.java   |     5 +-
 .../messaging/activemq/ActiveMQSshDriver.java   |    14 +-
 .../entity/messaging/jms/JMSBrokerImpl.java     |    25 +-
 .../kafka/AbstractfKafkaSshDriver.java          |    11 +-
 .../entity/messaging/qpid/QpidBroker.java       |    10 -
 .../entity/messaging/qpid/QpidSshDriver.java    |    17 +-
 .../messaging/rabbit/RabbitBrokerImpl.java      |     2 +-
 .../messaging/rabbit/RabbitSshDriver.java       |    10 +-
 .../brooklyn/entity/messaging/storm/Storm.java  |     6 +-
 .../entity/messaging/storm/StormDeployment.java |     4 +
 .../messaging/storm/StormDeploymentImpl.java    |     1 +
 .../entity/messaging/storm/StormSshDriver.java  |    10 +-
 .../entity/zookeeper/ZooKeeperEnsemble.java     |     3 +
 .../entity/zookeeper/ZooKeeperEnsembleImpl.java |    22 +-
 .../entity/zookeeper/ZooKeeperNode.java         |     3 +
 .../entity/zookeeper/ZooKeeperSshDriver.java    |     9 +-
 .../entity/messaging/activemq/activemq.xml      |    20 +-
 .../entity/messaging/kafka/server.properties    |    17 -
 .../entity/messaging/kafka/zookeeper.properties |    17 -
 .../brooklyn/entity/messaging/storm/storm.yaml  |    17 -
 .../activemq/ActiveMQIntegrationTest.java       |    18 +-
 .../messaging/qpid/QpidIntegrationTest.groovy   |   250 -
 .../messaging/qpid/QpidIntegrationTest.java     |   254 +
 .../messaging/rabbit/RabbitIntegrationTest.java |    10 +-
 .../src/test/resources/qpid-test-plugin.jar     |   Bin 11821 -> 0 bytes
 software/monitoring/pom.xml                     |    22 +-
 .../entity/monitoring/monit/MonitNode.java      |     2 +-
 .../entity/monitoring/monit/MonitNodeImpl.java  |     3 +-
 .../entity/monitoring/monit/MonitSshDriver.java |    26 +-
 .../monitoring/monit/MonitIntegrationTest.java  |   157 +-
 .../entity/monitoring/monit/monit.monitrc       |     4 +-
 .../monit/monitmysqlwithrestart.monitrc         |     2 +-
 software/network/pom.xml                        |    18 +-
 .../entity/network/bind/BindDnsServer.java      |    92 +-
 .../network/bind/BindDnsServerDriver.java       |    15 +-
 .../entity/network/bind/BindDnsServerImpl.java  |   350 +-
 .../network/bind/BindDnsServerSshDriver.java    |   123 +-
 .../entity/network/bind/BindOsSupport.java      |   113 +
 .../brooklyn/entity/network/bind/domain.zone    |    13 +-
 .../brooklyn/entity/network/bind/named.conf     |    27 +-
 .../brooklyn/entity/network/bind/named.empty    |    30 +
 .../entity/network/bind/named.localhost         |    32 +
 .../brooklyn/entity/network/bind/named.loopback |    31 +
 .../brooklyn/entity/network/bind/reverse.zone   |     5 +-
 .../brooklyn/entity/network/bind/rfc1912.zone   |    52 +
 .../network/bind/BindDnsServerByonLiveTest.java |    45 +
 .../network/bind/BindDnsServerEc2LiveTest.java  |    63 +
 .../bind/BindDnsServerIntegrationTest.java      |   261 +
 .../network/bind/BindDnsServerLiveTest.java     |   111 +-
 .../bind/BindDnsServerSoftlayerLiveTest.java    |    33 +
 .../entity/network/bind/BindDnsServerTest.java  |    67 -
 .../bind/DoNothingSoftwareProcessDriver.java    |    56 +
 .../network/bind/PrefixAndIdEnricher.java       |    57 +
 .../network/bind/TestBindDnsServerImpl.java     |    92 +
 software/nosql/pom.xml                          |    69 +-
 .../cassandra/CassandraDatacenterImpl.java      |    38 +-
 .../nosql/cassandra/CassandraFabricImpl.java    |     8 +-
 .../entity/nosql/cassandra/CassandraNode.java   |     4 +
 .../nosql/cassandra/CassandraNodeImpl.java      |    20 +-
 .../nosql/cassandra/CassandraNodeSshDriver.java |    34 +-
 .../nosql/couchbase/CouchbaseCluster.java       |    52 +-
 .../nosql/couchbase/CouchbaseClusterImpl.java   |   345 +-
 .../nosql/couchbase/CouchbaseLoadGenerator.java |    59 -
 .../couchbase/CouchbaseLoadGeneratorDriver.java |    28 -
 .../couchbase/CouchbaseLoadGeneratorImpl.java   |    50 -
 .../CouchbaseLoadGeneratorSshDriver.java        |   122 -
 .../entity/nosql/couchbase/CouchbaseNode.java   |    41 +-
 .../nosql/couchbase/CouchbaseNodeDriver.java    |     9 +
 .../nosql/couchbase/CouchbaseNodeImpl.java      |   134 +-
 .../nosql/couchbase/CouchbaseNodeSshDriver.java |   385 +-
 .../nosql/couchbase/CouchbaseSyncGateway.java   |    75 +
 .../couchbase/CouchbaseSyncGatewayDriver.java   |    27 +
 .../couchbase/CouchbaseSyncGatewayImpl.java     |    82 +
 .../CouchbaseSyncGatewaySshDriver.java          |   176 +
 .../nosql/couchdb/CouchDBClusterImpl.java       |    21 +-
 .../entity/nosql/couchdb/CouchDBNodeImpl.java   |     6 +-
 .../elasticsearch/ElasticSearchCluster.java     |     4 +
 .../elasticsearch/ElasticSearchClusterImpl.java |    10 -
 .../nosql/elasticsearch/ElasticSearchNode.java  |     4 +
 .../ElasticSearchNodeSshDriver.java             |    12 +-
 .../nosql/mongodb/AbstractMongoDBServer.java    |     8 +-
 .../nosql/mongodb/AbstractMongoDBSshDriver.java |    12 +-
 .../nosql/mongodb/MongoDBClientSshDriver.java   |    40 +-
 .../nosql/mongodb/MongoDBClientSupport.java     |     9 +-
 .../entity/nosql/mongodb/MongoDBReplicaSet.java |     5 +-
 .../nosql/mongodb/MongoDBReplicaSetImpl.java    |    49 +-
 .../entity/nosql/mongodb/MongoDBServer.java     |    16 +-
 .../entity/nosql/mongodb/MongoDBServerImpl.java |    27 +-
 .../entity/nosql/mongodb/ReplicaSetConfig.java  |    31 +-
 .../sharding/CoLocatedMongoDBRouter.java        |    14 +-
 .../sharding/CoLocatedMongoDBRouterImpl.java    |    33 +-
 .../MongoDBConfigServerClusterImpl.java         |    20 +-
 .../nosql/mongodb/sharding/MongoDBRouter.java   |     4 +
 .../sharding/MongoDBRouterClusterImpl.java      |     8 +-
 .../mongodb/sharding/MongoDBRouterImpl.java     |     2 +-
 .../sharding/MongoDBShardClusterImpl.java       |   109 +-
 .../sharding/MongoDBShardedDeployment.java      |    31 +
 .../sharding/MongoDBShardedDeploymentImpl.java  |    25 +-
 .../entity/nosql/redis/RedisStoreSshDriver.java |    13 +-
 .../brooklyn/entity/nosql/riak/RiakCluster.java |    19 +-
 .../entity/nosql/riak/RiakClusterImpl.java      |   119 +-
 .../brooklyn/entity/nosql/riak/RiakNode.java    |    67 +-
 .../entity/nosql/riak/RiakNodeDriver.java       |     2 +
 .../entity/nosql/riak/RiakNodeImpl.java         |    36 +-
 .../entity/nosql/riak/RiakNodeSshDriver.java    |   227 +-
 .../brooklyn/entity/nosql/solr/SolrServer.java  |     7 +-
 .../entity/nosql/solr/SolrServerDriver.java     |     3 +-
 .../entity/nosql/solr/SolrServerImpl.java       |    16 +-
 .../entity/nosql/solr/SolrServerSshDriver.java  |    24 +-
 .../entity/nosql/cassandra/cassandra-1.2.yaml   |    17 -
 .../entity/nosql/cassandra/cassandra-2.0.yaml   |    17 -
 .../cassandra/cassandra-multicloud-snitch.txt   |    33 +
 .../nosql/cassandra/cassandra-rackdc.properties |    18 -
 .../entity/nosql/couchbase/pillowfight.yaml     |    77 +
 .../brooklyn/entity/nosql/couchdb/couch.ini     |    17 -
 .../entity/nosql/mongodb/default-mongod.conf    |     7 +
 .../entity/nosql/mongodb/default-mongodb.conf   |    28 -
 .../brooklyn/entity/nosql/mongodb/default.conf  |     2 +
 .../brooklyn/entity/nosql/redis/redis.conf      |    19 -
 .../brooklyn/entity/nosql/redis/slave.conf      |    19 -
 .../brooklyn/entity/nosql/riak/app.config       |    21 +-
 .../brooklyn/entity/nosql/riak/riak-mac.conf    |   494 +
 .../nosql/riak/riak-with-webapp-cluster.yaml    |    42 +
 .../entity/nosql/riak/riak-with-webapp.yaml     |    36 +
 .../brooklyn/entity/nosql/riak/riak.conf        |   494 +
 .../brooklyn/entity/nosql/riak/vm.args          |     2 +-
 .../brooklyn/entity/nosql/solr/solr.xml         |    18 -
 .../nosql/src/main/resources/couchbase-logo.png |   Bin 0 -> 88089 bytes
 .../CassandraDatacenterIntegrationTest.java     |    18 +-
 ...assandraDatacenterRebindIntegrationTest.java |    15 +-
 .../nosql/cassandra/CassandraFabricTest.java    |     5 +-
 .../cassandra/CassandraNodeIntegrationTest.java |    54 +-
 .../nosql/cassandra/CassandraNodeLiveTest.java  |    14 +-
 .../nosql/couchbase/CouchbaseOfflineTest.java   |    62 +
 .../CouchbaseSyncGatewayEc2LiveTest.java        |   137 +
 .../nosql/couchdb/CouchDBNodeLiveTest.java      |    14 +-
 .../ElasticSearchClusterIntegrationTest.java    |    50 +-
 .../nosql/mongodb/MongoDBIntegrationTest.java   |     2 +-
 .../mongodb/MongoDBRebindIntegrationTest.java   |    60 +
 .../MongoDBReplicaSetIntegrationTest.java       |    30 +-
 .../mongodb/MongoDBRestartIntegrationTest.java  |    42 +
 .../entity/nosql/mongodb/MongoDBTestHelper.java |    15 +-
 .../MongoDBConfigServerIntegrationTest.java     |     3 +-
 .../MongoDBShardedDeploymentEc2LiveTest.java    |    12 +-
 ...MongoDBShardedDeploymentIntegrationTest.java |    29 +-
 .../nosql/redis/RedisIntegrationTest.java       |    15 +-
 .../nosql/riak/RiakClusterEc2LiveTest.java      |    32 +-
 .../nosql/riak/RiakNodeIntegrationTest.java     |     7 +-
 .../entity/nosql/solr/SolrServerLiveTest.java   |    14 +-
 .../nosql/src/test/resources/solr/example.txt   |    18 +
 .../resources/test-mongodb-configserver.conf    |     6 +
 .../src/test/resources/test-mongodb-router.conf |     6 +
 .../nosql/src/test/resources/test-mongodb.conf  |    29 +-
 software/osgi/pom.xml                           |    40 +-
 .../entity/osgi/karaf/KarafContainerImpl.java   |     7 +-
 .../entity/osgi/karaf/KarafSshDriver.java       |    11 +-
 .../osgi/src/main/java/org/osgi/jmx/Item.java   |    30 +-
 .../main/java/org/osgi/jmx/JmxConstants.java    |    30 +-
 .../entity/osgi/karaf/KarafContainerTest.groovy |   157 -
 .../entity/osgi/karaf/KarafContainerTest.java   |   147 +
 .../osgi/src/test/resources/hello-world.jar     |   Bin 727 -> 2088 bytes
 .../osgi/src/test/resources/hello-world.txt     |    26 +
 software/webapp/pom.xml                         |    63 +-
 .../entity/dns/AbstractGeoDnsService.java       |     2 +-
 .../entity/dns/AbstractGeoDnsServiceImpl.java   |    43 +-
 .../dns/geoscaling/GeoscalingDnsService.java    |     6 +-
 .../geoscaling/GeoscalingDnsServiceImpl.java    |    22 +-
 .../dns/geoscaling/GeoscalingWebClient.java     |    23 +-
 .../entity/proxy/AbstractController.java        |     2 +-
 .../entity/proxy/AbstractControllerImpl.java    |    43 +-
 .../AbstractNonProvisionedControllerImpl.java   |     2 +-
 .../brooklyn/entity/proxy/LoadBalancer.java     |    29 +-
 .../entity/proxy/LoadBalancerClusterImpl.java   |    33 +-
 .../brooklyn/entity/proxy/ProxySslConfig.java   |   203 +-
 .../proxy/nginx/NginxConfigFileGenerator.java   |   250 +-
 .../entity/proxy/nginx/NginxConfigTemplate.java |    79 -
 .../entity/proxy/nginx/NginxController.java     |    13 +-
 .../entity/proxy/nginx/NginxControllerImpl.java |    86 +-
 .../nginx/NginxDefaultConfigGenerator.java      |   258 +
 .../entity/proxy/nginx/NginxSshDriver.java      |    45 +-
 .../nginx/NginxTemplateConfigGenerator.java     |    82 +
 .../brooklyn/entity/proxy/nginx/UrlMapping.java |     3 -
 .../entity/proxy/nginx/UrlMappingImpl.java      |     7 +-
 .../webapp/ControlledDynamicWebAppCluster.java  |     7 +-
 .../ControlledDynamicWebAppClusterImpl.java     |    72 +-
 .../entity/webapp/DynamicWebAppCluster.java     |     8 +-
 .../entity/webapp/DynamicWebAppClusterImpl.java |    41 -
 .../entity/webapp/DynamicWebAppFabricImpl.java  |    10 +-
 .../brooklyn/entity/webapp/HttpsSslConfig.java  |    21 +
 .../entity/webapp/JavaWebAppDriver.java         |    10 +-
 .../entity/webapp/JavaWebAppService.java        |    10 +-
 .../webapp/JavaWebAppSoftwareProcess.java       |    10 +
 .../webapp/JavaWebAppSoftwareProcessImpl.java   |    56 +-
 .../entity/webapp/JavaWebAppSshDriver.java      |     2 +
 .../entity/webapp/WebAppServiceConstants.java   |     8 +-
 .../entity/webapp/WebAppServiceMethods.java     |    52 +-
 .../entity/webapp/WebAppServiceMetrics.java     |     8 +-
 .../entity/webapp/jboss/JBoss6SshDriver.java    |     9 +-
 .../entity/webapp/jboss/JBoss7Server.java       |     1 +
 .../entity/webapp/jboss/JBoss7ServerImpl.java   |    57 +-
 .../entity/webapp/jboss/JBoss7SshDriver.java    |    12 +-
 .../entity/webapp/jetty/Jetty6ServerImpl.java   |     2 +-
 .../entity/webapp/jetty/Jetty6SshDriver.java    |    11 +-
 .../webapp/nodejs/NodeJsWebAppDriver.java       |    29 +
 .../webapp/nodejs/NodeJsWebAppService.java      |    74 +
 .../webapp/nodejs/NodeJsWebAppServiceImpl.java  |    92 +
 .../webapp/nodejs/NodeJsWebAppSshDriver.java    |   182 +
 .../entity/webapp/tomcat/Tomcat7SshDriver.java  |    70 +-
 .../entity/webapp/tomcat/TomcatServer.java      |    17 +-
 .../entity/webapp/tomcat/TomcatServerImpl.java  |    16 +-
 .../brooklyn/entity/proxy/nginx/server.conf     |     6 +-
 .../entity/webapp/jboss/jboss7-standalone.xml   |    20 +-
 .../entity/webapp/jetty/jetty-brooklyn.xml      |    18 -
 .../entity/webapp/sample-java-keystore.jks      |   Bin 0 -> 1355 bytes
 .../entity/webapp/sample-java-keystore.txt      |    22 +
 .../brooklyn/entity/webapp/tomcat/server.xml    |   151 +
 .../brooklyn/entity/webapp/tomcat/web.xml       |  4615 +++
 .../webapp/src/main/resources/jetty-logo.svg    |    88 -
 .../webapp/src/main/resources/nodejs-logo.png   |   Bin 0 -> 9620 bytes
 .../geoscaling/GeoscalingIntegrationTest.java   |    90 +-
 .../geoscaling/GeoscalingWebClientTest.groovy   |    85 -
 .../dns/geoscaling/GeoscalingWebClientTest.java |    93 +
 .../entity/proxy/ProxySslConfigTest.java        |    60 +
 .../brooklyn/entity/proxy/UrlMappingTest.java   |    14 +-
 .../nginx/NginxClusterIntegrationTest.java      |    67 +-
 .../nginx/NginxHttpsSslIntegrationTest.groovy   |   171 -
 .../nginx/NginxHttpsSslIntegrationTest.java     |   238 +
 .../proxy/nginx/NginxIntegrationTest.groovy     |   432 -
 .../proxy/nginx/NginxIntegrationTest.java       |   453 +
 .../proxy/nginx/NginxLightIntegrationTest.java  |    22 +-
 .../proxy/nginx/NginxRebindIntegrationTest.java |    97 +-
 .../nginx/NginxRebindWithHaIntegrationTest.java |   182 +
 .../nginx/NginxUrlMappingIntegrationTest.groovy |   503 -
 .../nginx/NginxUrlMappingIntegrationTest.java   |   523 +
 .../nginx/NginxWebClusterEc2LiveTest.groovy     |   107 -
 .../proxy/nginx/NginxWebClusterEc2LiveTest.java |   115 +
 .../AbstractWebAppFixtureIntegrationTest.java   |   113 +-
 ...lledDynamicWebAppClusterIntegrationTest.java |   173 +
 .../ControlledDynamicWebAppClusterTest.java     |   149 +-
 .../entity/webapp/DynamicWebAppClusterTest.java |    69 +-
 .../entity/webapp/DynamicWebAppFabricTest.java  |    44 +-
 ...ElasticJavaWebAppServiceIntegrationTest.java |    17 +-
 .../entity/webapp/HttpsSslConfigTest.java       |    38 +
 .../brooklyn/entity/webapp/JBossExample.groovy  |    48 -
 .../webapp/TomcatAutoScalerPolicyTest.java      |    16 +-
 ...namicWebAppClusterRebindIntegrationTest.java |    37 +-
 ...namicWebAppClusterRebindIntegrationTest.java |    36 +-
 .../jboss/JBoss6ServerAwsEc2LiveTest.java       |    72 +
 ...Boss6ServerNonInheritingIntegrationTest.java |   106 +
 .../jboss/JBoss7ServerAwsEc2LiveTest.java       |    78 +
 .../jboss/JBoss7ServerDockerLiveTest.java       |    74 +
 ...Boss7ServerNonInheritingIntegrationTest.java |   185 +
 .../JBoss7ServerRebindingIntegrationTest.java   |   125 +
 ...ultiVersionWebAppFixtureIntegrationTest.java |   106 +
 .../webapp/jboss/Jboss6ServerEc2LiveTest.java   |    68 -
 .../jboss/Jboss6ServerIntegrationTest.java      |   106 -
 .../webapp/jboss/Jboss7DockerLiveTest.java      |    70 -
 .../webapp/jboss/Jboss7ServerEc2LiveTest.java   |    74 -
 .../Jboss7ServerGoogleComputeLiveTest.java      |    12 +-
 .../jboss/Jboss7ServerIntegrationTest.java      |   213 -
 .../Jboss7ServerRebindIntegrationTest.java      |   126 -
 ...JbossServerWebAppFixtureIntegrationTest.java |   106 -
 .../JettyWebAppFixtureIntegrationTest.java      |     8 +
 .../webapp/nodejs/NodeJsWebAppEc2LiveTest.java  |    60 +
 .../NodeJsWebAppFixtureIntegrationTest.java     |   201 +
 .../NodeJsWebAppSimpleIntegrationTest.java      |    82 +
 .../nodejs/NodeJsWebAppSoftlayerLiveTest.java   |    59 +
 .../webapp/tomcat/TomcatServerEc2LiveTest.java  |    12 +-
 .../TomcatServerRestartIntegrationTest.java     |    44 +
 .../tomcat/TomcatServerSoftlayerLiveTest.java   |    12 +-
 ...omcatServerWebAppFixtureIntegrationTest.java |    64 +-
 .../test/entity/TestJavaWebAppEntity.groovy     |    75 -
 .../test/entity/TestJavaWebAppEntity.java       |    35 +
 .../test/entity/TestJavaWebAppEntityImpl.java   |    94 +
 .../webapp/nodejs/nodejs-hello-world.yaml       |    31 +
 .../webapp/src/test/resources/hello-world.war   |   Bin 14718 -> 0 bytes
 .../src/test/resources/seam-booking-as6.war     |   Bin 6273067 -> 0 bytes
 .../src/test/resources/seam-booking-as7.war     |   Bin 6333783 -> 0 bytes
 .../src/test/resources/swf-booking-mvc.war      |   Bin 12415853 -> 0 bytes
 storage/hazelcast/pom.xml                       |    15 +-
 usage/all/pom.xml                               |    27 +-
 usage/all/start-mgmt-web.sh                     |     2 +-
 usage/archetypes/quickstart/NOTES.txt           |     4 +-
 usage/archetypes/quickstart/pom.xml             |    34 +-
 .../quickstart/src/brooklyn-sample/pom.xml      |   282 +-
 .../src/main/assembly/assembly.xml              |    24 +-
 .../src/main/assembly/files/README.txt          |     6 +-
 .../src/main/assembly/files/conf/logback.xml    |    18 -
 .../src/main/assembly/scripts/start.sh          |     4 +-
 .../com/acme/sample/brooklyn/SampleMain.java    |    18 -
 .../app/ClusterWebServerDatabaseSample.java     |    18 -
 .../sample/app/SingleWebServerSample.java       |    18 -
 .../src/main/resources/logback-custom.xml       |    18 -
 .../app/SampleLocalhostIntegrationTest.java     |    18 -
 .../brooklyn/sample/app/SampleUnitTest.java     |    18 -
 .../META-INF/maven/archetype-metadata.xml       |     4 +-
 usage/camp/pom.xml                              |    44 +-
 .../camp/brooklyn/BrooklynCampPlatform.java     |     1 +
 .../camp/brooklyn/YamlLauncherAbstract.java     |    32 +-
 .../BrooklynAssemblyTemplateInstantiator.java   |   125 +-
 .../BrooklynComponentTemplateResolver.java      |   110 +-
 .../BrooklynEntityDecorationResolver.java       |    32 +-
 .../spi/creation/BrooklynEntityMatcher.java     |    22 +-
 .../creation/BrooklynYamlLocationResolver.java  |    46 +-
 .../creation/BrooklynYamlTypeInstantiator.java  |    12 +-
 .../camp/brooklyn/spi/dsl/DslUtils.java         |     7 +
 .../spi/dsl/methods/BrooklynDslCommon.java      |   268 +-
 .../brooklyn/spi/dsl/methods/DslComponent.java  |   251 +-
 .../lookup/AbstractTemplateBrooklynLookup.java  |     9 +-
 .../lookup/AssemblyTemplateBrooklynLookup.java  |     2 +-
 ...PlatformComponentTemplateBrooklynLookup.java |     2 +-
 .../camp/brooklyn/AbstractYamlTest.java         |    27 +-
 .../BrooklynYamlTypeInstantiatorTest.java       |     2 +-
 .../brooklyn/camp/brooklyn/CatalogYamlTest.java |   250 -
 .../camp/brooklyn/EnrichersYamlTest.java        |    23 +-
 .../camp/brooklyn/EntitiesYamlTest.java         |   181 +-
 ...aWebAppWithDslYamlRebindIntegrationTest.java |     2 +
 .../brooklyn/JavaWebAppsIntegrationTest.java    |     5 +-
 .../camp/brooklyn/MapReferenceYamlTest.java     |   130 +
 .../brooklyn/camp/brooklyn/ObjectsYamlTest.java |   235 +
 .../camp/brooklyn/ReferencedYamlTest.java       |    10 +-
 .../brooklyn/ReferencingYamlTestEntity.java     |     8 +
 .../brooklyn/VanillaBashNetcatYamlTest.java     |    14 +-
 .../CatalogOsgiVersionMoreEntityTest.java       |   153 +
 .../brooklyn/catalog/CatalogYamlEntityTest.java |   491 +
 .../brooklyn/catalog/CatalogYamlPolicyTest.java |   139 +
 .../catalog/CatalogYamlVersioningTest.java      |   203 +
 .../more-entity-v1-called-v1-osgi-catalog.yaml  |    27 +
 .../catalog/more-entity-v1-osgi-catalog.yaml    |    27 +
 ...more-entity-v1-with-policy-osgi-catalog.yaml |    29 +
 .../catalog/more-entity-v2-osgi-catalog.yaml    |    28 +
 .../catalog/simple-policy-osgi-catalog.yaml     |    27 +
 .../java-web-app-and-db-with-function-2.yaml    |     2 +-
 usage/camp/src/test/resources/mysql-chef.yaml   |     3 +
 .../test-entity-reference-map-template.yaml     |    28 +
 .../resources/test-referencing-entities.yaml    |    23 +-
 .../src/test/resources/test-tomcat-https.yaml   |    28 +
 .../resources/vanilla-bash-netcat-w-client.yaml |    10 +-
 usage/camp/src/test/resources/yaml-ref-app.yaml |     2 +-
 .../src/test/resources/yaml-ref-catalog.yaml    |     2 +-
 .../src/test/resources/yaml-ref-entity.yaml     |     2 +-
 usage/cli/pom.xml                               |    52 +-
 .../main/java/brooklyn/cli/AbstractMain.java    |   231 +
 .../main/java/brooklyn/cli/CloudExplorer.java   |   107 +-
 .../src/main/java/brooklyn/cli/ItemLister.java  |   237 +
 usage/cli/src/main/java/brooklyn/cli/Main.java  |   355 +-
 .../java/brooklyn/cli/lister/ClassFinder.java   |   148 +
 .../brooklyn/cli/lister/ItemDescriptors.java    |   158 +
 .../main/resources/brooklyn-object-list.html    |   147 +
 usage/cli/src/main/resources/common.js          |    94 +
 usage/cli/src/main/resources/enricher.html      |    59 +
 usage/cli/src/main/resources/entity.html        |    66 +
 usage/cli/src/main/resources/items.css          |   153 +
 .../src/main/resources/libs/js/bloodhound.js    |   727 +
 usage/cli/src/main/resources/location.html      |    62 +
 usage/cli/src/main/resources/policy.html        |    59 +
 .../cli/src/test/java/brooklyn/cli/CliTest.java |     6 +-
 .../brooklyn/cli/CloudExplorerLiveTest.java     |    27 +-
 usage/dist/pom.xml                              |    64 +-
 .../main/config/build-distribution-archive.xml  |    24 +-
 .../src/main/config/build-distribution-dir.xml  |    25 +-
 usage/dist/src/main/dist/bin/.gitattributes     |     3 +
 usage/dist/src/main/dist/bin/brooklyn           |     8 +-
 usage/dist/src/main/dist/bin/brooklyn.ps1       |   270 +-
 usage/dist/src/main/dist/bin/cloud-explorer     |    47 -
 usage/dist/src/main/dist/conf/catalog.xml       |    36 +-
 usage/downstream-parent/pom.xml                 |   583 +
 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 +-
 usage/launcher/pom.xml                          |    67 +-
 .../brooklyn/launcher/BrooklynLauncher.java     |   413 +-
 .../brooklyn/launcher/BrooklynWebServer.java    |    87 +-
 .../launcher/config/BrooklynGlobalConfig.java   |     7 +-
 .../BrooklynEntityMirrorIntegrationTest.java    |    19 +-
 .../brooklynnode/BrooklynNodeRestTest.java      |     2 +-
 .../BrooklynLauncherHighAvailabilityTest.java   |    25 +-
 .../BrooklynLauncherRebindTestFixture.java      |    11 +-
 .../BrooklynLauncherRebindTestToFiles.java      |    56 +-
 ...lynLauncherRebindToCloudObjectStoreTest.java |    75 +-
 .../brooklyn/launcher/BrooklynLauncherTest.java |     3 +-
 .../launcher/BrooklynWebServerTest.java         |     4 +-
 .../brooklyn/launcher/WebAppRunnerTest.java     |    10 +-
 .../blueprints/AbstractBlueprintTest.java       |   202 +
 .../blueprints/MongoDbBlueprintTest.java        |    51 +
 .../basic-empty-app-and-entity-blueprint.yaml   |    30 +
 .../couchbase-replication-w-pillowfight.yaml    |    56 +
 .../src/test/resources/couchbase-w-loadgen.yaml |    54 +
 .../test/resources/couchbase-w-pillowfight.yaml |    35 +
 .../launcher/src/test/resources/couchbase.yaml  |    14 +-
 .../launcher/src/test/resources/hello-world.war |   Bin 4606 -> 0 bytes
 .../src/test/resources/mongo-blueprint.yaml     |     3 +-
 .../src/test/resources/mongo-scripts.yaml       |     1 -
 .../src/test/resources/mongo-sharded.yaml       |     5 +-
 usage/launcher/src/test/resources/nginx.yaml    |    27 +
 usage/launcher/src/test/resources/web.yaml      |     2 +-
 usage/logback-includes/pom.xml                  |    17 +-
 .../JcloudsPersistenceThreadDiscriminator.java  |    65 +
 .../brooklyn/logback-appender-jclouds.xml       |    39 +-
 .../brooklyn/logback-logger-debug-jclouds.xml   |    22 +-
 .../resources/brooklyn/logback-logger-trace.xml |    26 +
 usage/logback-xml/pom.xml                       |     6 +-
 usage/qa/log-exclusions.txt                     |    17 +
 usage/qa/pom.xml                                |    26 +-
 .../qa/load/SimulatedJBoss7ServerImpl.java      |   240 +
 .../qa/load/SimulatedMySqlNodeImpl.java         |   183 +
 .../qa/load/SimulatedNginxControllerImpl.java   |   196 +
 .../brooklyn/qa/load/SimulatedTheeTierApp.java  |   140 +
 .../java/brooklyn/qa/longevity/Monitor.java     |     4 +-
 .../webcluster/SinusoidalLoadGenerator.java     |    90 -
 .../qa/longevity/webcluster/WebClusterApp.java  |   101 -
 usage/qa/src/main/resources/hello-world.txt     |    24 +
 usage/qa/src/main/resources/hello-world.war     |   Bin 4606 -> 14693 bytes
 .../test/java/brooklyn/qa/load/LoadTest.java    |   243 +
 .../webcluster/SinusoidalLoadGenerator.java     |    90 +
 .../qa/longevity/webcluster/WebClusterApp.java  |   101 +
 usage/rest-api/pom.xml                          |    18 +-
 .../java/brooklyn/rest/api/ActivityApi.java     |    54 +-
 .../java/brooklyn/rest/api/ApplicationApi.java  |   316 +-
 .../main/java/brooklyn/rest/api/CatalogApi.java |   136 +-
 .../java/brooklyn/rest/api/EffectorApi.java     |    88 +-
 .../main/java/brooklyn/rest/api/EntityApi.java  |   325 +-
 .../java/brooklyn/rest/api/EntityConfigApi.java |   145 +-
 .../java/brooklyn/rest/api/LocationApi.java     |    66 +-
 .../main/java/brooklyn/rest/api/PolicyApi.java  |   225 +-
 .../java/brooklyn/rest/api/PolicyConfigApi.java |   138 +-
 .../main/java/brooklyn/rest/api/ScriptApi.java  |     6 +-
 .../main/java/brooklyn/rest/api/SensorApi.java  |   156 +-
 .../main/java/brooklyn/rest/api/ServerApi.java  |   113 +-
 .../main/java/brooklyn/rest/api/VersionApi.java |     6 +-
 .../brooklyn/rest/domain/AccessSummary.java     |     2 +-
 .../java/brooklyn/rest/domain/ApiError.java     |     4 +
 .../brooklyn/rest/domain/ApplicationSpec.java   |   243 +-
 .../rest/domain/ApplicationSummary.java         |     2 +-
 .../rest/domain/CatalogEntitySummary.java       |    11 +-
 .../rest/domain/CatalogItemSummary.java         |    50 +-
 .../rest/domain/CatalogPolicySummary.java       |    12 +-
 .../brooklyn/rest/domain/ConfigSummary.java     |   257 +-
 .../brooklyn/rest/domain/EffectorSummary.java   |   252 +-
 .../rest/domain/EntityConfigSummary.java        |    62 +-
 .../java/brooklyn/rest/domain/EntitySpec.java   |   135 +-
 .../brooklyn/rest/domain/EntitySummary.java     |   103 +-
 .../java/brooklyn/rest/domain/HasConfig.java    |    28 +
 .../rest/domain/HighAvailabilitySummary.java    |   135 +-
 .../brooklyn/rest/domain/LinkWithMetadata.java  |     2 +-
 .../java/brooklyn/rest/domain/LocationSpec.java |   117 +-
 .../brooklyn/rest/domain/LocationSummary.java   |   101 +-
 .../rest/domain/PolicyConfigSummary.java        |    49 +-
 .../brooklyn/rest/domain/PolicySummary.java     |   146 +-
 .../rest/domain/ScriptExecutionSummary.java     |    13 +-
 .../brooklyn/rest/domain/SensorSummary.java     |   146 +-
 .../rest/domain/SummaryComparators.java         |    36 +-
 .../java/brooklyn/rest/domain/TaskSummary.java  |   333 +-
 .../brooklyn/rest/domain/UsageStatistic.java    |    16 +-
 .../brooklyn/rest/domain/UsageStatistics.java   |    31 +-
 .../brooklyn/rest/domain/VersionSummary.java    |    61 +
 usage/rest-api/src/main/webapp/WEB-INF/web.xml  |    24 +-
 .../java/brooklyn/rest/domain/ApiErrorTest.java |     6 +-
 .../rest/domain/ApplicationSpecTest.java        |    49 +-
 .../rest/domain/EffectorSummaryTest.java        |    51 +-
 .../brooklyn/rest/domain/EntitySpecTest.java    |    41 +-
 .../brooklyn/rest/domain/EntitySummaryTest.java |    60 +-
 .../brooklyn/rest/domain/LocationSpecTest.java  |    48 +-
 .../brooklyn/rest/util/RestApiTestUtils.java    |    58 +
 .../test/resources/fixtures/entity-summary.json |     2 +-
 usage/rest-client/pom.xml                       |    19 +-
 .../java/brooklyn/rest/client/BrooklynApi.java  |   136 +-
 .../ApplicationResourceIntegrationTest.java     |    51 +-
 .../rest/client/BrooklynApiRestClientTest.java  |     7 +-
 .../rest-client/src/test/webapp/WEB-INF/web.xml |    24 +-
 usage/rest-server/pom.xml                       |    60 +-
 .../java/brooklyn/rest/BrooklynRestApi.java     |     6 +-
 .../java/brooklyn/rest/BrooklynWebConfig.java   |    50 +-
 .../BrooklynPropertiesSecurityFilter.java       |   175 +
 .../rest/filter/HaMasterCheckFilter.java        |    85 +
 .../brooklyn/rest/filter/LoggingFilter.java     |   157 +
 .../brooklyn/rest/filter/NoCacheFilter.java     |    40 +
 .../rest/filter/RequestTaggingFilter.java       |    62 +
 .../resources/AbstractBrooklynRestResource.java |    17 +-
 .../rest/resources/ActivityResource.java        |    53 +-
 .../rest/resources/ApplicationResource.java     |    57 +-
 .../rest/resources/CatalogResource.java         |   196 +-
 .../rest/resources/EffectorResource.java        |    13 +-
 .../rest/resources/EntityConfigResource.java    |   157 +-
 .../brooklyn/rest/resources/EntityResource.java |   242 +-
 .../rest/resources/LocationResource.java        |     3 +-
 .../rest/resources/PolicyConfigResource.java    |   113 +-
 .../brooklyn/rest/resources/PolicyResource.java |     6 +-
 .../brooklyn/rest/resources/ScriptResource.java |     9 +-
 .../brooklyn/rest/resources/SensorResource.java |    68 +-
 .../brooklyn/rest/resources/ServerResource.java |   272 +-
 .../rest/resources/VersionResource.java         |    11 +-
 .../BrooklynPropertiesSecurityFilter.java       |   174 -
 .../provider/AbstractSecurityProvider.java      |    56 +
 .../provider/AnyoneSecurityProvider.java        |     1 -
 .../provider/BlackholeSecurityProvider.java     |     1 -
 ...nUserWithRandomPasswordSecurityProvider.java |    68 +
 .../provider/DelegatingSecurityProvider.java    |   100 +-
 .../provider/ExplicitUsersSecurityProvider.java |    77 +-
 .../security/provider/LdapSecurityProvider.java |    30 +-
 .../rest/transform/ApplicationTransformer.java  |     2 +-
 .../rest/transform/CatalogTransformer.java      |    24 +-
 .../rest/transform/EffectorTransformer.java     |    28 +-
 .../rest/transform/EntityTransformer.java       |    54 +-
 .../rest/transform/LocationTransformer.java     |    13 +-
 .../rest/transform/PolicyTransformer.java       |     3 +-
 .../rest/transform/SensorTransformer.java       |    19 +-
 .../rest/transform/TaskTransformer.java         |     1 -
 .../rest/util/BrooklynRestResourceUtils.java    |    57 +-
 .../rest/util/DefaultExceptionMapper.java       |    33 +-
 .../brooklyn/rest/util/EntityLocationUtils.java |     1 -
 .../brooklyn/rest/util/FormMapProvider.java     |     1 -
 .../brooklyn/rest/util/HaMasterCheckFilter.java |    78 -
 .../brooklyn/rest/util/WebResourceUtils.java    |    76 +-
 .../rest/util/json/BidiSerialization.java       |   175 +
 .../util/json/BrooklynJacksonJsonProvider.java  |   172 +
 .../json/ConfigurableSerializerProvider.java    |    94 +
 .../ErrorAndToStringUnknownTypeSerializer.java  |   125 +
 .../rest/util/json/MultimapSerializer.java      |    62 +
 ...StrictPreferringFieldsVisibilityChecker.java |   107 +
 .../main/resources/build-metadata.properties    |    18 +
 .../rest-server/src/main/webapp/WEB-INF/web.xml |    22 +-
 .../brooklynnode/DeployBlueprintTest.java       |    30 +-
 .../BrooklynPropertiesSecurityFilterTest.java   |    17 +-
 .../brooklyn/rest/BrooklynRestApiLauncher.java  |    72 +-
 .../brooklyn/rest/domain/ApplicationTest.java   |    94 +-
 .../rest/domain/LocationSummaryTest.java        |    38 +-
 .../brooklyn/rest/domain/SensorSummaryTest.java |   114 +-
 .../rest/resources/AccessResourceTest.java      |     2 -
 .../rest/resources/ApiDocResourceTest.java      |    44 +-
 .../ApplicationResourceIntegrationTest.java     |    37 +-
 .../rest/resources/ApplicationResourceTest.java |   904 +-
 .../rest/resources/CatalogResourceTest.java     |   367 +-
 .../resources/EntityConfigResourceTest.java     |    93 +-
 .../rest/resources/EntityResourceTest.java      |   113 +-
 .../rest/resources/ErrorResponseTest.java       |     1 +
 .../rest/resources/LocationResourceTest.java    |   103 +-
 .../rest/resources/PolicyResourceTest.java      |     2 +
 .../SensorResourceIntegrationTest.java          |    83 +
 .../rest/resources/SensorResourceTest.java      |   212 +-
 .../ServerResourceIntegrationTest.java          |    75 +-
 .../rest/resources/ServerResourceTest.java      |    11 +-
 .../rest/resources/VersionResourceTest.java     |    36 +-
 .../security/provider/TestSecurityProvider.java |     4 +
 .../rest/testing/BrooklynRestApiTest.java       |    98 +-
 .../rest/testing/BrooklynRestResourceTest.java  |    27 +-
 .../rest/testing/mocks/NameMatcherGroup.java    |    30 +
 .../testing/mocks/NameMatcherGroupImpl.java     |    33 +
 .../rest/testing/mocks/RestMockApp.java         |     8 -
 .../rest/testing/mocks/RestMockAppBuilder.java  |     5 +-
 .../testing/mocks/RestMockSimpleEntity.java     |    14 +-
 .../util/BrooklynRestResourceUtilsTest.java     |    98 +-
 .../json/BrooklynJacksonSerializerTest.java     |   399 +
 usage/scripts/change-version.sh                 |    88 +-
 usage/scripts/grep-in-poms.sh                   |     2 +-
 usage/test-support/pom.xml                      |    23 +-
 .../java/brooklyn/test/EntityTestUtils.java     |    27 +-
 .../main/java/brooklyn/test/HttpTestUtils.java  |   129 +-
 .../java/brooklyn/test/NetworkingTestUtils.java |    68 +
 .../brooklyn/test/PerformanceTestUtils.java     |    99 +
 .../main/java/brooklyn/test/TestUtils.groovy    |     8 +-
 .../main/java/brooklyn/test/WebAppMonitor.java  |     6 +-
 utils/common/pom.xml                            |     9 +-
 .../java/brooklyn/config/ConfigInheritance.java |    47 +
 .../main/java/brooklyn/config/ConfigKey.java    |     7 +
 .../src/main/java/brooklyn/test/Asserts.java    |    35 +-
 .../util/collections/CollectionFunctionals.java |   178 +-
 .../java/brooklyn/util/collections/Jsonya.java  |     2 +-
 .../brooklyn/util/collections/MutableList.java  |    45 +-
 .../brooklyn/util/collections/MutableMap.java   |    32 +-
 .../brooklyn/util/collections/MutableSet.java   |    48 +-
 .../brooklyn/util/collections/QuorumCheck.java  |   236 +
 .../util/crypto/AuthorizedKeysParser.java       |   134 +
 .../crypto/SecureKeysWithoutBouncyCastle.java   |   161 +
 .../brooklyn/util/exceptions/Exceptions.java    |   103 +-
 .../util/exceptions/NotManagedException.java    |    36 +
 .../util/exceptions/ReferenceWithError.java     |    28 +-
 .../exceptions/RuntimeTimeoutException.java     |    36 +
 .../java/brooklyn/util/guava/Functionals.java   |   110 +
 .../java/brooklyn/util/guava/IfFunctions.java   |   158 +
 .../guava/IllegalStateExceptionSupplier.java    |    43 +
 .../main/java/brooklyn/util/guava/Maybe.java    |   135 +-
 .../main/java/brooklyn/util/io/FileUtil.java    |    18 +
 .../util/javalang/AggregateClassLoader.java     |    19 +-
 .../main/java/brooklyn/util/javalang/Enums.java |    30 +-
 .../java/brooklyn/util/javalang/Equals.java     |    94 +
 .../util/javalang/MemoryUsageTracker.java       |    72 +
 .../brooklyn/util/javalang/Reflections.java     |   776 +-
 .../util/javalang/StackTraceSimplifier.java     |    25 +-
 .../util/logging/SimpleOneLineLogFormatter.java |   208 +-
 .../java/brooklyn/util/math/MathPredicates.java |    24 +-
 .../brooklyn/util/maven/MavenRetriever.java     |    36 +-
 .../src/main/java/brooklyn/util/net/Cidr.java   |     7 +-
 .../brooklyn/util/net/HasNetworkAddresses.java  |    48 +
 .../main/java/brooklyn/util/net/Networking.java |   173 +-
 .../src/main/java/brooklyn/util/net/Urls.java   |    47 +-
 .../src/main/java/brooklyn/util/os/Os.java      |     9 +-
 .../java/brooklyn/util/repeat/Repeater.java     |    20 +-
 .../java/brooklyn/util/ssh/BashCommands.java    |    16 +-
 .../brooklyn/util/ssh/IptablesCommands.java     |    17 +-
 .../brooklyn/util/stream/StreamGobbler.java     |    50 +-
 .../main/java/brooklyn/util/stream/Streams.java |    10 +
 .../brooklyn/util/text/ByteSizeStrings.java     |    68 +
 .../java/brooklyn/util/text/KeyValueParser.java |     3 +-
 .../util/text/NaturalOrderComparator.java       |   219 +-
 .../util/text/QuotedStringTokenizer.java        |   268 +-
 .../java/brooklyn/util/text/StringEscapes.java  |     6 +-
 .../brooklyn/util/text/StringFunctions.java     |    16 +-
 .../brooklyn/util/text/StringPredicates.java    |   180 +-
 .../main/java/brooklyn/util/text/Strings.java   |   642 +-
 .../main/java/brooklyn/util/time/Duration.java  |    52 +
 .../main/java/brooklyn/util/time/Durations.java |    26 +
 .../src/main/java/brooklyn/util/time/Time.java  |   423 +-
 .../src/main/java/brooklyn/util/yaml/Yamls.java |    17 +-
 .../collections/CollectionFunctionalsTest.java  |    51 +
 .../util/collections/MutableListTest.java       |    63 +
 .../util/collections/QuorumChecksTest.java      |   105 +
 .../util/exceptions/ExceptionsTest.java         |    86 +
 .../brooklyn/util/guava/FunctionalsTest.java    |    58 +
 .../brooklyn/util/guava/IfFunctionsTest.java    |   106 +
 .../guava/KeyTransformingLoadingCacheTest.java  |     1 -
 .../util/internal/CommandLineUtilTest.java      |    62 +-
 .../util/javalang/MemoryUsageTrackerTest.java   |    89 +
 .../util/javalang/StackTraceSimplifierTest.java |    36 +-
 .../brooklyn/util/maven/MavenArtifactTest.java  |    81 +-
 .../brooklyn/util/net/NetworkingUtilsTest.java  |    28 +-
 .../test/java/brooklyn/util/net/UrlsTest.java   |    15 +-
 .../src/test/java/brooklyn/util/os/OsTest.java  |    31 +
 .../java/brooklyn/util/repeat/RepeaterTest.java |    18 +-
 .../brooklyn/util/ssh/IptablesCommandsTest.java |    82 +-
 .../brooklyn/util/stream/StreamGobblerTest.java |    90 +
 .../brooklyn/util/text/ByteSizeStringsTest.java |    32 +
 .../util/text/NaturalOrderComparatorTest.java   |    26 +-
 .../brooklyn/util/text/StringEscapesTest.java   |    24 +-
 .../util/text/StringPredicatesTest.java         |    74 +
 .../java/brooklyn/util/text/StringsTest.java    |    30 +
 .../brooklyn/util/text/WildcardGlobsTest.java   |   396 +-
 .../java/brooklyn/util/time/DurationTest.java   |     8 +
 .../test/java/brooklyn/util/time/TimeTest.java  |     4 +-
 utils/groovy/pom.xml                            |    22 +-
 utils/jmx/jmxmp-ssl-agent/pom.xml               |    15 +-
 utils/jmx/jmxrmi-agent/pom.xml                  |     7 +-
 .../brooklyn/util/jmx/jmxrmi/JmxRmiAgent.java   |     4 +-
 utils/rest-swagger/pom.xml                      |     9 +-
 .../brooklyn/rest/apidoc/ApidocEndpoint.java    |    10 +-
 .../brooklyn/rest/apidoc/ApidocResource.java    |     8 +-
 .../java/brooklyn/rest/apidoc/ApidocRoot.java   |    47 +
 utils/test-support/pom.xml                      |     5 +-
 .../main/java/brooklyn/test/StatusListener.java |     8 +-
 .../test/TestResourceUnavailableException.java  |   140 +
 2357 files changed, 157164 insertions(+), 87358 deletions(-)
----------------------------------------------------------------------



[39/71] [abbrv] [partial] incubator-brooklyn git commit: Move mobile app to sandbox

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-tn.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-tn.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-tn.js
new file mode 100644
index 0000000..a78f0de
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-tn.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-ye.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-ye.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-ye.js
new file mode 100644
index 0000000..6b28d2f
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-ye.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar.js
new file mode 100644
index 0000000..872194e
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_bg-bg.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_bg-bg.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_bg-bg.js
new file mode 100644
index 0000000..c88bb88
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_bg-bg.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_bg.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_bg.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_bg.js
new file mode 100644
index 0000000..db0865b
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_bg.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_bn-bd.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_bn-bd.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_bn-bd.js
new file mode 100644
index 0000000..980495c
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_bn-bd.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_bn-in.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_bn-in.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_bn-in.js
new file mode 100644
index 0000000..0b41428
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_bn-in.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_bn.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_bn.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_bn.js
new file mode 100644
index 0000000..5cc14cc
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_bn.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ca-ad.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ca-ad.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ca-ad.js
new file mode 100644
index 0000000..a7f1e6e
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ca-ad.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ca-es.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ca-es.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ca-es.js
new file mode 100644
index 0000000..b589a21
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ca-es.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ca.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ca.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ca.js
new file mode 100644
index 0000000..3bced03
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ca.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_cs-cz.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_cs-cz.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_cs-cz.js
new file mode 100644
index 0000000..3c88d94
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_cs-cz.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_cs.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_cs.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_cs.js
new file mode 100644
index 0000000..c0a1e33
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_cs.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_da-dk.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_da-dk.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_da-dk.js
new file mode 100644
index 0000000..399a1e4
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_da-dk.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_da.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_da.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_da.js
new file mode 100644
index 0000000..1d8bcbe
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_da.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-at.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-at.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-at.js
new file mode 100644
index 0000000..257e7d8
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-at.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-be.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-be.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-be.js
new file mode 100644
index 0000000..d07143b
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-be.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-ch.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-ch.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-ch.js
new file mode 100644
index 0000000..b249939
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-ch.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-de.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-de.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-de.js
new file mode 100644
index 0000000..58e7043
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-de.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-li.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-li.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-li.js
new file mode 100644
index 0000000..2886513
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-li.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-lu.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-lu.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-lu.js
new file mode 100644
index 0000000..61aa489
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-lu.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de.js
new file mode 100644
index 0000000..6ea1f22
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_el-cy.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_el-cy.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_el-cy.js
new file mode 100644
index 0000000..e7a4c94
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_el-cy.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_el-gr.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_el-gr.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_el-gr.js
new file mode 100644
index 0000000..101464f
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_el-gr.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_el.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_el.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_el.js
new file mode 100644
index 0000000..8433050
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_el.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-as.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-as.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-as.js
new file mode 100644
index 0000000..3cc5eb5
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-as.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-au.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-au.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-au.js
new file mode 100644
index 0000000..c09f4ae
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-au.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-bb.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-bb.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-bb.js
new file mode 100644
index 0000000..dcf93ad
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-bb.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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


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

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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":"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",
-"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"]
-}


[47/71] [abbrv] [partial] incubator-brooklyn git commit: Move mobile app to sandbox

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-resource.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-resource.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-resource.js
new file mode 100644
index 0000000..1c4b71f
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-resource.js
@@ -0,0 +1,619 @@
+/**
+ * @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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-resource.min.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-resource.min.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-resource.min.js
new file mode 100644
index 0000000..17e607d
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-resource.min.js
@@ -0,0 +1,13 @@
+/*
+ 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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-resource.min.js.map
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-resource.min.js.map b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-resource.min.js.map
new file mode 100644
index 0000000..984d89b
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-resource.min.js.map
@@ -0,0 +1,8 @@
+{
+"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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-route.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-route.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-route.js
new file mode 100644
index 0000000..1fdafd3
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-route.js
@@ -0,0 +1,927 @@
+/**
+ * @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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-route.min.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-route.min.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-route.min.js
new file mode 100644
index 0000000..026c935
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-route.min.js
@@ -0,0 +1,14 @@
+/*
+ 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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-route.min.js.map
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-route.min.js.map b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-route.min.js.map
new file mode 100644
index 0000000..3510eaf
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-route.min.js.map
@@ -0,0 +1,8 @@
+{
+"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"]
+}


[37/71] [abbrv] [partial] incubator-brooklyn git commit: Move mobile app to sandbox

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-vi.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-vi.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-vi.js
new file mode 100644
index 0000000..ea7a166
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-vi.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-za.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-za.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-za.js
new file mode 100644
index 0000000..2896970
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-za.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-zw.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-zw.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-zw.js
new file mode 100644
index 0000000..162da1e
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-zw.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en.js
new file mode 100644
index 0000000..ae07737
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-419.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-419.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-419.js
new file mode 100644
index 0000000..91efc78
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-419.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ar.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ar.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ar.js
new file mode 100644
index 0000000..409a360
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ar.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-bo.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-bo.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-bo.js
new file mode 100644
index 0000000..fce7a39
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-bo.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-cl.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-cl.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-cl.js
new file mode 100644
index 0000000..094dc29
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-cl.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-co.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-co.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-co.js
new file mode 100644
index 0000000..28bcf76
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-co.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-cr.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-cr.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-cr.js
new file mode 100644
index 0000000..321ed8b
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-cr.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-do.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-do.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-do.js
new file mode 100644
index 0000000..48f5014
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-do.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ea.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ea.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ea.js
new file mode 100644
index 0000000..39d0ea7
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ea.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ec.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ec.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ec.js
new file mode 100644
index 0000000..cc6eb76
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ec.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-es.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-es.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-es.js
new file mode 100644
index 0000000..a72164f
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-es.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-gq.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-gq.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-gq.js
new file mode 100644
index 0000000..c7bab0e
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-gq.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-gt.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-gt.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-gt.js
new file mode 100644
index 0000000..c6d1078
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-gt.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-hn.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-hn.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-hn.js
new file mode 100644
index 0000000..9b9023a
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-hn.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ic.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ic.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ic.js
new file mode 100644
index 0000000..0f2bfa1
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ic.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-mx.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-mx.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-mx.js
new file mode 100644
index 0000000..7eb4087
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-mx.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ni.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ni.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ni.js
new file mode 100644
index 0000000..a93b701
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ni.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-pa.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-pa.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-pa.js
new file mode 100644
index 0000000..8496553
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-pa.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-pe.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-pe.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-pe.js
new file mode 100644
index 0000000..b88b21f
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-pe.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-pr.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-pr.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-pr.js
new file mode 100644
index 0000000..2917c36
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-pr.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-py.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-py.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-py.js
new file mode 100644
index 0000000..6253d14
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-py.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-sv.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-sv.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-sv.js
new file mode 100644
index 0000000..63f0756
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-sv.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-us.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-us.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-us.js
new file mode 100644
index 0000000..c929595
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-us.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-uy.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-uy.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-uy.js
new file mode 100644
index 0000000..f656e1a
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-uy.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ve.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ve.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ve.js
new file mode 100644
index 0000000..6641877
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ve.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es.js
new file mode 100644
index 0000000..91aba87
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_et-ee.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_et-ee.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_et-ee.js
new file mode 100644
index 0000000..c763947
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_et-ee.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_et.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_et.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_et.js
new file mode 100644
index 0000000..f996bba
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_et.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_eu-es.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_eu-es.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_eu-es.js
new file mode 100644
index 0000000..d5fe45a
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_eu-es.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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


[48/71] [abbrv] [partial] incubator-brooklyn git commit: Move mobile app to sandbox

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-mocks.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-mocks.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-mocks.js
new file mode 100644
index 0000000..7b3137b
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-mocks.js
@@ -0,0 +1,2171 @@
+/**
+ * @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);


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

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/css/mobile-angular-ui-desktop.css
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/css/mobile-angular-ui-desktop.css b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/css/mobile-angular-ui-desktop.css
new file mode 100644
index 0000000..e2eb84d
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/css/mobile-angular-ui-desktop.css
@@ -0,0 +1,531 @@
+@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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/css/mobile-angular-ui-desktop.min.css
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/css/mobile-angular-ui-desktop.min.css b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/css/mobile-angular-ui-desktop.min.css
new file mode 100644
index 0000000..f78704b
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/css/mobile-angular-ui-desktop.min.css
@@ -0,0 +1 @@
+@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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/css/mobile-angular-ui-hover.css
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/css/mobile-angular-ui-hover.css b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/css/mobile-angular-ui-hover.css
new file mode 100644
index 0000000..6965e0c
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/css/mobile-angular-ui-hover.css
@@ -0,0 +1,480 @@
+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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/css/mobile-angular-ui-hover.min.css
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/css/mobile-angular-ui-hover.min.css b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/css/mobile-angular-ui-hover.min.css
new file mode 100644
index 0000000..d02c4a2
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/css/mobile-angular-ui-hover.min.css
@@ -0,0 +1 @@
+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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/fonts/FontAwesome.otf
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/fonts/FontAwesome.otf b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/fonts/FontAwesome.otf
new file mode 100644
index 0000000..3461e3f
Binary files /dev/null and b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/fonts/FontAwesome.otf differ

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


[54/71] [abbrv] incubator-brooklyn 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/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/c5551b7d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/c5551b7d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/c5551b7d

Branch: refs/heads/master
Commit: c5551b7d354cf1745b2d1cf9e5f66f401a6cce4e
Parents: d9850a1
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

----------------------------------------------------------------------
 pom.xml                                         |   2 +
 sandbox/mobile-app/pom.xml                      |  11 +-
 .../main/webapp/assets/mobile/css/mobile.css    |   2 +-
 .../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
 .../assets/mobile/images/brooklyn-logo.png      | Bin 0 -> 7055 bytes
 .../src/main/webapp/assets/mobile/js/app.js     |  18 ++--
 sandbox/mobile-app/src/main/webapp/index.m.html | 104 +++++++++----------
 9 files changed, 67 insertions(+), 70 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c5551b7d/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 402ba2b..fa50de4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1328,6 +1328,8 @@
                 <module>sandbox/nosql</module>
                 <module>sandbox/monitoring</module>
                 <module>sandbox/examples/simple-open-loop-policy</module>
+                <module>sandbox/cassandra-multicloud-snitch</module>
+                <module>sandbox/mobile-app</module>
             </modules>
         </profile>
 

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c5551b7d/sandbox/mobile-app/pom.xml
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/pom.xml b/sandbox/mobile-app/pom.xml
index cdb7f76..99c6ca7 100644
--- a/sandbox/mobile-app/pom.xml
+++ b/sandbox/mobile-app/pom.xml
@@ -23,27 +23,22 @@
     <modelVersion>4.0.0</modelVersion>
     <packaging>war</packaging>
 
+    <groupId>org.apache.brooklyn.sandbox</groupId>
     <artifactId>brooklyn-mobile-app</artifactId>
 
-    <name>Brooklyn Mobile GUI</name>
+    <name>Brooklyn Mobile UI</name>
 
     <description>
         A mobile skin for Brooklyn
     </description>
 
     <parent>
-        <groupId>io.brooklyn</groupId>
+        <groupId>org.apache.brooklyn</groupId>
         <artifactId>brooklyn-parent</artifactId>
         <version>0.7.0-SNAPSHOT</version><!-- BROOKLYN_VERSION -->
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
-    <properties>
-        <project.build.webapp>
-            ${project.build.directory}/${project.build.finalName}
-        </project.build.webapp>
-    </properties>
-
     <dependencies>
         <dependency>
             <groupId>org.testng</groupId>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c5551b7d/sandbox/mobile-app/src/main/webapp/assets/mobile/css/mobile.css
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/css/mobile.css b/sandbox/mobile-app/src/main/webapp/assets/mobile/css/mobile.css
index 8ddaf8a..0e729fb 100644
--- a/sandbox/mobile-app/src/main/webapp/assets/mobile/css/mobile.css
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/css/mobile.css
@@ -21,7 +21,7 @@
 	height:28px;
 	float:right;
 	margin: 20px 20px;
-	content:url("/assets/mobile/images/Powered-by-Cloudsoft-AMP-Logo-on-blue.png");
+	content:url("../images/brooklyn-logo.png");
 }
 
 .navbar-absolute-bottom{

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c5551b7d/sandbox/mobile-app/src/main/webapp/assets/mobile/images/Powered-by-Cloudsoft-AMP-Logo-on-blue.png
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/images/Powered-by-Cloudsoft-AMP-Logo-on-blue.png b/sandbox/mobile-app/src/main/webapp/assets/mobile/images/Powered-by-Cloudsoft-AMP-Logo-on-blue.png
deleted file mode 100644
index 4e6b2b3..0000000
Binary files a/sandbox/mobile-app/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/incubator-brooklyn/blob/c5551b7d/sandbox/mobile-app/src/main/webapp/assets/mobile/images/Powered-by-Cloudsoft-AMP-Logo-on-white.png
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/images/Powered-by-Cloudsoft-AMP-Logo-on-white.png b/sandbox/mobile-app/src/main/webapp/assets/mobile/images/Powered-by-Cloudsoft-AMP-Logo-on-white.png
deleted file mode 100644
index 7143636..0000000
Binary files a/sandbox/mobile-app/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/incubator-brooklyn/blob/c5551b7d/sandbox/mobile-app/src/main/webapp/assets/mobile/images/Powered-by-Cloudsoft-AMP-Logo.png
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/images/Powered-by-Cloudsoft-AMP-Logo.png b/sandbox/mobile-app/src/main/webapp/assets/mobile/images/Powered-by-Cloudsoft-AMP-Logo.png
deleted file mode 100644
index a627f53..0000000
Binary files a/sandbox/mobile-app/src/main/webapp/assets/mobile/images/Powered-by-Cloudsoft-AMP-Logo.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c5551b7d/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

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c5551b7d/sandbox/mobile-app/src/main/webapp/assets/mobile/js/app.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/js/app.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/js/app.js
index cedad5d..906a4f4 100644
--- a/sandbox/mobile-app/src/main/webapp/assets/mobile/js/app.js
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/js/app.js
@@ -29,42 +29,42 @@ var app = angular.module('BrooklynMobile', [
 app.config(function($routeProvider, $translateProvider) {
 	//Defaults root to applications.  Should change in the future
 	$routeProvider.when('/', {
-		templateUrl : "/assets/mobile/js/templates/applicationsList.html",
+		templateUrl : "assets/mobile/js/templates/applicationsList.html",
 		controller:"ApplicationListController"
 	});
 	
 	//Lists applications
 	$routeProvider.when('/v1/applications', {
-		templateUrl : "/assets/mobile/js/templates/applicationsList.html",
+		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",
+		templateUrl : "assets/mobile/js/templates/entitiesList.html",
 		controller:"EntityListController"
 	});
 	$routeProvider.when('/v1/applications/:appId/entities', {
-		templateUrl : "/assets/mobile/js/templates/entitiesList.html",
+		templateUrl : "assets/mobile/js/templates/entitiesList.html",
 		controller:"EntityListController"
 	});
 	$routeProvider.when('/v1/applications/:appId', {
-		templateUrl : "/assets/mobile/js/templates/entitiesList.html",
+		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",
+		templateUrl : "assets/mobile/js/templates/entitySummary.html",
 		controller:"EntityDetailsController"
 	});
 	$routeProvider.when('/v1/applications/:appId/summary', {
-		templateUrl : "/assets/mobile/js/templates/entitySummary.html",
+		templateUrl : "assets/mobile/js/templates/entitySummary.html",
 		controller:"EntityDetailsController"
 	});
 	
 	$translateProvider.useStaticFilesLoader({
-		  prefix: '/assets/mobile/js/i18n/',
+		  prefix: 'assets/mobile/js/i18n/',
 		  suffix: '.json'
 		});
 	//$translateProvider.useLocalStorage();
@@ -81,4 +81,4 @@ app.controller('MainController', function($rootScope, $scope) {
 	$rootScope.$on("$routeChangeSuccess", function() {
 		$rootScope.loading = false;
 	});
-});
\ No newline at end of file
+});

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c5551b7d/sandbox/mobile-app/src/main/webapp/index.m.html
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/index.m.html b/sandbox/mobile-app/src/main/webapp/index.m.html
index 12a3864..9c7ff35 100644
--- a/sandbox/mobile-app/src/main/webapp/index.m.html
+++ b/sandbox/mobile-app/src/main/webapp/index.m.html
@@ -1,4 +1,4 @@
-
+<!DOCTYPE html>
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -17,83 +17,83 @@ 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}}">
+    <meta charset='utf-8'/>
 
-<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" />
+    <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>
+    <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>
+    <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="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="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/documentation/">{{'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 class="navbar navbar-app navbar-footer navbar-absolute-bottom">
+        <img class="poweredLogo" alt="{{M_MENU_POWERED_BY}}"/>
     </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">
+</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 -->
+    <!-- Navbars -->
 
-      <div class="navbar navbar-app navbar-absolute-top">
+    <div class="navbar navbar-app navbar-absolute-top">
         <div class="navbar-brand navbar-brand-center" yield-to="title">
-          <span>{{'APP_NAME_LONG' | translate}}</span>
+            <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 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;
+            &nbsp;
         </div>
-       
-      </div>
 
-      <!-- App Body -->
-      <div class="app-body" ng-class="{loading: loading}">
+    </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>
+            <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>
+
+</div>
 </body>
 </html>


[59/71] [abbrv] incubator-brooklyn git commit: Delete almost all Angular translations

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-mc.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-mc.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-mc.js
deleted file mode 100644
index 3fb2bc8..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-mf.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-mf.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-mf.js
deleted file mode 100644
index 6e35abe..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-mg.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-mg.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-mg.js
deleted file mode 100644
index 35e8308..0000000
--- a/sandbox/mobile-app/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

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ml.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ml.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ml.js
deleted file mode 100644
index e2b6d8a..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-mq.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-mq.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-mq.js
deleted file mode 100644
index b99ce2f..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ne.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ne.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ne.js
deleted file mode 100644
index 2e61a66..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-re.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-re.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-re.js
deleted file mode 100644
index 5cb611b..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-rw.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-rw.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-rw.js
deleted file mode 100644
index f3688b2..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-sn.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-sn.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-sn.js
deleted file mode 100644
index 1ac1399..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-td.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-td.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-td.js
deleted file mode 100644
index 7e447eb..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-tg.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-tg.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-tg.js
deleted file mode 100644
index 9189a44..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-yt.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-yt.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-yt.js
deleted file mode 100644
index eb64853..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gl-es.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gl-es.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gl-es.js
deleted file mode 100644
index f9dc628..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gl.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gl.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gl.js
deleted file mode 100644
index b5f47b4..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gsw-ch.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gsw-ch.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gsw-ch.js
deleted file mode 100644
index 759974d..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gsw.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gsw.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gsw.js
deleted file mode 100644
index 0824756..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gu-in.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gu-in.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gu-in.js
deleted file mode 100644
index d661a68..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gu.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gu.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gu.js
deleted file mode 100644
index c804511..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_he-il.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_he-il.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_he-il.js
deleted file mode 100644
index bc99779..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_he.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_he.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_he.js
deleted file mode 100644
index 88ae35a..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hi-in.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hi-in.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hi-in.js
deleted file mode 100644
index 17399a3..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hi.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hi.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hi.js
deleted file mode 100644
index 165c639..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hr-hr.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hr-hr.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hr-hr.js
deleted file mode 100644
index 3ef9ff3..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hr.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hr.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hr.js
deleted file mode 100644
index 6702e6b..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hu-hu.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hu-hu.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hu-hu.js
deleted file mode 100644
index 8a7f126..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hu.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hu.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hu.js
deleted file mode 100644
index 26558ed..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_id-id.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_id-id.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_id-id.js
deleted file mode 100644
index b63dd77..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_id.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_id.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_id.js
deleted file mode 100644
index b17ce79..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_in.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_in.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_in.js
deleted file mode 100644
index c83cce1..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_is-is.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_is-is.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_is-is.js
deleted file mode 100644
index fe25142..0000000
--- a/sandbox/mobile-app/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


[46/71] [abbrv] [partial] incubator-brooklyn git commit: Move mobile app to sandbox

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-sanitize.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-sanitize.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-sanitize.js
new file mode 100644
index 0000000..f77386d
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-sanitize.js
@@ -0,0 +1,630 @@
+/**
+ * @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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-sanitize.min.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-sanitize.min.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-sanitize.min.js
new file mode 100644
index 0000000..50d8ce8
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-sanitize.min.js
@@ -0,0 +1,15 @@
+/*
+ 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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-sanitize.min.js.map
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-sanitize.min.js.map b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-sanitize.min.js.map
new file mode 100644
index 0000000..b267327
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-sanitize.min.js.map
@@ -0,0 +1,8 @@
+{
+"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"]
+}


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

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/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:la

<TRUNCATED>

[41/71] [abbrv] [partial] incubator-brooklyn git commit: Move mobile app to sandbox

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

<TRUNCATED>

[71/71] [abbrv] incubator-brooklyn git commit: fix rat exceptions on #508

Posted by he...@apache.org.
fix rat exceptions on #508


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

Branch: refs/heads/master
Commit: 77a7f6f6830c0d54f82feea7773bf514f73d3817
Parents: c65e730
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Sat Mar 28 21:50:52 2015 -0500
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Sat Mar 28 21:50:52 2015 -0500

----------------------------------------------------------------------
 sandbox/mobile-app/pom.xml | 7 +------
 1 file changed, 1 insertion(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/77a7f6f6/sandbox/mobile-app/pom.xml
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/pom.xml b/sandbox/mobile-app/pom.xml
index 99c6ca7..bf9f5d5 100644
--- a/sandbox/mobile-app/pom.xml
+++ b/sandbox/mobile-app/pom.xml
@@ -56,12 +56,7 @@
                     <configuration>
                         <excludes combine.children="append">
                             <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-translate/*</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/*</exclude>
+                            <exclude>**/src/main/webapp/assets/mobile/libs/**</exclude>
                         </excludes>
                     </configuration>
                 </plugin>


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

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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


[65/71] [abbrv] incubator-brooklyn git commit: Delete unused mobile-app libraries

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/98e489db/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-loader-url
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-loader-url b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-loader-url
deleted file mode 160000
index 9f880b3..0000000
--- a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-loader-url
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 9f880b3a44574d313012f5891e6ce7f28b9824fa


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

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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


[43/71] [abbrv] [partial] incubator-brooklyn git commit: Move mobile app to sandbox

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular.js
new file mode 100644
index 0000000..50a0512
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular.js
@@ -0,0 +1,21778 @@
+/**
+ * @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 (!

<TRUNCATED>

[38/71] [abbrv] [partial] incubator-brooklyn git commit: Move mobile app to sandbox

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-be.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-be.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-be.js
new file mode 100644
index 0000000..673beb5
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-be.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-bm.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-bm.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-bm.js
new file mode 100644
index 0000000..604db15
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-bm.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-bw.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-bw.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-bw.js
new file mode 100644
index 0000000..0aeb9f9
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-bw.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-bz.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-bz.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-bz.js
new file mode 100644
index 0000000..17f242d
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-bz.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-ca.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-ca.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-ca.js
new file mode 100644
index 0000000..3709035
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-ca.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-dsrt-us.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-dsrt-us.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-dsrt-us.js
new file mode 100644
index 0000000..0ede315
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-dsrt-us.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-dsrt.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-dsrt.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-dsrt.js
new file mode 100644
index 0000000..5e86ec5
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-dsrt.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-fm.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-fm.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-fm.js
new file mode 100644
index 0000000..525604f
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-fm.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-gb.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-gb.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-gb.js
new file mode 100644
index 0000000..4a0f59a
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-gb.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-gu.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-gu.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-gu.js
new file mode 100644
index 0000000..994b571
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-gu.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-gy.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-gy.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-gy.js
new file mode 100644
index 0000000..0c52405
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-gy.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-hk.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-hk.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-hk.js
new file mode 100644
index 0000000..261c490
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-hk.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-ie.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-ie.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-ie.js
new file mode 100644
index 0000000..a7d7b75
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-ie.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-in.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-in.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-in.js
new file mode 100644
index 0000000..ad05889
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-in.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-iso.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-iso.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-iso.js
new file mode 100644
index 0000000..158f8de
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-iso.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-jm.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-jm.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-jm.js
new file mode 100644
index 0000000..7aebeab
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-jm.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-mh.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-mh.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-mh.js
new file mode 100644
index 0000000..0854443
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-mh.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-mp.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-mp.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-mp.js
new file mode 100644
index 0000000..c05f5c9
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-mp.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-mt.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-mt.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-mt.js
new file mode 100644
index 0000000..822d0ac
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-mt.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-mu.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-mu.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-mu.js
new file mode 100644
index 0000000..13629d6
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-mu.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-na.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-na.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-na.js
new file mode 100644
index 0000000..779fb02
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-na.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-nz.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-nz.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-nz.js
new file mode 100644
index 0000000..8e01073
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-nz.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-ph.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-ph.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-ph.js
new file mode 100644
index 0000000..647b9e1
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-ph.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-pk.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-pk.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-pk.js
new file mode 100644
index 0000000..bc58648
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-pk.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-pr.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-pr.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-pr.js
new file mode 100644
index 0000000..6d66c08
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-pr.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-pw.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-pw.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-pw.js
new file mode 100644
index 0000000..e280faa
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-pw.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-sg.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-sg.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-sg.js
new file mode 100644
index 0000000..ccffcd8
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-sg.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-tc.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-tc.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-tc.js
new file mode 100644
index 0000000..f9fdf66
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-tc.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-tt.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-tt.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-tt.js
new file mode 100644
index 0000000..32effe2
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-tt.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-um.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-um.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-um.js
new file mode 100644
index 0000000..aaba7a3
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-um.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-us.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-us.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-us.js
new file mode 100644
index 0000000..953cd10
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-us.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-vg.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-vg.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-vg.js
new file mode 100644
index 0000000..7f05c15
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-vg.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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


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

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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


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

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/fonts/fontawesome-webfont.svg
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/fonts/fontawesome-webfont.svg b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/fonts/fontawesome-webfont.svg
new file mode 100644
index 0000000..a9f8469
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/fonts/fontawesome-webfont.svg
@@ -0,0 +1,504 @@
+<?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

<TRUNCATED>

[67/71] [abbrv] incubator-brooklyn git commit: Delete unused mobile-app libraries

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/98e489db/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-sanitize.min.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-sanitize.min.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-sanitize.min.js
deleted file mode 100644
index 50d8ce8..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/98e489db/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-sanitize.min.js.map
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-sanitize.min.js.map b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-sanitize.min.js.map
deleted file mode 100644
index b267327..0000000
--- a/sandbox/mobile-app/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"]
-}


[62/71] [abbrv] incubator-brooklyn git commit: Delete almost all Angular translations

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_el-gr.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_el-gr.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_el-gr.js
deleted file mode 100644
index 101464f..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_el.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_el.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_el.js
deleted file mode 100644
index 8433050..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-as.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-as.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-as.js
deleted file mode 100644
index 3cc5eb5..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-au.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-au.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-au.js
deleted file mode 100644
index c09f4ae..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-bb.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-bb.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-bb.js
deleted file mode 100644
index dcf93ad..0000000
--- a/sandbox/mobile-app/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

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-be.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-be.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-be.js
deleted file mode 100644
index 673beb5..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-bm.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-bm.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-bm.js
deleted file mode 100644
index 604db15..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-bw.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-bw.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-bw.js
deleted file mode 100644
index 0aeb9f9..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-bz.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-bz.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-bz.js
deleted file mode 100644
index 17f242d..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-ca.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-ca.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-ca.js
deleted file mode 100644
index 3709035..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-dsrt-us.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-dsrt-us.js b/sandbox/mobile-app/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/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-dsrt.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-dsrt.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-dsrt.js
deleted file mode 100644
index 5e86ec5..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-fm.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-fm.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-fm.js
deleted file mode 100644
index 525604f..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-gu.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-gu.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-gu.js
deleted file mode 100644
index 994b571..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-gy.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-gy.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-gy.js
deleted file mode 100644
index 0c52405..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-hk.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-hk.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-hk.js
deleted file mode 100644
index 261c490..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-ie.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-ie.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-ie.js
deleted file mode 100644
index a7d7b75..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-in.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-in.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-in.js
deleted file mode 100644
index ad05889..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-iso.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-iso.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-iso.js
deleted file mode 100644
index 158f8de..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-jm.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-jm.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-jm.js
deleted file mode 100644
index 7aebeab..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-mh.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-mh.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-mh.js
deleted file mode 100644
index 0854443..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-mp.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-mp.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-mp.js
deleted file mode 100644
index c05f5c9..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-mt.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-mt.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-mt.js
deleted file mode 100644
index 822d0ac..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-mu.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-mu.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-mu.js
deleted file mode 100644
index 13629d6..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-na.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-na.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-na.js
deleted file mode 100644
index 779fb02..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-nz.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-nz.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-nz.js
deleted file mode 100644
index 8e01073..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-ph.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-ph.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-ph.js
deleted file mode 100644
index 647b9e1..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-pk.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-pk.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-pk.js
deleted file mode 100644
index bc58648..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-pr.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-pr.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-pr.js
deleted file mode 100644
index 6d66c08..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-pw.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-pw.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-pw.js
deleted file mode 100644
index e280faa..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-sg.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-sg.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-sg.js
deleted file mode 100644
index ccffcd8..0000000
--- a/sandbox/mobile-app/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


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

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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
-````


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

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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


[70/71] [abbrv] incubator-brooklyn git commit: This closes #508

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


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

Branch: refs/heads/master
Commit: c65e73010f943657ba1e96a136462f8041c31bef
Parents: 4fb2c70 98e489d
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

----------------------------------------------------------------------
 pom.xml                                         |     2 +
 sandbox/mobile-app/pom.xml                      |    72 +
 .../mobile-app/src/main/webapp/WEB-INF/web.xml  |    24 +
 .../main/webapp/assets/mobile/css/mobile.css    |    74 +
 .../assets/mobile/images/brooklyn-logo.png      |   Bin 0 -> 7055 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-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 +
 .../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 +
 .../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_de.js    |    99 +
 .../angular-1.2.19/i18n/angular-locale_en-gb.js |    99 +
 .../angular-1.2.19/i18n/angular-locale_en-us.js |    99 +
 .../angular-1.2.19/i18n/angular-locale_en.js    |    99 +
 .../angular-1.2.19/i18n/angular-locale_es.js    |    99 +
 .../angular-1.2.19/i18n/angular-locale_fr.js    |    99 +
 .../angular-1.2.19/i18n/angular-locale_ru.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 +
 .../.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 0 -> 75188 bytes
 .../dist/fonts/fontawesome-webfont.eot          |   Bin 0 -> 72449 bytes
 .../dist/fonts/fontawesome-webfont.svg          |   504 +
 .../dist/fonts/fontawesome-webfont.ttf          |   Bin 0 -> 141564 bytes
 .../dist/fonts/fontawesome-webfont.woff         |   Bin 0 -> 83760 bytes
 .../dist/js/mobile-angular-ui.js                |  1854 ++
 .../dist/js/mobile-angular-ui.min.js            |     1 +
 sandbox/mobile-app/src/main/webapp/index.m.html |    99 +
 usage/jsgui/src/main/webapp/index.html          |     1 -
 76 files changed, 40473 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c65e7301/pom.xml
----------------------------------------------------------------------

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


[69/71] [abbrv] incubator-brooklyn git commit: Delete unused mobile-app libraries

Posted by he...@apache.org.
Delete unused mobile-app libraries


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

Branch: refs/heads/master
Commit: 98e489dbd70556c87d9ff4b2cfef6cdbb12b4667
Parents: 9b07292
Author: Sam Corbett <sa...@cloudsoftcorp.com>
Authored: Fri Feb 6 18:44:53 2015 +0000
Committer: Sam Corbett <sa...@cloudsoftcorp.com>
Committed: Fri Feb 6 18:44:53 2015 +0000

----------------------------------------------------------------------
 .../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-loader.js       |   414 -
 .../libs/angular-1.2.19/angular-loader.min.js   |     9 -
 .../angular-1.2.19/angular-loader.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-translate-loader-url    |     1 -
 11 files changed, 36532 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/98e489db/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-animate.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-animate.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-animate.js
deleted file mode 100644
index 01a3e3e..0000000
--- a/sandbox/mobile-app/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);


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

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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


[51/71] [abbrv] [partial] incubator-brooklyn 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/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/12342668
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/12342668
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/12342668

Branch: refs/heads/master
Commit: 123426687c1a7d28340dbffbe98da063c2b16629
Parents: 230be65
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

----------------------------------------------------------------------
 sandbox/mobile-app/pom.xml                      |    77 +
 .../mobile-app/src/main/webapp/WEB-INF/web.xml  |    24 +
 .../main/webapp/assets/mobile/css/mobile.css    |    74 +
 .../Powered-by-Cloudsoft-AMP-Logo-on-blue.png   |   Bin 0 -> 30107 bytes
 .../Powered-by-Cloudsoft-AMP-Logo-on-white.png  |   Bin 0 -> 28288 bytes
 .../images/Powered-by-Cloudsoft-AMP-Logo.png    |   Bin 0 -> 30522 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 0 -> 75188 bytes
 .../dist/fonts/fontawesome-webfont.eot          |   Bin 0 -> 72449 bytes
 .../dist/fonts/fontawesome-webfont.svg          |   504 +
 .../dist/fonts/fontawesome-webfont.ttf          |   Bin 0 -> 141564 bytes
 .../dist/fonts/fontawesome-webfont.woff         |   Bin 0 -> 83760 bytes
 .../dist/js/mobile-angular-ui.js                |  1854 +
 .../dist/js/mobile-angular-ui.min.js            |     1 +
 sandbox/mobile-app/src/main/webapp/index.m.html |    99 +
 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 -
 718 files changed, 103936 insertions(+), 103853 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/sandbox/mobile-app/pom.xml
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/pom.xml b/sandbox/mobile-app/pom.xml
new file mode 100644
index 0000000..cdb7f76
--- /dev/null
+++ b/sandbox/mobile-app/pom.xml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <packaging>war</packaging>
+
+    <artifactId>brooklyn-mobile-app</artifactId>
+
+    <name>Brooklyn Mobile GUI</name>
+
+    <description>
+        A mobile skin for Brooklyn
+    </description>
+
+    <parent>
+        <groupId>io.brooklyn</groupId>
+        <artifactId>brooklyn-parent</artifactId>
+        <version>0.7.0-SNAPSHOT</version><!-- BROOKLYN_VERSION -->
+        <relativePath>../../pom.xml</relativePath>
+    </parent>
+
+    <properties>
+        <project.build.webapp>
+            ${project.build.directory}/${project.build.finalName}
+        </project.build.webapp>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.testng</groupId>
+            <artifactId>testng</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.apache.rat</groupId>
+                    <artifactId>apache-rat-plugin</artifactId>
+                    <configuration>
+                        <excludes combine.children="append">
+                            <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-translate/*</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/*</exclude>
+                        </excludes>
+                    </configuration>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+</project>
+

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/WEB-INF/web.xml
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/WEB-INF/web.xml b/sandbox/mobile-app/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..a126eb1
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,24 @@
+<!DOCTYPE web-app PUBLIC
+ "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
+ "http://java.sun.com/dtd/web-app_2_3.dtd" >
+<!--
+    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.
+-->
+<web-app>
+  <display-name>Brooklyn Mobile</display-name>
+</web-app>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/css/mobile.css
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/css/mobile.css b/sandbox/mobile-app/src/main/webapp/assets/mobile/css/mobile.css
new file mode 100644
index 0000000..8ddaf8a
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/css/mobile.css
@@ -0,0 +1,74 @@
+/*
+ * 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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/images/Powered-by-Cloudsoft-AMP-Logo-on-blue.png
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/images/Powered-by-Cloudsoft-AMP-Logo-on-blue.png b/sandbox/mobile-app/src/main/webapp/assets/mobile/images/Powered-by-Cloudsoft-AMP-Logo-on-blue.png
new file mode 100644
index 0000000..4e6b2b3
Binary files /dev/null and b/sandbox/mobile-app/src/main/webapp/assets/mobile/images/Powered-by-Cloudsoft-AMP-Logo-on-blue.png differ

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/images/Powered-by-Cloudsoft-AMP-Logo-on-white.png
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/images/Powered-by-Cloudsoft-AMP-Logo-on-white.png b/sandbox/mobile-app/src/main/webapp/assets/mobile/images/Powered-by-Cloudsoft-AMP-Logo-on-white.png
new file mode 100644
index 0000000..7143636
Binary files /dev/null and b/sandbox/mobile-app/src/main/webapp/assets/mobile/images/Powered-by-Cloudsoft-AMP-Logo-on-white.png differ

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/images/Powered-by-Cloudsoft-AMP-Logo.png
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/images/Powered-by-Cloudsoft-AMP-Logo.png b/sandbox/mobile-app/src/main/webapp/assets/mobile/images/Powered-by-Cloudsoft-AMP-Logo.png
new file mode 100644
index 0000000..a627f53
Binary files /dev/null and b/sandbox/mobile-app/src/main/webapp/assets/mobile/images/Powered-by-Cloudsoft-AMP-Logo.png differ

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/js/app.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/js/app.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/js/app.js
new file mode 100644
index 0000000..cedad5d
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/js/app.js
@@ -0,0 +1,84 @@
+/*
+ * 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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/js/controllers.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/js/controllers.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/js/controllers.js
new file mode 100644
index 0000000..68e21d1
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/js/controllers.js
@@ -0,0 +1,202 @@
+/*
+ * 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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/js/filters.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/js/filters.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/js/filters.js
new file mode 100644
index 0000000..289bd3f
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/js/filters.js
@@ -0,0 +1,29 @@
+/*
+ * 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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/js/i18n/en-us.json
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/js/i18n/en-us.json b/sandbox/mobile-app/src/main/webapp/assets/mobile/js/i18n/en-us.json
new file mode 100644
index 0000000..ca3ea5e
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/js/i18n/en-us.json
@@ -0,0 +1,27 @@
+{
+	"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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/js/services.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/js/services.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/js/services.js
new file mode 100644
index 0000000..6e16afa
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/js/services.js
@@ -0,0 +1,28 @@
+/*
+ * 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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/js/templates/applicationsList.html
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/js/templates/applicationsList.html b/sandbox/mobile-app/src/main/webapp/assets/mobile/js/templates/applicationsList.html
new file mode 100644
index 0000000..1ab6fc5
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/js/templates/applicationsList.html
@@ -0,0 +1,72 @@
+<!--
+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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/js/templates/entitiesList.html
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/js/templates/entitiesList.html b/sandbox/mobile-app/src/main/webapp/assets/mobile/js/templates/entitiesList.html
new file mode 100644
index 0000000..0417f8b
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/js/templates/entitiesList.html
@@ -0,0 +1,53 @@
+<!--
+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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/js/templates/entitySummary.html
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/js/templates/entitySummary.html b/sandbox/mobile-app/src/main/webapp/assets/mobile/js/templates/entitySummary.html
new file mode 100644
index 0000000..832700d
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/js/templates/entitySummary.html
@@ -0,0 +1,250 @@
+<!--
+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


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

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/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>

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

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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


[29/71] [abbrv] [partial] incubator-brooklyn git commit: Move mobile app to sandbox

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/css/mobile-angular-ui-base.css
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/css/mobile-angular-ui-base.css b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/css/mobile-angular-ui-base.css
new file mode 100644
index 0000000..66bc9b3
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/css/mobile-angular-ui-base.css
@@ -0,0 +1,7543 @@
+/* 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;
+

<TRUNCATED>

[63/71] [abbrv] incubator-brooklyn git commit: Delete almost all Angular translations

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-qa.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-qa.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-qa.js
deleted file mode 100644
index f7dfd65..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-sa.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-sa.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-sa.js
deleted file mode 100644
index 8ee44d4..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-sd.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-sd.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-sd.js
deleted file mode 100644
index 0141e05..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-sy.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-sy.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-sy.js
deleted file mode 100644
index cb324e8..0000000
--- a/sandbox/mobile-app/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

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-tn.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-tn.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-tn.js
deleted file mode 100644
index a78f0de..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-ye.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-ye.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-ye.js
deleted file mode 100644
index 6b28d2f..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar.js
deleted file mode 100644
index 872194e..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_bg-bg.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_bg-bg.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_bg-bg.js
deleted file mode 100644
index c88bb88..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_bg.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_bg.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_bg.js
deleted file mode 100644
index db0865b..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_bn-bd.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_bn-bd.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_bn-bd.js
deleted file mode 100644
index 980495c..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_bn-in.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_bn-in.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_bn-in.js
deleted file mode 100644
index 0b41428..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_bn.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_bn.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_bn.js
deleted file mode 100644
index 5cc14cc..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ca-ad.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ca-ad.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ca-ad.js
deleted file mode 100644
index a7f1e6e..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ca-es.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ca-es.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ca-es.js
deleted file mode 100644
index b589a21..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ca.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ca.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ca.js
deleted file mode 100644
index 3bced03..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_cs-cz.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_cs-cz.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_cs-cz.js
deleted file mode 100644
index 3c88d94..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_cs.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_cs.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_cs.js
deleted file mode 100644
index c0a1e33..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_da-dk.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_da-dk.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_da-dk.js
deleted file mode 100644
index 399a1e4..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_da.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_da.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_da.js
deleted file mode 100644
index 1d8bcbe..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-at.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-at.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-at.js
deleted file mode 100644
index 257e7d8..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-be.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-be.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-be.js
deleted file mode 100644
index d07143b..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-ch.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-ch.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-ch.js
deleted file mode 100644
index b249939..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-de.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-de.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-de.js
deleted file mode 100644
index 58e7043..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-li.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-li.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-li.js
deleted file mode 100644
index 2886513..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-lu.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-lu.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_de-lu.js
deleted file mode 100644
index 61aa489..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_el-cy.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_el-cy.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_el-cy.js
deleted file mode 100644
index e7a4c94..0000000
--- a/sandbox/mobile-app/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


[45/71] [abbrv] [partial] incubator-brooklyn git commit: Move mobile app to sandbox

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-scenario.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-scenario.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-scenario.js
new file mode 100644
index 0000000..bcb0295
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-scenario.js
@@ -0,0 +1,33778 @@
+/*!
+ * 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;
+			

<TRUNCATED>

[42/71] [abbrv] [partial] incubator-brooklyn git commit: Move mobile app to sandbox

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular.min.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular.min.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular.min.js
new file mode 100644
index 0000000..89ea8f9
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular.min.js
@@ -0,0 +1,214 @@
+/*
+ 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

<TRUNCATED>

[66/71] [abbrv] incubator-brooklyn git commit: Delete unused mobile-app libraries

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/98e489db/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-scenario.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-scenario.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-scenario.js
deleted file mode 100644
index bcb0295..0000000
--- a/sandbox/mobile-app/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;


<TRUNCATED>

[32/71] [abbrv] [partial] incubator-brooklyn git commit: Move mobile app to sandbox

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-cyrl-ba.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-cyrl-ba.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-cyrl-ba.js
new file mode 100644
index 0000000..9f9cf3c
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-cyrl-ba.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-cyrl-me.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-cyrl-me.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-cyrl-me.js
new file mode 100644
index 0000000..bf5d9e0
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-cyrl-me.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-cyrl-rs.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-cyrl-rs.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-cyrl-rs.js
new file mode 100644
index 0000000..d6b68dd
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-cyrl-rs.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-cyrl.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-cyrl.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-cyrl.js
new file mode 100644
index 0000000..df0cd58
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-cyrl.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-latn-ba.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-latn-ba.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-latn-ba.js
new file mode 100644
index 0000000..dae6550
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-latn-ba.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-latn-me.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-latn-me.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-latn-me.js
new file mode 100644
index 0000000..fad8340
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-latn-me.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-latn-rs.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-latn-rs.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-latn-rs.js
new file mode 100644
index 0000000..30743fd
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-latn-rs.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-latn.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-latn.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-latn.js
new file mode 100644
index 0000000..c2cf55a
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-latn.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr.js
new file mode 100644
index 0000000..795e9ff
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sv-fi.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sv-fi.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sv-fi.js
new file mode 100644
index 0000000..cbf7195
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sv-fi.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sv-se.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sv-se.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sv-se.js
new file mode 100644
index 0000000..4590ed9
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sv-se.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sv.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sv.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sv.js
new file mode 100644
index 0000000..b49b764
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sv.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sw-ke.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sw-ke.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sw-ke.js
new file mode 100644
index 0000000..0d4ad4d
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sw-ke.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sw-tz.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sw-tz.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sw-tz.js
new file mode 100644
index 0000000..2bea9c6
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sw-tz.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sw.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sw.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sw.js
new file mode 100644
index 0000000..3892f2c
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sw.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ta-in.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ta-in.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ta-in.js
new file mode 100644
index 0000000..b491909
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ta-in.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ta-lk.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ta-lk.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ta-lk.js
new file mode 100644
index 0000000..2d661c8
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ta-lk.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ta.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ta.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ta.js
new file mode 100644
index 0000000..338d5f9
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ta.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_te-in.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_te-in.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_te-in.js
new file mode 100644
index 0000000..4e3e5db
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_te-in.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_te.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_te.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_te.js
new file mode 100644
index 0000000..9671277
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_te.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_th-th.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_th-th.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_th-th.js
new file mode 100644
index 0000000..0791a42
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_th-th.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_th.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_th.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_th.js
new file mode 100644
index 0000000..be8efab
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_th.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_tl.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_tl.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_tl.js
new file mode 100644
index 0000000..0809c01
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_tl.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_tr-tr.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_tr-tr.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_tr-tr.js
new file mode 100644
index 0000000..57d3ca4
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_tr-tr.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_tr.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_tr.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_tr.js
new file mode 100644
index 0000000..bc36ae2
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_tr.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_uk-ua.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_uk-ua.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_uk-ua.js
new file mode 100644
index 0000000..1e01d7c
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_uk-ua.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_uk.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_uk.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_uk.js
new file mode 100644
index 0000000..6b50582
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_uk.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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


[64/71] [abbrv] incubator-brooklyn git commit: Delete almost all Angular translations

Posted by he...@apache.org.
Delete almost all Angular translations

We can add them back should we ever support the mobile app properly.


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

Branch: refs/heads/master
Commit: 9b07292a30db09f3e6294ab722c6e0850f241208
Parents: c5551b7
Author: Sam Corbett <sa...@cloudsoftcorp.com>
Authored: Fri Feb 6 18:44:32 2015 +0000
Committer: Sam Corbett <sa...@cloudsoftcorp.com>
Committed: Fri Feb 6 18:44:32 2015 +0000

----------------------------------------------------------------------
 .../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_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-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-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 --------------------
 .../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_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_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_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 --------------------
 272 files changed, 26928 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_af-na.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_af-na.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_af-na.js
deleted file mode 100644
index e40bd16..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_af-za.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_af-za.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_af-za.js
deleted file mode 100644
index dddd6ca..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_af.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_af.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_af.js
deleted file mode 100644
index aacbefd..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_am-et.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_am-et.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_am-et.js
deleted file mode 100644
index decae2d..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_am.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_am.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_am.js
deleted file mode 100644
index 6a7ad5f..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-001.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-001.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-001.js
deleted file mode 100644
index 9ed1dae..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-ae.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-ae.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-ae.js
deleted file mode 100644
index 2440d71..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-bh.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-bh.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-bh.js
deleted file mode 100644
index bb53289..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-dz.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-dz.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-dz.js
deleted file mode 100644
index ab02398..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-eg.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-eg.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-eg.js
deleted file mode 100644
index 1a45444..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-iq.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-iq.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-iq.js
deleted file mode 100644
index a141d14..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-jo.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-jo.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-jo.js
deleted file mode 100644
index 67e5d70..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-kw.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-kw.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-kw.js
deleted file mode 100644
index 7507c5a..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-lb.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-lb.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-lb.js
deleted file mode 100644
index 8c867b6..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-ly.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-ly.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-ly.js
deleted file mode 100644
index 4b59d39..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-ma.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-ma.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-ma.js
deleted file mode 100644
index 44fcfcc..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-om.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-om.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-om.js
deleted file mode 100644
index 822aede..0000000
--- a/sandbox/mobile-app/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


[56/71] [abbrv] incubator-brooklyn git commit: Delete almost all Angular translations

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-cyrl-ba.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-cyrl-ba.js b/sandbox/mobile-app/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/sandbox/mobile-app/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

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-cyrl-me.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-cyrl-me.js b/sandbox/mobile-app/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/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-cyrl-rs.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-cyrl-rs.js b/sandbox/mobile-app/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/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-cyrl.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-cyrl.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-cyrl.js
deleted file mode 100644
index df0cd58..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-latn-ba.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-latn-ba.js b/sandbox/mobile-app/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/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-latn-me.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-latn-me.js b/sandbox/mobile-app/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/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-latn-rs.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-latn-rs.js b/sandbox/mobile-app/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/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-latn.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-latn.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr-latn.js
deleted file mode 100644
index c2cf55a..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sr.js
deleted file mode 100644
index 795e9ff..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sv-fi.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sv-fi.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sv-fi.js
deleted file mode 100644
index cbf7195..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sv-se.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sv-se.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sv-se.js
deleted file mode 100644
index 4590ed9..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sv.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sv.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sv.js
deleted file mode 100644
index b49b764..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sw-ke.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sw-ke.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sw-ke.js
deleted file mode 100644
index 0d4ad4d..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sw-tz.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sw-tz.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sw-tz.js
deleted file mode 100644
index 2bea9c6..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sw.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sw.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sw.js
deleted file mode 100644
index 3892f2c..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ta-in.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ta-in.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ta-in.js
deleted file mode 100644
index b491909..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ta-lk.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ta-lk.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ta-lk.js
deleted file mode 100644
index 2d661c8..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ta.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ta.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ta.js
deleted file mode 100644
index 338d5f9..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_te-in.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_te-in.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_te-in.js
deleted file mode 100644
index 4e3e5db..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_te.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_te.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_te.js
deleted file mode 100644
index 9671277..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_th-th.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_th-th.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_th-th.js
deleted file mode 100644
index 0791a42..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_th.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_th.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_th.js
deleted file mode 100644
index be8efab..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_tl.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_tl.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_tl.js
deleted file mode 100644
index 0809c01..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_tr-tr.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_tr-tr.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_tr-tr.js
deleted file mode 100644
index 57d3ca4..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_tr.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_tr.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_tr.js
deleted file mode 100644
index bc36ae2..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_uk-ua.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_uk-ua.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_uk-ua.js
deleted file mode 100644
index 1e01d7c..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_uk.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_uk.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_uk.js
deleted file mode 100644
index 6b50582..0000000
--- a/sandbox/mobile-app/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


[28/71] [abbrv] [partial] incubator-brooklyn git commit: Move mobile app to sandbox

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/css/mobile-angular-ui-base.min.css
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/css/mobile-angular-ui-base.min.css b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/css/mobile-angular-ui-base.min.css
new file mode 100644
index 0000000..3e9bfde
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/css/mobile-angular-ui-base.min.css
@@ -0,0 +1 @@
+@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
 }.

<TRUNCATED>

[49/71] [abbrv] [partial] incubator-brooklyn git commit: Move mobile app to sandbox

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-animate.min.js.map
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-animate.min.js.map b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-animate.min.js.map
new file mode 100644
index 0000000..1772348
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-animate.min.js.map
@@ -0,0 +1,8 @@
+{
+"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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-cookies.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-cookies.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-cookies.js
new file mode 100644
index 0000000..22f397a
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-cookies.js
@@ -0,0 +1,204 @@
+/**
+ * @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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-cookies.min.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-cookies.min.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-cookies.min.js
new file mode 100644
index 0000000..db53d64
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-cookies.min.js
@@ -0,0 +1,8 @@
+/*
+ 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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-cookies.min.js.map
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-cookies.min.js.map b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-cookies.min.js.map
new file mode 100644
index 0000000..4e6f87a
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-cookies.min.js.map
@@ -0,0 +1,8 @@
+{
+"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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-csp.css
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-csp.css b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-csp.css
new file mode 100644
index 0000000..3abb3a0
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-csp.css
@@ -0,0 +1,24 @@
+/* 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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-loader.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-loader.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-loader.js
new file mode 100644
index 0000000..e98487d
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-loader.js
@@ -0,0 +1,414 @@
+/**
+ * @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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-loader.min.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-loader.min.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-loader.min.js
new file mode 100644
index 0000000..75f2c86
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-loader.min.js
@@ -0,0 +1,9 @@
+/*
+ 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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-loader.min.js.map
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-loader.min.js.map b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-loader.min.js.map
new file mode 100644
index 0000000..c61fa8b
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-loader.min.js.map
@@ -0,0 +1,8 @@
+{
+"version":3,
+"file":"angular-loader.min.js",
+"lineCount":8,
+"mappings":"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",
+"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"]
+}


[34/71] [abbrv] [partial] incubator-brooklyn git commit: Move mobile app to sandbox

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_it-ch.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_it-ch.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_it-ch.js
new file mode 100644
index 0000000..653cd89
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_it-ch.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_it-it.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_it-it.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_it-it.js
new file mode 100644
index 0000000..82766cc
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_it-it.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_it-sm.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_it-sm.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_it-sm.js
new file mode 100644
index 0000000..6a7041d
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_it-sm.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_it.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_it.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_it.js
new file mode 100644
index 0000000..c5101db
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_it.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_iw.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_iw.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_iw.js
new file mode 100644
index 0000000..26d452c
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_iw.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ja-jp.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ja-jp.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ja-jp.js
new file mode 100644
index 0000000..f63a1b0
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ja-jp.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ja.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ja.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ja.js
new file mode 100644
index 0000000..71f2306
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ja.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_kn-in.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_kn-in.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_kn-in.js
new file mode 100644
index 0000000..73d66f5
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_kn-in.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_kn.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_kn.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_kn.js
new file mode 100644
index 0000000..fa7c925
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_kn.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ko-kr.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ko-kr.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ko-kr.js
new file mode 100644
index 0000000..8de6031
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ko-kr.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ko.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ko.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ko.js
new file mode 100644
index 0000000..51efdc5
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ko.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ln-cd.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ln-cd.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ln-cd.js
new file mode 100644
index 0000000..51a45ed
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ln-cd.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ln-cg.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ln-cg.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ln-cg.js
new file mode 100644
index 0000000..6095d33
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ln-cg.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ln.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ln.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ln.js
new file mode 100644
index 0000000..0f2bb5f
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ln.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_lt-lt.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_lt-lt.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_lt-lt.js
new file mode 100644
index 0000000..0b84931
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_lt-lt.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_lt.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_lt.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_lt.js
new file mode 100644
index 0000000..c0d3c0a
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_lt.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_lv-lv.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_lv-lv.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_lv-lv.js
new file mode 100644
index 0000000..4bcfced
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_lv-lv.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_lv.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_lv.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_lv.js
new file mode 100644
index 0000000..56ec049
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_lv.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ml-in.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ml-in.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ml-in.js
new file mode 100644
index 0000000..24641e2
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ml-in.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ml.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ml.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ml.js
new file mode 100644
index 0000000..2b61d30
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ml.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_mr-in.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_mr-in.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_mr-in.js
new file mode 100644
index 0000000..8d5381a
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_mr-in.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_mr.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_mr.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_mr.js
new file mode 100644
index 0000000..d9d91ba
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_mr.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ms-bn.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ms-bn.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ms-bn.js
new file mode 100644
index 0000000..cd32b56
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ms-bn.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ms-my.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ms-my.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ms-my.js
new file mode 100644
index 0000000..6f91161
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ms-my.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ms.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ms.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ms.js
new file mode 100644
index 0000000..4acdbff
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ms.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_mt-mt.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_mt-mt.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_mt-mt.js
new file mode 100644
index 0000000..9ccf8b2
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_mt-mt.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_mt.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_mt.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_mt.js
new file mode 100644
index 0000000..753d21c
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_mt.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl-aw.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl-aw.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl-aw.js
new file mode 100644
index 0000000..171035b
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl-aw.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl-be.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl-be.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl-be.js
new file mode 100644
index 0000000..86158ab
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl-be.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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


[58/71] [abbrv] incubator-brooklyn git commit: Delete almost all Angular translations

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_is.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_is.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_is.js
deleted file mode 100644
index a579b0e..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_it-ch.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_it-ch.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_it-ch.js
deleted file mode 100644
index 653cd89..0000000
--- a/sandbox/mobile-app/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

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_it-it.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_it-it.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_it-it.js
deleted file mode 100644
index 82766cc..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_it-sm.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_it-sm.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_it-sm.js
deleted file mode 100644
index 6a7041d..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_it.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_it.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_it.js
deleted file mode 100644
index c5101db..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_iw.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_iw.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_iw.js
deleted file mode 100644
index 26d452c..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ja-jp.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ja-jp.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ja-jp.js
deleted file mode 100644
index f63a1b0..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ja.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ja.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ja.js
deleted file mode 100644
index 71f2306..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_kn-in.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_kn-in.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_kn-in.js
deleted file mode 100644
index 73d66f5..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_kn.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_kn.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_kn.js
deleted file mode 100644
index fa7c925..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ko-kr.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ko-kr.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ko-kr.js
deleted file mode 100644
index 8de6031..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ko.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ko.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ko.js
deleted file mode 100644
index 51efdc5..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ln-cd.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ln-cd.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ln-cd.js
deleted file mode 100644
index 51a45ed..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ln-cg.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ln-cg.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ln-cg.js
deleted file mode 100644
index 6095d33..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ln.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ln.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ln.js
deleted file mode 100644
index 0f2bb5f..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_lt-lt.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_lt-lt.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_lt-lt.js
deleted file mode 100644
index 0b84931..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_lt.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_lt.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_lt.js
deleted file mode 100644
index c0d3c0a..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_lv-lv.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_lv-lv.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_lv-lv.js
deleted file mode 100644
index 4bcfced..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_lv.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_lv.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_lv.js
deleted file mode 100644
index 56ec049..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ml-in.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ml-in.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ml-in.js
deleted file mode 100644
index 24641e2..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ml.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ml.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ml.js
deleted file mode 100644
index 2b61d30..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_mr-in.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_mr-in.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_mr-in.js
deleted file mode 100644
index 8d5381a..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_mr.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_mr.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_mr.js
deleted file mode 100644
index d9d91ba..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ms-bn.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ms-bn.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ms-bn.js
deleted file mode 100644
index cd32b56..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ms-my.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ms-my.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ms-my.js
deleted file mode 100644
index 6f91161..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ms.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ms.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ms.js
deleted file mode 100644
index 4acdbff..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_mt-mt.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_mt-mt.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_mt-mt.js
deleted file mode 100644
index 9ccf8b2..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_mt.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_mt.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_mt.js
deleted file mode 100644
index 753d21c..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl-aw.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl-aw.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl-aw.js
deleted file mode 100644
index 171035b..0000000
--- a/sandbox/mobile-app/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


[60/71] [abbrv] incubator-brooklyn git commit: Delete almost all Angular translations

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_et.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_et.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_et.js
deleted file mode 100644
index f996bba..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_eu-es.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_eu-es.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_eu-es.js
deleted file mode 100644
index d5fe45a..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_eu.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_eu.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_eu.js
deleted file mode 100644
index 67faf10..0000000
--- a/sandbox/mobile-app/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

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fa-af.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fa-af.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fa-af.js
deleted file mode 100644
index c96ecde..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fa-ir.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fa-ir.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fa-ir.js
deleted file mode 100644
index 27099d7..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fa.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fa.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fa.js
deleted file mode 100644
index c94c6c1..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fi-fi.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fi-fi.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fi-fi.js
deleted file mode 100644
index 60c57d6..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fi.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fi.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fi.js
deleted file mode 100644
index 6570dde..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fil-ph.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fil-ph.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fil-ph.js
deleted file mode 100644
index 8873e5a..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fil.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fil.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fil.js
deleted file mode 100644
index 893e768..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-be.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-be.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-be.js
deleted file mode 100644
index 7de5ef7..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-bf.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-bf.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-bf.js
deleted file mode 100644
index d158381..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-bi.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-bi.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-bi.js
deleted file mode 100644
index 8fe8736..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-bj.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-bj.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-bj.js
deleted file mode 100644
index d5be5b8..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-bl.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-bl.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-bl.js
deleted file mode 100644
index 73abcdd..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ca.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ca.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ca.js
deleted file mode 100644
index 04fd552..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-cd.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-cd.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-cd.js
deleted file mode 100644
index 996c7f5..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-cf.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-cf.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-cf.js
deleted file mode 100644
index 614add5..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-cg.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-cg.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-cg.js
deleted file mode 100644
index 9431c2c..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ch.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ch.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ch.js
deleted file mode 100644
index 6a47fb0..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ci.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ci.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ci.js
deleted file mode 100644
index 7ba2130..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-cm.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-cm.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-cm.js
deleted file mode 100644
index ef8e7de..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-dj.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-dj.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-dj.js
deleted file mode 100644
index 052750c..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-fr.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-fr.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-fr.js
deleted file mode 100644
index 8e38aa0..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ga.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ga.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ga.js
deleted file mode 100644
index a732c27..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-gf.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-gf.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-gf.js
deleted file mode 100644
index 3ef7c4a..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-gn.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-gn.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-gn.js
deleted file mode 100644
index a239cc8..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-gp.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-gp.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-gp.js
deleted file mode 100644
index 7e00d06..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-gq.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-gq.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-gq.js
deleted file mode 100644
index 107f5ff..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-km.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-km.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-km.js
deleted file mode 100644
index 8e17c22..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-lu.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-lu.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-lu.js
deleted file mode 100644
index 86f1a7c..0000000
--- a/sandbox/mobile-app/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


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

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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"]
-}


[55/71] [abbrv] incubator-brooklyn git commit: Delete almost all Angular translations

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ur-in.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ur-in.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ur-in.js
deleted file mode 100644
index c501be6..0000000
--- a/sandbox/mobile-app/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

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ur-pk.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ur-pk.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ur-pk.js
deleted file mode 100644
index cd64221..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ur.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ur.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ur.js
deleted file mode 100644
index d09bea8..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_vi-vn.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_vi-vn.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_vi-vn.js
deleted file mode 100644
index 1f4fa05..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_vi.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_vi.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_vi.js
deleted file mode 100644
index d8d478e..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-cn.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-cn.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-cn.js
deleted file mode 100644
index 787d1fd..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hans-cn.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hans-cn.js b/sandbox/mobile-app/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/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hans-hk.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hans-hk.js b/sandbox/mobile-app/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/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hans-mo.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hans-mo.js b/sandbox/mobile-app/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/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hans-sg.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hans-sg.js b/sandbox/mobile-app/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/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hans.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hans.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hans.js
deleted file mode 100644
index 5c76da0..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hant-hk.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hant-hk.js b/sandbox/mobile-app/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/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hant-mo.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hant-mo.js b/sandbox/mobile-app/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/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hant-tw.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hant-tw.js b/sandbox/mobile-app/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/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hant.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hant.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hant.js
deleted file mode 100644
index f721f68..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hk.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hk.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hk.js
deleted file mode 100644
index 0a47198..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-tw.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-tw.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-tw.js
deleted file mode 100644
index 8989021..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh.js
deleted file mode 100644
index d02bfa3..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zu-za.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zu-za.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zu-za.js
deleted file mode 100644
index 4c6cda6..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zu.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zu.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zu.js
deleted file mode 100644
index fcadc8f..0000000
--- a/sandbox/mobile-app/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


[50/71] [abbrv] [partial] incubator-brooklyn git commit: Move mobile app to sandbox

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-animate.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-animate.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-animate.js
new file mode 100644
index 0000000..01a3e3e
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-animate.js
@@ -0,0 +1,1633 @@
+/**
+ * @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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-animate.min.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-animate.min.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-animate.min.js
new file mode 100644
index 0000000..7d00562
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-animate.min.js
@@ -0,0 +1,28 @@
+/*
+ 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


[30/71] [abbrv] [partial] incubator-brooklyn git commit: Move mobile app to sandbox

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate/angular-translate.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate/angular-translate.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate/angular-translate.js
new file mode 100644
index 0000000..dbf3feb
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate/angular-translate.js
@@ -0,0 +1,883 @@
+/*!
+ * 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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate/angular-translate.min.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate/angular-translate.min.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate/angular-translate.min.js
new file mode 100644
index 0000000..b160cb2
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate/angular-translate.min.js
@@ -0,0 +1,6 @@
+/*!
+ * 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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate/bower.json
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate/bower.json b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate/bower.json
new file mode 100644
index 0000000..3dc3dab
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate/bower.json
@@ -0,0 +1,5 @@
+{
+  "name": "angular-translate",
+  "version": "2.2.0",
+  "main": "./angular-translate.js"
+}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/.gitignore
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/.gitignore b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/.gitignore
new file mode 100644
index 0000000..a6d9724
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/.gitignore
@@ -0,0 +1,102 @@
+# 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


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

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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


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

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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


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

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/fonts/fontawesome-webfont.ttf
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/fonts/fontawesome-webfont.ttf b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/fonts/fontawesome-webfont.ttf
new file mode 100644
index 0000000..5cd6cff
Binary files /dev/null and b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/fonts/fontawesome-webfont.ttf differ

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

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/js/mobile-angular-ui.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/js/mobile-angular-ui.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/js/mobile-angular-ui.js
new file mode 100644
index 0000000..c18a8e1
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/js/mobile-angular-ui.js
@@ -0,0 +1,1854 @@
+/*! 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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/js/mobile-angular-ui.min.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/js/mobile-angular-ui.min.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/js/mobile-angular-ui.min.js
new file mode 100644
index 0000000..f073953
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/mcasimir-mobile-angular-ui-be39011/dist/js/mobile-angular-ui.min.js
@@ -0,0 +1 @@
+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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/index.m.html
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/index.m.html b/sandbox/mobile-app/src/main/webapp/index.m.html
new file mode 100644
index 0000000..12a3864
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/index.m.html
@@ -0,0 +1,99 @@
+
+<!--
+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>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/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>


[31/71] [abbrv] [partial] incubator-brooklyn git commit: Move mobile app to sandbox

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ur-in.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ur-in.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ur-in.js
new file mode 100644
index 0000000..c501be6
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ur-in.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ur-pk.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ur-pk.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ur-pk.js
new file mode 100644
index 0000000..cd64221
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ur-pk.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ur.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ur.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ur.js
new file mode 100644
index 0000000..d09bea8
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ur.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_vi-vn.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_vi-vn.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_vi-vn.js
new file mode 100644
index 0000000..1f4fa05
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_vi-vn.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_vi.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_vi.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_vi.js
new file mode 100644
index 0000000..d8d478e
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_vi.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-cn.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-cn.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-cn.js
new file mode 100644
index 0000000..787d1fd
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-cn.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hans-cn.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hans-cn.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hans-cn.js
new file mode 100644
index 0000000..b439a08
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hans-cn.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hans-hk.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hans-hk.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hans-hk.js
new file mode 100644
index 0000000..079fdde
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hans-hk.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hans-mo.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hans-mo.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hans-mo.js
new file mode 100644
index 0000000..4e93003
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hans-mo.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hans-sg.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hans-sg.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hans-sg.js
new file mode 100644
index 0000000..2c2ea98
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hans-sg.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hans.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hans.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hans.js
new file mode 100644
index 0000000..5c76da0
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hans.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hant-hk.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hant-hk.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hant-hk.js
new file mode 100644
index 0000000..822a17b
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hant-hk.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hant-mo.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hant-mo.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hant-mo.js
new file mode 100644
index 0000000..c23d3bc
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hant-mo.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hant-tw.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hant-tw.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hant-tw.js
new file mode 100644
index 0000000..d242f7f
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hant-tw.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hant.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hant.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hant.js
new file mode 100644
index 0000000..f721f68
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hant.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hk.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hk.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hk.js
new file mode 100644
index 0000000..0a47198
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-hk.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-tw.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-tw.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-tw.js
new file mode 100644
index 0000000..8989021
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh-tw.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh.js
new file mode 100644
index 0000000..d02bfa3
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zh.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zu-za.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zu-za.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zu-za.js
new file mode 100644
index 0000000..4c6cda6
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zu-za.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zu.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zu.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zu.js
new file mode 100644
index 0000000..fcadc8f
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_zu.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/version.json
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/version.json b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/version.json
new file mode 100644
index 0000000..7589655
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/version.json
@@ -0,0 +1 @@
+{"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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/version.txt
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/version.txt b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/version.txt
new file mode 100644
index 0000000..f37ae4a
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/version.txt
@@ -0,0 +1 @@
+1.2.19
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-loader-static-files/.bower.json
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-loader-static-files/.bower.json b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-loader-static-files/.bower.json
new file mode 100644
index 0000000..732d397
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-loader-static-files/.bower.json
@@ -0,0 +1,19 @@
+{
+  "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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-loader-static-files/README.md
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-loader-static-files/README.md b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-loader-static-files/README.md
new file mode 100644
index 0000000..dcc821c
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-loader-static-files/README.md
@@ -0,0 +1,9 @@
+# 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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-loader-static-files/angular-translate-loader-static-files.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-loader-static-files/angular-translate-loader-static-files.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-loader-static-files/angular-translate-loader-static-files.js
new file mode 100644
index 0000000..7878387
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-loader-static-files/angular-translate-loader-static-files.js
@@ -0,0 +1,31 @@
+/*!
+ * 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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-loader-static-files/angular-translate-loader-static-files.min.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-loader-static-files/angular-translate-loader-static-files.min.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-loader-static-files/angular-translate-loader-static-files.min.js
new file mode 100644
index 0000000..476c7df
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-loader-static-files/angular-translate-loader-static-files.min.js
@@ -0,0 +1,6 @@
+/*!
+ * 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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-loader-static-files/bower.json
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-loader-static-files/bower.json b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-loader-static-files/bower.json
new file mode 100644
index 0000000..25c1368
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-loader-static-files/bower.json
@@ -0,0 +1,8 @@
+{
+  "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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-loader-url
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-loader-url b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-loader-url
new file mode 160000
index 0000000..9f880b3
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-loader-url
@@ -0,0 +1 @@
+Subproject commit 9f880b3a44574d313012f5891e6ce7f28b9824fa

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-storage-cookie/.bower.json
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-storage-cookie/.bower.json b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-storage-cookie/.bower.json
new file mode 100644
index 0000000..137f75c
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-storage-cookie/.bower.json
@@ -0,0 +1,18 @@
+{
+  "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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-storage-cookie/README.md
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-storage-cookie/README.md b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-storage-cookie/README.md
new file mode 100644
index 0000000..a2d5176
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-storage-cookie/README.md
@@ -0,0 +1,9 @@
+# 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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-storage-cookie/angular-translate-storage-cookie.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-storage-cookie/angular-translate-storage-cookie.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-storage-cookie/angular-translate-storage-cookie.js
new file mode 100644
index 0000000..497c243
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-storage-cookie/angular-translate-storage-cookie.js
@@ -0,0 +1,19 @@
+/*!
+ * 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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-storage-cookie/angular-translate-storage-cookie.min.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-storage-cookie/angular-translate-storage-cookie.min.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-storage-cookie/angular-translate-storage-cookie.min.js
new file mode 100644
index 0000000..12cd3b7
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-storage-cookie/angular-translate-storage-cookie.min.js
@@ -0,0 +1,6 @@
+/*!
+ * 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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-storage-cookie/bower.json
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-storage-cookie/bower.json b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-storage-cookie/bower.json
new file mode 100644
index 0000000..1c75713
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-storage-cookie/bower.json
@@ -0,0 +1,8 @@
+{
+  "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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-storage-local/.bower.json
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-storage-local/.bower.json b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-storage-local/.bower.json
new file mode 100644
index 0000000..b7daa7a
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-storage-local/.bower.json
@@ -0,0 +1,20 @@
+{
+  "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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-storage-local/README.md
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-storage-local/README.md b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-storage-local/README.md
new file mode 100644
index 0000000..56f3ec1
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-storage-local/README.md
@@ -0,0 +1,9 @@
+# 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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-storage-local/angular-translate-storage-local.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-storage-local/angular-translate-storage-local.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-storage-local/angular-translate-storage-local.js
new file mode 100644
index 0000000..d6c7cf9
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-storage-local/angular-translate-storage-local.js
@@ -0,0 +1,38 @@
+/*!
+ * 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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-storage-local/angular-translate-storage-local.min.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-storage-local/angular-translate-storage-local.min.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-storage-local/angular-translate-storage-local.min.js
new file mode 100644
index 0000000..9571ce0
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-storage-local/angular-translate-storage-local.min.js
@@ -0,0 +1,6 @@
+/*!
+ * 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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-storage-local/bower.json
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-storage-local/bower.json b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-storage-local/bower.json
new file mode 100644
index 0000000..3e89c60
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate-storage-local/bower.json
@@ -0,0 +1,9 @@
+{
+  "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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate/.bower.json
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate/.bower.json b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate/.bower.json
new file mode 100644
index 0000000..16a3c0a
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate/.bower.json
@@ -0,0 +1,16 @@
+{
+  "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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate/README.md
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate/README.md b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate/README.md
new file mode 100644
index 0000000..65dc3ae
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-translate/README.md
@@ -0,0 +1,9 @@
+# bower-angular-translate
+
+angular-translate bower package
+
+### Installation
+
+````
+$ bower install angular-translate
+````


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

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/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.

<TRUNCATED>

[44/71] [abbrv] [partial] incubator-brooklyn git commit: Move mobile app to sandbox

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-touch.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-touch.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-touch.js
new file mode 100644
index 0000000..b4f036f
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-touch.js
@@ -0,0 +1,584 @@
+/**
+ * @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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-touch.min.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-touch.min.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-touch.min.js
new file mode 100644
index 0000000..27791fd
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-touch.min.js
@@ -0,0 +1,13 @@
+/*
+ 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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-touch.min.js.map
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-touch.min.js.map b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-touch.min.js.map
new file mode 100644
index 0000000..e26dfa8
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-touch.min.js.map
@@ -0,0 +1,8 @@
+{
+"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"]
+}


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

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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"]
-}


[40/71] [abbrv] [partial] incubator-brooklyn git commit: Move mobile app to sandbox

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/errors.json
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/errors.json b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/errors.json
new file mode 100644
index 0000000..91a32c9
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/errors.json
@@ -0,0 +1 @@
+{"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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_af-na.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_af-na.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_af-na.js
new file mode 100644
index 0000000..e40bd16
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_af-na.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_af-za.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_af-za.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_af-za.js
new file mode 100644
index 0000000..dddd6ca
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_af-za.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_af.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_af.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_af.js
new file mode 100644
index 0000000..aacbefd
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_af.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_am-et.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_am-et.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_am-et.js
new file mode 100644
index 0000000..decae2d
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_am-et.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_am.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_am.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_am.js
new file mode 100644
index 0000000..6a7ad5f
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_am.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-001.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-001.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-001.js
new file mode 100644
index 0000000..9ed1dae
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-001.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-ae.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-ae.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-ae.js
new file mode 100644
index 0000000..2440d71
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-ae.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-bh.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-bh.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-bh.js
new file mode 100644
index 0000000..bb53289
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-bh.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-dz.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-dz.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-dz.js
new file mode 100644
index 0000000..ab02398
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-dz.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-eg.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-eg.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-eg.js
new file mode 100644
index 0000000..1a45444
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-eg.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-iq.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-iq.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-iq.js
new file mode 100644
index 0000000..a141d14
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-iq.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-jo.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-jo.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-jo.js
new file mode 100644
index 0000000..67e5d70
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-jo.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-kw.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-kw.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-kw.js
new file mode 100644
index 0000000..7507c5a
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-kw.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-lb.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-lb.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-lb.js
new file mode 100644
index 0000000..8c867b6
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-lb.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-ly.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-ly.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-ly.js
new file mode 100644
index 0000000..4b59d39
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-ly.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-ma.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-ma.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-ma.js
new file mode 100644
index 0000000..44fcfcc
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-ma.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-om.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-om.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-om.js
new file mode 100644
index 0000000..822aede
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-om.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-qa.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-qa.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-qa.js
new file mode 100644
index 0000000..f7dfd65
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-qa.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-sa.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-sa.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-sa.js
new file mode 100644
index 0000000..8ee44d4
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-sa.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-sd.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-sd.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-sd.js
new file mode 100644
index 0000000..0141e05
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-sd.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-sy.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-sy.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-sy.js
new file mode 100644
index 0000000..cb324e8
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ar-sy.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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


[57/71] [abbrv] incubator-brooklyn git commit: Delete almost all Angular translations

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl-be.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl-be.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl-be.js
deleted file mode 100644
index 86158ab..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl-cw.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl-cw.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl-cw.js
deleted file mode 100644
index c3351b3..0000000
--- a/sandbox/mobile-app/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

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl-nl.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl-nl.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl-nl.js
deleted file mode 100644
index 3a3e932..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl-sx.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl-sx.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl-sx.js
deleted file mode 100644
index a4eda9c..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl.js
deleted file mode 100644
index 955948c..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_no.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_no.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_no.js
deleted file mode 100644
index 313e260..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_or-in.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_or-in.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_or-in.js
deleted file mode 100644
index acf991a..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_or.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_or.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_or.js
deleted file mode 100644
index e169682..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pl-pl.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pl-pl.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pl-pl.js
deleted file mode 100644
index 23f8678..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pl.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pl.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pl.js
deleted file mode 100644
index c64b34d..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-ao.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-ao.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-ao.js
deleted file mode 100644
index e08e21e..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-br.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-br.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-br.js
deleted file mode 100644
index 034fe73..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-gw.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-gw.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-gw.js
deleted file mode 100644
index bfbd30cc..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-mz.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-mz.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-mz.js
deleted file mode 100644
index 35a712a..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-pt.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-pt.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-pt.js
deleted file mode 100644
index 75b3192..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-st.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-st.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-st.js
deleted file mode 100644
index 728505a..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt.js
deleted file mode 100644
index b9be5cc..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ro-md.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ro-md.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ro-md.js
deleted file mode 100644
index b378da1..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ro-ro.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ro-ro.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ro-ro.js
deleted file mode 100644
index 2f9f8cd..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ro.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ro.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ro.js
deleted file mode 100644
index 18d0876..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ru-md.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ru-md.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ru-md.js
deleted file mode 100644
index b366ede..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ru-ru.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ru-ru.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ru-ru.js
deleted file mode 100644
index e963e93..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ru-ua.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ru-ua.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ru-ua.js
deleted file mode 100644
index 64a035d..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sk-sk.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sk-sk.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sk-sk.js
deleted file mode 100644
index 39b8dff..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sk.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sk.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sk.js
deleted file mode 100644
index a68e083..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sl-si.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sl-si.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sl-si.js
deleted file mode 100644
index af7e854..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sl.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sl.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sl.js
deleted file mode 100644
index 7d6c02a..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sq-al.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sq-al.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sq-al.js
deleted file mode 100644
index 2aa93e9..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sq.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sq.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sq.js
deleted file mode 100644
index 0603e11..0000000
--- a/sandbox/mobile-app/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


[61/71] [abbrv] incubator-brooklyn git commit: Delete almost all Angular translations

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-tc.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-tc.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-tc.js
deleted file mode 100644
index f9fdf66..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-tt.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-tt.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-tt.js
deleted file mode 100644
index 32effe2..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-um.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-um.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-um.js
deleted file mode 100644
index aaba7a3..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-vg.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-vg.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-vg.js
deleted file mode 100644
index 7f05c15..0000000
--- a/sandbox/mobile-app/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

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-vi.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-vi.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-vi.js
deleted file mode 100644
index ea7a166..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-za.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-za.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-za.js
deleted file mode 100644
index 2896970..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-zw.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-zw.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_en-zw.js
deleted file mode 100644
index 162da1e..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-419.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-419.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-419.js
deleted file mode 100644
index 91efc78..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ar.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ar.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ar.js
deleted file mode 100644
index 409a360..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-bo.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-bo.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-bo.js
deleted file mode 100644
index fce7a39..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-cl.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-cl.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-cl.js
deleted file mode 100644
index 094dc29..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-co.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-co.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-co.js
deleted file mode 100644
index 28bcf76..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-cr.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-cr.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-cr.js
deleted file mode 100644
index 321ed8b..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-do.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-do.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-do.js
deleted file mode 100644
index 48f5014..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ea.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ea.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ea.js
deleted file mode 100644
index 39d0ea7..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ec.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ec.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ec.js
deleted file mode 100644
index cc6eb76..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-es.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-es.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-es.js
deleted file mode 100644
index a72164f..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-gq.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-gq.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-gq.js
deleted file mode 100644
index c7bab0e..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-gt.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-gt.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-gt.js
deleted file mode 100644
index c6d1078..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-hn.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-hn.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-hn.js
deleted file mode 100644
index 9b9023a..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ic.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ic.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ic.js
deleted file mode 100644
index 0f2bfa1..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-mx.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-mx.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-mx.js
deleted file mode 100644
index 7eb4087..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ni.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ni.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ni.js
deleted file mode 100644
index a93b701..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-pa.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-pa.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-pa.js
deleted file mode 100644
index 8496553..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-pe.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-pe.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-pe.js
deleted file mode 100644
index b88b21f..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-pr.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-pr.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-pr.js
deleted file mode 100644
index 2917c36..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-py.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-py.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-py.js
deleted file mode 100644
index 6253d14..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-sv.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-sv.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-sv.js
deleted file mode 100644
index 63f0756..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-us.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-us.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-us.js
deleted file mode 100644
index c929595..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-uy.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-uy.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-uy.js
deleted file mode 100644
index f656e1a..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ve.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ve.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_es-ve.js
deleted file mode 100644
index 6641877..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/9b07292a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_et-ee.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_et-ee.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_et-ee.js
deleted file mode 100644
index c763947..0000000
--- a/sandbox/mobile-app/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


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

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/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 

<TRUNCATED>

[33/71] [abbrv] [partial] incubator-brooklyn git commit: Move mobile app to sandbox

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl-cw.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl-cw.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl-cw.js
new file mode 100644
index 0000000..c3351b3
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl-cw.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl-nl.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl-nl.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl-nl.js
new file mode 100644
index 0000000..3a3e932
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl-nl.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl-sx.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl-sx.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl-sx.js
new file mode 100644
index 0000000..a4eda9c
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl-sx.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl.js
new file mode 100644
index 0000000..955948c
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_nl.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_no.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_no.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_no.js
new file mode 100644
index 0000000..313e260
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_no.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_or-in.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_or-in.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_or-in.js
new file mode 100644
index 0000000..acf991a
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_or-in.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_or.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_or.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_or.js
new file mode 100644
index 0000000..e169682
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_or.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pl-pl.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pl-pl.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pl-pl.js
new file mode 100644
index 0000000..23f8678
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pl-pl.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pl.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pl.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pl.js
new file mode 100644
index 0000000..c64b34d
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pl.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-ao.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-ao.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-ao.js
new file mode 100644
index 0000000..e08e21e
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-ao.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-br.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-br.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-br.js
new file mode 100644
index 0000000..034fe73
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-br.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-gw.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-gw.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-gw.js
new file mode 100644
index 0000000..bfbd30cc
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-gw.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-mz.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-mz.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-mz.js
new file mode 100644
index 0000000..35a712a
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-mz.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-pt.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-pt.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-pt.js
new file mode 100644
index 0000000..75b3192
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-pt.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-st.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-st.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-st.js
new file mode 100644
index 0000000..728505a
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt-st.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt.js
new file mode 100644
index 0000000..b9be5cc
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_pt.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ro-md.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ro-md.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ro-md.js
new file mode 100644
index 0000000..b378da1
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ro-md.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ro-ro.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ro-ro.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ro-ro.js
new file mode 100644
index 0000000..2f9f8cd
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ro-ro.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ro.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ro.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ro.js
new file mode 100644
index 0000000..18d0876
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ro.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ru-md.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ru-md.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ru-md.js
new file mode 100644
index 0000000..b366ede
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ru-md.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ru-ru.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ru-ru.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ru-ru.js
new file mode 100644
index 0000000..e963e93
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ru-ru.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ru-ua.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ru-ua.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ru-ua.js
new file mode 100644
index 0000000..64a035d
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ru-ua.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ru.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ru.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ru.js
new file mode 100644
index 0000000..ac00c61
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_ru.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sk-sk.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sk-sk.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sk-sk.js
new file mode 100644
index 0000000..39b8dff
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sk-sk.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sk.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sk.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sk.js
new file mode 100644
index 0000000..a68e083
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sk.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sl-si.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sl-si.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sl-si.js
new file mode 100644
index 0000000..af7e854
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sl-si.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sl.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sl.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sl.js
new file mode 100644
index 0000000..7d6c02a
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sl.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sq-al.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sq-al.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sq-al.js
new file mode 100644
index 0000000..2aa93e9
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sq-al.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sq.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sq.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sq.js
new file mode 100644
index 0000000..0603e11
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_sq.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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


[35/71] [abbrv] [partial] incubator-brooklyn git commit: Move mobile app to sandbox

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-mg.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-mg.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-mg.js
new file mode 100644
index 0000000..35e8308
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-mg.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ml.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ml.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ml.js
new file mode 100644
index 0000000..e2b6d8a
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ml.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-mq.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-mq.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-mq.js
new file mode 100644
index 0000000..b99ce2f
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-mq.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ne.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ne.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ne.js
new file mode 100644
index 0000000..2e61a66
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ne.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-re.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-re.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-re.js
new file mode 100644
index 0000000..5cb611b
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-re.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-rw.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-rw.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-rw.js
new file mode 100644
index 0000000..f3688b2
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-rw.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-sn.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-sn.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-sn.js
new file mode 100644
index 0000000..1ac1399
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-sn.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-td.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-td.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-td.js
new file mode 100644
index 0000000..7e447eb
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-td.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-tg.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-tg.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-tg.js
new file mode 100644
index 0000000..9189a44
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-tg.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-yt.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-yt.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-yt.js
new file mode 100644
index 0000000..eb64853
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-yt.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr.js
new file mode 100644
index 0000000..b45cdc2
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gl-es.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gl-es.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gl-es.js
new file mode 100644
index 0000000..f9dc628
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gl-es.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gl.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gl.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gl.js
new file mode 100644
index 0000000..b5f47b4
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gl.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gsw-ch.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gsw-ch.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gsw-ch.js
new file mode 100644
index 0000000..759974d
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gsw-ch.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gsw.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gsw.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gsw.js
new file mode 100644
index 0000000..0824756
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gsw.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gu-in.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gu-in.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gu-in.js
new file mode 100644
index 0000000..d661a68
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gu-in.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gu.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gu.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gu.js
new file mode 100644
index 0000000..c804511
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_gu.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_he-il.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_he-il.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_he-il.js
new file mode 100644
index 0000000..bc99779
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_he-il.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_he.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_he.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_he.js
new file mode 100644
index 0000000..88ae35a
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_he.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hi-in.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hi-in.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hi-in.js
new file mode 100644
index 0000000..17399a3
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hi-in.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hi.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hi.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hi.js
new file mode 100644
index 0000000..165c639
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hi.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hr-hr.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hr-hr.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hr-hr.js
new file mode 100644
index 0000000..3ef9ff3
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hr-hr.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hr.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hr.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hr.js
new file mode 100644
index 0000000..6702e6b
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hr.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hu-hu.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hu-hu.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hu-hu.js
new file mode 100644
index 0000000..8a7f126
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hu-hu.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hu.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hu.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hu.js
new file mode 100644
index 0000000..26558ed
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_hu.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_id-id.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_id-id.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_id-id.js
new file mode 100644
index 0000000..b63dd77
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_id-id.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_id.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_id.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_id.js
new file mode 100644
index 0000000..b17ce79
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_id.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_in.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_in.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_in.js
new file mode 100644
index 0000000..c83cce1
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_in.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_is-is.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_is-is.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_is-is.js
new file mode 100644
index 0000000..fe25142
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_is-is.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_is.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_is.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_is.js
new file mode 100644
index 0000000..a579b0e
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_is.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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


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

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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


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

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/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);


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

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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"]
-}


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

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/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) jqLiteExpandoSto

<TRUNCATED>

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

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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


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

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d9850a16/usage/jsgui/src/main/webapp/index.html
----------------------------------------------------------------------


[36/71] [abbrv] [partial] incubator-brooklyn git commit: Move mobile app to sandbox

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_eu.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_eu.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_eu.js
new file mode 100644
index 0000000..67faf10
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_eu.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fa-af.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fa-af.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fa-af.js
new file mode 100644
index 0000000..c96ecde
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fa-af.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fa-ir.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fa-ir.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fa-ir.js
new file mode 100644
index 0000000..27099d7
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fa-ir.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fa.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fa.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fa.js
new file mode 100644
index 0000000..c94c6c1
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fa.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fi-fi.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fi-fi.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fi-fi.js
new file mode 100644
index 0000000..60c57d6
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fi-fi.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fi.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fi.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fi.js
new file mode 100644
index 0000000..6570dde
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fi.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fil-ph.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fil-ph.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fil-ph.js
new file mode 100644
index 0000000..8873e5a
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fil-ph.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fil.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fil.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fil.js
new file mode 100644
index 0000000..893e768
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fil.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-be.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-be.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-be.js
new file mode 100644
index 0000000..7de5ef7
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-be.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-bf.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-bf.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-bf.js
new file mode 100644
index 0000000..d158381
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-bf.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-bi.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-bi.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-bi.js
new file mode 100644
index 0000000..8fe8736
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-bi.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-bj.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-bj.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-bj.js
new file mode 100644
index 0000000..d5be5b8
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-bj.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-bl.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-bl.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-bl.js
new file mode 100644
index 0000000..73abcdd
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-bl.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ca.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ca.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ca.js
new file mode 100644
index 0000000..04fd552
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ca.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-cd.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-cd.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-cd.js
new file mode 100644
index 0000000..996c7f5
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-cd.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-cf.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-cf.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-cf.js
new file mode 100644
index 0000000..614add5
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-cf.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-cg.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-cg.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-cg.js
new file mode 100644
index 0000000..9431c2c
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-cg.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ch.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ch.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ch.js
new file mode 100644
index 0000000..6a47fb0
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ch.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ci.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ci.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ci.js
new file mode 100644
index 0000000..7ba2130
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ci.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-cm.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-cm.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-cm.js
new file mode 100644
index 0000000..ef8e7de
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-cm.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-dj.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-dj.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-dj.js
new file mode 100644
index 0000000..052750c
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-dj.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-fr.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-fr.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-fr.js
new file mode 100644
index 0000000..8e38aa0
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-fr.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ga.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ga.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ga.js
new file mode 100644
index 0000000..a732c27
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-ga.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-gf.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-gf.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-gf.js
new file mode 100644
index 0000000..3ef7c4a
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-gf.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-gn.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-gn.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-gn.js
new file mode 100644
index 0000000..a239cc8
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-gn.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-gp.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-gp.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-gp.js
new file mode 100644
index 0000000..7e00d06
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-gp.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-gq.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-gq.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-gq.js
new file mode 100644
index 0000000..107f5ff
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-gq.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-km.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-km.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-km.js
new file mode 100644
index 0000000..8e17c22
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-km.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-lu.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-lu.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-lu.js
new file mode 100644
index 0000000..86f1a7c
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-lu.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-mc.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-mc.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-mc.js
new file mode 100644
index 0000000..3fb2bc8
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-mc.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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/incubator-brooklyn/blob/12342668/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-mf.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-mf.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-mf.js
new file mode 100644
index 0000000..6e35abe
--- /dev/null
+++ b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/i18n/angular-locale_fr-mf.js
@@ -0,0 +1,99 @@
+'use strict';
+angular.module("ngLocale", [], ["$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


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

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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 bfbd30cc..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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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


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

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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/incubator-brooklyn/blob/12342668/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


[68/71] [abbrv] incubator-brooklyn git commit: Delete unused mobile-app libraries

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/98e489db/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-animate.min.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-animate.min.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-animate.min.js
deleted file mode 100644
index 7d00562..0000000
--- a/sandbox/mobile-app/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

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/98e489db/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-animate.min.js.map
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-animate.min.js.map b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-animate.min.js.map
deleted file mode 100644
index 1772348..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/98e489db/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-loader.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-loader.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-loader.js
deleted file mode 100644
index e98487d..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/98e489db/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-loader.min.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-loader.min.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-loader.min.js
deleted file mode 100644
index 75f2c86..0000000
--- a/sandbox/mobile-app/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/incubator-brooklyn/blob/98e489db/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-loader.min.js.map
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-loader.min.js.map b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-loader.min.js.map
deleted file mode 100644
index c61fa8b..0000000
--- a/sandbox/mobile-app/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":"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",
-"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"]
-}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/98e489db/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-sanitize.js
----------------------------------------------------------------------
diff --git a/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-sanitize.js b/sandbox/mobile-app/src/main/webapp/assets/mobile/libs/angular-1.2.19/angular-sanitize.js
deleted file mode 100644
index f77386d..0000000
--- a/sandbox/mobile-app/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);