diff options
author | Bernhard Posselt <dev@bernhard-posselt.com> | 2015-10-25 13:34:15 +0100 |
---|---|---|
committer | Bernhard Posselt <dev@bernhard-posselt.com> | 2015-10-25 13:34:15 +0100 |
commit | bf7ff10a5114c0517cd7082ee95ccecb0c7f807d (patch) | |
tree | 1f9487f4a90a3d095791e36a9a83b661b7534655 /js/vendor | |
parent | 66092f836580bc4a6e0bb203015d9772560c1cb0 (diff) |
update bower deps
Diffstat (limited to 'js/vendor')
37 files changed, 565 insertions, 445 deletions
diff --git a/js/vendor/angular-animate/.bower.json b/js/vendor/angular-animate/.bower.json index dc65785f7..8faac6795 100644 --- a/js/vendor/angular-animate/.bower.json +++ b/js/vendor/angular-animate/.bower.json @@ -1,17 +1,17 @@ { "name": "angular-animate", - "version": "1.3.19", + "version": "1.3.20", "main": "./angular-animate.js", "ignore": [], "dependencies": { - "angular": "1.3.19" + "angular": "1.3.20" }, "homepage": "https://github.com/angular/bower-angular-animate", - "_release": "1.3.19", + "_release": "1.3.20", "_resolution": { "type": "version", - "tag": "v1.3.19", - "commit": "d6bf1823bd056617f0a5440a611a286892a70799" + "tag": "v1.3.20", + "commit": "a0d4208f770315df80866fcb449eff913efbbbdc" }, "_source": "git://github.com/angular/bower-angular-animate.git", "_target": "~1.3.*", diff --git a/js/vendor/angular-animate/angular-animate.js b/js/vendor/angular-animate/angular-animate.js index 3cf993882..d0a3f54dc 100644 --- a/js/vendor/angular-animate/angular-animate.js +++ b/js/vendor/angular-animate/angular-animate.js @@ -1,5 +1,5 @@ /** - * @license AngularJS v1.3.19 + * @license AngularJS v1.3.20 * (c) 2010-2014 Google, Inc. http://angularjs.org * License: MIT */ diff --git a/js/vendor/angular-animate/angular-animate.min.js b/js/vendor/angular-animate/angular-animate.min.js index a7305f998..70c25a381 100644 --- a/js/vendor/angular-animate/angular-animate.min.js +++ b/js/vendor/angular-animate/angular-animate.min.js @@ -1,5 +1,5 @@ /* - AngularJS v1.3.19 + AngularJS v1.3.20 (c) 2010-2014 Google, Inc. http://angularjs.org License: MIT */ diff --git a/js/vendor/angular-animate/bower.json b/js/vendor/angular-animate/bower.json index f2ca946de..eb11f6ad7 100644 --- a/js/vendor/angular-animate/bower.json +++ b/js/vendor/angular-animate/bower.json @@ -1,9 +1,9 @@ { "name": "angular-animate", - "version": "1.3.19", + "version": "1.3.20", "main": "./angular-animate.js", "ignore": [], "dependencies": { - "angular": "1.3.19" + "angular": "1.3.20" } } diff --git a/js/vendor/angular-animate/package.json b/js/vendor/angular-animate/package.json index 95e9fa8a7..983094d6a 100644 --- a/js/vendor/angular-animate/package.json +++ b/js/vendor/angular-animate/package.json @@ -1,6 +1,6 @@ { "name": "angular-animate", - "version": "1.3.19", + "version": "1.3.20", "description": "AngularJS module for animations", "main": "index.js", "scripts": { diff --git a/js/vendor/angular-mocks/.bower.json b/js/vendor/angular-mocks/.bower.json index c00856e82..719eb6e06 100644 --- a/js/vendor/angular-mocks/.bower.json +++ b/js/vendor/angular-mocks/.bower.json @@ -1,17 +1,17 @@ { "name": "angular-mocks", - "version": "1.3.19", + "version": "1.3.20", "main": "./angular-mocks.js", "ignore": [], "dependencies": { - "angular": "1.3.19" + "angular": "1.3.20" }, "homepage": "https://github.com/angular/bower-angular-mocks", - "_release": "1.3.19", + "_release": "1.3.20", "_resolution": { "type": "version", - "tag": "v1.3.19", - "commit": "1661328fe4998a284401cd5d5472c33db248b5ff" + "tag": "v1.3.20", + "commit": "67e8eeedf5514e5f8240ca69de5bdfe3701e687c" }, "_source": "git://github.com/angular/bower-angular-mocks.git", "_target": "~1.3.*", diff --git a/js/vendor/angular-mocks/angular-mocks.js b/js/vendor/angular-mocks/angular-mocks.js index 6377f7b7f..1ee6c67c0 100644 --- a/js/vendor/angular-mocks/angular-mocks.js +++ b/js/vendor/angular-mocks/angular-mocks.js @@ -1,5 +1,5 @@ /** - * @license AngularJS v1.3.19 + * @license AngularJS v1.3.20 * (c) 2010-2014 Google, Inc. http://angularjs.org * License: MIT */ diff --git a/js/vendor/angular-mocks/bower.json b/js/vendor/angular-mocks/bower.json index 78bea5a25..c922b3f2c 100644 --- a/js/vendor/angular-mocks/bower.json +++ b/js/vendor/angular-mocks/bower.json @@ -1,9 +1,9 @@ { "name": "angular-mocks", - "version": "1.3.19", + "version": "1.3.20", "main": "./angular-mocks.js", "ignore": [], "dependencies": { - "angular": "1.3.19" + "angular": "1.3.20" } } diff --git a/js/vendor/angular-mocks/package.json b/js/vendor/angular-mocks/package.json index 518c9f2f5..8638f213b 100644 --- a/js/vendor/angular-mocks/package.json +++ b/js/vendor/angular-mocks/package.json @@ -1,6 +1,6 @@ { "name": "angular-mocks", - "version": "1.3.19", + "version": "1.3.20", "description": "AngularJS mocks for testing", "main": "angular-mocks.js", "scripts": { diff --git a/js/vendor/angular-route/.bower.json b/js/vendor/angular-route/.bower.json index 1e592523f..364469984 100644 --- a/js/vendor/angular-route/.bower.json +++ b/js/vendor/angular-route/.bower.json @@ -1,17 +1,17 @@ { "name": "angular-route", - "version": "1.3.19", + "version": "1.3.20", "main": "./angular-route.js", "ignore": [], "dependencies": { - "angular": "1.3.19" + "angular": "1.3.20" }, "homepage": "https://github.com/angular/bower-angular-route", - "_release": "1.3.19", + "_release": "1.3.20", "_resolution": { "type": "version", - "tag": "v1.3.19", - "commit": "dd228b866943d4661ae666297f40952bc9f58fd1" + "tag": "v1.3.20", + "commit": "785879cc163aee00ca7ef262ece356b8d81fd794" }, "_source": "git://github.com/angular/bower-angular-route.git", "_target": "~1.3.*", diff --git a/js/vendor/angular-route/angular-route.js b/js/vendor/angular-route/angular-route.js index ba75d308d..f0cd2a201 100644 --- a/js/vendor/angular-route/angular-route.js +++ b/js/vendor/angular-route/angular-route.js @@ -1,5 +1,5 @@ /** - * @license AngularJS v1.3.19 + * @license AngularJS v1.3.20 * (c) 2010-2014 Google, Inc. http://angularjs.org * License: MIT */ diff --git a/js/vendor/angular-route/angular-route.min.js b/js/vendor/angular-route/angular-route.min.js index 4091d61a4..d4111b9e6 100644 --- a/js/vendor/angular-route/angular-route.min.js +++ b/js/vendor/angular-route/angular-route.min.js @@ -1,5 +1,5 @@ /* - AngularJS v1.3.19 + AngularJS v1.3.20 (c) 2010-2014 Google, Inc. http://angularjs.org License: MIT */ diff --git a/js/vendor/angular-route/bower.json b/js/vendor/angular-route/bower.json index a875b49a8..89436ed27 100644 --- a/js/vendor/angular-route/bower.json +++ b/js/vendor/angular-route/bower.json @@ -1,9 +1,9 @@ { "name": "angular-route", - "version": "1.3.19", + "version": "1.3.20", "main": "./angular-route.js", "ignore": [], "dependencies": { - "angular": "1.3.19" + "angular": "1.3.20" } } diff --git a/js/vendor/angular-route/package.json b/js/vendor/angular-route/package.json index 4f75c622e..52eb4175b 100644 --- a/js/vendor/angular-route/package.json +++ b/js/vendor/angular-route/package.json @@ -1,6 +1,6 @@ { "name": "angular-route", - "version": "1.3.19", + "version": "1.3.20", "description": "AngularJS router module", "main": "index.js", "scripts": { diff --git a/js/vendor/angular-sanitize/.bower.json b/js/vendor/angular-sanitize/.bower.json index 0f5c6db31..53f3fba2e 100644 --- a/js/vendor/angular-sanitize/.bower.json +++ b/js/vendor/angular-sanitize/.bower.json @@ -1,17 +1,17 @@ { "name": "angular-sanitize", - "version": "1.3.19", + "version": "1.3.20", "main": "./angular-sanitize.js", "ignore": [], "dependencies": { - "angular": "1.3.19" + "angular": "1.3.20" }, "homepage": "https://github.com/angular/bower-angular-sanitize", - "_release": "1.3.19", + "_release": "1.3.20", "_resolution": { "type": "version", - "tag": "v1.3.19", - "commit": "ec52569bb1e1b1498cf01828b8923134fa45da5f" + "tag": "v1.3.20", + "commit": "1072923abc9a6bc076e0625ae115b7b8f3ed70d1" }, "_source": "git://github.com/angular/bower-angular-sanitize.git", "_target": "~1.3.*", diff --git a/js/vendor/angular-sanitize/angular-sanitize.js b/js/vendor/angular-sanitize/angular-sanitize.js index 4da499257..6285a08ae 100644 --- a/js/vendor/angular-sanitize/angular-sanitize.js +++ b/js/vendor/angular-sanitize/angular-sanitize.js @@ -1,5 +1,5 @@ /** - * @license AngularJS v1.3.19 + * @license AngularJS v1.3.20 * (c) 2010-2014 Google, Inc. http://angularjs.org * License: MIT */ diff --git a/js/vendor/angular-sanitize/angular-sanitize.min.js b/js/vendor/angular-sanitize/angular-sanitize.min.js index 23cfa47e4..453a1fa58 100644 --- a/js/vendor/angular-sanitize/angular-sanitize.min.js +++ b/js/vendor/angular-sanitize/angular-sanitize.min.js @@ -1,5 +1,5 @@ /* - AngularJS v1.3.19 + AngularJS v1.3.20 (c) 2010-2014 Google, Inc. http://angularjs.org License: MIT */ diff --git a/js/vendor/angular-sanitize/bower.json b/js/vendor/angular-sanitize/bower.json index 4bee9bad0..81659fd06 100644 --- a/js/vendor/angular-sanitize/bower.json +++ b/js/vendor/angular-sanitize/bower.json @@ -1,9 +1,9 @@ { "name": "angular-sanitize", - "version": "1.3.19", + "version": "1.3.20", "main": "./angular-sanitize.js", "ignore": [], "dependencies": { - "angular": "1.3.19" + "angular": "1.3.20" } } diff --git a/js/vendor/angular-sanitize/package.json b/js/vendor/angular-sanitize/package.json index f75973b72..2c89248cc 100644 --- a/js/vendor/angular-sanitize/package.json +++ b/js/vendor/angular-sanitize/package.json @@ -1,6 +1,6 @@ { "name": "angular-sanitize", - "version": "1.3.19", + "version": "1.3.20", "description": "AngularJS module for sanitizing HTML", "main": "index.js", "scripts": { diff --git a/js/vendor/angular/.bower.json b/js/vendor/angular/.bower.json index eb58ac9cf..de4082649 100644 --- a/js/vendor/angular/.bower.json +++ b/js/vendor/angular/.bower.json @@ -1,15 +1,15 @@ { "name": "angular", - "version": "1.3.19", + "version": "1.3.20", "main": "./angular.js", "ignore": [], "dependencies": {}, "homepage": "https://github.com/angular/bower-angular", - "_release": "1.3.19", + "_release": "1.3.20", "_resolution": { "type": "version", - "tag": "v1.3.19", - "commit": "c0244e99bef8819b17d4ee3037f8737b84b0d080" + "tag": "v1.3.20", + "commit": "0cd10f27471310fe07167b00f8a4242c6bba4df2" }, "_source": "git://github.com/angular/bower-angular.git", "_target": "~1.3.*", diff --git a/js/vendor/angular/angular.js b/js/vendor/angular/angular.js index 8204cf35f..2445ab55e 100644 --- a/js/vendor/angular/angular.js +++ b/js/vendor/angular/angular.js @@ -1,5 +1,5 @@ /** - * @license AngularJS v1.3.19 + * @license AngularJS v1.3.20 * (c) 2010-2014 Google, Inc. http://angularjs.org * License: MIT */ @@ -54,7 +54,7 @@ function minErr(module, ErrorConstructor) { return match; }); - message = message + '\nhttp://errors.angularjs.org/1.3.19/' + + message = message + '\nhttp://errors.angularjs.org/1.3.20/' + (module ? module + '/' : '') + code; for (i = 2; i < arguments.length; i++) { message = message + (i == 2 ? '?' : '&') + 'p' + (i - 2) + '=' + @@ -2139,11 +2139,11 @@ function toDebugString(obj) { * - `codeName` – `{string}` – Code name of the release, such as "jiggling-armfat". */ var version = { - full: '1.3.19', // all of these placeholder strings will be replaced by grunt's + full: '1.3.20', // all of these placeholder strings will be replaced by grunt's major: 1, // package task minor: 3, - dot: 19, - codeName: 'glutinous-shriek' + dot: 20, + codeName: 'shallow-translucence' }; @@ -6518,14 +6518,6 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { return bindings; } - function assertValidDirectiveName(name) { - var letter = name.charAt(0); - if (!letter || letter !== lowercase(letter)) { - throw $compileMinErr('baddir', "Directive name '{0}' is invalid. The first character must be a lowercase letter", name); - } - return name; - } - /** * @ngdoc method * @name $compileProvider#directive @@ -6544,7 +6536,6 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { this.directive = function registerDirective(name, directiveFactory) { assertNotHasOwnProperty(name, 'directive'); if (isString(name)) { - assertValidDirectiveName(name); assertArg(directiveFactory, 'directiveFactory'); if (!hasDirectives.hasOwnProperty(name)) { hasDirectives[name] = []; @@ -11763,20 +11754,30 @@ var $parseMinErr = minErr('$parse'); function ensureSafeMemberName(name, fullExpression) { + if (name === "__defineGetter__" || name === "__defineSetter__" + || name === "__lookupGetter__" || name === "__lookupSetter__" + || name === "__proto__") { + throw $parseMinErr('isecfld', + 'Attempting to access a disallowed field in Angular expressions! ' + + 'Expression: {0}', fullExpression); + } + return name; +} + +function getStringValue(name, fullExpression) { // From the JavaScript docs: // Property names must be strings. This means that non-string objects cannot be used // as keys in an object. Any non-string object, including a number, is typecasted // into a string via the toString method. // // So, to ensure that we are checking the same `name` that JavaScript would use, - // we cast it to a string, if possible - name = (isObject(name) && name.toString) ? name.toString() : name; - - if (name === "__defineGetter__" || name === "__defineSetter__" - || name === "__lookupGetter__" || name === "__lookupSetter__" - || name === "__proto__") { - throw $parseMinErr('isecfld', - 'Attempting to access a disallowed field in Angular expressions! ' + // we cast it to a string, if possible. + // Doing `name + ''` can cause a repl error if the result to `toString` is not a string, + // this is, this will handle objects that misbehave. + name = name + ''; + if (!isString(name)) { + throw $parseMinErr('iseccst', + 'Cannot convert object to primitive value! ' + 'Expression: {0}', fullExpression); } return name; @@ -12423,7 +12424,7 @@ Parser.prototype = { return extend(function $parseObjectIndex(self, locals) { var o = obj(self, locals), - i = indexFn(self, locals), + i = getStringValue(indexFn(self, locals), expression), v; ensureSafeMemberName(i, expression); @@ -12432,7 +12433,7 @@ Parser.prototype = { return v; }, { assign: function(self, value, locals) { - var key = ensureSafeMemberName(indexFn(self, locals), expression); + var key = ensureSafeMemberName(getStringValue(indexFn(self, locals), expression), expression); // prevent overwriting of Function.constructor which would break ensureSafeObject check var o = ensureSafeObject(obj(self, locals), expression); if (!o) obj.assign(self, o = {}, locals); diff --git a/js/vendor/angular/angular.min.js b/js/vendor/angular/angular.min.js index 1a1408042..8dcf6e0c6 100644 --- a/js/vendor/angular/angular.min.js +++ b/js/vendor/angular/angular.min.js @@ -1,253 +1,253 @@ /* - AngularJS v1.3.19 + AngularJS v1.3.20 (c) 2010-2014 Google, Inc. http://angularjs.org License: MIT */ -(function(S,W,u){'use strict';function y(b){return function(){var a=arguments[0],c;c="["+(b?b+":":"")+a+"] http://errors.angularjs.org/1.3.19/"+(b?b+"/":"")+a;for(a=1;a<arguments.length;a++){c=c+(1==a?"?":"&")+"p"+(a-1)+"=";var d=encodeURIComponent,e;e=arguments[a];e="function"==typeof e?e.toString().replace(/ \{[\s\S]*$/,""):"undefined"==typeof e?"undefined":"string"!=typeof e?JSON.stringify(e):e;c+=d(e)}return Error(c)}}function Sa(b){if(null==b||Ta(b))return!1;var a="length"in Object(b)&&b.length; -return b.nodeType===ma&&a?!0:K(b)||x(b)||0===a||"number"===typeof a&&0<a&&a-1 in b}function q(b,a,c){var d,e;if(b)if(B(b))for(d in b)"prototype"==d||"length"==d||"name"==d||b.hasOwnProperty&&!b.hasOwnProperty(d)||a.call(c,b[d],d,b);else if(x(b)||Sa(b)){var f="object"!==typeof b;d=0;for(e=b.length;d<e;d++)(f||d in b)&&a.call(c,b[d],d,b)}else if(b.forEach&&b.forEach!==q)b.forEach(a,c,b);else for(d in b)b.hasOwnProperty(d)&&a.call(c,b[d],d,b);return b}function Id(b,a,c){for(var d=Object.keys(b).sort(), -e=0;e<d.length;e++)a.call(c,b[d[e]],d[e]);return d}function oc(b){return function(a,c){b(c,a)}}function Jd(){return++sb}function pc(b,a){a?b.$$hashKey=a:delete b.$$hashKey}function z(b){for(var a=b.$$hashKey,c=1,d=arguments.length;c<d;c++){var e=arguments[c];if(e)for(var f=Object.keys(e),g=0,h=f.length;g<h;g++){var l=f[g];b[l]=e[l]}}pc(b,a);return b}function aa(b){return parseInt(b,10)}function Pb(b,a){return z(Object.create(b),a)}function F(){}function na(b){return b}function ca(b){return function(){return b}} -function A(b){return"undefined"===typeof b}function D(b){return"undefined"!==typeof b}function J(b){return null!==b&&"object"===typeof b}function K(b){return"string"===typeof b}function U(b){return"number"===typeof b}function ea(b){return"[object Date]"===Aa.call(b)}function B(b){return"function"===typeof b}function Ua(b){return"[object RegExp]"===Aa.call(b)}function Ta(b){return b&&b.window===b}function Va(b){return b&&b.$evalAsync&&b.$watch}function Wa(b){return"boolean"===typeof b}function qc(b){return!(!b|| -!(b.nodeName||b.prop&&b.attr&&b.find))}function Kd(b){var a={};b=b.split(",");var c;for(c=0;c<b.length;c++)a[b[c]]=!0;return a}function ta(b){return P(b.nodeName||b[0]&&b[0].nodeName)}function Xa(b,a){var c=b.indexOf(a);0<=c&&b.splice(c,1);return a}function Ba(b,a,c,d){if(Ta(b)||Va(b))throw Ja("cpws");if(a){if(b===a)throw Ja("cpi");c=c||[];d=d||[];if(J(b)){var e=c.indexOf(b);if(-1!==e)return d[e];c.push(b);d.push(a)}if(x(b))for(var f=a.length=0;f<b.length;f++)e=Ba(b[f],null,c,d),J(b[f])&&(c.push(b[f]), -d.push(e)),a.push(e);else{var g=a.$$hashKey;x(a)?a.length=0:q(a,function(b,c){delete a[c]});for(f in b)b.hasOwnProperty(f)&&(e=Ba(b[f],null,c,d),J(b[f])&&(c.push(b[f]),d.push(e)),a[f]=e);pc(a,g)}}else if(a=b)x(b)?a=Ba(b,[],c,d):ea(b)?a=new Date(b.getTime()):Ua(b)?(a=new RegExp(b.source,b.toString().match(/[^\/]*$/)[0]),a.lastIndex=b.lastIndex):J(b)&&(e=Object.create(Object.getPrototypeOf(b)),a=Ba(b,e,c,d));return a}function oa(b,a){if(x(b)){a=a||[];for(var c=0,d=b.length;c<d;c++)a[c]=b[c]}else if(J(b))for(c in a= -a||{},b)if("$"!==c.charAt(0)||"$"!==c.charAt(1))a[c]=b[c];return a||b}function fa(b,a){if(b===a)return!0;if(null===b||null===a)return!1;if(b!==b&&a!==a)return!0;var c=typeof b,d;if(c==typeof a&&"object"==c)if(x(b)){if(!x(a))return!1;if((c=b.length)==a.length){for(d=0;d<c;d++)if(!fa(b[d],a[d]))return!1;return!0}}else{if(ea(b))return ea(a)?fa(b.getTime(),a.getTime()):!1;if(Ua(b))return Ua(a)?b.toString()==a.toString():!1;if(Va(b)||Va(a)||Ta(b)||Ta(a)||x(a)||ea(a)||Ua(a))return!1;c={};for(d in b)if("$"!== -d.charAt(0)&&!B(b[d])){if(!fa(b[d],a[d]))return!1;c[d]=!0}for(d in a)if(!c.hasOwnProperty(d)&&"$"!==d.charAt(0)&&a[d]!==u&&!B(a[d]))return!1;return!0}return!1}function Ya(b,a,c){return b.concat(Za.call(a,c))}function rc(b,a){var c=2<arguments.length?Za.call(arguments,2):[];return!B(a)||a instanceof RegExp?a:c.length?function(){return arguments.length?a.apply(b,Ya(c,arguments,0)):a.apply(b,c)}:function(){return arguments.length?a.apply(b,arguments):a.call(b)}}function Ld(b,a){var c=a;"string"===typeof b&& -"$"===b.charAt(0)&&"$"===b.charAt(1)?c=u:Ta(a)?c="$WINDOW":a&&W===a?c="$DOCUMENT":Va(a)&&(c="$SCOPE");return c}function $a(b,a){if("undefined"===typeof b)return u;U(a)||(a=a?2:null);return JSON.stringify(b,Ld,a)}function sc(b){return K(b)?JSON.parse(b):b}function ua(b){b=G(b).clone();try{b.empty()}catch(a){}var c=G("<div>").append(b).html();try{return b[0].nodeType===ab?P(c):c.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/,function(a,b){return"<"+P(b)})}catch(d){return P(c)}}function tc(b){try{return decodeURIComponent(b)}catch(a){}} -function uc(b){var a={},c,d;q((b||"").split("&"),function(b){b&&(c=b.replace(/\+/g,"%20").split("="),d=tc(c[0]),D(d)&&(b=D(c[1])?tc(c[1]):!0,vc.call(a,d)?x(a[d])?a[d].push(b):a[d]=[a[d],b]:a[d]=b))});return a}function Qb(b){var a=[];q(b,function(b,d){x(b)?q(b,function(b){a.push(Ca(d,!0)+(!0===b?"":"="+Ca(b,!0)))}):a.push(Ca(d,!0)+(!0===b?"":"="+Ca(b,!0)))});return a.length?a.join("&"):""}function tb(b){return Ca(b,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function Ca(b,a){return encodeURIComponent(b).replace(/%40/gi, -"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%3B/gi,";").replace(/%20/g,a?"%20":"+")}function Md(b,a){var c,d,e=ub.length;b=G(b);for(d=0;d<e;++d)if(c=ub[d]+a,K(c=b.attr(c)))return c;return null}function Nd(b,a){var c,d,e={};q(ub,function(a){a+="app";!c&&b.hasAttribute&&b.hasAttribute(a)&&(c=b,d=b.getAttribute(a))});q(ub,function(a){a+="app";var e;!c&&a |