diff --git a/app/Http/Middleware/SecureHeaders.php b/app/Http/Middleware/SecureHeaders.php index ae90423..ec37ddb 100644 --- a/app/Http/Middleware/SecureHeaders.php +++ b/app/Http/Middleware/SecureHeaders.php @@ -59,7 +59,8 @@ class SecureHeaders 'frame-src ' . implode(' ', [ 'https://www.google.com/recaptcha/', 'https://recaptcha.google.com/recaptcha/', - 'https://www.google.com/maps/' + 'https://www.google.com/maps/', + 'https://www.youtube.com/' ]) . ';', "font-src 'self' data: https://fonts.gstatic.com;", // ! Using CKEditor will must have unsafe-inline style diff --git a/package-lock.json b/package-lock.json index adec511..3b0142b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "@fortawesome/free-regular-svg-icons": "latest", "@fortawesome/free-solid-svg-icons": "latest", "@fortawesome/vue-fontawesome": "^3.0.3", - "@ldc-web/cookie-notice": "^3.0.8", + "@ldc-web/cookie-notice": "^6.0.1", "@rushstack/eslint-patch": "^1.3.2", "@sipec/vue3-tags-input": "^3.0.4", "@types/bootstrap": "^5.2.7", @@ -2435,9 +2435,9 @@ } }, "node_modules/@ldc-web/cookie-notice": { - "version": "3.0.8", - "resolved": "https://lab.s-web.fr/api/v4/projects/50/packages/npm/@ldc-web/cookie-notice/-/@ldc-web/cookie-notice-3.0.8.tgz", - "integrity": "sha1-FOc6hEv1L9NOnRDOdyBnbIsd31A=", + "version": "6.0.1", + "resolved": "https://lab.s-web.fr/api/v4/projects/50/packages/npm/@ldc-web/cookie-notice/-/@ldc-web/cookie-notice-6.0.1.tgz", + "integrity": "sha1-cpqBtzjutcgrzXCcyoAVsv9oBpo=", "dev": true }, "node_modules/@nodelib/fs.scandir": { diff --git a/package.json b/package.json index 4c0213e..d9d2a20 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "@fortawesome/free-regular-svg-icons": "latest", "@fortawesome/free-solid-svg-icons": "latest", "@fortawesome/vue-fontawesome": "^3.0.3", - "@ldc-web/cookie-notice": "^3.0.8", + "@ldc-web/cookie-notice": "^6.0.1", "@rushstack/eslint-patch": "^1.3.2", "@sipec/vue3-tags-input": "^3.0.4", "@types/bootstrap": "^5.2.7", diff --git a/resources/lang/fr/cookie-notice.php b/resources/lang/fr/cookie-notice.php index cb126e7..81e4d7d 100644 --- a/resources/lang/fr/cookie-notice.php +++ b/resources/lang/fr/cookie-notice.php @@ -3,41 +3,45 @@ // * Version 3.0.8 // phpcs:disable return [ - 'button_customize_cookies' => 'Personnaliser les cookies', - 'button_forbid' => 'Interdire', - 'button_allow' => 'Autoriser', - 'button_forbid_all' => 'Tout refuser', - 'button_allow_all' => 'Tout accepter', - 'button_customize' => 'Personnaliser', - 'button_back' => 'Retour', - 'banner_title' => 'Le site internet :site_name utilise des cookies !', - 'banner_text_open' => 'Ce site web stocke les cookies sur votre ordinateur. :site_name utilise ces informations afin d’améliorer et de personnaliser votre expérience de navigation, ainsi que pour l’analyse et les indicateurs concernant nos visiteurs à la fois sur ce site web et sur d’autres supports. Vous pouvez cliquer sur « Accepter » si vous consentez à l’utilisation de ces cookies.', - 'banner_text' => 'Nous utilisons des cookies pour nous assurer du bon fonctionnement de notre site et à des fins analytiques. En poursuivant votre navigation sur ce site ou en fermant ce bandeau, vous consentez à l’utilisationde ces cookies.', - 'banner_details' => 'Si vous refusez l’utilisation des cookies, vos informations ne seront pas suivies lors de votre visite sur ce site. Un cookie sera utilisé dans votre navigateur afin de se souvenir de ne pas suivre vos préférences. Certaines fonctionnalités ne seront pas accessibles. Vous pouvez changer d’avis et modifier votre consentement à tout moment en revenant sur ce site.', - 'banner_details_link' => - 'Pour en savoir plus sur les cookies que nous utilisons, consultez notre charte de confidentialité.', - 'banner_details_link_title' => 'Charte de confidentialité', - 'banner_more_details' => 'Plus de détails...', - 'banner_less_details' => 'Moins de détails...', - 'Panel_title' => 'Panneau de gestion des cookies', - 'Panel_subtitle' => 'Le respect de votre vie privée est notre priorité', - 'Panel_details' => 'Les fonctionnalités de ce site s’appuient sur des services proposés par des tiers. Si vous acceptez, ces tiers déposeront des cookies qui vous permettront de visualiser sur le site du contenu hébergé par ces tiers. Via ces cookies, ces tiers collecteront et utiliseront vos données de navigation pour des finalités qui leur sont propres, conformément à leur politique de confidentialité (lien ci-dessous). Cette page vous permet de donner ou de retirer votre consentement, soit globalement soit service par service.', + 'button_customize_cookies' => 'Personnaliser les cookies', + 'button_close_cookies' => 'Fermer la fenêtre des cookies', + 'button_toggle_cookie' => 'Autoriser ou refuser', + 'button_forbid_all' => 'Tout refuser', + 'button_allow_all' => 'Tout accepter', + 'button_allow' => 'Autoriser', + 'button_forbid_all_title' => 'Refuser tous les cookies et fermer le panneau des cookies', + 'button_allow_all_title' => 'Accepter tous les cookies et fermer le panneau des cookies', + 'button_customize' => 'Personnaliser', + 'button_validate_and_close' => 'Valider et fermer', + 'button_title_open_new_tab' => 'Ouvrir le lien dans un nouvel onglet', + 'banner_title' => 'Le site internet :site_name utilise des cookies !', + 'banner_text' => 'Nous utilisons des cookies pour nous assurer du bon fonctionnement de notre site et à des fins analytiques. + Vous pouvez changer d’avis à tout moment en cliquant sur l’icône présente sur chaque page de notre site. + En autorisant ces services tiers, vous acceptez le dépôt et la lecture de cookies et l’utilisation de technologies de suivi nécessaires à leur bon fonctionnement.', + 'modal_title' => 'Fenêtre de gestion de cookies', + 'panel_content' => 'Contenu du panneau des cookies', + 'picture_cookie_title' => 'Image d’un bon gros cookie', + 'navigation_title' => 'Navigation du panneau des cookies', 'custom' => [ 'frame' => 'Vous devez autoriser les cookies :type pour voir cet élément', 'recaptcha' => [ - 'name' => 'API - reCAPTCHA', - 'description' => 'Les cookies qui sont déposés via le recaptcha sur les formulaires ont pour but d\'empêcher la soumission des formulaires par des robots.', - 'warning' => 'Vous devez accepter les cookies recaptcha pour utiliser les formulaires.' + 'title' => 'reCAPTCHA', + 'description' => 'Les cookies qui sont déposés via le recaptcha sur les formulaires ont pour finalité d’empêcher que ceux-ci ne soient soumis par des robots.', + 'labelLink' => 'En savoir +', + 'warning' => 'Vous devez accepter les cookies reCAPTCHA pour envoyer le formulaire', ], - 'matomo' => [ - 'name' => 'Mesure d\'audience - MATOMO', - 'description' => 'Service d\'analyse d\'audience.' + 'matomo' => [ + 'title' => 'Matomo', + 'description' => 'Les services de mesure d’audience permettent de générer des statistiques de fréquentation utiles à l’amélioration du site.', + 'labelLink' => 'En savoir +', ], + 'youtube' => [ - 'name' => 'VIDEOS - Youtube', + 'name' => 'VIDEOS - Youtube', 'description' => 'Les cookies placés par des services de partages de vidéos ont pour but d\'autoriser les utilisateurs à voir le contenu directement depuis ce site.', - 'labelLink' => 'En savoir plus' + 'labelLink' => 'En savoir +', + 'warning' => 'Youtube est désactivé' ], ] ]; diff --git a/resources/sass/fo/base/_common.scss b/resources/sass/fo/base/_common.scss index 41bf297..53af23e 100644 --- a/resources/sass/fo/base/_common.scss +++ b/resources/sass/fo/base/_common.scss @@ -44,3 +44,13 @@ h6 { h1 { margin-bottom: 0; } + +.cn-cookie-activate { + .small-text { + color: #000000b3 + } + + button { + min-width: fit-content; + } +} diff --git a/resources/sass/fo/vendor/_ldcweb-cookies.scss b/resources/sass/fo/vendor/_ldcweb-cookies.scss deleted file mode 100644 index ef17209..0000000 --- a/resources/sass/fo/vendor/_ldcweb-cookies.scss +++ /dev/null @@ -1,629 +0,0 @@ -/** - * LDC Service Web Cookies - * Version 2.1.0 - */ - -/* stylelint-disable selector-max-compound-selectors */ -/* stylelint-disable max-nesting-depth */ - -/* DEBUT DU PARAMETRAGE */ -/* - Choix des FONTS */ -/* - Changement des couleurs et des polices */ - -/* PARTIE A RENSEIGNER */ -$primary-color: #fc9c00; -$secondary-color: #da002b; -$background-color: #fff; -$shadow-color: 0 0.1rem 1rem rgb(0 0 0 / 35%); -$title-font: "Amatic SC", sans-serif; -$line-height-title: 1; -$title-size: 25px; -$text-font: "Poppins-Regular", sans-serif; -$text-size: 14px; -$accept-color: #3a3; -$deny-color: #a33; - -/* Position et animation des cookies */ -$ldcweb-cn-position-left: 20px; /* Distance par rapport à la gauche de la fenêtre */ -$ldcweb-cn-position-right: auto; /* Distance par rapport à la droite de la fenêtre */ -$ldcweb-cn-animation-left: 0; /* Position gauche de base des cookies */ -$ldcweb-cn-animation-right: auto; /* Position droite de base des cookies */ -$ldcweb-cn-position-bottom: 20px; /* Distance par rapport au bas de la fenêtre */ -$ldcweb-cn-z-index: 200; - -/* PARTIE A RENSEIGNER FACULTATIF */ -/* FENETRE D'ACCUEIL */ -$ck-bg-color: #fff; - -/* Title settings */ -$ck-w1-bgcolor-title: $background-color; -$ck-w1-font-family-title: $title-font; -$ck-w1-font-size-title: $title-size; -$ck-w1-color-title: $secondary-color; - -/* Text settings */ -$ck-w1-font-family-txt: $text-font; -$ck-w1-font-size-txt: $text-size; -$ck-w1-color-txt: $primary-color; -$ck-w1-color-href-hover: $secondary-color; - -/* Button settings */ -$ck-w1-color-btn: $secondary-color; -$ck-w1-color-btn-hover: $secondary-color; -$ck-w1-font-family-btn-txt: $text-font; -$ck-w1-font-size-btn-txt: $text-size; -$ck-w1-color-btn-txt: #fff; -$ck-w1-color-btn-txt-hover: #fff; -$ck-w1-color-btn-border: transparent; -$ck-w1-color-btn-border-hover: transparent; - -/* FENETRE DE PERSONNALISATION */ -$ck-bg-color-modal-wrapper: #fff; -/* Title settings */ -$ck-w2-bgcolor-title: $background-color; -$ck-w2-font-family-title: $title-font; -$ck-w2-font-size-title: $title-size; -$ck-w2-color-title: $secondary-color; - -/* Text settings */ -$ck-w2-font-family-txt: $text-font; -$ck-w2-font-size-txt: $text-size; -$ck-w2-color-txt: $primary-color; -$ck-w2-color-href-hover: #000; - -/* Accept/Deny btn settings */ -$ck-color-accept: #808080; -$ck-color-accept-hover: $accept-color; -$ck-color-deny: #808080; -$ck-color-deny-hover: $deny-color; -$ck-color-txt: #fff; -$ck-color-txt-hover: #fff; - -/* Cookies list settings */ -$ck-bgcolor-list: #e4e4e4; -$ck-font-family-list: $text-font; -$ck-font-size-list: $text-size; -$ck-color-list: #000; -$ck-color-title: $secondary-color; - -/* Scroll bar */ -$ck-scroll-bgcolor: $primary-color; -$ck-scroll-barcolor: $secondary-color; -/* FIN DU PARAMETRAGE */ - -/* MOBILE FIRST */ -#template { - display: none; -} - -* { - box-sizing: border-box; -} - -button { - border: 0; - background-color: transparent; -} - -#ldcweb-cn { - &::before { - display: none; - } - - &.open-banner { - display: flex; - - .ldcweb-cn-banner { - display: flex; - } - } - - &.open-modal { - display: flex; - } - - p { - color: $ck-w1-color-txt; - font-family: $ck-w1-font-family-txt; - font-size: $ck-w1-font-size-txt; - } - - a { - color: $ck-w1-color-txt; - font-family: $ck-w1-font-family-txt; - font-size: $ck-w1-font-size-txt; - text-decoration: underline; - transition: 0s; - } - - .ldcweb-cn-banner { - position: fixed; - z-index: $ldcweb-cn-z-index; - right: $ldcweb-cn-animation-right; - bottom: calc($ldcweb-cn-position-bottom + 60px); - left: $ldcweb-cn-animation-left; - display: flex; - overflow: auto; - overflow: hidden; - width: 475px; - height: auto; - max-height: 80vh; - flex-direction: column; - flex-direction: column; - align-items: center; - justify-content: flex-end; - padding: 0; - padding-top: 20px; - margin: 0; - background-color: $ck-bg-color; - border-radius: 10px; - box-shadow: $shadow-color; - line-height: initial; - opacity: 0; - transition: 0.3s; - user-select: none; - visibility: hidden; - - &-open { - right: $ldcweb-cn-position-right; - left: $ldcweb-cn-position-left; - opacity: 1; - visibility: visible; - } - } - - .ldcweb-banner { - &-img { - display: flex; - width: 150px; - height: auto; - flex-direction: column; - align-items: center; - justify-content: center; - padding-right: 20px; - - img { - width: 100%; - } - } - - &-text { - flex: 2; - } - - &-title { - p { - color: $ck-w1-color-title; - font-family: $ck-w1-font-family-title; - font-size: $ck-w1-font-size-title; - font-weight: bold; - line-height: $line-height-title; - text-align: left; - } - } - - &-para-p { - margin: 6px 0; - text-align: justify; - } - - &-btn-details { - width: 100%; - margin: 0 0 20px; - } - - &-btn-details-p { - width: 100%; - margin: 0 auto; - color: $secondary-color; - cursor: pointer; - font-size: 14px; - text-align: center; - } - - &-btns { - display: flex; - width: 100%; - flex: 1; - flex-direction: row; - cursor: pointer; - - .ldcweb-banner-btn { - &-flex { - display: flex; - width: 66.5%; - flex-direction: row; - align-items: center; - justify-content: center; - border-top: 1px solid #808080; - text-align: center; - - div { - width: 50%; - } - - .ldcweb-cn-accept { - color: $secondary-color; - font-weight: bolder; - } - } - - &s-btn { - display: flex; - width: 100%; - height: 50px; - flex-direction: column; - align-items: center; - justify-content: center; - background-color: $background-color; - color: $primary-color; - font-family: $ck-w1-font-family-btn-txt; - font-size: $ck-w1-font-size-btn-txt; - text-align: center; - text-decoration: none; - - &:hover { - background-color: $ck-w1-color-btn-hover; - color: $ck-w1-color-btn-txt-hover; - } - } - } - } - - &-content { - display: flex; - flex-direction: row; - align-items: center; - justify-content: center; - padding: 0 20px; - } - - &-details { - display: flex; - overflow: hidden; - height: 0; - flex-direction: row; - align-items: center; - align-items: flex-start; - justify-content: center; - padding: 0 20px; - text-align: justify; - transition: 0.3s; - } - - &-details-open { - margin-bottom: 6px; - } - - &-btn-personalize { - width: 33.5%; - border-top: 1px solid #808080; - } - - &-btn-accept { - border-right: 1px solid #808080; - border-left: 1px solid #808080; - } - } - - &-modal { - z-index: 200; - display: flex; - width: 100%; - height: 100%; - align-items: center; - justify-content: center; - opacity: 1; - - &-wrapper { - position: relative; - display: flex; - overflow: auto; - max-height: 100vh; - flex-direction: column; - align-items: center; - - > div { - &:not(:first-of-type) { - width: 100%; - align-items: flex-end; - } - } - } - - &-title { - padding: 0 20px; - - * { - margin: 0; - text-align: justify; - } - - .title { - color: $ck-w2-color-title; - font-family: $ck-w2-font-family-title; - font-size: $ck-w2-font-size-title; - font-weight: bold; - text-align: center; - } - - .subtitle { - margin-bottom: 6px; - color: $ck-w2-color-txt; - color: $ck-w2-color-title; - font-family: $ck-w2-font-family-txt; - font-size: $ck-w2-font-size-txt; - text-align: center; - } - - .description { - display: flex; - flex-direction: column; - align-items: center; - color: $ck-w2-color-txt; - font-family: $ck-w2-font-family-txt; - font-size: $ck-w2-font-size-txt; - font-weight: normal; - line-height: initial; - } - } - - &-btns { - display: flex; - flex-direction: column; - align-items: center; - font-weight: normal; - line-height: initial; - - p { - color: $ck-w2-color-txt; - font-family: $ck-w2-font-family-txt; - font-size: $ck-w2-font-size-txt; - } - - a { - color: $ck-w2-color-txt; - font-family: $ck-w2-font-family-txt; - font-size: $ck-w2-font-size-txt; - } - } - - &-details { - width: 100%; - height: 153px; - margin: 6px 0; - overflow-y: auto; - - ul { - display: flex; - flex-direction: column; - padding: 0 20px; - list-style: none; - } - - li { - > div { - display: flex; - flex-direction: column; - align-items: center; - justify-content: space-between; - padding: 20px; - border: 1px solid $ck-bgcolor-list; - margin: 10px 0; - border-radius: 20px; - } - - span { - color: $ck-color-list; - font-family: $ck-font-family-list; - font-size: $ck-font-size-list; - } - - a { - text-decoration: none; - color: $ck-color-list; - font-family: $ck-font-family-list; - font-size: $ck-font-size-list; - } - - label { - color: $ck-color-list; - font-family: $ck-font-family-list; - font-size: $ck-font-size-list; - } - } - - .ldcweb-cn { - &-name { - color: $ck-color-title; - } - - &-infos { - display: flex; - width: 100%; - flex: 1; - flex-direction: column; - - span { - &:first-of-type { - font-size: calc($ck-font-size-list * 1.25); - font-weight: bold; - } - } - - .ldcweb-cn-description { - color: $ck-w2-color-txt; - } - - a { - width: fit-content; - } - } - - &-buttons { - display: flex; - width: 200px; - justify-content: space-around; - margin-top: 6px; - - div { - display: table; - margin: 0.5em; - text-align: center; - - &:first-of-type { - background: $ck-color-accept; - transition: all 0.3s; - - input { - &:checked { - ~ { - label { - background-color: $ck-color-deny-hover; - } - } - } - - ~ label.active { - background-color: $ck-color-deny-hover; - } - } - } - - &:last-of-type { - background: $ck-color-deny; - transition: all 0.3s; - - input { - &:checked { - ~ { - label { - background-color: $ck-color-accept-hover; - } - } - } - - ~ { - label.active { - background-color: $ck-color-accept-hover; - } - } - } - } - } - - input { - display: none; - } - - label { - display: block; - width: 100px; - padding: 6px 20px; - color: $ck-color-txt; - cursor: pointer; - transition: color 0.3s; - } - } - } - } - } -} - -.ldcweb-btn { - position: fixed; - z-index: $ldcweb-cn-z-index; - right: $ldcweb-cn-position-right; - bottom: $ldcweb-cn-position-bottom; - left: $ldcweb-cn-position-left; - width: 50px; - height: 50px; - padding: 8px; - background-color: #fff; - border-radius: 100%; - box-shadow: $shadow-color; - cursor: pointer; - - &-icon { - path { - fill: $secondary-color; - } - - circle { - fill: $secondary-color; - } - } -} - -.visibility { - display: none !important; -} - -.btn-autorize { - cursor: pointer; - fill: $secondary-color; -} - -.ldcweb-cn-cookie-link { - cursor: pointer; -} - -@media (max-width: 535px) { - #ldcweb-cn { - .ldcweb-banner { - &-btns { - flex-direction: column; - - .ldcweb-banner-btn-flex { - width: 100%; - - .ldcweb-banner-btn-deny { - width: 50%; - } - - .ldcweb-banner-btn-accept { - width: 50%; - } - } - - .ldcweb-banner-btn-personalize { - width: 100%; - } - } - - &-title { - p { - text-align: center; - } - } - - &-img { - padding: 0 0 20px; - } - - &-btn-accept { - border-right: 0; - border-left: 1px solid #808080; - } - - &-details-open { - height: 0; - } - } - - .ldcweb-cn-banner { - bottom: 0; - left: 0; - width: 100%; - max-height: 100vh; - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; - border-top-left-radius: 10px; - border-top-right-radius: 10px; - - &-content { - flex-direction: column; - } - } - } -} diff --git a/resources/ts/fo/utilities/fontawesome.ts b/resources/ts/fo/utilities/fontawesome.ts index d749a13..3c87063 100644 --- a/resources/ts/fo/utilities/fontawesome.ts +++ b/resources/ts/fo/utilities/fontawesome.ts @@ -1,45 +1,46 @@ -import { dom, library, config } from "@fortawesome/fontawesome-svg-core"; +import { config, dom, library } from "@fortawesome/fontawesome-svg-core"; +import { faCirclePlay } from "@fortawesome/free-regular-svg-icons"; import { - faEraser, - faArrowLeftLong, - faPlus, - faTrash, - faEye, - faFolderOpen, - faCrop, - faQuestionCircle, - faCheck, - faUndoAlt, - faRedoAlt, - faSyncAlt, - faSearchPlus, - faSearchMinus, - faArrowLeft, - faArrowRight, - faArrowUp, - faArrowDown, - faArrowsAltH, - faArrowsAltV, - faWandMagic, - faPencil, - faTimes, - faBackspace, - faSearch, - faArrowRightFromBracket, faArrowAltCircleDown, faArrowAltCircleUp, + faArrowDown, + faArrowLeft, + faArrowLeftLong, + faArrowRight, + faArrowRightFromBracket, + faArrowUp, + faArrowsAltH, + faArrowsAltV, + faBackspace, + faBan, + faCheck, faChevronLeft, faChevronRight, - faCircleNotch, - faSliders, faCircleCheck, + faCircleExclamation, + faCircleInfo, + faCircleNotch, faCircleXmark, faCopy, - faListUl, - faBan, + faCrop, + faEraser, + faEye, faEyeSlash, - faCircleExclamation, - faCircleInfo + faFolderOpen, + faListUl, + faPencil, + faPlus, + faQuestionCircle, + faRedoAlt, + faSearch, + faSearchMinus, + faSearchPlus, + faSliders, + faSyncAlt, + faTimes, + faTrash, + faUndoAlt, + faWandMagic } from "@fortawesome/free-solid-svg-icons"; config.autoReplaceSvg = false; @@ -86,5 +87,6 @@ library.add(faChevronRight); library.add(faCircleXmark); library.add(faCircleNotch); library.add(faSliders); +library.add(faCirclePlay); dom.watch(); diff --git a/resources/views/fo/layouts/footer.blade.php b/resources/views/fo/layouts/footer.blade.php index 7a34e06..290d616 100644 --- a/resources/views/fo/layouts/footer.blade.php +++ b/resources/views/fo/layouts/footer.blade.php @@ -1,23 +1,27 @@ - diff --git a/resources/views/fo/modules/video-frame.blade.php b/resources/views/fo/modules/video-frame.blade.php index 8b1c4bc..ae06cd4 100644 --- a/resources/views/fo/modules/video-frame.blade.php +++ b/resources/views/fo/modules/video-frame.blade.php @@ -1,14 +1,6 @@ @php $uniqueID = uniqid(); @endphp - - {{ $alt }} - + + {{ $picture_alt }} + + diff --git a/resources/views/fo/pages/contact.blade.php b/resources/views/fo/pages/contact.blade.php index 7e6d463..95baf89 100644 --- a/resources/views/fo/pages/contact.blade.php +++ b/resources/views/fo/pages/contact.blade.php @@ -6,158 +6,197 @@ @section('content') -
-
- Des poulets dans un élevage -
- -