[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"sanity-secure:{\n  \"regionTheme\": *[_type == \"theme\" && language == $locale][0] {\n    ...,\n    activeAnnouncement->{...},\n    \"mainNavigation\": \nmainNav->{\n  \"topLevelMenuItems\": navigationMenu.topLevelMenuItems[] {\n    title,\n    \"submenuLists\": submenuLists[] {\n      submenuListTitle,\n      \"submenuListItems\": submenuListItems[] {\n        \n  ...\n,\n        \n_type == 'link.internal' => {\n  ...,\n  newWindow,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n}\n}\n,\n        \n  _type == 'link.ssu' => {\n  ...\n}\n,\n      }\n    },\n    \"additionalInfo\": additionalInfo[] {\n      \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n    }\n  },\n  \"menuActions\": headerActions[] {\n    _type,\n    _key,\n    \"internalLink\": internalLink { \n_type == 'link.internal' => {\n  ...,\n  newWindow,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n}\n}\n },\n    \"externalLink\": externalLink { \n  ...\n },\n    \"ssuLink\": ssuLink { \n  _type == 'link.ssu' => {\n  ...\n}\n },\n    appstoreLink,\n    button,\n  },\n  \"mobileHeaderActionKey\": mobileHeaderActionKey,\n}\n,\n    mainFooter->{\nfootnote,\n'pageLinks': coalesce(pageLinks[] {\n  \n  ...\n,\n  \n_type == 'link.internal' => {\n  ...,\n  newWindow,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n}\n}\n,\n  \n  _type == 'link.ssu' => {\n  ...\n}\n,\n}, []),\n'socialLinks': coalesce(socialLinks[] {\n  \n  _type == 'link.social' => {\n    _type,\n    _key,\n    title,\n    url,\n    icon,\n  }\n,\n}, []),\n'legalLinks': coalesce(legalLinks[] {\n  \n  ...\n,\n  \n_type == 'link.internal' => {\n  ...,\n  newWindow,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n}\n}\n,\n  \n  _type == 'link.ssu' => {\n  ...\n}\n,\n}, []),\n},\n  },\n  \"defaultSeo\": *[_type == \"config.seo\"][0] {\n    \"siteTitle\": siteTitle[_key == $locale][0].value,\n    \"favicon\": favicon.asset,\n    titleSeparator,\n    siteUrl,\n    withSiteTitle,\n    \"metaTitle\": seoSocial.metaTitle[_key == $locale][0].value,\n    \"metaTitleFallback\": seoSocial.metaTitle[_key == \"en-gb\"][0].value,\n    \"metaDescription\": seoSocial.metaDescription[_key == $locale][0].value,\n    \"metaDescriptionFallback\": seoSocial.metaDescription[_key == \"en-gb\"][0].value,\n    \"mobileAppDescription\": seoSocial.mobileAppDescription[_key == $locale][0].value,\n    \"mobileAppDescriptionFallback\": seoSocial.mobileAppDescription[_key == \"en-gb\"][0].value,\n    \"socialImage\": seoSocial.socialImage.asset,\n  },\n  \"appStores\": *[_type == \"config.appstores\"][0] {\n    \"modalTitleAppStoreDownload\": coalesce(\n      modalTitleAppStoreDownload[_key == $locale][0].value,\n      modalTitleAppStoreDownload[_key == \"en-gb\"][0].value,\n    ),\n    \"appleAppStore\": coalesce(\n      appleAppStore[_key == $locale][0].value,\n      appleAppStore[_key == \"en-gb\"][0].value,\n    ),\n    \"googlePlayStore\": coalesce(\n      googlePlayStore[_key == $locale][0].value,\n      googlePlayStore[_key == \"en-gb\"][0].value,\n    ),\n    \"huaweiAppGallery\": coalesce(\n      huaweiAppGallery[_key == $locale][0].value,\n      huaweiAppGallery[_key == \"en-gb\"][0].value,\n    ),\n    \"appleAppStoreBadge\": coalesce(\n      appleAppStoreBadge[_key == $locale][0].value.asset->url,\n      appleAppStoreBadge[_key == \"en-gb\"][0].value.asset->url,\n    ),\n    \"googlePlayStoreBadge\": coalesce(\n      googlePlayStoreBadge[_key == $locale][0].value.asset->url,\n      googlePlayStoreBadge[_key == \"en-gb\"][0].value.asset->url,\n    ),\n    \"huaweiAppGalleryBadge\": coalesce(\n      huaweiAppGalleryBadge[_key == $locale][0].value.asset->url,\n      huaweiAppGalleryBadge[_key == \"en-gb\"][0].value.asset->url,\n    ),\n  },\n  \"social\": *[_type == \"config.social\"][0] {\n    \"Facebook\": Facebook[_key == $locale][0].value,\n    \"FacebookAPIKey\": FacebookAPIKey[_key == $locale][0].value,\n    \"Instagram\": Instagram[_key == $locale][0].value,\n    \"LinkedIn\": LinkedIn[_key == $locale][0].value,\n    \"Twitter\": Twitter[_key == $locale][0].value,\n    \"YouTube\": YouTube[_key == $locale][0].value,\n    \"TikTok\": TikTok[_key == $locale][0].value,\n  },\n  \"slugs\": {\n    \"blog\": *[_id == $blogSingletonDocId][0].slug.current,\n    \"careers\": *[_id == $careersSingletonDocId][0].slug.current,\n    \"pressReleases\": *[_id == $pressReleaseSingletonDocId][0].slug.current,\n  },\n  \"fallbackImages\": *[_type == \"config.placeholderImages\"][0] {\n    \"press\": defaultImagePress {\n      fit,\n      alt,\n      asset,\n    },\n    \"resource\": defaultImageResources {\n      fit,\n      alt,\n      asset\n    }\n  }\n}:{\"locale\":\"en-us\",\"blogSingletonDocId\":\"singleton-pages-en-us-about-food-waste-blog-home\",\"careersSingletonDocId\":\"singleton-careerPages-en-us-careers-home\",\"pressReleaseSingletonDocId\":\"singleton-pages-en-us-press-home\"}":3,"sanity-secure:{\n  \"page\": *[_type == $type && language == $locale && slug.current == $slug && (!defined($parent) || parent->slug.current == $parent) && (!defined($grandParent) || parent->parent->slug.current == $grandParent) && (!defined($greatGrandParent) || parent->parent->parent->slug.current == $greatGrandParent)][0] {\n    \n  _type,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n,\n  parent,\n  language,\n  pageVisibility,\n  seoSocial,\n  hideHeader,\n  \"_translations\": *[_type == \"translation.metadata\" && references(^._id)].translations[].value->{\n    title,\n    \"slug\": slug.current,\n    language\n  },\n  _createdAt,\n  _updatedAt,\n  publishedAt,\n  updatedAt,\n  pretitle,\n  title,\n  author->{\n    name,\n    slug,\n    \n  \"jobTitle\": coalesce(\n    jobTitle[_key == $locale][0].value,\n    jobTitle[_key == \"en-gb\"][0].value,\n  )\n,\n    image,\n    \"hasBio\": count(bio[_key == $locale][0].value[children[].text match \"?*\"]) > 0,\n  },\n  slug,\n  parent,\n  image,\n  content[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  },\n  migrated,\n  contentChoice,\n  pageContent,\n  categories\n,\n    defined($defaultPageBlocksDocId) => {\n      \"defaultPageBlocks\": *[_id == $defaultPageBlocksDocId][0].content[] {\n        \n  ...,\n  content[] {\n    \n  ...,\n  _type == \"modularContentBlocks.inner.title\"=>{\ntitle[] {\n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n},\npreTitle[] {\n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n},\ndescription[] {\n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n}\n},_type == \"modularContentBlocks.inner.baseText\"=>{\n  text[] {\n  \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n,\n  tableData {\n      ...,\n      rows[] {\n        ...,\n        cells[] {\n          ...,\n          text[] {\n            \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n          }\n        }\n      }\n    }\n  }\n},_type == \"modularContentBlocks.inner.buttonGroup\"=>{\n  ...,\n  buttons[] {\n    ...,\n    link {\n      \n  ...,\n  linkType == 'internal' => {\n    'internalAnchor': internalAnchor.internal,\n    'reference': internal->{\n      \n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n,\n    }\n  }\n\n    }\n  }\n},_type == \"modularContentBlocks.inner.salesforceForms\"=>{\n  salesforceForm->{\n  ...,\n  fieldsTexts {\n    ...,\n    noteText[] {\n      \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n,\n    },\n  },\n  platformOptions {\n    ...,\n    platformOptionsValidationMessage[] {\n      \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n,\n    },\n  },\n  blockerInputTexts {\n    ...,\n    blockerValidationMessage[] {\n      \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n,\n    },\n  }\n}},_type == \"modularContentBlocks.inner.faq\"=>{\n  \"items\": coalesce(\n    onetime.items[!($locale in coalesce(hiddenInLocales, []))] {\n    _key,\n    analyticsProperty,\n    question,\n    answer[] {\n        \n  ...,\n  content[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  }\n,\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      }\n    },\n    existing->items[!($locale in coalesce(hiddenInLocales, []))] {\n      _key,\n      \n  \"analyticsProperty\": coalesce(\n    analyticsProperty[_key == $locale][0].value,\n    analyticsProperty[_key == \"en-gb\"][0].value,\n  )\n,\n      \n  \"question\": coalesce(\n    question[_key == $locale][0].value,\n    question[_key == \"en-gb\"][0].value,\n  )\n,\n      \n  \"answer\": coalesce(\n    answer[_key == $locale][0].value,\n    answer[_key == \"en-gb\"][0].value,\n  )\n[] {\n        \n  ...,\n  content[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  }\n,\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      }\n    }\n  )\n},_type == \"modularContentBlocks.inner.statistics\"=>{\n   ...,\n   \"button\": coalesce(button[][0] {\n      ...,\n      link {\n        \n  ...,\n  linkType == 'internal' => {\n    'internalAnchor': internalAnchor.internal,\n    'reference': internal->{\n      \n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n,\n    }\n  }\n\n      },\n  }, false),\n   \"items\": coalesce(items[] {\n      _type==\"onetime\" => {\n...,\n},\n      _type==\"existing\"=> @->{\n        icon,\n        \n  \"prefix\": coalesce(\n    prefix[_key == $locale][0].value,\n    prefix[_key == \"en-gb\"][0].value,\n  )\n,\n        \n  \"stat\": coalesce(\n    stat[_key == $locale][0].value,\n    stat[_key == \"en-gb\"][0].value,\n  )\n,\n        \n  \"suffix\": coalesce(\n    suffix[_key == $locale][0].value,\n    suffix[_key == \"en-gb\"][0].value,\n  )\n,\n        \n  \"context\": coalesce(\n    context[_key == $locale][0].value,\n    context[_key == \"en-gb\"][0].value,\n  )\n,\n        \n  \"content\": coalesce(\n    content[_key == $locale][0].value,\n    content[_key == \"en-gb\"][0].value,\n  )\n,\n        \n  \"source\": coalesce(\n    source[_key == $locale][0].value,\n    source[_key == \"en-gb\"][0].value,\n  )\n,\n      }\n    }, [])\n },_type == \"modularContentBlocks.inner.people\"=>{\n    people[]->{\n      ...,\n      \n  \"jobTitle\": coalesce(\n    jobTitle[_key == $locale][0].value,\n    jobTitle[_key == \"en-gb\"][0].value,\n  )\n\n    }\n},_type == \"modularContentBlocks.inner.ticker\"=>{\n  ...,\n  items[] {\n    _type == 'onetime' => {\n      name\n    },\n    _type == 'existing' => @->{\n      name\n    }\n  },\n  logos[]->{\n    ...,\n    \n  \"partnerName\": coalesce(\n    partnerName[_key == $locale][0].value,\n    partnerName[_key == \"en-gb\"][0].value,\n  )\n,\n    \n  \"partnerLogo\": coalesce(\n    partnerLogo[_key == $locale][0].value,\n    partnerLogo[_key == \"en-gb\"][0].value,\n  )\n,\n  }\n},_type == \"modularContentBlocks.inner.callout\"=>{\n   ...,\n   \"content\": coalesce(content[] {\n      ...,\n      title[] {\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      },\n      subtitle[] {\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      },\n   }, false),\n   \"button\": coalesce(button[][0] {\n      ...,\n      link {\n        \n  ...,\n  linkType == 'internal' => {\n    'internalAnchor': internalAnchor.internal,\n    'reference': internal->{\n      \n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n,\n    }\n  }\n\n      },\n  }, false),\n },_type == \"modularContentBlocks.inner.forms\"=>{\n  ...,\n  form->{\n    \n  ...,\n  notifications[] {\n    _type,\n    _key,\n  },\n  fields[] {\n    ...,\n    richValidationMessage[] {\n      \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n    },\n    noteText[] {\n      \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n    }\n  },\n  confirmation {\n    \n  \"confirmationType\": coalesce(confirmationType, type),\n  contentRedirectUrl,\n  contentMessage[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  },\n  contentBlocks[] {\n    \n  ...,\n  _type == \"modularContentBlocks.inner.buttonGroup\" => {\n    \n  ...,\n  buttons[] {\n    ...,\n    link {\n      \n  ...,\n  linkType == 'internal' => {\n    'internalAnchor': internalAnchor.internal,\n    'reference': internal->{\n      \n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n,\n    }\n  }\n\n    }\n  }\n\n  },\n  _type == \"modularContentBlocks.inner.people\" => {\n    \n    people[]->{\n      ...,\n      \n  \"jobTitle\": coalesce(\n    jobTitle[_key == $locale][0].value,\n    jobTitle[_key == \"en-gb\"][0].value,\n  )\n\n    }\n\n  },\n  _type == \"modularContentBlocks.inner.title\" => {\n    \n  ...,\n  title[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  }\n\n  },\n  _type == \"modularContentBlocks.inner.baseText\" => {\n    \n  text[] {\n  \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n,\n  tableData {\n      ...,\n      rows[] {\n        ...,\n        cells[] {\n          ...,\n          text[] {\n            \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n          }\n        }\n      }\n    }\n  }\n\n  },\n  _type == \"modularContentBlocks.inner.faq\" => {\n    \n  \"items\": coalesce(\n    onetime.items[!($locale in coalesce(hiddenInLocales, []))] {\n    _key,\n    analyticsProperty,\n    question,\n    answer[] {\n        \n  ...,\n  content[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  }\n,\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      }\n    },\n    existing->items[!($locale in coalesce(hiddenInLocales, []))] {\n      _key,\n      \n  \"analyticsProperty\": coalesce(\n    analyticsProperty[_key == $locale][0].value,\n    analyticsProperty[_key == \"en-gb\"][0].value,\n  )\n,\n      \n  \"question\": coalesce(\n    question[_key == $locale][0].value,\n    question[_key == \"en-gb\"][0].value,\n  )\n,\n      \n  \"answer\": coalesce(\n    answer[_key == $locale][0].value,\n    answer[_key == \"en-gb\"][0].value,\n  )\n[] {\n        \n  ...,\n  content[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  }\n,\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      }\n    }\n  )\n\n  },\n  _type == \"modularContentBlocks.inner.statistics\" => {\n    \n   ...,\n   \"button\": coalesce(button[][0] {\n      ...,\n      link {\n        \n  ...,\n  linkType == 'internal' => {\n    'internalAnchor': internalAnchor.internal,\n    'reference': internal->{\n      \n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n,\n    }\n  }\n\n      },\n  }, false),\n   \"items\": coalesce(items[] {\n      _type==\"onetime\" => {\n...,\n},\n      _type==\"existing\"=> @->{\n        icon,\n        \n  \"prefix\": coalesce(\n    prefix[_key == $locale][0].value,\n    prefix[_key == \"en-gb\"][0].value,\n  )\n,\n        \n  \"stat\": coalesce(\n    stat[_key == $locale][0].value,\n    stat[_key == \"en-gb\"][0].value,\n  )\n,\n        \n  \"suffix\": coalesce(\n    suffix[_key == $locale][0].value,\n    suffix[_key == \"en-gb\"][0].value,\n  )\n,\n        \n  \"context\": coalesce(\n    context[_key == $locale][0].value,\n    context[_key == \"en-gb\"][0].value,\n  )\n,\n        \n  \"content\": coalesce(\n    content[_key == $locale][0].value,\n    content[_key == \"en-gb\"][0].value,\n  )\n,\n        \n  \"source\": coalesce(\n    source[_key == $locale][0].value,\n    source[_key == \"en-gb\"][0].value,\n  )\n,\n      }\n    }, [])\n \n  },\n  _type == \"modularContentBlocks.inner.callout\" => {\n    \n   ...,\n   \"content\": coalesce(content[] {\n      ...,\n      title[] {\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      },\n      subtitle[] {\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      },\n   }, false),\n   \"button\": coalesce(button[][0] {\n      ...,\n      link {\n        \n  ...,\n  linkType == 'internal' => {\n    'internalAnchor': internalAnchor.internal,\n    'reference': internal->{\n      \n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n,\n    }\n  }\n\n      },\n  }, false),\n \n  },\n  _type == \"modularContentBlocks.inner.ticker\" => {\n    \n  ...,\n  items[] {\n    _type == 'onetime' => {\n      name\n    },\n    _type == 'existing' => @->{\n      name\n    }\n  },\n  logos[]->{\n    ...,\n    \n  \"partnerName\": coalesce(\n    partnerName[_key == $locale][0].value,\n    partnerName[_key == \"en-gb\"][0].value,\n  )\n,\n    \n  \"partnerLogo\": coalesce(\n    partnerLogo[_key == $locale][0].value,\n    partnerLogo[_key == \"en-gb\"][0].value,\n  )\n,\n  }\n\n  },\n  _type == \"modularContentBlocks.inner.video\" => {\n    \n  },\n  _type == \"modularContentBlocks.inner.profilePicture\" => {\n    ...,\n    \"person\": person->\n  },\n  _type == \"modularContentBlocks.inner.partnerLogo\" => {\n    ...,\n    partnerLogo->{\n      ...,\n      \n  \"partnerName\": coalesce(\n    partnerName[_key == $locale][0].value,\n    partnerName[_key == \"en-gb\"][0].value,\n  )\n,\n      \n  \"partnerLogo\": coalesce(\n    partnerLogo[_key == $locale][0].value,\n    partnerLogo[_key == \"en-gb\"][0].value,\n  )\n,\n    }\n  },\n  _type == \"modularContentBlocks.inner.listing\" => {\n    \n  },\n  _type == \"modularContentBlocks.inner.tiles\" => {\n    \n...,\ntiles[] {\n  ...,\n  content[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  },\n  link {\n    ...,\n    link {\n      \n  ...,\n  linkType == 'internal' => {\n    'internalAnchor': internalAnchor.internal,\n    'reference': internal->{\n      \n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n,\n    }\n  }\n\n    },\n  },\n  \u002F\u002F Make sure that links are not included if containsLink is false\n  containsLink == false => {\n    \"link\": null,\n  }\n}\n\n  },\n  _type == \"modularContentBlocks.inner.nudge\" => {\n    \n  },\n  _type == \"modularContentBlocks.inner.solutionTiles\" => {\n    \n...,\ntiles[] {\n  ...,\n  link {\n    ...,\n    link->{\n      \n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n\n    },\n  },\n}\n\n  },\n  _type == \"modularContentBlocks.inner.campaignCounter\" => {\n    \n  },\n  _type == \"modularContentBlocks.outer.privacyControls\" => {\n    \n  ...,\n  description[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  }\n\n  },\n  _type == \"modularContentBlocks.inner.forms\" => {\n    \n  ...,\n  form->{\n    _id,\n    title,\n    submitButtonText,\n    fields[] {\n      ...,\n      richValidationMessage[] {\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      },\n      noteText[] {\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      }\n    },\n    confirmation {\n      \n  \"confirmationType\": coalesce(confirmationType, type),\n  contentRedirectUrl,\n  contentMessage[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  }\n\n    }\n  }\n\n  },\n  _type == \"modularContentBlocks.inner.salesforceForms\" => {\n    \n  ...,\n  salesforceForm->{\n    _id,\n    title,\n    formUrl,\n    formOid,\n    productInterest,\n    submitButtonText,\n    fieldsTexts {\n      ...,\n      noteText[] {\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      }\n    },\n    platformOptions {\n      ...,\n      platformOptionsValidationMessage[] {\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      }\n    },\n    blockerInputTexts {\n      ...,\n      blockerValidationMessage[] {\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      }\n    }\n  }\n\n  }\n\n  }\n\n  }\n\n  },\n},_type == \"modularContentBlocks.inner.profilePicture\"=>{\nperson->\n},_type == \"modularContentBlocks.inner.tiles\"=>{\n...,\ntiles[] {\n  ...,\n  content[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  },\n  link {\n    ...,\n    link {\n      \n  ...,\n  linkType == 'internal' => {\n    'internalAnchor': internalAnchor.internal,\n    'reference': internal->{\n      \n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n,\n    }\n  }\n\n    },\n  },\n  \u002F\u002F Make sure that links are not included if containsLink is false\n  containsLink == false => {\n    \"link\": null,\n  }\n}\n},_type == \"modularContentBlocks.inner.solutionTiles\"=>{\n...,\ntiles[] {\n  ...,\n  link {\n    ...,\n    link->{\n      \n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n\n    },\n  },\n}\n}\n\n  },\n  _type == \"modularContentBlocks.outer.carouselSection\"=>{ \n  ...,\n  preCarouselContent[] {\n    ...,\n    person->,\n    partnerLogo->{\n      ...,\n      \n  \"partnerName\": coalesce(\n    partnerName[_key == $locale][0].value,\n    partnerName[_key == \"en-gb\"][0].value,\n  )\n,\n      \n  \"partnerLogo\": coalesce(\n    partnerLogo[_key == $locale][0].value,\n    partnerLogo[_key == \"en-gb\"][0].value,\n  )\n,\n    },\n },\n slides[] {\n  ...,\n  content[] {\n    ...,\n    person->,\n    partnerLogo->{\n      ...,\n      \n  \"partnerName\": coalesce(\n    partnerName[_key == $locale][0].value,\n    partnerName[_key == \"en-gb\"][0].value,\n  )\n,\n      \n  \"partnerLogo\": coalesce(\n    partnerLogo[_key == $locale][0].value,\n    partnerLogo[_key == \"en-gb\"][0].value,\n  )\n,\n    },\n  }\n }\n },_type == \"modularContentBlocks.outer.tickerSection\"=>{ \n  ...,\n  items[] {\n    _type == 'onetime' => {\n      name\n    },\n    _type == 'existing' => @->{\n      name\n    }\n  },\n  logos[]->{\n      ...,\n      \n  \"partnerName\": coalesce(\n    partnerName[_key == $locale][0].value,\n    partnerName[_key == \"en-gb\"][0].value,\n  )\n,\n      \n  \"partnerLogo\": coalesce(\n    partnerLogo[_key == $locale][0].value,\n    partnerLogo[_key == \"en-gb\"][0].value,\n  )\n,\n  }\n },_type == \"modularContentBlocks.outer.stepsSection\"=>{ \n  ...,\n  slides[] {\n    ...,\n    content[] {\n      ...,\n      _type == \"modularContentBlocks.inner.buttonGroup\" => {\n        buttons[] {\n          ...,\n          link {\n            ...,\n            \n  ...,\n  linkType == 'internal' => {\n    'internalAnchor': internalAnchor.internal,\n    'reference': internal->{\n      \n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n,\n    }\n  }\n\n          },\n        },\n      },\n    },\n  },\n  buttons[] {\n    ...,\n    link {\n      ...,\n      \n  ...,\n  linkType == 'internal' => {\n    'internalAnchor': internalAnchor.internal,\n    'reference': internal->{\n      \n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n,\n    }\n  }\n\n      }\n    }\n },_type == \"modularContentBlocks.outer.cta\"=>{ \n  ...,\n  buttons[] {\n    ...,\n    link {\n      \n  ...,\n  linkType == 'internal' => {\n    'internalAnchor': internalAnchor.internal,\n    'reference': internal->{\n      \n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n,\n    }\n  }\n\n    }\n  }\n },_type == \"modularContentBlocks.outer.careers\"=>{ \n  ...,\n  \"defaultResultsLabels\": *[_id == \"singleton-careerPages-en-gb-careers-home\" && language == \"en-gb\"]{\n  content[][_type == \"modularContentBlocks.outer.careers\"] {resultsLabels}\n  }\n },_type == \"modularContentBlocks.outer.solutionFinder\"=>{ \n  vendorTypes[]->{\n    _id,\n    _type,\n    title,\n    icon,\n  }\n },_type == \"modularContentBlocks.outer.supportSection\"=>{ \n  supportPath->{\n    ...,\n    \n    itemChoices[] {\n      ...,\n      faqsToDisplay[]->{\n        items[!($locale in coalesce(hiddenInLocales, []))] {\n          _key,\n          analyticsProperty,\n          \n  \"question\": coalesce(\n    question[_key == $locale][0].value,\n    question[_key == \"en-gb\"][0].value,\n  )\n,\n          \n  \"answer\": coalesce(\n    answer[_key == $locale][0].value,\n    answer[_key == \"en-gb\"][0].value,\n  )\n[] {\n            \n  ...,\n  content[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  }\n,\n            \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n          }\n        }\n      },\n      formToDisplay->{\n        \n  ...,\n  notifications[] {\n    _type,\n    _key,\n  },\n  fields[] {\n    ...,\n    richValidationMessage[] {\n      \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n    },\n    noteText[] {\n      \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n    }\n  },\n  confirmation {\n    \n  \"confirmationType\": coalesce(confirmationType, type),\n  contentRedirectUrl,\n  contentMessage[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  },\n  contentBlocks[] {\n    \n  ...,\n  _type == \"modularContentBlocks.inner.buttonGroup\" => {\n    \n  ...,\n  buttons[] {\n    ...,\n    link {\n      \n  ...,\n  linkType == 'internal' => {\n    'internalAnchor': internalAnchor.internal,\n    'reference': internal->{\n      \n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n,\n    }\n  }\n\n    }\n  }\n\n  },\n  _type == \"modularContentBlocks.inner.people\" => {\n    \n    people[]->{\n      ...,\n      \n  \"jobTitle\": coalesce(\n    jobTitle[_key == $locale][0].value,\n    jobTitle[_key == \"en-gb\"][0].value,\n  )\n\n    }\n\n  },\n  _type == \"modularContentBlocks.inner.title\" => {\n    \n  ...,\n  title[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  }\n\n  },\n  _type == \"modularContentBlocks.inner.baseText\" => {\n    \n  text[] {\n  \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n,\n  tableData {\n      ...,\n      rows[] {\n        ...,\n        cells[] {\n          ...,\n          text[] {\n            \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n          }\n        }\n      }\n    }\n  }\n\n  },\n  _type == \"modularContentBlocks.inner.faq\" => {\n    \n  \"items\": coalesce(\n    onetime.items[!($locale in coalesce(hiddenInLocales, []))] {\n    _key,\n    analyticsProperty,\n    question,\n    answer[] {\n        \n  ...,\n  content[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  }\n,\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      }\n    },\n    existing->items[!($locale in coalesce(hiddenInLocales, []))] {\n      _key,\n      \n  \"analyticsProperty\": coalesce(\n    analyticsProperty[_key == $locale][0].value,\n    analyticsProperty[_key == \"en-gb\"][0].value,\n  )\n,\n      \n  \"question\": coalesce(\n    question[_key == $locale][0].value,\n    question[_key == \"en-gb\"][0].value,\n  )\n,\n      \n  \"answer\": coalesce(\n    answer[_key == $locale][0].value,\n    answer[_key == \"en-gb\"][0].value,\n  )\n[] {\n        \n  ...,\n  content[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  }\n,\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      }\n    }\n  )\n\n  },\n  _type == \"modularContentBlocks.inner.statistics\" => {\n    \n   ...,\n   \"button\": coalesce(button[][0] {\n      ...,\n      link {\n        \n  ...,\n  linkType == 'internal' => {\n    'internalAnchor': internalAnchor.internal,\n    'reference': internal->{\n      \n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n,\n    }\n  }\n\n      },\n  }, false),\n   \"items\": coalesce(items[] {\n      _type==\"onetime\" => {\n...,\n},\n      _type==\"existing\"=> @->{\n        icon,\n        \n  \"prefix\": coalesce(\n    prefix[_key == $locale][0].value,\n    prefix[_key == \"en-gb\"][0].value,\n  )\n,\n        \n  \"stat\": coalesce(\n    stat[_key == $locale][0].value,\n    stat[_key == \"en-gb\"][0].value,\n  )\n,\n        \n  \"suffix\": coalesce(\n    suffix[_key == $locale][0].value,\n    suffix[_key == \"en-gb\"][0].value,\n  )\n,\n        \n  \"context\": coalesce(\n    context[_key == $locale][0].value,\n    context[_key == \"en-gb\"][0].value,\n  )\n,\n        \n  \"content\": coalesce(\n    content[_key == $locale][0].value,\n    content[_key == \"en-gb\"][0].value,\n  )\n,\n        \n  \"source\": coalesce(\n    source[_key == $locale][0].value,\n    source[_key == \"en-gb\"][0].value,\n  )\n,\n      }\n    }, [])\n \n  },\n  _type == \"modularContentBlocks.inner.callout\" => {\n    \n   ...,\n   \"content\": coalesce(content[] {\n      ...,\n      title[] {\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      },\n      subtitle[] {\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      },\n   }, false),\n   \"button\": coalesce(button[][0] {\n      ...,\n      link {\n        \n  ...,\n  linkType == 'internal' => {\n    'internalAnchor': internalAnchor.internal,\n    'reference': internal->{\n      \n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n,\n    }\n  }\n\n      },\n  }, false),\n \n  },\n  _type == \"modularContentBlocks.inner.ticker\" => {\n    \n  ...,\n  items[] {\n    _type == 'onetime' => {\n      name\n    },\n    _type == 'existing' => @->{\n      name\n    }\n  },\n  logos[]->{\n    ...,\n    \n  \"partnerName\": coalesce(\n    partnerName[_key == $locale][0].value,\n    partnerName[_key == \"en-gb\"][0].value,\n  )\n,\n    \n  \"partnerLogo\": coalesce(\n    partnerLogo[_key == $locale][0].value,\n    partnerLogo[_key == \"en-gb\"][0].value,\n  )\n,\n  }\n\n  },\n  _type == \"modularContentBlocks.inner.video\" => {\n    \n  },\n  _type == \"modularContentBlocks.inner.profilePicture\" => {\n    ...,\n    \"person\": person->\n  },\n  _type == \"modularContentBlocks.inner.partnerLogo\" => {\n    ...,\n    partnerLogo->{\n      ...,\n      \n  \"partnerName\": coalesce(\n    partnerName[_key == $locale][0].value,\n    partnerName[_key == \"en-gb\"][0].value,\n  )\n,\n      \n  \"partnerLogo\": coalesce(\n    partnerLogo[_key == $locale][0].value,\n    partnerLogo[_key == \"en-gb\"][0].value,\n  )\n,\n    }\n  },\n  _type == \"modularContentBlocks.inner.listing\" => {\n    \n  },\n  _type == \"modularContentBlocks.inner.tiles\" => {\n    \n...,\ntiles[] {\n  ...,\n  content[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  },\n  link {\n    ...,\n    link {\n      \n  ...,\n  linkType == 'internal' => {\n    'internalAnchor': internalAnchor.internal,\n    'reference': internal->{\n      \n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n,\n    }\n  }\n\n    },\n  },\n  \u002F\u002F Make sure that links are not included if containsLink is false\n  containsLink == false => {\n    \"link\": null,\n  }\n}\n\n  },\n  _type == \"modularContentBlocks.inner.nudge\" => {\n    \n  },\n  _type == \"modularContentBlocks.inner.solutionTiles\" => {\n    \n...,\ntiles[] {\n  ...,\n  link {\n    ...,\n    link->{\n      \n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n\n    },\n  },\n}\n\n  },\n  _type == \"modularContentBlocks.inner.campaignCounter\" => {\n    \n  },\n  _type == \"modularContentBlocks.outer.privacyControls\" => {\n    \n  ...,\n  description[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  }\n\n  },\n  _type == \"modularContentBlocks.inner.forms\" => {\n    \n  ...,\n  form->{\n    _id,\n    title,\n    submitButtonText,\n    fields[] {\n      ...,\n      richValidationMessage[] {\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      },\n      noteText[] {\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      }\n    },\n    confirmation {\n      \n  \"confirmationType\": coalesce(confirmationType, type),\n  contentRedirectUrl,\n  contentMessage[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  }\n\n    }\n  }\n\n  },\n  _type == \"modularContentBlocks.inner.salesforceForms\" => {\n    \n  ...,\n  salesforceForm->{\n    _id,\n    title,\n    formUrl,\n    formOid,\n    productInterest,\n    submitButtonText,\n    fieldsTexts {\n      ...,\n      noteText[] {\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      }\n    },\n    platformOptions {\n      ...,\n      platformOptionsValidationMessage[] {\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      }\n    },\n    blockerInputTexts {\n      ...,\n      blockerValidationMessage[] {\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      }\n    }\n  }\n\n  }\n\n  }\n\n  }\n\n      },\n      \n    itemChoices[] {\n      ...,\n      faqsToDisplay[]->{\n        items[!($locale in coalesce(hiddenInLocales, []))] {\n          _key,\n          analyticsProperty,\n          \n  \"question\": coalesce(\n    question[_key == $locale][0].value,\n    question[_key == \"en-gb\"][0].value,\n  )\n,\n          \n  \"answer\": coalesce(\n    answer[_key == $locale][0].value,\n    answer[_key == \"en-gb\"][0].value,\n  )\n[] {\n            \n  ...,\n  content[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  }\n,\n            \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n          }\n        }\n      },\n      formToDisplay->{\n        \n  ...,\n  notifications[] {\n    _type,\n    _key,\n  },\n  fields[] {\n    ...,\n    richValidationMessage[] {\n      \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n    },\n    noteText[] {\n      \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n    }\n  },\n  confirmation {\n    \n  \"confirmationType\": coalesce(confirmationType, type),\n  contentRedirectUrl,\n  contentMessage[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  },\n  contentBlocks[] {\n    \n  ...,\n  _type == \"modularContentBlocks.inner.buttonGroup\" => {\n    \n  ...,\n  buttons[] {\n    ...,\n    link {\n      \n  ...,\n  linkType == 'internal' => {\n    'internalAnchor': internalAnchor.internal,\n    'reference': internal->{\n      \n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n,\n    }\n  }\n\n    }\n  }\n\n  },\n  _type == \"modularContentBlocks.inner.people\" => {\n    \n    people[]->{\n      ...,\n      \n  \"jobTitle\": coalesce(\n    jobTitle[_key == $locale][0].value,\n    jobTitle[_key == \"en-gb\"][0].value,\n  )\n\n    }\n\n  },\n  _type == \"modularContentBlocks.inner.title\" => {\n    \n  ...,\n  title[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  }\n\n  },\n  _type == \"modularContentBlocks.inner.baseText\" => {\n    \n  text[] {\n  \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n,\n  tableData {\n      ...,\n      rows[] {\n        ...,\n        cells[] {\n          ...,\n          text[] {\n            \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n          }\n        }\n      }\n    }\n  }\n\n  },\n  _type == \"modularContentBlocks.inner.faq\" => {\n    \n  \"items\": coalesce(\n    onetime.items[!($locale in coalesce(hiddenInLocales, []))] {\n    _key,\n    analyticsProperty,\n    question,\n    answer[] {\n        \n  ...,\n  content[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  }\n,\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      }\n    },\n    existing->items[!($locale in coalesce(hiddenInLocales, []))] {\n      _key,\n      \n  \"analyticsProperty\": coalesce(\n    analyticsProperty[_key == $locale][0].value,\n    analyticsProperty[_key == \"en-gb\"][0].value,\n  )\n,\n      \n  \"question\": coalesce(\n    question[_key == $locale][0].value,\n    question[_key == \"en-gb\"][0].value,\n  )\n,\n      \n  \"answer\": coalesce(\n    answer[_key == $locale][0].value,\n    answer[_key == \"en-gb\"][0].value,\n  )\n[] {\n        \n  ...,\n  content[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  }\n,\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      }\n    }\n  )\n\n  },\n  _type == \"modularContentBlocks.inner.statistics\" => {\n    \n   ...,\n   \"button\": coalesce(button[][0] {\n      ...,\n      link {\n        \n  ...,\n  linkType == 'internal' => {\n    'internalAnchor': internalAnchor.internal,\n    'reference': internal->{\n      \n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n,\n    }\n  }\n\n      },\n  }, false),\n   \"items\": coalesce(items[] {\n      _type==\"onetime\" => {\n...,\n},\n      _type==\"existing\"=> @->{\n        icon,\n        \n  \"prefix\": coalesce(\n    prefix[_key == $locale][0].value,\n    prefix[_key == \"en-gb\"][0].value,\n  )\n,\n        \n  \"stat\": coalesce(\n    stat[_key == $locale][0].value,\n    stat[_key == \"en-gb\"][0].value,\n  )\n,\n        \n  \"suffix\": coalesce(\n    suffix[_key == $locale][0].value,\n    suffix[_key == \"en-gb\"][0].value,\n  )\n,\n        \n  \"context\": coalesce(\n    context[_key == $locale][0].value,\n    context[_key == \"en-gb\"][0].value,\n  )\n,\n        \n  \"content\": coalesce(\n    content[_key == $locale][0].value,\n    content[_key == \"en-gb\"][0].value,\n  )\n,\n        \n  \"source\": coalesce(\n    source[_key == $locale][0].value,\n    source[_key == \"en-gb\"][0].value,\n  )\n,\n      }\n    }, [])\n \n  },\n  _type == \"modularContentBlocks.inner.callout\" => {\n    \n   ...,\n   \"content\": coalesce(content[] {\n      ...,\n      title[] {\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      },\n      subtitle[] {\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      },\n   }, false),\n   \"button\": coalesce(button[][0] {\n      ...,\n      link {\n        \n  ...,\n  linkType == 'internal' => {\n    'internalAnchor': internalAnchor.internal,\n    'reference': internal->{\n      \n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n,\n    }\n  }\n\n      },\n  }, false),\n \n  },\n  _type == \"modularContentBlocks.inner.ticker\" => {\n    \n  ...,\n  items[] {\n    _type == 'onetime' => {\n      name\n    },\n    _type == 'existing' => @->{\n      name\n    }\n  },\n  logos[]->{\n    ...,\n    \n  \"partnerName\": coalesce(\n    partnerName[_key == $locale][0].value,\n    partnerName[_key == \"en-gb\"][0].value,\n  )\n,\n    \n  \"partnerLogo\": coalesce(\n    partnerLogo[_key == $locale][0].value,\n    partnerLogo[_key == \"en-gb\"][0].value,\n  )\n,\n  }\n\n  },\n  _type == \"modularContentBlocks.inner.video\" => {\n    \n  },\n  _type == \"modularContentBlocks.inner.profilePicture\" => {\n    ...,\n    \"person\": person->\n  },\n  _type == \"modularContentBlocks.inner.partnerLogo\" => {\n    ...,\n    partnerLogo->{\n      ...,\n      \n  \"partnerName\": coalesce(\n    partnerName[_key == $locale][0].value,\n    partnerName[_key == \"en-gb\"][0].value,\n  )\n,\n      \n  \"partnerLogo\": coalesce(\n    partnerLogo[_key == $locale][0].value,\n    partnerLogo[_key == \"en-gb\"][0].value,\n  )\n,\n    }\n  },\n  _type == \"modularContentBlocks.inner.listing\" => {\n    \n  },\n  _type == \"modularContentBlocks.inner.tiles\" => {\n    \n...,\ntiles[] {\n  ...,\n  content[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  },\n  link {\n    ...,\n    link {\n      \n  ...,\n  linkType == 'internal' => {\n    'internalAnchor': internalAnchor.internal,\n    'reference': internal->{\n      \n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n,\n    }\n  }\n\n    },\n  },\n  \u002F\u002F Make sure that links are not included if containsLink is false\n  containsLink == false => {\n    \"link\": null,\n  }\n}\n\n  },\n  _type == \"modularContentBlocks.inner.nudge\" => {\n    \n  },\n  _type == \"modularContentBlocks.inner.solutionTiles\" => {\n    \n...,\ntiles[] {\n  ...,\n  link {\n    ...,\n    link->{\n      \n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n\n    },\n  },\n}\n\n  },\n  _type == \"modularContentBlocks.inner.campaignCounter\" => {\n    \n  },\n  _type == \"modularContentBlocks.outer.privacyControls\" => {\n    \n  ...,\n  description[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  }\n\n  },\n  _type == \"modularContentBlocks.inner.forms\" => {\n    \n  ...,\n  form->{\n    _id,\n    title,\n    submitButtonText,\n    fields[] {\n      ...,\n      richValidationMessage[] {\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      },\n      noteText[] {\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      }\n    },\n    confirmation {\n      \n  \"confirmationType\": coalesce(confirmationType, type),\n  contentRedirectUrl,\n  contentMessage[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  }\n\n    }\n  }\n\n  },\n  _type == \"modularContentBlocks.inner.salesforceForms\" => {\n    \n  ...,\n  salesforceForm->{\n    _id,\n    title,\n    formUrl,\n    formOid,\n    productInterest,\n    submitButtonText,\n    fieldsTexts {\n      ...,\n      noteText[] {\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      }\n    },\n    platformOptions {\n      ...,\n      platformOptionsValidationMessage[] {\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      }\n    },\n    blockerInputTexts {\n      ...,\n      blockerValidationMessage[] {\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      }\n    }\n  }\n\n  }\n\n  }\n\n  }\n\n      },\n      \n    itemChoices[] {\n      ...,\n      faqsToDisplay[]->{\n        items[!($locale in coalesce(hiddenInLocales, []))] {\n          _key,\n          analyticsProperty,\n          \n  \"question\": coalesce(\n    question[_key == $locale][0].value,\n    question[_key == \"en-gb\"][0].value,\n  )\n,\n          \n  \"answer\": coalesce(\n    answer[_key == $locale][0].value,\n    answer[_key == \"en-gb\"][0].value,\n  )\n[] {\n            \n  ...,\n  content[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  }\n,\n            \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n          }\n        }\n      },\n      formToDisplay->{\n        \n  ...,\n  notifications[] {\n    _type,\n    _key,\n  },\n  fields[] {\n    ...,\n    richValidationMessage[] {\n      \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n    },\n    noteText[] {\n      \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n    }\n  },\n  confirmation {\n    \n  \"confirmationType\": coalesce(confirmationType, type),\n  contentRedirectUrl,\n  contentMessage[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  },\n  contentBlocks[] {\n    \n  ...,\n  _type == \"modularContentBlocks.inner.buttonGroup\" => {\n    \n  ...,\n  buttons[] {\n    ...,\n    link {\n      \n  ...,\n  linkType == 'internal' => {\n    'internalAnchor': internalAnchor.internal,\n    'reference': internal->{\n      \n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n,\n    }\n  }\n\n    }\n  }\n\n  },\n  _type == \"modularContentBlocks.inner.people\" => {\n    \n    people[]->{\n      ...,\n      \n  \"jobTitle\": coalesce(\n    jobTitle[_key == $locale][0].value,\n    jobTitle[_key == \"en-gb\"][0].value,\n  )\n\n    }\n\n  },\n  _type == \"modularContentBlocks.inner.title\" => {\n    \n  ...,\n  title[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  }\n\n  },\n  _type == \"modularContentBlocks.inner.baseText\" => {\n    \n  text[] {\n  \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n,\n  tableData {\n      ...,\n      rows[] {\n        ...,\n        cells[] {\n          ...,\n          text[] {\n            \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n          }\n        }\n      }\n    }\n  }\n\n  },\n  _type == \"modularContentBlocks.inner.faq\" => {\n    \n  \"items\": coalesce(\n    onetime.items[!($locale in coalesce(hiddenInLocales, []))] {\n    _key,\n    analyticsProperty,\n    question,\n    answer[] {\n        \n  ...,\n  content[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  }\n,\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      }\n    },\n    existing->items[!($locale in coalesce(hiddenInLocales, []))] {\n      _key,\n      \n  \"analyticsProperty\": coalesce(\n    analyticsProperty[_key == $locale][0].value,\n    analyticsProperty[_key == \"en-gb\"][0].value,\n  )\n,\n      \n  \"question\": coalesce(\n    question[_key == $locale][0].value,\n    question[_key == \"en-gb\"][0].value,\n  )\n,\n      \n  \"answer\": coalesce(\n    answer[_key == $locale][0].value,\n    answer[_key == \"en-gb\"][0].value,\n  )\n[] {\n        \n  ...,\n  content[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  }\n,\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      }\n    }\n  )\n\n  },\n  _type == \"modularContentBlocks.inner.statistics\" => {\n    \n   ...,\n   \"button\": coalesce(button[][0] {\n      ...,\n      link {\n        \n  ...,\n  linkType == 'internal' => {\n    'internalAnchor': internalAnchor.internal,\n    'reference': internal->{\n      \n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n,\n    }\n  }\n\n      },\n  }, false),\n   \"items\": coalesce(items[] {\n      _type==\"onetime\" => {\n...,\n},\n      _type==\"existing\"=> @->{\n        icon,\n        \n  \"prefix\": coalesce(\n    prefix[_key == $locale][0].value,\n    prefix[_key == \"en-gb\"][0].value,\n  )\n,\n        \n  \"stat\": coalesce(\n    stat[_key == $locale][0].value,\n    stat[_key == \"en-gb\"][0].value,\n  )\n,\n        \n  \"suffix\": coalesce(\n    suffix[_key == $locale][0].value,\n    suffix[_key == \"en-gb\"][0].value,\n  )\n,\n        \n  \"context\": coalesce(\n    context[_key == $locale][0].value,\n    context[_key == \"en-gb\"][0].value,\n  )\n,\n        \n  \"content\": coalesce(\n    content[_key == $locale][0].value,\n    content[_key == \"en-gb\"][0].value,\n  )\n,\n        \n  \"source\": coalesce(\n    source[_key == $locale][0].value,\n    source[_key == \"en-gb\"][0].value,\n  )\n,\n      }\n    }, [])\n \n  },\n  _type == \"modularContentBlocks.inner.callout\" => {\n    \n   ...,\n   \"content\": coalesce(content[] {\n      ...,\n      title[] {\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      },\n      subtitle[] {\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      },\n   }, false),\n   \"button\": coalesce(button[][0] {\n      ...,\n      link {\n        \n  ...,\n  linkType == 'internal' => {\n    'internalAnchor': internalAnchor.internal,\n    'reference': internal->{\n      \n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n,\n    }\n  }\n\n      },\n  }, false),\n \n  },\n  _type == \"modularContentBlocks.inner.ticker\" => {\n    \n  ...,\n  items[] {\n    _type == 'onetime' => {\n      name\n    },\n    _type == 'existing' => @->{\n      name\n    }\n  },\n  logos[]->{\n    ...,\n    \n  \"partnerName\": coalesce(\n    partnerName[_key == $locale][0].value,\n    partnerName[_key == \"en-gb\"][0].value,\n  )\n,\n    \n  \"partnerLogo\": coalesce(\n    partnerLogo[_key == $locale][0].value,\n    partnerLogo[_key == \"en-gb\"][0].value,\n  )\n,\n  }\n\n  },\n  _type == \"modularContentBlocks.inner.video\" => {\n    \n  },\n  _type == \"modularContentBlocks.inner.profilePicture\" => {\n    ...,\n    \"person\": person->\n  },\n  _type == \"modularContentBlocks.inner.partnerLogo\" => {\n    ...,\n    partnerLogo->{\n      ...,\n      \n  \"partnerName\": coalesce(\n    partnerName[_key == $locale][0].value,\n    partnerName[_key == \"en-gb\"][0].value,\n  )\n,\n      \n  \"partnerLogo\": coalesce(\n    partnerLogo[_key == $locale][0].value,\n    partnerLogo[_key == \"en-gb\"][0].value,\n  )\n,\n    }\n  },\n  _type == \"modularContentBlocks.inner.listing\" => {\n    \n  },\n  _type == \"modularContentBlocks.inner.tiles\" => {\n    \n...,\ntiles[] {\n  ...,\n  content[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  },\n  link {\n    ...,\n    link {\n      \n  ...,\n  linkType == 'internal' => {\n    'internalAnchor': internalAnchor.internal,\n    'reference': internal->{\n      \n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n,\n    }\n  }\n\n    },\n  },\n  \u002F\u002F Make sure that links are not included if containsLink is false\n  containsLink == false => {\n    \"link\": null,\n  }\n}\n\n  },\n  _type == \"modularContentBlocks.inner.nudge\" => {\n    \n  },\n  _type == \"modularContentBlocks.inner.solutionTiles\" => {\n    \n...,\ntiles[] {\n  ...,\n  link {\n    ...,\n    link->{\n      \n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n\n    },\n  },\n}\n\n  },\n  _type == \"modularContentBlocks.inner.campaignCounter\" => {\n    \n  },\n  _type == \"modularContentBlocks.outer.privacyControls\" => {\n    \n  ...,\n  description[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  }\n\n  },\n  _type == \"modularContentBlocks.inner.forms\" => {\n    \n  ...,\n  form->{\n    _id,\n    title,\n    submitButtonText,\n    fields[] {\n      ...,\n      richValidationMessage[] {\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      },\n      noteText[] {\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      }\n    },\n    confirmation {\n      \n  \"confirmationType\": coalesce(confirmationType, type),\n  contentRedirectUrl,\n  contentMessage[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  }\n\n    }\n  }\n\n  },\n  _type == \"modularContentBlocks.inner.salesforceForms\" => {\n    \n  ...,\n  salesforceForm->{\n    _id,\n    title,\n    formUrl,\n    formOid,\n    productInterest,\n    submitButtonText,\n    fieldsTexts {\n      ...,\n      noteText[] {\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      }\n    },\n    platformOptions {\n      ...,\n      platformOptionsValidationMessage[] {\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      }\n    },\n    blockerInputTexts {\n      ...,\n      blockerValidationMessage[] {\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      }\n    }\n  }\n\n  }\n\n  }\n\n  }\n\n      },\n      \n    }\n  \n    }\n  \n    }\n  ,\n  }\n },_type == \"modularContentBlocks.outer.signatureGenerator\"=>{ \n  signatureGeneratorFragment->{\n    ...,\n    },\n    \"defaultPronouns\": *[_type == \"fragments.signatureGenerator\" && language == \"en-gb\"]{\n      pronouns,\n    }\n },_type == \"modularContentBlocks.outer.referral\"=>{ \n  ...,\n  descriptionUnhappy[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  },\n  description[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  },\n },_type == \"modularContentBlocks.outer.cookieList\"=>{ \n  \u002F\u002F No fields needed for CookieList\n },_type == \"modularContentBlocks.outer.locationFinder\"=>{ \n  ...,\n  \"staticTranslations\": *[\n      _type == \"fragments.surpriseBag\" && language == $locale][0],\n },_type == \"modularContentBlocks.outer.privacyControls\"=>{ \n  ...,\n  description[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  }\n }\n\n      },\n    },\n  },\n}:{\"type\":\"aboutFoodWaste.blog\",\"defaultPageBlocksDocId\":\"singleton-defaultBlocks-en-us-about-food-waste-blog-single-default-blocks\",\"locale\":\"en-us\",\"greatGrandParent\":null,\"grandParent\":null,\"parent\":\"blog\",\"slug\":\"foot-traffic-analytics-traditional-vs-modern-tools\"}":327,"sanity-secure:\n    *[ _type == $taxonomy && language == \"en-us\"] {\n      _id,\n      title,\n      \"slug\": slug.current,\n    }\n  :{\"taxonomy\":\"\"}":1153,"sanity-secure:{\n    \"totalPosts\": count(*[_type == $type && (!defined($locale) || language == $locale) && (!defined($activeFilter) || references(*[_type==$taxonomy && (slug.current in $activeFilter)]._id))]),\n    \"posts\": *[_type == $type && (!defined($locale) || language == $locale) && (!defined($activeFilter) || references(*[_type==$taxonomy && (slug.current in $activeFilter)]._id))] | order(publishedAt desc) [$sliceStart...$sliceEnd] {\n    _id,\n    _createdAt,\n    publishedAt,\n    updatedAt,\n    language,\n    title,\n    pretitle,\n    image,\n    excerpt,\n    migrated,\n    categories[]->{\n      title,\n      \"slug\": slug.current,\n    },\n    \"content\": pt::text(content),\n    \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n,\n    \"file\": file.asset->,\n    url\n    }\n  }:{\"type\":\"aboutFoodWaste.blog\",\"locale\":\"en-us\",\"page\":1,\"sliceStart\":0,\"sliceEnd\":4,\"activeFilter\":null,\"taxonomy\":\"\",\"sanityKey\":\"listing_vwglvq\"}":1154},{"appStores":4,"defaultSeo":10,"fallbackImages":21,"regionTheme":30,"slugs":320,"social":324},{"appleAppStore":5,"appleAppStoreBadge":6,"googlePlayStore":5,"googlePlayStoreBadge":7,"huaweiAppGallery":5,"huaweiAppGalleryBadge":8,"modalTitleAppStoreDownload":9},"https:\u002F\u002Ftgtg.onelink.me\u002FOGjG\u002Fafd50hls","https:\u002F\u002Fcdn.sanity.io\u002Fimages\u002Fnqimd3nr\u002Fproduction\u002Fceed6a2b4247d22d0e6f9425cad1d5c39af762fe-480x160.png","https:\u002F\u002Fcdn.sanity.io\u002Fimages\u002Fnqimd3nr\u002Fproduction\u002F68072d9f747a9e089548846cecc588ef52bb624e-540x160.png",null,"Download the app and start saving delicious food today",{"favicon":11,"metaDescription":8,"metaDescriptionFallback":14,"metaTitle":8,"metaTitleFallback":15,"mobileAppDescription":8,"mobileAppDescriptionFallback":8,"siteTitle":8,"siteUrl":16,"socialImage":17,"titleSeparator":19,"withSiteTitle":20},{"_ref":12,"_type":13},"image-eb37301e40a80bb500e31e5a939924c582ad7744-512x512-png","reference","The app that lets customers rescue unsold food from shops and restaurants to save it from going to waste. Try it today.","Join Our Food Waste Movement","https:\u002F\u002Ftoogoodtogo.com",{"_ref":18,"_type":13},"image-e45b68b658778f2849b920af8e626567ec51d94b-1440x818-jpg","–","append",{"press":22,"resource":26},{"alt":8,"asset":23,"fit":25},{"_ref":24,"_type":13},"image-b78d00b015d990a35bc429a7b3a849a300872fe5-512x340-png","cover",{"alt":27,"asset":28,"fit":25},"a collection of brochures with one that says 2022 in numbers",{"_ref":29,"_type":13},"image-21d8db28cd1bbe29c6c986dd4798ec9ec79ace1b-1024x680-png",{"_createdAt":31,"_id":32,"_rev":33,"_type":34,"_updatedAt":35,"activeAnnouncement":8,"homepage":36,"language":38,"mainFooter":39,"mainNav":141,"mainNavigation":143},"2024-02-06T12:02:28Z","singleton-theme-en-us","S2mxzCT7dq51nqm7vwud0T","theme","2024-07-02T08:23:41Z",{"_ref":37,"_type":13},"singleton-pages-en-us-homepage","en-us",{"footnote":8,"legalLinks":40,"pageLinks":91,"socialLinks":112},[41,50,55,60,65,70,75,80,86],{"_key":42,"_type":43,"newWindow":44,"otherLocales":45,"reference":46,"title":49},"f8119a1b1bf5","link.internal",true,false,{"_type":47,"locale":38,"slug":48},"legalPages","\u002Flegal","Legal",{"_key":51,"_type":43,"newWindow":44,"otherLocales":45,"reference":52,"title":54},"6708b9b870b1",{"_type":47,"locale":38,"slug":53},"\u002Flegal\u002Fprivacy","Privacy Policy",{"_key":56,"_type":43,"newWindow":44,"otherLocales":45,"reference":57,"title":59},"27a9f2676a90",{"_type":47,"locale":38,"slug":58},"\u002Flegal\u002Fcookie-policy","Cookie Policy",{"_key":61,"_type":43,"newWindow":45,"otherLocales":45,"reference":62,"title":64},"10c9c20bc5f2",{"_type":47,"locale":38,"slug":63},"\u002Flegal\u002Fterms-and-conditions-using-the-app","Terms & Conditions",{"_key":66,"_type":43,"newWindow":44,"otherLocales":45,"reference":67,"title":69},"173270383b82",{"_type":47,"locale":38,"slug":68},"\u002Flegal\u002Fcontact-us","Contact us",{"_key":71,"_type":43,"newWindow":44,"otherLocales":45,"reference":72,"title":74},"5a9de968a793",{"_type":47,"locale":38,"slug":73},"\u002Flegal\u002Fdsa-disclosure","DSA Disclosure",{"_key":76,"_type":43,"newWindow":44,"otherLocales":45,"reference":77,"title":79},"053b1f8cd505",{"_type":47,"locale":38,"slug":78},"\u002Flegal\u002Fprivacy-settings","Do Not Sell or Share My Data",{"_key":81,"_type":43,"newWindow":44,"otherLocales":45,"reference":82,"title":85},"37636b5315eb",{"_type":83,"locale":38,"slug":84},"pages","\u002Ftgtg-claims","Food Waste Sources",{"_key":87,"_type":88,"newWindow":44,"title":89,"url":90},"4431596f1003","link.external","Status","https:\u002F\u002Fstatus.toogoodtogo.com\u002F",[92,98,103,108],{"_key":93,"_type":43,"newWindow":8,"otherLocales":45,"reference":94,"title":97},"5b7e3a106f9e",{"_type":95,"locale":38,"slug":96},"careerPages","\u002Fcareers","Careers",{"_key":99,"_type":43,"newWindow":8,"otherLocales":45,"reference":100,"title":102},"50962d914fe4",{"_type":83,"locale":38,"slug":101},"\u002Fpress","Press",{"_key":104,"_type":43,"newWindow":8,"otherLocales":45,"reference":105,"title":107},"78914bcedf91",{"_type":83,"locale":38,"slug":106},"\u002Fsupport","Support",{"_key":109,"_type":88,"newWindow":44,"title":110,"url":111},"280fc737f6b5","Mystore","https:\u002F\u002Fstore.toogoodtogo.com\u002Flogin",[113,119,123,127,132,136],{"_key":114,"_type":115,"icon":116,"title":117,"url":118},"98a17a45c700","link.social","Linkedin","LinkedIn","https:\u002F\u002Fwww.linkedin.com\u002Fcompany\u002Ftoo-good-to-go",{"_key":120,"_type":115,"icon":121,"title":121,"url":122},"fd26a3b7a123","Instagram","https:\u002F\u002Fwww.instagram.com\u002Ftoogoodtogo.usa\u002F",{"_key":124,"_type":115,"icon":125,"title":125,"url":126},"5a6f37dc5cfe","Facebook","https:\u002F\u002Fwww.facebook.com\u002FtoogoodtogoUSA\u002F",{"_key":128,"_type":115,"icon":129,"title":130,"url":131},"7abf4217cfde","Tiktok","Tik Tok","https:\u002F\u002Fwww.tiktok.com\u002F@toogoodtogo",{"_key":133,"_type":115,"icon":134,"title":134,"url":135},"c949f075e758","Youtube","https:\u002F\u002Fwww.youtube.com\u002Fchannel\u002FUCBonm_44z7UL0OvhHksBCAw",{"_key":137,"_type":115,"icon":138,"title":139,"url":140},"31d5e2c397ef","X_icon","X","https:\u002F\u002Fwww.twitter.com\u002Ftoogoodtogo",{"_ref":142,"_type":13},"AQVKCBGGRXIlMTy62nqL6C",{"menuActions":144,"mobileHeaderActionKey":146,"topLevelMenuItems":165},[145,153,160],{"_key":146,"_type":147,"appstoreLink":148,"button":8,"externalLink":8,"internalLink":8,"ssuLink":8},"b31127a48261","newHeaderAction.appstoreLink",{"_type":149,"buttonColor":150,"buttonText":151,"variant":152},"appstoreLink","white","Download app","automatic",{"_key":154,"_type":155,"appstoreLink":8,"button":8,"externalLink":8,"internalLink":8,"ssuLink":156},"d3080ad0695e","newHeaderAction.ssuLink",{"_type":157,"newWindow":44,"title":158,"url":159},"link.ssu","Sign up as Business","https:\u002F\u002Fstore.toogoodtogo.com\u002Fonboarding",{"_key":161,"_type":162,"appstoreLink":8,"button":8,"externalLink":163,"internalLink":8,"ssuLink":8},"ab3a15158657","newHeaderAction.externalLink",{"_type":88,"newWindow":44,"title":164,"url":111},"MyStore login",[166,249],{"additionalInfo":8,"submenuLists":167,"title":248},[168,193,229],{"submenuListItems":169,"submenuListTitle":192},[170,175,180,186],{"_key":171,"_type":43,"newWindow":45,"otherLocales":45,"reference":172,"title":174},"b7256c5acbef",{"_type":83,"locale":38,"slug":173},"\u002Fhow-to-collect-too-good-to-go","How to collect a Too Good To Go surprise bag?",{"_key":176,"_type":43,"newWindow":45,"otherLocales":45,"reference":177,"title":179},"7b7825c8941e",{"_type":83,"locale":38,"slug":178},"\u002Fhow-does-the-app-work","How does the app work?",{"_key":181,"_type":43,"newWindow":45,"otherLocales":45,"reference":182,"title":185},"d7cca2808225",{"_type":183,"locale":38,"slug":184},"aboutUs.pages","\u002Fabout-us\u002Fin-my-area","Too Good To Go in my area",{"_key":187,"_type":43,"newWindow":45,"otherLocales":45,"reference":188,"title":191},"d2321ab19b10",{"_type":189,"locale":38,"slug":190},"surpriseBagHome","\u002Ffind","Save good food near you","The app",{"submenuListItems":194,"submenuListTitle":228},[195,200,205,210,215,218,223],{"_key":196,"_type":43,"newWindow":45,"otherLocales":45,"reference":197,"title":199},"9732bb328b6a",{"_type":183,"locale":38,"slug":198},"\u002Fabout-us","About Too Good To Go",{"_key":201,"_type":43,"newWindow":45,"otherLocales":45,"reference":202,"title":204},"ac2fe81a6053",{"_type":183,"locale":38,"slug":203},"\u002Fabout-us\u002Four-history","Our history",{"_key":206,"_type":43,"newWindow":45,"otherLocales":45,"reference":207,"title":209},"901aa40c89be",{"_type":183,"locale":38,"slug":208},"\u002Fabout-us\u002Fb-corp","B Corp",{"_key":211,"_type":43,"newWindow":45,"otherLocales":45,"reference":212,"title":214},"cc89fcc93d23",{"_type":183,"locale":38,"slug":213},"\u002Fabout-us\u002Fesg","ESG",{"_key":216,"_type":43,"newWindow":45,"otherLocales":45,"reference":217,"title":97},"0c358724c797",{"_type":95,"locale":38,"slug":96},{"_key":219,"_type":43,"newWindow":45,"otherLocales":45,"reference":220,"title":222},"1037fa14f9ca",{"_type":183,"locale":38,"slug":221},"\u002Fabout-us\u002Feducation-hub","Education hub",{"_key":224,"_type":43,"newWindow":45,"otherLocales":45,"reference":225,"title":227},"9c393af11ea7",{"_type":83,"locale":38,"slug":226},"\u002Fimpact-report","Impact report","About us",{"submenuListItems":230,"submenuListTitle":247},[231,237,242],{"_key":232,"_type":43,"newWindow":45,"otherLocales":45,"reference":233,"title":236},"54eaf498f7a6",{"_type":234,"locale":38,"slug":235},"aboutFoodWaste.pages","\u002Fabout-food-waste","Food waste facts",{"_key":238,"_type":43,"newWindow":45,"otherLocales":45,"reference":239,"title":241},"cf761fbe8e3f",{"_type":83,"locale":38,"slug":240},"\u002Fresources","Resources",{"_key":243,"_type":43,"newWindow":45,"otherLocales":45,"reference":244,"title":246},"65154cd55a3f",{"_type":83,"locale":38,"slug":245},"\u002Fblog","Too Good To Go blog","About food waste","About",{"additionalInfo":250,"submenuLists":294,"title":319},[251,263,280],{"_key":252,"_type":253,"children":254,"markDefs":261,"style":262},"3fdc88e12206","block",[255],{"_key":256,"_type":257,"marks":258,"text":260},"533e0f75264b","span",[259],"strong","Current stats",[],"normal",{"_key":264,"_type":253,"children":265,"markDefs":279,"style":262},"2acb78382842",[266,270,275],{"_key":267,"_type":257,"marks":268,"text":269},"bcf236ab58a3",[],"\n",{"_key":271,"_type":272,"dataType":273,"text":274},"57cdc8edcaf4","data","statistics","120 million",{"_key":276,"_type":257,"marks":277,"text":278},"2fca042e3d55",[]," registered users on the Too Good To Go app.\n",[],{"_key":281,"_type":253,"children":282,"markDefs":293,"style":262},"5b7478b4863e",[283,286,289],{"_key":276,"_type":257,"marks":284,"text":285},[],"And ",{"_key":287,"_type":272,"dataType":273,"text":288},"bc032c2b02ec","180,000",{"_key":290,"_type":257,"marks":291,"text":292},"301cb2e013ea",[]," businesses.",[],[295],{"submenuListItems":296,"submenuListTitle":318},[297,303,308,313],{"_key":298,"_type":43,"newWindow":45,"otherLocales":45,"reference":299,"title":302},"fc776181be24",{"_type":300,"locale":38,"slug":301},"businessSolutions.solution","\u002Fsurplus-food-marketplace","Marketplace surprise bags",{"_key":304,"_type":43,"newWindow":45,"otherLocales":45,"reference":305,"title":307},"659448c75521",{"_type":300,"locale":38,"slug":306},"\u002Fplatform","Too Good To Go Platform",{"_key":309,"_type":43,"newWindow":45,"otherLocales":45,"reference":310,"title":312},"e6f8af094b56",{"_type":300,"locale":38,"slug":311},"\u002Flook-smell-taste","Date Labeling initiative",{"_key":314,"_type":43,"newWindow":45,"otherLocales":45,"reference":315,"title":317},"edc94aab8074",{"_type":83,"locale":38,"slug":316},"\u002Ffood-waste-solution","Find out more","Business solutions","Business",{"blog":321,"careers":322,"pressReleases":323},"blog","careers","press",{"Facebook":126,"FacebookAPIKey":325,"Instagram":122,"LinkedIn":118,"TikTok":8,"Twitter":326,"YouTube":8},"3506013279621180","https:\u002F\u002Ftwitter.com\u002Ftoogoodtogo",{"page":328},{"_createdAt":329,"_translations":330,"_type":331,"_updatedAt":332,"author":8,"categories":8,"content":333,"contentChoice":1030,"defaultPageBlocks":1031,"hideHeader":45,"image":1135,"language":38,"migrated":8,"pageContent":8,"pageVisibility":1140,"parent":1141,"pretitle":1142,"publishedAt":1143,"seoSocial":1144,"slug":1150,"title":1146,"updatedAt":8},"2026-04-03T16:38:18Z",[],"aboutFoodWaste.blog","2026-04-07T18:19:24Z",[334,342,362,370,378,386,395,425,443,451,465,477,489,501,509,517,525,534,542,550,558,566,574,582,590,598,606,614,622,630,638,646,654,662,670,678,686,694,702,710,718,726,734,742,750,758,766,774,782,790,798,806,814,833,841,860,868,876,884,892,900,908,916,926,934,942,950,958,966,974,982,990,998,1006,1014,1022],{"_key":335,"_type":253,"children":336,"markDefs":341,"style":262},"4fdb32765d20",[337],{"_key":338,"_type":257,"marks":339,"text":340},"00ecf7e6468d",[],"Physical foot traffic is one of the most valuable data points a food retailer can have, yet many stores are either not tracking it at all or relying on methods that were considered advanced a decade ago.",[],{"_key":343,"_type":253,"children":344,"markDefs":358,"style":262},"f5cdd6047a39",[345,349,354],{"_key":346,"_type":257,"marks":347,"text":348},"55937d8c1d7b",[],"Today, the global in-store analytics market is valued at $4.17 billion and projected to reach $16.51 billion by 2030 at a 21.8% CAGR (Compound Annual Growth Rate), according to ",{"_key":350,"_type":257,"marks":351,"text":353},"dd024cf5e378",[352],"9b0e4daba7e1","Grand View Research",{"_key":355,"_type":257,"marks":356,"text":357},"030fcac09317",[],". Shopper traffic analysis alone accounts for about 28% of that revenue.",[359],{"_key":352,"_type":360,"href":361,"internalAnchor":8,"newWindow":8,"reference":8},"urlLink","https:\u002F\u002Fwww.grandviewresearch.com\u002Findustry-analysis\u002Fin-store-analytics-market-report",{"_key":363,"_type":253,"children":364,"markDefs":369,"style":262},"f926f177c645",[365],{"_key":366,"_type":257,"marks":367,"text":368},"c36b9c40f9b0",[],"Retailers investing in foot traffic analytics are not just counting customers at the door; they are building a clearer understanding of how people move through their stores, when demand actually happens, and where opportunities are being missed. Foot traffic insights help store owners and managers optimize staffing, better match production to demand, reduce perishable waste, and drive measurable revenue gains.",[],{"_key":371,"_type":253,"children":372,"markDefs":377,"style":262},"c836521bb8f2",[373],{"_key":374,"_type":257,"marks":375,"text":376},"55eac18f72b4",[],"For food retailers specifically, the stakes are higher. Margins are tight, inventory is perishable, and the difference between peak and off-peak hours can be significant. Knowing when customers arrive, how long they stay, and how they move through the store helps turn daily uncertainty into more confident, consistent decisions.",[],{"_key":379,"_type":253,"children":380,"markDefs":385,"style":262},"d288c2e6023d",[381],{"_key":382,"_type":257,"marks":383,"text":384},"28a8c673669f",[],"This guide breaks down the main foot traffic tracking methods available today, what each one delivers, and where modern approaches are starting to replace traditional tools.",[],{"_key":387,"_type":253,"children":388,"markDefs":393,"style":394},"6f0ab4204452",[389],{"_key":390,"_type":257,"marks":391,"text":392},"1af4066f8731",[259],"Why Foot Traffic Data Matters for Food Retailers",[],"h2",{"_key":396,"_type":253,"children":397,"markDefs":420,"style":262},"8b263ba5d5a4",[398,402,407,411,416],{"_key":399,"_type":257,"marks":400,"text":401},"e0540e845ec9",[],"Food retail is one of the most data-driven environments in the industry, and that trend continues to grow. According to a 2025 joint report from ",{"_key":403,"_type":257,"marks":404,"text":406},"9a866867367e",[405],"8341aff828df","FMI and NielsenIQ",{"_key":408,"_type":257,"marks":409,"text":410},"0cdf32f83605",[],", 92% of food retailers now use technology, including AI, to personalize shopping and marketing. The industry spent ",{"_key":412,"_type":257,"marks":413,"text":415},"4b37721573cf",[414],"4e435cbe5d8f","more than $10 billion on technology in 2023 alone",{"_key":417,"_type":257,"marks":418,"text":419},"acc02fe8bd74",[],".",[421,423],{"_key":405,"_type":360,"href":422,"internalAnchor":8,"newWindow":8,"reference":8},"https:\u002F\u002Fwww.fmi.org\u002Fnewsroom\u002Fnews-archive\u002Fview\u002F2025\u002F02\u002F03\u002Fnew-fmi---nielseniq-report-explores-grocery-shopping-in-the-digital-age",{"_key":414,"_type":360,"href":424,"internalAnchor":8,"newWindow":8,"reference":8},"https:\u002F\u002Fwww.fmi.org\u002Fblog\u002Fview\u002Ffmi-blog\u002F2024\u002F07\u002F22\u002Fdata-analytics-and-ai-trends-in-the-food-industry",{"_key":426,"_type":253,"children":427,"markDefs":440,"style":262},"8609ff9ac806",[428,432,437],{"_key":429,"_type":257,"marks":430,"text":431},"7e61baae1d0e",[],"The return on that investment is clear. Retailers using geo-location technology achieve 104% greater profit growth, and early adopters see profitability 99% higher than their peers, according to an IHL Group study cited by ",{"_key":433,"_type":257,"marks":434,"text":436},"020acbf1d2ec",[435],"4813dc6c53d7","Chain Store Age",{"_key":438,"_type":257,"marks":439,"text":419},"5eaae59752ac",[],[441],{"_key":435,"_type":360,"href":442,"internalAnchor":8,"newWindow":8,"reference":8},"https:\u002F\u002Fchainstoreage.com\u002Fihl-group-early-tech-adopters-outperform-peers-heres-how",{"_key":444,"_type":253,"children":445,"markDefs":450,"style":262},"179a2b1a8fb0",[446],{"_key":447,"_type":257,"marks":448,"text":449},"1c6eb2b76ee1",[],"Foot traffic data plays a direct role in several everyday decisions that shape both performance and waste:",[],{"_key":452,"_type":253,"children":453,"level":462,"listItem":463,"markDefs":464,"style":262},"18a4bc95a3d9",[454,458],{"_key":455,"_type":257,"marks":456,"text":457},"20d5d0f830ee",[259],"Staffing",{"_key":459,"_type":257,"marks":460,"text":461},"246efa827472",[],": aligning labor hours with real customer demand instead of relying on past assumptions",1,"bullet",[],{"_key":466,"_type":253,"children":467,"level":462,"listItem":463,"markDefs":476,"style":262},"00a8b35d44c3",[468,472],{"_key":469,"_type":257,"marks":470,"text":471},"135ba91fff24",[259],"Inventory and production",{"_key":473,"_type":257,"marks":474,"text":475},"9510f96f5377",[],": preparing the right amount of food for each daypart",[],{"_key":478,"_type":253,"children":479,"level":462,"listItem":463,"markDefs":488,"style":262},"b9a7aba60354",[480,484],{"_key":481,"_type":257,"marks":482,"text":483},"dc8eb8d9ae98",[259],"Store layout",{"_key":485,"_type":257,"marks":486,"text":487},"522e85903b30",[],": understanding which areas attract attention and drive engagement",[],{"_key":490,"_type":253,"children":491,"level":462,"listItem":463,"markDefs":500,"style":262},"c0e259a7e3e2",[492,496],{"_key":493,"_type":257,"marks":494,"text":495},"3fb9e65f9dde",[259],"Perishable waste reduction",{"_key":497,"_type":257,"marks":498,"text":499},"c520c222d44c",[],": identifying slower periods where surplus is more likely to build",[],{"_key":502,"_type":253,"children":503,"markDefs":508,"style":262},"2df878d4b9cb",[504],{"_key":505,"_type":257,"marks":506,"text":507},"7a07d345e76f",[],"When these decisions are guided by real behavior instead of guesswork, retailers can operate more efficiently while wasting less food.",[],{"_key":510,"_type":253,"children":511,"markDefs":516,"style":394},"34d2bdc73b53",[512],{"_key":513,"_type":257,"marks":514,"text":515},"66e6216058e9",[259],"Traditional Foot Traffic Tracking Methods",[],{"_key":518,"_type":253,"children":519,"markDefs":524,"style":262},"67f14bb0fd86",[520],{"_key":521,"_type":257,"marks":522,"text":523},"4b8a9518a65a",[],"Traditional methods are still widely used, especially among independent retailers and smaller chains. These methods are often chosen because they are simple to implement and require minimal upfront investment. Over time, however, their limitations can make it harder to rely on the data they provide.",[],{"_key":526,"_type":253,"children":527,"markDefs":532,"style":533},"2a87a45b1c2e",[528],{"_key":529,"_type":257,"marks":530,"text":531},"f21caeb93c0e",[],"Manual Counting",[],"h3",{"_key":535,"_type":253,"children":536,"markDefs":541,"style":262},"c0dd913d1d08",[537],{"_key":538,"_type":257,"marks":539,"text":540},"9a25df21bf08",[],"Manual counting involves a staff member using a handheld clicker to track each person entering the store. It is one of the simplest methods to implement and requires little to no upfront investment, which is why some smaller retailers still rely on it.",[],{"_key":543,"_type":253,"children":544,"markDefs":549,"style":262},"1d696a64ae3a",[545],{"_key":546,"_type":257,"marks":547,"text":548},"c7c986a31b87",[],"However, the method depends entirely on consistent human attention, which can be difficult to maintain throughout the day, especially during busy periods. Accuracy can drop when multiple people enter at once or when staff are balancing other responsibilities. It also requires dedicated staff time, which may not always be practical in fast-paced food retail environments where teams are already managing customers, inventory, and operations.",[],{"_key":551,"_type":253,"children":552,"markDefs":557,"style":262},"a1838904a328",[553],{"_key":554,"_type":257,"marks":555,"text":556},"f6a47460fa12",[],"Beyond basic counts, manual tracking does not provide visibility into what happens inside the store. It cannot show how long customers stay, where they go, or how traffic changes throughout the day.",[],{"_key":559,"_type":253,"children":560,"markDefs":565,"style":262},"9e408770f711",[561],{"_key":562,"_type":257,"marks":563,"text":564},"872b0f31deb0",[],"For retailers looking to make more informed decisions, these limitations can make manual counting harder to rely on over time.",[],{"_key":567,"_type":253,"children":568,"markDefs":573,"style":533},"849f73d64ad2",[569],{"_key":570,"_type":257,"marks":571,"text":572},"ddf48b780866",[],"Infrared Beam Sensors",[],{"_key":575,"_type":253,"children":576,"markDefs":581,"style":262},"d17100a14a66",[577],{"_key":578,"_type":257,"marks":579,"text":580},"b06c3ee07824",[],"Infrared sensors work by projecting a beam across a doorway and counting each time it is interrupted. They are relatively simple to install and are often used as a step up from manual counting. In practice, however, accuracy can vary depending on the store layout and how customers enter. When multiple people walk through the entrance at the same time, they may be counted as a single visit, which can lead to undercounting. Basic systems can also struggle to distinguish between people entering and exiting, making it harder to understand true visitor numbers.",[],{"_key":583,"_type":253,"children":584,"markDefs":589,"style":262},"10e17d0f5da7",[585],{"_key":586,"_type":257,"marks":587,"text":588},"df39355205aa",[],"While infrared sensors provide a more automated approach than manual counting, they still offer limited insight beyond how many people crossed the threshold.",[],{"_key":591,"_type":253,"children":592,"markDefs":597,"style":533},"c375c41e3e91",[593],{"_key":594,"_type":257,"marks":595,"text":596},"cadb29707d11",[],"Turnstiles and Mechanical Door Counters",[],{"_key":599,"_type":253,"children":600,"markDefs":605,"style":262},"7437a43ebce2",[601],{"_key":602,"_type":257,"marks":603,"text":604},"303345e45a1d",[],"Turnstiles count entries with a high level of accuracy because each movement corresponds to one person passing through. They remain common in supermarkets for managing entry and exit flow.",[],{"_key":607,"_type":253,"children":608,"markDefs":613,"style":262},"351b641f6b9a",[609],{"_key":610,"_type":257,"marks":611,"text":612},"3d619cf41cdf",[],"However, they introduce a physical barrier that can slow down the customer experience and are not practical for many food retail formats, such as cafés or smaller stores. They also only provide basic entry counts, without any visibility into what happens once customers are inside.",[],{"_key":615,"_type":253,"children":616,"markDefs":621,"style":394},"129a6efc3748",[617],{"_key":618,"_type":257,"marks":619,"text":620},"6ac2ecd5137f",[259],"Limitations Across All Traditional Methods",[],{"_key":623,"_type":253,"children":624,"markDefs":629,"style":262},"1527ed7951b2",[625],{"_key":626,"_type":257,"marks":627,"text":628},"fe3f3abb399e",[],"The shared limitation of traditional tools is that they stop at the door. They can tell you how many people entered, but not what happened next. They do not show where customers went, how long they stayed, whether they made a purchase, or when traffic slows during quieter periods.",[],{"_key":631,"_type":253,"children":632,"markDefs":637,"style":262},"070872367dc3",[633],{"_key":634,"_type":257,"marks":635,"text":636},"23e5c7f71959",[],"For food retailers managing perishable inventory across multiple times of day, that missing context can make it harder to adjust in real time and reduce unnecessary waste.",[],{"_key":639,"_type":253,"children":640,"markDefs":645,"style":394},"0a1aae4a6cbf",[641],{"_key":642,"_type":257,"marks":643,"text":644},"a2ca1236c6d4",[259],"Modern Foot Traffic Tracking Methods",[],{"_key":647,"_type":253,"children":648,"markDefs":653,"style":262},"d69bf3716676",[649],{"_key":650,"_type":257,"marks":651,"text":652},"3928e42c01e8",[],"Digital and AI-powered methods deliver significantly higher accuracy and far richer insight into customer behavior than traditional sensors can provide. The right method depends on store size, budget, privacy considerations, and what decisions the data needs to support.",[],{"_key":655,"_type":253,"children":656,"markDefs":661,"style":533},"9cf5752cecf6",[657],{"_key":658,"_type":257,"marks":659,"text":660},"dc8dc75dc78f",[],"AI-Powered Video Analytics",[],{"_key":663,"_type":253,"children":664,"markDefs":669,"style":262},"1a740a3bbefd",[665],{"_key":666,"_type":257,"marks":667,"text":668},"01de4395a2fb",[],"3D stereo vision cameras with advanced analytics are now widely used for in-store counting and analysis. These systems can achieve high levels of accuracy while also offering additional capabilities such as distinguishing between staff and customers.",[],{"_key":671,"_type":253,"children":672,"markDefs":677,"style":262},"58115f2174bd",[673],{"_key":674,"_type":257,"marks":675,"text":676},"abf65508f1d5",[],"Beyond counting, they provide deeper insight into what happens inside the store. This includes generating heatmaps, measuring dwell time, tracking shopper paths, and monitoring queue lengths.",[],{"_key":679,"_type":253,"children":680,"markDefs":685,"style":262},"81048f88a6ed",[681],{"_key":682,"_type":257,"marks":683,"text":684},"3ed6bf55c7d9",[],"However, like any tracking method, they are not without limitations. Accuracy can still be affected in very crowded environments, especially when people overlap or move closely together. Performance can also depend on factors like camera placement, store layout, and lighting conditions.",[],{"_key":687,"_type":253,"children":688,"markDefs":693,"style":262},"d5a249e8e7b3",[689],{"_key":690,"_type":257,"marks":691,"text":692},"2d4c037e6fb2",[],"Hardware typically requires a higher upfront investment, along with ongoing software subscriptions. Because cameras capture visual data, privacy is an important consideration, and many systems now process and anonymize data before it leaves the store.",[],{"_key":695,"_type":253,"children":696,"markDefs":701,"style":533},"e2472bcf5c6e",[697],{"_key":698,"_type":257,"marks":699,"text":700},"60194d767d52",[],"Mobile Location Data and GPS Analytics",[],{"_key":703,"_type":253,"children":704,"markDefs":709,"style":262},"ae13519cd78a",[705],{"_key":706,"_type":257,"marks":707,"text":708},"ac92e7fe0c22",[],"Mobile location data uses anonymized signals from opted-in devices to analyze visitation patterns, trade areas, cross-shopping behavior, and consumer trends, without requiring in-store hardware.",[],{"_key":711,"_type":253,"children":712,"markDefs":717,"style":262},"ddd4758c86b9",[713],{"_key":714,"_type":257,"marks":715,"text":716},"5a24284fc2f1",[],"This approach is useful for understanding broader patterns, such as where customers are coming from or how often they visit. It can support decisions around store locations and overall performance.",[],{"_key":719,"_type":253,"children":720,"markDefs":725,"style":262},"45d582a4089f",[721],{"_key":722,"_type":257,"marks":723,"text":724},"827842796ddb",[],"However, it is less precise when it comes to in-store behavior. GPS signals are generally less accurate indoors, which means this method cannot reliably show how customers move within a store or how long they spend in specific areas.",[],{"_key":727,"_type":253,"children":728,"markDefs":733,"style":262},"eb58cfdc2c46",[729],{"_key":730,"_type":257,"marks":731,"text":732},"a076a83b05d5",[],"For that reason, it is often used alongside other tools rather than as a standalone solution.",[],{"_key":735,"_type":253,"children":736,"markDefs":741,"style":533},"46cd5244cad3",[737],{"_key":738,"_type":257,"marks":739,"text":740},"a076a6659250",[],"Time-of-Flight Sensors",[],{"_key":743,"_type":253,"children":744,"markDefs":749,"style":262},"b9619629ea8c",[745],{"_key":746,"_type":257,"marks":747,"text":748},"69f476d283d3",[],"Time-of-flight sensors use light signals to measure movement and create a depth-based view of foot traffic. Because they do not capture identifiable images, they are often considered a privacy-conscious option.",[],{"_key":751,"_type":253,"children":752,"markDefs":757,"style":262},"4015eedda0ca",[753],{"_key":754,"_type":257,"marks":755,"text":756},"24b6c5ab782e",[],"They can provide more consistent counting than some traditional methods, particularly in environments where lighting conditions may vary.",[],{"_key":759,"_type":253,"children":760,"markDefs":765,"style":262},"c3114798e618",[761],{"_key":762,"_type":257,"marks":763,"text":764},"fdd6f6789c9a",[],"However, like other sensor-based systems, accuracy can still be affected in crowded environments where people overlap or move closely together. They are also primarily focused on counting entries and exits rather than providing deeper insight into customer behavior.",[],{"_key":767,"_type":253,"children":768,"markDefs":773,"style":262},"c685b44c7187",[769],{"_key":770,"_type":257,"marks":771,"text":772},"f595cdf12c02",[],"For retailers looking for more detailed visibility, they are often combined with other tools.",[],{"_key":775,"_type":253,"children":776,"markDefs":781,"style":533},"5279674a4407",[777],{"_key":778,"_type":257,"marks":779,"text":780},"d972f129ec30",[],"Geofencing and Bluetooth Beacons",[],{"_key":783,"_type":253,"children":784,"markDefs":789,"style":262},"c6050dbe0ef4",[785],{"_key":786,"_type":257,"marks":787,"text":788},"4eb7ef42c715",[],"Geofencing and Bluetooth beacons are often used to add a layer of location-based insight and engagement. They can help retailers understand when customers enter a defined area or interact with specific parts of a store, while also supporting more personalized experiences, such as highlighting offers based on location.",[],{"_key":791,"_type":253,"children":792,"markDefs":797,"style":262},"9651cfaf3b0d",[793],{"_key":794,"_type":257,"marks":795,"text":796},"7fe1cf18083a",[],"However, these tools depend on customer participation, such as having an app installed or location services enabled. This means they typically capture only a portion of total foot traffic.",[],{"_key":799,"_type":253,"children":800,"markDefs":805,"style":262},"ca89b57c0126",[801],{"_key":802,"_type":257,"marks":803,"text":804},"1134532b3e02",[],"As a result, they are most effective when used alongside a primary tracking method rather than on their own.",[],{"_key":807,"_type":253,"children":808,"markDefs":813,"style":394},"213e1329ad50",[809],{"_key":810,"_type":257,"marks":811,"text":812},"e9792c9162e7",[259],"Off-Peak Traffic, Perishable Waste, and a Smarter Approach",[],{"_key":815,"_type":253,"children":816,"markDefs":830,"style":262},"c16246925813",[817,821,826],{"_key":818,"_type":257,"marks":819,"text":820},"adb629ec6254",[],"For food retailers, the off-peak traffic gap is not only a missed revenue opportunity, but it is also a direct driver of waste. ",{"_key":822,"_type":257,"marks":823,"text":825},"3d595c0579f0",[824],"2ef5fa986810","30-40% of the U.S. food supply goes to waste",{"_key":827,"_type":257,"marks":828,"text":829},"41ffd4080e00",[],", nearly 30% of which ended up in landfills.",[831],{"_key":824,"_type":360,"href":832,"internalAnchor":8,"newWindow":8,"reference":8},"https:\u002F\u002Fwww.epa.gov\u002Fsustainable-management-food\u002Funited-states-2030-food-loss-and-waste-reduction-goal), according to the USDA, and grocery retailers generated 4.63 million tons of surplus food in 2024 (https:\u002F\u002Frefed.org\u002Fstakeholders\u002Fretailers\u002F",{"_key":834,"_type":253,"children":835,"markDefs":840,"style":262},"e34ed6b13c15",[836],{"_key":837,"_type":257,"marks":838,"text":839},"3b582de2f8c9",[],"Bakeries, deli counters, and prepared food sections need to produce enough food to maintain full displays during peak hours, but when actual traffic falls short of forecasts during slower periods, that surplus becomes waste. Foot traffic analytics helps make the problem visible and measurable, which is the first step toward addressing it.",[],{"_key":842,"_type":253,"children":843,"markDefs":857,"style":262},"a811e7d01317",[844,848,853],{"_key":845,"_type":257,"marks":846,"text":847},"be0ae9999492",[],"Research published in Management Science found that optimizing how near-expiry perishables are displayed and discounted ",{"_key":849,"_type":257,"marks":850,"text":852},"f6f79d447f31",[851],"1184386f9858","produces an average profit increase of 6.01% and a waste decrease of 21.24% in modeled retail scenarios",{"_key":854,"_type":257,"marks":855,"text":856},"6d3078372fdf",[]," — suggesting that even small operational changes, informed by better data, can meaningfully move the needle.",[858],{"_key":851,"_type":360,"href":859,"internalAnchor":8,"newWindow":8,"reference":8},"https:\u002F\u002Fpubsonline.informs.org\u002Fdoi\u002F10.1287\u002Fmnsc.2023.00316",{"_key":861,"_type":253,"children":862,"markDefs":867,"style":262},"5c0699f5da72",[863],{"_key":864,"_type":257,"marks":865,"text":866},"f13d2885014c",[],"This is where Too Good To Go helps food retailers make the most of surplus food. The platform connects stores with customers who purchase surplus food at a discount through Surprise Bags, collected during store-set pickup windows. For retailers looking to recover value from unsold food during slower periods, this approach helps turn surplus into additional revenue while reducing waste.",[],{"_key":869,"_type":253,"children":870,"markDefs":875,"style":394},"7a6270923dee",[871],{"_key":872,"_type":257,"marks":873,"text":874},"e69f079d5257",[259],"Choosing the Right Approach for Your Store",[],{"_key":877,"_type":253,"children":878,"markDefs":883,"style":262},"d50521f223fa",[879],{"_key":880,"_type":257,"marks":881,"text":882},"f5d20ea15016",[],"The right foot traffic tool depends on store size, budget, and what questions need to be answered.",[],{"_key":885,"_type":253,"children":886,"markDefs":891,"style":262},"11d8a20657c3",[887],{"_key":888,"_type":257,"marks":889,"text":890},"e2a67c615e12",[],"Smaller retailers may prioritize simple, lower-cost solutions that provide basic visibility into daily traffic. Larger operators may need more advanced tools to better understand customer behavior across locations.",[],{"_key":893,"_type":253,"children":894,"markDefs":899,"style":262},"3ebffda437aa",[895],{"_key":896,"_type":257,"marks":897,"text":898},"e0d85055db57",[],"In many cases, a combination of methods provides the most complete picture.",[],{"_key":901,"_type":253,"children":902,"markDefs":907,"style":262},"6d1903d8b428",[903],{"_key":904,"_type":257,"marks":905,"text":906},"f190a8865884",[],"What matters most is having enough visibility to understand real customer patterns and make more informed decisions throughout the day. And for food retailers, one of the most important patterns to understand is when demand drops off.",[],{"_key":909,"_type":253,"children":910,"markDefs":915,"style":262},"298ba8212ed5",[911],{"_key":912,"_type":257,"marks":913,"text":914},"9d2fdc5267c4",[],"Those slower periods are where surplus builds, and where the opportunity to recover value is often missed. That’s where Too Good To Go comes in, helping retailers turn unsold food into additional revenue while reducing waste.",[],{"_key":917,"_type":253,"children":918,"markDefs":923,"style":262},"c63c05724fe7",[919],{"_key":912,"_type":257,"marks":920,"text":922},[921],"c672d885082a","Learn more about how Too Good To Go works for food businesses and how to get started.",[924],{"_key":921,"_type":360,"ctaStyle":44,"href":925,"internalAnchor":8,"newWindow":8,"reference":8},"https:\u002F\u002Fstore.toogoodtogo.com\u002Fonboarding\u002Finbound\u002Fcreate-account",{"_key":927,"_type":253,"children":928,"markDefs":933,"style":394},"a2bdc389aaad",[929],{"_key":930,"_type":257,"marks":931,"text":932},"1a68868c5173",[259],"Frequently Asked Questions",[],{"_key":935,"_type":253,"children":936,"markDefs":941,"style":533},"1460e648e6df",[937],{"_key":938,"_type":257,"marks":939,"text":940},"ad543b30c1d8",[259],"What is foot traffic analytics in retail?",[],{"_key":943,"_type":253,"children":944,"markDefs":949,"style":262},"e99d618bca19",[945],{"_key":946,"_type":257,"marks":947,"text":948},"c72617dbab7c",[],"Foot traffic analytics is the process of tracking how many people visit a store and how they move within it. Retailers use this data to understand customer behavior, identify busy and slow periods, and make better decisions around staffing, inventory, and store layout.",[],{"_key":951,"_type":253,"children":952,"markDefs":957,"style":533},"9a87dccf389e",[953],{"_key":954,"_type":257,"marks":955,"text":956},"e14aec39068a",[259],"What is the difference between traditional and modern foot traffic tracking?",[],{"_key":959,"_type":253,"children":960,"markDefs":965,"style":262},"318acc5430ff",[961],{"_key":962,"_type":257,"marks":963,"text":964},"6df230682418",[],"Traditional methods focus on counting how many people enter a store, often using tools like manual clickers or sensors at the door. Modern methods go further by helping retailers understand what happens inside the store, including how customers move, where they spend time, and how traffic changes throughout the day.",[],{"_key":967,"_type":253,"children":968,"markDefs":973,"style":533},"9d1b45c2b2f2",[969],{"_key":970,"_type":257,"marks":971,"text":972},"501394ebfa34",[259],"Which foot traffic tracking method is most accurate?",[],{"_key":975,"_type":253,"children":976,"markDefs":981,"style":262},"ea8b231a03e7",[977],{"_key":978,"_type":257,"marks":979,"text":980},"8c287185bab8",[],"Accuracy depends on the method and how it is set up. Camera-based systems and advanced sensors can provide more consistent results, especially in busy environments. However, no method is perfect, and factors like store layout, crowding, and placement can all affect performance.",[],{"_key":983,"_type":253,"children":984,"markDefs":989,"style":533},"6faeaf09a4e1",[985],{"_key":986,"_type":257,"marks":987,"text":988},"8d2c261aa599",[259],"How can foot traffic data help reduce food waste?",[],{"_key":991,"_type":253,"children":992,"markDefs":997,"style":262},"f908039c1449",[993],{"_key":994,"_type":257,"marks":995,"text":996},"92964a2cb57a",[],"Foot traffic data helps retailers understand when demand is highest and when it drops off. By identifying slower periods, stores can adjust production, reduce over-preparation, and plan how to manage surplus more effectively.",[],{"_key":999,"_type":253,"children":1000,"markDefs":1005,"style":533},"e22b00e759e1",[1001],{"_key":1002,"_type":257,"marks":1003,"text":1004},"c5765c91e2ce",[259],"What are off-peak hours in food retail?",[],{"_key":1007,"_type":253,"children":1008,"markDefs":1013,"style":262},"a41a770c27d5",[1009],{"_key":1010,"_type":257,"marks":1011,"text":1012},"2546189d1ea1",[],"Off-peak hours are the times of day when customer traffic is lowest. For many food retailers, this often happens in mid-afternoon or later in the evening. These periods are important because they are when unsold food is most likely to become surplus.",[],{"_key":1015,"_type":253,"children":1016,"markDefs":1021,"style":533},"c9c7be7e05d3",[1017],{"_key":1018,"_type":257,"marks":1019,"text":1020},"71a53f3d4ae6",[259],"How can retailers increase revenue from surplus food?",[],{"_key":1023,"_type":253,"children":1024,"markDefs":1029,"style":262},"e5d79eb77d65",[1025],{"_key":1026,"_type":257,"marks":1027,"text":1028},"a484b8423775",[],"Retailers can recover value from surplus food by selling it at a reduced price instead of letting it go to waste. Platforms like Too Good To Go make this possible by connecting stores with local customers who are willing to purchase surplus food during slower periods.",[],"default",[1032,1066,1103],{"_key":1033,"_type":1034,"buttons":1035,"content":1039,"theme":1065},"1jkf7lre7g28","modularContentBlocks.outer.cta",[1036],{"_key":1037,"_type":149,"buttonColor":150,"buttonText":1038,"link":8,"variant":152},"a282dd0ebbbc","Download the app",[1040,1053],{"_key":1041,"_type":1042,"description":1043,"size":1030,"title":1044,"variant":1030},"6dk1pal4i10a","modularContentBlocks.inner.title",[],[1045],{"_key":1046,"_type":253,"children":1047,"markDefs":1052,"style":262},"GZyjLe6U5nxM0R9gPkHYAG",[1048],{"_key":1049,"_type":257,"marks":1050,"text":1051},"GZyjLe6U5nxM0R9gPkHYCa",[],"start saving food today",[],{"_key":1054,"_type":1055,"text":1056},"is9la02ijx8m","modularContentBlocks.inner.baseText",[1057],{"_key":1058,"_type":253,"children":1059,"markDefs":1064,"style":262},"740b5c918016",[1060],{"_key":1061,"_type":257,"marks":1062,"text":1063},"2f54f31664640",[],"Our app is the world's largest marketplace for surplus food. We help users rescue good food from going to waste, offering great value for money at local stores, cafes and restaurants.",[],"dark",{"_key":1067,"_type":1068,"alignment":1069,"content":1070,"extraSpacing":45,"theme":1065,"variant":1102},"bndt73pfqirw","modularContentBlocks.outer.section","center",[1071,1083,1087],{"_key":1072,"_type":1042,"description":1073,"preTitle":8,"size":1030,"title":1074,"variant":1069},"80hf92fygbfk",[],[1075],{"_key":1076,"_type":253,"children":1077,"markDefs":1082,"style":262},"GZyjLe6U5nxM0R9gPkHYEu",[1078],{"_key":1079,"_type":257,"marks":1080,"text":1081},"GZyjLe6U5nxM0R9gPkHYHE",[],"Too good to go blog",[],{"_key":1084,"_type":1085,"listingDocument":331,"listingType":1086},"0zn20h9ot6i0","modularContentBlocks.inner.listing","latest",{"_key":1088,"_type":1089,"buttons":1090,"variant":1069},"l1m71gx3wqqc","modularContentBlocks.inner.buttonGroup",[1091],{"_key":1092,"_type":1093,"link":1094,"title":1100,"variant":1101},"cb6c6aecbe6c","button",{"_type":1095,"internal":1096,"internalAnchor":8,"linkType":1098,"otherLocales":45,"reference":1099},"link",{"_ref":1097,"_type":13,"_weak":44},"singleton-pages-en-us-about-food-waste-blog-home","internal",{"_type":83,"locale":38,"slug":245},"More blog posts","text","noImage",{"_key":1104,"_type":1068,"alignment":1069,"content":1105,"extraSpacing":45,"theme":1065,"variant":1102},"fd20632i3coe",[1106,1125],{"_key":1107,"_type":1042,"description":1108,"preTitle":8,"size":1109,"title":1110,"variant":1069},"jq0ms9uze8v9",[],"small",[1111],{"_key":1112,"_type":253,"children":1113,"markDefs":1124,"style":262},"GZyjLe6U5nxM0R9gPkHYJY",[1114,1118,1120],{"_key":1115,"_type":257,"marks":1116,"text":1117},"wHKr7lvBejmoAuZJ6jL8XE",[],"JOIN over ",{"_key":1119,"_type":272,"dataType":273,"text":288},"stat-1764846117414-wcj9ynzxu",{"_key":1121,"_type":257,"marks":1122,"text":1123},"wHKr7lvBejmoAuZJ6jL8bO",[]," BUSINESSES FIGHTING FOOD WASTE WITH US",[],{"_key":1126,"_type":1089,"buttons":1127,"variant":1069},"mbqmmpj8a8c2",[1128,1130],{"_key":1129,"_type":149,"buttonColor":150,"buttonText":1038,"link":8,"variant":152},"4029981371e9",{"_key":1131,"_type":1093,"link":1132,"title":1134,"variant":1030},"fd77cb9e97ff",{"_type":1095,"linkType":1133,"otherLocales":45,"ssu":159},"ssu","Sign up your business",{"_type":1136,"alt":1137,"asset":1138,"fit":25},"imageWithAlt","Shoppers browse the produce aisle in a brightly lit grocery store.",{"_ref":1139,"_type":13},"image-d7023ff6cfe4e7a0b7296c9e0103b1bcef910d9f-2390x1419-png","public",{"_ref":1097,"_type":13},"Too Good To Go Blog","2026-04-03T16:51:40.823Z",{"metaDescription":1145,"metaTitle":1146,"socialImage":1147},"Compare traditional vs modern foot traffic analytics tools and learn how food retailers track visits, reduce waste, and improve foot traffic performance.","Retail Foot Traffic Tools: Traditional vs. Modern Tracking Methods",{"_type":1148,"asset":1149},"image",{"_ref":1139,"_type":13},{"_type":1151,"current":1152},"slug","foot-traffic-analytics-traditional-vs-modern-tools",[],{"posts":1155,"totalPosts":1206},[1156,1167,1178,1189],{"_createdAt":1157,"_id":1158,"categories":8,"content":1159,"excerpt":8,"file":8,"image":1160,"language":38,"migrated":8,"pretitle":1142,"publishedAt":1164,"slug":1165,"title":1166,"updatedAt":8,"url":8},"2026-07-16T15:34:08Z","ea7c7036-95f6-41b0-9bf3-06d6cca2b74b","Food freshness affects countless decisions across the supply chain. It influences what customers buy, how businesses manage inventory, and which products ultimately end up going unsold, even when they’re perfectly edible. Many people assume freshness ends the moment a package reaches its printed date, yet the reality is often far more nuanced. Unfortunately, that misunderstanding has real consequences. Date label concerns alone account for 1.82 million tons of edible surplus food, making them the single largest contributor to food waste.\n\n\n\nA carton of yogurt, a loaf of bread, and a container of prepared food do not all lose freshness in the same way or at the same time. Quality changes differently across food categories, which means assessing freshness requires more than a quick glance at a label. Understanding what food freshness actually means is the first step toward making better decisions about food that might otherwise be discarded too soon.\n\n\n\nWhy Food Freshness is Misunderstood on Both Sides of the Counter\n\nOne of the biggest misconceptions about food freshness is that a printed date on a container or carton automatically determines whether a product should be eaten or discarded. Consumers often interpret dates as expiration deadlines, while businesses may feel pressure to remove products from shelves as those dates approach. In reality, most date labels are intended to communicate quality rather than safety.\n\n\n\nThe result is a significant amount of perfectly edible food being thrown away before it ever has a chance to be enjoyed. Common food date labels that cause confusion on both sides of the register include:\n\n\n\nSell By: Helps retailers manage inventory and stock rotation.\n\nEnjoy By: Suggests when a product is likely to provide the best eating experience.\n\nBest By: Indicates when a product is expected to have its best flavor, texture, or overall quality.\n\nUse By: Often signals the last recommended date for peak quality.\n\n\n\nInfant formula is the only product in the U.S. that is federally required to use a safety-based Use By date. Everything else is considered quality or inventory guidance. This distinction is important because many foods remain safe and enjoyable when stored properly. Learning how to keep food fresh through appropriate handling and storage can often extend a product’s usable life beyond what consumers might expect.\n\n\n\nThe Business Cost of Getting Food Freshness Wrong in Retail\n\nDate label confusion isn’t just a consumer issue. It has real financial consequences for food businesses, too. Roughly three-quarters of annual retail food waste, or $26.9 billion, comes from highly perishable categories such as produce, meat and seafood, prepared foods, and dairy. Yet nearly 45% of that food remains safe to enjoy, suggesting significant opportunities to recover value before products are discarded.\n\n\n* Based on 2024 ReFED food waste statistics\n\n\nThe financial impact extends beyond the value of the inventory itself. Employees still spend time monitoring products, rotating stock, and removing items that are no longer considered sellable. Disposal and hauling costs add another layer of expense, further increasing the impact of food waste. Improving how you evaluate food freshness can help uncover opportunities to recover value before those costs begin to accumulate.\n\n\n\nFood Freshness Looks Different Across Every Category\n\nDate labels can provide useful guidance, but they only tell part of the story. Too Good To Go’s Look, Smell, Taste initiative focuses on the signs of quality and true spoilage that date labels cannot always capture. The reason is simple: freshness doesn’t look the exact same across every category. A loaf of bread ages differently than a carton of yogurt, and neither follows the same pattern as fresh produce or seafood.\n\n\n\nMonitoring the specific characteristics of each category often provides a clearer picture than the date alone.\n\n\n\nProduce: Appearance Matters, But Looks Can Be Deceiving\n\nProduce may be one of the easiest categories to misjudge because visual imperfections are often mistaken for spoilage. A bruised apple, slightly limp greens, or a banana with brown spots may not look their best, but those changes are often a normal part of the aging process rather than signs the product is rotten. Still, consumers expressly avoid unattractive produce nearly all the time, contributing to both food waste and lost sales.\n\n\n\nWhen assessing food freshness in produce, appearance should be considered alongside texture and aroma. Lettuce that has become slimy or berries that smell fermented are very different from produce that is simply less vibrant than it was a few days earlier. Distinguishing between cosmetic changes and true spoilage can help businesses identify products that still have value before they’re tossed out of the food supply chain for good.\n\n\n\nDairy Products: Date Labels Are Only One Piece of the Puzzle\n\nUnlike produce—where visual appearance often drives purchasing decisions—dairy products tend to be judged more heavily by the date printed on the package. Still, many dairy items remain usable beyond their Best By date, particularly when they have been stored consistently at the proper temperature. For these reasons, food freshness in dairy is often better evaluated through changes in smell and texture.\n\n\n\nMilk may develop a distinctly sour odor when it begins to spoil, while yogurt and sour cream can become watery or separate beyond what is considered normal (or appetizing). Cheese presents its own challenges, with some varieties naturally changing texture as they age. For example, cheddar often becomes firmer and more crumbly over time, where Brie can soften and develop a creamier interior as it matures. Looking at the product itself, rather than relying solely on the date, often provides a clearer picture of its condition.\n\n\n\nMeat and Seafood: Storage and Temperature Matter Most\n\nWhile produce and dairy can often be evaluated through visible quality changes, meat and seafood require a greater emphasis on temperature control throughout their lifespan. There’s a reason restaurant and grocery inspectors routinely check cold storage temperatures during routine inspections. Proper cold-chain management plays a critical role in preserving meat and seafood freshness and reducing safety risks.\n\n\n\nColor is often one of the least reliable indicators of freshness in this category. Beef naturally changes color over time, yet many shoppers associate any amount of browning with spoilage. A more complete assessment considers whether products have been cold-held properly throughout storage and transport. Excessive moisture, unusual stickiness, or strong off-odors may be more meaningful warning signs than color changes alone.\n\n\n\nBaked Goods: Freshness and Safety Are Not the Same Thing\n\nMoving from highly perishable proteins to baked goods highlights an important distinction: quality decline and spoilage are not always the same thing. Bread, bagels, pastries, and other baked items naturally lose moisture over time, causing them to become firmer or less enjoyable to eat. Staleness may affect the eating experience, but it doesn’t automatically indicate a safety concern. A baguette that has lost its crusty exterior or a muffin that feels slightly dry is often still safe to eat.\n\n\n\nThat distinction becomes especially important in bakery departments, where quality often declines long before safety becomes a concern. Visible mold remains one of the clearest indicators that a product should no longer be consumed. Short of that, many baked goods remain perfectly edible even after they have passed their peak quality window, making this category a useful example of why freshness and safety should not be treated as interchangeable concepts.\n\n\n\nPrepared Foods: Time Windows Help Guide Freshness\n\nPrepared foods introduce a different freshness challenge because they often combine multiple ingredients, each with its own shelf life. Restaurants, grocery stores, and foodservice operators rely heavily on production dates, holding times, and labeling procedures to help ensure products are served within established quality and safety standards. Even with those controls in place, the food itself can provide important clues.\n\n\n\nPrepared foods that have developed unusual discoloration, excessive liquid separation, or unexpected texture changes may indicate spoilage. A sandwich with wilted lettuce, a grain bowl that has lost some texture, or a prepared salad that’s no longer at peak quality presents a different situation. Freshness can decline before a product becomes unsafe, which is why timing and sensory evaluation work together when assessing prepared foods.\n\n\n\nHow to Keep Food Fresh Longer: 5 Tips to Prolong Freshness\n\nThe signs of freshness may vary from one food category to the next, but the underlying goal remains the same. Preserving quality for as long as possible, and ensuring good food reaches customers, is always the aim. Businesses that prioritize food freshness through strong storage and inventory practices are often better positioned to reduce waste while maximizing the value of their products. Here’s how to do just that:\n\n\n\nMaintain proper storage temperatures. Consistent refrigeration helps slow quality decline and preserve freshness across dairy, meat, seafood, prepared foods, and many produce items. Regular temperature monitoring can also help identify issues before they affect product quality.\n\nUse packaging that protects product quality. Appropriate packaging helps shield food from excess moisture, air exposure, and other environmental factors that can accelerate deterioration. Storage methods should also be tailored to the needs of each product category.\n\nFollow first-in, first-out (FIFO) inventory practices. Rotating older inventory to the front and newer inventory to the back helps ensure products are sold or used in the intended order, reducing the likelihood of items being overlooked until quality declines.\n\nIdentify products before they reach their quality threshold. Monitoring inventory proactively creates more opportunities to sell, donate, or otherwise recover value from food while it still meets quality expectations.\n\nTrain employees on freshness indicators, not just date labels. Teams that understand the difference between normal aging and true spoilage are better equipped to make informed decisions to reduce unnecessary waste.\n\n\n\nHow Too Good To Go Helps Retailers Recover Value from Surplus Food\n\nEven with strong inventory management practices in place, surplus food is sometimes unavoidable. Demand can shift unexpectedly, and products may sell more slowly than anticipated, but quality windows continue to narrow with each passing day. Many foods maintain their food freshness and remain enjoyable as they approach their Best By or Enjoy By dates, yet businesses often struggle to sell that inventory before it loses value.\n\n\n\nToo Good To Go helps address that challenge through Surprise Bags. Grocery stores, bakeries, restaurants, and other food retail businesses can recover value from inventory with a limited remaining shelf life, while consumers discover surplus food through the app-based Too Good To Go marketplace. Participating businesses create their own Surprise Bags using surplus inventory that still meets their quality and food safety standards.\n\n\n\nUnlock the Opportunity Hidden Inside Food Freshness Windows\n\nThe conversation around food waste often begins with what gets thrown away, but a more useful question is why it gets thrown away in the first place. In many cases, the answer comes back to how freshness is understood throughout the supply chain. A softened peach, a slightly stale loaf of bread, and a package of beef with minor discoloration all tell very different stories, but they’re also safe to eat.\n\n\n\nToo Good To Go helps businesses capture value from these types of food that still have something left to offer. By creating a simple way to sell surplus food before quality declines further, Surprise Bags help transform limited shelf life from a liability into a chance to recover value. Learn how Too Good To Go can help your business reduce food waste and make the most of every freshness window.\n\n\n\n\n\nRecover more value from surplus food\n\n\n\n\n\nFAQ About Food Freshness\n\nWhat does food freshness actually mean?\n\nFood freshness refers to a product’s overall quality and condition, including factors such as appearance, texture, smell, and flavor. While freshness naturally changes over time, a product does not automatically become unsafe the moment it reaches a printed date. Different foods age differently, which is why freshness must be evaluated within the context of each category.\n\n\n\nAre Best By dates the same as expiration dates?\n\nNo. Most date labels are intended to communicate quality rather than safety. Labels such as Best By, Enjoy By, and Sell By generally indicate when a product is expected to deliver its best flavor, texture, or eating experience. Many foods remain safe and enjoyable beyond those dates when stored properly.\n\n\n\nWhy do consumers often throw away food that is still edible?\n\nMany consumers rely heavily on date labels or visual appearance when making decisions about food. Cosmetic imperfections, slight texture changes, or approaching quality dates are often mistaken for signs of spoilage. As a result, perfectly edible food is frequently discarded before it truly needs to be.\n\n\n\nHow can food businesses reduce waste caused by freshness concerns?\n\nBusinesses can reduce unnecessary waste by monitoring inventory proactively, maintaining proper storage conditions, rotating stock using first-in, first-out practices, and training employees to recognize the difference between normal aging and true spoilage. Evaluating products based on their actual condition rather than dates alone can also help identify opportunities to recover value.\n\n\n\nWhy is food freshness assessed differently across food categories?\n\nEach category ages in its own way. Produce may develop cosmetic imperfections while remaining perfectly edible, dairy products often show changes in smell or texture, and baked goods can become stale long before they become unsafe. Understanding category-specific indicators helps businesses make more informed decisions about inventory.\n\n\n\nWhat is Too Good To Go?\n\nToo Good To Go is a surplus food marketplace that helps food businesses reduce waste by connecting consumers with leftover items that still meet quality and food safety standards. Through the app, consumers can purchase Surprise Bags containing unsold food from participating grocery stores, bakeries, restaurants, and other food retailers.\n\n\n\nHow do Surprise Bags help businesses recover value from surplus food?\n\nSurprise Bags provide businesses with an additional way to sell food that has a limited remaining shelf life but is still fresh and enjoyable to eat. Rather than allowing that inventory to go unsold, participating businesses can package eligible surplus food into discounted Surprise Bags and offer them through the Too Good To Go marketplace, helping reduce waste while generating incremental revenue.",{"_type":1136,"alt":1161,"asset":1162,"fit":25},"Fresh produce in Surprise Bag",{"_ref":1163,"_type":13},"image-dd082d7e7126a1427dfe2e3a8cf3c4c7e036d085-2500x1667-jpg","2026-07-16T16:17:34.970Z","\u002Fblog\u002Ffood-freshness-explained","Food Freshness Explained: What It Means for Different Types of Food",{"_createdAt":1168,"_id":1169,"categories":8,"content":1170,"excerpt":8,"file":8,"image":1171,"language":38,"migrated":8,"pretitle":1142,"publishedAt":1175,"slug":1176,"title":1177,"updatedAt":8,"url":8},"2026-07-14T15:11:56Z","f352f718-7c5e-4134-b77c-ad31292f58b7","A multi-unit franchise may have predictive analytics to help with restaurant demand forecasting. An independent operator, on the other hand, is often relying on last week’s sales, the local weather report, and a little bit of luck. That doesn’t mean effective forecasting is out of reach. With the right information and a simple process, even small teams can make more informed decisions about inventory levels and staffing needs.\n\n\n\nAfter all, most operators already have access to the information they need. The next step is turning that data into a repeatable routine. Luckily, a few practical adjustments can help reduce weekly food waste and protect already-thin profit margins without adding unnecessary complexity. Let’s explore how independent restaurant operators can build a reliable forecasting system without expensive software or enterprise-level tools.\n\n\n\nWhat is Restaurant Demand Forecasting?\n\nRestaurant demand forecasting is the process of estimating how much food, inventory, and labor you’ll need based on expected sales. The goal is simple: have enough ingredients and staff on hand to serve customers without overbuying or overpreparing. That may sound straightforward, but restaurants face unique forecasting challenges.\n\n\n\nIn many ways, restaurant demand forecasting and retail demand forecasting share the same objective of matching supply to demand. The difference is that restaurants are usually working with highly perishable inventory, changing menus, and tighter service windows. A retailer may have weeks or months to sell excess inventory. In contrast, a restaurant often has days or even hours before surplus goes to waste.\n\n\n\nThat’s why forecasting matters. Even small improvements can help operators make smarter decisions throughout the week, including:\n\n\n\nPreventing over-ordering. Ordering too much inventory ties up cash and increases the likelihood that ingredients will spoil before they’re used.\n\nReducing food waste. Every surplus item that spoils or loses freshness represents lost value that has already been purchased, stored, and prepared.\n\nAvoiding stockouts. Running out of staple ingredients or popular menu items can lead to missed sales and frustrated customers who may not return.\n\nProtecting margins. Better demand forecasting helps operators balance purchasing, preparation, and labor costs without sacrificing service quality.\n\n\n\nThose benefits can add up quickly in an industry known for thin margins. Full-service restaurants typically operate within a 3% to 5% profit margin range, while fast-casual concepts often fall between 6% and 9%. When profitability is measured in single digits, even modest forecasting improvements can make a meaningful difference.\n\n\n\nThe Realities of Restaurant Demand Forecasting for Independent Operators\n\nEffective restaurant demand forecasting can be more difficult when resources are limited. Large restaurant groups may rely on sophisticated forecasting platforms, but many independent operators are still making purchasing decisions with spreadsheets and experience. Smaller teams rarely have dedicated analysts or specialized software, and tighter purchasing budgets can leave less room for error when ordering inventory from week to week.\n\n\n\nNot to mention, demand can shift quickly, even with a solid routine in place.\n\n\n\nA rainy weekend, a nearby sporting event, or the start of tourist season can change customer traffic patterns with little warning. Some weeks bring packed dining rooms, while others fall short of expectations despite looking similar on paper. Those variables make forecasting challenging, but they also highlight why having a consistent approach is so valuable. The goal isn’t to predict every shift in demand perfectly; it’s to make better decisions more often.\n\n\n\nWhat Data Should Operators Use for Restaurant Demand Forecasting?\n\nIndependent restaurants often assume they lack the necessary data for demand forecasting. In reality, most operators already collect relevant demand signals through daily operations. Sales reports, inventory records, reservations, and local demand trends can provide more than enough information to make more informed purchasing and staffing decisions. Take a look at the types of data that can fuel restaurant demand forecasting.\n\n\n\nHistorical Sales Data\n\nHistorical sales reports tend to reveal patterns that aren’t obvious during day-to-day operations. Comparing last Thursday’s dinner service to a typical Thursday from the previous month, or even the same period last year, can help operators spot recurring trends and make more confident purchasing decisions. Over time, those patterns can establish a baseline for what “normal” demand looks like throughout the week.\n\n\n\nInventory Usage\n\nSales data tells part of the story, but inventory data helps fill in the gaps. Which ingredients consistently sell through before the end of service? Which ones regularly remain unused at the end of the week? For restaurant demand forecasting, these trends can be just as valuable as sales figures because they reveal where ordering decisions — and cash flow — may be overshooting or falling short of actual demand.\n\n\n\nReservations and Advance Orders\n\nUnlike historical data or inventory usage, reservations and advance orders offer a glimpse into future demand before service begins. A full reservation book, a large catering order, or a private event on the calendar can all influence how much inventory and labor may be needed on a given shift. Reviewing these commitments several days in advance can help operators make more informed decisions before guests arrive.\n\n\n\nLocal Demand Signals\n\nWhile the above data sets are useful, customer traffic doesn’t exist in a vacuum. Weather changes, school schedules, community events, holidays, and nearby sporting events can all influence how many guests walk through the door. Paying attention to these external factors adds helpful context to restaurant demand forecasting, especially when historical sales data alone doesn’t explain sudden increases or declines in demand.\n\n\n\nSimple Tools That Make Restaurant Demand Forecasting Easier\n\nRestaurant demand forecasting becomes much more manageable when you know where each piece of information lives. Rather than hunting through multiple records every week, focus your attention on a handful of sources that make patterns easier to spot. The table below can help you connect each demand signal to the everyday tools that track it.\n\nThe good news? You don’t need to gather every data point at once. Start with the information that is easiest to access — like POS reports or reservation platforms — then layer in demand signals like vendor ordering records and local event calendars. Over time, reviewing these sources together can turn scattered information into a more reliable forecasting routine.\n\n\n\nA 6-Step Restaurant Demand Forecasting Process for Independent Operators\n\nIndependent operators don’t need advanced retail demand forecasting platforms or specialized software to stay ahead. A combination of reliable records and simple spreadsheets can provide enough visibility to make more informed decisions instantly. Here’s how to launch your own restaurant demand forecasting process for accurate inventory and labor in six simple steps.\n\n\n\nStep 1: Review Historical Sales Trends\n\nEvery routine needs a starting point. For restaurant demand forecasting, historical sales trends provide the baseline that everything else builds upon. Review performance from the same day last week, the same period last year, and any recent shifts in customer ordering behavior. Pay close attention to menu items that consistently outperform expectations as well as those that move more slowly. Those patterns can help establish a realistic starting point before making any adjustments.\n\n\n\nStep 2: Account for Upcoming Demand Drivers\n\nWhile historical sales data tells you what happened in the past, restaurant demand forecasting also requires operators to account for what is already on the calendar. Once you have a baseline, look ahead for anything that could influence customer traffic in the days ahead. Consider factors such as:\n\n\n\nReservations\n\nPrivate events\n\nCatering orders\n\nCommunity events\n\nWeather forecasts\n\n\n\nEven a few additional bookings or a well-attended local event, like a county fair or family movie night, can influence purchasing and staffing needs for the week. Weather conditions can affect demand, too. Though pleasant weather may encourage more diners to visit, storms, extreme heat, or heavy snowfall can reduce customer traffic.\n\n\n\nStep 3: Factor in Seasonality\n\nSuccessful restaurant demand forecasting goes beyond weekly fluctuations. Many restaurants experience recurring shifts in customer traffic throughout the year that can influence sales patterns for weeks or months at a time. Holidays, tourist spikes, school schedules, sporting seasons, and annual community events can all affect how busy a restaurant becomes.\n\n\n\nLikewise, ingredient costs may rise or fall depending on seasonal availability. Produce, proteins, and other ingredients move in and out of peak supply throughout the year, and some products may be harder to source during certain seasons. Factoring these trends into purchasing decisions can help operators avoid surprises while maintaining more consistent inventory levels.\n\n\n\nStep 4: Identify the Inventory Most Vulnerable to Waste\n\nOne area where restaurants differ significantly from other businesses is inventory perishability. Retail demand forecasting often focuses on products that can remain on shelves for extended periods, whereas restaurants work with ingredients that have a much shorter freshness window. Identifying the items most vulnerable to waste can help operators prioritize forecasting efforts where they matter most.\n\n\n\nPay particular attention to:\n\nPrepared foods, including soups, sauces, and sides that have limited holding periods under food safety guidelines\n\nProteins, which are among the most expensive inventory items and can create significant losses when overordered\n\nBaked goods, which may lose freshness and quality within a short period even if they remain safe to serve\n\nFresh produce, which can spoil quickly when purchasing levels exceed actual customer demand\n\n\n\nKeeping an eye on these ingredients can make it easier to prevent waste before it becomes a bigger problem. If certain items regularly end up unused or expire before they’re sold, that’s usually a sign that purchasing levels need to be adjusted. Paying closer attention to your most perishable inventory can help reduce food waste, improve margins, and make day-to-day inventory management a little less stressful.\n\n\n\nStep 5: Refine Your Purchasing Decisions Weekly\n\nLike inventory management, forecasting works best as an ongoing process rather than a one-time exercise. Effective restaurant demand forecasting requires regular adjustments based on real-world results. At the end of each week, review what sold quickly, what remained untouched, what sold out before service ended. Those insights can help fine-tune future purchasing decisions and improve forecasting accuracy over time.\n\n\n\nStep 6: Schedule Staff Based on Expected Demand\n\nForecasting isn’t just about food orders. Strong restaurant demand forecasting can also help align staffing levels with expected customer traffic. Anticipating busy periods may make it easier to schedule enough team members to maintain service quality while avoiding unnecessary labor costs during slower shifts. Cross-training employees can add flexibility as well, allowing your staff to adapt when demand is higher or lower than expected.\n\n\n\nCommon Restaurant Demand Forecasting Mistakes to Avoid\n\nAbove all, remember that forecasting doesn’t need to be perfect. It just needs to be more reliable than guessing. Even the most consistent restaurant demand forecasting routine will occasionally miss the mark, especially when customer traffic shifts unexpectedly. Still, avoiding a few common mistakes can improve accuracy in the long run and help operators make more confident purchasing and staffing decisions.\n\n\n\nRelying only on gut instinct: Experience matters, but it works best when paired with real sales, inventory, and reservation data. Use historical trends to validate assumptions before placing orders.\n\nIgnoring seasonal trends: Customer purchasing habits and ingredient availability often change throughout the year. Looking only at recent performance can create blind spots during busy or slower seasons.\n\nOrdering for best-case scenarios: Planning for a packed dining room every night can leave restaurants with excess inventory when traffic falls short of expectations. Build forecasts around realistic demand, not ideal outcomes.\n\nFailing to track waste: Surplus inventory can reveal just as much as sales reports. Continuously monitoring what goes to waste can help identify where ordering quantities need adjustment.\n\nTreating forecasting as a once-a-month task: Demand forecasting is an ongoing process. Reviewing results regularly helps identify patterns, refine purchasing decisions, and adapt to changing conditions.\n\n\n\nHow Too Good To Go Helps Restaurants Manage Forecasting Gaps\n\nCustomer traffic fluctuates, plans change, and unexpected slow periods happen. Routine restaurant demand forecasting can reduce waste, but there will still be times when ingredients or prepared foods remain unsold at the end of service. That’s where a surplus food marketplace like Too Good To Go can help.\n\n\n\nRather than relying on one-off markdowns, restaurants can bundle surplus food into Surprise Bags and offer them at a discounted price through the Too Good To Go app. Operators set their own pickup windows, giving nearby customers an easy way to discover and purchase surplus food that might otherwise go unused. In the process, restaurants can recover value from inventory they’ve already purchased and prepared.\n\n\n\nSo, while forecasting helps you make smarter purchasing decisions upfront, Too Good To Go provides another outlet when demand doesn’t unfold exactly as expected. The result is a low-lift way to generate revenue from surplus food. In other words, it works for you, even when demand forecasts don’t.\n\n\n\nBetter Restaurant Demand Forecasting Starts with Better Habits\n\nRestaurant demand forecasting doesn’t require enterprise software or predictive analytics. You can build effective forecasting habits using the same POS reports, inventory tracking spreadsheets, and reservation platforms you’ve been relying on already. Still, no forecast is perfect. That’s why many operators pair stronger forecasting habits with surplus recovery tools like Too Good To Go.\n\n\n\nTogether, the duo can help restaurants reduce waste, protect margins, and make inventory management more profitable. Are you ready to recover more value from surplus food? Learn how Too Good To Go helps restaurants turn excess inventory into additional revenue.\n\n\n\n\n\nStart recovering surplus food revenue\n\n\n\n\n\nFAQs About Restaurant Demand Forecasting\n\nHow far ahead should restaurants forecast demand?\n\nMost independent restaurants benefit from forecasting at least one week ahead while reviewing upcoming reservations, events, and inventory needs. Longer-term forecasts can also be useful for planning around holidays, tourist seasons, and recurring community events that may affect customer traffic.\n\n\n\nWhat is the most important data for restaurant demand forecasting?\n\nHistorical sales data is often the best starting point because it reveals recurring patterns in customer behavior. Inventory usage, reservations, advance orders, and local demand signals can then add context and help operators make more informed purchasing decisions.\n\n\n\nHow often should restaurants update their forecasts?\n\nRestaurant demand forecasting works best as an ongoing process rather than a one-time exercise. Reviewing results weekly can help operators identify changing trends and adjust order quantities to improve forecasting accuracy over time.\n\n\n\nWhy do restaurants struggle with forecasting accuracy?\n\nCustomer traffic can change unexpectedly due to weather, local events, seasonal shifts, and other factors outside a restaurant’s control. For these reasons, forecasting isn’t about eliminating uncertainty entirely; it’s about making better decisions based on the information available.\n\n\n\nWhat inventory items should restaurants monitor most closely?\n\nRestaurants should pay particular attention to highly perishable items such as fresh produce, proteins, prepared foods, and baked goods. These products often carry the greatest risk of spoilage when purchasing levels exceed actual demand.\n\n\n\nHow does Too Good To Go help restaurants reduce food waste?\n\nToo Good To Go provides another outlet for surplus inventory when demand doesn't unfold exactly as expected. Restaurants set their own pickup times, list available Surprise Bags, and give nearby customers an opportunity to purchase excess food that might otherwise go unsold.\n\n\n\nWhat are Too Good To Go Surprise Bags?\n\nSurprise Bags allow restaurants to bundle surplus food into a single discounted offering for local customers. Rather than letting excess inventory go unused, restaurants can recover value from food that remains at the end of service while helping reduce food waste.",{"_type":1136,"alt":1172,"asset":1173,"fit":25},"restaurant manager reviewing demand data",{"_ref":1174,"_type":13},"image-36c4b68505ff22cc856fe3defc39843d7495d431-7112x4784-jpg","2026-07-14T15:33:39.966Z","\u002Fblog\u002Frestaurant-demand-forecasting","Restaurant Demand Forecasting 101: A Practical Guide for Independent Operators",{"_createdAt":1179,"_id":1180,"categories":8,"content":1181,"excerpt":8,"file":8,"image":1182,"language":38,"migrated":8,"pretitle":1142,"publishedAt":1186,"slug":1187,"title":1188,"updatedAt":8,"url":8},"2026-07-09T15:38:52Z","bb5ac791-3e7c-4653-84b8-7add1488d6d7","Few things are more frustrating than watching your grocery bill continue to climb while your cart seems to shrink. Inflation often gets the blame, but it’s only part of the story. One of the lesser-known causes of food price increases is the number of items that never get sold in the first place. In the United States alone, roughly $380 billion worth of food goes to waste each year. If so much food gets wasted, who pays for it?\n\n\n\nEventually, everyone does. Farmers, distributors, manufacturers, and grocery stores all absorb losses from wasted food. To stay profitable, many of those costs get spread across the products that do make it to checkout. Understanding that connection can help explain why food waste affects more than the environment. It also affects what you pay at the register. Here’s what food waste has to do with the rising cost of groceries.\n\n\n\nFood Waste Happens Long Before Items Reach Your Cart\n\nMany people think of food waste as takeout leftovers sitting in the fridge too long or produce slowly going brown in the crisper drawer. Household waste certainly exists—$141 billion worth of it, to be exact—but it’s only one piece of a much larger picture. Long before food reaches your kitchen, waste is already occurring at multiple points throughout the global supply chain.\n\n\n\nSome of that loss begins on farms. Crops may be left unharvested due to labor shortages, shifting demand, or market conditions, contributing to roughly 14.8 million tons of food waste each year. Food can be lost after it leaves the farm, too. A damaged shipment, a temperature issue during transport, or inventory that doesn’t sell quickly enough can all prevent food from reaching consumers.\n\n\n\nAppearance also plays a role. Fruits and vegetables that look imperfect may be passed over despite being perfectly edible. By the time produce and other items reach grocery stores, retailers generate another 2.72 million tons of food waste annually. The food system generates far more waste than most shoppers realize, and those losses don’t stop at the farm or the store.\n\n\n\nEvery Lost Product Still Has a Price Tag Attached to It\n\nA wasted food item isn’t free. Even if it never gets sold, money has already been spent to get it there. Seeds may have been planted months earlier. Workers spent time harvesting, processing, packaging, transporting, and stocking the product. Facilities used electricity to keep operations running and food at the proper temperature. By the time food reaches a shelf, resources have already been invested at nearly every step along the way.\n\n\n\nImagine a bakery that makes 100 loaves of bread but only sells 80. The ingredients, labor, and overhead for the remaining 20 loaves don’t simply disappear. The bakery still has to cover those costs if it wants to stay in business.\n\n\n\nThe same principle applies throughout the food industry. Every unsold product represents money that was invested but never recovered. One of the lesser-known causes of food price increase is the need for businesses to recoup at least some of those losses. While food price increases are influenced by many factors, waste adds another layer of cost that can ripple through the supply chain before it ever shows up on a grocery bill.\n\n\n\nWaste Is a Less Obvious Cause of Food Price Increases\n\nMost people can name a few reasons why groceries cost more today than they did a few years ago. Food waste is one contributor that rarely makes the list. Yet, in just one year, 29% of the country’s 240 million tons of available food went unsold or uneaten. On its own, that represents a significant loss. The challenge becomes even greater when the costs associated with producing, moving, and selling food continue to rise.\n\n\n\nFood businesses aren’t dealing with waste in a vacuum. They’re also navigating higher expenses throughout the supply chain, including:\n\n\n\nInflation, with the Consumer Price Index up nearly 4% in May 2026\n\nRising wages, as salaries and compensation increased 3.4% since 2025\n\nHigher transportation expenses, with gasoline prices up 17.5% and diesel prices up 37.3% from March 2025\n\nOngoing supply chain disruptions, as 65% of companies face at least one bottleneck in their supply chain\n\n\n\nEach of those increases makes wasted food more expensive. If products are discarded before purchase, businesses aren’t just losing food. They’re losing the higher costs attached to it as well. The more money that disappears along the way, the greater the pressure to recover those losses elsewhere. Though waste isn’t the only cause of food price increases, it can make an already expensive problem even more costly.\n\n\n\nWhy Reducing Waste Benefits More Than the Environment\n\nAfter reading about the scale and cost of food waste, it’s easy to assume the biggest benefit of reducing it is environmental. While any reduction in waste is definitely a win for the planet, there’s also an economic side to the story. Nearly 45% of food waste was still safe to enjoy at the time it was discarded, which means a significant amount of value is being lost alongside the food itself.\n\n\n\nWhen grocers find ways to get more of the food they already invested in to customers, fewer products go unsold and more of the costs associated with producing, transporting, and stocking those items can be recovered. Less waste doesn’t eliminate the factors driving food price increases, but it can help reduce some of the financial pressure created when perfectly good food goes unused.\n\n\n\nThat’s where Too Good To Go comes in.\n\n\n\nThrough our surplus food marketplace, grocery retailers can sell leftover items directly to local customers instead of letting it go to waste. Shoppers gain access to better grocery deals, while retailers recover value from food that might otherwise become a loss. The environmental perks are real, but the opportunity to make better use of food benefits businesses and consumers alike.\n\n\n\nHow to Save Money on Groceries Despite Food Price Increases\n\nFood price increases are influenced by a wide range of factors, from rising inflation and transportation costs to labor expenses and global supply chain disruptions. Slashing food waste won’t solve every pricing challenge, but reducing unnecessary waste can help create a more efficient food system. When more food gets sold and enjoyed instead of discarded, businesses capture more revenue, and fewer resources go unused.\n\n\n\nOne example is Surprise Bags sold on Too Good To Go. Rather than throwing away surplus food that is still perfectly good to eat, participating businesses bundle it into discounted Surprise Bags and make them available through the Too Good To Go marketplace. That creates an opportunity for businesses to sell more of the food they already have while helping shoppers stretch their grocery budgets.\n\n\n\nGetting started is simple. The Too Good To Go app is free to download and allows you to browse available Surprise Bags from grocery stores, bakeries, restaurants, and other local businesses near you. Surprise Bags are grouped into categories, like produce or pastries. Once you find an option you’d like to try, you purchase it directly through the app. When the pickup window opens, simply stop by and collect your Surprise Bag.\n\n\n\nWhether you’re looking for better grocery deals or simply trying to make your budget go a little further, Surprise Bags offer a practical way to save money despite food price increases. Download the Too Good To Go app today to discover local Surprise Bags and see what’s available near you.\n\n\n\n\n\nDiscover Surprise Bags near you.\n\n\n\n\n\nFAQs About Food Price Increases\n\nWhat are the main causes of food price increases?\n\nFood price increases are often driven by a combination of factors, including inflation, higher labor costs, rising transportation expenses, and supply chain disruptions. Food waste can also contribute to higher prices by creating losses throughout the supply chain that businesses may need to recover elsewhere.\n\n\n\nHow does food waste affect grocery prices?\n\nFood waste creates costs at every stage of the food system. Crops may be grown, transported, stored, and stocked before ultimately going unsold. When businesses absorb those losses, some of the associated costs can eventually be reflected in the prices consumers pay at the store.\n\n\n\nIs food waste really a significant problem in the United States?\n\nYes. In 2024, 29% of the country’s available food went unsold or uneaten. Food waste occurs throughout the supply chain, from farms and manufacturers to grocery stores and households, making it a much larger issue than uneaten leftovers alone.\n\n\n\nWhy don’t businesses simply lower prices instead of throwing food away?\n\nMany businesses do look for ways to sell surplus food before it goes to waste. However, factors such as limited shelf life, unpredictable demand, and operational constraints can make it difficult to sell every item before quality declines. That’s why many retailers are exploring new ways to connect surplus food with interested shoppers.\n\n\n\nCan reducing food waste help lower grocery costs?\n\nReducing food waste won’t eliminate food price increases on its own, but it can help create a more efficient food system. When businesses sell more of the food they already have, fewer resources are lost and more value is retained throughout the supply chain.\n\n\n\nWhat is Too Good To Go?\n\nToo Good To Go is a surplus food marketplace that helps businesses sell food that might otherwise go unsold. Through the app-based platform, shoppers can discover discounted Surprise Bags from local grocery stores, bakeries, restaurants, and other food businesses while helping keep perfectly good food from going to waste.\n\n\n\nHow do Surprise Bags work on Too Good To Go?\n\nSurprise Bags are discounted bundles of surplus food sold through the Too Good To Go app. After downloading the free app, users can browse available options nearby, purchase a Surprise Bag directly through the platform, and pick it up during the designated collection window. The exact contents are a surprise, which allows businesses to package available surplus food while giving shoppers access to great value.",{"_type":1136,"alt":1183,"asset":1184,"fit":25},"Shopper comparing grocery prices",{"_ref":1185,"_type":13},"image-d837c2e3badbc3be20513661f3a3931a7f6ae7c1-5951x3967-jpg","2026-07-09T16:44:27.328Z","\u002Fblog\u002Ffood-price-increase","How Food Waste Is Quietly Driving Up Your Grocery Bill",{"_createdAt":1190,"_id":1191,"categories":8,"content":1192,"excerpt":8,"file":8,"image":1193,"language":38,"migrated":8,"pretitle":1142,"publishedAt":1203,"slug":1204,"title":1205,"updatedAt":8,"url":8},"2026-07-07T13:16:12Z","a13ee221-aac9-4e5e-b6c3-1f50ba7be4bd","Profitability feels increasingly difficult to protect lately. Operating costs continue to rise, shoppers remain price-sensitive, and competition extends far beyond the supermarket down the street. While controlling expenses remains important, there’s only so much a grocer can cut before it affects the customer experience. The time has come to look beyond traditional transactions and explore additional sources of grocery store revenue.\n\n\n\nMany of the biggest opportunities have little to do with ringing up more items at checkout. Some of the most effective ways to improve grocery store revenue happen outside of the transaction itself, from investing in private-label products and loyalty programs to recovering value from leftover inventory that might otherwise go unsold. As margins remain under strain, take a look at five untapped grocery store revenue opportunities.\n\n\n\nWhy Retailer Profitability Requires More Than Product Sales\n\nMost discussions about grocery store revenue focus on units sold. In reality, a grocer may sell thousands of items, but profitability is not determined by sales alone. Two stores with similar sales volume can have very different profit margins depending on their product mix, customer retention, and how effectively they manage inventory that doesn’t sell as planned. Revenue and profitability are closely related, but they are not the same thing.\n\n\n\nFor this reason, small grocery store revenue growth is not always tied to selling more products. A retailer that strengthens margins, encourages repeat business, or reduces fresh food waste may strengthen profitability without ever significantly increasing sales volume. Understanding that distinction can help retail operators identify opportunities that are often overlooked when revenue performance is strictly measured through transactions.\n\n\n\nGrocery Store Revenue Opportunities Hiding in Plain Sight\n\nThe most strategic ways to improve grocery store revenue are already woven into daily operations. Some focus on increasing the value of existing customer relationships, while others help retailers earn more from the products and inventory they already have. The following opportunities highlight several actionable ways grocery operators can strengthen profitability without relying solely on higher sales volume.\n\n\n\nPrivate-Label Products Increase Margin Per Sale\n\nOne of the simplest ways to improve grocery store revenue is to earn more from products that are already selling. As explored in our guide to price sensitivity in food retail, shoppers continue to look for value, creating an opening for retailers to expand their private-label offerings. Store brands have gained significant traction in recent years, with 72% of consumers reporting that they purchase them somewhat to very often.\n\n\n\nLucky for grocers, private-label products are more margin-friendly than many national brands. Consumers also view store brands as equal to or better than their branded counterparts, allowing retailers to capture stronger profitability without sacrificing customer satisfaction. A carefully selected assortment can make value-conscious shoppers feel like they’re getting more from the store, not simply paying less.\n\n\n\nLoyalty Programs Boost Customer Lifetime Value\n\nOnce shoppers see value in what a store offers, the next opportunity is giving them a reason to keep coming back. Recent foot traffic trends suggest that many consumers are making more frequent trips but purchasing fewer items per visit, creating pressure to maximize each customer relationship. As retailers look for ways to improve grocery store revenue, loyalty programs offer a practical way to stay connected between shopping trips.\n\n\n\nFew tools are better suited for that job than a grocery loyalty program, either. Grocery remains the leading category for loyalty program participation because these programs create value for both retailers and shoppers. Beyond encouraging repeat visits, loyalty programs help retailers better understand purchasing behavior, making it easier to deliver offers that strengthen customer relationships and support long-term profitability.\n\n\n\nGrab-and-Go and Prepared Foods Grow Basket Size\n\nEvery trip through the store represents an opportunity to increase spending. Consumer behavior continues to shift toward convenience, with more shoppers making smaller food decisions throughout the day rather than planning every purchase around traditional meal occasions. Evolving customer purchasing habits have helped turn grab-and-go and prepared foods into a meaningful source of grocery store revenue.\n\n\n\nReady-to-eat options like fresh salads and parfaits often command higher margins than many center-store products while encouraging impulse purchases that increase basket size, too. Convenience also helps retailers capture purchases that might otherwise happen elsewhere, whether at a restaurant, coffee shop, or convenience store. Not only are grocers capturing more of the wallet share, they’re also generating more profit on each sale.\n\n\n\nLocal Partnerships Create New Revenue Channels\n\nConvenience may encourage the majority of modern shoppers to spend more during a visit, but unique offerings often influence where they choose to shop in the first place. Aside from value-forward private-label items, local partnerships provide grocery retailers with an opportunity to expand their inventory with artisan products that build stronger connections within the community.\n\n\n\nPartnerships can take many forms, including:\n\nLocal farmers supplying seasonal produce\n\nIndependent bakers providing specialty breads and pastries\n\nRegional food producers offering exclusive products\n\nCollaborative in-store events featuring local businesses\n\nSeasonal promotions tied to community events\n\n\n\nMany shoppers enjoy finding products they cannot purchase anywhere else. Local partnerships help create those moments while giving retailers an opportunity to stand apart from larger competitors with more standardized assortments. A reputation for carrying unique, locally sourced products can encourage repeat visits and turn a routine grocery trip into a destination and source of discovery.\n\n\n\nSurplus Inventory Offers a Second Chance to Sell\n\nNo matter how carefully inventory is managed, some products will inevitably remain on the shelf longer than expected. Demand shifts and purchasing patterns change, yet fresh inventory continues to arrive. Products are stocked on shelves, but never make it to the checkout lane. Without a plan in place, those items can quickly contribute to store shrink while adding to broader food supply chain waste.\n\n\n\nRather than viewing near-expiry items as a lost sale, retailers can create alternative purchase opportunities before products leave the shelf. However, recovering value from those products requires a different approach than traditional merchandising. Surplus food marketplaces like Too Good To Go give perfectly good food a second chance at a sale, strengthening profitability while reducing waste.\n\n\n\nExpand Revenue Beyond Traditional Grocery Sales with Too Good To Go\n\nThe strongest grocery store revenue strategies rarely rely on a single change. Private-label products can improve profitability, loyalty programs can strengthen customer relationships, prepared foods can increase basket size, and local partnerships can help stores stand out from the competition. Together, those opportunities can make a meaningful impact on financial performance. Even so, one challenge remains: no assortment sells perfectly.\n\n\n\nToo Good To Go helps retailers recover value from leftover items through our surplus food marketplace. Rather than allowing near-expiry products to become shrink, grocery stores can package eligible items into Surprise Bags and sell them to local shoppers through the Too Good To Go app. In addition to creating a second revenue channel, Surprise Bags introduce stores to value-conscious consumers who may become repeat customers long after their first purchase.\n\n\n\nAs a grocery store food waste solution, Too Good To Go helps retailers support profitability and waste reduction at the same time. Less surplus inventory means fewer losses, while every Surprise Bag creates another opportunity to generate grocery store revenue from products that might otherwise go unsold. Learn how Too Good To Go can help your store recover more value from surplus food and turn overlooked inventory into a revenue opportunity.\n\n\n\n\n\nLearn how Too Good To Go can help your store recover value.\n\n\n\n\n\nFAQs About Grocery Store Revenue\n\nWhat is grocery store revenue?\n\nGrocery store revenue refers to the income a retailer generates from selling products and services. While product sales make up the largest share of revenue, profitability is also influenced by factors such as product mix, customer retention, prepared foods, local partnerships, and the ability to recover value from surplus inventory.\n\n\n\nHow can private-label products improve grocery store profitability?\n\nPrivate-label products often carry higher margins than national brands while still appealing to value-conscious shoppers. As consumer confidence in store brands continues to grow, private-label offerings can help retailers earn more from products that are already selling without significantly changing customer purchasing behavior.\n\n\n\nWhy are loyalty programs important for grocery retailers?\n\nLoyalty programs encourage repeat visits and help retailers stay connected with customers between shopping trips. They also provide insight into purchasing behavior, making it easier to deliver relevant offers and strengthen long-term customer relationships. Over time, those benefits can contribute to stronger revenue performance and customer retention.\n\n\n\nHow do prepared foods help grow grocery store revenue?\n\nPrepared foods and grab-and-go items can increase basket size by capturing convenience-driven purchases. Ready-to-eat meals, snacks, and fresh options often generate higher margins than many traditional grocery products while encouraging additional spending during each visit.\n\n\n\nWhat are some examples of local partnerships for grocery stores?\n\nLocal partnerships can include relationships with farmers, bakers, specialty food producers, and other community businesses. Some retailers also collaborate on seasonal promotions or in-store events. These partnerships can help stores offer unique products that differentiate them from larger competitors.\n\n\n\nHow does Too Good To Go work for grocery stores?\n\nToo Good To Go helps grocery stores sell eligible surplus food through its marketplace before it goes unsold. Retailers bundle available items into Surprise Bags, set a pickup window, and list them in the Too Good To Go app. Shoppers purchase the bags directly through the app and collect them during the designated pickup time, creating a simple way to recover value from surplus inventory.\n\n\n\nCan Too Good To Go help generate additional revenue?\n\nYes. Too Good To Go creates an additional revenue channel by helping retailers sell food that may not have sold through traditional merchandising. In addition to generating revenue from surplus inventory, Surprise Bags can introduce stores to value-conscious shoppers who may return for future purchases. By reducing shrink and recovering value from near-expiry products, retailers can support both profitability and waste reduction.",{"_type":1136,"alt":1194,"asset":1195,"crop":1197,"fit":25,"hotspot":1200},"Shopper selecting fresh grocery produce",{"_ref":1196,"_type":13},"image-afbdc5c0faa5d4f9b987aae01380951e3944632e-2048x1502-jpg",{"_type":1198,"bottom":1199,"left":1199,"right":1199,"top":1199},"sanity.imageCrop",0,{"_type":1201,"height":462,"width":462,"x":1202,"y":1202},"sanity.imageHotspot",0.5,"2026-07-07T13:57:02.718Z","\u002Fblog\u002Fgrocery-store-revenue-opportunities","Beyond the Checkout: Untapped Revenue Opportunities for Grocery Retailers",128]