PageSourceSearch

https://www.cpdacademy.co/assets/js/glowCookies.js

js cpdacademy.co collected 2026-10-08 14:50:30 UTC 27,308 bytes, 543 lines download raw bytes

1/*
2    GLOW COOKIES
3    CREATED BY MANUEL CARRILLO
4    https://github.com/manucaralmo/GlowCookies
5    2021 - v 3.1.3
6*/
7
8class GlowCookies {
9    constructor() {
10        // Cookies banner
11        this.banner = undefined
12            // Config
13        this.config = undefined
14        this.tracking = undefined
15            // DOM ELEMENTS
16        this.PreBanner = undefined
17        this.Cookies = undefined
18        this.DOMbanner = undefined
19    }
20
21    render() {
22        this.addCss()
23        this.createDOMElements()
24        this.checkStatus()
25    }
26
27    addCss() {
28        const stylesheet = document.createElement('link');
29        // stylesheet.setAttribute('rel', 'stylesheet');
30        // stylesheet.setAttribute('href', `./assets/css/glowCookies.css?v=2`);
31        // document.head.appendChild(stylesheet);
32    }
33
34    createDOMElements() {
35        // COOKIES BUTTON
36        this.PreBanner = document.createElement("div");
37        this.PreBanner.innerHTML = `<button type="button" id="prebannerBtn" class="prebanner prebanner__border__${this.config.bannerStyle} glowCookies__${this.config.position} glowCookies__${this.config.border} animation" style="color: ${this.banner.manageCookies.color}; background-color: ${this.banner.manageCookies.background};">
38                                    <svg fill="currentColor" style="margin-right: 7px; margin-top: 2px; vertical-align: text-top;" height="15px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
39                                        <path d="M510.52 255.82c-69.97-.85-126.47-57.69-126.47-127.86-70.17 0-127-56.49-127.86-126.45-27.26-4.14-55.13.3-79.72 12.82l-69.13 35.22a132.221 132.221 0 0 0-57.79 57.81l-35.1 68.88a132.645 132.645 0 0 0-12.82 80.95l12.08 76.27a132.521 132.521 0 0 0 37.16 72.96l54.77 54.76a132.036 132.036 0 0 0 72.71 37.06l76.71 12.15c27.51 4.36 55.7-.11 80.53-12.76l69.13-35.21a132.273 132.273 0 0 0 57.79-57.81l35.1-68.88c12.56-24.64 17.01-52.58 12.91-79.91zM176 368c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm32-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm160 128c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"/>
39
40                                    </svg>${this.banner.manageCookies.text}</button>`;
41        this.PreBanner.style.display = "none";
42        document.body.appendChild(this.PreBanner);
43
44        // COOKIES BANNER
45        this.Cookies = document.createElement("div");
46        this.Cookies.innerHTML = `<div 
47                                    id="glowCookies-banner" 
48                                    class="glowCookies__banner glowCookies__banner__${this.config.bannerStyle} glowCookies__${this.config.border} glowCookies__${this.config.position}"
49                                    style="background-color: ${this.banner.background};"
50                                >
51                                <div class="glowCookies-body">
52                            
53                                    <p style="color: ${this.banner.color};">
54                                        ${this.banner.description} 
55                                        <a 
56                                            href="${this.banner.link}"
57                                            target="_blank" 
58                                            class="read__more"
59                                            style="color: ${this.banner.color};"
60                                        >
61                                            ${this.banner.linkText}
62                                        </a>
63                                    </p>
64                                    <div class="btn__section">
65                                        <button type="button" id="acceptCookies" class="btn__accept accept__btn__styles" style="color: ${this.banner.acceptBtn.color}; background-color: ${this.banner.acceptBtn.background};">
66                                            ${this.banner.acceptBtn.text}
67                                        </button>
68                                        <button type="button" id="rejectCookies" class="btn__settings settings__btn__styles" style="color: ${this.banner.rejectBtn.color}; background-color: ${this.banner.rejectBtn.background};">
69                                            ${this.banner.rejectBtn.text}
70                                        </button>
71                                    </div>
72                                </div>
73                                    
74                                </div>
75                            `;
76        document.body.appendChild(this.Cookies);
77        this.DOMbanner = document.getElementById('glowCookies-banner')
78
79
80        // SET EVENT LISTENERS
81        document.getElementById('prebannerBtn').addEventListener('click', () => this.openSelector())
82        document.getElementById('acceptCookies').addEventListener('click', () => this.acceptCookies())
83        document.getElementById('rejectCookies').addEventListener('click', () => this.rejectCookies())
84    }
85
86    checkStatus() {
87        switch (localStorage.getItem("GlowCookies")) {
88            case "1":
89                document.getElementById("glowCookies-banner").style.display = "none";
90                this.PreBanner.style.display = "none";
91                // this.openManageCookies();
92                this.activateTracking();
93                this.addCustomScript();
94                break;
95            case "0":
96                this.openManageCookies();
97                break;
98            default:
99                this.openSelector();
100        }
101    }
102
103    openManageCookies() {
104        this.PreBanner.style.display = this.config.hideAfterClick ? "none" : "block"
105        this.DOMbanner.classList.remove('glowCookies__show')
106    }
107
108    openSelector() {
109        this.PreBanner.style.display = "none";
110        this.DOMbanner.classList.add('glowCookies__show')
111    }
112
113    acceptCookies() {
114        localStorage.setItem("GlowCookies", "1")
115            // this.openManageCookies()
116
117        document.getElementById("glowCookies-banner").style.display = "none";
118        this.PreBanner.style.display = "none";
119        this.activateTracking()
120        this.addCustomScript()
121    }
122
123    rejectCookies() {
124        localStorage.setItem("GlowCookies", "0");
125        this.openManageCookies();
126        this.disableTracking();
127    }
128
129    activateTracking() {
130        // Google Analytics Tracking
131        if (this.tracking.AnalyticsCode) {
132
133            // <!-- Global site tag (gtag.js) - Google Analytics -->
134            //
vendor: 64 bytes, line 134
134 <script async src="https://www.googletagmanager.com/gtag/js?id=
134G-T89EXCFY97
vendor: 25 bytes, lines 134-136
134"></script>
135
136            
136let Analytics = document.createElement('script');
137            Analytics.setAttribute('src', `https://www.googletagmanager.com/gtag/js?id=${this.tracking.AnalyticsCode}`);
138            document.head.appendChild(Analytics);
139            let AnalyticsData = document.createElement('script');
140            AnalyticsData.text = `window.dataLayer = window.dataLayer || [];
141                                function gtag(){dataLayer.push(arguments);}
142                                gtag('js', new Date());
143                                gtag('config', '${this.tracking.AnalyticsCode}');`;
144            document.head.appendChild(AnalyticsData);
145
146            let googleData = document.createElement('script');
147            googleData.text = `(function(i, s, o, g, r, a, m) {
148              i['GoogleAnalyticsObject'] = r;
149              i[r] = i[r] || function() {
150                (i[r].q = i[r].q || []).push(arguments)
151              }, i[r].l = 1 * new Date();
152              a = s.createElement(o),
153                m = s.getElementsByTagName(o)[0];
154              a.async = 1;
155              a.src = g;
156              m.parentNode.insertBefore(a, m)
157            })(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga');
158            var googleDomainList = ['cpdacademy.co'];
159      
160            ga('create', 'UA-61211705-1', 'auto', {
161              'allowLinker': true
162            });
163            ga('require', 'linker');
164            ga('linker:autoLink', googleDomainList);
165            ga('send', 'pageview');
166      
167            window.dataLayer = window.dataLayer || [];
168      
169            function gtag() {
170              dataLayer.push(arguments);
171            }
172            gtag('js', new Date());
173            gtag('config', '${this.tracking.AnalyticsCode}');`;
174
175            document.head.appendChild(googleData);
176
177
178
179        }
180
181        // Facebook pixel tracking code
182        if (this.tracking.FacebookPixelCode) {
183            let FacebookPixelData = document.createElement('script');
184            FacebookPixelData.text = `
185                                    !function(f,b,e,v,n,t,s)
186                                    {if(f.fbq)return;n=f.fbq=function(){n.callMethod?
187                                    n.callMethod.apply(n,arguments):n.queue.push(arguments)};
188                                    if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
189                                    n.queue=[];t=b.createElement(e);t.async=!0;
190                                    t.src=v;s=b.getElementsByTagName(e)[0];
191                                    s.parentNode.insertBefore(t,s)}(window, document,'script',
192                                    'https://connect.facebook.net/en_US/fbevents.js');
193                                    fbq('init', '${this.tracking.FacebookPixelCode}');
194                                    fbq('track', 'PageView');
195                                `;
196            document.head.appendChild(FacebookPixelData);
197            let FacebookPixel = document.createElement('noscript');
198            FacebookPixel.setAttribute('height', `1`);
199            FacebookPixel.setAttribute('width', `1`);
200            FacebookPixel.setAttribute('style', `display:none`);
201            FacebookPixel.setAttribute('src', `https://www.facebook.com/tr?id=${this.tracking.FacebookPixelCode}&ev=PageView&noscript=1`);
202            document.head.appendChild(FacebookPixel);
203
204            let FacebookPixelDataNoscript = document.createElement('noscript');
205            FacebookPixelDataNoscript.text = `
206            <img height="1" width="1" src="https://www.facebook.com/tr?id=${this.tracking.FacebookPixelCode}&ev=PageView
207        &noscript=1" />
208          `;
209
210            document.head.appendChild(FacebookPixelDataNoscript);
211
212        }
213
214        // Hotjar Tracking
215        if (this.tracking.HotjarTrackingCode) {
216            let hotjarTrackingData = document.createElement('script');
217            hotjarTrackingData.text = `
218                                (function(h,o,t,j,a,r){
219                                    h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)};
220                                    h._hjSettings={hjid:${this.tracking.HotjarTrackingCode},hjsv:6};
221                                    a=o.getElementsByTagName('head')[0];
222                                    r=o.createElement('script');r.async=1;
223                                    r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv;
224                                    a.appendChild(r);
225                                })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv=');
226                                `;
227            document.head.appendChild(hotjarTrackingData);
228        }
229    }
230
231    disableTracking() {
232        // Google Analytics Tracking ('client_storage': 'none')
233        if (this.tracking.AnalyticsCode) {
234            let Analytics = document.createElement('script');
235            Analytics.setAttribute('src', `https://www.googletagmanager.com/gtag/js?id=${this.tracking.AnalyticsCode}`);
236            document.head.appendChild(Analytics);
237            let AnalyticsData = document.createElement('script');
238            AnalyticsData.text = `window.dataLayer = window.dataLayer || [];
239                        function gtag(){dataLayer.push(arguments);}
240                        gtag('js', new Date());
241                        gtag('config', '${this.tracking.AnalyticsCode}' , {
242                            'client_storage': 'none',
243                            'anonymize_ip': true
244                        });`;
245            document.head.appendChild(AnalyticsData);
246        }
247
248        // Clear cookies - not working 100%
249        this.clearCookies()
250    }
251
252    clearCookies() {
253        let cookies = document.cookie.split("; ");
254        for (let c = 0; c < cookies.length; c++) {
255            let d = window.location.hostname.split(".");
256            while (d.length > 0) {
257                let cookieBase = encodeURIComponent(cookies[c].split(";")[0].split("=")[0]) + '=; expires=Thu, 01-Jan-1970 00:00:01 GMT; domain=' + d.join('.') + ' ;path=';
258                let p = location.pathname.split('/');
259                document.cookie = cookieBase + '/';
260                while (p.length > 0) {
261                    document.cookie = cookieBase + p.join('/');
262                    p.pop();
263                };
264                d.shift();
265            }
266        }
267    }
268
269    addCustomScript() {
270        if (this.tracking.customScript !== undefined) {
271            let customScriptTag
272
273            this.tracking.customScript.forEach(script => {
274                if (script.type === 'src') {
275                    customScriptTag = document.createElement('script');
276                    customScriptTag.setAttribute('src', script.content);
277                } else if (script.type === 'custom') {
278                    customScriptTag = document.createElement('script');
279                    customScriptTag.text = script.content;
280                }
281
282                if (script.position === 'head') {
283                    document.head.appendChild(customScriptTag);
284                } else {
285                    document.body.appendChild(customScriptTag);
286                }
287            })
288        }
289    }
290
291    start(languaje, obj) {
292        if (!obj) obj = {}
293        const lang = new LanguagesGC(languaje)
294
295        this.config = {
296            border: obj.border || 'border',
297            position: obj.position || 'left',
298            hideAfterClick: obj.hideAfterClick || false,
299            bannerStyle: obj.style || 2
300        }
301
302        this.tracking = {
303            AnalyticsCode: obj.analytics || undefined,
304            FacebookPixelCode: obj.facebookPixel || undefined,
305            HotjarTrackingCode: obj.hotjar || undefined,
306            customScript: obj.customScript || undefined
307        }
308
309        this.banner = {
310            description: obj.bannerDescription || lang.bannerDescription,
311            linkText: obj.bannerLinkText || lang.bannerLinkText,
312            link: obj.policyLink || '/privacy-policy',
313            background: obj.bannerBackground || '#fff',
314            color: obj.bannerColor || '#1d2e38',
315            heading: obj.bannerHeading !== 'none' ? obj.bannerHeading || lang.bannerHeading : '',
316            acceptBtn: {
317                text: obj.acceptBtnText || lang.acceptBtnText,
318                background: obj.acceptBtnBackground || '#f48824',
319                color: obj.acceptBtnColor || '#fff'
320            },
321            rejectBtn: {
322                text: obj.rejectBtnText || lang.rejectBtnText,
323                background: obj.rejectBtnBackground || '#E8E8E8',
324                color: obj.rejectBtnColor || '#636363'
325            },
326            manageCookies: {
327                color: obj.manageColor || '#1d2e38',
328                background: obj.manageBackground || '#fff',
329                text: obj.manageText || lang.manageText,
330            }
331        }
332
333        // Draw banner
334        window.addEventListener('load', () => { this.render() })
335    }
336}
337
338class LanguagesGC {
339    constructor(code) {
340        this.init()
341        let lang = this.arrLang[code] || this.arrLang['en']
342        this.bannerHeading = lang['bannerHeading']
343        this.bannerDescription = lang['bannerDescription']
344        this.bannerLinkText = lang['bannerLinkText']
345        this.acceptBtnText = lang['acceptBtnText']
346        this.rejectBtnText = lang['rejectBtnText']
347        this.manageText = lang['manageText']
348    }
349
350    init() {
351        this.arrLang = {
352            af: {
353                'bannerHeading': 'Ons gebruik koekies',
354                'bannerDescription': 'Ons gebruik ons eie koekies en die van derdepartye, om inhoud te verpersoonlik en om webverkeer te ontleed.',
355                'bannerLinkText': 'Lees meer oor koekies',
356                'acceptBtnText': 'Aanvaar koekies',
357                'rejectBtnText': 'Weier',
358                'manageText': 'Koekie-instellings'
359            },
360            bg: {
361                'bannerHeading': 'Ние използваме бисквитки',
362                'bannerDescription': 'Използваме наши и бисквитки на трети страни, за да запазим Вашите предпочитания и да събираме аналитични данни.',
363                'bannerLinkText': 'Прочетете повече за бисквитките',
364                'acceptBtnText': 'Приеми бисквитките',
365                'rejectBtnText': 'Откажи',
366                'manageText': 'Настрой бисквитките'
367            },
368            de: {
369                'bannerHeading': 'Verwendung von Cookies',
370                'bannerDescription': 'Wir nutzen Cookies (auch von Drittanbietern), um Inhalte zu personalisieren und Surfverhalten zu analysieren.',
371                'bannerLinkText': 'Mehr über Cookies',
372                'acceptBtnText': 'Cookies akzeptieren',
373                'rejectBtnText': 'Ablehnen',
374                'manageText': 'Cookies verwalten'
375            },
376            en: {
377                'bannerHeading': 'We use cookies',
378                'bannerDescription': 'We use our own and third-party cookies to personalize content and to analyze web traffic.',
379                'bannerLinkText': 'Read more about cookies',
380                'acceptBtnText': 'Accept cookies',
381                'rejectBtnText': 'Reject',
382                'manageText': 'Manage cookies'
383            },
384            sv: {
385                'bannerHeading': 'Vi använder cookies',
386                'bannerDescription': 'Vi använder våra egna och tredjepartscookies för att personalisera innehåll och till statistik.',
387                'bannerLinkText': 'Läs mer om cookies',
388                'acceptBtnText': 'Acceptera cookies',
389                'rejectBtnText': 'Avslå',
390                'manageText': 'Hantera cookies'
391            },
392            no: {
393                'bannerHeading': 'Vi benytter cookies',
394                'bannerDescription': 'Vi benytter våre egne og tredjepartscookies for å personalisere innehold og til statistikk.',
395                'bannerLinkText': 'Les mer om cookies',
396                'acceptBtnText': 'Aksepter cookies',
397                'rejectBtnText': 'Avslå',
398                'manageText': 'HÃ¥ndter cookies'
399            },
400            da: {
401                'bannerHeading': 'Vi bruger cookies',
402                'bannerDescription': 'Vi bruger vores egne og tredjepartscookie
402s til at tilpasse indhold og måle statistik.',
403                'bannerLinkText': 'Læs mere om cookies',
404                'acceptBtnText': 'Accepter cookies',
405                'rejectBtnText': 'Afvis',
406                'manageText': 'Administrer cookies'
407            },
408            es: {
409                'bannerHeading': 'Uso de cookies',
410                'bannerDescription': 'Utilizamos cookies propias y de terceros para personalizar el contenido y para analizar el tráfico de la web.',
411                'bannerLinkText': 'Ver más sobre las cookies',
412                'acceptBtnText': 'Aceptar cookies',
413                'rejectBtnText': 'Rechazar',
414                'manageText': 'Cookies'
415            },
416            fr: {
417                'bannerHeading': 'Nous utilisons des cookies',
418                'bannerDescription': 'Nous utilisons nos propres cookies et ceux de tiers pour adapter le contenu et analyser le trafic web.',
419                'bannerLinkText': 'En savoir plus sur les cookies',
420                'acceptBtnText': 'Accepter les cookies',
421                'rejectBtnText': 'Refuser',
422                'manageText': 'Paramétrez les cookies'
423            },
424            it: {
425                'bannerHeading': 'Utilizziamo i cookie',
426                'bannerDescription': 'Utilizziamo cookie nostri e di terze parti per personalizzare il contenuto e analizzare il traffico web.',
427                'bannerLinkText': 'Per saperne di più riguardo i cookie',
428                'acceptBtnText': 'Accetta i cookie',
429                'rejectBtnText': 'Rifiuta',
430                'manageText': 'Gestisci i cookie'
431            },
432            mg: {
433                'bannerHeading': 'Izahay dia mampiasa cookies',
434                'bannerDescription': "Mampiasa ny cookies anay manokana sy ireo an'ny antoko fahatelo izahay hampifanarahana ny atiny sy hamakafaka ny fivezivezena amin'ny tranonkala.",
435                'bannerLinkText': 'Maniry halala bebe kokoa momba ny cookies',
436                'acceptBtnText': 'Manaiky ireo cookies',
437                'rejectBtnText': 'Tsy mety',
438                'manageText': 'Hamboarina ny cookies'
439            },
440            nl: {
441                'bannerHeading': 'We gebruiken cookies',
442                'bannerDescription': 'We gebruiken onze en third-party cookies om content te personaliseren en web traffic te analyseren.',
443                'bannerLinkText': 'Lees meer over cookies',
444                'acceptBtnText': 'Cookies accepteren',
445                'rejectBtnText': 'Weigeren',
446                'manageText': 'Cookies beheren'
447            },
448            oc: {
449                'bannerHeading': 'Utilizam de cookies',
450                'bannerDescription': 'Utilizam nòstres pròpris cookies e de cookies tèrces per adaptar lo contengut e analisar lo trafic web.',
451                'bannerLinkText': 'Ne saber mai suls cookies',
452                'acceptBtnText': 'Acceptar los cookies',
453                'rejectBtnText': 'Refusar',
454                'manageText': 'Configurar los cookies'
455            },
456            pl: {
457                'bannerHeading': 'Używamy plików cookie',
458                'bannerDescription': 'Ta strona używa plików cookie - zarówno własnych, jak i od zewnętrznych dostawców, w celu personalizacji treści i analizy ruchu.',
459                'bannerLinkText': 'Więcej o plikach cookie',
460                'acceptBtnText': 'Zaakceptuj pliki cookie',
461                'rejectBtnText': 'Odrzuć',
462                'manageText': 'Ustawienia plików cookie'
463            },
464            pt_BR: {
465                'bannerHeading': 'Uso de cookies',
466                'bannerDescription': 'Usamos cookies próprios e de terceiros para personalizar o conteúdo e analisar o tráfego da web.',
467                'bannerLinkText': 'Leia mais sobre os cookies',
468                'acceptBtnText': 'Aceitar cookies',
469                'rejectBtnText': 'Rejeitar',
470                'manageText': 'Gerenciar cookies'
471            },
472            ru: {
473                'bannerHeading': 'Позвольте использовать куки?',
474                'bannerDescription': 'Мы используем собственные и сторонние куки для персонализации контента и анализа веб-трафика.',
475                'bannerLinkText': 'Узнать больше про куки.',
476                'acceptBtnText': 'Ок, используйте',
477                'rejectBtnText': 'Не разрешаю',
478                'manageText': 'Разрешите использовать куки?'
479            },
480            sk: {
481                'bannerHeading': 'Používame cookies',
482                'bannerDescription': 'Na prispôsobenie obsahu a analýzu webovej stránky používame vlastné cookies a cookies tretích strán.',
483                'bannerLinkText': 'Čo sú cookies?',
484                'acceptBtnText': 'Povoliť cookies',
485                'rejectBtnText': 'Nepovoliť',
486                'manageText': 'Spravovať cookies'
487            },
488
489
490            th: {
491                'bannerHeading': 'Cookies',
492                'bannerDescription': 'เราใช้คุà¸
492à¸à¸µà¹‰à¹€à¸žà¸·à¹ˆà¸­à¸žà¸±à¸’นาประสิทธิภาพ และประสบการณ์ที่ดีในการใช้เว็บไซต์ของคุณ คุณสามารถศึกษารายละเอียดได้ที่ ',
493                'bannerLinkText': 'นโยบายความเป็นส่วนตัว',
494                'acceptBtnText': 'ยอมรับ',
495                'rejectBtnText': 'ปฏิเสธ',
496                'manageText': 'Cookies'
497            },
498            tr: {
499                'bannerHeading': 'Çerez kullanımı',
500                'bannerDescription': 'İçeriği kişiselleştirmek ve web trafiğini analiz etmek için kendi ve üçüncü taraf çerezlerimizi kullanıyoruz.',
501                'bannerLinkText': 'Çerezler hakkında daha fazlasını okuyun',
502                'acceptBtnText': 'Çerezleri kabul et',
503                'rejectBtnText': 'Reddet',
504                'manageText': 'Çerezleri yönet'
505            },
506            uk: {
507                'bannerHeading': 'Ми використовуємо кукі',
508                'bannerDescription': 'Ми використовуємо власні та сторонні cookie для персоналізації досвіду користування та аналізу веб-трафіку.',
509                'bannerLinkText': 'Дізнайтеся більше про cookie',
510                'acceptBtnText': 'Прийняти',
511                'rejectBtnText': 'Відхилити',
512                'manageText': 'Налаштування cookie'
513            },
514            ja: {
515                'bannerHeading': 'Cookies を使用しています',
516                'bannerDescription': '私たちは、コンテンツのパーソナライズやトラフィックの分析のために、独自およびサードパーティー製 Cookies を使用しています。',
517                'bannerLinkText': 'Cookiesについて詳しく見る',
518                'acceptBtnText': 'Cookiesを受け入れる',
519                'rejectBtnText': '拒否',
520                'manageText': 'cookies管理'
521            },
522            zh_TW: {
523                'bannerHeading': '我們使用 Cookies',
524                'bannerDescription': '我們使用了自己和第三方的 cookies 來個人化您的內容和分析網頁的流量。',
525                'bannerLinkText': '閱讀更多關於 cookies',
526                'acceptBtnText': '同意 cookies',
527                'rejectBtnText': '拒絕',
528                'manageText': '管理 cookies'
529            },
530            zh: {
531                'bannerHeading': '我们使用 Cookies',
532                'bannerDescription': '我们使用了自己和第三方的 cookies 来个性化您的内容和分析网页的流量。',
533                'bannerLinkText': '阅读更多关于 cookies',
534                'acceptBtnText': '同意 cookies',
535                'rejectBtnText': '拒绝',
536                'manageText': '管理 cookies'
537            }
538        }
539    }
540
541}
542
543const glowCookies = new GlowCookies()

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.