Merge pull request 'v2.2.3' (#5) from develop into master

This commit is contained in:
nobody 2020-05-23 18:11:10 +02:00
commit 4159bb065a
16 changed files with 384 additions and 57 deletions

View File

@ -93,3 +93,225 @@ const BrowserType = {
'CHROMIUM': chrome.runtime.getURL("/").startsWith("chrome-extension"),
'FIREFOX': chrome.runtime.getURL("/").startsWith("moz-extension")
};
// Supported charsets for TextDecoder()
// https://developer.mozilla.org/en-US/docs/Web/API/TextDecoder/TextDecoder
const EncodingTypes = {
'unicode-1-1-utf-8': true,
'utf-8': true,
'utf8': true,
'866': true,
'cp866': true,
'csibm866': true,
'ibm866': true,
'csisolatin2': true,
'iso-8859-2': true,
'iso-ir-101': true,
'iso8859-2': true,
'iso88592': true,
'iso_8859-2': true,
'iso_8859-2:1987': true,
'l2': true,
'latin2': true,
'csisolatin3': true,
'iso-8859-3': true,
'iso-ir-109': true,
'iso8859-3': true,
'iso88593': true,
'iso_8859-3': true,
'iso_8859-3:1988': true,
'l3': true,
'latin3': true,
'csisolatin4': true,
'iso-8859-4': true,
'iso-ir-110': true,
'iso8859-4': true,
'iso88594': true,
'iso_8859-4': true,
'iso_8859-4:1988': true,
'l4': true,
'latin4': true,
'csisolatincyrillic': true,
'cyrillic': true,
'iso-8859-5': true,
'iso-ir-144': true,
'iso88595': true,
'iso_8859-5': true,
'iso_8859-5:1988': true,
'arabic': true,
'asmo-708': true,
'csiso88596e': true,
'csiso88596i': true,
'csisolatinarabic': true,
'ecma-114': true,
'iso-8859-6': true,
'iso-8859-6-e': true,
'iso-8859-6-i': true,
'iso-ir-127': true,
'iso8859-6': true,
'iso88596': true,
'iso_8859-6': true,
'iso_8859-6:1987': true,
'csisolatingreek': true,
'ecma-118': true,
'elot_928': true,
'greek': true,
'greek8': true,
'iso-8859-7': true,
'iso-ir-126': true,
'iso8859-7': true,
'iso88597': true,
'iso_8859-7': true,
'iso_8859-7:1987': true,
'sun_eu_greek': true,
'csiso88598e': true,
'csisolatinhebrew': true,
'hebrew': true,
'iso-8859-8': true,
'iso-8859-8-e': true,
'iso-ir-138': true,
'iso8859-8': true,
'iso88598': true,
'iso_8859-8': true,
'iso_8859-8:1988': true,
'visual': true,
'csiso88598i': true,
'iso-8859-8-i': true,
'logical': true,
'csisolatin6': true,
'iso-8859-10': true,
'iso-ir-157': true,
'iso8859-10': true,
'iso885910': true,
'l6': true,
'latin6': true,
'iso-8859-13': true,
'iso8859-13': true,
'iso885913': true,
'iso-8859-14': true,
'iso8859-14': true,
'iso885914': true,
'csisolatin9': true,
'iso-8859-15': true,
'iso8859-15': true,
'iso885915': true,
'l9': true,
'latin9': true,
'iso-8859-16': true,
'cskoi8r': true,
'koi': true,
'koi8': true,
'koi8-r': true,
'koi8_r': true,
'koi8-u': true,
'csmacintosh': true,
'mac': true,
'macintosh': true,
'x-mac-roman': true,
'dos-874': true,
'iso-8859-11': true,
'iso8859-11': true,
'iso885911': true,
'tis-620': true,
'windows-874': true,
'cp1250': true,
'windows-1250': true,
'x-cp1250': true,
'cp1251': true,
'windows-1251': true,
'x-cp1251': true,
'ansi_x3.4-1968': true,
'ascii': true,
'cp1252': true,
'cp819': true,
'csisolatin1': true,
'ibm819': true,
'iso-8859-1': true,
'iso-ir-100': true,
'iso8859-1': true,
'iso88591': true,
'iso_8859-1': true,
'iso_8859-1:1987': true,
'l1': true,
'latin1': true,
'us-ascii': true,
'windows-1252': true,
'x-cp1252': true,
'cp1253': true,
'windows-1253': true,
'x-cp1253': true,
'cp1254': true,
'csisolatin5': true,
'iso-8859-9': true,
'iso-ir-148': true,
'iso8859-9': true,
'iso88599': true,
'iso_8859-9': true,
'iso_8859-9:1989': true,
'l5': true,
'latin5': true,
'windows-1254': true,
'x-cp1254': true,
'cp1255': true,
'windows-1255': true,
'x-cp1255': true,
'cp1256': true,
'windows-1256': true,
'x-cp1256': true,
'cp1257': true,
'windows-1257': true,
'x-cp1257': true,
'cp1258': true,
'windows-1258': true,
'x-cp1258': true,
'x-mac-cyrillic': true,
'x-mac-ukrainian': true,
'chinese': true,
'csgb2312': true,
'csiso58gb231280': true,
'gb2312': true,
'gb_2312': true,
'gb_2312-80': true,
'gbk': true,
'iso-ir-58': true,
'x-gbk': true,
'gb18030': true,
'hz-gb-2312': true,
'big5': true,
'big5-hkscs': true,
'cn-big5': true,
'csbig5': true,
'x-x-big5': true,
'cseucpkdfmtjapanese': true,
'euc-jp': true,
'x-euc-jp': true,
'csiso2022jp': true,
'iso-2022-jp': true,
'iso-2022-jp-2': true,
'iso-2022-jp': true,
'csshiftjis': true,
'ms_kanji': true,
'shift-jis': true,
'shift_jis': true,
'sjis': true,
'windows-31j': true,
'x-sjis': true,
'cseuckr': true,
'csksc56011987': true,
'euc-kr': true,
'iso-ir-149': true,
'korean': true,
'ks_c_5601-1987': true,
'ks_c_5601-1989': true,
'ksc5601': true,
'ksc_5601': true,
'windows-949': true,
'csiso2022kr': true,
'iso-2022-kr': true,
'utf-16be': true,
'utf-16': true,
'utf-16le': true,
'x-user-defined': true,
'iso-2022-cn': true,
'iso-2022-cn-ext': true
};

View File

@ -131,6 +131,9 @@ var files = {
// AngularJS ui-select
'resources/angular-ui-select/0.20.0/select.min.jsm': true,
// Angular Sanitize
'resources/angular-sanitize/1.7.9/angular-sanitize.min.jsm': true,
// Backbone.js
'resources/backbone.js/0.9.10/backbone-min.jsm': true,
'resources/backbone.js/1.4.0/backbone-min.jsm': true,
@ -144,7 +147,8 @@ var files = {
'resources/bootstrap.css/4.4.1/bootstrap.min.css': true,
// Bootstrap-select
'resources/bootstrap-select/1.13.14/bootstrap-select.min.css': true,
'resources/bootstrap-select/1.13.17/bootstrap-select.min.css': true,
'resources/bootstrap-select/1.13.17/bootstrap-select.min.jsm': true,
// bootstrap-slider
'resources/bootstrap-slider/10.6.2/bootstrap-slider.min.css': true,
@ -153,6 +157,10 @@ var files = {
// Bootstrap Daterangepicker
'resources/bootstrap-daterangepicker/2.1.27/daterangepicker.min.jsm': true,
// Bootstrap Datepicker
'resources/bootstrap-datepicker/1.9.0/js/bootstrap-datepicker.min.jsm': true,
'resources/bootstrap-datepicker/1.9.0/css/bootstrap-datepicker.standalone.min.css': true,
// clipboard.js
'resources/clipboard.js/2.0.6/clipboard.min.jsm': true,
@ -238,6 +246,9 @@ var files = {
// jQuery URLive
'resources/urlive/1.1.1/jquery.urlive.min.jsm': true,
// jQuery Mobile
'resources/jquery-mobile/1.4.5/jquery.mobile.min.jsm': true,
// JavaScript Cookie
'resources/js-cookie/2.2.1/js.cookie.min.jsm': true,
@ -325,6 +336,8 @@ var files = {
'resources/toastr.js/2.1.4/toastr.min.jsm': true,
// Twitter Bootstrap
'resources/twitter-bootstrap/2.3.2/js/bootstrap.min.jsm': true,
'resources/twitter-bootstrap/2.3.2/css/bootstrap.min.css': true,
'resources/twitter-bootstrap/3.4.1/js/bootstrap.min.jsm': true,
'resources/twitter-bootstrap/3.4.1/css/bootstrap.min.css': true,
'resources/twitter-bootstrap/4.5.0/js/bootstrap.min.jsm': true,

View File

@ -26,18 +26,6 @@ var manipulateDOM = {};
* Private Methods
*/
manipulateDOM._getEncoding = function (domain) {
let encodingByDomain = CharsetDomains[domain];
if(typeof encodingByDomain === 'undefined') {
return 'UTF-8';
}
return encodingByDomain;
};
manipulateDOM._removeCrossOriginAndIntegrityAttr = function (details) {
// by Jaap (https://gitlab.com/Jaaap)
@ -55,9 +43,16 @@ manipulateDOM._removeCrossOriginAndIntegrityAttr = function (details) {
let asciiDecoder, decoder, encoder, charset, isFirstData, filter;
charset = /charset\s*=/.test(header.value) && header.value.replace(/^.*?charset\s*=\s*/, '').replace(/["']?/g, '');
// Check if charset is supported by TextDecoder()
if(/charset\s*=/.test(header.value) && !EncodingTypes[charset.toString().toLowerCase()]){
console.error('[ LocalCDN ] Unsupported charset: ' + charset);
return;
}
asciiDecoder = new TextDecoder('ASCII');
encoder = new TextEncoder();
charset = /charset\s*=/.test(header.value) && header.value.replace(/^.*?charset\s*=\s*/, '');
isFirstData = true;
filter = browser.webRequest.filterResponseData(details.requestId);
@ -71,7 +66,7 @@ manipulateDOM._removeCrossOriginAndIntegrityAttr = function (details) {
let htmlHead = asciiDecoder.decode(evt.data, {stream: false});
let charsetMatch = htmlHead.match(/<meta\s+charset=["']?([^>"'\/]+)["'>\/]/i);
if (!charsetMatch) {
charsetMatch = htmlHead.match(/<meta\s+http-equiv=["']?content-type["']?\s+content=["']?text\/html;\s+charset=([^>"'\/]+)["'>\/]/i);
charsetMatch = htmlHead.match(/<meta\s+http-equiv=["']?content-type["']?\s+content=["']?text\/html;\s*charset=([^>"'\/]+)["'>\/]/i);
}
charset = charsetMatch ? charsetMatch[1] : "UTF-8";
}

View File

@ -100,11 +100,16 @@ var mappings = {
'angularjs-toaster/{version}/toaster.min.js': resources.angularJsToasterJS,
'angularjs-toaster/{version}/toaster.css': resources.angularJsToasterCSS,
'angularjs-toaster/{version}/toaster.js': resources.angularJsToasterJS,
'angular-sanitize/{version}/angular-sanitize.': resources.angularSanitize,
'animate.css/{version}/animate.': resources.animateCSS,
'backbone.js/{version}/backbone.': resources.backbone,
'backbone.js/{version}/backbone-min.': resources.backbone,
'bootstrap-daterangepicker/{version}/daterangepicker.': resources.bootstrapDaterangepicker,
'bootstrap-datepicker/{version}/js/bootstrap-datepicker.': resources.bootstrapDatepickerJS,
'bootstrap-datepicker/{version}/css/bootstrap-datepicker.': resources.bootstrapDatepickerCSS,
'bootstrap-datepicker/{version}/css/datepicker.': resources.bootstrapDatepickerCSS,
'bootstrap-select/{version}/css/bootstrap-select.': resources.bootstrapSelectCSS,
'bootstrap-select/{version}/js/bootstrap-select.': resources.bootstrapSelectJS,
'bootstrap-slider/{version}/css/bootstrap-slider.min.css': resources.bootstrapSliderCSS,
'bootstrap-slider/{version}/css/bootstrap-slider.css': resources.bootstrapSliderCSS,
'bootstrap-slider/{version}/bootstrap-slider.min.js': resources.bootstrapSliderJS,
@ -164,6 +169,10 @@ var mappings = {
'twitter-bootstrap/{version}-alpha.3/js/bootstrap.min.js': resources.twitterBootstrapJS,
'twitter-bootstrap/{version}-alpha.3/css/bootstrap.min.css': resources.twitterBootstrapCSS,
'twitter-bootstrap/{version}/css/bootstrap.': resources.twitterBootstrapCSS,
'twitter-bootstrap/{version}/bootstrap.min.js': resources.twitterBootstrapJS,
'twitter-bootstrap/{version}/bootstrap.js': resources.twitterBootstrapJS,
'twitter-bootstrap/{version}/bootstrap.min.css': resources.twitterBootstrapCSS,
'twitter-bootstrap/{version}/bootstrap.css': resources.twitterBootstrapCSS,
'underscore.js/{version}/underscore.': resources.underscore,
'underscore.js/{version}/underscore-min.': resources.underscore,
'urlive/{version}/jquery.urlive.': resources.jqueryURLive,
@ -180,6 +189,7 @@ var mappings = {
'jquery-{version}.': resources.jQuery,
'ui/{version}/jquery-ui.js': resources.jQueryUI,
'ui/{version}/jquery-ui.min.js': resources.jQueryUI,
'mobile/{version}/jquery.mobile': resources.jQueryMobile,
// Basic Shorthand Notations [Deprecated]
'jquery-latest.': {
@ -420,39 +430,6 @@ var mappings = {
'webfont/{version}/webfont_debug.': resources.webfont
}
},
// Baidu CDN
'apps.bdimg.com': {
'/libs/': {
'angular.js/{version}/angular-animate.': resources.angularAnimate,
'angular.js/{version}/angular-aria.': resources.angularAria,
'angular.js/{version}/angular-cookies.': resources.angularCookies,
'angular.js/{version}/angular-loader.': resources.angularLoader,
'angular.js/{version}/angular-message-format.': resources.angularMessageFormat,
'angular.js/{version}/angular-messages.': resources.angularMessages,
'angular.js/{version}/angular-parse-ext.': resources.angularParseExt,
'angular.js/{version}/angular-resource.': resources.angularResource,
'angular.js/{version}/angular-route.': resources.angularRoute,
'angular.js/{version}/angular-sanitize.': resources.angularSanitize,
'angular.js/{version}/angular-touch.': resources.angularTouch,
'angular.js/{version}/angular.': resources.angular,
'backbone.js/{version}/backbone.': resources.backbone,
'backbone.js/{version}/backbone-min.': resources.backbone,
'dojo/{version}/dojo.': resources.dojo,
'ember.js/{version}/ember.min.js': resources.ember.js,
'ext-core/{version}/ext-core.': resources.extCore,
'jquery/{version}/jquery.': resources.jQuery,
'jqueryui/{version}/jquery-ui.js': resources.jQueryUI,
'jqueryui/{version}/jquery-ui.min.js': resources.jQueryUI,
'mootools/{version}/mootools-yui-compressed.': resources.mootools,
'prototype/{version}/prototype.': resources.prototypeJS,
'scriptaculous/{version}/scriptaculous.': resources.scriptaculous,
'swfobject/{version}/swfobject.': resources.swfobject,
'underscore.js/{version}/underscore.': resources.underscore,
'underscore.js/{version}/underscore-min.': resources.underscore,
'webfont/{version}/webfont.': resources.webfont,
'webfont/{version}/webfont_debug.': resources.webfont
}
},
// Staticfile CDN
'cdn.staticfile.org': {
'/': {

View File

@ -131,6 +131,11 @@ var resources = {
'path': 'resources/angular-stripe-checkout/{version}/angular-stripe-checkout.jsm',
'type': 'application/javascript'
},
// Angular Sanitize
'angularSanitize': {
'path': 'resources/angular-sanitize/{version}/angular-sanitize.min.jsm',
'type': 'application/javascript'
},
// Animate CSS
'animateCSS': {
'path': 'resources/animate.css/{version}/animate.min.css',
@ -151,16 +156,29 @@ var resources = {
'path': 'resources/bootstrap.css/{version}/bootstrap.min.css',
'type': 'text/css'
},
// Bootstrap Datepicker
// Bootstrap Daterangepicker
'bootstrapDaterangepicker': {
'path': 'resources/bootstrap-daterangepicker/{version}/daterangepicker.min.jsm',
'type': 'application/javascript'
},
// Bootstrap Datepicker
'bootstrapDatepickerCSS': {
'path': 'resources/bootstrap-datepicker/{version}/css/bootstrap-datepicker.standalone.min.css',
'type': 'text/css'
},
'bootstrapDatepickerJS': {
'path': 'resources/bootstrap-datepicker/{version}/js/bootstrap-datepicker.min.jsm',
'type': 'application/javascript'
},
// Bootstrap-select
'bootstrapSelectCSS': {
'path': 'resources/bootstrap-select/{version}/css/bootstrap-select.min.css',
'type': 'text/css'
},
'bootstrapSelectJS': {
'path': 'resources/bootstrap-select/{version}/js/bootstrap-select.min.jsm',
'type': 'application/javascript'
},
// bootstrap-slider (Slider for Bootstrap 3)
'bootstrapSliderCSS': {
'path': 'resources/bootstrap-slider/{version}/bootstrap-slider.min.css',
@ -289,6 +307,11 @@ var resources = {
'path': 'resources/jquery-validate/{version}/jquery.validate.min.jsm',
'type': 'application/javascript'
},
// jQuery Mobile
'jQueryMobile': {
'path': 'resources/jquery-mobile/{version}/jquery.mobile.min.jsm',
'type': 'application/javascript'
},
// js-cookie
'jscookie': {
'path': 'resources/js-cookie/{version}/js.cookie.min.jsm',

View File

@ -1,7 +1,7 @@
{
"manifest_version": 2,
"name": "LocalCDN (fork from Decentraleyes)",
"version": "2.2.2",
"version": "2.2.3",
"browser_specific_settings": {
"gecko": {
"id": "{b86e4813-687a-43e6-ab65-0bde4ab75758}",

View File

@ -252,6 +252,8 @@ helpers.determineResourceName = function (filename) {
return 'Angular Payments';
case 'angular-stripe-checkout.jsm':
return 'Angular Stripe Checkout';
case 'angular-sanitize.min.js':
return 'Angular Sanitize';
case 'animate.min.css':
return 'Animate CSS'
case 'backbone-min.jsm':
@ -263,9 +265,15 @@ helpers.determineResourceName = function (filename) {
case 'bootstrap.min.jsm':
return 'Bootstrap JS';
case 'daterangepicker.min.jsm':
return 'Bootstrap Datepicker';
return 'Bootstrap Daterangepicker';
case 'bootstrap-datepicker.min.jsm':
return 'Bootstrap Datepicker JS';
case 'bootstrap-datepicker.standalone.min.css':
return 'Bootstrap Datepicker CSS';
case 'bootstrap-select.min.css':
return 'Bootstrap-select CSS';
case 'bootstrap-select.min.jsm':
return 'Bootstrap-select JS';
case 'bootstrap-slider.min.jsm':
return 'bootstrap-slider JS';
case 'bootstrap-slider.min.css':
@ -316,6 +324,8 @@ helpers.determineResourceName = function (filename) {
return 'jQuery Validation Plugin';
case 'jquery.urlive.min.jsm':
return 'jQuery URLive';
case 'jquery.mobile.min.jsm':
return 'jQuery Mobile';
case 'js.cookie.min.jsm':
return 'JavaScript Cookie';
case 'lazysizes.min.jsm':
@ -480,6 +490,8 @@ helpers.setLastVersion = function (type, version) {
else version = '1.0.25'; // > 0.4.3
} else if (type.includes('/angular-ui-select/0.')) {
version = '0.20.0';
} else if (type.includes('/angular-sanitize/1.')) {
version = '1.7.9';
} else if (type.includes('/angucomplete-alt/3.')) {
version = '3.0.0';
} else if (type.includes('/animate.css/3.')) {
@ -498,10 +510,12 @@ helpers.setLastVersion = function (type, version) {
version = '4.4.1';
} else if (type.includes('/bootstrap-daterangepicker/2.')) {
version = '2.1.27';
} else if (type.includes('/bootstrap-datepicker/1.')) {
version = '1.9.0';
} else if (type.includes('/bootstrap-slider/10.')) {
version = '10.6.2';
} else if (type.includes('/bootstrap-select/1.')) {
version = '1.13.14';
version = '1.13.17';
} else if (type.includes('/clipboard.js/2.')) {
version = '2.0.6';
} else if (type.includes('/d3/3.')) {
@ -559,6 +573,8 @@ helpers.setLastVersion = function (type, version) {
version = '1.19.1';
} else if (type.includes('/jquery-jeditable/1.')) {
version = '1.8.0';
} else if (type.includes('/mobile/1.')) {
version = '1.4.5';
} else if (type.includes('/urlive/1.')) {
version = '1.1.1';
} else if (type.includes('/js-cookie/2.')) {
@ -615,6 +631,8 @@ helpers.setLastVersion = function (type, version) {
version = '4.5.0';
} else if (type.includes('/twitter-bootstrap/3.')) {
version = '3.4.1';
} else if (type.includes('/twitter-bootstrap/2.')) {
version = '2.3.2';
} else if (type.includes('/toastr.js/2.')) {
version = '2.1.4';
} else if (type.includes('/underscore.js/1.')) {

View File

@ -21,10 +21,18 @@
<div class="subtle-hint">
<div class="topic-label">
New in LocalCDN:
<ul>
<li>Addition to the encoding problem (<a href="https://gitlab.com/nobody42/localcdn/-/issues/75">#75</a>)</li>
</ul>
</div>
<ul>
<li>Fixed: Identify correct charset if its in quotation marks</li>
<li>Mapping: Removed duplicates</li>
<li>DOM manipulation: Check if charset is supported by TextDecoder()</li>
<li>Added: jQuery Mobile v1.4.5</li>
<li>Added: Twitter-Bootstrap JS and CSS v2.3.2</li>
<li>Updated: Bootstrap-Select CSS to v1.13.17</li>
<li>Added: Bootstrap-Select JS v1.13.17</li>
<li>Added: Angular Sanitize v1.7.9</li>
<li>Added: Bootstrap Datepicker JS and CSS v1.9.0</li>
</ul>
<div class="topic-label">
Please update your uBlock/uMatrix rules
@ -41,6 +49,10 @@
<input id="button-copy-rule-set" type="button" value="Copy">
<hr/>
<h2>History</h2>
<p class='release-date'>2020-05-21 (v2.2.2)</p>
<ul>
<li>Addition to the encoding problem (<a href="https://gitlab.com/nobody42/localcdn/-/issues/75">#75</a>)</li>
</ul>
<p class='release-date'>2020-05-16 (v2.2.1)</p>
<ul>
<li>Fixed: Encoding problem with some websites (maybe only temporary, because at the moment only 9 websites are affected) (<a href="https://gitlab.com/nobody42/localcdn/-/issues/75">#75</a>)</li>

View File

@ -0,0 +1,18 @@
/*
AngularJS v1.7.9
(c) 2010-2018 Google, Inc. http://angularjs.org
License: MIT
*/
(function(s,c){'use strict';function P(c){var h=[];C(h,E).chars(c);return h.join("")}var D=c.$$minErr("$sanitize"),F,h,G,H,I,q,E,J,K,C;c.module("ngSanitize",[]).provider("$sanitize",function(){function f(a,e){return B(a.split(","),e)}function B(a,e){var d={},b;for(b=0;b<a.length;b++)d[e?q(a[b]):a[b]]=!0;return d}function t(a,e){e&&e.length&&h(a,B(e))}function Q(a){for(var e={},d=0,b=a.length;d<b;d++){var k=a[d];e[k.name]=k.value}return e}function L(a){return a.replace(/&/g,"&amp;").replace(z,function(a){var d=
a.charCodeAt(0);a=a.charCodeAt(1);return"&#"+(1024*(d-55296)+(a-56320)+65536)+";"}).replace(u,function(a){return"&#"+a.charCodeAt(0)+";"}).replace(/</g,"&lt;").replace(/>/g,"&gt;")}function A(a){for(;a;){if(a.nodeType===s.Node.ELEMENT_NODE)for(var e=a.attributes,d=0,b=e.length;d<b;d++){var k=e[d],g=k.name.toLowerCase();if("xmlns:ns1"===g||0===g.lastIndexOf("ns1:",0))a.removeAttributeNode(k),d--,b--}(e=a.firstChild)&&A(e);a=v("nextSibling",a)}}function v(a,e){var d=e[a];if(d&&J.call(e,d))throw D("elclob",
e.outerHTML||e.outerText);return d}var y=!1,g=!1;this.$get=["$$sanitizeUri",function(a){y=!0;g&&h(m,l);return function(e){var d=[];K(e,C(d,function(b,d){return!/^unsafe:/.test(a(b,d))}));return d.join("")}}];this.enableSvg=function(a){return I(a)?(g=a,this):g};this.addValidElements=function(a){y||(H(a)&&(a={htmlElements:a}),t(l,a.svgElements),t(r,a.htmlVoidElements),t(m,a.htmlVoidElements),t(m,a.htmlElements));return this};this.addValidAttrs=function(a){y||h(M,B(a,!0));return this};F=c.bind;h=c.extend;
G=c.forEach;H=c.isArray;I=c.isDefined;q=c.$$lowercase;E=c.noop;K=function(a,e){null===a||void 0===a?a="":"string"!==typeof a&&(a=""+a);var d=N(a);if(!d)return"";var b=5;do{if(0===b)throw D("uinput");b--;a=d.innerHTML;d=N(a)}while(a!==d.innerHTML);for(b=d.firstChild;b;){switch(b.nodeType){case 1:e.start(b.nodeName.toLowerCase(),Q(b.attributes));break;case 3:e.chars(b.textContent)}var k;if(!(k=b.firstChild)&&(1===b.nodeType&&e.end(b.nodeName.toLowerCase()),k=v("nextSibling",b),!k))for(;null==k;){b=
v("parentNode",b);if(b===d)break;k=v("nextSibling",b);1===b.nodeType&&e.end(b.nodeName.toLowerCase())}b=k}for(;b=d.firstChild;)d.removeChild(b)};C=function(a,e){var d=!1,b=F(a,a.push);return{start:function(a,g){a=q(a);!d&&w[a]&&(d=a);d||!0!==m[a]||(b("<"),b(a),G(g,function(d,g){var c=q(g),f="img"===a&&"src"===c||"background"===c;!0!==M[c]||!0===O[c]&&!e(d,f)||(b(" "),b(g),b('="'),b(L(d)),b('"'))}),b(">"))},end:function(a){a=q(a);d||!0!==m[a]||!0===r[a]||(b("</"),b(a),b(">"));a==d&&(d=!1)},chars:function(a){d||
b(L(a))}}};J=s.Node.prototype.contains||function(a){return!!(this.compareDocumentPosition(a)&16)};var z=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,u=/([^#-~ |!])/g,r=f("area,br,col,hr,img,wbr"),x=f("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),p=f("rp,rt"),n=h({},p,x),x=h({},x,f("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,section,table,ul")),p=h({},p,f("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")),
l=f("circle,defs,desc,ellipse,font-face,font-face-name,font-face-src,g,glyph,hkern,image,linearGradient,line,marker,metadata,missing-glyph,mpath,path,polygon,polyline,radialGradient,rect,stop,svg,switch,text,title,tspan"),w=f("script,style"),m=h({},r,x,p,n),O=f("background,cite,href,longdesc,src,xlink:href,xml:base"),n=f("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,size,span,start,summary,tabindex,target,title,type,valign,value,vspace,width"),
p=f("accent-height,accumulate,additive,alphabetic,arabic-form,ascent,baseProfile,bbox,begin,by,calcMode,cap-height,class,color,color-rendering,content,cx,cy,d,dx,dy,descent,display,dur,end,fill,fill-rule,font-family,font-size,font-stretch,font-style,font-variant,font-weight,from,fx,fy,g1,g2,glyph-name,gradientUnits,hanging,height,horiz-adv-x,horiz-origin-x,ideographic,k,keyPoints,keySplines,keyTimes,lang,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mathematical,max,min,offset,opacity,orient,origin,overline-position,overline-thickness,panose-1,path,pathLength,points,preserveAspectRatio,r,refX,refY,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,rotate,rx,ry,slope,stemh,stemv,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,systemLanguage,target,text-anchor,to,transform,type,u1,u2,underline-position,underline-thickness,unicode,unicode-range,units-per-em,values,version,viewBox,visibility,width,widths,x,x-height,x1,x2,xlink:actuate,xlink:arcrole,xlink:role,xlink:show,xlink:title,xlink:type,xml:base,xml:lang,xml:space,xmlns,xmlns:xlink,y,y1,y2,zoomAndPan",
!0),M=h({},O,p,n),N=function(a,e){function d(b){b="<remove></remove>"+b;try{var d=(new a.DOMParser).parseFromString(b,"text/html").body;d.firstChild.remove();return d}catch(e){}}function b(a){c.innerHTML=a;e.documentMode&&A(c);return c}var g;if(e&&e.implementation)g=e.implementation.createHTMLDocument("inert");else throw D("noinert");var c=(g.documentElement||g.getDocumentElement()).querySelector("body");c.innerHTML='<svg><g onload="this.parentNode.remove()"></g></svg>';return c.querySelector("svg")?
(c.innerHTML='<svg><p><style><img src="</style><img src=x onerror=alert(1)//">',c.querySelector("svg img")?d:b):function(b){b="<remove></remove>"+b;try{b=encodeURI(b)}catch(d){return}var e=new a.XMLHttpRequest;e.responseType="document";e.open("GET","data:text/html;charset=utf-8,"+b,!1);e.send(null);b=e.response.body;b.firstChild.remove();return b}}(s,s.document)}).info({angularVersion:"1.7.9"});c.module("ngSanitize").filter("linky",["$sanitize",function(f){var h=/((s?ftp|https?):\/\/|(www\.)|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s.;,(){}<>"\u201d\u2019]/i,
t=/^mailto:/i,q=c.$$minErr("linky"),s=c.isDefined,A=c.isFunction,v=c.isObject,y=c.isString;return function(c,z,u){function r(c){c&&l.push(P(c))}function x(c,g){var f,a=p(c);l.push("<a ");for(f in a)l.push(f+'="'+a[f]+'" ');!s(z)||"target"in a||l.push('target="',z,'" ');l.push('href="',c.replace(/"/g,"&quot;"),'">');r(g);l.push("</a>")}if(null==c||""===c)return c;if(!y(c))throw q("notstring",c);for(var p=A(u)?u:v(u)?function(){return u}:function(){return{}},n=c,l=[],w,m;c=n.match(h);)w=c[0],c[2]||
c[4]||(w=(c[3]?"http://":"mailto:")+w),m=c.index,r(n.substr(0,m)),x(w,c[0].replace(t,"")),n=n.substring(m+c[0].length);r(n);return f(l.join(""))}}])})(window,window.angular);
//# sourceMappingURL=angular-sanitize.min.js.map

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long