1window.gravito = {}; 2window.gravito.config = { 3 "cmp": { 4 "settings": { 5 "useTopDomain": false, 6 "catchCMPEvents": true, 7 "syncAfter": 1800, 8 "sdkVersion": 6, 9 "version": "latest", 10 "customerUniqueID": "E6180B75-EFA6-4AB9-87CB-C030F1646DEE" 11 }, 12 "styles": { 13 "logoUrl": "https://cdn.media.fi/gravito/mediakonserni-keskisuomalainen.png", 14 "logoAltText": "Mediakonserni Keskisuomalainen", 15 "allowBackgroundScroll": false, 16 "isLayeredLayout": true, 17 "primaryColor": "#ffffff", 18 "secondaryColor": "#ffffff", 19 "headerColor": "#ffffff", 20 "footerColor": "#ffffff", 21 "fonts": [], 22 "focusFirstElement": true 23 }, 24 "tcf": { 25 "core": { 26 "languageCode": "fi", 27 "publisherCountryCode": "FI", 28 "purposeOneTreatment": false, 29 "hideLegitimateInterest": false, 30 "legitimateInterestDefaultBehavaior": true, 31 "purposes": [ 32 { 33 "type": "purposes", 34 "id": 1 35 }, 36 { 37 "type": "stacks", 38 "id": 2 39 }, 40 { 41 "type": "stacks", 42 "id": 10 43 }, 44 { 45 "type": "stacks", 46 "id": 16 47 } 48 ], 49 "specialPurposes": [ 50 1, 51 2 52 ], 53 "necessaryLegitimatePurposes": [], 54 "vendors": [ 55 1, 56 10, 57 11, 58 12, 59 15, 60 16, 61 21, 62 23, 63 25, 64 28, 65 30, 66 32, 67 45, 68 50, 69 52, 70 57, 71 63, 72 69, 73 76, 74 77, 75 78, 76 91, 77 111, 78 126, 79 128, 80 129, 81 130, 82 131, 83 132, 84 138, 85 140, 86 160, 87 185, 88 205, 89 209, 90 241, 91 253, 92 264, 93 273, 94 275, 95 278, 96 290, 97 315, 98 345, 99 385, 100 394, 101 412, 102 422, 103 612, 104 686, 105 755, 106 793, 107 855, 108 919, 109 922, 110 1029, 111 1100, 112 1126, 113 1208, 114 1234, 115 1242 116 ], 117 "necessaryVendors": [], 118 "features": [ 119 1, 120 2, 121 3 122 ], 123 "specialFeatures": [ 124 1, 125 2 126 ], 127 "useACM": false, 128 "googleVendors": [], 129 "useGCM": true, 130 "useAdvanceGCM": true, 131 "adsConsentId": [ 132 1 133 ], 134 "adsUserDataConsentId": [ 135 1, 136 7 137 ], 138 "adsPersonalizationConsentId": [ 139 3, 140 4 141 ], 142 "analyticsConsentId": [ 143 7, 144 9, 145 10 146 ], 147 "functionalityStorageConsentId": [ 148 10 149 ], 150 "functionalityStorageId": false, 151 "personalizationStorageConsentId": [ 152 1, 153 4 154 ], 155 "personalizationStorageId": false, 156 "securityStorageConsentId": [ 157 9 158 ], 159 "securityStorageId": true, 160 "useUET": true, 161 "nonTCFVendors": [ 162 { 163 "id": 1, 164 "type": "nonTCFVendors", 165 "name": "Meta", 166 "isConsentable": false, 167 "cookiesDeclaration": [] 168 }, 169 { 170 "id": 2, 171 "type": "nonTCFVendors", 172 "name": "X", 173 "isConsentable": false, 174 "cookiesDeclaration": [] 175 }, 176 { 177 "id": 3, 178 "type": "nonTCFVendors", 179 "name": "Chartbeat", 180 "isConsentable": false, 181 "cookiesDeclaration": [] 182 }, 183 { 184 "id": 4, 185 "type": "nonTCFVendors", 186 "name": "Spotify", 187 "isConsentable": false, 188 "cookiesDeclaration": [] 189 } 190 ], 191 "customPurposes": [ 192 { 193 "id": 1, 194 "type": "customPurpose", 195 "name": "Välttämättömät evästeet", 196 "isLegitimate": false, 197 "isConsentable": false 198 }, 199 { 200 "id": 2, 201 "type": "customPurpose", 202 "name": "Analytiikka- ja yleisömittausevästeet", 203 "isLegitimate": false, 204 "isConsentable": true 205 }, 206 { 207 "id": 3, 208 "type": "customPurpose", 209 "name": "Mainosevästeet", 210 "isLegitimate": false, 211 "isConsentable": true 212 } 213 ], 214 "publisherRestrictions": [], 215 "cookieName": "TcString", 216 "cookieExpiry": 365, 217 "rejectAllCookieExpiry": 365, 218 "version": 11, 219 "googleTcfId": 755 220 }, 221 "languages": { 222 "fi": { 223 "label": "Suomi", 224 "nonTCFVendors": [ 225 { 226 "id": 1, 227 "type": "nonTCFVendors", 228 "name": "Meta", 229 "isConsentable": false, 230 "cookiesDeclaration": [], 231 "description": "Meta kerää tietoa verkkovierailusta ja sisällöistä myös Metan palveluiden ulkopuolella. Kerättyjä tietoja käytetään mainonnan kohdentamiseen. Voit antaa suostumuksesi â<strong>Tarkoitukset ja ominaisuudet</strong>â -välilehden valinnoissa (â<strong>Mainosevästeet</strong>â).<br><br>Lue lisää: <a href=\"https://www.facebook.com/privacy/policies/cookie
231s/\">https://www.facebook.com/privacy/policies/cookies/</a>" 232 }, 233 { 234 "id": 2, 235 "type": "nonTCFVendors", 236 "name": "X", 237 "isConsentable": false, 238 "cookiesDeclaration": [], 239 "description": "X (entinen Twitter) kerää tietoa verkkovierailusta ja sisällöistä myös X:n ulkopuolella. X:ää käytetään mainontaan ja kerättyjä tietoja parempaan mainonnan kohdentamiseen. Voit antaa suostumuksesi â<strong>Tarkoitukset ja ominaisuudet</strong>â -välilehden valinnoissa (â<strong>Mainosevästeet</strong>â).<br><br>Lue lisää: <a href=\"https://x.com/en/privacy\">https://x.com/en/privacy</a>" 240 }, 241 { 242 "id": 3, 243 "type": "nonTCFVendors", 244 "name": "Chartbeat", 245 "isConsentable": false, 246 "cookiesDeclaration": [], 247 "description": "Chartbeat on sisältöanalyysin työkalu, jonka avulla voimme tarkastella kullakin sivustollamme parhaillaan olevien selainten määrää sekä sivustolla liikkumista.<br><br>Lue lisää: <a href=\"https://chartbeat.com/privacy/\">https://chartbeat.com/privacy/</a>" 248 }, 249 { 250 "id": 4, 251 "type": "nonTCFVendors", 252 "name": "Spotify", 253 "isConsentable": false, 254 "cookiesDeclaration": [], 255 "description": "Spotify kerää tietoja mainonnan kohdentamiseen, mainonnan tulosten mittaamiseen, attribuutioon ja raportointiin. Voit antaa suostumuksesi â<strong>Tarkoitukset ja ominaisuudet</strong>â -välilehden valinnoissa (â<strong>Mainosevästeet</strong>â).<br><br>Lue lisää: <a href=\"https://www.spotify.com/us/legal/privacy-policy/\">https://www.spotify.com/us/legal/privacy-policy/</a>" 256 } 257 ], 258 "customPurposes": [ 259 { 260 "id": 1, 261 "type": "customPurpose", 262 "name": "Välttämättömät evästeet", 263 "isLegitimate": false, 264 "isConsentable": false, 265 "description": "Nämä evästeet ovat välttämättömiä sivustomme toiminnan kannalta, ja ne ovat käytössä aina. Ilman näitä evästeitä emme voi esimerkiksi muistaa kirjautumistasi tai tässä evästesuostumustyökalussa tekemiäsi valintoja.", 266 "descriptionLegal": "Nämä evästeet ovat välttämättömiä sivustomme toiminnan kannalta, ja ne ovat käytössä aina. Ilman näitä evästeitä emme voi esimerkiksi muistaa kirjautumistasi tai tässä evästesuostumustyökalussa tekemiäsi valintoja." 267 }, 268 { 269 "id": 2, 270 "type": "customPurpose", 271 "name": "Analytiikka- ja yleisömittausevästeet", 272 "isLegitimate": false, 273 "isConsentable": true, 274 "description": "Nämä evästeet auttavat meitä laskemaan sivustollamme vierailevat kävijät ja ymmärtämään, miten sivustoamme käytetään. Näitä evästeitä asettavat mm. Google (Google Analytics) ja Chartbeat.", 275 "descriptionLegal": "Nämä evästeet auttavat meitä laskemaan sivustollamme vierailevat kävijät ja ymmärtämään, miten sivustoamme käytetään. Näitä evästeitä asettavat mm. Google (Google Analytics) ja Chartbeat." 276 }, 277 { 278 "id": 3, 279 "type": "customPurpose", 280 "name": "Mainosevästeet", 281 "isLegitimate": false, 282 "isConsentable": true, 283 "description": "Näiden evästeiden avulla voidaan kerätä tietoa siitä, millaisista sisällöistä ja tuotteista olet kiinnostunut. Evästeiden avulla voidaan muodostaa profiili kiinnostuksenkohteistasi ja kohdentaa sinulle mainoksia. Näitä evästeitä asettavat mm. Meta ja X (entinen Twitter).", 284 "descriptionLegal": "Näiden evästeiden avulla voidaan kerätä tietoa siitä, millaisista sisällöistä ja tuotteista olet kiinnostunut. Evästeiden avulla voidaan muodostaa profiili kiinnostuksenkohteistasi ja kohdentaa sinulle mainoksia. Näitä evästeitä asettavat mm. Meta
284ja X (entinen Twitter)." 285 } 286 ], 287 "text": { 288 "declaration": { 289 "header": "Yleiset valinnat", 290 "title": "Tarvitsemme suostumuksesi tarjotaksemme kotimaista sisältöä", 291 "introductionText": "<strong>Mediakonserni Keskisuomalainen</strong> ja sen valikoidut <span id='partners-link'>kumppanit</span> ({VendorsCount}) käyttävät evästeitä ja käsittelevät henkilötietoja, kuten eväste- ja tai mobiilitunnisteita, kohdennetun mainonnan ja personoidun sisällön näyttämiseen, mainonnan ja sisällön mittaamiseen, yleisötutkimukseen ja palvelujen kehittämiseen. Tarkoitusten toteuttamiseksi voidaan käyttää tarkkoja sijaintitietoja ja laitteen ominaisuuksia tunnistamista varten. Voimme yhdistää evästeillä kerättyjä verkkokäyttäytymistietoja muissa yhteyksissä kerättyihin henkilötietoihin.", 292 "consentableItemDescription": "", 293 "legalFooter": "Painamalla â<strong>Hyväksy kaikki</strong>â annat suostumuksesi yllä mainittuihin tarkoituksiin tällä sivustolla. Ilman suostumustasi sisältöä tai mainontaa ei personoida, mutta näet yhtä paljon mainontaa kuin aiemmin. Huomaathan, että erityiset tarkoitukset ovat välttämättömiä ja ovat käytössä aina. Ei-välttämättömien evästeiden asettaminen (tietojen tallentaminen laitteelle ja/tai laitteella olevien tietojen käyttö) perustuu suostumukseen, mutta joidenkin kumppanien osalta evästeillä kerätyn datan jatkokäyttö voi perustua oikeutettuun etuun. Voit tehdä tarkempia valintoja ja vastustaa oikeutettuun etuun perustuvaa käsittelyä painamalla alla â<strong>Muokkaa valintoja</strong>â tai siirtymällä â<strong>Yksityiskohtaiset valinnat</strong>â -välilehdelle. Voit myöhemmin muuttaa valintojasi, kuten peruuttaa antamasi suostumuksen, valitsemalla sivuston alalaidasta â<strong>Evästeasetukset</strong>â." 294 }, 295 "details": { 296 "header": "Yksityiskohtaiset valinnat", 297 "title": "Yksityiskohtaiset valinnat", 298 "introductionText": "Alla voit tehdä yksityiskohtaisia valintoja ja myös vastustaa tietojen käsittelyn oikeutettua perustetta, jos katsot sen aiheettomaksi. Voit myöhemmin muuttaa valintojasi valitsemalla sivuston alalaidasta â<strong>Evästeasetukset</strong>â.", 299 "purposesTabDescription": "Tässä pääset tutustumaan yksityiskohtaisesti, mihin käyttötarkoituksiin hyödynnämme tietojasi ja millaisia ominaisuuksia ne mahdollistavat.", 300 "vendorsTabDescription": "{VendorsCount} kumppaniamme tallentavat ja/tai käyttävät evästeitä ja käsittelevät henkilötietoja, kuten eväste- ja tai mobiilitunnisteita, tarjotakseen sinulle parempia palveluita.", 301 "copyTCstringTooltip": "Googlen kumppanit" 302 }, 303 "commonTerms": { 304 "acceptAll": "Hyväksy kaikki", 305 "save": "Hyväksy valitut", 306 "rejectAll": "Jatka välttämättömillä", 307 "settings": "Muokkaa valintoja", 308 "privacyPolicyLabel": "Tietosuojalauseke", 309 "consent": "Suostumus", 310 "purposeAndCharacteristics": "Tarkoitukset ja ominaisuudet", 311 "specialPurposes": "Erityistarkoitukset", 312 "specialFeatures": "Erityisominaisuudet", 313 "features": "Ominaisuudet", 314 "nonTCFVendors": "Kumppanit, jotka eivät kuulu IAB Europen TCF-verkostoon", 315 "vendors": "Kumppanit", 316 "vendorsTabHeader": "Kumppanit", 317 "purposes": "Tarkoitukset", 318 "legitimateInterest": "Oikeutettu etu", 319 "customPurposes": "Mediakonserni Keskisuomalaisen evästeet", 320 "cookieMaxAge": "Evästeen enimmäisikä (sekunnit)", 321 "disclouserDetails": "Yksityiskohdat", 322 "disclouserFetchingError": "Tietojen hakeminen epäonnistui", 323 "disclouserHeaderIdentifier": "Tunniste", 324 "disclouserHeaderDomain": "Verkkotunnus", 325 "disclouserHeaderType": "Tyyppi", 326 "disclosureHeaderMaxAge": "Enimmäisikä", 327 "disclosureHeaderPurpose": "Tarkoitukset", 328 "cookieRefresh": "Evästeen päivittäminen", 329 "usesCookies": "Käyttää evästeitä", 330 "usesNonCookieAccess": "Käyttää evästeetöntä teknologiaa", 331 "yes": "Kyllä", 332 "no": "Ei", 333 "seconds": "sekuntia", 334 "days": "päivää", 335 "alertMessageForCopiedTcString": "CMP-asetukset kopioitu", 336 "purposeIllustration": "Kuvaus",
337 "legitVendorCount": "Oikeutettua etua käyttävät kumppanit", 338 "consentVendorCount": "Suostumusta käyttävät kumppanit", 339 "stdRetention": "Normaali säilytysaika", 340 "dataDeclaration": "Tietosuojailmoitus", 341 "vendorCountDeclarationText": "{VendorsCount} kumppania voi käyttää tätä", 342 "legIntClaim": "Oikeutettua etua koskeva informaatio", 343 "dataDeclarationNameHeader": "Hyödynnettävä tieto", 344 "dataDeclarationIdHeader": "Tunnus", 345 "dataDeclarationDescriptionHeader": "Kuvaus", 346 "retention": "Säilytys", 347 "googleVendors": "Googlen kumppanit", 348 "cancel": "Peruuta", 349 "confirm": "Vahvista", 350 "privacyPolicyUrl": "https://www.keskisuomalainen.com/tietosuojalauseke/" 351 } 352 } 353 } 354 }, 355 "style": { 356 "hideContentOnFirstLayer": true, 357 "consentInputType": "checkbox", 358 "customCSS": ".gravitoCMP-tab-container {\r\n font-family: system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Helvetica, Arial, sans-serif !important;\r\n border-radius: 4px !important;\r\n max-width: 98% !important;\r\n box-shadow: 2px 2px 16px #00000020;\r\n background-color: #FFF;\r\n gap: 0 !important;\r\n}\r\n\r\n.gravitoCMP-brand-header {\r\n border-bottom: 1px solid #E5E5E5;\r\n height: auto;\r\n}\r\n\r\n.gravitoCMP-logo-div {\r\n height: 64px !important;\r\n}\r\n\r\n.gravitoCMP-logo {\r\n height: 24px !important;\r\n}\r\n\r\n.gravitoCMP-close-btn {\r\n top: 8px !important;\r\n right: 8px !important;\r\n padding: 16px !important;\r\n}\r\n\r\n.gravitoCMP-close-btn>svg {\r\n fill: #000;\r\n}\r\n\r\n.gravitoCMP-tabs-div {\r\n justify-content: flex-start;\r\n background-color: #F5F5F5;\r\n border-bottom: 1px solid #E5E5E5;\r\n}\r\n\r\n.gravitoCMP-tab {\r\n flex: 0 !important;\r\n color: #262626 !important;\r\n background-color: #F5F5F5 !important;\r\n padding: 0 16px !important;\r\n height: 50px;\r\n}\r\n\r\n.gravitoCMP-tab.active {\r\n background-color: #FFF !important;\r\n border-bottom: 3px solid #262626 !important;\r\n}\r\n\r\n@media screen and (max-width: 360px) {\r\n button.gravitoCMP-tab {\r\n white-space: normal;\r\n }\r\n}\r\n\r\n.gravitoCMP-tab-content {\r\n border-bottom: 1px solid #E5E5E5;\r\n}\r\n\r\n.gravitoCMP-TCFCMP-tab-content-wrapper {\r\n padding: 0;\r\n}\r\n\r\n.gravitoCMP-TCFCMP-tabs {\r\n border-bottom: 1px solid #E5E5E5;\r\n}\r\n\r\n.gravitoCMP-TCFCMP-tab {\r\n align-items: center;\r\n background-color: #FFF !important;\r\n border: 0 !important;\r\n color: #262626 !important;\r\n padding: 0 16px !important;\r\n height: 50px;\r\n font-weight: 600 !important;\r\n}\r\n\r\n.gravitoCMP-TCFCMP-tab.active {\r\n border-bottom: 3px solid #262626 !important;\r\n}\r\n\r\n.gravitoCMP-TCFCMP-section-item {\r\n margin: 0 0 8px 0 !important;\r\n background-color: #FFF;\r\n}\r\n\r\n.gravitoCMP-TCFCMP-section-title:first-child {\r\n margin: 24px 0 12px 0;\r\n}\r\n\r\n.gravitoCMP-TCFCMP-layer1-container {\r\n background-color: #FFF !important;\r\n color: #262626 !important;\r\n padding: 16px !important;\r\n}\r\n\r\n.gravitoCMP-TCFCMP-content-container-layer2 {\r\n background-color: #FFF !important;\r\n color: #262626 !important;\r\n}\r\n\r\n.gravitoCMP-TCFCMP-introduction-text {\r\n margin: 0 0 6px 0 !important;\r\n}\r\n\r\n.gravitoCMP-TCFCMP-title {\r\n background-color: #FFF !important;\r\n color: #262626 !important;\r\n padding: 0 0 2px 0 !important;\r\n position: static;\r\n}\r\n\r\n.gravitoCMP-TCFCMP-accordion-section-title {\r\n color: #262626 !important;\r\n padding: 0;\r\n margin: 24px 0 16px 0;\r\n}\r\n\r\n.gravitoCMP-TCFCMP-accordion-section-title:first-child {\r\n margin: 0 0 16px 0;\r\n}\r\n\r\n#gravitoCMPRoot strong {\r\n font-weight: 600;\r\n}\r\n\r\n.gravitoCMP-TCFCMP-content-container-layer2 .gravitoCMP-TCFCMP-section-item {\r\n border-bottom: 1px solid #E5E5E5;\r\n}\r\n\r\n.gravitoCMP-TCFCMP-nested-nested-vendor-list {\r\n padding: 8px 0;\r\n}\r\n\r\n.gravitoCMP-accordion-header {\r\n color: #262626 !important;\r\n font-weight: 400 !important;\r\n padding: 16px 0 !important;\r\n}\r\n\r\n.gravitoCMP-TCFCMP-content-container-layer2 .gravitoCMP-accordion-header {\r\n padding: 8px 0 !important;\r\n}\r\n\r\n.gravitoCMP-nested-accordion-header .gravitoCMP-accordion-header {\r\n padding: 0px !important;\r\n color: #737373 !important;\r\n}\r\n\r\n.gravitoCMP-TCFCMP-content-container .gravitoCMP-accordion-header {\r\n border-bottom: 1px solid #E5E5E5 !important;\r\n}\r\n\r\n.gravitoCMP-accordion-content {\r\n padding: 8px 0 !important;\r\n}\r\n\r\n.gravitoCMP-TCFCMP-accordion-inputs {\r\n padding: 0;\r\n}\r\n\r\n.gravitoCMP-TCFCMP-vendors-description {\r\n margin: 8px 0 0 0;\r\n}\r\n\r\n.gravitoCMP-TCFCMP-link,\r\n#partners-link,\r\n#gravitoCMP-tab-container-id a {\r\n color: #0E57B6 !important;\r\n}\r\n\r\n#gravitoTCFCMP-layer2-reject-all,\r\n#gravitoTCFCMP-layer2-accept-all {\r\n color: #262626;\r\n background-color: #FFF !important;\r\n border: 1px solid #262626;\r\n}\r\n\r\n.gravitoCMP-TCFCMP-content-container-layer2 .gravitoCMP-TCFCMP-accordion,\r\n.gravitoCMP-TCFCMP-content-container-layer2 .gravitoCMP-accordion {\r\n padding-bottom: 8px !important;\r\n}\r\n\r\n.gravitoCMP-accordion-toggle__icon circle {\r\n stroke: #949494;\r\n}
358\r\n\r\n.gravitoCMP-custom-checkmark {\r\n border-color: #949494 !important;\r\n border-radius: 2px;\r\n width: 20px;\r\n height: 20px;\r\n}\r\n\r\n.gravitoCMP-consent-input {\r\n color: #262626 !important;\r\n font-weight: 600 !important;\r\n height: 24px !important;\r\n padding-left: 32px !important;\r\n margin-bottom: 8px !important;\r\n}\r\n\r\n.gravitoCMP-TCFCMP-accordion-vendor-count {\r\n padding-bottom: 8px !important;\r\n color: #737373 !important;\r\n margin: 0;\r\n font-size: 14px;\r\n}\r\n\r\n.gravitoCMP-consent-input-checkbox:checked+.gravitoCMP-custom-checkmark {\r\n background-color: #0E57B6;\r\n border-color: #0E57B6 !important;\r\n}\r\n\r\n.gravitoCMP-custom-checkmark:after {\r\n width: 5px;\r\n height: 12px;\r\n left: 6px;\r\n top: 1px;\r\n}\r\n\r\n.gravitoCMP-TCFCMP-consentable-items:empty {\r\n display: none;\r\n}\r\n\r\n.gravitoCMP-TCFCMP-consentable-items:empty+.gravitoCMP-TCFCMP-legal-footer {\r\n margin-top: 8px;\r\n}\r\n\r\n.gravitoCMP-TCFCMP-legal-footer {\r\n margin: 24px 0 16px 0;\r\n}\r\n\r\n.gravitoCMP-action-container {\r\n gap: 8px;\r\n padding: 16px;\r\n border-bottom: 1px solid #E5E5E5 !important;\r\n}\r\n\r\n.gravitoCMP-btn {\r\n border-radius: 2px !important;\r\n background-color: #262626 !important;\r\n color: #FFF;\r\n font-size: 16px !important;\r\n line-height: 24px !important;\r\n padding: 8px 32px !important;\r\n font-weight: 600 !important;\r\n}\r\n\r\n.gravitoCMP-footer-links {\r\n margin: 0 16px;\r\n}\r\n\r\n.gravitoCMP-tab-footer {\r\n justify-content: flex-end;\r\n height: 56px;\r\n flex-direction: row !important;\r\n}\r\n\r\n.gravitoCMP-footer-logo-div {\r\n display: none;\r\n}\r\n\r\n#gravitoTCFCMP-layer1-reject-all {\r\n display: none;\r\n}\r\n\r\n#gravitoTCFCMP-layer1-reject-all {\r\n display: none !important;\r\n}\r\n\r\n#gravitoTCFCMP-layer1-settings {\r\n display: block !important;\r\n}\r\n\r\n.gravitoCMP-seprator-class>.gravitoCMP-action-container {\r\n flex-direction: row;\r\n}\r\n\r\n@media screen and (max-width: 550px) {\r\n .gravitoCMP-tab-container {\r\n width: 98%;\r\n }\r\n\r\n .gravitoCMP-action-container {\r\n flex-direction: column-reverse;\r\n }\r\n\r\n .gravitoCMP-seprator-class>.gravitoCMP-action-container {\r\n flex-direction: column;\r\n }\r\n}\r\n\r\n.gravitoCMP-table-header-cell {\r\n font-size: var(--gravito-font-size-body);\r\n}\r\n\r\n.gravitoCMP-TCFCMP-vendor-items-list-item-retention {\r\n background-color: transparent;\r\n color: #262626;\r\n}\r\n\r\n.gravitoCMP-paragraph {\r\n font-size: 14px;\r\n margin-top: 8px;\r\n}\r\n\r\n.gravitoCMP-TCFCMP-nested-vendor-list-item svg {\r\n width: 16px;\r\n height: 16px;\r\n}\r\n\r\n.gravitoCMP-TCFCMP-nested-vendor-list-item a {\r\n margin-left: 8px;\r\n}" 359 } 360 } 361 }, 362 "firstParty": { 363 "useFirstParty": true 364 } 365}; 366 367var gravitoData = {}; 368function loadCMP() { 369 var gravitoSDKTag = document.createElement("script"); 370 gravitoSDKTag.src = "https://cdn.gravito.net/sdk/v6/latest/sdk.js"; 371 gravitoSDKTag.onload = function () { 372 window.gravito.init(); 373 }; 374 375 document.body.appendChild(gravitoSDKTag); 376} 377function check1PId() { 378 let isChrome = 379 /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor); 380 if (isChrome) { 381 var xhr = new XMLHttpRequest(); 382 var params = { 383 e: {}, 384 k: [], 385 c: [], 386 }; 387 var gravitoSLD = 388 "gto." + 389 window.location.hostname.split(".").reverse()[1] + 390 "." + 391 window.location.hostname.split(".").reverse()[0]; 392 xhr.open("POST", "https://" + gravitoSLD + "/api/v3/firstparty", true); 393 xhr.withCredentials = true; 394 xhr.onreadystatechange = function (response) { 395 if (xhr.readyState == XMLHttpRequest.DONE && xhr.status == 200) { 396 console.log("POST response 1 : " + response.target.response); 397 var fpId = JSON.parse(response.target.response).i; 398 // If 1P id does not contain 3rd party partition key continue setting up the bridge 399 if (fpId.length <= 36) { 400 fetchCdpProfile(); 401 } else { 402 localStorage.setItem( 403 "gravito-microprofile-data", 404 JSON.stringify(response.target.response) 405 ); 406 loadCMP(); 407 } 408 } 409 }; 410 xhr.send(JSON.stringify(params)); 411 } else { 412 loadCMP(); 413 } 414} 415function fetchCdpProfile() { 416 var xhr = new XMLHttpRequest(); 417 xhr.open( 418 "POST", 419 "https://handshake.gravito.net/api/ap?includeProfile=true&includeCampaign=true", 420 true 421 ); 422 xhr.withCredentials = true; 423 xhr.onreadystatechange = function (response) { 424 if (xhr.readyState == XMLHttpRequest.DONE && xhr.status == 200) { 425 console.log("POST response 2 : " + response.target.response); 426 gravitoData.cdpProfile = JSON.parse(response.target.response); 427 // Set 1P to contain same id as was received from 3rd party API 428 set1PId(); 429 } 430 }; 431 xhr.timeout = 3500; // time in milliseconds 432 xhr.send(); 433} 434function set1PId() { 435 var FPiD = gravitoData.cdpProfile.gravitoOpUid; 436 var xhr = new XMLHttpRequest(); 437 var params = { 438 e: {}, 439 k: [], 440 c: [], 441 }; 442 var gravitoSLD = 443 "gto." + 444 window.location.hostname.split(".").reverse()[1] + 445 "." + 446 window.location.hostname.split(".").reverse()[0]; 447 xhr.open("POST", "https://" + gravitoSLD + "/api/v3/firstparty", true); 448 xhr.withCredentials = true; 449 xhr.onreadystatechange = function (response) { 450 if (xhr.readyState == XMLHttpRequest.DONE && xhr.status == 200) { 451 console.log("POST response 3 : " + response.target.response); 452 attachHandShakeIdToFp(FPiD); 453 } 454 }; 455 // Override the 1P id by setting to contain id received from 3rd party API 456 xhr.setRequestHeader("gm-id", FPiD); 457 xhr.send(JSON.stringify(params)); 458} 459check1PId(); 460 461// function to check if gravito data is present in firstParty response 462function checkGravitoDataInResponse(data) { 463 let parsedData = JSON.parse(data); 464 if (parsedData["e"] && parsedData["e"].gravitoData) { 465 return true; 466 } 467} 468 469// funtion be called when gravito handshake id is available 470// this function will attach handshake id to first party data 471// and should be called when handshake id is available 472function attachHandShakeIdToFp(handShakeId) { 473 function customCb(data) { 474 if (checkGravitoDataInResponse(data)) { 475 console.log("Gravito data found in response"); 476 // you can the required functions here 477 } 478 loadCMP(); 479 } 480 function attachMatchOnId(id, callback) { 481 var xhr = new XMLHttpRequest(); 482 var params = { 483 e: { 484 matchOnId: id, 485 }, 486 k: [], 487 c: [], 488 }; 489 var gravitoSLD = 490 "gto." + 491 window.location.hostname.split(".").reverse()[1] + 492 "." + 493 window.location.hostname.split(".").reverse()[0]; 494 xhr.open("POST", "https://" + gravitoSLD + "/api/v3/firstparty", true); 495 xhr.withCredentials = true; 496 xhr.onreadystatechange = function (response) { 497 if (xhr.readyState == XMLHttpRequest.DONE && xhr.status == 200) { 498 console.log("POST response 1 : " + response.target.response); 499 localStorage.setItem( 500 "gravito-microprofile-data", 501 JSON.stringify(response.target.response) 502 ); 503 callback(response.target.response); 504 } 505 }; 506 xhr.send(JSON.stringify(params)); 507 } 508 // gravito SDK utility function to attach handshake id to first party data 509 attachMatchOnId(handShakeId, customCb); 510}
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.