diff --git a/portal/dist/usergrid-portal/js/usergrid-dev.min.js b/portal/dist/usergrid-portal/js/usergrid-dev.min.js
index cbf7841..c123658 100644
--- a/portal/dist/usergrid-portal/js/usergrid-dev.min.js
+++ b/portal/dist/usergrid-portal/js/usergrid-dev.min.js
@@ -2487,7 +2487,7 @@
                 });
             },
             updateUser: function(user) {
-                var body = $rootScope.currentUser;
+                var body = {};
                 body.username = user.username;
                 body.name = user.name;
                 body.email = user.email;
diff --git a/portal/dist/usergrid-portal/js/usergrid.min.js b/portal/dist/usergrid-portal/js/usergrid.min.js
index f5e69d0..a54f349 100644
--- a/portal/dist/usergrid-portal/js/usergrid.min.js
+++ b/portal/dist/usergrid-portal/js/usergrid.min.js
@@ -20,6 +20,6 @@
  /*! usergrid@2.0.14  */
 !function(exports,global){function renderChart(chartsDefaults,chartdata){var newSettings={};$.extend(!0,newSettings,chartsDefaults,chartdata);new Highcharts.Chart(newSettings)}function menuBindClick(scope,lElement,cevent,menuContext){var currentSelection=angular.element(cevent.srcElement).parent(),previousSelection=scope[menuContext];previousSelection!==currentSelection&&(previousSelection&&angular.element(previousSelection).removeClass("active"),scope[menuContext]=currentSelection,scope.$apply(function(){currentSelection.addClass("active")}))}global["true"]=exports;var polyfills=function(window,Object){window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(callback){window.setTimeout(callback,1e3/60)}}(),Object.defineProperty(Object.prototype,"clone",{enumerable:!1,writable:!0,value:function(){var i,newObj=this instanceof Array?[]:{};for(i in this)"clone"!==i&&(newObj[i]=this[i]&&"object"==typeof this[i]?this[i].clone():this[i]);return newObj}}),Object.defineProperty(Object.prototype,"stringifyJSON",{enumerable:!1,writable:!0,value:function(){return JSON.stringify(this,null,"	")}})};polyfills(window,Object);var global=global||this,AppServices=AppServices||{};global.AppServices=global.AppServices||AppServices,AppServices.Constants=angular.module("appservices.constants",[]),AppServices.Services=angular.module("appservices.services",[]),AppServices.Controllers=angular.module("appservices.controllers",[]),AppServices.Filters=angular.module("appservices.filters",[]),AppServices.Directives=angular.module("appservices.directives",[]),AppServices.Performance=angular.module("appservices.performance",[]),AppServices.MAX=angular.module("appservices.max",[]),angular.module("appservices",["ngRoute","ngResource","ngSanitize","ui.bootstrap","angulartics","angulartics.google.analytics","appservices.filters","appservices.services","appservices.directives","appservices.constants","appservices.controllers","appservices.max","angular-intro"]).config(["$routeProvider","$locationProvider","$sceDelegateProvider","$analyticsProvider","$httpProvider",function($routeProvider,$locationProvider,$sceDelegateProvider,$analyticsProvider,$httpProvider){$routeProvider.when("/org-overview",{templateUrl:"org-overview/org-overview.html",controller:"OrgOverviewCtrl"}).when("/login",{templateUrl:"login/login.html",controller:"LoginCtrl"}).when("/login/loading",{templateUrl:"login/loading.html",controller:"LoginCtrl"}).when("/app-overview/summary",{templateUrl:"app-overview/app-overview.html",controller:"AppOverviewCtrl"}).when("/getting-started/setup",{templateUrl:"app-overview/getting-started.html",controller:"GettingStartedCtrl"}).when("/forgot-password",{templateUrl:"login/forgot-password.html",controller:"ForgotPasswordCtrl"}).when("/register",{templateUrl:"login/register.html",controller:"RegisterCtrl"}).when("/users",{templateUrl:"users/users.html",controller:"UsersCtrl"}).when("/users/profile",{templateUrl:"users/users-profile.html",controller:"UsersProfileCtrl"}).when("/users/groups",{templateUrl:"users/users-groups.html",controller:"UsersGroupsCtrl"}).when("/users/activities",{templateUrl:"users/users-activities.html",controller:"UsersActivitiesCtrl"}).when("/users/feed",{templateUrl:"users/users-feed.html",controller:"UsersFeedCtrl"}).when("/users/graph",{templateUrl:"users/users-graph.html",controller:"UsersGraphCtrl"}).when("/users/roles",{templateUrl:"users/users-roles.html",controller:"UsersRolesCtrl"}).when("/groups",{templateUrl:"groups/groups.html",controller:"GroupsCtrl"}).when("/groups/details",{templateUrl:"groups/groups-details.html",controller:"GroupsDetailsCtrl"}).when("/groups/members",{templateUrl:"groups/groups-members.html",controller:"GroupsMembersCtrl"}).when("/groups/activities",{templateUrl:"groups/groups-activities.html",controller:"GroupsActivitiesCtrl"}).when("/groups/roles",{templateUrl:"groups/groups-roles.html",controller:"GroupsRolesCtrl"}).when("/roles",{templateUrl:"roles/roles.html",controller:"RolesCtrl"}).when("/roles/settings",{templateUrl:"roles/roles-settings.html",controller:"RolesSettingsCtrl"}).when("/roles/users",{templateUrl:"roles/roles-users.html",controller:"RolesUsersCtrl"}).when("/roles/groups",{templateUrl:"roles/roles-groups.html",controller:"RolesGroupsCtrl"}).when("/data",{templateUrl:"data/data.html",controller:"DataCtrl"}).when("/data/entity",{templateUrl:"data/entity.html",controller:"EntityCtrl"}).when("/data/shell",{templateUrl:"data/shell.html",controller:"ShellCtrl"}).when("/organizations",{templateUrl:"profile/organizations.html",controller:"OrgCtrl"}).when("/profile",{templateUrl:"profile/profile.html",controller:"ProfileCtrl"}).when("/activities",{templateUrl:"activities/activities.html",controller:"ActivitiesCtrl"}).when("/shell",{templateUrl:"shell/shell.html",controller:"ShellCtrl"}).when("/logout",{templateUrl:"login/logout.html",controller:"LogoutCtrl"}).otherwise({redirectTo:"/org-overview"}),$locationProvider.html5Mode(!1).hashPrefix("!"),$sceDelegateProvider.resourceUrlWhitelist(["self","http://apigee-internal-prod.jupiter.apigee.net/**","http://apigee-internal-prod.mars.apigee.net/**","https://appservices.apigee.com/**","https://api.usergrid.com/**"]),$analyticsProvider.virtualPageviews(!1),$analyticsProvider.firstPageview(!1),$httpProvider.defaults.useXDomain=!0}]),AppServices.Controllers.controller("ActivitiesCtrl",["ug","$scope","$rootScope","$location","$route",function(ug,$scope,$rootScope){$scope.$on("app-activities-received",function(evt,data){$scope.activities=data,$scope.$apply()}),$scope.$on("app-activities-error",function(){$rootScope.$broadcast("alert","error","Application failed to retreive activities data.")}),ug.getActivities()}]),AppServices.Controllers.controller("AppOverviewCtrl",["ug","charts","$scope","$rootScope","$log",function(ug,charts,$scope,$rootScope,$log){var createGradient=function(color1,color2){var perShapeGradient={x1:0,y1:0,x2:0,y2:1};return{linearGradient:perShapeGradient,stops:[[0,color1],[1,color2]]}};$scope.appOverview={},$scope.collections=[],$scope.graph="",$scope.$on("top-collections-received",function(event,collections){var dataDescription={bar1:{labels:["Total"],dataAttr:["title","count"],colors:[createGradient("rgba(36,151,212,0.6)","rgba(119,198,240,0.6)")],borderColor:"#1b97d1"}};$scope.collections=collections;var arr=[];for(var i in collections)collections.hasOwnProperty(i)&&arr.push(collections[i]);$scope.appOverview={},$rootScope.chartTemplate?($scope.appOverview.chart=angular.copy($rootScope.chartTemplate.pareto),$scope.appOverview.chart=charts.convertParetoChart(arr,$scope.appOverview.chart,dataDescription.bar1,"1h","NOW"),$scope.applyScope()):ug.httpGet(null,"js/charts/highcharts.json").then(function(success){$rootScope.chartTemplate=success,$scope.appOverview.chart=angular.copy($rootScope.chartTemplate.pareto),$scope.appOverview.chart=charts.convertParetoChart(arr,$scope.appOverview.chart,dataDescription.bar1,"1h","NOW"),$scope.applyScope()},function(fail){$log.error("Problem getting chart template",fail)})}),$scope.$on("app-initialized",function(){ug.getTopCollections()}),$rootScope.activeUI&&ug.getTopCollections()}]),AppServices.Controllers.controller("GettingStartedCtrl",["ug","$scope","$rootScope","$location","$timeout","$anchorScroll",function(ug,$scope,$rootScope,$location,$timeout,$anchorScroll){$scope.collections=[],$scope.graph="",$scope.clientID="",$scope.clientSecret="";$scope.regenerateCredentialsDialog=function(modalId){$scope.orgAPICredentials={client_id:"regenerating...",client_secret:"regenerating..."},ug.regenerateAppCredentials(),$scope.hideModal(modalId)},$scope.$on("app-creds-updated",function(event,credentials){credentials?($scope.clientID=credentials.client_id,$scope.clientSecret=credentials.client_secret,$scope.$$phase||$scope.$apply()):setTimeout(function(){ug.getAppCredentials()},5e3)}),ug.getAppCredentials(),$scope.contentTitle,$scope.showSDKDetail=function(name){var introContainer=document.getElementById("intro-container");if("nocontent"===name)return introContainer.style.height="0",!0;introContainer.style.opacity=.1,introContainer.style.height="0";var timeout=0;$scope.contentTitle&&(timeout=500),$timeout(function(){introContainer.style.height="1000px",introContainer.style.opacity=1},timeout),$scope.optionName=name,$scope.contentTitle=name,$scope.sdkLink="http://apigee.com/docs/content/"+name+"-sdk-redirect",$scope.docsLink="http://apigee.com/docs/app-services/content/installing-apigee-sdk-"+name,$scope.getIncludeURL=function(){return"app-overview/doc-includes/"+$scope.optionName+".html"}},$scope.scrollToElement=function(elem){return $location.hash(elem),$anchorScroll(),!1}}]),AppServices.Controllers.controller("ChartCtrl",["$scope","$location",function(){}]),AppServices.Directives.directive("chart",function(){return{restrict:"E",scope:{chartdata:"=chartdata"},template:"<div></div>",replace:!0,controller:function(){},link:function(scope,element,attrs){scope.$watch("chartdata",function(chartdata){if(chartdata){var chartsDefaults={chart:{renderTo:element[0],type:attrs.type||null,height:attrs.height||null,width:attrs.width||null,reflow:!0,animation:!1,zoomType:"x"}};if("pie"===attrs.type&&(chartsDefaults.chart.margin=[0,0,0,0],chartsDefaults.chart.spacingLeft=0,chartsDefaults.chart.spacingRight=0,chartsDefaults.chart.spacingTop=0,chartsDefaults.chart.spacingBottom=0,attrs.titleimage&&(chartdata.title.text='<img src="'+attrs.titleimage+'">'),attrs.titleicon&&(chartdata.title.text='<i class="pictogram '+attrs.titleiconclass+'">'+attrs.titleicon+"</i>"),attrs.titlecolor&&(chartdata.title.style.color=attrs.titlecolor),attrs.titleimagetop&&(chartdata.title.style.marginTop=attrs.titleimagetop),attrs.titleimageleft&&(chartdata.title.style.marginLeft=attrs.titleimageleft)),"line"===attrs.type&&(chartsDefaults.chart.marginTop=30,chartsDefaults.chart.spacingTop=50),"column"===attrs.type&&(chartsDefaults.chart.marginBottom=80),"area"===attrs.type&&(chartsDefaults.chart.spacingLeft=0,chartsDefaults.chart.spacingRight=0,chartsDefaults.chart.marginLeft=0,chartsDefaults.chart.marginRight=0),Highcharts.setOptions({global:{useUTC:!1},chart:{style:{fontFamily:"marquette-light, Helvetica, Arial, sans-serif"}}}),"line"===attrs.type){var xAxis1=chartdata.xAxis[0];xAxis1.labels.formatter||(xAxis1.labels.formatter=new Function(attrs.xaxislabel)),xAxis1.labels.step||(xAxis1.labels.step=attrs.xaxisstep)}chartdata.tooltip&&"string"==typeof chartdata.tooltip.formatter&&(chartdata.tooltip.formatter=new Function(chartdata.tooltip.formatter)),renderChart(chartsDefaults,chartdata)}},!0)}}}),AppServices.Services.factory("charts",function(){function sortJsonArrayByProperty(objArray,prop){if(arguments.length<2)throw new Error("sortJsonArrayByProp requires 2 arguments");var direct=arguments.length>2?arguments[2]:1;if(objArray&&objArray.constructor===Array){var propPath=prop.constructor===Array?prop:prop.split(".");objArray.sort(function(a,b){for(var p in propPath)a[propPath[p]]&&b[propPath[p]]&&(a=a[propPath[p]],b=b[propPath[p]]);return a=a.match(/^\d+$/)?+a:a,b=b.match(/^\d+$/)?+b:b,b>a?-1*direct:a>b?1*direct:0})}}var lineChart,areaChart,paretoChart,pieChart,xaxis,seriesIndex;return{convertLineChart:function(chartData,chartTemplate,dataDescription,settings,currentCompare){function plotData(counter,dPLength,dataPoints,dataAttrs,detailedView){for(var i=0;dPLength>i;i++)for(var dp=dataPoints[i],localCounter=counter,j=0;j<dataAttrs.length;j++)lineChart.series[localCounter].data.push("undefined"==typeof dp?[i,0]:[i,dp[dataAttrs[j]]]),detailedView||localCounter++}lineChart=chartTemplate,"undefined"==typeof chartData[0]&&(chartData[0]={},chartData[0].datapoints=[]);var label,dataPoints=chartData[0].datapoints,dPLength=dataPoints.length;"YESTERDAY"===currentCompare?(seriesIndex=dataDescription.dataAttr.length,label="Yesterday "):"LAST_WEEK"===currentCompare?(seriesIndex=dataDescription.dataAttr.length,label="Last Week "):(lineChart=chartTemplate,seriesIndex=0,lineChart.series=[],label=""),xaxis=lineChart.xAxis[0],xaxis.categories=[],settings.xaxisformat&&(xaxis.labels.formatter=new Function(settings.xaxisformat)),settings.step&&(xaxis.labels.step=settings.step);for(var i=0;dPLength>i;i++){var dp=dataPoints[i];xaxis.categories.push(dp.timestamp)}if(chartData.length>1)for(var l=0;l<chartData.length;l++)chartData[l].chartGroupName&&(dataPoints=chartData[l].datapoints,lineChart.series[l]={},lineChart.series[l].data=[],lineChart.series[l].name=chartData[l].chartGroupName,lineChart.series[l].yAxis=0,lineChart.series[l].type="line",lineChart.series[l].color=dataDescription.colors[i],lineChart.series[l].dashStyle="solid",lineChart.series[l].yAxis.title.text=dataDescription.yAxisLabels,plotData(l,dPLength,dataPoints,dataDescription.detailDataAttr,!0));else{for(var steadyCounter=0,i=seriesIndex;i<dataDescription.dataAttr.length+(seriesIndex>0?seriesIndex:0);i++){var yAxisIndex=dataDescription.multiAxis?steadyCounter:0;lineChart.series[i]={},lineChart.series[i].data=[],lineChart.series[i].name=label+dataDescription.labels[steadyCounter],lineChart.series[i].yAxis=yAxisIndex,lineChart.series[i].type="line",lineChart.series[i].color=dataDescription.colors[i],lineChart.series[i].dashStyle="solid",lineChart.yAxis[yAxisIndex].title.text=dataDescription.yAxisLabels[dataDescription.yAxisLabels>1?steadyCounter:0],steadyCounter++}plotData(seriesIndex,dPLength,dataPoints,dataDescription.dataAttr,!1)}return lineChart},convertAreaChart:function(chartData,chartTemplate,dataDescription,settings,currentCompare){function plotData(counter,dPLength,dataPoints,dataAttrs,detailedView){for(var i=0;dPLength>i;i++)for(var dp=dataPoints[i],localCounter=counter,j=0;j<dataAttrs.length;j++)areaChart.series[localCounter].data.push("undefined"==typeof dp?0:dp[dataAttrs[j]]),detailedView||localCounter++}areaChart=angular.copy(areaChart),"undefined"==typeof chartData[0]&&(chartData[0]={},chartData[0].datapoints=[]);var label,dataPoints=chartData[0].datapoints,dPLength=dataPoints.length;"YESTERDAY"===currentCompare?(seriesIndex=dataDescription.dataAttr.length,label="Yesterday "):"LAST_WEEK"===currentCompare?(seriesIndex=dataDescription.dataAttr.length,label="Last Week "):(areaChart=chartTemplate,seriesIndex=0,areaChart.series=[],label=""),xaxis=areaChart.xAxis[0],xaxis.categories=[],settings.xaxisformat&&(xaxis.labels.formatter=new Function(settings.xaxisformat)),settings.step&&(xaxis.labels.step=settings.step);for(var i=0;dPLength>i;i++){var dp=dataPoints[i];xaxis.categories.push(dp.timestamp)}if(chartData.length>1)for(var l=0;l<chartData.length;l++)chartData[l].chartGroupName&&(dataPoints=chartData[l].datapoints,areaChart.series[l]={},areaChart.series[l].data=[],areaChart.series[l].fillColor=dataDescription.areaColors[l],areaChart.series[l].name=chartData[l].chartGroupName,areaChart.series[l].yAxis=0,areaChart.series[l].type="area",areaChart.series[l].pointInterval=1,areaChart.series[l].color=dataDescription.colors[l],areaChart.series[l].dashStyle="solid",areaChart.series[l].yAxis.title.text=dataDescription.yAxisLabels,plotData(l,dPLength,dataPoints,dataDescription.detailDataAttr,!0));else{for(var steadyCounter=0,i=seriesIndex;i<dataDescription.dataAttr.length+(seriesIndex>0?seriesIndex:0);i++){var yAxisIndex=dataDescription.multiAxis?steadyCounter:0;areaChart.series[i]={},areaChart.series[i].data=[],areaChart.series[i].fillColor=dataDescription.areaColors[i],areaChart.series[i].name=label+dataDescription.labels[steadyCounter],areaChart.series[i].yAxis=yAxisIndex,areaChart.series[i].type="area",areaChart.series[i].pointInterval=1,areaChart.series[i].color=dataDescription.colors[i],areaChart.series[i].dashStyle="solid",areaChart.yAxis[yAxisIndex].title.text=dataDescription.yAxisLabels[dataDescription.yAxisLabels>1?steadyCounter:0],steadyCounter++}plotData(seriesIndex,dPLength,dataPoints,dataDescription.dataAttr,!1)}return areaChart},convertParetoChart:function(chartData,chartTemplate,dataDescription,settings,currentCompare){function getPreviousData(){for(var i=0;i<chartTemplate.series[0].data.length;i++)allParetoOptions.push(chartTemplate.xAxis.categories[i])}function createStackedBar(dataDescription,paretoChart){paretoChart.plotOptions={series:{shadow:!1,borderColor:dataDescription.borderColor,borderWidth:1},column:{stacking:"normal",dataLabels:{enabled:!0,color:Highcharts.theme&&Highcharts.theme.dataLabelsColor||"white"}}};var start=dataDescription.dataAttr[1].length,steadyCounter=0;compare&&(paretoChart.legend.enabled=!0);for(var f=seriesIndex;start+seriesIndex>f;f++)paretoChart.series[f]||(paretoChart.series[f]={data:[]}),paretoChart.series[f].data.push(bar[dataDescription.dataAttr[1][steadyCounter]]),paretoChart.series[f].name=""!==label?label+" "+dataDescription.labels[steadyCounter]:dataDescription.labels[steadyCounter],paretoChart.series[f].color=dataDescription.colors[f],paretoChart.series[f].stack=label,steadyCounter++}paretoChart=chartTemplate,"undefined"==typeof chartData&&(chartData=[]);var label,cdLength=chartData.length,compare=!1,allParetoOptions=[],stackedBar=!1;if(seriesIndex=0,"object"==typeof dataDescription.dataAttr[1]&&(stackedBar=!0),"YESTERDAY"===currentCompare?(label="Yesterday ",compare=!0,stackedBar&&(seriesIndex=dataDescription.dataAttr[1].length),getPreviousData()):"LAST_WEEK"===currentCompare?(label="Last Week ",compare=!0,stackedBar&&(seriesIndex=dataDescription.dataAttr[1].length),seriesIndex=getPreviousData()):(compare=!1,label="",paretoChart.xAxis.categories=[],paretoChart.series=[],paretoChart.series[0]={},paretoChart.series[0].data=[],paretoChart.legend.enabled=!1),paretoChart.plotOptions.series.borderColor=dataDescription.borderColor,compare&&!stackedBar){paretoChart.series[1]={},paretoChart.series[1].data=[];for(var i=0;i<allParetoOptions.length;i++)paretoChart.series[1].data.push(0);paretoChart.legend.enabled=!0}for(var i=0;cdLength>i;i++){var bar=chartData[i];if(compare){var newLabel=bar[dataDescription.dataAttr[0]],newValue=bar[dataDescription.dataAttr[1]],previousIndex=allParetoOptions.indexOf(newLabel);previousIndex>-1&&("object"==typeof dataDescription.dataAttr[1]?createStackedBar(dataDescription,paretoChart,paretoChart.series.length):(paretoChart.series[1].data[previousIndex]=newValue,paretoChart.series[1].name=""!==label?label+" "+dataDescription.labels[0]:dataDescription.labels[0],paretoChart.series[1].color=dataDescription.colors[1]))}else paretoChart.xAxis.categories.push(bar[dataDescription.dataAttr[0]]),"object"==typeof dataDescription.dataAttr[1]?createStackedBar(dataDescription,paretoChart,paretoChart.series.length):(paretoChart.series[0].data.push(bar[dataDescription.dataAttr[1]]),paretoChart.series[0].name=dataDescription.labels[0],paretoChart.series[0].color=dataDescription.colors[0])}return paretoChart},convertPieChart:function(chartData,chartTemplate,dataDescription,settings,currentCompare){var label,cdLength=chartData.length,compare=!1;pieChart=chartTemplate,"YESTERDAY"===currentCompare?(label="Yesterday ",compare=!1):"LAST_WEEK"===currentCompare?(label="Last Week ",compare=!1):(compare=!1,pieChart.series[0].data=[],pieChart.series[0].dataLabels&&"string"==typeof pieChart.series[0].dataLabels.formatter&&(pieChart.series[0].dataLabels.formatter=new Function(pieChart.series[0].dataLabels.formatter))),pieChart.plotOptions.pie.borderColor=dataDescription.borderColor,compare&&(pieChart.series[1].data=[],pieChart.series[1].dataLabels&&"string"==typeof pieChart.series[1].dataLabels.formatter&&(pieChart.series[1].dataLabels.formatter=new Function(pieChart.series[1].dataLabels.formatter)));for(var tempArray=[],i=0;cdLength>i;i++){var pie=chartData[i];tempArray.push({name:pie[dataDescription.dataAttr[0]],y:pie[dataDescription.dataAttr[1]],color:""})}sortJsonArrayByProperty(tempArray,"name");for(var i=0;i<tempArray.length;i++)tempArray[i].color=dataDescription.colors[i];return compare?pieChart.series[1].data=tempArray:pieChart.series[0].data=tempArray,pieChart}}}),$(".sessions-bar").sparkline([3,5,6,3,4,5,6,7,8,4,3,5,6,3,4,5,6,7,8,4,3,5,6,3,4,5,6,7,8,4,3,5,6,3,4,5,6,7,8,4,3,5,6,3,4,5,6,7,8,4,3,5,6,3,4,5,6,7,8,1],{type:"bar",barColor:"#c5c5c5",width:"800px",height:100,barWidth:12,barSpacing:"1px"}),AppServices.Controllers.controller("DataCtrl",["ug","$scope","$rootScope","$location",function(ug,$scope,$rootScope){var init=function(){$scope.verb="GET",$scope.display="",$scope.queryBodyDetail={},$scope.queryBodyDisplay="none",$scope.queryLimitDisplay="block",$scope.queryStringDisplay="block",$scope.entitySelected={},$scope.newCollection={},$rootScope.queryCollection={},$scope.data={},$scope.data.queryPath="",$scope.data.queryBody='{ "name":"value" }',$scope.data.searchString="",$scope.data.queryLimit=""},runQuery=function(verb){$scope.loading=!0;var queryPath=$scope.removeFirstSlash($scope.data.queryPath||""),searchString=$scope.data.searchString||"",queryLimit=$scope.data.queryLimit||"",body=JSON.parse($scope.data.queryBody||"{}");"POST"==verb&&$scope.validateJson(!0)?ug.runDataPOSTQuery(queryPath,body):"PUT"==verb&&$scope.validateJson(!0)?ug.runDataPutQuery(queryPath,searchString,queryLimit,body):"DELETE"==verb?ug.runDataDeleteQuery(queryPath,searchString,queryLimit):ug.runDataQuery(queryPath,searchString,queryLimit)};$scope.$on("top-collections-received",function(event,collectionList){$scope.loading=!1;var ignoredCollections=["events"];ignoredCollections.forEach(function(ignoredCollection){collectionList.hasOwnProperty(ignoredCollection)&&delete collectionList[ignoredCollection]}),$scope.collectionList=collectionList,$scope.queryBoxesSelected=!1,$scope.queryPath||$scope.loadCollection("/"+collectionList[Object.keys(collectionList).sort()[0]].name),$scope.applyScope()}),$scope.$on("error-running-query",function(){$scope.loading=!1,runQuery("GET"),$scope.applyScope()}),$scope.$on("entity-deleted",function(){$scope.deleteLoading=!1,$rootScope.$broadcast("alert","success","Entities deleted sucessfully"),$scope.queryBoxesSelected=!1,$scope.checkNextPrev(),$scope.applyScope()}),$scope.$on("entity-deleted-error",function(){$scope.deleteLoading=!1,runQuery("GET"),$scope.applyScope()}),$scope.$on("collection-created",function(){$scope.newCollection.name=""}),$scope.$on("query-received",function(event,collection){$scope.loading=!1,$rootScope.queryCollection=collection,ug.getIndexes($scope.data.queryPath),$scope.setDisplayType(),$scope.checkNextPrev(),$scope.applyScope(),$scope.queryBoxesSelected=!1}),$scope.$on("query-error",function(){$scope.loading=!1,$scope.applyScope(),$scope.queryBoxesSelected=!1}),$scope.$on("indexes-received",function(event,indexes){}),$scope.$on("app-changed",function(){init()}),$scope.setDisplayType=function(){$scope.display="generic"},$scope.deleteEntitiesDialog=function(modalId){$scope.deleteLoading=!1,$scope.deleteEntities($rootScope.queryCollection,"entity-deleted","error deleting entity"),$scope.hideModal(modalId)},$scope.newCollectionDialog=function(modalId){$scope.newCollection.name?(ug.createCollection($scope.newCollection.name),ug.getTopCollections(),$rootScope.$broadcast("alert","success","Collection created successfully."),$scope.hideModal(modalId)):$rootScope.$broadcast("alert","error","You must specify a collection name.")},$scope.addToPath=function(uuid){$scope.data.queryPath="/"+$rootScope.queryCollection._type+"/"+uuid},$scope.removeFromPath=function(){$scope.data.queryPath="/"+$rootScope.queryCollection._type},$scope.isDeep=function(item){return"[object Object]"===Object.prototype.toString.call(item)},$scope.loadCollection=function(type){$scope.data.queryPath="/"+type.substring(1,type.length),$scope.data.searchString="",$scope.data.queryLimit="",$scope.data.body='{ "name":"value" }',$scope.selectGET(),$scope.applyScope(),$scope.run()},$scope.selectGET=function(){$scope.queryBodyDisplay="none",$scope.queryLimitDisplay="block",$scope.queryStringDisplay="block",$scope.verb="GET"},$scope.selectPOST=function(){$scope.queryBodyDisplay="block",$scope.queryLimitDisplay="none",$scope.queryStringDisplay="none",$scope.verb="POST"},$scope.selectPUT=function(){$scope.queryBodyDisplay="block",$scope.queryLimitDisplay="block",$scope.queryStringDisplay="block",$scope.verb="PUT"},$scope.selectDELETE=function(){$scope.queryBodyDisplay="none",$scope.queryLimitDisplay="block",$scope.queryStringDisplay="block",$scope.verb="DELETE"},$scope.validateJson=function(skipMessage){var queryBody=$scope.data.queryBody;try{queryBody=JSON.parse(queryBody)}catch(e){return $rootScope.$broadcast("alert","error","JSON is not valid"),!1}return queryBody=JSON.stringify(queryBody,null,2),!skipMessage&&$rootScope.$broadcast("alert","success","JSON is valid"),$scope.data.queryBody=queryBody,!0},$scope.saveEntity=function(entity){if(!$scope.validateJson())return!1;var queryBody=entity._json;queryBody=JSON.parse(queryBody),$rootScope.selectedEntity.set(),$rootScope.selectedEntity.set(queryBody),$rootScope.selectedEntity.set("type",entity._data.type),$rootScope.selectedEntity.set("uuid",entity._data.uuid),$rootScope.selectedEntity.save(function(err,data){err?$rootScope.$broadcast("alert","error","error: "+data.error_description):$rootScope.$broadcast("alert","success","entity saved")})},$scope.run=function(){$rootScope.queryCollection="";var verb=$scope.verb;runQuery(verb)},$scope.hasProperty=function(prop){var retval=!1;return"undefined"!=typeof $rootScope.queryCollection._list&&angular.forEach($rootScope.queryCollection._list,function(value){retval||value._data[prop]&&(retval=!0)}),retval},$scope.resetNextPrev=function(){$scope.previous_display="none",$scope.next_display="none"},$scope.checkNextPrev=function(){$scope.resetNextPrev(),$rootScope.queryCollection.hasPreviousPage()&&($scope.previous_display="default"),$rootScope.queryCollection.hasNextPage()&&($scope.next_display="default")},$scope.selectEntity=function(uuid,addToPath){$rootScope.selectedEntity=$rootScope.queryCollection.getEntityByUUID(uuid),addToPath?$scope.addToPath(uuid):$scope.removeFromPath()},$scope.getJSONView=function(entity){var tempjson=entity.get(),queryBody=JSON.stringify(tempjson,null,2);queryBody=JSON.parse(queryBody),delete queryBody.metadata,delete queryBody.uuid,delete queryBody.created,delete queryBody.modified,delete queryBody.type,$scope.queryBody=JSON.stringify(queryBody,null,2)},$scope.getPrevious=function(){$rootScope.queryCollection.getPreviousPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting previous page of data"),$scope.checkNextPrev(),$scope.applyScope()})},$scope.getNext=function(){$rootScope.queryCollection.getNextPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting next page of data"),$scope.checkNextPrev(),$scope.applyScope()})},init(),$rootScope.queryCollection=$rootScope.queryCollection||{},$rootScope.selectedEntity={},$rootScope.queryCollection&&$rootScope.queryCollection._type&&($scope.loadCollection($rootScope.queryCollection._type),$scope.setDisplayType()),ug.getTopCollections(),$scope.resetNextPrev()}]),AppServices.Controllers.controller("EntityCtrl",["ug","$scope","$rootScope","$location",function(ug,$scope,$rootScope,$location){if(!$rootScope.selectedEntity)return void $location.path("/data");$scope.entityUUID=$rootScope.selectedEntity.get("uuid"),$scope.entityType=$rootScope.selectedEntity.get("type");var tempjson=$rootScope.selectedEntity.get(),queryBody=JSON.stringify(tempjson,null,2);queryBody=JSON.parse(queryBody),delete queryBody.metadata,delete queryBody.uuid,delete queryBody.created,delete queryBody.modified,delete queryBody.type,$scope.queryBody=JSON.stringify(queryBody,null,2),$scope.validateJson=function(){var queryBody=$scope.queryBody;try{queryBody=JSON.parse(queryBody)}catch(e){return $rootScope.$broadcast("alert","error","JSON is not valid"),!1}return queryBody=JSON.stringify(queryBody,null,2),$rootScope.$broadcast("alert","success","JSON is valid"),$scope.queryBody=queryBody,!0},$scope.saveEntity=function(){if(!$scope.validateJson())return!1;var queryBody=$scope.queryBody;queryBody=JSON.parse(queryBody),$rootScope.selectedEntity.set(),$rootScope.selectedEntity.set(queryBody),$rootScope.selectedEntity.set("type",$scope.entityType),$rootScope.selectedEntity.set("uuid",$scope.entityUUID),$rootScope.selectedEntity.save(function(err,data){err?$rootScope.$broadcast("alert","error","error: "+data.error_description):$rootScope.$broadcast("alert","success","entity saved")})}}]),AppServices.Directives.directive("balloon",["$window","$timeout",function($window,$timeout){return{restrict:"ECA",scope:"=",template:'<div class="baloon {{direction}}" ng-transclude></div>',replace:!0,transclude:!0,link:function(scope,lElement,attrs){scope.direction=attrs.direction;var runScroll=!0,windowEl=angular.element($window);windowEl.on("scroll",function(){runScroll&&(lElement.addClass("fade-out"),$timeout(function(){lElement.addClass("hide")},1e3),runScroll=!1)})}}}]),AppServices.Directives.directive("bsmodal",["$rootScope",function($rootScope){return{restrict:"ECA",scope:{title:"@title",buttonid:"=buttonid",footertext:"=footertext",closelabel:"=closelabel"},transclude:!0,templateUrl:"dialogs/modal.html",replace:!0,link:function(scope,lElement,attrs,parentCtrl){scope.title=attrs.title,scope.footertext=attrs.footertext,scope.closelabel=attrs.closelabel,scope.close=attrs.close,scope.extrabutton=attrs.extrabutton,scope.extrabuttonlabel=attrs.extrabuttonlabel,scope.buttonId=attrs.buttonid,scope.closeDelegate=function(attr){scope.$parent[attr](attrs.id,scope)},scope.extraDelegate=function(attr){scope.dialogForm.$valid?(console.log(parentCtrl),scope.$parent[attr](attrs.id)):$rootScope.$broadcast("alert","error","Please check your form input and resubmit.")}}}}]),AppServices.Controllers.controller("AlertCtrl",["$scope","$rootScope","$timeout",function($scope,$rootScope,$timeout){$scope.alertDisplay="none",$scope.alerts=[],$scope.$on("alert",function(event,type,message,permanent){$scope.addAlert(type,message,permanent)}),$scope.$on("clear-alerts",function(){$scope.alerts=[]}),$scope.addAlert=function(type,message,permanent){$scope.alertDisplay="block",$scope.alerts.push({type:type,msg:message}),$scope.applyScope(),permanent||$timeout(function(){$scope.alerts.shift()},5e3)},$scope.closeAlert=function(index){$scope.alerts.splice(index,1)}}]),AppServices.Directives.directive("alerti",["$rootScope","$timeout",function($rootScope,$timeout){return{restrict:"ECA",scope:{type:"=type",closeable:"@closeable",index:"&index"},template:'<div class="alert" ng-class="type && \'alert-\' + type">    <button ng-show="closeable" type="button" class="close" ng-click="closeAlert(index)">&times;</button>    <i ng-if="type === \'warning\'" class="pictogram pull-left" style="font-size:3em;line-height:0.4">&#128165;</i>    <i ng-if="type === \'info\'" class="pictogram pull-left">&#8505;</i>    <i ng-if="type === \'error\'" class="pictogram pull-left">&#9889;</i>    <i ng-if="type === \'success\'" class="pictogram pull-left">&#128077;</i><div ng-transclude></div></div>',replace:!0,transclude:!0,link:function(scope,lElement,attrs){$timeout(function(){lElement.addClass("fade-out")},4e3),lElement.click(function(){attrs.index&&scope.$parent.closeAlert(attrs.index)}),setTimeout(function(){lElement.addClass("alert-animate")},10)}}}]),AppServices.Directives.directive("appswitcher",["$rootScope",function(){return{restrict:"ECA",scope:"=",templateUrl:"global/appswitcher-template.html",replace:!0,transclude:!0,link:function(){function globalNavDetail(){$("#globalNavDetail > div").removeClass(classNameOpen),$("#globalNavDetailApiPlatform").addClass(classNameOpen)}var classNameOpen="open";$("ul.nav li.dropdownContainingSubmenu").hover(function(){$(this).addClass(classNameOpen)},function(){$(this).removeClass(classNameOpen)}),$("#globalNav > a").mouseover(globalNavDetail),$("#globalNavDetail").mouseover(globalNavDetail),$("#globalNavSubmenuContainer ul li").mouseover(function(){$("#globalNavDetail > div").removeClass(classNameOpen),$("#"+this.getAttribute("data-globalNavDetail")).addClass(classNameOpen)
 })}}}]),AppServices.Services.factory("help",function($rootScope,$http,$location,$analytics){$rootScope.help={},$rootScope.help.helpButtonStatus="Enable Help",$rootScope.help.helpTooltipsEnabled=!1,$rootScope.help.clicked=!1,$rootScope.help.showHelpButtons=!1,$rootScope.help.introjs_shouldLaunch=!1,$rootScope.help.showTabsId="invisible",$rootScope.help.showJsonId="invisible";var helpStartTime,introjs_step,getHelpJson=function(path){return $http.get("https://s3.amazonaws.com/sdk.apigee.com/portal_help"+path+"/helpJson.json")},getHelpStatus=function(helpType){var status;return"tour"==helpType?(status=localStorage.getItem("ftu_tour"),localStorage.setItem("ftu_tour","false")):"tooltips"==helpType&&(status=localStorage.getItem("ftu_tooltips"),localStorage.setItem("ftu_tooltips","false")),status};$rootScope.help.sendTooltipGA=function(tooltipName){$analytics.eventTrack("tooltip - "+$rootScope.currentPath,{category:"App Services",label:tooltipName})},$rootScope.help.toggleTooltips=function(){0==$rootScope.help.helpTooltipsEnabled?($rootScope.help.helpButtonStatus="Disable Help",$rootScope.help.helpTooltipsEnabled=!0,$rootScope.$broadcast("tooltips-enabled"),showHelpModal("tooltips")):($rootScope.help.helpButtonStatus="Enable Help",$rootScope.help.helpTooltipsEnabled=!1,$rootScope.$broadcast("tooltips-disabled"))},$rootScope.$on("users-received",function(event,users){users._list.length>0?($rootScope.help.showTabsId="intro-information-tabs",$rootScope.help.showJsonId="intro-json-object"):($rootScope.help.showTabsId="invisible",$rootScope.help.showJsonId="invisible")}),$rootScope.$on("groups-received",function(event,groups){groups._list.length>0?($rootScope.help.showTabsId="intro-information-tabs",$rootScope.help.showJsonId="intro-json-object"):($rootScope.help.showTabsId="invisible",$rootScope.help.showJsonId="invisible")}),$rootScope.$on("$routeChangeSuccess",function(event,current){var path=current.$$route?current.$$route.originalPath:null;"/org-overview"===path||path&&path.indexOf("/performance")>=0||"/users"===path||"/groups"===path||"/roles"===path||"/data"===path?($rootScope.help.showHelpButtons=!0,getHelpJson(path).success(function(json){var helpJson=json;setHelpStrings(helpJson),showHelpModal("tour")})):$rootScope.help.showHelpButtons=!1});var showHelpModal=function(helpType){var shouldHelp=location.search.indexOf("noHelp")<=0;"tour"!=helpType||getHelpStatus(helpType)?"tooltips"!=helpType||getHelpStatus(helpType)||shouldHelp&&$rootScope.showModal("tooltips"):shouldHelp&&$rootScope.showModal("introjs")},setHelpStrings=function(helpJson){$rootScope.help.IntroOptions.steps=helpJson.introjs,angular.forEach(helpJson.tooltip,function(value,binding){$rootScope[binding]=value}),$rootScope.help.tooltip=helpJson.tooltip,$rootScope.$broadcast("helpJsonLoaded")};$rootScope.help.IntroOptions={steps:[],showStepNumbers:!1,exitOnOverlayClick:!0,exitOnEsc:!0,nextLabel:"Next",prevLabel:"Back",skipLabel:"Exit",doneLabel:"Done"},$rootScope.help.introjs_StartEvent=function(){helpStartTime=Date.now(),introjs_step=1},$rootScope.help.introjs_ExitEvent=function(){var introjs_time=Math.round((Date.now()-helpStartTime)/1e3);$analytics.eventTrack("introjs timing - "+$rootScope.currentPath,{category:"App Services",label:introjs_time+"s"}),$analytics.eventTrack("introjs exit - "+$rootScope.currentPath,{category:"App Services",label:"step"+introjs_step})},$rootScope.help.introjs_CompleteEvent=function(){switch($rootScope.currentPath){case"/performance/app-usage":introjs_PageTransitionEvent("/performance/errors-crashes");break;case"/performance/errors-crashes":introjs_PageTransitionEvent("/performance/api-perf");break;case"/users":introjs_PageTransitionEvent("/groups");break;case"/groups":introjs_PageTransitionEvent("/roles")}};var introjs_PageTransitionEvent=function(url){$location.url(url),$rootScope.help.introjs_shouldLaunch=!0,$rootScope.$apply()};$rootScope.help.introjs_ChangeEvent=function(){introjs_step++}}),AppServices.Directives.directive("insecureBanner",["$rootScope","ug",function($rootScope,ug){return{restrict:"E",transclude:!0,templateUrl:"global/insecure-banner.html",link:function(scope){scope.securityWarning=!1,scope.$on("roles-received",function(evt,roles){scope.securityWarning=!1,roles&&roles._list&&roles._list.forEach(function(roleHolder){var role=roleHolder._data;"GUEST"===role.name.toUpperCase()&&roleHolder.getPermissions(function(err){err||roleHolder.permissions&&roleHolder.permissions.forEach(function(permission){permission.path.indexOf("/**")>=0&&(scope.securityWarning=!0,scope.applyScope())})})})});var initialized=!1;scope.$on("app-initialized",function(){!initialized&&ug.getRoles(),initialized=!0}),scope.$on("app-changed",function(){scope.securityWarning=!1,ug.getRoles()})}}}]),AppServices.Constants.constant("configuration",{ITEMS_URL:"global/temp.json"}),AppServices.Controllers.controller("PageCtrl",["ug","help","utility","$scope","$rootScope","$location","$routeParams","$q","$route","$log","$analytics","$sce",function(ug,help,utility,$scope,$rootScope,$location,$routeParams,$q,$route,$log,$analytics,$sce){var initScopeVariables=function(){for(var menuItems=Usergrid.options.menuItems,i=0;i<menuItems.length;i++)if(menuItems[i].pic=$sce.trustAsHtml(menuItems[i].pic),menuItems[i].items)for(var j=0;j<menuItems[i].items.length;j++)menuItems[i].items[j].pic=$sce.trustAsHtml(menuItems[i].items[j].pic);$scope.menuItems=Usergrid.options.menuItems,$scope.loadingText="Loading...",$scope.use_sso=!1,$scope.newApp={name:""},$scope.getPerm="",$scope.postPerm="",$scope.putPerm="",$scope.deletePerm="",$scope.usersTypeaheadValues=[],$scope.groupsTypeaheadValues=[],$scope.rolesTypeaheadValues=[],$rootScope.sdkActive=!1,$rootScope.demoData=!1,$scope.queryStringApplied=!1,$rootScope.autoUpdateTimer=Usergrid.config?Usergrid.config.autoUpdateTimer:61,$rootScope.requiresDeveloperKey=Usergrid.config?Usergrid.config.client.requiresDeveloperKey:!1,$rootScope.loaded=$rootScope.activeUI=!1;for(var key in Usergrid.regex)$scope[key]=Usergrid.regex[key];$scope.options=Usergrid.options;var getQuery=function(){for(var m,result={},queryString=location.search.slice(1),re=/([^&=]+)=([^&]*)/g;m=re.exec(queryString);)result[decodeURIComponent(m[1])]=decodeURIComponent(m[2]);return result};$scope.queryString=getQuery()};initScopeVariables(),$rootScope.urls=function(){var urls=ug.getUrls($scope.queryString);return $scope.apiUrl=urls.apiUrl,$scope.use_sso=urls.use_sso,urls},$rootScope.gotoPage=function(path){$location.path(path)};var notRegistration=function(){return"/forgot-password"!==$location.path()&&"/register"!==$location.path()},verifyUser=function(){"/login"!==$location.path().slice(0,"/login".length)&&($rootScope.currentPath=$location.path()),$routeParams.access_token&&$routeParams.admin_email&&$routeParams.uuid&&(ug.set("token",$routeParams.access_token),ug.set("email",$routeParams.admin_email),ug.set("uuid",$routeParams.uuid),$location.search("access_token",null),$location.search("admin_email",null),$location.search("uuid",null)),ug.checkAuthentication(!0)};$scope.profile=function(){$scope.use_sso?window.location=$rootScope.urls().PROFILE_URL+"?callback="+encodeURIComponent($location.absUrl()):$location.path("/profile")},$rootScope.showModal=function(id){$("#"+id).modal("show")},$rootScope.hideModal=function(id){$("#"+id).modal("hide")},$scope.deleteEntities=function(collection,successBroadcast,errorMessage){collection.resetEntityPointer();for(var entitiesToDelete=[];collection.hasNextEntity();){var entity=collection.getNextEntity(),checked=entity.checked;checked&&entitiesToDelete.push(entity)}for(var count=0,success=!1,i=0;i<entitiesToDelete.length;i++){var entity=entitiesToDelete[i];collection.destroyEntity(entity,function(err){count++,err?($rootScope.$broadcast("alert","error",errorMessage),$rootScope.$broadcast(successBroadcast+"-error",err)):success=!0,count===entitiesToDelete.length&&(success&&$rootScope.$broadcast(successBroadcast),$scope.applyScope())})}},$scope.selectAllEntities=function(list,that,varName,setValue){varName=varName||"master";var val=that[varName];void 0==setValue&&(setValue=!0),setValue&&(that[varName]=val=!val),list.forEach(function(entitiy){entitiy.checked=val})},$scope.createPermission=function(type,entity,path,permissions){"/"!=path.charAt(0)&&(path="/"+path);var ops="",s="";permissions.getPerm&&(ops="get",s=","),permissions.postPerm&&(ops=ops+s+"post",s=","),permissions.putPerm&&(ops=ops+s+"put",s=","),permissions.deletePerm&&(ops=ops+s+"delete",s=",");var permission=ops+":"+path;return permission},$scope.formatDate=function(date){return new Date(date).toUTCString()},$scope.clearCheckbox=function(id){$("#"+id).attr("checked")&&$("#"+id).click()},$scope.removeFirstSlash=function(path){return 0===path.indexOf("/")?path.substring(1,path.length):path},$scope.applyScope=function(cb){return cb="function"==typeof cb?cb:function(){},this.$$phase?void cb():this.$apply(cb)},$scope.valueSelected=function(list){return list&&list.some(function(item){return item.checked})},$scope.sendHelp=function(modalId){ug.jsonpRaw("apigeeuihelpemail","",{useremail:$rootScope.userEmail}).then(function(){$rootScope.$broadcast("alert","success","Email sent. Our team will be in touch with you shortly.")},function(){$rootScope.$broadcast("alert","error","Problem Sending Email. Try sending an email to mobile@apigee.com.")}),$scope.hideModal(modalId)},$scope.$on("users-typeahead-received",function(event,users){$scope.usersTypeaheadValues=users,$scope.$$phase||$scope.$apply()}),$scope.$on("groups-typeahead-received",function(event,groups){$scope.groupsTypeaheadValues=groups,$scope.$$phase||$scope.$apply()}),$scope.$on("roles-typeahead-received",function(event,roles){$scope.rolesTypeaheadValues=roles,$scope.$$phase||$scope.$apply()}),$scope.$on("checkAuthentication-success",function(){sessionStorage.setItem("authenticateAttempts",0),$scope.loaded=!0,$rootScope.activeUI=!0,$scope.applyScope(),$scope.queryStringApplied||($scope.queryStringApplied=!0,setTimeout(function(){$scope.queryString.org&&$rootScope.$broadcast("change-org",$scope.queryString.org)},1e3)),$rootScope.$broadcast("app-initialized")}),$scope.$on("checkAuthentication-error",function(args,err,missingData,email){if($scope.loaded=!0,err&&!$scope.use_sso&&notRegistration())ug.logout(),$location.path("/login"),$scope.applyScope();else if(missingData&&notRegistration()){if(!email&&$scope.use_sso)return void(window.location=$rootScope.urls().LOGIN_URL+"?callback="+encodeURIComponent($location.absUrl().split("?")[0]));ug.reAuthenticate(email)}}),$scope.$on("reAuthenticate-success",function(args,err,data,user,organizations,applications){sessionStorage.setItem("authenticateAttempts",0),$rootScope.$broadcast("loginSuccesful",user,organizations,applications),$rootScope.$emit("loginSuccesful",user,organizations,applications),$rootScope.$broadcast("checkAuthentication-success"),$scope.applyScope(function(){$scope.deferredLogin.resolve(),$location.path("/org-overview")})});var authenticateAttempts=parseInt(sessionStorage.getItem("authenticateAttempts")||0);$scope.$on("reAuthenticate-error",function(){if($scope.use_sso){if(authenticateAttempts++>5)return void $rootScope.$broadcast("alert","error","There is an issue with authentication. Please contact support.");console.error("Failed to login via sso "+authenticateAttempts),sessionStorage.setItem("authenticateAttempts",authenticateAttempts),window.location=$rootScope.urls().LOGIN_URL+"?callback="+encodeURIComponent($location.absUrl().split("?")[0])}else notRegistration()&&(ug.logout(),$location.path("/login"),$scope.applyScope())}),$scope.$on("loginSuccessful",function(){$rootScope.activeUI=!0}),$scope.$on("app-changed",function(args,oldVal,newVal,preventReload){newVal===oldVal||preventReload||$route.reload()}),$scope.$on("org-changed",function(){ug.getApplications(),$route.reload()}),$scope.$on("app-settings-received",function(){}),$scope.$on("request-times-slow",function(){$rootScope.$broadcast("alert","info","We are experiencing performance issues on our server.  Please click Get Help for support if this continues.")});var lastPage="";$scope.$on("$routeChangeSuccess",function(){verifyUser(),$scope.showDemoBar="/performance"===$location.path().slice(0,"/performance".length),$scope.showDemoBar||($rootScope.demoData=!1),setTimeout(function(){lastPage=""},50);var path=window.location.pathname.replace("index-debug.html","");""===lastPage&&$analytics.pageTrack((path+$location.path()).replace("//","/")),lastPage=$location.path()}),$scope.$on("applications-received",function(event,applications){$scope.applications=applications,$scope.hasApplications=Object.keys(applications).length>0}),ug.getAppSettings(),$rootScope.startFirstTimeUser=function(){$rootScope.hideModal("introjs"),$rootScope.help.introjs_StartEvent(),$scope.startHelp()},$scope.$on("helpJsonLoaded",function(){1==$rootScope.help.introjs_shouldLaunch&&($rootScope.help.introjs_StartEvent(),$scope.startHelp(),$rootScope.help.introjs_shouldLaunch=!1)})}]),AppServices.Directives.directive("pageTitle",["$rootScope","ug",function($rootScope){return{restrict:"E",transclude:!0,templateUrl:"global/page-title.html",link:function(scope,lElement,attrs){scope.title=attrs.title,scope.icon=attrs.icon,scope.showHelp=function(){$("#need-help").modal("show")},scope.sendHelp=function(){data.jsonp_raw("apigeeuihelpemail","",{useremail:$rootScope.userEmail}).then(function(){$rootScope.$broadcast("alert","success","Email sent. Our team will be in touch with you shortly.")},function(){$rootScope.$broadcast("alert","error","Problem Sending Email. Try sending an email to mobile@apigee.com.")}),$("#need-help").modal("hide")}}}}]),AppServices.Services.factory("ug",function(configuration,$rootScope,utility,$q,$http,$resource,$log,$analytics,$location){function reportError(data,config){try{$analytics.eventTrack("error",{category:"App Services",label:data+":"+config.url+":"+(sessionStorage.apigee_uuid||"na")})}catch(e){console.log(e)}}var requestTimes=[],running=!1,currentRequests={},getAccessToken=function(){return sessionStorage.getItem("accessToken")};return{get:function(prop,isObject){return isObject?this.client().getObject(prop):this.client().get(prop)},set:function(prop,value){this.client().set(prop,value)},getUrls:function(qs){var host=$location.host(),BASE_URL="",DATA_URL="",use_sso=!1;switch(!0){case"appservices.apigee.com"===host&&location.pathname.indexOf("/dit")>=0:BASE_URL="https://accounts.jupiter.apigee.net",DATA_URL="https://apigee-internal-prod.jupiter.apigee.net",use_sso=!0;break;case"appservices.apigee.com"===host&&location.pathname.indexOf("/mars")>=0:BASE_URL="https://accounts.mars.apigee.net",DATA_URL="https://apigee-internal-prod.mars.apigee.net",use_sso=!0;break;case"appservices.apigee.com"===host:DATA_URL=Usergrid.overrideUrl;break;case"apigee.com"===host:BASE_URL="https://accounts.apigee.com",DATA_URL="https://api.usergrid.com",use_sso=!0;break;case"usergrid.dev"===host:DATA_URL="https://api.usergrid.com";break;default:DATA_URL=Usergrid.overrideUrl}return DATA_URL=qs.api_url||DATA_URL,DATA_URL=DATA_URL.lastIndexOf("/")===DATA_URL.length-1?DATA_URL.substring(0,DATA_URL.length-1):DATA_URL,{DATA_URL:DATA_URL,LOGIN_URL:BASE_URL+"/accounts/sign_in",PROFILE_URL:BASE_URL+"/accounts/my_account",LOGOUT_URL:BASE_URL+"/accounts/sign_out",apiUrl:DATA_URL,use_sso:use_sso}},orgLogin:function(username,password){var self=this;this.client().set("email",username),this.client().set("token",null),this.client().orgLogin(username,password,function(err,data,user,organizations,applications){err?$rootScope.$broadcast("loginFailed",err,data):self.initializeCurrentUser(function(){$rootScope.$broadcast("loginSuccesful",user,organizations,applications)})})},checkAuthentication:function(force){var ug=this,client=ug.client(),initialize=function(){ug.initializeCurrentUser(function(){$rootScope.userEmail=client.get("email"),$rootScope.organizations=client.getObject("organizations"),$rootScope.applications=client.getObject("applications"),$rootScope.currentOrg=client.get("orgName"),$rootScope.currentApp=client.get("appName");var key,size=0;for(key in $rootScope.applications)$rootScope.applications.hasOwnProperty(key)&&size++;$rootScope.$broadcast("checkAuthentication-success",client.getObject("organizations"),client.getObject("applications"),client.get("orgName"),client.get("appName"),client.get("email"))})},isAuthenticated=function(){var authenticated=null!==client.get("token")&&null!==client.get("organizations");return authenticated&&initialize(),authenticated};if(!isAuthenticated()||force){if(!client.get("token"))return $rootScope.$broadcast("checkAuthentication-error","no token",{},client.get("email"));this.client().reAuthenticateLite(function(err){var missingData=err||!client.get("orgName")||!client.get("appName")||!client.getObject("organizations")||!client.getObject("applications"),email=client.get("email");err||missingData?$rootScope.$broadcast("checkAuthentication-error",err,missingData,email):initialize()})}},reAuthenticate:function(email,eventOveride){var ug=this;this.client().reAuthenticate(email,function(err,data,user,organizations,applications){err||($rootScope.currentUser=user),err||($rootScope.userEmail=user.get("email"),$rootScope.organizations=organizations,$rootScope.applications=applications,$rootScope.currentOrg=ug.get("orgName"),$rootScope.currentApp=ug.get("appName"),$rootScope.currentUser=user._data,$rootScope.currentUser.profileImg=utility.get_gravatar($rootScope.currentUser.email)),$rootScope.$broadcast((eventOveride||"reAuthenticate")+"-"+(err?"error":"success"),err,data,user,organizations,applications)})},logoutCallback:function(){$rootScope.$broadcast("userNotAuthenticated")},logout:function(){$rootScope.activeUI=!1,$rootScope.userEmail="user@apigee.com",$rootScope.organizations={noOrg:{name:"No Orgs Found"}},$rootScope.applications={noApp:{name:"No Apps Found"}},$rootScope.currentOrg="No Org Found",$rootScope.currentApp="No App Found",sessionStorage.setItem("accessToken",null),sessionStorage.setItem("userUUID",null),sessionStorage.setItem("userEmail",null),this.client().logout(),this._client=null},client:function(){var options={buildCurl:!0,logging:!0};return Usergrid.options&&Usergrid.options.client&&(options.keys=Usergrid.options.client),this._client=this._client||new Usergrid.Client(options,$rootScope.urls().DATA_URL),this._client},setClientProperty:function(key,value){this.client().set(key,value)},getTopCollections:function(){var options={method:"GET",endpoint:""};this.client().request(options,function(err,data){if(err)$rootScope.$broadcast("alert","error","error getting collections");else{var collections=data.entities[0].metadata.collections;$rootScope.$broadcast("top-collections-received",collections)}})},createCollection:function(collectionName){var collections={};collections[collectionName]={};var metadata={metadata:{collections:collections}},options={method:"PUT",body:metadata,endpoint:""};this.client().request(options,function(err){err?$rootScope.$broadcast("alert","error","error creating collection"):$rootScope.$broadcast("collection-created",collections)})},getApplications:function(){this.client().getApplications(function(err,applications){err?applications&&console.error(applications):$rootScope.$broadcast("applications-received",applications)})},getAdministrators:function(){this.client().getAdministrators(function(err,administrators){err&&$rootScope.$broadcast("alert","error","error getting administrators"),$rootScope.$broadcast("administrators-received",administrators)})},createApplication:function(appName){this.client().createApplication(appName,function(err,applications){err?$rootScope.$broadcast("alert","error","error creating application"):($rootScope.$broadcast("applications-created",applications,appName),$rootScope.$broadcast("applications-received",applications))})},createAdministrator:function(adminName){this.client().createAdministrator(adminName,function(err,administrators){err&&$rootScope.$broadcast("alert","error","error creating administrator"),$rootScope.$broadcast("administrators-received",administrators)})},getFeed:function(){var options={method:"GET",endpoint:"management/organizations/"+this.client().get("orgName")+"/feed",mQuery:!0};this.client().request(options,function(err,data){if(err)$rootScope.$broadcast("alert","error","error getting feed");else{var feedData=data.entities,feed=[],i=0;for(i=0;i<feedData.length;i++){var date=new Date(feedData[i].created).toUTCString(),title=feedData[i].title,n=title.indexOf(">");title=title.substring(n+1,title.length),n=title.indexOf(">"),title=title.substring(n+1,title.length),feedData[i].actor&&(title=feedData[i].actor.displayName+" "+title),feed.push({date:date,title:title})}0===i&&feed.push({date:"",title:"No Activities found."}),$rootScope.$broadcast("feed-received",feed)}})},createGroup:function(path,title){var options={path:path,title:title},self=this;this.groupsCollection.addEntity(options,function(err){err?$rootScope.$broadcast("groups-create-error",err):($rootScope.$broadcast("groups-create-success",self.groupsCollection),$rootScope.$broadcast("groups-received",self.groupsCollection))})},createRole:function(name,title){var options={name:name,title:title},self=this;this.rolesCollection.addEntity(options,function(err){err?$rootScope.$broadcast("alert","error","error creating role"):$rootScope.$broadcast("roles-received",self.rolesCollection)})},createUser:function(username,name,email,password){var options={username:username,name:name,email:email,password:password},self=this;this.usersCollection.addEntity(options,function(err,data){err?"string"==typeof data?$rootScope.$broadcast("alert","error","error: "+data):$rootScope.$broadcast("alert","error","error creating user. the email address might already exist."):($rootScope.$broadcast("users-create-success",self.usersCollection),$rootScope.$broadcast("users-received",self.usersCollection))})},getCollection:function(type,path,orderBy,query,limit){var options={type:path,qs:{}};query&&(options.qs.ql=query),options.qs.ql=options.qs.ql?options.qs.ql+" order by "+(orderBy||"created desc"):" order by "+(orderBy||"created desc"),limit&&(options.qs.limit=limit),this.client().createCollection(options,function(err,collection,data){err?($rootScope.$broadcast("alert","error","error getting "+collection._type+": "+data.error_description),$rootScope.$broadcast(type+"-error",collection)):$rootScope.$broadcast(type+"-received",collection),$rootScope.$$phase||$rootScope.$apply()})},runDataQuery:function(queryPath,searchString,queryLimit){this.getCollection("query",queryPath,null,searchString,queryLimit)},runDataPOSTQuery:function(queryPath,body){var self=this,options={method:"POST",endpoint:queryPath,body:body};this.client().request(options,function(err,data){if(err)$rootScope.$broadcast("alert","error","error: "+data.error_description),$rootScope.$broadcast("error-running-query",data);else{var queryPath=data.path;self.getCollection("query",queryPath,null,"order by modified DESC",null)}})},runDataPutQuery:function(queryPath,searchString,queryLimit,body){var self=this,options={method:"PUT",endpoint:queryPath,body:body};searchString&&(options.qs.ql=searchString),queryLimit&&(options.qs.queryLimit=queryLimit),this.client().request(options,function(err,data){if(err)$rootScope.$broadcast("alert","error","error: "+data.error_description);else{var queryPath=data.path;self.getCollection("query",queryPath,null,"order by modified DESC",null)}})},runDataDeleteQuery:function(queryPath,searchString,queryLimit){var self=this,options={method:"DELETE",endpoint:queryPath};searchString&&(options.qs.ql=searchString),queryLimit&&(options.qs.queryLimit=queryLimit),this.client().request(options,function(err,data){if(err)$rootScope.$broadcast("alert","error","error: "+data.error_description);else{var queryPath=data.path;self.getCollection("query",queryPath,null,"order by modified DESC",null)}})},getUsers:function(){this.getCollection("users","users","username");var self=this;$rootScope.$on("users-received",function(evt,users){self.usersCollection=users})},getGroups:function(){this.getCollection("groups","groups","title");var self=this;$rootScope.$on("groups-received",function(event,roles){self.groupsCollection=roles})},getRoles:function(){this.getCollection("roles","roles","name");var self=this;$rootScope.$on("roles-received",function(event,roles){self.rolesCollection=roles})},getNotifiers:function(){var query="",limit="100",self=this;this.getCollection("notifiers","notifiers","created",query,limit),$rootScope.$on("notifiers-received",function(event,notifiers){self.notifiersCollection=notifiers})},getNotificationHistory:function(type){var query=null;type&&(query="select * where state = '"+type+"'"),this.getCollection("notifications","notifications","created desc",query);var self=this;$rootScope.$on("notifications-received",function(event,notifications){self.notificationCollection=notifications})},getNotificationReceipts:function(uuid){this.getCollection("receipts","notifications/"+uuid+"/receipts");var self=this;$rootScope.$on("receipts-received",function(event,receipts){self.receiptsCollection=receipts})},getIndexes:function(path){var options={method:"GET",endpoint:path.split("/").concat("indexes").filter(function(bit){return bit&&bit.length}).join("/")};this.client().request(options,function(err,data){err?$rootScope.$broadcast("alert","error","Problem getting indexes: "+data.error):$rootScope.$broadcast("indexes-received",data.data)})},sendNotification:function(path,body){var options={method:"POST",endpoint:path,body:body};this.client().request(options,function(err,data){err?$rootScope.$broadcast("alert","error","Problem creating notification: "+data.error):$rootScope.$broadcast("send-notification-complete")})},getRolesUsers:function(username){var options={type:"roles/users/"+username,qs:{ql:"order by username"}};this.client().createCollection(options,function(err,users){err?$rootScope.$broadcast("alert","error","error getting users"):$rootScope.$broadcast("users-received",users)})},getTypeAheadData:function(type,searchString,searchBy,orderBy){var search="",qs={limit:100};searchString&&(search="select * where "+searchBy+" = '"+searchString+"'"),orderBy&&(search=search+" order by "+orderBy),search&&(qs.ql=search);var options={method:"GET",endpoint:type,qs:qs};this.client().request(options,function(err,data){if(err)$rootScope.$broadcast("alert","error","error getting "+type);else{var entities=data.entities;$rootScope.$broadcast(type+"-typeahead-received",entities)}})},getUsersTypeAhead:function(searchString){this.getTypeAheadData("users",searchString,"username","username")},getGroupsTypeAhead:function(searchString){this.getTypeAheadData("groups",searchString,"path","path")},getRolesTypeAhead:function(searchString){this.getTypeAheadData("roles",searchString,"name","name")},getGroupsForUser:function(user){var options={type:"users/"+user+"/groups"};this.client().createCollection(options,function(err,groups){err?$rootScope.$broadcast("alert","error","error getting groups"):$rootScope.$broadcast("user-groups-received",groups)})},addUserToGroup:function(user,group){var options={type:"users/"+user+"/groups/"+group};this.client().createEntity(options,function(err){err?$rootScope.$broadcast("alert","error","error adding user to group"):$rootScope.$broadcast("user-added-to-group-received")})},addUserToRole:function(user,role){var options={method:"POST",endpoint:"roles/"+role+"/users/"+user};this.client().request(options,function(err){err?$rootScope.$broadcast("alert","error","error adding user to role"):$rootScope.$broadcast("role-update-received")})},addGroupToRole:function(group,role){var options={method:"POST",endpoint:"roles/"+role+"/groups/"+group};this.client().request(options,function(err){err?$rootScope.$broadcast("alert","error","error adding group to role"):$rootScope.$broadcast("role-update-received")})},followUser:function(user){var username=$rootScope.selectedUser.get("uuid"),options={method:"POST",endpoint:"users/"+username+"/following/users/"+user};this.client().request(options,function(err){err?$rootScope.$broadcast("alert","error","error following user"):$rootScope.$broadcast("follow-user-received")})},newPermission:function(permission,type,entity){var options={method:"POST",endpoint:type+"/"+entity+"/permissions",body:{permission:permission}};this.client().request(options,function(err){err?$rootScope.$broadcast("alert","error","error adding permission"):$rootScope.$broadcast("permission-update-received")})},newUserPermission:function(permission,username){this.newPermission(permission,"users",username)},newGroupPermission:function(permission,path){this.newPermission(permission,"groups",path)},newRolePermission:function(permission,name){this.newPermission(permission,"roles",name)},deletePermission:function(permission,type,entity){var options={method:"DELETE",endpoint:type+"/"+entity+"/permissions",qs:{permission:permission}};this.client().request(options,function(err){err?$rootScope.$broadcast("alert","error","error deleting permission"):$rootScope.$broadcast("permission-update-received")})},deleteUserPermission:function(permission,user){this.deletePermission(permission,"users",user)},deleteGroupPermission:function(permission,group){this.deletePermission(permission,"groups",group)},deleteRolePermission:function(permission,rolename){this.deletePermission(permission,"roles",rolename)},removeUserFromRole:function(user,role){var options={method:"DELETE",endpoint:"roles/"+role+"/users/"+user};this.client().request(options,function(err){err?$rootScope.$broadcast("alert","error","error removing user from role"):$rootScope.$broadcast("role-update-received")})},removeUserFromGroup:function(group,role){var options={method:"DELETE",endpoint:"roles/"+role+"/groups/"+group};this.client().request(options,function(err){err?$rootScope.$broadcast("alert","error","error removing role from the group"):$rootScope.$broadcast("role-update-received")})},createAndroidNotifier:function(name,APIkey){var options={method:"POST",endpoint:"notifiers",body:{apiKey:APIkey,name:name,provider:"google"}};this.client().request(options,function(err,data){err?(console.error(data),$rootScope.$broadcast("alert","error","error creating notifier ")):($rootScope.$broadcast("alert","success","New notifier created successfully."),$rootScope.$broadcast("notifier-update"))})},createAppleNotifier:function(file,name,environment,certificatePassword){var provider="apple",formData=new FormData;formData.append("p12Certificate",file),formData.append("name",name),formData.append("provider",provider),formData.append("environment",environment),formData.append("certificatePassword",certificatePassword||"");var options={method:"POST",endpoint:"notifiers",formData:formData};this.client().request(options,function(err,data){err?(console.error(data),$rootScope.$broadcast("alert","error",data.error_description||"error creating notifier")):($rootScope.$broadcast("alert","success","New notifier created successfully."),$rootScope.$broadcast("notifier-update"))})},deleteNotifier:function(name){var options={method:"DELETE",endpoint:"notifiers/"+name};this.client().request(options,function(err){err?$rootScope.$broadcast("alert","error","error deleting notifier"):$rootScope.$broadcast("notifier-update")})},initializeCurrentUser:function(callback){if(callback=callback||function(){},$rootScope.currentUser&&!$rootScope.currentUser.reset)return callback($rootScope.currentUser),$rootScope.$broadcast("current-user-initialized","");var options={method:"GET",endpoint:"management/users/"+this.client().get("email"),mQuery:!0};this.client().request(options,function(err,data){err?$rootScope.$broadcast("alert","error","Error getting user info"):($rootScope.currentUser=data.data,$rootScope.currentUser.profileImg=utility.get_gravatar($rootScope.currentUser.email),$rootScope.userEmail=$rootScope.currentUser.email,callback($rootScope.currentUser),$rootScope.$broadcast("current-user-initialized",$rootScope.currentUser))
-})},updateUser:function(user){var body=$rootScope.currentUser;body.username=user.username,body.name=user.name,body.email=user.email;var options={method:"PUT",endpoint:"management/users/"+user.uuid+"/",mQuery:!0,body:body},self=this;this.client().request(options,function(err,data){return self.client().set("email",user.email),self.client().set("username",user.username),err?$rootScope.$broadcast("user-update-error",data):($rootScope.currentUser.reset=!0,void self.initializeCurrentUser(function(){$rootScope.$broadcast("user-update-success",$rootScope.currentUser)}))})},resetUserPassword:function(user){var pwdata={};pwdata.oldpassword=user.oldPassword,pwdata.newpassword=user.newPassword,pwdata.username=user.username;var options={method:"PUT",endpoint:"users/"+pwdata.uuid+"/",body:pwdata};this.client().request(options,function(err){return err?$rootScope.$broadcast("alert","error","Error resetting password"):($rootScope.currentUser.oldPassword="",$rootScope.currentUser.newPassword="",void $rootScope.$broadcast("user-reset-password-success",$rootScope.currentUser))})},getOrgCredentials:function(){var options={method:"GET",endpoint:"management/organizations/"+this.client().get("orgName")+"/credentials",mQuery:!0};this.client().request(options,function(err,data){err&&data.credentials?$rootScope.$broadcast("alert","error","Error getting credentials"):$rootScope.$broadcast("org-creds-updated",data.credentials)})},regenerateOrgCredentials:function(){var options={method:"POST",endpoint:"management/organizations/"+this.client().get("orgName")+"/credentials",mQuery:!0};this.client().request(options,function(err,data){err&&data.credentials?$rootScope.$broadcast("alert","error","Error regenerating credentials"):($rootScope.$broadcast("alert","success","Regeneration of credentials complete."),$rootScope.$broadcast("org-creds-updated",data.credentials))})},getAppCredentials:function(){var options={method:"GET",endpoint:"credentials"};this.client().request(options,function(err,data){err&&data.credentials?$rootScope.$broadcast("alert","error","Error getting credentials"):$rootScope.$broadcast("app-creds-updated",data.credentials)})},regenerateAppCredentials:function(){var options={method:"POST",endpoint:"credentials"};this.client().request(options,function(err,data){err&&data.credentials?$rootScope.$broadcast("alert","error","Error regenerating credentials"):($rootScope.$broadcast("alert","success","Regeneration of credentials complete."),$rootScope.$broadcast("app-creds-updated",data.credentials))})},signUpUser:function(orgName,userName,name,email,password){var formData={organization:orgName,username:userName,name:name,email:email,password:password},options={method:"POST",endpoint:"management/organizations",body:formData,mQuery:!0},client=this.client();client.request(options,function(err,data){err?$rootScope.$broadcast("register-error",data):$rootScope.$broadcast("register-success",data)})},resendActivationLink:function(id){var options={method:"GET",endpoint:"management/users/"+id+"/reactivate",mQuery:!0};this.client().request(options,function(err,data){err?$rootScope.$broadcast("resend-activate-error",data):$rootScope.$broadcast("resend-activate-success",data)})},getAppSettings:function(){$rootScope.$broadcast("app-settings-received",{})},getActivities:function(){this.client().request({method:"GET",endpoint:"activities",qs:{limit:200}},function(err,data){if(err)return $rootScope.$broadcast("app-activities-error",data);var entities=data.entities;entities.forEach(function(entity){entity.actor.picture?(entity.actor.picture=entity.actor.picture.replace(/^http:\/\/www.gravatar/i,"https://secure.gravatar"),entity.actor.picture=~entity.actor.picture.indexOf("http")?entity.actor.picture:"https://apigee.com/usergrid/img/user_profile.png"):entity.actor.picture=window.location.protocol+"//"+window.location.host+window.location.pathname+"img/user_profile.png"}),$rootScope.$broadcast("app-activities-received",data.entities)})},getEntityActivities:function(entity,isFeed){var route=isFeed?"feed":"activities",endpoint=entity.get("type")+"/"+entity.get("uuid")+"/"+route,options={method:"GET",endpoint:endpoint,qs:{limit:200}};this.client().request(options,function(err,data){err&&$rootScope.$broadcast(entity.get("type")+"-"+route+"-error",data),data.entities.forEach(function(entityInstance){entityInstance.createdDate=new Date(entityInstance.created).toUTCString()}),$rootScope.$broadcast(entity.get("type")+"-"+route+"-received",data.entities)})},addUserActivity:function(user,content){var options={actor:{displayName:user.get("username"),uuid:user.get("uuid"),username:user.get("username")},verb:"post",content:content};this.client().createUserActivity(user.get("username"),options,function(err,activity){err?$rootScope.$broadcast("user-activity-add-error",err):$rootScope.$broadcast("user-activity-add-success",activity)})},runShellQuery:function(method,path,payload){var path=path.replace(/^\//,""),options={method:method,endpoint:path};payload&&(options.body=payload),this.client().request(options,function(err,data){err?$rootScope.$broadcast("shell-error",data):$rootScope.$broadcast("shell-success",data)})},addOrganization:function(user,orgName){var options={method:"POST",endpoint:"management/users/"+user.uuid+"/organizations",body:{organization:orgName},mQuery:!0},client=this.client();client.request(options,function(err,data){err?$rootScope.$broadcast("user-add-org-error",data):$rootScope.$broadcast("user-add-org-success",$rootScope.organizations)})},leaveOrganization:function(user,org){var options={method:"DELETE",endpoint:"management/users/"+user.uuid+"/organizations/"+org.uuid,mQuery:!0};this.client().request(options,function(err,data){err?$rootScope.$broadcast("user-leave-org-error",data):(delete $rootScope.organizations[org.name],$rootScope.$broadcast("user-leave-org-success",$rootScope.organizations))})},httpGet:function(id,url){var deferred;return deferred=$q.defer(),$http.get(url||configuration.ITEMS_URL).success(function(data){var result;id?angular.forEach(data,function(obj){obj.id===id&&(result=obj)}):result=data,deferred.resolve(result)}).error(function(data,status,headers,config){$log.error(data,status,headers,config),reportError(data,config),deferred.reject(data)}),deferred.promise},jsonp:function(objectType,criteriaId,params,successCallback){params||(params={}),params.demoApp=$rootScope.demoData,params.access_token=getAccessToken(),params.callback="JSON_CALLBACK";var uri=$rootScope.urls().DATA_URL+"/"+$rootScope.currentOrg+"/"+$rootScope.currentApp+"/apm/"+objectType+"/"+criteriaId;return this.jsonpRaw(objectType,criteriaId,params,uri,successCallback)},jsonpSimple:function(objectType,appId,params){var uri=$rootScope.urls().DATA_URL+"/"+$rootScope.currentOrg+"/"+$rootScope.currentApp+"/apm/"+objectType+"/"+appId;return this.jsonpRaw(objectType,appId,params,uri)},calculateAverageRequestTimes:function(){if(!running){var self=this;running=!0,setTimeout(function(){running=!1;var length=requestTimes.length<10?requestTimes.length:10,sum=requestTimes.slice(0,length).reduce(function(a,b){return a+b}),avg=sum/length;self.averageRequestTimes=avg/1e3,self.averageRequestTimes>5&&$rootScope.$broadcast("request-times-slow",self.averageRequestTimes)},3e3)}},jsonpRaw:function(objectType,appId,params,uri,successCallback){"function"!=typeof successCallback&&(successCallback=null),uri=uri||$rootScope.urls().DATA_URL+"/"+$rootScope.currentOrg+"/"+$rootScope.currentApp+"/"+objectType,params||(params={});var start=(new Date).getTime(),self=this;params.access_token=getAccessToken(),params.callback="JSON_CALLBACK";var deferred=$q.defer(),diff=function(){currentRequests[uri]--,requestTimes.splice(0,0,(new Date).getTime()-start),self.calculateAverageRequestTimes()};successCallback&&$rootScope.$broadcast("ajax_loading",objectType);var reqCount=currentRequests[uri]||0;return self.averageRequestTimes>5&&reqCount>1?(setTimeout(function(){deferred.reject(new Error("query in progress"))},50),deferred):(currentRequests[uri]=(currentRequests[uri]||0)+1,$http.jsonp(uri,{params:params}).success(function(data,status,headers,config){diff(),successCallback&&(successCallback(data,status,headers,config),$rootScope.$broadcast("ajax_finished",objectType)),deferred.resolve(data)}).error(function(data,status,headers,config){diff(),$log.error("ERROR: Could not get jsonp data. "+uri),reportError(data,config),deferred.reject(data)}),deferred.promise)},resource:function(params,isArray){return $resource($rootScope.urls().DATA_URL+"/:orgname/:appname/:username/:endpoint",{},{get:{method:"JSONP",isArray:isArray,params:params},login:{method:"GET",url:$rootScope.urls().DATA_URL+"/management/token",isArray:!1,params:params},save:{url:$rootScope.urls().DATA_URL+"/"+params.orgname+"/"+params.appname,method:"PUT",isArray:!1,params:params}})},httpPost:function(url,callback,payload,headers){var accessToken=getAccessToken();payload?payload.access_token=accessToken:payload={access_token:accessToken},headers||(headers={Bearer:accessToken}),$http({method:"POST",url:url,data:payload,headers:headers}).success(function(data){callback(data)}).error(function(data,status,headers,config){reportError(data,config),callback(data)})}}}),AppServices.Directives.directive("ngFocus",["$parse",function($parse){return function(scope,element,attr){var fn=$parse(attr.ngFocus);element.bind("focus",function(event){scope.$apply(function(){fn(scope,{$event:event})})})}}]),AppServices.Directives.directive("ngBlur",["$parse",function($parse){return function(scope,element,attr){var fn=$parse(attr.ngBlur);element.bind("blur",function(event){scope.$apply(function(){fn(scope,{$event:event})})})}}]),AppServices.Services.factory("utility",function(){return{keys:function(o){var a=[];for(var propertyName in o)a.push(propertyName);return a},get_gravatar:function(email,size){try{var size=size||50;return email.length?"https://secure.gravatar.com/avatar/"+MD5(email)+"?s="+size:"https://apigee.com/usergrid/img/user_profile.png"}catch(e){return"https://apigee.com/usergrid/img/user_profile.png"}},get_qs_params:function(){var queryParams={};if(window.location.search)for(var params=window.location.search.slice(1).split("&"),i=0;i<params.length;i++){var tmp=params[i].split("=");queryParams[tmp[0]]=unescape(tmp[1])}return queryParams},safeApply:function(fn){var phase=this.$root.$$phase;"$apply"==phase||"$digest"==phase?fn&&"function"==typeof fn&&fn():this.$apply(fn)}}}),AppServices.Directives.directive("ugValidate",["$rootScope",function(){return{scope:!0,restrict:"A",require:"ng-model",replace:!0,link:function(scope,element,attrs,ctrl){var validate=function(){var id=element.attr("id"),validator=id+"-validator",title=element.attr("title");if(title=title&&title.length?title:"Please enter data",$("#"+validator).remove(),ctrl.$valid)element.removeClass("has-error"),$("#"+validator).remove();else{var validatorElem='<div id="'+validator+'"><span  class="validator-error-message">'+title+"</span></div>";$("#"+id).after(validatorElem),element.addClass("has-error")}},firing=!1;element.bind("blur",function(){validate(scope,element,attrs,ctrl)}).bind("input",function(){firing||(firing=!0,setTimeout(function(){validate(scope,element,attrs,ctrl),firing=!1},500))})}}}]),AppServices.Controllers.controller("GroupsActivitiesCtrl",["ug","$scope","$rootScope","$location",function(ug,$scope,$rootScope,$location){return $scope.activitiesSelected="active",$rootScope.selectedGroup?($rootScope.selectedGroup.activities=[],void $rootScope.selectedGroup.getActivities(function(err){err||$rootScope.$$phase||$rootScope.$apply()})):void $location.path("/groups")}]),AppServices.Controllers.controller("GroupsCtrl",["ug","$scope","$rootScope","$location","$route",function(ug,$scope,$rootScope,$location,$route){$scope.groupsCollection={},$rootScope.selectedGroup={},$scope.previous_display="none",$scope.next_display="none",$scope.hasGroups=!1,$scope.newGroup={path:"",title:""},ug.getGroups(),$scope.currentGroupsPage={},$scope.selectGroupPage=function(route){$scope.currentGroupsPage.template=$route.routes[route].templateUrl,$scope.currentGroupsPage.route=route},$scope.newGroupDialog=function(modalId){$scope.newGroup.path&&$scope.newGroup.title?(ug.createGroup($scope.removeFirstSlash($scope.newGroup.path),$scope.newGroup.title),$scope.hideModal(modalId),$scope.newGroup={path:"",title:""}):$rootScope.$broadcast("alert","error","Missing required information.")},$scope.deleteGroupsDialog=function(modalId){$scope.deleteEntities($scope.groupsCollection,"group-deleted","error deleting group"),$scope.hideModal(modalId),$scope.newGroup={path:"",title:""}},$scope.$on("group-deleted",function(){$rootScope.$broadcast("alert","success","Group deleted successfully.")}),$scope.$on("group-deleted-error",function(){ug.getGroups()}),$scope.$on("groups-create-success",function(){$rootScope.$broadcast("alert","success","Group created successfully.")}),$scope.$on("groups-create-error",function(){$rootScope.$broadcast("alert","error","Error creating group. Make sure you don't have spaces in the path.")}),$scope.$on("groups-received",function(event,groups){$scope.groupBoxesSelected=!1,$scope.groupsCollection=groups,$scope.newGroup.path="",$scope.newGroup.title="",!(groups._list.length>0)||$rootScope.selectedGroup._data&&groups._list.some(function(group){return $rootScope.selectedGroup._data.uuid===group._data.uuid})||$scope.selectGroup(groups._list[0]._data.uuid),$scope.hasGroups=groups._list.length>0,$scope.received=!0,$scope.checkNextPrev(),$scope.applyScope()}),$scope.resetNextPrev=function(){$scope.previous_display="none",$scope.next_display="none"},$scope.checkNextPrev=function(){$scope.resetNextPrev(),$scope.groupsCollection.hasPreviousPage()&&($scope.previous_display="block"),$scope.groupsCollection.hasNextPage()&&($scope.next_display="block")},$scope.selectGroup=function(uuid){$rootScope.selectedGroup=$scope.groupsCollection.getEntityByUUID(uuid),$scope.currentGroupsPage.template="groups/groups-details.html",$scope.currentGroupsPage.route="/groups/details",$rootScope.$broadcast("group-selection-changed",$rootScope.selectedGroup)},$scope.getPrevious=function(){$scope.groupsCollection.getPreviousPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting previous page of groups"),$scope.checkNextPrev(),$scope.applyScope()})},$scope.getNext=function(){$scope.groupsCollection.getNextPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting next page of groups"),$scope.checkNextPrev(),$scope.applyScope()})},$scope.$on("group-deleted",function(){$route.reload(),$scope.master=""})}]),AppServices.Controllers.controller("GroupsDetailsCtrl",["ug","$scope","$rootScope","$location",function(ug,$scope,$rootScope,$location){var selectedGroup=$rootScope.selectedGroup.clone();return $scope.detailsSelected="active",$scope.json=selectedGroup._json||selectedGroup._data.stringifyJSON(),$scope.group=selectedGroup._data,$scope.group.path=0!=$scope.group.path.indexOf("/")?"/"+$scope.group.path:$scope.group.path,$scope.group.title=$scope.group.title,$rootScope.selectedGroup?($scope.$on("group-selection-changed",function(evt,selectedGroup){$scope.group.path=0!=selectedGroup._data.path.indexOf("/")?"/"+selectedGroup._data.path:selectedGroup._data.path,$scope.group.title=selectedGroup._data.title,$scope.detailsSelected="active",$scope.json=selectedGroup._json||selectedGroup._data.stringifyJSON()}),void($rootScope.saveSelectedGroup=function(){$rootScope.selectedGroup._data.title=$scope.group.title,$rootScope.selectedGroup._data.path=$scope.removeFirstSlash($scope.group.path),$rootScope.selectedGroup.save(function(err){err?$rootScope.$broadcast("alert","error","error saving group"):$rootScope.$broadcast("alert","success","group saved")})})):void $location.path("/groups")}]),AppServices.Controllers.controller("GroupsMembersCtrl",["ug","$scope","$rootScope","$location",function(ug,$scope,$rootScope,$location){return $scope.membersSelected="active",$scope.previous_display="none",$scope.next_display="none",$scope.user="",$scope.master="",$scope.hasMembers=!1,ug.getUsersTypeAhead(),$scope.usersTypeaheadValues=[],$scope.$on("users-typeahead-received",function(event,users){$scope.usersTypeaheadValues=users,$scope.applyScope()}),$scope.addGroupToUserDialog=function(modalId){if($scope.user){var path=$rootScope.selectedGroup.get("path");ug.addUserToGroup($scope.user.uuid,path),$scope.user="",$scope.hideModal(modalId)}else $rootScope.$broadcast("alert","error","Please select a user.")},$scope.removeUsersFromGroupDialog=function(modalId){$scope.deleteEntities($scope.groupsCollection.users,"group-update-received","Error removing user from group"),$scope.hideModal(modalId)},$scope.get=function(){if($rootScope.selectedGroup.get){var options={type:"groups/"+$rootScope.selectedGroup.get("path")+"/users"};$scope.groupsCollection.addCollection("users",options,function(err){$scope.groupMembersSelected=!1,err?$rootScope.$broadcast("alert","error","error getting users for group"):($scope.hasMembers=$scope.groupsCollection.users._list.length>0,$scope.checkNextPrev(),$scope.applyScope())})}},$scope.resetNextPrev=function(){$scope.previous_display="none",$scope.next_display="none"},$scope.checkNextPrev=function(){$scope.resetNextPrev(),$scope.groupsCollection.users.hasPreviousPage()&&($scope.previous_display="block"),$scope.groupsCollection.users.hasNextPage()&&($scope.next_display="block")},$rootScope.selectedGroup?($scope.get(),$scope.getPrevious=function(){$scope.groupsCollection.users.getPreviousPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting previous page of users"),$scope.checkNextPrev(),$rootScope.$$phase||$rootScope.$apply()})},$scope.getNext=function(){$scope.groupsCollection.users.getNextPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting next page of users"),$scope.checkNextPrev(),$rootScope.$$phase||$rootScope.$apply()})},$scope.$on("group-update-received",function(){$scope.get()}),void $scope.$on("user-added-to-group-received",function(){$scope.get()})):void $location.path("/groups")}]),AppServices.Controllers.controller("GroupsRolesCtrl",["ug","$scope","$rootScope","$location",function(ug,$scope,$rootScope,$location){return $scope.rolesSelected="active",$scope.roles_previous_display="none",$scope.roles_next_display="none",$scope.name="",$scope.master="",$scope.hasRoles=!1,$scope.hasPermissions=!1,$scope.permissions={},$scope.addGroupToRoleDialog=function(modalId){if($scope.name){var path=$rootScope.selectedGroup.get("path");ug.addGroupToRole(path,$scope.name),$scope.hideModal(modalId),$scope.name=""}else $rootScope.$broadcast("alert","error","You must specify a role name.")},$scope.leaveRoleDialog=function(modalId){for(var path=$rootScope.selectedGroup.get("path"),roles=$scope.groupsCollection.roles._list,i=0;i<roles.length;i++)roles[i].checked&&ug.removeUserFromGroup(path,roles[i]._data.name);$scope.hideModal(modalId)},$scope.addGroupPermissionDialog=function(modalId){if($scope.permissions.path){var permission=$scope.createPermission(null,null,$scope.removeFirstSlash($scope.permissions.path),$scope.permissions),path=$rootScope.selectedGroup.get("path");ug.newGroupPermission(permission,path),$scope.hideModal(modalId),$scope.permissions&&($scope.permissions={})}else $rootScope.$broadcast("alert","error","You must specify a name for the permission.")},$scope.deleteGroupPermissionDialog=function(modalId){for(var path=$rootScope.selectedGroup.get("path"),permissions=$rootScope.selectedGroup.permissions,i=0;i<permissions.length;i++)permissions[i].checked&&ug.deleteGroupPermission(permissions[i].perm,path);$scope.hideModal(modalId)},$scope.resetNextPrev=function(){$scope.roles_previous_display="none",$scope.roles_next_display="none",$scope.permissions_previous_display="none",$scope.permissions_next_display="none"},$scope.resetNextPrev(),$scope.checkNextPrevRoles=function(){$scope.resetNextPrev(),$scope.groupsCollection.roles.hasPreviousPage()&&($scope.roles_previous_display="block"),$scope.groupsCollection.roles.hasNextPage()&&($scope.roles_next_display="block")},$scope.checkNextPrevPermissions=function(){$scope.groupsCollection.permissions.hasPreviousPage()&&($scope.permissions_previous_display="block"),$scope.groupsCollection.permissions.hasNextPage()&&($scope.permissions_next_display="block")},$scope.getRoles=function(){var path=$rootScope.selectedGroup.get("path"),options={type:"groups/"+path+"/roles"};$scope.groupsCollection.addCollection("roles",options,function(err){$scope.groupRoleSelected=!1,err?$rootScope.$broadcast("alert","error","error getting roles for group"):($scope.hasRoles=$scope.groupsCollection.roles._list.length>0,$scope.checkNextPrevRoles(),$scope.applyScope())})},$scope.getPermissions=function(){$rootScope.selectedGroup.permissions=[],$rootScope.selectedGroup.getPermissions(function(err){$scope.groupPermissionsSelected=!1,$scope.hasPermissions=$scope.selectedGroup.permissions.length,err||$scope.applyScope()})},$scope.getPreviousRoles=function(){$scope.groupsCollection.roles.getPreviousPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting previous page of roles"),$scope.checkNextPrevRoles(),$scope.applyScope()})},$scope.getNextRoles=function(){$scope.groupsCollection.roles.getNextPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting next page of roles"),$scope.checkNextPrevRoles(),$scope.applyScope()})},$scope.getPreviousPermissions=function(){$scope.groupsCollection.permissions.getPreviousPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting previous page of permissions"),$scope.checkNextPrevPermissions(),$scope.applyScope()})},$scope.getNextPermissions=function(){$scope.groupsCollection.permissions.getNextPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting next page of permissions"),$scope.checkNextPrevPermissions(),$scope.applyScope()})},$scope.$on("role-update-received",function(){$scope.getRoles()}),$scope.$on("permission-update-received",function(){$scope.getPermissions()}),$scope.$on("groups-received",function(evt,data){$scope.groupsCollection=data,$scope.getRoles(),$scope.getPermissions()}),$rootScope.selectedGroup?(ug.getRolesTypeAhead(),void ug.getGroups()):void $location.path("/groups")}]),AppServices.Controllers.controller("ForgotPasswordCtrl",["ug","$scope","$rootScope","$location","$sce","utility",function(ug,$scope,$rootScope,$location,$sce){$rootScope.activeUI&&$location.path("/"),$scope.forgotPWiframeURL=$sce.trustAsResourceUrl($scope.apiUrl+"/management/users/resetpw")}]),AppServices.Controllers.controller("LoginCtrl",["ug","$scope","$rootScope","$routeParams","$location","utility",function(ug,$scope,$rootScope,$routeParams,$location){$scope.loading=!1,$scope.login={},$scope.activation={},$scope.requiresDeveloperKey=$scope.options.client.requiresDeveloperKey||!1,!$scope.requiresDeveloperKey&&$scope.options.client.apiKey&&ug.setClientProperty("developerkey",$scope.options.client.apiKey),$rootScope.gotoForgotPasswordPage=function(){$location.path("/forgot-password")},$rootScope.gotoSignUp=function(){$location.path("/register")},$scope.login=function(){var username=$scope.login.username,password=$scope.login.password;$scope.loginMessage="",$scope.loading=!0,$scope.requiresDeveloperKey&&ug.setClientProperty("developerkey",$scope.login.developerkey),ug.orgLogin(username,password)},$scope.$on("loginFailed",function(){$scope.loading=!1,ug.setClientProperty("developerkey",null),$scope.loginMessage="Error: the username / password combination was not valid",$scope.applyScope()}),$scope.logout=function(){ug.logout(),ug.setClientProperty("developerkey",null),$scope.use_sso?window.location=$rootScope.urls().LOGOUT_URL+"?redirect=no&callback="+encodeURIComponent($location.absUrl().split("?")[0]):($location.path("/login"),$scope.applyScope())},$rootScope.$on("userNotAuthenticated",function(){"/forgot-password"!==$location.path()&&($location.path("/login"),$scope.logout()),$scope.applyScope()}),$scope.$on("loginSuccesful",function(){$scope.loading=!1,$scope.login={},$location.path("/login"===$rootScope.currentPath||"/login/loading"===$rootScope.currentPath||"undefined"==typeof $rootScope.currentPath?"/org-overview":$rootScope.currentPath),$scope.applyScope()}),$scope.resendActivationLink=function(modalId){var id=$scope.activation.id;ug.resendActivationLink(id),$scope.activation={},$scope.hideModal(modalId)},$scope.$on("resend-activate-success",function(){$scope.activationId="",$scope.$apply(),$rootScope.$broadcast("alert","success","Activation link sent successfully.")}),$scope.$on("resend-activate-error",function(){$rootScope.$broadcast("alert","error","Activation link failed to send.")})}]),AppServices.Controllers.controller("LogoutCtrl",["ug","$scope","$rootScope","$routeParams","$location","utility",function(ug,$scope,$rootScope,$routeParams,$location){ug.logout(),$scope.use_sso?window.location=$rootScope.urls().LOGOUT_URL+"?callback="+encodeURIComponent($location.absUrl().split("?")[0]):($location.path("/login"),$scope.applyScope())}]),AppServices.Controllers.controller("RegisterCtrl",["ug","$scope","$rootScope","$routeParams","$location","utility",function(ug,$scope,$rootScope,$routeParams,$location){$rootScope.activeUI&&$location.path("/");var init=function(){$scope.registeredUser={}};init(),$scope.cancel=function(){$location.path("/")},$scope.register=function(){var user=$scope.registeredUser.clone();user.password===user.confirmPassword?ug.signUpUser(user.orgName,user.userName,user.name,user.email,user.password):$rootScope.$broadcast("alert","error","Passwords do not match."+name)},$scope.$on("register-error",function(event,data){$scope.signUpSuccess=!1,$rootScope.$broadcast("alert","error","Error registering: "+(data&&data.error_description?data.error_description:name))}),$scope.$on("register-success",function(){$scope.registeredUser={},$scope.signUpSuccess=!0,init(),$scope.$apply()})}]),AppServices.Directives.directive("menu",["$location","$rootScope","$log",function($location,$rootScope,$log){return{link:function(scope,lElement,attrs){function setActiveElement(ele,locationPath,$rootScope,isParentClick){if(ele){ele.removeClass("active");var menuItem,parentMenuItem,newActiveElement=ele.parent().find('a[href*="#!'+locationPath+'"]');if(0===newActiveElement.length)parentMenuItem=ele;else{menuItem=newActiveElement.parent(),menuItem.hasClass("option")?parentMenuItem=menuItem[0]:1===menuItem.size()?(parentMenuItem=newActiveElement.parent().parent().parent(),parentMenuItem.addClass("active")):(parentMenuItem=menuItem[0],menuItem=menuItem[1]);try{var menuItemCompare=parentMenuItem[0]||parentMenuItem;ele[0]!==menuItemCompare&&isParentClick&&ele.find("ul")[0]&&(ele.find("ul")[0].style.height=0);var subMenuSizer=angular.element(parentMenuItem).find(".nav-list")[0];if(subMenuSizer){var heightChecker,clientHeight=subMenuSizer.getAttribute("data-height"),heightCounter=1;clientHeight||heightChecker?(menuItem.addClass("active"),subMenuSizer.style.height=clientHeight+"px"):heightChecker=setInterval(function(){var tempHeight=subMenuSizer.getAttribute("data-height")||subMenuSizer.clientHeight;heightCounter=subMenuSizer.clientHeight,0===heightCounter&&(heightCounter=1),"string"==typeof tempHeight&&(tempHeight=parseInt(tempHeight,10)),tempHeight>0&&heightCounter===tempHeight&&(subMenuSizer.setAttribute("data-height",tempHeight),menuItem.addClass("active"),subMenuSizer.style.height=tempHeight+"px",clearInterval(heightChecker)),heightCounter=tempHeight},20),$rootScope.menuExecute=!0}else menuItem.addClass("active")}catch(e){$log.error("Problem calculating size of menu",e)}}return{menuitem:menuItem,parentMenuItem:parentMenuItem}}}function setupMenuState(){if(menuContext=attrs.menu,parentMenuItems=lElement.find("li.option"),0!==lElement.find("li.option.active").length&&($rootScope[menuContext+"Parent"]=lElement.find("li.option.active")),activeParentElement=$rootScope[menuContext+"Parent"]||null,activeParentElement&&(activeParentElement=angular.element(activeParentElement)),menuItems=lElement.find("li.option li"),locationPath=$location.path(),activeParentElement&&(activeMenuElement=angular.element(activeParentElement),activeMenuElement=activeMenuElement.find("li.active"),activeMenuElement.removeClass("active"),activeParentElement.find("a")[0])){subMenuContext=activeParentElement.find("a")[0].href.split("#!")[1];var tempMenuContext=subMenuContext.split("/");subMenuContext="/"+tempMenuContext[1],tempMenuContext.length>2&&(subMenuContext+="/"+tempMenuContext[2])}var activeElements;""!==locationPath&&-1===locationPath.indexOf(subMenuContext)?(activeElements=setActiveElement(activeParentElement,locationPath,scope),activeElements&&($rootScope[menuContext+"Parent"]=activeElements.parentMenuItem,$rootScope[menuContext+"Menu"]=activeElements.menuitem)):setActiveElement(activeParentElement,subMenuContext,scope)}var menuContext,parentMenuItems,activeParentElement,menuItems,activeMenuElement,locationPath,subMenuContext,bound=!1;setTimeout(setupMenuState,500),scope.$on("$routeChangeSuccess",function(){setTimeout(function(){setupMenuState(),bound||(bound=!0,parentMenuItems.bind("click",function(cevent){var previousParentSelection=angular.element($rootScope[menuContext+"Parent"]),targetPath=angular.element(cevent.currentTarget).find("> a")[0].href.split("#!")[1];previousParentSelection.find(".nav > li").removeClass("active");var activeElements=setActiveElement(previousParentSelection,targetPath,scope,!0);$rootScope[menuContext+"Parent"]=activeElements.parentMenuItem,$rootScope[menuContext+"Menu"]=activeElements.menuitem,scope.$broadcast("menu-selection")}),menuItems.bind("click",function(cevent){var previousMenuSelection=$rootScope[menuContext+"Menu"],targetElement=cevent.currentTarget;previousMenuSelection!==targetElement&&(previousMenuSelection?angular.element(previousMenuSelection).removeClass("active"):activeMenuElement.removeClass("active"),scope.$apply(function(){angular.element($rootScope[menuContext]).addClass("active")}),$rootScope[menuContext+"Menu"]=targetElement,angular.element($rootScope[menuContext+"Parent"]).find("a")[0].setAttribute("href",angular.element(cevent.currentTarget).find("a")[0].href))}))},500)})}}}]),AppServices.Directives.directive("timeFilter",["$location","$routeParams","$rootScope",function($location,$routeParams,$rootScope){return{restrict:"A",transclude:!0,template:'<li ng-repeat="time in timeFilters" class="filterItem"><a ng-click="changeTimeFilter(time)">{{time.label}}</a></li>',link:function(scope,lElement,attrs){var menuContext=attrs.filter;scope.changeTimeFilter=function(newTime){$rootScope.selectedtimefilter=newTime,$routeParams.timeFilter=newTime.value},lElement.bind("click",function(cevent){menuBindClick(scope,lElement,cevent,menuContext)})}}}]),AppServices.Directives.directive("chartFilter",["$location","$routeParams","$rootScope",function($location,$routeParams,$rootScope){return{restrict:"ACE",scope:"=",template:'<li ng-repeat="chart in chartCriteriaOptions" class="filterItem"><a ng-click="changeChart(chart)">{{chart.chartName}}</a></li>',link:function(scope,lElement,attrs){var menuContext=attrs.filter;scope.changeChart=function(newChart){$rootScope.selectedChartCriteria=newChart,$routeParams.currentCompare="NOW",$routeParams[newChart.type+"ChartFilter"]=newChart.chartCriteriaId},lElement.bind("click",function(cevent){menuBindClick(scope,lElement,cevent,menuContext)})}}}]),AppServices.Directives.directive("orgMenu",["$location","$routeParams","$rootScope","ug",function($location,$routeParams,$rootScope,ug){return{restrict:"ACE",scope:"=",replace:!0,templateUrl:"menus/orgMenu.html",link:function(scope){scope.orgChange=function(orgName){var oldOrg=ug.get("orgName");ug.set("orgName",orgName),$rootScope.currentOrg=orgName,$location.path("/org-overview"),$rootScope.$broadcast("org-changed",oldOrg,orgName)},scope.$on("change-org",function(args,org){scope.orgChange(org)})}}}]),AppServices.Directives.directive("appMenu",["$location","$routeParams","$rootScope","ug",function($location,$routeParams,$rootScope,ug){return{restrict:"ACE",scope:"=",replace:!0,templateUrl:"menus/appMenu.html",link:function(scope){scope.myApp={};
+})},updateUser:function(user){var body={};body.username=user.username,body.name=user.name,body.email=user.email;var options={method:"PUT",endpoint:"management/users/"+user.uuid+"/",mQuery:!0,body:body},self=this;this.client().request(options,function(err,data){return self.client().set("email",user.email),self.client().set("username",user.username),err?$rootScope.$broadcast("user-update-error",data):($rootScope.currentUser.reset=!0,void self.initializeCurrentUser(function(){$rootScope.$broadcast("user-update-success",$rootScope.currentUser)}))})},resetUserPassword:function(user){var pwdata={};pwdata.oldpassword=user.oldPassword,pwdata.newpassword=user.newPassword,pwdata.username=user.username;var options={method:"PUT",endpoint:"users/"+pwdata.uuid+"/",body:pwdata};this.client().request(options,function(err){return err?$rootScope.$broadcast("alert","error","Error resetting password"):($rootScope.currentUser.oldPassword="",$rootScope.currentUser.newPassword="",void $rootScope.$broadcast("user-reset-password-success",$rootScope.currentUser))})},getOrgCredentials:function(){var options={method:"GET",endpoint:"management/organizations/"+this.client().get("orgName")+"/credentials",mQuery:!0};this.client().request(options,function(err,data){err&&data.credentials?$rootScope.$broadcast("alert","error","Error getting credentials"):$rootScope.$broadcast("org-creds-updated",data.credentials)})},regenerateOrgCredentials:function(){var options={method:"POST",endpoint:"management/organizations/"+this.client().get("orgName")+"/credentials",mQuery:!0};this.client().request(options,function(err,data){err&&data.credentials?$rootScope.$broadcast("alert","error","Error regenerating credentials"):($rootScope.$broadcast("alert","success","Regeneration of credentials complete."),$rootScope.$broadcast("org-creds-updated",data.credentials))})},getAppCredentials:function(){var options={method:"GET",endpoint:"credentials"};this.client().request(options,function(err,data){err&&data.credentials?$rootScope.$broadcast("alert","error","Error getting credentials"):$rootScope.$broadcast("app-creds-updated",data.credentials)})},regenerateAppCredentials:function(){var options={method:"POST",endpoint:"credentials"};this.client().request(options,function(err,data){err&&data.credentials?$rootScope.$broadcast("alert","error","Error regenerating credentials"):($rootScope.$broadcast("alert","success","Regeneration of credentials complete."),$rootScope.$broadcast("app-creds-updated",data.credentials))})},signUpUser:function(orgName,userName,name,email,password){var formData={organization:orgName,username:userName,name:name,email:email,password:password},options={method:"POST",endpoint:"management/organizations",body:formData,mQuery:!0},client=this.client();client.request(options,function(err,data){err?$rootScope.$broadcast("register-error",data):$rootScope.$broadcast("register-success",data)})},resendActivationLink:function(id){var options={method:"GET",endpoint:"management/users/"+id+"/reactivate",mQuery:!0};this.client().request(options,function(err,data){err?$rootScope.$broadcast("resend-activate-error",data):$rootScope.$broadcast("resend-activate-success",data)})},getAppSettings:function(){$rootScope.$broadcast("app-settings-received",{})},getActivities:function(){this.client().request({method:"GET",endpoint:"activities",qs:{limit:200}},function(err,data){if(err)return $rootScope.$broadcast("app-activities-error",data);var entities=data.entities;entities.forEach(function(entity){entity.actor.picture?(entity.actor.picture=entity.actor.picture.replace(/^http:\/\/www.gravatar/i,"https://secure.gravatar"),entity.actor.picture=~entity.actor.picture.indexOf("http")?entity.actor.picture:"https://apigee.com/usergrid/img/user_profile.png"):entity.actor.picture=window.location.protocol+"//"+window.location.host+window.location.pathname+"img/user_profile.png"}),$rootScope.$broadcast("app-activities-received",data.entities)})},getEntityActivities:function(entity,isFeed){var route=isFeed?"feed":"activities",endpoint=entity.get("type")+"/"+entity.get("uuid")+"/"+route,options={method:"GET",endpoint:endpoint,qs:{limit:200}};this.client().request(options,function(err,data){err&&$rootScope.$broadcast(entity.get("type")+"-"+route+"-error",data),data.entities.forEach(function(entityInstance){entityInstance.createdDate=new Date(entityInstance.created).toUTCString()}),$rootScope.$broadcast(entity.get("type")+"-"+route+"-received",data.entities)})},addUserActivity:function(user,content){var options={actor:{displayName:user.get("username"),uuid:user.get("uuid"),username:user.get("username")},verb:"post",content:content};this.client().createUserActivity(user.get("username"),options,function(err,activity){err?$rootScope.$broadcast("user-activity-add-error",err):$rootScope.$broadcast("user-activity-add-success",activity)})},runShellQuery:function(method,path,payload){var path=path.replace(/^\//,""),options={method:method,endpoint:path};payload&&(options.body=payload),this.client().request(options,function(err,data){err?$rootScope.$broadcast("shell-error",data):$rootScope.$broadcast("shell-success",data)})},addOrganization:function(user,orgName){var options={method:"POST",endpoint:"management/users/"+user.uuid+"/organizations",body:{organization:orgName},mQuery:!0},client=this.client();client.request(options,function(err,data){err?$rootScope.$broadcast("user-add-org-error",data):$rootScope.$broadcast("user-add-org-success",$rootScope.organizations)})},leaveOrganization:function(user,org){var options={method:"DELETE",endpoint:"management/users/"+user.uuid+"/organizations/"+org.uuid,mQuery:!0};this.client().request(options,function(err,data){err?$rootScope.$broadcast("user-leave-org-error",data):(delete $rootScope.organizations[org.name],$rootScope.$broadcast("user-leave-org-success",$rootScope.organizations))})},httpGet:function(id,url){var deferred;return deferred=$q.defer(),$http.get(url||configuration.ITEMS_URL).success(function(data){var result;id?angular.forEach(data,function(obj){obj.id===id&&(result=obj)}):result=data,deferred.resolve(result)}).error(function(data,status,headers,config){$log.error(data,status,headers,config),reportError(data,config),deferred.reject(data)}),deferred.promise},jsonp:function(objectType,criteriaId,params,successCallback){params||(params={}),params.demoApp=$rootScope.demoData,params.access_token=getAccessToken(),params.callback="JSON_CALLBACK";var uri=$rootScope.urls().DATA_URL+"/"+$rootScope.currentOrg+"/"+$rootScope.currentApp+"/apm/"+objectType+"/"+criteriaId;return this.jsonpRaw(objectType,criteriaId,params,uri,successCallback)},jsonpSimple:function(objectType,appId,params){var uri=$rootScope.urls().DATA_URL+"/"+$rootScope.currentOrg+"/"+$rootScope.currentApp+"/apm/"+objectType+"/"+appId;return this.jsonpRaw(objectType,appId,params,uri)},calculateAverageRequestTimes:function(){if(!running){var self=this;running=!0,setTimeout(function(){running=!1;var length=requestTimes.length<10?requestTimes.length:10,sum=requestTimes.slice(0,length).reduce(function(a,b){return a+b}),avg=sum/length;self.averageRequestTimes=avg/1e3,self.averageRequestTimes>5&&$rootScope.$broadcast("request-times-slow",self.averageRequestTimes)},3e3)}},jsonpRaw:function(objectType,appId,params,uri,successCallback){"function"!=typeof successCallback&&(successCallback=null),uri=uri||$rootScope.urls().DATA_URL+"/"+$rootScope.currentOrg+"/"+$rootScope.currentApp+"/"+objectType,params||(params={});var start=(new Date).getTime(),self=this;params.access_token=getAccessToken(),params.callback="JSON_CALLBACK";var deferred=$q.defer(),diff=function(){currentRequests[uri]--,requestTimes.splice(0,0,(new Date).getTime()-start),self.calculateAverageRequestTimes()};successCallback&&$rootScope.$broadcast("ajax_loading",objectType);var reqCount=currentRequests[uri]||0;return self.averageRequestTimes>5&&reqCount>1?(setTimeout(function(){deferred.reject(new Error("query in progress"))},50),deferred):(currentRequests[uri]=(currentRequests[uri]||0)+1,$http.jsonp(uri,{params:params}).success(function(data,status,headers,config){diff(),successCallback&&(successCallback(data,status,headers,config),$rootScope.$broadcast("ajax_finished",objectType)),deferred.resolve(data)}).error(function(data,status,headers,config){diff(),$log.error("ERROR: Could not get jsonp data. "+uri),reportError(data,config),deferred.reject(data)}),deferred.promise)},resource:function(params,isArray){return $resource($rootScope.urls().DATA_URL+"/:orgname/:appname/:username/:endpoint",{},{get:{method:"JSONP",isArray:isArray,params:params},login:{method:"GET",url:$rootScope.urls().DATA_URL+"/management/token",isArray:!1,params:params},save:{url:$rootScope.urls().DATA_URL+"/"+params.orgname+"/"+params.appname,method:"PUT",isArray:!1,params:params}})},httpPost:function(url,callback,payload,headers){var accessToken=getAccessToken();payload?payload.access_token=accessToken:payload={access_token:accessToken},headers||(headers={Bearer:accessToken}),$http({method:"POST",url:url,data:payload,headers:headers}).success(function(data){callback(data)}).error(function(data,status,headers,config){reportError(data,config),callback(data)})}}}),AppServices.Directives.directive("ngFocus",["$parse",function($parse){return function(scope,element,attr){var fn=$parse(attr.ngFocus);element.bind("focus",function(event){scope.$apply(function(){fn(scope,{$event:event})})})}}]),AppServices.Directives.directive("ngBlur",["$parse",function($parse){return function(scope,element,attr){var fn=$parse(attr.ngBlur);element.bind("blur",function(event){scope.$apply(function(){fn(scope,{$event:event})})})}}]),AppServices.Services.factory("utility",function(){return{keys:function(o){var a=[];for(var propertyName in o)a.push(propertyName);return a},get_gravatar:function(email,size){try{var size=size||50;return email.length?"https://secure.gravatar.com/avatar/"+MD5(email)+"?s="+size:"https://apigee.com/usergrid/img/user_profile.png"}catch(e){return"https://apigee.com/usergrid/img/user_profile.png"}},get_qs_params:function(){var queryParams={};if(window.location.search)for(var params=window.location.search.slice(1).split("&"),i=0;i<params.length;i++){var tmp=params[i].split("=");queryParams[tmp[0]]=unescape(tmp[1])}return queryParams},safeApply:function(fn){var phase=this.$root.$$phase;"$apply"==phase||"$digest"==phase?fn&&"function"==typeof fn&&fn():this.$apply(fn)}}}),AppServices.Directives.directive("ugValidate",["$rootScope",function(){return{scope:!0,restrict:"A",require:"ng-model",replace:!0,link:function(scope,element,attrs,ctrl){var validate=function(){var id=element.attr("id"),validator=id+"-validator",title=element.attr("title");if(title=title&&title.length?title:"Please enter data",$("#"+validator).remove(),ctrl.$valid)element.removeClass("has-error"),$("#"+validator).remove();else{var validatorElem='<div id="'+validator+'"><span  class="validator-error-message">'+title+"</span></div>";$("#"+id).after(validatorElem),element.addClass("has-error")}},firing=!1;element.bind("blur",function(){validate(scope,element,attrs,ctrl)}).bind("input",function(){firing||(firing=!0,setTimeout(function(){validate(scope,element,attrs,ctrl),firing=!1},500))})}}}]),AppServices.Controllers.controller("GroupsActivitiesCtrl",["ug","$scope","$rootScope","$location",function(ug,$scope,$rootScope,$location){return $scope.activitiesSelected="active",$rootScope.selectedGroup?($rootScope.selectedGroup.activities=[],void $rootScope.selectedGroup.getActivities(function(err){err||$rootScope.$$phase||$rootScope.$apply()})):void $location.path("/groups")}]),AppServices.Controllers.controller("GroupsCtrl",["ug","$scope","$rootScope","$location","$route",function(ug,$scope,$rootScope,$location,$route){$scope.groupsCollection={},$rootScope.selectedGroup={},$scope.previous_display="none",$scope.next_display="none",$scope.hasGroups=!1,$scope.newGroup={path:"",title:""},ug.getGroups(),$scope.currentGroupsPage={},$scope.selectGroupPage=function(route){$scope.currentGroupsPage.template=$route.routes[route].templateUrl,$scope.currentGroupsPage.route=route},$scope.newGroupDialog=function(modalId){$scope.newGroup.path&&$scope.newGroup.title?(ug.createGroup($scope.removeFirstSlash($scope.newGroup.path),$scope.newGroup.title),$scope.hideModal(modalId),$scope.newGroup={path:"",title:""}):$rootScope.$broadcast("alert","error","Missing required information.")},$scope.deleteGroupsDialog=function(modalId){$scope.deleteEntities($scope.groupsCollection,"group-deleted","error deleting group"),$scope.hideModal(modalId),$scope.newGroup={path:"",title:""}},$scope.$on("group-deleted",function(){$rootScope.$broadcast("alert","success","Group deleted successfully.")}),$scope.$on("group-deleted-error",function(){ug.getGroups()}),$scope.$on("groups-create-success",function(){$rootScope.$broadcast("alert","success","Group created successfully.")}),$scope.$on("groups-create-error",function(){$rootScope.$broadcast("alert","error","Error creating group. Make sure you don't have spaces in the path.")}),$scope.$on("groups-received",function(event,groups){$scope.groupBoxesSelected=!1,$scope.groupsCollection=groups,$scope.newGroup.path="",$scope.newGroup.title="",!(groups._list.length>0)||$rootScope.selectedGroup._data&&groups._list.some(function(group){return $rootScope.selectedGroup._data.uuid===group._data.uuid})||$scope.selectGroup(groups._list[0]._data.uuid),$scope.hasGroups=groups._list.length>0,$scope.received=!0,$scope.checkNextPrev(),$scope.applyScope()}),$scope.resetNextPrev=function(){$scope.previous_display="none",$scope.next_display="none"},$scope.checkNextPrev=function(){$scope.resetNextPrev(),$scope.groupsCollection.hasPreviousPage()&&($scope.previous_display="block"),$scope.groupsCollection.hasNextPage()&&($scope.next_display="block")},$scope.selectGroup=function(uuid){$rootScope.selectedGroup=$scope.groupsCollection.getEntityByUUID(uuid),$scope.currentGroupsPage.template="groups/groups-details.html",$scope.currentGroupsPage.route="/groups/details",$rootScope.$broadcast("group-selection-changed",$rootScope.selectedGroup)},$scope.getPrevious=function(){$scope.groupsCollection.getPreviousPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting previous page of groups"),$scope.checkNextPrev(),$scope.applyScope()})},$scope.getNext=function(){$scope.groupsCollection.getNextPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting next page of groups"),$scope.checkNextPrev(),$scope.applyScope()})},$scope.$on("group-deleted",function(){$route.reload(),$scope.master=""})}]),AppServices.Controllers.controller("GroupsDetailsCtrl",["ug","$scope","$rootScope","$location",function(ug,$scope,$rootScope,$location){var selectedGroup=$rootScope.selectedGroup.clone();return $scope.detailsSelected="active",$scope.json=selectedGroup._json||selectedGroup._data.stringifyJSON(),$scope.group=selectedGroup._data,$scope.group.path=0!=$scope.group.path.indexOf("/")?"/"+$scope.group.path:$scope.group.path,$scope.group.title=$scope.group.title,$rootScope.selectedGroup?($scope.$on("group-selection-changed",function(evt,selectedGroup){$scope.group.path=0!=selectedGroup._data.path.indexOf("/")?"/"+selectedGroup._data.path:selectedGroup._data.path,$scope.group.title=selectedGroup._data.title,$scope.detailsSelected="active",$scope.json=selectedGroup._json||selectedGroup._data.stringifyJSON()}),void($rootScope.saveSelectedGroup=function(){$rootScope.selectedGroup._data.title=$scope.group.title,$rootScope.selectedGroup._data.path=$scope.removeFirstSlash($scope.group.path),$rootScope.selectedGroup.save(function(err){err?$rootScope.$broadcast("alert","error","error saving group"):$rootScope.$broadcast("alert","success","group saved")})})):void $location.path("/groups")}]),AppServices.Controllers.controller("GroupsMembersCtrl",["ug","$scope","$rootScope","$location",function(ug,$scope,$rootScope,$location){return $scope.membersSelected="active",$scope.previous_display="none",$scope.next_display="none",$scope.user="",$scope.master="",$scope.hasMembers=!1,ug.getUsersTypeAhead(),$scope.usersTypeaheadValues=[],$scope.$on("users-typeahead-received",function(event,users){$scope.usersTypeaheadValues=users,$scope.applyScope()}),$scope.addGroupToUserDialog=function(modalId){if($scope.user){var path=$rootScope.selectedGroup.get("path");ug.addUserToGroup($scope.user.uuid,path),$scope.user="",$scope.hideModal(modalId)}else $rootScope.$broadcast("alert","error","Please select a user.")},$scope.removeUsersFromGroupDialog=function(modalId){$scope.deleteEntities($scope.groupsCollection.users,"group-update-received","Error removing user from group"),$scope.hideModal(modalId)},$scope.get=function(){if($rootScope.selectedGroup.get){var options={type:"groups/"+$rootScope.selectedGroup.get("path")+"/users"};$scope.groupsCollection.addCollection("users",options,function(err){$scope.groupMembersSelected=!1,err?$rootScope.$broadcast("alert","error","error getting users for group"):($scope.hasMembers=$scope.groupsCollection.users._list.length>0,$scope.checkNextPrev(),$scope.applyScope())})}},$scope.resetNextPrev=function(){$scope.previous_display="none",$scope.next_display="none"},$scope.checkNextPrev=function(){$scope.resetNextPrev(),$scope.groupsCollection.users.hasPreviousPage()&&($scope.previous_display="block"),$scope.groupsCollection.users.hasNextPage()&&($scope.next_display="block")},$rootScope.selectedGroup?($scope.get(),$scope.getPrevious=function(){$scope.groupsCollection.users.getPreviousPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting previous page of users"),$scope.checkNextPrev(),$rootScope.$$phase||$rootScope.$apply()})},$scope.getNext=function(){$scope.groupsCollection.users.getNextPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting next page of users"),$scope.checkNextPrev(),$rootScope.$$phase||$rootScope.$apply()})},$scope.$on("group-update-received",function(){$scope.get()}),void $scope.$on("user-added-to-group-received",function(){$scope.get()})):void $location.path("/groups")}]),AppServices.Controllers.controller("GroupsRolesCtrl",["ug","$scope","$rootScope","$location",function(ug,$scope,$rootScope,$location){return $scope.rolesSelected="active",$scope.roles_previous_display="none",$scope.roles_next_display="none",$scope.name="",$scope.master="",$scope.hasRoles=!1,$scope.hasPermissions=!1,$scope.permissions={},$scope.addGroupToRoleDialog=function(modalId){if($scope.name){var path=$rootScope.selectedGroup.get("path");ug.addGroupToRole(path,$scope.name),$scope.hideModal(modalId),$scope.name=""}else $rootScope.$broadcast("alert","error","You must specify a role name.")},$scope.leaveRoleDialog=function(modalId){for(var path=$rootScope.selectedGroup.get("path"),roles=$scope.groupsCollection.roles._list,i=0;i<roles.length;i++)roles[i].checked&&ug.removeUserFromGroup(path,roles[i]._data.name);$scope.hideModal(modalId)},$scope.addGroupPermissionDialog=function(modalId){if($scope.permissions.path){var permission=$scope.createPermission(null,null,$scope.removeFirstSlash($scope.permissions.path),$scope.permissions),path=$rootScope.selectedGroup.get("path");ug.newGroupPermission(permission,path),$scope.hideModal(modalId),$scope.permissions&&($scope.permissions={})}else $rootScope.$broadcast("alert","error","You must specify a name for the permission.")},$scope.deleteGroupPermissionDialog=function(modalId){for(var path=$rootScope.selectedGroup.get("path"),permissions=$rootScope.selectedGroup.permissions,i=0;i<permissions.length;i++)permissions[i].checked&&ug.deleteGroupPermission(permissions[i].perm,path);$scope.hideModal(modalId)},$scope.resetNextPrev=function(){$scope.roles_previous_display="none",$scope.roles_next_display="none",$scope.permissions_previous_display="none",$scope.permissions_next_display="none"},$scope.resetNextPrev(),$scope.checkNextPrevRoles=function(){$scope.resetNextPrev(),$scope.groupsCollection.roles.hasPreviousPage()&&($scope.roles_previous_display="block"),$scope.groupsCollection.roles.hasNextPage()&&($scope.roles_next_display="block")},$scope.checkNextPrevPermissions=function(){$scope.groupsCollection.permissions.hasPreviousPage()&&($scope.permissions_previous_display="block"),$scope.groupsCollection.permissions.hasNextPage()&&($scope.permissions_next_display="block")},$scope.getRoles=function(){var path=$rootScope.selectedGroup.get("path"),options={type:"groups/"+path+"/roles"};$scope.groupsCollection.addCollection("roles",options,function(err){$scope.groupRoleSelected=!1,err?$rootScope.$broadcast("alert","error","error getting roles for group"):($scope.hasRoles=$scope.groupsCollection.roles._list.length>0,$scope.checkNextPrevRoles(),$scope.applyScope())})},$scope.getPermissions=function(){$rootScope.selectedGroup.permissions=[],$rootScope.selectedGroup.getPermissions(function(err){$scope.groupPermissionsSelected=!1,$scope.hasPermissions=$scope.selectedGroup.permissions.length,err||$scope.applyScope()})},$scope.getPreviousRoles=function(){$scope.groupsCollection.roles.getPreviousPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting previous page of roles"),$scope.checkNextPrevRoles(),$scope.applyScope()})},$scope.getNextRoles=function(){$scope.groupsCollection.roles.getNextPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting next page of roles"),$scope.checkNextPrevRoles(),$scope.applyScope()})},$scope.getPreviousPermissions=function(){$scope.groupsCollection.permissions.getPreviousPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting previous page of permissions"),$scope.checkNextPrevPermissions(),$scope.applyScope()})},$scope.getNextPermissions=function(){$scope.groupsCollection.permissions.getNextPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting next page of permissions"),$scope.checkNextPrevPermissions(),$scope.applyScope()})},$scope.$on("role-update-received",function(){$scope.getRoles()}),$scope.$on("permission-update-received",function(){$scope.getPermissions()}),$scope.$on("groups-received",function(evt,data){$scope.groupsCollection=data,$scope.getRoles(),$scope.getPermissions()}),$rootScope.selectedGroup?(ug.getRolesTypeAhead(),void ug.getGroups()):void $location.path("/groups")}]),AppServices.Controllers.controller("ForgotPasswordCtrl",["ug","$scope","$rootScope","$location","$sce","utility",function(ug,$scope,$rootScope,$location,$sce){$rootScope.activeUI&&$location.path("/"),$scope.forgotPWiframeURL=$sce.trustAsResourceUrl($scope.apiUrl+"/management/users/resetpw")}]),AppServices.Controllers.controller("LoginCtrl",["ug","$scope","$rootScope","$routeParams","$location","utility",function(ug,$scope,$rootScope,$routeParams,$location){$scope.loading=!1,$scope.login={},$scope.activation={},$scope.requiresDeveloperKey=$scope.options.client.requiresDeveloperKey||!1,!$scope.requiresDeveloperKey&&$scope.options.client.apiKey&&ug.setClientProperty("developerkey",$scope.options.client.apiKey),$rootScope.gotoForgotPasswordPage=function(){$location.path("/forgot-password")},$rootScope.gotoSignUp=function(){$location.path("/register")},$scope.login=function(){var username=$scope.login.username,password=$scope.login.password;$scope.loginMessage="",$scope.loading=!0,$scope.requiresDeveloperKey&&ug.setClientProperty("developerkey",$scope.login.developerkey),ug.orgLogin(username,password)},$scope.$on("loginFailed",function(){$scope.loading=!1,ug.setClientProperty("developerkey",null),$scope.loginMessage="Error: the username / password combination was not valid",$scope.applyScope()}),$scope.logout=function(){ug.logout(),ug.setClientProperty("developerkey",null),$scope.use_sso?window.location=$rootScope.urls().LOGOUT_URL+"?redirect=no&callback="+encodeURIComponent($location.absUrl().split("?")[0]):($location.path("/login"),$scope.applyScope())},$rootScope.$on("userNotAuthenticated",function(){"/forgot-password"!==$location.path()&&($location.path("/login"),$scope.logout()),$scope.applyScope()}),$scope.$on("loginSuccesful",function(){$scope.loading=!1,$scope.login={},$location.path("/login"===$rootScope.currentPath||"/login/loading"===$rootScope.currentPath||"undefined"==typeof $rootScope.currentPath?"/org-overview":$rootScope.currentPath),$scope.applyScope()}),$scope.resendActivationLink=function(modalId){var id=$scope.activation.id;ug.resendActivationLink(id),$scope.activation={},$scope.hideModal(modalId)},$scope.$on("resend-activate-success",function(){$scope.activationId="",$scope.$apply(),$rootScope.$broadcast("alert","success","Activation link sent successfully.")}),$scope.$on("resend-activate-error",function(){$rootScope.$broadcast("alert","error","Activation link failed to send.")})}]),AppServices.Controllers.controller("LogoutCtrl",["ug","$scope","$rootScope","$routeParams","$location","utility",function(ug,$scope,$rootScope,$routeParams,$location){ug.logout(),$scope.use_sso?window.location=$rootScope.urls().LOGOUT_URL+"?callback="+encodeURIComponent($location.absUrl().split("?")[0]):($location.path("/login"),$scope.applyScope())}]),AppServices.Controllers.controller("RegisterCtrl",["ug","$scope","$rootScope","$routeParams","$location","utility",function(ug,$scope,$rootScope,$routeParams,$location){$rootScope.activeUI&&$location.path("/");var init=function(){$scope.registeredUser={}};init(),$scope.cancel=function(){$location.path("/")},$scope.register=function(){var user=$scope.registeredUser.clone();user.password===user.confirmPassword?ug.signUpUser(user.orgName,user.userName,user.name,user.email,user.password):$rootScope.$broadcast("alert","error","Passwords do not match."+name)},$scope.$on("register-error",function(event,data){$scope.signUpSuccess=!1,$rootScope.$broadcast("alert","error","Error registering: "+(data&&data.error_description?data.error_description:name))}),$scope.$on("register-success",function(){$scope.registeredUser={},$scope.signUpSuccess=!0,init(),$scope.$apply()})}]),AppServices.Directives.directive("menu",["$location","$rootScope","$log",function($location,$rootScope,$log){return{link:function(scope,lElement,attrs){function setActiveElement(ele,locationPath,$rootScope,isParentClick){if(ele){ele.removeClass("active");var menuItem,parentMenuItem,newActiveElement=ele.parent().find('a[href*="#!'+locationPath+'"]');if(0===newActiveElement.length)parentMenuItem=ele;else{menuItem=newActiveElement.parent(),menuItem.hasClass("option")?parentMenuItem=menuItem[0]:1===menuItem.size()?(parentMenuItem=newActiveElement.parent().parent().parent(),parentMenuItem.addClass("active")):(parentMenuItem=menuItem[0],menuItem=menuItem[1]);try{var menuItemCompare=parentMenuItem[0]||parentMenuItem;ele[0]!==menuItemCompare&&isParentClick&&ele.find("ul")[0]&&(ele.find("ul")[0].style.height=0);var subMenuSizer=angular.element(parentMenuItem).find(".nav-list")[0];if(subMenuSizer){var heightChecker,clientHeight=subMenuSizer.getAttribute("data-height"),heightCounter=1;clientHeight||heightChecker?(menuItem.addClass("active"),subMenuSizer.style.height=clientHeight+"px"):heightChecker=setInterval(function(){var tempHeight=subMenuSizer.getAttribute("data-height")||subMenuSizer.clientHeight;heightCounter=subMenuSizer.clientHeight,0===heightCounter&&(heightCounter=1),"string"==typeof tempHeight&&(tempHeight=parseInt(tempHeight,10)),tempHeight>0&&heightCounter===tempHeight&&(subMenuSizer.setAttribute("data-height",tempHeight),menuItem.addClass("active"),subMenuSizer.style.height=tempHeight+"px",clearInterval(heightChecker)),heightCounter=tempHeight},20),$rootScope.menuExecute=!0}else menuItem.addClass("active")}catch(e){$log.error("Problem calculating size of menu",e)}}return{menuitem:menuItem,parentMenuItem:parentMenuItem}}}function setupMenuState(){if(menuContext=attrs.menu,parentMenuItems=lElement.find("li.option"),0!==lElement.find("li.option.active").length&&($rootScope[menuContext+"Parent"]=lElement.find("li.option.active")),activeParentElement=$rootScope[menuContext+"Parent"]||null,activeParentElement&&(activeParentElement=angular.element(activeParentElement)),menuItems=lElement.find("li.option li"),locationPath=$location.path(),activeParentElement&&(activeMenuElement=angular.element(activeParentElement),activeMenuElement=activeMenuElement.find("li.active"),activeMenuElement.removeClass("active"),activeParentElement.find("a")[0])){subMenuContext=activeParentElement.find("a")[0].href.split("#!")[1];var tempMenuContext=subMenuContext.split("/");subMenuContext="/"+tempMenuContext[1],tempMenuContext.length>2&&(subMenuContext+="/"+tempMenuContext[2])}var activeElements;""!==locationPath&&-1===locationPath.indexOf(subMenuContext)?(activeElements=setActiveElement(activeParentElement,locationPath,scope),activeElements&&($rootScope[menuContext+"Parent"]=activeElements.parentMenuItem,$rootScope[menuContext+"Menu"]=activeElements.menuitem)):setActiveElement(activeParentElement,subMenuContext,scope)}var menuContext,parentMenuItems,activeParentElement,menuItems,activeMenuElement,locationPath,subMenuContext,bound=!1;setTimeout(setupMenuState,500),scope.$on("$routeChangeSuccess",function(){setTimeout(function(){setupMenuState(),bound||(bound=!0,parentMenuItems.bind("click",function(cevent){var previousParentSelection=angular.element($rootScope[menuContext+"Parent"]),targetPath=angular.element(cevent.currentTarget).find("> a")[0].href.split("#!")[1];previousParentSelection.find(".nav > li").removeClass("active");var activeElements=setActiveElement(previousParentSelection,targetPath,scope,!0);$rootScope[menuContext+"Parent"]=activeElements.parentMenuItem,$rootScope[menuContext+"Menu"]=activeElements.menuitem,scope.$broadcast("menu-selection")}),menuItems.bind("click",function(cevent){var previousMenuSelection=$rootScope[menuContext+"Menu"],targetElement=cevent.currentTarget;previousMenuSelection!==targetElement&&(previousMenuSelection?angular.element(previousMenuSelection).removeClass("active"):activeMenuElement.removeClass("active"),scope.$apply(function(){angular.element($rootScope[menuContext]).addClass("active")}),$rootScope[menuContext+"Menu"]=targetElement,angular.element($rootScope[menuContext+"Parent"]).find("a")[0].setAttribute("href",angular.element(cevent.currentTarget).find("a")[0].href))}))},500)})}}}]),AppServices.Directives.directive("timeFilter",["$location","$routeParams","$rootScope",function($location,$routeParams,$rootScope){return{restrict:"A",transclude:!0,template:'<li ng-repeat="time in timeFilters" class="filterItem"><a ng-click="changeTimeFilter(time)">{{time.label}}</a></li>',link:function(scope,lElement,attrs){var menuContext=attrs.filter;scope.changeTimeFilter=function(newTime){$rootScope.selectedtimefilter=newTime,$routeParams.timeFilter=newTime.value},lElement.bind("click",function(cevent){menuBindClick(scope,lElement,cevent,menuContext)})}}}]),AppServices.Directives.directive("chartFilter",["$location","$routeParams","$rootScope",function($location,$routeParams,$rootScope){return{restrict:"ACE",scope:"=",template:'<li ng-repeat="chart in chartCriteriaOptions" class="filterItem"><a ng-click="changeChart(chart)">{{chart.chartName}}</a></li>',link:function(scope,lElement,attrs){var menuContext=attrs.filter;scope.changeChart=function(newChart){$rootScope.selectedChartCriteria=newChart,$routeParams.currentCompare="NOW",$routeParams[newChart.type+"ChartFilter"]=newChart.chartCriteriaId},lElement.bind("click",function(cevent){menuBindClick(scope,lElement,cevent,menuContext)})}}}]),AppServices.Directives.directive("orgMenu",["$location","$routeParams","$rootScope","ug",function($location,$routeParams,$rootScope,ug){return{restrict:"ACE",scope:"=",replace:!0,templateUrl:"menus/orgMenu.html",link:function(scope){scope.orgChange=function(orgName){var oldOrg=ug.get("orgName");ug.set("orgName",orgName),$rootScope.currentOrg=orgName,$location.path("/org-overview"),$rootScope.$broadcast("org-changed",oldOrg,orgName)},scope.$on("change-org",function(args,org){scope.orgChange(org)})}}}]),AppServices.Directives.directive("appMenu",["$location","$routeParams","$rootScope","ug",function($location,$routeParams,$rootScope,ug){return{restrict:"ACE",scope:"=",replace:!0,templateUrl:"menus/appMenu.html",link:function(scope){scope.myApp={};
 var bindApplications=function(applications){scope.applications=applications;var key,size=0;for(key in applications)applications.hasOwnProperty(key)&&size++;scope.hasApplications=Object.keys(applications).length>0,scope.myApp.currentApp||($rootScope.currentApp=scope.myApp.currentApp=ug.get("appName"));var hasApplications=Object.keys(applications).length>0;applications[scope.myApp.currentApp]||($rootScope.currentApp=scope.myApp.currentApp=hasApplications?applications[Object.keys(applications)[0]].name:""),setTimeout(function(){scope.hasApplications?scope.hideModal("newApplication"):scope.showModal("newApplication")},1e3)};scope.appChange=function(newApp){var oldApp=scope.myApp.currentApp;ug.set("appName",newApp),$rootScope.currentApp=scope.myApp.currentApp=newApp,$rootScope.$broadcast("app-changed",oldApp,newApp)},scope.$on("app-initialized",function(){bindApplications(scope.applications),scope.applyScope()}),scope.$on("applications-received",function(event,applications){bindApplications(applications),scope.applyScope()}),scope.$on("applications-created",function(evt,applications,name){$rootScope.$broadcast("alert","info",'New application "'+scope.newApp.name+'" created!'),scope.appChange(name),$location.path("/getting-started/setup"),scope.newApp.name=""}),scope.newApplicationDialog=function(modalId){var createNewApp=function(){var found=!1;if(scope.applications)for(var app in scope.applications)if(app===scope.newApp.name.toLowerCase()){found=!0;break}return scope.newApp.name&&!found?ug.createApplication(scope.newApp.name):$rootScope.$broadcast("alert","error",found?"Application already exists.":"You must specify a name."),found};scope.hasCreateApplicationError=createNewApp(),scope.hasCreateApplicationError||scope.applyScope(),scope.hideModal(modalId)},scope.applications&&bindApplications(scope.applications)}}}]),AppServices.Controllers.controller("OrgOverviewCtrl",["ug","help","$scope","$rootScope","$routeParams","$location",function(ug,help,$scope,$rootScope){var init=function(oldOrg){var orgName=$scope.currentOrg,orgUUID="";return orgName&&$scope.organizations[orgName]?(orgUUID=$scope.organizations[orgName].uuid,$scope.currentOrganization={name:orgName,uuid:orgUUID},$scope.applications=[{name:"...",uuid:"..."}],$scope.orgAdministrators=[],$scope.activities=[],$scope.orgAPICredentials={client_id:"...",client_secret:"..."},$scope.admin={},$scope.newApp={},ug.getApplications(),ug.getOrgCredentials(),ug.getAdministrators(),void ug.getFeed()):(console.error("Your current user is not authenticated for this organization."),void setTimeout(function(){$rootScope.$broadcast("change-org",oldOrg||$scope.organizations[Object.keys($scope.organizations)[0]].name)},1e3))};$scope.$on("org-changed",function(args,oldOrg){init(oldOrg)}),$scope.$on("app-initialized",function(){init()}),$scope.regenerateCredentialsDialog=function(modalId){$scope.orgAPICredentials={client_id:"regenerating...",client_secret:"regenerating..."},ug.regenerateOrgCredentials(),$scope.hideModal(modalId)},$scope.newAdministratorDialog=function(modalId){$scope.admin.email?(ug.createAdministrator($scope.admin.email),$scope.hideModal(modalId),$rootScope.$broadcast("alert","success","Administrator created successfully.")):$rootScope.$broadcast("alert","error","You must specify an email address.")},$scope.$on("applications-received",function(event,applications){$scope.applications=applications,$scope.applyScope()}),$scope.$on("administrators-received",function(event,administrators){$scope.orgAdministrators=administrators,$scope.applyScope()}),$scope.$on("org-creds-updated",function(event,credentials){$scope.orgAPICredentials=credentials,$scope.applyScope()}),$scope.$on("feed-received",function(event,feed){$scope.activities=feed,$scope.applyScope()}),$scope.activeUI&&init()}]),AppServices.Controllers.controller("AccountCtrl",["$scope","$rootScope","ug","utility","$route",function($scope,$rootScope,ug,utility,$route){$scope.currentAccountPage={};var route=$scope.use_sso?"/profile/organizations":"/profile/profile";$scope.currentAccountPage.template=$route.routes[route].templateUrl,$scope.currentAccountPage.route=route,$scope.applyScope(),$scope.selectAccountPage=function(route){$scope.currentAccountPage.template=$route.routes[route].templateUrl,$scope.currentAccountPage.route=route}}]),AppServices.Controllers.controller("OrgCtrl",["$scope","$rootScope","ug","utility",function($scope,$rootScope,ug){$scope.org={},$scope.currentOrgPage={};var createOrgsArray=function(){var orgs=[];for(var org in $scope.organizations)orgs.push($scope.organizations[org]);$scope.orgs=orgs,$scope.selectOrganization(orgs[0])};$scope.selectOrganization=function(org){org.usersArray=[];for(var user in org.users)org.usersArray.push(org.users[user]);org.applicationsArray=[];for(var app in org.applications)org.applicationsArray.push({name:app.replace(org.name+"/",""),uuid:org.applications[app]});return $scope.selectedOrg=org,$scope.applyScope(),!1},$scope.addOrganization=function(modalId){$scope.hideModal(modalId),ug.addOrganization($rootScope.currentUser,$scope.org.name)},$scope.$on("user-add-org-success",function(){$scope.org={},$scope.applyScope(),ug.reAuthenticate($rootScope.userEmail,"org-reauthenticate"),$rootScope.$broadcast("alert","success","successfully added the new organization.")}),$scope.$on("user-add-org-error",function(){$rootScope.$broadcast("alert","error","An error occurred attempting to add the organization.")}),$scope.$on("org-reauthenticate-success",function(){createOrgsArray(),$scope.applyScope()}),$scope.doesOrgHaveUsers=function(org){var test=org.usersArray.length>1;return test},$scope.leaveOrganization=function(org){ug.leaveOrganization($rootScope.currentUser,org)},$scope.$on("user-leave-org-success",function(){ug.reAuthenticate($rootScope.userEmail,"org-reauthenticate"),$rootScope.$broadcast("alert","success","User has left the selected organization(s).")}),$scope.$on("user-leave-org-error",function(){$rootScope.$broadcast("alert","error","An error occurred attempting to leave the selected organization(s).")}),createOrgsArray()}]),AppServices.Controllers.controller("ProfileCtrl",["$scope","$rootScope","ug","utility",function($scope,$rootScope,ug){$scope.loading=!1,$scope.saveUserInfo=function(){$scope.loading=!0,ug.updateUser($scope.user)},$scope.$on("user-update-error",function(){$scope.loading=!1,$rootScope.$broadcast("alert","error","Error updating user info")}),$scope.$on("user-update-success",function(){$scope.loading=!1,$rootScope.$broadcast("alert","success","Profile information updated successfully!"),$scope.user.oldPassword&&"undefined"!=$scope.user.newPassword&&ug.resetUserPassword($scope.user)}),$scope.$on("user-reset-password-success",function(){$rootScope.$broadcast("alert","success","Password updated successfully!"),$scope.user=$rootScope.currentUser.clone()}),$scope.$on("app-initialized",function(){$scope.user=$rootScope.currentUser.clone()}),$rootScope.activeUI&&($scope.user=$rootScope.currentUser.clone(),$scope.applyScope())}]),AppServices.Controllers.controller("RolesCtrl",["ug","$scope","$rootScope","$location","$route",function(ug,$scope,$rootScope,$location,$route){$scope.rolesCollection={},$rootScope.selectedRole={},$scope.previous_display="none",$scope.next_display="none",$scope.roles_check_all="",$scope.rolename="",$scope.hasRoles=!1,$scope.newrole={},$scope.currentRolesPage={},$scope.selectRolePage=function(route){$scope.currentRolesPage.template=$route.routes[route].templateUrl,$scope.currentRolesPage.route=route},ug.getRoles(),$scope.newRoleDialog=function(modalId){$scope.newRole.name?(ug.createRole($scope.newRole.name,$scope.newRole.title),$rootScope.$broadcast("alert","success","Role created successfully."),$scope.hideModal(modalId),$scope.newRole={}):$rootScope.$broadcast("alert","error","You must specify a role name.")},$scope.deleteRoleDialog=function(modalId){$scope.deleteEntities($scope.rolesCollection,"role-deleted","error deleting role"),$scope.hideModal(modalId)},$scope.$on("role-deleted",function(){$rootScope.$broadcast("alert","success","Role deleted successfully."),$scope.master="",$scope.newRole={}}),$scope.$on("role-deleted-error",function(){ug.getRoles()}),$scope.$on("roles-received",function(event,roles){$scope.rolesSelected=!1,$scope.rolesCollection=roles,$scope.newRole={},roles._list.length>0&&($scope.hasRoles=!0,$scope.selectRole(roles._list[0]._data.uuid)),$scope.checkNextPrev(),$scope.applyScope()}),$scope.resetNextPrev=function(){$scope.previous_display="none",$scope.next_display="none"},$scope.checkNextPrev=function(){$scope.resetNextPrev(),$scope.rolesCollection.hasPreviousPage()&&($scope.previous_display="block"),$scope.rolesCollection.hasNextPage()&&($scope.next_display="block")},$scope.selectRole=function(uuid){$rootScope.selectedRole=$scope.rolesCollection.getEntityByUUID(uuid),$scope.currentRolesPage.template="roles/roles-settings.html",$scope.currentRolesPage.route="/roles/settings",$rootScope.$broadcast("role-selection-changed",$rootScope.selectedRole)},$scope.getPrevious=function(){$scope.rolesCollection.getPreviousPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting previous page of roles"),$scope.checkNextPrev(),$scope.applyScope()})},$scope.getNext=function(){$scope.rolesCollection.getNextPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting next page of roles"),$scope.checkNextPrev(),$scope.applyScope()})}}]),AppServices.Controllers.controller("RolesGroupsCtrl",["ug","$scope","$rootScope","$location",function(ug,$scope,$rootScope,$location){return $scope.groupsSelected="active",$scope.previous_display="none",$scope.next_display="none",$scope.path="",$scope.hasGroups=!1,ug.getGroupsTypeAhead(),$scope.groupsTypeaheadValues=[],$scope.$on("groups-typeahead-received",function(event,groups){$scope.groupsTypeaheadValues=groups,$scope.applyScope()}),$scope.addRoleToGroupDialog=function(modalId){if($scope.path){var name=$rootScope.selectedRole._data.uuid;ug.addGroupToRole($scope.path,name),$scope.hideModal(modalId),$scope.path="",$scope.title=""}else $rootScope.$broadcast("alert","error","You must specify a group.")},$scope.setRoleModal=function(group){$scope.path=group.path,$scope.title=group.title},$scope.removeGroupFromRoleDialog=function(modalId){for(var roleName=$rootScope.selectedRole._data.uuid,groups=$scope.rolesCollection.groups._list,i=0;i<groups.length;i++)groups[i].checked&&ug.removeUserFromGroup(groups[i]._data.path,roleName);$scope.hideModal(modalId)},$scope.get=function(){var options={type:"roles/"+$rootScope.selectedRole._data.name+"/groups",qs:{ql:"order by title"}};$scope.rolesCollection.addCollection("groups",options,function(err){$scope.roleGroupsSelected=!1,err?$rootScope.$broadcast("alert","error","error getting groups for role"):($scope.hasGroups=$scope.rolesCollection.groups._list.length,$scope.checkNextPrev(),$scope.applyScope())})},$scope.resetNextPrev=function(){$scope.previous_display="none",$scope.next_display="none"},$scope.checkNextPrev=function(){$scope.resetNextPrev(),$scope.rolesCollection.groups.hasPreviousPage()&&($scope.previous_display="block"),$scope.rolesCollection.groups.hasNextPage()&&($scope.next_display="block")},$rootScope.selectedRole?($scope.get(),$scope.getPrevious=function(){$scope.rolesCollection.groups.getPreviousPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting previous page of groups"),$scope.checkNextPrev(),$scope.applyScope()})},$scope.getNext=function(){$scope.rolesCollection.groups.getNextPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting next page of groups"),$scope.checkNextPrev(),$scope.applyScope()})},void $scope.$on("role-update-received",function(){$scope.get()})):void $location.path("/roles")}]),AppServices.Controllers.controller("RolesSettingsCtrl",["ug","$scope","$rootScope","$location",function(ug,$scope,$rootScope,$location){$scope.settingsSelected="active",$scope.hasSettings=!1;var init=function(){return $rootScope.selectedRole?($scope.permissions={},$scope.permissions.path="",$scope.permissions&&($scope.permissions.getPerm=!1,$scope.permissions.postPerm=!1,$scope.permissions.putPerm=!1,$scope.permissions.deletePerm=!1),$scope.role=$rootScope.selectedRole.clone(),$scope.getPermissions(),$scope.applyScope(),void 0):void $location.path("/roles")};$scope.$on("role-selection-changed",function(){init()}),$scope.$on("permission-update-received",function(){$scope.getPermissions()}),$scope.$on("role-selection-changed",function(){$scope.getPermissions()}),$scope.addRolePermissionDialog=function(modalId){if($scope.permissions.path){var permission=$scope.createPermission(null,null,$scope.permissions.path,$scope.permissions),name=$scope.role._data.name;ug.newRolePermission(permission,name),$scope.hideModal(modalId),init()}else $rootScope.$broadcast("alert","error","You must specify a name for the permission.")},$scope.deleteRolePermissionDialog=function(modalId){for(var name=$scope.role._data.name,permissions=$scope.role.permissions,i=0;i<permissions.length;i++)permissions[i].checked&&ug.deleteRolePermission(permissions[i].perm,name);$scope.hideModal(modalId)},$scope.getPermissions=function(){$rootScope.selectedRole.getPermissions(function(err,data){$scope.role.permissions=$rootScope.selectedRole.permissions.clone(),$scope.permissionsSelected=!1,err?$rootScope.$broadcast("alert","error","error getting permissions"):($scope.hasSettings=data.data.length,$scope.applyScope())})},$scope.updateInactivity=function(){$rootScope.selectedRole._data.inactivity=$scope.role._data.inactivity,$rootScope.selectedRole.save(function(err){err?$rootScope.$broadcast("alert","error","error saving inactivity value"):($rootScope.$broadcast("alert","success","inactivity value was updated"),init())})},init()}]),AppServices.Controllers.controller("RolesUsersCtrl",["ug","$scope","$rootScope","$location",function(ug,$scope,$rootScope,$location){return $scope.usersSelected="active",$scope.previous_display="none",$scope.next_display="none",$scope.user={},$scope.master="",$scope.hasUsers=!1,ug.getUsersTypeAhead(),$scope.usersTypeaheadValues=[],$scope.$on("users-typeahead-received",function(event,users){$scope.usersTypeaheadValues=users,$scope.applyScope()}),$scope.addRoleToUserDialog=function(modalId){if($scope.user.uuid){var roleName=$rootScope.selectedRole._data.uuid;ug.addUserToRole($scope.user.uuid,roleName),$scope.hideModal(modalId),$scope.user=null}else $rootScope.$broadcast("alert","error","You must specify a user.")},$scope.removeUsersFromGroupDialog=function(modalId){for(var roleName=$rootScope.selectedRole._data.uuid,users=$scope.rolesCollection.users._list,i=0;i<users.length;i++)users[i].checked&&ug.removeUserFromRole(users[i]._data.uuid,roleName);$scope.hideModal(modalId)},$scope.get=function(){var options={type:"roles/"+$rootScope.selectedRole._data.name+"/users"};$scope.rolesCollection.addCollection("users",options,function(err){$scope.roleUsersSelected=!1,err?$rootScope.$broadcast("alert","error","error getting users for role"):($scope.hasUsers=$scope.rolesCollection.users._list.length,$scope.checkNextPrev(),$scope.applyScope())})},$scope.resetNextPrev=function(){$scope.previous_display="none",$scope.next_display="none"},$scope.checkNextPrev=function(){$scope.resetNextPrev(),$scope.rolesCollection.users.hasPreviousPage()&&($scope.previous_display="block"),$scope.rolesCollection.users.hasNextPage()&&($scope.next_display="block")},$rootScope.selectedRole?($scope.get(),$scope.getPrevious=function(){$scope.rolesCollection.users.getPreviousPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting previous page of users"),$scope.checkNextPrev(),$scope.applyScope()})},$scope.getNext=function(){$scope.rolesCollection.users.getNextPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting next page of users"),$scope.checkNextPrev(),$scope.applyScope()})},void $scope.$on("role-update-received",function(){$scope.get()})):void $location.path("/roles")}]),AppServices.Controllers.controller("ShellCtrl",["ug","$scope","$log","$sce",function(ug,$scope,$log,$sce){function encodePathString(path,returnParams){for(var i=0,segments=new Array,payload=null;i<path.length;){var c=path.charAt(i);if("{"!=c)if("/"!=c){if(" "==c){i++;for(var payload_start=i;i<path.length;)c=path.charAt(i),i++;if(i>payload_start){var json=path.substring(payload_start,i).trim();payload=JSON.parse(json)}break}i++}else{i++;for(var segment_start=i;i<path.length&&(c=path.charAt(i)," "!=c&&"/"!=c&&"{"!=c);)i++;if(i>segment_start){var segment=path.substring(segment_start,i);segments.push(segment)}}else{var bracket_start=i;i++;for(var bracket_count=1;i<path.length&&bracket_count>0;)c=path.charAt(i),"{"==c?bracket_count++:"}"==c&&bracket_count--,i++;if(i>bracket_start){var segment=path.substring(bracket_start,i);segments.push(JSON.parse(segment))}}}var newPath="";for(i=0;i<segments.length;i++){var segment=segments[i];if("string"==typeof segment)newPath+="/"+segment;else{if(i==segments.length-1){if(returnParams)return{path:newPath,params:segment,payload:payload};newPath+="?"}else newPath+=";";newPath+=encodeParams(segment)}}return returnParams?{path:newPath,params:null,payload:payload}:newPath}function encodeParams(params){var tail=[];if(params instanceof Array)for(i in params){var item=params[i];item instanceof Array&&item.length>1&&tail.push(item[0]+"="+encodeURIComponent(item[1]))}else for(var key in params)if(params.hasOwnProperty(key)){var value=params[key];if(value instanceof Array)for(i in value){var item=value[i];tail.push(key+"="+encodeURIComponent(item))}else tail.push(key+"="+encodeURIComponent(value))}return tail.join("&")}$scope.shell={input:"",output:""},$scope.submitCommand=function(){$scope.shell.input&&$scope.shell.input.length&&handleShellCommand($scope.shell.input)};var handleShellCommand=function(s){var path="",params="",shouldScroll=!1,hasMatchLength=function(expression){var res=s.match(expression);return res&&res.length>0};try{switch(!0){case hasMatchLength(/^\s*\//):path=encodePathString(s),printLnToShell(path),ug.runShellQuery("GET",path,null);break;case hasMatchLength(/^\s*get\s*\//i):path=encodePathString(s.substring(4)),printLnToShell(path),ug.runShellQuery("GET",path,null);break;case hasMatchLength(/^\s*put\s*\//i):params=encodePathString(s.substring(4),!0),printLnToShell(params.path),ug.runShellQuery("PUT",params.path,params.payload);break;case hasMatchLength(/^\s*post\s*\//i):params=encodePathString(s.substring(5),!0),printLnToShell(params.path),ug.runShellQuery("POST",params.path,params.payload);break;case hasMatchLength(/^\s*delete\s*\//i):path=encodePathString(s.substring(7)),printLnToShell(path),ug.runShellQuery("DELETE",path,null);break;case hasMatchLength(/^\s*clear|cls\s*/i):$scope.shell.output="",shouldScroll=!0;break;case hasMatchLength(/(^\s*help\s*|\?{1,2})/i):shouldScroll=!0,printLnToShell("/&lt;path&gt; - API get request"),printLnToShell("get /&lt;path&gt; - API get request"),printLnToShell("put /&lt;path&gt; {&lt;json&gt;} - API put request"),printLnToShell("post /&lt;path&gt; {&lt;json&gt;} - API post request"),printLnToShell("delete /&lt;path&gt; - API delete request"),printLnToShell("cls, clear - clear the screen"),printLnToShell("help - show this help");break;case""===s:shouldScroll=!0,printLnToShell("ok");break;default:shouldScroll=!0,printLnToShell("<strong>syntax error!</strong>")}}catch(e){$log.error(e),printLnToShell("<strong>syntax error!</strong>")}shouldScroll&&scroll()},printLnToShell=function(s){s||(s="&nbsp;"),$scope.shell.outputhidden=s;var html='<div class="shell-output-line"><div class="shell-output-line-content">'+s+"</div></div>";html+=" ";var trustedHtml=$sce.trustAsHtml(html);$scope.shell.output+=trustedHtml.toString()};$scope.$on("shell-success",function(evt,data){printLnToShell(JSON.stringify(data,null,"  ")),scroll()}),$scope.$on("shell-error",function(evt,data){printLnToShell(JSON.stringify(data,null,"  ")),scroll()});var scroll=function(){$scope.shell.output+="<hr />",$scope.applyScope(),setTimeout(function(){var myshell=$("#shell-output");myshell.animate({scrollTop:myshell[0].scrollHeight},800)},200)}}]),angular.module("appservices").run(["$templateCache",function($templateCache){"use strict";$templateCache.put("activities/activities.html",'<section class="row-fluid">\n  <div class="span12">\n    <div class="page-filters">\n      <h1 class="title" class="pull-left"><i class="pictogram title">&#128241;</i> Activities</h1>\n    </div>\n  </div>\n\n</section>\n<section class="row-fluid">\n  <div class="span12 tab-content">\n    <table class="table table-striped">\n      <tbody>\n      <tr class="table-header">\n        <td>Date</td>\n        <td></td>\n        <td>User</td>\n        <td>Content</td>\n        <td>Verb</td>\n        <td>UUID</td>\n      </tr>\n      <tr class="zebraRows" ng-repeat="activity in activities">\n        <td>{{formatDate(activity.created)}}</td>\n        <td class="gravatar20"> <img ng-src="{{activity.actor.picture}}"/>\n        </td>\n        <td>{{activity.actor.displayName}}</td>\n        <td>{{activity.content}}</td>\n        <td>{{activity.verb}}</td>\n        <td>{{activity.uuid}}</td>\n      </tr>\n      </tbody>\n    </table>\n  </div>\n</section>'),$templateCache.put("app-overview/app-overview.html",'<div class="app-overview-content" >\n  <section class="row-fluid">\n\n      <page-title title=" Summary" icon="&#128241;"></page-title>\n  <section class="row-fluid">\n      <h2 class="title" id="app-overview-title">{{currentApp}}</h2>\n  </section>\n  <section class="row-fluid">\n\n    <div class="span6">\n      <chart id="appOverview"\n             chartdata="appOverview.chart"\n             type="column"></chart>\n    </div>\n\n    <div class="span6">\n      <table class="table table-striped">\n        <tr class="table-header">\n          <td>Path</td>\n          <td>Title</td>\n        </tr>\n        <tr class="zebraRows" ng-repeat="(k,v) in collections">\n          <td>{{v.title}}</td>\n          <td>{{v.count}}</td>\n        </tr>\n      </table>\n    </div>\n\n  </section>\n</div>'),$templateCache.put("app-overview/doc-includes/android.html",'<h2>1. Integrate the SDK into your project</h2>\n<p>You can integrate Apigee features into your app by including the SDK in your project.&nbsp;&nbsp;You can do one of the following:</p>\n\n<ul class="nav nav-tabs" id="myTab">\n	<li class="active"><a data-toggle="tab" href="#existing_project">Existing project</a></li>\n	<li><a data-toggle="tab" href="#new_project">New project</a></li>\n</ul>\n\n<div class="tab-content">\n	<div class="tab-pane active" id="existing_project">\n		<a class="jumplink" name="add_the_sdk_to_an_existing_project"></a>\n		<p>If you\'ve already got&nbsp;an Android&nbsp;project, you can integrate the&nbsp;Apigee&nbsp;SDK into your project as you normally would:</p>\n		<div id="collapse">\n			<a href="#jar_collapse" class="btn" data-toggle="collapse"><i class="icon-white icon-chevron-down"></i> Details</a>			\n		</div>\n		<div id="jar_collapse" class="collapse">\n			<p>Add <code>apigee-android-&lt;version&gt;.jar</code> to your class path by doing the following:</p>\n	\n			<h3>Android 4.0 (or later) projects</h3>\n			<p>Copy the jar file into the <code>/libs</code> folder in your project.</p>\n			\n			<h3>Android 3.0 (or earlier) projects</h3>\n			<ol>\n				<li>In the&nbsp;Eclipse <strong>Package Explorer</strong>, select your application\'s project folder.</li>\n				<li>Click the&nbsp;<strong>File &gt; Properties</strong>&nbsp;menu.</li>\n				<li>In the <strong>Java Build Path</strong> section, click the <strong>Libraries</strong> tab, click <strong>Add External JARs</strong>.</li>\n				<li>Browse to <code>apigee-android-&lt;version&gt;.jar</code>, then click&nbsp;<strong>Open</strong>.</li>\n				<li>Order the <code>apigee-android-&lt;version&gt;.jar</code> at the top of the class path:\n					<ol>\n						<li>In the Eclipse <strong>Package Explorer</strong>, select your application\'s project folder.</li>\n						<li>Click the&nbsp;<strong>File &gt; Properties</strong> menu.</li>\n						<li>In the properties dialog, in the&nbsp;<strong>Java Build Path</strong> section,&nbsp;click&nbsp;the <strong>Order and Export</strong>&nbsp;tab.</li>\n						<li>\n							<p><strong>IMPORTANT:</strong> Select the checkbox for <code>apigee-android-&lt;version&gt;.jar</code>, then click the <strong>Top</strong>&nbsp;button.</p>\n						</li>\n					</ol>\n				</li>\n			</ol>\n			<div class="warning">\n				<h3>Applications using Ant</h3>\n				<p>If you are using Ant to build your application, you must also copy <code>apigee-android-&lt;version&gt;.jar</code> to the <code>/libs</code> folder in your application.</p>\n			</div>\n		</div>\n	</div>\n	<div class="tab-pane" id="new_project">\n		<a class="jumplink" name="create_a_new_project_based_on_the_SDK"></a>\n		<p>If you don\'t have a&nbsp;project yet, you can begin by using the project template included with the SDK. The template includes support for SDK features.</p>\n		<ul>\n			<li>Locate the project template in the expanded SDK. It should be at the following location:\n				<pre>&lt;sdk_root&gt;/new-project-template</pre>\n			</li>\n		</ul>\n	</div>\n</div>\n<h2>2. Update permissions in AndroidManifest.xml</h2>\n<p>Add the following Internet permissions to your application\'s <code>AndroidManifest.xml</code> file if they have not already been added. Note that with the exception of INTERNET, enabling all other permissions are optional.</p>\n<pre>\n&lt;uses-permission android:name="android.permission.INTERNET" /&gt;\n&lt;uses-permission android:name="android.permission.READ_PHONE_STATE" /&gt;\n&lt;uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /&gt;\n&lt;uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /&gt;\n&lt;uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /&gt;\n</pre>\n<h2>3. Initialize the SDK</h2>\n<p>To initialize the App Services SDK, you must instantiate the <code>ApigeeClient</code> class. There are multiple ways to handle this step, but we recommend that you do the following:</p>\n<ol>\n	<li>Subclass the <code>Application</code> class, and add an instance variable for the <code>ApigeeClient</code> to it, along with getter and setter methods.\n		<pre>\npublic class YourApplication extends Application\n{\n        \n        private ApigeeClient apigeeClient;\n        \n        public YourApplication()\n        {\n                this.apigeeClient = null;\n        }\n        \n        public ApigeeClient getApigeeClient()\n        {\n                return this.apigeeClient;\n        }\n        \n        public void setApigeeClient(ApigeeClient apigeeClient)\n        {\n                this.apigeeClient = apigeeClient;\n        }\n}			\n		</pre>\n	</li>\n	<li>Declare the <code>Application</code> subclass in your <code>AndroidManifest.xml</code>. For example:\n		<pre>\n&lt;application&gt;\n    android:allowBackup="true"\n    android:icon="@drawable/ic_launcher"\n    android:label="@string/app_name"\n    android:name=".YourApplication"\n	…\n&lt;/application&gt;			\n		</pre>\n	</li>\n	<li>Instantiate the <code>ApigeeClient</code> class in the <code>onCreate</code> method of your first <code>Activity</code> class:\n		<pre>\nimport com.apigee.sdk.ApigeeClient;\n\n@Override\nprotected void onCreate(Bundle savedInstanceState) {\n    super.onCreate(savedInstanceState);		\n	\n	String ORGNAME = "{{currentOrg}}";\n	String APPNAME = "{{currentApp}}";\n	\n	ApigeeClient apigeeClient = new ApigeeClient(ORGNAME,APPNAME,this.getBaseContext());\n\n	// hold onto the ApigeeClient instance in our application object.\n	YourApplication yourApp = (YourApplication) getApplication;\n	yourApp.setApigeeClient(apigeeClient);			\n}\n		</pre>\n		<p>This will make the instance of <code>ApigeeClient</code> available to your <code>Application</code> class.</p>\n	</li>\n</ol>\n<h2>4. Import additional SDK classes</h2>\n<p>The following classes will enable you to call common SDK methods:</p>\n<pre>\nimport com.apigee.sdk.data.client.DataClient; //App Services data methods\nimport com.apigee.sdk.apm.android.MonitoringClient; //App Monitoring methods\nimport com.apigee.sdk.data.client.callbacks.ApiResponseCallback; //API response handling\nimport com.apigee.sdk.data.client.response.ApiResponse; //API response object\n</pre>\n		\n<h2>5. Verify SDK installation</h2>\n\n<p>Once initialized, App Services will also automatically instantiate the <code>MonitoringClient</code> class and begin logging usage, crash and error metrics for your app.</p>\n<p><img src="img/verify.png" alt="screenshot of data in admin portal"/></p>\n<p>To verify that the SDK has been properly initialized, run your app, then go to \'Monitoring\' > \'App Usage\' in the <a href="https://www.apigee.com/usergrid">App Services admin portal</a> to verify that data is being sent.</p>\n<div class="warning">It may take up to two minutes for data to appear in the admin portal after you run your app.</div>\n\n<h2>Installation complete! Try these next steps</h2>\n<ul>\n	<li>\n		<h3><strong>Call additional SDK methods in your code</strong></h3>\n		<p>The <code>DataClient</code> and <code>MonitoringClient</code> classes are also automatically instantiated for you, and accessible with the following accessors:</p>\n		<ul>\n			<li>\n				<pre>DataClient dataClient = apigeeClient.getDataClient();</pre>\n				<p>Use this object to access the data methods of the App Services SDK, including those for push notifications, data store, and geolocation.</p>\n			</li>\n			<li>\n				<pre>MonitoringClient monitoringClient = apigeeClient.getMonitoringClient();</pre>\n				<p>Use this object to access the app configuration and monitoring methods of the App Services SDK, including advanced logging, and A/B testing.</p>\n			</li>\n		</ul>\n	</li>	\n	<li>	\n		<h3><strong>Add App Services features to your app</strong></h3>\n		<p>With App Services you can quickly add valuable features to your mobile or web app, including push notifications, a custom data store, geolocation and more. Check out these links to get started with a few of our most popular features:</p>\n		<ul>\n			<li><strong><a href="http://apigee.com/docs/node/8410">Push notifications</a></strong>: Send offers, alerts and other messages directly to user devices to dramatically increase engagement. With App Services you can send 10 million push notification per month for free!</li>\n			<li><strong>App Monitoring</strong>: When you initialize the App Services SDK, a suite of valuable, <a href="http://apigee.com/docs/node/13190">customizable</a> application monitoring features are automatically enabled that deliver the data you need to fine tune performance, analyze issues, and improve user experience.\n				<ul>\n					<li><strong><a href="http://apigee.com/docs/node/13176">App Usage Monitoring</a></strong>: Visit the <a href="https://apigee.com/usergrid">App Services admin portal</a> to view usage data for your app, including data on device models, platforms and OS versions running your app.</li>				\n					<li><strong><a href="http://apigee.com/docs/node/12861">API Performance Monitoring</a></strong>: Network performance is key to a solid user experience. In the <a href="https://apigee.com/usergrid">App Services admin portal</a> you can view key metrics, including response time, number of requests and raw API request logs.</li>	\n					<li><strong><a href="http://apigee.com/docs/node/13177">Error &amp; Crash Monitoring</a></strong>: Get alerted to any errors or crashes, then view them in the <a href="https://apigee.com/usergrid">App Services admin portal</a>, where you can also analyze raw error and crash logs.</li>\n				</ul>		\n			</li>\n			<li><strong><a href="http://apigee.com/docs/node/410">Geolocation</a></strong>: Target users or return result sets based on user location to keep your app highly-relevant.</li>\n			<li><strong><a href="http://apigee.com/docs/node/10152">Data storage</a></strong>: Store all your application data on our high-availability infrastructure, and never worry about dealing with a database ever again.</li>\n			<li><strong><a href="http://apigee.com/docs/node/376">User management and authentication</a></strong>: Every app needs users. Use App Services to easily implement user registration, as well as OAuth 2.0-compliant login and authentication.</li>\n		</ul>\n	</li>\n	<li>	\n		<h3><strong>Check out the sample apps</strong></h3>\n		<p>The SDK includes samples that illustrate Apigee&nbsp;features. You\'ll find the samples in the following location in your SDK download:</p>\n		<pre>\napigee-android-sdk-&lt;version&gt;\n	...\n	/samples\n		</pre>\n		<div id="collapse">\n			<a href="#samples_collapse" class="btn" data-toggle="collapse"><i class="icon-white icon-chevron-down"></i> Details</a>\n		</div>\n		<div id="samples_collapse" class="collapse">\n			<p>The samples include the following:</p>\n			<table class="table">\n				<thead>\n					<tr>\n						<th scope="col">Sample</th>\n						<th scope="col">Description</th>\n					</tr>\n				</thead>\n				<tbody>\n					<tr>\n						<td>books</td>\n						<td>An app for storing a list of books that shows Apigee database operations such as reading, creating, and deleting.</td>\n					</tr>\n					<tr>\n						<td>messagee</td>\n						<td>An app for sending and receiving messages that shows Apigee database operations (reading, creating).</td>\n					</tr>\n					<tr>\n						<td>push</td>\n						<td>An app that uses the push feature to send notifications to the devices of users who have subscribed for them.</td>\n					</tr>\n				</tbody>\n			</table>\n		</div>\n	</li>\n</ul>\n'),$templateCache.put("app-overview/doc-includes/ios.html",'<h2>1. Integrate ApigeeiOSSDK.framework</h2>\n<a class="jumplink" name="add_the_sdk_to_an_existing_project"></a>\n<ul class="nav nav-tabs" id="myTab">\n	<li class="active"><a data-toggle="tab" href="#existing_project">Existing project</a></li>\n	<li><a data-toggle="tab" href="#new_project">New project</a></li>\n</ul>\n<div class="tab-content">\n	<div class="tab-pane active" id="existing_project">\n		<p>If you\'ve already got&nbsp;an Xcode iOS project, add it into your project as you normally would.</p>\n		<div id="collapse"><a class="btn" data-toggle="collapse" href="#framework_collapse">Details</a></div>\n		<div class="collapse" id="framework_collapse">\n			<ol>\n				<li>\n					<p>Locate the SDK framework file so you can add it to your project. For example, you\'ll find the file at the following path:</p>\n					<pre>\n&lt;sdk_root&gt;/bin/ApigeeiOSSDK.framework</pre>\n				</li>\n				<li>In the <strong>Project Navigator</strong>, click on your project file, and then the <strong>Build Phases</strong> tab. Expand <strong>Link Binary With Libraries</strong>.</li>\n				<li>Link the Apigee iOS SDK into your project.\n					<ul>\n						<li>Drag ApigeeiOSSDK.framework into the Frameworks group created by Xcode.</li>\n					</ul>\n					<p>OR</p>\n					<ol>\n						<li>At the bottom of the <strong>Link Binary With Libraries</strong> group, click the <strong>+</strong> button. Then click&nbsp;<strong>Add Other</strong>.</li>\n						<li>Navigate to the directory that contains ApigeeiOSSDK.framework, and choose the ApigeeiOSSDK.framework folder.</li>\n					</ol>\n				</li>\n			</ol>\n		</div>\n	</div>\n	<div class="tab-pane" id="new_project"><a class="jumplink" name="create_a_new_project_based_on_the_SDK"></a>\n		<p>If you\'re starting with a clean slate (you don\'t have a&nbsp;project yet), you can begin by using the project template included with the SDK. The template includes support for SDK features.</p>\n		<ol>\n			<li>\n				<p>Locate the project template in the expanded SDK. It should be at the following location:</p>\n				<pre>\n&lt;sdk_root&gt;/new-project-template</pre>\n			</li>\n			<li>In the project template directory, open the project file:&nbsp;Apigee App Services iOS Template.xcodeproj.</li>\n			<li>Get acquainted with the template by looking at its readme file.</li>\n		</ol>\n	</div>\n</div>\n<h2>2. Add required iOS frameworks</h2>\n<p>Ensure that the following iOS frameworks are part of your project. To add them, under the <strong>Link Binary With Libraries</strong> group, click the <strong>+</strong> button, type the name of the framework you want to add, select the framework found by Xcode, then click <strong>Add</strong>.</p>\n<ul>\n	<li>QuartzCore.framework</li>\n	<li>CoreLocation.framework</li>\n	<li>CoreTelephony.framework&nbsp;</li>\n	<li>Security.framework</li>\n	<li>SystemConfiguration.framework</li>\n	<li>UIKit.framework</li>\n</ul>\n<h2>3. Update \'Other Linker Flags\'</h2>\n<p>In the <strong>Build Settings</strong> panel, add the following under <strong>Other Linker Flags</strong>:</p>\n<pre>\n-ObjC -all_load</pre>\n<p>Confirm that flags are set for both <strong>DEBUG</strong> and <strong>RELEASE</strong>.</p>\n<h2>4. Initialize the SDK</h2>\n<p>The <em>ApigeeClient</em> class initializes the App Services SDK. To do this you will need your organization name and application name, which are available in the <em>Getting Started</em> tab of the <a href="https://www.apigee.com/usergrid/">App Service admin portal</a>, under <strong>Mobile SDK Keys</strong>.</p>\n<ol>\n	<li>Import the SDK\n		<p>Add the following to your source code to import the SDK:</p>\n		<pre>\n#import &lt;ApigeeiOSSDK/Apigee.h&gt;</pre>\n	</li>\n	<li>\n		<p>Declare the following properties in <code>AppDelegate.h</code>:</p>\n		<pre>\n@property (strong, nonatomic) ApigeeClient *apigeeClient; \n@property (strong, nonatomic) ApigeeMonitoringClient *monitoringClient;\n@property (strong, nonatomic) ApigeeDataClient *dataClient;	\n		</pre>\n	</li>\n	<li>\n		<p>Instantiate the <code>ApigeeClient</code> class inside the <code>didFinishLaunching</code> method of <code>AppDelegate.m</code>:</p>\n		<pre>\n//Replace \'AppDelegate\' with the name of your app delegate class to instantiate it\nAppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];\n\n//Sepcify your App Services organization and application names\nNSString *orgName = @"{{currentOrg}}";\nNSString *appName = @"{{currentApp}}";\n\n//Instantiate ApigeeClient to initialize the SDK\nappDelegate.apigeeClient = [[ApigeeClient alloc]\n                            initWithOrganizationId:orgName\n                            applicationId:appName];\n                            \n//Retrieve instances of ApigeeClient.monitoringClient and ApigeeClient.dataClient\nself.monitoringClient = [appDelegate.apigeeClient monitoringClient]; \nself.dataClient = [appDelegate.apigeeClient dataClient]; \n		</pre>\n	</li>\n</ol>\n\n<h2>5. Verify SDK installation</h2>\n\n<p>Once initialized, App Services will also automatically instantiate the <code>ApigeeMonitoringClient</code> class and begin logging usage, crash and error metrics for your app.</p>\n\n<p>To verify that the SDK has been properly initialized, run your app, then go to <strong>\'Monitoring\' > \'App Usage\'</strong> in the <a href="https://www.apigee.com/usergrid">App Services admin portal</a> to verify that data is being sent.</p>\n<p><img src="img/verify.png" alt="screenshot of data in admin portal"/></p>\n<div class="warning">It may take up to two minutes for data to appear in the admin portal after you run your app.</div>\n\n<h2>Installation complete! Try these next steps</h2>\n<ul>	\n	<li>\n		<h3><strong>Call additional SDK methods in your code</strong></h3>\n		<p>Create an instance of the AppDelegate class, then use <code>appDelegate.dataClient</code> or <code>appDelegate.monitoringClient</code> to call SDK methods:</p>\n		<div id="collapse"><a class="btn" data-toggle="collapse" href="#client_collapse">Details</a></div>\n		<div class="collapse" id="client_collapse">\n			<ul>\n				<li><code>appDelegate.dataClient</code>: Used to access the data methods of the App Services SDK, including those for push notifications, data store, and geolocation.</li>\n				<li><code>appDelegate.monitoringClient</code>: Used to access the app configuration and monitoring methods of the App Services SDK, including advanced logging, and A/B testing.</li>\n			</ul>\n			<h3>Example</h3>\n			<p>For example, you could create a new entity with the following:</p>\n			<pre>\nAppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];\nApigeeClientResponse *response = [appDelegate.dataClient createEntity:entity];\n			</pre>\n		</div>\n\n	</li>\n	<li>\n		<h3><strong>Add App Services features to your app</strong></h3>\n		<p>With App Services you can quickly add valuable features to your mobile or web app, including push notifications, a custom data store, geolocation and more. Check out these links to get started with a few of our most popular features:</p>\n		<ul>\n			<li><strong><a href="http://apigee.com/docs/node/8410">Push notifications</a></strong>: Send offers, alerts and other messages directly to user devices to dramatically increase engagement. With App Services you can send 10 million push notification per month for free!</li>\n			<li><strong><a href="http://apigee.com/docs/node/410">Geolocation</a></strong>: Target users or return result sets based on user location to keep your app highly-relevant.</li>\n			<li><strong><a href="http://apigee.com/docs/node/10152">Data storage</a></strong>: Store all your application data on our high-availability infrastructure, and never worry about dealing with a database ever again.</li>\n			<li><strong><a href="http://apigee.com/docs/node/376">User management and authentication</a></strong>: Every app needs users. Use App Services to easily implement user registration, as well as OAuth 2.0-compliant login and authentication.</li>\n		</ul>\n	</li>\n	<li>\n		<h3><strong>Check out the sample apps</strong></h3>\n		<p>The SDK includes samples that illustrate Apigee&nbsp;features. To look at them, open the .xcodeproj file for each in Xcode. To get a sample app running, open its project file, then follow the steps described in the section, <a target="_blank" href="http://apigee.com/docs/app-services/content/installing-apigee-sdk-ios">Add the SDK to an existing project</a>.</p>\n		<p>You\'ll find the samples in the following location in your SDK download:</p>\n		<pre>\napigee-ios-sdk-&lt;version&gt;\n    ...\n    /samples\n		</pre>\n		<div id="collapse"><a class="btn" data-toggle="collapse" href="#samples_collapse">Details</a></div>\n		<div class="collapse" id="samples_collapse">\n			<p>The samples include the following:</p>\n			<table class="table">\n				<thead>\n					<tr>\n						<th scope="col">Sample</th>\n						<th scope="col">Description</th>\n					</tr>\n				</thead>\n				<tbody>\n					<tr>\n						<td>books</td>\n						<td>An app for storing a list of books that shows Apigee database operations such as reading, creating, and deleting.</td>\n					</tr>\n					<tr>\n						<td>messagee</td>\n						<td>An app for sending and receiving messages that shows Apigee database operations (reading, creating).</td>\n					</tr>\n					<tr>\n						<td>push</td>\n						<td>An app that uses the push feature to send notifications to the devices of users who have subscribed for them.</td>\n					</tr>\n				</tbody>\n			</table>\n		</div>\n		<p>&nbsp;</p>\n	</li>\n</ul>\n'),$templateCache.put("app-overview/doc-includes/javascript.html",'<h2>1. Import the SDK into your HTML</h2>\n<p>To enable support for Apigee-related functions in your HTML, you\'ll need to&nbsp;include <code>apigee.js</code> in your app. To do this, add the following to the <code>head</code> block of your HTML:</p>\n<pre>\n&lt;script type="text/javascript" src="path/to/js/sdk/apigee.js"&gt;&lt;/script&gt;\n</pre>\n<h2>2. Instantiate Apigee.Client</h2>\n<p>Apigee.Client initializes the App Services SDK, and gives you access to all of the App Services SDK methods.</p>\n<p>You will need to pass a JSON object with the UUID or name for your App Services organization and application when you instantiate it.</p>\n<pre>\n//Apigee account credentials, available in the App Services admin portal \nvar client_creds = {\n        orgName:\'{{currentOrg}}\',\n        appName:\'{{currentApp}}\'\n    }\n\n//Initializes the SDK. Also instantiates Apigee.MonitoringClient\nvar dataClient = new Apigee.Client(client_creds);  \n</pre>\n\n<h2>3. Verify SDK installation</h2>\n\n<p>Once initialized, App Services will also automatically instantiate <code>Apigee.MonitoringClient</code> and begin logging usage, crash and error metrics for your app.</p>\n\n<p>To verify that the SDK has been properly initialized, run your app, then go to <strong>\'Monitoring\' > \'App Usage\'</strong> in the <a href="https://www.apigee.com/usergrid">App Services admin portal</a> to verify that data is being sent.</p>\n<p><img src="img/verify.png" alt="screenshot of data in admin portal"/></p>\n<div class="warning">It may take up to two minutes for data to appear in the admin portal after you run your app.</div>\n\n<h2>Installation complete! Try these next steps</h2>\n<ul>\n	<li>	\n		<h3><strong>Call additional SDK methods in your code</strong></h3>\n		<p>Use <code>dataClient</code> or <code>dataClient.monitor</code> to call SDK methods:</p>\n		<div id="collapse">\n			<a href="#client_collapse" class="btn" data-toggle="collapse"><i class="icon-white icon-chevron-down"></i> Details</a>\n		</div>\n		<div id="client_collapse" class="collapse">\n			<ul>\n				<li><code>dataClient</code>: Used to access the data methods of the App Services SDK, including those for push notifications, data store, and geolocation.</li>\n				<li><code>dataClient.monitor</code>: Used to access the app configuration and monitoring methods of the App Services SDK, including advanced logging, and A/B testing.</li>\n			</ul>\n		</div>\n	</li>	\n	<li>\n		<h3><strong>Add App Services features to your app</strong></h3>\n		<p>With App Services you can quickly add valuable features to your mobile or web app, including push notifications, a custom data store, geolocation and more. Check out these links to get started with a few of our most popular features:</p>\n		<ul>\n			<li><strong><a href="http://apigee.com/docs/node/8410">Push notifications</a></strong>: Send offers, alerts and other messages directly to user devices to dramatically increase engagement. With App Services you can send 10 million push notification per month for free!</li>\n			<li><strong><a href="http://apigee.com/docs/node/410">Geolocation</a></strong>: Keep your app highly-relevant by targeting users or returning result sets based on user location.</li>\n			<li><strong><a href="http://apigee.com/docs/node/10152">Data storage</a></strong>: Store all your application data on our high-availability infrastructure, and never worry about dealing with a database ever again.</li>\n			<li><strong><a href="http://apigee.com/docs/node/376">User management and authentication</a></strong>: Every app needs users. Use App Services to easily implement registration, login and OAuth 2.0-compliant authentication.</li>\n		</ul>\n	</li>\n	<li>\n		<h3><strong>Check out the sample apps</strong></h3>\n		<p>The SDK includes samples that illustrate Apigee&nbsp;features. To look at them, open the .xcodeproj file for each in Xcode. You\'ll find the samples in the following location in your SDK download:</p>\n		<pre>\napigee-javascript-sdk-master\n    ...\n    /samples		\n		</pre>\n		<div id="collapse">\n			<a href="#samples_collapse" class="btn" data-toggle="collapse"><i class="icon-white icon-chevron-down"></i> Details</a>\n		</div>\n		<div id="samples_collapse" class="collapse">\n			<p>The samples include the following:</p>\n			<table class="table">\n				<thead>\n					<tr>\n						<th scope="col">Sample</th>\n						<th scope="col">Description</th>\n					</tr>\n				</thead>\n				<tbody>\n					<tr>\n						<td>booksSample.html</td>\n						<td>An app for storing a list of books that shows Apigee database operations such as reading, creating, and deleting.</td>\n					</tr>\n					<tr>\n						<td>messagee</td>\n						<td>An app for sending and receiving messages that shows Apigee database operations (reading, creating).</td>\n					</tr>\n					<tr>\n						<td>monitoringSample.html</td>\n						<td>Shows basic configuration and initialization of the HTML5 app monitoring functionality. Works in browser, PhoneGap, Appcelerator, and Trigger.io.</td>\n					</tr>\n					<tr>\n						<td>readmeSample.html</td>\n						<td>A simple app for reading data from an Apigee database.</td>\n					</tr>\n				</tbody>\n			</table>\n		</div>	\n	</li>				\n</ul>\n'),$templateCache.put("app-overview/doc-includes/net.html",""),$templateCache.put("app-overview/doc-includes/node.html",""),$templateCache.put("app-overview/doc-includes/ruby.html",""),$templateCache.put("app-overview/getting-started.html",'<div class="setup-sdk-content" >\n\n  <bsmodal id="regenerateCredentials"\n           title="Confirmation"\n           close="hideModal"\n           closelabel="Cancel"\n           extrabutton="regenerateCredentialsDialog"\n           extrabuttonlabel="Yes"\n           ng-cloak>\n    Are you sure you want to regenerate the credentials?\n  </bsmodal>\n\n    <page-title icon="&#128640;" title="Getting Started"></page-title>\n\n  <section class="row-fluid">\n\n\n\n\n    <div class="span8">\n\n      <h2 class="title">Install the SDK for app {{currentApp}}</h2>\n      <p>Click on a platform icon below to view SDK installation instructions for that platform.</p>\n      <ul class="inline unstyled">\n        <!--<li><a target="_blank" href="http://apigee.com/docs/usergrid/content/sdks-and-examples#ios"><i class="sdk-icon-large-ios"></i></a></li>-->\n        <!--<li><a target="_blank" href="http://apigee.com/docs/usergrid/content/sdks-and-examples#android"><i class="sdk-icon-large-android"></i></a></li>-->\n        <!--<li><a target="_blank" href="http://apigee.com/docs/usergrid/content/sdks-and-examples#javascript"><i class="sdk-icon-large-js"></i></a></li>-->\n\n\n        <li ng-click="showSDKDetail(\'ios\')"\n            analytics-on="click"\n            analytics-label="App Services"\n            analytics-category="Getting Started"\n            analytics-event="iOS SDK"><i class="sdk-icon-large-ios"></i></li>\n        <li ng-click="showSDKDetail(\'android\')"\n            analytics-on="click"\n            analytics-label="App Services"\n            analytics-category="Getting Started"\n            analytics-event="Android SDK"><i class="sdk-icon-large-android"></i></li>\n        <li ng-click="showSDKDetail(\'javascript\')"\n            analytics-on="click"\n            analytics-label="App Services"\n            analytics-category="Getting Started"\n            analytics-event="JS SDK"><i class="sdk-icon-large-js"></i></li>\n        <li><a target="_blank"\n               ng-click="showSDKDetail(\'nocontent\')"\n               href="http://apigee.com/docs/usergrid/content/sdks-and-examples#nodejs"\n               analytics-on="click"\n               analytics-label="App Services"\n               analytics-category="Getting Started"\n               analytics-event="Node SDK"><i class="sdk-icon-large-node"></i></a></li>\n        <li><a target="_blank"\n               ng-click="showSDKDetail(\'nocontent\')"\n               href="http://apigee.com/docs/usergrid/content/sdks-and-examples#ruby"\n               analytics-on="click"\n               analytics-label="App Services"\n               analytics-category="Getting Started"\n               analytics-event="Ruby SDK"><i class="sdk-icon-large-ruby"></i></a></li>\n        <li><a target="_blank"\n               ng-click="showSDKDetail(\'nocontent\')"\n               href="http://apigee.com/docs/usergrid/content/sdks-and-examples#c"\n               analytics-on="click"\n               analytics-label="App Services"\n               analytics-category="Getting Started"\n               analytics-event="DotNet SDK"><i class="sdk-icon-large-net"></i></a></li>\n       </ul>\n\n      <section id="intro-container" class="row-fluid intro-container">\n\n        <div class="sdk-intro">\n        </div>\n\n        <div class="sdk-intro-content">\n\n          <a class="btn normal white pull-right" ng-href="{{sdkLink}}" target="_blank">\n            Download SDK\n          </a>\n          <a class="btn normal white pull-right" ng-href="{{docsLink}}" target="_blank">\n            More Docs\n          </a>\n          <h3 class="title"><i class="pictogram">&#128213;</i>{{contentTitle}}</h3>\n\n          <div ng-include="getIncludeURL()"></div>\n        </div>\n\n      </section>\n    </div>\n\n    <div class="span4 keys-creds">\n      <h2 class="title">Mobile sdk keys</h2>\n      <p>For mobile SDK initialization.</p>\n      <dl class="app-creds">\n        <dt>Org Name</dt>\n        <dd>{{currentOrg}}</dd>\n        <dt>App Name</dt>\n        <dd>{{currentApp}}</dd>\n      </dl>\n      <h2 class="title">Server app credentials</h2>\n      <p>For authenticating from a server side app (i.e. Ruby, .NET, etc.)</p>\n      <dl class="app-creds">\n        <dt>Client ID</dt>\n        <dd>{{clientID}}</dd>\n        <dt>Client Secret</dt>\n        <dd>{{clientSecret}}</dd>\n        <dt>\n           &nbsp;\n        </dt>\n        <dd>&nbsp;</dd>\n\n        <dt>\n          <a class="btn filter-selector" ng-click="showModal(\'regenerateCredentials\')">Regenerate</a>\n        </dt>\n        <dd></dd>\n      </dl>\n\n    </div>\n\n  </section>\n</div>'),$templateCache.put("data/data.html",'<div class="content-page">\n\n  <bsmodal id="newCollection"\n           title="Create new collection"\n           close="hideModal"\n           closelabel="Cancel"\n           extrabutton="newCollectionDialog"\n           extrabuttonlabel="Create"\n           buttonid="collection"\n           ng-cloak>\n    <fieldset>\n      <div class="control-group">\n        <label for="new-collection-name">Collection Name:</label>\n        <div class="controls">\n          <input type="text" ug-validate required ng-pattern="collectionNameRegex" ng-attr-title="{{collectionNameRegexDescription}}" ng-model="$parent.newCollection.name" name="collection" id="new-collection-name" class="input-xlarge"/>\n          <p class="help-block hide"></p>\n        </div>\n      </div>\n    </fieldset>\n  </bsmodal>\n\n  <div id="intro-page">    \n    <page-title title=" Collections" icon="&#128254;"></page-title>\n  </div>\n\n  <section class="row-fluid">\n    <div id="intro-list" class="span3 user-col">\n      <a class="btn btn-primary" id="new-collection-link" ng-click="showModal(\'newCollection\')" title="new collection"><i class="pictogram">&#57347;</i></a>\n      <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'data new collection\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_new_collection}}" tooltip-placement="right">(?)</a>\n        <ul  class="user-list" style="margin-top:5px;">\n          <li ng-class="queryCollection._type === entity.name ? \'selected\' : \'\'" ng-repeat="entity in collectionList" ng-click="loadCollection(\'/\'+entity.name);">\n            <a id="collection-{{entity.name}}-link" href="javaScript:void(0)">/{{entity.name}} </a>\n          </li>\n        </ul>\n\n  </div>\n\n    <div class="span9 tab-content">\n      <div class="content-page">\n        <form id="intro-collection-query" name="dataForm" ng-submit="run();">\n        <fieldset>\n          <div class="control-group">\n            <div class="" data-toggle="buttons-radio">\n              <!--a class="btn" id="button-query-back">&#9664; Back</a-->\n              <!--Added disabled class to change the way button looks but their functionality is as usual -->\n              <label class="control-label" style="display:none"><strong>Method</strong> <a id="query-method-help" href="#" class="help-link">get help</a></label>\n              <input type="radio" id="create-rb" name="query-action" style="margin-top: -2px;" ng-click="selectPOST();" ng-checked="verb==\'POST\'"> CREATE &nbsp; &nbsp;\n              <input type="radio" id="read-rb" name="query-action" style="margin-top: -2px;" ng-click="selectGET();" ng-checked="verb==\'GET\'"> READ &nbsp; &nbsp;\n              <input type="radio" id="update-rb" name="query-action" style="margin-top: -2px;" ng-click="selectPUT();" ng-checked="verb==\'PUT\'"> UPDATE &nbsp; &nbsp;\n                <input type="radio" id="delete-rb" name="query-action" style="margin-top: -2px;" ng-click="selectDELETE();" ng-checked="verb==\'DELETE\'"> DELETE             <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'data query verbs\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_verb_buttons}}" tooltip-placement="right">(?)</a>\n            </div>\n          </div>\n\n          <div class="control-group">\n            <strong>Path </strong>\n            <div class="controls">\n              <input ng-model="data.queryPath" type="text" ug-validate id="pathDataQuery" ng-attr-title="{{pathRegexDescription}}" ng-pattern="pathRegex" class="span6" autocomplete="off" placeholder="ex: /users" required/>\n              <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'data query path\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_path_box}}" tooltip-placement="right">(?)</a>\n            </div>\n          </div>\n          <div class="control-group">\n            <a id="back-to-collection" class="outside-link" style="display:none">Back to collection</a>\n          </div>\n          <div class="control-group">\n            <strong>Query</strong>\n            <div class="controls">\n              <input ng-model="data.searchString" type="text" class="span6" autocomplete="off" placeholder="ex: select * where name=\'fred\'"/>\n              <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'data query string\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_query_box}}" tooltip-placement="right">(?)</a>\n              <div style="display:none">\n                <a class="btn dropdown-toggle " data-toggle="dropdown">\n                  <span id="query-collections-caret" class="caret"></span>\n                </a>\n                <ul id="query-collections-indexes-list" class="dropdown-menu ">\n                </ul>\n              </div>\n            </div>\n          </div>\n\n\n          <div class="control-group" ng-show="verb==\'GET\' || verb==\'DELETE\'">\n            <label class="control-label" for="query-limit"><strong>Limit</strong>\n              <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'data limit\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_limit}}" tooltip-placement="right">(?)</a><a id="query-limit-help" href="#" ng-show="false" class="help-link">get help</a></label>\n            <div class="controls">\n              <div class="input-append">\n                <input ng-model="data.queryLimit" type="text" class="span5" id="query-limit" placeholder="ex: 10">\n              </div>\n            </div>\n          </div>\n\n          <div class="control-group" style="display:{{queryBodyDisplay}}">\n            <label class="control-label" for="query-source"><strong>JSON Body</strong>\n              <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'data json body\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_json_body}}" tooltip-placement="right">(?)</a> <a id="query-json-help" href="#" ng-show="false" class="help-link">get help</a></label>\n            <div class="controls">\n            <textarea ng-model="data.queryBody" id="query-source" class="span6 pull-left" rows="4">\n      { "name":"value" }\n            </textarea>\n              <br>\n            <a class="btn pull-left" ng-click="validateJson();">Validate JSON</a>\n                <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'data validate json\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_json_validate}}" tooltip-placement="right">(?)</a>\n            </div>\n          </div>\n          <div style="clear: both; height: 10px;"></div>\n          <div class="control-group">\n            <input type="submit" ng-disabled="!dataForm.$valid || loading" class="btn btn-primary" id="button-query"  value="{{loading ? loadingText : \'Run Query\'}}"/>\n            <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'data run query\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_run_query}}" tooltip-placement="right">(?)</a>\n          </div>\n        </fieldset>\n       </form>\n        <div id="intro-entity-list">\n'+"          <div ng-include=\"display=='generic' ? 'data/display-generic.html' : ''\"></div>\n          <div ng-include=\"display=='users' ? 'data/display-users.html' : ''\"></div>\n          <div ng-include=\"display=='groups' ? 'data/display-groups.html' : ''\"></div>\n          <div ng-include=\"display=='roles' ? 'data/display-roles.html' : ''\"></div>\n        </div>\n\n      </div>\n\n      </div>\n    </section>\n\n</div>\n\n"),$templateCache.put("data/display-generic.html",'\n\n<bsmodal id="deleteEntities"\n         title="Are you sure you want to delete the entities(s)?"\n         close="hideModal"\n         closelabel="Cancel"\n         extrabutton="deleteEntitiesDialog"\n         extrabuttonlabel="Delete"\n         buttonid="del-entity"\n         ng-cloak>\n    <fieldset>\n        <div class="control-group">\n        </div>\n    </fieldset>\n</bsmodal>\n\n<span class="button-strip">\n  <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'data entities list\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_entities_list}}" tooltip-placement="left">(?)</a>\n  <button class="btn btn-primary" ng-disabled="!valueSelected(queryCollection._list) || deleteLoading" ng-click="deleteEntitiesDialog()">{{deleteLoading ? loadingText : \'Delete Entity(s)\'}}</button>\n</span>\n<table class="table table-striped collection-list">\n  <thead>\n  <tr class="table-header">\n    <th><input type="checkbox" ng-show="queryCollection._list.length > 0" id="selectAllCheckbox" ng-model="queryBoxesSelected" ng-click="selectAllEntities(queryCollection._list,$parent,\'queryBoxesSelected\',true)"></th>\n    <th ng-if="hasProperty(\'name\')">Name</th>\n    <th>UUID</th>\n    <th></th>\n  </tr>\n  </thead>\n  <tbody ng-repeat="entity in queryCollection._list">\n  <tr class="zebraRows" >\n    <td>\n      <input\n        type="checkbox"\n        id="entity-{{entity._data.name}}-cb"\n        ng-value="entity._data.uuid"\n        ng-model="entity.checked"\n        >\n    </td>\n    <td ng-if="hasProperty(\'name\')">{{entity._data.name}}</td>\n    <td>{{entity._data.uuid}}</td>\n    <td><a href="javaScript:void(0)" ng-click="entitySelected[$index] = !entitySelected[$index]; selectEntity(entity._data.uuid, entitySelected[$index]);">{{entitySelected[$index] ? \'Hide\' : \'View\'}} Details</a></td>\n  </tr>\n  <tr ng-if="entitySelected[$index]">\n    <td colspan="5">\n\n\n      <h4 style="margin: 0 0 20px 0">Entity Detail</h4>\n\n\n      <ul class="formatted-json">\n        <li ng-repeat="(k,v) in entity._data track by $index">\n          <span class="key">{{k}} :</span>\n          <!--todo - doing manual recursion to get this out the door for launch, please fix-->\n          <span ng-switch on="isDeep(v)">\n            <ul ng-switch-when="true">\n              <li ng-repeat="(k2,v2) in v"><span class="key">{{k2}} :</span>\n\n                <span ng-switch on="isDeep(v2)">\n                  <ul ng-switch-when="true">\n                    <li ng-repeat="(k3,v3) in v2"><span class="key">{{k3}} :</span><span class="value">{{v3}}</span></li>\n                  </ul>\n                  <span ng-switch-when="false">\n                    <span class="value">{{v2}}</span>\n                  </span>\n                </span>\n              </li>\n            </ul>\n            <span ng-switch-when="false">\n              <span class="value">{{v}}</span>\n            </span>\n          </span>\n        </li>\n      </ul>\n\n    <div class="control-group">\n      <h4 style="margin: 20px 0 20px 0">Edit Entity <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'data edit entity\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_edit_entity}}" tooltip-placement="right">(?)</a></h4>\n      <div class="controls">\n        <textarea ng-model="entity._json" class="span12" rows="12"></textarea>\n        <br>\n        <a class="btn btn-primary toolbar pull-left" ng-click="validateJson();">Validate JSON</a><button type="button" class="btn btn-primary pull-right" id="button-query" ng-click="saveEntity(entity);">Save</button>\n      </div>\n    </div>\n  </td>\n  </tr>\n\n  <tr ng-show="queryCollection._list.length == 0">\n    <td colspan="4">No data found</td>\n  </tr>\n  </tbody>\n</table>\n<div style="padding: 10px 5px 10px 5px">\n  <button class="btn btn-primary toolbar" ng-click="getPrevious()" style="display:{{previous_display}}">< Previous</button>\n  <button class="btn btn-primary toolbar" ng-click="getNext()" style="display:{{next_display}}; float:right;">Next ></button>\n</div>\n\n'),$templateCache.put("data/display-groups.html",""),$templateCache.put("data/display-roles.html","roles---------------------------------"),$templateCache.put("data/display-users.html",'\n<table id="query-response-table" class="table">\n  <tbody>\n  <tr class="zebraRows users-row">\n    <td class="checkboxo">\n      <input type="checkbox" onclick="Usergrid.console.selectAllEntities(this);"></td>\n    <td class="gravatar50-td">&nbsp;</td>\n    <td class="user-details bold-header">Username</td>\n    <td class="user-details bold-header">Display Name</td>\n    <td class="user-details bold-header">UUID</td>\n    <td class="view-details">&nbsp;</td>\n  </tr>\n  <tr class="zebraRows users-row">\n    <td class="checkboxo">\n      <input class="listItem" type="checkbox" name="/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7" value="bf9a95da-d508-11e2-bf44-236d2eee13a7">\n    </td>\n    <td class="gravatar50-td">\n      <img src="http://www.gravatar.com/avatar/01b37aa66496988ca780b3f515bc768e" class="gravatar50">\n    </td>\n    <td class="details">\n      <a onclick="Usergrid.console.getCollection(\'GET\', \'/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/\'+\'bf9a95da-d508-11e2-bf44-236d2eee13a7\'); $(\'#data-explorer\').show(); return false;" class="view-details">10</a>\n    </td>\n    <td class="details">      #"&gt;&lt;img src=x onerror=prompt(1);&gt;   </td>\n    <td class="details">     bf9a95da-d508-11e2-bf44-236d2eee13a7   </td>\n    <td class="view-details">\n      <a href="" onclick="$(\'#query-row-bf9a95da-d508-11e2-bf44-236d2eee13a7\').toggle(); $(\'#data-explorer\').show(); return false;" class="view-details">Details</a>\n    </td>\n  </tr>\n  <tr id="query-row-bf9a95da-d508-11e2-bf44-236d2eee13a7" style="display:none">\n    <td colspan="5">\n      <div>\n        <div style="padding-bottom: 10px;">\n          <button type="button" class="btn btn-small query-button active" id="button-query-show-row-JSON" onclick="Usergrid.console.activateQueryRowJSONButton(); $(\'#query-row-JSON-bf9a95da-d508-11e2-bf44-236d2eee13a7\').show(); $(\'#query-row-content-bf9a95da-d508-11e2-bf44-236d2eee13a7\').hide(); return false;">JSON</button>\n          <button type="button" class="btn btn-small query-button disabled" id="button-query-show-row-content" onclick="Usergrid.console.activateQueryRowContentButton();$(\'#query-row-content-bf9a95da-d508-11e2-bf44-236d2eee13a7\').show(); $(\'#query-row-JSON-bf9a95da-d508-11e2-bf44-236d2eee13a7\').hide(); return false;">Content</button>\n        </div>\n        <div id="query-row-JSON-bf9a95da-d508-11e2-bf44-236d2eee13a7">\n              <pre>{\n  "picture": "http://www.gravatar.com/avatar/01b37aa66496988ca780b3f515bc768e",\n  "uuid": "bf9a95da-d508-11e2-bf44-236d2eee13a7",\n  "type": "user",\n  "name": "#"&gt;&lt;img src=x onerror=prompt(1);&gt;",\n  "created": 1371224432557,\n  "modified": 1371851347024,\n  "username": "10",\n  "email": "fdsafdsa@ookfd.com",\n  "activated": "true",\n  "adr": {\n    "addr1": "",\n    "addr2": "",\n    "city": "",\n    "state": "",\n    "zip": "",\n    "country": ""\n  },\n  "metadata": {\n    "path": "/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7",\n    "sets": {\n      "rolenames": "/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/rolenames",\n      "permissions": "/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/permissions"\n    },\n    "collections": {\n      "activities": "/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/activities",\n      "devices": "/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/devices",\n      "feed": "/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/feed",\n      "groups": "/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/groups",\n      "roles": "/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/roles",\n      "following": "/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/following",\n      "followers": "/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/followers"\n    }\n  },\n  "title": "#"&gt;&lt;img src=x onerror=prompt(1);&gt;"\n}</pre>\n        </div>\n        <div id="query-row-content-bf9a95da-d508-11e2-bf44-236d2eee13a7" style="display:none">\n          <table>\n            <tbody>\n            <tr>\n              <td>picture</td>\n              <td>http://www.gravatar.com/avatar/01b37aa66496988ca780b3f515bc768e</td></tr><tr><td>uuid</td><td>bf9a95da-d508-11e2-bf44-236d2eee13a7</td></tr><tr><td>type</td><td>user</td></tr><tr><td>name</td><td>#&amp;quot;&amp;gt;&amp;lt;img src=x onerror=prompt(1);&amp;gt;</td></tr><tr><td>created</td><td>1371224432557</td></tr><tr><td>modified</td><td>1371851347024</td></tr><tr><td>username</td><td>10</td></tr><tr><td>email</td><td>fdsafdsa@ookfd.com</td></tr><tr><td>activated</td><td>true</td></tr><tr><td></td><td style="padding: 0"><table><tbody><tr></tr><tr><td>addr1</td><td></td></tr><tr><td>addr2</td><td></td></tr><tr><td>city</td><td></td></tr><tr><td>state</td><td></td></tr><tr><td>zip</td><td></td></tr><tr><td>country</td><td></td></tr></tbody></table></td></tr><tr><td></td><td style="padding: 0"><table><tbody><tr></tr><tr><td>path</td><td>/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7</td></tr><tr><td></td><td style="padding: 0"><table><tbody><tr></tr><tr><td>rolenames</td><td>/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/rolenames</td></tr><tr><td>permissions</td><td>/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/permissions</td></tr></tbody></table></td></tr><tr><td></td><td style="padding: 0"><table><tbody><tr></tr><tr><td>activities</td><td>/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/activities</td></tr><tr><td>devices</td><td>/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/devices</td></tr><tr><td>feed</td><td>/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/feed</td></tr><tr><td>groups</td><td>/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/groups</td></tr><tr><td>roles</td><td>/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/roles</td></tr><tr><td>following</td><td>/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/following</td></tr><tr><td>followers</td><td>/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/followers</td></tr></tbody></table></td></tr></tbody></table></td></tr><tr><td>title</td><td>#&amp;quot;&amp;gt;&amp;lt;img src=x onerror=prompt(1);&amp;gt;</td>\n            </tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n    </td>\n  </tr>\n  </tbody>\n</table>'),$templateCache.put("data/entity.html",'<div class="content-page">\n\n  <h4>Entity Detail</h4>\n  <div class="well">\n    <a href="#!/data" class="outside-link"><< Back to collection</a>\n  </div>\n  <fieldset>\n    <div class="control-group">\n      <strong>Path </strong>\n      <div class="controls">\n        {{entityType}}/{{entityUUID}}\n      </div>\n    </div>\n\n    <div class="control-group">\n      <label class="control-label" for="query-source"><strong>JSON Body</strong></label>\n      <div class="controls">\n        <textarea ng-model="queryBody" class="span6 pull-left" rows="12">{{queryBody}}</textarea>\n        <br>\n        <a class="btn pull-left" ng-click="validateJson();">Validate JSON</a>\n      </div>\n    </div>\n    <div style="clear: both; height: 10px;"></div>\n    <div class="control-group">\n      <button type="button" class="btn btn-primary" id="button-query" ng-click="saveEntity();">Save</button>\n      <!--button type="button" class="btn btn-primary" id="button-query" ng-click="run();">Delete</button-->\n    </div>\n  </fieldset>\n\n</div>\n\n'),$templateCache.put("dialogs/modal.html",'    <div class="modal show fade" tabindex="-1" role="dialog" aria-hidden="true">\n        <form ng-submit="extraDelegate(extrabutton)" name="dialogForm" novalidate>\n\n        <div class="modal-header">\n            <h1 class="title">{{title}}</h1>\n        </div>\n\n        <div class="modal-body" ng-transclude></div>\n        <div class="modal-footer">\n            {{footertext}}\n            <input type="submit" class="btn" id="dialogButton-{{buttonId}}" ng-if="extrabutton" ng-disabled="!dialogForm.$valid" aria-hidden="true" ng-value="extrabuttonlabel"/>\n            <button class="btn cancel pull-left" data-dismiss="modal" aria-hidden="true"\n                    ng-click="closeDelegate(close)">{{closelabel}}\n            </button>\n        </div>\n        </form>    </div>\n'),$templateCache.put("global/appswitcher-template.html",'<li id="globalNav" class="dropdown dropdownContainingSubmenu active">\n  <a class="dropdown-toggle" data-toggle="dropdown">API Platform<b class="caret"></b></a>\n  <ul class="dropdown-menu pull-right">\n    <li id="globalNavSubmenuContainer">\n      <ul>\n        <li data-globalNavDetail="globalNavDetailApigeeHome"><a target="_blank" href="http://apigee.com">Apigee Home</a></li>\n        <li data-globalNavDetail="globalNavDetailAppServices" class="active"><a target="_blank" href="https://apigee.com/usergrid/">App Services</a></li>\n        <li data-globalNavDetail="globalNavDetailApiPlatform" ><a target="_blank" href="https://enterprise.apigee.com">API Platform</a></li>\n        <li data-globalNavDetail="globalNavDetailApiConsoles"><a target="_blank" href="http://apigee.com/providers">API Consoles</a></li>\n      </ul>\n    </li>\n    <li id="globalNavDetail">\n      <div id="globalNavDetailApigeeHome">\n        <div class="globalNavDetailApigeeLogo"></div>\n        <div class="globalNavDetailDescription">You need apps and apps need APIs. Apigee is the leading API platform for enterprises and developers.</div>\n      </div>\n      <div id="globalNavDetailAppServices">\n        <div class="globalNavDetailSubtitle">For App Developers</div>\n        <div class="globalNavDetailTitle">App Services</div>\n        <div class="globalNavDetailDescription">Build engaging applications, store data, manage application users, and more.</div>\n      </div>\n      <div id="globalNavDetailApiPlatform">\n        <div class="globalNavDetailSubtitle">For API Developers</div>\n        <div class="globalNavDetailTitle">API Platform</div>\n        <div class="globalNavDetailDescription">Create, configure, manage and analyze your APIs and resources.</div>\n      </div>\n      <div id="globalNavDetailApiConsoles">\n        <div class="globalNavDetailSubtitle">For API Developers</div>\n        <div class="globalNavDetailTitle">API Consoles</div>\n        <div class="globalNavDetailDescription">Explore over 100 APIs with the Apigee API Console, or create and embed your own API Console.</div>\n      </div>\n    </li>\n  </ul>\n</li>'),$templateCache.put("global/insecure-banner.html",'<div ng-if="securityWarning" ng-cloak class="demo-holder">\n    <div class="alert alert-demo alert-animate">\n        <div class="alert-text">\n            <i class="pictogram">&#9888;</i>Warning: This application has "sandbox" permissions and is not production ready. <a target="_blank" href="http://apigee.com/docs/app-services/content/securing-your-app">Please go to our security documentation to find out more.</a></span>\n        </div>\n    </div>\n</div>'),$templateCache.put("global/page-title.html",'<section class="row-fluid">\n    <div class="span12">\n        <div class="page-filters">\n            <h1 class="title pull-left" id="pageTitle"><i class="pictogram title" style="padding-right: 5px;">{{icon}}</i>{{title}} <a class="super-help" href="http://community.apigee.com/content/apigee-customer-support" target="_blank"  >(need help?)</a></h1>\n        </div>\n    </div>\n    <bsmodal id="need-help"\n             title="Need Help?"\n             close="hideModal"\n             closelabel="Cancel"\n             extrabutton="sendHelp"\n             extrabuttonlabel="Get Help"\n             ng-cloak>\n        <p>Do you want to contact support? Support will get in touch with you as soon as possible.</p>\n    </bsmodal>\n</section>\n\n'),$templateCache.put("groups/groups-activities.html",'<div class="content-page" ng-controller="GroupsActivitiesCtrl">\n\n  <br>\n  <div>\n    <table class="table table-striped">\n      <tbody>\n      <tr class="table-header">\n        <td>Date</td>\n        <td>Content</td>\n        <td>Verb</td>\n        <td>UUID</td>\n      </tr>\n      <tr class="zebraRows" ng-repeat="activity in selectedGroup.activities">\n        <td>{{activity.createdDate}}</td>\n        <td>{{activity.content}}</td>\n        <td>{{activity.verb}}</td>\n        <td>{{activity.uuid}}</td>\n      </tr>\n      </tbody>\n    </table>\n  </div>\n\n\n</div>'),$templateCache.put("groups/groups-details.html",'<div class="content-page" ng-controller="GroupsDetailsCtrl">\n\n  <div>\n      <form name="updateGroupDetailForm" ng-submit="saveSelectedGroup()" novalidate>\n          <div style="float: left; padding-right: 30px;">\n              <h4 class="ui-dform-legend">Group Information</h4>\n              <label for="group-title" class="ui-dform-label">Group Title</label>\n              <input type="text" id="group-title" ng-pattern="titleRegex" ng-attr-title="{{titleRegexDescription}}" required class="ui-dform-text" ng-model="group.title" ug-validate>\n                  <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'group title box\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_details_title}}" tooltip-placement="right">(?)</a>\n              <br/>\n            <label for="group-path" class="ui-dform-label">Group Path</label>\n            <input type="text" id="group-path" required ng-attr-title="{{pathRegexDescription}}" placeholder="ex: /mydata" ng-pattern="pathRegex" class="ui-dform-text" ng-model="group.path" ug-validate>\n                <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'group path box\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_details_path}}" tooltip-placement="right">(?)</a>\n            <br/>\n          </div>\n          <br style="clear:both"/>\n\n          <div style="width:100%;float:left;padding: 20px 0">\n              <input type="submit" value="Save Group" style="margin-right: 15px;" ng-disabled="!updateGroupDetailForm.$valid" class="btn btn-primary" />\n          </div>\n\n          <div class="content-container">\n              <h4>JSON Group Object <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'group json object\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_groups_json_object}}" tooltip-placement="right">(?)</a></h4>\n              <pre id="{{help.showJsonId}}">{{json}}</pre>\n          </div>\n      </form>\n  </div>\n\n\n</div>'),$templateCache.put("groups/groups-members.html",'<div class="content-page" ng-controller="GroupsMembersCtrl">\n\n\n  <bsmodal id="removeFromGroup"\n           title="Confirmation"\n           close="hideModal"\n           closelabel="Cancel"\n           extrabutton="removeUsersFromGroupDialog"\n           extrabuttonlabel="Delete"\n           ng-cloak>\n    <p>Are you sure you want to remove the users from the seleted group(s)?</p>\n  </bsmodal>\n\n  <bsmodal id="addGroupToUser"\n           title="Add user to group"\n           close="hideModal"\n           closelabel="Cancel"\n           extrabutton="addGroupToUserDialog"\n           extrabuttonlabel="Add"\n           ng-cloak>\n    <div class="btn-group">\n      <a class="btn dropdown-toggle filter-selector" data-toggle="dropdown">\n        <span class="filter-label">{{$parent.user != \'\' ? $parent.user.username : \'Select a user...\'}}</span>\n        <span class="caret"></span>\n      </a>\n      <ul class="dropdown-menu">\n        <li ng-repeat="user in $parent.usersTypeaheadValues" class="filterItem"><a ng-click="$parent.$parent.user = user">{{user.username}}</a></li>\n      </ul>\n    </div>\n  </bsmodal>\n\n\n  <div class="button-strip">\n    <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'group add user button\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_groups_users_add_user}}" tooltip-placement="left">(?)</a>\n    <button class="btn btn-primary"  ng-click="showModal(\'addGroupToUser\')">Add User to Group</button>\n    <button class="btn btn-primary" ng-disabled="!hasMembers || !valueSelected(groupsCollection.users._list)" ng-click="showModal(\'removeFromGroup\')">Remove User(s) from Group</button>\n  </div>\n  <table class="table table-striped">\n    <tr class="table-header">\n      <td style="width: 30px;"><input type="checkbox" ng-show="hasMembers" id="selectAllCheckbox" ng-model="groupMembersSelected" ng-click="selectAllEntities(groupsCollection.users._list,this,\'groupMembersSelected\')"></td>\n      <td style="width: 50px;"></td>\n      <td>Username</td>\n      <td>Display Name</td>\n    </tr>\n    <tr class="zebraRows" ng-repeat="user in groupsCollection.users._list">\n      <td>\n        <input\n          type="checkbox"\n          ng-model="user.checked"\n          >\n      </td>\n      <td><img style="width:30px;height:30px;" ng-src="{{user._portal_image_icon}}"></td>\n      <td>{{user.get(\'username\')}}</td>\n      <td>{{user.get(\'name\')}}</td>\n    </tr>\n  </table>\n  <div style="padding: 10px 5px 10px 5px">\n    <button class="btn btn-primary" ng-click="getPrevious()" style="display:{{previous_display}}">< Previous</button>\n    <button class="btn btn-primary" ng-click="getNext()" style="display:{{next_display}}; float:right;">Next ></button>\n  </div>\n</div>'),$templateCache.put("groups/groups-roles.html",'<div class="content-page" ng-controller="GroupsRolesCtrl">\n\n  <bsmodal id="addGroupToRole"\n           title="Add group to role"\n           close="hideModal"\n           closelabel="Cancel"\n           extrabutton="addGroupToRoleDialog"\n           extrabuttonlabel="Add"\n           ng-cloak>\n    <div class="btn-group">\n      <a class="btn dropdown-toggle filter-selector" data-toggle="dropdown">\n        <span class="filter-label">{{$parent.name != \'\' ? $parent.name : \'Role name...\'}}</span>\n        <span class="caret"></span>\n      </a>\n      <ul class="dropdown-menu">\n        <li ng-repeat="role in $parent.rolesTypeaheadValues" class="filterItem"><a ng-click="$parent.$parent.name = role.name">{{role.name}}</a></li>\n      </ul>\n    </div>\n  </bsmodal>\n\n  <bsmodal id="leaveRoleFromGroup"\n           title="Confirmation"\n           close="hideModal"\n           closelabel="Cancel"\n           extrabutton="leaveRoleDialog"\n           extrabuttonlabel="Leave"\n           ng-cloak>\n    <p>Are you sure you want to remove the group from the role(s)?</p>\n  </bsmodal>\n\n\n  <div class="button-strip">\n    <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'groups roles add role button\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_groups_roles_add_leave_role}}" tooltip-placement="left">(?)</a>\n    <button class="btn btn-primary" ng-click="showModal(\'addGroupToRole\')">Add Role to Group</button>\n    <button class="btn btn-primary" ng-disabled="!hasRoles || !valueSelected(groupsCollection.roles._list)" ng-click="showModal(\'leaveRoleFromGroup\')">Remove Role(s) from Group</button>\n  </div>\n  <h4>Roles <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'groups roles roles list\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_groups_roles_roles}}" tooltip-placement="top">(?)</a></h4>\n  <table class="table table-striped">\n    <tbody>\n    <tr class="table-header">\n      <td style="width: 30px;"><input type="checkbox" ng-show="hasRoles" id="groupsSelectAllCheckBox" ng-model="groupRoleSelected" ng-click="selectAllEntities(groupsCollection.roles._list,this,\'groupRoleSelected\')" ></td>\n      <td>Role Name</td>\n      <td>Role title</td>\n    </tr>\n    <tr class="zebraRows" ng-repeat="role in groupsCollection.roles._list">\n      <td>\n        <input\n          type="checkbox"\n          ng-model="role.checked"\n          >\n      </td>\n      <td>{{role._data.name}}</td>\n      <td>{{role._data.title}}</td>\n    </tr>\n    </tbody>\n  </table>\n  <div style="padding: 10px 5px 10px 5px">\n    <button class="btn btn-primary" ng-click="getPreviousRoles()" style="display:{{roles_previous_display}}">< Previous</button>\n    <button class="btn btn-primary" ng-click="getNextRoles()" style="display:{{roles_next_display}};float:right;">Next ></button>\n  </div>\n\n\n  <bsmodal id="deletePermission"\n           title="Confirmation"\n           close="hideModal"\n           closelabel="Cancel"\n           extrabutton="deleteGroupPermissionDialog"\n           extrabuttonlabel="Delete"\n           ng-cloak>\n    <p>Are you sure you want to delete the permission(s)?</p>\n  </bsmodal>\n\n\n  <bsmodal id="addPermission"\n           title="New Permission"\n           close="hideModal"\n           closelabel="Cancel"\n           extrabutton="addGroupPermissionDialog"\n           extrabuttonlabel="Add"\n           ng-cloak>\n    <p>Path: <input ng-model="$parent.permissions.path" placeholder="ex: /mydata" id="groupsrolespermissions" type="text" ng-pattern="pathRegex" ng-attr-title="{{pathRegexDescription}}" required ug-validate  /> <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'users roles new permission path box\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_groups_roles_new_permission_path}}" tooltip-placement="right">(?)</a></p>\n    <div class="control-group">\n      <input type="checkbox" ng-model="$parent.permissions.getPerm"> GET <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'users roles add permission button\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_groups_roles_new_permission_verbs}}" tooltip-placement="right">(?)</a>\n    </div>\n    <div class="control-group">\n      <input type="checkbox" ng-model="$parent.permissions.postPerm"> POST\n    </div>\n    <div class="control-group">\n      <input type="checkbox" ng-model="$parent.permissions.putPerm"> PUT\n    </div>\n    <div class="control-group">\n      <input type="checkbox" ng-model="$parent.permissions.deletePerm"> DELETE\n    </div>\n  </bsmodal>\n\n\n  <div class="button-strip">\n    <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'groups roles add permission button\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_groups_roles_add_delete_permission}}" tooltip-placement="left">(?)</a>\n    <button class="btn btn-primary" ng-click="showModal(\'addPermission\')">Add Permission</button>\n    <button class="btn btn-primary" ng-disabled="!hasPermissions || !valueSelected(selectedGroup.permissions)" ng-click="showModal(\'deletePermission\')">Delete Permission(s)</button>\n  </div>\n  <h4>Permissions <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'groups roles permissions list\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_groups_roles_permissions}}" tooltip-placement="top">(?)</a>\n  </h4>\n  <table class="table table-striped">\n    <tbody>\n    <tr class="table-header">\n      <td style="width: 30px;"><input ng-show="hasPermissions" type="checkbox" id="permissionsSelectAllCheckBox" ng-model="groupPermissionsSelected" ng-click="selectAllEntities(selectedGroup.permissions,this,\'groupPermissionsSelected\')"  ></td>\n      <td>Path</td>\n      <td>GET</td>\n      <td>POST</td>\n      <td>PUT</td>\n      <td>DELETE</td>\n    </tr>\n    <tr class="zebraRows" ng-repeat="permission in selectedGroup.permissions">\n      <td>\n        <input\n          type="checkbox"\n          ng-model="permission.checked"\n          >\n      </td>\n      <td>{{permission.path}}</td>\n      <td>{{permission.operations.get}}</td>\n      <td>{{permission.operations.post}}</td>\n      <td>{{permission.operations.put}}</td>\n      <td>{{permission.operations.delete}}</td>\n    </tr>\n    </tbody>\n  </table>\n\n</div>'),$templateCache.put("groups/groups-tabs.html",'<div class="content-page">\n\n  <section class="row-fluid">\n\n    <div class="span12">\n      <div class="page-filters">\n        <h1 class="title" class="pull-left"><i class="pictogram title">&#128101;</i> Groups</h1>\n      </div>\n    </div>\n\n  </section>\n\n  <div id="user-panel" class="panel-buffer">\n    <ul id="user-panel-tab-bar" class="nav nav-tabs">\n      <li><a href="javaScript:void(0);" ng-click="gotoPage(\'groups\')">Group List</a></li>\n      <li ng-class="detailsSelected"><a href="javaScript:void(0);" ng-click="gotoPage(\'groups/details\')">Details</a></li>\n      <li ng-class="membersSelected"><a href="javaScript:void(0);" ng-click="gotoPage(\'groups/members\')">Users</a></li>\n      <li ng-class="activitiesSelected"><a href="javaScript:void(0);" ng-click="gotoPage(\'groups/activities\')">Activities</a></li>\n      <li ng-class="rolesSelected"><a href="javaScript:void(0);" ng-click="gotoPage(\'groups/roles\')">Roles &amp; Permissions</a></li>\n    </ul>\n  </div>\n\n  <div style="float: left; margin-right: 10px;">\n    <div style="float: left;">\n      <div class="user-header-title"><strong>Group Path: </strong>{{selectedGroup.get(\'path\')}}</div>\n      <div class="user-header-title"><strong>Group Title: </strong>{{selectedGroup.get(\'title\')}}</div>\n    </div>\n  </div>\n</div>\n<br>\n<br>\n'),$templateCache.put("groups/groups.html",'<div class="content-page">\n\n  <div id="intro-page" >\n  <page-title title=" Groups" icon="&#128101;"></page-title>\n    \n  </div>\n  <bsmodal id="newGroup"\n           title="New Group"\n           close="hideModal"\n           closelabel="Cancel"\n           extrabutton="newGroupDialog"\n           extrabuttonlabel="Add"\n           ng-model="dialog"\n           ng-cloak>\n    <fieldset>\n      <div class="control-group">\n        <label for="title">Title</label>\n        <div class="controls">\n          <input type="text" id="title" ng-pattern="titleRegex" ng-attr-title="{{titleRegexDescription}}" required ng-model="newGroup.title"class="input-xlarge" ug-validate/>\n          <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'group title box\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_details_title}}" tooltip-placement="right">(?)</a>\n        </div>\n      </div>\n      <div class="control-group">\n        <label for="path">Path</label>\n        <div class="controls">\n          <input id="path" type="text" ng-attr-title="{{pathRegexDescription}}" placeholder="ex: /mydata" ng-pattern="pathRegex" required ng-model="newGroup.path" class="input-xlarge" ug-validate/>\n          <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'group path box\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_details_path}}" tooltip-placement="right">(?)</a>\n        </div>\n      </div>\n    </fieldset>\n  </bsmodal>\n\n  <bsmodal id="deleteGroup"\n           title="Delete Group"\n           close="hideModal"\n           closelabel="Cancel"\n           extrabutton="deleteGroupsDialog"\n           extrabuttonlabel="Delete"\n           ng-cloak>\n    <p>Are you sure you want to delete the group(s)?</p>\n  </bsmodal>\n\n\n  <section class="row-fluid">\n    <div id="intro-list" class="span3 user-col">\n      <div class="button-toolbar span12">\n        <a title="Select All" class="btn btn-primary select-all toolbar" ng-show="hasGroups" ng-click="selectAllEntities(groupsCollection._list,this,\'groupBoxesSelected\',true)"> <i class="pictogram">&#8863;</i></a>\n        <button title="Delete" class="btn btn-primary toolbar" ng-disabled="!hasGroups || !valueSelected(groupsCollection._list)" ng-click="showModal(\'deleteGroup\')"><i class="pictogram">&#9749;</i></button>\n        <button title="Add" class="btn btn-primary toolbar" ng-click="showModal(\'newGroup\')"><i class="pictogram">&#57347;</i></button>\n        <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'users list\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_groups_add_remove_buttons}}" tooltip-placement="right">(?)</a>\n      </div>\n      <ul class="user-list">\n        <li ng-class="selectedGroup._data.uuid === group._data.uuid ? \'selected\' : \'\'" ng-repeat="group in groupsCollection._list" ng-click="selectGroup(group._data.uuid)">\n          <input\n              type="checkbox"\n              ng-value="group._data.uuid"\n              ng-checked="group.checked"\n              ng-model="group.checked"\n              >\n          <a href="javaScript:void(0)" >{{group.get(\'title\')}}</a>\n          <br/>\n          <span ng-if="group.get(\'path\')" class="label">Path:</span>/{{group.get(\'path\')}}\n        </li>\n      </ul>\n\n\n      <div style="padding: 10px 5px 10px 5px">\n        <button class="btn btn-primary" ng-click="getPrevious()" style="display:{{previous_display}}">< Previous</button>\n        <button class="btn btn-primary" ng-click="getNext()" style="display:{{next_display}}; float:right;">Next ></button>\n      </div>\n    </div>\n\n    <div id="{{help.showTabsId}}" class="span9 tab-content" ng-show="selectedGroup.get" >\n      <div class="menu-toolbar">\n        <ul class="inline" >\n          <li class="tab" ng-class="currentGroupsPage.route === \'/groups/details\' ? \'selected\' : \'\'"><div class="btn btn-primary toolbar" ><a class="btn-content" ng-click="selectGroupPage(\'/groups/details\')"><i class="pictogram">&#59170;</i>Details</a>\n             <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'groups details tab\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_groups_details_tab}}" tooltip-placement="right">(?)</a></div>\n          </li>\n          <li class="tab" ng-class="currentGroupsPage.route === \'/groups/members\' ? \'selected\' : \'\'"><div class="btn btn-primary toolbar" ><a class="btn-content" ng-click="selectGroupPage(\'/groups/members\')"><i class="pictogram">&#128101;</i>Users</a>\n             <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'groups users tab\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_groups_users_tab}}" tooltip-placement="right">(?)</a></div>\n          </li>\n          <li class="tab" ng-class="currentGroupsPage.route === \'/groups/activities\' ? \'selected\' : \'\'"><div class="btn btn-primary toolbar" ><a class="btn-content" ng-click="selectGroupPage(\'/groups/activities\')"><i class="pictogram">&#59194;</i>Activities</a>\n             <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'groups activities tab\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_groups_activities_tab}}" tooltip-placement="right">(?)</a></div>\n          </li>\n          <li class="tab" ng-class="currentGroupsPage.route === \'/groups/roles\' ? \'selected\' : \'\'"><div class="btn btn-primary toolbar" ><a class="btn-content" ng-click="selectGroupPage(\'/groups/roles\')"><i class="pictogram">&#127758;</i>Roles &amp; Permissions</a>\n             <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'groups role tab\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_groups_roles_tab}}" tooltip-placement="right">(?)</a></div>\n          </li>\n        </ul>\n      </div>\n      <span ng-include="currentGroupsPage.template"></span>\n\n  </section>\n</div>\n'),$templateCache.put("login/forgot-password.html",'<div class="login-content" ng-controller="ForgotPasswordCtrl">\n	<iframe class="container" ng-src="{{forgotPWiframeURL}}" id="forgot-password-frame" border="0" style="border:0;width:600px;height:620px;">\n	<p>Email Address: <input id="resetPasswordEmail" name="resetPasswordEmail" /></p>\n	<button class="btn btn-primary" ng-click="">Reset Password</button>\n</div>\n'),$templateCache.put("login/loading.html","\n\n<h1>Loading...</h1>"),$templateCache.put("login/login.html",'<div class="login-content">\r\n  <bsmodal id="sendActivationLink"\r\n           title="Resend Activation Link"\r\n           close="hideModal"\r\n           closelabel="Cancel"\r\n           extrabutton="resendActivationLink"\r\n           extrabuttonlabel="Send Activation"\r\n           ng-cloak>\r\n    <fieldset>\r\n      <p>Email to send to: <input type="email" required ng-model="$parent.activation.id" ng-pattern="emailRegex" ng-attr-title="{{emailRegexDescription}}" name="activationId" id="user-activationId" class="input-xlarge"/></p>\r\n    </fieldset>\r\n  </bsmodal>\r\n  <div class="login-holder">\r\n  <form name="loginForm" id="login-form"  ng-submit="login()" class="form-horizontal" novalidate>\r\n    <h1 class="title">Enter your credentials</h1>\r\n    <div class="alert-error" id="loginError" ng-if="loginMessage">{{loginMessage}}</div>\r\n    <div class="control-group">\r\n      <label class="control-label" for="login-username">Email or Username:</label>\r\n      <div class="controls">\r\n        <input type="text" ng-model="login.username"  title="Please add a username or email."  class="" id="login-username" required ng-value="login.username" size="20" ug-validate>\r\n      </div>\r\n    </div>\r\n    <div class="control-group">\r\n      <label class="control-label" for="login-password">Password:</label>\r\n      <div class="controls">\r\n        <input type="password" ng-model="login.password"  required id="login-password" class="" ng-value="login.password" size="20" ug-validate>\r\n      </div>\r\n    </div>\r\n    <div class="control-group" ng-show="requiresDeveloperKey">\r\n      <label class="control-label" for="login-developerkey">Developer Key:</label>\r\n      <div class="controls">\r\n        <input type="text" ng-model="login.developerkey" id="login-developerkey" class="" ng-value="login.developerkey" size="20" ug-validate>\r\n      </div>\r\n    </div>\r\n    <div class="form-actions">\r\n      <div class="submit">\r\n        <input type="submit" name="button-login" id="button-login" ng-disabled="!loginForm.$valid || loading" value="{{loading ? loadingText : \'Log In\'}}" class="btn btn-primary pull-right">\r\n      </div>\r\n    </div>\r\n  </form>\r\n  </div>\r\n  <div class="extra-actions">\r\n    <div class="submit">\r\n      <a ng-click="gotoSignUp()"   name="button-signUp" id="button-signUp" value="Sign Up"\r\n         class="btn btn-primary pull-left">Register</a>\r\n    </div>\r\n    <div class="submit">\r\n      <a ng-click="gotoForgotPasswordPage()" name="button-forgot-password" id="button-forgot-password"\r\n         value="" class="btn btn-primary pull-left">Forgot Password?</a>\r\n    </div>\r\n    <a ng-click="showModal(\'sendActivationLink\')"  name="button-resend-activation" id="button-resend-activation"\r\n       value="" class="btn btn-primary pull-left">Resend Activation Link</a>\r\n  </div>\r\n  <div id="gtm" style="width: 450px;margin-top: 4em;" />\r\n</div>\r\n'),$templateCache.put("login/logout.html",'<div id="logut">Logging out...</div>'),$templateCache.put("login/register.html",'<div class="signUp-content">\n  <div class="signUp-holder">\n    <form name="signUpform" id="signUp-form" ng-submit="register()" class="form-horizontal" ng-show="!signUpSuccess" novalidate>\n      <h1 class="title">Register</h1>\n\n      <div class="alert" ng-if="loginMessage">{{loginMessage}}</div>\n      <div class="control-group">\n        <label class="control-label" for="register-orgName">Organization:</label>\n\n        <div class="controls">\n          <input type="text" ng-model="registeredUser.orgName" id="register-orgName" ng-pattern="appNameRegex" ng-attr-title="{{appNameRegexDescription}}" ug-validate  required class="" size="20">\n        </div>\n      </div>\n\n      <div class="control-group">\n        <label class="control-label" for="register-name">Name:</label>\n\n        <div class="controls">\n          <input type="text" ng-model="registeredUser.name" id="register-name" ng-pattern="nameRegex" ng-attr-title="{{nameRegexDescription}}" ug-validate required class="" size="20">\n        </div>\n      </div>\n\n      <div class="control-group">\n        <label class="control-label" for="register-userName">Username:</label>\n\n        <div class="controls">\n          <input type="text" ng-model="registeredUser.userName" id="register-userName" ng-pattern="usernameRegex" ng-attr-title="{{usernameRegexDescription}}" ug-validate required class="" size="20">\n        </div>\n      </div>\n\n      <div class="control-group">\n        <label class="control-label" for="register-email">Email:</label>\n\n        <div class="controls">\n          <input type="email" ng-model="registeredUser.email" id="register-email"  ng-pattern="emailRegex" ng-attr-title="{{emailRegexDescription}}"  required class="" ug-validate size="20">\n        </div>\n      </div>\n\n\n      <div class="control-group">\n        <label class="control-label" for="register-password">Password:</label>\n\n        <div class="controls">\n          <input type="password" ng-pattern="passwordRegex" ng-attr-title="{{passwordRegexDescription}}" ug-validate ng-model="registeredUser.password" id="register-password" required class=""\n                 size="20">\n        </div>\n      </div>\n      <div class="control-group">\n        <label class="control-label" for="register-confirmPassword">Re-enter Password:</label>\n\n        <div class="controls">\n          <input type="password" ng-model="registeredUser.confirmPassword" required id="register-confirmPassword" ug-validate class="" size="20">\n        </div>\n      </div>\n      <div class="form-actions">\n        <div class="submit">\n          <input type="submit" name="button-login" ng-disabled="!signUpform.$valid" id="button-login" value="Register"\n                 class="btn btn-primary pull-right">\n        </div>\n        <div class="submit">\n          <a ng-click="cancel()" type="submit" name="button-cancel" id="button-cancel"\n             class="btn btn-primary pull-right">Cancel</a>\n        </div>\n      </div>\n    </form>\n    <div class="console-section well thingy" ng-show="signUpSuccess">\n      <span class="title">We\'re holding a seat for you!</span>\n      <br><br>\n\n      <p>Thanks for signing up for a spot on our private beta. We will send you an email as soon as we\'re ready for\n        you!</p>\n\n      <p>In the mean time, you can stay up to date with App Services on our <a\n          href="https://groups.google.com/forum/?fromgroups#!forum/usergrid">GoogleGroup</a>.</p>\n\n      <p> <a href="#!/login">Back to login</a></p>\n    </div>\n  </div>\n\n</div>\n'),$templateCache.put("menu.html",'<ul class="nav nav-list" menu="sideMenu">\n    <li class="option {{item.active ? \'active\' : \'\'}}" ng-cloak="" ng-repeat="item in menuItems"><a data-ng-href="{{item.path}}"><i class="pictogram" ng-bind-html="item.pic"></i>{{item.title}}</a>\n        <ul class="nav nav-list" ng-if="item.items">\n            <li ng-repeat="subItem in item.items"><a data-ng-href="{{subItem.path}}"><i class="pictogram sub" ng-bind-html="subItem.pic"></i>{{subItem.title}}</a>\n            </li>\n        </ul>\n    </li>\n</ul>'),$templateCache.put("menus/appMenu.html",'<ul id="app-menu" class="nav top-nav span12">\n    <li class="span7">\n      <bsmodal id="newApplication"\n               title="Create New Application"\n               close="hideModal"\n               closelabel="Cancel"\n               extrabutton="newApplicationDialog"\n               extrabuttonlabel="Create"\n               buttonid="app"\n               ng-cloak>\n        <div ng-show="!hasApplications" class="modal-instructions" >You have no applications, please create one.</div>\n        <div  ng-show="hasCreateApplicationError" class="alert-error">Application already exists!</div>\n        <p>New application name: <input ng-model="$parent.newApp.name" id="app-name-input" ng-pattern="appNameRegex"  ng-attr-title="{{appNameRegexDescription}}" type="text" required ug-validate /></p>\n      </bsmodal>\n        <div class="btn-group">\n            <a class="btn dropdown-toggle top-selector app-selector" id="current-app-selector" data-toggle="dropdown">\n                <i class="pictogram">&#9881;</i> {{myApp.currentApp}}\n                <span class="caret"></span>\n            </a>\n            <ul class="dropdown-menu app-nav">\n                <li name="app-selector" ng-repeat="app in applications">\n                    <a id="app-{{app.name}}-link-id" ng-click="appChange(app.name)">{{app.name}}</a>\n                </li>\n            </ul>\n        </div>\n    </li>\n    <li class="span5">\n      <a ng-if="activeUI"\n         class="btn btn-create zero-out pull-right"\n         ng-click="showModal(\'newApplication\')"\n         analytics-on="click"\n         analytics-category="App Services"\n         analytics-label="Button"\n         analytics-event="Add New App"\n        >\n        <i class="pictogram">&#8862;</i>\n        Add New App\n      </a>\n    </li>\n</ul>'),$templateCache.put("menus/orgMenu.html",'<ul class="nav top-nav org-nav">\n  <li>\n<div class="btn-group ">\n    <a class="btn dropdown-toggle top-selector org-selector" id="current-org-selector" data-toggle="dropdown">\n        <i class="pictogram">&#128193</i> {{currentOrg}}<span class="caret"></span>\n        </a>\n    <ul class="dropdown-menu org-nav">\n          <li name="org-selector" ng-repeat="(k,v) in organizations">\n              <a id="org-{{v.name}}-selector" class="org-overview" ng-click="orgChange(v.name)"> {{v.name}}</a>\n            </li>\n         </ul>\n    </div>\n  </li></ul>'),$templateCache.put("org-overview/org-overview.html",'<div class="org-overview-content" ng-show="activeUI">\n\n  <page-title title=" Org Administration" icon="&#128362;"></page-title>\n\n  <section class="row-fluid">\n\n  <div class="span6">\n  	<bsmodal id="introjs"\n             title="Welcome to the API BaaS Admin Portal"\n             close="hideModal"\n             closelabel="Skip"\n             extrabutton="startFirstTimeUser"\n             extrabuttonlabel="Take the tour"\n             ng-cloak>\n      <p>To get started, click \'Take the tour\' for a full walkthrough of the admin portal, or click \'Skip\' to start working right away.</p>\n    </bsmodal>\n		<div id="intro-4-current-org">	\n	    <h2 class="title">Current Organization <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'current org\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_current_org}}" tooltip-placement="right">(?)</a></h2>\n	    <table class="table table-striped">\n	      <tr>\n	        <td id="org-overview-name">{{currentOrganization.name}}</td>\n	        <td style="text-align: right">{{currentOrganization.uuid}}</td>\n	      </tr>\n	    </table>\n		</div>\n\n    <bsmodal id="newApplication"\n             title="Create New Application"\n             close="hideModal"\n             closelabel="Cancel"\n             extrabutton="newApplicationDialog"\n             extrabuttonlabel="Create"\n             ng-cloak>\n      <p>New application name: <input ng-model="$parent.newApp.name"  ug-validate required type="text" ng-pattern="appNameRegex" ng-attr-title="{{appNameRegexDescription}}" /></p>\n    </bsmodal>\n		<div id="intro-5-applications">		\n	    <h2 class="title" > Applications <a class="help_tooltip" ng-show="help.helpTooltipsEnabled" ng-mouseover="help.sendTooltipGA(\'applications\')" href="#" ng-attr-tooltip="{{tooltip_applications}}" tooltip-placement="right">(?)</a>\n	      <div class="header-button btn-group pull-right">\n	        <a class="btn filter-selector" style="{{applicationsSize === 10 ? \'width:290px\':\'\'}}"  ng-click="showModal(\'newApplication\')">\n	          <span class="filter-label">Add New App</span>\n	        </a>\n	      </div>\n	    </h2>\n		\n	    <table class="table table-striped">\n	      <tr ng-repeat="application in applications">\n	        <td>{{application.name}}</td>\n	        <td style="text-align: right">{{application.uuid}}</td>\n	      </tr>\n	    </table>\n		</div>\n    <bsmodal id="regenerateCredentials"\n             title="Confirmation"\n             close="hideModal"\n             closelabel="Cancel"\n             extrabutton="regenerateCredentialsDialog"\n             extrabuttonlabel="Yes"\n             ng-cloak>\n      Are you sure you want to regenerate the credentials?\n    </bsmodal>\n		<div id="intro-6-org-api-creds">\n	    <h2 class="title" >Organization API Credentials <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'api org credentials\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_org_api_creds}}" tooltip-placement="right">(?)</a>\n	      <div class="header-button btn-group pull-right">\n	        <a class="btn filter-selector" ng-click="showModal(\'regenerateCredentials\')">\n	          <span class="filter-label">Regenerate Org Credentials</span>\n	        </a>\n	      </div>\n	    </h2>\n	\n	    <table class="table table-striped">\n	      <tr>\n	        <td >Client ID</td>\n	        <td style="text-align: right" >{{orgAPICredentials.client_id}}</td>\n	      </tr>\n	      <tr>\n	        <td>Client Secret</td>\n	        <td style="text-align: right">{{orgAPICredentials.client_secret}}</td>\n	      </tr>\n	    </table>\n		</div>\n    <bsmodal id="newAdministrator"\n             title="Create New Administrator"\n             close="hideModal"\n             closelabel="Cancel"\n             extrabutton="newAdministratorDialog"\n             extrabuttonlabel="Create"\n             ng-cloak>\n      <p>New administrator email: <input id="newAdminInput" ug-validate ng-model="$parent.admin.email" pattern="emailRegex" ng-attr-title="{{emailRegexDescription}}" required type="email" /></p>\n    </bsmodal>\n		<div id="intro-7-org-admins">\n	    <h2 class="title" >Organization Administrators <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'org admins\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_org_admins}}" tooltip-placement="right">(?)</a>\n	      <div class="header-button btn-group pull-right">\n	        <a class="btn filter-selector" ng-click="showModal(\'newAdministrator\')">\n	          <span class="filter-label">Add New Administrator</span>\n	        </a>\n	      </div>\n	    </h2>\n	\n	    <table class="table table-striped">\n	      <tr ng-repeat="administrator in orgAdministrators">\n	        <td><img style="width:30px;height:30px;" ng-src="{{administrator.image}}"> {{administrator.name}}</td>\n	        <td style="text-align: right">{{administrator.email}}</td>\n	      </tr>\n	    </table>\n			</div>\n  </div>\n\n  <div class="span6">\n  	<div id="intro-8-activities">\n	    <h2 class="title">Activities <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'activities\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_activities}}" tooltip-placement="right">(?)</a></h2>\n	    <table class="table table-striped">\n	      <tr ng-repeat="activity in activities">\n	        <td>{{activity.title}}</td>\n	        <td style="text-align: right">{{activity.date}}</td>\n	      </tr>\n	    </table>\n	</div>\n  </div>\n\n\n  </section>\n</div>'),$templateCache.put("profile/account.html",'<page-title title=" Account Settings" icon="&#59170"></page-title>\n\n<section class="row-fluid">\n  <div class="span12 tab-content">\n    <div class="menu-toolbar">\n      <ul class="inline">\n        <li class="tab" ng-show="!use_sso" ng-class="currentAccountPage.route === \'/profile/profile\' ? \'selected\' : \'\'"><a class="btn btn-primary toolbar" id="profile-link" ng-click="selectAccountPage(\'/profile/profile\')"><i class="pictogram">&#59170;</i>Profile</a></li>\n        <li class="tab" ng-class="currentAccountPage.route === \'/profile/organizations\' ? \'selected\' : \'\'"><a class="btn btn-primary toolbar" id="account-link" ng-click="selectAccountPage(\'/profile/organizations\')"><i class="pictogram">&#128101;</i>Organizations</a></li>\n      </ul>\n    </div>\n    <span ng-include="currentAccountPage.template"></span>\n  </div>\n</section>'),$templateCache.put("profile/organizations.html",'<div class="content-page"   ng-controller="OrgCtrl">\n\n<page-title title=" Organizations" icon="&#128362;"></page-title>\n\n\n  <bsmodal id="newOrganization"\n           title="Create New Organization"\n           close="hideModal"\n           closelabel="Cancel"\n           extrabutton="addOrganization"\n           extrabuttonlabel="Create"\n           ng-cloak>\n    <fieldset>\n\n      <div class="control-group">\n        <label for="new-user-orgname">Organization Name</label>\n\n        <div class="controls">\n          <input type="text" required title="Name" ug-validate ng-pattern="nameRegex" ng-attr-title="{{nameRegexDescription}}" ng-model="$parent.org.name" name="name" id="new-user-orgname" class="input-xlarge"/>\n\n          <p class="help-block hide"></p>\n        </div>\n      </div>\n\n    </fieldset>\n  </bsmodal>\n\n\n      <div class="row-fluid" >\n      <div class="span3 user-col ">\n\n        <div class="button-toolbar span12">\n\n          <button class="btn btn-primary toolbar" ng-click="showModal(\'newOrganization\')" title="add organization" ng-show="true"><i class="pictogram">&#57347;</i>\n          </button>\n        </div>\n        <ul class="user-list">\n          <li ng-class="selectedOrg.uuid === org.uuid ? \'selected\' : \'\'"\n              ng-repeat="org in orgs" ng-click=" selectOrganization(org)">\n\n            <a href="javaScript:void(0)">{{org.name}}</a>\n          </li>\n        </ul>\n      </div>\n      <div class="span9">\n        <div class="row-fluid" >\n          <h4>Organization Information</h4>\n          <div class="span11" ng-show="selectedOrg">\n            <label  class="ui-dform-label">Applications</label>\n            <table class="table table-striped">\n              <tr ng-repeat="app in selectedOrg.applicationsArray">\n                <td> {{app.name}}</td>\n                <td style="text-align: right">{{app.uuid}}</td>\n              </tr>\n            </table>\n            <br/>\n            <label  class="ui-dform-label">Users</label>\n            <table class="table table-striped">\n              <tr ng-repeat="user in selectedOrg.usersArray">\n                <td> {{user.name}}</td>\n                <td style="text-align: right">{{user.email}}</td>\n              </tr>\n            </table>\n            <form ng-submit="leaveOrganization(selectedOrg)">\n              <input type="submit" name="button-leave-org" id="button-leave-org" title="Can only leave if organization has more than 1 user." ng-disabled="!doesOrgHaveUsers(selectedOrg)" value="Leave Organization" class="btn btn-primary pull-right">\n            </form>\n          </div>\n        </div>\n\n      </div>\n        </div>\n</div>'),$templateCache.put("profile/profile.html",'\n<div class="content-page" ng-controller="ProfileCtrl">\n<page-title title=" Profile" icon="&#59170"></page-title>\n\n  <div id="account-panels">\n    <div class="panel-content">\n      <div class="console-section">\n        <div class="console-section-contents">\n          <form name="updateAccountForm" id="update-account-form" ng-submit="saveUserInfo()" class="form-horizontal">\n            <fieldset>\n              <div class="control-group">\n                <label id="update-account-id-label" class="control-label" for="update-account-id">UUID</label>\n                <div class="controls">\n                  <span id="update-account-id" class="monospace">{{user.uuid}}</span>\n                </div>\n              </div>\n              <div class="control-group">\n                <label class="control-label" for="update-account-username">Username </label>\n                <div class="controls">\n                  <input type="text" ug-validate name="update-account-username" required ng-pattern="usernameRegex" id="update-account-username" ng-attr-title="{{usernameRegexDescription}}"  class="span4" ng-model="user.username" size="20"/>\n                </div>\n              </div>\n              <div class="control-group">\n                <label class="control-label" for="update-account-name">Name </label>\n                <div class="controls">\n                  <input type="text" ug-validate name="update-account-name" id="update-account-name" ng-pattern="nameRegex" ng-attr-title="{{nameRegexDescription}}" class="span4" ng-model="user.name" size="20"/>\n                </div>\n              </div>\n              <div class="control-group">\n                <label class="control-label" for="update-account-email"> Email</label>\n                <div class="controls">\n                  <input type="email" ug-validate required name="update-account-email" ng-pattern="emailRegex" ng-attr-title="{{emailRegexDescription}}"  id="update-account-email" class="span4" ng-model="user.email" size="20"/>\n                </div>\n              </div>\n              <div class="control-group">\n                <label class="control-label" for="update-account-picture-img">Picture <br />(from <a href="http://gravatar.com">gravatar.com</a>) </label>\n                <div class="controls">\n                  <img id="update-account-picture-img" ng-src="{{user.profileImg}}" width="50" />\n                </div>\n              </div>\n              <span class="help-block">Leave blank any of the following to keep the current password unchanged</span>\n              <br />\n              <div class="control-group">\n                <label class="control-label" for="old-account-password">Old Password</label>\n                <div class="controls">\n                  <input type="password" ug-validate name="old-account-password"  id="old-account-password" class="span4" ng-model="user.oldPassword" size="20"/>\n                </div>\n              </div>\n              <div class="control-group">\n                <label class="control-label" for="update-account-password">New Password</label>\n                <div class="controls">\n                  <input type="password"  ug-validate name="update-account-password" ng-pattern="passwordRegex" ng-attr-title="{{passwordRegexDescription}}" id="update-account-password" class="span4" ng-model="user.newPassword" size="20"/>\n                </div>\n              </div>\n              <div class="control-group" style="display:none">\n                <label class="control-label" for="update-account-password-repeat">Confirm New Password</label>\n                <div class="controls">\n                  <input type="password" ug-validate name="update-account-password-repeat" ng-pattern="passwordRegex" ng-attr-title="{{passwordRegexDescription}}" id="update-account-password-repeat" class="span4" ng-model="user.newPasswordConfirm" size="20"/>\n                </div>\n              </div>\n            </fieldset>\n            <div class="form-actions">\n              <input type="submit"  class="btn btn-primary"  name="button-update-account" ng-disabled="!updateAccountForm.$valid || loading" id="button-update-account" value="{{loading ? loadingText : \'Update\'}}"  class="btn btn-usergrid"/>\n            </div>\n          </form>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>'),$templateCache.put("roles/roles-groups.html",'<div class="content-page" ng-controller="RolesGroupsCtrl">\n\n\n  <bsmodal id="addRoleToGroup"\n           title="Add group to role"\n           close="hideModal"\n           closelabel="Cancel"\n           extrabutton="addRoleToGroupDialog"\n           extrabuttonlabel="Add"\n           ng-cloak>\n    <div class="btn-group">\n      <a class="btn dropdown-toggle filter-selector" data-toggle="dropdown">\n        <span class="filter-label">{{$parent.path !== \'\' ? $parent.title : \'Select a group...\'}}</span>\n        <span class="caret"></span>\n      </a>\n      <ul class="dropdown-menu">\n        <li ng-repeat="group in $parent.groupsTypeaheadValues" class="filterItem"><a ng-click="setRoleModal(group)">{{group.title}}</a></li>\n      </ul>\n    </div>\n  </bsmodal>\n\n  <bsmodal id="removeGroupFromRole"\n           title="Confirmation"\n           close="hideModal"\n           closelabel="Cancel"\n           extrabutton="removeGroupFromRoleDialog"\n           extrabuttonlabel="Leave"\n           ng-cloak>\n    <p>Are you sure you want to remove the group from the role(s)?</p>\n  </bsmodal>\n\n\n  <div class="users-section">\n    <div class="button-strip">\n      <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'group add user button\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_roles_groups_add_group}}" tooltip-placement="left">(?)</a>\n        <button class="btn btn-primary" ng-click="showModal(\'addRoleToGroup\')">Add Group to Role</button>\n        <button class="btn btn-primary"  ng-disabled="!hasGroups || !valueSelected(rolesCollection.groups._list)" ng-click="showModal(\'removeGroupFromRole\')">Remove Group(s) from Role</button>\n    </div>\n    <table class="table table-striped">\n      <tr class="table-header">\n        <td style="width: 30px;"><input type="checkbox" ng-show="hasGroups" id="selectAllCheckBox" ng-model="roleGroupsSelected" ng-click="selectAllEntities(rolesCollection.groups._list,this,\'roleGroupsSelected\')"></td>\n        <td>Title</td>\n        <td>Path</td>\n      </tr>\n      <tr class="zebraRows" ng-repeat="group in rolesCollection.groups._list">\n        <td>\n          <input\n            type="checkbox"\n            ng-model="group.checked"\n            >\n        </td>\n        <td>{{group._data.title}}</td>\n        <td>{{group._data.path}}</td>\n      </tr>\n    </table>\n    <div style="padding: 10px 5px 10px 5px">\n      <button class="btn btn-primary" ng-click="getPrevious()" style="display:{{previous_display}}">< Previous</button>\n      <button class="btn btn-primary" ng-click="getNext()" style="display:{{next_display}}" style="float:right;">Next ></button>\n    </div>\n  </div>\n</div>'),$templateCache.put("roles/roles-settings.html",'<div class="content-page" ng-controller="RolesSettingsCtrl">\n  <bsmodal id="deletePermission"\n           title="Confirmation"\n           close="hideModal"\n           closelabel="Cancel"\n           extrabutton="deleteRolePermissionDialog"\n           extrabuttonlabel="Delete"\n           ng-cloak>\n    <p>Are you sure you want to delete the permission(s)?</p>\n  </bsmodal>\n\n\n  <bsmodal id="addPermission"\n           title="New Permission"\n           close="hideModal"\n           closelabel="Cancel"\n           extrabutton="addRolePermissionDialog"\n           extrabuttonlabel="Add"\n           ng-cloak>\n    <p>Path: <input ng-model="$parent.permissions.path" placeholder="ex: /mydata" required ng-pattern="pathRegex" ng-attr-title="{{pathRegexDescription}}" ug-validate id="rolePermissionsPath"/> <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'users roles new permission path box\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_roles_roles_new_permission_path}}" tooltip-placement="right">(?)</a></p>\n    <div class="control-group">\n      <input type="checkbox" ng-model="$parent.permissions.getPerm"> GET <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'users roles add permission verbs\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_roles_new_permission_verbs}}" tooltip-placement="right">(?)</a>\n    </div>\n    <div class="control-group">\n      <input type="checkbox" ng-model="$parent.permissions.postPerm"> POST\n    </div>\n    <div class="control-group">\n      <input type="checkbox" ng-model="$parent.permissions.putPerm"> PUT\n    </div>\n    <div class="control-group">\n      <input type="checkbox" ng-model="$parent.permissions.deletePerm"> DELETE\n    </div>\n  </bsmodal>\n\n  <div>\n    <h4>Inactivity <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'users roles inactivity\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_roles_inactivity}}" tooltip-placement="right">(?)</a></h4>\n    <div id="role-permissions">\n        <p>Integer only. 0 (zero) means no expiration.</p>\n\n        <form name="updateActivity" ng-submit="updateInactivity()" novalidate>\n            Seconds: <input style="margin: 0" type="number" required name="role-inactivity"\n                            id="role-inactivity-input" min="0" ng-model="role._data.inactivity" title="Please input a positive integer >= 0."  step = "any" ug-validate >\n            <input type="submit" class="btn btn-primary" ng-disabled="!updateActivity.$valid" value="Set"/>\n        </form>\n    </div>\n\n    <br/>\n    <div class="button-strip">\n      <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'roles details add permission button\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_roles_add_delete_permission}}" tooltip-placement="left">(?)</a>\n      <button class="btn btn-primary" ng-click="showModal(\'addPermission\')">Add Permission</button>\n      <button class="btn btn-primary"  ng-disabled="!hasSettings || !valueSelected(role.permissions)" ng-click="showModal(\'deletePermission\')">Delete Permission(s)</button>\n    </div>\n\n    <h4>Permissions <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'roles settings permissions list\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_roles_permissions}}" tooltip-placement="top">(?)</a></h4>\n    <table class="table table-striped">\n      <tbody>\n      <tr class="table-header">\n        <td style="width: 30px;"><input type="checkbox" ng-show="hasSettings" id="selectAllCheckBox" ng-model="permissionsSelected" ng-click="selectAllEntities(role.permissions,this,\'permissionsSelected\')" ></td>\n        <td>Path</td>\n        <td>GET</td>\n        <td>POST</td>\n        <td>PUT</td>\n        <td>DELETE</td>\n      </tr>\n      <tr class="zebraRows" ng-repeat="permission in role.permissions">\n        <td>\n          <input\n            type="checkbox"\n            ng-model="permission.checked"\n            >\n        </td>\n        <td>{{permission.path}}</td>\n        <td>{{permission.operations.get}}</td>\n        <td>{{permission.operations.post}}</td>\n        <td>{{permission.operations.put}}</td>\n        <td>{{permission.operations.delete}}</td>\n      </tr>\n      </tbody>\n    </table>\n  </div>\n</div>'),$templateCache.put("roles/roles-tabs.html",'<div class="content-page">\n  <section class="row-fluid">\n\n    <div class="span12">\n      <div class="page-filters">\n        <h1 class="title" class="pull-left"><i class="pictogram title">&#59170;</i> Roles </h1>\n        <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'roles page title\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_roles_page_title}}" tooltip-placement="right">(?)</a>\n      </div>\n    </div>\n\n  </section>\n\n  <div id="user-panel" class="panel-buffer">\n    <ul id="user-panel-tab-bar" class="nav nav-tabs">\n      <li><a href="javaScript:void(0);" ng-click="gotoPage(\'roles\')">Roles List</a></li>\n      <li ng-class="settingsSelected"><a href="javaScript:void(0);" ng-click="gotoPage(\'roles/settings\')">Settings</a></li>\n      <li ng-class="usersSelected"><a href="javaScript:void(0);" ng-click="gotoPage(\'roles/users\')">Users</a></li>\n      <li ng-class="groupsSelected"><a href="javaScript:void(0);" ng-click="gotoPage(\'roles/groups\')">Groups</a></li>\n    </ul>\n  </div>\n\n  <div style="float: left; margin-right: 10px;">\n    <div style="float: left;">\n      <div class="user-header-title"><strong>Role Name: </strong>{{selectedRole.name}}</div>\n      <div class="user-header-title"><strong>Role Title: </strong>{{selectedRole.title}}</div>\n    </div>\n  </div>\n\n</div>\n<br>\n<br>'),$templateCache.put("roles/roles-users.html",'<div class="content-page" ng-controller="RolesUsersCtrl">\n  <bsmodal id="removeFromRole"\n           title="Confirmation"\n           close="hideModal"\n           closelabel="Cancel"\n           extrabutton="removeUsersFromGroupDialog"\n           extrabuttonlabel="Delete"\n           ng-cloak>\n    <p>Are you sure you want to remove the users from the seleted role(s)?</p>\n  </bsmodal>\n\n  <bsmodal id="addRoleToUser"\n           title="Add user to role"\n           close="hideModal"\n           closelabel="Cancel"\n           extrabutton="addRoleToUserDialog"\n           extrabuttonlabel="Add"\n           ng-cloak>\n    <div class="btn-group">\n      <a class="btn dropdown-toggle filter-selector" data-toggle="dropdown">\n        <span class="filter-label">{{$parent.user.username ? $parent.user.username : \'Select a user...\'}}</span>\n        <span class="caret"></span>\n      </a>\n      <ul class="dropdown-menu">\n        <li ng-repeat="user in $parent.usersTypeaheadValues" class="filterItem"><a ng-click="$parent.$parent.user = user">{{user.username}}</a></li>\n      </ul>\n    </div>\n  </bsmodal>\n\n  <div class="users-section">\n    <div class="button-strip">\n      <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'roles add user button\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_roles_users_add_user}}" tooltip-placement="left">(?)</a>\n        <button class="btn btn-primary" ng-click="showModal(\'addRoleToUser\')">Add User to Role</button>\n        <button class="btn btn-primary"  ng-disabled="!hasUsers || !valueSelected(rolesCollection.users._list)" ng-click="showModal(\'removeFromRole\')">Remove User(s) from Role</button>\n    </div>\n    <table class="table table-striped">\n      <tr class="table-header">\n        <td style="width: 30px;"><input type="checkbox" ng-show="hasUsers" id="selectAllCheckBox" ng-model="roleUsersSelected" ng-click="selectAllEntities(rolesCollection.users._list,this,\'roleUsersSelected\')" ng-model="master"></td>\n        <td style="width: 50px;"></td>\n        <td>Username</td>\n        <td>Display Name</td>\n      </tr>\n      <tr class="zebraRows" ng-repeat="user in rolesCollection.users._list">\n        <td>\n          <input\n            type="checkbox"\n            ng-model="user.checked"\n            >\n        </td>\n        <td><img style="width:30px;height:30px;" ng-src="{{user._portal_image_icon}}"></td>\n        <td>{{user._data.username}}</td>\n        <td>{{user._data.name}}</td>\n      </tr>\n    </table>\n    <div style="padding: 10px 5px 10px 5px">\n      <button class="btn btn-primary" ng-click="getPrevious()" style="display:{{previous_display}}">< Previous</button>\n      <button class="btn btn-primary" ng-click="getNext()" style="display:{{next_display}}; float:right;">Next ></button>\n    </div>\n  </div>\n</div>'),$templateCache.put("roles/roles.html",'<div class="content-page">\n  <div id="intro-page" >\n    <page-title title=" Roles" icon="&#59170;"></page-title>\n  </div>\n\n  <bsmodal id="newRole"\n           title="New Role"\n           close="hideModal"\n           closelabel="Cancel"\n           extrabutton="newRoleDialog"\n           extrabuttonlabel="Create"\n           buttonid="roles"\n           ng-cloak>\n          <fieldset>\n            <div class="control-group">\n              <label for="new-role-roletitle">Title</label>\n              <div class="controls">\n                <input type="text" ng-pattern="titleRegex" ng-attr-title="{{titleRegexDescription}}" required ng-model="$parent.newRole.title" name="roletitle" id="new-role-roletitle" class="input-xlarge" ug-validate/>\n                <p class="help-block hide"></p>\n              </div>\n            </div>\n            <div class="control-group">\n              <label for="new-role-rolename">Role Name</label>\n              <div class="controls">\n                <input type="text" required ng-pattern="roleNameRegex" ng-attr-title="{{roleNameRegexDescription}}" ng-model="$parent.newRole.name" name="rolename" id="new-role-rolename" class="input-xlarge" ug-validate/>\n                <p class="help-block hide"></p>\n              </div>\n            </div>\n          </fieldset>\n  </bsmodal>\n\n  <bsmodal id="deleteRole"\n           title="Delete Role"\n           close="hideModal"\n           closelabel="Cancel"\n           buttonid="deleteroles"\n           extrabutton="deleteRoleDialog"\n           extrabuttonlabel="Delete"\n           ng-cloak>\n    <p>Are you sure you want to delete the role(s)?</p>\n  </bsmodal>\n\n  <section class="row-fluid">\n    <div id="intro-list" class="span3 user-col">\n\n      <div class="button-toolbar span12">\n        <a title="Select All" class="btn btn-primary select-all toolbar" ng-show="hasRoles" ng-click="selectAllEntities(rolesCollection._list,this,\'rolesSelected\',true)"> <i class="pictogram">&#8863;</i></a>\n        <button id="delete-role-btn" title="Delete" class="btn btn-primary toolbar"  ng-disabled="!hasRoles || !valueSelected(rolesCollection._list)" ng-click="showModal(\'deleteRole\')"><i class="pictogram">&#9749;</i></button>\n        <button id="add-role-btn" title="Add" class="btn btn-primary toolbar" ng-click="showModal(\'newRole\')"><i class="pictogram">&#57347;</i></button>\n        <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'users add remove buttons\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_roles_add_remove_buttons}}" tooltip-placement="right">(?)</a>      </div>\n\n      <ul class="user-list">\n        <li ng-class="selectedRole._data.uuid === role._data.uuid ? \'selected\' : \'\'" ng-repeat="role in rolesCollection._list" ng-click="selectRole(role._data.uuid)">\n          <input\n              type="checkbox"\n              ng-value="role.get(\'uuid\')"\n              ng-checked="master"\n              ng-model="role.checked"\n              id="role-{{role.get(\'title\')}}-cb"\n              >\n          <a id="role-{{role.get(\'title\')}}-link">{{role.get(\'title\')}}</a>\n          <br/>\n          <span ng-if="role.get(\'name\')" class="label">Role Name:</span>{{role.get(\'name\')}}\n        </li>\n      </ul>\n\n\n\n  <div style="padding: 10px 5px 10px 5px">\n    <button class="btn btn-primary" ng-click="getPrevious()" style="display:{{previous_display}}">< Previous</button>\n    <button class="btn btn-primary" ng-click="getNext()" style="display:{{next_display}};float:right;">Next ></button>\n  </div>\n\n    </div>\n    \n    <div id="intro-information-tabs" class="span9 tab-content" ng-show="hasRoles">\n      <div class="menu-toolbar">\n        <ul class="inline">\n          <li class="tab" ng-class="currentRolesPage.route === \'/roles/settings\' ? \'selected\' : \'\'"><div class="btn btn-primary toolbar" ><a class="btn-content" ng-click="selectRolePage(\'/roles/settings\')"><i class="pictogram">&#59170;</i>Settings</a> <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'roles settings tab\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_roles_settings_tab}}" tooltip-placement="right">(?)</a></div></li>\n          <li class="tab" ng-class="currentRolesPage.route === \'/roles/users\' ? \'selected\' : \'\'"><div class="btn btn-primary toolbar" ><a class="btn-content" ng-click="selectRolePage(\'/roles/users\')"><i class="pictogram">&#128101;</i>Users</a> <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'roles users tab\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_roles_users_tab}}" tooltip-placement="right">(?)</a></div></li>\n          <li class="tab" ng-class="currentRolesPage.route === \'/roles/groups\' ? \'selected\' : \'\'"><div class="btn btn-primary toolbar" ><a class="btn-content" ng-click="selectRolePage(\'/roles/groups\')"><i class="pictogram">&#59194;</i>Groups</a> <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'roles groups tab\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_roles_groups_tab}}" tooltip-placement="right">(?)</a></div></li>\n        </ul>\n      </div>\n      <span ng-include="currentRolesPage.template"></span>\n    </div>\n  </section>\n</div>'),$templateCache.put("shell/shell.html",'<page-title title=" Shell" icon="&#128241;"></page-title>\n\n<section class="row-fluid">\n  <div class="console-section-contents" id="shell-panel">\n    <div id="shell-input-div">\n      <p> Type "help" to view a list of the available commands.</p>\n      <hr>\n\n      <form name="shellForm" ng-submit="submitCommand()" >\n        <span>&nbsp;&gt;&gt; </span>\n        <input  type="text" id="shell-input"  ng-model="shell.input" autofocus="autofocus" required\n                  ng-form="shellForm">\n        <input style="display: none" type="submit" ng-form="shellForm" value="submit" ng-disabled="!shell.input"/>\n      </form>\n    </div>\n    <pre id="shell-output" class="prettyprint lang-js" style="overflow-x: auto; height: 400px;" ng-bind-html="shell.output">\n\n    </pre>\n    <div id="lastshelloutput" ng-bind-html="shell.outputhidden" style="visibility:hidden"></div>\n  </div>\n</section>\n'),$templateCache.put("users/users-activities.html",'<div class="content-page" ng-controller="UsersActivitiesCtrl" >\n\n  <bsmodal id="addActivityToUser"\n           title="Add activity to user"\n           close="hideModal"\n           closelabel="Cancel"\n           extrabutton="addActivityToUserDialog"\n           extrabuttonlabel="Add"\n           ng-cloak>\n    <p>Content: <input id="activityMessage" ng-model="$parent.newActivity.activityToAdd" required name="activityMessage" ug-validate /> <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'users add activity content\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_activities_add_activity_content}}" tooltip-placement="right">(?)</a></p>\n  </bsmodal>\n\n\n  <div ng:include="\'users/users-tabs.html\'"></div>\n  <br>\n    <div class="button-strip"><a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'users add activity button\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_activities_add_activity}}" tooltip-placement="left">(?)</a> \n    <button class="btn btn-primary" ng-click="showModal(\'addActivityToUser\')">Add activity to user</button>\n  </div>\n  <div>\n    <table class="table table-striped">\n      <tbody>\n      <tr class="table-header">\n        <td>Date</td>\n        <td>Content</td>\n        <td>Verb</td>\n        <td>UUID</td>\n      </tr>\n      <tr class="zebraRows" ng-repeat="activity in activities">\n        <td>{{activity.createdDate}}</td>\n        <td>{{activity.content}}</td>\n        <td>{{activity.verb}}</td>\n        <td>{{activity.uuid}}</td>\n      </tr>\n      </tbody>\n    </table>\n  </div>\n\n\n</div>\n'),$templateCache.put("users/users-feed.html",'<div class="content-page" ng-controller="UsersFeedCtrl" >\n\n    <div ng:include="\'users/users-tabs.html\'"></div>\n    <br>\n    <div>\n        <table class="table table-striped">\n            <tbody>\n            <tr class="table-header">\n                <td>Date</td>\n                <td>User</td>\n                <td>Content</td>\n                <td>Verb</td>\n                <td>UUID</td>\n            </tr>\n            <tr class="zebraRows" ng-repeat="activity in activities">\n                <td>{{activity.createdDate}}</td>\n                <td>{{activity.actor.displayName}}</td>\n                <td>{{activity.content}}</td>\n                <td>{{activity.verb}}</td>\n                <td>{{activity.uuid}}</td>\n            </tr>\n            </tbody>\n        </table>\n    </div>\n\n\n</div>\n'),$templateCache.put("users/users-graph.html",'<div class="content-page" ng-controller="UsersGraphCtrl">\n\n  <div ng:include="\'users/users-tabs.html\'"></div>\n\n  <div>\n\n    <bsmodal id="followUser"\n             title="Follow User"\n             close="hideModal"\n             closelabel="Cancel"\n             extrabutton="followUserDialog"\n             extrabuttonlabel="Add"\n             ng-cloak>\n      <div class="btn-group">\n        <a class="btn dropdown-toggle filter-selector" data-toggle="dropdown">\n          <span class="filter-label">{{$parent.user != \'\' ? $parent.user.username : \'Select a user...\'}}</span>\n          <span class="caret"></span>\n        </a>\n        <ul class="dropdown-menu">\n          <li ng-repeat="user in $parent.usersTypeaheadValues" class="filterItem"><a ng-click="$parent.$parent.user = user">{{user.username}}</a></li>\n        </ul>\n      </div>\n    </bsmodal>\n\n\n    <div class="button-strip">\n      <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'users follow user\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_graph_follow_user}}" tooltip-placement="left">(?)</a> \n      <button class="btn btn-primary" ng-click="showModal(\'followUser\')">Follow User</button>\n    </div>\n    <br>\n      <h4>Following <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'users following list\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_graph_following}}" tooltip-placement="right">(?)</a></h4>\n    <table class="table table-striped">\n      <tbody>\n      <tr class="table-header">\n        <td>Image</td>\n        <td>Username</td>\n        <td>Email</td>\n        <td>UUID</td>\n      </tr>\n      <tr class="zebraRows" ng-repeat="user in selectedUser.following">\n        <td><img style="width:30px;height:30px;" ng-src="{{user._portal_image_icon}}"></td>\n        <td>{{user.username}}</td>\n        <td>{{user.email}}</td>\n        <td>{{user.uuid}}</td>\n      </tr>\n      </tbody>\n    </table>\n\n      <h4>Followers <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'users followers list\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_graph_followers}}" tooltip-placement="right">(?)</a></h4>\n    <table class="table table-striped">\n      <tbody>\n      <tr class="table-header">\n        <td>Image</td>\n        <td>Username</td>\n        <td>Email</td>\n        <td>UUID</td>\n      </tr>\n      <tr class="zebraRows" ng-repeat="user in selectedUser.followers">\n        <td><img style="width:30px;height:30px;" ng-src="{{user._portal_image_icon}}"></td>\n        <td>{{user.username}}</td>\n        <td>{{user.email}}</td>\n        <td>{{user.uuid}}</td>\n      </tr>\n      </tbody>\n    </table>\n\n  </div>\n</div>'),$templateCache.put("users/users-groups.html",'<div class="content-page" ng-controller="UsersGroupsCtrl">\n\n  <div ng:include="\'users/users-tabs.html\'"></div>\n\n  <div>\n\n    <bsmodal id="addUserToGroup"\n             title="Add user to group"\n             close="hideModal"\n             closelabel="Cancel"\n             extrabutton="addUserToGroupDialog"\n             extrabuttonlabel="Add"\n             ng-cloak>\n      <div class="btn-group">\n        <a class="btn dropdown-toggle filter-selector" data-toggle="dropdown">\n          <span class="filter-label">{{$parent.title && $parent.title !== \'\' ? $parent.title : \'Select a group...\'}}</span>\n          <span class="caret"></span>\n        </a>\n        <ul class="dropdown-menu">\n          <li ng-repeat="group in $parent.groupsTypeaheadValues" class="filterItem"><a ng-click="selectGroup(group)">{{group.title}}</a></li>\n        </ul>\n      </div>\n    </bsmodal>\n\n    <bsmodal id="leaveGroup"\n             title="Confirmation"\n             close="hideModal"\n             closelabel="Cancel"\n             extrabutton="leaveGroupDialog"\n             extrabuttonlabel="Leave"\n             ng-cloak>\n      <p>Are you sure you want to remove the user from the seleted group(s)?</p>\n    </bsmodal>\n\n    <div class="button-strip">\n      <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'users add leave group buttons\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_groups_add_leave_buttons}}" tooltip-placement="left">(?)</a>\n      <button class="btn btn-primary" ng-click="showModal(\'addUserToGroup\')">Add to group</button>\n      <button class="btn btn-primary" ng-disabled="!hasGroups || !valueSelected(userGroupsCollection._list)" ng-click="showModal(\'leaveGroup\')">Leave group(s)</button>\n    </div>\n    <table class="table table-striped">\n      <tbody>\n      <tr class="table-header">\n        <td>\n          <input type="checkbox" ng-show="hasGroups" id="selectAllCheckBox" ng-model="userGroupsSelected" ng-click="selectAllEntities(userGroupsCollection._list,this,\'userGroupsSelected\')" >\n        </td>\n        <td>Group Name <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'add user group list\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_groups_group_name}}" tooltip-placement="top">(?)</a></td>\n        <td>Path</td>\n      </tr>\n      <tr class="zebraRows" ng-repeat="group in userGroupsCollection._list">\n        <td>\n          <input\n            type="checkbox"\n            ng-value="group.get(\'uuid\')"\n            ng-model="group.checked"\n            >\n        </td>\n        <td>{{group.get(\'title\')}}</td>\n        <td>{{group.get(\'path\')}}</td>\n      </tr>\n      </tbody>\n    </table>\n  </div>\n  <div style="padding: 10px 5px 10px 5px">\n    <button class="btn btn-primary" ng-click="getPrevious()" style="display:{{previous_display}}">< Previous</button>\n    <button class="btn btn-primary" ng-click="getNext()" style="display:{{next_display}}; float:right;">Next ></button>\n  </div>\n\n</div>\n'),$templateCache.put("users/users-profile.html",'<div class="content-page" ng-controller="UsersProfileCtrl">\n\n  <div ng:include="\'users/users-tabs.html\'"></div>\n\n  <div class="row-fluid">\n\n  <form ng-submit="saveSelectedUser()" name="profileForm" novalidate>\n    <div class="span6">\n      <h4>User Information <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'users profile information\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_profile_information}}" tooltip-placement="top">(?)</a></h4>\n      <label for="ui-form-username" class="ui-dform-label">Username</label>\n      <input type="text" ug-validate required  name="ui-form-username" ng-pattern="usernameRegex" ng-attr-title="{{usernameRegexDescription}}" id="ui-form-username" class="ui-dform-text" ng-model="user.username">\n      <br/>\n      <label for="ui-form-name" class="ui-dform-label">Full Name</label>\n      <input type="text" ug-validate ng-pattern="nameRegex" ng-attr-title="{{nameRegexDescription}}" required name="ui-form-name" id="ui-form-name" class="ui-dform-text" ng-model="user.name">\n      <br/>\n      <label for="ui-form-title" class="ui-dform-label">Title</label>\n      <input type="text" ug-validate name="ui-form-title" id="ui-form-title" class="ui-dform-text" ng-model="user.title">\n      <br/>\n      <label for="ui-form-url" class="ui-dform-label">Home Page</label>\n      <input type="url" ug-validate name="ui-form-url" id="ui-form-url" title="Please enter a valid url." class="ui-dform-text" ng-model="user.url">\n      <br/>\n      <label for="ui-form-email" class="ui-dform-label">Email</label>\n      <input type="email" ug-validate required name="ui-form-email" id="ui-form-email"  ng-pattern="emailRegex" ng-attr-title="{{emailRegexDescription}}" class="ui-dform-text" ng-model="user.email">\n      <br/>\n      <label for="ui-form-tel" class="ui-dform-label">Telephone</label>\n      <input type="tel" ug-validate name="ui-form-tel" id="ui-form-tel" class="ui-dform-text" ng-model="user.tel">\n      <br/>\n      <label for="ui-form-picture" class="ui-dform-label">Picture URL</label>\n      <input type="url" ug-validate name="ui-form-picture" id="ui-form-picture" title="Please enter a valid url." ng class="ui-dform-text" ng-model="user.picture">\n      <br/>\n      <label for="ui-form-bday" class="ui-dform-label">Birthday</label>\n      <input type="date" ug-validate name="ui-form-bday" id="ui-form-bday" class="ui-dform-text" ng-model="user.bday">\n      <br/>\n    </div>\n    <div class="span6">\n      <h4>Address</h4>\n      <label for="ui-form-addr1" class="ui-dform-label">Street 1</label>\n      <input type="text" ug-validate name="ui-form-addr1" id="ui-form-addr1" class="ui-dform-text" ng-model="user.adr.addr1">\n      <br/>\n      <label for="ui-form-addr2" class="ui-dform-label">Street 2</label>\n      <input type="text" ug-validate name="ui-form-addr2" id="ui-form-addr2" class="ui-dform-text" ng-model="user.adr.addr2">\n      <br/>\n      <label for="ui-form-city" class="ui-dform-label">City</label>\n      <input type="text" ug-validate name="ui-form-city" id="ui-form-city" class="ui-dform-text" ng-model="user.adr.city">\n      <br/>\n      <label for="ui-form-state" class="ui-dform-label">State</label>\n      <input type="text" ug-validate name="ui-form-state" id="ui-form-state"  ng-attr-title="{{stateRegexDescription}}" ng-pattern="stateRegex" class="ui-dform-text" ng-model="user.adr.state">\n      <br/>\n      <label for="ui-form-zip" class="ui-dform-label">Zip</label>\n      <input type="text" ug-validate name="ui-form-zip" ng-pattern="zipRegex" ng-attr-title="{{zipRegexDescription}}" id="ui-form-zip" class="ui-dform-text" ng-model="user.adr.zip">\n      <br/>\n      <label for="ui-form-country" class="ui-dform-label">Country</label>\n      <input type="text" ug-validate name="ui-form-country" ng-attr-title="{{countryRegexDescription}}" ng-pattern="countryRegex" id="ui-form-country" class="ui-dform-text" ng-model="user.adr.country">\n      <br/>\n    </div>\n\n      <div class="span6">\n        <input type="submit" class="btn btn-primary margin-35" ng-disabled="!profileForm.$valid"  value="Save User"/>\n      </div>\n\n\n    <div class="content-container">\n      <legend>JSON User Object <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'users profile json\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_profile_json}}" tooltip-placement="top">(?)</a></legend>\n      <pre id="{{help.showJsonId}}">{{user.json}}</pre>\n    </div>\n    </form>\n  </div>\n\n</div>\n'),$templateCache.put("users/users-roles.html",'<div class="content-page" ng-controller="UsersRolesCtrl">\n\n  <div ng:include="\'users/users-tabs.html\'"></div>\n\n  <div>\n\n    <bsmodal id="addRole"\n             title="Add user to role"\n             close="hideModal"\n             closelabel="Cancel"\n             extrabutton="addUserToRoleDialog"\n             extrabuttonlabel="Add"\n             ng-cloak>\n      <div class="btn-group">\n        <a class="btn dropdown-toggle filter-selector" data-toggle="dropdown">\n          <span class="filter-label">{{$parent.name != \'\' ? $parent.name : \'Select a Role...\'}}</span>\n          <span class="caret"></span>\n        </a>\n        <ul class="dropdown-menu">\n          <li ng-repeat="role in $parent.rolesTypeaheadValues" class="filterItem"><a ng-click="$parent.$parent.name = role.name">{{role.name}}</a></li>\n        </ul>\n      </div>\n    </bsmodal>\n\n    <bsmodal id="leaveRole"\n             title="Confirmation"\n             close="hideModal"\n             closelabel="Cancel"\n             extrabutton="leaveRoleDialog"\n             extrabuttonlabel="Leave"\n             ng-cloak>\n      <p>Are you sure you want to remove the user from the role(s)?</p>\n    </bsmodal>\n\n<div ng-controller="UsersRolesCtrl">\n\n<div class="button-strip">\n  <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'users roles add role button\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_roles_add_leave_role}}" tooltip-placement="left">(?)</a>\n      <button class="btn btn-primary" ng-click="showModal(\'addRole\')">Add Role</button>\n      <button class="btn btn-primary" ng-disabled="!hasRoles || !valueSelected(selectedUser.roles)" ng-click="showModal(\'leaveRole\')">Leave role(s)</button>\n    </div>\n    <br>\n      <h4>Roles <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'users roles roles list\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_roles_roles}}" tooltip-placement="top">(?)</a></h4>\n    <table class="table table-striped">\n      <tbody>\n      <tr class="table-header">\n        <td style="width: 30px;"><input type="checkbox" ng-show="hasRoles" id="rolesSelectAllCheckBox" ng-model="usersRolesSelected" ng-click="selectAllEntities(selectedUser.roles,this,\'usersRolesSelected\',true)" ></td>\n        <td>Role Name</td>\n        <td>Role title</td>\n      </tr>\n      <tr class="zebraRows" ng-repeat="role in selectedUser.roles">\n        <td>\n          <input\n            type="checkbox"\n            ng-model="role.checked"\n            >\n        </td>\n        <td>{{role.name}}</td>\n        <td>{{role.title}}</td>\n      </tr>\n      </tbody>\n    </table>\n\n    <bsmodal id="deletePermission"\n             title="Confirmation"\n             close="hideModal"\n             closelabel="Cancel"\n             extrabutton="deletePermissionDialog"\n             extrabuttonlabel="Delete"\n             ng-cloak>\n      <p>Are you sure you want to delete the permission(s)?</p>\n    </bsmodal>\n\n    <bsmodal id="addPermission"\n             title="New Permission"\n             close="hideModal"\n             closelabel="Cancel"\n             extrabutton="addUserPermissionDialog"\n             extrabuttonlabel="Add"\n             ng-cloak>\n      <p>Path: <input ng-model="$parent.permissions.path" placeholder="ex: /mydata" id="usersRolePermissions" type="text" ng-pattern="pathRegex" required ug-validate ng-attr-title="{{pathRegexDescription}}" /> <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'users roles new permission path box\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_roles_new_permission_path}}" tooltip-placement="right">(?)</a></p>\n      <div class="control-group">\n        <input type="checkbox" ng-model="$parent.permissions.getPerm"> GET <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'users roles new permission verbs check boxes\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_roles_new_permission_verbs}}" tooltip-placement="right">(?)</a>\n      </div>\n      <div class="control-group">\n        <input type="checkbox" ng-model="$parent.permissions.postPerm"> POST\n      </div>\n      <div class="control-group">\n        <input type="checkbox" ng-model="$parent.permissions.putPerm"> PUT\n      </div>\n      <div class="control-group">\n        <input type="checkbox" ng-model="$parent.permissions.deletePerm"> DELETE\n      </div>\n    </bsmodal>\n\n    <div class="button-strip">\n      <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'users roles add permission button\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_roles_add_delete_permission}}" tooltip-placement="left">(?)</a>\n      <button class="btn btn-primary" ng-click="showModal(\'addPermission\')">Add Permission</button>\n      <button class="btn btn-primary" ng-disabled="!hasPermissions || !valueSelected(selectedUser.permissions)" ng-click="showModal(\'deletePermission\')">Delete Permission(s)</button>\n    </div>\n    <br>\n      <h4>Permissions <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'users roles permissions list\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_roles_permissions}}" tooltip-placement="top">(?)</a></h4>\n    <table class="table table-striped">\n      <tbody>\n      <tr class="table-header">\n        <td style="width: 30px;"><input type="checkbox" ng-show="hasPermissions"  id="permissionsSelectAllCheckBox" ng-model="usersPermissionsSelected" ng-click="selectAllEntities(selectedUser.permissions,this,\'usersPermissionsSelected\',true)"  ></td>\n        <td>Path</td>\n        <td>GET</td>\n        <td>POST</td>\n        <td>PUT</td>\n        <td>DELETE</td>\n      </tr>\n      <tr class="zebraRows" ng-repeat="permission in selectedUser.permissions">\n        <td>\n          <input\n            type="checkbox"\n            ng-model="permission.checked"\n            >\n        </td>\n        <td>{{permission.path}}</td>\n        <td>{{permission.operations.get}}</td>\n        <td>{{permission.operations.post}}</td>\n        <td>{{permission.operations.put}}</td>\n        <td>{{permission.operations.delete}}</td>\n      </tr>\n      </tbody>\n    </table>\n  </div>\n </div>\n\n</div>\n'),$templateCache.put("users/users-tabs.html","\n\n\n"),$templateCache.put("users/users.html",'<div class="content-page">\n\n  <div id="intro-page">    \n    <page-title title=" Users" icon="&#128100;"></page-title>\n  </div>\n  <bsmodal id="newUser"\n           title="Create New User"\n           close="hideModal"\n           closelabel="Cancel"\n           buttonid="users"\n           extrabutton="newUserDialog"\n           extrabuttonlabel="Create"\n           ng-cloak>\n    <fieldset>\n      <div class="control-group">\n        <label for="new-user-username">Username</label>\n\n        <div class="controls">\n          <input type="text" required ng-model="$parent.newUser.newusername" ng-pattern="usernameRegex" ng-attr-title="{{usernameRegexDescription}}"  name="username" id="new-user-username" class="input-xlarge" ug-validate/>\n          <p class="help-block hide"></p>\n        </div>\n      </div>\n      <div class="control-group">\n        <label for="new-user-fullname">Full name</label>\n\n        <div class="controls">\n          <input type="text" required  ng-attr-title="{{nameRegexDescription}}" ng-pattern="nameRegex" ng-model="$parent.newUser.name" name="name" id="new-user-fullname" class="input-xlarge" ug-validate/>\n\n          <p class="help-block hide"></p>\n        </div>\n      </div>\n      <div class="control-group">\n        <label for="new-user-email">Email</label>\n\n        <div class="controls">\n          <input type="email" required  ng-model="$parent.newUser.email" pattern="emailRegex"   ng-attr-title="{{emailRegexDescription}}"  name="email" id="new-user-email" class="input-xlarge" ug-validate/>\n\n          <p class="help-block hide"></p>\n        </div>\n      </div>\n      <div class="control-group">\n        <label for="new-user-password">Password</label>\n\n        <div class="controls">\n          <input type="password" required ng-pattern="passwordRegex"  ng-attr-title="{{passwordRegexDescription}}" ng-model="$parent.newUser.newpassword" name="password" id="new-user-password" ug-validate\n                 class="input-xlarge"/>\n\n          <p class="help-block hide"></p>\n        </div>\n      </div>\n      <div class="control-group">\n        <label for="new-user-re-password">Confirm password</label>\n\n        <div class="controls">\n          <input type="password" required ng-pattern="passwordRegex"  ng-attr-title="{{passwordRegexDescription}}" ng-model="$parent.newUser.repassword" name="re-password" id="new-user-re-password" ug-validate\n                 class="input-xlarge"/>\n\n          <p class="help-block hide"></p>\n        </div>\n      </div>\n    </fieldset>\n  </bsmodal>\n\n  <bsmodal id="deleteUser"\n           title="Delete User"\n           close="hideModal"\n           closelabel="Cancel"\n           extrabutton="deleteUsersDialog"\n           extrabuttonlabel="Delete"\n           buttonid="deleteusers"\n           ng-cloak>\n    <p>Are you sure you want to delete the user(s)?</p>\n  </bsmodal>\n\n  <section class="row-fluid">\n    <div id="intro-list" class="span3 user-col">\n      \n      <div class="button-toolbar span12">\n          <a title="Select All" class="btn btn-primary toolbar select-all" ng-show="hasUsers" ng-click="selectAllEntities(usersCollection._list,this,\'usersSelected\',true)" ng-model="usersSelected"> <i class="pictogram">&#8863;</i></a>\n          <button title="Delete" class="btn btn-primary toolbar" ng-disabled="!hasUsers || !valueSelected(usersCollection._list)" ng-click="showModal(\'deleteUser\')" id="delete-user-button"><i class="pictogram">&#9749;</i></button>\n        <button title="Add" class="btn btn-primary toolbar" ng-click="showModal(\'newUser\')" id="new-user-button" ng-attr-id="new-user-button"><i class="pictogram">&#57347;</i></button>\n        <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'users add remove buttons\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_users_add_remove_buttons}}" tooltip-placement="right">(?)</a>\n      </div>\n      <ul class="user-list">\n          <li ng-class="selectedUser._data.uuid === user._data.uuid ? \'selected\' : \'\'" ng-repeat="user in usersCollection._list" ng-click="selectUser(user._data.uuid)">\n            <input\n                type="checkbox"\n                id="user-{{user.get(\'username\')}}-checkbox"\n                ng-value="user.get(\'uuid\')"\n                ng-checked="master"\n                ng-model="user.checked"\n                >\n              <a href="javaScript:void(0)"  id="user-{{user.get(\'username\')}}-link" >{{user.get(\'username\')}}</a>\n              <span ng-if="user.name" class="label">Display Name:</span>{{user.name}}\n            </li>\n        </ul>\n        <div style="padding: 10px 5px 10px 5px">\n          <button class="btn btn-primary toolbar" ng-click="getPrevious()" style="display:{{previous_display}}">< Previous\n          </button>\n          <button class="btn btn-primary toolbar" ng-click="getNext()" style="display:{{next_display}}; float:right;">Next >\n          </button>\n        </div>\n      \n    </div>\n\n    <div id="{{help.showTabsId}}" class="span9 tab-content" ng-show="hasUsers">\n      <div class="menu-toolbar">\n        <ul class="inline">\n          <li class="tab" ng-class="currentUsersPage.route === \'/users/profile\' ? \'selected\' : \'\'"><div class="btn btn-primary toolbar" ><a class="btn-content" ng-click="selectUserPage(\'/users/profile\')"><i class="pictogram">&#59170;</i>Profile</a> <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'users profile tab\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_profile_tab}}" tooltip-placement="right">(?)</a></div></li>\n          <li class="tab" ng-class="currentUsersPage.route === \'/users/groups\' ? \'selected\' : \'\'"><div class="btn btn-primary toolbar" ><a class="btn-content" ng-click="selectUserPage(\'/users/groups\')"><i class="pictogram">&#128101;</i>Groups</a> <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'users groups tab\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_groups_tab}}" tooltip-placement="right">(?)</a></div></li>\n          <li class="tab" ng-class="currentUsersPage.route === \'/users/activities\' ? \'selected\' : \'\'"><div class="btn btn-primary toolbar" ><a class="btn-content" ng-click="selectUserPage(\'/users/activities\')"><i class="pictogram">&#59194;</i>Activities</a> <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'users activities tab\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_activities_tab}}" tooltip-placement="right">(?)</a></div></li>\n          <li class="tab" ng-class="currentUsersPage.route === \'/users/feed\' ? \'selected\' : \'\'"><div class="btn btn-primary toolbar" ><a class="btn-content" ng-click="selectUserPage(\'/users/feed\')"><i class="pictogram">&#128196;</i>Feed</a> <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'users feed tab\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_feed_tab}}" tooltip-placement="right">(?)</a></div></li>\n          <li class="tab" ng-class="currentUsersPage.route === \'/users/graph\' ? \'selected\' : \'\'"><div class="btn btn-primary toolbar" ><a class="btn-content" ng-click="selectUserPage(\'/users/graph\')"><i class="pictogram">&#9729;</i>Graph</a> <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'users graph tab\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_graph_tab}}" tooltip-placement="top">(?)</a></div></li>\n          <li class="tab" ng-class="currentUsersPage.route === \'/users/roles\' ? \'selected\' : \'\'"><div class="btn btn-primary toolbar" ><a class="btn-content" ng-click="selectUserPage(\'/users/roles\')"><i class="pictogram">&#127758;</i>Roles &amp; Permissions</a> <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'users roles tab\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_roles_tab}}" tooltip-placement="top">(?)</a></div></li>\n        </ul>\n      </div>\n      <span ng-include="currentUsersPage.template"></span>\n    </div>\n  </section>\n</div>')
 }]),AppServices.Controllers.controller("UsersActivitiesCtrl",["ug","$scope","$rootScope","$location",function(ug,$scope,$rootScope,$location){$scope.activitiesSelected="active",$scope.activityToAdd="",$scope.activities=[],$scope.newActivity={};var getActivities=function(){ug.getEntityActivities($rootScope.selectedUser)};return $rootScope.selectedUser?(getActivities(),$scope.addActivityToUserDialog=function(modalId){ug.addUserActivity($rootScope.selectedUser,$scope.newActivity.activityToAdd),$scope.hideModal(modalId),$scope.newActivity={}},$scope.$on("user-activity-add-error",function(){$rootScope.$broadcast("alert","error","could not create activity")}),$scope.$on("user-activity-add-success",function(){$scope.newActivity.activityToAdd="",getActivities()}),$scope.$on("users-activities-error",function(){$rootScope.$broadcast("alert","error","could not create activity")}),void $scope.$on("users-activities-received",function(evt,entities){$scope.activities=entities,$scope.applyScope()})):void $location.path("/users")}]),AppServices.Controllers.controller("UsersCtrl",["ug","$scope","$rootScope","$location","$route",function(ug,$scope,$rootScope,$location,$route){$scope.newUser={},$scope.usersCollection={},$rootScope.selectedUser={},$scope.previous_display="none",$scope.next_display="none",$scope.hasUsers=!1,$scope.currentUsersPage={},$scope.selectUserPage=function(route){$scope.currentUsersPage.template=$route.routes[route].templateUrl,$scope.currentUsersPage.route=route,clearNewUserForm()},$scope.deleteUsersDialog=function(modalId){$scope.deleteEntities($scope.usersCollection,"user-deleted","error deleting user"),$scope.hideModal(modalId),clearNewUserForm()},$scope.$on("user-deleted-error",function(){ug.getUsers()});var clearNewUserForm=function(){$scope.newUser={}};$scope.newUserDialog=function(modalId){switch(!0){case $scope.newUser.newpassword!==$scope.newUser.repassword:$rootScope.$broadcast("alert","error","Passwords do not match.");break;default:ug.createUser($scope.newUser.newusername,$scope.newUser.name,$scope.newUser.email,$scope.newUser.newpassword),$scope.hideModal(modalId),clearNewUserForm()}},ug.getUsers(),$scope.$on("users-received",function(event,users){$scope.usersCollection=users,$scope.usersSelected=!1,$scope.hasUsers=users._list.length,users._list.length>0&&$scope.selectUser(users._list[0]._data.uuid),$scope.checkNextPrev(),$scope.applyScope()}),$scope.$on("users-create-success",function(){$rootScope.$broadcast("alert","success","User successfully created.")}),$scope.resetNextPrev=function(){$scope.previous_display="none",$scope.next_display="none"},$scope.checkNextPrev=function(){$scope.resetNextPrev(),$scope.usersCollection.hasPreviousPage()&&($scope.previous_display=""),$scope.usersCollection.hasNextPage()&&($scope.next_display="")},$scope.selectUser=function(uuid){$rootScope.selectedUser=$scope.usersCollection.getEntityByUUID(uuid),$scope.currentUsersPage.template="users/users-profile.html",$scope.currentUsersPage.route="/users/profile",$rootScope.$broadcast("user-selection-changed",$rootScope.selectedUser)},$scope.getPrevious=function(){$scope.usersCollection.getPreviousPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting previous page of users"),$scope.checkNextPrev(),$scope.applyScope()})},$scope.getNext=function(){$scope.usersCollection.getNextPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting next page of users"),$scope.checkNextPrev(),$scope.applyScope()})},$scope.$on("user-deleted",function(){$rootScope.$broadcast("alert","success","User deleted successfully."),ug.getUsers()})}]),AppServices.Controllers.controller("UsersFeedCtrl",["ug","$scope","$rootScope","$location",function(ug,$scope,$rootScope,$location){$scope.activitiesSelected="active",$scope.activityToAdd="",$scope.activities=[],$scope.newActivity={};var getFeed=function(){ug.getEntityActivities($rootScope.selectedUser,!0)};return $rootScope.selectedUser?(getFeed(),$scope.$on("users-feed-error",function(){$rootScope.$broadcast("alert","error","could not create activity")}),void $scope.$on("users-feed-received",function(evt,entities){$scope.activities=entities,$scope.applyScope()})):void $location.path("/users")}]),AppServices.Controllers.controller("UsersGraphCtrl",["ug","$scope","$rootScope","$location",function(ug,$scope,$rootScope,$location){return $scope.graphSelected="active",$scope.user="",ug.getUsersTypeAhead(),$scope.followUserDialog=function(modalId){$scope.user?(ug.followUser($scope.user.uuid),$scope.hideModal(modalId)):$rootScope.$broadcast("alert","error","You must specify a user to follow.")},$rootScope.selectedUser?($rootScope.selectedUser.activities=[],$rootScope.selectedUser.getFollowing(function(err){err||$rootScope.$$phase||$rootScope.$apply()}),$rootScope.selectedUser.getFollowers(function(err){err||$rootScope.$$phase||$rootScope.$apply()}),$scope.$on("follow-user-received",function(){$rootScope.selectedUser.getFollowing(function(err){err||$rootScope.$$phase||$rootScope.$apply()})}),void 0):void $location.path("/users")}]),AppServices.Controllers.controller("UsersGroupsCtrl",["ug","$scope","$rootScope","$location",function(ug,$scope,$rootScope,$location){$scope.userGroupsCollection={},$scope.groups_previous_display="none",$scope.groups_next_display="none",$scope.groups_check_all="",$scope.groupsSelected="active",$scope.title="",$scope.master="",$scope.hasGroups=!1;var init=function(){return $scope.name="",$rootScope.selectedUser?(ug.getGroupsForUser($rootScope.selectedUser.get("uuid")),void ug.getGroupsTypeAhead()):void $location.path("/users")};init(),$scope.addUserToGroupDialog=function(modalId){if($scope.path){var username=$rootScope.selectedUser.get("uuid");ug.addUserToGroup(username,$scope.path),$scope.hideModal(modalId),$scope.path="",$scope.title=""}else $rootScope.$broadcast("alert","error","You must specify a group.")},$scope.selectGroup=function(group){$scope.path=group.path,$scope.title=group.title},$scope.leaveGroupDialog=function(modalId){$scope.deleteEntities($scope.userGroupsCollection,"user-left-group","error removing user from group"),$scope.hideModal(modalId)},$scope.$on("user-groups-received",function(event,groups){$scope.userGroupsCollection=groups,$scope.userGroupsSelected=!1,$scope.hasGroups=groups._list.length,$scope.checkNextPrev(),$rootScope.$$phase||$rootScope.$apply()}),$scope.resetNextPrev=function(){$scope.previous_display="none",$scope.next_display="none"},$scope.checkNextPrev=function(){$scope.resetNextPrev(),$scope.userGroupsCollection.hasPreviousPage()&&($scope.previous_display="block"),$scope.userGroupsCollection.hasNextPage()&&($scope.next_display="block")},$rootScope.getPrevious=function(){$scope.userGroupsCollection.getPreviousPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting previous page of groups"),$scope.checkNextPrev(),$rootScope.$$phase||$rootScope.$apply()})},$rootScope.getNext=function(){$scope.userGroupsCollection.getNextPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting next page of groups"),$scope.checkNextPrev(),$rootScope.$$phase||$rootScope.$apply()})},$scope.$on("user-left-group",function(){$scope.checkNextPrev(),$scope.userGroupsSelected=!1,$rootScope.$$phase||$rootScope.$apply(),init()}),$scope.$on("user-added-to-group-received",function(){$scope.checkNextPrev(),$rootScope.$$phase||$rootScope.$apply(),init()})}]),AppServices.Controllers.controller("UsersProfileCtrl",["ug","$scope","$rootScope","$location",function(ug,$scope,$rootScope,$location){return $scope.user=$rootScope.selectedUser._data.clone(),$scope.user.json=$scope.user.json||$scope.user.stringifyJSON(),$scope.profileSelected="active",$rootScope.selectedUser?($scope.$on("user-selection-changed",function(evt,selectedUser){$scope.user=selectedUser._data.clone(),$scope.user.json=$scope.user.json||selectedUser._data.stringifyJSON()}),void($scope.saveSelectedUser=function(){$rootScope.selectedUser.set($scope.user.clone()),$rootScope.selectedUser.save(function(err){err?$rootScope.$broadcast("alert","error","error saving user"):$rootScope.$broadcast("alert","success","user saved")})})):void $location.path("/users")}]),AppServices.Controllers.controller("UsersRolesCtrl",["ug","$scope","$rootScope","$location",function(ug,$scope,$rootScope,$location){$scope.rolesSelected="active",$scope.usersRolesSelected=!1,$scope.usersPermissionsSelected=!1,$scope.name="",$scope.master="",$scope.hasRoles=$scope.hasPermissions=!1,$scope.permissions={};var clearPermissions=function(){$scope.permissions&&($scope.permissions.path="",$scope.permissions.getPerm=!1,$scope.permissions.postPerm=!1,$scope.permissions.putPerm=!1,$scope.permissions.deletePerm=!1),$scope.applyScope()},clearRole=function(){$scope.name="",$scope.applyScope()};return ug.getRolesTypeAhead(),$scope.addUserToRoleDialog=function(modalId){if($scope.name){var username=$rootScope.selectedUser.get("uuid");ug.addUserToRole(username,$scope.name),$scope.hideModal(modalId)}else $rootScope.$broadcast("alert","error","You must specify a role.")},$scope.leaveRoleDialog=function(modalId){for(var username=$rootScope.selectedUser.get("uuid"),roles=$rootScope.selectedUser.roles,i=0;i<roles.length;i++)roles[i].checked&&ug.removeUserFromRole(username,roles[i].name);$scope.hideModal(modalId)},$scope.deletePermissionDialog=function(modalId){for(var username=$rootScope.selectedUser.get("uuid"),permissions=$rootScope.selectedUser.permissions,i=0;i<permissions.length;i++)permissions[i].checked&&ug.deleteUserPermission(permissions[i].perm,username);$scope.hideModal(modalId)},$scope.addUserPermissionDialog=function(modalId){if($scope.permissions.path){var permission=$scope.createPermission(null,null,$scope.removeFirstSlash($scope.permissions.path),$scope.permissions),username=$rootScope.selectedUser.get("uuid");ug.newUserPermission(permission,username),$scope.hideModal(modalId)}else $rootScope.$broadcast("alert","error","You must specify a name for the permission.")},$rootScope.selectedUser?($rootScope.selectedUser.permissions=[],$rootScope.selectedUser.roles=[],$rootScope.selectedUser.getPermissions(function(err,data){$scope.clearCheckbox("permissionsSelectAllCheckBox"),err||($scope.hasPermissions=data.data.length>0,$scope.applyScope())}),$rootScope.selectedUser.getRoles(function(err,data){err||($scope.hasRoles=data.entities.length>0,$scope.applyScope())}),$scope.$on("role-update-received",function(){$rootScope.selectedUser.getRoles(function(err,data){$scope.usersRolesSelected=!1,err||($scope.hasRoles=data.entities.length>0,clearRole(),$scope.applyScope())})}),$scope.$on("permission-update-received",function(){$rootScope.selectedUser.getPermissions(function(err,data){$scope.usersPermissionsSelected=!1,err||(clearPermissions(),$scope.hasPermissions=data.data.length>0,$scope.applyScope())})}),void 0):void $location.path("/users")}])}({},function(){return this}());
\ No newline at end of file
diff --git a/portal/js/global/ug-service.js b/portal/js/global/ug-service.js
index 122abd0..345e9b6 100644
--- a/portal/js/global/ug-service.js
+++ b/portal/js/global/ug-service.js
@@ -822,7 +822,7 @@
     },
 
     updateUser: function (user) {
-      var body = $rootScope.currentUser;
+      var body = {};
       body.username = user.username;
       body.name = user.name;
       body.email = user.email;
