text: (function (angular) {
      'use strict';
  
      angular.module('oc.lazyLoad').config(["$provide", function ($provide) {
          $provide.decorator('$ocLazyLoad', ["$delegate", "$templateCache", "$q", "$http", function ($delegate, $templateCache, $q, $http) {
              /**
               * templatesLoader function
               * @type Function
               * @param paths array list of css files to load
               * @param callback to call when everything is loaded. We use a callback and not a promise
               * @param params object config parameters for $http
               * because the user can overwrite templatesLoader and it will probably not use promises :(
               */
              $delegate.templatesLoader = function (paths, callback, params) {
                  var promises = [],
                      filesCache = $delegate._getFilesCache();
  
                  angular.forEach(paths, function (url) {
                      var deferred = $q.defer();
                      promises.push(deferred.promise);
                      $http.get(url, params).success(function (data) {
                          if (angular.isString(data) && data.length > 0) {
                              angular.forEach(angular.element(data), function (node) {
                                  if (node.nodeName === 'SCRIPT' && node.type === 'text/ng-template') {
                                      $templateCache.put(node.id, node.innerHTML);
                                  }
                              });
                          }
                          if (angular.isUndefined(filesCache.get(url))) {
                              filesCache.put(url, true);
                          }
                          deferred.resolve();
                      }).error(function (err) {
                          deferred.reject(new Error('Unable to load template file "' + url + '": ' + err));
                      });
                  });
                  return $q.all(promises).then(function () {
                      callback();
                  }, function (err) {
                      callback(err);
                  });
              };
              $delegate.templatesLoader.ocLazyLoadLoader = true;
  
              return $delegate;
          }]);
      }]);
  })(angular);