text: /*
   * JBoss, Home of Professional Open Source.
   * Copyright 2016 Red Hat, Inc., and individual contributors
   * as indicated by the @author tags.
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *     http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  
  module.requires.push('ui.ace');
  
  module.config(['$routeProvider', function ($routeProvider) {
      $routeProvider
          .when('/realms/:realm/authz', {
              templateUrl: resourceUrl + '/partials/authz/resource-server-list.html',
              resolve: {
                  realm: function (RealmLoader) {
                      return RealmLoader();
                  }
              },
              controller: 'ResourceServerCtrl'
          }).when('/realms/:realm/clients/:client/authz/resource-server/create', {
          templateUrl: resourceUrl + '/partials/authz/resource-server-detail.html',
          resolve: {
              realm: function (RealmLoader) {
                  return RealmLoader();
              },
              client : function(ClientLoader) {
                  return ClientLoader();
              },
              clients: function (ClientListLoader) {
                  return ClientListLoader();
              }
          },
          controller: 'ResourceServerDetailCtrl'
      }).when('/realms/:realm/clients/:client/authz/resource-server', {
          templateUrl: resourceUrl + '/partials/authz/resource-server-detail.html',
          resolve: {
              realm: function (RealmLoader) {
                  return RealmLoader();
              },
              client : function(ClientLoader) {
                  return ClientLoader();
              },
              clients: function (ClientListLoader) {
                  return ClientListLoader();
              },
              serverInfo: function (ServerInfoLoader) {
                  return ServerInfoLoader();
              }
          },
          controller: 'ResourceServerDetailCtrl'
      }).when('/realms/:realm/clients/:client/authz/resource-server/export-settings', {
                templateUrl: resourceUrl + '/partials/authz/resource-server-export-settings.html',
                resolve: {
                    realm: function (RealmLoader) {
                        return RealmLoader();
                    },
                    client : function(ClientLoader) {
                        return ClientLoader();
                    },
                    clients: function (ClientListLoader) {
                        return ClientListLoader();
                    },
                    serverInfo: function (ServerInfoLoader) {
                        return ServerInfoLoader();
                    }
                },
                controller: 'ResourceServerDetailCtrl'
      }).when('/realms/:realm/clients/:client/authz/resource-server/evaluate', {
          templateUrl: resourceUrl + '/partials/authz/policy/resource-server-policy-evaluate.html',
          resolve: {
              realm: function (RealmLoader) {
                  return RealmLoader();
              },
              client : function(ClientLoader) {
                  return ClientLoader();
              },
              clients: function (ClientListLoader) {
                  return ClientListLoader();
              },
              roles: function (RoleListLoader) {
                  return new RoleListLoader();
              }
          },
          controller: 'PolicyEvaluateCtrl'
      }).when('/realms/:realm/clients/:client/authz/resource-server/evaluate/result', {
          templateUrl: resourceUrl + '/partials/authz/policy/resource-server-policy-evaluate-result.html',
          resolve: {
              realm: function (RealmLoader) {
                  return RealmLoader();
              },
              client : function(ClientLoader) {
                  return ClientLoader();
              },
          },
          controller: 'PolicyEvaluateCtrl'
      }).when('/realms/:realm/clients/:client/authz/resource-server/resource', {
          templateUrl: resourceUrl + '/partials/authz/resource-server-resource-list.html',
          resolve: {
              realm: function (RealmLoader) {
                  return RealmLoader();
              },
              client : function(ClientLoader) {
                  return ClientLoader();
              }
          },
          controller: 'ResourceServerResourceCtrl'
      }).when('/realms/:realm/clients/:client/authz/resource-server/resource/create', {
          templateUrl: resourceUrl + '/partials/authz/resource-server-resource-detail.html',
          resolve: {
              realm: function (RealmLoader) {
                  return RealmLoader();
              },
              client : function(ClientLoader) {
                  return ClientLoader();
              }
          },
          controller: 'ResourceServerResourceDetailCtrl'
      }).when('/realms/:realm/clients/:client/authz/resource-server/resource/:rsrid', {
          templateUrl: resourceUrl + '/partials/authz/resource-server-resource-detail.html',
          resolve: {
              realm: function (RealmLoader) {
                  return RealmLoader();
              },
              client : function(ClientLoader) {
                  return ClientLoader();
              }
          },
          controller: 'ResourceServerResourceDetailCtrl'
      }).when('/realms/:realm/clients/:client/authz/resource-server/scope', {
          templateUrl: resourceUrl + '/partials/authz/resource-server-scope-list.html',
          resolve: {
              realm: function (RealmLoader) {
                  return RealmLoader();
              },
              client : function(ClientLoader) {
                  return ClientLoader();
              }
          },
          controller: 'ResourceServerScopeCtrl'
      }).when('/realms/:realm/clients/:client/authz/resource-server/scope/create', {
          templateUrl: resourceUrl + '/partials/authz/resource-server-scope-detail.html',
          resolve: {
              realm: function (RealmLoader) {
                  return RealmLoader();
              },
              client : function(ClientLoader) {
                  return ClientLoader();
              }
          },
          controller: 'ResourceServerScopeDetailCtrl'
      }).when('/realms/:realm/clients/:client/authz/resource-server/scope/:id', {
          templateUrl: resourceUrl + '/partials/authz/resource-server-scope-detail.html',
          resolve: {
              realm: function (RealmLoader) {
                  return RealmLoader();
              },
              client : function(ClientLoader) {
                  return ClientLoader();
              }
          },
          controller: 'ResourceServerScopeDetailCtrl'
      }).when('/realms/:realm/clients/:client/authz/resource-server/permission', {
          templateUrl: resourceUrl + '/partials/authz/permission/resource-server-permission-list.html',
          resolve: {
              realm: function (RealmLoader) {
                  return RealmLoader();
              },
              client : function(ClientLoader) {
                  return ClientLoader();
              }
          },
          controller: 'ResourceServerPermissionCtrl'
      }).when('/realms/:realm/clients/:client/authz/resource-server/policy', {
          templateUrl: resourceUrl + '/partials/authz/policy/resource-server-policy-list.html',
          resolve: {
              realm: function (RealmLoader) {
                  return RealmLoader();
              },
              client : function(ClientLoader) {
                  return ClientLoader();
              }
          },
          controller: 'ResourceServerPolicyCtrl'
      }).when('/realms/:realm/clients/:client/authz/resource-server/permission/resource/create', {
          templateUrl: resourceUrl + '/partials/authz/permission/provider/resource-server-policy-resource-detail.html',
          resolve: {
              realm: function (RealmLoader) {
                  return RealmLoader();
              },
              client : function(ClientLoader) {
                  return ClientLoader();
              }
          },
          controller: 'ResourceServerPolicyResourceDetailCtrl'
      }).when('/realms/:realm/clients/:client/authz/resource-server/permission/resource/:id', {
          templateUrl: resourceUrl + '/partials/authz/permission/provider/resource-server-policy-resource-detail.html',
          resolve: {
              realm: function (RealmLoader) {
                  return RealmLoader();
              },
              client : function(ClientLoader) {
                  return ClientLoader();
              }
          },
          controller: 'ResourceServerPolicyResourceDetailCtrl'
      }).when('/realms/:realm/clients/:client/authz/resource-server/permission/scope/create', {
          templateUrl: resourceUrl + '/partials/authz/permission/provider/resource-server-policy-scope-detail.html',
          resolve: {
              realm: function (RealmLoader) {
                  return RealmLoader();
              },
              client : function(ClientLoader) {
                  return ClientLoader();
              }
          },
          controller: 'ResourceServerPolicyScopeDetailCtrl'
      }).when('/realms/:realm/clients/:client/authz/resource-server/permission/scope/:id', {
          templateUrl: resourceUrl + '/partials/authz/permission/provider/resource-server-policy-scope-detail.html',
          resolve: {
              realm: function (RealmLoader) {
                  return RealmLoader();
              },
              client : function(ClientLoader) {
                  return ClientLoader();
              }
          },
          controller: 'ResourceServerPolicyScopeDetailCtrl'
      }).when('/realms/:realm/clients/:client/authz/resource-server/policy/user/create', {
          templateUrl: resourceUrl + '/partials/authz/policy/provider/resource-server-policy-user-detail.html',
          resolve: {
              realm: function (RealmLoader) {
                  return RealmLoader();
              },
              client : function(ClientLoader) {
                  return ClientLoader();
              }
          },
          controller: 'ResourceServerPolicyUserDetailCtrl'
      }).when('/realms/:realm/clients/:client/authz/resource-server/policy/user/:id', {
          templateUrl: resourceUrl + '/partials/authz/policy/provider/resource-server-policy-user-detail.html',
          resolve: {
              realm: function (RealmLoader) {
                  return RealmLoader();
              },
              client : function(ClientLoader) {
                  return ClientLoader();
              }
          },
          controller: 'ResourceServerPolicyUserDetailCtrl'
      }).when('/realms/:realm/clients/:client/authz/resource-server/policy/client/create', {
          templateUrl: resourceUrl + '/partials/authz/policy/provider/resource-server-policy-client-detail.html',
          resolve: {
              realm: function (RealmLoader) {
                  return RealmLoader();
              },
              client : function(ClientLoader) {
                  return ClientLoader();
              }
          },
          controller: 'ResourceServerPolicyClientDetailCtrl'
      }).when('/realms/:realm/clients/:client/authz/resource-server/policy/client/:id', {
          templateUrl: resourceUrl + '/partials/authz/policy/provider/resource-server-policy-client-detail.html',
          resolve: {
              realm: function (RealmLoader) {
                  return RealmLoader();
              },
              client : function(ClientLoader) {
                  return ClientLoader();
              }
          },
          controller: 'ResourceServerPolicyClientDetailCtrl'
      }).when('/realms/:realm/clients/:client/authz/resource-server/policy/role/create', {
          templateUrl: resourceUrl + '/partials/authz/policy/provider/resource-server-policy-role-detail.html',
          resolve: {
              realm: function (RealmLoader) {
                  return RealmLoader();
              },
              client : function(ClientLoader) {
                  return ClientLoader();
              }
          },
          controller: 'ResourceServerPolicyRoleDetailCtrl'
      }).when('/realms/:realm/clients/:client/authz/resource-server/policy/role/:id', {
          templateUrl: resourceUrl + '/partials/authz/policy/provider/resource-server-policy-role-detail.html',
          resolve: {
              realm: function (RealmLoader) {
                  return RealmLoader();
              },
              client : function(ClientLoader) {
                  return ClientLoader();
              }
          },
          controller: 'ResourceServerPolicyRoleDetailCtrl'
      }).when('/realms/:realm/clients/:client/authz/resource-server/policy/group/create', {
            templateUrl: resourceUrl + '/partials/authz/policy/provider/resource-server-policy-group-detail.html',
            resolve: {
                realm: function (RealmLoader) {
                    return RealmLoader();
                },
                client : function(ClientLoader) {
                    return ClientLoader();
                }
            },
            controller: 'ResourceServerPolicyGroupDetailCtrl'
        }).when('/realms/:realm/clients/:client/authz/resource-server/policy/group/:id', {
            templateUrl: resourceUrl + '/partials/authz/policy/provider/resource-server-policy-group-detail.html',
            resolve: {
                realm: function (RealmLoader) {
                    return RealmLoader();
                },
                client : function(ClientLoader) {
                    return ClientLoader();
                }
            },
            controller: 'ResourceServerPolicyGroupDetailCtrl'
        }).when('/realms/:realm/clients/:client/authz/resource-server/policy/js/create', {
          templateUrl: resourceUrl + '/partials/authz/policy/provider/resource-server-policy-js-detail.html',
          resolve: {
              realm: function (RealmLoader) {
                  return RealmLoader();
              },
              client : function(ClientLoader) {
                  return ClientLoader();
              },
              serverInfo : function(ServerInfoLoader) {
                  return ServerInfoLoader();
              }
          },
          controller: 'ResourceServerPolicyJSDetailCtrl'
      }).when('/realms/:realm/clients/:client/authz/resource-server/policy/js/:id', {
          templateUrl: resourceUrl + '/partials/authz/policy/provider/resource-server-policy-js-detail.html',
          resolve: {
              realm: function (RealmLoader) {
                  return RealmLoader();
              },
              client : function(ClientLoader) {
                  return ClientLoader();
              },
              serverInfo : function(ServerInfoLoader) {
                  return ServerInfoLoader();
              }
          },
          controller: 'ResourceServerPolicyJSDetailCtrl'
      }).when('/realms/:realm/clients/:client/authz/resource-server/policy/time/create', {
          templateUrl: resourceUrl + '/partials/authz/policy/provider/resource-server-policy-time-detail.html',
          resolve: {
              realm: function (RealmLoader) {
                  return RealmLoader();
              },
              client : function(ClientLoader) {
                  return ClientLoader();
              }
          },
          controller: 'ResourceServerPolicyTimeDetailCtrl'
      }).when('/realms/:realm/clients/:client/authz/resource-server/policy/time/:id', {
          templateUrl: resourceUrl + '/partials/authz/policy/provider/resource-server-policy-time-detail.html',
          resolve: {
              realm: function (RealmLoader) {
                  return RealmLoader();
              },
              client : function(ClientLoader) {
                  return ClientLoader();
              }
          },
          controller: 'ResourceServerPolicyTimeDetailCtrl'
      }).when('/realms/:realm/clients/:client/authz/resource-server/policy/aggregate/create', {
          templateUrl: resourceUrl + '/partials/authz/policy/provider/resource-server-policy-aggregate-detail.html',
          resolve: {
              realm: function (RealmLoader) {
                  return RealmLoader();
              },
              client : function(ClientLoader) {
                  return ClientLoader();
              }
          },
          controller: 'ResourceServerPolicyAggregateDetailCtrl'
      }).when('/realms/:realm/clients/:client/authz/resource-server/policy/aggregate/:id', {
          templateUrl: resourceUrl + '/partials/authz/policy/provider/resource-server-policy-aggregate-detail.html',
          resolve: {
              realm: function (RealmLoader) {
                  return RealmLoader();
              },
              client : function(ClientLoader) {
                  return ClientLoader();
              }
          },
          controller: 'ResourceServerPolicyAggregateDetailCtrl'
      }).when('/realms/:realm/roles/:role/permissions', {
          templateUrl : resourceUrl + '/partials/authz/mgmt/realm-role-permissions.html',
          resolve : {
              realm : function(RealmLoader) {
                  return RealmLoader();
              },
              role : function(RoleLoader) {
                  return RoleLoader();
              }
          },
          controller : 'RealmRolePermissionsCtrl'
      }).when('/realms/:realm/clients/:client/roles/:role/permissions', {
          templateUrl : resourceUrl + '/partials/authz/mgmt/client-role-permissions.html',
          resolve : {
              realm : function(RealmLoader) {
                  return RealmLoader();
              },
              client : function(ClientLoader) {
                  return ClientLoader();
              },
              role : function(RoleLoader) {
                  return RoleLoader();
              }
          },
          controller : 'ClientRolePermissionsCtrl'
      }).when('/realms/:realm/users-permissions', {
          templateUrl : resourceUrl + '/partials/authz/mgmt/users-permissions.html',
          resolve : {
              realm : function(RealmLoader) {
                  return RealmLoader();
              }
          },
          controller : 'UsersPermissionsCtrl'
      })
          .when('/realms/:realm/clients/:client/permissions', {
              templateUrl : resourceUrl + '/partials/authz/mgmt/client-permissions.html',
              resolve : {
                  realm : function(RealmLoader) {
                      return RealmLoader();
                  },
                  client : function(ClientLoader) {
                      return ClientLoader();
                  }
              },
              controller : 'ClientPermissionsCtrl'
          })
          .when('/realms/:realm/groups/:group/permissions', {
              templateUrl : resourceUrl + '/partials/authz/mgmt/group-permissions.html',
              resolve : {
                  realm : function(RealmLoader) {
                      return RealmLoader();
                  },
                  group : function(GroupLoader) {
                      return GroupLoader();
                  }
              },
              controller : 'GroupPermissionsCtrl'
          })
          .when('/realms/:realm/identity-provider-settings/provider/:provider_id/:alias/permissions', {
              templateUrl : function(params){ return resourceUrl + '/partials/authz/mgmt/broker-permissions.html'; },
              resolve : {
                  realm : function(RealmLoader) {
                      return RealmLoader();
                  },
                  identityProvider : function(IdentityProviderLoader) {
                      return IdentityProviderLoader();
                  }
               },
              controller : 'IdentityProviderPermissionCtrl'
          })
      ;
  }]);
  
  module.directive('kcTabsResourceServer', function () {
      return {
          scope: true,
          restrict: 'E',
          replace: true,
          templateUrl: resourceUrl + '/templates/authz/kc-tabs-resource-server.html'
      }
  });
  
  module.filter('unique', function () {
  
      return function (items, filterOn) {
  
          if (filterOn === false) {
              return items;
          }
  
          if ((filterOn || angular.isUndefined(filterOn)) && angular.isArray(items)) {
              var hashCheck = {}, newItems = [];
  
              var extractValueToCompare = function (item) {
                  if (angular.isObject(item) && angular.isString(filterOn)) {
                      return item[filterOn];
                  } else {
                      return item;
                  }
              };
  
              angular.forEach(items, function (item) {
                  var valueToCheck, isDuplicate = false;
  
                  for (var i = 0; i < newItems.length; i++) {
                      if (angular.equals(extractValueToCompare(newItems[i]), extractValueToCompare(item))) {
                          isDuplicate = true;
                          break;
                      }
                  }
                  if (!isDuplicate) {
                      newItems.push(item);
                  }
  
              });
              items = newItems;
          }
          return items;
      };
  });
  
  module.filter('toCamelCase', function () {
      return function (input) {
          input = input || '';
          return input.replace(/\w\S*/g, function (txt) {
              return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
          });
      };
  })