Changeset 3439658 for termageddon-usercentrics
- Timestamp:
- 01/14/2026 03:34:05 PM (2 months ago)
- Location:
- termageddon-usercentrics
- Files:
-
- 26 edited
- 1 copied
-
tags/1.9.0 (copied) (copied from termageddon-usercentrics/trunk)
-
tags/1.9.0/README.txt (modified) (2 diffs)
-
tags/1.9.0/admin/class-termageddon-usercentrics-admin.php (modified) (12 diffs)
-
tags/1.9.0/admin/css/termageddon-usercentrics-admin.css (modified) (4 diffs)
-
tags/1.9.0/admin/css/termageddon-usercentrics-admin.min.css (modified) (1 diff)
-
tags/1.9.0/admin/js/termageddon-usercentrics-admin.js (modified) (2 diffs)
-
tags/1.9.0/admin/js/termageddon-usercentrics-admin.min.js (modified) (1 diff)
-
tags/1.9.0/admin/usercentrics-providers.php (modified) (1 diff)
-
tags/1.9.0/includes/class-termageddon-usercentrics.php (modified) (4 diffs)
-
tags/1.9.0/languages/termageddon-usercentrics.pot (modified) (45 diffs)
-
tags/1.9.0/public/class-termageddon-usercentrics-public.php (modified) (3 diffs)
-
tags/1.9.0/termageddon-usercentrics.php (modified) (2 diffs)
-
tags/1.9.0/vendor/composer/autoload_static.php (modified) (3 diffs)
-
tags/1.9.0/vendor/composer/installed.php (modified) (2 diffs)
-
trunk/README.txt (modified) (2 diffs)
-
trunk/admin/class-termageddon-usercentrics-admin.php (modified) (12 diffs)
-
trunk/admin/css/termageddon-usercentrics-admin.css (modified) (4 diffs)
-
trunk/admin/css/termageddon-usercentrics-admin.min.css (modified) (1 diff)
-
trunk/admin/js/termageddon-usercentrics-admin.js (modified) (2 diffs)
-
trunk/admin/js/termageddon-usercentrics-admin.min.js (modified) (1 diff)
-
trunk/admin/usercentrics-providers.php (modified) (1 diff)
-
trunk/includes/class-termageddon-usercentrics.php (modified) (4 diffs)
-
trunk/languages/termageddon-usercentrics.pot (modified) (45 diffs)
-
trunk/public/class-termageddon-usercentrics-public.php (modified) (3 diffs)
-
trunk/termageddon-usercentrics.php (modified) (2 diffs)
-
trunk/vendor/composer/autoload_static.php (modified) (3 diffs)
-
trunk/vendor/composer/installed.php (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
termageddon-usercentrics/tags/1.9.0/README.txt
r3366825 r3439658 5 5 Tested up to: 6.8.1 6 6 Requires PHP: 7.2 7 Stable tag: 1. 8.27 Stable tag: 1.9.0 8 8 License: GPLv2 or later 9 9 License URI: http://www.gnu.org/licenses/gpl-2.0.html … … 189 189 == Changelog == 190 190 191 = 1.9.0 = 192 193 **✨ New Features:** 194 * Added "Manual Script Controller" allowing users to add any script and have it automatically be configured for Cookie Consent with automatic privacy blocking in mind. 195 196 **🔧 Improvements:** 197 * Updated list of supported Smart Data Protector technologies for use with Advanced Configurations under Integrations. 198 * Added support for Delaware (DPDPA) & Indiana (ICDPA) for Geolocation. 199 191 200 = 1.8.2 = 192 201 -
termageddon-usercentrics/tags/1.9.0/admin/class-termageddon-usercentrics-admin.php
r3362792 r3439658 129 129 wp_enqueue_script( 'select2', 'https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js', array( 'jquery' ), '4.1.0', true ); 130 130 131 // Initialize select2 for our multi-select fields131 // Initialize select2 for our multi-select and single-select fields 132 132 wp_add_inline_script( 'select2', ' 133 133 jQuery(document).ready(function($) { … … 135 135 width: "100%", 136 136 placeholder: "Select providers...", 137 allowClear: true 138 }); 139 $(".termageddon-singleselect").select2({ 140 width: "100%", 141 placeholder: "Select a service...", 137 142 allowClear: true 138 143 }); … … 289 294 public function add_new_subsection( string $section, array $options = array() ) { 290 295 291 $name = ( isset( $options['name'] ) ? $options['name'] : false ); 292 $description = ( isset( $options['description'] ) ? $options['description'] : false ); 296 $name = $options['name'] ?? false; 297 $tags = isset( $options['tags'] ) ? ' ' . $options['tags'] : ''; 298 $description = $options['description'] ?? false; 293 299 // Indent specifies whether or not the subsection should be indented. 294 $indent = ( isset( $options['indent'] ) ? true === $options['indent'] : false );300 $indent = ( $options['indent'] ?? false ) === true; 295 301 296 302 // Slim slims down the column width for the initial options. 297 $slim = ( isset( $options['slim'] ) ? true === $options['slim'] : false );303 $slim = ( $options['slim'] ?? false ) === true; 298 304 299 305 // Helper slims down the divider and displays a helper text by itself. 300 $helper = ( isset( $options['helper'] ) ? true === $options['helper'] : false );306 $helper = ( $options['helper'] ?? false ) === true; 301 307 302 308 $section_contents = $helper ? 303 309 ' 304 <span class="tu-section-title-helper">' . esc_html( $name ) . ': </span>310 <span class="tu-section-title-helper">' . esc_html( $name ) . ':' . $tags . '</span> 305 311 ' . ( empty( $description ) ? '' : '<p>' . wp_kses_post( $description ) . '</p>' ) 306 312 : ' </div> 307 313 <div class="tu-toggle-section"> 308 <span class="tu-section-title">' . esc_html( $name ) . ': </span>314 <span class="tu-section-title">' . esc_html( $name ) . ':' . $tags . '</span> 309 315 ' . ( empty( $description ) ? '' : '<p>' . wp_kses_post( $description ) . '</p>' ) . ' 310 316 </div> … … 343 349 344 350 /** 351 * Gets the Usercentrics providers array. 352 * 353 * Caches the result to avoid multiple file includes. 354 * 355 * @return array Array of provider IDs and names. 356 */ 357 public static function get_usercentrics_providers(): array { 358 static $providers = null; 359 360 if ( null === $providers ) { 361 $providers = include TERMAGEDDON_COOKIE_PATH . 'admin/usercentrics-providers.php'; 362 } 363 364 return $providers; 365 } 366 367 368 /** 345 369 * Buildout all settings sections in prep for registering the settings. 346 370 * … … 461 485 'termageddon_usercentrics_embed_code', // option name. 462 486 '' // sanitization function. 487 ); 488 489 // BREAK SECTION FOR MANUAL SCRIPT CONTROLLER. 490 $this->add_new_subsection( 491 'termageddon_usercentrics_section_embed', 492 array( 493 'name' => __( 'Manual Script Controller', 'termageddon-usercentrics' ), 494 'tags' => $this->mark_as_beta(), 495 'description' => __( 'This feature helps add the', 'termageddon-usercentrics' ) 496 .' <a href="https://termageddon.freshdesk.com/support/solutions/articles/66000529802-embedding-the-cookie-consent-solution-and-cookie-policy#:~:text=for%20simplicity%20purposes.-,Manual%20script%20control,-%2D%20You%20can%20also" target="_blank">'.__( 'manual control snippet', 'termageddon-usercentrics' ).'</a> ' 497 .__( 'into third party scripts (Google Analytics, Facebook Pixel, LinkedIn Insights Tag, etc.), which can help ensure that consent is obtained first prior to the script loading.', 'termageddon-usercentrics' ) 498 .'<br/><br/>' 499 .__( 'Simply add a new snippet, enter the Service name (same name as the Service you listed in your Cookie Policy and Consent Tool questionnaire), and paste your embed code into the provided field. The plugin will then set up manual control of the script, helping ensure that it is blocked until consent is obtained by the user.', 'termageddon-usercentrics' ) 500 .'<br/><br/><em>' 501 .__( 'Very important: be sure to', 'termageddon-usercentrics' ) 502 .' <a href="https://termageddon.freshdesk.com/support/solutions/articles/66000529802-embedding-the-cookie-consent-solution-and-cookie-policy" target="_blank">'.__( 'test the consent solution', 'termageddon-usercentrics' ).'</a> ' 503 .__( 'just in general, but also after making this update to ensure that scripts do not fire until consent is provided.', 'termageddon-usercentrics' ) 504 .'</em>', 505 ) 506 ); 507 508 // Import providers for script snippets 509 $providers = self::get_usercentrics_providers(); 510 511 // Script snippets field (full width, no label) 512 add_settings_field( 513 'termageddon_usercentrics_script_snippets', 514 '', 515 array( &$this, 'script_snippets_html' ), 516 'termageddon-usercentrics', 517 'termageddon_usercentrics_section_embed', 518 array( 519 'label_for' => 'termageddon_usercentrics_script_snippets', 520 'options' => $providers, 521 'class' => 'tu-table-full-width', 522 ) 523 ); 524 525 register_setting( 526 'termageddon_usercentrics_settings', 527 'termageddon_usercentrics_script_snippets', 528 array( 529 'type' => 'array', 530 'sanitize_callback' => array( &$this, 'sanitize_script_snippets' ), 531 'default' => array(), 532 ) 463 533 ); 464 534 … … 670 740 'default' => 'v2', 671 741 ) 742 ); 743 744 // Disable Usercentrics Auto-blocking script 745 add_settings_field( 746 'termageddon_usercentrics_manual_script_control', 747 __( 'Disable Usercentrics Auto-blocking script', 'termageddon-usercentrics' ), 748 array( &$this, 'manual_script_control_html' ), // function which prints the field. 749 'termageddon-usercentrics', // page slug. 750 'termageddon_usercentrics_section_settings', // section ID. 751 array( 752 'label_for' => 'termageddon_usercentrics_manual_script_control', 753 'description' => __( 'By updating all external scripts to use the <a href="https://termageddon.freshdesk.com/support/solutions/articles/66000529802-embedding-the-cookie-consent-solution-and-cookie-policy#:~:text=for%20simplicity%20purposes.-,Manual%20script%20control,-%2D%20You%20can%20also" target="_blank">manual script controller</a>, you can disable usercentrics block script which will improve site-loading performance and improve reliability. Once enabled, please ensure you <a href="https://termageddon.freshdesk.com/support/solutions/articles/66000529802-embedding-the-cookie-consent-solution-and-cookie-policy" target="_blank">validate</a> that any external services are working as expected.', 'termageddon-usercentrics' ), 754 ) 755 ); 756 757 register_setting( 758 'termageddon_usercentrics_settings', // settings group name. 759 'termageddon_usercentrics_manual_script_control', // option name. 760 '' // sanitization function. 672 761 ); 673 762 … … 893 982 894 983 // Import providers 895 $providers = include TERMAGEDDON_COOKIE_PATH . 'admin/usercentrics-providers.php';984 $providers = self::get_usercentrics_providers(); 896 985 897 986 // Auto-refresh on consent field … … 1268 1357 1269 1358 /** 1359 * The HTML field for the manual script control checkbox. 1360 * 1361 * @param array $args The arguments provided by the add_settings_field() method. 1362 * @return void 1363 */ 1364 public function manual_script_control_html( array $args ) { 1365 self::generate_checkbox( 'manual_script_control', '', $args ); 1366 } 1367 1368 /** 1270 1369 * The HTML field for the disable CDN checkbox. 1271 1370 * … … 1382 1481 1383 1482 echo ' 1384 <div class="tu-se ction-settings">1385 <div class="tu- section">';1483 <div class="tu-settings-section"> 1484 <div class="tu-toggle-section">'; 1386 1485 1387 1486 } … … 1418 1517 1419 1518 echo '<p>' . 1420 esc_html__( 'Not sure what to select? Review', 'termageddon-usercentrics' ) . ' <a href="https://termageddon.freshdesk.com/support/solutions/articles/660005 03289-how-to-activate-a-cookie-policy-and-cookie-consent-solution" target="_blank">' . esc_html__( 'this article', 'termageddon-usercentrics' ) . '</a> ' . esc_html__( 'along with page 1 of your Privacy Policy questionnaire within ', 'termageddon-usercentrics' ) . '<a href="https://app.termageddon.com/home" target="_blank">app.termageddon.com</a>.' .1519 esc_html__( 'Not sure what to select? Review', 'termageddon-usercentrics' ) . ' <a href="https://termageddon.freshdesk.com/support/solutions/articles/66000530091-how-to-activate-the-cookie-policy-and-consent-solution" target="_blank">' . esc_html__( 'this article', 'termageddon-usercentrics' ) . '</a> ' . esc_html__( 'along with page 1 of your Privacy Policy questionnaire within ', 'termageddon-usercentrics' ) . '<a href="https://policies.termageddon.com/home" target="_blank">policies.termageddon.com</a>.' . 1421 1520 '</p>'; 1422 1521 … … 1458 1557 } 1459 1558 return array_map( 'sanitize_text_field', $value ); 1559 } 1560 1561 /** 1562 * Sanitize script snippets array 1563 * 1564 * Validates each snippet for proper service ID and script tag presence. 1565 * Invalid snippets are skipped with appropriate error messages. 1566 * 1567 * @param mixed $value The script snippets array to sanitize. 1568 * @return array The sanitized script snippets array. 1569 */ 1570 public function sanitize_script_snippets( $value ): array { 1571 if ( ! is_array( $value ) ) { 1572 return array(); 1573 } 1574 1575 $providers = self::get_usercentrics_providers(); 1576 $sanitized = array(); 1577 1578 foreach ( $value as $index => $snippet ) { 1579 if ( ! is_array( $snippet ) ) { 1580 continue; 1581 } 1582 1583 // Validate and sanitize service_id 1584 $service_id = sanitize_text_field( $snippet['service_id'] ?? '' ); 1585 if ( empty( $service_id ) || ! isset( $providers[ $service_id ] ) ) { 1586 $this->add_snippet_error( 1587 'invalid_service_' . $index, 1588 sprintf( 1589 /* translators: %d: snippet index number */ 1590 __( 'Script snippet #%d was not saved: Please select a valid service.', 'termageddon-usercentrics' ), 1591 $index + 1 1592 ) 1593 ); 1594 continue; 1595 } 1596 1597 // Get script content - don't sanitize here, will be processed via augment_script_for_usercentrics on output 1598 // Similar to how embed_code is handled (no sanitization callback) 1599 $script = trim( $snippet['script'] ?? '' ); 1600 1601 // Validate that the script is not empty 1602 if ( empty( $script ) ) { 1603 $this->add_snippet_error( 1604 'empty_script_' . $index, 1605 sprintf( 1606 /* translators: %1$s: service name, %2$d: snippet index number */ 1607 __( 'Script snippet for "%1$s" (#%2$d) was not saved: The script code field cannot be empty.', 'termageddon-usercentrics' ), 1608 $providers[ $service_id ], 1609 $index + 1 1610 ) 1611 ); 1612 continue; 1613 } 1614 1615 // Check if content contains script tags 1616 if ( ! preg_match( '/<script[^>]*>/i', $script ) ) { 1617 $service_name = $providers[ $service_id ]; 1618 1619 // Check if it contains other HTML tags (like div, span, etc.) 1620 if ( preg_match( '/<(div|span|p|a|img|iframe|button|input|form|table|ul|ol|li|h[1-6])[^>]*>/i', $script ) ) { 1621 $error_message = sprintf( 1622 /* translators: %1$s: service name, %2$d: snippet index number */ 1623 __( 'Script snippet for "%1$s" (#%2$d) was not saved: Only script tags are allowed. Please remove any HTML elements (div, span, etc.) and use only <script> tags.', 'termageddon-usercentrics' ), 1624 $service_name, 1625 $index + 1 1626 ); 1627 } else { 1628 $error_message = sprintf( 1629 /* translators: %1$s: service name, %2$d: snippet index number */ 1630 __( 'Script snippet for "%1$s" (#%2$d) was not saved: The script code must contain at least one <script> tag.', 'termageddon-usercentrics' ), 1631 $service_name, 1632 $index + 1 1633 ); 1634 } 1635 1636 $this->add_snippet_error( 'invalid_content_' . $index, $error_message ); 1637 continue; 1638 } 1639 1640 $sanitized[] = array( 1641 'script' => $script, 1642 'service_id' => $service_id, 1643 ); 1644 } 1645 1646 return $sanitized; 1647 } 1648 1649 /** 1650 * Helper method to add settings errors for script snippets 1651 * 1652 * @param string $code Error code. 1653 * @param string $message Error message. 1654 * @return void 1655 */ 1656 private function add_snippet_error( string $code, string $message ): void { 1657 add_settings_error( 1658 'termageddon_usercentrics_script_snippets', 1659 $code, 1660 $message, 1661 'error' 1662 ); 1460 1663 } 1461 1664 … … 1506 1709 } 1507 1710 1711 /** 1712 * The HTML field for the script snippets repeater 1713 * 1714 * @param array $args The arguments provided by the add_settings_field() method. 1715 * @return void 1716 */ 1717 public function script_snippets_html( array $args ) { 1718 $options = $args['options']; 1719 $snippets = get_option( 'termageddon_usercentrics_script_snippets', array() ); 1720 1721 // Ensure snippets is an array 1722 if ( ! is_array( $snippets ) ) { 1723 $snippets = array(); 1724 } 1725 ?> 1726 <div id="termageddon-script-snippets-container"> 1727 <?php if ( ! empty( $snippets ) ) : ?> 1728 <?php foreach ( $snippets as $index => $snippet ) : ?> 1729 <?php 1730 // Get service name for header 1731 $service_id = isset( $snippet['service_id'] ) ? $snippet['service_id'] : ''; 1732 $service_name = ''; 1733 if ( ! empty( $service_id ) && isset( $options[ $service_id ] ) ) { 1734 $service_name = $options[ $service_id ]; 1735 } else { 1736 $service_name = __( 'New Script Snippet', 'termageddon-usercentrics' ); 1737 } 1738 1739 // Count script tags 1740 $script_content = isset( $snippet['script'] ) ? $snippet['script'] : ''; 1741 $script_count = preg_match_all( '/<script/i', $script_content ); 1742 ?> 1743 <div class="termageddon-script-snippet-row" data-index="<?php echo esc_attr( $index ); ?>"> 1744 <div class="termageddon-snippet-accordion-item" style="margin-bottom: 15px; border: 1px solid #ddd; background: #f9f9f9;"> 1745 <div class="termageddon-snippet-accordion-header" style="display: flex; justify-content: space-between; align-items: center; padding: 15px; cursor: pointer; user-select: none;"> 1746 <div style="display: flex; align-items: center; gap: 10px; flex: 1;"> 1747 <span class="termageddon-snippet-service-name"><?php echo esc_html( $service_name ); ?></span> 1748 <span class="termageddon-snippet-badge<?php echo $script_count > 0 ? ' termageddon-snippet-badge-success' : ''; ?>"><?php echo esc_html( $script_count . ' script' . ( $script_count !== 1 ? 's' : '' ) . ' identified' ); ?></span> 1749 </div> 1750 <div style="display: flex; align-items: center; gap: 10px;"> 1751 <span class="termageddon-snippet-caret dashicons dashicons-arrow-down-alt2" style="transition: transform 0.3s ease;"></span> 1752 <button type="button" class="button termageddon-remove-snippet" style="color: #dc3232; margin: 0;"><?php esc_html_e( 'Remove', 'termageddon-usercentrics' ); ?></button> 1753 </div> 1754 </div> 1755 <div class="termageddon-snippet-accordion-content collapsed" style="padding: 0 15px 15px 15px; display: none;"> 1756 <div style="margin-top: 15px; margin-bottom: 10px;"> 1757 <label for="termageddon_usercentrics_script_snippets_<?php echo esc_attr( $index ); ?>_service_id"> 1758 <strong><?php esc_html_e( 'Service', 'termageddon-usercentrics' ); ?></strong> 1759 </label> 1760 <select 1761 name="termageddon_usercentrics_script_snippets[<?php echo esc_attr( $index ); ?>][service_id]" 1762 id="termageddon_usercentrics_script_snippets_<?php echo esc_attr( $index ); ?>_service_id" 1763 class="termageddon-singleselect" 1764 style="width: 100%;" 1765 > 1766 <option value=""><?php esc_html_e( 'Select a service...', 'termageddon-usercentrics' ); ?></option> 1767 <?php foreach ( $options as $key => $label ) : ?> 1768 <option value="<?php echo esc_attr( $key ); ?>" <?php selected( $service_id, $key ); ?>> 1769 <?php echo esc_html( $label ); ?> 1770 </option> 1771 <?php endforeach; ?> 1772 </select> 1773 </div> 1774 <div> 1775 <label for="termageddon_usercentrics_script_snippets_<?php echo esc_attr( $index ); ?>_script"> 1776 <strong><?php esc_html_e( 'Script Code', 'termageddon-usercentrics' ); ?></strong> 1777 </label> 1778 <textarea 1779 class="termageddon-embed-code termageddon-script-textarea" 1780 name="termageddon_usercentrics_script_snippets[<?php echo esc_attr( $index ); ?>][script]" 1781 id="termageddon_usercentrics_script_snippets_<?php echo esc_attr( $index ); ?>_script" 1782 rows="7" 1783 style="width: 100%;" 1784 placeholder="Both external and inline scripts are supported. External Script: <script src="https://example.com/script.js"></script> Inline script: <script>console.log("Loaded")</script>" 1785 ><?php echo esc_textarea( $script_content ); ?></textarea> 1786 </div> 1787 </div> 1788 </div> 1789 </div> 1790 <?php endforeach; ?> 1791 <?php endif; ?> 1792 </div> 1793 <button type="button" class="button termageddon-add-snippet" style="margin-top: 10px;"><?php esc_html_e( '+ Add Script Snippet', 'termageddon-usercentrics' ); ?></button> 1794 <?php 1795 // Generate options HTML for template 1796 $options_html = '<option value="">' . esc_html__( 'Select a service...', 'termageddon-usercentrics' ) . '</option>'; 1797 foreach ( $options as $key => $label ) { 1798 $options_html .= '<option value="' . esc_attr( $key ) . '">' . esc_html( $label ) . '</option>'; 1799 } 1800 ?> 1801 <script type="text/template" id="termageddon-script-snippet-template" data-options="<?php echo esc_attr( $options_html ); ?>"> 1802 <div class="termageddon-script-snippet-row" data-index="{{INDEX}}"> 1803 <div class="termageddon-snippet-accordion-item" style="margin-bottom: 15px; border: 1px solid #ddd; background: #f9f9f9;"> 1804 <div class="termageddon-snippet-accordion-header" style="display: flex; justify-content: space-between; align-items: center; padding: 15px; cursor: pointer; user-select: none;"> 1805 <div style="display: flex; align-items: center; gap: 10px; flex: 1;"> 1806 <span class="termageddon-snippet-service-name"><?php echo esc_html__( 'New Script Snippet', 'termageddon-usercentrics' ); ?></span> 1807 <span class="termageddon-snippet-badge">0 scripts identified</span> 1808 </div> 1809 <div style="display: flex; align-items: center; gap: 10px;"> 1810 <span class="termageddon-snippet-caret dashicons dashicons-arrow-down-alt2" style="transition: transform 0.3s ease;"></span> 1811 <button type="button" class="button termageddon-remove-snippet" style="color: #dc3232; margin: 0;"><?php echo esc_html__( 'Remove', 'termageddon-usercentrics' ); ?></button> 1812 </div> 1813 </div> 1814 <div class="termageddon-snippet-accordion-content" style="padding: 0 15px 15px 15px;"> 1815 <div style="margin-top: 15px; margin-bottom: 10px;"> 1816 <label for="termageddon_usercentrics_script_snippets_{{INDEX}}_service_id"> 1817 <strong><?php echo esc_html__( 'Service', 'termageddon-usercentrics' ); ?></strong> 1818 </label> 1819 <select 1820 name="termageddon_usercentrics_script_snippets[{{INDEX}}][service_id]" 1821 id="termageddon_usercentrics_script_snippets_{{INDEX}}_service_id" 1822 class="termageddon-singleselect" 1823 style="width: 100%;" 1824 > 1825 <?php echo $options_html; ?> 1826 </select> 1827 </div> 1828 <div> 1829 <label for="termageddon_usercentrics_script_snippets_{{INDEX}}_script"> 1830 <strong><?php echo esc_html__( 'Script Code', 'termageddon-usercentrics' ); ?></strong> 1831 </label> 1832 <textarea 1833 class="termageddon-embed-code termageddon-script-textarea" 1834 name="termageddon_usercentrics_script_snippets[{{INDEX}}][script]" 1835 id="termageddon_usercentrics_script_snippets_{{INDEX}}_script" 1836 rows="7" 1837 style="width: 100%;" 1838 placeholder="Both external and inline scripts are supported. External Script: <script src="https://example.com/script.js"></script> Inline script: <script>console.log("Loaded")</script>" 1839 ></textarea> 1840 </div> 1841 </div> 1842 </div> 1843 </div> 1844 </script> 1845 <?php 1846 } 1847 1508 1848 } -
termageddon-usercentrics/tags/1.9.0/admin/css/termageddon-usercentrics-admin.css
r3326335 r3439658 6 6 textarea.termageddon-embed-code { 7 7 width: 100%; 8 height: 250px;8 height: 150px; 9 9 } 10 10 11 11 /* Section Settings */ 12 12 .tu-toggle-section, 13 .tu-section-settings { 13 .tu-section-settings, 14 .tu-settings-section { 14 15 margin-top: 2rem; 15 16 } … … 36 37 pointer-events: none; 37 38 } 38 .tu-toggle-section .form-table, 39 .tu-tab-integrations .tu-settings-section .form-table { 39 .tu-toggle-section .form-table { 40 40 margin-left: 2rem; 41 41 } … … 52 52 53 53 /* Settings Section */ 54 #termageddon-script-snippets-container, 55 .tu-settings-section { 56 padding-left: 2rem; 57 padding-right: 2rem; 58 } 59 60 .tu-settings-tab.tu-tab-config .tu-settings-section { 61 padding-left: 0; 62 padding-right: 0; 63 } 64 54 65 .tu-settings-section .form-table th { 55 66 width: 300px; … … 251 262 margin-bottom: 8px; 252 263 } 264 265 /* Full-width settings field (for script snippets) */ 266 .form-table tr.tu-table-full-width th { 267 display: none; 268 } 269 270 .form-table tr.tu-table-full-width td { 271 display: block; 272 padding: 0; 273 } 274 275 /* Script Snippets Accordion */ 276 .termageddon-snippet-accordion-item { 277 border-radius: 4px; 278 overflow: hidden; 279 } 280 281 .termageddon-snippet-accordion-header { 282 background: #fff; 283 border-bottom: 1px solid #ddd; 284 transition: background-color 0.2s ease; 285 } 286 287 .termageddon-snippet-accordion-header:hover { 288 background: #f5f5f5; 289 } 290 291 .termageddon-snippet-service-name { 292 font-weight: 600; 293 font-size: 14px; 294 color: #23282d; 295 } 296 297 .termageddon-snippet-badge { 298 display: inline-flex; 299 align-items: center; 300 justify-content: center; 301 min-width: 24px; 302 height: 24px; 303 padding: 0 8px; 304 background-color: #ccc; 305 color: #fff; 306 border-radius: 12px; 307 font-size: 12px; 308 font-weight: 600; 309 line-height: 1; 310 white-space: nowrap; 311 } 312 313 .termageddon-snippet-badge-success { 314 background-color: #00a32a !important; 315 } 316 317 .termageddon-snippet-caret { 318 color: #646970; 319 font-size: 20px; 320 width: 20px; 321 height: 20px; 322 } 323 324 .termageddon-snippet-accordion-content { 325 background: #f9f9f9; 326 transition: all 0.3s ease; 327 } 328 329 .termageddon-snippet-accordion-content.collapsed { 330 display: none !important; 331 } 332 333 .termageddon-snippet-accordion-content:not(.collapsed) { 334 display: block !important; 335 } -
termageddon-usercentrics/tags/1.9.0/admin/css/termageddon-usercentrics-admin.min.css
r3266555 r3439658 1 textarea.termageddon-embed-code{width:100%;height: 250px}.tu-section-settings,.tu-toggle-section{margin-top:2rem}.tu-settings-tab.tu-tab-integrations .tu-section{display:none}.tu-toggle-section .tu-section-title{font-size:125%;font-weight:800}.tu-toggle-section .tu-section-title-helper{padding:1rem;color:#6c6c6c;font-style:italic}.tu-toggle-section input[readonly]{opacity:50%;pointer-events:none}.tu-toggle-section .form-table{margin-left:2rem}.tu-toggle-section .form-table td,.tu-toggle-section .form-table th{padding:.5rem 0}.tu-toggle-section .form-table th{width:300px}.tu-toggle-section.slim-section .form-table th{width:125px}.tu-settings-section .form-table th{width:300px}.tu-section-hidden{display:none}.tu-label-success{background-color:#3db44c;color:#fff;padding:3px 5px;border-radius:5px;font-size:60%}.tu-label-info{background-color:#019ed5;color:#fff;padding:3px 5px;border-radius:5px;font-size:60%}.tu-label-warning{background-color:orange;color:#fff;padding:3px 5px;border-radius:5px;font-size:60%}input[type=checkbox].wppd-ui-toggle{-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-tap-highlight-color:transparent;width:auto;height:auto;vertical-align:middle;position:relative;border:0;outline:0;cursor:pointer;margin:0 4px;background:0 0;box-shadow:none}input[type=checkbox].wppd-ui-toggle:focus{box-shadow:none}input[type=checkbox].wppd-ui-toggle:after{content:"";font-size:6px;font-weight:400;line-height:18px;text-indent:-14px;color:#fff;width:36px;height:18px;display:inline-block;background-color:#a7aaad;border-radius:72px;box-shadow:0 0 12px rgb(0 0 0 / 15%) inset}input[type=checkbox].wppd-ui-toggle:before{content:"";width:14px;height:14px;display:block;position:absolute;top:2px;left:2px;margin:0;border-radius:50%;background-color:#fff}input[type=checkbox].wppd-ui-toggle:checked:before{left:20px;margin:0;background-color:#fff}input[type=checkbox].wppd-ui-toggle,input[type=checkbox].wppd-ui-toggle:after,input[type=checkbox].wppd-ui-toggle:before,input[type=checkbox].wppd-ui-toggle:checked:after,input[type=checkbox].wppd-ui-toggle:checked:before{transition:ease .15s}input[type=checkbox].wppd-ui-toggle:checked:after{content:"ON";background-color:#2271b1}input[type=checkbox].wppd-ui-toggle.label-hidden:after{width:48px}input[type=checkbox].wppd-ui-toggle.label-hidden:checked:before{left:32px}input[type=checkbox].wppd-ui-toggle.label-hidden:checked:after{content:"HIDDEN"}input[type=checkbox].wppd-ui-toggle.label-enabled:after{font-size:8px;width:60px;content:"DISABLED";text-indent:15px}input[type=checkbox].wppd-ui-toggle.label-enabled:checked:before{left:44px}input[type=checkbox].wppd-ui-toggle.label-enabled:checked:after{background-color:#1ed14b;content:"ENABLED";text-indent:-14px}.notice-inline{border-top:1px solid #c3c4c7;border-bottom:1px solid #c3c4c7;border-right:1px solid #c3c4c7;border-left-width:4px;border-left-style:solid;background:#fff;box-shadow:0 1px 1px rgba(0,0,0,.04);margin:5px 15px 2px;padding:1px 12px}.tu-settings-section label em{font-size:12px;font-weight:400}.tu-alert-error{color:#d63638;background:#fcf0f1;padding:10px;border-left:4px solid #d63638;margin:10px 0}.tu-alert-warning{color:#856404;background:#fff3cd;padding:10px;border-left:4px solid #ffc107;margin:10px 0}.tu-alert-success{color:#00a32a;background:#edfaef;padding:10px;border-left:4px solid #00a32a;margin:10px 0}.button-danger{background:#d63638!important;border-color:#d63638!important;color:#fff!important}.button-danger:focus,.button-danger:hover{background:#b32d2e!important;border-color:#b32d2e!important;color:#fff!important}.button-warning{background:#ffc107!important;border-color:#ffc107!important;color:#333!important;font-weight:700}.button-warning:focus,.button-warning:hover{background:#e0a800!important;border-color:#e0a800!important;color:#000!important}textarea.select2-search__field{margin-bottom:8px}1 textarea.termageddon-embed-code{width:100%;height:150px}.tu-section-settings,.tu-settings-section,.tu-toggle-section{margin-top:2rem}.tu-settings-tab.tu-tab-integrations .tu-section{display:none}.tu-toggle-section .tu-section-title{font-size:125%;font-weight:800}.tu-toggle-section .tu-section-title-helper{padding:1rem;color:#6c6c6c;font-style:italic}.tu-toggle-section input[readonly]{opacity:50%;pointer-events:none}.tu-toggle-section .form-table{margin-left:2rem}.tu-toggle-section .form-table td,.tu-toggle-section .form-table th{padding:.5rem 0}.tu-toggle-section .form-table th{width:300px}.tu-toggle-section.slim-section .form-table th{width:125px}#termageddon-script-snippets-container,.tu-settings-section{padding-left:2rem;padding-right:2rem}.tu-settings-tab.tu-tab-config .tu-settings-section{padding-left:0;padding-right:0}.tu-settings-section .form-table th{width:300px}.tu-tab-integrations .tu-settings-section .form-table th{width:500px}.tu-section-hidden{display:none}.tu-label-success{background-color:#3db44c;color:#fff;padding:3px 5px;border-radius:5px;font-size:60%}.tu-label-info{background-color:#019ed5;color:#fff;padding:3px 5px;border-radius:5px;font-size:60%}.tu-label-warning{background-color:orange;color:#fff;padding:3px 5px;border-radius:5px;font-size:60%}input[type=checkbox].wppd-ui-toggle{-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-tap-highlight-color:transparent;width:auto;height:auto;vertical-align:middle;position:relative;border:0;outline:0;cursor:pointer;margin:0 4px;background:0 0;box-shadow:none}input[type=checkbox].wppd-ui-toggle:focus{box-shadow:none}input[type=checkbox].wppd-ui-toggle:after{content:"";font-size:6px;font-weight:400;line-height:18px;text-indent:-14px;color:#fff;width:36px;height:18px;display:inline-block;background-color:#a7aaad;border-radius:72px;box-shadow:0 0 12px rgb(0 0 0 / 15%) inset}input[type=checkbox].wppd-ui-toggle:before{content:"";width:14px;height:14px;display:block;position:absolute;top:2px;left:2px;margin:0;border-radius:50%;background-color:#fff}input[type=checkbox].wppd-ui-toggle:checked:before{left:20px;margin:0;background-color:#fff}input[type=checkbox].wppd-ui-toggle,input[type=checkbox].wppd-ui-toggle:after,input[type=checkbox].wppd-ui-toggle:before,input[type=checkbox].wppd-ui-toggle:checked:after,input[type=checkbox].wppd-ui-toggle:checked:before{transition:ease .15s}input[type=checkbox].wppd-ui-toggle:checked:after{content:"ON";background-color:#2271b1}input[type=checkbox].wppd-ui-toggle.label-hidden:after{width:48px}input[type=checkbox].wppd-ui-toggle.label-hidden:checked:before{left:32px}input[type=checkbox].wppd-ui-toggle.label-hidden:checked:after{content:"HIDDEN"}input[type=checkbox].wppd-ui-toggle.label-enabled:after{font-size:8px;width:60px;content:"DISABLED";text-indent:15px}input[type=checkbox].wppd-ui-toggle.label-enabled:checked:before{left:44px}input[type=checkbox].wppd-ui-toggle.label-enabled:checked:after{background-color:#1ed14b;content:"ENABLED";text-indent:-14px}.notice-inline{border-top:1px solid #c3c4c7;border-bottom:1px solid #c3c4c7;border-right:1px solid #c3c4c7;border-left-width:4px;border-left-style:solid;background:#fff;box-shadow:0 1px 1px rgba(0,0,0,.04);margin:5px 15px 2px;padding:1px 12px}.tu-settings-section label em{font-size:12px;font-weight:400}.tu-alert-error{color:#d63638;background:#fcf0f1;padding:10px;border-left:4px solid #d63638;margin:10px 0}.tu-alert-warning{color:#856404;background:#fff3cd;padding:10px;border-left:4px solid #ffc107;margin:10px 0}.tu-alert-success{color:#00a32a;background:#edfaef;padding:10px;border-left:4px solid #00a32a;margin:10px 0}.button-danger{background:#d63638!important;border-color:#d63638!important;color:#fff!important}.button-danger:focus,.button-danger:hover{background:#b32d2e!important;border-color:#b32d2e!important;color:#fff!important}.button-warning{background:#ffc107!important;border-color:#ffc107!important;color:#333!important;font-weight:700}.button-warning:focus,.button-warning:hover{background:#e0a800!important;border-color:#e0a800!important;color:#000!important}textarea.select2-search__field{margin-bottom:8px}.form-table tr.tu-table-full-width th{display:none}.form-table tr.tu-table-full-width td{display:block;padding:0}.termageddon-snippet-accordion-item{border-radius:4px;overflow:hidden}.termageddon-snippet-accordion-header{background:#fff;border-bottom:1px solid #ddd;transition:background-color .2s ease}.termageddon-snippet-accordion-header:hover{background:#f5f5f5}.termageddon-snippet-service-name{font-weight:600;font-size:14px;color:#23282d}.termageddon-snippet-badge{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:24px;padding:0 8px;background-color:#ccc;color:#fff;border-radius:12px;font-size:12px;font-weight:600;line-height:1;white-space:nowrap}.termageddon-snippet-badge-success{background-color:#00a32a!important}.termageddon-snippet-caret{color:#646970;font-size:20px;width:20px;height:20px}.termageddon-snippet-accordion-content{background:#f9f9f9;transition:all .3s ease}.termageddon-snippet-accordion-content.collapsed{display:none!important}.termageddon-snippet-accordion-content:not(.collapsed){display:block!important} -
termageddon-usercentrics/tags/1.9.0/admin/js/termageddon-usercentrics-admin.js
r3284346 r3439658 141 141 "" 142 142 ) 143 .replace( 144 /<script>uc.setCustomTranslations.*<\/script>/g, 145 "" 146 ) 143 .replace(/<script>uc.setCustomTranslations.*<\/script>/g, "") 147 144 .trim(); 148 145 … … 163 160 }); 164 161 } 162 163 // ============================================ // 164 // ======== Script Snippets Repeater ========== // 165 // ============================================ // 166 167 // Constants 168 const SNIPPET_CONSTANTS = { 169 ANIMATION_DURATION: 300, 170 CARET_ROTATION: { 171 COLLAPSED: "rotate(0deg)", 172 EXPANDED: "rotate(180deg)", 173 }, 174 SELECT2_OPTIONS: { 175 width: "100%", 176 placeholder: "Select a service...", 177 allowClear: true, 178 }, 179 DEFAULT_SERVICE_TEXT: "New Script Snippet", 180 }; 181 182 const snippetsContainer = $("#termageddon-script-snippets-container"); 183 const addSnippetButton = $(".termageddon-add-snippet"); 184 const template = $("#termageddon-script-snippet-template"); 185 186 /** 187 * Count script tags in textarea 188 * @param {HTMLElement} textarea - The textarea element 189 * @returns {number} Number of script tags found 190 */ 191 function countScriptTags(textarea) { 192 const content = $(textarea).val() || ""; 193 const matches = content.match(/<script/gi); 194 return matches ? matches.length : 0; 195 } 196 197 /** 198 * Update badge with script count 199 * @param {jQuery} $row - The row element 200 */ 201 function updateScriptBadge($row) { 202 const $textarea = $row.find(".termageddon-script-textarea"); 203 const $badge = $row.find(".termageddon-snippet-badge"); 204 const count = countScriptTags($textarea[0]); 205 206 if (count > 0) { 207 $badge.text(`${count} script${count !== 1 ? "s" : ""} identified`); 208 $badge.addClass("termageddon-snippet-badge-success"); 209 } else { 210 $badge.text("0 scripts identified"); 211 $badge.removeClass("termageddon-snippet-badge-success"); 212 } 213 } 214 215 /** 216 * Update service name in header 217 * @param {jQuery} $row - The row element 218 */ 219 function updateServiceName($row) { 220 const $select = $row.find(".termageddon-singleselect"); 221 const $serviceName = $row.find(".termageddon-snippet-service-name"); 222 const selectedText = $select.find("option:selected").text(); 223 224 $serviceName.text( 225 $select.val() && selectedText 226 ? selectedText 227 : SNIPPET_CONSTANTS.DEFAULT_SERVICE_TEXT 228 ); 229 } 230 231 /** 232 * Toggle accordion open/closed state 233 * @param {jQuery} $header - The accordion header element 234 */ 235 function toggleAccordion($header) { 236 const $content = $header.siblings( 237 ".termageddon-snippet-accordion-content" 238 ); 239 const $caret = $header.find(".termageddon-snippet-caret"); 240 241 if ($content.is(":visible")) { 242 // Collapsing 243 $content.slideUp(SNIPPET_CONSTANTS.ANIMATION_DURATION, function () { 244 $(this).addClass("collapsed"); 245 }); 246 $caret.css("transform", SNIPPET_CONSTANTS.CARET_ROTATION.COLLAPSED); 247 } else { 248 // Expanding 249 $content 250 .removeClass("collapsed") 251 .slideDown(SNIPPET_CONSTANTS.ANIMATION_DURATION); 252 $caret.css("transform", SNIPPET_CONSTANTS.CARET_ROTATION.EXPANDED); 253 } 254 } 255 256 /** 257 * Set accordion state without animation 258 * @param {jQuery} $content - The accordion content element 259 * @param {jQuery} $caret - The caret icon element 260 * @param {boolean} isCollapsed - Whether the accordion should be collapsed 261 */ 262 function setAccordionState($content, $caret, isCollapsed) { 263 if (isCollapsed) { 264 $content.hide(); 265 $caret.css("transform", SNIPPET_CONSTANTS.CARET_ROTATION.COLLAPSED); 266 } else { 267 $content.show(); 268 $caret.css("transform", SNIPPET_CONSTANTS.CARET_ROTATION.EXPANDED); 269 } 270 } 271 272 /** 273 * Initialize accordion for a row 274 * @param {jQuery} $row - The row element 275 */ 276 function initAccordionRow($row) { 277 // Update badge and service name on load 278 updateScriptBadge($row); 279 updateServiceName($row); 280 281 // Set initial caret rotation based on collapsed state 282 const $content = $row.find(".termageddon-snippet-accordion-content"); 283 const $caret = $row.find(".termageddon-snippet-caret"); 284 setAccordionState($content, $caret, $content.hasClass("collapsed")); 285 } 286 287 /** 288 * Initialize Select2 for single-select fields 289 * @param {jQuery} $element - Optional specific element to initialize, or all if not provided 290 */ 291 function initSelect2($element) { 292 const $targets = $element || $(".termageddon-singleselect"); 293 294 $targets.each(function () { 295 if (!$(this).hasClass("select2-hidden-accessible")) { 296 $(this).select2(SNIPPET_CONSTANTS.SELECT2_OPTIONS); 297 } 298 }); 299 } 300 301 // Initialize on page load 302 if (snippetsContainer.length) { 303 initSelect2(); 304 snippetsContainer 305 .find(".termageddon-script-snippet-row") 306 .each(function () { 307 initAccordionRow($(this)); 308 }); 309 } 310 311 // Accordion header click handler 312 $(document).on( 313 "click.tu", 314 ".termageddon-snippet-accordion-header", 315 function (e) { 316 // Don't toggle if clicking on remove button 317 if ($(e.target).closest(".termageddon-remove-snippet").length) { 318 return; 319 } 320 toggleAccordion($(this)); 321 } 322 ); 323 324 // Update service name when dropdown changes (handles both regular and Select2) 325 $(document).on( 326 "change.tu select2:select.tu select2:clear.tu", 327 ".termageddon-singleselect", 328 function () { 329 const $row = $(this).closest(".termageddon-script-snippet-row"); 330 updateServiceName($row); 331 } 332 ); 333 334 // Update badge when textarea changes 335 $(document).on( 336 "input.tu change.tu", 337 ".termageddon-script-textarea", 338 function () { 339 const $row = $(this).closest(".termageddon-script-snippet-row"); 340 updateScriptBadge($row); 341 } 342 ); 343 344 /** 345 * Get the next available index for a new snippet 346 * @returns {number} The next index to use 347 */ 348 function getNextSnippetIndex() { 349 let maxIndex = -1; 350 snippetsContainer 351 .find(".termageddon-script-snippet-row") 352 .each(function () { 353 const index = parseInt($(this).attr("data-index"), 10); 354 if (!isNaN(index) && index > maxIndex) { 355 maxIndex = index; 356 } 357 }); 358 return maxIndex + 1; 359 } 360 361 // Add new snippet 362 if (addSnippetButton.length) { 363 addSnippetButton.off("click.tu").on("click.tu", function (e) { 364 e.preventDefault(); 365 366 const newIndex = getNextSnippetIndex(); 367 368 // Get template HTML 369 let templateHtml = template.html(); 370 if (!templateHtml) { 371 console.error("Template not found"); 372 return; 373 } 374 375 // Replace template placeholders 376 templateHtml = templateHtml 377 .replace(/\{\{INDEX\}\}/g, newIndex) 378 .replace(/\{\{INDEX_PLUS_ONE\}\}/g, newIndex + 1); 379 380 // Append new row 381 const $newRow = $(templateHtml); 382 snippetsContainer.append($newRow); 383 384 // Initialize Select2 for the new select field 385 const $newSelect = $newRow.find(".termageddon-singleselect"); 386 initSelect2($newSelect); 387 388 // Update badge and service name 389 updateScriptBadge($newRow); 390 updateServiceName($newRow); 391 392 // Set to expanded state (no collapsed class, ensure visible) 393 const $content = $newRow.find( 394 ".termageddon-snippet-accordion-content" 395 ); 396 const $caret = $newRow.find(".termageddon-snippet-caret"); 397 setAccordionState($content, $caret, false); 398 }); 399 } 400 401 /** 402 * Update an attribute by replacing old index with new index 403 * @param {jQuery} $elem - The element to update 404 * @param {string} attrName - The attribute name (id, name, for) 405 * @param {number} oldIndex - The old index to replace 406 * @param {number} newIndex - The new index to use 407 * @param {string} pattern - The pattern to match ('_' for ids, '[' for names) 408 */ 409 function updateIndexInAttribute( 410 $elem, 411 attrName, 412 oldIndex, 413 newIndex, 414 pattern 415 ) { 416 const attrValue = $elem.attr(attrName); 417 if (!attrValue) return; 418 419 let searchStr, replaceStr; 420 if (pattern === "_") { 421 searchStr = `_${oldIndex}_`; 422 replaceStr = `_${newIndex}_`; 423 } else if (pattern === "[") { 424 searchStr = `[${oldIndex}]`; 425 replaceStr = `[${newIndex}]`; 426 } 427 428 if (attrValue.includes(searchStr)) { 429 $elem.attr(attrName, attrValue.replace(searchStr, replaceStr)); 430 return attrValue; // Return old value for label updates 431 } 432 return null; 433 } 434 435 /** 436 * Re-index all snippet rows after removal 437 */ 438 function reindexSnippets() { 439 snippetsContainer 440 .find(".termageddon-script-snippet-row") 441 .each(function (index) { 442 const $currentRow = $(this); 443 const oldIndex = parseInt($currentRow.attr("data-index"), 10); 444 445 if (isNaN(oldIndex) || oldIndex === index) { 446 return; // Skip if already correct 447 } 448 449 // Update data-index 450 $currentRow.attr("data-index", index); 451 452 // Update IDs, names, and labels 453 $currentRow.find("select, textarea, label").each(function () { 454 const $elem = $(this); 455 456 // Update ID and corresponding labels 457 const oldId = updateIndexInAttribute( 458 $elem, 459 "id", 460 oldIndex, 461 index, 462 "_" 463 ); 464 if (oldId) { 465 const $label = $currentRow.find( 466 `label[for="${oldId}"]` 467 ); 468 if ($label.length) { 469 const newId = $elem.attr("id"); 470 $label.attr("for", newId); 471 } 472 } 473 474 // Update name attribute 475 updateIndexInAttribute($elem, "name", oldIndex, index, "["); 476 477 // Update for attribute 478 updateIndexInAttribute($elem, "for", oldIndex, index, "_"); 479 }); 480 481 // Re-initialize accordion after re-indexing 482 initAccordionRow($currentRow); 483 }); 484 } 485 486 // Remove snippet 487 $(document).on("click.tu", ".termageddon-remove-snippet", function (e) { 488 e.preventDefault(); 489 e.stopPropagation(); // Prevent accordion from toggling 490 491 if ( 492 confirm( 493 "Are you sure you want to remove this script snippet? This action cannot be undone." 494 ) 495 ) { 496 const $row = $(this).closest(".termageddon-script-snippet-row"); 497 $row.remove(); 498 reindexSnippets(); 499 } 500 }); 165 501 }); -
termageddon-usercentrics/tags/1.9.0/admin/js/termageddon-usercentrics-admin.min.js
r3284346 r3439658 1 jQuery((function($){let animationSpeed=0,initialLoad=!1,loggedIn=$(".tu-tab-settings .tu-toggle-section input#termageddon_usercentrics_disable_logged_in"),editor=$(".tu-tab-settings .tu-toggle-section input#termageddon_usercentrics_disable_editor"),admin=$(".tu-tab-settings .tu-toggle-section input#termageddon_usercentrics_disable_admin");const check=(elem,checked=!0)=>{console.log(elem,checked),elem.prop("checked",checked).attr("readonly",checked).trigger("change")};1===loggedIn.length&&loggedIn.off("change.tu").on("change.tu",(function(){($(this).is(":checked")||initialLoad)&&(check(editor,$(this).is(":checked")),check(admin,$(this).is(":checked")))})).trigger("change");let geolocationToggle=$("input#termageddon_usercentrics_toggle_geolocation"),policyToggles=$(".tu-tab-geolocation .tu-toggle-section input");1===geolocationToggle.length&&(geolocationToggle.off("change.tu").on("change.tu",(function(){$(this).is(":checked")?$(".tu-tab-geolocation .tu-section-settings > div").slideDown(animationSpeed):$(".tu-tab-geolocation .tu-section-settings > div").slideUp(animationSpeed)})).trigger("change"),policyToggles.off("change.tu").on("change.tu",(function(){policyToggles.is(":checked")?jQuery("#no-geolocation-locations-selected,#no-geolocation-locations-selected-top").slideUp(animationSpeed):jQuery("#no-geolocation-locations-selected").slideDown(animationSpeed)})).trigger("change")),animationSpeed=300,initialLoad=!0;let migrationButton=$("#run_settings_migration");1===migrationButton.length&&migrationButton.off("click.tu").on("click.tu",(function(){const embedCode=document.querySelector("#termageddon_usercentrics_embed_code").value,settingsIdMatch=embedCode.match(/data-settings-id="([^"]+)"/);if(!settingsIdMatch||!settingsIdMatch[1])return void alert("Unable to find settings ID in embed code. Please ensure your embed code section contains a data-settings-id attribute. Please contact our support team if would like assistance.");const settingsId=settingsIdMatch[1];document.querySelector("#termageddon_usercentrics_settings_id").value=settingsId,document.querySelector("#termageddon_usercentrics_embed_code").value=embedCode.replace('<link rel="preconnect" href="https://plugins.trac.wordpress.org//privacy-proxy.usercentrics.eu">',"").replace('<link rel="preload" href="https://plugins.trac.wordpress.org//privacy-proxy.usercentrics.eu/latest/uc-block.bundle.js" as="script">',"").replace('<script type="application/javascript" src="https://privacy-proxy.usercentrics.eu/latest/uc-block.bundle.js"><\/script>',"").replace(/<script.*id="usercentrics-cmp".*async>.*<\/script>/g,"").replace(/<script>uc.setCustomTranslations.*<\/script>/g,"").trim();const migrationMessage=$(".migration-message");migrationMessage.removeClass("tu-alert-error").addClass("tu-alert-success"),migrationMessage.find("strong").text("Conversion Complete"),migrationMessage.find("p.alert-description").html("The embed code has been converted to a settings ID. All custom scripts outside of the original embed code have been maintained.<br/></br>\n\t\t\t\t\t<strong><em>The changes have been submitted.</em></strong>"),$(".tab-content form input.button").click()})) }));1 jQuery((function($){let animationSpeed=0,initialLoad=!1,loggedIn=$(".tu-tab-settings .tu-toggle-section input#termageddon_usercentrics_disable_logged_in"),editor=$(".tu-tab-settings .tu-toggle-section input#termageddon_usercentrics_disable_editor"),admin=$(".tu-tab-settings .tu-toggle-section input#termageddon_usercentrics_disable_admin");const check=(elem,checked=!0)=>{console.log(elem,checked),elem.prop("checked",checked).attr("readonly",checked).trigger("change")};1===loggedIn.length&&loggedIn.off("change.tu").on("change.tu",(function(){($(this).is(":checked")||initialLoad)&&(check(editor,$(this).is(":checked")),check(admin,$(this).is(":checked")))})).trigger("change");let geolocationToggle=$("input#termageddon_usercentrics_toggle_geolocation"),policyToggles=$(".tu-tab-geolocation .tu-toggle-section input");1===geolocationToggle.length&&(geolocationToggle.off("change.tu").on("change.tu",(function(){$(this).is(":checked")?$(".tu-tab-geolocation .tu-section-settings > div").slideDown(animationSpeed):$(".tu-tab-geolocation .tu-section-settings > div").slideUp(animationSpeed)})).trigger("change"),policyToggles.off("change.tu").on("change.tu",(function(){policyToggles.is(":checked")?jQuery("#no-geolocation-locations-selected,#no-geolocation-locations-selected-top").slideUp(animationSpeed):jQuery("#no-geolocation-locations-selected").slideDown(animationSpeed)})).trigger("change")),animationSpeed=300,initialLoad=!0;let migrationButton=$("#run_settings_migration");1===migrationButton.length&&migrationButton.off("click.tu").on("click.tu",(function(){const embedCode=document.querySelector("#termageddon_usercentrics_embed_code").value,settingsIdMatch=embedCode.match(/data-settings-id="([^"]+)"/);if(!settingsIdMatch||!settingsIdMatch[1])return void alert("Unable to find settings ID in embed code. Please ensure your embed code section contains a data-settings-id attribute. Please contact our support team if would like assistance.");const settingsId=settingsIdMatch[1];document.querySelector("#termageddon_usercentrics_settings_id").value=settingsId,document.querySelector("#termageddon_usercentrics_embed_code").value=embedCode.replace('<link rel="preconnect" href="https://plugins.trac.wordpress.org//privacy-proxy.usercentrics.eu">',"").replace('<link rel="preload" href="https://plugins.trac.wordpress.org//privacy-proxy.usercentrics.eu/latest/uc-block.bundle.js" as="script">',"").replace('<script type="application/javascript" src="https://privacy-proxy.usercentrics.eu/latest/uc-block.bundle.js"><\/script>',"").replace(/<script.*id="usercentrics-cmp".*async>.*<\/script>/g,"").replace(/<script>uc.setCustomTranslations.*<\/script>/g,"").trim();const migrationMessage=$(".migration-message");migrationMessage.removeClass("tu-alert-error").addClass("tu-alert-success"),migrationMessage.find("strong").text("Conversion Complete"),migrationMessage.find("p.alert-description").html("The embed code has been converted to a settings ID. All custom scripts outside of the original embed code have been maintained.<br/></br>\n\t\t\t\t\t<strong><em>The changes have been submitted.</em></strong>"),$(".tab-content form input.button").click()}));const SNIPPET_CONSTANTS_ANIMATION_DURATION=300,SNIPPET_CONSTANTS_CARET_ROTATION={COLLAPSED:"rotate(0deg)",EXPANDED:"rotate(180deg)"},SNIPPET_CONSTANTS_SELECT2_OPTIONS={width:"100%",placeholder:"Select a service...",allowClear:!0},SNIPPET_CONSTANTS_DEFAULT_SERVICE_TEXT="New Script Snippet",snippetsContainer=$("#termageddon-script-snippets-container"),addSnippetButton=$(".termageddon-add-snippet"),template=$("#termageddon-script-snippet-template");function countScriptTags(textarea){const content=$(textarea).val()||"",matches=content.match(/<script/gi);return matches?matches.length:0}function updateScriptBadge($row){const $textarea=$row.find(".termageddon-script-textarea"),$badge=$row.find(".termageddon-snippet-badge"),count=countScriptTags($textarea[0]);count>0?($badge.text(`${count} script${1!==count?"s":""} identified`),$badge.addClass("termageddon-snippet-badge-success")):($badge.text("0 scripts identified"),$badge.removeClass("termageddon-snippet-badge-success"))}function updateServiceName($row){const $select=$row.find(".termageddon-singleselect"),$serviceName=$row.find(".termageddon-snippet-service-name"),selectedText=$select.find("option:selected").text();$serviceName.text($select.val()&&selectedText?selectedText:SNIPPET_CONSTANTS_DEFAULT_SERVICE_TEXT)}function toggleAccordion($header){const $content=$header.siblings(".termageddon-snippet-accordion-content"),$caret=$header.find(".termageddon-snippet-caret");$content.is(":visible")?($content.slideUp(SNIPPET_CONSTANTS_ANIMATION_DURATION,(function(){$(this).addClass("collapsed")})),$caret.css("transform",SNIPPET_CONSTANTS_CARET_ROTATION.COLLAPSED)):($content.removeClass("collapsed").slideDown(SNIPPET_CONSTANTS_ANIMATION_DURATION),$caret.css("transform",SNIPPET_CONSTANTS_CARET_ROTATION.EXPANDED))}function setAccordionState($content,$caret,isCollapsed){isCollapsed?($content.hide(),$caret.css("transform",SNIPPET_CONSTANTS_CARET_ROTATION.COLLAPSED)):($content.show(),$caret.css("transform",SNIPPET_CONSTANTS_CARET_ROTATION.EXPANDED))}function initAccordionRow($row){updateScriptBadge($row),updateServiceName($row);const $content=$row.find(".termageddon-snippet-accordion-content"),$caret=$row.find(".termageddon-snippet-caret");setAccordionState($content,$caret,$content.hasClass("collapsed"))}function initSelect2($element){const $targets=$element||$(".termageddon-singleselect");$targets.each((function(){$(this).hasClass("select2-hidden-accessible")||$(this).select2(SNIPPET_CONSTANTS_SELECT2_OPTIONS)}))}function getNextSnippetIndex(){let maxIndex=-1;return snippetsContainer.find(".termageddon-script-snippet-row").each((function(){const index=parseInt($(this).attr("data-index"),10);!isNaN(index)&&index>maxIndex&&(maxIndex=index)})),maxIndex+1}function updateIndexInAttribute($elem,attrName,oldIndex,newIndex,pattern){const attrValue=$elem.attr(attrName);if(!attrValue)return;let searchStr,replaceStr;return"_"===pattern?(searchStr=`_${oldIndex}_`,replaceStr=`_${newIndex}_`):"["===pattern&&(searchStr=`[${oldIndex}]`,replaceStr=`[${newIndex}]`),attrValue.includes(searchStr)?($elem.attr(attrName,attrValue.replace(searchStr,replaceStr)),attrValue):null}function reindexSnippets(){snippetsContainer.find(".termageddon-script-snippet-row").each((function(index){const $currentRow=$(this),oldIndex=parseInt($currentRow.attr("data-index"),10);isNaN(oldIndex)||oldIndex===index||($currentRow.attr("data-index",index),$currentRow.find("select, textarea, label").each((function(){const $elem=$(this),oldId=updateIndexInAttribute($elem,"id",oldIndex,index,"_");if(oldId){const $label=$currentRow.find(`label[for="${oldId}"]`);if($label.length){const newId=$elem.attr("id");$label.attr("for",newId)}}updateIndexInAttribute($elem,"name",oldIndex,index,"["),updateIndexInAttribute($elem,"for",oldIndex,index,"_")})),initAccordionRow($currentRow))}))}snippetsContainer.length&&(initSelect2(),snippetsContainer.find(".termageddon-script-snippet-row").each((function(){initAccordionRow($(this))}))),$(document).on("click.tu",".termageddon-snippet-accordion-header",(function(e){$(e.target).closest(".termageddon-remove-snippet").length||toggleAccordion($(this))})),$(document).on("change.tu select2:select.tu select2:clear.tu",".termageddon-singleselect",(function(){const $row=$(this).closest(".termageddon-script-snippet-row");updateServiceName($row)})),$(document).on("input.tu change.tu",".termageddon-script-textarea",(function(){const $row=$(this).closest(".termageddon-script-snippet-row");updateScriptBadge($row)})),addSnippetButton.length&&addSnippetButton.off("click.tu").on("click.tu",(function(e){e.preventDefault();const newIndex=getNextSnippetIndex();let templateHtml=template.html();if(!templateHtml)return void console.error("Template not found");templateHtml=templateHtml.replace(/\{\{INDEX\}\}/g,newIndex).replace(/\{\{INDEX_PLUS_ONE\}\}/g,newIndex+1);const $newRow=$(templateHtml);snippetsContainer.append($newRow);const $newSelect=$newRow.find(".termageddon-singleselect");initSelect2($newSelect),updateScriptBadge($newRow),updateServiceName($newRow);const $content=$newRow.find(".termageddon-snippet-accordion-content"),$caret=$newRow.find(".termageddon-snippet-caret");setAccordionState($content,$caret,!1)})),$(document).on("click.tu",".termageddon-remove-snippet",(function(e){if(e.preventDefault(),e.stopPropagation(),confirm("Are you sure you want to remove this script snippet? This action cannot be undone.")){const $row=$(this).closest(".termageddon-script-snippet-row");$row.remove(),reindexSnippets()}}))})); -
termageddon-usercentrics/tags/1.9.0/admin/usercentrics-providers.php
r3266555 r3439658 1 1 <?php 2 // List is populated from https://policies.termageddon.com/api/usercentrics/services 3 2 4 return [ 3 "ByOJZ54odjW7" => "Add This", 5 "wqpKH6gNO" => "1&1 Ionos", 6 "BpfGDA6d" => "1&1-WebAnalytics", 7 "BJCrgq4iuiWQ" => "1020. dba Placecast and Ericsson Emodo", 8 "NAFUNuBAX" => "123FormBuilder", 9 "ZYtfbi7Cy" => "152 Media", 10 "H1MvxcVjOoZ7" => "1plusX", 11 "-KqxGSaVx" => "1und1 Premiumpartner Service", 12 "7I2eh_kBp" => "23 degrees", 13 "rkt8g9Niuo-7" => "2KDirect", 14 "s0YTrTGL0" => "2Performant", 15 "E4m6On5UY0Wg3S" => "321MED", 16 "BksBg9VjOsZQ" => "33Across", 17 "hzZS-hs9m" => "360 Grad", 18 "6YbgPIgRm" => "3CX", 19 "kXg9DeFEK" => "3Q", 20 "qxiCD5aN_" => "3Q Video", 21 "GWR6Okt5" => "42ads", 22 "FgkB3cpW" => "4w MarketPlace", 23 "D1_CKTzWP" => "6sense", 24 "r1N_g5Vj_oZQ" => "7Hops", 25 "cB1C-CWY0" => "8Select", 26 "Rj7NtbZLIyj6CO" => "A European Perspective", 27 "HJqwlcEi_j-Q" => "A Million Ads", 28 "W5aCtyNa" => "a-net", 29 "S1oqeqVsdob7" => "A.Mob", 30 "MNvgqiAGK" => "A8.net", 31 "r1oD9Eoujbm" => "AB Tasty", 32 "own4GrdkBajHvL" => "ABlyft", 33 "mcMqee5z51IrK1" => "ABlyft - Weboptimisation", 34 "6GBGwDrQe" => "Accelerize", 35 "93B80nQzj" => "Accengage", 36 "qzdvfwREE" => "AcceptableAds Exchange", 37 "4C_H9fAmRKeo3Y" => "AccessGo", 38 "gYLHfz4Lg2RKMU" => "accessiBe", 39 "SyosgcNsds-Q" => "Accorp", 40 "j0a1nV69uzbeh6" => "AccountInsight", 41 "0N5YK1cW1" => "Ackee", 42 "gSTvUFpVi" => "Acoustic", 43 "4ybPfavU" => "Acquia Lift", 44 "SkzZlqVs_sWX" => "Active Agent", 45 "HDA6XNFs" => "ActiveCampaign", 46 "S1Z5Esdsbm" => "Acuity Scheduling", 47 "SJFRgc4sOo-m" => "Acuityads", 48 "Sy_FQ5SRm" => "Ad Alliance", 49 "hv3CkcEHZ9EQ_j" => "Ad Quality by ironSource", 50 "nxlcZXzLr" => "Ad Unity", 51 "Bkk254o_o-7" => "ad-srv.net", 52 "rkdYcVsdoW7" => "ad:C Media", 53 "UCS8eT_Pz" => "ad.plus", 54 "PtvsQPsXKT-OwG" => "Ad360", 55 "HJxLc4odiWQ" => "Ad4Mat", 56 "Hy4ax9Ni_sZm" => "ad6media", 57 "O0dPUkSwE" => "Adabra", 58 "S1CQe54sOs-X" => "Adacado", 59 "EwR_7MJGk" => "Adagio", 60 "NKwDOvvN" => "Adality", 61 "IE1JeSDLF" => "Adalyser", 62 "H1IyeqEjdsbX" => "ADARA MEDIA", 63 "u7C0LiW7f" => "adbility media", 64 "oGR_Jnx50" => "ADC Media Adserver", 65 "9o_f3BYaL" => "ADCELL", 66 "B1Wac4oOjZm" => "AdClear", 67 "J64M6DKwx" => "AdColony", 68 "nr60PuO2s" => "AddApptr", 69 "BkwLqNjOsZm" => "AdDefend", 70 "9y-4-D2PG" => "AddEvent", 71 "vGbt4De0o" => "Additive", 72 "PrhpqbDB_" => "AddSearch", 73 "ByOJZ54odjW7" => "AddThis", 74 "kkgrP2G8D" => "AddToAny", 75 "lEXAlQ-NW" => "AdElement Media Solutions", 76 "BkD_eqEsuiZ7" => "Adello Group", 77 "r1T6l9EoujbQ" => "Adelphic", 78 "Pzgqsq9kN" => "AdFit", 79 "H1dDqVjOjWX" => "Adform", 80 "pXdG1SmmN" => "Adhese", 81 "UBalUr7TT" => "Adhesive Solocal AdExchange", 82 "06CKth4Dv" => "Adhood", 83 "WSoAQvMRZ" => "adhood.com", 84 "BkJylc4s_iW7" => "Adikteev", 85 "CiailyIiu" => "Adimo", 86 "p_-A50o2DYqIah" => "AdInMo", 4 87 "SJFe9NousWX" => "Adition", 88 "B1gD94sdsbm" => "Adition Dynamic Bannering", 89 "ry-vqVsdiW7" => "Adition Erfolgsspot", 90 "Hy1PqEidobQ" => "Adition Lead", 91 "rkGPcEi_i-Q" => "Adition Offsite", 92 "By7DqEsuj-X" => "Adition Onsite", 93 "3Kg4aoMY5ZlAJB" => "adjoe", 94 "Jy6PlrM3" => "Adjust", 95 "Hk24xqVsdo-m" => "Adkernel", 96 "PF3fFUwwd" => "adledge", 97 "oIxiBh98" => "AdLib", 98 "T0zF5X5bk" => "Adloox", 99 "FgdDaKh69" => "Adludio", 100 "BJDig5NsusWQ" => "ADMAN", 101 "BJUQe5NjujWX" => "ADman Interactive", 102 "cD9B0dFVP" => "adMarketplace", 103 "CTwDBP5rd" => "Admat", 104 "Hy8C9ViusZQ" => "AdMaxim", 105 "H1wmg9Esdj-Q" => "Admedo", 106 "SySflcNjdjbX" => "admetrics", 107 "-FzaiGsbx" => "Admixer", 108 "85RFiZ5cV" => "Admixer EU GmbH", 109 "32Br3kD2M" => "admo.tv", 110 "r7rvuoyDz" => "Admob", 111 "Dw8tBVuw1-ixeG" => "Admost", 112 "BJjzlq4j_j-m" => "Admotion", 113 "E8oLmBZtn" => "Adnami", 114 "kDswg2QFY" => "Adnanny AdServer", 115 "H1dzc4suj-Q" => "Adnymics", 116 "SywhgcVjdiZX" => "Adobe Advertising Cloud", 117 "xl1hqS1F" => "Adobe Advertising Cloud DSP", 118 "Ood3MFN7v" => "Adobe Advertising Cloud Search", 119 "KNfCWlL4E" => "Adobe Analytics", 120 "BJf5EjOi-X" => "Adobe Analytics", 121 "0vHbD98mH" => "Adobe Audience Manager", 122 "_l9yJWKF" => "Adobe Creative Cloud", 123 "JxJRp3je4bOWSr" => "Adobe Dimension", 5 124 "f6nkjdUL" => "Adobe Experience Cloud", 125 "PrJkr3BMv" => "Adobe Experience Cloud Identity Service", 126 "MIJtFTuUD" => "Adobe Experience Manager", 127 "xmvi6h6iXlHuEl" => "Adobe Experience Platform", 128 "zIJ0t6El" => "Adobe Fonts", 129 "gMYO_vhh" => "Adobe Fonts", 130 "MjwgMdSe7" => "Adobe Launch", 131 "nGKcQgAF" => "Adobe Launch", 132 "aWNjZCMVTvO8Oj" => "Adobe Marketing Cloud", 133 "xRLAmHZ3A" => "Adobe Target", 134 "8L9bkqYbV" => "Adobe Target", 135 "bkp7ea4UH" => "Adobe Test & Target", 6 136 "HJy4c4s_jbX" => "Adobe Typekit", 137 "jaWccj1u5MCwMT" => "Adobe Web SDK", 138 "R4eezxWkE" => "Adpepper", 139 "4oh9iKqPJ" => "Adpone", 140 "ULBcFrjZGb4mXW" => "Adrenalead", 141 "r11Ex9EodjZQ" => "AdRoll", 142 "S1Kvg9ViOoZm" => "adrule", 143 "B1n6AkRJ3KFheP" => "Ads Defender", 144 "-AdDAiqxj" => "Adscale", 145 "rkKt9Vo_j-Q" => "adscale.de (ströer)", 146 "SJX4cEjOjZQ" => "AdSense for Search (AFS)", 147 "DRpPVP2uv" => "Adserve.zone", 148 "cBkFKxFip" => "Adservice Media", 149 "Bk3ZqNsujWQ" => "AdSpirit", 150 "SJU-x9Vj_jZQ" => "adsquare", 151 "HHnOG47_6" => "adsrvr", 152 "HJ1wx9Ns_ob7" => "Adssets", 153 "514xGqzuB" => "AdsWizz", 154 "BJCc9EouiZm" => "AdTech", 155 "t91zsmgUO" => "Adtelligence Platform", 156 "qj9AM4gO5" => "Adtelligent", 157 "9YZOzHmmo" => "AdTheorent", 158 "S1qdgcVoOjZ7" => "AdTheorent,", 159 "e-L9j7jq" => "AdTiger", 160 "UFByDVoY5" => "AdTiming", 161 "S1MpgcNjOo-X" => "AdTiming Technology Company", 162 "-z6aobHdz" => "AdTonos", 163 "4ca59IYt1" => "Adtraction", 164 "FVFF_XFS" => "Adtriba", 165 "FNM5zS5SO" => "adtrue", 166 "_LPDpmRU" => "AdUp Technology", 167 "BynslcEoOjbm" => "ADUX", 168 "B1-UecVodj-7" => "advanced store", 169 "r1v094j_o-m" => "AdVentori", 170 "B1_-l9Ns_ob7" => "Adverline", 171 "rkCnmccCX" => "Advertising.com", 172 "C4osiHMfJJalmp" => "AdvertServe", 173 "eNkSkb6JBaOC-P" => "Adverty", 174 "B1OHg9VousbX" => "AdWords Remarketing", 175 "fQdyrzSvN" => "Adxperience", 176 "5EZTiCeMV" => "Adyen", 177 "H1Y9e94j_i-m" => "ADYOULIKE", 178 "D4y1cqu5W" => "Adzymic", 179 "ryATgqEs_s-Q" => "Aerserv", 180 "peSGp09sS" => "Affectv", 181 "whFtCSxUiX3epV" => "AffilBox", 182 "lBgLIDi9e" => "Affiliate Window", 183 "SyTbcViOsWX" => "affilinet (Webmasterplan)", 184 "tAvOzCRGW" => "Affiliprint", 185 "LZjko4J2aIxtT3" => "Affirm", 186 "ecyNbRiQcMwO2n" => "Afterpay", 187 "YsjGpUh22" => "agof services", 188 "Exmh2-AJb" => "Ahrefs", 189 "9Ac-SGp9hgKMdE" => "AidaForm", 190 "_B-oCEzqILvvng" => "Airbnb Reviews by MarketPushApps", 191 "1k_ljMZc28DDOc" => "Airbridge", 192 "hFLVABpNP" => "Airship", 7 193 "IdaQw5cVN" => "Airtable", 194 "ARbqBwC5J" => "Ajax Search Pro", 195 "uQiyefbRi" => "Akamai", 196 "nQ90ZSbOB" => "Akamai Bot Manager", 197 "H1L1cloh4" => "Akanoo", 198 "SyWN9Esdjb7" => "Akismet", 199 "By49NjusWQ" => "Akismet (WordPress Plugin)", 200 "hMXFZSbaI" => "Aklamio", 201 "e2c47r_bZ25pQC" => "Alangu Gebärdensprache Avatar", 202 "YWbHHDowH" => "Albacross", 203 "Wom6s1CtF" => "Alchemer", 204 "jeiaELau" => "Alexa", 205 "tnfBi7gwe" => "Algolia", 206 "EJxYBUV-f" => "Algonomy", 207 "K-qn-Ibapdt9QB" => "AlgoriX", 208 "JNqGjolMX03W_P" => "Alibaba Cloud CDN", 209 "zBE_rJMqbU5Zib" => "Alipay", 210 "AZ0oBKUpsf7deu" => "All-In-One Security", 211 "72E977tUP" => "ALL-INKL", 212 "5A5djPisF" => "Allgemeine Website-Tag", 213 "Drt3RRE-u" => "Alliance Gravity Data Media", 214 "HkwrqEi_sZ7" => "allincl", 215 "VnQLQ7uoL" => "AllMediaDesk", 216 "4wiORY5pVpGffd" => "Alphalyr Digital Studio", 217 "fUfvROWdtFsw1K" => "AltBeacon", 218 "_2g2r-p1n" => "Altruja", 219 "2qBrzO0223X1Zt" => "Amadeus Hospitality/TravelClick", 220 "gvWsZJmVT" => "Amazon Adsystems", 8 221 "N2spyFPL" => "Amazon advertising", 222 "NELEFokrd" => "Amazon Associates", 223 "t1QnIrTMGuERFa" => "Amazon AWS Amplify", 224 "S1sdpVyEX" => "Amazon Cloudfront", 225 "1dArEN3cO" => "Amazon Mobile Ads", 226 "BkBN6xyV7" => "Amazon Partners", 227 "rJ6D5Eous-Q" => "Amazon Pay", 228 "24I-tjBlAIR5TS" => "Amazon Pinpoint", 229 "IUyljv4X5" => "Amazon Publisher Service", 230 "Bkdj2xyEX" => "Amazon S3", 231 "J39GyuWQq" => "Amazon Web Services", 232 "mF6syhpYV" => "Amnet", 233 "JchR4jxjXCqTiu" => "AmoAd", 234 "HJRgx54jusbm" => "Amobee", 235 "Sk9kb5VoOi-7" => "Amplitude", 236 "R6qwZ11iZ" => "ampproject.org", 9 237 "6znewg1hW" => "anchor.fm", 10 "aXnTc_Y3n" => "ArcGIS Map", 11 "fiQX6mqi" => "AT Internet", 238 "HJRUlvEVQ" => "Ankit 24-07", 239 "_VWVLDbYO" => "annalect", 240 "xRy2gd--" => "AnswerDash", 241 "rymwxcNsOsb7" => "AntVoice", 242 "FSbhnJKw5" => "Anwaltauskunft.de", 243 "ebhLyMWCg" => "Anwaltverein.de", 244 "vUHdGBoDHNu6_2" => "Anythingabout", 245 "KWDizwCvI" => "Anzu", 246 "3sJWccp-h" => "AOL", 247 "ApbuXSl8r" => "AOL Cloud", 248 "B1AUNmyEm" => "Apester", 249 "H1n6lcVj_s-7" => "Apester", 250 "yYVZ3FfUoXT_tj" => "Appcast", 251 "oPWBSL3AJ" => "Appcues", 252 "-ijhTWLQV" => "AppDynamics", 253 "UkROORpAd" => "AppDynamics", 254 "_lk1S0d9OF47je" => "Appfigures", 255 "jzH7HjBXb" => "Appier", 256 "P1h384FMQ" => "Apple Pay", 257 "r9Vq_aY3t7tJWJ" => "Apple Podcasts", 258 "weoN4Lb_MjWLuu" => "Apple Search Ads", 259 "cBl03wBXG" => "Apple Sign-in", 260 "H1dpBjeMV" => "Applied Technologies Internet SAS", 261 "7CJ_BpQ_C" => "AppLift", 262 "fHczTMzX8" => "AppLovin", 263 "v324c3_9o" => "AppLovin Max SDK", 264 "7p47Xsg-i" => "AppMetrica", 265 "Syg-54jdiZX" => "AppNexus (adnxs.com)", 266 "XFAdcSj-7Jc-JJ" => "Appodeal", 267 "_RMuMZnYU" => "Approov", 268 "WWe3pIgdt0UDOJ" => "AppSamurai", 269 "CRKoGaeDVbo2l1" => "Appsell", 270 "Gx9iMF__f" => "AppsFlyer", 271 "n2slZDmyp" => "AppSignal", 272 "BJZX5EjdibX" => "AppStore Widget", 273 "XI0dAskrcDPVB-" => "Arcade", 274 "aXnTc_Y3n" => "ArcGIS Map Tool", 275 "eoUHS8Nwm" => "Arcspire", 276 "mSKd6UMp_" => "Arkflux", 277 "Byz_xq4s_o-X" => "ARMIS", 278 "codpeWIqV" => "Arrivalist", 279 "Bk9OBXJ4Q" => "Ars Technica", 280 "H1au00yZT9ugFI" => "ART19", 281 "NTb2hlOJdn95k4" => "Artefact", 282 "q6G6H17TR" => "AskMe", 283 "fiQX6mqi" => "AT INTERNET", 284 "lyQYRN-Xmt_BBZ" => "AtData", 285 "yWgiH3xQZ" => "ATG Ad Tech Group GmbH", 286 "rJ6L9VsdjWm" => "Atlas Solutions", 287 "a8XLoeVA0" => "Audience Project", 288 "zBwUvUoJ0" => "Audience Trading Platform", 289 "FOrCeplkQ" => "Audiencecreate", 290 "zRmrOPZzd" => "Audiencerate", 291 "BkXdl9Njujbm" => "Audiens", 292 "SX52NsAPC" => "Audigent", 293 "UVMdI89fm" => "Audio CC", 294 "yt0Ir6e9H" => "audio content & control GmbH", 295 "euL-m8Kv" => "Audio Now", 12 296 "c6lt-aZ0" => "Audioboom", 13 297 "mdM6tHJ4s" => "Audiocon", 298 "RLFJwpZoj" => "AudioMob", 299 "_-eZ2iyMj_0Nip" => "Audiomob in-game", 300 "BV-1qlQ7" => "AudioNow", 301 "QLTBuExAXZP-Ac" => "Audiopixel", 302 "vFJX03YEz" => "Aumago", 303 "7mOrpUraa" => "Auth0", 304 "AshuZ5jzB" => "authorized.by", 305 "WLHxEc2Up" => "Autohauskenner", 306 "8JWoogwUY" => "Automattic", 307 "yqLEQaghO" => "AutoUncle Aps", 308 "57lcUUrlt" => "Avantio VRMS", 309 "8eg0IuPZ8wkcg7" => "Avature", 310 "_Y_UCbcZ0" => "Avazu", 311 "r1YzeqVs_jbQ" => "Avid Media", 312 "zATcqR5A-" => "Avis Vérifiés", 313 "H1vkx9Ni_s-7" => "Avocet Systems", 314 "BJkGAh2mX" => "Awesome", 315 "zI4LKzU_q_rizP" => "Awesome Table", 316 "p6k0WAvkwZ4GDb" => "AwesomeAds", 317 "SyfKc4oOjWQ" => "AWIN", 318 "Bkn55EsOoW7" => "AWS", 319 "NYsmsUE9VcXEGy" => "AWS WAF", 320 "kgyk8fbU" => "AWSELB", 321 "wSJngRiYEJcL8C" => "ayeT Studios", 322 "jHHkTxbZOK9LU0" => "ayeT-Studios", 323 "zGUZoF3Ve" => "Azerion", 324 "MSVdV2h-6nYJ7X" => "Azure Active Directory", 325 "EVhPGKuTEOecfG" => "Azure Active Directory B2C", 326 "GlxT-TcjOgbGhc" => "Azure App Service", 327 "9q69bs1_uqZieZ" => "Azure Application Gateway (Azure WAF)", 328 "UiXdWB_l" => "Azure Application Insights", 329 "oz3w0zM75" => "Azure Maps", 330 "dx07_9ciJ" => "B2B Media", 331 "kxs3IM_Vu" => "B2B Media Group EMEA", 332 "Tw8zmKpSP" => "Bahn", 333 "r144c4odsbm" => "Baidu Ads", 334 "pFPZLFiOD" => "Baidu Advertising", 335 "aZvWLczh" => "Baidu Analytics", 336 "3-tkHSouq" => "Bakehouse", 337 "jkyepXkyR" => "Bambuser", 338 "BJ_d5EsusWm" => "Bandcamp", 339 "447gNkP7E" => "Bandsintown", 340 "rkn_g5No_iZQ" => "Bannerflow", 341 "i8thRAILQ" => "Bannersnack", 342 "uSTP7MDLGFP3kV" => "Barilliance", 343 "RXEft47eH" => "Barzahlen", 344 "EWWivI-np" => "Basis Technologies", 345 "OD38XMAFy" => "Batch", 346 "XbzVLbj6w" => "BazaarVoice", 347 "fXMTXQOLX" => "bd4travel", 348 "WDR3LyVpo" => "Beachfront Media", 349 "LCM5ZqgPa" => "Beamer", 350 "NPwHeL-JC" => "Beampulse", 351 "rkEXx9Vo_obX" => "Beemray", 352 "B1NA5VjdjbX" => "Beeswax", 353 "o2q55Aa0Q" => "Behamics", 354 "DxVnzwLiH" => "Beintoo", 355 "BJRdcNsuibm" => "Belboon", 356 "tRDGo5MH8tSYso" => "bento Forward GmbH & Co KG", 357 "01z9S71rU4Hn-D" => "Beslist.nl Tracking", 358 "MNJpzh2av" => "Betgenius", 359 "9EH_yrRpk" => "Better Banners", 360 "NlKtp6bJulcVps" => "Bettermode", 361 "a384FoyLB" => "Betterplace.org", 362 "LYIjPmlzB7ta5I" => "BeyondWords", 363 "a_N5P8uw" => "BIC media", 364 "t4800ChaZVtBVR" => "BidMachine", 365 "lAqkVMAk7" => "Bidmanagement", 366 "PGVmlH7ex" => "Bidstack", 367 "BJb4e5NjOjb7" => "BIDSWITCH", 368 "HyU_xc4oOoZQ" => "Bidtellect", 369 "rkj0qEsusWm" => "BidTheatre", 370 "zDG4jNnkx" => "BidTheatre", 371 "Y3BUl6Fb5" => "BigaBid", 372 "-QcL-vWtUwTmEw" => "BigCommerce CDN", 373 "naN37N2CRJvG2W" => "BigCommerce Checkout", 374 "p34bURcC2mKqdZ" => "Billie", 375 "ryiH3439N" => "Billiger.de", 376 "HJ0w9Vs_jWm" => "Billpay", 377 "Hysgc4odiZ7" => "Bing Ads", 378 "SJwfMvizE" => "Bing Ads Retargeting", 379 "rJhhqVs_ob7" => "Bing Conversion", 380 "7n82fbu3X" => "Bing Maps", 14 381 "abGHajF1" => "Bing Maps", 15 "SkdccNsdj-X" => "Bitmovin", 16 "Ewb9uz1Rp" => "Bookingkit", 17 "A91MHlBY6" => "Bryter", 382 "S14J-qNjujZX" => "Bing Remarketing", 383 "rJBkZ94sdjWm" => "Bing Remarketing Conversion", 384 "S3LWGzBCG" => "Bit Q Holdings", 385 "z03bVFpFh" => "BITE", 386 "SkdccNsdj-X" => "bitmovin", 387 "H-5ybEnazK_Nr_" => "Blackfire.io", 388 "9GgCbkF1X" => "Blau", 389 "LT7cTFaUy" => "blingby", 390 "HkgxeqNiusW7" => "Blis Media", 391 "u1M5M8ss4" => "BloomReach", 392 "adry5guRKaqWsa" => "Bluecore", 393 "H1cuc4jds-m" => "BlueKai", 394 "FSn8bGxEM7pDWf" => "Bluesky Social", 395 "w_VI5g0m9" => "Bmind a Sales Maker Company", 396 "rJVVe94jusZ7" => "Bombora", 397 "fGsLLp5V" => "Bonial connect", 398 "r_7IfSwj" => "book2look", 399 "g-lEHEZi" => "Bookatable", 400 "tGMdaeC7cSYLyO" => "Bookeo Widget", 401 "4Ce4r1C3b" => "Booking Südtirol", 402 "cSRMLG-9J" => "Booking.com", 403 "padqNOq8_pNHbF" => "Booking.com Reviews by MarketPushApps", 404 "Ewb9uz1Rp" => "bookingkit", 405 "97rh3ePvleSqGz" => "Boom Form", 406 "3L4qRZSFNbX1A-" => "Boost", 407 "8eIqa_sKr" => "BootstrapCDN", 408 "wdjNExCpwgd0mA" => "botBrains", 409 "2s7OLtD31lVpPp" => "BotDetect Captcha", 410 "6_AaKITrsMijT_" => "BOTfriends", 411 "cu-I7EeYRGHBYH" => "Bounce Commerce", 412 "B1aDxq4iuj-Q" => "Bounce Exchange", 413 "H11_qNsujb7" => "Braintree", 414 "Me_LwKiEK" => "Branch SDK", 415 "Oadn03JMr" => "Brand Advance", 416 "_XeDI-poS" => "Brand Metrics Sweden", 417 "MMgpupdb_" => "Braze", 418 "dQwK0_tGzCTAY1" => "Brevo", 419 "7m8ANzilagj--S" => "Bright SDK", 420 "_P8Dj4_id" => "Brightcove", 421 "dzqlMOvA3" => "Browser-Update", 422 "zwX6TKIqe" => "Browsi Mobile", 423 "A91MHlBY6" => "BRYTER", 424 "SkBdl94j_o-7" => "Bucksense", 425 "OIryTCdy" => "Bugherd", 426 "HJMSxqVj_ibm" => "Bugsnag", 427 "m3HPkp-03" => "Burt", 428 "bj4SQZiaZKJ0Sl" => "BusinessBike", 429 "3uVXyQAEl" => "Buzzsprout", 430 "rJeSRIt3E" => "bwin", 431 "qm6aGgqn1" => "Byggfakta Analytics Pro", 432 "M7hs1204w" => "Bynder", 433 "lAVu7za7YOX6Wz" => "ByteBrew", 434 "pJpZXVNi3" => "Cablato", 435 "KISulZHIbBr3mT" => "Calconic", 18 436 "vdUe2GDtm" => "Calendly", 437 "nWwIqfnhR" => "Calenso", 438 "mKiYp1G2D" => "Callbell", 439 "M2HlfHoRv" => "CallTrackingMetrics", 440 "eL9NgeAYVMVnLF" => "CamBuildr Plugin", 441 "k-PZrnDTu" => "Candidate Application Form", 442 "t9P753bof" => "Canva", 443 "2-m-3sqMKQdc-e" => "Captcha", 444 "gf1221hzK" => "Capterra", 445 "SyMke9NsdsW7" => "Captify Technologies", 446 "jTmrAXElBrQnYW" => "Captivate", 447 "uOYlP6SYB" => "CARAT", 448 "ptLtnnoWD" => "CarbonCare", 449 "CxlGIPVZZQoZEy" => "Cardinal Mobile", 450 "a7PrUQ-6P" => "Caro", 451 "iiCbzWw6F" => "CarObserver", 452 "s1uhnr4d" => "CAS", 453 "4R_3s-N0l" => "Cavai", 454 "aMS3tHs64OnpBp" => "CBOT", 455 "8QW9ZIyK" => "Celebros", 456 "5AGhJ-ZyCplhCq" => "Cell Rebel", 457 "HkBsx54iOj-X" => "Celtra", 458 "Hk9Lx5VoOoWQ" => "Centro", 459 "gIB2IbDlp" => "CerebroAd", 460 "OquVCK6VO" => "Chameleon Lead Generation", 461 "S1m2cVsOobm" => "ChannelPilot", 462 "t_QU7p3R5" => "ChannelSight", 463 "vTg02iIVV" => "Chargeads", 464 "wPKv-wn7Q" => "Chargebee", 465 "HJbZqVodjZX" => "Chartbeat", 466 "IEbRp3saT" => "Chartboost", 467 "A5oCgmHFtQgIg4" => "Chat Essential", 468 "BO3dx6Mra1k9GA" => "Chat Metrics", 469 "C66l3JRfAxdGQA" => "Chatbase", 470 "6HgPXo1si" => "ChatBot4You", 471 "fNX9aue_W" => "Chatchamp", 472 "5uf4Ob3t1XN-Cj" => "ChatLab", 473 "T8aQwGQAa" => "ChatLingual", 474 "K7k356nB" => "Chatra", 475 "fnSyKoUyR" => "ChatShipper", 476 "b2HHpjQUE" => "Chatshipper| AE", 477 "--MzGIqMG" => "Chatshipper| AR", 478 "NoqlDY0oz" => "Chatshipper| AU", 479 "84dzCu7Kj" => "Chatshipper| BR", 480 "IbXoCTUii" => "Chatshipper| CO", 481 "9LJEo_2rb" => "Chatshipper| NZ", 482 "CwCThuokI" => "Chatshipper| RU", 483 "ux0Lcy9ys" => "Chatshipper| RU", 484 "4_nMRPZtr" => "Chatshipper| TR", 485 "RLsuv0ttX" => "Chatshipper| ZY", 486 "-sibI7br0O_Dcz" => "Checkfront", 487 "un6JwcgQG5VcK1" => "Checkout.com", 488 "q4KssvUm-" => "Cheq", 489 "9dvY4sSZi" => "Cheq AI Technologies Ltd.", 490 "QcjN2V8k_TV76l" => "Chili Piper", 491 "Bk9xx5VsdoWm" => "Chocolate Platform", 492 "gdvSff1hg" => "Cint Network", 493 "acSvos0XNztx4Y" => "CitrusAd", 494 "6smMKIWrt" => "Cituro", 495 "F3bB6q6wfNgmQ6" => "CityPilot App", 19 496 "xI9qM4Yhk" => "Civey", 497 "iONrYLmnn" => "CJ affiliate", 498 "SyCE0KqAQ" => "Clarium", 499 "tC9q5J7xA" => "CleanTalk", 500 "F6YatvySOXyKxg" => "Clearbit", 501 "ZmHxg0LX2cTSly" => "Clerk.io", 502 "P4_bu9j4" => "Clever Elements", 503 "Hkq1Xar5V" => "CleverPush", 504 "o5fE3ybZ" => "CleverReach", 505 "qQhJaxvd34pUx8" => "CleverTap", 506 "TOyxVvzIw" => "Click Dimensions", 507 "BP1atj7Yr" => "Click Guardian", 508 "sGB-VG0Cw" => "Click2buy", 509 "jgGgfqxe0" => "Clickcease", 510 "HT8vkhwg2" => "Clicksco Digital", 511 "rJW2xqEsuibX" => "Clipcentric", 512 "_9GUFiQ9W" => "Cloud Functions for Firebase", 513 "FzVAet4ub" => "Cloud Storage for Firebase", 514 "7R7chEXGs" => "Cloud Technologies", 515 "DNxukinmg" => "Cloud.IQ", 516 "HkIVcNiuoZX" => "Cloudflare", 517 "xQ7R_MtouldLmR" => "Cloudflare Turnstile", 518 "xFh43inVo" => "Cloudflare, Inc.", 519 "BJ_ocNjds-X" => "cloudfront.net", 520 "B1CDTgJEX" => "CloudImage", 521 "XpPsZvVN6" => "Cloudimage", 522 "r1HocEjOiWm" => "Cloudinary", 523 "SO2GHGVL9" => "co2online", 524 "1kuoX1MnGbbZld" => "CoChat", 525 "lSDamg0Dz" => "CodePen", 526 "uGBKGpLwqq1CQb" => "CodePush", 527 "S1d9eqVodsWQ" => "Codewise", 528 "n8sUMtfze" => "Codigo", 529 "4HJCCD0uI" => "COFORM", 530 "EiStTLS8P" => "Cognigy", 531 "rJFFlc4j_sZ7" => "Collective", 532 "rJlwgqEsujbQ" => "Collective Europe", 533 "Sk85e94s_ibQ" => "Comcast International France", 534 "qKULVqrY_" => "Commanders Act", 535 "Wx3IbW48OzUDEp" => "Comments", 536 "WF-8JwSlq" => "commerce connector", 537 "nK-Uqoy-f" => "commercetools", 538 "6EVVAXCBR5ngVu" => "Common Ninja", 539 "V0HX9cPeQ" => "communication Ads", 540 "1drdvuWXO" => "Computop", 541 "B1WMgcNodi-7" => "comScore", 542 "859gL6rBS" => "Concludis", 543 "SkzQlc4oOj-Q" => "Confiant", 544 "BJknx9Nius-Q" => "Connatix Native Exchange", 545 "SynGg5VsOiWQ" => "ConnectAd Realtime", 546 "HNEN0Bg_y" => "Connects", 547 "66kNuj2_n" => "Connexity", 548 "GaSh0RTk2" => "Consentric", 549 "8ctYI_8U3" => "Consors Finanz", 550 "_GgHCK3ZEpGAao" => "Constant Contact", 551 "cphN9wqOfmJOnf" => "Constructor", 552 "z4cR3afxG" => "Consumable", 553 "yRjH5CoGrlqnkc" => "Contact Collection", 554 "4OUatCDhD" => "Contact Form 7", 555 "YFigsoh4HN9sWt" => "Contact Form by Powr", 556 "SJoW5NiOiZX" => "Contact Impact", 557 "q19Crnv3" => "Contao", 558 "S1MTc4o_oWX" => "Content Garden", 559 "vs7lkZ5Rt41qri" => "Contentfry", 560 "PYggIh6xB" => "Contentful", 561 "Ki2RMQPHf" => "contentignite", 562 "w8rDkjxj" => "ContentSquare", 563 "ie5SAaPq_" => "Continually", 564 "SJ45xcEj_sZQ" => "Converge-Digital", 565 "Jj-cSioru" => "Converify", 566 "Bk3A9VoOsZQ" => "Conversant Europe", 567 "LykAT-gy" => "Conversion Linker", 568 "drDqUw9P" => "Conversional", 569 "hMRPcifE3" => "Conversions API", 570 "NEwiuQ7p9" => "Convert", 571 "gK4ciedfd" => "Convert Plus", 572 "gWaBe7seEZL3PC" => "ConvertKit", 573 "T5DNZUae" => "Converto", 574 "w3F-dGB9Rc5tGI" => "Conword", 575 "rJpK9VjusWX" => "Cookie Consent", 576 "8TziAnlg5SJF0U" => "Cookiebot", 577 "u4pd6DxYHG7QGL" => "Cookiebot for Wix", 578 "0tftWyie-nlUI6" => "Copper Banking", 579 "4QcJIWh7" => "Corazon", 580 "JZb-2_sb0qbBPt" => "Coveo", 581 "8K4QDDTlf" => "Crashlytics", 582 "H1RKcVjuo-X" => "Crazy Egg", 583 "ryntqNi_oZm" => "createjs", 584 "eOxs7vkZ5cIbRn" => "Creditreform", 585 "bo1eQYBqE" => "Crefopay", 586 "rkT1x5Eo_ibm" => "Crimtan Holdings", 587 "B1fDhaZcE" => "Crisp Chat", 20 588 "HyeqVsdjWX" => "Criteo", 589 "SystcNs_i-X" => "Criteo OneTag", 590 "ir7QpAGI" => "CrossEngage", 591 "NaBqSG56ozyl3f" => "Crossplan", 592 "xWwGfga9W" => "Cuebiq", 593 "P4TRMHYULjn2JH" => "Cuenect", 594 "lkM9hmqWWT3Lzk" => "Curalate", 595 "ZHU4a5mZPVMuoP" => "Currency Converter", 596 "M8wT_v7Yf" => "Custobar", 597 "vDIn19n9F" => "Customer Alliance", 598 "ki0bzRVWKZovIj" => "Customer Reviews by WACR", 599 "mC-lKBOTZ" => "Customer.io", 600 "_MbxwST_7Mu62J" => "Customerly", 601 "I99Vzl6mZ" => "Cxense", 602 "06NhSHkb5" => "Cybba", 603 "Divc-nzbk" => "Cydersoft", 604 "Ek_i8cfWU" => "Czech Publisher Exchange", 605 "20R0KrKk8" => "d.vinci", 606 "Vd4jf_bW9" => "DailyGo", 21 607 "VJNO26pZe" => "Dailymotion", 608 "H9bIKf_i" => "dailypoint", 609 "_OIm7GxyZ" => "Daisycon", 610 "nLWGjXeAyJHTJu" => "Daktela Webchats", 611 "SyxfH7JN7" => "Danubius", 612 "IoSfrTR1p5Sxpo" => "Daon", 613 "r1G0NXJEX" => "DAT Group", 614 "Flf8kP0XXc_ubD" => "Data Circle", 615 "BJL48D74Q" => "data22", 616 "P7XVa18qr" => "Datadog", 617 "Xl0HIOViY" => "Datadog Real User Monitoring", 618 "NeWsJito4aPrFK" => "DataDome", 619 "edd8bsMOg" => "Dataseat", 620 "78h78kgEz" => "Datatrans", 22 621 "8Nxb4ZtSa" => "DataWrapper", 622 "7tNwk5fZ9" => "dataXtrade", 623 "H10nc4s_iWX" => "DataXu", 624 "XnGRMsNDp" => "DatoCMS", 625 "HJIBxqVsOo-Q" => "DCMN", 626 "MQJ6TX04ENV3Du" => "Dealfront", 627 "fGLl3IvZA" => "DeepIntent", 628 "LlTSS4MfNQfOAf" => "DeepL", 629 "xK8kAxsif" => "Define Media", 630 "wZ5JcfjYw" => "Delivery Hero", 631 "HylUe9NsOs-7" => "Delta Projects", 632 "yLsP4len5" => "Demandbase", 633 "JPsksE_6U" => "Demex.net", 634 "2SoPnIWSY" => "Demodesk", 635 "yBRIQt31I" => "DemoUp", 636 "PcyIFVx6_" => "Densou Trading Desk ApS", 637 "KY9kEd5AV" => "Dentsu Aegis Network", 638 "6lTC1aNep" => "Desiretec", 639 "H1MxcVsujbm" => "Deutsche Post", 640 "yRdgviIjf" => "Devatics", 641 "NzIW86WRUkmZJK" => "devtodev", 642 "ry7d5Njui-m" => "DFP Traffective AdServer", 643 "-XvEgJd2S7TpTO" => "Dialogbits", 644 "ISpYFA-TbtD2KZ" => "DialogShift", 645 "QtXuaSW-k" => "didFind", 646 "HyMRe54juibQ" => "Digilant Spain", 647 "DnsfUym0nruTtI" => "DigiMember", 648 "RxO91a70" => "Digistore24", 649 "zmbCFQIKk" => "Digital Control", 650 "_BRxakDwo" => "Digital East", 651 "S1RUqVodiWX" => "Digital Media", 652 "q6FEv3jcYyYunG" => "Digital Turbine Ignite", 653 "rJo4xcEo_s-Q" => "digitalAudience", 654 "S11RqVoOoWQ" => "Digitalberatung", 655 "2riF-7vlWnhFAT" => "Digitale Adventskalender", 656 "XX-JdeS24Gxyiq" => "DigitalTurbine", 657 "B1DCgqEjdiZ7" => "DIGITEKA Technologies", 658 "BJiugcEjOjZm" => "Digitize New Media", 659 "H1oi94o_o-m" => "digitru.st", 660 "Yq0xUHB4NC2SQl" => "DirectTv", 661 "6MZkp0plA" => "Dirs21", 23 662 "hvWNhpF0T" => "Discord", 24 "r1rX94i_iZX" => "Disqus", 663 "UekC8ye4S" => "Display & Video 360", 664 "r1rX94i_iZX" => "disqus", 665 "SJmVgqNjOjbX" => "district m", 666 "XtPJZdv6Y" => "DistroScale", 667 "B4KTdM5zY" => "Ditto", 668 "1vgHQcJdZ" => "DocCheck", 669 "Vp6CXtilHrxUso" => "Doctify Platform", 670 "AlNuXsio8mtmSD" => "Document360", 671 "Cv-mVwOQr" => "DomainFactory", 672 "4DFjRax1u" => "Domodi", 673 "W8RaJ9nUzwh8Qk" => "DonDominio", 674 "yF3NAOIAC" => "Doo", 675 "1Pj8F8p0" => "Doofinder", 676 "pbkhrW6yd" => "dooshop", 677 "htA-a07qq" => "dotdigital", 678 "gMfEyvJhF" => "DotNetNuke", 679 "HJIWBc5RQ" => "Dotomi", 680 "HkMzqiL4X" => "DoubleClick", 681 "9V8bg4D63" => "DoubleClick Ad", 682 "S1ulcVjdiWQ" => "DoubleClick Bid Manager", 683 "ByzZ5EsOsZX" => "DoubleClick Floodlight", 684 "YBSUcZx1z4_B6S" => "DoubleClick Floodlight Enhanced Attribution", 685 "BkjG6N1EQ" => "DoubleClick for Publishers", 686 "rJBPg9Ns_sWQ" => "DoubleVerify", 687 "wCMfrJcWb" => "Download Monitor", 688 "JUf4KxMBj" => "dpa Deutsche Presse-Agentur GmbH", 689 "zXXgkRFuF" => "dpa Infocom", 690 "dHZwdhDYf" => "Dr. Banner", 691 "PJrrqs5FSZYIkc" => "Dr. Free Gift on Cart", 692 "95xVXSDLf" => "Drawbridge", 693 "jE46pSyKb4wx8z" => "Dreamdata", 694 "mv27ouXUn" => "Drees & Sommer", 695 "hQROV2qf7" => "Drift", 696 "P0OtsPiRJ" => "Drift Functional", 697 "rycQc4s_iW7" => "Drip", 698 "BJND31jnE" => "Droid", 699 "vZH7Ountd" => "DTS", 700 "Yh1B51rBx" => "DTS (Filiale de Solocal Group)", 701 "Bkwk09UD6" => "Duda", 702 "jvgVtyDjK" => "Duende Software", 703 "khUD-KNccif_BD" => "dun & bradstreet", 704 "SUNfUpZFc" => "dunnhumby Germany", 705 "aV-3rrwlW" => "dunnhumby Germany", 706 "N78lgT6yb" => "Duplo Media", 707 "qWONIIQl0" => "Duration Media", 708 "SyCj9Es_o-m" => "dwin1.com", 709 "URfCDWgXN" => "DynAdmic", 710 "4ItmQyYeJqhqbk" => "Dynalyst", 711 "1qrLQTCTp" => "Dynamic 1001", 712 "S1krl5Eo_obm" => "Dynamic Yield", 713 "BJbSg94i_o-X" => "Dynamic Yield Analytics", 714 "ZkQjr_Hc_" => "Dynata", 715 "M6Q7giJoz" => "Dynatrace", 716 "eFVSmqvj_" => "E wie einfach", 717 "vu3PSfZe4" => "E WIE EINFACH Freunde werben", 718 "8K-4oFu8y" => "e-bot7", 719 "X9yTQ_PyX" => "e-guma", 720 "M2_r1ASsBScyR0" => "e-vendo Notice", 721 "MiTDMANqJjOBd2" => "e-vendo Recommendation", 722 "bizRMOL9e" => "Easy Channel HGV", 723 "AzN28O17" => "easy.tracking", 724 "EP8lLzINO" => "easybill", 725 "juzOkXqXf" => "EasyCredit (Ratenkauf)", 726 "LMNyVEnn6" => "Easyfeedback", 727 "H1z4gqEidjW7" => "EASYmedia", 728 "lsgoV13iJr6Thb" => "eBay Store by Mindbulbs", 729 "L2vWsDOr4W34eH" => "Ecommerce Store by Powr", 730 "SJXtq4iOoZX" => "Econda", 731 "T9d835M3" => "econda Analytics", 732 "wGNsI0zJ" => "econda Analytics Essential", 733 "20BzO8h3" => "econda ARP", 734 "nWVAamrH" => "econda Cross Sell", 735 "FOFHxPa22" => "Ecwid", 736 "6GmJR3rzo" => "EDA", 737 "K_7pBvUQf" => "Edadata", 738 "9dKk-fQDXRfJCs" => "eDesk", 739 "aNpyKNtfO1853l" => "Editorify - Product Reviews", 740 "S0nozGN1_" => "edoobox", 741 "4qK0LMP3J" => "Effiliation", 742 "Ci1XLVUSI" => "eGain", 743 "TYi_Ik7-x" => "eGovernment Podcast", 744 "WwZYS9xvA" => "EHI-Siegel", 745 "8mYD5MWhP7f_fR" => "Eightfold", 25 746 "MEXztGXoM" => "eKomi", 26 "rkUcEjuoWm" => "Facebook Audience", 747 "6hTRb4RkSrDSHf" => "Elastic App Search", 748 "3CHxj_Uea" => "Elementor", 749 "dCQTj1ryb" => "Elfsight", 750 "zTRmwB89UzXzW3" => "elopage", 751 "ByBFq4idoZQ" => "Eloqua", 752 "Q0sjsdWCVe9THW" => "eMarketeer", 753 "S16u54s_i-Q" => "Emarsys", 754 "XULebj6Iz" => "Embedly", 755 "tLxmZ4lJ0ELfBT" => "EmbedSocial", 756 "5yZ6vvmjj74g5n" => "Embrace", 757 "F2X0mUlze" => "Emerse", 758 "gPX7VyXhz6JZs9" => "Emersya", 759 "BJmZ9Nids-m" => "emetriq", 760 "4ENZ2_2hS" => "Emodo", 761 "ByRVl9ViuoZ7" => "EMX Digital", 762 "lJw-5t0vr8pM99" => "Endereco", 763 "L20cjXk4q" => "energyAds", 764 "WS9UinNyJ" => "EngageYa", 765 "l-0ygHVr" => "Episerver", 766 "Vhp0w3eBr" => "epoq", 767 "0pVo537JLlx-_n" => "EQS IR Cockpit", 768 "qN-ur-FZOgSdK6" => "EQS News", 769 "vK54WQhrgnvTFf" => "EQS Stock", 770 "t3wYmwf7Q" => "eQuota", 771 "H1gr85C7m" => "Erweitertes Tracking", 772 "CAh-PzD4" => "esome", 773 "fy2y1l5NK1ndoP" => "Estheticon", 774 "ByaC5EsdoWX" => "Etarget", 775 "B4MOBvmAw" => "eTermin", 776 "PPkCxv14a" => "etracker", 777 "BIRApgk3o" => "etracker without cookies", 778 "-3xZ3_oSf" => "Eulerian", 779 "jmK4ZP8o" => "Evalanche", 780 "JpZJ7GnSYRXDyx" => "eveeno", 781 "HkVrlqEiuibX" => "Eventbrite", 782 "T2EliczcxLrvtP" => "Events by Wix", 783 "k-PkpuXOBGi7gq" => "Events Calendar", 784 "MF2a0ec4R" => "Eventscase", 785 "BgFFtPqMi" => "Everesttech", 786 "4eHuZ3Liz9rqUH" => "Everflow", 787 "SHVGb93oC" => "Eversttech.net", 788 "r-PDe4a85" => "Evidon", 789 "JtPFO0Vkb" => "Evm3", 790 "Ww1bNfD-i" => "EX.CO", 791 "HJZU9Nj_iZX" => "exactag", 792 "qE3WE4Wam4ORVF" => "Excentos", 793 "WpYODjaRP42z7F" => "experian", 794 "xX46ae_h9" => "Exponea", 795 "rkKC5EsusWQ" => "Exponential Interactive", 796 "FXe3euJljI0uJY" => "Eye-Able® Assist", 797 "n1hCTnCxy" => "Eyeota", 798 "By7zl9NiOoWX" => "Eyeota Ptd", 799 "lmAfJPg6InvRFZ" => "Eyepin", 800 "SkmkZ9Vj_jW7" => "Ezoic", 801 "rmtXcYS_B" => "f5", 802 "DJCKNxpeW" => "f5 Networks", 803 "PNtPBL1Zd" => "Faaren", 804 "jrUnstvLKeFnIS" => "Fabric Answers", 805 "Pqk3AsAS7" => "Facebook", 806 "1XvFW-Y2k" => "Facebook", 807 "Ug1jBcZJq" => "Facebook App Events", 808 "ax0Nljnj2szF_r" => "Facebook Audience Network", 809 "tavJ1OKSj" => "Facebook Audiencenetwork", 810 "SJKM9Ns_ibQ" => "Facebook Connect", 811 "rkUcEjuoWm" => "Facebook Custom Audiences", 812 "SxdpEPwQn" => "Facebook Messenger", 27 813 "ko1w5PpFl" => "Facebook Pixel", 28 "XYQZBUojc" => "Facebook Social Plugin", 814 "ocv9HNX_g" => "Facebook SDK", 815 "XYQZBUojc" => "Facebook Social Plugins", 29 816 "r5-Z_erQ0" => "Facebook Videos", 817 "DkJsSfr-W" => "Facelift", 818 "u0ATqylf" => "FACT Finder", 819 "53QoLB6h1" => "Factfox", 820 "8keiDlAsDeQBrQ" => "Factors.ai", 821 "Sp827hBaKKNmEN" => "Fairing", 822 "TcEBCmnTm" => "Falstaff", 823 "dDq2_ZEKk" => "fast.fonts.net", 824 "LRKhbMoNF" => "Fastly", 825 "SkEscVsusbX" => "FBCDN Facebook", 826 "5x9QA2VHs" => "Feathr", 827 "U_4ErlVw0" => "Feed Dynamix", 828 "ev7yTEG2Z" => "Feed Dynamix", 829 "ipC9qVnU1ddE8_" => "Feedad Outstream Video", 830 "VQOf5Oqz6E9gq0" => "Fera Reviews", 831 "EW5XbVRw3" => "Feratel", 832 "wP9Wrr5vRCEg4J" => "Fibbl", 833 "2gB839qN3" => "Fidzup", 834 "H1Tbl5Nj_iZX" => "Fifty Technology", 835 "WpRTuyrux" => "FiksuDSP", 836 "suqC04krG1L4T9" => "Filial & Händlersuche - StoreLocator", 837 "IEx-Tjzmp2Lq8W" => "Fillout", 838 "W64b12ODh" => "Filmcentralen", 839 "HyiV94juoW7" => "FinanceAds", 840 "Hym5udh9V" => "Findologic", 841 "oGxSC1QCs" => "Findologic", 842 "NqUzbHHebkb71p" => "Fingerprint JS", 843 "IbhfQQbkb" => "Finiative", 844 "42vRvlulK96R-F" => "Firebase", 845 "ytzFgf-eM" => "Firebase A/B Testing", 846 "VX76uyyzy73YYV" => "Firebase App Check", 847 "R7lR9am_W" => "Firebase App Distribution", 848 "smOQ7x8wu" => "Firebase Authentication", 849 "RKCvoZ--rtLVPw" => "Firebase Cloud Functions", 850 "Mp0TG-j8k" => "Firebase Cloud Messaging (FCM)", 851 "GdR8b4tr2aKf3E" => "Firebase Cloud Storage", 852 "cE0B0wy4Z" => "Firebase Crashlytics", 853 "ecngP6eEs" => "Firebase Dynamic Links", 854 "OO202MrWM" => "Firebase Firestore", 855 "uPYPx7TC_" => "Firebase Hosting", 856 "Qsn-_VTnI" => "Firebase In-App Messaging", 857 "HY2wFEsVsGfqBR" => "Firebase Installations", 858 "w7hiUTrsU" => "Firebase Machine Learning", 859 "2rhWushaj" => "Firebase Performance Monitoring", 860 "E6zvFdb6n" => "Firebase Predictions", 861 "iRXREsVii" => "Firebase Predictions", 862 "eM-uPjak6" => "Firebase Realtime Database", 863 "2nEos-2ls" => "Firebase Remote Config", 864 "FBW01l7Nh" => "FirebaseInstallations", 865 "_Ncf9yLnC" => "Firebot", 866 "S6nAK-l_I" => "FirstSpirit ICE", 867 "dJuNHeMq3" => "Fitanalytics", 868 "AtX7Q3-g9" => "Fittingbox", 869 "W0C1VS2NZJn2XC" => "FiveAd", 870 "cSprKh7fQ" => "Flamingo", 871 "3ksSixTl" => "Flash Player", 872 "ByP4x94sdsW7" => "Flashtalking", 873 "-03ZuckNu" => "FlexOffers", 30 874 "X0wJtpzqX" => "Flickr", 875 "_hpE1bAQKrT7hL" => "Flipbook by Simplebooklet", 876 "5C8JIjq1K" => "Flipsnack", 877 "Vy26WddoN" => "Flixmedia", 31 878 "uJyv6-Nm" => "Flockler", 32 879 "kbmJpLAUf" => "Flourish", 33 "RuWQqICz" => "Giphy", 880 "S1vXDBFnE" => "Flowbox", 881 "FlrO-MzKx" => "Flowplayer", 882 "WZDb3Q2TF" => "Fluid Ads", 883 "X5abD8nSKYLKSi" => "Flurry Analytics", 884 "kGLSrGE2j" => "Flurry SDK", 885 "B1A-5Eiuj-m" => "FLXONE", 886 "qVPcPO8cJ" => "FM Labs", 887 "3U8XzcZ2T" => "FOMO", 888 "SdIj7BUI5" => "Font Squirrel", 889 "H1GSqEodjZX" => "Fontawesome", 890 "jhZPu5Km" => "fonts.com", 891 "H1vi54o_obQ" => "fonts.net", 892 "LYBjinTii" => "Fontshop", 893 "BBcvE5Eg0" => "Fontspring", 894 "8G7U3J2Xc" => "Forensic", 895 "SzrLr6NAN" => "Forio", 896 "ljEMGR6jJ" => "Formsite", 897 "4mEDHCPTjXMa4C" => "Formulayt", 898 "BDfdw1ennsN5y3" => "Forter", 899 "r15El9VjusZ7" => "FORTVISION", 900 "_VBgTrSfZ" => "FouAnalytics", 901 "yQYmNEilvDTNX0" => "Fourthline", 902 "gLB9P_wjr" => "Foxydesk", 903 "q-_eu2X2d" => "Fraud0", 904 "SJIIt5hl1" => "fraud0", 905 "CVliYs1Zn" => "Freewheel", 906 "acYUto9R" => "Freshchat", 907 "qMGENEB_g" => "Freshdesk", 908 "bUYUwB3z" => "Freshsales", 909 "WXuCIEBGA" => "Friendly Captcha", 910 "Dhu44_2kxD4V0Y" => "Frontnow Advisor", 911 "BkZ_qViOj-7" => "Fullstory", 912 "0fl-lzlGczJYge" => "Fundraise Up", 913 "OQ_YoPScl" => "Fundraisingbox", 914 "7gS0Vjsc" => "Funnelcockpit", 915 "fWasnrcz" => "Funnelytics", 916 "Hk5MAfAmQ" => "Für das Funktionieren der Website wesentliche Funktionen", 917 "S1GOL9RQm" => "Für das Funktionieren der Website wesentliche Funktionen", 918 "z1lodDq19s5dV8" => "Fusedeck", 919 "VpcE6ZZO4mRgTu" => "FuxCDN", 920 "H17alcVo_iZ7" => "Fyber", 921 "SSTYcu33F" => "G+J Electronic Media Sales", 922 "3AwSqkFPz_OCMx" => "G2 - Track Your Prospects", 923 "QU1vpIg7p" => "G2.com", 924 "Ju0u0ZSRbkYa3-" => "GA 18: Age Verification 18+", 925 "b5UwVqnTvXtU4Q" => "Gadsme", 926 "bQTbuxnTb" => "GameAnalytics SDK", 927 "By5ogq4oOsZm" => "Gamned", 928 "fsfWgMGrz" => "Gastronovi Speisekarte", 929 "dnpN08x5B" => "Gastronovi Tischreservierung", 930 "Rypthk1_I" => "GeistM", 931 "hcX1QxmPB" => "Geizhals", 932 "-Fx1BJClc" => "Geizhals", 933 "rycTeqVoOiZm" => "Gemius", 934 "65JrtAVaP" => "Genesys Cloud", 935 "sfYIpjlx9" => "Genesys Cloud Services B.V", 936 "S1dFecNjOjW7" => "Genius Sports Media", 937 "HyTFy29M" => "Gepruefter-webshop.de", 938 "GH5Ng8oGl0gkAB" => "Getback", 939 "TvEA5AW-k" => "GetIntent", 940 "iHduqoTR" => "GetResponse", 941 "pOEDWfrf0" => "getsitecontrol", 942 "utDoyjic3psr82" => "GetSocial", 943 "JgTrA1wBt" => "GetYourGuide", 944 "i7OSekjkM" => "GetYourGuide Deutschland GmbH", 945 "PTbb7kx6I" => "GfK", 946 "vFb6fBLXT-yqQA" => "Gifted", 947 "oaos1k2AC" => "Giggle Tips", 948 "RuWQqICz" => "GIPHY", 949 "42AYnGBRj" => "Giropay", 950 "Ofh7aUnv" => "GiroSolution", 951 "ess_H8_2okW3hZ" => "GK AIR", 952 "Om08aijRzk_SiQ" => "Gleap", 953 "B1N594jOiZQ" => "Glimr", 954 "3aIaQuY5b" => "GlobalWebIndex", 34 955 "BySu54sOjZQ" => "Glomex", 35 "S1_9Vsuj-Q" => "Google Ads/Google AdWords Remarketing", 956 "HoT8o7YlzZmZ27" => "Goaffpro", 957 "BJ8rq4jdjWm" => "GoDaddy", 958 "6AdzXjKpi" => "Goldbach Group", 959 "rkRFl94j_i-m" => "Golden Bees", 960 "r1ztecNjdjZm" => "Goodway Group", 961 "n9pGpcK5L" => "Google Ad Exchange", 962 "7M0cXS2pQ" => "Google Ad Manager", 963 "hK_vxTwL-" => "Google Ads", 964 "S1_9Vsuj-Q" => "Google Ads", 965 "8ScDZDmU" => "Google Ads Conversion", 966 "twMyStLkn" => "Google Ads Conversion Tracking", 967 "dqFgQeZH" => "Google Ads Dynamic Remarketing", 968 "9rIQbZIzb" => "Google Ads Measurement", 969 "B1Hk_zoTX" => "Google Ads Remarketing", 970 "yjqNcpbNY" => "Google Adsense", 971 "rJ99c4oOo-X" => "Google AdServices", 972 "rySiXprN7" => "Google AdWords", 973 "r19MqVjdoW7" => "Google AdWords Conversion", 974 "SylacVousbm" => "Google AdWords Remarketing", 975 "H1PKqNodoWQ" => "Google AJAX", 976 "r1wSlcEjOsbm" => "Google AMP", 977 "pnDuLUTpa" => "Google Analytics", 36 978 "HkocEodjb7" => "Google Analytics", 37 979 "87JYasXPF" => "Google Analytics 4", 980 "ABsocZLBQ" => "Google Analytics Advertising", 981 "GqhZxB-iiydzEk" => "Google Analytics Advertising for Firebase", 982 "Skr99EiujbX" => "Google Analytics Audiences", 983 "ge3hQ3zM" => "Google Analytics Event Tracking", 984 "diWdt4yLB" => "Google Analytics for Firebase", 985 "b8FM5DHv-" => "Google Analytics Statistics", 986 "QPYQDujT" => "Google Analytics Youtube Event Tracking", 38 987 "n1jiXg1v" => "Google Calendar", 988 "pxiRY9112" => "Google Campaign Manager", 989 "dyHOCwp5Y" => "Google Campaign Manager 360", 990 "f4iZ3mAm5" => "Google Captcha", 991 "isJO61p0b" => "Google Charts", 992 "xr0lbwprU4Tf-L" => "Google Chatbot", 993 "bms_SDJMG" => "Google Cloud", 994 "VOjHS1w7aCn0rN" => "Google Cloud Retail API", 995 "qo3iMe_aP" => "Google Cloud Search", 996 "Sq_WmUhZ8_bD21" => "Google Consent Mode", 997 "0-UDzyKi" => "Google CSS", 998 "S1GV5Ei_oW7" => "Google Custom Search Engine", 999 "IactbkdI7A1cZU" => "Google Customer Match", 1000 "CRfCqvYA" => "Google Customer Reviews", 1001 "rqJvtDVvp" => "Google Display & Video 360", 1002 "1DhORJFj9" => "Google Docs", 1003 "HkF9Eo_jbX" => "Google Dynamic Remarketing", 1004 "vPKlLp_Oh" => "Google Enhanced Conversions", 1005 "uNl9XGnZC" => "Google Firebase", 1006 "kjk3gPD2cxt_Ea" => "Google Firebase Analytics", 1007 "HkPBYFofN" => "Google Fonts", 39 1008 "wgTnPe7i1" => "Google Forms", 1009 "BJMh5NodoZQ" => "Google Global Site Tag", 1010 "R2gyvn3ugawW0t" => "Google Hosted Libraries", 1011 "S1Lgx59AX" => "Google IMA", 1012 "kW5VliBMC5SXQi" => "Google Interactive Media Ads", 1013 "2Xx3hZ77" => "Google Knowledge Panel", 40 1014 "S1pcEj_jZX" => "Google Maps", 1015 "JyhVKNPZN" => "Google Maps Geocoding", 1016 "IH_MYjRFv" => "Google Maps Geometry", 1017 "EkWrVcjOS" => "Google Maps Places", 1018 "IVQgOy4oSKdrn1" => "Google Maps SDK", 1019 "t-TPeXsRi" => "Google Marketing Platform", 1020 "uPcXW8VQTm0CS_" => "Google Merchant Center", 1021 "B1hcEjdoZ7" => "Google OAuth", 1022 "gkEBFID-V" => "Google Optimize", 1023 "iaSHYiqA2" => "Google Partner Badge", 1024 "HgIfWleMF1Pl7a" => "Google Pay", 1025 "8ibG8wB1t" => "Google Photo", 1026 "rw4DyFQcg6s3-W" => "Google Play", 1027 "A2k5o3ZTtrHZ5w" => "Google Play Services", 1028 "r1WocNous-X" => "Google Publisher Tags", 1029 "u3ZX02zVXhJwUG" => "Google Retail Search", 1030 "C7Yai5mE" => "Google Safeframe", 1031 "XJGT8f-58" => "Google Sign-In", 1032 "4Ab1BgiB7" => "Google Signals", 41 1033 "SkPc5EjOsWm" => "Google Syndication", 42 1034 "BJ59EidsWQ" => "Google Tag Manager", 43 "HkPBYFofN" => "Google Fonts", 1035 "pMqnvms3Z" => "Google Tag Services", 1036 "qvkzz7qPe" => "Google Translate", 1037 "HkYNq4sdjbm" => "Google Webfonts", 1038 "fFQ_WmYdQ" => "Google Website Call Conversion", 1039 "rJAM9EodoWX" => "Google+ Plugin", 1040 "QNFauzL0-3RUH8" => "Gorgias", 1041 "rJsTfqq0X" => "GoSquared", 1042 "O5FoJTAdc" => "GoToWebinar", 1043 "BkWrc4j_s-Q" => "Gravatar", 1044 "Bklbg5NodobQ" => "Greenhouse Group", 1045 "Do1uNYTJTCmuTa" => "GreenSock GSAP", 1046 "O5oJehm0M-egZz" => "Grin Technologies Inc.", 1047 "iMp2AEZw8" => "Groove", 1048 "HJOygqNo_sZX" => "GroundTruth", 1049 "XHX7M-Bh_" => "GroupM Server", 1050 "A68gX6mE" => "GroupM Server", 1051 "wcqBhh7Sy4VYE9" => "Groupride", 1052 "oSn0j1WChZGGov" => "Grouprides", 1053 "4NIAkZsNE" => "GSI", 1054 "EQvwGtc_N" => "gskinner", 1055 "rJJjcVouoZ7" => "gstatic.com", 1056 "5e4bAIMiRztWL_" => "Guardsquare DexGuard", 1057 "e7v_XPJ4OUMY0g" => "Guenstiger.de Sales Radar", 1058 "HJswr_n5V" => "GuJ_microConversion", 1059 "rybbeq4sOjWm" => "GumGum", 1060 "DJHxyS7qFRbRGy" => "Gunosy", 1061 "nlI_IPK8j" => "Guuru", 1062 "Z1kX6W6_O" => "Haensel AMS", 1063 "spx5TfAGR" => "Happy Contests", 1064 "hkSd1AFG3" => "Happydemics", 1065 "5o386WKuo" => "hbfsTech", 1066 "QjO6LaiOd" => "hCaptcha", 1067 "4nofr3ZKv" => "HCL Commerce", 1068 "PCM3ENiM_" => "Heap", 1069 "V2JLZ6oXx" => "Hearken", 1070 "ZsL20fBoL" => "Hearts & Science", 1071 "jm2uRvXdcCaHvX" => "Heatclix", 1072 "wPWaLxeau" => "heidelpay", 1073 "uMCsHr86c" => "HelloBar", 1074 "sQyCGhMu7" => "HelpfulCrowd", 1075 "2gOY3sPPJ" => "Helpscout", 1076 "DFT9QDJE_BFA3n" => "Helpshift", 44 1077 "0V-E5N_GQ" => "Here", 1078 "S1-CRlIJF" => "Heroku", 1079 "Cg5EwBm57" => "Hetzner", 1080 "PWceAZDtb" => "Heyflow", 1081 "eTZ86zNa7" => "HGV Anfragewidget", 1082 "pVIUV5bwU" => "hii", 1083 "ZfbhHSYur" => "HIRO Media", 1084 "hDr0yM-VkyVPmH" => "Hit Counter by Powr", 1085 "jgfe089-f" => "Hivestack", 1086 "cAPqoIgOqoT_Ot" => "Hockeystack", 1087 "12Rp61cy9" => "hogast", 1088 "xfC-0NlfB" => "HolaSpark", 1089 "-xTGk4UJW" => "HolidayCheck", 1090 "aP9cMixHcEGFB1" => "Homie", 1091 "aQEevvUcQ" => "Hootsuite", 1092 "ByOH9EoOsZQ" => "hostgator", 1093 "M4l7NUrLF" => "Hotel Barometer", 1094 "3R9IURKfa" => "Hotelchamp", 1095 "R41epsTpY" => "HotelQuelle", 1096 "S1kgcNo_j-m" => "Hotjar", 1097 "S1AZgq4jOsZX" => "Hottraffic", 1098 "OKaP1ocl" => "HR4YOU", 1099 "Xs8BSD3DO" => "HRS", 1100 "ro2Qr0JwU" => "https://www.flashtalking.com/optout", 1101 "ntynkMgmojs56x" => "HUAWEI Ads", 1102 "g-00DwuBhiwqye" => "HUAWEI AppGallery Connect", 1103 "aTTBwjYV-ZLpl-" => "HUAWEI Mobile Services", 45 1104 "ry0QcNodoWQ" => "HubSpot", 46 "r1Fhc4iOoWX" => "HubSpot forms", 1105 "GVxz5M93SoINWc" => "HubSpot by SyncSmart", 1106 "B0yp01393" => "HubSpot Essential", 1107 "r1Fhc4iOoWX" => "HubSpot Forms", 1108 "q6YYRb_V9AxuuY" => "Humm", 1109 "QZPPPW641" => "Huq Industries Limited", 1110 "No50R7Wr" => "Hurra.com", 1111 "Ie2tI6I8A" => "Hybrid Adtech", 1112 "ROCBK21nx" => "HyprMX", 1113 "i1sbFas6IXyQ1c" => "I-mobile", 1114 "XMTWUaeze" => "IAB Open Measurement SDK", 1115 "HJanx9NoOjb7" => "IAB Technology Laboratory", 1116 "V7Aw0ubTPes8vT" => "iAd", 1117 "BykM5Vodi-X" => "iAdvize", 1118 "TE1p4rbif" => "Ibexa DXP", 1119 "8t91Hdo8W" => "Iconfinder", 1120 "xSkLLZByv" => "Icons8", 1121 "Hy2XlcEi_ibQ" => "ID5 Technology", 1122 "HytuM2Hq4" => "Idealo", 1123 "iO7pDk0MCbOpOD" => "If-So Dynamic Content", 1124 "e9v8TIcig" => "ignitionAi", 1125 "HJPPe9VjOsZX" => "IgnitionOne", 1126 "DJgoqmnpF" => "Illuma Technology Limited", 1127 "2DeBAlZBPce0Np" => "ImBox", 1128 "XZ6buX0Z2" => "Imgix", 1129 "-7aWGVtV7" => "Immobilienwertanalyse", 1130 "eDtR-Qpyr" => "ImmoScout24", 1131 "ha-q9XBo" => "Impact Radius", 1132 "Db4YwX8aalX3oG" => "Impact.com", 1133 "0Xgr5Vwth" => "Impactify", 1134 "Y4NL-RXQQ" => "Imperva", 1135 "SJwZxc4sOsZQ" => "Impression Desk Technologies", 1136 "S1a9gqNj_iZ7" => "Improve Digital International", 1137 "gjsI_E28r" => "Incert", 1138 "HyldcVsOo-m" => "Indeed", 1139 "HJr1gqVsOjbm" => "Index Exchange", 1140 "PAess3fOL" => "Indoqa Search-Analytics", 1141 "CVBUWHOL8" => "INFINIA MOBILE", 1142 "KxDKFEzQHcHKvi" => "Influence mobile", 1143 "F9geCQdkM" => "Infogram", 1144 "BXU3bgwQNXkz2a" => "Infomax Websolutions", 1145 "r1qWcNoOsW7" => "INFOnline", 1146 "AJC7siicR" => "Ingenious Technologies AG", 1147 "ykdq8J5a9MExGT" => "InMobi", 1148 "Hyu6e9VjdoWQ" => "InMobi Pte", 1149 "IWEry9w3j" => "INNITY", 1150 "1On4iIz0pXPB7x" => "Innkeepr", 1151 "kDgm-HFUj" => "Innovid", 1152 "KpyTD7UX8HJ_xi" => "Insider", 1153 "HkGcl5Viuo-7" => "Inskin Media", 1154 "-Gj2r8bd6" => "Instabug", 47 1155 "SyUQ54odobQ" => "Instagram Content", 1156 "sHCH_ftzBIyJfN" => "Instana", 1157 "AOgl5ztxY" => "Instapage", 1158 "rkkCx9EjuiZQ" => "Instinctive", 1159 "gstWfFWQ4" => "Instreamatic", 1160 "uceCBKaoi" => "InsurAds Technologies", 1161 "B8AYJ-S6i" => "intedia", 1162 "C1w4LIzQZ" => "Integral Ad Science", 1163 "0B8fT5-8O" => "Integral Ad Science", 1164 "ByiGqViusWX" => "intelliAd", 1165 "Qv2yE-JQd" => "intelliAd Privacy Safe Analytics", 1166 "r1KkV5tb8" => "intelliAd Tracking", 1167 "jdFcD8NQuNYIy_" => "Intellimize", 1168 "r1Klg5VjOoW7" => "Intent Media", 1169 "ZPBtlhwwj" => "Interactive Performance", 1170 "oAGTwTX0" => "Interactive Performance", 48 1171 "ryDQcVoOoZQ" => "Intercom", 1172 "XERJaRzZN" => "Internet BillBoard", 1173 "RkzHS-jLm" => "Interrogare", 1174 "rJ4tecEoOoZ7" => "Intowow Innovation", 1175 "uHbOWgCQJ" => "Invibes", 1176 "6reLOgXs1" => "Inxmail", 1177 "SyBR15Ly4" => "Ioam", 1178 "vBT3xziaP" => "IOL-BODY", 1179 "r1xKx94jusZ7" => "iotec global", 1180 "mHEhMFFdV" => "IP Stack", 1181 "AcG0jQhhzztYxU" => "ip-api", 1182 "5R7MB_6N0" => "IP2Company", 1183 "zZoDj4IdOx8lGp" => "iPages Flipbook", 1184 "Y3S3Cjlht" => "iPaper", 1185 "95bcFdZvH" => "Ipapi", 1186 "D5DUswh2fMIkg5" => "Ipify", 1187 "B16Q9VodjbQ" => "Ipinfo", 1188 "BnK1tfEC6R1Qrl" => "iPlayerHD", 1189 "rklNe9NjOiWm" => "IPONWEB", 1190 "ry6p5NiujW7" => "iProm Remarketing", 1191 "WGTklT4Im" => "iProov", 1192 "Mii4b2CFl7rgK1" => "IQzone", 1193 "hY-4uY34I" => "Iridion", 1194 "9dchbL797" => "ironSource", 1195 "qMW-1y9VZncgxO" => "iSenseLabs", 49 1196 "dwkRM0PG" => "Issuu", 1197 "lx8ViIae4q6Ho2" => "Iterable", 1198 "u34eMAoRD" => "iThemes Security Pro", 1199 "R6bu3Q3X4" => "iTunes Coverbilder", 1200 "Bk79g5EjuoZX" => "Jaduda", 1201 "t9GHg5xFu" => "Jameda", 1202 "wT2IxHKzZ" => "Jampp LTD", 1203 "V4QOOdntTmS07U" => "Jentis", 1204 "SJNrcVo_o-7" => "JetPack (WordPress Plugin)", 1205 "B1mACbkCb" => "Jimdo", 1206 "UZOZDGJER" => "Jira Service Desk", 1207 "bWGt72FTi" => "Jivochat", 1208 "ByAje9No_j-m" => "Jivox", 1209 "GLIuvNhzfKbWEI" => "JobRad", 1210 "JIK6n-FV9RuDQ6" => "JobRad Österreich", 1211 "49Xa8jsyH5rSfo" => "JobRad-Rechner", 1212 "VQfUiTGEr" => "Join", 1213 "am5lpKiXP" => "Joomla", 50 1214 "J9V5VBp3y" => "JotForm", 1215 "Sy7BcNo_ib7" => "jQuery", 1216 "YFfQgeL1F" => "jQueryUI", 1217 "F-REmjGq7" => "JSDelivr", 1218 "c85glKPAc" => "JTL Shop", 1219 "13MNOMVk-l3Ngn" => "Judge.me", 51 1220 "-ONUgPRHp" => "Juicer", 1221 "w-6YwMJPGxMGoM" => "Julep Media", 1222 "XshkkGRyb" => "Jumio", 1223 "7VMQjmth-zQrAt" => "Jumpseat", 52 1224 "YiVeMG4Ma" => "Juris", 1225 "CTaQ5h7W8UxLLV" => "Juspay", 1226 "sTLR41-Y-" => "Justix", 1227 "Hk_el94sdsZQ" => "Justpremium", 1228 "XPNynwmsY" => "Justtag", 53 1229 "ppPIzs4e" => "JW Player", 1230 "yJh98UvrN" => "jweiland.net", 1231 "Q6QFEEKXW" => "Kadermanager", 1232 "w-cwb3XM" => "Kairion", 1233 "Yck-LLwy0" => "Kairion Instore", 1234 "d0-kDutgg" => "Kairion Instore & Out-of-Store", 1235 "XAUageUTd" => "Kairion Out-of-Store", 1236 "onMhbpYZn" => "Kairos Fire", 1237 "g6bEKM3Hs" => "Kakao", 1238 "S1MLTlkEX" => "Kaltura", 1239 "H1yDxp7JN" => "Kameleoon", 1240 "9FYjH37-J" => "Kameleoon A/B Testing", 1241 "2lh8-reEz" => "Kameleoon Personalization", 1242 "07EU8bMnixRXgH" => "Kayak", 1243 "C2a4_R3z6" => "Keen IO", 1244 "BkDKHsV5N" => "Kelkoo", 1245 "mmVz-j_tr" => "KennstDuEinen", 1246 "SJ7T9NjOjZX" => "KenShoo", 1247 "eoVgXrQuQ" => "Kentico CMS", 1248 "HJBSqEido-X" => "keyCDN", 1249 "zB-0M4f30" => "Keycloak", 1250 "SJysx5Nodj-X" => "Keymantics", 1251 "2kcwp9XMK" => "Khoros", 1252 "Snx31FWS16T7HN" => "Kickbite", 1253 "zf-7LGQ2" => "Kickfire", 1254 "BqOkNFgpbLczMs" => "Kicktipp", 1255 "JiXMaMGfGU0AMm" => "Kidoz", 1256 "zbwYM1LoEJZynZ" => "Kiko Chatbot", 1257 "ko6wPAMieDctcU" => "Kindly", 1258 "U7XTUDFas" => "Kiosked", 1259 "loZk__DQmtCVlO" => "Klar Insights", 1260 "x8yJ18Vy-pXRWV" => "Klar Pixel", 1261 "7x35Xo7A" => "Klarna", 1262 "JuU9Uc996" => "Klarna On-site messaging", 54 1263 "m5uB6gnoW" => "Klaviyo", 1264 "t0R7w63eu" => "Klear", 1265 "hPrNlr3oRSQ3Av" => "Klevu", 1266 "OrQTMdFE" => "Klick-Tipp", 1267 "b8m6H4Eyp" => "Knexus", 1268 "ABb8d45Rx" => "Knight Lab", 1269 "w2KKV5_Fk" => "Knorex", 1270 "r1KoxqNi_sZX" => "Knorex Pte", 1271 "J9GIhipl2cGDEL" => "Koalendar", 1272 "cMbvCxbnW" => "Kochava", 1273 "xybUsnxey" => "Kognitiv", 1274 "yP7Kbu7nw" => "Koko Analytics", 1275 "mBFMre9KsMbdyA" => "Komoot", 1276 "LobSoYzEM" => "Königsteiner Digital", 1277 "es91dXvv5" => "Konsole Labs", 1278 "Idm31to_c" => "Konsta", 1279 "9Q7Bc1oNz" => "kr3m", 1280 "gTaR1wkJyo9R86" => "Krones", 1281 "GYCSUJaZd" => "ksu", 1282 "tiFs2oYxt" => "kulea", 1283 "PGQo494D" => "kununu", 1284 "g4cu7oq5C" => "Kupona", 1285 "70rpl4n2FyxuMX" => "Kuula", 1286 "FAbLkZ3Tx" => "Kwanko", 1287 "JH7NZIVIn" => "KXCDN", 1288 "HyETcEoOjbQ" => "Ladenzeile", 1289 "Tau9-tfH_" => "LamaPoll", 1290 "FugOpEoJ7" => "Landbot", 1291 "MV-UxJe2MAGfUW" => "Lasso Analytics", 1292 "By5v5Vo_ibX" => "Lead Alliance", 1293 "CIYR_A-Kh" => "Lead Forensics", 1294 "v8EoM4g_YlhQch" => "Lead Onion", 1295 "mfODT12AJ" => "Leadfamly", 1296 "mbL6QSpmZ" => "Leadfeeder", 55 1297 "eSE_HHXnI" => "Leadinfo", 1298 "HkdvTCJTN" => "LeadLab", 1299 "mjyIByaUN" => "Leadlander", 1300 "ToKFtuZCS" => "Leadoo", 1301 "E4CTElGAt" => "Leady", 1302 "UpfsXTdEl" => "Leanplum", 1303 "iESVWUYYXXPd7l" => "LearnWorlds", 1304 "swhrlNC1JhYd8Q" => "Legejobber", 1305 "YlhLJPcIk" => "Leiki", 1306 "-ZG-GiW7s" => "Lemo Media Group", 1307 "zRMtP5wY-" => "Lengow", 1308 "gj_ifGDMW" => "Libsyn", 1309 "loY267uTc" => "LifeSite", 1310 "H1GgxqNsuibQ" => "LifeStreet", 1311 "EMD3qUMa8" => "Liftoff", 1312 "Hke994oui-7" => "Ligatus", 1313 "FDiqvMBm0" => "LightWidget", 1314 "AjOoxG0fkmHrmf" => "Lime Connect", 1315 "--PErZkDm" => "LimeSpot", 1316 "HDZy5SBI8bwYro" => "LINE", 1317 "bkhjDXJzLlHFNY" => "Linexo", 1318 "vsPo8NP4j4VJFB" => "Link11", 1319 "aRZacFiPZ" => "LinkConnector", 1320 "rk-nqEj_o-m" => "LinkedIn Ads", 1321 "BJikbq4iujWQ" => "LinkedIn Analytics", 1322 "PZZPKRUZvR-WGG" => "LinkedIn Conversions API", 1323 "JQ2XQxIk" => "LinkedIn Insight Tag", 56 1324 "Hkx754i_iWm" => "LinkedIn Plugin", 1325 "KlgP751_a" => "Linkpulse", 1326 "Te5E2yroW0raV6" => "Linkster", 1327 "BJZOeqEjOs-m" => "LiquidM Technology", 1328 "Gq3CKeAHP" => "LIQWID", 1329 "0TSO2KqwdGcKZq" => "LiSA", 1330 "OTnvvCqHZwyzg_" => "Live Chat by Text", 1331 "5fsm8AQ864Jf4A" => "Live Intent", 1332 "fmq5LxcxX" => "LiveAgent", 1333 "LNZGBYJCq" => "LiveChat", 1334 "Skh2lcVsusWX" => "Liveintent", 1335 "H-Ph11IG" => "LivePerson", 1336 "BkqzgqNiOiWm" => "LiveRamp", 1337 "Ub9GLCn2Q" => "LiveRate", 1338 "gkAMkDthN" => "Livereach", 57 1339 "KpU9UXKjc" => "Livestorm.io", 1340 "ryTKg9Vjdibm" => "LKQD", 1341 "gqlgap7z" => "Loadbee", 1342 "wlw9L37WhiR0cD" => "Locally", 1343 "NnzcTZOVY" => "Localsensor", 1344 "dysR7qv-pDSNJY" => "Localytics", 1345 "Byr8gcEidiZQ" => "Location Sciences AI", 1346 "91Upq6kl0" => "Login with Amazon", 1347 "YPfKe97FZUx-Ve" => "LogRocket", 1348 "HkdUgcUJE" => "Lokale Internetwerbung", 1349 "UbQqceRWO" => "Lokalleads", 1350 "An5QLDtKdj0xm4" => "Loom", 1351 "Sgkhva2fl" => "Loopingo", 1352 "ryMzxqNjujZQ" => "LoopMe", 1353 "_asujRjnh5cKeW" => "Loqate", 1354 "9sO0BIT2L" => "LotaData", 1355 "BkpMg9NidsZ7" => "Lotame Solutions", 1356 "whVd0dVxDf0z-8" => "LoyaltyLion", 1357 "Cl5QZ8H3D" => "LoyJoy", 1358 "NNjm99KyT" => "LTS (Landesverband der Tourismusorganisationen Südtirols)", 1359 "MDcI496A3" => "Lucid Holdings", 1360 "EIAR4eOXr" => "Lucky Orange", 1361 "k87Dze248BM6A_" => "Luigi’s Box", 1362 "wajcSFWhjyXa4Y" => "Lunio", 1363 "j71PcgQVV" => "LUX Marketing Automation", 1364 "tLcW3mJYZk6RDO" => "Lyft", 1365 "OV4ohrdfO" => "m-pathy", 1366 "S1Jbl9EiOo-7" => "M32 Media", 1367 "uhH_E-xE0W0A2U" => "Mable.ai", 58 1368 "ukU5jpn0K" => "Machineseeker", 1369 "ukrh2nEMY" => "Madington", 1370 "S1Veeq4oOjbm" => "Madison Logic", 1371 "rk_QecEoui-X" => "MADVERTISE MEDIA", 1372 "f8YBSIync" => "Magebird", 1373 "harQzo_Qz" => "Magento", 1374 "Hk6V3Z367" => "Magento Persistent Shopping Cart", 1375 "3csbuOW2G" => "Magic Toolbox", 1376 "TIA_KQy80" => "Magnite", 1377 "wG7JE3IK" => "Magnolia CMS", 1378 "SJggqNsOi-m" => "Mailchimp", 1379 "Hb4cXZ62" => "MailerLite", 1380 "hMBCbMMRj" => "Mailgun Technologies Inc.", 1381 "-y8Iryeh" => "Mailingwork", 1382 "njy_AxqKG" => "Mailjet", 1383 "Rb9_GOhdl" => "Mailmunch", 1384 "xvQ9rrBdK" => "Mailocator", 1385 "CvYyhHihHVjzsX" => "mailworx", 1386 "HJWse9Es_sWX" => "mainADV", 1387 "T7Dp7SESu" => "Mairdumont Netletix", 1388 "DeK0Hv2ii71Lt6" => "Make", 1389 "Ek1i784CL" => "Mandrill", 1390 "Bk0CpKIkN" => "Map and Route", 59 1391 "U8QkTd2W" => "Mapbox", 1392 "QmkqgbGhi" => "Mapp", 1393 "30sq7vsLd" => "Mapp Intelligence Anonymous Tracking", 1394 "Ouzxu26Rv" => "Mapp Intelligence Full Feature Tracking", 1395 "HpFI85vq-" => "Mapp Intelligence Tag Integration", 1396 "RO1d0uR2fCybGj" => "MapTiler", 1397 "qySmlP-Vg" => "Maptoolkit", 1398 "IKEv1F3uL" => "Marfeel", 1399 "r1Pae9VjusbQ" => "Marfeel Slutions", 1400 "ISdS_fz6apf_0L" => "Marker.io", 1401 "fJGKXqdGb" => "Market Resource Partners", 1402 "BqrjsapwE7B08L" => "Marketing Cloud Einstein", 1403 "rkBBg94sdiW7" => "Marketo", 1404 "B1Z8aG07Q" => "Maßnahmen für Werbung und Remarketing", 1405 "v8O815I--b-cCs" => "Mastercard Masterpass Checkout", 1406 "S1We94i_oZ7" => "MaTelSo", 1407 "Ez5p9gJN0" => "Mathtag", 60 1408 "zqWojrT0P" => "Matomo", 61 1409 "u6fxocwTs" => "Matomo (self hosted)", 1410 "vtoY2LcrVB4gHm" => "Matomo Tag Manager", 1411 "B1a0x54jdiZX" => "Matomy Media", 62 1412 "7bFNv7DLf" => "Matterport", 63 "SJ6xqVidi-X" => "Media Math", 1413 "WZLx_vBAc5RyAP" => "MATTRZ", 1414 "pwrC1OMft" => "Mautic", 1415 "kLzaFClx3VhlBb" => "Maven360", 1416 "MshQNhTYu" => "Maximus", 1417 "H627Q19Ki" => "Maximus Live LLC", 1418 "qCSlzFQB" => "MaxMind", 1419 "Hyhgq4sOs-m" => "Maxymiser", 1420 "rJlGx5Nidi-m" => "Maytrics", 1421 "cK1mt5-o8v2-n6" => "Maze", 1422 "qJcqahB57" => "MBR Targeting", 1423 "O2r8FJT1x" => "MBR Targeting", 1424 "XW5k34f8D" => "Meazy", 1425 "dT7B8jWWx" => "Medallia", 1426 "ByJLxcEidi-7" => "Media.net Advertising FZ", 1427 "PrIbCsXKXhIW7M" => "media.ventive GmbH", 1428 "SJ6xqVidi-X" => "MediaMath", 1429 "ajpf8UKi" => "Medianest", 1430 "YpOIHF5QF" => "Mediards", 1431 "QKvvrc0tp" => "mediarithmics", 1432 "HJUDeqVouob7" => "Mediasmart Mobile", 1433 "QNbB6Hh1c" => "Mediaventive - Performance Channel", 1434 "dtbMASFU35tp0m" => "Meetfox", 1435 "SJyyb9Ei_i-7" => "Meetrics", 1436 "cyt4lSUfdIXHXK" => "mein.toubiz #elements", 1437 "Hm1WEDosEsNT9h" => "Melibo", 1438 "AySJdLTYA" => "Meltwater", 1439 "OV7USFA2A" => "MentionMe", 1440 "Hy8srQ1NX" => "MessengerPeople", 1441 "J05PmJuvt36qTe" => "Meta Pixel", 1442 "kzjRvWOMlxuf63" => "Meta Pixel Advanced Matching", 1443 "tq9_N4UgZ4PbEC" => "Meta social plug-ins", 1444 "fcI2orHMJ" => "Meteonomiqs", 1445 "x6_ma5zhCB77Nx" => "Metricool", 1446 "rkRAg94jdjWm" => "MGID", 1447 "4kJyPLaV2" => "MicroMovieMedia", 1448 "BkeKqEjuoZQ" => "Microsoft Advertising", 1449 "dsS7z9Hv4" => "Microsoft Advertising Remarketing", 1450 "XB0GBAmWEQ7Spr" => "Microsoft App Center", 1451 "PrLTkYnq" => "Microsoft Azure", 1452 "rmmkUdkcF" => "Microsoft Bookings", 1453 "0XIfeH9qx" => "Microsoft Bot Framework", 1454 "jzMEq56vW" => "Microsoft Clarity", 1455 "EOF_F-ezQ" => "Microsoft Conversion Tracking", 1456 "dUzxiHb6Q" => "Microsoft Conversion Tracking", 1457 "31OpY_Rd1dJTKf" => "Microsoft Dynamics 365", 1458 "IlIwO5vXHCMore" => "Microsoft Dynamics 365 Customer Insights", 1459 "M9Nj9klGy" => "Microsoft Dynamics CRM", 1460 "J1gBN9Q0PBFEMj" => "Microsoft Enhanced Conversions", 1461 "s-jP9Kxa1" => "Microsoft Forms", 1462 "00xb_vkGq" => "Microsoft Omnichannel", 1463 "2AMblLg3I" => "Microsoft Remarketing", 1464 "l5j0HxFqd" => "Microsoft Remarketing Conversion", 1465 "sCZcGGgbJ2HWIe" => "Microsoft SharePoint", 1466 "j0Avo0TiCxkRW8" => "Microsoft Sway", 1467 "G9mTwsAcP" => "Microsoft Teams", 1468 "cPmgADKv" => "Midas-network", 1469 "_hV5dqnpKeOQNh" => "Mindbody", 1470 "Ms6JA9Xtr" => "Mindbox", 1471 "7v_Mn--q_" => "Mindbreeze", 1472 "rkL9c4i_sW7" => "MindTake", 1473 "E6AgqirYV" => "Mintegral SDK", 1474 "MPeKZ-_89" => "Minubo", 1475 "S1SQxqViOoWX" => "MiQ", 1476 "aC63kDbno" => "Mirando", 1477 "rkSKecEi_sW7" => "Mirando & amp", 1478 "WLykcwG3u" => "MirrAR", 1479 "ZLmgJFVK7" => "Missena", 1480 "d-6PZM5hs9NdOo" => "Mistplay", 1481 "6DErRaKm0m6N66" => "Mitek MiSnap", 1482 "5FNHm-uj5" => "Mittwald", 1483 "8Gvo_h2Qd" => "Mittwald CM Service GmbH & Co. KG", 64 1484 "4UGBLUJUN" => "Mixcloud", 1485 "rkUK5EsOsWm" => "Mixpanel", 1486 "N5uvpK-j" => "Mixpanel", 1487 "w2ZQ7uy-F" => "Moat", 1488 "S1qqeq4oOsWQ" => "mobalo", 1489 "SJ-KqViOj-7" => "Möbel.de", 1490 "wqtPHyrXz" => "Mobfox", 1491 "ElDYt1RdN" => "mobilApp Face2Face", 1492 "oOSi59gyP" => "Mobile Journey", 1493 "B1Hnlq4ido-X" => "Mobile Professionals", 1494 "OEXRoXIU5" => "mobile.de Ratingwidget", 1495 "VPSyZyTbYPSHpF" => "MobileFuse", 1496 "EHXPzs_EI" => "Mobilewalla, Inc.", 1497 "eHZ7kxgTA" => "mobsuccess", 1498 "sf09FFoYV" => "Mobusi Mobile Advertising", 1499 "GSkFelKJW" => "Moebelix (Möbelix)", 1500 "Yd407miCX" => "Moemax (mömax)", 1501 "sQj54uQRhTIydb" => "MoEngage", 1502 "DTG2HYCG-" => "moin", 1503 "DXrpyA5c" => "mollie", 1504 "p0b03PgiffqmVQ" => "Moloco Ad Cloud", 1505 "MEC7egXDb" => "Monet Engine", 1506 "5z9PmqMLFGdFpH" => "Monetate", 1507 "sFO4O-1jS" => "Monotype - Web Font Tracking", 1508 "g6P2QSiL" => "Moodle", 1509 "m_hq1fmBw" => "Mopinion", 1510 "asj2W6ayi" => "MoPub", 1511 "QxRYWv5Un7Qt9g" => "Morayne", 1512 "rJgz9Nj_o-m" => "Mouseflow", 1513 "-aZCjz9q6" => "Movinga Affiliate Programme", 1514 "ASCgon9qg" => "MovingImage", 1515 "Nrr2EkxPm1TEEi" => "Mozaik App", 1516 "r1OI9EjdjWX" => "MP Newmedia", 1517 "0UlsDKnXZYxJt2" => "mParticle", 1518 "HkPlxcNjdiWm" => "mPlatform", 1519 "B1QLcNsujb7" => "MPNew Media", 1520 "p1R8Y8LKN" => "MSO Digital", 1521 "qEyFq-wLS" => "MTCaptcha", 1522 "Tc6Kcc4x" => "Multiconnect", 1523 "GThDWmHZqyFXWH" => "Munchkin", 1524 "WszJp1rdV6DcVb" => "Mux", 1525 "f_zaWX7mB" => "my.com", 1526 "S1zkWcVi_oWm" => "My6sense", 1527 "6hrW9SIEz" => "myclimate", 1528 "TgQQ_7vG" => "MyFonts", 1529 "aA58s2wH" => "MyFonts Counter", 1530 "6Kri8R7YN" => "Myhotelshop", 1531 "UuZ8TZaDEZ0ieL" => "MyNewsDesk", 1532 "vmiLms-lD" => "Myntelligence", 1533 "DCPRuvbW9JNl9o" => "Myra Security", 1534 "ez0g7yzny" => "MySQL", 1535 "S0i4seKvH" => "myTarget SDK", 1536 "bxAsF3_QIKPzIV" => "myTracker", 1537 "46In7qkId" => "MyTraffic", 1538 "dO_4AQnvq" => "myvisualiq", 1539 "r1Xgl9NjOiZ7" => "N Technologies", 1540 "Bytrq4suoWQ" => "namecheap", 1541 "rkRGx54sOsbm" => "Nano Interactive", 1542 "Bf10TXRhw" => "Nativo", 1543 "IKYHCoHcZHbo3z" => "Navattic", 1544 "XLKA6E3pa" => "Navdmp", 1545 "auPCN9tDL" => "Navegg", 1546 "N2vwT-gQn" => "Naver Analytics", 1547 "r1uh5Es_sZ7" => "Nayoki", 1548 "DODaHKMSN" => "Near", 1549 "9Bdi4IkPi" => "Near Pte Ltd", 1550 "m4c9HetowgSdWb" => "Nearest", 1551 "twRDa3OIX" => "Neccton", 1552 "iVpNpvjDe" => "Neodata", 1553 "Uu7TSzcsV" => "Neodata Group", 1554 "r1DpCbD4Q" => "NEORY", 1555 "MNzdVMVOa" => "Netdna-SSL", 1556 "zp6C6pVg7" => "netID", 1557 "u6zRdbuSRm68CQ" => "netID Privacy Settings", 1558 "gxeBVKiMaS1f4I" => "netID Privatsphaere-Einstellungen", 1559 "rkhNcEiOiWm" => "Netigate", 1560 "H1mYx54sOjWm" => "Netsprint", 1561 "S13Wec4oOj-m" => "NetSuccess", 1562 "cg4DF2Tf3" => "netzeffekt", 1563 "H1mJlcEoOsWQ" => "NEURAL.ONE", 1564 "zWcIXL1Vo" => "Neustar", 1565 "obaJPtBH-" => "Neustar on behalf of The Procter & Gamble Company", 1566 "rJMsqEj_iZQ" => "New Relic", 65 1567 "SJ_6Qo9DJ" => "News Anwaltblatt", 66 "ctDbl6j2y" => "Onlyfy", 1568 "1KYWj02vF" => "News IQ", 1569 "MsFie1C8" => "Newsletter2Go", 1570 "Kvst06Fp6" => "Nexcess Edge CDN", 1571 "67jCxq477" => "NEXD", 1572 "rJvn9Ei_i-m" => "NeXeps", 1573 "9QzVFkXfuKGQDq" => "NextLevel Defend", 1574 "rkBaq4j_jZX" => "NextPerformance", 1575 "kX5CQ9GyhBOw4d" => "NICE inContact", 1576 "F2ydLVmlw" => "Nielsen Audience Measurement", 1577 "jNl0iqYyR" => "Nielsen Marketing Cloud", 1578 "OECc5DF7N" => "Ninja Forms", 1579 "Rz9YZM2_q" => "NitroPack", 1580 "YIIh84btf" => "Nobilia", 1581 "vyO2xoFlk" => "Nosto", 1582 "_NP347b6x" => "Novomind", 1583 "cacONmLO0y2Vs2" => "NPAW", 1584 "HJQo5EjOoW7" => "nr-data.net", 1585 "WNxVOkJj6Bd8Lf" => "Nudgify", 1586 "H1zqqVjOjZ7" => "Nugg Ad", 1587 "I8nSaqdpx" => "Numberly", 1588 "xJtOMgc-4" => "o9", 1589 "sq_4H0evI" => "o9 Solutions", 1590 "rJEIq4suiWQ" => "Oath", 1591 "UD9IMlWyy" => "Oct8ne", 1592 "M8wnlqZvUAkxEv" => "odeeo", 1593 "90nYEa22C" => "Odoo", 1594 "j-5dzGJY_" => "Odoscope", 1595 "QO4LqnO8l" => "Ogulo", 1596 "rJ-vecVo_s-m" => "Ogury", 1597 "L_bj20Jo1OWggP" => "Okendo", 1598 "W_5gGyZbH" => "Okta", 1599 "uM6Xg1b-5" => "Oktopost", 1600 "q7WZXgONy" => "Olark", 1601 "LNxiCu4IM" => "Omnicom", 1602 "CVgj3mZSSWNCJZ" => "Omniconvert", 1603 "6fvpak_ta" => "Omnisend", 1604 "GEGzlSe9N" => "Omniture", 1605 "7O1UQJ3fESc3Ld" => "OMQ", 1606 "Hy4uqVsuiWX" => "OMS Nativendo", 1607 "Sy05g5NodsWQ" => "On Device Research", 1608 "tqc3yijj8rf1JC" => "Onapply", 1609 "O-K_7XAEd" => "OnAudience", 1610 "bDNvyjTof" => "Onboard", 1611 "4YyVB9Jh91uLQ-" => "Onclusive", 1612 "OiFuV1hpk" => "one.com", 1613 "ZZSNphdpA" => "Onedash", 1614 "RVtztac32h7njd" => "OneFootball Player", 1615 "_SUFlQuxf" => "OneSignal", 1616 "BkgueqNjuo-m" => "OneTag", 1617 "pd-3srkxrnEqFL" => "OneTrust", 1618 "b2hQkv9wp" => "Onlim", 1619 "PKJPsVvrW" => "Online Solutions Group", 1620 "ctDbl6j2y" => "onlyfy", 1621 "-CprOBtOX" => "OnMacOn", 1622 "HJcteqEiuiWm" => "Onnetwork", 1623 "saIWttSqY" => "onOffice", 1624 "gYmzZn2CH" => "Ooyala", 1625 "PGmWNqGwK" => "Ooyala (formerly Videoplaza)", 1626 "DaPDMRM49" => "OPAC", 1627 "xh-l8DkyC" => "Open AdStream", 1628 "nTiHcYnDd" => "Open as App", 1629 "W1pThiOU-6QLon" => "Opensignal", 1630 "j7Igy6o8D" => "OpenStreetMap", 1631 "IUvZYr7UZ" => "OpenTable", 1632 "ODw7zueQc" => "OpenWeather", 1633 "HJIge94oOi-7" => "OpenX Software", 1634 "tLtDHkQDe" => "Opinary", 1635 "pNOkVRbV6" => "Opinion Stage", 1636 "k5B3jAr_w" => "Opt-in Monster", 1637 "7Y-9fkhVBOnDYf" => "Optibase.io", 1638 "Pi633RLM" => "Optimise-it", 1639 "3HtWcG9EbUQIRF" => "Optimise-it (Ströer X)", 1640 "BJSN54susZX" => "Optimizely", 1641 "-ZqBkrVsKC2rQp" => "Optimizely Data Platform (ODP)", 1642 "Y1nveY7Vy" => "Optimonk", 1643 "WKMwvSKm7jC3cL" => "Optimus – iPinYou", 1644 "H1giW5JV7" => "Optin", 1645 "HJI5SmLm7" => "Optin", 1646 "SJZvUaJVQ" => "Optin", 1647 "rkVxVS1NQ" => "Optin", 1648 "MDWF9sj-6" => "optinmonster", 1649 "PPpL7pXsf" => "OptinMonster", 1650 "padROq-M" => "Optivo", 1651 "rJx0x5VjujbQ" => "Optomaton", 1652 "-TmM76s1U" => "Oracle", 1653 "QM-Jo32tt" => "Oracle AddThis", 1654 "HySP1b_1r" => "Oracle Infinity IQ", 1655 "KRiD3iESUwRVKW" => "Orbitvu - 360° product photography", 1656 "eAYrlt0w" => "Oribi", 1657 "H1FnWqHRm" => "Oriel WordPress Plugin", 1658 "SkNRl9NidjZm" => "Orion Semantics", 1659 "H10Lx9Nj_sZm" => "ORTEC", 1660 "H17uVFcVB" => "Otto", 1661 "z2Q0N4jr-" => "Our World in Data", 1662 "r1EWc4iuj-X" => "Outbrain", 1663 "HkrZ5NjusWX" => "Outbrain Amplify", 1664 "AH6TVUNbT" => "Outbrain Conversion Tracking", 67 1665 "15h3IBCa8" => "Outdooractive", 68 "nTiHcYnDd" => "Open as App", 69 "j7Igy6o8D" => "Open Street Map", 70 "pNOkVRbV6" => "Opinion Stage", 71 "JiFH1ubU" => "Paypal", 1666 "RZpG2ccmLg16fF" => "Outrank", 1667 "RCd5jeTnb" => "Overheat", 1668 "By159NoOjbQ" => "OWA", 1669 "LAfacyOBx" => "Oxid", 1670 "Md-L8ZYII" => "OXID eShop", 1671 "IZ87SC9KA6YPy5" => "Oxomi", 1672 "BAVEMPsb_" => "Paddle", 1673 "wXZ9L7_OW" => "Pamyra", 1674 "HWSNU_Ll1" => "Pangle SDK", 1675 "4B62fWico" => "Paperform", 1676 "VIpyP1_39" => "PaperG, Inc. dba Thunder Industries", 1677 "xDD3hzjiB" => "Paqato", 1678 "8VrQI_a0FQr9Fa" => "Parcel Perform", 1679 "HkYd5VjOiZm" => "Pardot", 1680 "sjAWaw1cW" => "Parse.ly", 1681 "RL5JLZJfG" => "Parsec Media", 1682 "FulJqehY" => "Partnerize", 1683 "L4PbbiR2L" => "Passkit Wallet", 1684 "hBNf9ZMYz" => "PassKit Wallet - Payments", 1685 "JbpMzs3b-" => "Passolution", 1686 "dno4UTZAH" => "PATHADVICE", 1687 "xkX3CPY1ZRUcmD" => "Pathfactory", 1688 "kLzLxy6IpXc1M1" => "PathMotion", 1689 "hg8bm_ryN4QXRh" => "Payback", 1690 "Gh7rn6Q3" => "Paydirekt", 1691 "p9dKRzCQG1YDs_" => "Payever", 1692 "XdHcWCbb6" => "Paylike", 1693 "dj5raa82hsw1K3" => "Payment Icons by Spark Apps", 1694 "dmhkr4BE" => "Payone", 1695 "JiFH1ubU" => "PayPal", 1696 "Ag4q4HEgK" => "PaySafe", 1697 "8crQza5v6" => "PaySafe", 1698 "FwJPIA--rtTBwb" => "Pearl Diver", 1699 "SyVf9NousW7" => "Peerius", 1700 "Db6tG4Q7z" => "Pega", 1701 "E9HH0S6fn49xSa" => "Pendo", 1702 "SyNFcEi_iZQ" => "Perfect Audience", 1703 "B17neqNido-Q" => "Perform Media Services", 1704 "B1hI9VjdjW7" => "Performance Advertising/Performance Profiles", 1705 "V1ENirOT6" => "Performance Media Deutschland", 1706 "c5jdEIoF" => "Performance Media UTT", 1707 "HkII54i_s-7" => "Performance Werk", 1708 "ryzIqVjdo-Q" => "PerformanceAds (über Neory)", 1709 "JSp_jw2Dp" => "PerimeterX", 1710 "-fYEmVEnP" => "Permaleads", 1711 "r1W6ec4o_jWm" => "Permodo", 1712 "BJiRlc4sOjZm" => "Permutive", 1713 "SknCx5Njdi-m" => "Permutive", 1714 "Vuy5t138I" => "Perseus", 1715 "dGpMz-t3P" => "Personalics", 1716 "NgXCCrOoE" => "Personalics| AR", 1717 "mn077nDsD" => "Personalics| AU", 1718 "U5oS-R63I" => "Personalics| BR", 1719 "sbJyvmeqf" => "Personalics| CO", 1720 "DnbYCtyZA" => "Personalics| NZ", 1721 "fCQ-RsavU" => "Personalics| RU", 1722 "QaV_DAWO6" => "Personalics| RU", 1723 "Bg5a1Cx8N" => "Personalics| TH", 1724 "c6rmTegQL" => "Personalics| TR", 1725 "_eKXsIOaU" => "Personalics| ZY", 1726 "o5siH7r7" => "Personio", 1727 "PFvmDE69X" => "Personyze", 1728 "iSYTvvtko95bht" => "Petal Ads", 1729 "18wNuq2Q9" => "Pexi", 1730 "IUs3PuZd-" => "PhotoEditor SDK", 1731 "eZ7ZUhb8RcWBr1" => "PIA Advertising", 1732 "B7dIEuvmU3N3Z5" => "PIA Media UTT", 1733 "8pTth9A2B" => "Piano", 1734 "Emcyk1Oc" => "picalike", 1735 "o6gOrAuVP" => "Pilotx", 1736 "E1RcKTp-i" => "pilotx.tv", 1737 "lEAV2WxHj" => "Pimcore", 1738 "rynr5EsujZQ" => "Pingdom", 1739 "SkpB54sdiZQ" => "Pingdom (with Performance Tracking)", 1740 "ozz3_rzr7" => "Pinpoll", 72 1741 "9Q2qrmB3" => "Pinterest", 73 "ze3Iyetr" => "Piwik Pro - Duda", 1742 "hFsp0FZO1" => "Pinterest Ads", 1743 "QIekDhgZRq1nIk" => "Pinterest Enhanced Match", 1744 "hsyqb7Jk8" => "Pinterest Rich Pins", 1745 "a_Dw7zFT7" => "Pinterest Tags", 1746 "ZRIsJO12R" => "Pinterest Widget Builder", 1747 "rL2ZmR7Wv" => "Pipedrive", 1748 "ze3Iyetr" => "Piwik Pro", 1749 "FFD0h7L9VZCA4m" => "Piwik PRO", 1750 "0xw-O6TDwbm3gh" => "Piwik PRO (without cookies)", 1751 "Z4KZxdWuV" => "Pixalate", 1752 "6oW2boAdO" => "Pixfuture", 1753 "B1kXg9NsOiWQ" => "PIXIMEDIA", 1754 "TLuhGVXN" => "Pixlee", 1755 "MczN3PJf0jdy4a" => "Plandisc", 1756 "H12Se54jdj-X" => "Platform161", 1757 "D1VA0cn81" => "Plausible Analytics", 1758 "ZAjjjV-N8HTrPz" => "Playable", 74 1759 "cv9bw3QAq" => "Playbuzz", 1760 "9eJHT4SVg" => "Playground xyz EMEA", 1761 "oviePVHrThIzCI" => "PLCrashReporter", 1762 "ByDEc4sOjbm" => "Plista", 1763 "sZAqOmbXv" => "plyr.io", 1764 "cQ9G55y1T" => "Podbean", 1765 "MQdVb1Ths" => "Podcaster", 75 1766 "nhLMP6qX" => "Podigee", 1767 "QrBxtTBc" => "Podlove", 1768 "B1enx94idi-Q" => "Polar Mobile Group", 1769 "jn7PuNE7ryR50p" => "Pollfish", 1770 "_YzvH8nm2" => "Polyfill", 1771 "qu0LnIaEx" => "Polylang", 1772 "-At_u-eGh" => "poptin", 1773 "UIYX_IrT67qCy6" => "Popupsmart", 1774 "1nLXz6_jQwTVQj" => "PostFinance", 1775 "V-HDotieTmnIIE" => "Powerfront", 1776 "SJaix54sOsWm" => "PowerLinks Media", 1777 "pAFmwQtUE" => "Powerspace", 1778 "q0KL21Inu" => "POWR", 1779 "EErS5Csc2gexDK" => "Prebid", 1780 "MJB4jjb2m" => "Predicio", 1781 "PRiMfNq9AmjBUL" => "Prenly", 76 1782 "Sy1naC5nN" => "Prescreen", 1783 "yX_RJArXk" => "Prestashop", 1784 "LTzbMGXbB" => "PREX Programmatic Exchange", 1785 "sXv0xv6Yg" => "Price Spider", 77 1786 "FB_cLNwjQ" => "PriceHubble", 78 "Hko_qNsui-Q" => "reCAPTCHA v1/v2/v3", 1787 "cpdk77FuK" => "PriceSpider - Where to buy", 1788 "ukt9D2w0slYSve" => "PRIMAVERA Affiliate", 1789 "BJP9l9VsOjW7" => "Primis Tech", 1790 "TKSllwIah" => "Prisjakt", 1791 "U7QP-YYXyp5dqT" => "Prismic", 1792 "6I5EMvvT" => "Privy", 1793 "ChYBnsIC" => "ProductsUp", 1794 "S-NGEvTX" => "Profity", 1795 "oMwRt9S6b" => "Programatica de publicidad S.L.", 1796 "NVE2j0evx" => "Prospect Herkenning", 1797 "rk7gq4ous-7" => "Proven Expert", 1798 "lAupl5pjM" => "Proxi.cloud", 1799 "LKrQnwfhc" => "Proxistore", 1800 "Wut37MVpc" => "Prudsys", 1801 "St3XajXXd" => "Psyma", 1802 "ROECN-Tyg" => "PUB OCEAN LIMITED", 1803 "1kHrJq8Xf" => "Pubfinity", 1804 "Hy2Ul5ViuoWX" => "Publicis Media", 1805 "uMYoFacdK" => "Publishers Internationale Pty", 1806 "ux1WtRswgXpWjg" => "Publitas", 1807 "HEgfggF6K" => "Publizon", 1808 "Bym-eqViuo-X" => "PubMatic", 1809 "rA6pW36V6" => "PubNative", 1810 "8YiTreu69" => "PubNub", 1811 "SyaxeqEi_oWX" => "PulsePoint", 1812 "Bk3ke9EoOjbX" => "Purch Group", 1813 "fVenI8qZaiSDea" => "Purchasely", 1814 "8tlwKrz7nBRwqd" => "Purchasely (analytics)", 1815 "8qm4v7INutTL5q" => "Puriphy", 1816 "BjEeUdoqs" => "PurposeLab", 1817 "6x7O_cifFWqG8K" => "PushAlert", 1818 "YGm2DPCil" => "PushEngage", 1819 "wk2G_sYvM" => "Pusher Channels", 1820 "4TKnHohTW" => "Pushpanda", 1821 "Rhtsr8xYL" => "PushPushGo", 1822 "I1BtuRjhnMkx0T" => "Pushwoosh", 1823 "mrhx7zrre" => "Q division", 1824 "l7ugIzopI" => "Qriously", 1825 "pbFdS9IDl" => "Qualaroo", 1826 "UWP2ySm2" => "Qualifio", 1827 "O3yJTmq2cFZi7R" => "Qualimero", 1828 "UsJU9k1K" => "QualityClick", 1829 "0QVzRHXZX" => "Qualtrics", 1830 "nfWrRs_XrJzPPW" => "Quanos", 1831 "rkd49ViuoWQ" => "Quantcast", 1832 "By0R9EjOo-7" => "Quantcast International", 1833 "RHM3MD-dj" => "Quantum Advertising", 1834 "LgERgxPgV" => "Quantum Metric", 1835 "bbIs1mTX" => "Quantyoo", 1836 "1ba4yQk0W" => "Qubit Opentag", 1837 "onZhj5dcS" => "questFON", 1838 "BlCRucxYKUN24b" => "Queue-it", 1839 "ByvlGc5Rm" => "Quibit Opentag", 1840 "cWXfgtNb78StQ2" => "Quick Polls", 1841 "vB4wCpDc4WHSI3" => "Quickchat AI", 1842 "VntU07p5kt4ixN" => "QuinBook", 1843 "wtNtlXMxU_jv1k" => "Quizell", 1844 "7AevQBoe" => "Quora pixel", 1845 "Bymslc4iuib7" => "Qwertize", 1846 "mM03_dNAW" => "R-Advertising", 1847 "E1PsKwwrnI7bh2" => "RadimDienst", 1848 "AydEzuFOw" => "RadioKing", 1849 "QsbWW7EG" => "Radioplayer", 1850 "HyqWxcEidoWm" => "Rakuten Marketing", 1851 "qkz61GF-" => "rapidmail", 1852 "_gSpdOB_t24AdV" => "Raptive", 1853 "3YCp1ywWCtQZyp" => "Raptor Services", 1854 "b2SmwZic" => "RatePay", 1855 "lZWfdL45y" => "Raute Musik", 1856 "9bTrLVvcd" => "Ravelin Mobile SDK", 1857 "SkMETCDgN" => "RawGit", 1858 "-umDZrwm6" => "RAWR", 1859 "BAvtRUiRy" => "Raygun", 1860 "Zwg-7XqvakSTNv" => "Razorpay", 1861 "bBw1uQaNp" => "RD STATION", 1862 "ZdLT87Qd" => "re:amaze", 1863 "veqs-kAz4" => "Reachnet", 1864 "o1FozBbqhgx3bN" => "React Native Firebase", 1865 "H1f2xc4odj-X" => "Readpeak", 1866 "ufhUMr6D2" => "ReadSpeaker", 1867 "f7LFah18V" => "Realeyes OÜ", 1868 "V0CshHa57" => "Realytics", 1869 "dGPun6EbN" => "realzeit", 1870 "SCRjaw0XPoMdSl" => "Rebuy", 1871 "Hko_qNsui-Q" => "reCAPTCHA", 1872 "cfADcn3E3" => "reCaptcha v3", 1873 "QNqdZMWL0l_zKv" => "Recharge.com", 1874 "ncJlxV2ywWo2vN" => "RecoBounce", 1875 "S1Qe-Pn54" => "recognified-microConversion", 1876 "h3nMfxCs7" => "Recolize", 1877 "H_j03b6g" => "Reddit", 1878 "ZglHJrjn" => "Reddit Advertising", 1879 "5JKj-J9nH" => "Redintelligence", 1880 "SyIP9Njdib7" => "Refined Ads", 1881 "_SBGD5koD" => "Refiner", 1882 "vYsMhlFj5" => "Reguest Messenger", 1883 "M66CCVZlE" => "ReigNN Platform", 1884 "ibuf4p3P" => "releva.nz", 1885 "7PmlLEs2t" => "ReMailMe", 1886 "rkjDe94oui-X" => "remerge", 1887 "gTYHewBsK" => "Remintrex", 1888 "H1j9cEoOi-m" => "remintrex.com", 1889 "0jco2jXId" => "Reonic", 1890 "qxQaPHctt" => "Reppublika", 1891 "PXcN3Ui_H" => "Research and Analysis of Media", 1892 "vKwiCret2" => "Research International", 1893 "HkbKeq4o_oZm" => "Research Now Group", 1894 "zy78g-j8KmE0gf" => "resmio", 1895 "193T921PXm" => "Resolution Media smartTracking", 1896 "7cPw4kU75" => "retailAds", 1897 "yGf7yJQfkQaKS_" => "Retarget Online Ads", 1898 "_sJYRyHIwToAJM" => "retargeted.ai", 1899 "6_AoTqxaRDHK-Z" => "ReturnGO", 1900 "r1sKg9VoOjW7" => "Revcontent", 1901 "SJp7xc4iOoWm" => "Reveal Mobile", 1902 "2LQcBGGtLPkeZx" => "RevenueCat", 1903 "5buNZ_jBP" => "Reviews on my website", 1904 "UN5TbrOXlDB1wG" => "Reviews.io", 1905 "Wq0D2klq" => "Revive Adserver", 1906 "OheZEKjS_" => "RevJet", 1907 "wbhw2dV3G" => "RevLifter", 1908 "QtkhD3Pi6i_j-J" => "Revscale AI", 1909 "_-TUZWgAe" => "RevX", 1910 "HymNBQk4m" => "Rexx Recruitment", 1911 "ByoLgqVo_i-m" => "Rezonence", 1912 "H1oll9Njui-X" => "RhythmOne", 1913 "H1wzlq4idoWm" => "Rich Audience", 1914 "pl3anzrRv" => "Riddle", 1915 "U4ZIzraAi3LxA2" => "RingCentral", 1916 "eO9JKghU6" => "Riskine Chatbot", 1917 "J6nsg-J4U" => "Ritzau", 1918 "t1xCHtccq30hUI" => "Riverty", 1919 "9NUDWWc6l" => "RMSi Radio Marketing Service interactive", 1920 "HkLplcNjdiWm" => "Rockabox Media", 1921 "SkhPxcNouoW7" => "Rockerbox", 1922 "BJiLqVo_i-m" => "Rocket Fuel", 1923 "yTeUMhYeyD9YrO" => "Roku", 1924 "HylJecEoOsbQ" => "Roq.Ad", 1925 "FUpg_dxj2uaKzo" => "Roxxad", 1926 "B1Ayg5Es_s-X" => "RTB House", 1927 "4nDnFKAvHCBrwV" => "RTB House - Enhanced Conversions", 1928 "H18p9NjOjZQ" => "RTB Markt", 1929 "HJOdlqVsOjWm" => "RTK", 1930 "M3Tjth_cjh-29B" => "RudderStack", 1931 "9wX039_lO" => "RUN", 1932 "K67zfwHGU" => "S-Public Services", 1933 "BJV2xq4idsZQ" => "S4M", 1934 "fjijtSPA" => "Saferpay", 1935 "uCqSi0hm" => "Sajari", 1936 "te8pKz1mP6gdIS" => "Salenti", 1937 "K7AsmUJ265KOlw" => "salenti GmbH", 1938 "RTLA4o2i1-ia2L" => "Sales Cloud Einstein", 1939 "d_5HNF7Yc" => "Salesforce", 1940 "-tsNPQtMM" => "Salesforce Audience Studio", 1941 "vLUpOAxR" => "Salesforce Audience Studio", 1942 "VTR8E9ZL5" => "Salesforce Chat", 1943 "WTYMoieIB" => "Salesforce Commerce Cloud", 1944 "hku02w1qx9YLjR" => "Salesforce Commerce Cloud Einstein", 1945 "D2cQY5lPghyteN" => "Salesforce Data Cloud", 1946 "IQMIegSQF" => "Salesforce Interaction Studio", 1947 "lgXw0VvDj" => "Salesforce Live Agent", 1948 "Cf2NHO6q5" => "Salesforce Marketing Cloud", 1949 "lX960FalA68X38" => "Salesforce Marketing Cloud Account Engagement", 1950 "wFxuQvYX8MhkWv" => "Salesforce Marketing Cloud Personalisation", 1951 "5VMTG-ihf" => "Salesforce Marketing Cloud Platform SDK", 1952 "8Sp6myo2" => "Salesmanago", 1953 "Gd0bshOBs" => "SalesViewer", 1954 "1dBEu_-G9" => "Samba TV", 1955 "ysjzW_WYo" => "Samba TV UK", 1956 "fz4U3rgPW" => "Samedi", 1957 "iVSrfIuRjlKTE8" => "Samsung Pay", 1958 "t0mg4QEts" => "Sanoma", 1959 "BJUKgqNoOiZm" => "Sanoma Media Finland", 1960 "JKFeC1o3L" => "SAP Commerce Cloud", 1961 "zbnIgVJ7L" => "SAP Customer Data Cloud", 1962 "nhuKp2VDxEIrfq" => "SAP Intelligent Selling Services", 1963 "FonOilDmI" => "SAP SuccessFactors", 1964 "wj4bKa72Og-Ao9" => "Sardine.ai Device Intelligence", 1965 "ixbmcJR2z" => "ScaleMonk", 1966 "JaB_qsJk0" => "Scanblue", 1967 "SkhG5EiOjZ7" => "Scarab Personalized Ads", 1968 "_PDFz0c6-" => "Scarab Research", 1969 "NsaxqX_hah-qfW" => "Scayle", 1970 "S11eg9EjdjW7" => "Scene Stealer", 1971 "Qj4tFgzD1" => "Schedule Demo Form", 1972 "HSmRlcKuL" => "Schibsted", 1973 "dDpujlqia" => "Schibsted Product and Tech UK", 1974 "SyX95Eodi-Q" => "Scorecard Research", 1975 "l4w2eXcvO" => "ScreenOnDemand", 1976 "DHS2sEi4b" => "Search Ads 360", 1977 "--kY7PHHl" => "SearchHub", 1978 "ByZk-qVj_sZX" => "Seeding Alliance", 1979 "Hkq7eqEj_ibm" => "Seedtag Advertising", 1980 "JMsFnFMX2" => "Seenthis", 1981 "O97xcRJFR" => "Segment", 1982 "ByKyW9Ni_sZX" => "Segment.io", 1983 "p6WMXrd8O" => "Segmentify", 1984 "Brj0m8FfV" => "Selit Produktfinder", 1985 "0rhoGZi2z" => "Selligent", 1986 "Syu8e5Nouj-7" => "Sellpoints", 1987 "rJNLgqEidib7" => "Semasio", 1988 "ASSQFNQYB" => "semknox", 1989 "Y7U73xDqH" => "Sendbird", 1990 "JH-hXkWhk" => "SendGrid", 1991 "oozO4Himv" => "Sendinblue", 1992 "6moU2ZMVJ" => "Sendpulse", 1993 "2lK0qen63VUUjL" => "Sensors Data", 1994 "rH1vNPCFR" => "Sentry", 1995 "IBUUElGXQ" => "Service-Chat NRW", 1996 "rcL95kb3d" => "Seznam", 1997 "RHq8V_JEP" => "Sezzle", 79 1998 "B1639EiOs-7" => "ShareThis", 1999 "B13glqEsOiZm" => "Sharethrough", 2000 "alWL-1Ah-" => "Shariff Wrapper", 2001 "ZO_66uRS7D-wV4" => "Sherpa", 2002 "1O5D3XaL" => "Shipcloud", 2003 "BWv175brAL0uSK" => "ShoeAI", 2004 "jkCDUWD-U55JT3" => "Shop Pay", 2005 "7biaTe2Aq" => "Shopalyst", 2006 "QWdMfFJSrw85P7" => "Shopauskunft", 2007 "BMs9IG0jx" => "Shopgate", 2008 "r19SxcEs_o-X" => "Shopify", 2009 "ZQOx-TM97Y3rLe" => "Shopify Analytics", 2010 "1xNAouVLz" => "Shopify CDN", 2011 "zixK7I8y1mhf1D" => "Shopify Marketing", 2012 "T4PQQdTkrEofhd" => "Shopify Preferences", 2013 "HqbXMnOcUaTVOQ" => "Shopify Product Reviews", 2014 "_GO5yfszm" => "Shopify Storefront", 2015 "BNMuzQjTe" => "Shopify Tracking", 2016 "H1yt9Vsdib7" => "shopping24", 2017 "oEKsiywjW" => "Shopstyle", 2018 "9CfO0Zlo" => "ShopSync", 2019 "JYW8pOMD" => "ShopVote", 2020 "bt_SD1xU" => "Shopware", 2021 "xXFRJRUUvCnYD3" => "Shopware Analytics", 80 2022 "W0apH00t" => "Shore", 81 "wkt-Vgmf7" => "Site Analytics - Duda", 82 "8u-otMeLg" => "Site Personalization - Duda", 2023 "SyZQgcEiujZ7" => "ShowHeroes", 2024 "r1k9NOn5N" => "showheroes-microConversion", 2025 "v5RU0B301" => "Sift", 2026 "S1_4g54odoWQ" => "Sift Media", 2027 "ryHRg5NoOibm" => "Signal Digital", 2028 "Ub2GaUXtOJAkTV" => "SignalFx", 2029 "m0XTF89HN" => "Signals", 2030 "hStXBwHBZ" => "Simplecast", 2031 "B1Zxe5EoOjbm" => "Simplifi Holdings", 2032 "AnXv7C3G8yFHKP" => "SimplyBook.me", 2033 "6pgVDH6Gec8UIb" => "Sinch", 2034 "r928ZrE_0" => "Singlespot", 2035 "PLYgpdqL7" => "SingleView", 2036 "OxsYgtMfe7aP8u" => "Singular", 2037 "uHT_iM2Pw" => "Sipgate", 2038 "H1BxlqNs_i-7" => "Sirdata", 2039 "wkt-Vgmf7" => "Site Analytics", 2040 "8u-otMeLg" => "Site Personalization", 2041 "WQaLkh_S7vX97i" => "Site Search", 2042 "jB0PK7c11" => "Site Search 360", 2043 "ryTAjE_nN" => "Sitecore", 2044 "xzhTGdLgLBITjQ" => "Sitefinity Insight", 2045 "HyCsIAwJV" => "Siteimprove", 2046 "NT4pjQB3M" => "SiteSpect", 2047 "0BpGJbtEU" => "SITU8ED", 2048 "hUecQKeCcR8d65" => "Sizekick", 2049 "SJH25No_oWX" => "Sizmek", 2050 "hxGpiJBe-" => "SK Media Group", 2051 "SAKiVpSK7USpIP" => "Skeepers", 2052 "S1rWg5VsOsWQ" => "Skimbit", 2053 "AO6etk8c-" => "Skirentalresorts", 2054 "H1w654suoWX" => "Sklik", 2055 "S1d6cEiuibQ" => "Sklik Conversion", 2056 "HkK69Nsuibm" => "Sklik remarketing", 2057 "4ZVaI4eEq5PV8z" => "Skyflag", 2058 "xmU9xun5Osd5Lt" => "Skyscanner", 2059 "goExmiSU_" => "Sleeknote", 83 2060 "jhJqRRPUe" => "Slideshare", 84 "lr0gmwVMY" => "Smart-rechner", 2061 "pyS8WWsy3" => "Slido", 2062 "B1Ifgq4odsZQ" => "SlimCut Media", 2063 "PE9Ed3gets41WV" => "SlimStat Analytics", 2064 "Byt-l54i_i-Q" => "Smaato", 2065 "ByScgqVj_iZX" => "Smadex", 2066 "HJLZqNi_iZQ" => "SMART AdServer", 2067 "wMMcvc9VH" => "Smart Traffik", 2068 "lr0gmwVMY" => "smart-rechner", 2069 "14G4bs7jk" => "Smartclip Hispania SL", 2070 "S1VvgcVoOs-7" => "Smartclip Holding", 2071 "r1kS7uh5N" => "smartclip-microConversion", 2072 "rkFWLTB9E" => "Smartlook", 2073 "7EtqIjUsfcjX5g" => "Smartnews Ads", 2074 "r1J_e5Vo_o-7" => "Smartology", 2075 "HkTU364VQ" => "smartphoto", 2076 "SJuil9EsdsZQ" => "SMARTSTREAM", 2077 "Skljd5VoN" => "Smartsupp Chat", 2078 "wd4FBU7FF" => "SmartTag", 2079 "36ieROIp0" => "SmartyAds", 2080 "PN62OUjSL" => "Smash Balloon", 2081 "9xlKwSEzW5L8cD" => "Smile Points & Rewards", 2082 "SJ8J-94sdob7" => "Smind", 2083 "XQxLeJYgJGhitg" => "Smoobu", 2084 "Aytn62TR" => "Snap Pixel", 2085 "QcD9GVNXZ" => "Snapchat", 2086 "s2NmgIZR" => "Snapchat Advertising", 2087 "QyQDBoUQg" => "Snapchat Advertising| BR", 2088 "Vgv6UrFab" => "Snapchat Advertising| AR", 2089 "-Ue0ZFXop" => "Snapchat Advertising| AU", 2090 "xWnKQt3oW" => "Snapchat Advertising| CO", 2091 "jq1wQFwhg" => "Snapchat Advertising| NZ", 2092 "vOuHc-NPG" => "Snapchat Advertising| RU", 2093 "xY7o0b9w1" => "Snapchat Advertising| TH", 2094 "L2RgYWdWK" => "Snapchat Advertising| TR", 2095 "TtCGGQDIR" => "Snapchat Advertising| TW", 2096 "oqcTvme_4" => "Snapchat Advertising| ZY", 2097 "MMH99u1RZD85L6" => "SnapEngage", 2098 "ryo7lcEoOsW7" => "Snapsort", 85 2099 "t-J9SUrOD" => "Snatchbot", 86 "HyP_q4sdobm" => "SoundCloud", 2100 "rk9hqEjujWm" => "Snazzy Maps", 2101 "HJhd5Vodj-m" => "SnowPlow", 2102 "4RDUc6rQCXeg2G" => "SociableKIT", 2103 "FFHGOeImK6mYmb" => "Social Intents", 2104 "7YQmKOWTZC3qFU" => "Social Media Icons by Powr", 2105 "OuPgkQpTxx3WnQ" => "Social Media Stream", 2106 "or3Fv0pUyCrNOq" => "Social Stream by Powr", 2107 "C9j3siwSa" => "Social9", 2108 "r1KU9EjOs-m" => "Sociomantic", 2109 "dr7NVhfO" => "Sofortüberweisung", 2110 "IVJaVuGhO" => "Softgarden", 2111 "S14iecEjus-m" => "Sojern", 2112 "qMiAvmQaRvZEvW" => "SolarWinds", 2113 "nxPvymx_wmYVW9" => "Solute", 2114 "J9Kke_pd" => "SOMA 2", 2115 "Gm3wofk4X" => "SoMo Audience", 2116 "Nqlc4OkV_1wCbn" => "Songkick", 2117 "Sy6ug5Ei_sWQ" => "Sonobi", 2118 "HyP_q4sdobm" => "Soundcloud", 2119 "CkAdOlUti" => "Sourcepoint Technologies", 87 2120 "Di_NMaFOX" => "Sovendus", 2121 "SwfsIIp0w" => "Sovido", 2122 "r1VJl9Eodj-X" => "Sovrn Holdings", 2123 "t7HmZssR_" => "Spectrio", 2124 "jmMFHnB6mrfk-e" => "Speed Kit", 2125 "Sy7BxqEo_oZQ" => "SpeedCurve", 88 2126 "1dU2WuKlq" => "Splicky", 2127 "BJyte9Eodsb7" => "Spolecznosci", 2128 "S1UO94s_j-m" => "Spoods", 2129 "bpghsHfYq" => "Sportradar", 2130 "6GGTzqxmW" => "sporttotal.tv", 2131 "Syk9xqEjOjb7" => "Spot", 2132 "r1Fdg5VidoZm" => "Spotad", 2133 "rkTwqfqG4" => "Spoteffects", 89 2134 "CguMb4Rq" => "Spotify", 2135 "5UjJeo5b76bLbG" => "Spotify Pixel", 2136 "ByLolcNs_i-m" => "SpotX", 2137 "4wrpWvmJG" => "Spreaker", 2138 "ib1Ev0zRq" => "Sprig", 2139 "5B-RNJj74" => "Springserve", 2140 "Hxzjma-sr4cVM2" => "Sprinklr", 2141 "DKf7fKfS3" => "Squarelovin", 2142 "D899zyhv" => "Squarespace", 2143 "HJ5nxcEiOjZm" => "StackAdapt", 2144 "1YtjwdeNS" => "StackPath LLC", 2145 "b67YnSAu9CLgAu" => "Stape", 2146 "ubNMO2xR0" => "Start.io", 2147 "4_kDVB0G_" => "StartApp", 2148 "lZ1Yj0x9eu-o4J" => "Stationista", 2149 "dp5ilPzrh" => "Statscore", 2150 "MEwyBx0CP" => "Statsperform", 2151 "MXdXD1aLX" => "Statuspage", 2152 "Byn9eqVouiW7" => "Steel House", 2153 "DJKdYm2OT" => "StepStone", 2154 "qZABWrf6" => "Stetic", 2155 "t6wsB2fC_2sSOU" => "Störung24", 2156 "lh6FOG7pr" => "Störungsauskunft", 2157 "BkW7DxlpN" => "Storyblok", 2158 "DZgkFbk_nmmNES" => "Storylane", 2159 "pkhfgyEdb" => "StoryStream", 2160 "Msopw0_StEf_bD" => "Strandbutler", 2161 "H1qBqEsuoW7" => "STRATO", 2162 "Pl56GO5A4GZxRO" => "StreamElements", 2163 "ry3w9Vo_oZ7" => "Stripe", 2164 "rkl-G_39E" => "stroeer-microConversion", 2165 "BylXlqNjOiWX" => "Stroer", 2166 "ZTcsIow_F" => "Ströer", 2167 "fRgMuO9BL" => "Ströer Mobile Performance", 2168 "kso842_9e" => "Styla", 2169 "By62WruhN" => "Stylight", 2170 "v09zSZYpp" => "Sub2 Technologies", 2171 "KxVYGUG4yKjEsH" => "Subi", 2172 "SkKNl9Vi_iZQ" => "Sublime Skinz", 2173 "BI4Y-f3Wv" => "SunMedia", 2174 "4NlDVAKQn" => "Sunnysales", 2175 "bUoWvj7_8drtjq" => "Supademo", 2176 "vSIINyq1z" => "Superchat", 2177 "xLgL2b0bmU-RT_" => "Supersonic", 2178 "GAM9YGKr" => "SurveyMonkey", 2179 "8aGfNIzjr" => "Swiftype", 2180 "Dr1UU3xeZEx72S" => "Swrve", 2181 "4hxLtM08VF9C2l" => "symplr", 2182 "XVMS7DXMIqBGYS" => "Syndigo", 2183 "gWbBsn1RYwH_lx" => "Synerise", 2184 "lQ5e6dfAz" => "T-Mobile", 2185 "v9tJSJ08Y" => "Tableau", 2186 "SkyTg5Ns_i-X" => "TabMo", 90 2187 "HkMucNoOjWX" => "Taboola", 2188 "Sy1zg5Vs_sW7" => "Taboola Europe", 2189 "FhDiEVqHC" => "TAC Webshop Essenzielle Cookies", 2190 "hIeVmYL9N" => "TAC Webshop Funktionelle Cookies", 2191 "5ZrVbTw7b" => "TACTIC Real-Time Marketing", 2192 "_tshR74x" => "Tagboard", 2193 "ryi2qNjOsbX" => "TagCommander Reporting", 91 2194 "RyDAUe7cq" => "Taggbox", 92 "T7-yEXGyq" => "Thinglink", 2195 "kyVR8HsYW" => "Taggstar", 2196 "qy3H-XjIfbtJWD" => "Talkable", 2197 "6Xqz7ZnXC" => "tanke-günstig", 2198 "S1N-x54o_oW7" => "Tapad", 2199 "C_KUwwiYRfbe-i" => "Tapfiliate", 2200 "B1DLe54jui-X" => "Tapjoy", 2201 "z4TbaRIIC0brTu" => "Tapjoy offerwall", 2202 "RJCAlbdBc" => "Tappx", 2203 "MCIll-bt4PqHy6" => "TapResearch", 2204 "Xr7yRmfanhOWQE" => "Tapstream", 2205 "V4chy2PIoJJZjy" => "TapTap Developer Services", 2206 "rCxd-Bnaa" => "TapTap Networks", 2207 "EJYIUb6BF" => "Target 2 Sell", 2208 "v6tSxbOVH" => "Target Circle", 2209 "HkPv9Es_jbQ" => "targeting360", 2210 "B1tP9Nodo-m" => "TargetPerformance", 2211 "1UQKjRoGT" => "Targetspot", 2212 "6Dv6h2w5n" => "Targetspot Belgium", 2213 "BJJ854o_j-Q" => "tawk.to", 2214 "HkVMl54s_o-Q" => "Teads", 2215 "Wl1S8uKS-" => "Teads (Advertiser)", 2216 "B1Pb9NoOiZQ" => "Tealium AudienceStream", 2217 "s8nQgU9A5" => "Tealium Inc", 2218 "p4WgtHjOT" => "Tealium iQ Tag Management", 2219 "QqzXCO9VP" => "Tealium| AR", 2220 "BfqgBI84c" => "Tealium| AU", 2221 "j1SGOMDqk" => "Tealium| BR", 2222 "2IQwco7dT" => "Tealium| NZ", 2223 "cm5VE-yQ0" => "Tealium| RU", 2224 "X6JJe1FkL" => "Tealium| TR", 2225 "rcYm1yzZK" => "Tealium| ZY", 2226 "4-jVGw3EB" => "Teamleader", 2227 "B8yveZ4au" => "Teburio", 2228 "P3VIjrbk4" => "techstage", 2229 "aMyJcSkV4" => "tectumedia", 2230 "3q2DGFRrLVqdep" => "TeeGschwendner Digital Assistant", 2231 "rJX7gcNouibQ" => "Teemo", 2232 "SJF6l9NjuibQ" => "Telaria", 2233 "ea-xVf3MC" => "Telecash IPG", 2234 "6GtvRE0ff" => "Telecoming", 2235 "2wlDEfon" => "Tellja", 2236 "r1q8cEiOjZQ" => "Teltarif", 2237 "tMLzMavbHZoxW0" => "Tencent", 2238 "koA9N7uWiA_hub" => "Tencent Cloud", 2239 "XIQgHfhvd" => "Tenjin SDK", 2240 "BJ6Sx5Ej_sbQ" => "Teroa", 2241 "tdEZhT6cG" => "test", 2242 "0c3vKE023" => "Test Inc.", 2243 "2n8RK-smZ" => "Test Lang", 2244 "sL4-Ck-Sx" => "test Vinzent", 2245 "SJJZ5Eo_sWm" => "The Adex", 2246 "_9it-YkNL" => "The Fork", 2247 "f4a6F1Hm" => "The Hotels Network", 2248 "r1BTxcEiuibQ" => "The Kantar Group", 2249 "8FyAz-7bl" => "The MediaGrid", 2250 "Ewa5m2ssH" => "The Ozone Project", 2251 "C2Evy60pW" => "The Ozone Project Limited", 2252 "rBPQDekS" => "The Performance Network Group", 2253 "H1oylqNodiWm" => "The Rubicon Project", 2254 "OzDyoQHcv7fkNe" => "The UK Trade Desk", 2255 "B1SI9Nsus-Q" => "TheReachGroup", 2256 "YwzRJ2YSSul9Pu" => "THG-Quote", 2257 "T7-yEXGyq" => "ThingLink", 2258 "4r6R0KGQr" => "Thinkific", 2259 "Byp4x94jdj-7" => "Thirdpresence", 2260 "0heqn2Evr" => "Tickaroo", 2261 "oLePnlfdKezncd" => "TicketPilot App", 2262 "37aIQwT9" => "Tidio", 93 2263 "Z0TcXjY0P" => "TikTok", 94 "1rXAPWvo" => "TwentyThree", 2264 "lIWYtXOZYJmqeh" => "TikTok Advanced Matching", 2265 "6-qobRfu" => "TikTok Advertising", 2266 "UUHnYR2KjbsJxD" => "TikTok Customer Files Audiences", 2267 "S1-9eq4s_i-X" => "TimeOne", 2268 "eK1KmD4tp-3_ql" => "TimeOne Cashback", 2269 "cqQ73nkHZ" => "Timify", 2270 "r1FBgcNsOjbX" => "tisoomi", 2271 "KAkHLuaii" => "tisoomi", 2272 "eONR_nohcxjqOm" => "TiXel: TikTok Pixel Installer", 2273 "VmTZ3pQFm" => "TNS", 2274 "goefqkpwt-EBoc" => "Tockify", 2275 "ZRwzjOHVTeOdzL" => "Toornament", 2276 "4RtuUue1OFVsLb" => "TopOn Mediation", 2277 "w2Oa_gut0" => "Totaljobs Group", 2278 "HJsTqEjdi-m" => "Tracdelight", 2279 "UvrL7X7P" => "Tracdelight", 2280 "2LMFkTl43ochrm" => "TraceParts", 2281 "LE7HJ4PSr5f_xP" => "Tracify", 2282 "qmRBk_tGyVYkSw" => "Trackingplan", 2283 "1jX4G1uhc" => "TrackJS", 2284 "xIWtwj3zQ" => "Trade Tracker", 2285 "H1QMcEsusbm" => "TradeDesk", 2286 "5LFVxHGKz" => "TradeDoubler", 2287 "K89uca-E" => "TraDeers", 2288 "S1tJeq4idibQ" => "Tradelab", 2289 "3V4pWi5-v9IUlA" => "TradingView", 2290 "Zg-G0ubDKrhaGl" => "TrafficGuard", 2291 "M86L0YB5Y" => "Transparent Ad Marketplace", 2292 "X97yqPV4_" => "TransUnion Pixel", 2293 "45yNDW9XQ" => "travel audience", 2294 "xO_ngqGtE" => "Travel Data Collective", 2295 "ryxCCtrEX" => "trbo", 2296 "SJMM5Niuibm" => "trbo (only Banner)", 2297 "ByWM9EidoW7" => "trbo (with Profiling)", 2298 "BJLVe9Vs_o-7" => "TreSensa", 2299 "2CGv-fVCb" => "Triapodi", 2300 "GZ2ECdXMt" => "Triboo Data Analytics", 2301 "5oVj_u8vk" => "Trifelsland", 2302 "fo8JRhlLx" => "Tripadvisor", 2303 "rJB0qNiuiWX" => "TripleLift", 2304 "f2Xhlu1kwL6wud" => "Triptease Meta", 2305 "SJe9ecEjOoZm" => "Triton Digital Canada", 2306 "VCNvYtxn" => "Trivago", 2307 "LXEK37SBs11A6L" => "TruConversion", 2308 "BDi0AjrMZ" => "TrueData", 2309 "jxwVTpxsC" => "Trustami", 2310 "HJrGqEs_i-Q" => "Trusted Shops", 2311 "euTxF4hQ" => "Trusted Shops Trustbadge", 2312 "ukD8BZWBj3LFOY" => "Trustindex", 2313 "qEs4t49Rg" => "Trustpilot", 2314 "6jYKEgwhU" => "TrustYou", 2315 "I9i1N9PI" => "Tumblr", 2316 "JJeggfnFB" => "Tunnl", 2317 "ckK7ZKfRComWrB" => "TV Scientific", 2318 "1G1_Btll" => "TVSquared", 2319 "ckfz7Oq4V" => "TVTY", 2320 "1rXAPWvo" => "Twentythree", 2321 "lXv9W6DaC" => "twiago", 2322 "Iq25S_pX--J_hW" => "Twik Analytics", 2323 "hEGw72h9Kfd6Id" => "TWIPLA", 95 2324 "FPZz1xJI" => "Twitch", 2325 "Skj79NodobQ" => "Twitter Advertising", 2326 "S1hmcVouiZm" => "Twitter Analytics", 2327 "S1tqOzjaX" => "Twitter Button", 2328 "W-HOHMTVq" => "Twitter Conversion Tracking", 2329 "2PLSJfB9b" => "Twitter Embed", 2330 "l6zPfvPkjsPnAz" => "Twitter Feed by Powr", 96 2331 "BJTzqNi_i-m" => "Twitter Plugin", 2332 "HLap0udLC" => "Twitter Syndication", 2333 "tFz4Cw7VT" => "Type Network", 97 2334 "r1PkZcEs_iWQ" => "Typeform", 2335 "RjoygBzf" => "TYPO3", 2336 "1ZHq-qRzK" => "Typotheque", 2337 "aorF_ElSL" => "uberall", 2338 "nA2KQ61iE" => "UberMedia", 2339 "aKntdawA_" => "UberMedia, Inc.", 2340 "nTcBEybQf" => "Ucfunnel", 2341 "Qs12mrYFcBzmvb" => "Umami", 2342 "gT1Q1VFEmY8Et7" => "Umlaut", 2343 "G47k4Ne9E" => "Unbounce", 2344 "BkFXx5Vj_jWX" => "Underdog Media", 2345 "iW3MGmyfUxZ7HF" => "Unibuddy", 2346 "mHoPzPj5" => "UNiDAYS", 2347 "MlmXX71g2" => "United Internet Media", 2348 "hpb62D82I" => "Unity Ads", 2349 "RXkipVe3xznWMq" => "Unity Analytics", 2350 "u5OQ-l0wp" => "Unity Engine", 2351 "tQGcwFWxSytrne" => "Unleash", 2352 "K6r10fdN3" => "unpkg", 2353 "tVPe8YXLM" => "Unruly", 2354 "B1Cul54oOsWQ" => "Unruly Group", 2355 "ZEWPQ-W1toVviz" => "Unsplash", 2356 "Ql2nuxpSW" => "unzer", 2357 "53V4PdUMx" => "uppr", 2358 "R7khlI4W_" => "UpPromote", 2359 "8rY_il3xD" => "Uprival", 2360 "1YFXOzPGu" => "Upscope", 2361 "4JA3zqWR" => "UpScore", 2362 "3YMnUfi7b" => "Uptain", 2363 "33R-IpmHz" => "Uptain", 2364 "tLc9QWcWb" => "uptain", 2365 "Kg8CQlqnM" => "Uptain", 2366 "ATdSW9eQ" => "Uptime.com", 2367 "ZnwVCTXb7" => "Urban Media", 2368 "ByvxcNj_jWm" => "Usabilla", 2369 "bysopElpKKOau0" => "Useberry", 2370 "SkL3gqEiujbX" => "usemax advertisement", 2371 "Hk8e94jOjWX" => "Usercentrics", 2372 "Hk9SicTN7" => "Usercentrics Consent Management Platform", 2373 "SkfHqqa4Q" => "Usercentrics Consent Management Platform", 2374 "H1Vl5NidjWX" => "Usercentrics Consent Management Platform", 2375 "oblP60NVHBW" => "Usercentrics Consent Management Platform + Bridge", 2376 "BlGhk0Zr76YlS3" => "Usercentrics for Wix", 2377 "_of52Ktc_4R8-e" => "Usercentrics Preference Manager", 2378 "IYwkrVwaVHh-we" => "Usercentrics Server-Side Tracking", 2379 "5wohJ1Vz9" => "Userlane", 2380 "So-uj5T0g" => "UserLeap", 2381 "xyKq_EfQf" => "Userlike", 2382 "GlnJWNMwY" => "Userpilot", 2383 "q6v0dSqJn" => "UserReport", 2384 "VNCe4TzBR" => "Usersnap", 2385 "p23Qzm_ifVHR0s" => "Userway", 2386 "deFBzsgiE" => "Userzoom", 2387 "1YUf8deyM" => "Userzoom| AU", 2388 "j6hcnPivn" => "Userzoom| BR", 2389 "pGck39PMA" => "Userzoom| CO", 2390 "pIGg_nv5V" => "Userzoom| NZ", 2391 "bthHXueSG" => "Userzoom| RU", 2392 "dHpqcqCrK" => "Userzoom| TH", 2393 "Sri8kf_aM" => "Userzoom| TR", 2394 "bZlvKs_IMR" => "Userzoom| ZY", 2395 "ZFZZSibrq9O4Tp" => "Utiq", 2396 "xCpJ_gp0s" => "Uxcam", 2397 "orppvjxZm" => "V LLC \"V Kontakte\"Kontakte", 2398 "DgK0ku83emM6Qz" => "Varify.io", 2399 "IVj4RQ5FGnW6rW" => "vchfy", 2400 "HLoyNqJcN" => "vcita", 2401 "B1UG5NoOoZQ" => "Ve interactive", 2402 "Qi8jadltE" => "Vectaury", 2403 "HyZ59NjOoZm" => "Veeseo", 2404 "mD3tyKxok" => "VELUX Dachfenster-Konfigurator", 2405 "B1_CqNoOoZ7" => "Venatus Media", 2406 "I1OcL3FNP" => "Vercel", 2407 "ryipsERQm" => "Verivox", 2408 "_B2wa6TgU" => "verizon media", 2409 "5bv4OvSwoXKh-G" => "Verve HyBid (PubNative)", 2410 "II_bo7LXx" => "VG Wort", 2411 "aLHtZ1nd2" => "Viafree", 2412 "NqJSRFYHn" => "Vibrant", 2413 "BybJx5Ej_sbQ" => "Vibrant Media", 2414 "-vsBRkUb-" => "Vidazoo", 2415 "H1XLx5NidjZX" => "Video intelligence", 2416 "MFWPBPuDV" => "Video Reach", 2417 "an461XYFW" => "Video-Stream-Hosting", 98 2418 "VtnVCeUzx" => "Videoask", 2419 "o3IOVN-EL" => "VideoForce", 2420 "rJOne94sOsZQ" => "Videology", 2421 "OKc8nSquCFOa9g" => "Videoly", 99 2422 "SDFUIfvK_" => "Videolyser", 2423 "1bOkjhWvT" => "Vidoomy", 100 2424 "KRDJ6FLgY" => "Vidyard", 2425 "4BYAmnO9m" => "ViewPay", 101 2426 "HyEX5Nidi-m" => "Vimeo", 102 "FtE1AC6zU" => "Walls.io", 103 "Ouzxu26Rv" => "Mapp Intelligence Full Feature Tracking", 104 "rerXlW9h2" => "Wetter", 2427 "H1DFlcEsdibQ" => "Viralize", 2428 "sdZuVwP32" => "Virtuelles Kraftwerk", 2429 "QYHT8hHQChD1q-" => "VIS.X", 2430 "rrRNlc3vT" => "Visable", 2431 "HyU0ecEoui-m" => "Visarity Technologies", 2432 "TYeEKVs18" => "Visiolink", 2433 "mv69J5pRC" => "Visitlead", 2434 "q0TXDmYmHH_JJg" => "Visitor Analytics", 2435 "zD9kWrMoLrklZS" => "Visual Studio App Center", 2436 "SJDM9Niuo-X" => "Visual Website Optimizer (VWO)", 2437 "Jn9c7Tfq0" => "Vivalu", 2438 "8smf-hSjP" => "Vivocha", 2439 "HyLs5Eo_o-X" => "Vivocha.com", 2440 "XLgahyVP4" => "VK", 2441 "kkM0HzB51" => "VKontakte", 2442 "SyzGit9AQ" => "Vlyby", 2443 "VhrUzGOecZCpsG" => "Vonage", 2444 "Og6R2HVi_" => "Vorabs", 2445 "LHXgL1cqAdwFmY" => "Voyado", 2446 "Y73tAnhSEmf5qf" => "VRS-Fahrplanauskunft", 2447 "smfJjwmyhQUnOG" => "VRS-Services", 2448 "ryXAe5Vidi-m" => "Vuble", 2449 "lLUj_XgKu" => "Vue Storefront", 2450 "jk3jF2tpw" => "Vungle", 2451 "rJWa8AwkN" => "Vuture", 2452 "tjhfqDKU7WDHGY" => "Vviinn", 2453 "JelIv_yAko16fL" => "Wallee", 2454 "FtE1AC6zU" => "walls.io", 2455 "iXbVZ7fa6r8maG" => "Wappier", 2456 "e29f8Vdyp4W57i" => "Warmly", 2457 "L8d0nv7aV0fQxV" => "WEB-STAT", 2458 "HLIDnkMQM" => "WebAds", 2459 "zPNaggrXq" => "WebClient Deskline", 2460 "E4wl_G9bA" => "Webedia", 2461 "BJ0H5NjOjWX" => "webflow", 2462 "-kU4dND5" => "Webgains", 2463 "AEyJyq5ye" => "Webinaris", 2464 "W3K_bLFj8" => "WebinarJam", 2465 "0k0AUcHfb" => "Webinterpret", 2466 "PLTUN6yyF" => "Weblication CMS", 2467 "W23lERozKtYsY3" => "Webmetic", 2468 "r1onecNi_o-m" => "WEBORAMA", 2469 "HkOM1990X" => "Webpack", 2470 "yzKKqTsr_" => "Website Analytics", 2471 "RnMemAEwY" => "Website Personalization", 2472 "OeCcKwIQw" => "Website-Check.de", 2473 "rJOZc4jOiWQ" => "Webtrekk", 2474 "rktWq4jdiZ7" => "Webtrekk Control Cookie", 2475 "Arsb_Ah3_" => "Webtrends", 2476 "6SMuld8jm" => "Webtype", 2477 "Eqhn6waf4" => "Webtype LLC", 2478 "jHX52v1GWN-mv1" => "WeChat", 2479 "73581zoQJ" => "Weglot", 2480 "Ni9WZOaz-" => "wein.cc Tracking Services", 2481 "15c60FWkdsHa_a" => "Welcome Bar by Hero Apps", 2482 "B1FhxcNs_jZX" => "Welect", 2483 "fxHSiaLhw" => "Wellness-Heaven", 2484 "UnsLGXKCAkzLRk" => "WellnessLiving", 2485 "2Oy_TIoZw6KE7B" => "Wer Kennt Den Besten", 2486 "hT9JFtMVtpwyoB" => "Wertgarantie", 2487 "2vCMNRtu_" => "Wesko Decor", 2488 "rerXlW9h2" => "wetter.com", 2489 "0Btb-gow1" => "Whatchado", 2490 "UqEPxPN80fKztp" => "WhatConverts", 2491 "8WG3bXn65" => "WhatRocks", 2492 "BJ1Q5NoOj-7" => "WhatsApp Share", 2493 "JznZhvhYd" => "Whenever Media", 2494 "pv0mpMZ1a" => "White Ops", 2495 "N3-I--tsKeuX8a" => "WhosOn", 2496 "Sydfec4suo-m" => "Widespace", 105 2497 "uJRRy9uiQ" => "Wigeogis", 2498 "3tUk2XsJ" => "WIHP", 2499 "NcaPcM6wxi6yty" => "Wildjar", 2500 "BJca3KUJE" => "Wipe", 2501 "1e020ptamFlYNx" => "Wirtualna Polska", 2502 "BysTm2K2V" => "WisePops", 106 2503 "SJ1aqNjOs-m" => "Wistia", 2504 "hJD19HAQd" => "WIX", 2505 "jJ7xSGep4HrYql" => "Wix Hotels", 2506 "GhhPJ0pkKqijxb" => "Wix Music", 2507 "H1jae94jOoZ7" => "Wizaly", 2508 "SbGWQWAkC" => "WooCommerce", 2509 "WiN426fmGX3NxG" => "Woopra", 2510 "SkaV9Eidjbm" => "Wordfence (WordPress Plugin)", 2511 "SygB9VsdobX" => "Wordpress Emoji", 2512 "y0Ayg3nf" => "WordPress Stats", 2513 "HytX5Voui-7" => "WordPress.com Stats", 2514 "ByjH5VouiZ7" => "WordPress.org", 2515 "GTUjO35prc0xaj" => "wowing", 2516 "nVm_-J1dTCWj_9" => "WP Rocket", 2517 "QXfH7DP2W" => "WP YouTube Lyte", 2518 "3KcwTMyqr" => "WP-Immomakler", 2519 "wV2laX_4P" => "WPML", 2520 "8RizN1mnI" => "Wufoo", 2521 "nkoosEfzR" => "wurfl.io", 2522 "W15mfImvRq7bmp" => "X advertising", 2523 "mf1x-DJT0A_XJE" => "X Plugin", 2524 "JXYrspYMA" => "X-mode Social", 2525 "78MDtp5w7phvUv" => "X2M", 2526 "CLUJ3MUWcXBYDk" => "X3M", 2527 "S0P0EnP81RqAX2" => "XAD spoteffects", 2528 "mNyhYVmpE" => "Xandr", 2529 "rkqVqNoOib7" => "Xaxis", 2530 "eR2DWcpGpkzmCc" => "Xing Ads", 2531 "dcAIXV5pe" => "Xing Events", 107 2532 "BJREqEiOiZQ" => "Xing Plugin", 2533 "r3RuKbcl_" => "XiTi", 2534 "S1g2cNjdi-m" => "xiti.com", 2535 "HJNhqEidiW7" => "XPlosion", 2536 "oghGv-_Yn" => "Xpose360", 2537 "HyLh5EsdiZQ" => "XQueue", 2538 "M6-1NWY_b" => "XTCsid", 2539 "xtJckP3kEUqMx_" => "Xtremepush", 2540 "HDgHqlS_c" => "Yahoo", 2541 "vVG5mOxie" => "Yahoo Ad Manager Plus", 2542 "MG6mo4hTJ" => "Yahoo Analytics", 2543 "HJSPc4ids-Q" => "Yahoo Gemini", 2544 "gUbemZYaQwqxss" => "Yahoo Japan Ads Search Ads", 2545 "7pEXodGkwM6LwJ" => "Yahoo Mobile Ads", 2546 "gHY2exdu" => "Yandex", 2547 "N3DoyeVrpJk9X3" => "Yandex Mobile Ads", 2548 "Fglp04Xrc" => "Yandex| AU", 2549 "a3-2F7fCP" => "Yandex| BR", 2550 "1RZFuLF8w" => "Yandex| CO", 2551 "z71b76KUP" => "Yandex| NZ", 2552 "Yph6TvdYO" => "Yandex| RU", 2553 "cnYnIVV75" => "Yandex| RU", 2554 "5BEOUpIJ1" => "Yandex| TR", 2555 "537m4QAx3" => "Yandex| ZY", 2556 "vAk2cSOol" => "YellowHammer Media Group", 2557 "DWFwsBMnR4XG-u" => "YellowMap", 108 2558 "5qKtc_BS" => "Yelp", 2559 "_dq05UfFA" => "Yext Analytics", 2560 "BCQ3njl_S" => "Yext Listings & Pages", 2561 "mIq9zoltz" => "YieldKit", 2562 "Hk5F5VsdoZ7" => "Yieldlab", 2563 "H1lyZq4s_i-Q" => "Yieldlove", 2564 "ryHNeqEsdjWX" => "Yieldmo", 2565 "426xkJRu_" => "Yieldr", 2566 "k5N5bLgoY" => "yntro", 2567 "cFuPZkrqz" => "YOC", 2568 "ZaV13iE2OA5yor" => "Yodo1", 2569 "dYr0Ee0Fs" => "Yormedia Solutions", 2570 "VmzO5ZUJA" => "Yotpo", 2571 "O3JScppCm" => "YouGov", 2572 "2uI5Zl7Qn" => "Youku", 2573 "EROmFc3DZXzv2k" => "Yousty", 2574 "pJiqJb5S" => "YOUTH ID", 2575 "r1ejcEi_jZ7" => "Youtube Cookies (ytimg)", 2576 "rPnCiKpia" => "YouTube Subscribe Button", 2577 "iVTAGV51C" => "YouTube Video", 109 2578 "BJz7qNsdj-7" => "YouTube Video", 110 "6LdBYXdAl" => "Yumpu", 2579 "6LdBYXdAl" => "yumpu", 2580 "9BBsmV62" => "yumpu.com", 2581 "HrufLEgkd" => "Zanox", 2582 "BJhj94o_iZ7" => "zanox.com", 2583 "ln6ss5Vvy" => "Zapier", 2584 "jGIQ1S51deZrW4" => "Zapnito", 2585 "invbogd4InL28O" => "ZBO Media", 2586 "H1Rwgc4juiZX" => "Zebestof", 2587 "rkL8e5No_iZX" => "Zemanta", 2588 "ryxNqNjOiW7" => "Zendesk", 2589 "54s8nFgf" => "Zendesk", 2590 "ZvGdwtkk1x3HFI" => "Zendesk Widget", 2591 "GhNn13gjt" => "Zenfulfillment", 2592 "kl7s_U3CC" => "zenloop", 2593 "ryA3xc4jOoWQ" => "zeotap", 2594 "9ok9Ki3RomUf6w" => "Zeppelin Source", 2595 "HklR5Ei_jbX" => "Zepto", 2596 "a2XkayMLT" => "Zeta Global", 2597 "2R7ed_s3_" => "Ziff Davis", 2598 "TgVifUWF" => "zoho", 2599 "pRCG-Aryd" => "Zoho Forms", 2600 "WHwIYgGJH" => "Zoho PageSense", 111 2601 "sKBym34ck" => "Zoho SalesIQ", 112 "qxiCD5aN_" => "3Q Video", 2602 "6gPvpOSkp" => "Zoom", 2603 "XL7559yNs" => "ZoomInfo", 2604 "J4VjROu2H" => "Zoovu", 2605 "r1haqNidjbm" => "Zoovu (formerly SmartAssistant)", 2606 "S1lrx54sdj-m" => "Zopim", 2607 "ArOvK3Q2" => "Zotabox", 2608 "-N_eXmLYAuwOe4" => "Zucks", 113 2609 ]; -
termageddon-usercentrics/tags/1.9.0/includes/class-termageddon-usercentrics.php
r3366825 r3439658 146 146 'popular' => false, 147 147 ), 148 'delaware' => array( 149 'title' => __( 'Delaware (DPDPA)', 'termageddon-usercentrics' ), 150 'popular' => false, 151 ), 152 'indiana' => array( 153 'title' => __( 'Indiana (ICDPA)', 'termageddon-usercentrics' ), 154 'popular' => false, 155 ), 148 156 'oregon' => array( 149 157 'title' => __( 'Oregon (OCPA)', 'termageddon-usercentrics' ), … … 189 197 'utah' => 'Utah', 190 198 'virginia' => 'Virginia', 199 'delaware' => 'Delaware', 200 'indiana' => 'Indiana', 191 201 ); 192 202 … … 633 643 } 634 644 635 $embed_version = self::get_embed_script_version(); 636 $loader_url = ( 'v2' === $embed_version ) ? '//app.usercentrics.eu/browser-ui/latest/loader.js' : '//web.cmp.usercentrics.eu/ui/loader.js'; 637 $translations_url = self::get_translations_url(); 645 $embed_version = self::get_embed_script_version(); 646 $loader_url = ( 'v2' === $embed_version ) ? '//app.usercentrics.eu/browser-ui/latest/loader.js' : '//web.cmp.usercentrics.eu/ui/loader.js'; 647 $translations_url = self::get_translations_url(); 648 $use_manual_control = self::is_manual_script_control_enabled(); 638 649 639 650 $new_embed_code = '<link rel="preconnect" href="https://plugins.trac.wordpress.org//privacy-proxy.usercentrics.eu">' . PHP_EOL; 640 $new_embed_code .= '<link rel="preload" href="https://plugins.trac.wordpress.org//privacy-proxy.usercentrics.eu/latest/uc-block.bundle.js" as="script">' . PHP_EOL; 641 $new_embed_code .= '<script type="application/javascript" src="https://plugins.trac.wordpress.org//privacy-proxy.usercentrics.eu/latest/uc-block.bundle.js" data-no-optimize="1" data-no-defer="1"></script>' . PHP_EOL; 651 652 // Only include the auto-blocking script if manual control is disabled 653 if ( ! $use_manual_control ) { 654 $new_embed_code .= '<link rel="preload" href="https://plugins.trac.wordpress.org//privacy-proxy.usercentrics.eu/latest/uc-block.bundle.js" as="script">' . PHP_EOL; 655 $new_embed_code .= '<script type="application/javascript" src="https://plugins.trac.wordpress.org//privacy-proxy.usercentrics.eu/latest/uc-block.bundle.js" data-no-optimize="1" data-no-defer="1"></script>' . PHP_EOL; 656 } 657 642 658 $new_embed_code .= '<script id="usercentrics-cmp" data-cmp-version="' . esc_attr( self::get_embed_script_version() ) . '" src="' . esc_url( $loader_url ) . '" data-settings-id="' . self::get_settings_id() . '" data-no-optimize="1" data-no-defer="1" async></script>' . PHP_EOL; 643 659 $new_embed_code .= '<script data-no-optimize="1" data-no-defer="1">uc.setCustomTranslations(\'' . $translations_url . '\');</script>' . PHP_EOL; … … 1577 1593 } 1578 1594 1595 /** 1596 * Check if manual script control is enabled (disables auto-blocking) 1597 * 1598 * @return bool True if manual script control should be used, false otherwise 1599 */ 1600 public static function is_manual_script_control_enabled(): bool { 1601 return get_option( 'termageddon_usercentrics_manual_script_control', false ) ? true : false; 1602 } 1603 1604 /** 1605 * Get the script snippets from the database 1606 * 1607 * @return array Array of snippet objects, each containing 'script' and 'service_id' 1608 */ 1609 public static function get_script_snippets(): array { 1610 return get_option( 'termageddon_usercentrics_script_snippets', array() ); 1611 } 1612 1613 /** 1614 * Get the provider name by ID from the providers list 1615 * 1616 * @param string $service_id The provider ID to look up. 1617 * @return string The provider name, or empty string if not found. 1618 */ 1619 public static function get_provider_name_by_id( string $service_id ): string { 1620 // Use cached providers from admin class to avoid duplicate loading 1621 if ( ! class_exists( 'Termageddon_Usercentrics_Admin' ) ) { 1622 require_once TERMAGEDDON_COOKIE_PATH . 'admin/class-termageddon-usercentrics-admin.php'; 1623 } 1624 $providers = Termageddon_Usercentrics_Admin::get_usercentrics_providers(); 1625 return $providers[ $service_id ] ?? ''; 1626 } 1627 1628 /** 1629 * Augment script tags with Usercentrics blocking attributes 1630 * 1631 * Takes script HTML and augments all <script> tags with type="text/plain" 1632 * and data-usercentrics attributes for cookie consent blocking. 1633 * 1634 * @param string $script_html The raw script HTML to augment. 1635 * @param string $service_id The provider ID to look up the service name. 1636 * @return string The augmented script HTML, or original if service not found. 1637 */ 1638 public static function augment_script_for_usercentrics( string $script_html, string $service_id ): string { 1639 // Get service name from service_id 1640 $service_name = self::get_provider_name_by_id( $service_id ); 1641 if ( empty( $service_name ) ) { 1642 // Log warning if service not found 1643 if ( function_exists( 'error_log' ) ) { 1644 error_log( sprintf( 'Termageddon Usercentrics: Invalid service_id "%s" provided to augment_script_for_usercentrics', $service_id ) ); 1645 } 1646 return $script_html; // Return original if service not found 1647 } 1648 1649 // Pattern to match script tags (both with src and inline) 1650 $pattern = '/<script([^>]*)>([\s\S]*?)<\/script>/i'; 1651 1652 $augmented = preg_replace_callback( 1653 $pattern, 1654 function( $matches ) use ( $service_name ) { 1655 $attributes = trim( $matches[1] ); 1656 $content = $matches[2]; 1657 1658 // Replace or add type="text/plain" 1659 if ( preg_match( '/type\s*=\s*["\'][^"\']*["\']/i', $attributes ) ) { 1660 // Replace existing type attribute 1661 $attributes = preg_replace( 1662 '/type\s*=\s*["\'][^"\']*["\']/i', 1663 'type="text/plain"', 1664 $attributes 1665 ); 1666 } else { 1667 // Add type="text/plain" attribute 1668 $attributes = ( $attributes ? $attributes . ' ' : '' ) . 'type="text/plain"'; 1669 } 1670 1671 // Add or update data-usercentrics attribute 1672 $usercentrics_attr = 'data-usercentrics="' . esc_attr( $service_name ) . '"'; 1673 if ( preg_match( '/data-usercentrics\s*=\s*["\'][^"\']*["\']/i', $attributes ) ) { 1674 // Replace existing data-usercentrics 1675 $attributes = preg_replace( 1676 '/data-usercentrics\s*=\s*["\'][^"\']*["\']/i', 1677 $usercentrics_attr, 1678 $attributes 1679 ); 1680 } else { 1681 // Add data-usercentrics attribute 1682 $attributes .= ' ' . $usercentrics_attr; 1683 } 1684 1685 return '<script' . ( $attributes ? ' ' . $attributes : '' ) . '>' . $content . '</script>'; 1686 }, 1687 $script_html 1688 ); 1689 1690 $service_name_upper = strtoupper( $service_name ); 1691 return PHP_EOL . '<!-- ' . esc_html( $service_name_upper ) . ' SCRIPT -->' . PHP_EOL . ( $augmented ?? $script_html ) . PHP_EOL; 1692 } 1693 1579 1694 } -
termageddon-usercentrics/tags/1.9.0/languages/termageddon-usercentrics.pot
r3362792 r3439658 4 4 "Project-Id-Version: Termageddon + Usercentrics\n" 5 5 "Report-Msgid-Bugs-To: \n" 6 "POT-Creation-Date: 202 5-09-16 00:31+0000\n"6 "POT-Creation-Date: 2026-01-13 22:13+0000\n" 7 7 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 8 8 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" … … 17 17 "X-Domain: termageddon-usercentrics" 18 18 19 #: admin/class-termageddon-usercentrics-admin.php:1216 19 #: admin/class-termageddon-usercentrics-admin.php:1793 20 msgid "+ Add Script Snippet" 21 msgstr "" 22 23 #: admin/class-termageddon-usercentrics-admin.php:1305 20 24 msgid "Action Needed" 21 25 msgstr "" 22 26 23 #: admin/class-termageddon-usercentrics-admin.php:4 4927 #: admin/class-termageddon-usercentrics-admin.php:473 24 28 msgid "Additional Scripts" 25 29 msgstr "" 26 30 27 #: admin/class-termageddon-usercentrics-admin.php: 48631 #: admin/class-termageddon-usercentrics-admin.php:556 28 32 msgid "Administrators" 29 33 msgstr "" 30 34 31 #: admin/class-termageddon-usercentrics-admin.php: 88935 #: admin/class-termageddon-usercentrics-admin.php:978 32 36 msgid "Advanced Configuration" 33 37 msgstr "" 34 38 35 39 #: admin/class-termageddon-usercentrics-admin.php:90 36 #: admin/class-termageddon-usercentrics-admin.php:2 2940 #: admin/class-termageddon-usercentrics-admin.php:234 37 41 msgid "Advanced Configuration & Troubleshooting" 38 42 msgstr "" 39 43 40 #: admin/class-termageddon-usercentrics-admin.php:2 3944 #: admin/class-termageddon-usercentrics-admin.php:244 41 45 msgid "Allowed HTML Tags" 42 46 msgstr "" 43 47 44 #: admin/class-termageddon-usercentrics-admin.php:1 42048 #: admin/class-termageddon-usercentrics-admin.php:1519 45 49 msgid "along with page 1 of your Privacy Policy questionnaire within " 46 50 msgstr "" 47 51 48 #: admin/class-termageddon-usercentrics-admin.php: 54352 #: admin/class-termageddon-usercentrics-admin.php:613 49 53 msgid "" 50 54 "As an alternative to that additional script, you can simply use the [uc-" … … 55 59 msgstr "" 56 60 57 #: admin/class-termageddon-usercentrics-admin.php:9 0061 #: admin/class-termageddon-usercentrics-admin.php:989 58 62 msgid "Auto-refresh on consent" 59 63 msgstr "" 60 64 61 #: admin/class-termageddon-usercentrics-admin.php:1 42765 #: admin/class-termageddon-usercentrics-admin.php:1526 62 66 msgid "based on which privacy laws apply to you" 63 67 msgstr "" 64 68 65 #: admin/class-termageddon-usercentrics-admin.php:1 22569 #: admin/class-termageddon-usercentrics-admin.php:1314 66 70 msgid "" 67 71 "Behind the scenes, we will remove the Usercentrics embed code from the field " … … 69 73 msgstr "" 70 74 75 #: admin/class-termageddon-usercentrics-admin.php:753 76 msgid "" 77 "By updating all external scripts to use the <a href=\"https://termageddon." 78 "freshdesk.com/support/solutions/articles/66000529802-embedding-the-cookie-" 79 "consent-solution-and-cookie-policy#:~:text=for%20simplicity%20purposes.-," 80 "Manual%20script%20control,-%2D%20You%20can%20also\" target=\"_blank\">manual " 81 "script controller</a>, you can disable usercentrics block script which will " 82 "improve site-loading performance and improve reliability. Once enabled, " 83 "please ensure you <a href=\"https://termageddon.freshdesk." 84 "com/support/solutions/articles/66000529802-embedding-the-cookie-consent-" 85 "solution-and-cookie-policy\" target=\"_blank\">validate</a> that any " 86 "external services are working as expected." 87 msgstr "" 88 71 89 #: includes/class-termageddon-usercentrics.php:137 72 90 msgid "California (CPRA, CIPA)" … … 77 95 msgstr "" 78 96 79 #: admin/class-termageddon-usercentrics-admin.php: 89097 #: admin/class-termageddon-usercentrics-admin.php:979 80 98 msgid "" 81 99 "Certain integrations may require a more custom approach to integrating with " … … 96 114 97 115 #. section ID. 98 #: admin/class-termageddon-usercentrics-admin.php: 972116 #: admin/class-termageddon-usercentrics-admin.php:1061 99 117 msgid "Control Panel" 100 118 msgstr "" 101 119 102 #: admin/class-termageddon-usercentrics-admin.php:1 222120 #: admin/class-termageddon-usercentrics-admin.php:1311 103 121 msgid "Conversion Needed:" 104 122 msgstr "" 105 123 106 #: admin/class-termageddon-usercentrics-admin.php:1 226124 #: admin/class-termageddon-usercentrics-admin.php:1315 107 125 msgid "Convert" 108 126 msgstr "" 109 127 110 #: admin/class-termageddon-usercentrics-admin.php:1 380128 #: admin/class-termageddon-usercentrics-admin.php:1479 111 129 msgid "Cookie Policy and Consent Solution" 112 130 msgstr "" 113 131 114 #: admin/class-termageddon-usercentrics-admin.php:23 1132 #: admin/class-termageddon-usercentrics-admin.php:236 115 133 msgid "Debug Information" 116 134 msgstr "" 117 135 118 #: admin/class-termageddon-usercentrics-admin.php:924 136 #: includes/class-termageddon-usercentrics.php:149 137 msgid "Delaware (DPDPA)" 138 msgstr "" 139 140 #: admin/class-termageddon-usercentrics-admin.php:1013 119 141 msgid "Disable blocking for providers" 120 142 msgstr "" 121 143 122 #: admin/class-termageddon-usercentrics-admin.php: 677144 #: admin/class-termageddon-usercentrics-admin.php:766 123 145 msgid "Disable CDN for Translations Script" 124 146 msgstr "" 125 147 126 #: admin/class-termageddon-usercentrics-admin.php: 696148 #: admin/class-termageddon-usercentrics-admin.php:785 127 149 msgid "Disable for Troubleshooting" 128 150 msgstr "" 129 151 130 #: includes/class-termageddon-usercentrics.php:1300 152 #: admin/class-termageddon-usercentrics-admin.php:747 153 msgid "Disable Usercentrics Auto-blocking script" 154 msgstr "" 155 156 #: includes/class-termageddon-usercentrics.php:1321 131 157 msgid "Divi Video" 132 158 msgstr "" … … 138 164 msgstr "" 139 165 140 #: admin/class-termageddon-usercentrics-admin.php:5 04166 #: admin/class-termageddon-usercentrics-admin.php:574 141 167 msgid "Editors" 142 168 msgstr "" 143 169 144 #: includes/class-termageddon-usercentrics.php:13 06170 #: includes/class-termageddon-usercentrics.php:1327 145 171 msgid "Elementor Video" 146 172 msgstr "" 147 173 148 #: admin/class-termageddon-usercentrics-admin.php:4 49174 #: admin/class-termageddon-usercentrics-admin.php:473 149 175 msgid "Embed Code (Legacy)" 150 176 msgstr "" 151 177 152 #: admin/class-termageddon-usercentrics-admin.php:6 21178 #: admin/class-termageddon-usercentrics-admin.php:691 153 179 msgid "Embed Code Injection Method" 154 180 msgstr "" 155 181 156 #: admin/class-termageddon-usercentrics-admin.php: 598182 #: admin/class-termageddon-usercentrics-admin.php:668 157 183 msgid "Embed Code Priority" 158 184 msgstr "" 159 185 160 #: admin/class-termageddon-usercentrics-admin.php: 649186 #: admin/class-termageddon-usercentrics-admin.php:719 161 187 msgid "Embed Code Version" 162 188 msgstr "" 163 189 164 #: admin/class-termageddon-usercentrics-admin.php: 799190 #: admin/class-termageddon-usercentrics-admin.php:888 165 191 msgid "Enable location logging" 166 192 msgstr "" 167 193 168 #: admin/class-termageddon-usercentrics-admin.php: 819194 #: admin/class-termageddon-usercentrics-admin.php:908 169 195 msgid "Enable page caching support via AJAX" 170 196 msgstr "" 171 197 172 #: admin/class-termageddon-usercentrics-admin.php:4 31198 #: admin/class-termageddon-usercentrics-admin.php:455 173 199 msgid "" 174 200 "Enter your Usercentrics Settings ID. This can be found on the \"View Embed " … … 176 202 msgstr "" 177 203 178 #: admin/class-termageddon-usercentrics-admin.php: 986204 #: admin/class-termageddon-usercentrics-admin.php:1075 179 205 msgid "Error Count" 180 206 msgstr "" 181 207 182 #: admin/class-termageddon-usercentrics-admin.php:24 3208 #: admin/class-termageddon-usercentrics-admin.php:248 183 209 msgid "Error Information" 184 210 msgstr "" 185 211 186 #: admin/class-termageddon-usercentrics-admin.php:10 04212 #: admin/class-termageddon-usercentrics-admin.php:1093 187 213 msgid "Error List" 188 214 msgstr "" … … 192 218 msgstr "" 193 219 194 #: includes/class-termageddon-usercentrics.php:3 11220 #: includes/class-termageddon-usercentrics.php:302 195 221 msgid "Every Month" 196 222 msgstr "" 197 223 198 #: admin/class-termageddon-usercentrics-admin.php: 576224 #: admin/class-termageddon-usercentrics-admin.php:646 199 225 msgid "" 200 226 "For some theme builders including Divi, the footer (bottom bar) does not " … … 206 232 #. section ID. 207 233 #: admin/class-termageddon-usercentrics-admin.php:82 208 #: admin/class-termageddon-usercentrics-admin.php: 724234 #: admin/class-termageddon-usercentrics-admin.php:813 209 235 msgid "Geo-Location" 210 236 msgstr "" 211 237 212 #: admin/class-termageddon-usercentrics-admin.php:19 0213 #: admin/class-termageddon-usercentrics-admin.php:1 429238 #: admin/class-termageddon-usercentrics-admin.php:195 239 #: admin/class-termageddon-usercentrics-admin.php:1528 214 240 msgid "" 215 241 "Geo-Location is enabled, but no locations have been toggled on. This means " … … 217 243 msgstr "" 218 244 219 #: admin/class-termageddon-usercentrics-admin.php:2 36245 #: admin/class-termageddon-usercentrics-admin.php:241 220 246 msgid "Geolocation Database Directory Writable" 221 247 msgstr "" 222 248 223 #: admin/class-termageddon-usercentrics-admin.php:23 4249 #: admin/class-termageddon-usercentrics-admin.php:239 224 250 msgid "Geolocation Database Exists" 225 251 msgstr "" 226 252 227 #: admin/class-termageddon-usercentrics-admin.php:2 37253 #: admin/class-termageddon-usercentrics-admin.php:242 228 254 msgid "Geolocation Database Last Updated" 229 255 msgstr "" 230 256 257 #: admin/class-termageddon-usercentrics-admin.php:243 258 msgid "Geolocation Database Next Update" 259 msgstr "" 260 231 261 #: admin/class-termageddon-usercentrics-admin.php:238 232 msgid "Geolocation Database Next Update"233 msgstr ""234 235 #: admin/class-termageddon-usercentrics-admin.php:233236 262 msgid "Geolocation Database Path" 237 263 msgstr "" 238 264 239 #: admin/class-termageddon-usercentrics-admin.php:2 35265 #: admin/class-termageddon-usercentrics-admin.php:240 240 266 msgid "Geolocation Database Readable" 241 267 msgstr "" 242 268 243 #: admin/class-termageddon-usercentrics-admin.php: 542269 #: admin/class-termageddon-usercentrics-admin.php:612 244 270 msgid "" 245 271 "Giving users the ability to change their privacy/consent settings is a " … … 251 277 msgstr "" 252 278 253 #: admin/class-termageddon-usercentrics-admin.php:1 218279 #: admin/class-termageddon-usercentrics-admin.php:1307 254 280 msgid "Go to Configuration" 255 281 msgstr "" 256 282 257 #: admin/class-termageddon-usercentrics-admin.php: 551283 #: admin/class-termageddon-usercentrics-admin.php:621 258 284 msgid "Hide Privacy Settings Link when cookie consent tool is disabled" 259 285 msgstr "" … … 263 289 msgstr "" 264 290 265 #: admin/class-termageddon-usercentrics-admin.php:1 398291 #: admin/class-termageddon-usercentrics-admin.php:1497 266 292 msgid "If you are using the Divi theme" 267 293 msgstr "" 268 294 269 #: admin/class-termageddon-usercentrics-admin.php: 856295 #: admin/class-termageddon-usercentrics-admin.php:945 270 296 msgid "" 271 297 "If you have a script or code snippet to share, would like to improve support " … … 274 300 msgstr "" 275 301 276 #: admin/class-termageddon-usercentrics-admin.php:1 397302 #: admin/class-termageddon-usercentrics-admin.php:1496 277 303 msgid "" 278 304 "If you would like to remove Usercentrics for logged in users such as admins, " … … 280 306 msgstr "" 281 307 282 #: admin/class-termageddon-usercentrics-admin.php:866 308 #: includes/class-termageddon-usercentrics.php:153 309 msgid "Indiana (ICDPA)" 310 msgstr "" 311 312 #: admin/class-termageddon-usercentrics-admin.php:955 283 313 msgid "Integration" 284 314 msgstr "" … … 286 316 #. section ID. 287 317 #: admin/class-termageddon-usercentrics-admin.php:78 288 #: admin/class-termageddon-usercentrics-admin.php: 845318 #: admin/class-termageddon-usercentrics-admin.php:934 289 319 msgid "Integrations" 290 320 msgstr "" 291 321 292 #: admin/class-termageddon-usercentrics-admin.php:209 322 #: admin/class-termageddon-usercentrics-admin.php:497 323 msgid "" 324 "into third party scripts (Google Analytics, Facebook Pixel, LinkedIn " 325 "Insights Tag, etc.), which can help ensure that consent is obtained first " 326 "prior to the script loading." 327 msgstr "" 328 329 #: admin/class-termageddon-usercentrics-admin.php:214 293 330 msgid "Invalid tab. Please check the link and try again." 294 331 msgstr "" 295 332 296 #: admin/class-termageddon-usercentrics-admin.php:1 224333 #: admin/class-termageddon-usercentrics-admin.php:1313 297 334 msgid "" 298 335 "It looks like you are still using the old embed code (below) instead of the " … … 301 338 msgstr "" 302 339 303 #: admin/class-termageddon-usercentrics-admin.php:198 340 #: admin/class-termageddon-usercentrics-admin.php:503 341 msgid "" 342 "just in general, but also after making this update to ensure that scripts do " 343 "not fire until consent is provided." 344 msgstr "" 345 346 #: admin/class-termageddon-usercentrics-admin.php:203 304 347 msgid "Location logging is enabled." 305 348 msgstr "" 306 349 307 #: admin/class-termageddon-usercentrics-admin.php:5 22350 #: admin/class-termageddon-usercentrics-admin.php:592 308 351 msgid "Logged-in Users" 309 352 msgstr "" 310 353 311 #: admin/class-termageddon-usercentrics-admin.php:1427 354 #: admin/class-termageddon-usercentrics-admin.php:496 355 msgid "manual control snippet" 356 msgstr "" 357 358 #: admin/class-termageddon-usercentrics-admin.php:493 359 msgid "Manual Script Controller" 360 msgstr "" 361 362 #: admin/class-termageddon-usercentrics-admin.php:1736 363 #: admin/class-termageddon-usercentrics-admin.php:1806 364 msgid "New Script Snippet" 365 msgstr "" 366 367 #: admin/class-termageddon-usercentrics-admin.php:1526 312 368 msgid "Not sure what to select?" 313 369 msgstr "" 314 370 315 #: admin/class-termageddon-usercentrics-admin.php:1 420371 #: admin/class-termageddon-usercentrics-admin.php:1519 316 372 msgid "Not sure what to select? Review" 317 373 msgstr "" 318 374 319 #: admin/class-termageddon-usercentrics-admin.php: 953375 #: admin/class-termageddon-usercentrics-admin.php:1042 320 376 msgid "" 321 377 "On this page, you can find custom implementation to improve support and " … … 323 379 msgstr "" 324 380 325 #: includes/class-termageddon-usercentrics.php:1 49381 #: includes/class-termageddon-usercentrics.php:157 326 382 msgid "Oregon (OCPA)" 327 383 msgstr "" 328 384 329 #: admin/class-termageddon-usercentrics-admin.php:6 04385 #: admin/class-termageddon-usercentrics-admin.php:674 330 386 msgid "" 331 387 "Override the default priority of the embed code (Defaults to 1). By " … … 336 392 msgstr "" 337 393 338 #: admin/class-termageddon-usercentrics-admin.php:19 1394 #: admin/class-termageddon-usercentrics-admin.php:196 339 395 msgid "" 340 396 "Please go to geo-location settings to enable at least one location or to " … … 342 398 msgstr "" 343 399 344 #: admin/class-termageddon-usercentrics-admin.php: 855400 #: admin/class-termageddon-usercentrics-admin.php:944 345 401 msgid "Plugin & Theme Integrations" 346 402 msgstr "" 347 403 348 #: includes/class-termageddon-usercentrics.php:13 12404 #: includes/class-termageddon-usercentrics.php:1333 349 405 msgid "PowerPack Video" 350 406 msgstr "" 351 407 352 #: includes/class-termageddon-usercentrics.php:13 18408 #: includes/class-termageddon-usercentrics.php:1339 353 409 msgid "Presto Player" 354 410 msgstr "" 355 411 356 #: admin/class-termageddon-usercentrics-admin.php: 570412 #: admin/class-termageddon-usercentrics-admin.php:640 357 413 msgid "Privacy Settings Link - Alternative Implementation" 358 414 msgstr "" 359 415 360 #: admin/class-termageddon-usercentrics-admin.php:655 416 #: admin/class-termageddon-usercentrics-admin.php:1752 417 #: admin/class-termageddon-usercentrics-admin.php:1811 418 msgid "Remove" 419 msgstr "" 420 421 #: admin/class-termageddon-usercentrics-admin.php:1776 422 #: admin/class-termageddon-usercentrics-admin.php:1830 423 msgid "Script Code" 424 msgstr "" 425 426 #. %d: snippet index number 427 #: admin/class-termageddon-usercentrics-admin.php:1590 428 msgid "Script snippet #%d was not saved: Please select a valid service." 429 msgstr "" 430 431 #. %1$s: service name, %2$d: snippet index number 432 #: admin/class-termageddon-usercentrics-admin.php:1623 433 #, php-format 434 msgid "" 435 "Script snippet for \"%1$s\" (#%2$d) was not saved: Only script tags are " 436 "allowed. Please remove any HTML elements (div, span, etc.) and use only <" 437 "script> tags." 438 msgstr "" 439 440 #. %1$s: service name, %2$d: snippet index number 441 #: admin/class-termageddon-usercentrics-admin.php:1607 442 #, php-format 443 msgid "" 444 "Script snippet for \"%1$s\" (#%2$d) was not saved: The script code field " 445 "cannot be empty." 446 msgstr "" 447 448 #. %1$s: service name, %2$d: snippet index number 449 #: admin/class-termageddon-usercentrics-admin.php:1630 450 #, php-format 451 msgid "" 452 "Script snippet for \"%1$s\" (#%2$d) was not saved: The script code must " 453 "contain at least one <script> tag." 454 msgstr "" 455 456 #: admin/class-termageddon-usercentrics-admin.php:1766 457 #: admin/class-termageddon-usercentrics-admin.php:1796 458 msgid "Select a service..." 459 msgstr "" 460 461 #: admin/class-termageddon-usercentrics-admin.php:725 361 462 msgid "" 362 463 "Select which version of the Usercentrics embed code you would like to use." 363 464 msgstr "" 364 465 466 #: admin/class-termageddon-usercentrics-admin.php:1758 467 #: admin/class-termageddon-usercentrics-admin.php:1817 468 msgid "Service" 469 msgstr "" 470 365 471 #. section ID. 366 #: includes/class-termageddon-usercentrics.php:5 21472 #: includes/class-termageddon-usercentrics.php:536 367 473 #: admin/class-termageddon-usercentrics-admin.php:86 368 #: admin/class-termageddon-usercentrics-admin.php: 477474 #: admin/class-termageddon-usercentrics-admin.php:547 369 475 msgid "Settings" 370 476 msgstr "" 371 477 372 #: admin/class-termageddon-usercentrics-admin.php:4 25478 #: admin/class-termageddon-usercentrics-admin.php:449 373 479 msgid "Settings ID" 374 480 msgstr "" 375 481 376 #: admin/class-termageddon-usercentrics-admin.php:1 426482 #: admin/class-termageddon-usercentrics-admin.php:1525 377 483 msgid "Show widget if visitor is located in" 484 msgstr "" 485 486 #: admin/class-termageddon-usercentrics-admin.php:499 487 msgid "" 488 "Simply add a new snippet, enter the Service name (same name as the Service " 489 "you listed in your Cookie Policy and Consent Tool questionnaire), and paste " 490 "your embed code into the provided field. The plugin will then set up manual " 491 "control of the script, helping ensure that it is blocked until consent is " 492 "obtained by the user." 378 493 msgstr "" 379 494 … … 383 498 msgstr "" 384 499 385 #: admin/class-termageddon-usercentrics-admin.php:20 3500 #: admin/class-termageddon-usercentrics-admin.php:208 386 501 msgid "Termageddon + Usercentrics" 387 502 msgstr "" 388 503 389 #: includes/class-termageddon-usercentrics.php:153 504 #: admin/class-termageddon-usercentrics-admin.php:502 505 msgid "test the consent solution" 506 msgstr "" 507 508 #: includes/class-termageddon-usercentrics.php:161 390 509 msgid "Texas (TDPSA)" 391 510 msgstr "" 392 511 393 #: admin/class-termageddon-usercentrics-admin.php:6 27512 #: admin/class-termageddon-usercentrics-admin.php:697 394 513 msgid "" 395 514 "The default injection option, wp_head, will inject the embed code in the " … … 399 518 msgstr "" 400 519 401 #: admin/class-termageddon-usercentrics-admin.php:1 420520 #: admin/class-termageddon-usercentrics-admin.php:1519 402 521 msgid "this article" 403 522 msgstr "" 404 523 405 #: admin/class-termageddon-usercentrics-admin.php:1 427524 #: admin/class-termageddon-usercentrics-admin.php:1526 406 525 msgid "This article outlines which regions to select" 407 526 msgstr "" 408 527 409 #: admin/class-termageddon-usercentrics-admin.php:229 528 #: admin/class-termageddon-usercentrics-admin.php:495 529 msgid "This feature helps add the" 530 msgstr "" 531 532 #: admin/class-termageddon-usercentrics-admin.php:234 410 533 msgid "" 411 534 "This panel is for advanced configuration and troubleshooting. Please contact " … … 413 536 msgstr "" 414 537 415 #: admin/class-termageddon-usercentrics-admin.php:9 06538 #: admin/class-termageddon-usercentrics-admin.php:995 416 539 msgid "" 417 540 "This particular feature is not needed for most websites. This feature is " … … 423 546 msgstr "" 424 547 425 #: includes/class-termageddon-usercentrics.php:13 01548 #: includes/class-termageddon-usercentrics.php:1322 426 549 msgid "" 427 550 "This resolves and improves the cookie-consent implementation when using an " … … 429 552 msgstr "" 430 553 431 #: includes/class-termageddon-usercentrics.php:13 07554 #: includes/class-termageddon-usercentrics.php:1328 432 555 msgid "" 433 556 "This resolves and improves the cookie-consent implementation when using an " … … 435 558 msgstr "" 436 559 437 #: includes/class-termageddon-usercentrics.php:13 13560 #: includes/class-termageddon-usercentrics.php:1334 438 561 msgid "" 439 562 "This resolves and improves the cookie-consent implementation when using an " … … 443 566 msgstr "" 444 567 445 #: includes/class-termageddon-usercentrics.php:13 19568 #: includes/class-termageddon-usercentrics.php:1340 446 569 msgid "" 447 570 "This resolves and improves the cookie-consent implementation when using an " … … 449 572 msgstr "" 450 573 451 #: includes/class-termageddon-usercentrics.php:13 25574 #: includes/class-termageddon-usercentrics.php:1346 452 575 msgid "" 453 576 "This resolves and improves the cookie-consent implementation when using an " … … 456 579 msgstr "" 457 580 458 #: admin/class-termageddon-usercentrics-admin.php:4 55581 #: admin/class-termageddon-usercentrics-admin.php:479 459 582 msgid "" 460 583 "This section can be used to add customizations to your Usercentrics embed " … … 463 586 msgstr "" 464 587 465 #: admin/class-termageddon-usercentrics-admin.php:4 55588 #: admin/class-termageddon-usercentrics-admin.php:479 466 589 msgid "" 467 590 "This section should no longer be used for the embed code from the " … … 470 593 msgstr "" 471 594 472 #: admin/class-termageddon-usercentrics-admin.php:1 217595 #: admin/class-termageddon-usercentrics-admin.php:1306 473 596 msgid "This update will take a few seconds to complete." 474 597 msgstr "" 475 598 476 #: admin/class-termageddon-usercentrics-admin.php: 683599 #: admin/class-termageddon-usercentrics-admin.php:772 477 600 msgid "" 478 601 "This will switch the URL used for the Usercentrics translations script from " … … 481 604 msgstr "" 482 605 483 #: admin/class-termageddon-usercentrics-admin.php:1 441606 #: admin/class-termageddon-usercentrics-admin.php:1540 484 607 msgid "" 485 608 "To reset any of the backend variables, update the values below and save your " … … 487 610 msgstr "" 488 611 489 #: includes/class-termageddon-usercentrics.php:13 24612 #: includes/class-termageddon-usercentrics.php:1345 490 613 msgid "Ultimate Addons for Beaver Builder Video" 491 614 msgstr "" … … 499 622 msgstr "" 500 623 501 #: admin/class-termageddon-usercentrics-admin.php:1 379624 #: admin/class-termageddon-usercentrics-admin.php:1478 502 625 msgid "Upon generating your " 503 626 msgstr "" 504 627 505 #: admin/class-termageddon-usercentrics-admin.php:1 366628 #: admin/class-termageddon-usercentrics-admin.php:1465 506 629 msgid "Upon saving, all previous errors in the log will be deleted." 507 630 msgstr "" 508 631 509 #: includes/class-termageddon-usercentrics.php:1 57632 #: includes/class-termageddon-usercentrics.php:165 510 633 msgid "Utah (UCPA)" 511 634 msgstr "" 512 635 513 #: admin/class-termageddon-usercentrics-admin.php: 657636 #: admin/class-termageddon-usercentrics-admin.php:727 514 637 msgid "v2" 515 638 msgstr "" 516 639 517 #: admin/class-termageddon-usercentrics-admin.php: 658640 #: admin/class-termageddon-usercentrics-admin.php:728 518 641 msgid "v3 (Beta)" 519 642 msgstr "" 520 643 521 #: includes/class-termageddon-usercentrics.php:161 644 #: admin/class-termageddon-usercentrics-admin.php:501 645 msgid "Very important: be sure to" 646 msgstr "" 647 648 #: includes/class-termageddon-usercentrics.php:169 522 649 msgid "Virginia (VCDPA)" 523 650 msgstr "" 524 651 525 #: admin/class-termageddon-usercentrics-admin.php: 930652 #: admin/class-termageddon-usercentrics-admin.php:1019 526 653 msgid "" 527 654 "WARNING: By adding providers to this list, you are choosing for Usercentrics " … … 530 657 msgstr "" 531 658 532 #: admin/class-termageddon-usercentrics-admin.php: 544659 #: admin/class-termageddon-usercentrics-admin.php:614 533 660 msgid "" 534 661 "We also offer a button version of the Privacy Settings link, which can be " … … 538 665 msgstr "" 539 666 540 #: admin/class-termageddon-usercentrics-admin.php:1 217667 #: admin/class-termageddon-usercentrics-admin.php:1306 541 668 msgid "" 542 669 "We are moving to using a Settings ID instead of an embed code format to " … … 544 671 msgstr "" 545 672 546 #: admin/class-termageddon-usercentrics-admin.php:18 3673 #: admin/class-termageddon-usercentrics-admin.php:188 547 674 msgid "" 548 675 "We were unable to download the database necessary for geolocation to your " … … 551 678 msgstr "" 552 679 553 #: admin/class-termageddon-usercentrics-admin.php: 557680 #: admin/class-termageddon-usercentrics-admin.php:627 554 681 msgid "" 555 682 "When enabled, the Privacy Settings link will be hidden from certain users, " … … 564 691 msgstr "" 565 692 566 #: admin/class-termageddon-usercentrics-admin.php:8 05693 #: admin/class-termageddon-usercentrics-admin.php:894 567 694 msgid "" 568 695 "When enabled, the visitor's location can be viewed in the browser console, " … … 570 697 msgstr "" 571 698 572 #: admin/class-termageddon-usercentrics-admin.php: 825699 #: admin/class-termageddon-usercentrics-admin.php:914 573 700 msgid "" 574 701 "When enabled, the visitor's location is checked via javascript to allow " … … 576 703 msgstr "" 577 704 578 #: admin/class-termageddon-usercentrics-admin.php:7 02705 #: admin/class-termageddon-usercentrics-admin.php:791 579 706 msgid "" 580 707 "When enabled, this feature allows you to turn off the consent tool for all " … … 585 712 msgstr "" 586 713 587 #: admin/class-termageddon-usercentrics-admin.php:1 416714 #: admin/class-termageddon-usercentrics-admin.php:1515 588 715 msgid "" 589 716 "When enabled, you will be collecting IP addresses for the purposes of " … … 597 724 msgstr "" 598 725 599 #: admin/class-termageddon-usercentrics-admin.php: 198726 #: admin/class-termageddon-usercentrics-admin.php:203 600 727 msgid "with the IP Address of" 601 728 msgstr "" 602 729 603 #: admin/class-termageddon-usercentrics-admin.php:1 381730 #: admin/class-termageddon-usercentrics-admin.php:1480 604 731 msgid "" 605 732 "within your Termageddon account, you will be brought to the \"View embed " … … 608 735 msgstr "" 609 736 610 #: admin/class-termageddon-usercentrics-admin.php: 630737 #: admin/class-termageddon-usercentrics-admin.php:700 611 738 msgid "wp_enqueue_scripts" 612 739 msgstr "" 613 740 614 #: admin/class-termageddon-usercentrics-admin.php:6 29741 #: admin/class-termageddon-usercentrics-admin.php:699 615 742 msgid "wp_head (Default)" 616 743 msgstr "" 617 744 618 #: admin/class-termageddon-usercentrics-admin.php:1 399745 #: admin/class-termageddon-usercentrics-admin.php:1498 619 746 msgid "" 620 747 "you will need to enable at least one of the settings below to ensure logged " … … 623 750 msgstr "" 624 751 625 #: admin/class-termageddon-usercentrics-admin.php: 198752 #: admin/class-termageddon-usercentrics-admin.php:203 626 753 msgid "Your location" 627 754 msgstr "" -
termageddon-usercentrics/tags/1.9.0/public/class-termageddon-usercentrics-public.php
r3326335 r3439658 222 222 223 223 /** 224 * Get augmented script snippets for output 225 * 226 * Retrieves script snippets from database, augments them with Usercentrics attributes, 227 * and returns the concatenated result. 228 * 229 * @return string The concatenated augmented script snippets. 230 */ 231 public function get_augmented_script_snippets(): string { 232 $snippets = Termageddon_Usercentrics::get_script_snippets(); 233 if ( empty( $snippets ) || ! is_array( $snippets ) ) { 234 return ''; 235 } 236 237 $augmented_scripts = array(); 238 foreach ( $snippets as $snippet ) { 239 // Validate snippet structure 240 if ( ! is_array( $snippet ) || ! isset( $snippet['script'], $snippet['service_id'] ) ) { 241 continue; 242 } 243 244 $script = trim( $snippet['script'] ); 245 $service_id = $snippet['service_id']; 246 247 // Skip empty scripts 248 if ( empty( $script ) ) { 249 continue; 250 } 251 252 // Augment the script with Usercentrics attributes 253 $augmented = Termageddon_Usercentrics::augment_script_for_usercentrics( $script, $service_id ); 254 $augmented_scripts[] = $augmented; 255 } 256 257 return ! empty( $augmented_scripts ) ? implode( PHP_EOL, $augmented_scripts ) : ''; 258 } 259 260 /** 224 261 * Dynamically hide or show the termageddon script based on settings. Outputs directly to script tag. 225 262 */ … … 274 311 } 275 312 313 // Append augmented script snippets 314 $augmented_snippets = $this->get_augmented_script_snippets(); 315 if ( ! empty( $augmented_snippets ) ) { 316 $script .= PHP_EOL . $augmented_snippets; 317 } 318 276 319 if ( empty( $script ) ) { 277 320 return; … … 300 343 301 344 if ( $settings_id && $should_enqueue_scripts ) { 302 // Enqueue Embed Script. 303 wp_enqueue_script( $this->plugin_name . '-scripts', '//privacy-proxy.usercentrics.eu/latest/uc-block.bundle.js', array(), $this->version, false ); 304 // note: this URL is placed here to "play by the rules"... but it doesn't actually do anything. 305 // the whole thing will be overwritten by the script_loader_tag filter. 345 // Only enqueue the auto-blocking script if manual control is disabled 346 if ( ! Termageddon_Usercentrics::is_manual_script_control_enabled() ) { 347 wp_enqueue_script( $this->plugin_name . '-scripts', '//privacy-proxy.usercentrics.eu/latest/uc-block.bundle.js', array(), $this->version, false ); 348 // note: this URL is placed here to "play by the rules"... but it doesn't actually do anything. 349 // the whole thing will be overwritten by the script_loader_tag filter. 350 } 306 351 } 307 352 -
termageddon-usercentrics/tags/1.9.0/termageddon-usercentrics.php
r3366825 r3439658 15 15 * Plugin Name: Termageddon 16 16 * Description: Each Termageddon license includes a consent solution. This plugin helps you install the consent solution with ease, while offering additional features. 17 * Version: 1. 8.217 * Version: 1.9.0 18 18 * Author: Termageddon 19 19 * Author URI: https://termageddon.com … … 34 34 * Rename this for your plugin and update it as you release new versions. 35 35 */ 36 define( 'TERMAGEDDON_COOKIE_VERSION', '1. 8.2' );36 define( 'TERMAGEDDON_COOKIE_VERSION', '1.9.0' ); 37 37 38 38 define( 'TERMAGEDDON_COOKIE_PLUGIN_PATH', dirname( __FILE__ ) );// No trailing slash. -
termageddon-usercentrics/tags/1.9.0/vendor/composer/autoload_static.php
r3326335 r3439658 8 8 { 9 9 public static $prefixLengthsPsr4 = array ( 10 'M' => 10 'M' => 11 11 array ( 12 12 'MaxMind\\WebService\\' => 19, … … 14 14 'MaxMind\\Db\\' => 11, 15 15 ), 16 'G' => 16 'G' => 17 17 array ( 18 18 'GeoIp2\\' => 7, 19 19 ), 20 'C' => 20 'C' => 21 21 array ( 22 22 'Composer\\CaBundle\\' => 18, … … 25 25 26 26 public static $prefixDirsPsr4 = array ( 27 'MaxMind\\WebService\\' => 27 'MaxMind\\WebService\\' => 28 28 array ( 29 29 0 => __DIR__ . '/..' . '/maxmind/web-service-common/src/WebService', 30 30 ), 31 'MaxMind\\Exception\\' => 31 'MaxMind\\Exception\\' => 32 32 array ( 33 33 0 => __DIR__ . '/..' . '/maxmind/web-service-common/src/Exception', 34 34 ), 35 'MaxMind\\Db\\' => 35 'MaxMind\\Db\\' => 36 36 array ( 37 37 0 => __DIR__ . '/..' . '/maxmind-db/reader/src/MaxMind/Db', 38 38 ), 39 'GeoIp2\\' => 39 'GeoIp2\\' => 40 40 array ( 41 41 0 => __DIR__ . '/..' . '/geoip2/geoip2/src', 42 42 ), 43 'Composer\\CaBundle\\' => 43 'Composer\\CaBundle\\' => 44 44 array ( 45 45 0 => __DIR__ . '/..' . '/composer/ca-bundle/src', -
termageddon-usercentrics/tags/1.9.0/vendor/composer/installed.php
r3366825 r3439658 4 4 'pretty_version' => 'dev-main', 5 5 'version' => 'dev-main', 6 'reference' => ' 8c98b9ca2d8ab64221beecdd7d94295be96b6dbb',6 'reference' => 'a175036bc29629db0942e5f85c30b2438e887925', 7 7 'type' => 'library', 8 8 'install_path' => __DIR__ . '/../../', … … 50 50 'pretty_version' => 'dev-main', 51 51 'version' => 'dev-main', 52 'reference' => ' 8c98b9ca2d8ab64221beecdd7d94295be96b6dbb',52 'reference' => 'a175036bc29629db0942e5f85c30b2438e887925', 53 53 'type' => 'library', 54 54 'install_path' => __DIR__ . '/../../', -
termageddon-usercentrics/trunk/README.txt
r3366825 r3439658 5 5 Tested up to: 6.8.1 6 6 Requires PHP: 7.2 7 Stable tag: 1. 8.27 Stable tag: 1.9.0 8 8 License: GPLv2 or later 9 9 License URI: http://www.gnu.org/licenses/gpl-2.0.html … … 189 189 == Changelog == 190 190 191 = 1.9.0 = 192 193 **✨ New Features:** 194 * Added "Manual Script Controller" allowing users to add any script and have it automatically be configured for Cookie Consent with automatic privacy blocking in mind. 195 196 **🔧 Improvements:** 197 * Updated list of supported Smart Data Protector technologies for use with Advanced Configurations under Integrations. 198 * Added support for Delaware (DPDPA) & Indiana (ICDPA) for Geolocation. 199 191 200 = 1.8.2 = 192 201 -
termageddon-usercentrics/trunk/admin/class-termageddon-usercentrics-admin.php
r3362792 r3439658 129 129 wp_enqueue_script( 'select2', 'https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js', array( 'jquery' ), '4.1.0', true ); 130 130 131 // Initialize select2 for our multi-select fields131 // Initialize select2 for our multi-select and single-select fields 132 132 wp_add_inline_script( 'select2', ' 133 133 jQuery(document).ready(function($) { … … 135 135 width: "100%", 136 136 placeholder: "Select providers...", 137 allowClear: true 138 }); 139 $(".termageddon-singleselect").select2({ 140 width: "100%", 141 placeholder: "Select a service...", 137 142 allowClear: true 138 143 }); … … 289 294 public function add_new_subsection( string $section, array $options = array() ) { 290 295 291 $name = ( isset( $options['name'] ) ? $options['name'] : false ); 292 $description = ( isset( $options['description'] ) ? $options['description'] : false ); 296 $name = $options['name'] ?? false; 297 $tags = isset( $options['tags'] ) ? ' ' . $options['tags'] : ''; 298 $description = $options['description'] ?? false; 293 299 // Indent specifies whether or not the subsection should be indented. 294 $indent = ( isset( $options['indent'] ) ? true === $options['indent'] : false );300 $indent = ( $options['indent'] ?? false ) === true; 295 301 296 302 // Slim slims down the column width for the initial options. 297 $slim = ( isset( $options['slim'] ) ? true === $options['slim'] : false );303 $slim = ( $options['slim'] ?? false ) === true; 298 304 299 305 // Helper slims down the divider and displays a helper text by itself. 300 $helper = ( isset( $options['helper'] ) ? true === $options['helper'] : false );306 $helper = ( $options['helper'] ?? false ) === true; 301 307 302 308 $section_contents = $helper ? 303 309 ' 304 <span class="tu-section-title-helper">' . esc_html( $name ) . ': </span>310 <span class="tu-section-title-helper">' . esc_html( $name ) . ':' . $tags . '</span> 305 311 ' . ( empty( $description ) ? '' : '<p>' . wp_kses_post( $description ) . '</p>' ) 306 312 : ' </div> 307 313 <div class="tu-toggle-section"> 308 <span class="tu-section-title">' . esc_html( $name ) . ': </span>314 <span class="tu-section-title">' . esc_html( $name ) . ':' . $tags . '</span> 309 315 ' . ( empty( $description ) ? '' : '<p>' . wp_kses_post( $description ) . '</p>' ) . ' 310 316 </div> … … 343 349 344 350 /** 351 * Gets the Usercentrics providers array. 352 * 353 * Caches the result to avoid multiple file includes. 354 * 355 * @return array Array of provider IDs and names. 356 */ 357 public static function get_usercentrics_providers(): array { 358 static $providers = null; 359 360 if ( null === $providers ) { 361 $providers = include TERMAGEDDON_COOKIE_PATH . 'admin/usercentrics-providers.php'; 362 } 363 364 return $providers; 365 } 366 367 368 /** 345 369 * Buildout all settings sections in prep for registering the settings. 346 370 * … … 461 485 'termageddon_usercentrics_embed_code', // option name. 462 486 '' // sanitization function. 487 ); 488 489 // BREAK SECTION FOR MANUAL SCRIPT CONTROLLER. 490 $this->add_new_subsection( 491 'termageddon_usercentrics_section_embed', 492 array( 493 'name' => __( 'Manual Script Controller', 'termageddon-usercentrics' ), 494 'tags' => $this->mark_as_beta(), 495 'description' => __( 'This feature helps add the', 'termageddon-usercentrics' ) 496 .' <a href="https://termageddon.freshdesk.com/support/solutions/articles/66000529802-embedding-the-cookie-consent-solution-and-cookie-policy#:~:text=for%20simplicity%20purposes.-,Manual%20script%20control,-%2D%20You%20can%20also" target="_blank">'.__( 'manual control snippet', 'termageddon-usercentrics' ).'</a> ' 497 .__( 'into third party scripts (Google Analytics, Facebook Pixel, LinkedIn Insights Tag, etc.), which can help ensure that consent is obtained first prior to the script loading.', 'termageddon-usercentrics' ) 498 .'<br/><br/>' 499 .__( 'Simply add a new snippet, enter the Service name (same name as the Service you listed in your Cookie Policy and Consent Tool questionnaire), and paste your embed code into the provided field. The plugin will then set up manual control of the script, helping ensure that it is blocked until consent is obtained by the user.', 'termageddon-usercentrics' ) 500 .'<br/><br/><em>' 501 .__( 'Very important: be sure to', 'termageddon-usercentrics' ) 502 .' <a href="https://termageddon.freshdesk.com/support/solutions/articles/66000529802-embedding-the-cookie-consent-solution-and-cookie-policy" target="_blank">'.__( 'test the consent solution', 'termageddon-usercentrics' ).'</a> ' 503 .__( 'just in general, but also after making this update to ensure that scripts do not fire until consent is provided.', 'termageddon-usercentrics' ) 504 .'</em>', 505 ) 506 ); 507 508 // Import providers for script snippets 509 $providers = self::get_usercentrics_providers(); 510 511 // Script snippets field (full width, no label) 512 add_settings_field( 513 'termageddon_usercentrics_script_snippets', 514 '', 515 array( &$this, 'script_snippets_html' ), 516 'termageddon-usercentrics', 517 'termageddon_usercentrics_section_embed', 518 array( 519 'label_for' => 'termageddon_usercentrics_script_snippets', 520 'options' => $providers, 521 'class' => 'tu-table-full-width', 522 ) 523 ); 524 525 register_setting( 526 'termageddon_usercentrics_settings', 527 'termageddon_usercentrics_script_snippets', 528 array( 529 'type' => 'array', 530 'sanitize_callback' => array( &$this, 'sanitize_script_snippets' ), 531 'default' => array(), 532 ) 463 533 ); 464 534 … … 670 740 'default' => 'v2', 671 741 ) 742 ); 743 744 // Disable Usercentrics Auto-blocking script 745 add_settings_field( 746 'termageddon_usercentrics_manual_script_control', 747 __( 'Disable Usercentrics Auto-blocking script', 'termageddon-usercentrics' ), 748 array( &$this, 'manual_script_control_html' ), // function which prints the field. 749 'termageddon-usercentrics', // page slug. 750 'termageddon_usercentrics_section_settings', // section ID. 751 array( 752 'label_for' => 'termageddon_usercentrics_manual_script_control', 753 'description' => __( 'By updating all external scripts to use the <a href="https://termageddon.freshdesk.com/support/solutions/articles/66000529802-embedding-the-cookie-consent-solution-and-cookie-policy#:~:text=for%20simplicity%20purposes.-,Manual%20script%20control,-%2D%20You%20can%20also" target="_blank">manual script controller</a>, you can disable usercentrics block script which will improve site-loading performance and improve reliability. Once enabled, please ensure you <a href="https://termageddon.freshdesk.com/support/solutions/articles/66000529802-embedding-the-cookie-consent-solution-and-cookie-policy" target="_blank">validate</a> that any external services are working as expected.', 'termageddon-usercentrics' ), 754 ) 755 ); 756 757 register_setting( 758 'termageddon_usercentrics_settings', // settings group name. 759 'termageddon_usercentrics_manual_script_control', // option name. 760 '' // sanitization function. 672 761 ); 673 762 … … 893 982 894 983 // Import providers 895 $providers = include TERMAGEDDON_COOKIE_PATH . 'admin/usercentrics-providers.php';984 $providers = self::get_usercentrics_providers(); 896 985 897 986 // Auto-refresh on consent field … … 1268 1357 1269 1358 /** 1359 * The HTML field for the manual script control checkbox. 1360 * 1361 * @param array $args The arguments provided by the add_settings_field() method. 1362 * @return void 1363 */ 1364 public function manual_script_control_html( array $args ) { 1365 self::generate_checkbox( 'manual_script_control', '', $args ); 1366 } 1367 1368 /** 1270 1369 * The HTML field for the disable CDN checkbox. 1271 1370 * … … 1382 1481 1383 1482 echo ' 1384 <div class="tu-se ction-settings">1385 <div class="tu- section">';1483 <div class="tu-settings-section"> 1484 <div class="tu-toggle-section">'; 1386 1485 1387 1486 } … … 1418 1517 1419 1518 echo '<p>' . 1420 esc_html__( 'Not sure what to select? Review', 'termageddon-usercentrics' ) . ' <a href="https://termageddon.freshdesk.com/support/solutions/articles/660005 03289-how-to-activate-a-cookie-policy-and-cookie-consent-solution" target="_blank">' . esc_html__( 'this article', 'termageddon-usercentrics' ) . '</a> ' . esc_html__( 'along with page 1 of your Privacy Policy questionnaire within ', 'termageddon-usercentrics' ) . '<a href="https://app.termageddon.com/home" target="_blank">app.termageddon.com</a>.' .1519 esc_html__( 'Not sure what to select? Review', 'termageddon-usercentrics' ) . ' <a href="https://termageddon.freshdesk.com/support/solutions/articles/66000530091-how-to-activate-the-cookie-policy-and-consent-solution" target="_blank">' . esc_html__( 'this article', 'termageddon-usercentrics' ) . '</a> ' . esc_html__( 'along with page 1 of your Privacy Policy questionnaire within ', 'termageddon-usercentrics' ) . '<a href="https://policies.termageddon.com/home" target="_blank">policies.termageddon.com</a>.' . 1421 1520 '</p>'; 1422 1521 … … 1458 1557 } 1459 1558 return array_map( 'sanitize_text_field', $value ); 1559 } 1560 1561 /** 1562 * Sanitize script snippets array 1563 * 1564 * Validates each snippet for proper service ID and script tag presence. 1565 * Invalid snippets are skipped with appropriate error messages. 1566 * 1567 * @param mixed $value The script snippets array to sanitize. 1568 * @return array The sanitized script snippets array. 1569 */ 1570 public function sanitize_script_snippets( $value ): array { 1571 if ( ! is_array( $value ) ) { 1572 return array(); 1573 } 1574 1575 $providers = self::get_usercentrics_providers(); 1576 $sanitized = array(); 1577 1578 foreach ( $value as $index => $snippet ) { 1579 if ( ! is_array( $snippet ) ) { 1580 continue; 1581 } 1582 1583 // Validate and sanitize service_id 1584 $service_id = sanitize_text_field( $snippet['service_id'] ?? '' ); 1585 if ( empty( $service_id ) || ! isset( $providers[ $service_id ] ) ) { 1586 $this->add_snippet_error( 1587 'invalid_service_' . $index, 1588 sprintf( 1589 /* translators: %d: snippet index number */ 1590 __( 'Script snippet #%d was not saved: Please select a valid service.', 'termageddon-usercentrics' ), 1591 $index + 1 1592 ) 1593 ); 1594 continue; 1595 } 1596 1597 // Get script content - don't sanitize here, will be processed via augment_script_for_usercentrics on output 1598 // Similar to how embed_code is handled (no sanitization callback) 1599 $script = trim( $snippet['script'] ?? '' ); 1600 1601 // Validate that the script is not empty 1602 if ( empty( $script ) ) { 1603 $this->add_snippet_error( 1604 'empty_script_' . $index, 1605 sprintf( 1606 /* translators: %1$s: service name, %2$d: snippet index number */ 1607 __( 'Script snippet for "%1$s" (#%2$d) was not saved: The script code field cannot be empty.', 'termageddon-usercentrics' ), 1608 $providers[ $service_id ], 1609 $index + 1 1610 ) 1611 ); 1612 continue; 1613 } 1614 1615 // Check if content contains script tags 1616 if ( ! preg_match( '/<script[^>]*>/i', $script ) ) { 1617 $service_name = $providers[ $service_id ]; 1618 1619 // Check if it contains other HTML tags (like div, span, etc.) 1620 if ( preg_match( '/<(div|span|p|a|img|iframe|button|input|form|table|ul|ol|li|h[1-6])[^>]*>/i', $script ) ) { 1621 $error_message = sprintf( 1622 /* translators: %1$s: service name, %2$d: snippet index number */ 1623 __( 'Script snippet for "%1$s" (#%2$d) was not saved: Only script tags are allowed. Please remove any HTML elements (div, span, etc.) and use only <script> tags.', 'termageddon-usercentrics' ), 1624 $service_name, 1625 $index + 1 1626 ); 1627 } else { 1628 $error_message = sprintf( 1629 /* translators: %1$s: service name, %2$d: snippet index number */ 1630 __( 'Script snippet for "%1$s" (#%2$d) was not saved: The script code must contain at least one <script> tag.', 'termageddon-usercentrics' ), 1631 $service_name, 1632 $index + 1 1633 ); 1634 } 1635 1636 $this->add_snippet_error( 'invalid_content_' . $index, $error_message ); 1637 continue; 1638 } 1639 1640 $sanitized[] = array( 1641 'script' => $script, 1642 'service_id' => $service_id, 1643 ); 1644 } 1645 1646 return $sanitized; 1647 } 1648 1649 /** 1650 * Helper method to add settings errors for script snippets 1651 * 1652 * @param string $code Error code. 1653 * @param string $message Error message. 1654 * @return void 1655 */ 1656 private function add_snippet_error( string $code, string $message ): void { 1657 add_settings_error( 1658 'termageddon_usercentrics_script_snippets', 1659 $code, 1660 $message, 1661 'error' 1662 ); 1460 1663 } 1461 1664 … … 1506 1709 } 1507 1710 1711 /** 1712 * The HTML field for the script snippets repeater 1713 * 1714 * @param array $args The arguments provided by the add_settings_field() method. 1715 * @return void 1716 */ 1717 public function script_snippets_html( array $args ) { 1718 $options = $args['options']; 1719 $snippets = get_option( 'termageddon_usercentrics_script_snippets', array() ); 1720 1721 // Ensure snippets is an array 1722 if ( ! is_array( $snippets ) ) { 1723 $snippets = array(); 1724 } 1725 ?> 1726 <div id="termageddon-script-snippets-container"> 1727 <?php if ( ! empty( $snippets ) ) : ?> 1728 <?php foreach ( $snippets as $index => $snippet ) : ?> 1729 <?php 1730 // Get service name for header 1731 $service_id = isset( $snippet['service_id'] ) ? $snippet['service_id'] : ''; 1732 $service_name = ''; 1733 if ( ! empty( $service_id ) && isset( $options[ $service_id ] ) ) { 1734 $service_name = $options[ $service_id ]; 1735 } else { 1736 $service_name = __( 'New Script Snippet', 'termageddon-usercentrics' ); 1737 } 1738 1739 // Count script tags 1740 $script_content = isset( $snippet['script'] ) ? $snippet['script'] : ''; 1741 $script_count = preg_match_all( '/<script/i', $script_content ); 1742 ?> 1743 <div class="termageddon-script-snippet-row" data-index="<?php echo esc_attr( $index ); ?>"> 1744 <div class="termageddon-snippet-accordion-item" style="margin-bottom: 15px; border: 1px solid #ddd; background: #f9f9f9;"> 1745 <div class="termageddon-snippet-accordion-header" style="display: flex; justify-content: space-between; align-items: center; padding: 15px; cursor: pointer; user-select: none;"> 1746 <div style="display: flex; align-items: center; gap: 10px; flex: 1;"> 1747 <span class="termageddon-snippet-service-name"><?php echo esc_html( $service_name ); ?></span> 1748 <span class="termageddon-snippet-badge<?php echo $script_count > 0 ? ' termageddon-snippet-badge-success' : ''; ?>"><?php echo esc_html( $script_count . ' script' . ( $script_count !== 1 ? 's' : '' ) . ' identified' ); ?></span> 1749 </div> 1750 <div style="display: flex; align-items: center; gap: 10px;"> 1751 <span class="termageddon-snippet-caret dashicons dashicons-arrow-down-alt2" style="transition: transform 0.3s ease;"></span> 1752 <button type="button" class="button termageddon-remove-snippet" style="color: #dc3232; margin: 0;"><?php esc_html_e( 'Remove', 'termageddon-usercentrics' ); ?></button> 1753 </div> 1754 </div> 1755 <div class="termageddon-snippet-accordion-content collapsed" style="padding: 0 15px 15px 15px; display: none;"> 1756 <div style="margin-top: 15px; margin-bottom: 10px;"> 1757 <label for="termageddon_usercentrics_script_snippets_<?php echo esc_attr( $index ); ?>_service_id"> 1758 <strong><?php esc_html_e( 'Service', 'termageddon-usercentrics' ); ?></strong> 1759 </label> 1760 <select 1761 name="termageddon_usercentrics_script_snippets[<?php echo esc_attr( $index ); ?>][service_id]" 1762 id="termageddon_usercentrics_script_snippets_<?php echo esc_attr( $index ); ?>_service_id" 1763 class="termageddon-singleselect" 1764 style="width: 100%;" 1765 > 1766 <option value=""><?php esc_html_e( 'Select a service...', 'termageddon-usercentrics' ); ?></option> 1767 <?php foreach ( $options as $key => $label ) : ?> 1768 <option value="<?php echo esc_attr( $key ); ?>" <?php selected( $service_id, $key ); ?>> 1769 <?php echo esc_html( $label ); ?> 1770 </option> 1771 <?php endforeach; ?> 1772 </select> 1773 </div> 1774 <div> 1775 <label for="termageddon_usercentrics_script_snippets_<?php echo esc_attr( $index ); ?>_script"> 1776 <strong><?php esc_html_e( 'Script Code', 'termageddon-usercentrics' ); ?></strong> 1777 </label> 1778 <textarea 1779 class="termageddon-embed-code termageddon-script-textarea" 1780 name="termageddon_usercentrics_script_snippets[<?php echo esc_attr( $index ); ?>][script]" 1781 id="termageddon_usercentrics_script_snippets_<?php echo esc_attr( $index ); ?>_script" 1782 rows="7" 1783 style="width: 100%;" 1784 placeholder="Both external and inline scripts are supported. External Script: <script src="https://example.com/script.js"></script> Inline script: <script>console.log("Loaded")</script>" 1785 ><?php echo esc_textarea( $script_content ); ?></textarea> 1786 </div> 1787 </div> 1788 </div> 1789 </div> 1790 <?php endforeach; ?> 1791 <?php endif; ?> 1792 </div> 1793 <button type="button" class="button termageddon-add-snippet" style="margin-top: 10px;"><?php esc_html_e( '+ Add Script Snippet', 'termageddon-usercentrics' ); ?></button> 1794 <?php 1795 // Generate options HTML for template 1796 $options_html = '<option value="">' . esc_html__( 'Select a service...', 'termageddon-usercentrics' ) . '</option>'; 1797 foreach ( $options as $key => $label ) { 1798 $options_html .= '<option value="' . esc_attr( $key ) . '">' . esc_html( $label ) . '</option>'; 1799 } 1800 ?> 1801 <script type="text/template" id="termageddon-script-snippet-template" data-options="<?php echo esc_attr( $options_html ); ?>"> 1802 <div class="termageddon-script-snippet-row" data-index="{{INDEX}}"> 1803 <div class="termageddon-snippet-accordion-item" style="margin-bottom: 15px; border: 1px solid #ddd; background: #f9f9f9;"> 1804 <div class="termageddon-snippet-accordion-header" style="display: flex; justify-content: space-between; align-items: center; padding: 15px; cursor: pointer; user-select: none;"> 1805 <div style="display: flex; align-items: center; gap: 10px; flex: 1;"> 1806 <span class="termageddon-snippet-service-name"><?php echo esc_html__( 'New Script Snippet', 'termageddon-usercentrics' ); ?></span> 1807 <span class="termageddon-snippet-badge">0 scripts identified</span> 1808 </div> 1809 <div style="display: flex; align-items: center; gap: 10px;"> 1810 <span class="termageddon-snippet-caret dashicons dashicons-arrow-down-alt2" style="transition: transform 0.3s ease;"></span> 1811 <button type="button" class="button termageddon-remove-snippet" style="color: #dc3232; margin: 0;"><?php echo esc_html__( 'Remove', 'termageddon-usercentrics' ); ?></button> 1812 </div> 1813 </div> 1814 <div class="termageddon-snippet-accordion-content" style="padding: 0 15px 15px 15px;"> 1815 <div style="margin-top: 15px; margin-bottom: 10px;"> 1816 <label for="termageddon_usercentrics_script_snippets_{{INDEX}}_service_id"> 1817 <strong><?php echo esc_html__( 'Service', 'termageddon-usercentrics' ); ?></strong> 1818 </label> 1819 <select 1820 name="termageddon_usercentrics_script_snippets[{{INDEX}}][service_id]" 1821 id="termageddon_usercentrics_script_snippets_{{INDEX}}_service_id" 1822 class="termageddon-singleselect" 1823 style="width: 100%;" 1824 > 1825 <?php echo $options_html; ?> 1826 </select> 1827 </div> 1828 <div> 1829 <label for="termageddon_usercentrics_script_snippets_{{INDEX}}_script"> 1830 <strong><?php echo esc_html__( 'Script Code', 'termageddon-usercentrics' ); ?></strong> 1831 </label> 1832 <textarea 1833 class="termageddon-embed-code termageddon-script-textarea" 1834 name="termageddon_usercentrics_script_snippets[{{INDEX}}][script]" 1835 id="termageddon_usercentrics_script_snippets_{{INDEX}}_script" 1836 rows="7" 1837 style="width: 100%;" 1838 placeholder="Both external and inline scripts are supported. External Script: <script src="https://example.com/script.js"></script> Inline script: <script>console.log("Loaded")</script>" 1839 ></textarea> 1840 </div> 1841 </div> 1842 </div> 1843 </div> 1844 </script> 1845 <?php 1846 } 1847 1508 1848 } -
termageddon-usercentrics/trunk/admin/css/termageddon-usercentrics-admin.css
r3326335 r3439658 6 6 textarea.termageddon-embed-code { 7 7 width: 100%; 8 height: 250px;8 height: 150px; 9 9 } 10 10 11 11 /* Section Settings */ 12 12 .tu-toggle-section, 13 .tu-section-settings { 13 .tu-section-settings, 14 .tu-settings-section { 14 15 margin-top: 2rem; 15 16 } … … 36 37 pointer-events: none; 37 38 } 38 .tu-toggle-section .form-table, 39 .tu-tab-integrations .tu-settings-section .form-table { 39 .tu-toggle-section .form-table { 40 40 margin-left: 2rem; 41 41 } … … 52 52 53 53 /* Settings Section */ 54 #termageddon-script-snippets-container, 55 .tu-settings-section { 56 padding-left: 2rem; 57 padding-right: 2rem; 58 } 59 60 .tu-settings-tab.tu-tab-config .tu-settings-section { 61 padding-left: 0; 62 padding-right: 0; 63 } 64 54 65 .tu-settings-section .form-table th { 55 66 width: 300px; … … 251 262 margin-bottom: 8px; 252 263 } 264 265 /* Full-width settings field (for script snippets) */ 266 .form-table tr.tu-table-full-width th { 267 display: none; 268 } 269 270 .form-table tr.tu-table-full-width td { 271 display: block; 272 padding: 0; 273 } 274 275 /* Script Snippets Accordion */ 276 .termageddon-snippet-accordion-item { 277 border-radius: 4px; 278 overflow: hidden; 279 } 280 281 .termageddon-snippet-accordion-header { 282 background: #fff; 283 border-bottom: 1px solid #ddd; 284 transition: background-color 0.2s ease; 285 } 286 287 .termageddon-snippet-accordion-header:hover { 288 background: #f5f5f5; 289 } 290 291 .termageddon-snippet-service-name { 292 font-weight: 600; 293 font-size: 14px; 294 color: #23282d; 295 } 296 297 .termageddon-snippet-badge { 298 display: inline-flex; 299 align-items: center; 300 justify-content: center; 301 min-width: 24px; 302 height: 24px; 303 padding: 0 8px; 304 background-color: #ccc; 305 color: #fff; 306 border-radius: 12px; 307 font-size: 12px; 308 font-weight: 600; 309 line-height: 1; 310 white-space: nowrap; 311 } 312 313 .termageddon-snippet-badge-success { 314 background-color: #00a32a !important; 315 } 316 317 .termageddon-snippet-caret { 318 color: #646970; 319 font-size: 20px; 320 width: 20px; 321 height: 20px; 322 } 323 324 .termageddon-snippet-accordion-content { 325 background: #f9f9f9; 326 transition: all 0.3s ease; 327 } 328 329 .termageddon-snippet-accordion-content.collapsed { 330 display: none !important; 331 } 332 333 .termageddon-snippet-accordion-content:not(.collapsed) { 334 display: block !important; 335 } -
termageddon-usercentrics/trunk/admin/css/termageddon-usercentrics-admin.min.css
r3266555 r3439658 1 textarea.termageddon-embed-code{width:100%;height: 250px}.tu-section-settings,.tu-toggle-section{margin-top:2rem}.tu-settings-tab.tu-tab-integrations .tu-section{display:none}.tu-toggle-section .tu-section-title{font-size:125%;font-weight:800}.tu-toggle-section .tu-section-title-helper{padding:1rem;color:#6c6c6c;font-style:italic}.tu-toggle-section input[readonly]{opacity:50%;pointer-events:none}.tu-toggle-section .form-table{margin-left:2rem}.tu-toggle-section .form-table td,.tu-toggle-section .form-table th{padding:.5rem 0}.tu-toggle-section .form-table th{width:300px}.tu-toggle-section.slim-section .form-table th{width:125px}.tu-settings-section .form-table th{width:300px}.tu-section-hidden{display:none}.tu-label-success{background-color:#3db44c;color:#fff;padding:3px 5px;border-radius:5px;font-size:60%}.tu-label-info{background-color:#019ed5;color:#fff;padding:3px 5px;border-radius:5px;font-size:60%}.tu-label-warning{background-color:orange;color:#fff;padding:3px 5px;border-radius:5px;font-size:60%}input[type=checkbox].wppd-ui-toggle{-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-tap-highlight-color:transparent;width:auto;height:auto;vertical-align:middle;position:relative;border:0;outline:0;cursor:pointer;margin:0 4px;background:0 0;box-shadow:none}input[type=checkbox].wppd-ui-toggle:focus{box-shadow:none}input[type=checkbox].wppd-ui-toggle:after{content:"";font-size:6px;font-weight:400;line-height:18px;text-indent:-14px;color:#fff;width:36px;height:18px;display:inline-block;background-color:#a7aaad;border-radius:72px;box-shadow:0 0 12px rgb(0 0 0 / 15%) inset}input[type=checkbox].wppd-ui-toggle:before{content:"";width:14px;height:14px;display:block;position:absolute;top:2px;left:2px;margin:0;border-radius:50%;background-color:#fff}input[type=checkbox].wppd-ui-toggle:checked:before{left:20px;margin:0;background-color:#fff}input[type=checkbox].wppd-ui-toggle,input[type=checkbox].wppd-ui-toggle:after,input[type=checkbox].wppd-ui-toggle:before,input[type=checkbox].wppd-ui-toggle:checked:after,input[type=checkbox].wppd-ui-toggle:checked:before{transition:ease .15s}input[type=checkbox].wppd-ui-toggle:checked:after{content:"ON";background-color:#2271b1}input[type=checkbox].wppd-ui-toggle.label-hidden:after{width:48px}input[type=checkbox].wppd-ui-toggle.label-hidden:checked:before{left:32px}input[type=checkbox].wppd-ui-toggle.label-hidden:checked:after{content:"HIDDEN"}input[type=checkbox].wppd-ui-toggle.label-enabled:after{font-size:8px;width:60px;content:"DISABLED";text-indent:15px}input[type=checkbox].wppd-ui-toggle.label-enabled:checked:before{left:44px}input[type=checkbox].wppd-ui-toggle.label-enabled:checked:after{background-color:#1ed14b;content:"ENABLED";text-indent:-14px}.notice-inline{border-top:1px solid #c3c4c7;border-bottom:1px solid #c3c4c7;border-right:1px solid #c3c4c7;border-left-width:4px;border-left-style:solid;background:#fff;box-shadow:0 1px 1px rgba(0,0,0,.04);margin:5px 15px 2px;padding:1px 12px}.tu-settings-section label em{font-size:12px;font-weight:400}.tu-alert-error{color:#d63638;background:#fcf0f1;padding:10px;border-left:4px solid #d63638;margin:10px 0}.tu-alert-warning{color:#856404;background:#fff3cd;padding:10px;border-left:4px solid #ffc107;margin:10px 0}.tu-alert-success{color:#00a32a;background:#edfaef;padding:10px;border-left:4px solid #00a32a;margin:10px 0}.button-danger{background:#d63638!important;border-color:#d63638!important;color:#fff!important}.button-danger:focus,.button-danger:hover{background:#b32d2e!important;border-color:#b32d2e!important;color:#fff!important}.button-warning{background:#ffc107!important;border-color:#ffc107!important;color:#333!important;font-weight:700}.button-warning:focus,.button-warning:hover{background:#e0a800!important;border-color:#e0a800!important;color:#000!important}textarea.select2-search__field{margin-bottom:8px}1 textarea.termageddon-embed-code{width:100%;height:150px}.tu-section-settings,.tu-settings-section,.tu-toggle-section{margin-top:2rem}.tu-settings-tab.tu-tab-integrations .tu-section{display:none}.tu-toggle-section .tu-section-title{font-size:125%;font-weight:800}.tu-toggle-section .tu-section-title-helper{padding:1rem;color:#6c6c6c;font-style:italic}.tu-toggle-section input[readonly]{opacity:50%;pointer-events:none}.tu-toggle-section .form-table{margin-left:2rem}.tu-toggle-section .form-table td,.tu-toggle-section .form-table th{padding:.5rem 0}.tu-toggle-section .form-table th{width:300px}.tu-toggle-section.slim-section .form-table th{width:125px}#termageddon-script-snippets-container,.tu-settings-section{padding-left:2rem;padding-right:2rem}.tu-settings-tab.tu-tab-config .tu-settings-section{padding-left:0;padding-right:0}.tu-settings-section .form-table th{width:300px}.tu-tab-integrations .tu-settings-section .form-table th{width:500px}.tu-section-hidden{display:none}.tu-label-success{background-color:#3db44c;color:#fff;padding:3px 5px;border-radius:5px;font-size:60%}.tu-label-info{background-color:#019ed5;color:#fff;padding:3px 5px;border-radius:5px;font-size:60%}.tu-label-warning{background-color:orange;color:#fff;padding:3px 5px;border-radius:5px;font-size:60%}input[type=checkbox].wppd-ui-toggle{-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-tap-highlight-color:transparent;width:auto;height:auto;vertical-align:middle;position:relative;border:0;outline:0;cursor:pointer;margin:0 4px;background:0 0;box-shadow:none}input[type=checkbox].wppd-ui-toggle:focus{box-shadow:none}input[type=checkbox].wppd-ui-toggle:after{content:"";font-size:6px;font-weight:400;line-height:18px;text-indent:-14px;color:#fff;width:36px;height:18px;display:inline-block;background-color:#a7aaad;border-radius:72px;box-shadow:0 0 12px rgb(0 0 0 / 15%) inset}input[type=checkbox].wppd-ui-toggle:before{content:"";width:14px;height:14px;display:block;position:absolute;top:2px;left:2px;margin:0;border-radius:50%;background-color:#fff}input[type=checkbox].wppd-ui-toggle:checked:before{left:20px;margin:0;background-color:#fff}input[type=checkbox].wppd-ui-toggle,input[type=checkbox].wppd-ui-toggle:after,input[type=checkbox].wppd-ui-toggle:before,input[type=checkbox].wppd-ui-toggle:checked:after,input[type=checkbox].wppd-ui-toggle:checked:before{transition:ease .15s}input[type=checkbox].wppd-ui-toggle:checked:after{content:"ON";background-color:#2271b1}input[type=checkbox].wppd-ui-toggle.label-hidden:after{width:48px}input[type=checkbox].wppd-ui-toggle.label-hidden:checked:before{left:32px}input[type=checkbox].wppd-ui-toggle.label-hidden:checked:after{content:"HIDDEN"}input[type=checkbox].wppd-ui-toggle.label-enabled:after{font-size:8px;width:60px;content:"DISABLED";text-indent:15px}input[type=checkbox].wppd-ui-toggle.label-enabled:checked:before{left:44px}input[type=checkbox].wppd-ui-toggle.label-enabled:checked:after{background-color:#1ed14b;content:"ENABLED";text-indent:-14px}.notice-inline{border-top:1px solid #c3c4c7;border-bottom:1px solid #c3c4c7;border-right:1px solid #c3c4c7;border-left-width:4px;border-left-style:solid;background:#fff;box-shadow:0 1px 1px rgba(0,0,0,.04);margin:5px 15px 2px;padding:1px 12px}.tu-settings-section label em{font-size:12px;font-weight:400}.tu-alert-error{color:#d63638;background:#fcf0f1;padding:10px;border-left:4px solid #d63638;margin:10px 0}.tu-alert-warning{color:#856404;background:#fff3cd;padding:10px;border-left:4px solid #ffc107;margin:10px 0}.tu-alert-success{color:#00a32a;background:#edfaef;padding:10px;border-left:4px solid #00a32a;margin:10px 0}.button-danger{background:#d63638!important;border-color:#d63638!important;color:#fff!important}.button-danger:focus,.button-danger:hover{background:#b32d2e!important;border-color:#b32d2e!important;color:#fff!important}.button-warning{background:#ffc107!important;border-color:#ffc107!important;color:#333!important;font-weight:700}.button-warning:focus,.button-warning:hover{background:#e0a800!important;border-color:#e0a800!important;color:#000!important}textarea.select2-search__field{margin-bottom:8px}.form-table tr.tu-table-full-width th{display:none}.form-table tr.tu-table-full-width td{display:block;padding:0}.termageddon-snippet-accordion-item{border-radius:4px;overflow:hidden}.termageddon-snippet-accordion-header{background:#fff;border-bottom:1px solid #ddd;transition:background-color .2s ease}.termageddon-snippet-accordion-header:hover{background:#f5f5f5}.termageddon-snippet-service-name{font-weight:600;font-size:14px;color:#23282d}.termageddon-snippet-badge{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:24px;padding:0 8px;background-color:#ccc;color:#fff;border-radius:12px;font-size:12px;font-weight:600;line-height:1;white-space:nowrap}.termageddon-snippet-badge-success{background-color:#00a32a!important}.termageddon-snippet-caret{color:#646970;font-size:20px;width:20px;height:20px}.termageddon-snippet-accordion-content{background:#f9f9f9;transition:all .3s ease}.termageddon-snippet-accordion-content.collapsed{display:none!important}.termageddon-snippet-accordion-content:not(.collapsed){display:block!important} -
termageddon-usercentrics/trunk/admin/js/termageddon-usercentrics-admin.js
r3284346 r3439658 141 141 "" 142 142 ) 143 .replace( 144 /<script>uc.setCustomTranslations.*<\/script>/g, 145 "" 146 ) 143 .replace(/<script>uc.setCustomTranslations.*<\/script>/g, "") 147 144 .trim(); 148 145 … … 163 160 }); 164 161 } 162 163 // ============================================ // 164 // ======== Script Snippets Repeater ========== // 165 // ============================================ // 166 167 // Constants 168 const SNIPPET_CONSTANTS = { 169 ANIMATION_DURATION: 300, 170 CARET_ROTATION: { 171 COLLAPSED: "rotate(0deg)", 172 EXPANDED: "rotate(180deg)", 173 }, 174 SELECT2_OPTIONS: { 175 width: "100%", 176 placeholder: "Select a service...", 177 allowClear: true, 178 }, 179 DEFAULT_SERVICE_TEXT: "New Script Snippet", 180 }; 181 182 const snippetsContainer = $("#termageddon-script-snippets-container"); 183 const addSnippetButton = $(".termageddon-add-snippet"); 184 const template = $("#termageddon-script-snippet-template"); 185 186 /** 187 * Count script tags in textarea 188 * @param {HTMLElement} textarea - The textarea element 189 * @returns {number} Number of script tags found 190 */ 191 function countScriptTags(textarea) { 192 const content = $(textarea).val() || ""; 193 const matches = content.match(/<script/gi); 194 return matches ? matches.length : 0; 195 } 196 197 /** 198 * Update badge with script count 199 * @param {jQuery} $row - The row element 200 */ 201 function updateScriptBadge($row) { 202 const $textarea = $row.find(".termageddon-script-textarea"); 203 const $badge = $row.find(".termageddon-snippet-badge"); 204 const count = countScriptTags($textarea[0]); 205 206 if (count > 0) { 207 $badge.text(`${count} script${count !== 1 ? "s" : ""} identified`); 208 $badge.addClass("termageddon-snippet-badge-success"); 209 } else { 210 $badge.text("0 scripts identified"); 211 $badge.removeClass("termageddon-snippet-badge-success"); 212 } 213 } 214 215 /** 216 * Update service name in header 217 * @param {jQuery} $row - The row element 218 */ 219 function updateServiceName($row) { 220 const $select = $row.find(".termageddon-singleselect"); 221 const $serviceName = $row.find(".termageddon-snippet-service-name"); 222 const selectedText = $select.find("option:selected").text(); 223 224 $serviceName.text( 225 $select.val() && selectedText 226 ? selectedText 227 : SNIPPET_CONSTANTS.DEFAULT_SERVICE_TEXT 228 ); 229 } 230 231 /** 232 * Toggle accordion open/closed state 233 * @param {jQuery} $header - The accordion header element 234 */ 235 function toggleAccordion($header) { 236 const $content = $header.siblings( 237 ".termageddon-snippet-accordion-content" 238 ); 239 const $caret = $header.find(".termageddon-snippet-caret"); 240 241 if ($content.is(":visible")) { 242 // Collapsing 243 $content.slideUp(SNIPPET_CONSTANTS.ANIMATION_DURATION, function () { 244 $(this).addClass("collapsed"); 245 }); 246 $caret.css("transform", SNIPPET_CONSTANTS.CARET_ROTATION.COLLAPSED); 247 } else { 248 // Expanding 249 $content 250 .removeClass("collapsed") 251 .slideDown(SNIPPET_CONSTANTS.ANIMATION_DURATION); 252 $caret.css("transform", SNIPPET_CONSTANTS.CARET_ROTATION.EXPANDED); 253 } 254 } 255 256 /** 257 * Set accordion state without animation 258 * @param {jQuery} $content - The accordion content element 259 * @param {jQuery} $caret - The caret icon element 260 * @param {boolean} isCollapsed - Whether the accordion should be collapsed 261 */ 262 function setAccordionState($content, $caret, isCollapsed) { 263 if (isCollapsed) { 264 $content.hide(); 265 $caret.css("transform", SNIPPET_CONSTANTS.CARET_ROTATION.COLLAPSED); 266 } else { 267 $content.show(); 268 $caret.css("transform", SNIPPET_CONSTANTS.CARET_ROTATION.EXPANDED); 269 } 270 } 271 272 /** 273 * Initialize accordion for a row 274 * @param {jQuery} $row - The row element 275 */ 276 function initAccordionRow($row) { 277 // Update badge and service name on load 278 updateScriptBadge($row); 279 updateServiceName($row); 280 281 // Set initial caret rotation based on collapsed state 282 const $content = $row.find(".termageddon-snippet-accordion-content"); 283 const $caret = $row.find(".termageddon-snippet-caret"); 284 setAccordionState($content, $caret, $content.hasClass("collapsed")); 285 } 286 287 /** 288 * Initialize Select2 for single-select fields 289 * @param {jQuery} $element - Optional specific element to initialize, or all if not provided 290 */ 291 function initSelect2($element) { 292 const $targets = $element || $(".termageddon-singleselect"); 293 294 $targets.each(function () { 295 if (!$(this).hasClass("select2-hidden-accessible")) { 296 $(this).select2(SNIPPET_CONSTANTS.SELECT2_OPTIONS); 297 } 298 }); 299 } 300 301 // Initialize on page load 302 if (snippetsContainer.length) { 303 initSelect2(); 304 snippetsContainer 305 .find(".termageddon-script-snippet-row") 306 .each(function () { 307 initAccordionRow($(this)); 308 }); 309 } 310 311 // Accordion header click handler 312 $(document).on( 313 "click.tu", 314 ".termageddon-snippet-accordion-header", 315 function (e) { 316 // Don't toggle if clicking on remove button 317 if ($(e.target).closest(".termageddon-remove-snippet").length) { 318 return; 319 } 320 toggleAccordion($(this)); 321 } 322 ); 323 324 // Update service name when dropdown changes (handles both regular and Select2) 325 $(document).on( 326 "change.tu select2:select.tu select2:clear.tu", 327 ".termageddon-singleselect", 328 function () { 329 const $row = $(this).closest(".termageddon-script-snippet-row"); 330 updateServiceName($row); 331 } 332 ); 333 334 // Update badge when textarea changes 335 $(document).on( 336 "input.tu change.tu", 337 ".termageddon-script-textarea", 338 function () { 339 const $row = $(this).closest(".termageddon-script-snippet-row"); 340 updateScriptBadge($row); 341 } 342 ); 343 344 /** 345 * Get the next available index for a new snippet 346 * @returns {number} The next index to use 347 */ 348 function getNextSnippetIndex() { 349 let maxIndex = -1; 350 snippetsContainer 351 .find(".termageddon-script-snippet-row") 352 .each(function () { 353 const index = parseInt($(this).attr("data-index"), 10); 354 if (!isNaN(index) && index > maxIndex) { 355 maxIndex = index; 356 } 357 }); 358 return maxIndex + 1; 359 } 360 361 // Add new snippet 362 if (addSnippetButton.length) { 363 addSnippetButton.off("click.tu").on("click.tu", function (e) { 364 e.preventDefault(); 365 366 const newIndex = getNextSnippetIndex(); 367 368 // Get template HTML 369 let templateHtml = template.html(); 370 if (!templateHtml) { 371 console.error("Template not found"); 372 return; 373 } 374 375 // Replace template placeholders 376 templateHtml = templateHtml 377 .replace(/\{\{INDEX\}\}/g, newIndex) 378 .replace(/\{\{INDEX_PLUS_ONE\}\}/g, newIndex + 1); 379 380 // Append new row 381 const $newRow = $(templateHtml); 382 snippetsContainer.append($newRow); 383 384 // Initialize Select2 for the new select field 385 const $newSelect = $newRow.find(".termageddon-singleselect"); 386 initSelect2($newSelect); 387 388 // Update badge and service name 389 updateScriptBadge($newRow); 390 updateServiceName($newRow); 391 392 // Set to expanded state (no collapsed class, ensure visible) 393 const $content = $newRow.find( 394 ".termageddon-snippet-accordion-content" 395 ); 396 const $caret = $newRow.find(".termageddon-snippet-caret"); 397 setAccordionState($content, $caret, false); 398 }); 399 } 400 401 /** 402 * Update an attribute by replacing old index with new index 403 * @param {jQuery} $elem - The element to update 404 * @param {string} attrName - The attribute name (id, name, for) 405 * @param {number} oldIndex - The old index to replace 406 * @param {number} newIndex - The new index to use 407 * @param {string} pattern - The pattern to match ('_' for ids, '[' for names) 408 */ 409 function updateIndexInAttribute( 410 $elem, 411 attrName, 412 oldIndex, 413 newIndex, 414 pattern 415 ) { 416 const attrValue = $elem.attr(attrName); 417 if (!attrValue) return; 418 419 let searchStr, replaceStr; 420 if (pattern === "_") { 421 searchStr = `_${oldIndex}_`; 422 replaceStr = `_${newIndex}_`; 423 } else if (pattern === "[") { 424 searchStr = `[${oldIndex}]`; 425 replaceStr = `[${newIndex}]`; 426 } 427 428 if (attrValue.includes(searchStr)) { 429 $elem.attr(attrName, attrValue.replace(searchStr, replaceStr)); 430 return attrValue; // Return old value for label updates 431 } 432 return null; 433 } 434 435 /** 436 * Re-index all snippet rows after removal 437 */ 438 function reindexSnippets() { 439 snippetsContainer 440 .find(".termageddon-script-snippet-row") 441 .each(function (index) { 442 const $currentRow = $(this); 443 const oldIndex = parseInt($currentRow.attr("data-index"), 10); 444 445 if (isNaN(oldIndex) || oldIndex === index) { 446 return; // Skip if already correct 447 } 448 449 // Update data-index 450 $currentRow.attr("data-index", index); 451 452 // Update IDs, names, and labels 453 $currentRow.find("select, textarea, label").each(function () { 454 const $elem = $(this); 455 456 // Update ID and corresponding labels 457 const oldId = updateIndexInAttribute( 458 $elem, 459 "id", 460 oldIndex, 461 index, 462 "_" 463 ); 464 if (oldId) { 465 const $label = $currentRow.find( 466 `label[for="${oldId}"]` 467 ); 468 if ($label.length) { 469 const newId = $elem.attr("id"); 470 $label.attr("for", newId); 471 } 472 } 473 474 // Update name attribute 475 updateIndexInAttribute($elem, "name", oldIndex, index, "["); 476 477 // Update for attribute 478 updateIndexInAttribute($elem, "for", oldIndex, index, "_"); 479 }); 480 481 // Re-initialize accordion after re-indexing 482 initAccordionRow($currentRow); 483 }); 484 } 485 486 // Remove snippet 487 $(document).on("click.tu", ".termageddon-remove-snippet", function (e) { 488 e.preventDefault(); 489 e.stopPropagation(); // Prevent accordion from toggling 490 491 if ( 492 confirm( 493 "Are you sure you want to remove this script snippet? This action cannot be undone." 494 ) 495 ) { 496 const $row = $(this).closest(".termageddon-script-snippet-row"); 497 $row.remove(); 498 reindexSnippets(); 499 } 500 }); 165 501 }); -
termageddon-usercentrics/trunk/admin/js/termageddon-usercentrics-admin.min.js
r3284346 r3439658 1 jQuery((function($){let animationSpeed=0,initialLoad=!1,loggedIn=$(".tu-tab-settings .tu-toggle-section input#termageddon_usercentrics_disable_logged_in"),editor=$(".tu-tab-settings .tu-toggle-section input#termageddon_usercentrics_disable_editor"),admin=$(".tu-tab-settings .tu-toggle-section input#termageddon_usercentrics_disable_admin");const check=(elem,checked=!0)=>{console.log(elem,checked),elem.prop("checked",checked).attr("readonly",checked).trigger("change")};1===loggedIn.length&&loggedIn.off("change.tu").on("change.tu",(function(){($(this).is(":checked")||initialLoad)&&(check(editor,$(this).is(":checked")),check(admin,$(this).is(":checked")))})).trigger("change");let geolocationToggle=$("input#termageddon_usercentrics_toggle_geolocation"),policyToggles=$(".tu-tab-geolocation .tu-toggle-section input");1===geolocationToggle.length&&(geolocationToggle.off("change.tu").on("change.tu",(function(){$(this).is(":checked")?$(".tu-tab-geolocation .tu-section-settings > div").slideDown(animationSpeed):$(".tu-tab-geolocation .tu-section-settings > div").slideUp(animationSpeed)})).trigger("change"),policyToggles.off("change.tu").on("change.tu",(function(){policyToggles.is(":checked")?jQuery("#no-geolocation-locations-selected,#no-geolocation-locations-selected-top").slideUp(animationSpeed):jQuery("#no-geolocation-locations-selected").slideDown(animationSpeed)})).trigger("change")),animationSpeed=300,initialLoad=!0;let migrationButton=$("#run_settings_migration");1===migrationButton.length&&migrationButton.off("click.tu").on("click.tu",(function(){const embedCode=document.querySelector("#termageddon_usercentrics_embed_code").value,settingsIdMatch=embedCode.match(/data-settings-id="([^"]+)"/);if(!settingsIdMatch||!settingsIdMatch[1])return void alert("Unable to find settings ID in embed code. Please ensure your embed code section contains a data-settings-id attribute. Please contact our support team if would like assistance.");const settingsId=settingsIdMatch[1];document.querySelector("#termageddon_usercentrics_settings_id").value=settingsId,document.querySelector("#termageddon_usercentrics_embed_code").value=embedCode.replace('<link rel="preconnect" href="https://plugins.trac.wordpress.org//privacy-proxy.usercentrics.eu">',"").replace('<link rel="preload" href="https://plugins.trac.wordpress.org//privacy-proxy.usercentrics.eu/latest/uc-block.bundle.js" as="script">',"").replace('<script type="application/javascript" src="https://privacy-proxy.usercentrics.eu/latest/uc-block.bundle.js"><\/script>',"").replace(/<script.*id="usercentrics-cmp".*async>.*<\/script>/g,"").replace(/<script>uc.setCustomTranslations.*<\/script>/g,"").trim();const migrationMessage=$(".migration-message");migrationMessage.removeClass("tu-alert-error").addClass("tu-alert-success"),migrationMessage.find("strong").text("Conversion Complete"),migrationMessage.find("p.alert-description").html("The embed code has been converted to a settings ID. All custom scripts outside of the original embed code have been maintained.<br/></br>\n\t\t\t\t\t<strong><em>The changes have been submitted.</em></strong>"),$(".tab-content form input.button").click()})) }));1 jQuery((function($){let animationSpeed=0,initialLoad=!1,loggedIn=$(".tu-tab-settings .tu-toggle-section input#termageddon_usercentrics_disable_logged_in"),editor=$(".tu-tab-settings .tu-toggle-section input#termageddon_usercentrics_disable_editor"),admin=$(".tu-tab-settings .tu-toggle-section input#termageddon_usercentrics_disable_admin");const check=(elem,checked=!0)=>{console.log(elem,checked),elem.prop("checked",checked).attr("readonly",checked).trigger("change")};1===loggedIn.length&&loggedIn.off("change.tu").on("change.tu",(function(){($(this).is(":checked")||initialLoad)&&(check(editor,$(this).is(":checked")),check(admin,$(this).is(":checked")))})).trigger("change");let geolocationToggle=$("input#termageddon_usercentrics_toggle_geolocation"),policyToggles=$(".tu-tab-geolocation .tu-toggle-section input");1===geolocationToggle.length&&(geolocationToggle.off("change.tu").on("change.tu",(function(){$(this).is(":checked")?$(".tu-tab-geolocation .tu-section-settings > div").slideDown(animationSpeed):$(".tu-tab-geolocation .tu-section-settings > div").slideUp(animationSpeed)})).trigger("change"),policyToggles.off("change.tu").on("change.tu",(function(){policyToggles.is(":checked")?jQuery("#no-geolocation-locations-selected,#no-geolocation-locations-selected-top").slideUp(animationSpeed):jQuery("#no-geolocation-locations-selected").slideDown(animationSpeed)})).trigger("change")),animationSpeed=300,initialLoad=!0;let migrationButton=$("#run_settings_migration");1===migrationButton.length&&migrationButton.off("click.tu").on("click.tu",(function(){const embedCode=document.querySelector("#termageddon_usercentrics_embed_code").value,settingsIdMatch=embedCode.match(/data-settings-id="([^"]+)"/);if(!settingsIdMatch||!settingsIdMatch[1])return void alert("Unable to find settings ID in embed code. Please ensure your embed code section contains a data-settings-id attribute. Please contact our support team if would like assistance.");const settingsId=settingsIdMatch[1];document.querySelector("#termageddon_usercentrics_settings_id").value=settingsId,document.querySelector("#termageddon_usercentrics_embed_code").value=embedCode.replace('<link rel="preconnect" href="https://plugins.trac.wordpress.org//privacy-proxy.usercentrics.eu">',"").replace('<link rel="preload" href="https://plugins.trac.wordpress.org//privacy-proxy.usercentrics.eu/latest/uc-block.bundle.js" as="script">',"").replace('<script type="application/javascript" src="https://privacy-proxy.usercentrics.eu/latest/uc-block.bundle.js"><\/script>',"").replace(/<script.*id="usercentrics-cmp".*async>.*<\/script>/g,"").replace(/<script>uc.setCustomTranslations.*<\/script>/g,"").trim();const migrationMessage=$(".migration-message");migrationMessage.removeClass("tu-alert-error").addClass("tu-alert-success"),migrationMessage.find("strong").text("Conversion Complete"),migrationMessage.find("p.alert-description").html("The embed code has been converted to a settings ID. All custom scripts outside of the original embed code have been maintained.<br/></br>\n\t\t\t\t\t<strong><em>The changes have been submitted.</em></strong>"),$(".tab-content form input.button").click()}));const SNIPPET_CONSTANTS_ANIMATION_DURATION=300,SNIPPET_CONSTANTS_CARET_ROTATION={COLLAPSED:"rotate(0deg)",EXPANDED:"rotate(180deg)"},SNIPPET_CONSTANTS_SELECT2_OPTIONS={width:"100%",placeholder:"Select a service...",allowClear:!0},SNIPPET_CONSTANTS_DEFAULT_SERVICE_TEXT="New Script Snippet",snippetsContainer=$("#termageddon-script-snippets-container"),addSnippetButton=$(".termageddon-add-snippet"),template=$("#termageddon-script-snippet-template");function countScriptTags(textarea){const content=$(textarea).val()||"",matches=content.match(/<script/gi);return matches?matches.length:0}function updateScriptBadge($row){const $textarea=$row.find(".termageddon-script-textarea"),$badge=$row.find(".termageddon-snippet-badge"),count=countScriptTags($textarea[0]);count>0?($badge.text(`${count} script${1!==count?"s":""} identified`),$badge.addClass("termageddon-snippet-badge-success")):($badge.text("0 scripts identified"),$badge.removeClass("termageddon-snippet-badge-success"))}function updateServiceName($row){const $select=$row.find(".termageddon-singleselect"),$serviceName=$row.find(".termageddon-snippet-service-name"),selectedText=$select.find("option:selected").text();$serviceName.text($select.val()&&selectedText?selectedText:SNIPPET_CONSTANTS_DEFAULT_SERVICE_TEXT)}function toggleAccordion($header){const $content=$header.siblings(".termageddon-snippet-accordion-content"),$caret=$header.find(".termageddon-snippet-caret");$content.is(":visible")?($content.slideUp(SNIPPET_CONSTANTS_ANIMATION_DURATION,(function(){$(this).addClass("collapsed")})),$caret.css("transform",SNIPPET_CONSTANTS_CARET_ROTATION.COLLAPSED)):($content.removeClass("collapsed").slideDown(SNIPPET_CONSTANTS_ANIMATION_DURATION),$caret.css("transform",SNIPPET_CONSTANTS_CARET_ROTATION.EXPANDED))}function setAccordionState($content,$caret,isCollapsed){isCollapsed?($content.hide(),$caret.css("transform",SNIPPET_CONSTANTS_CARET_ROTATION.COLLAPSED)):($content.show(),$caret.css("transform",SNIPPET_CONSTANTS_CARET_ROTATION.EXPANDED))}function initAccordionRow($row){updateScriptBadge($row),updateServiceName($row);const $content=$row.find(".termageddon-snippet-accordion-content"),$caret=$row.find(".termageddon-snippet-caret");setAccordionState($content,$caret,$content.hasClass("collapsed"))}function initSelect2($element){const $targets=$element||$(".termageddon-singleselect");$targets.each((function(){$(this).hasClass("select2-hidden-accessible")||$(this).select2(SNIPPET_CONSTANTS_SELECT2_OPTIONS)}))}function getNextSnippetIndex(){let maxIndex=-1;return snippetsContainer.find(".termageddon-script-snippet-row").each((function(){const index=parseInt($(this).attr("data-index"),10);!isNaN(index)&&index>maxIndex&&(maxIndex=index)})),maxIndex+1}function updateIndexInAttribute($elem,attrName,oldIndex,newIndex,pattern){const attrValue=$elem.attr(attrName);if(!attrValue)return;let searchStr,replaceStr;return"_"===pattern?(searchStr=`_${oldIndex}_`,replaceStr=`_${newIndex}_`):"["===pattern&&(searchStr=`[${oldIndex}]`,replaceStr=`[${newIndex}]`),attrValue.includes(searchStr)?($elem.attr(attrName,attrValue.replace(searchStr,replaceStr)),attrValue):null}function reindexSnippets(){snippetsContainer.find(".termageddon-script-snippet-row").each((function(index){const $currentRow=$(this),oldIndex=parseInt($currentRow.attr("data-index"),10);isNaN(oldIndex)||oldIndex===index||($currentRow.attr("data-index",index),$currentRow.find("select, textarea, label").each((function(){const $elem=$(this),oldId=updateIndexInAttribute($elem,"id",oldIndex,index,"_");if(oldId){const $label=$currentRow.find(`label[for="${oldId}"]`);if($label.length){const newId=$elem.attr("id");$label.attr("for",newId)}}updateIndexInAttribute($elem,"name",oldIndex,index,"["),updateIndexInAttribute($elem,"for",oldIndex,index,"_")})),initAccordionRow($currentRow))}))}snippetsContainer.length&&(initSelect2(),snippetsContainer.find(".termageddon-script-snippet-row").each((function(){initAccordionRow($(this))}))),$(document).on("click.tu",".termageddon-snippet-accordion-header",(function(e){$(e.target).closest(".termageddon-remove-snippet").length||toggleAccordion($(this))})),$(document).on("change.tu select2:select.tu select2:clear.tu",".termageddon-singleselect",(function(){const $row=$(this).closest(".termageddon-script-snippet-row");updateServiceName($row)})),$(document).on("input.tu change.tu",".termageddon-script-textarea",(function(){const $row=$(this).closest(".termageddon-script-snippet-row");updateScriptBadge($row)})),addSnippetButton.length&&addSnippetButton.off("click.tu").on("click.tu",(function(e){e.preventDefault();const newIndex=getNextSnippetIndex();let templateHtml=template.html();if(!templateHtml)return void console.error("Template not found");templateHtml=templateHtml.replace(/\{\{INDEX\}\}/g,newIndex).replace(/\{\{INDEX_PLUS_ONE\}\}/g,newIndex+1);const $newRow=$(templateHtml);snippetsContainer.append($newRow);const $newSelect=$newRow.find(".termageddon-singleselect");initSelect2($newSelect),updateScriptBadge($newRow),updateServiceName($newRow);const $content=$newRow.find(".termageddon-snippet-accordion-content"),$caret=$newRow.find(".termageddon-snippet-caret");setAccordionState($content,$caret,!1)})),$(document).on("click.tu",".termageddon-remove-snippet",(function(e){if(e.preventDefault(),e.stopPropagation(),confirm("Are you sure you want to remove this script snippet? This action cannot be undone.")){const $row=$(this).closest(".termageddon-script-snippet-row");$row.remove(),reindexSnippets()}}))})); -
termageddon-usercentrics/trunk/admin/usercentrics-providers.php
r3266555 r3439658 1 1 <?php 2 // List is populated from https://policies.termageddon.com/api/usercentrics/services 3 2 4 return [ 3 "ByOJZ54odjW7" => "Add This", 5 "wqpKH6gNO" => "1&1 Ionos", 6 "BpfGDA6d" => "1&1-WebAnalytics", 7 "BJCrgq4iuiWQ" => "1020. dba Placecast and Ericsson Emodo", 8 "NAFUNuBAX" => "123FormBuilder", 9 "ZYtfbi7Cy" => "152 Media", 10 "H1MvxcVjOoZ7" => "1plusX", 11 "-KqxGSaVx" => "1und1 Premiumpartner Service", 12 "7I2eh_kBp" => "23 degrees", 13 "rkt8g9Niuo-7" => "2KDirect", 14 "s0YTrTGL0" => "2Performant", 15 "E4m6On5UY0Wg3S" => "321MED", 16 "BksBg9VjOsZQ" => "33Across", 17 "hzZS-hs9m" => "360 Grad", 18 "6YbgPIgRm" => "3CX", 19 "kXg9DeFEK" => "3Q", 20 "qxiCD5aN_" => "3Q Video", 21 "GWR6Okt5" => "42ads", 22 "FgkB3cpW" => "4w MarketPlace", 23 "D1_CKTzWP" => "6sense", 24 "r1N_g5Vj_oZQ" => "7Hops", 25 "cB1C-CWY0" => "8Select", 26 "Rj7NtbZLIyj6CO" => "A European Perspective", 27 "HJqwlcEi_j-Q" => "A Million Ads", 28 "W5aCtyNa" => "a-net", 29 "S1oqeqVsdob7" => "A.Mob", 30 "MNvgqiAGK" => "A8.net", 31 "r1oD9Eoujbm" => "AB Tasty", 32 "own4GrdkBajHvL" => "ABlyft", 33 "mcMqee5z51IrK1" => "ABlyft - Weboptimisation", 34 "6GBGwDrQe" => "Accelerize", 35 "93B80nQzj" => "Accengage", 36 "qzdvfwREE" => "AcceptableAds Exchange", 37 "4C_H9fAmRKeo3Y" => "AccessGo", 38 "gYLHfz4Lg2RKMU" => "accessiBe", 39 "SyosgcNsds-Q" => "Accorp", 40 "j0a1nV69uzbeh6" => "AccountInsight", 41 "0N5YK1cW1" => "Ackee", 42 "gSTvUFpVi" => "Acoustic", 43 "4ybPfavU" => "Acquia Lift", 44 "SkzZlqVs_sWX" => "Active Agent", 45 "HDA6XNFs" => "ActiveCampaign", 46 "S1Z5Esdsbm" => "Acuity Scheduling", 47 "SJFRgc4sOo-m" => "Acuityads", 48 "Sy_FQ5SRm" => "Ad Alliance", 49 "hv3CkcEHZ9EQ_j" => "Ad Quality by ironSource", 50 "nxlcZXzLr" => "Ad Unity", 51 "Bkk254o_o-7" => "ad-srv.net", 52 "rkdYcVsdoW7" => "ad:C Media", 53 "UCS8eT_Pz" => "ad.plus", 54 "PtvsQPsXKT-OwG" => "Ad360", 55 "HJxLc4odiWQ" => "Ad4Mat", 56 "Hy4ax9Ni_sZm" => "ad6media", 57 "O0dPUkSwE" => "Adabra", 58 "S1CQe54sOs-X" => "Adacado", 59 "EwR_7MJGk" => "Adagio", 60 "NKwDOvvN" => "Adality", 61 "IE1JeSDLF" => "Adalyser", 62 "H1IyeqEjdsbX" => "ADARA MEDIA", 63 "u7C0LiW7f" => "adbility media", 64 "oGR_Jnx50" => "ADC Media Adserver", 65 "9o_f3BYaL" => "ADCELL", 66 "B1Wac4oOjZm" => "AdClear", 67 "J64M6DKwx" => "AdColony", 68 "nr60PuO2s" => "AddApptr", 69 "BkwLqNjOsZm" => "AdDefend", 70 "9y-4-D2PG" => "AddEvent", 71 "vGbt4De0o" => "Additive", 72 "PrhpqbDB_" => "AddSearch", 73 "ByOJZ54odjW7" => "AddThis", 74 "kkgrP2G8D" => "AddToAny", 75 "lEXAlQ-NW" => "AdElement Media Solutions", 76 "BkD_eqEsuiZ7" => "Adello Group", 77 "r1T6l9EoujbQ" => "Adelphic", 78 "Pzgqsq9kN" => "AdFit", 79 "H1dDqVjOjWX" => "Adform", 80 "pXdG1SmmN" => "Adhese", 81 "UBalUr7TT" => "Adhesive Solocal AdExchange", 82 "06CKth4Dv" => "Adhood", 83 "WSoAQvMRZ" => "adhood.com", 84 "BkJylc4s_iW7" => "Adikteev", 85 "CiailyIiu" => "Adimo", 86 "p_-A50o2DYqIah" => "AdInMo", 4 87 "SJFe9NousWX" => "Adition", 88 "B1gD94sdsbm" => "Adition Dynamic Bannering", 89 "ry-vqVsdiW7" => "Adition Erfolgsspot", 90 "Hy1PqEidobQ" => "Adition Lead", 91 "rkGPcEi_i-Q" => "Adition Offsite", 92 "By7DqEsuj-X" => "Adition Onsite", 93 "3Kg4aoMY5ZlAJB" => "adjoe", 94 "Jy6PlrM3" => "Adjust", 95 "Hk24xqVsdo-m" => "Adkernel", 96 "PF3fFUwwd" => "adledge", 97 "oIxiBh98" => "AdLib", 98 "T0zF5X5bk" => "Adloox", 99 "FgdDaKh69" => "Adludio", 100 "BJDig5NsusWQ" => "ADMAN", 101 "BJUQe5NjujWX" => "ADman Interactive", 102 "cD9B0dFVP" => "adMarketplace", 103 "CTwDBP5rd" => "Admat", 104 "Hy8C9ViusZQ" => "AdMaxim", 105 "H1wmg9Esdj-Q" => "Admedo", 106 "SySflcNjdjbX" => "admetrics", 107 "-FzaiGsbx" => "Admixer", 108 "85RFiZ5cV" => "Admixer EU GmbH", 109 "32Br3kD2M" => "admo.tv", 110 "r7rvuoyDz" => "Admob", 111 "Dw8tBVuw1-ixeG" => "Admost", 112 "BJjzlq4j_j-m" => "Admotion", 113 "E8oLmBZtn" => "Adnami", 114 "kDswg2QFY" => "Adnanny AdServer", 115 "H1dzc4suj-Q" => "Adnymics", 116 "SywhgcVjdiZX" => "Adobe Advertising Cloud", 117 "xl1hqS1F" => "Adobe Advertising Cloud DSP", 118 "Ood3MFN7v" => "Adobe Advertising Cloud Search", 119 "KNfCWlL4E" => "Adobe Analytics", 120 "BJf5EjOi-X" => "Adobe Analytics", 121 "0vHbD98mH" => "Adobe Audience Manager", 122 "_l9yJWKF" => "Adobe Creative Cloud", 123 "JxJRp3je4bOWSr" => "Adobe Dimension", 5 124 "f6nkjdUL" => "Adobe Experience Cloud", 125 "PrJkr3BMv" => "Adobe Experience Cloud Identity Service", 126 "MIJtFTuUD" => "Adobe Experience Manager", 127 "xmvi6h6iXlHuEl" => "Adobe Experience Platform", 128 "zIJ0t6El" => "Adobe Fonts", 129 "gMYO_vhh" => "Adobe Fonts", 130 "MjwgMdSe7" => "Adobe Launch", 131 "nGKcQgAF" => "Adobe Launch", 132 "aWNjZCMVTvO8Oj" => "Adobe Marketing Cloud", 133 "xRLAmHZ3A" => "Adobe Target", 134 "8L9bkqYbV" => "Adobe Target", 135 "bkp7ea4UH" => "Adobe Test & Target", 6 136 "HJy4c4s_jbX" => "Adobe Typekit", 137 "jaWccj1u5MCwMT" => "Adobe Web SDK", 138 "R4eezxWkE" => "Adpepper", 139 "4oh9iKqPJ" => "Adpone", 140 "ULBcFrjZGb4mXW" => "Adrenalead", 141 "r11Ex9EodjZQ" => "AdRoll", 142 "S1Kvg9ViOoZm" => "adrule", 143 "B1n6AkRJ3KFheP" => "Ads Defender", 144 "-AdDAiqxj" => "Adscale", 145 "rkKt9Vo_j-Q" => "adscale.de (ströer)", 146 "SJX4cEjOjZQ" => "AdSense for Search (AFS)", 147 "DRpPVP2uv" => "Adserve.zone", 148 "cBkFKxFip" => "Adservice Media", 149 "Bk3ZqNsujWQ" => "AdSpirit", 150 "SJU-x9Vj_jZQ" => "adsquare", 151 "HHnOG47_6" => "adsrvr", 152 "HJ1wx9Ns_ob7" => "Adssets", 153 "514xGqzuB" => "AdsWizz", 154 "BJCc9EouiZm" => "AdTech", 155 "t91zsmgUO" => "Adtelligence Platform", 156 "qj9AM4gO5" => "Adtelligent", 157 "9YZOzHmmo" => "AdTheorent", 158 "S1qdgcVoOjZ7" => "AdTheorent,", 159 "e-L9j7jq" => "AdTiger", 160 "UFByDVoY5" => "AdTiming", 161 "S1MpgcNjOo-X" => "AdTiming Technology Company", 162 "-z6aobHdz" => "AdTonos", 163 "4ca59IYt1" => "Adtraction", 164 "FVFF_XFS" => "Adtriba", 165 "FNM5zS5SO" => "adtrue", 166 "_LPDpmRU" => "AdUp Technology", 167 "BynslcEoOjbm" => "ADUX", 168 "B1-UecVodj-7" => "advanced store", 169 "r1v094j_o-m" => "AdVentori", 170 "B1_-l9Ns_ob7" => "Adverline", 171 "rkCnmccCX" => "Advertising.com", 172 "C4osiHMfJJalmp" => "AdvertServe", 173 "eNkSkb6JBaOC-P" => "Adverty", 174 "B1OHg9VousbX" => "AdWords Remarketing", 175 "fQdyrzSvN" => "Adxperience", 176 "5EZTiCeMV" => "Adyen", 177 "H1Y9e94j_i-m" => "ADYOULIKE", 178 "D4y1cqu5W" => "Adzymic", 179 "ryATgqEs_s-Q" => "Aerserv", 180 "peSGp09sS" => "Affectv", 181 "whFtCSxUiX3epV" => "AffilBox", 182 "lBgLIDi9e" => "Affiliate Window", 183 "SyTbcViOsWX" => "affilinet (Webmasterplan)", 184 "tAvOzCRGW" => "Affiliprint", 185 "LZjko4J2aIxtT3" => "Affirm", 186 "ecyNbRiQcMwO2n" => "Afterpay", 187 "YsjGpUh22" => "agof services", 188 "Exmh2-AJb" => "Ahrefs", 189 "9Ac-SGp9hgKMdE" => "AidaForm", 190 "_B-oCEzqILvvng" => "Airbnb Reviews by MarketPushApps", 191 "1k_ljMZc28DDOc" => "Airbridge", 192 "hFLVABpNP" => "Airship", 7 193 "IdaQw5cVN" => "Airtable", 194 "ARbqBwC5J" => "Ajax Search Pro", 195 "uQiyefbRi" => "Akamai", 196 "nQ90ZSbOB" => "Akamai Bot Manager", 197 "H1L1cloh4" => "Akanoo", 198 "SyWN9Esdjb7" => "Akismet", 199 "By49NjusWQ" => "Akismet (WordPress Plugin)", 200 "hMXFZSbaI" => "Aklamio", 201 "e2c47r_bZ25pQC" => "Alangu Gebärdensprache Avatar", 202 "YWbHHDowH" => "Albacross", 203 "Wom6s1CtF" => "Alchemer", 204 "jeiaELau" => "Alexa", 205 "tnfBi7gwe" => "Algolia", 206 "EJxYBUV-f" => "Algonomy", 207 "K-qn-Ibapdt9QB" => "AlgoriX", 208 "JNqGjolMX03W_P" => "Alibaba Cloud CDN", 209 "zBE_rJMqbU5Zib" => "Alipay", 210 "AZ0oBKUpsf7deu" => "All-In-One Security", 211 "72E977tUP" => "ALL-INKL", 212 "5A5djPisF" => "Allgemeine Website-Tag", 213 "Drt3RRE-u" => "Alliance Gravity Data Media", 214 "HkwrqEi_sZ7" => "allincl", 215 "VnQLQ7uoL" => "AllMediaDesk", 216 "4wiORY5pVpGffd" => "Alphalyr Digital Studio", 217 "fUfvROWdtFsw1K" => "AltBeacon", 218 "_2g2r-p1n" => "Altruja", 219 "2qBrzO0223X1Zt" => "Amadeus Hospitality/TravelClick", 220 "gvWsZJmVT" => "Amazon Adsystems", 8 221 "N2spyFPL" => "Amazon advertising", 222 "NELEFokrd" => "Amazon Associates", 223 "t1QnIrTMGuERFa" => "Amazon AWS Amplify", 224 "S1sdpVyEX" => "Amazon Cloudfront", 225 "1dArEN3cO" => "Amazon Mobile Ads", 226 "BkBN6xyV7" => "Amazon Partners", 227 "rJ6D5Eous-Q" => "Amazon Pay", 228 "24I-tjBlAIR5TS" => "Amazon Pinpoint", 229 "IUyljv4X5" => "Amazon Publisher Service", 230 "Bkdj2xyEX" => "Amazon S3", 231 "J39GyuWQq" => "Amazon Web Services", 232 "mF6syhpYV" => "Amnet", 233 "JchR4jxjXCqTiu" => "AmoAd", 234 "HJRgx54jusbm" => "Amobee", 235 "Sk9kb5VoOi-7" => "Amplitude", 236 "R6qwZ11iZ" => "ampproject.org", 9 237 "6znewg1hW" => "anchor.fm", 10 "aXnTc_Y3n" => "ArcGIS Map", 11 "fiQX6mqi" => "AT Internet", 238 "HJRUlvEVQ" => "Ankit 24-07", 239 "_VWVLDbYO" => "annalect", 240 "xRy2gd--" => "AnswerDash", 241 "rymwxcNsOsb7" => "AntVoice", 242 "FSbhnJKw5" => "Anwaltauskunft.de", 243 "ebhLyMWCg" => "Anwaltverein.de", 244 "vUHdGBoDHNu6_2" => "Anythingabout", 245 "KWDizwCvI" => "Anzu", 246 "3sJWccp-h" => "AOL", 247 "ApbuXSl8r" => "AOL Cloud", 248 "B1AUNmyEm" => "Apester", 249 "H1n6lcVj_s-7" => "Apester", 250 "yYVZ3FfUoXT_tj" => "Appcast", 251 "oPWBSL3AJ" => "Appcues", 252 "-ijhTWLQV" => "AppDynamics", 253 "UkROORpAd" => "AppDynamics", 254 "_lk1S0d9OF47je" => "Appfigures", 255 "jzH7HjBXb" => "Appier", 256 "P1h384FMQ" => "Apple Pay", 257 "r9Vq_aY3t7tJWJ" => "Apple Podcasts", 258 "weoN4Lb_MjWLuu" => "Apple Search Ads", 259 "cBl03wBXG" => "Apple Sign-in", 260 "H1dpBjeMV" => "Applied Technologies Internet SAS", 261 "7CJ_BpQ_C" => "AppLift", 262 "fHczTMzX8" => "AppLovin", 263 "v324c3_9o" => "AppLovin Max SDK", 264 "7p47Xsg-i" => "AppMetrica", 265 "Syg-54jdiZX" => "AppNexus (adnxs.com)", 266 "XFAdcSj-7Jc-JJ" => "Appodeal", 267 "_RMuMZnYU" => "Approov", 268 "WWe3pIgdt0UDOJ" => "AppSamurai", 269 "CRKoGaeDVbo2l1" => "Appsell", 270 "Gx9iMF__f" => "AppsFlyer", 271 "n2slZDmyp" => "AppSignal", 272 "BJZX5EjdibX" => "AppStore Widget", 273 "XI0dAskrcDPVB-" => "Arcade", 274 "aXnTc_Y3n" => "ArcGIS Map Tool", 275 "eoUHS8Nwm" => "Arcspire", 276 "mSKd6UMp_" => "Arkflux", 277 "Byz_xq4s_o-X" => "ARMIS", 278 "codpeWIqV" => "Arrivalist", 279 "Bk9OBXJ4Q" => "Ars Technica", 280 "H1au00yZT9ugFI" => "ART19", 281 "NTb2hlOJdn95k4" => "Artefact", 282 "q6G6H17TR" => "AskMe", 283 "fiQX6mqi" => "AT INTERNET", 284 "lyQYRN-Xmt_BBZ" => "AtData", 285 "yWgiH3xQZ" => "ATG Ad Tech Group GmbH", 286 "rJ6L9VsdjWm" => "Atlas Solutions", 287 "a8XLoeVA0" => "Audience Project", 288 "zBwUvUoJ0" => "Audience Trading Platform", 289 "FOrCeplkQ" => "Audiencecreate", 290 "zRmrOPZzd" => "Audiencerate", 291 "BkXdl9Njujbm" => "Audiens", 292 "SX52NsAPC" => "Audigent", 293 "UVMdI89fm" => "Audio CC", 294 "yt0Ir6e9H" => "audio content & control GmbH", 295 "euL-m8Kv" => "Audio Now", 12 296 "c6lt-aZ0" => "Audioboom", 13 297 "mdM6tHJ4s" => "Audiocon", 298 "RLFJwpZoj" => "AudioMob", 299 "_-eZ2iyMj_0Nip" => "Audiomob in-game", 300 "BV-1qlQ7" => "AudioNow", 301 "QLTBuExAXZP-Ac" => "Audiopixel", 302 "vFJX03YEz" => "Aumago", 303 "7mOrpUraa" => "Auth0", 304 "AshuZ5jzB" => "authorized.by", 305 "WLHxEc2Up" => "Autohauskenner", 306 "8JWoogwUY" => "Automattic", 307 "yqLEQaghO" => "AutoUncle Aps", 308 "57lcUUrlt" => "Avantio VRMS", 309 "8eg0IuPZ8wkcg7" => "Avature", 310 "_Y_UCbcZ0" => "Avazu", 311 "r1YzeqVs_jbQ" => "Avid Media", 312 "zATcqR5A-" => "Avis Vérifiés", 313 "H1vkx9Ni_s-7" => "Avocet Systems", 314 "BJkGAh2mX" => "Awesome", 315 "zI4LKzU_q_rizP" => "Awesome Table", 316 "p6k0WAvkwZ4GDb" => "AwesomeAds", 317 "SyfKc4oOjWQ" => "AWIN", 318 "Bkn55EsOoW7" => "AWS", 319 "NYsmsUE9VcXEGy" => "AWS WAF", 320 "kgyk8fbU" => "AWSELB", 321 "wSJngRiYEJcL8C" => "ayeT Studios", 322 "jHHkTxbZOK9LU0" => "ayeT-Studios", 323 "zGUZoF3Ve" => "Azerion", 324 "MSVdV2h-6nYJ7X" => "Azure Active Directory", 325 "EVhPGKuTEOecfG" => "Azure Active Directory B2C", 326 "GlxT-TcjOgbGhc" => "Azure App Service", 327 "9q69bs1_uqZieZ" => "Azure Application Gateway (Azure WAF)", 328 "UiXdWB_l" => "Azure Application Insights", 329 "oz3w0zM75" => "Azure Maps", 330 "dx07_9ciJ" => "B2B Media", 331 "kxs3IM_Vu" => "B2B Media Group EMEA", 332 "Tw8zmKpSP" => "Bahn", 333 "r144c4odsbm" => "Baidu Ads", 334 "pFPZLFiOD" => "Baidu Advertising", 335 "aZvWLczh" => "Baidu Analytics", 336 "3-tkHSouq" => "Bakehouse", 337 "jkyepXkyR" => "Bambuser", 338 "BJ_d5EsusWm" => "Bandcamp", 339 "447gNkP7E" => "Bandsintown", 340 "rkn_g5No_iZQ" => "Bannerflow", 341 "i8thRAILQ" => "Bannersnack", 342 "uSTP7MDLGFP3kV" => "Barilliance", 343 "RXEft47eH" => "Barzahlen", 344 "EWWivI-np" => "Basis Technologies", 345 "OD38XMAFy" => "Batch", 346 "XbzVLbj6w" => "BazaarVoice", 347 "fXMTXQOLX" => "bd4travel", 348 "WDR3LyVpo" => "Beachfront Media", 349 "LCM5ZqgPa" => "Beamer", 350 "NPwHeL-JC" => "Beampulse", 351 "rkEXx9Vo_obX" => "Beemray", 352 "B1NA5VjdjbX" => "Beeswax", 353 "o2q55Aa0Q" => "Behamics", 354 "DxVnzwLiH" => "Beintoo", 355 "BJRdcNsuibm" => "Belboon", 356 "tRDGo5MH8tSYso" => "bento Forward GmbH & Co KG", 357 "01z9S71rU4Hn-D" => "Beslist.nl Tracking", 358 "MNJpzh2av" => "Betgenius", 359 "9EH_yrRpk" => "Better Banners", 360 "NlKtp6bJulcVps" => "Bettermode", 361 "a384FoyLB" => "Betterplace.org", 362 "LYIjPmlzB7ta5I" => "BeyondWords", 363 "a_N5P8uw" => "BIC media", 364 "t4800ChaZVtBVR" => "BidMachine", 365 "lAqkVMAk7" => "Bidmanagement", 366 "PGVmlH7ex" => "Bidstack", 367 "BJb4e5NjOjb7" => "BIDSWITCH", 368 "HyU_xc4oOoZQ" => "Bidtellect", 369 "rkj0qEsusWm" => "BidTheatre", 370 "zDG4jNnkx" => "BidTheatre", 371 "Y3BUl6Fb5" => "BigaBid", 372 "-QcL-vWtUwTmEw" => "BigCommerce CDN", 373 "naN37N2CRJvG2W" => "BigCommerce Checkout", 374 "p34bURcC2mKqdZ" => "Billie", 375 "ryiH3439N" => "Billiger.de", 376 "HJ0w9Vs_jWm" => "Billpay", 377 "Hysgc4odiZ7" => "Bing Ads", 378 "SJwfMvizE" => "Bing Ads Retargeting", 379 "rJhhqVs_ob7" => "Bing Conversion", 380 "7n82fbu3X" => "Bing Maps", 14 381 "abGHajF1" => "Bing Maps", 15 "SkdccNsdj-X" => "Bitmovin", 16 "Ewb9uz1Rp" => "Bookingkit", 17 "A91MHlBY6" => "Bryter", 382 "S14J-qNjujZX" => "Bing Remarketing", 383 "rJBkZ94sdjWm" => "Bing Remarketing Conversion", 384 "S3LWGzBCG" => "Bit Q Holdings", 385 "z03bVFpFh" => "BITE", 386 "SkdccNsdj-X" => "bitmovin", 387 "H-5ybEnazK_Nr_" => "Blackfire.io", 388 "9GgCbkF1X" => "Blau", 389 "LT7cTFaUy" => "blingby", 390 "HkgxeqNiusW7" => "Blis Media", 391 "u1M5M8ss4" => "BloomReach", 392 "adry5guRKaqWsa" => "Bluecore", 393 "H1cuc4jds-m" => "BlueKai", 394 "FSn8bGxEM7pDWf" => "Bluesky Social", 395 "w_VI5g0m9" => "Bmind a Sales Maker Company", 396 "rJVVe94jusZ7" => "Bombora", 397 "fGsLLp5V" => "Bonial connect", 398 "r_7IfSwj" => "book2look", 399 "g-lEHEZi" => "Bookatable", 400 "tGMdaeC7cSYLyO" => "Bookeo Widget", 401 "4Ce4r1C3b" => "Booking Südtirol", 402 "cSRMLG-9J" => "Booking.com", 403 "padqNOq8_pNHbF" => "Booking.com Reviews by MarketPushApps", 404 "Ewb9uz1Rp" => "bookingkit", 405 "97rh3ePvleSqGz" => "Boom Form", 406 "3L4qRZSFNbX1A-" => "Boost", 407 "8eIqa_sKr" => "BootstrapCDN", 408 "wdjNExCpwgd0mA" => "botBrains", 409 "2s7OLtD31lVpPp" => "BotDetect Captcha", 410 "6_AaKITrsMijT_" => "BOTfriends", 411 "cu-I7EeYRGHBYH" => "Bounce Commerce", 412 "B1aDxq4iuj-Q" => "Bounce Exchange", 413 "H11_qNsujb7" => "Braintree", 414 "Me_LwKiEK" => "Branch SDK", 415 "Oadn03JMr" => "Brand Advance", 416 "_XeDI-poS" => "Brand Metrics Sweden", 417 "MMgpupdb_" => "Braze", 418 "dQwK0_tGzCTAY1" => "Brevo", 419 "7m8ANzilagj--S" => "Bright SDK", 420 "_P8Dj4_id" => "Brightcove", 421 "dzqlMOvA3" => "Browser-Update", 422 "zwX6TKIqe" => "Browsi Mobile", 423 "A91MHlBY6" => "BRYTER", 424 "SkBdl94j_o-7" => "Bucksense", 425 "OIryTCdy" => "Bugherd", 426 "HJMSxqVj_ibm" => "Bugsnag", 427 "m3HPkp-03" => "Burt", 428 "bj4SQZiaZKJ0Sl" => "BusinessBike", 429 "3uVXyQAEl" => "Buzzsprout", 430 "rJeSRIt3E" => "bwin", 431 "qm6aGgqn1" => "Byggfakta Analytics Pro", 432 "M7hs1204w" => "Bynder", 433 "lAVu7za7YOX6Wz" => "ByteBrew", 434 "pJpZXVNi3" => "Cablato", 435 "KISulZHIbBr3mT" => "Calconic", 18 436 "vdUe2GDtm" => "Calendly", 437 "nWwIqfnhR" => "Calenso", 438 "mKiYp1G2D" => "Callbell", 439 "M2HlfHoRv" => "CallTrackingMetrics", 440 "eL9NgeAYVMVnLF" => "CamBuildr Plugin", 441 "k-PZrnDTu" => "Candidate Application Form", 442 "t9P753bof" => "Canva", 443 "2-m-3sqMKQdc-e" => "Captcha", 444 "gf1221hzK" => "Capterra", 445 "SyMke9NsdsW7" => "Captify Technologies", 446 "jTmrAXElBrQnYW" => "Captivate", 447 "uOYlP6SYB" => "CARAT", 448 "ptLtnnoWD" => "CarbonCare", 449 "CxlGIPVZZQoZEy" => "Cardinal Mobile", 450 "a7PrUQ-6P" => "Caro", 451 "iiCbzWw6F" => "CarObserver", 452 "s1uhnr4d" => "CAS", 453 "4R_3s-N0l" => "Cavai", 454 "aMS3tHs64OnpBp" => "CBOT", 455 "8QW9ZIyK" => "Celebros", 456 "5AGhJ-ZyCplhCq" => "Cell Rebel", 457 "HkBsx54iOj-X" => "Celtra", 458 "Hk9Lx5VoOoWQ" => "Centro", 459 "gIB2IbDlp" => "CerebroAd", 460 "OquVCK6VO" => "Chameleon Lead Generation", 461 "S1m2cVsOobm" => "ChannelPilot", 462 "t_QU7p3R5" => "ChannelSight", 463 "vTg02iIVV" => "Chargeads", 464 "wPKv-wn7Q" => "Chargebee", 465 "HJbZqVodjZX" => "Chartbeat", 466 "IEbRp3saT" => "Chartboost", 467 "A5oCgmHFtQgIg4" => "Chat Essential", 468 "BO3dx6Mra1k9GA" => "Chat Metrics", 469 "C66l3JRfAxdGQA" => "Chatbase", 470 "6HgPXo1si" => "ChatBot4You", 471 "fNX9aue_W" => "Chatchamp", 472 "5uf4Ob3t1XN-Cj" => "ChatLab", 473 "T8aQwGQAa" => "ChatLingual", 474 "K7k356nB" => "Chatra", 475 "fnSyKoUyR" => "ChatShipper", 476 "b2HHpjQUE" => "Chatshipper| AE", 477 "--MzGIqMG" => "Chatshipper| AR", 478 "NoqlDY0oz" => "Chatshipper| AU", 479 "84dzCu7Kj" => "Chatshipper| BR", 480 "IbXoCTUii" => "Chatshipper| CO", 481 "9LJEo_2rb" => "Chatshipper| NZ", 482 "CwCThuokI" => "Chatshipper| RU", 483 "ux0Lcy9ys" => "Chatshipper| RU", 484 "4_nMRPZtr" => "Chatshipper| TR", 485 "RLsuv0ttX" => "Chatshipper| ZY", 486 "-sibI7br0O_Dcz" => "Checkfront", 487 "un6JwcgQG5VcK1" => "Checkout.com", 488 "q4KssvUm-" => "Cheq", 489 "9dvY4sSZi" => "Cheq AI Technologies Ltd.", 490 "QcjN2V8k_TV76l" => "Chili Piper", 491 "Bk9xx5VsdoWm" => "Chocolate Platform", 492 "gdvSff1hg" => "Cint Network", 493 "acSvos0XNztx4Y" => "CitrusAd", 494 "6smMKIWrt" => "Cituro", 495 "F3bB6q6wfNgmQ6" => "CityPilot App", 19 496 "xI9qM4Yhk" => "Civey", 497 "iONrYLmnn" => "CJ affiliate", 498 "SyCE0KqAQ" => "Clarium", 499 "tC9q5J7xA" => "CleanTalk", 500 "F6YatvySOXyKxg" => "Clearbit", 501 "ZmHxg0LX2cTSly" => "Clerk.io", 502 "P4_bu9j4" => "Clever Elements", 503 "Hkq1Xar5V" => "CleverPush", 504 "o5fE3ybZ" => "CleverReach", 505 "qQhJaxvd34pUx8" => "CleverTap", 506 "TOyxVvzIw" => "Click Dimensions", 507 "BP1atj7Yr" => "Click Guardian", 508 "sGB-VG0Cw" => "Click2buy", 509 "jgGgfqxe0" => "Clickcease", 510 "HT8vkhwg2" => "Clicksco Digital", 511 "rJW2xqEsuibX" => "Clipcentric", 512 "_9GUFiQ9W" => "Cloud Functions for Firebase", 513 "FzVAet4ub" => "Cloud Storage for Firebase", 514 "7R7chEXGs" => "Cloud Technologies", 515 "DNxukinmg" => "Cloud.IQ", 516 "HkIVcNiuoZX" => "Cloudflare", 517 "xQ7R_MtouldLmR" => "Cloudflare Turnstile", 518 "xFh43inVo" => "Cloudflare, Inc.", 519 "BJ_ocNjds-X" => "cloudfront.net", 520 "B1CDTgJEX" => "CloudImage", 521 "XpPsZvVN6" => "Cloudimage", 522 "r1HocEjOiWm" => "Cloudinary", 523 "SO2GHGVL9" => "co2online", 524 "1kuoX1MnGbbZld" => "CoChat", 525 "lSDamg0Dz" => "CodePen", 526 "uGBKGpLwqq1CQb" => "CodePush", 527 "S1d9eqVodsWQ" => "Codewise", 528 "n8sUMtfze" => "Codigo", 529 "4HJCCD0uI" => "COFORM", 530 "EiStTLS8P" => "Cognigy", 531 "rJFFlc4j_sZ7" => "Collective", 532 "rJlwgqEsujbQ" => "Collective Europe", 533 "Sk85e94s_ibQ" => "Comcast International France", 534 "qKULVqrY_" => "Commanders Act", 535 "Wx3IbW48OzUDEp" => "Comments", 536 "WF-8JwSlq" => "commerce connector", 537 "nK-Uqoy-f" => "commercetools", 538 "6EVVAXCBR5ngVu" => "Common Ninja", 539 "V0HX9cPeQ" => "communication Ads", 540 "1drdvuWXO" => "Computop", 541 "B1WMgcNodi-7" => "comScore", 542 "859gL6rBS" => "Concludis", 543 "SkzQlc4oOj-Q" => "Confiant", 544 "BJknx9Nius-Q" => "Connatix Native Exchange", 545 "SynGg5VsOiWQ" => "ConnectAd Realtime", 546 "HNEN0Bg_y" => "Connects", 547 "66kNuj2_n" => "Connexity", 548 "GaSh0RTk2" => "Consentric", 549 "8ctYI_8U3" => "Consors Finanz", 550 "_GgHCK3ZEpGAao" => "Constant Contact", 551 "cphN9wqOfmJOnf" => "Constructor", 552 "z4cR3afxG" => "Consumable", 553 "yRjH5CoGrlqnkc" => "Contact Collection", 554 "4OUatCDhD" => "Contact Form 7", 555 "YFigsoh4HN9sWt" => "Contact Form by Powr", 556 "SJoW5NiOiZX" => "Contact Impact", 557 "q19Crnv3" => "Contao", 558 "S1MTc4o_oWX" => "Content Garden", 559 "vs7lkZ5Rt41qri" => "Contentfry", 560 "PYggIh6xB" => "Contentful", 561 "Ki2RMQPHf" => "contentignite", 562 "w8rDkjxj" => "ContentSquare", 563 "ie5SAaPq_" => "Continually", 564 "SJ45xcEj_sZQ" => "Converge-Digital", 565 "Jj-cSioru" => "Converify", 566 "Bk3A9VoOsZQ" => "Conversant Europe", 567 "LykAT-gy" => "Conversion Linker", 568 "drDqUw9P" => "Conversional", 569 "hMRPcifE3" => "Conversions API", 570 "NEwiuQ7p9" => "Convert", 571 "gK4ciedfd" => "Convert Plus", 572 "gWaBe7seEZL3PC" => "ConvertKit", 573 "T5DNZUae" => "Converto", 574 "w3F-dGB9Rc5tGI" => "Conword", 575 "rJpK9VjusWX" => "Cookie Consent", 576 "8TziAnlg5SJF0U" => "Cookiebot", 577 "u4pd6DxYHG7QGL" => "Cookiebot for Wix", 578 "0tftWyie-nlUI6" => "Copper Banking", 579 "4QcJIWh7" => "Corazon", 580 "JZb-2_sb0qbBPt" => "Coveo", 581 "8K4QDDTlf" => "Crashlytics", 582 "H1RKcVjuo-X" => "Crazy Egg", 583 "ryntqNi_oZm" => "createjs", 584 "eOxs7vkZ5cIbRn" => "Creditreform", 585 "bo1eQYBqE" => "Crefopay", 586 "rkT1x5Eo_ibm" => "Crimtan Holdings", 587 "B1fDhaZcE" => "Crisp Chat", 20 588 "HyeqVsdjWX" => "Criteo", 589 "SystcNs_i-X" => "Criteo OneTag", 590 "ir7QpAGI" => "CrossEngage", 591 "NaBqSG56ozyl3f" => "Crossplan", 592 "xWwGfga9W" => "Cuebiq", 593 "P4TRMHYULjn2JH" => "Cuenect", 594 "lkM9hmqWWT3Lzk" => "Curalate", 595 "ZHU4a5mZPVMuoP" => "Currency Converter", 596 "M8wT_v7Yf" => "Custobar", 597 "vDIn19n9F" => "Customer Alliance", 598 "ki0bzRVWKZovIj" => "Customer Reviews by WACR", 599 "mC-lKBOTZ" => "Customer.io", 600 "_MbxwST_7Mu62J" => "Customerly", 601 "I99Vzl6mZ" => "Cxense", 602 "06NhSHkb5" => "Cybba", 603 "Divc-nzbk" => "Cydersoft", 604 "Ek_i8cfWU" => "Czech Publisher Exchange", 605 "20R0KrKk8" => "d.vinci", 606 "Vd4jf_bW9" => "DailyGo", 21 607 "VJNO26pZe" => "Dailymotion", 608 "H9bIKf_i" => "dailypoint", 609 "_OIm7GxyZ" => "Daisycon", 610 "nLWGjXeAyJHTJu" => "Daktela Webchats", 611 "SyxfH7JN7" => "Danubius", 612 "IoSfrTR1p5Sxpo" => "Daon", 613 "r1G0NXJEX" => "DAT Group", 614 "Flf8kP0XXc_ubD" => "Data Circle", 615 "BJL48D74Q" => "data22", 616 "P7XVa18qr" => "Datadog", 617 "Xl0HIOViY" => "Datadog Real User Monitoring", 618 "NeWsJito4aPrFK" => "DataDome", 619 "edd8bsMOg" => "Dataseat", 620 "78h78kgEz" => "Datatrans", 22 621 "8Nxb4ZtSa" => "DataWrapper", 622 "7tNwk5fZ9" => "dataXtrade", 623 "H10nc4s_iWX" => "DataXu", 624 "XnGRMsNDp" => "DatoCMS", 625 "HJIBxqVsOo-Q" => "DCMN", 626 "MQJ6TX04ENV3Du" => "Dealfront", 627 "fGLl3IvZA" => "DeepIntent", 628 "LlTSS4MfNQfOAf" => "DeepL", 629 "xK8kAxsif" => "Define Media", 630 "wZ5JcfjYw" => "Delivery Hero", 631 "HylUe9NsOs-7" => "Delta Projects", 632 "yLsP4len5" => "Demandbase", 633 "JPsksE_6U" => "Demex.net", 634 "2SoPnIWSY" => "Demodesk", 635 "yBRIQt31I" => "DemoUp", 636 "PcyIFVx6_" => "Densou Trading Desk ApS", 637 "KY9kEd5AV" => "Dentsu Aegis Network", 638 "6lTC1aNep" => "Desiretec", 639 "H1MxcVsujbm" => "Deutsche Post", 640 "yRdgviIjf" => "Devatics", 641 "NzIW86WRUkmZJK" => "devtodev", 642 "ry7d5Njui-m" => "DFP Traffective AdServer", 643 "-XvEgJd2S7TpTO" => "Dialogbits", 644 "ISpYFA-TbtD2KZ" => "DialogShift", 645 "QtXuaSW-k" => "didFind", 646 "HyMRe54juibQ" => "Digilant Spain", 647 "DnsfUym0nruTtI" => "DigiMember", 648 "RxO91a70" => "Digistore24", 649 "zmbCFQIKk" => "Digital Control", 650 "_BRxakDwo" => "Digital East", 651 "S1RUqVodiWX" => "Digital Media", 652 "q6FEv3jcYyYunG" => "Digital Turbine Ignite", 653 "rJo4xcEo_s-Q" => "digitalAudience", 654 "S11RqVoOoWQ" => "Digitalberatung", 655 "2riF-7vlWnhFAT" => "Digitale Adventskalender", 656 "XX-JdeS24Gxyiq" => "DigitalTurbine", 657 "B1DCgqEjdiZ7" => "DIGITEKA Technologies", 658 "BJiugcEjOjZm" => "Digitize New Media", 659 "H1oi94o_o-m" => "digitru.st", 660 "Yq0xUHB4NC2SQl" => "DirectTv", 661 "6MZkp0plA" => "Dirs21", 23 662 "hvWNhpF0T" => "Discord", 24 "r1rX94i_iZX" => "Disqus", 663 "UekC8ye4S" => "Display & Video 360", 664 "r1rX94i_iZX" => "disqus", 665 "SJmVgqNjOjbX" => "district m", 666 "XtPJZdv6Y" => "DistroScale", 667 "B4KTdM5zY" => "Ditto", 668 "1vgHQcJdZ" => "DocCheck", 669 "Vp6CXtilHrxUso" => "Doctify Platform", 670 "AlNuXsio8mtmSD" => "Document360", 671 "Cv-mVwOQr" => "DomainFactory", 672 "4DFjRax1u" => "Domodi", 673 "W8RaJ9nUzwh8Qk" => "DonDominio", 674 "yF3NAOIAC" => "Doo", 675 "1Pj8F8p0" => "Doofinder", 676 "pbkhrW6yd" => "dooshop", 677 "htA-a07qq" => "dotdigital", 678 "gMfEyvJhF" => "DotNetNuke", 679 "HJIWBc5RQ" => "Dotomi", 680 "HkMzqiL4X" => "DoubleClick", 681 "9V8bg4D63" => "DoubleClick Ad", 682 "S1ulcVjdiWQ" => "DoubleClick Bid Manager", 683 "ByzZ5EsOsZX" => "DoubleClick Floodlight", 684 "YBSUcZx1z4_B6S" => "DoubleClick Floodlight Enhanced Attribution", 685 "BkjG6N1EQ" => "DoubleClick for Publishers", 686 "rJBPg9Ns_sWQ" => "DoubleVerify", 687 "wCMfrJcWb" => "Download Monitor", 688 "JUf4KxMBj" => "dpa Deutsche Presse-Agentur GmbH", 689 "zXXgkRFuF" => "dpa Infocom", 690 "dHZwdhDYf" => "Dr. Banner", 691 "PJrrqs5FSZYIkc" => "Dr. Free Gift on Cart", 692 "95xVXSDLf" => "Drawbridge", 693 "jE46pSyKb4wx8z" => "Dreamdata", 694 "mv27ouXUn" => "Drees & Sommer", 695 "hQROV2qf7" => "Drift", 696 "P0OtsPiRJ" => "Drift Functional", 697 "rycQc4s_iW7" => "Drip", 698 "BJND31jnE" => "Droid", 699 "vZH7Ountd" => "DTS", 700 "Yh1B51rBx" => "DTS (Filiale de Solocal Group)", 701 "Bkwk09UD6" => "Duda", 702 "jvgVtyDjK" => "Duende Software", 703 "khUD-KNccif_BD" => "dun & bradstreet", 704 "SUNfUpZFc" => "dunnhumby Germany", 705 "aV-3rrwlW" => "dunnhumby Germany", 706 "N78lgT6yb" => "Duplo Media", 707 "qWONIIQl0" => "Duration Media", 708 "SyCj9Es_o-m" => "dwin1.com", 709 "URfCDWgXN" => "DynAdmic", 710 "4ItmQyYeJqhqbk" => "Dynalyst", 711 "1qrLQTCTp" => "Dynamic 1001", 712 "S1krl5Eo_obm" => "Dynamic Yield", 713 "BJbSg94i_o-X" => "Dynamic Yield Analytics", 714 "ZkQjr_Hc_" => "Dynata", 715 "M6Q7giJoz" => "Dynatrace", 716 "eFVSmqvj_" => "E wie einfach", 717 "vu3PSfZe4" => "E WIE EINFACH Freunde werben", 718 "8K-4oFu8y" => "e-bot7", 719 "X9yTQ_PyX" => "e-guma", 720 "M2_r1ASsBScyR0" => "e-vendo Notice", 721 "MiTDMANqJjOBd2" => "e-vendo Recommendation", 722 "bizRMOL9e" => "Easy Channel HGV", 723 "AzN28O17" => "easy.tracking", 724 "EP8lLzINO" => "easybill", 725 "juzOkXqXf" => "EasyCredit (Ratenkauf)", 726 "LMNyVEnn6" => "Easyfeedback", 727 "H1z4gqEidjW7" => "EASYmedia", 728 "lsgoV13iJr6Thb" => "eBay Store by Mindbulbs", 729 "L2vWsDOr4W34eH" => "Ecommerce Store by Powr", 730 "SJXtq4iOoZX" => "Econda", 731 "T9d835M3" => "econda Analytics", 732 "wGNsI0zJ" => "econda Analytics Essential", 733 "20BzO8h3" => "econda ARP", 734 "nWVAamrH" => "econda Cross Sell", 735 "FOFHxPa22" => "Ecwid", 736 "6GmJR3rzo" => "EDA", 737 "K_7pBvUQf" => "Edadata", 738 "9dKk-fQDXRfJCs" => "eDesk", 739 "aNpyKNtfO1853l" => "Editorify - Product Reviews", 740 "S0nozGN1_" => "edoobox", 741 "4qK0LMP3J" => "Effiliation", 742 "Ci1XLVUSI" => "eGain", 743 "TYi_Ik7-x" => "eGovernment Podcast", 744 "WwZYS9xvA" => "EHI-Siegel", 745 "8mYD5MWhP7f_fR" => "Eightfold", 25 746 "MEXztGXoM" => "eKomi", 26 "rkUcEjuoWm" => "Facebook Audience", 747 "6hTRb4RkSrDSHf" => "Elastic App Search", 748 "3CHxj_Uea" => "Elementor", 749 "dCQTj1ryb" => "Elfsight", 750 "zTRmwB89UzXzW3" => "elopage", 751 "ByBFq4idoZQ" => "Eloqua", 752 "Q0sjsdWCVe9THW" => "eMarketeer", 753 "S16u54s_i-Q" => "Emarsys", 754 "XULebj6Iz" => "Embedly", 755 "tLxmZ4lJ0ELfBT" => "EmbedSocial", 756 "5yZ6vvmjj74g5n" => "Embrace", 757 "F2X0mUlze" => "Emerse", 758 "gPX7VyXhz6JZs9" => "Emersya", 759 "BJmZ9Nids-m" => "emetriq", 760 "4ENZ2_2hS" => "Emodo", 761 "ByRVl9ViuoZ7" => "EMX Digital", 762 "lJw-5t0vr8pM99" => "Endereco", 763 "L20cjXk4q" => "energyAds", 764 "WS9UinNyJ" => "EngageYa", 765 "l-0ygHVr" => "Episerver", 766 "Vhp0w3eBr" => "epoq", 767 "0pVo537JLlx-_n" => "EQS IR Cockpit", 768 "qN-ur-FZOgSdK6" => "EQS News", 769 "vK54WQhrgnvTFf" => "EQS Stock", 770 "t3wYmwf7Q" => "eQuota", 771 "H1gr85C7m" => "Erweitertes Tracking", 772 "CAh-PzD4" => "esome", 773 "fy2y1l5NK1ndoP" => "Estheticon", 774 "ByaC5EsdoWX" => "Etarget", 775 "B4MOBvmAw" => "eTermin", 776 "PPkCxv14a" => "etracker", 777 "BIRApgk3o" => "etracker without cookies", 778 "-3xZ3_oSf" => "Eulerian", 779 "jmK4ZP8o" => "Evalanche", 780 "JpZJ7GnSYRXDyx" => "eveeno", 781 "HkVrlqEiuibX" => "Eventbrite", 782 "T2EliczcxLrvtP" => "Events by Wix", 783 "k-PkpuXOBGi7gq" => "Events Calendar", 784 "MF2a0ec4R" => "Eventscase", 785 "BgFFtPqMi" => "Everesttech", 786 "4eHuZ3Liz9rqUH" => "Everflow", 787 "SHVGb93oC" => "Eversttech.net", 788 "r-PDe4a85" => "Evidon", 789 "JtPFO0Vkb" => "Evm3", 790 "Ww1bNfD-i" => "EX.CO", 791 "HJZU9Nj_iZX" => "exactag", 792 "qE3WE4Wam4ORVF" => "Excentos", 793 "WpYODjaRP42z7F" => "experian", 794 "xX46ae_h9" => "Exponea", 795 "rkKC5EsusWQ" => "Exponential Interactive", 796 "FXe3euJljI0uJY" => "Eye-Able® Assist", 797 "n1hCTnCxy" => "Eyeota", 798 "By7zl9NiOoWX" => "Eyeota Ptd", 799 "lmAfJPg6InvRFZ" => "Eyepin", 800 "SkmkZ9Vj_jW7" => "Ezoic", 801 "rmtXcYS_B" => "f5", 802 "DJCKNxpeW" => "f5 Networks", 803 "PNtPBL1Zd" => "Faaren", 804 "jrUnstvLKeFnIS" => "Fabric Answers", 805 "Pqk3AsAS7" => "Facebook", 806 "1XvFW-Y2k" => "Facebook", 807 "Ug1jBcZJq" => "Facebook App Events", 808 "ax0Nljnj2szF_r" => "Facebook Audience Network", 809 "tavJ1OKSj" => "Facebook Audiencenetwork", 810 "SJKM9Ns_ibQ" => "Facebook Connect", 811 "rkUcEjuoWm" => "Facebook Custom Audiences", 812 "SxdpEPwQn" => "Facebook Messenger", 27 813 "ko1w5PpFl" => "Facebook Pixel", 28 "XYQZBUojc" => "Facebook Social Plugin", 814 "ocv9HNX_g" => "Facebook SDK", 815 "XYQZBUojc" => "Facebook Social Plugins", 29 816 "r5-Z_erQ0" => "Facebook Videos", 817 "DkJsSfr-W" => "Facelift", 818 "u0ATqylf" => "FACT Finder", 819 "53QoLB6h1" => "Factfox", 820 "8keiDlAsDeQBrQ" => "Factors.ai", 821 "Sp827hBaKKNmEN" => "Fairing", 822 "TcEBCmnTm" => "Falstaff", 823 "dDq2_ZEKk" => "fast.fonts.net", 824 "LRKhbMoNF" => "Fastly", 825 "SkEscVsusbX" => "FBCDN Facebook", 826 "5x9QA2VHs" => "Feathr", 827 "U_4ErlVw0" => "Feed Dynamix", 828 "ev7yTEG2Z" => "Feed Dynamix", 829 "ipC9qVnU1ddE8_" => "Feedad Outstream Video", 830 "VQOf5Oqz6E9gq0" => "Fera Reviews", 831 "EW5XbVRw3" => "Feratel", 832 "wP9Wrr5vRCEg4J" => "Fibbl", 833 "2gB839qN3" => "Fidzup", 834 "H1Tbl5Nj_iZX" => "Fifty Technology", 835 "WpRTuyrux" => "FiksuDSP", 836 "suqC04krG1L4T9" => "Filial & Händlersuche - StoreLocator", 837 "IEx-Tjzmp2Lq8W" => "Fillout", 838 "W64b12ODh" => "Filmcentralen", 839 "HyiV94juoW7" => "FinanceAds", 840 "Hym5udh9V" => "Findologic", 841 "oGxSC1QCs" => "Findologic", 842 "NqUzbHHebkb71p" => "Fingerprint JS", 843 "IbhfQQbkb" => "Finiative", 844 "42vRvlulK96R-F" => "Firebase", 845 "ytzFgf-eM" => "Firebase A/B Testing", 846 "VX76uyyzy73YYV" => "Firebase App Check", 847 "R7lR9am_W" => "Firebase App Distribution", 848 "smOQ7x8wu" => "Firebase Authentication", 849 "RKCvoZ--rtLVPw" => "Firebase Cloud Functions", 850 "Mp0TG-j8k" => "Firebase Cloud Messaging (FCM)", 851 "GdR8b4tr2aKf3E" => "Firebase Cloud Storage", 852 "cE0B0wy4Z" => "Firebase Crashlytics", 853 "ecngP6eEs" => "Firebase Dynamic Links", 854 "OO202MrWM" => "Firebase Firestore", 855 "uPYPx7TC_" => "Firebase Hosting", 856 "Qsn-_VTnI" => "Firebase In-App Messaging", 857 "HY2wFEsVsGfqBR" => "Firebase Installations", 858 "w7hiUTrsU" => "Firebase Machine Learning", 859 "2rhWushaj" => "Firebase Performance Monitoring", 860 "E6zvFdb6n" => "Firebase Predictions", 861 "iRXREsVii" => "Firebase Predictions", 862 "eM-uPjak6" => "Firebase Realtime Database", 863 "2nEos-2ls" => "Firebase Remote Config", 864 "FBW01l7Nh" => "FirebaseInstallations", 865 "_Ncf9yLnC" => "Firebot", 866 "S6nAK-l_I" => "FirstSpirit ICE", 867 "dJuNHeMq3" => "Fitanalytics", 868 "AtX7Q3-g9" => "Fittingbox", 869 "W0C1VS2NZJn2XC" => "FiveAd", 870 "cSprKh7fQ" => "Flamingo", 871 "3ksSixTl" => "Flash Player", 872 "ByP4x94sdsW7" => "Flashtalking", 873 "-03ZuckNu" => "FlexOffers", 30 874 "X0wJtpzqX" => "Flickr", 875 "_hpE1bAQKrT7hL" => "Flipbook by Simplebooklet", 876 "5C8JIjq1K" => "Flipsnack", 877 "Vy26WddoN" => "Flixmedia", 31 878 "uJyv6-Nm" => "Flockler", 32 879 "kbmJpLAUf" => "Flourish", 33 "RuWQqICz" => "Giphy", 880 "S1vXDBFnE" => "Flowbox", 881 "FlrO-MzKx" => "Flowplayer", 882 "WZDb3Q2TF" => "Fluid Ads", 883 "X5abD8nSKYLKSi" => "Flurry Analytics", 884 "kGLSrGE2j" => "Flurry SDK", 885 "B1A-5Eiuj-m" => "FLXONE", 886 "qVPcPO8cJ" => "FM Labs", 887 "3U8XzcZ2T" => "FOMO", 888 "SdIj7BUI5" => "Font Squirrel", 889 "H1GSqEodjZX" => "Fontawesome", 890 "jhZPu5Km" => "fonts.com", 891 "H1vi54o_obQ" => "fonts.net", 892 "LYBjinTii" => "Fontshop", 893 "BBcvE5Eg0" => "Fontspring", 894 "8G7U3J2Xc" => "Forensic", 895 "SzrLr6NAN" => "Forio", 896 "ljEMGR6jJ" => "Formsite", 897 "4mEDHCPTjXMa4C" => "Formulayt", 898 "BDfdw1ennsN5y3" => "Forter", 899 "r15El9VjusZ7" => "FORTVISION", 900 "_VBgTrSfZ" => "FouAnalytics", 901 "yQYmNEilvDTNX0" => "Fourthline", 902 "gLB9P_wjr" => "Foxydesk", 903 "q-_eu2X2d" => "Fraud0", 904 "SJIIt5hl1" => "fraud0", 905 "CVliYs1Zn" => "Freewheel", 906 "acYUto9R" => "Freshchat", 907 "qMGENEB_g" => "Freshdesk", 908 "bUYUwB3z" => "Freshsales", 909 "WXuCIEBGA" => "Friendly Captcha", 910 "Dhu44_2kxD4V0Y" => "Frontnow Advisor", 911 "BkZ_qViOj-7" => "Fullstory", 912 "0fl-lzlGczJYge" => "Fundraise Up", 913 "OQ_YoPScl" => "Fundraisingbox", 914 "7gS0Vjsc" => "Funnelcockpit", 915 "fWasnrcz" => "Funnelytics", 916 "Hk5MAfAmQ" => "Für das Funktionieren der Website wesentliche Funktionen", 917 "S1GOL9RQm" => "Für das Funktionieren der Website wesentliche Funktionen", 918 "z1lodDq19s5dV8" => "Fusedeck", 919 "VpcE6ZZO4mRgTu" => "FuxCDN", 920 "H17alcVo_iZ7" => "Fyber", 921 "SSTYcu33F" => "G+J Electronic Media Sales", 922 "3AwSqkFPz_OCMx" => "G2 - Track Your Prospects", 923 "QU1vpIg7p" => "G2.com", 924 "Ju0u0ZSRbkYa3-" => "GA 18: Age Verification 18+", 925 "b5UwVqnTvXtU4Q" => "Gadsme", 926 "bQTbuxnTb" => "GameAnalytics SDK", 927 "By5ogq4oOsZm" => "Gamned", 928 "fsfWgMGrz" => "Gastronovi Speisekarte", 929 "dnpN08x5B" => "Gastronovi Tischreservierung", 930 "Rypthk1_I" => "GeistM", 931 "hcX1QxmPB" => "Geizhals", 932 "-Fx1BJClc" => "Geizhals", 933 "rycTeqVoOiZm" => "Gemius", 934 "65JrtAVaP" => "Genesys Cloud", 935 "sfYIpjlx9" => "Genesys Cloud Services B.V", 936 "S1dFecNjOjW7" => "Genius Sports Media", 937 "HyTFy29M" => "Gepruefter-webshop.de", 938 "GH5Ng8oGl0gkAB" => "Getback", 939 "TvEA5AW-k" => "GetIntent", 940 "iHduqoTR" => "GetResponse", 941 "pOEDWfrf0" => "getsitecontrol", 942 "utDoyjic3psr82" => "GetSocial", 943 "JgTrA1wBt" => "GetYourGuide", 944 "i7OSekjkM" => "GetYourGuide Deutschland GmbH", 945 "PTbb7kx6I" => "GfK", 946 "vFb6fBLXT-yqQA" => "Gifted", 947 "oaos1k2AC" => "Giggle Tips", 948 "RuWQqICz" => "GIPHY", 949 "42AYnGBRj" => "Giropay", 950 "Ofh7aUnv" => "GiroSolution", 951 "ess_H8_2okW3hZ" => "GK AIR", 952 "Om08aijRzk_SiQ" => "Gleap", 953 "B1N594jOiZQ" => "Glimr", 954 "3aIaQuY5b" => "GlobalWebIndex", 34 955 "BySu54sOjZQ" => "Glomex", 35 "S1_9Vsuj-Q" => "Google Ads/Google AdWords Remarketing", 956 "HoT8o7YlzZmZ27" => "Goaffpro", 957 "BJ8rq4jdjWm" => "GoDaddy", 958 "6AdzXjKpi" => "Goldbach Group", 959 "rkRFl94j_i-m" => "Golden Bees", 960 "r1ztecNjdjZm" => "Goodway Group", 961 "n9pGpcK5L" => "Google Ad Exchange", 962 "7M0cXS2pQ" => "Google Ad Manager", 963 "hK_vxTwL-" => "Google Ads", 964 "S1_9Vsuj-Q" => "Google Ads", 965 "8ScDZDmU" => "Google Ads Conversion", 966 "twMyStLkn" => "Google Ads Conversion Tracking", 967 "dqFgQeZH" => "Google Ads Dynamic Remarketing", 968 "9rIQbZIzb" => "Google Ads Measurement", 969 "B1Hk_zoTX" => "Google Ads Remarketing", 970 "yjqNcpbNY" => "Google Adsense", 971 "rJ99c4oOo-X" => "Google AdServices", 972 "rySiXprN7" => "Google AdWords", 973 "r19MqVjdoW7" => "Google AdWords Conversion", 974 "SylacVousbm" => "Google AdWords Remarketing", 975 "H1PKqNodoWQ" => "Google AJAX", 976 "r1wSlcEjOsbm" => "Google AMP", 977 "pnDuLUTpa" => "Google Analytics", 36 978 "HkocEodjb7" => "Google Analytics", 37 979 "87JYasXPF" => "Google Analytics 4", 980 "ABsocZLBQ" => "Google Analytics Advertising", 981 "GqhZxB-iiydzEk" => "Google Analytics Advertising for Firebase", 982 "Skr99EiujbX" => "Google Analytics Audiences", 983 "ge3hQ3zM" => "Google Analytics Event Tracking", 984 "diWdt4yLB" => "Google Analytics for Firebase", 985 "b8FM5DHv-" => "Google Analytics Statistics", 986 "QPYQDujT" => "Google Analytics Youtube Event Tracking", 38 987 "n1jiXg1v" => "Google Calendar", 988 "pxiRY9112" => "Google Campaign Manager", 989 "dyHOCwp5Y" => "Google Campaign Manager 360", 990 "f4iZ3mAm5" => "Google Captcha", 991 "isJO61p0b" => "Google Charts", 992 "xr0lbwprU4Tf-L" => "Google Chatbot", 993 "bms_SDJMG" => "Google Cloud", 994 "VOjHS1w7aCn0rN" => "Google Cloud Retail API", 995 "qo3iMe_aP" => "Google Cloud Search", 996 "Sq_WmUhZ8_bD21" => "Google Consent Mode", 997 "0-UDzyKi" => "Google CSS", 998 "S1GV5Ei_oW7" => "Google Custom Search Engine", 999 "IactbkdI7A1cZU" => "Google Customer Match", 1000 "CRfCqvYA" => "Google Customer Reviews", 1001 "rqJvtDVvp" => "Google Display & Video 360", 1002 "1DhORJFj9" => "Google Docs", 1003 "HkF9Eo_jbX" => "Google Dynamic Remarketing", 1004 "vPKlLp_Oh" => "Google Enhanced Conversions", 1005 "uNl9XGnZC" => "Google Firebase", 1006 "kjk3gPD2cxt_Ea" => "Google Firebase Analytics", 1007 "HkPBYFofN" => "Google Fonts", 39 1008 "wgTnPe7i1" => "Google Forms", 1009 "BJMh5NodoZQ" => "Google Global Site Tag", 1010 "R2gyvn3ugawW0t" => "Google Hosted Libraries", 1011 "S1Lgx59AX" => "Google IMA", 1012 "kW5VliBMC5SXQi" => "Google Interactive Media Ads", 1013 "2Xx3hZ77" => "Google Knowledge Panel", 40 1014 "S1pcEj_jZX" => "Google Maps", 1015 "JyhVKNPZN" => "Google Maps Geocoding", 1016 "IH_MYjRFv" => "Google Maps Geometry", 1017 "EkWrVcjOS" => "Google Maps Places", 1018 "IVQgOy4oSKdrn1" => "Google Maps SDK", 1019 "t-TPeXsRi" => "Google Marketing Platform", 1020 "uPcXW8VQTm0CS_" => "Google Merchant Center", 1021 "B1hcEjdoZ7" => "Google OAuth", 1022 "gkEBFID-V" => "Google Optimize", 1023 "iaSHYiqA2" => "Google Partner Badge", 1024 "HgIfWleMF1Pl7a" => "Google Pay", 1025 "8ibG8wB1t" => "Google Photo", 1026 "rw4DyFQcg6s3-W" => "Google Play", 1027 "A2k5o3ZTtrHZ5w" => "Google Play Services", 1028 "r1WocNous-X" => "Google Publisher Tags", 1029 "u3ZX02zVXhJwUG" => "Google Retail Search", 1030 "C7Yai5mE" => "Google Safeframe", 1031 "XJGT8f-58" => "Google Sign-In", 1032 "4Ab1BgiB7" => "Google Signals", 41 1033 "SkPc5EjOsWm" => "Google Syndication", 42 1034 "BJ59EidsWQ" => "Google Tag Manager", 43 "HkPBYFofN" => "Google Fonts", 1035 "pMqnvms3Z" => "Google Tag Services", 1036 "qvkzz7qPe" => "Google Translate", 1037 "HkYNq4sdjbm" => "Google Webfonts", 1038 "fFQ_WmYdQ" => "Google Website Call Conversion", 1039 "rJAM9EodoWX" => "Google+ Plugin", 1040 "QNFauzL0-3RUH8" => "Gorgias", 1041 "rJsTfqq0X" => "GoSquared", 1042 "O5FoJTAdc" => "GoToWebinar", 1043 "BkWrc4j_s-Q" => "Gravatar", 1044 "Bklbg5NodobQ" => "Greenhouse Group", 1045 "Do1uNYTJTCmuTa" => "GreenSock GSAP", 1046 "O5oJehm0M-egZz" => "Grin Technologies Inc.", 1047 "iMp2AEZw8" => "Groove", 1048 "HJOygqNo_sZX" => "GroundTruth", 1049 "XHX7M-Bh_" => "GroupM Server", 1050 "A68gX6mE" => "GroupM Server", 1051 "wcqBhh7Sy4VYE9" => "Groupride", 1052 "oSn0j1WChZGGov" => "Grouprides", 1053 "4NIAkZsNE" => "GSI", 1054 "EQvwGtc_N" => "gskinner", 1055 "rJJjcVouoZ7" => "gstatic.com", 1056 "5e4bAIMiRztWL_" => "Guardsquare DexGuard", 1057 "e7v_XPJ4OUMY0g" => "Guenstiger.de Sales Radar", 1058 "HJswr_n5V" => "GuJ_microConversion", 1059 "rybbeq4sOjWm" => "GumGum", 1060 "DJHxyS7qFRbRGy" => "Gunosy", 1061 "nlI_IPK8j" => "Guuru", 1062 "Z1kX6W6_O" => "Haensel AMS", 1063 "spx5TfAGR" => "Happy Contests", 1064 "hkSd1AFG3" => "Happydemics", 1065 "5o386WKuo" => "hbfsTech", 1066 "QjO6LaiOd" => "hCaptcha", 1067 "4nofr3ZKv" => "HCL Commerce", 1068 "PCM3ENiM_" => "Heap", 1069 "V2JLZ6oXx" => "Hearken", 1070 "ZsL20fBoL" => "Hearts & Science", 1071 "jm2uRvXdcCaHvX" => "Heatclix", 1072 "wPWaLxeau" => "heidelpay", 1073 "uMCsHr86c" => "HelloBar", 1074 "sQyCGhMu7" => "HelpfulCrowd", 1075 "2gOY3sPPJ" => "Helpscout", 1076 "DFT9QDJE_BFA3n" => "Helpshift", 44 1077 "0V-E5N_GQ" => "Here", 1078 "S1-CRlIJF" => "Heroku", 1079 "Cg5EwBm57" => "Hetzner", 1080 "PWceAZDtb" => "Heyflow", 1081 "eTZ86zNa7" => "HGV Anfragewidget", 1082 "pVIUV5bwU" => "hii", 1083 "ZfbhHSYur" => "HIRO Media", 1084 "hDr0yM-VkyVPmH" => "Hit Counter by Powr", 1085 "jgfe089-f" => "Hivestack", 1086 "cAPqoIgOqoT_Ot" => "Hockeystack", 1087 "12Rp61cy9" => "hogast", 1088 "xfC-0NlfB" => "HolaSpark", 1089 "-xTGk4UJW" => "HolidayCheck", 1090 "aP9cMixHcEGFB1" => "Homie", 1091 "aQEevvUcQ" => "Hootsuite", 1092 "ByOH9EoOsZQ" => "hostgator", 1093 "M4l7NUrLF" => "Hotel Barometer", 1094 "3R9IURKfa" => "Hotelchamp", 1095 "R41epsTpY" => "HotelQuelle", 1096 "S1kgcNo_j-m" => "Hotjar", 1097 "S1AZgq4jOsZX" => "Hottraffic", 1098 "OKaP1ocl" => "HR4YOU", 1099 "Xs8BSD3DO" => "HRS", 1100 "ro2Qr0JwU" => "https://www.flashtalking.com/optout", 1101 "ntynkMgmojs56x" => "HUAWEI Ads", 1102 "g-00DwuBhiwqye" => "HUAWEI AppGallery Connect", 1103 "aTTBwjYV-ZLpl-" => "HUAWEI Mobile Services", 45 1104 "ry0QcNodoWQ" => "HubSpot", 46 "r1Fhc4iOoWX" => "HubSpot forms", 1105 "GVxz5M93SoINWc" => "HubSpot by SyncSmart", 1106 "B0yp01393" => "HubSpot Essential", 1107 "r1Fhc4iOoWX" => "HubSpot Forms", 1108 "q6YYRb_V9AxuuY" => "Humm", 1109 "QZPPPW641" => "Huq Industries Limited", 1110 "No50R7Wr" => "Hurra.com", 1111 "Ie2tI6I8A" => "Hybrid Adtech", 1112 "ROCBK21nx" => "HyprMX", 1113 "i1sbFas6IXyQ1c" => "I-mobile", 1114 "XMTWUaeze" => "IAB Open Measurement SDK", 1115 "HJanx9NoOjb7" => "IAB Technology Laboratory", 1116 "V7Aw0ubTPes8vT" => "iAd", 1117 "BykM5Vodi-X" => "iAdvize", 1118 "TE1p4rbif" => "Ibexa DXP", 1119 "8t91Hdo8W" => "Iconfinder", 1120 "xSkLLZByv" => "Icons8", 1121 "Hy2XlcEi_ibQ" => "ID5 Technology", 1122 "HytuM2Hq4" => "Idealo", 1123 "iO7pDk0MCbOpOD" => "If-So Dynamic Content", 1124 "e9v8TIcig" => "ignitionAi", 1125 "HJPPe9VjOsZX" => "IgnitionOne", 1126 "DJgoqmnpF" => "Illuma Technology Limited", 1127 "2DeBAlZBPce0Np" => "ImBox", 1128 "XZ6buX0Z2" => "Imgix", 1129 "-7aWGVtV7" => "Immobilienwertanalyse", 1130 "eDtR-Qpyr" => "ImmoScout24", 1131 "ha-q9XBo" => "Impact Radius", 1132 "Db4YwX8aalX3oG" => "Impact.com", 1133 "0Xgr5Vwth" => "Impactify", 1134 "Y4NL-RXQQ" => "Imperva", 1135 "SJwZxc4sOsZQ" => "Impression Desk Technologies", 1136 "S1a9gqNj_iZ7" => "Improve Digital International", 1137 "gjsI_E28r" => "Incert", 1138 "HyldcVsOo-m" => "Indeed", 1139 "HJr1gqVsOjbm" => "Index Exchange", 1140 "PAess3fOL" => "Indoqa Search-Analytics", 1141 "CVBUWHOL8" => "INFINIA MOBILE", 1142 "KxDKFEzQHcHKvi" => "Influence mobile", 1143 "F9geCQdkM" => "Infogram", 1144 "BXU3bgwQNXkz2a" => "Infomax Websolutions", 1145 "r1qWcNoOsW7" => "INFOnline", 1146 "AJC7siicR" => "Ingenious Technologies AG", 1147 "ykdq8J5a9MExGT" => "InMobi", 1148 "Hyu6e9VjdoWQ" => "InMobi Pte", 1149 "IWEry9w3j" => "INNITY", 1150 "1On4iIz0pXPB7x" => "Innkeepr", 1151 "kDgm-HFUj" => "Innovid", 1152 "KpyTD7UX8HJ_xi" => "Insider", 1153 "HkGcl5Viuo-7" => "Inskin Media", 1154 "-Gj2r8bd6" => "Instabug", 47 1155 "SyUQ54odobQ" => "Instagram Content", 1156 "sHCH_ftzBIyJfN" => "Instana", 1157 "AOgl5ztxY" => "Instapage", 1158 "rkkCx9EjuiZQ" => "Instinctive", 1159 "gstWfFWQ4" => "Instreamatic", 1160 "uceCBKaoi" => "InsurAds Technologies", 1161 "B8AYJ-S6i" => "intedia", 1162 "C1w4LIzQZ" => "Integral Ad Science", 1163 "0B8fT5-8O" => "Integral Ad Science", 1164 "ByiGqViusWX" => "intelliAd", 1165 "Qv2yE-JQd" => "intelliAd Privacy Safe Analytics", 1166 "r1KkV5tb8" => "intelliAd Tracking", 1167 "jdFcD8NQuNYIy_" => "Intellimize", 1168 "r1Klg5VjOoW7" => "Intent Media", 1169 "ZPBtlhwwj" => "Interactive Performance", 1170 "oAGTwTX0" => "Interactive Performance", 48 1171 "ryDQcVoOoZQ" => "Intercom", 1172 "XERJaRzZN" => "Internet BillBoard", 1173 "RkzHS-jLm" => "Interrogare", 1174 "rJ4tecEoOoZ7" => "Intowow Innovation", 1175 "uHbOWgCQJ" => "Invibes", 1176 "6reLOgXs1" => "Inxmail", 1177 "SyBR15Ly4" => "Ioam", 1178 "vBT3xziaP" => "IOL-BODY", 1179 "r1xKx94jusZ7" => "iotec global", 1180 "mHEhMFFdV" => "IP Stack", 1181 "AcG0jQhhzztYxU" => "ip-api", 1182 "5R7MB_6N0" => "IP2Company", 1183 "zZoDj4IdOx8lGp" => "iPages Flipbook", 1184 "Y3S3Cjlht" => "iPaper", 1185 "95bcFdZvH" => "Ipapi", 1186 "D5DUswh2fMIkg5" => "Ipify", 1187 "B16Q9VodjbQ" => "Ipinfo", 1188 "BnK1tfEC6R1Qrl" => "iPlayerHD", 1189 "rklNe9NjOiWm" => "IPONWEB", 1190 "ry6p5NiujW7" => "iProm Remarketing", 1191 "WGTklT4Im" => "iProov", 1192 "Mii4b2CFl7rgK1" => "IQzone", 1193 "hY-4uY34I" => "Iridion", 1194 "9dchbL797" => "ironSource", 1195 "qMW-1y9VZncgxO" => "iSenseLabs", 49 1196 "dwkRM0PG" => "Issuu", 1197 "lx8ViIae4q6Ho2" => "Iterable", 1198 "u34eMAoRD" => "iThemes Security Pro", 1199 "R6bu3Q3X4" => "iTunes Coverbilder", 1200 "Bk79g5EjuoZX" => "Jaduda", 1201 "t9GHg5xFu" => "Jameda", 1202 "wT2IxHKzZ" => "Jampp LTD", 1203 "V4QOOdntTmS07U" => "Jentis", 1204 "SJNrcVo_o-7" => "JetPack (WordPress Plugin)", 1205 "B1mACbkCb" => "Jimdo", 1206 "UZOZDGJER" => "Jira Service Desk", 1207 "bWGt72FTi" => "Jivochat", 1208 "ByAje9No_j-m" => "Jivox", 1209 "GLIuvNhzfKbWEI" => "JobRad", 1210 "JIK6n-FV9RuDQ6" => "JobRad Österreich", 1211 "49Xa8jsyH5rSfo" => "JobRad-Rechner", 1212 "VQfUiTGEr" => "Join", 1213 "am5lpKiXP" => "Joomla", 50 1214 "J9V5VBp3y" => "JotForm", 1215 "Sy7BcNo_ib7" => "jQuery", 1216 "YFfQgeL1F" => "jQueryUI", 1217 "F-REmjGq7" => "JSDelivr", 1218 "c85glKPAc" => "JTL Shop", 1219 "13MNOMVk-l3Ngn" => "Judge.me", 51 1220 "-ONUgPRHp" => "Juicer", 1221 "w-6YwMJPGxMGoM" => "Julep Media", 1222 "XshkkGRyb" => "Jumio", 1223 "7VMQjmth-zQrAt" => "Jumpseat", 52 1224 "YiVeMG4Ma" => "Juris", 1225 "CTaQ5h7W8UxLLV" => "Juspay", 1226 "sTLR41-Y-" => "Justix", 1227 "Hk_el94sdsZQ" => "Justpremium", 1228 "XPNynwmsY" => "Justtag", 53 1229 "ppPIzs4e" => "JW Player", 1230 "yJh98UvrN" => "jweiland.net", 1231 "Q6QFEEKXW" => "Kadermanager", 1232 "w-cwb3XM" => "Kairion", 1233 "Yck-LLwy0" => "Kairion Instore", 1234 "d0-kDutgg" => "Kairion Instore & Out-of-Store", 1235 "XAUageUTd" => "Kairion Out-of-Store", 1236 "onMhbpYZn" => "Kairos Fire", 1237 "g6bEKM3Hs" => "Kakao", 1238 "S1MLTlkEX" => "Kaltura", 1239 "H1yDxp7JN" => "Kameleoon", 1240 "9FYjH37-J" => "Kameleoon A/B Testing", 1241 "2lh8-reEz" => "Kameleoon Personalization", 1242 "07EU8bMnixRXgH" => "Kayak", 1243 "C2a4_R3z6" => "Keen IO", 1244 "BkDKHsV5N" => "Kelkoo", 1245 "mmVz-j_tr" => "KennstDuEinen", 1246 "SJ7T9NjOjZX" => "KenShoo", 1247 "eoVgXrQuQ" => "Kentico CMS", 1248 "HJBSqEido-X" => "keyCDN", 1249 "zB-0M4f30" => "Keycloak", 1250 "SJysx5Nodj-X" => "Keymantics", 1251 "2kcwp9XMK" => "Khoros", 1252 "Snx31FWS16T7HN" => "Kickbite", 1253 "zf-7LGQ2" => "Kickfire", 1254 "BqOkNFgpbLczMs" => "Kicktipp", 1255 "JiXMaMGfGU0AMm" => "Kidoz", 1256 "zbwYM1LoEJZynZ" => "Kiko Chatbot", 1257 "ko6wPAMieDctcU" => "Kindly", 1258 "U7XTUDFas" => "Kiosked", 1259 "loZk__DQmtCVlO" => "Klar Insights", 1260 "x8yJ18Vy-pXRWV" => "Klar Pixel", 1261 "7x35Xo7A" => "Klarna", 1262 "JuU9Uc996" => "Klarna On-site messaging", 54 1263 "m5uB6gnoW" => "Klaviyo", 1264 "t0R7w63eu" => "Klear", 1265 "hPrNlr3oRSQ3Av" => "Klevu", 1266 "OrQTMdFE" => "Klick-Tipp", 1267 "b8m6H4Eyp" => "Knexus", 1268 "ABb8d45Rx" => "Knight Lab", 1269 "w2KKV5_Fk" => "Knorex", 1270 "r1KoxqNi_sZX" => "Knorex Pte", 1271 "J9GIhipl2cGDEL" => "Koalendar", 1272 "cMbvCxbnW" => "Kochava", 1273 "xybUsnxey" => "Kognitiv", 1274 "yP7Kbu7nw" => "Koko Analytics", 1275 "mBFMre9KsMbdyA" => "Komoot", 1276 "LobSoYzEM" => "Königsteiner Digital", 1277 "es91dXvv5" => "Konsole Labs", 1278 "Idm31to_c" => "Konsta", 1279 "9Q7Bc1oNz" => "kr3m", 1280 "gTaR1wkJyo9R86" => "Krones", 1281 "GYCSUJaZd" => "ksu", 1282 "tiFs2oYxt" => "kulea", 1283 "PGQo494D" => "kununu", 1284 "g4cu7oq5C" => "Kupona", 1285 "70rpl4n2FyxuMX" => "Kuula", 1286 "FAbLkZ3Tx" => "Kwanko", 1287 "JH7NZIVIn" => "KXCDN", 1288 "HyETcEoOjbQ" => "Ladenzeile", 1289 "Tau9-tfH_" => "LamaPoll", 1290 "FugOpEoJ7" => "Landbot", 1291 "MV-UxJe2MAGfUW" => "Lasso Analytics", 1292 "By5v5Vo_ibX" => "Lead Alliance", 1293 "CIYR_A-Kh" => "Lead Forensics", 1294 "v8EoM4g_YlhQch" => "Lead Onion", 1295 "mfODT12AJ" => "Leadfamly", 1296 "mbL6QSpmZ" => "Leadfeeder", 55 1297 "eSE_HHXnI" => "Leadinfo", 1298 "HkdvTCJTN" => "LeadLab", 1299 "mjyIByaUN" => "Leadlander", 1300 "ToKFtuZCS" => "Leadoo", 1301 "E4CTElGAt" => "Leady", 1302 "UpfsXTdEl" => "Leanplum", 1303 "iESVWUYYXXPd7l" => "LearnWorlds", 1304 "swhrlNC1JhYd8Q" => "Legejobber", 1305 "YlhLJPcIk" => "Leiki", 1306 "-ZG-GiW7s" => "Lemo Media Group", 1307 "zRMtP5wY-" => "Lengow", 1308 "gj_ifGDMW" => "Libsyn", 1309 "loY267uTc" => "LifeSite", 1310 "H1GgxqNsuibQ" => "LifeStreet", 1311 "EMD3qUMa8" => "Liftoff", 1312 "Hke994oui-7" => "Ligatus", 1313 "FDiqvMBm0" => "LightWidget", 1314 "AjOoxG0fkmHrmf" => "Lime Connect", 1315 "--PErZkDm" => "LimeSpot", 1316 "HDZy5SBI8bwYro" => "LINE", 1317 "bkhjDXJzLlHFNY" => "Linexo", 1318 "vsPo8NP4j4VJFB" => "Link11", 1319 "aRZacFiPZ" => "LinkConnector", 1320 "rk-nqEj_o-m" => "LinkedIn Ads", 1321 "BJikbq4iujWQ" => "LinkedIn Analytics", 1322 "PZZPKRUZvR-WGG" => "LinkedIn Conversions API", 1323 "JQ2XQxIk" => "LinkedIn Insight Tag", 56 1324 "Hkx754i_iWm" => "LinkedIn Plugin", 1325 "KlgP751_a" => "Linkpulse", 1326 "Te5E2yroW0raV6" => "Linkster", 1327 "BJZOeqEjOs-m" => "LiquidM Technology", 1328 "Gq3CKeAHP" => "LIQWID", 1329 "0TSO2KqwdGcKZq" => "LiSA", 1330 "OTnvvCqHZwyzg_" => "Live Chat by Text", 1331 "5fsm8AQ864Jf4A" => "Live Intent", 1332 "fmq5LxcxX" => "LiveAgent", 1333 "LNZGBYJCq" => "LiveChat", 1334 "Skh2lcVsusWX" => "Liveintent", 1335 "H-Ph11IG" => "LivePerson", 1336 "BkqzgqNiOiWm" => "LiveRamp", 1337 "Ub9GLCn2Q" => "LiveRate", 1338 "gkAMkDthN" => "Livereach", 57 1339 "KpU9UXKjc" => "Livestorm.io", 1340 "ryTKg9Vjdibm" => "LKQD", 1341 "gqlgap7z" => "Loadbee", 1342 "wlw9L37WhiR0cD" => "Locally", 1343 "NnzcTZOVY" => "Localsensor", 1344 "dysR7qv-pDSNJY" => "Localytics", 1345 "Byr8gcEidiZQ" => "Location Sciences AI", 1346 "91Upq6kl0" => "Login with Amazon", 1347 "YPfKe97FZUx-Ve" => "LogRocket", 1348 "HkdUgcUJE" => "Lokale Internetwerbung", 1349 "UbQqceRWO" => "Lokalleads", 1350 "An5QLDtKdj0xm4" => "Loom", 1351 "Sgkhva2fl" => "Loopingo", 1352 "ryMzxqNjujZQ" => "LoopMe", 1353 "_asujRjnh5cKeW" => "Loqate", 1354 "9sO0BIT2L" => "LotaData", 1355 "BkpMg9NidsZ7" => "Lotame Solutions", 1356 "whVd0dVxDf0z-8" => "LoyaltyLion", 1357 "Cl5QZ8H3D" => "LoyJoy", 1358 "NNjm99KyT" => "LTS (Landesverband der Tourismusorganisationen Südtirols)", 1359 "MDcI496A3" => "Lucid Holdings", 1360 "EIAR4eOXr" => "Lucky Orange", 1361 "k87Dze248BM6A_" => "Luigi’s Box", 1362 "wajcSFWhjyXa4Y" => "Lunio", 1363 "j71PcgQVV" => "LUX Marketing Automation", 1364 "tLcW3mJYZk6RDO" => "Lyft", 1365 "OV4ohrdfO" => "m-pathy", 1366 "S1Jbl9EiOo-7" => "M32 Media", 1367 "uhH_E-xE0W0A2U" => "Mable.ai", 58 1368 "ukU5jpn0K" => "Machineseeker", 1369 "ukrh2nEMY" => "Madington", 1370 "S1Veeq4oOjbm" => "Madison Logic", 1371 "rk_QecEoui-X" => "MADVERTISE MEDIA", 1372 "f8YBSIync" => "Magebird", 1373 "harQzo_Qz" => "Magento", 1374 "Hk6V3Z367" => "Magento Persistent Shopping Cart", 1375 "3csbuOW2G" => "Magic Toolbox", 1376 "TIA_KQy80" => "Magnite", 1377 "wG7JE3IK" => "Magnolia CMS", 1378 "SJggqNsOi-m" => "Mailchimp", 1379 "Hb4cXZ62" => "MailerLite", 1380 "hMBCbMMRj" => "Mailgun Technologies Inc.", 1381 "-y8Iryeh" => "Mailingwork", 1382 "njy_AxqKG" => "Mailjet", 1383 "Rb9_GOhdl" => "Mailmunch", 1384 "xvQ9rrBdK" => "Mailocator", 1385 "CvYyhHihHVjzsX" => "mailworx", 1386 "HJWse9Es_sWX" => "mainADV", 1387 "T7Dp7SESu" => "Mairdumont Netletix", 1388 "DeK0Hv2ii71Lt6" => "Make", 1389 "Ek1i784CL" => "Mandrill", 1390 "Bk0CpKIkN" => "Map and Route", 59 1391 "U8QkTd2W" => "Mapbox", 1392 "QmkqgbGhi" => "Mapp", 1393 "30sq7vsLd" => "Mapp Intelligence Anonymous Tracking", 1394 "Ouzxu26Rv" => "Mapp Intelligence Full Feature Tracking", 1395 "HpFI85vq-" => "Mapp Intelligence Tag Integration", 1396 "RO1d0uR2fCybGj" => "MapTiler", 1397 "qySmlP-Vg" => "Maptoolkit", 1398 "IKEv1F3uL" => "Marfeel", 1399 "r1Pae9VjusbQ" => "Marfeel Slutions", 1400 "ISdS_fz6apf_0L" => "Marker.io", 1401 "fJGKXqdGb" => "Market Resource Partners", 1402 "BqrjsapwE7B08L" => "Marketing Cloud Einstein", 1403 "rkBBg94sdiW7" => "Marketo", 1404 "B1Z8aG07Q" => "Maßnahmen für Werbung und Remarketing", 1405 "v8O815I--b-cCs" => "Mastercard Masterpass Checkout", 1406 "S1We94i_oZ7" => "MaTelSo", 1407 "Ez5p9gJN0" => "Mathtag", 60 1408 "zqWojrT0P" => "Matomo", 61 1409 "u6fxocwTs" => "Matomo (self hosted)", 1410 "vtoY2LcrVB4gHm" => "Matomo Tag Manager", 1411 "B1a0x54jdiZX" => "Matomy Media", 62 1412 "7bFNv7DLf" => "Matterport", 63 "SJ6xqVidi-X" => "Media Math", 1413 "WZLx_vBAc5RyAP" => "MATTRZ", 1414 "pwrC1OMft" => "Mautic", 1415 "kLzaFClx3VhlBb" => "Maven360", 1416 "MshQNhTYu" => "Maximus", 1417 "H627Q19Ki" => "Maximus Live LLC", 1418 "qCSlzFQB" => "MaxMind", 1419 "Hyhgq4sOs-m" => "Maxymiser", 1420 "rJlGx5Nidi-m" => "Maytrics", 1421 "cK1mt5-o8v2-n6" => "Maze", 1422 "qJcqahB57" => "MBR Targeting", 1423 "O2r8FJT1x" => "MBR Targeting", 1424 "XW5k34f8D" => "Meazy", 1425 "dT7B8jWWx" => "Medallia", 1426 "ByJLxcEidi-7" => "Media.net Advertising FZ", 1427 "PrIbCsXKXhIW7M" => "media.ventive GmbH", 1428 "SJ6xqVidi-X" => "MediaMath", 1429 "ajpf8UKi" => "Medianest", 1430 "YpOIHF5QF" => "Mediards", 1431 "QKvvrc0tp" => "mediarithmics", 1432 "HJUDeqVouob7" => "Mediasmart Mobile", 1433 "QNbB6Hh1c" => "Mediaventive - Performance Channel", 1434 "dtbMASFU35tp0m" => "Meetfox", 1435 "SJyyb9Ei_i-7" => "Meetrics", 1436 "cyt4lSUfdIXHXK" => "mein.toubiz #elements", 1437 "Hm1WEDosEsNT9h" => "Melibo", 1438 "AySJdLTYA" => "Meltwater", 1439 "OV7USFA2A" => "MentionMe", 1440 "Hy8srQ1NX" => "MessengerPeople", 1441 "J05PmJuvt36qTe" => "Meta Pixel", 1442 "kzjRvWOMlxuf63" => "Meta Pixel Advanced Matching", 1443 "tq9_N4UgZ4PbEC" => "Meta social plug-ins", 1444 "fcI2orHMJ" => "Meteonomiqs", 1445 "x6_ma5zhCB77Nx" => "Metricool", 1446 "rkRAg94jdjWm" => "MGID", 1447 "4kJyPLaV2" => "MicroMovieMedia", 1448 "BkeKqEjuoZQ" => "Microsoft Advertising", 1449 "dsS7z9Hv4" => "Microsoft Advertising Remarketing", 1450 "XB0GBAmWEQ7Spr" => "Microsoft App Center", 1451 "PrLTkYnq" => "Microsoft Azure", 1452 "rmmkUdkcF" => "Microsoft Bookings", 1453 "0XIfeH9qx" => "Microsoft Bot Framework", 1454 "jzMEq56vW" => "Microsoft Clarity", 1455 "EOF_F-ezQ" => "Microsoft Conversion Tracking", 1456 "dUzxiHb6Q" => "Microsoft Conversion Tracking", 1457 "31OpY_Rd1dJTKf" => "Microsoft Dynamics 365", 1458 "IlIwO5vXHCMore" => "Microsoft Dynamics 365 Customer Insights", 1459 "M9Nj9klGy" => "Microsoft Dynamics CRM", 1460 "J1gBN9Q0PBFEMj" => "Microsoft Enhanced Conversions", 1461 "s-jP9Kxa1" => "Microsoft Forms", 1462 "00xb_vkGq" => "Microsoft Omnichannel", 1463 "2AMblLg3I" => "Microsoft Remarketing", 1464 "l5j0HxFqd" => "Microsoft Remarketing Conversion", 1465 "sCZcGGgbJ2HWIe" => "Microsoft SharePoint", 1466 "j0Avo0TiCxkRW8" => "Microsoft Sway", 1467 "G9mTwsAcP" => "Microsoft Teams", 1468 "cPmgADKv" => "Midas-network", 1469 "_hV5dqnpKeOQNh" => "Mindbody", 1470 "Ms6JA9Xtr" => "Mindbox", 1471 "7v_Mn--q_" => "Mindbreeze", 1472 "rkL9c4i_sW7" => "MindTake", 1473 "E6AgqirYV" => "Mintegral SDK", 1474 "MPeKZ-_89" => "Minubo", 1475 "S1SQxqViOoWX" => "MiQ", 1476 "aC63kDbno" => "Mirando", 1477 "rkSKecEi_sW7" => "Mirando & amp", 1478 "WLykcwG3u" => "MirrAR", 1479 "ZLmgJFVK7" => "Missena", 1480 "d-6PZM5hs9NdOo" => "Mistplay", 1481 "6DErRaKm0m6N66" => "Mitek MiSnap", 1482 "5FNHm-uj5" => "Mittwald", 1483 "8Gvo_h2Qd" => "Mittwald CM Service GmbH & Co. KG", 64 1484 "4UGBLUJUN" => "Mixcloud", 1485 "rkUK5EsOsWm" => "Mixpanel", 1486 "N5uvpK-j" => "Mixpanel", 1487 "w2ZQ7uy-F" => "Moat", 1488 "S1qqeq4oOsWQ" => "mobalo", 1489 "SJ-KqViOj-7" => "Möbel.de", 1490 "wqtPHyrXz" => "Mobfox", 1491 "ElDYt1RdN" => "mobilApp Face2Face", 1492 "oOSi59gyP" => "Mobile Journey", 1493 "B1Hnlq4ido-X" => "Mobile Professionals", 1494 "OEXRoXIU5" => "mobile.de Ratingwidget", 1495 "VPSyZyTbYPSHpF" => "MobileFuse", 1496 "EHXPzs_EI" => "Mobilewalla, Inc.", 1497 "eHZ7kxgTA" => "mobsuccess", 1498 "sf09FFoYV" => "Mobusi Mobile Advertising", 1499 "GSkFelKJW" => "Moebelix (Möbelix)", 1500 "Yd407miCX" => "Moemax (mömax)", 1501 "sQj54uQRhTIydb" => "MoEngage", 1502 "DTG2HYCG-" => "moin", 1503 "DXrpyA5c" => "mollie", 1504 "p0b03PgiffqmVQ" => "Moloco Ad Cloud", 1505 "MEC7egXDb" => "Monet Engine", 1506 "5z9PmqMLFGdFpH" => "Monetate", 1507 "sFO4O-1jS" => "Monotype - Web Font Tracking", 1508 "g6P2QSiL" => "Moodle", 1509 "m_hq1fmBw" => "Mopinion", 1510 "asj2W6ayi" => "MoPub", 1511 "QxRYWv5Un7Qt9g" => "Morayne", 1512 "rJgz9Nj_o-m" => "Mouseflow", 1513 "-aZCjz9q6" => "Movinga Affiliate Programme", 1514 "ASCgon9qg" => "MovingImage", 1515 "Nrr2EkxPm1TEEi" => "Mozaik App", 1516 "r1OI9EjdjWX" => "MP Newmedia", 1517 "0UlsDKnXZYxJt2" => "mParticle", 1518 "HkPlxcNjdiWm" => "mPlatform", 1519 "B1QLcNsujb7" => "MPNew Media", 1520 "p1R8Y8LKN" => "MSO Digital", 1521 "qEyFq-wLS" => "MTCaptcha", 1522 "Tc6Kcc4x" => "Multiconnect", 1523 "GThDWmHZqyFXWH" => "Munchkin", 1524 "WszJp1rdV6DcVb" => "Mux", 1525 "f_zaWX7mB" => "my.com", 1526 "S1zkWcVi_oWm" => "My6sense", 1527 "6hrW9SIEz" => "myclimate", 1528 "TgQQ_7vG" => "MyFonts", 1529 "aA58s2wH" => "MyFonts Counter", 1530 "6Kri8R7YN" => "Myhotelshop", 1531 "UuZ8TZaDEZ0ieL" => "MyNewsDesk", 1532 "vmiLms-lD" => "Myntelligence", 1533 "DCPRuvbW9JNl9o" => "Myra Security", 1534 "ez0g7yzny" => "MySQL", 1535 "S0i4seKvH" => "myTarget SDK", 1536 "bxAsF3_QIKPzIV" => "myTracker", 1537 "46In7qkId" => "MyTraffic", 1538 "dO_4AQnvq" => "myvisualiq", 1539 "r1Xgl9NjOiZ7" => "N Technologies", 1540 "Bytrq4suoWQ" => "namecheap", 1541 "rkRGx54sOsbm" => "Nano Interactive", 1542 "Bf10TXRhw" => "Nativo", 1543 "IKYHCoHcZHbo3z" => "Navattic", 1544 "XLKA6E3pa" => "Navdmp", 1545 "auPCN9tDL" => "Navegg", 1546 "N2vwT-gQn" => "Naver Analytics", 1547 "r1uh5Es_sZ7" => "Nayoki", 1548 "DODaHKMSN" => "Near", 1549 "9Bdi4IkPi" => "Near Pte Ltd", 1550 "m4c9HetowgSdWb" => "Nearest", 1551 "twRDa3OIX" => "Neccton", 1552 "iVpNpvjDe" => "Neodata", 1553 "Uu7TSzcsV" => "Neodata Group", 1554 "r1DpCbD4Q" => "NEORY", 1555 "MNzdVMVOa" => "Netdna-SSL", 1556 "zp6C6pVg7" => "netID", 1557 "u6zRdbuSRm68CQ" => "netID Privacy Settings", 1558 "gxeBVKiMaS1f4I" => "netID Privatsphaere-Einstellungen", 1559 "rkhNcEiOiWm" => "Netigate", 1560 "H1mYx54sOjWm" => "Netsprint", 1561 "S13Wec4oOj-m" => "NetSuccess", 1562 "cg4DF2Tf3" => "netzeffekt", 1563 "H1mJlcEoOsWQ" => "NEURAL.ONE", 1564 "zWcIXL1Vo" => "Neustar", 1565 "obaJPtBH-" => "Neustar on behalf of The Procter & Gamble Company", 1566 "rJMsqEj_iZQ" => "New Relic", 65 1567 "SJ_6Qo9DJ" => "News Anwaltblatt", 66 "ctDbl6j2y" => "Onlyfy", 1568 "1KYWj02vF" => "News IQ", 1569 "MsFie1C8" => "Newsletter2Go", 1570 "Kvst06Fp6" => "Nexcess Edge CDN", 1571 "67jCxq477" => "NEXD", 1572 "rJvn9Ei_i-m" => "NeXeps", 1573 "9QzVFkXfuKGQDq" => "NextLevel Defend", 1574 "rkBaq4j_jZX" => "NextPerformance", 1575 "kX5CQ9GyhBOw4d" => "NICE inContact", 1576 "F2ydLVmlw" => "Nielsen Audience Measurement", 1577 "jNl0iqYyR" => "Nielsen Marketing Cloud", 1578 "OECc5DF7N" => "Ninja Forms", 1579 "Rz9YZM2_q" => "NitroPack", 1580 "YIIh84btf" => "Nobilia", 1581 "vyO2xoFlk" => "Nosto", 1582 "_NP347b6x" => "Novomind", 1583 "cacONmLO0y2Vs2" => "NPAW", 1584 "HJQo5EjOoW7" => "nr-data.net", 1585 "WNxVOkJj6Bd8Lf" => "Nudgify", 1586 "H1zqqVjOjZ7" => "Nugg Ad", 1587 "I8nSaqdpx" => "Numberly", 1588 "xJtOMgc-4" => "o9", 1589 "sq_4H0evI" => "o9 Solutions", 1590 "rJEIq4suiWQ" => "Oath", 1591 "UD9IMlWyy" => "Oct8ne", 1592 "M8wnlqZvUAkxEv" => "odeeo", 1593 "90nYEa22C" => "Odoo", 1594 "j-5dzGJY_" => "Odoscope", 1595 "QO4LqnO8l" => "Ogulo", 1596 "rJ-vecVo_s-m" => "Ogury", 1597 "L_bj20Jo1OWggP" => "Okendo", 1598 "W_5gGyZbH" => "Okta", 1599 "uM6Xg1b-5" => "Oktopost", 1600 "q7WZXgONy" => "Olark", 1601 "LNxiCu4IM" => "Omnicom", 1602 "CVgj3mZSSWNCJZ" => "Omniconvert", 1603 "6fvpak_ta" => "Omnisend", 1604 "GEGzlSe9N" => "Omniture", 1605 "7O1UQJ3fESc3Ld" => "OMQ", 1606 "Hy4uqVsuiWX" => "OMS Nativendo", 1607 "Sy05g5NodsWQ" => "On Device Research", 1608 "tqc3yijj8rf1JC" => "Onapply", 1609 "O-K_7XAEd" => "OnAudience", 1610 "bDNvyjTof" => "Onboard", 1611 "4YyVB9Jh91uLQ-" => "Onclusive", 1612 "OiFuV1hpk" => "one.com", 1613 "ZZSNphdpA" => "Onedash", 1614 "RVtztac32h7njd" => "OneFootball Player", 1615 "_SUFlQuxf" => "OneSignal", 1616 "BkgueqNjuo-m" => "OneTag", 1617 "pd-3srkxrnEqFL" => "OneTrust", 1618 "b2hQkv9wp" => "Onlim", 1619 "PKJPsVvrW" => "Online Solutions Group", 1620 "ctDbl6j2y" => "onlyfy", 1621 "-CprOBtOX" => "OnMacOn", 1622 "HJcteqEiuiWm" => "Onnetwork", 1623 "saIWttSqY" => "onOffice", 1624 "gYmzZn2CH" => "Ooyala", 1625 "PGmWNqGwK" => "Ooyala (formerly Videoplaza)", 1626 "DaPDMRM49" => "OPAC", 1627 "xh-l8DkyC" => "Open AdStream", 1628 "nTiHcYnDd" => "Open as App", 1629 "W1pThiOU-6QLon" => "Opensignal", 1630 "j7Igy6o8D" => "OpenStreetMap", 1631 "IUvZYr7UZ" => "OpenTable", 1632 "ODw7zueQc" => "OpenWeather", 1633 "HJIge94oOi-7" => "OpenX Software", 1634 "tLtDHkQDe" => "Opinary", 1635 "pNOkVRbV6" => "Opinion Stage", 1636 "k5B3jAr_w" => "Opt-in Monster", 1637 "7Y-9fkhVBOnDYf" => "Optibase.io", 1638 "Pi633RLM" => "Optimise-it", 1639 "3HtWcG9EbUQIRF" => "Optimise-it (Ströer X)", 1640 "BJSN54susZX" => "Optimizely", 1641 "-ZqBkrVsKC2rQp" => "Optimizely Data Platform (ODP)", 1642 "Y1nveY7Vy" => "Optimonk", 1643 "WKMwvSKm7jC3cL" => "Optimus – iPinYou", 1644 "H1giW5JV7" => "Optin", 1645 "HJI5SmLm7" => "Optin", 1646 "SJZvUaJVQ" => "Optin", 1647 "rkVxVS1NQ" => "Optin", 1648 "MDWF9sj-6" => "optinmonster", 1649 "PPpL7pXsf" => "OptinMonster", 1650 "padROq-M" => "Optivo", 1651 "rJx0x5VjujbQ" => "Optomaton", 1652 "-TmM76s1U" => "Oracle", 1653 "QM-Jo32tt" => "Oracle AddThis", 1654 "HySP1b_1r" => "Oracle Infinity IQ", 1655 "KRiD3iESUwRVKW" => "Orbitvu - 360° product photography", 1656 "eAYrlt0w" => "Oribi", 1657 "H1FnWqHRm" => "Oriel WordPress Plugin", 1658 "SkNRl9NidjZm" => "Orion Semantics", 1659 "H10Lx9Nj_sZm" => "ORTEC", 1660 "H17uVFcVB" => "Otto", 1661 "z2Q0N4jr-" => "Our World in Data", 1662 "r1EWc4iuj-X" => "Outbrain", 1663 "HkrZ5NjusWX" => "Outbrain Amplify", 1664 "AH6TVUNbT" => "Outbrain Conversion Tracking", 67 1665 "15h3IBCa8" => "Outdooractive", 68 "nTiHcYnDd" => "Open as App", 69 "j7Igy6o8D" => "Open Street Map", 70 "pNOkVRbV6" => "Opinion Stage", 71 "JiFH1ubU" => "Paypal", 1666 "RZpG2ccmLg16fF" => "Outrank", 1667 "RCd5jeTnb" => "Overheat", 1668 "By159NoOjbQ" => "OWA", 1669 "LAfacyOBx" => "Oxid", 1670 "Md-L8ZYII" => "OXID eShop", 1671 "IZ87SC9KA6YPy5" => "Oxomi", 1672 "BAVEMPsb_" => "Paddle", 1673 "wXZ9L7_OW" => "Pamyra", 1674 "HWSNU_Ll1" => "Pangle SDK", 1675 "4B62fWico" => "Paperform", 1676 "VIpyP1_39" => "PaperG, Inc. dba Thunder Industries", 1677 "xDD3hzjiB" => "Paqato", 1678 "8VrQI_a0FQr9Fa" => "Parcel Perform", 1679 "HkYd5VjOiZm" => "Pardot", 1680 "sjAWaw1cW" => "Parse.ly", 1681 "RL5JLZJfG" => "Parsec Media", 1682 "FulJqehY" => "Partnerize", 1683 "L4PbbiR2L" => "Passkit Wallet", 1684 "hBNf9ZMYz" => "PassKit Wallet - Payments", 1685 "JbpMzs3b-" => "Passolution", 1686 "dno4UTZAH" => "PATHADVICE", 1687 "xkX3CPY1ZRUcmD" => "Pathfactory", 1688 "kLzLxy6IpXc1M1" => "PathMotion", 1689 "hg8bm_ryN4QXRh" => "Payback", 1690 "Gh7rn6Q3" => "Paydirekt", 1691 "p9dKRzCQG1YDs_" => "Payever", 1692 "XdHcWCbb6" => "Paylike", 1693 "dj5raa82hsw1K3" => "Payment Icons by Spark Apps", 1694 "dmhkr4BE" => "Payone", 1695 "JiFH1ubU" => "PayPal", 1696 "Ag4q4HEgK" => "PaySafe", 1697 "8crQza5v6" => "PaySafe", 1698 "FwJPIA--rtTBwb" => "Pearl Diver", 1699 "SyVf9NousW7" => "Peerius", 1700 "Db6tG4Q7z" => "Pega", 1701 "E9HH0S6fn49xSa" => "Pendo", 1702 "SyNFcEi_iZQ" => "Perfect Audience", 1703 "B17neqNido-Q" => "Perform Media Services", 1704 "B1hI9VjdjW7" => "Performance Advertising/Performance Profiles", 1705 "V1ENirOT6" => "Performance Media Deutschland", 1706 "c5jdEIoF" => "Performance Media UTT", 1707 "HkII54i_s-7" => "Performance Werk", 1708 "ryzIqVjdo-Q" => "PerformanceAds (über Neory)", 1709 "JSp_jw2Dp" => "PerimeterX", 1710 "-fYEmVEnP" => "Permaleads", 1711 "r1W6ec4o_jWm" => "Permodo", 1712 "BJiRlc4sOjZm" => "Permutive", 1713 "SknCx5Njdi-m" => "Permutive", 1714 "Vuy5t138I" => "Perseus", 1715 "dGpMz-t3P" => "Personalics", 1716 "NgXCCrOoE" => "Personalics| AR", 1717 "mn077nDsD" => "Personalics| AU", 1718 "U5oS-R63I" => "Personalics| BR", 1719 "sbJyvmeqf" => "Personalics| CO", 1720 "DnbYCtyZA" => "Personalics| NZ", 1721 "fCQ-RsavU" => "Personalics| RU", 1722 "QaV_DAWO6" => "Personalics| RU", 1723 "Bg5a1Cx8N" => "Personalics| TH", 1724 "c6rmTegQL" => "Personalics| TR", 1725 "_eKXsIOaU" => "Personalics| ZY", 1726 "o5siH7r7" => "Personio", 1727 "PFvmDE69X" => "Personyze", 1728 "iSYTvvtko95bht" => "Petal Ads", 1729 "18wNuq2Q9" => "Pexi", 1730 "IUs3PuZd-" => "PhotoEditor SDK", 1731 "eZ7ZUhb8RcWBr1" => "PIA Advertising", 1732 "B7dIEuvmU3N3Z5" => "PIA Media UTT", 1733 "8pTth9A2B" => "Piano", 1734 "Emcyk1Oc" => "picalike", 1735 "o6gOrAuVP" => "Pilotx", 1736 "E1RcKTp-i" => "pilotx.tv", 1737 "lEAV2WxHj" => "Pimcore", 1738 "rynr5EsujZQ" => "Pingdom", 1739 "SkpB54sdiZQ" => "Pingdom (with Performance Tracking)", 1740 "ozz3_rzr7" => "Pinpoll", 72 1741 "9Q2qrmB3" => "Pinterest", 73 "ze3Iyetr" => "Piwik Pro - Duda", 1742 "hFsp0FZO1" => "Pinterest Ads", 1743 "QIekDhgZRq1nIk" => "Pinterest Enhanced Match", 1744 "hsyqb7Jk8" => "Pinterest Rich Pins", 1745 "a_Dw7zFT7" => "Pinterest Tags", 1746 "ZRIsJO12R" => "Pinterest Widget Builder", 1747 "rL2ZmR7Wv" => "Pipedrive", 1748 "ze3Iyetr" => "Piwik Pro", 1749 "FFD0h7L9VZCA4m" => "Piwik PRO", 1750 "0xw-O6TDwbm3gh" => "Piwik PRO (without cookies)", 1751 "Z4KZxdWuV" => "Pixalate", 1752 "6oW2boAdO" => "Pixfuture", 1753 "B1kXg9NsOiWQ" => "PIXIMEDIA", 1754 "TLuhGVXN" => "Pixlee", 1755 "MczN3PJf0jdy4a" => "Plandisc", 1756 "H12Se54jdj-X" => "Platform161", 1757 "D1VA0cn81" => "Plausible Analytics", 1758 "ZAjjjV-N8HTrPz" => "Playable", 74 1759 "cv9bw3QAq" => "Playbuzz", 1760 "9eJHT4SVg" => "Playground xyz EMEA", 1761 "oviePVHrThIzCI" => "PLCrashReporter", 1762 "ByDEc4sOjbm" => "Plista", 1763 "sZAqOmbXv" => "plyr.io", 1764 "cQ9G55y1T" => "Podbean", 1765 "MQdVb1Ths" => "Podcaster", 75 1766 "nhLMP6qX" => "Podigee", 1767 "QrBxtTBc" => "Podlove", 1768 "B1enx94idi-Q" => "Polar Mobile Group", 1769 "jn7PuNE7ryR50p" => "Pollfish", 1770 "_YzvH8nm2" => "Polyfill", 1771 "qu0LnIaEx" => "Polylang", 1772 "-At_u-eGh" => "poptin", 1773 "UIYX_IrT67qCy6" => "Popupsmart", 1774 "1nLXz6_jQwTVQj" => "PostFinance", 1775 "V-HDotieTmnIIE" => "Powerfront", 1776 "SJaix54sOsWm" => "PowerLinks Media", 1777 "pAFmwQtUE" => "Powerspace", 1778 "q0KL21Inu" => "POWR", 1779 "EErS5Csc2gexDK" => "Prebid", 1780 "MJB4jjb2m" => "Predicio", 1781 "PRiMfNq9AmjBUL" => "Prenly", 76 1782 "Sy1naC5nN" => "Prescreen", 1783 "yX_RJArXk" => "Prestashop", 1784 "LTzbMGXbB" => "PREX Programmatic Exchange", 1785 "sXv0xv6Yg" => "Price Spider", 77 1786 "FB_cLNwjQ" => "PriceHubble", 78 "Hko_qNsui-Q" => "reCAPTCHA v1/v2/v3", 1787 "cpdk77FuK" => "PriceSpider - Where to buy", 1788 "ukt9D2w0slYSve" => "PRIMAVERA Affiliate", 1789 "BJP9l9VsOjW7" => "Primis Tech", 1790 "TKSllwIah" => "Prisjakt", 1791 "U7QP-YYXyp5dqT" => "Prismic", 1792 "6I5EMvvT" => "Privy", 1793 "ChYBnsIC" => "ProductsUp", 1794 "S-NGEvTX" => "Profity", 1795 "oMwRt9S6b" => "Programatica de publicidad S.L.", 1796 "NVE2j0evx" => "Prospect Herkenning", 1797 "rk7gq4ous-7" => "Proven Expert", 1798 "lAupl5pjM" => "Proxi.cloud", 1799 "LKrQnwfhc" => "Proxistore", 1800 "Wut37MVpc" => "Prudsys", 1801 "St3XajXXd" => "Psyma", 1802 "ROECN-Tyg" => "PUB OCEAN LIMITED", 1803 "1kHrJq8Xf" => "Pubfinity", 1804 "Hy2Ul5ViuoWX" => "Publicis Media", 1805 "uMYoFacdK" => "Publishers Internationale Pty", 1806 "ux1WtRswgXpWjg" => "Publitas", 1807 "HEgfggF6K" => "Publizon", 1808 "Bym-eqViuo-X" => "PubMatic", 1809 "rA6pW36V6" => "PubNative", 1810 "8YiTreu69" => "PubNub", 1811 "SyaxeqEi_oWX" => "PulsePoint", 1812 "Bk3ke9EoOjbX" => "Purch Group", 1813 "fVenI8qZaiSDea" => "Purchasely", 1814 "8tlwKrz7nBRwqd" => "Purchasely (analytics)", 1815 "8qm4v7INutTL5q" => "Puriphy", 1816 "BjEeUdoqs" => "PurposeLab", 1817 "6x7O_cifFWqG8K" => "PushAlert", 1818 "YGm2DPCil" => "PushEngage", 1819 "wk2G_sYvM" => "Pusher Channels", 1820 "4TKnHohTW" => "Pushpanda", 1821 "Rhtsr8xYL" => "PushPushGo", 1822 "I1BtuRjhnMkx0T" => "Pushwoosh", 1823 "mrhx7zrre" => "Q division", 1824 "l7ugIzopI" => "Qriously", 1825 "pbFdS9IDl" => "Qualaroo", 1826 "UWP2ySm2" => "Qualifio", 1827 "O3yJTmq2cFZi7R" => "Qualimero", 1828 "UsJU9k1K" => "QualityClick", 1829 "0QVzRHXZX" => "Qualtrics", 1830 "nfWrRs_XrJzPPW" => "Quanos", 1831 "rkd49ViuoWQ" => "Quantcast", 1832 "By0R9EjOo-7" => "Quantcast International", 1833 "RHM3MD-dj" => "Quantum Advertising", 1834 "LgERgxPgV" => "Quantum Metric", 1835 "bbIs1mTX" => "Quantyoo", 1836 "1ba4yQk0W" => "Qubit Opentag", 1837 "onZhj5dcS" => "questFON", 1838 "BlCRucxYKUN24b" => "Queue-it", 1839 "ByvlGc5Rm" => "Quibit Opentag", 1840 "cWXfgtNb78StQ2" => "Quick Polls", 1841 "vB4wCpDc4WHSI3" => "Quickchat AI", 1842 "VntU07p5kt4ixN" => "QuinBook", 1843 "wtNtlXMxU_jv1k" => "Quizell", 1844 "7AevQBoe" => "Quora pixel", 1845 "Bymslc4iuib7" => "Qwertize", 1846 "mM03_dNAW" => "R-Advertising", 1847 "E1PsKwwrnI7bh2" => "RadimDienst", 1848 "AydEzuFOw" => "RadioKing", 1849 "QsbWW7EG" => "Radioplayer", 1850 "HyqWxcEidoWm" => "Rakuten Marketing", 1851 "qkz61GF-" => "rapidmail", 1852 "_gSpdOB_t24AdV" => "Raptive", 1853 "3YCp1ywWCtQZyp" => "Raptor Services", 1854 "b2SmwZic" => "RatePay", 1855 "lZWfdL45y" => "Raute Musik", 1856 "9bTrLVvcd" => "Ravelin Mobile SDK", 1857 "SkMETCDgN" => "RawGit", 1858 "-umDZrwm6" => "RAWR", 1859 "BAvtRUiRy" => "Raygun", 1860 "Zwg-7XqvakSTNv" => "Razorpay", 1861 "bBw1uQaNp" => "RD STATION", 1862 "ZdLT87Qd" => "re:amaze", 1863 "veqs-kAz4" => "Reachnet", 1864 "o1FozBbqhgx3bN" => "React Native Firebase", 1865 "H1f2xc4odj-X" => "Readpeak", 1866 "ufhUMr6D2" => "ReadSpeaker", 1867 "f7LFah18V" => "Realeyes OÜ", 1868 "V0CshHa57" => "Realytics", 1869 "dGPun6EbN" => "realzeit", 1870 "SCRjaw0XPoMdSl" => "Rebuy", 1871 "Hko_qNsui-Q" => "reCAPTCHA", 1872 "cfADcn3E3" => "reCaptcha v3", 1873 "QNqdZMWL0l_zKv" => "Recharge.com", 1874 "ncJlxV2ywWo2vN" => "RecoBounce", 1875 "S1Qe-Pn54" => "recognified-microConversion", 1876 "h3nMfxCs7" => "Recolize", 1877 "H_j03b6g" => "Reddit", 1878 "ZglHJrjn" => "Reddit Advertising", 1879 "5JKj-J9nH" => "Redintelligence", 1880 "SyIP9Njdib7" => "Refined Ads", 1881 "_SBGD5koD" => "Refiner", 1882 "vYsMhlFj5" => "Reguest Messenger", 1883 "M66CCVZlE" => "ReigNN Platform", 1884 "ibuf4p3P" => "releva.nz", 1885 "7PmlLEs2t" => "ReMailMe", 1886 "rkjDe94oui-X" => "remerge", 1887 "gTYHewBsK" => "Remintrex", 1888 "H1j9cEoOi-m" => "remintrex.com", 1889 "0jco2jXId" => "Reonic", 1890 "qxQaPHctt" => "Reppublika", 1891 "PXcN3Ui_H" => "Research and Analysis of Media", 1892 "vKwiCret2" => "Research International", 1893 "HkbKeq4o_oZm" => "Research Now Group", 1894 "zy78g-j8KmE0gf" => "resmio", 1895 "193T921PXm" => "Resolution Media smartTracking", 1896 "7cPw4kU75" => "retailAds", 1897 "yGf7yJQfkQaKS_" => "Retarget Online Ads", 1898 "_sJYRyHIwToAJM" => "retargeted.ai", 1899 "6_AoTqxaRDHK-Z" => "ReturnGO", 1900 "r1sKg9VoOjW7" => "Revcontent", 1901 "SJp7xc4iOoWm" => "Reveal Mobile", 1902 "2LQcBGGtLPkeZx" => "RevenueCat", 1903 "5buNZ_jBP" => "Reviews on my website", 1904 "UN5TbrOXlDB1wG" => "Reviews.io", 1905 "Wq0D2klq" => "Revive Adserver", 1906 "OheZEKjS_" => "RevJet", 1907 "wbhw2dV3G" => "RevLifter", 1908 "QtkhD3Pi6i_j-J" => "Revscale AI", 1909 "_-TUZWgAe" => "RevX", 1910 "HymNBQk4m" => "Rexx Recruitment", 1911 "ByoLgqVo_i-m" => "Rezonence", 1912 "H1oll9Njui-X" => "RhythmOne", 1913 "H1wzlq4idoWm" => "Rich Audience", 1914 "pl3anzrRv" => "Riddle", 1915 "U4ZIzraAi3LxA2" => "RingCentral", 1916 "eO9JKghU6" => "Riskine Chatbot", 1917 "J6nsg-J4U" => "Ritzau", 1918 "t1xCHtccq30hUI" => "Riverty", 1919 "9NUDWWc6l" => "RMSi Radio Marketing Service interactive", 1920 "HkLplcNjdiWm" => "Rockabox Media", 1921 "SkhPxcNouoW7" => "Rockerbox", 1922 "BJiLqVo_i-m" => "Rocket Fuel", 1923 "yTeUMhYeyD9YrO" => "Roku", 1924 "HylJecEoOsbQ" => "Roq.Ad", 1925 "FUpg_dxj2uaKzo" => "Roxxad", 1926 "B1Ayg5Es_s-X" => "RTB House", 1927 "4nDnFKAvHCBrwV" => "RTB House - Enhanced Conversions", 1928 "H18p9NjOjZQ" => "RTB Markt", 1929 "HJOdlqVsOjWm" => "RTK", 1930 "M3Tjth_cjh-29B" => "RudderStack", 1931 "9wX039_lO" => "RUN", 1932 "K67zfwHGU" => "S-Public Services", 1933 "BJV2xq4idsZQ" => "S4M", 1934 "fjijtSPA" => "Saferpay", 1935 "uCqSi0hm" => "Sajari", 1936 "te8pKz1mP6gdIS" => "Salenti", 1937 "K7AsmUJ265KOlw" => "salenti GmbH", 1938 "RTLA4o2i1-ia2L" => "Sales Cloud Einstein", 1939 "d_5HNF7Yc" => "Salesforce", 1940 "-tsNPQtMM" => "Salesforce Audience Studio", 1941 "vLUpOAxR" => "Salesforce Audience Studio", 1942 "VTR8E9ZL5" => "Salesforce Chat", 1943 "WTYMoieIB" => "Salesforce Commerce Cloud", 1944 "hku02w1qx9YLjR" => "Salesforce Commerce Cloud Einstein", 1945 "D2cQY5lPghyteN" => "Salesforce Data Cloud", 1946 "IQMIegSQF" => "Salesforce Interaction Studio", 1947 "lgXw0VvDj" => "Salesforce Live Agent", 1948 "Cf2NHO6q5" => "Salesforce Marketing Cloud", 1949 "lX960FalA68X38" => "Salesforce Marketing Cloud Account Engagement", 1950 "wFxuQvYX8MhkWv" => "Salesforce Marketing Cloud Personalisation", 1951 "5VMTG-ihf" => "Salesforce Marketing Cloud Platform SDK", 1952 "8Sp6myo2" => "Salesmanago", 1953 "Gd0bshOBs" => "SalesViewer", 1954 "1dBEu_-G9" => "Samba TV", 1955 "ysjzW_WYo" => "Samba TV UK", 1956 "fz4U3rgPW" => "Samedi", 1957 "iVSrfIuRjlKTE8" => "Samsung Pay", 1958 "t0mg4QEts" => "Sanoma", 1959 "BJUKgqNoOiZm" => "Sanoma Media Finland", 1960 "JKFeC1o3L" => "SAP Commerce Cloud", 1961 "zbnIgVJ7L" => "SAP Customer Data Cloud", 1962 "nhuKp2VDxEIrfq" => "SAP Intelligent Selling Services", 1963 "FonOilDmI" => "SAP SuccessFactors", 1964 "wj4bKa72Og-Ao9" => "Sardine.ai Device Intelligence", 1965 "ixbmcJR2z" => "ScaleMonk", 1966 "JaB_qsJk0" => "Scanblue", 1967 "SkhG5EiOjZ7" => "Scarab Personalized Ads", 1968 "_PDFz0c6-" => "Scarab Research", 1969 "NsaxqX_hah-qfW" => "Scayle", 1970 "S11eg9EjdjW7" => "Scene Stealer", 1971 "Qj4tFgzD1" => "Schedule Demo Form", 1972 "HSmRlcKuL" => "Schibsted", 1973 "dDpujlqia" => "Schibsted Product and Tech UK", 1974 "SyX95Eodi-Q" => "Scorecard Research", 1975 "l4w2eXcvO" => "ScreenOnDemand", 1976 "DHS2sEi4b" => "Search Ads 360", 1977 "--kY7PHHl" => "SearchHub", 1978 "ByZk-qVj_sZX" => "Seeding Alliance", 1979 "Hkq7eqEj_ibm" => "Seedtag Advertising", 1980 "JMsFnFMX2" => "Seenthis", 1981 "O97xcRJFR" => "Segment", 1982 "ByKyW9Ni_sZX" => "Segment.io", 1983 "p6WMXrd8O" => "Segmentify", 1984 "Brj0m8FfV" => "Selit Produktfinder", 1985 "0rhoGZi2z" => "Selligent", 1986 "Syu8e5Nouj-7" => "Sellpoints", 1987 "rJNLgqEidib7" => "Semasio", 1988 "ASSQFNQYB" => "semknox", 1989 "Y7U73xDqH" => "Sendbird", 1990 "JH-hXkWhk" => "SendGrid", 1991 "oozO4Himv" => "Sendinblue", 1992 "6moU2ZMVJ" => "Sendpulse", 1993 "2lK0qen63VUUjL" => "Sensors Data", 1994 "rH1vNPCFR" => "Sentry", 1995 "IBUUElGXQ" => "Service-Chat NRW", 1996 "rcL95kb3d" => "Seznam", 1997 "RHq8V_JEP" => "Sezzle", 79 1998 "B1639EiOs-7" => "ShareThis", 1999 "B13glqEsOiZm" => "Sharethrough", 2000 "alWL-1Ah-" => "Shariff Wrapper", 2001 "ZO_66uRS7D-wV4" => "Sherpa", 2002 "1O5D3XaL" => "Shipcloud", 2003 "BWv175brAL0uSK" => "ShoeAI", 2004 "jkCDUWD-U55JT3" => "Shop Pay", 2005 "7biaTe2Aq" => "Shopalyst", 2006 "QWdMfFJSrw85P7" => "Shopauskunft", 2007 "BMs9IG0jx" => "Shopgate", 2008 "r19SxcEs_o-X" => "Shopify", 2009 "ZQOx-TM97Y3rLe" => "Shopify Analytics", 2010 "1xNAouVLz" => "Shopify CDN", 2011 "zixK7I8y1mhf1D" => "Shopify Marketing", 2012 "T4PQQdTkrEofhd" => "Shopify Preferences", 2013 "HqbXMnOcUaTVOQ" => "Shopify Product Reviews", 2014 "_GO5yfszm" => "Shopify Storefront", 2015 "BNMuzQjTe" => "Shopify Tracking", 2016 "H1yt9Vsdib7" => "shopping24", 2017 "oEKsiywjW" => "Shopstyle", 2018 "9CfO0Zlo" => "ShopSync", 2019 "JYW8pOMD" => "ShopVote", 2020 "bt_SD1xU" => "Shopware", 2021 "xXFRJRUUvCnYD3" => "Shopware Analytics", 80 2022 "W0apH00t" => "Shore", 81 "wkt-Vgmf7" => "Site Analytics - Duda", 82 "8u-otMeLg" => "Site Personalization - Duda", 2023 "SyZQgcEiujZ7" => "ShowHeroes", 2024 "r1k9NOn5N" => "showheroes-microConversion", 2025 "v5RU0B301" => "Sift", 2026 "S1_4g54odoWQ" => "Sift Media", 2027 "ryHRg5NoOibm" => "Signal Digital", 2028 "Ub2GaUXtOJAkTV" => "SignalFx", 2029 "m0XTF89HN" => "Signals", 2030 "hStXBwHBZ" => "Simplecast", 2031 "B1Zxe5EoOjbm" => "Simplifi Holdings", 2032 "AnXv7C3G8yFHKP" => "SimplyBook.me", 2033 "6pgVDH6Gec8UIb" => "Sinch", 2034 "r928ZrE_0" => "Singlespot", 2035 "PLYgpdqL7" => "SingleView", 2036 "OxsYgtMfe7aP8u" => "Singular", 2037 "uHT_iM2Pw" => "Sipgate", 2038 "H1BxlqNs_i-7" => "Sirdata", 2039 "wkt-Vgmf7" => "Site Analytics", 2040 "8u-otMeLg" => "Site Personalization", 2041 "WQaLkh_S7vX97i" => "Site Search", 2042 "jB0PK7c11" => "Site Search 360", 2043 "ryTAjE_nN" => "Sitecore", 2044 "xzhTGdLgLBITjQ" => "Sitefinity Insight", 2045 "HyCsIAwJV" => "Siteimprove", 2046 "NT4pjQB3M" => "SiteSpect", 2047 "0BpGJbtEU" => "SITU8ED", 2048 "hUecQKeCcR8d65" => "Sizekick", 2049 "SJH25No_oWX" => "Sizmek", 2050 "hxGpiJBe-" => "SK Media Group", 2051 "SAKiVpSK7USpIP" => "Skeepers", 2052 "S1rWg5VsOsWQ" => "Skimbit", 2053 "AO6etk8c-" => "Skirentalresorts", 2054 "H1w654suoWX" => "Sklik", 2055 "S1d6cEiuibQ" => "Sklik Conversion", 2056 "HkK69Nsuibm" => "Sklik remarketing", 2057 "4ZVaI4eEq5PV8z" => "Skyflag", 2058 "xmU9xun5Osd5Lt" => "Skyscanner", 2059 "goExmiSU_" => "Sleeknote", 83 2060 "jhJqRRPUe" => "Slideshare", 84 "lr0gmwVMY" => "Smart-rechner", 2061 "pyS8WWsy3" => "Slido", 2062 "B1Ifgq4odsZQ" => "SlimCut Media", 2063 "PE9Ed3gets41WV" => "SlimStat Analytics", 2064 "Byt-l54i_i-Q" => "Smaato", 2065 "ByScgqVj_iZX" => "Smadex", 2066 "HJLZqNi_iZQ" => "SMART AdServer", 2067 "wMMcvc9VH" => "Smart Traffik", 2068 "lr0gmwVMY" => "smart-rechner", 2069 "14G4bs7jk" => "Smartclip Hispania SL", 2070 "S1VvgcVoOs-7" => "Smartclip Holding", 2071 "r1kS7uh5N" => "smartclip-microConversion", 2072 "rkFWLTB9E" => "Smartlook", 2073 "7EtqIjUsfcjX5g" => "Smartnews Ads", 2074 "r1J_e5Vo_o-7" => "Smartology", 2075 "HkTU364VQ" => "smartphoto", 2076 "SJuil9EsdsZQ" => "SMARTSTREAM", 2077 "Skljd5VoN" => "Smartsupp Chat", 2078 "wd4FBU7FF" => "SmartTag", 2079 "36ieROIp0" => "SmartyAds", 2080 "PN62OUjSL" => "Smash Balloon", 2081 "9xlKwSEzW5L8cD" => "Smile Points & Rewards", 2082 "SJ8J-94sdob7" => "Smind", 2083 "XQxLeJYgJGhitg" => "Smoobu", 2084 "Aytn62TR" => "Snap Pixel", 2085 "QcD9GVNXZ" => "Snapchat", 2086 "s2NmgIZR" => "Snapchat Advertising", 2087 "QyQDBoUQg" => "Snapchat Advertising| BR", 2088 "Vgv6UrFab" => "Snapchat Advertising| AR", 2089 "-Ue0ZFXop" => "Snapchat Advertising| AU", 2090 "xWnKQt3oW" => "Snapchat Advertising| CO", 2091 "jq1wQFwhg" => "Snapchat Advertising| NZ", 2092 "vOuHc-NPG" => "Snapchat Advertising| RU", 2093 "xY7o0b9w1" => "Snapchat Advertising| TH", 2094 "L2RgYWdWK" => "Snapchat Advertising| TR", 2095 "TtCGGQDIR" => "Snapchat Advertising| TW", 2096 "oqcTvme_4" => "Snapchat Advertising| ZY", 2097 "MMH99u1RZD85L6" => "SnapEngage", 2098 "ryo7lcEoOsW7" => "Snapsort", 85 2099 "t-J9SUrOD" => "Snatchbot", 86 "HyP_q4sdobm" => "SoundCloud", 2100 "rk9hqEjujWm" => "Snazzy Maps", 2101 "HJhd5Vodj-m" => "SnowPlow", 2102 "4RDUc6rQCXeg2G" => "SociableKIT", 2103 "FFHGOeImK6mYmb" => "Social Intents", 2104 "7YQmKOWTZC3qFU" => "Social Media Icons by Powr", 2105 "OuPgkQpTxx3WnQ" => "Social Media Stream", 2106 "or3Fv0pUyCrNOq" => "Social Stream by Powr", 2107 "C9j3siwSa" => "Social9", 2108 "r1KU9EjOs-m" => "Sociomantic", 2109 "dr7NVhfO" => "Sofortüberweisung", 2110 "IVJaVuGhO" => "Softgarden", 2111 "S14iecEjus-m" => "Sojern", 2112 "qMiAvmQaRvZEvW" => "SolarWinds", 2113 "nxPvymx_wmYVW9" => "Solute", 2114 "J9Kke_pd" => "SOMA 2", 2115 "Gm3wofk4X" => "SoMo Audience", 2116 "Nqlc4OkV_1wCbn" => "Songkick", 2117 "Sy6ug5Ei_sWQ" => "Sonobi", 2118 "HyP_q4sdobm" => "Soundcloud", 2119 "CkAdOlUti" => "Sourcepoint Technologies", 87 2120 "Di_NMaFOX" => "Sovendus", 2121 "SwfsIIp0w" => "Sovido", 2122 "r1VJl9Eodj-X" => "Sovrn Holdings", 2123 "t7HmZssR_" => "Spectrio", 2124 "jmMFHnB6mrfk-e" => "Speed Kit", 2125 "Sy7BxqEo_oZQ" => "SpeedCurve", 88 2126 "1dU2WuKlq" => "Splicky", 2127 "BJyte9Eodsb7" => "Spolecznosci", 2128 "S1UO94s_j-m" => "Spoods", 2129 "bpghsHfYq" => "Sportradar", 2130 "6GGTzqxmW" => "sporttotal.tv", 2131 "Syk9xqEjOjb7" => "Spot", 2132 "r1Fdg5VidoZm" => "Spotad", 2133 "rkTwqfqG4" => "Spoteffects", 89 2134 "CguMb4Rq" => "Spotify", 2135 "5UjJeo5b76bLbG" => "Spotify Pixel", 2136 "ByLolcNs_i-m" => "SpotX", 2137 "4wrpWvmJG" => "Spreaker", 2138 "ib1Ev0zRq" => "Sprig", 2139 "5B-RNJj74" => "Springserve", 2140 "Hxzjma-sr4cVM2" => "Sprinklr", 2141 "DKf7fKfS3" => "Squarelovin", 2142 "D899zyhv" => "Squarespace", 2143 "HJ5nxcEiOjZm" => "StackAdapt", 2144 "1YtjwdeNS" => "StackPath LLC", 2145 "b67YnSAu9CLgAu" => "Stape", 2146 "ubNMO2xR0" => "Start.io", 2147 "4_kDVB0G_" => "StartApp", 2148 "lZ1Yj0x9eu-o4J" => "Stationista", 2149 "dp5ilPzrh" => "Statscore", 2150 "MEwyBx0CP" => "Statsperform", 2151 "MXdXD1aLX" => "Statuspage", 2152 "Byn9eqVouiW7" => "Steel House", 2153 "DJKdYm2OT" => "StepStone", 2154 "qZABWrf6" => "Stetic", 2155 "t6wsB2fC_2sSOU" => "Störung24", 2156 "lh6FOG7pr" => "Störungsauskunft", 2157 "BkW7DxlpN" => "Storyblok", 2158 "DZgkFbk_nmmNES" => "Storylane", 2159 "pkhfgyEdb" => "StoryStream", 2160 "Msopw0_StEf_bD" => "Strandbutler", 2161 "H1qBqEsuoW7" => "STRATO", 2162 "Pl56GO5A4GZxRO" => "StreamElements", 2163 "ry3w9Vo_oZ7" => "Stripe", 2164 "rkl-G_39E" => "stroeer-microConversion", 2165 "BylXlqNjOiWX" => "Stroer", 2166 "ZTcsIow_F" => "Ströer", 2167 "fRgMuO9BL" => "Ströer Mobile Performance", 2168 "kso842_9e" => "Styla", 2169 "By62WruhN" => "Stylight", 2170 "v09zSZYpp" => "Sub2 Technologies", 2171 "KxVYGUG4yKjEsH" => "Subi", 2172 "SkKNl9Vi_iZQ" => "Sublime Skinz", 2173 "BI4Y-f3Wv" => "SunMedia", 2174 "4NlDVAKQn" => "Sunnysales", 2175 "bUoWvj7_8drtjq" => "Supademo", 2176 "vSIINyq1z" => "Superchat", 2177 "xLgL2b0bmU-RT_" => "Supersonic", 2178 "GAM9YGKr" => "SurveyMonkey", 2179 "8aGfNIzjr" => "Swiftype", 2180 "Dr1UU3xeZEx72S" => "Swrve", 2181 "4hxLtM08VF9C2l" => "symplr", 2182 "XVMS7DXMIqBGYS" => "Syndigo", 2183 "gWbBsn1RYwH_lx" => "Synerise", 2184 "lQ5e6dfAz" => "T-Mobile", 2185 "v9tJSJ08Y" => "Tableau", 2186 "SkyTg5Ns_i-X" => "TabMo", 90 2187 "HkMucNoOjWX" => "Taboola", 2188 "Sy1zg5Vs_sW7" => "Taboola Europe", 2189 "FhDiEVqHC" => "TAC Webshop Essenzielle Cookies", 2190 "hIeVmYL9N" => "TAC Webshop Funktionelle Cookies", 2191 "5ZrVbTw7b" => "TACTIC Real-Time Marketing", 2192 "_tshR74x" => "Tagboard", 2193 "ryi2qNjOsbX" => "TagCommander Reporting", 91 2194 "RyDAUe7cq" => "Taggbox", 92 "T7-yEXGyq" => "Thinglink", 2195 "kyVR8HsYW" => "Taggstar", 2196 "qy3H-XjIfbtJWD" => "Talkable", 2197 "6Xqz7ZnXC" => "tanke-günstig", 2198 "S1N-x54o_oW7" => "Tapad", 2199 "C_KUwwiYRfbe-i" => "Tapfiliate", 2200 "B1DLe54jui-X" => "Tapjoy", 2201 "z4TbaRIIC0brTu" => "Tapjoy offerwall", 2202 "RJCAlbdBc" => "Tappx", 2203 "MCIll-bt4PqHy6" => "TapResearch", 2204 "Xr7yRmfanhOWQE" => "Tapstream", 2205 "V4chy2PIoJJZjy" => "TapTap Developer Services", 2206 "rCxd-Bnaa" => "TapTap Networks", 2207 "EJYIUb6BF" => "Target 2 Sell", 2208 "v6tSxbOVH" => "Target Circle", 2209 "HkPv9Es_jbQ" => "targeting360", 2210 "B1tP9Nodo-m" => "TargetPerformance", 2211 "1UQKjRoGT" => "Targetspot", 2212 "6Dv6h2w5n" => "Targetspot Belgium", 2213 "BJJ854o_j-Q" => "tawk.to", 2214 "HkVMl54s_o-Q" => "Teads", 2215 "Wl1S8uKS-" => "Teads (Advertiser)", 2216 "B1Pb9NoOiZQ" => "Tealium AudienceStream", 2217 "s8nQgU9A5" => "Tealium Inc", 2218 "p4WgtHjOT" => "Tealium iQ Tag Management", 2219 "QqzXCO9VP" => "Tealium| AR", 2220 "BfqgBI84c" => "Tealium| AU", 2221 "j1SGOMDqk" => "Tealium| BR", 2222 "2IQwco7dT" => "Tealium| NZ", 2223 "cm5VE-yQ0" => "Tealium| RU", 2224 "X6JJe1FkL" => "Tealium| TR", 2225 "rcYm1yzZK" => "Tealium| ZY", 2226 "4-jVGw3EB" => "Teamleader", 2227 "B8yveZ4au" => "Teburio", 2228 "P3VIjrbk4" => "techstage", 2229 "aMyJcSkV4" => "tectumedia", 2230 "3q2DGFRrLVqdep" => "TeeGschwendner Digital Assistant", 2231 "rJX7gcNouibQ" => "Teemo", 2232 "SJF6l9NjuibQ" => "Telaria", 2233 "ea-xVf3MC" => "Telecash IPG", 2234 "6GtvRE0ff" => "Telecoming", 2235 "2wlDEfon" => "Tellja", 2236 "r1q8cEiOjZQ" => "Teltarif", 2237 "tMLzMavbHZoxW0" => "Tencent", 2238 "koA9N7uWiA_hub" => "Tencent Cloud", 2239 "XIQgHfhvd" => "Tenjin SDK", 2240 "BJ6Sx5Ej_sbQ" => "Teroa", 2241 "tdEZhT6cG" => "test", 2242 "0c3vKE023" => "Test Inc.", 2243 "2n8RK-smZ" => "Test Lang", 2244 "sL4-Ck-Sx" => "test Vinzent", 2245 "SJJZ5Eo_sWm" => "The Adex", 2246 "_9it-YkNL" => "The Fork", 2247 "f4a6F1Hm" => "The Hotels Network", 2248 "r1BTxcEiuibQ" => "The Kantar Group", 2249 "8FyAz-7bl" => "The MediaGrid", 2250 "Ewa5m2ssH" => "The Ozone Project", 2251 "C2Evy60pW" => "The Ozone Project Limited", 2252 "rBPQDekS" => "The Performance Network Group", 2253 "H1oylqNodiWm" => "The Rubicon Project", 2254 "OzDyoQHcv7fkNe" => "The UK Trade Desk", 2255 "B1SI9Nsus-Q" => "TheReachGroup", 2256 "YwzRJ2YSSul9Pu" => "THG-Quote", 2257 "T7-yEXGyq" => "ThingLink", 2258 "4r6R0KGQr" => "Thinkific", 2259 "Byp4x94jdj-7" => "Thirdpresence", 2260 "0heqn2Evr" => "Tickaroo", 2261 "oLePnlfdKezncd" => "TicketPilot App", 2262 "37aIQwT9" => "Tidio", 93 2263 "Z0TcXjY0P" => "TikTok", 94 "1rXAPWvo" => "TwentyThree", 2264 "lIWYtXOZYJmqeh" => "TikTok Advanced Matching", 2265 "6-qobRfu" => "TikTok Advertising", 2266 "UUHnYR2KjbsJxD" => "TikTok Customer Files Audiences", 2267 "S1-9eq4s_i-X" => "TimeOne", 2268 "eK1KmD4tp-3_ql" => "TimeOne Cashback", 2269 "cqQ73nkHZ" => "Timify", 2270 "r1FBgcNsOjbX" => "tisoomi", 2271 "KAkHLuaii" => "tisoomi", 2272 "eONR_nohcxjqOm" => "TiXel: TikTok Pixel Installer", 2273 "VmTZ3pQFm" => "TNS", 2274 "goefqkpwt-EBoc" => "Tockify", 2275 "ZRwzjOHVTeOdzL" => "Toornament", 2276 "4RtuUue1OFVsLb" => "TopOn Mediation", 2277 "w2Oa_gut0" => "Totaljobs Group", 2278 "HJsTqEjdi-m" => "Tracdelight", 2279 "UvrL7X7P" => "Tracdelight", 2280 "2LMFkTl43ochrm" => "TraceParts", 2281 "LE7HJ4PSr5f_xP" => "Tracify", 2282 "qmRBk_tGyVYkSw" => "Trackingplan", 2283 "1jX4G1uhc" => "TrackJS", 2284 "xIWtwj3zQ" => "Trade Tracker", 2285 "H1QMcEsusbm" => "TradeDesk", 2286 "5LFVxHGKz" => "TradeDoubler", 2287 "K89uca-E" => "TraDeers", 2288 "S1tJeq4idibQ" => "Tradelab", 2289 "3V4pWi5-v9IUlA" => "TradingView", 2290 "Zg-G0ubDKrhaGl" => "TrafficGuard", 2291 "M86L0YB5Y" => "Transparent Ad Marketplace", 2292 "X97yqPV4_" => "TransUnion Pixel", 2293 "45yNDW9XQ" => "travel audience", 2294 "xO_ngqGtE" => "Travel Data Collective", 2295 "ryxCCtrEX" => "trbo", 2296 "SJMM5Niuibm" => "trbo (only Banner)", 2297 "ByWM9EidoW7" => "trbo (with Profiling)", 2298 "BJLVe9Vs_o-7" => "TreSensa", 2299 "2CGv-fVCb" => "Triapodi", 2300 "GZ2ECdXMt" => "Triboo Data Analytics", 2301 "5oVj_u8vk" => "Trifelsland", 2302 "fo8JRhlLx" => "Tripadvisor", 2303 "rJB0qNiuiWX" => "TripleLift", 2304 "f2Xhlu1kwL6wud" => "Triptease Meta", 2305 "SJe9ecEjOoZm" => "Triton Digital Canada", 2306 "VCNvYtxn" => "Trivago", 2307 "LXEK37SBs11A6L" => "TruConversion", 2308 "BDi0AjrMZ" => "TrueData", 2309 "jxwVTpxsC" => "Trustami", 2310 "HJrGqEs_i-Q" => "Trusted Shops", 2311 "euTxF4hQ" => "Trusted Shops Trustbadge", 2312 "ukD8BZWBj3LFOY" => "Trustindex", 2313 "qEs4t49Rg" => "Trustpilot", 2314 "6jYKEgwhU" => "TrustYou", 2315 "I9i1N9PI" => "Tumblr", 2316 "JJeggfnFB" => "Tunnl", 2317 "ckK7ZKfRComWrB" => "TV Scientific", 2318 "1G1_Btll" => "TVSquared", 2319 "ckfz7Oq4V" => "TVTY", 2320 "1rXAPWvo" => "Twentythree", 2321 "lXv9W6DaC" => "twiago", 2322 "Iq25S_pX--J_hW" => "Twik Analytics", 2323 "hEGw72h9Kfd6Id" => "TWIPLA", 95 2324 "FPZz1xJI" => "Twitch", 2325 "Skj79NodobQ" => "Twitter Advertising", 2326 "S1hmcVouiZm" => "Twitter Analytics", 2327 "S1tqOzjaX" => "Twitter Button", 2328 "W-HOHMTVq" => "Twitter Conversion Tracking", 2329 "2PLSJfB9b" => "Twitter Embed", 2330 "l6zPfvPkjsPnAz" => "Twitter Feed by Powr", 96 2331 "BJTzqNi_i-m" => "Twitter Plugin", 2332 "HLap0udLC" => "Twitter Syndication", 2333 "tFz4Cw7VT" => "Type Network", 97 2334 "r1PkZcEs_iWQ" => "Typeform", 2335 "RjoygBzf" => "TYPO3", 2336 "1ZHq-qRzK" => "Typotheque", 2337 "aorF_ElSL" => "uberall", 2338 "nA2KQ61iE" => "UberMedia", 2339 "aKntdawA_" => "UberMedia, Inc.", 2340 "nTcBEybQf" => "Ucfunnel", 2341 "Qs12mrYFcBzmvb" => "Umami", 2342 "gT1Q1VFEmY8Et7" => "Umlaut", 2343 "G47k4Ne9E" => "Unbounce", 2344 "BkFXx5Vj_jWX" => "Underdog Media", 2345 "iW3MGmyfUxZ7HF" => "Unibuddy", 2346 "mHoPzPj5" => "UNiDAYS", 2347 "MlmXX71g2" => "United Internet Media", 2348 "hpb62D82I" => "Unity Ads", 2349 "RXkipVe3xznWMq" => "Unity Analytics", 2350 "u5OQ-l0wp" => "Unity Engine", 2351 "tQGcwFWxSytrne" => "Unleash", 2352 "K6r10fdN3" => "unpkg", 2353 "tVPe8YXLM" => "Unruly", 2354 "B1Cul54oOsWQ" => "Unruly Group", 2355 "ZEWPQ-W1toVviz" => "Unsplash", 2356 "Ql2nuxpSW" => "unzer", 2357 "53V4PdUMx" => "uppr", 2358 "R7khlI4W_" => "UpPromote", 2359 "8rY_il3xD" => "Uprival", 2360 "1YFXOzPGu" => "Upscope", 2361 "4JA3zqWR" => "UpScore", 2362 "3YMnUfi7b" => "Uptain", 2363 "33R-IpmHz" => "Uptain", 2364 "tLc9QWcWb" => "uptain", 2365 "Kg8CQlqnM" => "Uptain", 2366 "ATdSW9eQ" => "Uptime.com", 2367 "ZnwVCTXb7" => "Urban Media", 2368 "ByvxcNj_jWm" => "Usabilla", 2369 "bysopElpKKOau0" => "Useberry", 2370 "SkL3gqEiujbX" => "usemax advertisement", 2371 "Hk8e94jOjWX" => "Usercentrics", 2372 "Hk9SicTN7" => "Usercentrics Consent Management Platform", 2373 "SkfHqqa4Q" => "Usercentrics Consent Management Platform", 2374 "H1Vl5NidjWX" => "Usercentrics Consent Management Platform", 2375 "oblP60NVHBW" => "Usercentrics Consent Management Platform + Bridge", 2376 "BlGhk0Zr76YlS3" => "Usercentrics for Wix", 2377 "_of52Ktc_4R8-e" => "Usercentrics Preference Manager", 2378 "IYwkrVwaVHh-we" => "Usercentrics Server-Side Tracking", 2379 "5wohJ1Vz9" => "Userlane", 2380 "So-uj5T0g" => "UserLeap", 2381 "xyKq_EfQf" => "Userlike", 2382 "GlnJWNMwY" => "Userpilot", 2383 "q6v0dSqJn" => "UserReport", 2384 "VNCe4TzBR" => "Usersnap", 2385 "p23Qzm_ifVHR0s" => "Userway", 2386 "deFBzsgiE" => "Userzoom", 2387 "1YUf8deyM" => "Userzoom| AU", 2388 "j6hcnPivn" => "Userzoom| BR", 2389 "pGck39PMA" => "Userzoom| CO", 2390 "pIGg_nv5V" => "Userzoom| NZ", 2391 "bthHXueSG" => "Userzoom| RU", 2392 "dHpqcqCrK" => "Userzoom| TH", 2393 "Sri8kf_aM" => "Userzoom| TR", 2394 "bZlvKs_IMR" => "Userzoom| ZY", 2395 "ZFZZSibrq9O4Tp" => "Utiq", 2396 "xCpJ_gp0s" => "Uxcam", 2397 "orppvjxZm" => "V LLC \"V Kontakte\"Kontakte", 2398 "DgK0ku83emM6Qz" => "Varify.io", 2399 "IVj4RQ5FGnW6rW" => "vchfy", 2400 "HLoyNqJcN" => "vcita", 2401 "B1UG5NoOoZQ" => "Ve interactive", 2402 "Qi8jadltE" => "Vectaury", 2403 "HyZ59NjOoZm" => "Veeseo", 2404 "mD3tyKxok" => "VELUX Dachfenster-Konfigurator", 2405 "B1_CqNoOoZ7" => "Venatus Media", 2406 "I1OcL3FNP" => "Vercel", 2407 "ryipsERQm" => "Verivox", 2408 "_B2wa6TgU" => "verizon media", 2409 "5bv4OvSwoXKh-G" => "Verve HyBid (PubNative)", 2410 "II_bo7LXx" => "VG Wort", 2411 "aLHtZ1nd2" => "Viafree", 2412 "NqJSRFYHn" => "Vibrant", 2413 "BybJx5Ej_sbQ" => "Vibrant Media", 2414 "-vsBRkUb-" => "Vidazoo", 2415 "H1XLx5NidjZX" => "Video intelligence", 2416 "MFWPBPuDV" => "Video Reach", 2417 "an461XYFW" => "Video-Stream-Hosting", 98 2418 "VtnVCeUzx" => "Videoask", 2419 "o3IOVN-EL" => "VideoForce", 2420 "rJOne94sOsZQ" => "Videology", 2421 "OKc8nSquCFOa9g" => "Videoly", 99 2422 "SDFUIfvK_" => "Videolyser", 2423 "1bOkjhWvT" => "Vidoomy", 100 2424 "KRDJ6FLgY" => "Vidyard", 2425 "4BYAmnO9m" => "ViewPay", 101 2426 "HyEX5Nidi-m" => "Vimeo", 102 "FtE1AC6zU" => "Walls.io", 103 "Ouzxu26Rv" => "Mapp Intelligence Full Feature Tracking", 104 "rerXlW9h2" => "Wetter", 2427 "H1DFlcEsdibQ" => "Viralize", 2428 "sdZuVwP32" => "Virtuelles Kraftwerk", 2429 "QYHT8hHQChD1q-" => "VIS.X", 2430 "rrRNlc3vT" => "Visable", 2431 "HyU0ecEoui-m" => "Visarity Technologies", 2432 "TYeEKVs18" => "Visiolink", 2433 "mv69J5pRC" => "Visitlead", 2434 "q0TXDmYmHH_JJg" => "Visitor Analytics", 2435 "zD9kWrMoLrklZS" => "Visual Studio App Center", 2436 "SJDM9Niuo-X" => "Visual Website Optimizer (VWO)", 2437 "Jn9c7Tfq0" => "Vivalu", 2438 "8smf-hSjP" => "Vivocha", 2439 "HyLs5Eo_o-X" => "Vivocha.com", 2440 "XLgahyVP4" => "VK", 2441 "kkM0HzB51" => "VKontakte", 2442 "SyzGit9AQ" => "Vlyby", 2443 "VhrUzGOecZCpsG" => "Vonage", 2444 "Og6R2HVi_" => "Vorabs", 2445 "LHXgL1cqAdwFmY" => "Voyado", 2446 "Y73tAnhSEmf5qf" => "VRS-Fahrplanauskunft", 2447 "smfJjwmyhQUnOG" => "VRS-Services", 2448 "ryXAe5Vidi-m" => "Vuble", 2449 "lLUj_XgKu" => "Vue Storefront", 2450 "jk3jF2tpw" => "Vungle", 2451 "rJWa8AwkN" => "Vuture", 2452 "tjhfqDKU7WDHGY" => "Vviinn", 2453 "JelIv_yAko16fL" => "Wallee", 2454 "FtE1AC6zU" => "walls.io", 2455 "iXbVZ7fa6r8maG" => "Wappier", 2456 "e29f8Vdyp4W57i" => "Warmly", 2457 "L8d0nv7aV0fQxV" => "WEB-STAT", 2458 "HLIDnkMQM" => "WebAds", 2459 "zPNaggrXq" => "WebClient Deskline", 2460 "E4wl_G9bA" => "Webedia", 2461 "BJ0H5NjOjWX" => "webflow", 2462 "-kU4dND5" => "Webgains", 2463 "AEyJyq5ye" => "Webinaris", 2464 "W3K_bLFj8" => "WebinarJam", 2465 "0k0AUcHfb" => "Webinterpret", 2466 "PLTUN6yyF" => "Weblication CMS", 2467 "W23lERozKtYsY3" => "Webmetic", 2468 "r1onecNi_o-m" => "WEBORAMA", 2469 "HkOM1990X" => "Webpack", 2470 "yzKKqTsr_" => "Website Analytics", 2471 "RnMemAEwY" => "Website Personalization", 2472 "OeCcKwIQw" => "Website-Check.de", 2473 "rJOZc4jOiWQ" => "Webtrekk", 2474 "rktWq4jdiZ7" => "Webtrekk Control Cookie", 2475 "Arsb_Ah3_" => "Webtrends", 2476 "6SMuld8jm" => "Webtype", 2477 "Eqhn6waf4" => "Webtype LLC", 2478 "jHX52v1GWN-mv1" => "WeChat", 2479 "73581zoQJ" => "Weglot", 2480 "Ni9WZOaz-" => "wein.cc Tracking Services", 2481 "15c60FWkdsHa_a" => "Welcome Bar by Hero Apps", 2482 "B1FhxcNs_jZX" => "Welect", 2483 "fxHSiaLhw" => "Wellness-Heaven", 2484 "UnsLGXKCAkzLRk" => "WellnessLiving", 2485 "2Oy_TIoZw6KE7B" => "Wer Kennt Den Besten", 2486 "hT9JFtMVtpwyoB" => "Wertgarantie", 2487 "2vCMNRtu_" => "Wesko Decor", 2488 "rerXlW9h2" => "wetter.com", 2489 "0Btb-gow1" => "Whatchado", 2490 "UqEPxPN80fKztp" => "WhatConverts", 2491 "8WG3bXn65" => "WhatRocks", 2492 "BJ1Q5NoOj-7" => "WhatsApp Share", 2493 "JznZhvhYd" => "Whenever Media", 2494 "pv0mpMZ1a" => "White Ops", 2495 "N3-I--tsKeuX8a" => "WhosOn", 2496 "Sydfec4suo-m" => "Widespace", 105 2497 "uJRRy9uiQ" => "Wigeogis", 2498 "3tUk2XsJ" => "WIHP", 2499 "NcaPcM6wxi6yty" => "Wildjar", 2500 "BJca3KUJE" => "Wipe", 2501 "1e020ptamFlYNx" => "Wirtualna Polska", 2502 "BysTm2K2V" => "WisePops", 106 2503 "SJ1aqNjOs-m" => "Wistia", 2504 "hJD19HAQd" => "WIX", 2505 "jJ7xSGep4HrYql" => "Wix Hotels", 2506 "GhhPJ0pkKqijxb" => "Wix Music", 2507 "H1jae94jOoZ7" => "Wizaly", 2508 "SbGWQWAkC" => "WooCommerce", 2509 "WiN426fmGX3NxG" => "Woopra", 2510 "SkaV9Eidjbm" => "Wordfence (WordPress Plugin)", 2511 "SygB9VsdobX" => "Wordpress Emoji", 2512 "y0Ayg3nf" => "WordPress Stats", 2513 "HytX5Voui-7" => "WordPress.com Stats", 2514 "ByjH5VouiZ7" => "WordPress.org", 2515 "GTUjO35prc0xaj" => "wowing", 2516 "nVm_-J1dTCWj_9" => "WP Rocket", 2517 "QXfH7DP2W" => "WP YouTube Lyte", 2518 "3KcwTMyqr" => "WP-Immomakler", 2519 "wV2laX_4P" => "WPML", 2520 "8RizN1mnI" => "Wufoo", 2521 "nkoosEfzR" => "wurfl.io", 2522 "W15mfImvRq7bmp" => "X advertising", 2523 "mf1x-DJT0A_XJE" => "X Plugin", 2524 "JXYrspYMA" => "X-mode Social", 2525 "78MDtp5w7phvUv" => "X2M", 2526 "CLUJ3MUWcXBYDk" => "X3M", 2527 "S0P0EnP81RqAX2" => "XAD spoteffects", 2528 "mNyhYVmpE" => "Xandr", 2529 "rkqVqNoOib7" => "Xaxis", 2530 "eR2DWcpGpkzmCc" => "Xing Ads", 2531 "dcAIXV5pe" => "Xing Events", 107 2532 "BJREqEiOiZQ" => "Xing Plugin", 2533 "r3RuKbcl_" => "XiTi", 2534 "S1g2cNjdi-m" => "xiti.com", 2535 "HJNhqEidiW7" => "XPlosion", 2536 "oghGv-_Yn" => "Xpose360", 2537 "HyLh5EsdiZQ" => "XQueue", 2538 "M6-1NWY_b" => "XTCsid", 2539 "xtJckP3kEUqMx_" => "Xtremepush", 2540 "HDgHqlS_c" => "Yahoo", 2541 "vVG5mOxie" => "Yahoo Ad Manager Plus", 2542 "MG6mo4hTJ" => "Yahoo Analytics", 2543 "HJSPc4ids-Q" => "Yahoo Gemini", 2544 "gUbemZYaQwqxss" => "Yahoo Japan Ads Search Ads", 2545 "7pEXodGkwM6LwJ" => "Yahoo Mobile Ads", 2546 "gHY2exdu" => "Yandex", 2547 "N3DoyeVrpJk9X3" => "Yandex Mobile Ads", 2548 "Fglp04Xrc" => "Yandex| AU", 2549 "a3-2F7fCP" => "Yandex| BR", 2550 "1RZFuLF8w" => "Yandex| CO", 2551 "z71b76KUP" => "Yandex| NZ", 2552 "Yph6TvdYO" => "Yandex| RU", 2553 "cnYnIVV75" => "Yandex| RU", 2554 "5BEOUpIJ1" => "Yandex| TR", 2555 "537m4QAx3" => "Yandex| ZY", 2556 "vAk2cSOol" => "YellowHammer Media Group", 2557 "DWFwsBMnR4XG-u" => "YellowMap", 108 2558 "5qKtc_BS" => "Yelp", 2559 "_dq05UfFA" => "Yext Analytics", 2560 "BCQ3njl_S" => "Yext Listings & Pages", 2561 "mIq9zoltz" => "YieldKit", 2562 "Hk5F5VsdoZ7" => "Yieldlab", 2563 "H1lyZq4s_i-Q" => "Yieldlove", 2564 "ryHNeqEsdjWX" => "Yieldmo", 2565 "426xkJRu_" => "Yieldr", 2566 "k5N5bLgoY" => "yntro", 2567 "cFuPZkrqz" => "YOC", 2568 "ZaV13iE2OA5yor" => "Yodo1", 2569 "dYr0Ee0Fs" => "Yormedia Solutions", 2570 "VmzO5ZUJA" => "Yotpo", 2571 "O3JScppCm" => "YouGov", 2572 "2uI5Zl7Qn" => "Youku", 2573 "EROmFc3DZXzv2k" => "Yousty", 2574 "pJiqJb5S" => "YOUTH ID", 2575 "r1ejcEi_jZ7" => "Youtube Cookies (ytimg)", 2576 "rPnCiKpia" => "YouTube Subscribe Button", 2577 "iVTAGV51C" => "YouTube Video", 109 2578 "BJz7qNsdj-7" => "YouTube Video", 110 "6LdBYXdAl" => "Yumpu", 2579 "6LdBYXdAl" => "yumpu", 2580 "9BBsmV62" => "yumpu.com", 2581 "HrufLEgkd" => "Zanox", 2582 "BJhj94o_iZ7" => "zanox.com", 2583 "ln6ss5Vvy" => "Zapier", 2584 "jGIQ1S51deZrW4" => "Zapnito", 2585 "invbogd4InL28O" => "ZBO Media", 2586 "H1Rwgc4juiZX" => "Zebestof", 2587 "rkL8e5No_iZX" => "Zemanta", 2588 "ryxNqNjOiW7" => "Zendesk", 2589 "54s8nFgf" => "Zendesk", 2590 "ZvGdwtkk1x3HFI" => "Zendesk Widget", 2591 "GhNn13gjt" => "Zenfulfillment", 2592 "kl7s_U3CC" => "zenloop", 2593 "ryA3xc4jOoWQ" => "zeotap", 2594 "9ok9Ki3RomUf6w" => "Zeppelin Source", 2595 "HklR5Ei_jbX" => "Zepto", 2596 "a2XkayMLT" => "Zeta Global", 2597 "2R7ed_s3_" => "Ziff Davis", 2598 "TgVifUWF" => "zoho", 2599 "pRCG-Aryd" => "Zoho Forms", 2600 "WHwIYgGJH" => "Zoho PageSense", 111 2601 "sKBym34ck" => "Zoho SalesIQ", 112 "qxiCD5aN_" => "3Q Video", 2602 "6gPvpOSkp" => "Zoom", 2603 "XL7559yNs" => "ZoomInfo", 2604 "J4VjROu2H" => "Zoovu", 2605 "r1haqNidjbm" => "Zoovu (formerly SmartAssistant)", 2606 "S1lrx54sdj-m" => "Zopim", 2607 "ArOvK3Q2" => "Zotabox", 2608 "-N_eXmLYAuwOe4" => "Zucks", 113 2609 ]; -
termageddon-usercentrics/trunk/includes/class-termageddon-usercentrics.php
r3366825 r3439658 146 146 'popular' => false, 147 147 ), 148 'delaware' => array( 149 'title' => __( 'Delaware (DPDPA)', 'termageddon-usercentrics' ), 150 'popular' => false, 151 ), 152 'indiana' => array( 153 'title' => __( 'Indiana (ICDPA)', 'termageddon-usercentrics' ), 154 'popular' => false, 155 ), 148 156 'oregon' => array( 149 157 'title' => __( 'Oregon (OCPA)', 'termageddon-usercentrics' ), … … 189 197 'utah' => 'Utah', 190 198 'virginia' => 'Virginia', 199 'delaware' => 'Delaware', 200 'indiana' => 'Indiana', 191 201 ); 192 202 … … 633 643 } 634 644 635 $embed_version = self::get_embed_script_version(); 636 $loader_url = ( 'v2' === $embed_version ) ? '//app.usercentrics.eu/browser-ui/latest/loader.js' : '//web.cmp.usercentrics.eu/ui/loader.js'; 637 $translations_url = self::get_translations_url(); 645 $embed_version = self::get_embed_script_version(); 646 $loader_url = ( 'v2' === $embed_version ) ? '//app.usercentrics.eu/browser-ui/latest/loader.js' : '//web.cmp.usercentrics.eu/ui/loader.js'; 647 $translations_url = self::get_translations_url(); 648 $use_manual_control = self::is_manual_script_control_enabled(); 638 649 639 650 $new_embed_code = '<link rel="preconnect" href="https://plugins.trac.wordpress.org//privacy-proxy.usercentrics.eu">' . PHP_EOL; 640 $new_embed_code .= '<link rel="preload" href="https://plugins.trac.wordpress.org//privacy-proxy.usercentrics.eu/latest/uc-block.bundle.js" as="script">' . PHP_EOL; 641 $new_embed_code .= '<script type="application/javascript" src="https://plugins.trac.wordpress.org//privacy-proxy.usercentrics.eu/latest/uc-block.bundle.js" data-no-optimize="1" data-no-defer="1"></script>' . PHP_EOL; 651 652 // Only include the auto-blocking script if manual control is disabled 653 if ( ! $use_manual_control ) { 654 $new_embed_code .= '<link rel="preload" href="https://plugins.trac.wordpress.org//privacy-proxy.usercentrics.eu/latest/uc-block.bundle.js" as="script">' . PHP_EOL; 655 $new_embed_code .= '<script type="application/javascript" src="https://plugins.trac.wordpress.org//privacy-proxy.usercentrics.eu/latest/uc-block.bundle.js" data-no-optimize="1" data-no-defer="1"></script>' . PHP_EOL; 656 } 657 642 658 $new_embed_code .= '<script id="usercentrics-cmp" data-cmp-version="' . esc_attr( self::get_embed_script_version() ) . '" src="' . esc_url( $loader_url ) . '" data-settings-id="' . self::get_settings_id() . '" data-no-optimize="1" data-no-defer="1" async></script>' . PHP_EOL; 643 659 $new_embed_code .= '<script data-no-optimize="1" data-no-defer="1">uc.setCustomTranslations(\'' . $translations_url . '\');</script>' . PHP_EOL; … … 1577 1593 } 1578 1594 1595 /** 1596 * Check if manual script control is enabled (disables auto-blocking) 1597 * 1598 * @return bool True if manual script control should be used, false otherwise 1599 */ 1600 public static function is_manual_script_control_enabled(): bool { 1601 return get_option( 'termageddon_usercentrics_manual_script_control', false ) ? true : false; 1602 } 1603 1604 /** 1605 * Get the script snippets from the database 1606 * 1607 * @return array Array of snippet objects, each containing 'script' and 'service_id' 1608 */ 1609 public static function get_script_snippets(): array { 1610 return get_option( 'termageddon_usercentrics_script_snippets', array() ); 1611 } 1612 1613 /** 1614 * Get the provider name by ID from the providers list 1615 * 1616 * @param string $service_id The provider ID to look up. 1617 * @return string The provider name, or empty string if not found. 1618 */ 1619 public static function get_provider_name_by_id( string $service_id ): string { 1620 // Use cached providers from admin class to avoid duplicate loading 1621 if ( ! class_exists( 'Termageddon_Usercentrics_Admin' ) ) { 1622 require_once TERMAGEDDON_COOKIE_PATH . 'admin/class-termageddon-usercentrics-admin.php'; 1623 } 1624 $providers = Termageddon_Usercentrics_Admin::get_usercentrics_providers(); 1625 return $providers[ $service_id ] ?? ''; 1626 } 1627 1628 /** 1629 * Augment script tags with Usercentrics blocking attributes 1630 * 1631 * Takes script HTML and augments all <script> tags with type="text/plain" 1632 * and data-usercentrics attributes for cookie consent blocking. 1633 * 1634 * @param string $script_html The raw script HTML to augment. 1635 * @param string $service_id The provider ID to look up the service name. 1636 * @return string The augmented script HTML, or original if service not found. 1637 */ 1638 public static function augment_script_for_usercentrics( string $script_html, string $service_id ): string { 1639 // Get service name from service_id 1640 $service_name = self::get_provider_name_by_id( $service_id ); 1641 if ( empty( $service_name ) ) { 1642 // Log warning if service not found 1643 if ( function_exists( 'error_log' ) ) { 1644 error_log( sprintf( 'Termageddon Usercentrics: Invalid service_id "%s" provided to augment_script_for_usercentrics', $service_id ) ); 1645 } 1646 return $script_html; // Return original if service not found 1647 } 1648 1649 // Pattern to match script tags (both with src and inline) 1650 $pattern = '/<script([^>]*)>([\s\S]*?)<\/script>/i'; 1651 1652 $augmented = preg_replace_callback( 1653 $pattern, 1654 function( $matches ) use ( $service_name ) { 1655 $attributes = trim( $matches[1] ); 1656 $content = $matches[2]; 1657 1658 // Replace or add type="text/plain" 1659 if ( preg_match( '/type\s*=\s*["\'][^"\']*["\']/i', $attributes ) ) { 1660 // Replace existing type attribute 1661 $attributes = preg_replace( 1662 '/type\s*=\s*["\'][^"\']*["\']/i', 1663 'type="text/plain"', 1664 $attributes 1665 ); 1666 } else { 1667 // Add type="text/plain" attribute 1668 $attributes = ( $attributes ? $attributes . ' ' : '' ) . 'type="text/plain"'; 1669 } 1670 1671 // Add or update data-usercentrics attribute 1672 $usercentrics_attr = 'data-usercentrics="' . esc_attr( $service_name ) . '"'; 1673 if ( preg_match( '/data-usercentrics\s*=\s*["\'][^"\']*["\']/i', $attributes ) ) { 1674 // Replace existing data-usercentrics 1675 $attributes = preg_replace( 1676 '/data-usercentrics\s*=\s*["\'][^"\']*["\']/i', 1677 $usercentrics_attr, 1678 $attributes 1679 ); 1680 } else { 1681 // Add data-usercentrics attribute 1682 $attributes .= ' ' . $usercentrics_attr; 1683 } 1684 1685 return '<script' . ( $attributes ? ' ' . $attributes : '' ) . '>' . $content . '</script>'; 1686 }, 1687 $script_html 1688 ); 1689 1690 $service_name_upper = strtoupper( $service_name ); 1691 return PHP_EOL . '<!-- ' . esc_html( $service_name_upper ) . ' SCRIPT -->' . PHP_EOL . ( $augmented ?? $script_html ) . PHP_EOL; 1692 } 1693 1579 1694 } -
termageddon-usercentrics/trunk/languages/termageddon-usercentrics.pot
r3362792 r3439658 4 4 "Project-Id-Version: Termageddon + Usercentrics\n" 5 5 "Report-Msgid-Bugs-To: \n" 6 "POT-Creation-Date: 202 5-09-16 00:31+0000\n"6 "POT-Creation-Date: 2026-01-13 22:13+0000\n" 7 7 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 8 8 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" … … 17 17 "X-Domain: termageddon-usercentrics" 18 18 19 #: admin/class-termageddon-usercentrics-admin.php:1216 19 #: admin/class-termageddon-usercentrics-admin.php:1793 20 msgid "+ Add Script Snippet" 21 msgstr "" 22 23 #: admin/class-termageddon-usercentrics-admin.php:1305 20 24 msgid "Action Needed" 21 25 msgstr "" 22 26 23 #: admin/class-termageddon-usercentrics-admin.php:4 4927 #: admin/class-termageddon-usercentrics-admin.php:473 24 28 msgid "Additional Scripts" 25 29 msgstr "" 26 30 27 #: admin/class-termageddon-usercentrics-admin.php: 48631 #: admin/class-termageddon-usercentrics-admin.php:556 28 32 msgid "Administrators" 29 33 msgstr "" 30 34 31 #: admin/class-termageddon-usercentrics-admin.php: 88935 #: admin/class-termageddon-usercentrics-admin.php:978 32 36 msgid "Advanced Configuration" 33 37 msgstr "" 34 38 35 39 #: admin/class-termageddon-usercentrics-admin.php:90 36 #: admin/class-termageddon-usercentrics-admin.php:2 2940 #: admin/class-termageddon-usercentrics-admin.php:234 37 41 msgid "Advanced Configuration & Troubleshooting" 38 42 msgstr "" 39 43 40 #: admin/class-termageddon-usercentrics-admin.php:2 3944 #: admin/class-termageddon-usercentrics-admin.php:244 41 45 msgid "Allowed HTML Tags" 42 46 msgstr "" 43 47 44 #: admin/class-termageddon-usercentrics-admin.php:1 42048 #: admin/class-termageddon-usercentrics-admin.php:1519 45 49 msgid "along with page 1 of your Privacy Policy questionnaire within " 46 50 msgstr "" 47 51 48 #: admin/class-termageddon-usercentrics-admin.php: 54352 #: admin/class-termageddon-usercentrics-admin.php:613 49 53 msgid "" 50 54 "As an alternative to that additional script, you can simply use the [uc-" … … 55 59 msgstr "" 56 60 57 #: admin/class-termageddon-usercentrics-admin.php:9 0061 #: admin/class-termageddon-usercentrics-admin.php:989 58 62 msgid "Auto-refresh on consent" 59 63 msgstr "" 60 64 61 #: admin/class-termageddon-usercentrics-admin.php:1 42765 #: admin/class-termageddon-usercentrics-admin.php:1526 62 66 msgid "based on which privacy laws apply to you" 63 67 msgstr "" 64 68 65 #: admin/class-termageddon-usercentrics-admin.php:1 22569 #: admin/class-termageddon-usercentrics-admin.php:1314 66 70 msgid "" 67 71 "Behind the scenes, we will remove the Usercentrics embed code from the field " … … 69 73 msgstr "" 70 74 75 #: admin/class-termageddon-usercentrics-admin.php:753 76 msgid "" 77 "By updating all external scripts to use the <a href=\"https://termageddon." 78 "freshdesk.com/support/solutions/articles/66000529802-embedding-the-cookie-" 79 "consent-solution-and-cookie-policy#:~:text=for%20simplicity%20purposes.-," 80 "Manual%20script%20control,-%2D%20You%20can%20also\" target=\"_blank\">manual " 81 "script controller</a>, you can disable usercentrics block script which will " 82 "improve site-loading performance and improve reliability. Once enabled, " 83 "please ensure you <a href=\"https://termageddon.freshdesk." 84 "com/support/solutions/articles/66000529802-embedding-the-cookie-consent-" 85 "solution-and-cookie-policy\" target=\"_blank\">validate</a> that any " 86 "external services are working as expected." 87 msgstr "" 88 71 89 #: includes/class-termageddon-usercentrics.php:137 72 90 msgid "California (CPRA, CIPA)" … … 77 95 msgstr "" 78 96 79 #: admin/class-termageddon-usercentrics-admin.php: 89097 #: admin/class-termageddon-usercentrics-admin.php:979 80 98 msgid "" 81 99 "Certain integrations may require a more custom approach to integrating with " … … 96 114 97 115 #. section ID. 98 #: admin/class-termageddon-usercentrics-admin.php: 972116 #: admin/class-termageddon-usercentrics-admin.php:1061 99 117 msgid "Control Panel" 100 118 msgstr "" 101 119 102 #: admin/class-termageddon-usercentrics-admin.php:1 222120 #: admin/class-termageddon-usercentrics-admin.php:1311 103 121 msgid "Conversion Needed:" 104 122 msgstr "" 105 123 106 #: admin/class-termageddon-usercentrics-admin.php:1 226124 #: admin/class-termageddon-usercentrics-admin.php:1315 107 125 msgid "Convert" 108 126 msgstr "" 109 127 110 #: admin/class-termageddon-usercentrics-admin.php:1 380128 #: admin/class-termageddon-usercentrics-admin.php:1479 111 129 msgid "Cookie Policy and Consent Solution" 112 130 msgstr "" 113 131 114 #: admin/class-termageddon-usercentrics-admin.php:23 1132 #: admin/class-termageddon-usercentrics-admin.php:236 115 133 msgid "Debug Information" 116 134 msgstr "" 117 135 118 #: admin/class-termageddon-usercentrics-admin.php:924 136 #: includes/class-termageddon-usercentrics.php:149 137 msgid "Delaware (DPDPA)" 138 msgstr "" 139 140 #: admin/class-termageddon-usercentrics-admin.php:1013 119 141 msgid "Disable blocking for providers" 120 142 msgstr "" 121 143 122 #: admin/class-termageddon-usercentrics-admin.php: 677144 #: admin/class-termageddon-usercentrics-admin.php:766 123 145 msgid "Disable CDN for Translations Script" 124 146 msgstr "" 125 147 126 #: admin/class-termageddon-usercentrics-admin.php: 696148 #: admin/class-termageddon-usercentrics-admin.php:785 127 149 msgid "Disable for Troubleshooting" 128 150 msgstr "" 129 151 130 #: includes/class-termageddon-usercentrics.php:1300 152 #: admin/class-termageddon-usercentrics-admin.php:747 153 msgid "Disable Usercentrics Auto-blocking script" 154 msgstr "" 155 156 #: includes/class-termageddon-usercentrics.php:1321 131 157 msgid "Divi Video" 132 158 msgstr "" … … 138 164 msgstr "" 139 165 140 #: admin/class-termageddon-usercentrics-admin.php:5 04166 #: admin/class-termageddon-usercentrics-admin.php:574 141 167 msgid "Editors" 142 168 msgstr "" 143 169 144 #: includes/class-termageddon-usercentrics.php:13 06170 #: includes/class-termageddon-usercentrics.php:1327 145 171 msgid "Elementor Video" 146 172 msgstr "" 147 173 148 #: admin/class-termageddon-usercentrics-admin.php:4 49174 #: admin/class-termageddon-usercentrics-admin.php:473 149 175 msgid "Embed Code (Legacy)" 150 176 msgstr "" 151 177 152 #: admin/class-termageddon-usercentrics-admin.php:6 21178 #: admin/class-termageddon-usercentrics-admin.php:691 153 179 msgid "Embed Code Injection Method" 154 180 msgstr "" 155 181 156 #: admin/class-termageddon-usercentrics-admin.php: 598182 #: admin/class-termageddon-usercentrics-admin.php:668 157 183 msgid "Embed Code Priority" 158 184 msgstr "" 159 185 160 #: admin/class-termageddon-usercentrics-admin.php: 649186 #: admin/class-termageddon-usercentrics-admin.php:719 161 187 msgid "Embed Code Version" 162 188 msgstr "" 163 189 164 #: admin/class-termageddon-usercentrics-admin.php: 799190 #: admin/class-termageddon-usercentrics-admin.php:888 165 191 msgid "Enable location logging" 166 192 msgstr "" 167 193 168 #: admin/class-termageddon-usercentrics-admin.php: 819194 #: admin/class-termageddon-usercentrics-admin.php:908 169 195 msgid "Enable page caching support via AJAX" 170 196 msgstr "" 171 197 172 #: admin/class-termageddon-usercentrics-admin.php:4 31198 #: admin/class-termageddon-usercentrics-admin.php:455 173 199 msgid "" 174 200 "Enter your Usercentrics Settings ID. This can be found on the \"View Embed " … … 176 202 msgstr "" 177 203 178 #: admin/class-termageddon-usercentrics-admin.php: 986204 #: admin/class-termageddon-usercentrics-admin.php:1075 179 205 msgid "Error Count" 180 206 msgstr "" 181 207 182 #: admin/class-termageddon-usercentrics-admin.php:24 3208 #: admin/class-termageddon-usercentrics-admin.php:248 183 209 msgid "Error Information" 184 210 msgstr "" 185 211 186 #: admin/class-termageddon-usercentrics-admin.php:10 04212 #: admin/class-termageddon-usercentrics-admin.php:1093 187 213 msgid "Error List" 188 214 msgstr "" … … 192 218 msgstr "" 193 219 194 #: includes/class-termageddon-usercentrics.php:3 11220 #: includes/class-termageddon-usercentrics.php:302 195 221 msgid "Every Month" 196 222 msgstr "" 197 223 198 #: admin/class-termageddon-usercentrics-admin.php: 576224 #: admin/class-termageddon-usercentrics-admin.php:646 199 225 msgid "" 200 226 "For some theme builders including Divi, the footer (bottom bar) does not " … … 206 232 #. section ID. 207 233 #: admin/class-termageddon-usercentrics-admin.php:82 208 #: admin/class-termageddon-usercentrics-admin.php: 724234 #: admin/class-termageddon-usercentrics-admin.php:813 209 235 msgid "Geo-Location" 210 236 msgstr "" 211 237 212 #: admin/class-termageddon-usercentrics-admin.php:19 0213 #: admin/class-termageddon-usercentrics-admin.php:1 429238 #: admin/class-termageddon-usercentrics-admin.php:195 239 #: admin/class-termageddon-usercentrics-admin.php:1528 214 240 msgid "" 215 241 "Geo-Location is enabled, but no locations have been toggled on. This means " … … 217 243 msgstr "" 218 244 219 #: admin/class-termageddon-usercentrics-admin.php:2 36245 #: admin/class-termageddon-usercentrics-admin.php:241 220 246 msgid "Geolocation Database Directory Writable" 221 247 msgstr "" 222 248 223 #: admin/class-termageddon-usercentrics-admin.php:23 4249 #: admin/class-termageddon-usercentrics-admin.php:239 224 250 msgid "Geolocation Database Exists" 225 251 msgstr "" 226 252 227 #: admin/class-termageddon-usercentrics-admin.php:2 37253 #: admin/class-termageddon-usercentrics-admin.php:242 228 254 msgid "Geolocation Database Last Updated" 229 255 msgstr "" 230 256 257 #: admin/class-termageddon-usercentrics-admin.php:243 258 msgid "Geolocation Database Next Update" 259 msgstr "" 260 231 261 #: admin/class-termageddon-usercentrics-admin.php:238 232 msgid "Geolocation Database Next Update"233 msgstr ""234 235 #: admin/class-termageddon-usercentrics-admin.php:233236 262 msgid "Geolocation Database Path" 237 263 msgstr "" 238 264 239 #: admin/class-termageddon-usercentrics-admin.php:2 35265 #: admin/class-termageddon-usercentrics-admin.php:240 240 266 msgid "Geolocation Database Readable" 241 267 msgstr "" 242 268 243 #: admin/class-termageddon-usercentrics-admin.php: 542269 #: admin/class-termageddon-usercentrics-admin.php:612 244 270 msgid "" 245 271 "Giving users the ability to change their privacy/consent settings is a " … … 251 277 msgstr "" 252 278 253 #: admin/class-termageddon-usercentrics-admin.php:1 218279 #: admin/class-termageddon-usercentrics-admin.php:1307 254 280 msgid "Go to Configuration" 255 281 msgstr "" 256 282 257 #: admin/class-termageddon-usercentrics-admin.php: 551283 #: admin/class-termageddon-usercentrics-admin.php:621 258 284 msgid "Hide Privacy Settings Link when cookie consent tool is disabled" 259 285 msgstr "" … … 263 289 msgstr "" 264 290 265 #: admin/class-termageddon-usercentrics-admin.php:1 398291 #: admin/class-termageddon-usercentrics-admin.php:1497 266 292 msgid "If you are using the Divi theme" 267 293 msgstr "" 268 294 269 #: admin/class-termageddon-usercentrics-admin.php: 856295 #: admin/class-termageddon-usercentrics-admin.php:945 270 296 msgid "" 271 297 "If you have a script or code snippet to share, would like to improve support " … … 274 300 msgstr "" 275 301 276 #: admin/class-termageddon-usercentrics-admin.php:1 397302 #: admin/class-termageddon-usercentrics-admin.php:1496 277 303 msgid "" 278 304 "If you would like to remove Usercentrics for logged in users such as admins, " … … 280 306 msgstr "" 281 307 282 #: admin/class-termageddon-usercentrics-admin.php:866 308 #: includes/class-termageddon-usercentrics.php:153 309 msgid "Indiana (ICDPA)" 310 msgstr "" 311 312 #: admin/class-termageddon-usercentrics-admin.php:955 283 313 msgid "Integration" 284 314 msgstr "" … … 286 316 #. section ID. 287 317 #: admin/class-termageddon-usercentrics-admin.php:78 288 #: admin/class-termageddon-usercentrics-admin.php: 845318 #: admin/class-termageddon-usercentrics-admin.php:934 289 319 msgid "Integrations" 290 320 msgstr "" 291 321 292 #: admin/class-termageddon-usercentrics-admin.php:209 322 #: admin/class-termageddon-usercentrics-admin.php:497 323 msgid "" 324 "into third party scripts (Google Analytics, Facebook Pixel, LinkedIn " 325 "Insights Tag, etc.), which can help ensure that consent is obtained first " 326 "prior to the script loading." 327 msgstr "" 328 329 #: admin/class-termageddon-usercentrics-admin.php:214 293 330 msgid "Invalid tab. Please check the link and try again." 294 331 msgstr "" 295 332 296 #: admin/class-termageddon-usercentrics-admin.php:1 224333 #: admin/class-termageddon-usercentrics-admin.php:1313 297 334 msgid "" 298 335 "It looks like you are still using the old embed code (below) instead of the " … … 301 338 msgstr "" 302 339 303 #: admin/class-termageddon-usercentrics-admin.php:198 340 #: admin/class-termageddon-usercentrics-admin.php:503 341 msgid "" 342 "just in general, but also after making this update to ensure that scripts do " 343 "not fire until consent is provided." 344 msgstr "" 345 346 #: admin/class-termageddon-usercentrics-admin.php:203 304 347 msgid "Location logging is enabled." 305 348 msgstr "" 306 349 307 #: admin/class-termageddon-usercentrics-admin.php:5 22350 #: admin/class-termageddon-usercentrics-admin.php:592 308 351 msgid "Logged-in Users" 309 352 msgstr "" 310 353 311 #: admin/class-termageddon-usercentrics-admin.php:1427 354 #: admin/class-termageddon-usercentrics-admin.php:496 355 msgid "manual control snippet" 356 msgstr "" 357 358 #: admin/class-termageddon-usercentrics-admin.php:493 359 msgid "Manual Script Controller" 360 msgstr "" 361 362 #: admin/class-termageddon-usercentrics-admin.php:1736 363 #: admin/class-termageddon-usercentrics-admin.php:1806 364 msgid "New Script Snippet" 365 msgstr "" 366 367 #: admin/class-termageddon-usercentrics-admin.php:1526 312 368 msgid "Not sure what to select?" 313 369 msgstr "" 314 370 315 #: admin/class-termageddon-usercentrics-admin.php:1 420371 #: admin/class-termageddon-usercentrics-admin.php:1519 316 372 msgid "Not sure what to select? Review" 317 373 msgstr "" 318 374 319 #: admin/class-termageddon-usercentrics-admin.php: 953375 #: admin/class-termageddon-usercentrics-admin.php:1042 320 376 msgid "" 321 377 "On this page, you can find custom implementation to improve support and " … … 323 379 msgstr "" 324 380 325 #: includes/class-termageddon-usercentrics.php:1 49381 #: includes/class-termageddon-usercentrics.php:157 326 382 msgid "Oregon (OCPA)" 327 383 msgstr "" 328 384 329 #: admin/class-termageddon-usercentrics-admin.php:6 04385 #: admin/class-termageddon-usercentrics-admin.php:674 330 386 msgid "" 331 387 "Override the default priority of the embed code (Defaults to 1). By " … … 336 392 msgstr "" 337 393 338 #: admin/class-termageddon-usercentrics-admin.php:19 1394 #: admin/class-termageddon-usercentrics-admin.php:196 339 395 msgid "" 340 396 "Please go to geo-location settings to enable at least one location or to " … … 342 398 msgstr "" 343 399 344 #: admin/class-termageddon-usercentrics-admin.php: 855400 #: admin/class-termageddon-usercentrics-admin.php:944 345 401 msgid "Plugin & Theme Integrations" 346 402 msgstr "" 347 403 348 #: includes/class-termageddon-usercentrics.php:13 12404 #: includes/class-termageddon-usercentrics.php:1333 349 405 msgid "PowerPack Video" 350 406 msgstr "" 351 407 352 #: includes/class-termageddon-usercentrics.php:13 18408 #: includes/class-termageddon-usercentrics.php:1339 353 409 msgid "Presto Player" 354 410 msgstr "" 355 411 356 #: admin/class-termageddon-usercentrics-admin.php: 570412 #: admin/class-termageddon-usercentrics-admin.php:640 357 413 msgid "Privacy Settings Link - Alternative Implementation" 358 414 msgstr "" 359 415 360 #: admin/class-termageddon-usercentrics-admin.php:655 416 #: admin/class-termageddon-usercentrics-admin.php:1752 417 #: admin/class-termageddon-usercentrics-admin.php:1811 418 msgid "Remove" 419 msgstr "" 420 421 #: admin/class-termageddon-usercentrics-admin.php:1776 422 #: admin/class-termageddon-usercentrics-admin.php:1830 423 msgid "Script Code" 424 msgstr "" 425 426 #. %d: snippet index number 427 #: admin/class-termageddon-usercentrics-admin.php:1590 428 msgid "Script snippet #%d was not saved: Please select a valid service." 429 msgstr "" 430 431 #. %1$s: service name, %2$d: snippet index number 432 #: admin/class-termageddon-usercentrics-admin.php:1623 433 #, php-format 434 msgid "" 435 "Script snippet for \"%1$s\" (#%2$d) was not saved: Only script tags are " 436 "allowed. Please remove any HTML elements (div, span, etc.) and use only <" 437 "script> tags." 438 msgstr "" 439 440 #. %1$s: service name, %2$d: snippet index number 441 #: admin/class-termageddon-usercentrics-admin.php:1607 442 #, php-format 443 msgid "" 444 "Script snippet for \"%1$s\" (#%2$d) was not saved: The script code field " 445 "cannot be empty." 446 msgstr "" 447 448 #. %1$s: service name, %2$d: snippet index number 449 #: admin/class-termageddon-usercentrics-admin.php:1630 450 #, php-format 451 msgid "" 452 "Script snippet for \"%1$s\" (#%2$d) was not saved: The script code must " 453 "contain at least one <script> tag." 454 msgstr "" 455 456 #: admin/class-termageddon-usercentrics-admin.php:1766 457 #: admin/class-termageddon-usercentrics-admin.php:1796 458 msgid "Select a service..." 459 msgstr "" 460 461 #: admin/class-termageddon-usercentrics-admin.php:725 361 462 msgid "" 362 463 "Select which version of the Usercentrics embed code you would like to use." 363 464 msgstr "" 364 465 466 #: admin/class-termageddon-usercentrics-admin.php:1758 467 #: admin/class-termageddon-usercentrics-admin.php:1817 468 msgid "Service" 469 msgstr "" 470 365 471 #. section ID. 366 #: includes/class-termageddon-usercentrics.php:5 21472 #: includes/class-termageddon-usercentrics.php:536 367 473 #: admin/class-termageddon-usercentrics-admin.php:86 368 #: admin/class-termageddon-usercentrics-admin.php: 477474 #: admin/class-termageddon-usercentrics-admin.php:547 369 475 msgid "Settings" 370 476 msgstr "" 371 477 372 #: admin/class-termageddon-usercentrics-admin.php:4 25478 #: admin/class-termageddon-usercentrics-admin.php:449 373 479 msgid "Settings ID" 374 480 msgstr "" 375 481 376 #: admin/class-termageddon-usercentrics-admin.php:1 426482 #: admin/class-termageddon-usercentrics-admin.php:1525 377 483 msgid "Show widget if visitor is located in" 484 msgstr "" 485 486 #: admin/class-termageddon-usercentrics-admin.php:499 487 msgid "" 488 "Simply add a new snippet, enter the Service name (same name as the Service " 489 "you listed in your Cookie Policy and Consent Tool questionnaire), and paste " 490 "your embed code into the provided field. The plugin will then set up manual " 491 "control of the script, helping ensure that it is blocked until consent is " 492 "obtained by the user." 378 493 msgstr "" 379 494 … … 383 498 msgstr "" 384 499 385 #: admin/class-termageddon-usercentrics-admin.php:20 3500 #: admin/class-termageddon-usercentrics-admin.php:208 386 501 msgid "Termageddon + Usercentrics" 387 502 msgstr "" 388 503 389 #: includes/class-termageddon-usercentrics.php:153 504 #: admin/class-termageddon-usercentrics-admin.php:502 505 msgid "test the consent solution" 506 msgstr "" 507 508 #: includes/class-termageddon-usercentrics.php:161 390 509 msgid "Texas (TDPSA)" 391 510 msgstr "" 392 511 393 #: admin/class-termageddon-usercentrics-admin.php:6 27512 #: admin/class-termageddon-usercentrics-admin.php:697 394 513 msgid "" 395 514 "The default injection option, wp_head, will inject the embed code in the " … … 399 518 msgstr "" 400 519 401 #: admin/class-termageddon-usercentrics-admin.php:1 420520 #: admin/class-termageddon-usercentrics-admin.php:1519 402 521 msgid "this article" 403 522 msgstr "" 404 523 405 #: admin/class-termageddon-usercentrics-admin.php:1 427524 #: admin/class-termageddon-usercentrics-admin.php:1526 406 525 msgid "This article outlines which regions to select" 407 526 msgstr "" 408 527 409 #: admin/class-termageddon-usercentrics-admin.php:229 528 #: admin/class-termageddon-usercentrics-admin.php:495 529 msgid "This feature helps add the" 530 msgstr "" 531 532 #: admin/class-termageddon-usercentrics-admin.php:234 410 533 msgid "" 411 534 "This panel is for advanced configuration and troubleshooting. Please contact " … … 413 536 msgstr "" 414 537 415 #: admin/class-termageddon-usercentrics-admin.php:9 06538 #: admin/class-termageddon-usercentrics-admin.php:995 416 539 msgid "" 417 540 "This particular feature is not needed for most websites. This feature is " … … 423 546 msgstr "" 424 547 425 #: includes/class-termageddon-usercentrics.php:13 01548 #: includes/class-termageddon-usercentrics.php:1322 426 549 msgid "" 427 550 "This resolves and improves the cookie-consent implementation when using an " … … 429 552 msgstr "" 430 553 431 #: includes/class-termageddon-usercentrics.php:13 07554 #: includes/class-termageddon-usercentrics.php:1328 432 555 msgid "" 433 556 "This resolves and improves the cookie-consent implementation when using an " … … 435 558 msgstr "" 436 559 437 #: includes/class-termageddon-usercentrics.php:13 13560 #: includes/class-termageddon-usercentrics.php:1334 438 561 msgid "" 439 562 "This resolves and improves the cookie-consent implementation when using an " … … 443 566 msgstr "" 444 567 445 #: includes/class-termageddon-usercentrics.php:13 19568 #: includes/class-termageddon-usercentrics.php:1340 446 569 msgid "" 447 570 "This resolves and improves the cookie-consent implementation when using an " … … 449 572 msgstr "" 450 573 451 #: includes/class-termageddon-usercentrics.php:13 25574 #: includes/class-termageddon-usercentrics.php:1346 452 575 msgid "" 453 576 "This resolves and improves the cookie-consent implementation when using an " … … 456 579 msgstr "" 457 580 458 #: admin/class-termageddon-usercentrics-admin.php:4 55581 #: admin/class-termageddon-usercentrics-admin.php:479 459 582 msgid "" 460 583 "This section can be used to add customizations to your Usercentrics embed " … … 463 586 msgstr "" 464 587 465 #: admin/class-termageddon-usercentrics-admin.php:4 55588 #: admin/class-termageddon-usercentrics-admin.php:479 466 589 msgid "" 467 590 "This section should no longer be used for the embed code from the " … … 470 593 msgstr "" 471 594 472 #: admin/class-termageddon-usercentrics-admin.php:1 217595 #: admin/class-termageddon-usercentrics-admin.php:1306 473 596 msgid "This update will take a few seconds to complete." 474 597 msgstr "" 475 598 476 #: admin/class-termageddon-usercentrics-admin.php: 683599 #: admin/class-termageddon-usercentrics-admin.php:772 477 600 msgid "" 478 601 "This will switch the URL used for the Usercentrics translations script from " … … 481 604 msgstr "" 482 605 483 #: admin/class-termageddon-usercentrics-admin.php:1 441606 #: admin/class-termageddon-usercentrics-admin.php:1540 484 607 msgid "" 485 608 "To reset any of the backend variables, update the values below and save your " … … 487 610 msgstr "" 488 611 489 #: includes/class-termageddon-usercentrics.php:13 24612 #: includes/class-termageddon-usercentrics.php:1345 490 613 msgid "Ultimate Addons for Beaver Builder Video" 491 614 msgstr "" … … 499 622 msgstr "" 500 623 501 #: admin/class-termageddon-usercentrics-admin.php:1 379624 #: admin/class-termageddon-usercentrics-admin.php:1478 502 625 msgid "Upon generating your " 503 626 msgstr "" 504 627 505 #: admin/class-termageddon-usercentrics-admin.php:1 366628 #: admin/class-termageddon-usercentrics-admin.php:1465 506 629 msgid "Upon saving, all previous errors in the log will be deleted." 507 630 msgstr "" 508 631 509 #: includes/class-termageddon-usercentrics.php:1 57632 #: includes/class-termageddon-usercentrics.php:165 510 633 msgid "Utah (UCPA)" 511 634 msgstr "" 512 635 513 #: admin/class-termageddon-usercentrics-admin.php: 657636 #: admin/class-termageddon-usercentrics-admin.php:727 514 637 msgid "v2" 515 638 msgstr "" 516 639 517 #: admin/class-termageddon-usercentrics-admin.php: 658640 #: admin/class-termageddon-usercentrics-admin.php:728 518 641 msgid "v3 (Beta)" 519 642 msgstr "" 520 643 521 #: includes/class-termageddon-usercentrics.php:161 644 #: admin/class-termageddon-usercentrics-admin.php:501 645 msgid "Very important: be sure to" 646 msgstr "" 647 648 #: includes/class-termageddon-usercentrics.php:169 522 649 msgid "Virginia (VCDPA)" 523 650 msgstr "" 524 651 525 #: admin/class-termageddon-usercentrics-admin.php: 930652 #: admin/class-termageddon-usercentrics-admin.php:1019 526 653 msgid "" 527 654 "WARNING: By adding providers to this list, you are choosing for Usercentrics " … … 530 657 msgstr "" 531 658 532 #: admin/class-termageddon-usercentrics-admin.php: 544659 #: admin/class-termageddon-usercentrics-admin.php:614 533 660 msgid "" 534 661 "We also offer a button version of the Privacy Settings link, which can be " … … 538 665 msgstr "" 539 666 540 #: admin/class-termageddon-usercentrics-admin.php:1 217667 #: admin/class-termageddon-usercentrics-admin.php:1306 541 668 msgid "" 542 669 "We are moving to using a Settings ID instead of an embed code format to " … … 544 671 msgstr "" 545 672 546 #: admin/class-termageddon-usercentrics-admin.php:18 3673 #: admin/class-termageddon-usercentrics-admin.php:188 547 674 msgid "" 548 675 "We were unable to download the database necessary for geolocation to your " … … 551 678 msgstr "" 552 679 553 #: admin/class-termageddon-usercentrics-admin.php: 557680 #: admin/class-termageddon-usercentrics-admin.php:627 554 681 msgid "" 555 682 "When enabled, the Privacy Settings link will be hidden from certain users, " … … 564 691 msgstr "" 565 692 566 #: admin/class-termageddon-usercentrics-admin.php:8 05693 #: admin/class-termageddon-usercentrics-admin.php:894 567 694 msgid "" 568 695 "When enabled, the visitor's location can be viewed in the browser console, " … … 570 697 msgstr "" 571 698 572 #: admin/class-termageddon-usercentrics-admin.php: 825699 #: admin/class-termageddon-usercentrics-admin.php:914 573 700 msgid "" 574 701 "When enabled, the visitor's location is checked via javascript to allow " … … 576 703 msgstr "" 577 704 578 #: admin/class-termageddon-usercentrics-admin.php:7 02705 #: admin/class-termageddon-usercentrics-admin.php:791 579 706 msgid "" 580 707 "When enabled, this feature allows you to turn off the consent tool for all " … … 585 712 msgstr "" 586 713 587 #: admin/class-termageddon-usercentrics-admin.php:1 416714 #: admin/class-termageddon-usercentrics-admin.php:1515 588 715 msgid "" 589 716 "When enabled, you will be collecting IP addresses for the purposes of " … … 597 724 msgstr "" 598 725 599 #: admin/class-termageddon-usercentrics-admin.php: 198726 #: admin/class-termageddon-usercentrics-admin.php:203 600 727 msgid "with the IP Address of" 601 728 msgstr "" 602 729 603 #: admin/class-termageddon-usercentrics-admin.php:1 381730 #: admin/class-termageddon-usercentrics-admin.php:1480 604 731 msgid "" 605 732 "within your Termageddon account, you will be brought to the \"View embed " … … 608 735 msgstr "" 609 736 610 #: admin/class-termageddon-usercentrics-admin.php: 630737 #: admin/class-termageddon-usercentrics-admin.php:700 611 738 msgid "wp_enqueue_scripts" 612 739 msgstr "" 613 740 614 #: admin/class-termageddon-usercentrics-admin.php:6 29741 #: admin/class-termageddon-usercentrics-admin.php:699 615 742 msgid "wp_head (Default)" 616 743 msgstr "" 617 744 618 #: admin/class-termageddon-usercentrics-admin.php:1 399745 #: admin/class-termageddon-usercentrics-admin.php:1498 619 746 msgid "" 620 747 "you will need to enable at least one of the settings below to ensure logged " … … 623 750 msgstr "" 624 751 625 #: admin/class-termageddon-usercentrics-admin.php: 198752 #: admin/class-termageddon-usercentrics-admin.php:203 626 753 msgid "Your location" 627 754 msgstr "" -
termageddon-usercentrics/trunk/public/class-termageddon-usercentrics-public.php
r3326335 r3439658 222 222 223 223 /** 224 * Get augmented script snippets for output 225 * 226 * Retrieves script snippets from database, augments them with Usercentrics attributes, 227 * and returns the concatenated result. 228 * 229 * @return string The concatenated augmented script snippets. 230 */ 231 public function get_augmented_script_snippets(): string { 232 $snippets = Termageddon_Usercentrics::get_script_snippets(); 233 if ( empty( $snippets ) || ! is_array( $snippets ) ) { 234 return ''; 235 } 236 237 $augmented_scripts = array(); 238 foreach ( $snippets as $snippet ) { 239 // Validate snippet structure 240 if ( ! is_array( $snippet ) || ! isset( $snippet['script'], $snippet['service_id'] ) ) { 241 continue; 242 } 243 244 $script = trim( $snippet['script'] ); 245 $service_id = $snippet['service_id']; 246 247 // Skip empty scripts 248 if ( empty( $script ) ) { 249 continue; 250 } 251 252 // Augment the script with Usercentrics attributes 253 $augmented = Termageddon_Usercentrics::augment_script_for_usercentrics( $script, $service_id ); 254 $augmented_scripts[] = $augmented; 255 } 256 257 return ! empty( $augmented_scripts ) ? implode( PHP_EOL, $augmented_scripts ) : ''; 258 } 259 260 /** 224 261 * Dynamically hide or show the termageddon script based on settings. Outputs directly to script tag. 225 262 */ … … 274 311 } 275 312 313 // Append augmented script snippets 314 $augmented_snippets = $this->get_augmented_script_snippets(); 315 if ( ! empty( $augmented_snippets ) ) { 316 $script .= PHP_EOL . $augmented_snippets; 317 } 318 276 319 if ( empty( $script ) ) { 277 320 return; … … 300 343 301 344 if ( $settings_id && $should_enqueue_scripts ) { 302 // Enqueue Embed Script. 303 wp_enqueue_script( $this->plugin_name . '-scripts', '//privacy-proxy.usercentrics.eu/latest/uc-block.bundle.js', array(), $this->version, false ); 304 // note: this URL is placed here to "play by the rules"... but it doesn't actually do anything. 305 // the whole thing will be overwritten by the script_loader_tag filter. 345 // Only enqueue the auto-blocking script if manual control is disabled 346 if ( ! Termageddon_Usercentrics::is_manual_script_control_enabled() ) { 347 wp_enqueue_script( $this->plugin_name . '-scripts', '//privacy-proxy.usercentrics.eu/latest/uc-block.bundle.js', array(), $this->version, false ); 348 // note: this URL is placed here to "play by the rules"... but it doesn't actually do anything. 349 // the whole thing will be overwritten by the script_loader_tag filter. 350 } 306 351 } 307 352 -
termageddon-usercentrics/trunk/termageddon-usercentrics.php
r3366825 r3439658 15 15 * Plugin Name: Termageddon 16 16 * Description: Each Termageddon license includes a consent solution. This plugin helps you install the consent solution with ease, while offering additional features. 17 * Version: 1. 8.217 * Version: 1.9.0 18 18 * Author: Termageddon 19 19 * Author URI: https://termageddon.com … … 34 34 * Rename this for your plugin and update it as you release new versions. 35 35 */ 36 define( 'TERMAGEDDON_COOKIE_VERSION', '1. 8.2' );36 define( 'TERMAGEDDON_COOKIE_VERSION', '1.9.0' ); 37 37 38 38 define( 'TERMAGEDDON_COOKIE_PLUGIN_PATH', dirname( __FILE__ ) );// No trailing slash. -
termageddon-usercentrics/trunk/vendor/composer/autoload_static.php
r3326335 r3439658 8 8 { 9 9 public static $prefixLengthsPsr4 = array ( 10 'M' => 10 'M' => 11 11 array ( 12 12 'MaxMind\\WebService\\' => 19, … … 14 14 'MaxMind\\Db\\' => 11, 15 15 ), 16 'G' => 16 'G' => 17 17 array ( 18 18 'GeoIp2\\' => 7, 19 19 ), 20 'C' => 20 'C' => 21 21 array ( 22 22 'Composer\\CaBundle\\' => 18, … … 25 25 26 26 public static $prefixDirsPsr4 = array ( 27 'MaxMind\\WebService\\' => 27 'MaxMind\\WebService\\' => 28 28 array ( 29 29 0 => __DIR__ . '/..' . '/maxmind/web-service-common/src/WebService', 30 30 ), 31 'MaxMind\\Exception\\' => 31 'MaxMind\\Exception\\' => 32 32 array ( 33 33 0 => __DIR__ . '/..' . '/maxmind/web-service-common/src/Exception', 34 34 ), 35 'MaxMind\\Db\\' => 35 'MaxMind\\Db\\' => 36 36 array ( 37 37 0 => __DIR__ . '/..' . '/maxmind-db/reader/src/MaxMind/Db', 38 38 ), 39 'GeoIp2\\' => 39 'GeoIp2\\' => 40 40 array ( 41 41 0 => __DIR__ . '/..' . '/geoip2/geoip2/src', 42 42 ), 43 'Composer\\CaBundle\\' => 43 'Composer\\CaBundle\\' => 44 44 array ( 45 45 0 => __DIR__ . '/..' . '/composer/ca-bundle/src', -
termageddon-usercentrics/trunk/vendor/composer/installed.php
r3366825 r3439658 4 4 'pretty_version' => 'dev-main', 5 5 'version' => 'dev-main', 6 'reference' => ' 8c98b9ca2d8ab64221beecdd7d94295be96b6dbb',6 'reference' => 'a175036bc29629db0942e5f85c30b2438e887925', 7 7 'type' => 'library', 8 8 'install_path' => __DIR__ . '/../../', … … 50 50 'pretty_version' => 'dev-main', 51 51 'version' => 'dev-main', 52 'reference' => ' 8c98b9ca2d8ab64221beecdd7d94295be96b6dbb',52 'reference' => 'a175036bc29629db0942e5f85c30b2438e887925', 53 53 'type' => 'library', 54 54 'install_path' => __DIR__ . '/../../',
Note: See TracChangeset
for help on using the changeset viewer.