1/** 2* DO NOT EDIT THIS FILE. 3* See the following change record for more information, 4* https://www.drupal.org/node/2815083 5* @preserve 6**/ 7 8if (!Element.prototype.matches) { 9 Element.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector; 10}; 11/*! @drupal/once - v1.0.1 - 2021-06-12 */ 12var once=function(){"use strict";var n=/[\11\12\14\15\40]+/,e="data-once",t=document;function r(n,t,r){return n[t+"Attribute"](e,r)}function o(e){if("string"!=typeof e)throw new TypeError("once ID must be a string");if(""===e||n.test(e))throw new RangeError("once ID must not be empty or contain spaces");return'[data-once~="'+e+'"]'}function u(n){if(!(n instanceof Element))throw new TypeError("The element must be an instance of Element");return!0}function i(n,e){void 0===e&&(e=t);var r=n;if(null===n)r=[];else{if(!n)throw new TypeError("Selector must not be empty");"string"!=typeof n||e!==t&&!u(e)?n instanceof Element&&(r=[n]):r=e.querySelectorAll(n)}return Array.prototype.slice.call(r)}function c(n,e,t){return e.filter((function(e){var r=u(e)&&e.matches(n);return r&&t&&t(e),r}))}function f(e,t){var o=t.add,u=t.remove,i=[];r(e,"has")&&r(e,"get").trim().split(n).forEach((function(n){i.indexOf(n)<0&&n!==u&&i.push(n)})),o&&i.push(o);var c=i.join(" ");r(e,""===c?"remove":"set",c)}function a(n,e,t){return c(":not("+o(n)+")",i(e,t),(function(e){return f(e,{add:n})}))}return a.remove=function(n,e,t){return c(o(n),i(e,t),(function(e){return f(e,{remove:n})}))},a.filter=function(n,e,t){return c(o(n),i(e,t))},a.find=function(n,e){return i(n?o(n):"[data-once]",e)},a}(); 13 14; 15/** 16* DO NOT EDIT THIS FILE. 17* See the following change record for more information, 18* https://www.drupal.org/node/2815083 19* @preserve 20**/ 21 22(function () { 23 var settingsElement = document.querySelector('head > script[type="application/json"][data-drupal-selector="drupal-settings-json"], body > script[type="application/json"][data-drupal-selector="drupal-settings-json"]'); 24 window.drupalSettings = {}; 25 26 if (settingsElement !== null) { 27 window.drupalSettings = JSON.parse(settingsElement.textContent); 28 } 29})();; 30/** 31* DO NOT EDIT THIS FILE. 32* See the following change record for more information, 33* https://www.drupal.org/node/2815083 34* @preserve 35**/ 36 37window.Drupal = { 38 behaviors: {}, 39 locale: {} 40}; 41 42(function (Drupal, drupalSettings, drupalTranslations, console, Proxy, Reflect) { 43 Drupal.throwError = function (error) { 44 setTimeout(function () { 45 throw error; 46 }, 0); 47 }; 48 49 Drupal.attachBehaviors = function (context, settings) { 50 context = context || document; 51 settings = settings || drupalSettings; 52 var behaviors = Drupal.behaviors; 53 Object.keys(behaviors || {}).forEach(function (i) { 54 if (typeof behaviors[i].attach === 'function') { 55 try { 56 behaviors[i].attach(context, settings); 57 } catch (e) { 58 Drupal.throwError(e); 59 } 60 } 61 }); 62 }; 63 64 Drupal.detachBehaviors = function (context, settings, trigger) { 65 context = context || document; 66 settings = settings || drupalSettings; 67 trigger = trigger || 'unload'; 68 var behaviors = Drupal.behaviors; 69 Object.keys(behaviors || {}).forEach(function (i) { 70 if (typeof behaviors[i].detach === 'function') { 71 try { 72 behaviors[i].detach(context, settings, trigger); 73 } catch (e) { 74 Drupal.throwError(e); 75 } 76 } 77 }); 78 }; 79 80 Drupal.checkPlain = function (str) { 81 str = str.toString().replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"').replace(/'/g, '''); 82 return str; 83 }; 84 85 Drupal.formatString = function (str, args) { 86 var processedArgs = {}; 87 Object.keys(args || {}).forEach(function (key) { 88 switch (key.charAt(0)) { 89 case '@': 90 processedArgs[key] = Drupal.checkPlain(args[key]); 91 break; 92 93 case '!': 94 processedArgs[key] = args[key]; 95 break; 96 97 default: 98 processedArgs[key] = Drupal.theme('placeholder', args[key]); 99 break; 100 } 101 }); 102 return Drupal.stringReplace(str, processedArgs, null); 103 }; 104 105 Drupal.stringReplace = function (str, args, keys) { 106 if (str.length === 0) { 107 return str; 108 } 109 110 if (!Array.isArray(keys)) { 111 keys = Object.keys(args || {}); 112 keys.sort(function (a, b) { 113 return a.length - b.length; 114 }); 115 } 116 117 if (keys.length === 0) { 118 return str; 119 } 120 121 var key = keys.pop(); 122 var fragments = str.split(key); 123 124 if (keys.length) { 125 for (var i = 0; i < fragments.length; i++) { 126 fragments[i] = Drupal.stringReplace(fragments[i], args, keys.slice(0)); 127 } 128 } 129 130 return fragments.join(args[key]); 131 }; 132 133 Drupal.t = function (str, args, options) { 134 options = options || {}; 135 options.context = options.context || ''; 136 137 if (typeof drupalTranslations !== 'undefined' && drupalTranslations.strings && drupalTranslations.strings[options.context] && drupalTranslations.strings[options.context][str]) { 138 str = drupalTranslations.strings[options.context][str]; 139 } 140 141 if (args) { 142 str = Drupal.formatString(str, args); 143 } 144 145 return str; 146 }; 147 148 Drupal.url = function (path) { 149 return drupalSettings.path.baseUrl + drupalSettings.path.pathPrefix + path; 150 }; 151 152 Drupal.url.toAbsolute = function (url) { 153 var urlParsingNode = document.createElement('a'); 154 155 try { 156 url = decodeURIComponent(url); 157 } catch (e) {} 158 159 urlParsingNode.setAttribute('href', url); 160 return urlParsingNode.cloneNode(false).href; 161 }; 162 163 Drupal.url.isLocal = function (url) { 164 var absoluteUrl = Drupal.url.toAbsolute(url); 165 var protocol = window.location.protocol; 166 167 if (protocol === 'http:' && absoluteUrl.indexOf('https:') === 0) { 168 protocol = 'https:'; 169 } 170 171 var baseUrl = "".concat(protocol, "//").concat(window.location.host).concat(drupalSettings.path.baseUrl.slice(0, -1)); 172 173 try { 174 absoluteUrl = decodeURIComponent(absoluteUrl); 175 } catch (e) {} 176 177 try { 178 baseUrl = decodeURIComponent(baseUrl); 179 } catch (e) {} 180 181 return absoluteUrl === baseUrl || absoluteUrl.indexOf("".concat(baseUrl, "/")) === 0; 182 }; 183 184 Drupal.formatPlural = function (count, singular, plural, args, options) { 185 args = args || {}; 186 args['@count'] = count; 187 var pluralDelimiter = drupalSettings.pluralDelimiter; 188 var translations = Drupal.t(singular + pluralDelimiter + plural, args, options).split(pluralDelimiter); 189 var index = 0; 190 191 if (typeof drupalTranslations !== 'undefined' && drupalTranslations.pluralFormula) { 192 index = count in drupalTranslations.pluralFormula ? drupalTranslations.pluralFormula[count] : drupalTranslations.pluralFormula.default; 193 } else if (args['@count'] !== 1) { 194 index = 1; 195 } 196 197 return translations[index]; 198 }; 199 200 Drupal.encodePath = function (item) { 201 return window.encodeURIComponent(item).replace(/%2F/g, '/'); 202 }; 203 204 Drupal.deprecationError = function (_ref) { 205 var message = _ref.message; 206 207 if (drupalSettings.suppressDeprecationErrors === false && typeof console !== 'undefined' && console.warn) { 208 console.warn("[Deprecation] ".concat(message)); 209 } 210 }; 211 212 Drupal.deprecatedProperty = function (_ref2) { 213 var target = _ref2.target, 214 deprecatedProperty = _ref2.deprecatedProperty, 215 message = _ref2.message; 216 217 if (!Proxy || !Reflect) { 218 return target; 219 } 220 221 return new Proxy(target, { 222 get: function get(target, key) { 223 if (key === deprecatedProperty) { 224 Drupal.deprecationError({ 225 message: message 226 }); 227 } 228 229 for (var _len = arguments.length, rest = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) { 230 rest[_key - 2] = arguments[_key]; 231 } 232 233 return Reflect.get.apply(Reflect, [target, key].concat(rest)); 234 } 235 }); 236 }; 237 238 Drupal.theme = function (func) { 239 if (func in Drupal.theme) { 240 var _Drupal$theme; 241 242 for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { 243 args[_key2 - 1] = arguments[_key2]; 244 } 245
246 return (_Drupal$theme = Drupal.theme)[func].apply(_Drupal$theme, args); 247 } 248 }; 249 250 Drupal.theme.placeholder = function (str) { 251 return "<em class=\"placeholder\">".concat(Drupal.checkPlain(str), "</em>"); 252 }; 253})(Drupal, window.drupalSettings, window.drupalTranslations, window.console, window.Proxy, window.Reflect);; 254/** 255* DO NOT EDIT THIS FILE. 256* See the following change record for more information, 257* https://www.drupal.org/node/2815083 258* @preserve 259**/ 260 261if (window.jQuery) { 262 jQuery.noConflict(); 263} 264 265document.documentElement.className += ' js'; 266 267(function (Drupal, drupalSettings) { 268 var domReady = function domReady(callback) { 269 var listener = function listener() { 270 callback(); 271 document.removeEventListener('DOMContentLoaded', listener); 272 }; 273 274 if (document.readyState !== 'loading') { 275 setTimeout(callback, 0); 276 } else { 277 document.addEventListener('DOMContentLoaded', listener); 278 } 279 }; 280 281 domReady(function () { 282 Drupal.attachBehaviors(document, drupalSettings); 283 }); 284})(Drupal, window.drupalSettings);; 285/** 286 * @file 287 * facebook_pixel.js 288 * 289 * Defines the behavior of the facebook pixel module. 290 */ 291 292(function (Drupal, drupalSettings, once) { 293 294 'use strict'; 295 296 function initTracking() { 297 var facebook_pixel_id = drupalSettings.facebook_pixel.facebook_id; 298 299 // Define Drupal.facebook_pixel.fb_disable as a dynamic condition to 300 // disable FB Pixel at runtime. 301 // This is helpful for GDPR compliance module integration 302 // and works even with static caching mechanisms like boost module. 303 Drupal.facebook_pixel = (typeof Drupal.facebook_pixel !== "undefined") ? Drupal.facebook_pixel : {}; 304 Drupal.facebook_pixel.fb_disable = false; 305 306 // Define Opt-out conditions check 307 if (drupalSettings.facebook_pixel.fb_disable_advanced) { 308 // Facebook Pixel Opt-Out Code 309 window.fbOptout = function (reload = 0) { 310 reload = (typeof reload !== 'undefined') ? reload : 0; 311 var optoutWindowDisableKey = 'fb-disable'; 312 document.cookie = optoutWindowDisableKey + '=true; expires=Thu, 31 Dec 2999 23:59:59 UTC; path=/'; 313 window[optoutWindowDisableKey] = true; 314 if (reload) { 315 location.reload(); 316 } 317 }; 318 if (document.cookie.indexOf('fb-disable=true') > -1) { 319 window['fb-disable'] = true; 320 } 321 // End Facebook Pixel Opt-Out Code 322 Drupal.facebook_pixel.fb_disable = Drupal.facebook_pixel.fb_disable || window['fb-disable'] == true; 323 } 324 325 // Define eu_cookie_compliance conditions check (https://www.drupal.org/project/eu_cookie_compliance) 326 if (drupalSettings.facebook_pixel.eu_cookie_compliance) { 327 if (typeof Drupal.eu_cookie_compliance === "undefined") { 328 console.warn("facebook_pixel: facebook_pixel eu_cookie_compliance integration option is enabled, but eu_cookie_compliance javascripts seem to be loaded after facebook_pixel, which may break functionality."); 329 } 330 var eccHasAgreed = (typeof Drupal.eu_cookie_compliance !== "undefined" && Drupal.eu_cookie_compliance.hasAgreed()); 331 Drupal.facebook_pixel.fb_disable = Drupal.facebook_pixel.fb_disable || !eccHasAgreed; 332 } 333 334 // Define Do-not-track conditions check (see https://www.w3.org/TR/tracking-dnt/) 335 if (drupalSettings.facebook_pixel.donottrack) { 336 var DNT = (typeof navigator.doNotTrack !== "undefined" && (navigator.doNotTrack === "yes" || navigator.doNotTrack == 1)) || (typeof navigator.msDoNotTrack !== "undefined" && navigator.msDoNotTrack == 1) || (typeof window.doNotTrack !== "undefined" && window.doNotTrack == 1); 337 // If eccHasAgreed is true, it overrides DNT because eu_cookie_compliance contains a setting for opt-in with DNT: 338 // "Automatic. Respect the DNT (Do not track) setting in the browser, if present. Uses opt-in when DNT is 1 or not set, and consent by default when DNT is 0." 339 Drupal.facebook_pixel.fb_disable = Drupal.facebook_pixel.fb_disable || (DNT && (typeof eccHasAgreed == "undefined" || !eccHasAgreed)); 340 } 341 342 if (!Drupal.facebook_pixel.fb_disable) { 343 let elements = once('facebook_pixel_pageload_tracking', 'body');
344 elements.forEach(function () { 345 !function (f,b,e,v,n,t,s) { 346 if(f.fbq) { return; 347 }n = f.fbq = function () {n.callMethod ? 348 n.callMethod.apply(n,arguments):n.queue.push(arguments)}; 349 if(!f._fbq) { f._fbq = n; 350 }n.push = n;n.loaded = !0;n.version = '2.0'; 351 n.queue = [];t = b.createElement(e);t.async = !0; 352 t.src = v;s = b.getElementsByTagName(e)[0]; 353 s.parentNode.insertBefore(t,s)}(window, document,'script', 354 'https://connect.facebook.net/en_US/fbevents.js'); 355 fbq('init', facebook_pixel_id); 356 fbq('track', 'PageView'); 357 358 drupalSettings.facebook_pixel.events.forEach(function (event) { 359 fbq("track", event['event'], event['data']); 360 }); 361 }); 362 } 363 } 364 365 Drupal.behaviors.facebook_pixel = { 366 attach(context) { 367 let elements = once('facebook_pixel_behavior', 'body') 368 elements.forEach(function () { 369 initTracking(); 370 }); 371 372 document.addEventListener('eu_cookie_compliance.changeStatus', function() { 373 initTracking(); 374 }); 375 }, 376 }; 377 378}(Drupal, drupalSettings, once)); 379;
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.