From e445874cfef58bf8b0c755c97e1b52e401029e7b Mon Sep 17 00:00:00 2001 From: Igor Minar Date: Tue, 17 Jan 2012 14:39:49 -0800 Subject: [PATCH] upgrade to 0.10.6 final --- app/lib/angular/angular-loader.js | 36 +++-- app/lib/angular/angular-loader.min.js | 2 +- app/lib/angular/angular.js | 82 ++++++----- app/lib/angular/angular.min.js | 197 +++++++++++++------------- test/lib/angular/angular-mocks.js | 18 +-- test/lib/angular/angular-scenario.js | 84 ++++++----- 6 files changed, 227 insertions(+), 192 deletions(-) diff --git a/app/lib/angular/angular-loader.js b/app/lib/angular/angular-loader.js index cd4d3cf..f9e3938 100644 --- a/app/lib/angular/angular-loader.js +++ b/app/lib/angular/angular-loader.js @@ -1,5 +1,5 @@ /** - * @license AngularJS v0.10.6-5cdfe45a + * @license AngularJS v0.10.6 * (c) 2010-2012 AngularJS http://angularjs.org * License: MIT */ @@ -29,40 +29,45 @@ function setupModuleLoader(window) { * @name angular.module * @description * - * The `angular.module` is a global place for registering angular modules. All modules - * (angular core or 3rd party) that should be available to an application must be registered using this mechanism. + * The `angular.module` is a global place for creating and registering Angular modules. All + * modules (angular core or 3rd party) that should be available to an application must be + * registered using this mechanism. + * * * # Module * - * A module is a collocation of services, directives, filters, and configure information. Module is used to configure the, - * {@link angular.module.AUTO.$injector $injector}. + * A module is a collocation of services, directives, filters, and configure information. Module + * is used to configure the {@link angular.module.AUTO.$injector $injector}. * *
      * // Create a new module
      * var myModule = angular.module('myModule', []);
      *
-     * // configure a new service
+     * // register a new service
      * myModule.value('appName', 'MyCoolApp');
      *
      * // configure existing services inside initialization blocks.
-     * myModule.init(function($locationProvider) {
+     * myModule.config(function($locationProvider) {
      *   // Configure existing providers
-     *   $locationProvider.hashPrefix = '!';
+     *   $locationProvider.hashPrefix('!');
      * });
      * 
* - * Then you can load your module like this: + * Then you can create an injector and load your modules like this: * *
      * var injector = angular.injector(['ng', 'MyModule'])
      * 
* + * However it's more likely that you'll just use {@link angular.directive.ng:app ng:app} or + * {@link angular.bootstrap} to simplify this process for you. + * * @param {!string} name The name of the module to create or retrieve. * @param {Array.=} requires If specified then new module is being created. If unspecified then the * the module is being retrieved for further configuration. - * @param {Function} initFn Option configuration function for the module. Same as - * {@link angular.Module#init Module.init()}. - * @return {angular.Module} + * @param {Function} configFn Option configuration function for the module. Same as + * {@link angular.Module#config Module#config()}. + * @returns {module} new module with the {@link angular.Module} api. */ return function module(name, requires, configFn) { if (requires && modules.hasOwnProperty(name)) { @@ -155,8 +160,8 @@ function setupModuleLoader(window) { * @ngdoc method * @name angular.Module#config * @methodOf angular.Module - * @param {Function} initializationFn Execute this function on module load. Useful for - * service configuration. + * @param {Function} configFn Execute this function on module load. Useful for service + * configuration. * @description * Use this method to register work which needs to be performed on module loading. */ @@ -169,7 +174,8 @@ function setupModuleLoader(window) { * @param {Function} initializationFn Execute this function after injector creation. * Useful for application initialization. * @description - * Use this method to register work which needs to be performed on module loading. + * Use this method to register work which needs to be performed when the injector with + * with the current module is finished loading. */ run: function(block) { runBlocks.push(block); diff --git a/app/lib/angular/angular-loader.min.js b/app/lib/angular/angular-loader.min.js index 28919dc..01057c6 100644 --- a/app/lib/angular/angular-loader.min.js +++ b/app/lib/angular/angular-loader.min.js @@ -1,5 +1,5 @@ /* - AngularJS v0.10.6-5cdfe45a + AngularJS v0.10.6 (c) 2010-2012 AngularJS http://angularjs.org License: MIT */ diff --git a/app/lib/angular/angular.js b/app/lib/angular/angular.js index 86b503f..e9a846b 100644 --- a/app/lib/angular/angular.js +++ b/app/lib/angular/angular.js @@ -1,5 +1,5 @@ /** - * @license AngularJS v0.10.6-5cdfe45a + * @license AngularJS v0.10.6 * (c) 2010-2012 AngularJS http://angularjs.org * License: MIT */ @@ -929,6 +929,7 @@ function bindJQuery() { jqLite = jQuery; extend(jQuery.fn, { scope: JQLitePrototype.scope, + injector: JQLitePrototype.injector, inheritedData: JQLitePrototype.inheritedData }); JQLitePatchJQueryRemove('remove', true); @@ -981,40 +982,45 @@ function setupModuleLoader(window) { * @name angular.module * @description * - * The `angular.module` is a global place for registering angular modules. All modules - * (angular core or 3rd party) that should be available to an application must be registered using this mechanism. + * The `angular.module` is a global place for creating and registering Angular modules. All + * modules (angular core or 3rd party) that should be available to an application must be + * registered using this mechanism. + * * * # Module * - * A module is a collocation of services, directives, filters, and configure information. Module is used to configure the, - * {@link angular.module.AUTO.$injector $injector}. + * A module is a collocation of services, directives, filters, and configure information. Module + * is used to configure the {@link angular.module.AUTO.$injector $injector}. * *
      * // Create a new module
      * var myModule = angular.module('myModule', []);
      *
-     * // configure a new service
+     * // register a new service
      * myModule.value('appName', 'MyCoolApp');
      *
      * // configure existing services inside initialization blocks.
-     * myModule.init(function($locationProvider) {
+     * myModule.config(function($locationProvider) {
      *   // Configure existing providers
-     *   $locationProvider.hashPrefix = '!';
+     *   $locationProvider.hashPrefix('!');
      * });
      * 
* - * Then you can load your module like this: + * Then you can create an injector and load your modules like this: * *
      * var injector = angular.injector(['ng', 'MyModule'])
      * 
* + * However it's more likely that you'll just use {@link angular.directive.ng:app ng:app} or + * {@link angular.bootstrap} to simplify this process for you. + * * @param {!string} name The name of the module to create or retrieve. * @param {Array.=} requires If specified then new module is being created. If unspecified then the * the module is being retrieved for further configuration. - * @param {Function} initFn Option configuration function for the module. Same as - * {@link angular.Module#init Module.init()}. - * @return {angular.Module} + * @param {Function} configFn Option configuration function for the module. Same as + * {@link angular.Module#config Module#config()}. + * @returns {module} new module with the {@link angular.Module} api. */ return function module(name, requires, configFn) { if (requires && modules.hasOwnProperty(name)) { @@ -1107,8 +1113,8 @@ function setupModuleLoader(window) { * @ngdoc method * @name angular.Module#config * @methodOf angular.Module - * @param {Function} initializationFn Execute this function on module load. Useful for - * service configuration. + * @param {Function} configFn Execute this function on module load. Useful for service + * configuration. * @description * Use this method to register work which needs to be performed on module loading. */ @@ -1121,7 +1127,8 @@ function setupModuleLoader(window) { * @param {Function} initializationFn Execute this function after injector creation. * Useful for application initialization. * @description - * Use this method to register work which needs to be performed on module loading. + * Use this method to register work which needs to be performed when the injector with + * with the current module is finished loading. */ run: function(block) { runBlocks.push(block); @@ -1166,7 +1173,7 @@ function setupModuleLoader(window) { * - `codeName` – `{string}` – Code name of the release, such as "jiggling-armfat". */ var version = { - full: '0.10.6-5cdfe45a', // all of these placeholder strings will be replaced by rake's + full: '0.10.6', // all of these placeholder strings will be replaced by rake's major: 0, // compile task minor: 10, dot: 6, @@ -1525,7 +1532,7 @@ function inferInjectionArgs(fn) { *
  *   var $injector = angular.injector();
  *   expect($injector.get('$injector')).toBe($injector);
- *   expect($injector.invoke(null, function($injector){
+ *   expect($injector.invoke(function($injector){
  *     return $injector;
  *   }).toBe($injector);
  * 
@@ -1632,7 +1639,7 @@ function inferInjectionArgs(fn) { * * describe('Greeter', function(){ * - * beforeEach(inject(function($provide) { + * beforeEach(module(function($provide) { * $provide.service('greet', GreetProvider); * }); * @@ -1640,13 +1647,13 @@ function inferInjectionArgs(fn) { * expect(greet('angular')).toEqual('Hello angular!'); * })); * - * it('should allow configuration of salutation', inject( - * function(greetProvider) { + * it('should allow configuration of salutation', function() { + * module(function(greetProvider) { * greetProvider.salutation('Ahoj'); - * }, - * function(greet) { + * }); + * inject(function(greet) { * expect(greet('angular')).toEqual('Ahoj angular!'); - * } + * }); * )}; * * }); @@ -2392,6 +2399,8 @@ function htmlSanitizeWriter(buf){ * ## In addtion to the above, Angular privides an additional method to both jQuery and jQuery lite: * * - `scope()` - retrieves the current Angular scope of the element. + * - `injector()` - retrieves the Angular injector associated with application that the element is + * part of. * - `inheritedData()` - same as `data()`, but walks up the DOM until a value is found or the top * parent element is reached. * @@ -2647,6 +2656,10 @@ forEach({ return jqLite(element).inheritedData($$scope); }, + injector: function(element) { + return jqLite(element).inheritedData('$injector'); + }, + removeAttr: function(element,name) { element.removeAttribute(name); }, @@ -6335,13 +6348,13 @@ function $LocationProvider(){ hashPrefix = prefix; return this; } else { - return html5Mode; + return hashPrefix; } } /** * @ngdoc property - * @name angular.module.ng.$locationProvider#hashPrefix + * @name angular.module.ng.$locationProvider#html5Mode * @methodOf angular.module.ng.$locationProvider * @description * @param {string=} mode Use HTML5 strategy if available. @@ -6418,8 +6431,10 @@ function $LocationProvider(){ // update $location when $browser url changes $browser.onUrlChange(function(newUrl) { if (currentUrl.absUrl() != newUrl) { - currentUrl.$$parse(newUrl); - $rootScope.$apply(); + $rootScope.$evalAsync(function() { + currentUrl.$$parse(newUrl); + }); + if (!$rootScope.$$phase) $rootScope.$digest(); } }); @@ -6581,8 +6596,8 @@ function $LogProvider(){ * @param {Object.=} actions Hash with declaration of custom action that should extend the * default set of resource actions. The declaration should be created in the following format: * - * {action1: {method:?, params:?, isArray:?, verifyCache:?}, - * action2: {method:?, params:?, isArray:?, verifyCache:?}, + * {action1: {method:?, params:?, isArray:?}, + * action2: {method:?, params:?, isArray:?}, * ...} * * Where: @@ -6594,9 +6609,6 @@ function $LogProvider(){ * - `params` – {object=} – Optional set of pre-bound parameters for this action. * - isArray – {boolean=} – If true then the returned object for this action is an array, see * `returns` section. - * - verifyCache – {boolean=} – If true then whenever cache hit occurs, the object is returned and - * an async request will be made to the server and the resources as well as the cache will be - * updated when the response is received. * * @returns {Object} A resource "class" object with methods for the default set of resource actions * optionally extended with custom `actions`. The default set contains these actions: @@ -8453,7 +8465,8 @@ function $RootScopeProvider(){ * * # Example
-           var scope = angular.module.ng.$rootScope.Scope();
+           // let's assume that scope was dependency injected as the $rootScope
+           var scope = $rootScope;
            scope.name = 'misko';
            scope.counter = 0;
 
@@ -9980,7 +9993,8 @@ angularDirective("ng:init", function(expression){
            this.contacts.push({type:'email', value:'yourname@example.org'});
          },
          removeContact: function(contactToRemove) {
-           angular.module.ng.$filter.remove(this.contacts, contactToRemove);
+           var index = this.contacts.indexOf(contactToRemove);
+           this.contacts.splice(index, 1);
          },
          clearContact: function(contact) {
            contact.type = 'phone';
diff --git a/app/lib/angular/angular.min.js b/app/lib/angular/angular.min.js
index 21cf3d4..b32e9d5 100644
--- a/app/lib/angular/angular.min.js
+++ b/app/lib/angular/angular.min.js
@@ -1,92 +1,92 @@
 /*
- AngularJS v0.10.6-5cdfe45a
+ AngularJS v0.10.6
  (c) 2010-2012 AngularJS http://angularjs.org
  License: MIT
 */
 'use strict';(function(D,L,F){function k(a,b,c){var d;if(a)if(B(a))for(d in a)d!="prototype"&&d!=gc&&d!=hc&&a.hasOwnProperty(d)&&b.call(c,a[d],d);else if(a.forEach&&a.forEach!==k)a.forEach(b,c);else if(H(a)&&ga(a.length))for(d=0;d=0&&a.splice(c,1);return b}function nc(a){if(a)switch(a.nodeName){case "OPTION":case "PRE":case "TITLE":return!0}return!1}function M(a,b){if(ta(a)||a&&a.$evalAsync&&a.$watch)throw y("Can't copy Window or Scope");if(b){if(a===b)throw y("Can't copy equivalent objects or arrays");if(E(a)){for(;b.length;)b.pop();for(var c=0;c=0&&a.splice(c,1);return b}function nc(a){if(a)switch(a.nodeName){case "OPTION":case "PRE":case "TITLE":return!0}return!1}function M(a,b){if(ta(a)||a&&a.$evalAsync&&a.$watch)throw y("Can't copy Window or Scope");if(b){if(a===b)throw y("Can't copy equivalent objects or arrays");if(E(a)){for(;b.length;)b.pop();for(var c=0;c2?ca.call(arguments,2):[];return B(b)&&!(b instanceof RegExp)?c.length?function(){return arguments.length?b.apply(a,c.concat(ca.call(arguments,0))):b.apply(a,c)}:function(){return arguments.length?b.apply(a,arguments):b.call(a)}:b}function va(a){a&&a.length!==0?(a=v(""+a),a=!(a=="f"||a=="0"||a=="false"||a=="no"||a=="n"||a=="[]")):a=!1;return a}function Oa(a){var b={},c,d;k((a||"").split("&"),function(a){a&&(c=a.split("="),d=decodeURIComponent(c[0]),b[d]=t(c[1])?
+function Z(a,b){var c=arguments.length>2?ca.call(arguments,2):[];return B(b)&&!(b instanceof RegExp)?c.length?function(){return arguments.length?b.apply(a,c.concat(ca.call(arguments,0))):b.apply(a,c)}:function(){return arguments.length?b.apply(a,arguments):b.call(a)}:b}function va(a){a&&a.length!==0?(a=v(""+a),a=!(a=="f"||a=="0"||a=="false"||a=="no"||a=="n"||a=="[]")):a=!1;return a}function Pa(a){var b={},c,d;k((a||"").split("&"),function(a){a&&(c=a.split("="),d=decodeURIComponent(c[0]),b[d]=t(c[1])?
 decodeURIComponent(c[1]):!0)});return b}function pb(a){var b=[];k(a,function(a,d){b.push(da(d,!0)+(a===!0?"":"="+da(a,!0)))});return b.length?b.join("&"):""}function wa(a){return da(a,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function da(a,b){return encodeURIComponent(a).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(b?null:/%20/g,"+")}function oc(a,b){function c(a){a&&d.push(a)}var d=[a],e,g,f=["ng:app","ng-app","x-ng-app","data-ng-app"],
 i=/\sng[:\-]app(:\s*([\w\d_]+);?)?\s/;k(f,function(b){f[b]=!0;c(L.getElementById(b));b=b.replace(":","\\:");a.querySelectorAll&&(k(a.querySelectorAll("."+b),c),k(a.querySelectorAll("."+b+"\\:"),c),k(a.querySelectorAll("["+b+"]"),c))});k(d,function(a){if(!e){var b=i.exec(" "+a.className+" ");b?(e=a,g=(b[2]||"").replace(/\s+/g,",")):k(a.attributes,function(b){if(!e&&f[b.name])e=a,g=b.value})}});e&&b(e,g?[g]:[])}function qb(a,b){a=q(a);b=b||[];b.unshift("ng");var c=rb(b);c.invoke(["$rootScope","$compile",
 "$injector",function(b,c,g){b.$apply(function(){a.data("$injector",g);c(a)(b)})}]);return c}function sb(a,b,c){if(!a)throw new y("Argument '"+(b||"?")+"' is "+(c||"required"));return a}function ea(a,b){sb(B(a),b,"not a function, got "+(typeof a=="object"?a.constructor.name||"Object":typeof a));return a}function pc(a){function b(a,b,e){return a[b]||(a[b]=e())}return b(b(a,"angular",Object),"module",function(){var a={};return function(d,e,g){e&&a.hasOwnProperty(d)&&(a[d]=null);return b(a,d,function(){function a(c,
-d){return function(){b.push([c,d,arguments]);return l}}if(!e)throw y("No module: "+d);var b=[],c=[],h=a("$injector","invoke"),l={_invokeQueue:b,_runBlocks:c,requires:e,name:d,service:a("$provide","service"),factory:a("$provide","factory"),value:a("$provide","value"),filter:a("$filterProvider","register"),config:h,run:function(a){c.push(a);return this}};g&&h(g);return l})}})}function Q(a,b){var c=[];Pa(c,a,b?"\n  ":null,[]);return c.join("")}function ka(a,b){function c(a){if(s(a)&&a.length===qc)return tb(a);
+d){return function(){b.push([c,d,arguments]);return l}}if(!e)throw y("No module: "+d);var b=[],c=[],h=a("$injector","invoke"),l={_invokeQueue:b,_runBlocks:c,requires:e,name:d,service:a("$provide","service"),factory:a("$provide","factory"),value:a("$provide","value"),filter:a("$filterProvider","register"),config:h,run:function(a){c.push(a);return this}};g&&h(g);return l})}})}function Q(a,b){var c=[];Qa(c,a,b?"\n  ":null,[]);return c.join("")}function ka(a,b){function c(a){if(s(a)&&a.length===qc)return tb(a);
 else(E(a)||H(a))&&k(a,function(b,d){a[d]=c(b)});return a}if(!s(a))return a;var d;try{return d=b&&D.JSON&&D.JSON.parse?JSON.parse(a):ub(a,!0)(),c(d)}catch(e){throw rc("fromJson error: ",a,e),e;}}function tb(a){var b;if(s(a)&&(b=a.match(sc)))a=new Date(0),a.setUTCFullYear(b[1],b[2]-1,b[3]),a.setUTCHours(b[4]||0,b[5]||0,b[6]||0,b[7]||0);return a}function tc(a){if(!a)return a;var b=a.toISOString?a.toISOString():"";return b.length==24?b:R(a.getUTCFullYear(),4)+"-"+R(a.getUTCMonth()+1,2)+"-"+R(a.getUTCDate(),
 2)+"T"+R(a.getUTCHours(),2)+":"+R(a.getUTCMinutes(),2)+":"+R(a.getUTCSeconds(),2)+"."+R(a.getUTCMilliseconds(),3)+"Z"}function xa(a){for(var b=['"'],c=0;c=0;d--)if(f[d]==c)break;if(d>=0){for(e=f.length-1;e>=d;e--)b.end&&b.end(f[e]);f.length=d}}var e,g,f=[],i=a;for(f.last=function(){return f[f.length-1]};a;){g=!0;if(!f.last()||!Ab[f.last()]){if(a.indexOf("<\!--")===0)e=a.indexOf("--\>"),e>=
-0&&(b.comment&&b.comment(a.substring(4,e)),a=a.substring(e+3),g=!1);else if(Ac.test(a)){if(e=a.match(Bb))a=a.substring(e[0].length),e[0].replace(Bb,d),g=!1}else if(Bc.test(a)&&(e=a.match(Cb)))a=a.substring(e[0].length),e[0].replace(Cb,c),g=!1;g&&(e=a.indexOf("<"),g=e<0?a:a.substring(0,e),a=e<0?"":a.substring(e),b.chars&&b.chars(Sa(g)))}else a=a.replace(RegExp("(.*)<\\s*\\/\\s*"+f.last()+"[^>]*>","i"),function(a,c){c=c.replace(Cc,"$1").replace(Dc,"$1");b.chars&&b.chars(Sa(c));return""}),d("",f.last());
-if(a==i)throw"Parse Error: "+a;i=a}d()}function Sa(a){Ta.innerHTML=a.replace(//g,">")}function nb(a){var b=!1,c=Z(a,a.push);return{start:function(a,e,g){a=v(a);!b&&Ab[a]&&(b=a);!b&&Eb[a]==!0&&(c("<"),c(a),k(e,function(a,b){var d=v(b);if(Fc[d]==!0&&(Fb[d]!==!0||a.match(Gc)))c(" "),c(b),c('="'),c(Db(a)),c('"')}),c(g?
-"/>":">"))},end:function(a){a=v(a);!b&&Eb[a]==!0&&(c(""));a==b&&(b=!1)},chars:function(a){b||c(Db(a))}}}function Hc(a){return a.replace(/\-(\w)/g,function(a,c,d){return d==0&&c=="w"?"w":c.toUpperCase()})}function Ua(a,b){function c(){var e;for(var a=[this],c=b,f,i,j,h,l,o,m;a.length;){f=a.shift();i=0;for(j=f.length;i "+a;b.removeChild(b.firstChild);Wa(this,b.childNodes);this.remove()}else Wa(this,a)}function ma(a){Gb(a);for(var b=0,a=a.childNodes||[];b-1}function Hb(a,b){b&&k(b.split(" "),function(b){a.className=O((" "+a.className+" ").replace(/[\n\t]/g," ").replace(" "+O(b)+" "," "))})}function Ib(a,b){b&&k(b.split(" "),function(b){if(!Da(a,b))a.className=O(a.className+" "+O(b))})}function Wa(a,
-b){if(b)for(var b=!b.nodeName&&t(b.length)&&!ta(b)?b:[b],c=0;c=0;d--)if(f[d]==c)break;if(d>=0){for(e=f.length-1;e>=d;e--)b.end&&b.end(f[e]);f.length=d}}var e,g,f=[],i=a;for(f.last=function(){return f[f.length-1]};a;){g=!0;if(!f.last()||!Ab[f.last()]){if(a.indexOf("<\!--")===0)e=a.indexOf("--\>"),e>=
+0&&(b.comment&&b.comment(a.substring(4,e)),a=a.substring(e+3),g=!1);else if(Ac.test(a)){if(e=a.match(Bb))a=a.substring(e[0].length),e[0].replace(Bb,d),g=!1}else if(Bc.test(a)&&(e=a.match(Cb)))a=a.substring(e[0].length),e[0].replace(Cb,c),g=!1;g&&(e=a.indexOf("<"),g=e<0?a:a.substring(0,e),a=e<0?"":a.substring(e),b.chars&&b.chars(Ta(g)))}else a=a.replace(RegExp("(.*)<\\s*\\/\\s*"+f.last()+"[^>]*>","i"),function(a,c){c=c.replace(Cc,"$1").replace(Dc,"$1");b.chars&&b.chars(Ta(c));return""}),d("",f.last());
+if(a==i)throw"Parse Error: "+a;i=a}d()}function Ta(a){Ua.innerHTML=a.replace(//g,">")}function nb(a){var b=!1,c=Z(a,a.push);return{start:function(a,e,g){a=v(a);!b&&Ab[a]&&(b=a);!b&&Eb[a]==!0&&(c("<"),c(a),k(e,function(a,b){var d=v(b);if(Fc[d]==!0&&(Fb[d]!==!0||a.match(Gc)))c(" "),c(b),c('="'),c(Db(a)),c('"')}),c(g?
+"/>":">"))},end:function(a){a=v(a);!b&&Eb[a]==!0&&(c(""));a==b&&(b=!1)},chars:function(a){b||c(Db(a))}}}function Hc(a){return a.replace(/\-(\w)/g,function(a,c,d){return d==0&&c=="w"?"w":c.toUpperCase()})}function Va(a,b){function c(){var e;for(var a=[this],c=b,f,i,j,h,l,o,m;a.length;){f=a.shift();i=0;for(j=f.length;i "+a;b.removeChild(b.firstChild);Xa(this,b.childNodes);this.remove()}else Xa(this,a)}function ma(a){Gb(a);for(var b=0,a=a.childNodes||[];b-1}function Hb(a,b){b&&k(b.split(" "),function(b){a.className=O((" "+a.className+" ").replace(/[\n\t]/g," ").replace(" "+O(b)+" "," "))})}function Ib(a,b){b&&k(b.split(" "),function(b){if(!Da(a,b))a.className=O(a.className+" "+O(b))})}function Xa(a,
+b){if(b)for(var b=!b.nodeName&&t(b.length)&&!ta(b)?b:[b],c=0;c4096&&d.warn("Cookie '"+a+"' possibly not set or overflowed because it was too large ("+c+" > 4096 bytes)!"),K.length>
-20&&d.warn("Cookie '"+a+"' possibly not set or overflowed because too many cookies were already set ("+K.length+" > 20 )")}else{if(h.cookie!==Ra){Ra=h.cookie;c=Ra.split("; ");K={};for(e=0;e0&&(K[unescape(f.substring(0,g))]=unescape(f.substring(g+1)))}return K}};j.defer=function(a,b){var c;n++;c=m(function(){delete p[c];g(a)},b||0);p[c]=!0;return c};j.defer.cancel=function(a){return p[a]?(delete p[a],x(a),g(A),!0):!1};j.addCss=function(a){var b=q(h.createElement("link"));
+b?l.replace(a):l.href=a,j):l.href};var N=[],T=!1;j.onUrlChange=function(b){T||(e.history&&q(a).bind("popstate",i),e.hashchange?q(a).bind("hashchange",i):j.addPollFn(i),T=!0);N.push(b);return b};var K={},Sa="";j.cookies=function(a,b){var c,f,e,g;if(a)if(b===F)h.cookie=escape(a)+"=;expires=Thu, 01 Jan 1970 00:00:00 GMT";else{if(s(b))h.cookie=escape(a)+"="+escape(b),c=a.length+b.length+1,c>4096&&d.warn("Cookie '"+a+"' possibly not set or overflowed because it was too large ("+c+" > 4096 bytes)!"),K.length>
+20&&d.warn("Cookie '"+a+"' possibly not set or overflowed because too many cookies were already set ("+K.length+" > 20 )")}else{if(h.cookie!==Sa){Sa=h.cookie;c=Sa.split("; ");K={};for(e=0;e0&&(K[unescape(f.substring(0,g))]=unescape(f.substring(g+1)))}return K}};j.defer=function(a,b){var c;n++;c=m(function(){delete p[c];g(a)},b||0);p[c]=!0;return c};j.defer.cancel=function(a){return p[a]?(delete p[a],x(a),g(A),!0):!1};j.addCss=function(a){var b=q(h.createElement("link"));
 b.attr("rel","stylesheet");b.attr("type","text/css");b.attr("href",a);c.append(b)};j.addJs=function(a,b){var d=h.createElement("script");d.type="text/javascript";d.src=a;if(P)d.onreadystatechange=function(){/loaded|complete/.test(d.readyState)&&b&&b()};else if(b)d.onload=d.onerror=b;c[0].appendChild(d);return d};j.baseHref=function(){var a=b.find("base").attr("href");return a?a.replace(/^https?\:\/\/[^\/]*/,""):a}}function Mc(){this.$get=["$window","$log","$sniffer","$document",function(a,b,c,d){return new Kc(a,
 d,d.find("body"),b,c)}]}function Nc(){this.$get=function(){function a(a,d){function e(a){if(a!=o){if(m){if(m==a)m=a.n}else m=a;g(a.n,a.p);g(a,o);o=a;o.n=null}}function g(a,b){if(a!=b){if(a)a.p=b;if(b)b.n=a}}if(a in b)throw y("cacheId "+a+" taken");var f=0,i=z({},d,{id:a}),j={},h=d&&d.capacity||Number.MAX_VALUE,l={},o=null,m=null;return b[a]={put:function(a,b){var c=l[a]||(l[a]={key:a});e(c);C(b)||(a in j||f++,j[a]=b,f>h&&this.remove(m.key))},get:function(a){var b=l[a];if(b)return e(b),j[a]},remove:function(a){var b=
 l[a];if(b==o)o=b.p;if(b==m)m=b.n;g(b.n,b.p);delete l[a];delete j[a];f--},removeAll:function(){j={};f=0;l={};o=m=null},destroy:function(){l=i=j=null;delete b[a]},info:function(){return z({},i,{size:f})}}}var b={};a.info=function(){var a={};k(b,function(b,e){a[e]=b.info()});return a};a.get=function(a){return b[a]};return a}}function Oc(){this.$get=["$cacheFactory",function(a){return a("templates")}]}function Pc(){this.$get=["$injector","$exceptionHandler","$textMarkup","$attrMarkup","$directive","$widget",
-function(a,b,c,d,e,g){function f(){this.paths=[];this.children=[];this.linkFns=[];this.newScope=!1}function i(a,b,c,d){this.markup=a;this.attrMarkup=b;this.directives=c;this.widgets=d}f.prototype={link:function(c,d){var f=d,e={$element:c};this.newScope&&(f=B(this.newScope)?d.$new(this.newScope(d)):d.$new(),c.data(Za,f));k(this.linkFns,function(d){try{E(d)||d.$inject?a.invoke(d,f,e):d.call(f,c)}catch(h){b(h)}});var g,i=c[0].childNodes,p=this.children,n=this.paths,r=n.length;for(g=0;g1)throw y("Cannot compile multiple element roots: "+q("
").append(a.clone()).html());if(d&&d[0])for(var d=d[0],e=0;e0?v(r).replace(":","-"):"",u,S={$element:b},N={compile:Z(d,d.compile),descend:function(a){t(a)&&(p=a);return p},directives:function(a){t(a)&&(n=a);return n},scope:function(a){if(t(a))u.newScope=u.newScope||a;return u.newScope}};b.addClass(w);u=new f;ab(b,function(a,c){if(!e&&(e=d.widgets("@"+ +return function(b,d){sb(b,"scope");var f=d?Ea.clone.call(a):a;f.data($a,b);b.$element=f;(d||A)(f,b);c.link(f,b);return f}},templatize:function(b,c){var d=this,e,g,i=d.directives,p=!0,n=!0,r=oa(b),w=r.indexOf(":")>0?v(r).replace(":","-"):"",u,S={$element:b},N={compile:Z(d,d.compile),descend:function(a){t(a)&&(p=a);return p},directives:function(a){t(a)&&(n=a);return n},scope:function(a){if(t(a))u.newScope=u.newScope||a;return u.newScope}};b.addClass(w);u=new f;ab(b,function(a,c){if(!e&&(e=d.widgets("@"+ c))){b.addClass("ng-attr-widget");if(B(e)&&!e.$inject)e.$inject=["$value","$element"];S.$value=a}});if(!e&&(e=d.widgets(r)))if(w&&b.addClass("ng-widget"),B(e)&&!e.$inject)e.$inject=["$element"];e&&(n=p=!1,r=b.parent(),u.addLinkFn(a.invoke(e,N,S)),r&&r[0]&&(b=q(r[0].childNodes[c])));if(p)for(var T=0,K=b[0].childNodes;T-1;case "object":for(var c in a)if(c.charAt(0)!=="$"&&d(a[c],b))return!0;return!1;case "array":for(c=0;c-1;case "object":for(var c in a)if(c.charAt(0)!=="$"&&d(a[c],b))return!0;return!1;case "array":for(c=0;c=l+o)for(var h=f.length-l,m=0;m0||e>-c)e+=c;e===0&&c==-12&&(e=12);return R(e,b,d)}}function Fa(a,b){return function(c,d){var e=c["get"+a](),g=pa(b?"SHORT"+a:a);return d[g][e]}}function Lb(a){return function(b,c){var d="",e=[],g,f,c=c||"mediumDate",c=a.DATETIME_FORMATS[c]||c;s(b)&&(b=cd.test(b)?parseInt(b,10):tb(b));ga(b)&&(b=new Date(b));if(!sa(b))return b;for(;c;)(f=dd.exec(c))? -(e=e.concat(ca.call(f,1)),c=e.pop()):(e.push(c),c=null);k(e,function(c){g=ed[c];d+=g?g(b,a.DATETIME_FORMATS):c.replace(/(^'|'$)/g,"").replace(/''/g,"'")});return d}}function Yc(){return function(a){return Q(a,!0)}}function Xc(){return function(a,b){return new Ma(a,b)}}function $c(){var a=/((ftp|https?):\/\/|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s\.\;\,\(\)\{\}\<\>]/,b=/^mailto:/;return function(c){if(!c)return c;for(var d=c,e=[],g=nb(e),f,i;c=d.match(a);)f=c[0],c[2]==c[3]&&(f="mailto:"+f),i=c.index, -g.chars(d.substr(0,i)),g.start("a",{href:f}),g.chars(c[0].replace(b,"")),g.end("a"),d=d.substring(i+c[0].length);g.chars(d);return new Ma(e.join(""))}}function Zc(){return function(a,b){if(!(a instanceof Array))return a;var b=parseInt(b,10),c=[],d,e;if(!a||!(a instanceof Array))return c;b>a.length?b=a.length:b<-a.length&&(b=-a.length);b>0?(d=0,e=b):(d=a.length+b,e=a.length);for(;d0||e>-c)e+=c;e===0&&c==-12&&(e=12);return R(e,b,d)}}function Ga(a,b){return function(c,d){var e=c["get"+a](),g=pa(b?"SHORT"+a:a);return d[g][e]}}function Lb(a){return function(b,c){var d="",e=[],g,f,c=c||"mediumDate",c=a.DATETIME_FORMATS[c]||c;s(b)&&(b=cd.test(b)?parseInt(b,10):tb(b));ga(b)&&(b=new Date(b));if(!sa(b))return b;for(;c;)(f=dd.exec(c))? +(e=e.concat(ca.call(f,1)),c=e.pop()):(e.push(c),c=null);k(e,function(c){g=ed[c];d+=g?g(b,a.DATETIME_FORMATS):c.replace(/(^'|'$)/g,"").replace(/''/g,"'")});return d}}function Yc(){return function(a){return Q(a,!0)}}function Xc(){return function(a,b){return new Na(a,b)}}function $c(){var a=/((ftp|https?):\/\/|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s\.\;\,\(\)\{\}\<\>]/,b=/^mailto:/;return function(c){if(!c)return c;for(var d=c,e=[],g=nb(e),f,i;c=d.match(a);)f=c[0],c[2]==c[3]&&(f="mailto:"+f),i=c.index, +g.chars(d.substr(0,i)),g.start("a",{href:f}),g.chars(c[0].replace(b,"")),g.end("a"),d=d.substring(i+c[0].length);g.chars(d);return new Na(e.join(""))}}function Zc(){return function(a,b){if(!(a instanceof Array))return a;var b=parseInt(b,10),c=[],d,e;if(!a||!(a instanceof Array))return c;b>a.length?b=a.length:b<-a.length&&(b=-a.length);b>0?(d=0,e=b):(d=a.length+b,e=a.length);for(;d-1;)c1||cb(a[0])!==null}function Rb(a){for(var a=a.split("/"),b=a.length;b--;)a[b]=wa(a[b]);return a.join("/")}function Ha(a,b){var c=Sb.exec(a),c={protocol:c[1],host:c[3],port:parseInt(c[5],10)||Tb[c[1]]||null,path:c[6]|| -"/",search:c[8],hash:c[10]};if(b)b.$$protocol=c.protocol,b.$$host=c.host,b.$$port=c.port;return c}function ra(a,b,c){return a+"://"+b+(c==Tb[a]?"":":"+c)}function hd(a,b,c){var d=Ha(a);return decodeURIComponent(d.path)!=b||C(d.hash)||d.hash.indexOf(c)!==0?a:ra(d.protocol,d.host,d.port)+b.substr(0,b.lastIndexOf("/"))+d.hash.substr(c.length)}function id(a,b,c){var d=Ha(a);if(decodeURIComponent(d.path)==b)return a;else{var e=d.search&&"?"+d.search||"",g=d.hash&&"#"+d.hash||"",f=b.substr(0,b.lastIndexOf("/")), -i=d.path.substr(f.length);if(d.path.indexOf(f)!==0)throw'Invalid url "'+a+'", missing path prefix "'+f+'" !';return ra(d.protocol,d.host,d.port)+b+"#"+c+i+e+g}}function db(a,b){b=b||"";this.$$parse=function(a){var d=Ha(a,this);if(d.path.indexOf(b)!==0)throw'Invalid url "'+a+'", missing path prefix "'+b+'" !';this.$$path=decodeURIComponent(d.path.substr(b.length));this.$$search=Oa(d.search);this.$$hash=d.hash&&decodeURIComponent(d.hash)||"";this.$$compose()};this.$$compose=function(){var a=pb(this.$$search), -d=this.$$hash?"#"+wa(this.$$hash):"";this.$$url=Rb(this.$$path)+(a?"?"+a:"")+d;this.$$absUrl=ra(this.$$protocol,this.$$host,this.$$port)+b+this.$$url};this.$$parse(a)}function eb(a,b){var c;this.$$parse=function(a){var e=Ha(a,this);if(e.hash&&e.hash.indexOf(b)!==0)throw'Invalid url "'+a+'", missing hash prefix "'+b+'" !';c=e.path+(e.search?"?"+e.search:"");e=jd.exec((e.hash||"").substr(b.length));this.$$path=e[1]?(e[1].charAt(0)=="/"?"":"/")+decodeURIComponent(e[1]):"";this.$$search=Oa(e[3]);this.$$hash= -e[5]&&decodeURIComponent(e[5])||"";this.$$compose()};this.$$compose=function(){var a=pb(this.$$search),e=this.$$hash?"#"+wa(this.$$hash):"";this.$$url=Rb(this.$$path)+(a?"?"+a:"")+e;this.$$absUrl=ra(this.$$protocol,this.$$host,this.$$port)+c+(this.$$url?"#"+b+this.$$url:"")};this.$$parse(a)}function Ia(a){return function(){return this[a]}}function Ub(a,b){return function(c){if(C(c))return this[a];this[a]=b(c);this.$$compose();return this}}function kd(){var a="",b=!1;this.hashPrefix=function(c){return t(c)? -(a=c,this):b};this.html5Mode=function(a){return t(a)?(b=a,this):b};this.$get=["$rootScope","$browser","$sniffer","$document",function(c,d,e,g){var f,i=d.baseHref()||"/",j=i.substr(0,i.lastIndexOf("/")),h=d.url();if(b){var e=f=e.history?new db(hd(h,i,a),j):new eb(id(h,i,a),a),l=ra(e.protocol(),e.host(),e.port())+j;g.bind("click",function(a){if(!a.ctrlKey&&!(a.metaKey||a.which==2)){for(var b=q(a.target);b.length&&v(b[0].nodeName)!=="a";)b=b.parent();var d=b.attr("href");d&&!t(b.attr("ng:ext-link"))&& -!b.attr("target")&&(d=d.replace(l,""),d.substr(0,4)!="http"&&(d=d.indexOf(j)===0?d.substr(j.length):d,f.url(d),c.$apply(),a.preventDefault(),D.angular["ff-684208-preventDefault"]=!0))}})}else f=new eb(h,a);f.absUrl()!=h&&d.url(f.absUrl(),!0);d.onUrlChange(function(a){f.absUrl()!=a&&(f.$$parse(a),c.$apply())});var o=0;c.$watch(function(){d.url()!=f.absUrl()&&(o++,c.$evalAsync(function(){d.url(f.absUrl(),f.$$replace);f.$$replace=!1}));return o});return f}]}function ld(){this.$get=["$window",function(a){function b(a){a instanceof -y&&(a.stack?a=a.message&&a.stack.indexOf(a.message)===-1?"Error: "+a.message+"\n"+a.stack:a.stack:a.sourceURL&&(a=a.message+"\n"+a.sourceURL+":"+a.line));return a}function c(c){var e=a.console||{},g=e[c]||e.log||A;return g.apply?function(){var a=[];k(arguments,function(c){a.push(b(c))});return g.apply(e,a)}:g}return{log:c("log"),warn:c("warn"),info:c("info"),error:c("error")}}]}function md(){this.$get=["$http",function(a){a=new za(a);return Z(a,a.route)}]}function nd(a){function b(a){return a.indexOf(p)!= --1}function c(){return m+10){var e=q[0],f=e.text;if(f==a||f==b||f==c||f==d||!a&&!b&&!c&&!d)return e}return!1}function f(a,c,e,f){return(a=g(a,c,e,f))?(b&&!a.json&&d("is not valid json",a),q.shift(),a):!1}function i(a){f(a)||d("is unexpected, expecting ["+a+"]",g())}function j(a,b){return function(c){return a(c,b)}}function h(a,b,c){return function(d){return b(d, -a,c)}}function l(){for(var a=[];;)if(q.length>0&&!g("}",")",";","]")&&a.push(B()),!f(";"))return a.length==1?a[0]:function(b){for(var c,d=0;d","<=",">="))a=h(a,b.fn,n());return a}function k(){for(var a=w(),b;b=f("*","/","%");)a=h(a,b.fn,w());return a}function w(){var a;return f("+")?u():(a=f("-"))?h(T,a.fn,w()):(a=f("!"))?j(a.fn,w()):u()}function u(){var a;if(f("("))a=B(),i(")");else if(f("["))a=S();else if(f("{"))a=N();else{var b=f();(a=b.fn)||d("not a primary expression", -b)}for(;b=f("(","[",".");)b.text==="("?a=v(a):b.text==="["?a=C(a):b.text==="."?a=t(a):d("IMPOSSIBLE");return a}function S(){var a=[];if(e().text!="]"){do a.push(s());while(f(","))}i("]");return function(b){for(var c=[],d=0;d1;d++){var e=b.shift(),g=a[e];g||(g={},a[e]=g);a=g}return a[b.shift()]=c}function Ea(a,b,c){if(!b)return a;for(var b=b.split("."),d,e=a,g=b.length,f=0;f-1;)c1||cb(a[0])!==null}function Rb(a){for(var a=a.split("/"),b=a.length;b--;)a[b]=wa(a[b]);return a.join("/")}function Ia(a,b){var c=Sb.exec(a),c={protocol:c[1],host:c[3],port:parseInt(c[5],10)||Tb[c[1]]||null,path:c[6]|| +"/",search:c[8],hash:c[10]};if(b)b.$$protocol=c.protocol,b.$$host=c.host,b.$$port=c.port;return c}function ra(a,b,c){return a+"://"+b+(c==Tb[a]?"":":"+c)}function hd(a,b,c){var d=Ia(a);return decodeURIComponent(d.path)!=b||C(d.hash)||d.hash.indexOf(c)!==0?a:ra(d.protocol,d.host,d.port)+b.substr(0,b.lastIndexOf("/"))+d.hash.substr(c.length)}function id(a,b,c){var d=Ia(a);if(decodeURIComponent(d.path)==b)return a;else{var e=d.search&&"?"+d.search||"",g=d.hash&&"#"+d.hash||"",f=b.substr(0,b.lastIndexOf("/")), +i=d.path.substr(f.length);if(d.path.indexOf(f)!==0)throw'Invalid url "'+a+'", missing path prefix "'+f+'" !';return ra(d.protocol,d.host,d.port)+b+"#"+c+i+e+g}}function db(a,b){b=b||"";this.$$parse=function(a){var d=Ia(a,this);if(d.path.indexOf(b)!==0)throw'Invalid url "'+a+'", missing path prefix "'+b+'" !';this.$$path=decodeURIComponent(d.path.substr(b.length));this.$$search=Pa(d.search);this.$$hash=d.hash&&decodeURIComponent(d.hash)||"";this.$$compose()};this.$$compose=function(){var a=pb(this.$$search), +d=this.$$hash?"#"+wa(this.$$hash):"";this.$$url=Rb(this.$$path)+(a?"?"+a:"")+d;this.$$absUrl=ra(this.$$protocol,this.$$host,this.$$port)+b+this.$$url};this.$$parse(a)}function eb(a,b){var c;this.$$parse=function(a){var e=Ia(a,this);if(e.hash&&e.hash.indexOf(b)!==0)throw'Invalid url "'+a+'", missing hash prefix "'+b+'" !';c=e.path+(e.search?"?"+e.search:"");e=jd.exec((e.hash||"").substr(b.length));this.$$path=e[1]?(e[1].charAt(0)=="/"?"":"/")+decodeURIComponent(e[1]):"";this.$$search=Pa(e[3]);this.$$hash= +e[5]&&decodeURIComponent(e[5])||"";this.$$compose()};this.$$compose=function(){var a=pb(this.$$search),e=this.$$hash?"#"+wa(this.$$hash):"";this.$$url=Rb(this.$$path)+(a?"?"+a:"")+e;this.$$absUrl=ra(this.$$protocol,this.$$host,this.$$port)+c+(this.$$url?"#"+b+this.$$url:"")};this.$$parse(a)}function Ja(a){return function(){return this[a]}}function Ub(a,b){return function(c){if(C(c))return this[a];this[a]=b(c);this.$$compose();return this}}function kd(){var a="",b=!1;this.hashPrefix=function(b){return t(b)? +(a=b,this):a};this.html5Mode=function(a){return t(a)?(b=a,this):b};this.$get=["$rootScope","$browser","$sniffer","$document",function(c,d,e,g){var f,i=d.baseHref()||"/",j=i.substr(0,i.lastIndexOf("/")),h=d.url();if(b){var e=f=e.history?new db(hd(h,i,a),j):new eb(id(h,i,a),a),l=ra(e.protocol(),e.host(),e.port())+j;g.bind("click",function(a){if(!a.ctrlKey&&!(a.metaKey||a.which==2)){for(var b=q(a.target);b.length&&v(b[0].nodeName)!=="a";)b=b.parent();var d=b.attr("href");d&&!t(b.attr("ng:ext-link"))&& +!b.attr("target")&&(d=d.replace(l,""),d.substr(0,4)!="http"&&(d=d.indexOf(j)===0?d.substr(j.length):d,f.url(d),c.$apply(),a.preventDefault(),D.angular["ff-684208-preventDefault"]=!0))}})}else f=new eb(h,a);f.absUrl()!=h&&d.url(f.absUrl(),!0);d.onUrlChange(function(a){f.absUrl()!=a&&(c.$evalAsync(function(){f.$$parse(a)}),c.$$phase||c.$digest())});var o=0;c.$watch(function(){d.url()!=f.absUrl()&&(o++,c.$evalAsync(function(){d.url(f.absUrl(),f.$$replace);f.$$replace=!1}));return o});return f}]}function ld(){this.$get= +["$window",function(a){function b(a){a instanceof y&&(a.stack?a=a.message&&a.stack.indexOf(a.message)===-1?"Error: "+a.message+"\n"+a.stack:a.stack:a.sourceURL&&(a=a.message+"\n"+a.sourceURL+":"+a.line));return a}function c(c){var e=a.console||{},g=e[c]||e.log||A;return g.apply?function(){var a=[];k(arguments,function(c){a.push(b(c))});return g.apply(e,a)}:g}return{log:c("log"),warn:c("warn"),info:c("info"),error:c("error")}}]}function md(){this.$get=["$http",function(a){a=new za(a);return Z(a,a.route)}]} +function nd(a){function b(a){return a.indexOf(p)!=-1}function c(){return m+10){var e=q[0],f=e.text;if(f==a||f==b||f==c||f==d||!a&&!b&&!c&&!d)return e}return!1}function f(a,c,e,f){return(a=g(a,c,e,f))?(b&&!a.json&&d("is not valid json",a),q.shift(),a):!1}function i(a){f(a)||d("is unexpected, expecting ["+a+"]",g())}function j(a,b){return function(c){return a(c, +b)}}function h(a,b,c){return function(d){return b(d,a,c)}}function l(){for(var a=[];;)if(q.length>0&&!g("}",")",";","]")&&a.push(B()),!f(";"))return a.length==1?a[0]:function(b){for(var c,d=0;d","<=",">="))a=h(a,b.fn,n());return a}function k(){for(var a=w(),b;b=f("*","/","%");)a=h(a,b.fn,w());return a}function w(){var a;return f("+")?u():(a=f("-"))?h(T,a.fn,w()):(a=f("!"))?j(a.fn,w()):u()}function u(){var a;if(f("("))a=B(),i(")");else if(f("["))a=S();else if(f("{"))a=N();else{var b= +f();(a=b.fn)||d("not a primary expression",b)}for(;b=f("(","[",".");)b.text==="("?a=v(a):b.text==="["?a=C(a):b.text==="."?a=t(a):d("IMPOSSIBLE");return a}function S(){var a=[];if(e().text!="]"){do a.push(s());while(f(","))}i("]");return function(b){for(var c=[],d=0;d1;d++){var e=b.shift(),g=a[e];g||(g={},a[e]=g);a=g}return a[b.shift()]=c}function Fa(a,b,c){if(!b)return a;for(var b=b.split("."),d,e=a,g=b.length,f=0;f7)}}]}function wd(){this.$get=Y(D)}function Zb(a){var b={},c,d,e;if(!a)return b;k(a.split("\n"),function(a){e=a.indexOf(":");c=v(O(a.substr(0,e)));d=O(a.substr(e+1));c&&(b[c]?b[c]+= ", "+d:b[c]=d)});return b}function $b(a){var b=H(a)?a:F;return function(c){b||(b=Zb(a));return c?b[v(c)]||null:b}}function ac(a,b,c){if(B(c))return c(a,b);k(c,function(c){a=c(a,b)});return a}function xd(){var a=/^\s*(\[|\{[^\{])/,b=/[\}\]]\s*$/,c=/^\)\]\}',?\n/,d=this.defaults={transformResponse:function(d){s(d)&&(d=d.replace(c,""),a.test(d)&&b.test(d)&&(d=ka(d,!0)));return d},transformRequest:function(a){return H(a)?Q(a):a},headers:{common:{Accept:"application/json, text/plain, */*","X-Requested-With":"XMLHttpRequest"}, post:{"Content-Type":"application/json"},put:{"Content-Type":"application/json"}}},e=this.responseInterceptors=[];this.$get=["$httpBackend","$browser","$cacheFactory","$rootScope","$q","$injector",function(a,b,c,j,h,l){function o(a){function c(a){var b=z({},a,{data:ac(a.data,a.headers,g)});return 200<=a.status&&a.status<300?b:h.reject(b)}a.method=pa(a.method);var e=a.transformRequest||d.transformRequest,g=a.transformResponse||d.transformResponse,i=d.headers,i=z({"X-XSRF-TOKEN":b.cookies()["XSRF-TOKEN"]}, @@ -97,54 +97,55 @@ c;b(c==1223?204:c,d,e);a.$$completeOutstandingRequest(A)}a.$$incOutstandingReque n.send(j||"");o>0&&c(function(){r=-1;n.abort()},o)}}}function Bd(){this.$get=function(){return{id:"en-us",NUMBER_FORMATS:{DECIMAL_SEP:".",GROUP_SEP:",",PATTERNS:[{minInt:1,minFrac:0,maxFrac:3,posPre:"",posSuf:"",negPre:"-",negSuf:"",gSize:3,lgSize:3},{minInt:1,minFrac:2,maxFrac:2,posPre:"\u00a4",posSuf:"",negPre:"(\u00a4",negSuf:")",gSize:3,lgSize:3}],CURRENCY_SYM:"$"},DATETIME_FORMATS:{MONTH:"January,February,March,April,May,June,July,August,September,October,November,December".split(","),SHORTMONTH:"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec".split(","), DAY:"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday".split(","),SHORTDAY:"Sun,Mon,Tue,Wed,Thu,Fri,Sat".split(","),AMPMS:["AM","PM"],medium:"MMM d, y h:mm:ss a","short":"M/d/yy h:mm a",fullDate:"EEEE, MMMM d, y",longDate:"MMMM d, y",mediumDate:"MMM d, y",shortDate:"M/d/yy",mediumTime:"h:mm:ss a",shortTime:"h:mm a"},pluralCat:function(a){return a===1?"one":"other"}}}}function gb(a){return function(b){return function(c){this.$watch(b,function(b,e,g){a(b.$index)&&(g&&e!==g&&c.removeClass(E(g)? g.join(" "):g),e&&c.addClass(E(e)?e.join(" "):e))})}}}function bc(a,b){return["$element",function(c){var d=this,e=1*(c.attr("min")||Number.MIN_VALUE),g=1*(c.attr("max")||Number.MAX_VALUE);d.$on("$validate",function(){var c=d.$viewValue,i=c&&O(c)!="",j=s(c)&&c.match(a);d.$emit(!i||j?"$valid":"$invalid",b);i&&(c*=1);d.$emit(j&&cg?"$invalid":"$valid","MAX")});d.$parseView=function(){if(d.$viewValue.match(a))d.$modelValue=1*d.$viewValue;else if(d.$viewValue== -"")d.$modelValue=null};d.$parseModel=function(){d.$viewValue=ga(d.$modelValue)?""+d.$modelValue:""}}]}function aa(a,b,c,d){var e=ka(d.attr("ng:bind-attr")||"{}"),g=/\s*{{(.*)}}\s*/.exec(e[c]),f=Ja[c];b["$"+c]=f?s(d.prop(c))||!!d.prop(c)||!!d[0].attributes[c]:d.attr(c);e[c]&&g&&a.$watch(g[1],function(a,d){b["$"+c]=f?!!d:d;b.$emit("$validate");b.$render&&b.$render()})}if(typeof L.getAttribute==La)L.getAttribute=function(){};var v=function(a){return s(a)?a.toLowerCase():a},pa=function(a){return s(a)? -a.toUpperCase():a},Za="$scope",uc="boolean",gc="length",hc="name",jc="object",kc="string",La="undefined",y=D.Error,P=parseInt((/msie (\d+)/.exec(v(navigator.userAgent))||[])[1],10),q,fa,ca=[].slice,Cd=[].push,lb=Object.prototype.toString,rc=D.console?Z(D.console,D.console.error||A):A,ba=D.angular||(D.angular={}),la=null,hb=ja(ba,"markup"),cc=ja(ba,"attrMarkup"),G=ja(ba,"directive",v),J=ja(ba,"widget",function(a){a=v(a);P<9&&a.charAt(0)!="@"&&L.createElement(a);return a}),$=ja(ba,"inputType",v),oa, -U=["0","0","0"],qc=24;A.$inject=[];ia.$inject=[];oa=P<9?function(a){a=a.nodeName?a:a[0];return a.scopeName&&a.scopeName!="HTML"?pa(a.scopeName+":"+a.nodeName):a.nodeName}:function(a){return a.nodeName?a.nodeName:a[0].nodeName};var Dd={full:"0.10.6-5cdfe45a",major:0,minor:10,dot:6,codeName:"bubblewrap-cape"},sc=/^(\d{4})-(\d\d)-(\d\d)(?:T(\d\d)(?:\:(\d\d)(?:\:(\d\d)(?:\.(\d{3}))?)?)?Z)?$/,wc=/^function\s*[^\(]*\(([^\)]*)\)/m,xc=/,/,yc=/^\s*(.+?)\s*$/,vc=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg;vb.prototype= -{url:function(a){var b=this,c=this.template,d,a=a||{};k(this.urlParams,function(e,f){d=wa(a[f]||b.defaults[f]||"");c=c.replace(RegExp(":"+f+"(\\W)"),d+"$1")});var c=c.replace(/\/?#$/,""),e=[];kb(a,function(a,c){b.urlParams[c]||e.push(da(c)+"="+da(a))});c=c.replace(/\/*$/,"");return c+(e.length?"?"+e.join("&"):"")}};za.DEFAULT_ACTIONS={get:{method:"GET"},save:{method:"POST"},query:{method:"GET",isArray:!0},remove:{method:"DELETE"},"delete":{method:"DELETE"}};za.prototype={route:function(a,b,c){function d(a){var c= -{};k(b||{},function(b,d){c[d]=b.charAt&&b.charAt(0)=="@"?Ea(a,b.substr(1)):b});return c}function e(a){M(a||{},this)}var g=this,f=new vb(a),c=z({},za.DEFAULT_ACTIONS,c);k(c,function(i,j){var h=i.method=="POST"||i.method=="PUT";e[j]=function(a,b,c,j){var p={},n,r=A,w=null;switch(arguments.length){case 4:w=j,r=c;case 3:case 2:if(B(b)){if(B(a)){r=a;w=b;break}r=b;w=c}else{p=a;n=b;r=c;break}case 1:B(a)?r=a:h?n=a:p=a;break;case 0:break;default:throw"Expected between 0-4 arguments [params, data, success, error], got "+ +"")d.$modelValue=null};d.$parseModel=function(){d.$viewValue=ga(d.$modelValue)?""+d.$modelValue:""}}]}function aa(a,b,c,d){var e=ka(d.attr("ng:bind-attr")||"{}"),g=/\s*{{(.*)}}\s*/.exec(e[c]),f=Ka[c];b["$"+c]=f?s(d.prop(c))||!!d.prop(c)||!!d[0].attributes[c]:d.attr(c);e[c]&&g&&a.$watch(g[1],function(a,d){b["$"+c]=f?!!d:d;b.$emit("$validate");b.$render&&b.$render()})}if(typeof L.getAttribute==Ma)L.getAttribute=function(){};var v=function(a){return s(a)?a.toLowerCase():a},pa=function(a){return s(a)? +a.toUpperCase():a},$a="$scope",uc="boolean",gc="length",hc="name",jc="object",kc="string",Ma="undefined",y=D.Error,P=parseInt((/msie (\d+)/.exec(v(navigator.userAgent))||[])[1],10),q,fa,ca=[].slice,Cd=[].push,lb=Object.prototype.toString,rc=D.console?Z(D.console,D.console.error||A):A,ba=D.angular||(D.angular={}),la=null,hb=ja(ba,"markup"),cc=ja(ba,"attrMarkup"),G=ja(ba,"directive",v),J=ja(ba,"widget",function(a){a=v(a);P<9&&a.charAt(0)!="@"&&L.createElement(a);return a}),$=ja(ba,"inputType",v),oa, +U=["0","0","0"],qc=24;A.$inject=[];ia.$inject=[];oa=P<9?function(a){a=a.nodeName?a:a[0];return a.scopeName&&a.scopeName!="HTML"?pa(a.scopeName+":"+a.nodeName):a.nodeName}:function(a){return a.nodeName?a.nodeName:a[0].nodeName};var Dd={full:"0.10.6",major:0,minor:10,dot:6,codeName:"bubblewrap-cape"},sc=/^(\d{4})-(\d\d)-(\d\d)(?:T(\d\d)(?:\:(\d\d)(?:\:(\d\d)(?:\.(\d{3}))?)?)?Z)?$/,wc=/^function\s*[^\(]*\(([^\)]*)\)/m,xc=/,/,yc=/^\s*(.+?)\s*$/,vc=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg;vb.prototype={url:function(a){var b= +this,c=this.template,d,a=a||{};k(this.urlParams,function(e,f){d=wa(a[f]||b.defaults[f]||"");c=c.replace(RegExp(":"+f+"(\\W)"),d+"$1")});var c=c.replace(/\/?#$/,""),e=[];kb(a,function(a,c){b.urlParams[c]||e.push(da(c)+"="+da(a))});c=c.replace(/\/*$/,"");return c+(e.length?"?"+e.join("&"):"")}};za.DEFAULT_ACTIONS={get:{method:"GET"},save:{method:"POST"},query:{method:"GET",isArray:!0},remove:{method:"DELETE"},"delete":{method:"DELETE"}};za.prototype={route:function(a,b,c){function d(a){var c={};k(b|| +{},function(b,d){c[d]=b.charAt&&b.charAt(0)=="@"?Fa(a,b.substr(1)):b});return c}function e(a){M(a||{},this)}var g=this,f=new vb(a),c=z({},za.DEFAULT_ACTIONS,c);k(c,function(i,j){var h=i.method=="POST"||i.method=="PUT";e[j]=function(a,b,c,j){var p={},n,r=A,w=null;switch(arguments.length){case 4:w=j,r=c;case 3:case 2:if(B(b)){if(B(a)){r=a;w=b;break}r=b;w=c}else{p=a;n=b;r=c;break}case 1:B(a)?r=a:h?n=a:p=a;break;case 0:break;default:throw"Expected between 0-4 arguments [params, data, success, error], got "+ arguments.length+" arguments.";}var u=this instanceof e?this:i.isArray?[]:new e(n);g.$http({method:i.method,url:f.url(z({},d(n),i.params||{},p)),data:n}).then(function(a){var b=a.data;if(b)i.isArray?(u.length=0,k(b,function(a){u.push(new e(a))})):M(b,u);(r||A)(u,a.headers)},w);return u};e.bind=function(d){return g.route(a,z({},b,d),c)};e.prototype["$"+j]=function(a,b,c){var f=d(this),g=A,i;switch(arguments.length){case 3:f=a;g=b;i=c;break;case 2:case 1:B(a)?(g=a,i=b):(f=a,g=b||A);case 0:break;default:throw"Expected between 1-3 arguments [params, success, error], got "+ arguments.length+" arguments.";}e[j].call(this,f,h?this:F,g,i)}});return e}};var Cb=/^<\s*([\w:-]+)((?:\s+[\w:-]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)\s*>/,Bb=/^<\s*\/\s*([\w:-]+)[^>]*>/,zc=/([\w:-]+)(?:\s*=\s*(?:(?:"((?:[^"])*)")|(?:'((?:[^'])*)')|([^>\s]+)))?/g,Bc=/^/g,Dc=//g,Gc=/^((ftp|https?):\/\/|mailto:|#)/,Ec=/([^\#-~| |!])/g,zb=V("area,br,col,hr,img,wbr"),dc=V("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),ec=V("rp,rt"), yb=z({},ec,dc),wb=z({},dc,V("address,article,aside,blockquote,caption,center,del,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,map,menu,nav,ol,pre,script,section,table,ul")),xb=z({},ec,V("a,abbr,acronym,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,q,ruby,rp,rt,s,samp,small,span,strike,strong,sub,sup,time,tt,u,var")),Ab=V("script,style"),Eb=z({},zb,wb,xb,yb),Fb=V("background,cite,href,longdesc,src,usemap"),Fc=z({},Fb,V("abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,ismap,lang,language,nohref,nowrap,rel,rev,rows,rowspan,rules,scope,scrolling,shape,span,start,summary,target,title,type,valign,value,vspace,width")), -Ta=L.createElement("pre"),Ba={},Aa="ng-"+(new Date).getTime(),Ic=1,Ed=D.document.addEventListener?function(a,b,c){a.addEventListener(b,c,!1)}:function(a,b,c){a.attachEvent("on"+b,c)},Xa=D.document.removeEventListener?function(a,b,c){a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent("on"+b,c)},$a=X.prototype={ready:function(a){function b(){c||(c=!0,a())}var c=!1;this.bind("DOMContentLoaded",b);Va(D).bind("load",b)},toString:function(){var a=[];k(this,function(b){a.push(""+b)});return"["+ -a.join(", ")+"]"},eq:function(a){return a>=0?q(this[a]):q(this[this.length+a])},length:0,push:Cd,sort:[].sort,splice:[].splice},Ja={};k("multiple,selected,checked,disabled,readOnly,required".split(","),function(a){Ja[v(a)]=a});k({data:Ca,inheritedData:function(a,b,c){for(a=q(a);a.length;){if(c=a.data(b))return c;a=a.parent()}},scope:function(a){return q(a).inheritedData(Za)},removeAttr:function(a,b){a.removeAttribute(b)},hasClass:Da,css:function(a,b,c){b=Hc(b);if(t(c))a.style[b]=c;else{var d;P<=8&& -(d=a.currentStyle&&a.currentStyle[b],d===""&&(d="auto"));d=d||a.style[b];P<=8&&(d=d===""?F:d);return d}},attr:function(a,b,c){var d=v(b);if(Ja[d])if(t(c))c?(a[b]=!0,a.setAttribute(b,d)):(a[b]=!1,a.removeAttribute(d));else return a[b]||a.getAttribute(b)!==null&&(P<9?a.getAttribute(b)!=="":1)?d:F;else if(t(c))a.setAttribute(b,c);else if(a.getAttribute)return a=a.getAttribute(b,2),a===null?F:a},prop:function(a,b,c){if(t(c))a[b]=c;else return a[b]},text:z(P<9?function(a,b){if(a.nodeType==3){if(C(b))return a.nodeValue; -a.nodeValue=b}else{if(C(b))return a.innerText;a.innerText=b}}:function(a,b){if(C(b))return a.textContent;a.textContent=b},{$dv:""}),val:function(a,b){if(C(b))return a.value;a.value=b},html:function(a,b){if(C(b))return a.innerHTML;for(var c=0,d=a.childNodes;c":function(a,b,c){return b(a)>c(a)},"<=":function(a,b,c){return b(a)<=c(a)},">=":function(a,b,c){return b(a)>=c(a)},"&&":function(a,b,c){return b(a)&&c(a)},"||":function(a,b,c){return b(a)||c(a)},"&":function(a,b,c){return b(a)&c(a)},"|":function(a,b,c){return c(a)(a,b(a))},"!":function(a,b){return!b(a)}},od={n:"\n",f:"\u000c",r:"\r",t:"\t",v:"\u000b", -"'":"'",'"':'"'},Xb={},Yb={};k("abstract,boolean,break,byte,case,catch,char,class,const,continue,debugger,default,delete,do,double,else,enum,export,extends,false,final,finally,float,for,function,goto,if,implements,import,ininstanceof,intinterface,long,native,new,null,package,private,protected,public,return,short,static,super,switch,synchronized,this,throw,throws,transient,true,try,typeof,var,volatile,void,undefined,while,with".split(/,/),function(a){Yb[a]=!0});var Ad=D.XMLHttpRequest||function(){try{return new ActiveXObject("Msxml2.XMLHTTP.6.0")}catch(a){}try{return new ActiveXObject("Msxml2.XMLHTTP.3.0")}catch(b){}try{return new ActiveXObject("Msxml2.XMLHTTP")}catch(c){}throw new y("This browser does not support XMLHttpRequest."); -};G("ng:init",function(a){return function(){this.$eval(a)}});G("ng:controller",function(a){this.scope(function(b){b=Ea(b,a,!0)||Ea(D,a,!0);ea(b,a);Qa(b);return b});return A});G("ng:bind",function(a,b){b.addClass("ng-binding");return["$exceptionHandler","$parse","$element",function(b,d,e){var g=d(a),f=Number.NaN;this.$watch(function(a){var d,h,l,k,m=a.hasOwnProperty("$element"),x=a.$element;a.$element=e;try{d=g(a);if(l=d instanceof Ma)d=(h=d).html;f!==d&&(k=ua(d),!l&&!k&&H(d)&&(d=Q(d,!0)),d!=f&&(f= -d,l?e.html(h.get()):k?(e.html(""),e.append(d)):e.text(d==F?"":d)))}catch(p){b(p)}finally{m?a.$element=x:delete a.$element}})}]});G("ng:bind-template",function(a,b){b.addClass("ng-binding");var c=Ga(a);return function(a){var b;this.$watch(function(g){g=c(g,a,!0);g!=b&&(a.text(g),b=g)})}});G("ng:bind-attr",function(a){return function(b){var c={};this.$watch(function(d){var e=d.$eval(a),g;for(g in e){var f=Ga(e[g])(d,b);c[g]!==f&&(c[g]=f,b.attr(g,Ja[v(g)]?va(f):f))}})}});G("ng:click",function(a){return function(b){var c= -this;b.bind("click",function(b){c.$apply(a);b.stopPropagation()})}});G("ng:submit",function(a){return function(b){var c=this;b.bind("submit",function(){c.$apply(a)})}});G("ng:class",gb(function(){return!0}));G("ng:class-odd",gb(function(a){return a%2===0}));G("ng:class-even",gb(function(a){return a%2===1}));G("ng:show",function(a){return function(b){this.$watch(a,function(a,d){b.css("display",va(d)?"":"none")})}});G("ng:hide",function(a){return function(b){this.$watch(a,function(a,d){b.css("display", -va(d)?"none":"")})}});G("ng:style",function(a){return function(b){this.$watch(a,function(a,d,e){e&&d!==e&&k(e,function(a,c){b.css(c,"")});d&&b.css(d)})}});G("ng:cloak",function(a,b){b.removeAttr("ng:cloak");b.removeClass("ng-cloak")});hb("{{}}",function(a,b,c){var d=qa(a);if(bb(d))if(nc(c[0]))c.attr("ng:bind-template",a);else{var e=b,g;k(qa(a),function(a){var b=cb(a);b?(g=q(""),g.attr("ng:bind",b)):g=q(L.createTextNode(a));P&&a.charAt(0)==" "&&(g=q(" "),b=g.html(),g.text(a.substr(1)), -g.html(b+g.html()));e.after(g);e=g});b.remove()}});hb("option",function(a,b,c){v(oa(c))=="option"&&(P<=7?mb(c[0].outerHTML,{start:function(b,e){C(e.value)&&c.attr("value",a)}}):c[0].getAttribute("value")==null&&c.attr("value",a))});var ib={};k("src,href,multiple,selected,checked,disabled,readonly,required".split(","),function(a){ib["ng:"+a]=a});cc("{{}}",function(a,b,c){if(!G(b)&&!G("@"+b)){P&&b=="src"&&(a=decodeURI(a));var d=qa(a);if(bb(d)||ib[b])c.removeAttr(b),d=ka(c.attr("ng:bind-attr")||"{}"), -d[ib[b]||b]=a,c.attr("ng:bind-attr",Q(d))}});J("ng:include",function(a){var b=this,c=a.attr("src"),d=a.attr("scope")||"",e=a[0].getAttribute("onload")||"",g=a.attr("autoscroll");if(a[0]["ng:compiled"])this.descend(!0),this.directives(!0);else return a[0]["ng:compiled"]=!0,["$http","$templateCache","$anchorScroll","$element",function(a,i,j,h){function l(){m++}var k=this,m=0,x;this.$watch(c,l);this.$watch(function(){var a=k.$eval(d);if(a)return a.$id},l);this.$watch(function(){return m},function(l, -k){function o(){k===m&&(x&&x.$destroy(),x=null,h.html(""))}var w=l.$eval(c),u=l.$eval(d);w?a.get(w,{cache:i}).success(function(a){k===m&&(h.html(a),x&&x.$destroy(),x=u?u:l.$new(),b.compile(h)(x),t(g)&&(!g||l.$eval(g))&&j(),l.$eval(e))}).error(o):o()})}]});J("ng:switch",function(a){var b=a.attr("on"),c=a.attr("change"),d={},e,g=a.children(),f=g.length,i,j;if(!b)throw new y("Missing 'on' attribute.");for(;f--;)i=q(g[f]),i.remove(),j=i.attr("ng:switch-when"),s(j)?d[j]=this.compile(i):s(i.attr("ng:switch-default"))&& -(e=this.compile(i));g=null;a.html("");return function(a){var f=0,g,i;this.$watch(b,function(b,j){a.html("");if(i=d[j]||e)f++,g&&g.$destroy(),g=b.$new(),g.$eval(c)});this.$watch(function(){return f},function(){a.html("");i&&i(g,function(b){a.append(b)})})}});J("a",function(){this.descend(!0);this.directives(!0);return function(a){var b=(a.attr("ng:bind-attr")||"").indexOf('"href":')!==-1;!b&&!a.attr("name")&&!a.attr("href")&&a.attr("href","");a.attr("href")===""&&!b&&a.bind("click",function(a){a.preventDefault()})}}); -J("@ng:repeat",function(a,b){b.removeAttr("ng:repeat");b.replaceWith(q("<\!-- ng:repeat: "+a+" --\>"));var c=this.compile(b);return function(b){var e=a.match(/^\s*(.+)\s+in\s+(.*)\s*$/),g,f,i,j;if(!e)throw y("Expected ng:repeat in form of '_item_ in _collection_' but got '"+a+"'.");g=e[1];f=e[2];e=g.match(/^([\$\w]+)|\(([\$\w]+)\s*,\s*([\$\w]+)\)$/);if(!e)throw y("'item' in 'item in collection' should be identifier or (key, value) but got '"+keyValue+"'.");i=e[3]||e[1];j=e[2];var h=this,l=new Ya; -this.$watch(function(a){var e,g=a.$eval(f),k=mc(g,!0),n,r=new Ya,w,u,q,s,v=b;if(E(g))q=g||[];else{q=[];for(w in g)g.hasOwnProperty(w)&&w.charAt(0)!="$"&&q.push(w);q.sort()}e=0;for(a=q.length;em,d=o&&a&&a.length< -o,a=a&&!j(a);h.$error.REQUIRED!=b&&h.$emit(b?"$invalid":"$valid","REQUIRED");h.$error.PATTERN!=a&&h.$emit(a?"$invalid":"$valid","PATTERN");h.$error.MINLENGTH!=d&&h.$emit(d?"$invalid":"$valid","MINLENGTH");h.$error.MAXLENGTH!=c&&h.$emit(c?"$invalid":"$valid","MAXLENGTH")});k(["valid","invalid","pristine","dirty"],function(a){h.$watch("$"+a,function(b,c){e[c?"addClass":"removeClass"]("ng-"+a)})});e.bind("$destroy",function(){h.$destroy()});if(g!="checkbox"&&g!="radio")h.$render=function(){e.val(h.$viewValue|| -"")},e.bind("keydown change input",function(b){b=b.keyCode;b!=91&&!(15t;)l.pop().element.remove()}for(;D.length>r;)D.pop()[0].element.remove()}var b=this,f;if(!(f=l.match(Id)))throw y("Expected ng:options in form of '_select_ (as _label_)? for (_key_,)?_value_ in _collection_' but got '"+l+"'.");var g=this,i=d(f[2]||f[1]),m=f[4]||f[6],o=f[5],s=d(f[3]||""),v=d(f[2]?f[1]:m),z=d(f[7]),B=q(L.createElement("option")),C=q(L.createElement("optgroup")),A=!1,D=[[{element:e,label:""}]];k(e.children(),function(a){a.value==""&&(A=q(a).remove(), -c(A)(j))});e.html("");e.bind("change",function(){g.$apply(function(){var a,b=z(j)||[],c=e.val(),d=ha(j),f,i,k,l,n,p;if(h){f=[];l=0;for(p=D.length;l@charset "UTF-8";[ng\\:cloak],.ng-cloak{display:none;}ng\\:form{display:block;}'); +Ua=L.createElement("pre"),Ba={},Aa="ng-"+(new Date).getTime(),Ic=1,Ed=D.document.addEventListener?function(a,b,c){a.addEventListener(b,c,!1)}:function(a,b,c){a.attachEvent("on"+b,c)},Ya=D.document.removeEventListener?function(a,b,c){a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent("on"+b,c)},Ea=X.prototype={ready:function(a){function b(){c||(c=!0,a())}var c=!1;this.bind("DOMContentLoaded",b);Wa(D).bind("load",b)},toString:function(){var a=[];k(this,function(b){a.push(""+b)});return"["+ +a.join(", ")+"]"},eq:function(a){return a>=0?q(this[a]):q(this[this.length+a])},length:0,push:Cd,sort:[].sort,splice:[].splice},Ka={};k("multiple,selected,checked,disabled,readOnly,required".split(","),function(a){Ka[v(a)]=a});k({data:Ca,inheritedData:function(a,b,c){for(a=q(a);a.length;){if(c=a.data(b))return c;a=a.parent()}},scope:function(a){return q(a).inheritedData($a)},injector:function(a){return q(a).inheritedData("$injector")},removeAttr:function(a,b){a.removeAttribute(b)},hasClass:Da,css:function(a, +b,c){b=Hc(b);if(t(c))a.style[b]=c;else{var d;P<=8&&(d=a.currentStyle&&a.currentStyle[b],d===""&&(d="auto"));d=d||a.style[b];P<=8&&(d=d===""?F:d);return d}},attr:function(a,b,c){var d=v(b);if(Ka[d])if(t(c))c?(a[b]=!0,a.setAttribute(b,d)):(a[b]=!1,a.removeAttribute(d));else return a[b]||a.getAttribute(b)!==null&&(P<9?a.getAttribute(b)!=="":1)?d:F;else if(t(c))a.setAttribute(b,c);else if(a.getAttribute)return a=a.getAttribute(b,2),a===null?F:a},prop:function(a,b,c){if(t(c))a[b]=c;else return a[b]},text:z(P< +9?function(a,b){if(a.nodeType==3){if(C(b))return a.nodeValue;a.nodeValue=b}else{if(C(b))return a.innerText;a.innerText=b}}:function(a,b){if(C(b))return a.textContent;a.textContent=b},{$dv:""}),val:function(a,b){if(C(b))return a.value;a.value=b},html:function(a,b){if(C(b))return a.innerHTML;for(var c=0,d=a.childNodes;c":function(a,b,c){return b(a)>c(a)},"<=":function(a,b,c){return b(a)<=c(a)},">=":function(a,b,c){return b(a)>=c(a)},"&&":function(a,b,c){return b(a)&&c(a)},"||":function(a,b,c){return b(a)||c(a)},"&":function(a,b,c){return b(a)&c(a)},"|":function(a,b,c){return c(a)(a,b(a))},"!":function(a,b){return!b(a)}},od={n:"\n", +f:"\u000c",r:"\r",t:"\t",v:"\u000b","'":"'",'"':'"'},Xb={},Yb={};k("abstract,boolean,break,byte,case,catch,char,class,const,continue,debugger,default,delete,do,double,else,enum,export,extends,false,final,finally,float,for,function,goto,if,implements,import,ininstanceof,intinterface,long,native,new,null,package,private,protected,public,return,short,static,super,switch,synchronized,this,throw,throws,transient,true,try,typeof,var,volatile,void,undefined,while,with".split(/,/),function(a){Yb[a]=!0}); +var Ad=D.XMLHttpRequest||function(){try{return new ActiveXObject("Msxml2.XMLHTTP.6.0")}catch(a){}try{return new ActiveXObject("Msxml2.XMLHTTP.3.0")}catch(b){}try{return new ActiveXObject("Msxml2.XMLHTTP")}catch(c){}throw new y("This browser does not support XMLHttpRequest.");};G("ng:init",function(a){return function(){this.$eval(a)}});G("ng:controller",function(a){this.scope(function(b){b=Fa(b,a,!0)||Fa(D,a,!0);ea(b,a);Ra(b);return b});return A});G("ng:bind",function(a,b){b.addClass("ng-binding"); +return["$exceptionHandler","$parse","$element",function(b,d,e){var g=d(a),f=Number.NaN;this.$watch(function(a){var d,h,l,k,m=a.hasOwnProperty("$element"),x=a.$element;a.$element=e;try{d=g(a);if(l=d instanceof Na)d=(h=d).html;f!==d&&(k=ua(d),!l&&!k&&H(d)&&(d=Q(d,!0)),d!=f&&(f=d,l?e.html(h.get()):k?(e.html(""),e.append(d)):e.text(d==F?"":d)))}catch(p){b(p)}finally{m?a.$element=x:delete a.$element}})}]});G("ng:bind-template",function(a,b){b.addClass("ng-binding");var c=Ha(a);return function(a){var b; +this.$watch(function(g){g=c(g,a,!0);g!=b&&(a.text(g),b=g)})}});G("ng:bind-attr",function(a){return function(b){var c={};this.$watch(function(d){var e=d.$eval(a),g;for(g in e){var f=Ha(e[g])(d,b);c[g]!==f&&(c[g]=f,b.attr(g,Ka[v(g)]?va(f):f))}})}});G("ng:click",function(a){return function(b){var c=this;b.bind("click",function(b){c.$apply(a);b.stopPropagation()})}});G("ng:submit",function(a){return function(b){var c=this;b.bind("submit",function(){c.$apply(a)})}});G("ng:class",gb(function(){return!0})); +G("ng:class-odd",gb(function(a){return a%2===0}));G("ng:class-even",gb(function(a){return a%2===1}));G("ng:show",function(a){return function(b){this.$watch(a,function(a,d){b.css("display",va(d)?"":"none")})}});G("ng:hide",function(a){return function(b){this.$watch(a,function(a,d){b.css("display",va(d)?"none":"")})}});G("ng:style",function(a){return function(b){this.$watch(a,function(a,d,e){e&&d!==e&&k(e,function(a,c){b.css(c,"")});d&&b.css(d)})}});G("ng:cloak",function(a,b){b.removeAttr("ng:cloak"); +b.removeClass("ng-cloak")});hb("{{}}",function(a,b,c){var d=qa(a);if(bb(d))if(nc(c[0]))c.attr("ng:bind-template",a);else{var e=b,g;k(qa(a),function(a){var b=cb(a);b?(g=q(""),g.attr("ng:bind",b)):g=q(L.createTextNode(a));P&&a.charAt(0)==" "&&(g=q(" "),b=g.html(),g.text(a.substr(1)),g.html(b+g.html()));e.after(g);e=g});b.remove()}});hb("option",function(a,b,c){v(oa(c))=="option"&&(P<=7?mb(c[0].outerHTML,{start:function(b,e){C(e.value)&&c.attr("value",a)}}):c[0].getAttribute("value")== +null&&c.attr("value",a))});var ib={};k("src,href,multiple,selected,checked,disabled,readonly,required".split(","),function(a){ib["ng:"+a]=a});cc("{{}}",function(a,b,c){if(!G(b)&&!G("@"+b)){P&&b=="src"&&(a=decodeURI(a));var d=qa(a);if(bb(d)||ib[b])c.removeAttr(b),d=ka(c.attr("ng:bind-attr")||"{}"),d[ib[b]||b]=a,c.attr("ng:bind-attr",Q(d))}});J("ng:include",function(a){var b=this,c=a.attr("src"),d=a.attr("scope")||"",e=a[0].getAttribute("onload")||"",g=a.attr("autoscroll");if(a[0]["ng:compiled"])this.descend(!0), +this.directives(!0);else return a[0]["ng:compiled"]=!0,["$http","$templateCache","$anchorScroll","$element",function(a,i,j,h){function l(){m++}var k=this,m=0,x;this.$watch(c,l);this.$watch(function(){var a=k.$eval(d);if(a)return a.$id},l);this.$watch(function(){return m},function(l,k){function o(){k===m&&(x&&x.$destroy(),x=null,h.html(""))}var w=l.$eval(c),u=l.$eval(d);w?a.get(w,{cache:i}).success(function(a){k===m&&(h.html(a),x&&x.$destroy(),x=u?u:l.$new(),b.compile(h)(x),t(g)&&(!g||l.$eval(g))&& +j(),l.$eval(e))}).error(o):o()})}]});J("ng:switch",function(a){var b=a.attr("on"),c=a.attr("change"),d={},e,g=a.children(),f=g.length,i,j;if(!b)throw new y("Missing 'on' attribute.");for(;f--;)i=q(g[f]),i.remove(),j=i.attr("ng:switch-when"),s(j)?d[j]=this.compile(i):s(i.attr("ng:switch-default"))&&(e=this.compile(i));g=null;a.html("");return function(a){var f=0,g,i;this.$watch(b,function(b,j){a.html("");if(i=d[j]||e)f++,g&&g.$destroy(),g=b.$new(),g.$eval(c)});this.$watch(function(){return f},function(){a.html(""); +i&&i(g,function(b){a.append(b)})})}});J("a",function(){this.descend(!0);this.directives(!0);return function(a){var b=(a.attr("ng:bind-attr")||"").indexOf('"href":')!==-1;!b&&!a.attr("name")&&!a.attr("href")&&a.attr("href","");a.attr("href")===""&&!b&&a.bind("click",function(a){a.preventDefault()})}});J("@ng:repeat",function(a,b){b.removeAttr("ng:repeat");b.replaceWith(q("<\!-- ng:repeat: "+a+" --\>"));var c=this.compile(b);return function(b){var e=a.match(/^\s*(.+)\s+in\s+(.*)\s*$/),g,f,i,j;if(!e)throw y("Expected ng:repeat in form of '_item_ in _collection_' but got '"+ +a+"'.");g=e[1];f=e[2];e=g.match(/^([\$\w]+)|\(([\$\w]+)\s*,\s*([\$\w]+)\)$/);if(!e)throw y("'item' in 'item in collection' should be identifier or (key, value) but got '"+keyValue+"'.");i=e[3]||e[1];j=e[2];var h=this,l=new Za;this.$watch(function(a){var e,g=a.$eval(f),k=mc(g,!0),n,r=new Za,w,u,q,s,v=b;if(E(g))q=g||[];else{q=[];for(w in g)g.hasOwnProperty(w)&&w.charAt(0)!="$"&&q.push(w);q.sort()}e=0;for(a=q.length;em,d=o&&a&&a.lengtht;)l.pop().element.remove()}for(;D.length>r;)D.pop()[0].element.remove()}var b=this,f;if(!(f=l.match(Id)))throw y("Expected ng:options in form of '_select_ (as _label_)? for (_key_,)?_value_ in _collection_' but got '"+l+"'.");var g=this,i=d(f[2]||f[1]),m=f[4]||f[6],o=f[5],s=d(f[3]||""),v=d(f[2]?f[1]:m),z=d(f[7]),B=q(L.createElement("option")),C=q(L.createElement("optgroup")), +A=!1,D=[[{element:e,label:""}]];k(e.children(),function(a){a.value==""&&(A=q(a).remove(),c(A)(j))});e.html("");e.bind("change",function(){g.$apply(function(){var a,b=z(j)||[],c=e.val(),d=ha(j),f,i,k,l,n,p;if(h){f=[];l=0;for(p=D.length;l@charset "UTF-8";[ng\\:cloak],.ng-cloak{display:none;}ng\\:form{display:block;}'); diff --git a/test/lib/angular/angular-mocks.js b/test/lib/angular/angular-mocks.js index 3bc3198..516259b 100644 --- a/test/lib/angular/angular-mocks.js +++ b/test/lib/angular/angular-mocks.js @@ -760,15 +760,15 @@ angular.mock.$HttpBackendProvider = function() { * - passing through is disabled * - auto flushing is disabled * - * Returns instance for e2e testing (when `$delegate` and `$defer` specified): + * Returns instance for e2e testing (when `$delegate` and `$browser` specified): * - passing through (delegating request to real backend) is enabled * - auto flushing is enabled * * @param {Object=} $delegate Real $httpBackend instance (allow passing through if specified) - * @param {Object=} $defer Auto-flushing enabled if specified + * @param {Object=} $browser Auto-flushing enabled if specified * @return {Object} Instance of $httpBackend mock */ -function createHttpBackendMock($delegate, $defer) { +function createHttpBackendMock($delegate, $browser) { var definitions = [], expectations = [], responses = [], @@ -823,8 +823,8 @@ function createHttpBackendMock($delegate, $defer) { while ((definition = definitions[++i])) { if (definition.match(method, url, data, headers || {})) { if (definition.response) { - // if $defer specified, we do auto flush all requests - ($defer ? $defer : responsesPush)(function() { + // if $browser specified, we do auto flush all requests + ($browser ? $browser.defer : responsesPush)(function() { var response = definition.response(method, url, data, headers); xhr.$$respHeaders = response[2]; callback(response[0], response[1], xhr.getAllResponseHeaders()); @@ -869,7 +869,7 @@ function createHttpBackendMock($delegate, $defer) { } }; - if ($defer) { + if ($browser) { chain.passThrough = function() { definition.passThrough = true; }; @@ -1442,7 +1442,7 @@ angular.module('ngMockE2E', ['ng']).config(function($provide) { * control how a matched request is handled. */ angular.mock.e2e = {}; -angular.mock.e2e.$httpBackendDecorator = ['$delegate', '$defer', createHttpBackendMock]; +angular.mock.e2e.$httpBackendDecorator = ['$delegate', '$browser', createHttpBackendMock]; @@ -1476,7 +1476,7 @@ window.jasmine && (function(window) { * @name angular.mock.module * @description * - * *NOTE*: This is function is also published on window for easy access. + * *NOTE*: This is function is also published on window for easy access.
* *NOTE*: Only available with {@link http://pivotal.github.com/jasmine/ jasmine}. * * This function registers a module configuration code. It collects the configuration information @@ -1511,7 +1511,7 @@ window.jasmine && (function(window) { * @name angular.mock.inject * @description * - * *NOTE*: This is function is also published on window for easy access. + * *NOTE*: This is function is also published on window for easy access.
* *NOTE*: Only available with {@link http://pivotal.github.com/jasmine/ jasmine}. * * The inject function wraps a function into an injectable function. The inject() creates new diff --git a/test/lib/angular/angular-scenario.js b/test/lib/angular/angular-scenario.js index 56058f3..fc780d2 100644 --- a/test/lib/angular/angular-scenario.js +++ b/test/lib/angular/angular-scenario.js @@ -1,4 +1,4 @@ -/*! +/** @license * jQuery JavaScript Library v1.7 * http://jquery.com/ * @@ -9298,7 +9298,7 @@ jQuery.each([ "Height", "Width" ], function( i, name ) { // Expose jQuery to the global object window.jQuery = window.$ = jQuery; })( window );/** - * @license AngularJS v0.10.6-5cdfe45a + * @license AngularJS v0.10.6 * (c) 2010-2011 AngularJS http://angularjs.org * License: MIT */ @@ -10229,6 +10229,7 @@ function bindJQuery() { jqLite = jQuery; extend(jQuery.fn, { scope: JQLitePrototype.scope, + injector: JQLitePrototype.injector, inheritedData: JQLitePrototype.inheritedData }); JQLitePatchJQueryRemove('remove', true); @@ -10282,40 +10283,45 @@ function setupModuleLoader(window) { * @name angular.module * @description * - * The `angular.module` is a global place for registering angular modules. All modules - * (angular core or 3rd party) that should be available to an application must be registered using this mechanism. + * The `angular.module` is a global place for creating and registering Angular modules. All + * modules (angular core or 3rd party) that should be available to an application must be + * registered using this mechanism. + * * * # Module * - * A module is a collocation of services, directives, filters, and configure information. Module is used to configure the, - * {@link angular.module.AUTO.$injector $injector}. + * A module is a collocation of services, directives, filters, and configure information. Module + * is used to configure the {@link angular.module.AUTO.$injector $injector}. * *
      * // Create a new module
      * var myModule = angular.module('myModule', []);
      *
-     * // configure a new service
+     * // register a new service
      * myModule.value('appName', 'MyCoolApp');
      *
      * // configure existing services inside initialization blocks.
-     * myModule.init(function($locationProvider) {
+     * myModule.config(function($locationProvider) {
      *   // Configure existing providers
-     *   $locationProvider.hashPrefix = '!';
+     *   $locationProvider.hashPrefix('!');
      * });
      * 
* - * Then you can load your module like this: + * Then you can create an injector and load your modules like this: * *
      * var injector = angular.injector(['ng', 'MyModule'])
      * 
* + * However it's more likely that you'll just use {@link angular.directive.ng:app ng:app} or + * {@link angular.bootstrap} to simplify this process for you. + * * @param {!string} name The name of the module to create or retrieve. * @param {Array.=} requires If specified then new module is being created. If unspecified then the * the module is being retrieved for further configuration. - * @param {Function} initFn Option configuration function for the module. Same as - * {@link angular.Module#init Module.init()}. - * @return {angular.Module} + * @param {Function} configFn Option configuration function for the module. Same as + * {@link angular.Module#config Module#config()}. + * @returns {module} new module with the {@link angular.Module} api. */ return function module(name, requires, configFn) { if (requires && modules.hasOwnProperty(name)) { @@ -10408,8 +10414,8 @@ function setupModuleLoader(window) { * @ngdoc method * @name angular.Module#config * @methodOf angular.Module - * @param {Function} initializationFn Execute this function on module load. Useful for - * service configuration. + * @param {Function} configFn Execute this function on module load. Useful for service + * configuration. * @description * Use this method to register work which needs to be performed on module loading. */ @@ -10422,7 +10428,8 @@ function setupModuleLoader(window) { * @param {Function} initializationFn Execute this function after injector creation. * Useful for application initialization. * @description - * Use this method to register work which needs to be performed on module loading. + * Use this method to register work which needs to be performed when the injector with + * with the current module is finished loading. */ run: function(block) { runBlocks.push(block); @@ -10468,7 +10475,7 @@ function setupModuleLoader(window) { * - `codeName` – `{string}` – Code name of the release, such as "jiggling-armfat". */ var version = { - full: '0.10.6-5cdfe45a', // all of these placeholder strings will be replaced by rake's + full: '0.10.6', // all of these placeholder strings will be replaced by rake's major: "NG_VERSION_MAJOR", // compile task minor: "NG_VERSION_MINOR", dot: "NG_VERSION_DOT", @@ -10830,7 +10837,7 @@ function inferInjectionArgs(fn) { *
  *   var $injector = angular.injector();
  *   expect($injector.get('$injector')).toBe($injector);
- *   expect($injector.invoke(null, function($injector){
+ *   expect($injector.invoke(function($injector){
  *     return $injector;
  *   }).toBe($injector);
  * 
@@ -10937,7 +10944,7 @@ function inferInjectionArgs(fn) { * * describe('Greeter', function(){ * - * beforeEach(inject(function($provide) { + * beforeEach(module(function($provide) { * $provide.service('greet', GreetProvider); * }); * @@ -10945,13 +10952,13 @@ function inferInjectionArgs(fn) { * expect(greet('angular')).toEqual('Hello angular!'); * })); * - * it('should allow configuration of salutation', inject( - * function(greetProvider) { + * it('should allow configuration of salutation', function() { + * module(function(greetProvider) { * greetProvider.salutation('Ahoj'); - * }, - * function(greet) { + * }); + * inject(function(greet) { * expect(greet('angular')).toEqual('Ahoj angular!'); - * } + * }); * )}; * * }); @@ -11702,6 +11709,8 @@ function htmlSanitizeWriter(buf){ * ## In addtion to the above, Angular privides an additional method to both jQuery and jQuery lite: * * - `scope()` - retrieves the current Angular scope of the element. + * - `injector()` - retrieves the Angular injector associated with application that the element is + * part of. * - `inheritedData()` - same as `data()`, but walks up the DOM until a value is found or the top * parent element is reached. * @@ -11957,6 +11966,10 @@ forEach({ return jqLite(element).inheritedData($$scope); }, + injector: function(element) { + return jqLite(element).inheritedData('$injector'); + }, + removeAttr: function(element,name) { element.removeAttribute(name); }, @@ -15665,13 +15678,13 @@ function $LocationProvider(){ hashPrefix = prefix; return this; } else { - return html5Mode; + return hashPrefix; } } /** * @ngdoc property - * @name angular.module.ng.$locationProvider#hashPrefix + * @name angular.module.ng.$locationProvider#html5Mode * @methodOf angular.module.ng.$locationProvider * @description * @param {string=} mode Use HTML5 strategy if available. @@ -15748,8 +15761,10 @@ function $LocationProvider(){ // update $location when $browser url changes $browser.onUrlChange(function(newUrl) { if (currentUrl.absUrl() != newUrl) { - currentUrl.$$parse(newUrl); - $rootScope.$apply(); + $rootScope.$evalAsync(function() { + currentUrl.$$parse(newUrl); + }); + if (!$rootScope.$$phase) $rootScope.$digest(); } }); @@ -15913,8 +15928,8 @@ function $LogProvider(){ * @param {Object.=} actions Hash with declaration of custom action that should extend the * default set of resource actions. The declaration should be created in the following format: * - * {action1: {method:?, params:?, isArray:?, verifyCache:?}, - * action2: {method:?, params:?, isArray:?, verifyCache:?}, + * {action1: {method:?, params:?, isArray:?}, + * action2: {method:?, params:?, isArray:?}, * ...} * * Where: @@ -15926,9 +15941,6 @@ function $LogProvider(){ * - `params` – {object=} – Optional set of pre-bound parameters for this action. * - isArray – {boolean=} – If true then the returned object for this action is an array, see * `returns` section. - * - verifyCache – {boolean=} – If true then whenever cache hit occurs, the object is returned and - * an async request will be made to the server and the resources as well as the cache will be - * updated when the response is received. * * @returns {Object} A resource "class" object with methods for the default set of resource actions * optionally extended with custom `actions`. The default set contains these actions: @@ -17790,7 +17802,8 @@ function $RootScopeProvider(){ * * # Example
-           var scope = angular.module.ng.$rootScope.Scope();
+           // let's assume that scope was dependency injected as the $rootScope
+           var scope = $rootScope;
            scope.name = 'misko';
            scope.counter = 0;
 
@@ -19322,7 +19335,8 @@ angularDirective("ng:init", function(expression){
            this.contacts.push({type:'email', value:'yourname@example.org'});
          },
          removeContact: function(contactToRemove) {
-           angular.module.ng.$filter.remove(this.contacts, contactToRemove);
+           var index = this.contacts.indexOf(contactToRemove);
+           this.contacts.splice(index, 1);
          },
          clearContact: function(contact) {
            contact.type = 'phone';
-- 
2.20.1