PageSourceSearch

https://www.ircm.qc.ca/fr/nos-recherches

html ircm.qc.ca collected 2026-09-24 19:25:39 UTC 156,995 bytes, 1,852 lines download raw bytes

1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd"><html lang="fr" dir="ltr"
2	xmlns="http://www.w3.org/1999/xhtml">
3
4<head>
5			<title>Nos recherches - IRCM</title>
6	<link rel="alternate" hreflang="fr" href="https://www.ircm.qc.ca/fr/nos-recherches" />
7<link rel="alternate" hreflang="en" href="https://www.ircm.qc.ca/en/our-research" />        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
8        <meta name="title" content="Nos recherches - IRCM" />
9        <meta name="description" content="Explorez les axes de recherche de l'IRCM : cancer, maladies cardiovasculaires, immunologie, neurobiologie, métabolisme et maladies rares." />
10        <meta name="robots" content="index, follow" />
11        <meta name="author" content="Institut de recherches cliniques de Montréal (IRCM)" />
12        <meta name="generator" content="Yapla v6.286.0 - CMS Application" />
13        <meta property="og:title" content="Nos recherches - IRCM" />
14        <meta property="og:type" content="article" />
15        <meta property="og:url" content="https://www.ircm.qc.ca/fr/nos-recherches" />
16        <meta property="og:image" content="https://cdn.ca.yapla.com/company/CPY7p4CO2sE1afW3ImwiLyBND/event/partage_ircm_fr-1632245490.jpg" />
17        <meta property="og:site_name" content="Institut de recherches cliniques de Montréal (IRCM)" />
18        <meta property="og:description" content="Explorez les axes de recherche de l'IRCM : cancer, maladies cardiovasculaires, immunologie, neurobiologie, métabolisme et maladies rares." />
19        <meta property="fb:page_id" content="Institut de recherches cliniques de Montréal - IRCM" />
20        <meta name="twitter:account_id" content="https://twitter.com/ircm_mtl" />
21        <meta name="twitter:title" content="Nos recherches - IRCM" />
22        <meta name="twitter:card" content="summary_large_image" />
23        <meta name="twitter:site" content="https://twitter.com/ircm_mtl" />
24        <meta name="twitter:creator" content="https://twitter.com/ircm_mtl" />
25        <meta name="twitter:url" content="https://www.ircm.qc.ca/fr/nos-recherches" />
26        <meta name="twitter:description" content="Explorez les axes de recherche de l'IRCM : cancer, maladies cardiovasculaires, immunologie, neurobiologie, métabolisme et maladies rares." />
27        <meta name="twitter:image:src" content="https://cdn.ca.yapla.com/company/CPY7p4CO2sE1afW3ImwiLyBND/event/partage_ircm_fr-1632245490.jpg" />
28    
28<script type="module" src="/js/vue/dist/assets/cms-CPsZCM5L.js"></script>
28
29<link rel="stylesheet" href="/js/vue/dist/assets/cms-M9E4N1V4.css" rel="stylesheet" type="text/css">
30		
30<script>
31			document.addEventListener('DOMContentLoaded', function () {
32				memboGo.Web.Consent.gtm({"dataClientLayer":"GTM-PRKHFT3"});
33								memboGo.Web.Consent.hotjarId = '';
34				memboGo.Web.Consent.facebookId = '1820086538277422';
35				memboGo.Web.Consent.init(1, {"consentNotice":{"description":"<p class=\"consent_notice_title_title\">Nous voulons vous proposer la meilleure exp\u00e9rience sur notre site<\/p> Nous utilisons des cookies afin de vous offrir une navigation fluide et agr\u00e9able. Vous avez la possibilit\u00e9 de refuser, accepter ou g\u00e9rer ces pr\u00e9f\u00e9rences en cliquant sur l'un des trois boutons ci-dessous.","learnMore":"Param\u00e9trer les cookies"},"consentModal":{"title":"Param\u00e9trer les cookies","description":"Nous utilisons des cookies afin de vous offrir la meilleure exp\u00e9rience possible. N'h\u00e9sitez pas \u00e0 consulter notre <a href='\/fr\/politique-sur-la-protection-des-renseignements-personnels' target='_blank'>politique de confidentialit\u00e9<\/a> pour en savoir plus.","acceptAll":"Tout accepter","acceptSelected":"Terminer","decline":"Tout refuser"},"Hotjar":{"description":"Enregistrement du parcours de navigation - <a href=\"https:\/\/www.hotjar.com\/legal\/policies\/privacy\/\" target=\"_blank\" style=\"font-size:12px;\">En savoir plus<\/a>"},"Google-Analytics":{"title":"Analytics","description":"Permet d'analyser les statistiques de consultation de notre site - <a href=\"https:\/\/policies.google.com\/privacy?hl=fr#infocollect\" target=\"_blank\" style=\"font-size:12px;\">En savoir plus<\/a>"},"Google-Ads":{"title":"Google-Ads","description":"Analyser la performance des campagnes publicitaires - <a href=\"https:\/\/policies.google.com\/privacy?hl=fr#infocollect\" target=\"_blank\" style=\"font-size:12px;\">En savoir plus<\/a>"},"Amplitude":{"title":"Amplitude","description":"Analyse et mesure les performances du site - <a href=\"https:\/\/amplitude.com\/privacy\" target=\"_blank\" style=\"font-size:12px;\">En savoir plus<\/a>"},"Facebook":{"title":"Facebook Pixel","description":"Identifie les visteurs en provenance de publications Facebook - <a href=\"https:\/\/www.facebook.com\/about\/privacy\" target=\"_blank\" style=\"font-size:12px;\">En savoir plus<\/a>"},"Sentry":{"title":"Sentry","description":"Surveille les erreurs et probl\u00e8mes techniques du site - <a href=\"https:\/\/sentry.io\/privacy\/\" target=\"_blank\" style=\"font-size:12px;\">En savoir plus<\/a>"},"ok":"OK pour moi","acceptAll":"Tout accepter","acceptSelected":"Terminer","decline":"Tout refuser"}, 'fr')
36			});
37
38							var RGPDContent = {"message":"En poursuivant votre navigation sur ce site, vous reconnaissez avoir pris connaissance de nos conditions d'utilisation et acceptez l\u2019utilisation de cookies ou autres traceurs pour vous proposer une meilleure exp\u00e9rience.","dismiss":"J'ai compris","link":"En savoir plus","href":"\/fr\/method\/ajax-user-consent\/name\/module"};
39					</script>
39
40
41		<link href="https://cdn.ca.yapla.com/css/loader.css?v=v6.286.0&amp;v=v6.286.0&amp;sha1=58f08ee70a13815357d6966834bf9d10186a7cfa" media="screen" rel="stylesheet" type="text/css" />
42<link href="https://cdn.ca.yapla.com/css/tips.css?v=v6.286.0&amp;v=v6.286.0&amp;sha1=58f08ee70a13815357d6966834bf9d10186a7cfa" media="screen" rel="stylesheet" type="text/css" />
43<link href="https://cdn.ca.yapla.com/css/chosen.min.css?v=v6.286.0&amp;v=v6.286.0&amp;sha1=58f08ee70a13815357d6966834bf9d10186a7cfa" media="screen" rel="stylesheet" type="text/css" />
44<link href="https://fonts.gstatic.com" rel="preconnect" />
45<link href="https://www.googletagmanager.com" rel="preconnect" />
46<link href="https://cdn.ca.yapla.com/company/CPY7p4CO2sE1afW3ImwiLyBND/website/favicon_ircm-1625671011.png" rel="shortcut icon" />
47<link href="https://cdn.ca.yapla.com/css/bootstrap-cms.css?v=v6.286.0&amp;v=v6.286.0&amp;sha1=58f08ee70a13815357d6966834bf9d10186a7cfa" media="all" rel="stylesheet" type="text/css" />
48<link href="/templates/cms/00012/css/main.css?v=v6.286.0" media="screen" rel="stylesheet" type="text/css" />
48<script type="text/javascript" src="https://cdn.ca.yapla.com/js/jquery/jquery-1.12.4.min.js?v=v6.286.0&amp;sha1=58f08ee70a13815357d6966834bf9d10186a7cfa"></script>
vendor: 1 bytes, line 48
48
49<script type="text/javascript" src="https://cdn.ca.yapla.com/js/jquery/jquery-ui-1.13.2.min.js?v=v6.286.0&amp;sha1=58f08ee70a13815357d6966834bf9d10186a7cfa"></script>
vendor: 1 bytes, line 49
49
50<script type="text/javascript" src="https://cdn.ca.yapla.com/js/membogo/web/frontend.js?v=v6.286.0&amp;v=v6.286.0&amp;sha1=58f08ee70a13815357d6966834bf9d10186a7cfa"></script>
vendor: 1 bytes, line 50
50
51<script type="text/javascript" src="https://cdn.ca.yapla.com/js/membogo/core.js?v=v6.286.0&amp;v=v6.286.0&amp;sha1=58f08ee70a13815357d6966834bf9d10186a7cfa"></script>
vendor: 1 bytes, line 51
51
52<script type="application/ld+json">
53    {
54    "@context": "https://schema.org",
55    "@type": "BreadcrumbList",
56    "itemListElement": [
57        {
58            "@type": "ListItem",
59            "position": 1,
60            "name": "Recherche",
61            "item": "https://ircm.qc.ca/fr/"
62        },
63        {
64            "@type": "ListItem",
65            "position": 2,
66            "name": "Nos recherches"
67        }
68    ]
69}</script>
vendor: 1 bytes, line 69
69
70<script type="text/javascript" defer="defer">
71    //<![CDATA[
72    $(function(){memboGo.Web.Menu.vertical('.menu-vertical-1904024');});    //]]>
73</script>
vendor: 1 bytes, line 73
73
74<script type="text/javascript" defer="defer">
75    //<![CDATA[
76    $(function(){memboGo.Web.Menu.vertical('.menu-vertical-750785');});    //]]>
77</script>
vendor: 1 bytes, line 77
77
78<script type="text/javascript" defer="defer" src="https://cdn.ca.yapla.com/js/membogo/form/field.js?v=v6.286.0&amp;v=v6.286.0&amp;sha1=58f08ee70a13815357d6966834bf9d10186a7cfa"></script>
vendor: 1 bytes, line 78
78
79<script type="text/javascript" defer="defer" src="https://cdn.ca.yapla.com/js/jquery/chosen.jquery.min.js?v=v6.286.0&amp;sha1=58f08ee70a13815357d6966834bf9d10186a7cfa"></script>
vendor: 1 bytes, line 79
79
80<script type="text/javascript" defer="defer">
81    //<![CDATA[
82    var fieldText = {"autocomplete":"Rechercher avec Google Maps","manual":"Saisir l'adresse manuellement"}    //]]>
83</script>
vendor: 1 bytes, line 83
83
84<script type="text/javascript" defer="defer">
85    //<![CDATA[
86    
87var selected_state = '';
88var local = "fr";
89var pageId = "49221";
90var text_edit = 'Éditer';
91    //]]>
92</script>
vendor: 1 bytes, line 92
92
93<script type="text/javascript" defer="defer" src="https://cdn.ca.yapla.com/js/hpjorg/utils.js?v=v6.286.0&amp;v=v6.286.0&amp;sha1=58f08ee70a13815357d6966834bf9d10186a7cfa"></script>
vendor: 1 bytes, line 93
93
94<script type="text/javascript" defer="defer" src="https://cdn.ca.yapla.com/js/joomflo/paginator.js?v=v6.286.0&amp;v=v6.286.0&amp;sha1=58f08ee70a13815357d6966834bf9d10186a7cfa"></script>
vendor: 1 bytes, line 94
94
95<script type="text/javascript" defer="defer" src="https://cdn.ca.yapla.com/js/joomflo/main.js?v=v6.286.0&amp;v=v6.286.0&amp;sha1=58f08ee70a13815357d6966834bf9d10186a7cfa"></script>
vendor: 1 bytes, line 95
95
96<script type="text/javascript" defer="defer" src="https://cdn.ca.yapla.com/js/jquery/chosen.jquery.min.js?v=v6.286.0&amp;v=v6.286.0&amp;sha1=58f08ee70a13815357d6966834bf9d10186a7cfa"></script>
vendor: 1 bytes, line 96
96
97<script type="text/javascript" defer="defer" src="https://cdn.ca.yapla.com/js/jquery/jquery.inputmask.bundle.min.js?v=4.0.6&amp;v=v6.286.0&amp;sha1=58f08ee70a13815357d6966834bf9d10186a7cfa"></script>
vendor: 1 bytes, line 97
97
98<script type="text/javascript" defer="defer" src="https://kit.fontawesome.com/1118d2d659.js"></script>
vendor: 1 bytes, line 98
98
99<script type="text/javascript" defer="defer" src="https://cdn.ca.yapla.com/js/joomflo/bootstrap-cms.min.js?v=v6.286.0&amp;v=v6.286.0&amp;sha1=58f08ee70a13815357d6966834bf9d10186a7cfa"></script>
vendor: 1 bytes, line 99
99
100<script type="text/javascript" defer="defer" src="https://cdn.ca.yapla.com/js/joomflo/dest/respond.min.js?v=v6.286.0&amp;v=v6.286.0&amp;sha1=58f08ee70a13815357d6966834bf9d10186a7cfa"></script>
vendor: 1 bytes, line 100
100
101<script type="text/javascript" defer="defer" src="https://cdn.ca.yapla.com/js/joomflo/cookieconsent/cookieconsent.min.js?v=v6.286.0&amp;v=v6.286.0&amp;sha1=58f08ee70a13815357d6966834bf9d10186a7cfa"></script>
vendor: 1 bytes, line 101
101
102<script type="text/javascript" defer="defer" src="https://cdn.ca.yapla.com/js/hpjorg/loader.js?v=v6.286.0&amp;v=v6.286.0&amp;sha1=58f08ee70a13815357d6966834bf9d10186a7cfa"></script>
vendor: 1 bytes, line 102
102
103<script type="text/javascript" defer="defer">
104    //<![CDATA[
105    	// Add a custom class to all datepicker instances to allow styling
106	const originalAttachMethod = $.datepicker._attachDatepicker;
107	$.datepicker._attachDatepicker = function(target, settings) {
108		originalAttachMethod.call(this, target, settings);	
109		this.dpDiv.addClass('yapla-datepicker');
110	};
111
112	var baseUrl = "/";
113	var language = "fr";
114	$(function() {
115	memboGo.core._lng = 'fr';
116	memboGo.core.money.format = '0,00 $';
117	memboGo.core.googlePlace.key = '';
118	memboGo.core.datepicker.init({"monthNames":"['Janvier', 'F\u00e9vrier', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Aout', 'Septembre', 'Octobre', 'Novembre', 'D\u00e9cembre']","monthNamesShort":"['Janvier', 'F\u00e9vrier', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Aout', 'Septembre', 'Octobre', 'Novembre', 'D\u00e9cembre']","dayNames":"['Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi']","dayNamesShort":"['Dim', 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam']","dayNamesMin":"['Dim', 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam']","dateFormat":"dd-mm-yy","companyCountry":"CA"}	);
119	});
120	    //]]>
121</script>
121	<meta name="viewport" content="width=device-width, initial-scale=1.0" />
122	<meta http-equiv="X-UA-Compatible" content="IE=edge">
122<script type="text/javascript">(window.NREUM||(NREUM={})).init={privacy:{cookies_enabled:true},ajax:{deny_list:[]}};(window.NREUM||(NREUM={})).loader_config={licenseKey:"f76546586f",applicationID:"1038230873",browserID:"1120157852"};;/*! For license information please see nr-loader-rum-1.322.0.min.js.LICENSE.txt */
123(()=>{var e={8122(e,t,r){"use strict";r.d(t,{a:()=>i});var n=r(944);function i(e,t){try{if(!e||"object"!=typeof e)return(0,n.R)(3);if(!t||"object"!=typeof t)return(0,n.R)(4);const r=Object.create(Object.getPrototypeOf(t),Object.getOwnPropertyDescriptors(t)),a=0===Object.keys(r).length?e:r;for(let s in a)if(void 0!==e[s])try{if(null===e[s]){r[s]=null;continue}Array.isArray(e[s])&&Array.isArray(t[s])?r[s]=Array.from(new Set([...e[s],...t[s]])):e[s]instanceof Map||e[s]instanceof Set||e[s]instanceof Date||e[s]instanceof RegExp?r[s]=e[s]:"object"==typeof e[s]&&null!==t[s]&&"object"==typeof t[s]?r[s]=i(e[s],t[s]):r[s]=e[s]}catch(e){r[s]||(0,n.R)(1,e)}return r}catch(e){(0,n.R)(2,e)}}},2555(e,t,r){"use strict";r.d(t,{f:()=>s});var n=r(384),i=r(8122);const a={beacon:n.NT.beacon,errorBeacon:n.NT.errorBeacon,licenseKey:void 0,applicationID:void 0,sa:void 0,queueTime:void 0,applicationTime:void 0,ttGuid:void 0,user:void 0,account:void 0,product:void 0,extra:void 0,jsAttributes:{},userAttributes:void 0,atts:void 0,transactionName:void 0,tNamePlain:void 0};function s(e){try{return!!e.licenseKey&&!!e.errorBeacon&&!!e.applicationID}catch(e){return!1}}r.d(t,["D",0,e=>(0,i.a)(e,a)])},7699(e,t,r){"use strict";var n=r(860);const i={[n.K7.logging]:!0,[n.K7.genericEvents]:!0,[n.K7.jserrors]:!0,[n.K7.ajax]:!0};r.d(t,["It",0,1e6,"KC",0,i,"qh",0,"SESSION_ERROR"])},9324(e,t,r){"use strict";r.d(t,["xv",0,"1.322.0"])},981(e,t,r){"use strict";r.d(t,["R",0,{AJAX:"AjaxRequest",PA:"PageAction",UA:"UserAction",BP:"BrowserPerformance",WS:"WebSocket",SPV:"SecurityPolicyViolation",JSE:"JavaScriptError",LOG:"Log",PVE:"PageView",PVT:"PageViewTiming",SR:"SessionReplay",ST:"SessionTrace",BI:"BrowserInteraction"}])},6154(e,t,r){"use strict";var n=r(1863);const i="undefined"!=typeof window&&!!window.document,a="undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self.navigator instanceof WorkerNavigator||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis.navigator instanceof WorkerNavigator),s=i?window:"undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis),o=Boolean("hidden"===s?.document?.visibilityState),c=""+s?.location,u=/iPad|iPhone|iPod/.test(s.navigator?.userAgent),d=u&&"undefined"==typeof SharedWorker,l=((()=>{const e=s.navigator?.userAgent?.match(/Firefox[/\s](\d+\.\d+)/);Array.isArray(e)&&e.length>=2&&e[1]})(),Date.now()-(0,n.t)());r.d(t,["OF",0,u,"RI",0,i,"WN",0,l,"bv",0,a,"gm",0,s,"m",0,c,"mw",0,o,"sb",0,d,"zk",0,()=>{const e=s?.performance?.getEntriesByType?.("navigation")?.[0];if(e&&e.responseStart>0&&e.responseStart<s.performance.now())return e}])},3241(e,t,r){"use strict";r.d(t,{W:()=>i});var n=r(6154);function i(e={}){try{n.gm.dispatchEvent(new CustomEvent("newrelic",{detail:e}))}catch(e){}}},1687(e,t,r){"use strict";r.d(t,{Ak:()=>o,Ze:()=>u,x3:()=>c});var n=r(3241),i=r(3606),a=r(860),s=r(2646);function o(e,t){if(!e)return;const r={staged:!1,priority:a.P3[t]||0};e.runtime.drainRegistry.get(t)||e.runtime.drainRegistry.set(t,r)}function c(e,t){if(!e)return;const r=e.runtime.drainRegistry;r&&(r.get(t)&&r.delete(t),l(e,t,!1),r.size&&d(e))}function u(e,t="feature",r=!1){if(e){if(!e.runtime.drainRegistry.get(t)||r)return l(e,t);e.runtime.drainRegistry.get(t).staged=!0,d(e)}}function d(e){if(!e)return;const t=Array.from(e.runtime.drainRegistry);t.every(([e,t])=>t.staged)&&(t.sort((e,t)=>e[1].priority-t[1].priority),t.forEach(([t])=>{e.runtime.drainRegistry.delete(t),l(e,t)}))}function l(e,t,r=!0){if(!e)return;const a=e.ee,o=i.i.handlers;if(a&&!a.aborted&&a.backlog&&o){if((0,n.W)({type:"lifecycle",name:"drain",feature:t}),r){const e=a.backlog[t],r=o[t];if(r){for(let t=0;e&&t<e.length;++t)f(e[t],r);Object.entries(r).forEach(([e,t])=>{Object.values(t||{}
123).forEach(t=>{t[0]?.on&&t[0].context()instanceof s.y&&!t[0].listeners(e).includes(t[1])&&t[0].on(e,t[1])})})}}a.isolatedBacklog||delete o[t],a.backlog[t]=null,a.emit("drain-"+t,[])}}function f(e,t){var r=e[1];Object.values(t[r]||{}).forEach(t=>{var r=e[0];if(t[0]===r){var n=t[1],i=e[3],a=e[2];n.apply(i,a)}})}},7836(e,t,r){"use strict";var n=r(384),i=r(8990),a=r(2646),s=r(5607);const o="nr@context:".concat(s.W),c=function e(t,r){var n={},s={},d={},l=!1;try{l=16===r.length&&u.initializedAgents?.[r]?.runtime.isolatedBacklog}catch(e){}var f={on:p,addEventListener:p,removeEventListener:function(e,t){var r=n[e];if(!r)return;for(var i=0;i<r.length;i++)r[i]===t&&r.splice(i,1)},emit:function(e,r,n,i,a){!1!==a&&(a=!0);if(c.aborted&&!i)return;t&&a&&t.emit(e,r,n);var o=g(n);m(e).forEach(e=>{e.apply(o,r)});var u=v()[s[e]];u&&u.push([f,e,r,o]);return o},get:h,listeners:m,context:g,buffer:function(e,t){const r=v();if(t=t||"feature",f.aborted)return;Object.entries(e||{}).forEach(([e,n])=>{s[n]=t,t in r||(r[t]=[])})},abort:function(){f._aborted=!0,Object.keys(f.backlog).forEach(e=>{delete f.backlog[e]})},isBuffering:function(e){return!!v()[s[e]]},debugId:r,backlog:l?{}:t&&"object"==typeof t.backlog?t.backlog:{},isolatedBacklog:l};return Object.defineProperty(f,"aborted",{get:()=>{let e=f._aborted||!1;return e||(t&&(e=t.aborted),e)}}),f;function g(e){return e&&e instanceof a.y?e:e?(0,i.I)(e,o,()=>new a.y(o)):new a.y(o)}function p(e,t){n[e]=m(e).concat(t)}function m(e){return n[e]||[]}function h(t){return d[t]=d[t]||e(f,t)}function v(){return f.backlog}}(void 0,"globalEE"),u=(0,n.Zm)();u.ee||(u.ee=c),r.d(t,["P",0,o,"ee",0,c])},2646(e,t,r){"use strict";r.d(t,{y:()=>n});class n{constructor(e){this.contextId=e}}},9908(e,t,r){"use strict";r.d(t,{d:()=>n,p:()=>i});var n=r(7836).ee.get("handle");function i(e,t,r,i,a){a?(a.buffer([e],i),a.emit(e,t,r)):(n.buffer([e],i),n.emit(e,t,r))}},3606(e,t,r){"use strict";r.d(t,{i:()=>a});var n=r(9908);a.on=s;var i=a.handlers={};function a(e,t,r,a){s(a||n.d,i,e,t,r)}function s(e,t,r,i,a){a||(a="feature"),e||(e=n.d);var s=t[a]=t[a]||{};(s[r]=s[r]||[]).push([e,i])}},3878(e,t,r){"use strict";function n(e,t){return{capture:e,passive:!1,signal:t}}function i(e,t,r=!1,i){window.addEventListener(e,t,n(r,i))}function a(e,t,r=!1,i){document.addEventListener(e,t,n(r,i))}r.d(t,{DD:()=>a,jT:()=>n,sp:()=>i})},5607(e,t,r){"use strict";const n=(0,r(9566).bz)();r.d(t,["W",0,n])},9566(e,t,r){"use strict";r.d(t,{LA:()=>s,bz:()=>a});var n=r(6154);function i(e,t){return e?15&e[t]:16*Math.random()|0}function a(){const e=n.gm?.crypto||n.gm?.msCrypto;let t,r=0;return e&&e.getRandomValues&&(t=e.getRandomValues(new Uint8Array(30))),"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".split("").map(e=>"x"===e?i(t,r++).toString(16):"y"===e?(3&i()|8).toString(16):e).join("")}function s(e){const t=n.gm?.crypto||n.gm?.msCrypto;let r,a=0;t&&t.getRandomValues&&(r=t.getRandomValues(new Uint8Array(e)));const s=[];for(var o=0;o<e;o++)s.push(i(r,a++).toString(16));return s.join("")}},2614(e,t,r){"use strict";r.d(t,["BB",0,18e5,"Wt",0,"NRBA_SESSION::","iL",0,{SAME_TAB:"same-tab",CROSS_TAB:"cross-tab"},"tS",0,{STARTED:"session-started",PAUSE:"session-pause",RESET:"session-reset",RESUME:"session-resume",UPDATE:"session-update"},"wk",0,144e5])},1863(e,t,r){"use strict";function n(){return Math.floor(performance.now())}r.d(t,{t:()=>n})},944(e,t,r){"use strict";r.d(t,{R:()=>i});var n=r(3241);function i(e,t){"function"==typeof console.debug&&(console.debug("New Relic Warning: https://github.com/newrelic/newrelic-browser-agent/blob/main/docs/warning-codes.md#".concat(e),t),(0,n.W)({drained:null,type:"data",name:"warn",feature:"warn",data:{code:e,secondary:t}}))}},8990(e,t,r){"use strict";r.d(t,{I:()=>i});var n=Object.prototype.hasOwnProperty;function i(e,t,r){if(n.call(e,t))return e[t];var i=r();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(e,t,{value:i,writable:!0,enumerable:!1}),i}catch(e){}return e[t]=i,i}},6389(e,t,r){"use strict";function n(e,t=500,r={}){const n=r?.leading||!1;let i;return(...r)=>{n&&void 0===i&&(e.apply(this,r),i=setTimeout(()=>{i=clearTimeout(i)},t)),n||(clearTimeout(i),i=setTimeout(()=>{e.apply(this,r)},t))}}function i(e){let t=!1;return(...r)=>{t||(t=!0,e.apply(this,r))}}r.d(t,{J:()=>i,s:()=>n})},1910(e,t,r){"use strict";r.d(t,{i:()=>a});var n=r(944);const i=new Map;function a(...e){return e.every(e=>{if(i.has(e))return i.get(e);const t="function"==typeof e?e.toString():"",r=t.includes("[native code]"),a=t.includes("nrWrapper");return r||a||(0,n.R)(64,e?.name||t),i.set(e,r),r})}},5289(e,t,r){"use strict";r.d(t,{GG:()=>s,Qr:()=>c,sB:()=>o});var n=r(3878),i=r(6389);function a(){return"undefined"==typeof document||"complete"===document.readyState}function s(e,t){if(a())return e();const r=(0,i.J)(e),s=setInterval(()=>
123{a()&&(clearInterval(s),r())},500);(0,n.sp)("load",r,t)}function o(e){if(a())return e();(0,n.DD)("DOMContentLoaded",e)}function c(e){if(a())return e();(0,n.sp)("popstate",e)}},384(e,t,r){"use strict";r.d(t,{Zm:()=>c,bQ:()=>d,dV:()=>u,pV:()=>l});var n=r(6154),i=r(1863),a=r(944),s=r(1910);const o={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net"};function c(){return n.gm.NREUM||(n.gm.NREUM={}),void 0===n.gm.newrelic&&(n.gm.newrelic=n.gm.NREUM),n.gm.NREUM}function u(){let e=c();return e.o||(e.o={ST:n.gm.setTimeout,SI:n.gm.setImmediate||n.gm.setInterval,CT:n.gm.clearTimeout,XHR:n.gm.XMLHttpRequest,REQ:n.gm.Request,EV:n.gm.Event,PR:n.gm.Promise,MO:n.gm.MutationObserver,FETCH:n.gm.fetch,WS:n.gm.WebSocket},(0,s.i)(...Object.values(e.o))),e}function d(e,t){let r=c();r.initializedAgents??={},t.initializedAt={ms:(0,i.t)(),date:new Date},r.initializedAgents[e]=t,2===Object.keys(r.initializedAgents).length&&(0,a.R)(69)}function l(){return function(){let e=c();const t=e.info||{};e.info={beacon:o.beacon,errorBeacon:o.errorBeacon,...t}}(),function(){let e=c();const t=e.init||{};e.init={...t}}(),u(),function(){let e=c();const t=e.loader_config||{};e.loader_config={...t}}(),c()}r.d(t,["NT",0,o])},2843(e,t,r){"use strict";r.d(t,{G:()=>a,u:()=>i});var n=r(3878);function i(e,t=!1,r,i){(0,n.DD)("visibilitychange",function(){if(t)return void("hidden"===document.visibilityState&&e());e(document.visibilityState)},r,i)}function a(e,t,r){(0,n.sp)("pagehide",e,t,r)}},9300(e,t,r){"use strict";r(860).K7.ajax;r.d(t,["mo",0,{NONE:"none",FAILURES:"failures",ALL:"all"}])},3969(e,t,r){"use strict";const n=r(860).K7.metrics;r.d(t,["TZ",0,n,"XG",0,"storeEventMetrics","xV",0,"storeSupportabilityMetrics"])},6630(e,t,r){"use strict";const n=r(860).K7.pageViewEvent;r.d(t,["T",0,n])},782(e,t,r){"use strict";const n=r(860).K7.pageViewTiming;r.d(t,["T",0,n])},4234(e,t,r){"use strict";r.d(t,{W:()=>i});var n=r(1687);class i{constructor(e,t){this.agentRef=e,this.ee=e?.ee,this.featureName=t,this.blocked=!1}deregisterDrain(){(0,n.x3)(this.agentRef,this.featureName)}}},7767(e,t,r){"use strict";var n=r(6154);r.d(t,["V",0,e=>n.RI&&!0===e?.privacy.cookies_enabled])},8362(e,t,r){"use strict";r.d(t,{d:()=>a});var n=r(9566),i=r(1741);class a extends i.W{agentIdentifier=(0,n.LA)(16)}},1741(e,t,r){"use strict";r.d(t,{W:()=>a});var n=r(944),i=r(4261);class a{#e(e,...t){if(this[e]!==a.prototype[e])return this[e](...t);(0,n.R)(35,e)}addPageAction(e,t){return this.#e(i.hG,e,t)}register(e){return this.#e(i.eY,e)}recordCustomEvent(e,t){return this.#e(i.fF,e,t)}setPageViewName(e,t){return this.#e(i.Fw,e,t)}setCustomAttribute(e,t,r){return this.#e(i.cD,e,t,r)}noticeError(e,t){return this.#e(i.o5,e,t)}setUserId(e,t=!1){return this.#e(i.Dl,e,t)}setApplicationVersion(e){return this.#e(i.nb,e)}setErrorHandler(e){return this.#e(i.bt,e)}addRelease(e,t){return this.#e(i.k6,e,t)}log(e,t){return this.#e("log",e,t)}start(){return this.#e("start")}finished(e){return this.#e(i.BL,e)}recordReplay(){return this.#e(i.CH)}pauseReplay(){return this.#e(i.Tb)}addToTrace(e){return this.#e(i.U2,e)}setCurrentRouteName(e){return this.#e(i.PA,e)}interaction(e){return this.#e(i.dT,e)}wrapLogger(e,t,r){return this.#e(i.Wb,e,t,r)}measure(e,t){return this.#e(i.V1,e,t)}consent(e){return this.#e(i.Pv,e)}}},4261(e,t,r){"use strict";r.d(t,["BL",0,"finished","CH",0,"recordReplay","Dl",0,"setUserId","Fw",0,"setPageViewName","PA",0,"setCurrentRouteName","Pv",0,"consent","Tb",0,"pauseReplay","U2",0,"addToTrace","V1",0,"measure","Wb",0,"wrapLogger","bt",0,"setErrorHandler","cD",0,"setCustomAttribute","dT",0,"interaction","eY",0,"register","fF",0,"recordCustomEvent","hG",0,"addPageAction","k6",0,"addRelease","nb",0,"setApplicationVersion","o5",0,"noticeError"])},1738(e,t,r){"use strict";r.d(t,{U:()=>l,Y:()=>d});var n=r(3241),i=r(9908),a=r(1863),s=r(944),o=r(3969),c=r(8362),u=r(860);function d(e,t,r,a){const d=a||r;!d||d[e]&&d[e]!==c.d.prototype[e]||(d[e]=function(){(0,i.p)(o.xV,["API/"+e+"/called"],void 0,u.K7.metrics,r.ee),(0,n.W)({drained:!!r.runtime?.activatedFeatures,type:"data",name:"api",feature:"api-"+e,data:{}});try{return t.apply(this,arguments)}catch(e){(0,s.R)(23,e)}})}function l(e,t,r,n,s){const o=e.info;null===r?delete o.jsAttributes[t]:o.jsAttributes[t]=r,(s||null===r)&&(0,i.p)("api-"+n,[(0,a.t)(),t,r],void 0,"session",e.ee)}},8374(e,t,r){r.nc=(()=>{try{return document?.currentScript?.nonce}catch(e){}return""})()},860(e,t,r){"use strict";const n="events",i="jserrors",a="browser/blobs",s="browser/logs",o={ajax:"ajax",genericEvents:"generic_events",jserrors:i,logging:"logging",metrics:"metrics",pageAction:"page_action",pageViewEvent:"page_view_event",pageViewTiming:"page_view_timing",sessionReplay:"session_replay",sessionTrace:"session_trace",softNav:"soft_navigations"},c={[o.pageViewEvent]:1,[o.pageViewTiming]:2,[o.metrics]:3,[o.jserrors]:4,[o.softNav]:5,[o.ajax]:6,[o.sessionTrace]:7,[o.sessionReplay]:8,[o.logging]:9,[o.genericEvents]:10},u={[o.pageViewEvent]:"rum",[o.pageViewTiming]:n,[o.ajax]:n,[o.softNav]:n,[o.metrics]:i,[o.jserrors]:i,[o.sessionTrace]:a,[o.sessionReplay]:a,[o.logging]:s,[o.genericEvents]:"ins"};r.d(t,["$J",0,u,"K7",0,o,"P3",0,c,"XX",0,i,"Yy",0,s,"df",0,a,"hg",0,"connect"])}};const t={};function r(n){const i=t[n];if(void 0!==i)return i.exports;const a=t[n]={exports:{}};return e[n](a,a.exports,r),a.exports}r.m=e,r.d=(e,t)=>{if(Array.isArray(t))for(var n=0;n<t.length;){var i=t[n++],a=t[n++];r.o(e,i)?0===a&&n++:0===a?Object.defineProperty(e,i,{enumerable:!0,value:t[n++]}):Object.defineProperty(e,i,{enumerable:!0,get:a})}else for(var i in t)r.o(t,i)&&!r.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((t,n)=>(r.f[n](e,t),t),[])),r.u=e=>"nr-rum-1.322.0.min.js",r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{const e={},t="NRBA-1.322.0.PROD:";r.l=(n,i,a,s)=>{if(e[n])return void e[n].push(i);let o,c;if(void 0!==a){const e=document.getElementsByTagName("script");for(var u=0;u<e.length;u++){const r=e[u];if(r.getAttribute("src")==n||r.getAttribute("data-webpack")==t+a){o=r;break}}}if(!o){c=!0;var d={296:"sha512-/59P7qAoMYQDJAZerTRPChdYcdrlcoEAw2TwA1wz6Y0/XLmt3sblL
123I5JCXAuxG0YxsW7iqJzgrcO7NJWO58EfQ=="};o=document.createElement("script"),o.charset="utf-8",r.nc&&o.setAttribute("nonce",r.nc),o.setAttribute("data-webpack",t+a),o.src=n,0!==o.src.indexOf(window.location.origin+"/")&&(o.crossOrigin="anonymous"),d[s]&&(o.integrity=d[s])}e[n]=[i];const l=(t,r)=>{o.onerror=o.onload=null,clearTimeout(f);const i=e[n];if(delete e[n],o.parentNode?.removeChild(o),i?.forEach(e=>e(r)),t)return t(r)},f=setTimeout(l.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=l.bind(null,o.onerror),o.onload=l.bind(null,o.onload),c&&document.head.appendChild(o)}})(),r.r=e=>{Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="https://js-agent.newrelic.com/",(()=>{const e={374:0,840:0};r.f.j=(t,n)=>{let i=r.o(e,t)?e[t]:void 0;if(0!==i)if(i)n.push(i[2]);else{const a=new Promise((r,n)=>i=e[t]=[r,n]);n.push(i[2]=a);const s=r.p+r.u(t),o=new Error,c=n=>{if(r.o(e,t)&&(i=e[t],0!==i&&(e[t]=void 0),i)){const e=n&&("load"===n.type?"missing":n.type),r=n&&n.target&&n.target.src;o.message="Loading chunk "+t+" failed: ("+e+": "+r+")",o.name="ChunkLoadError",o.type=e,o.request=r,i[1](o)}};r.l(s,c,"chunk-"+t,t)}};const t=(t,n)=>{let[i,a,s]=n;var o,c,u=0;if(i.some(t=>0!==e[t])){for(o in a)r.o(a,o)&&(r.m[o]=a[o]);if(s)s(r)}for(t&&t(n);u<i.length;u++)c=i[u],r.o(e,c)&&e[c]&&e[c][0](),e[c]=0},n=self["webpackChunk:NRBA-1.322.0.PROD"]=self["webpackChunk:NRBA-1.322.0.PROD"]||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))})(),(()=>{"use strict";r(8374);var e=r(8362),t=r(860);const n=Object.values(t.K7);var i=r(384),a=r(1741);var s=r(2555),o=r(981);t.K7.genericEvents,o.R.PA,o.R.UA,o.R.BP;const c={RESOURCES:"experimental.resources",REGISTER:"register"};var u=r(9300);const d=e=>{if(!e||"string"!=typeof e)return!1;try{document.createDocumentFragment().querySelector(e)}catch{return!1}return!0};var l=r(2614),f=r(944),g=r(8122);const p="[data-nr-mask]",m=e=>(0,g.a)(e,(()=>{const e={feature_flags:[],experimental:{register:!1,resources:!1,iframe_bridge:!1,iframe_domains:[]},mask_selector:"*",block_selector:"[data-nr-block]",mask_input_options:{color:!1,date:!1,"datetime-local":!1,email:!1,month:!1,number:!1,range:!1,search:!1,tel:!1,text:!1,time:!1,url:!1,week:!1,textarea:!1,select:!1,password:!0}};return{ajax:{deny_list:void 0,block_internal:!0,enabled:!0,autoStart:!0,capture_payloads:u.mo.NONE},api:{register:{get enabled(){return e.feature_flags.includes(c.REGISTER)||e.experimental.register},set enabled(t){e.experimental.register=t},duplicate_data_to_container:!1,get allow_iframe_bridge(){return e.feature_flags.includes(c.IFRAME_BRIDGE)||e.experimental.iframe_bridge},set allow_iframe_bridge(t){e.experimental.iframe_bridge=t},get iframe_domains(){return e.experimental.iframe_domains},set iframe_domains(t){Array.isArray(t)?e.experimental.iframe_domains=t:(0,f.R)(1,t)}}},browser_consent_mode:{enabled:!1},distributed_tracing:{enabled:void 0,exclude_newrelic_header:void 0,cors_use_newrelic_header:void 0,cors_use_tracecontext_headers:void 0,allowed_origins:void 0},get feature_flags(){return e.feature_flags},set feature_flags(t){e.feature_flags=t},generic_events:{enabled:!0,autoStart:!0},harvest:{interval:30},jserrors:{enabled:!0,autoStart:!0},logging:{enabled:!0,autoStart:!0},metrics:{enabled:!0,autoStart:!0},obfuscate:void 0,page_action:{enabled:!0},page_view_event:{enabled:!0,autoStart:!0},page_view_timing:{enabled:!0,autoStart:!0},performance:{capture_marks:!1,capture_measures:!1,capture_detail:!0,resources:{get enabled(){return e.feature_flags.includes(c.RESOURCES)||e.experimental.resources},set enabled(t){e.experimental.resources=t},asset_types:[],first_party_domains:[],ignore_newrelic:!0}},privacy:{cookies_enabled:!0},proxy:{assets:void 0,beacon:void 0},session:{expiresMs:l.wk,inactiveMs:l.BB},session_replay:{autoStart:!0,enabled:!1,preload:!1,sampling_rate:10,error_sampling_rate:100,collect_fonts:!1,inline_images:!1,fix_stylesheets:!0,mask_all_inputs:!0,get mask_text_selector(){return e.mask_selector},set mask_text_selector(t){d(t)?e.mask_selector="".concat(t,",").concat(p):""===t||null===t?e.mask_selector=p:(0,f.R)(5,t)},get block_class(){return"nr-block"},get ignore_class(){return"nr-ignore"},get mask_text_class(){return"nr-mask"},get block_selector(){return e.block_selector},set block_selector(t){d(t)?e.block_selector+=",".concat(t):""!==t&&(0,f.R)(6,t)},get mask_input_options(){return e.mask_input_options},set mask_input_options(t){t&&"object"==typeof t?e.mask_input_options={...t,password:!0}:(0,f.R)(7,t)}},session_trace:{enabled:!0,autoStart:!0},soft_navigations:{enabled:!0,autoStart:!0},ssl:void 0,user_actions:{enabled:!0,elementAttributes:["id","className","tagName","type"]},web_sockets:{enabled:!1}}})());var h=r(6154),v=r(9324);let b=0;const y={buildEnv:"PROD",distMethod:"CDN",version:v.xv,originTime:h.WN},_={consented:!1},w={activatedFeatures:void 0,appMetadata:{},configured:!1,get consented(){return this.session?.state?.consent||_.consented},set consented(e){_.consented=e}
123,customTransaction:void 0,denyList:[],disabled:!1,drainRegistry:new Map,connector:void 0,harvester:void 0,v2Target:void 0,isolatedBacklog:!1,isRecording:!1,loaderType:void 0,maxBytes:3e4,obfuscator:void 0,onerror:void 0,ptid:void 0,releaseIds:{},session:void 0,timeKeeper:void 0,registeredEntities:[],jsAttributesMetadata:{bytes:0},get harvestCount(){return++b},listeningForIframeMessages:!1},R="BA";var A=r(7836),x=r(3241);const E={accountID:void 0,trustKey:void 0,agentID:void 0,licenseKey:void 0,applicationID:void 0,xpid:void 0};var S=r(9908);const k="newrelic-iframe-";function T(e,t={},n,o){let{init:c,info:u,loader_config:d,runtime:l={},exposed:f=!0}=t;if(!u){const e=(0,i.pV)();c=e.init,u=e.info,d=e.loader_config}var p;e.init=m(c||{}),e.loader_config=(p=d||{},(0,g.a)(p,E)),u.jsAttributes??={},h.bv&&(u.jsAttributes.isWorker=!0),e.info=(0,s.D)(u);const v=e.init;e.runtime??=(e=>{const t=(0,g.a)(e,w),r=Object.keys(y).reduce((e,t)=>(e[t]={value:y[t],writable:!1,configurable:!0,enumerable:!0},e),{});return Object.defineProperties(t,r)})(l),e.runtime.v2Target??={type:R,instance:e.agentIdentifier,get id(){return e.runtime.appMetadata?.agents?.[0]?.entityGuid},get attributes(){return{"entity.guid":this.id,appId:e.info.applicationID}}},v.proxy.assets&&(e=>{const t=e.startsWith("http");e+="/",r.p=t?e:"https://"+e})(v.proxy.assets),e.runtime.configured||(Object.defineProperty(e,"beacons",{get:()=>[e.info.beacon,e.info.errorBeacon,e.init.proxy.assets,e.init.proxy.beacon].filter(Boolean)}),Object.defineProperty(e.runtime,"denyList",{get:()=>[...e.init.ajax.deny_list||[],...e.init.ajax.block_internal?e.beacons:[]]}),e.runtime.ptid=e.agentIdentifier,function(e){const t=(0,i.pV)();Object.getOwnPropertyNames(a.W.prototype).forEach(r=>{const n=a.W.prototype[r];if("function"!=typeof n||"constructor"===n)return;let i=t[r];e[r]&&!1!==e.exposed&&"micro-agent"!==e.runtime?.loaderType&&(t[r]=(...t)=>{const n=e[r](...t);return i?i(...t):n})})}(e),e.runtime.loaderType=n,e.ee=A.ee.get(e.agentIdentifier),e.exposed=f,(0,x.W)({drained:!!e.runtime.activatedFeatures,type:"lifecycle",name:"initialize",feature:void 0,data:e.config}),e.init.api.register.allow_iframe_bridge&&h.gm.addEventListener("message",t=>{"string"==typeof t.data?.type&&t.data.type.startsWith(k)&&(0,S.p)("iframe-message",[t],void 0,"IFRAME",e.ee)}),e.runtime.configured=!0)}var j=r(1863),P=r(4261),N=r(1738);
123var O=r(1687),M=r(4234),I=r(5289),D=r(7767);function V(e){return!!(0,i.dV)().o.MO&&(0,D.V)(e)&&!0===e?.session_trace.enabled}var W=r(6389),B=r(7699);const C=new WeakSet,K=new WeakMap;class U extends M.W{constructor(e,t){super(e,t),this.abortHandler=void 0,this.featAggregate=void 0,this.loadedSuccessfully=void 0,this.onAggregateImported=new Promise(e=>{this.loadedSuccessfully=e}),this.deferred=Promise.resolve(),!1===e.init[this.featureName].autoStart?this.deferred=new Promise((t,r)=>{this.ee.on("manual-start-all",(0,W.J)(()=>{(0,O.Ak)(e,this.featureName),t()}))}):(0,O.Ak)(e,t)}importAggregator(e,t,n={}){if(this.featAggregate)return;const i=async()=>{if(await this.deferred,this.#t(e),!(0,s.f)(e.info))return(0,f.R)(43),e.ee.abort(),void this.loadedSuccessfully(!1);try{await async function(e,t,n){if(K.has(e))return K.get(e);const i=(async()=>{if((0,D.V)(e.init))try{const{setupAgentSession:t}=await r.e(296).then(r.bind(r,1768));t(e)}catch(e){(0,f.R)(20,e),t.emit("internal-error",[e]),(0,S.p)(B.qh,[e],void 0,n,t)}if(e.init.api.register.allow_iframe_bridge)try{const{setupIframeMFEMessageListener:t}=await Promise.resolve().then(function(){const e=new Error("Cannot find module '../../loaders/configure/iframe-message-handler'");throw e.code="MODULE_NOT_FOUND",e});t(e)}catch(e){(0,f.R)(23,e)}const[{Connector:i},{Harvester:a}]=await Promise.all([r.e(296).then(r.bind(r,6589)),r.e(296).then(r.bind(r,5237))]);e.runtime.connector=new i(e),e.runtime.harvester=new a(e);const s=Object.values(e.features).filter(t=>e.runtime.drainRegistry.has(t.featureName));Promise.all(s.map(e=>e.onAggregateImported)).then(()=>e.runtime.harvester.startTimer())})();K.set(e,i),await i}(e,this.ee,this.featureName)}catch(e){return(0,f.R)(79,e),this.ee.abort(),void this.loadedSuccessfully(!1)}try{if(!this.#r(this.featureName,e.runtime.session,e.init))return this.abortHandler?.(),(0,O.Ze)(this.agentRef,this.featureName),void this.loadedSuccessfully(!1);const{Aggregate:r}=await t();this.featAggregate=new r(e,n),e.runtime.harvester.initializedAggregates.push(this.featAggregate),this.loadedSuccessfully(!0)}catch(e){(0,f.R)(34,e),this.abortHandler?.(),(0,O.Ze)(this.agentRef,this.featureName,!0),this.loadedSuccessfully(!1)}};h.RI?(0,I.GG)(()=>i(),!0):i()}#r(e,r,n){if(this.blocked)return!1;switch(e){case t.K7.sessionReplay:return V(n)&&!!r;case t.K7.sessionTrace:return!!r;default:return!0}}#t(e){if(!C.has(e)&&(C.add(e),!(0,s.f)(e.info))){const t=(0,i.pV)();let r={...t.info?.jsAttributes};try{r={...r,...e.info?.jsAttributes}}catch(e){}T(e,{...t,info:{...t.info,jsAttributes:r},runtime:e.runtime},e.runtime.loaderType)}}}var L=r(6630);class F extends U{static featureName=L.T;constructor(e){var t;super(e,L.T),this.setupInspectionEvents(),t=e,(0,N.Y)(P.Fw,function(e,r){"string"==typeof e&&("/"!==e.charAt(0)&&(e="/"+e),t.runtime.customTransaction=(r||"http://custom.transaction")+e,(0,S.p)("api-"+P.Fw,[(0,j.t)()],void 0,void 0,t.ee))},t),this.importAggregator(e,()=>e.init.feature_flags.includes("rum_v2")?r.e(296).then(r.bind(r,908)):r.e(296).then(r.bind(r,7927)))}setupInspectionEvents(){const e=(e,t)=>{e&&(0,x.W)({timeStamp:e.timeStamp,loaded:"complete"===e.target.readyState,type:"window",name:t,data:e.target.location+""})};(0,I.sB)(t=>{e(t,"DOMContentLoaded")}),(0,I.GG)(t=>{e(t,"load")}),(0,I.Qr)(t=>{e(t,"navigate")}),this.ee.on(l.tS.UPDATE,(e,t)=>{(0,x.W)({type:"lifecycle",name:"session",data:t})})}}class G extends e.d{constructor(e){var t;(super(),h.gm)?(this.features={},(0,i.bQ)(this.agentIdentifier,this),this.desiredFeatures=new Set(e.features||[]),this.desiredFeatures.add(F),T(this,e,e.loaderType||"agent"),t=this,(0,N.Y)(P.cD,function(e,r,n=!1){if("string"==typeof e){if(["string","number","boolean"].includes(typeof r)||null===r)return(0,N.U)(t,e,r,P.cD,n);(0,f.R)(40,typeof r)}else(0,f.R)(39,typeof e)},t),function(e){(0,N.Y)(P.Dl,function(t,r=!1){if("string"!=typeof t&&null!==t)return void(0,f.R)(41,typeof t);const n=e.info.jsAttributes["enduser.id"];r&&null!=n&&n!==t?(0,S.p)("api-setUserIdAndResetSession",[t],void 0,"session",e.ee):(0,N.U)(e,"enduser.id",t,P.Dl,!0)},e)}(this),function(e){(0,N.Y)(P.nb,function(t){if("string"==typeof t||null===t)return(0,N.U)(e,"application.version",t,P.nb,!1);(0,f.R)(42,typeof t)},e)}(this),function(e){(0,N.Y)("start",function(){e.ee.emit("manual-start-all")},e)}(this),function(e){(0,N.Y)(P.Pv,function(t=!0){if("boolean"==typeof t){if((0,S.p)("api-"+P.Pv,[t],void 0,"session",e.ee),e.runtime.consented=t,t){const t=e.features.page_view_event;t.onAggregateImported.then(e=>{const r=t.featAggregate;e&&!r.sentRum&&r.sendRum?.()})}}else(0,f.R)(65,typeof t)},e)}(this),this.run()):(0,f.R)(21)}get config(){return{info:this.info,init:this.init,loader_config:this.loader_config,runtime:this.runtime}}get api(){return this}run(){try{const e=function(e){const t={};
123return n.forEach(r=>{t[r]=!!e[r]?.enabled}),t}(this.init),r=[...this.desiredFeatures],i=this.init.feature_flags.includes("rum_v2");r.sort((e,r)=>t.P3[e.featureName]-t.P3[r.featureName]),r.forEach(r=>{if(!e[r.featureName]&&(i||r.featureName!==t.K7.pageViewEvent))return;const n=function(e){switch(e){case t.K7.ajax:return[t.K7.jserrors];case t.K7.sessionTrace:return[t.K7.ajax,t.K7.pageViewEvent];case t.K7.sessionReplay:return[t.K7.sessionTrace];case t.K7.pageViewTiming:return[t.K7.pageViewEvent];default:return[]}}(r.featureName).filter(e=>!(e in this.features));n.length>0&&(0,f.R)(36,{targetFeature:r.featureName,missingDependencies:n}),this.features[r.featureName]=new r(this)})}catch(e){(0,f.R)(22,e);for(const e in this.features)this.features[e].abortHandler?.();const t=(0,i.Zm)();delete t.initializedAgents[this.agentIdentifier]?.features,delete this.sharedAggregator;return t.ee.get(this.agentIdentifier).abort(),!1}}}var H=r(2843),z=r(782);class Y extends U{static featureName=z.T;constructor(e){super(e,z.T),h.RI&&((0,H.u)(()=>(0,S.p)("docHidden",[(0,j.t)()],void 0,z.T,this.ee),!0),(0,H.G)(()=>(0,S.p)("winPagehide",[(0,j.t)()],void 0,z.T,this.ee)),this.importAggregator(e,()=>r.e(296).then(r.bind(r,9981))))}}var Z=r(3969);class q extends U{static featureName=Z.TZ;constructor(e){super(e,Z.TZ),this.importAggregator(e,()=>r.e(296).then(r.bind(r,9623)))}}new G({features:[F,Y,q],loaderType:"lite"})})()})();</script>
123
124		<style type="text/css">
125		@import url("https://fonts.googleapis.com/css?family=Roboto:300,400,500,600,700,800,900");
126
127		:root {
128			--primary: #d53c85;
129			--secondary: #0091d1;
130			--font: 'Roboto';
131			--g-font: Roboto;
132			--yapla-consent-primary: #d53c85;
133			--yapla-consent-primary-alt: #ab306b;
134			--yapla-consent-secondary: #0091d1;
135			--yapla-consent-secondary-alt: #0074a8;
136		}
137	</style><link id="custom-advanced-css" rel="stylesheet" type="text/css" href="https://cdn.ca.yapla.com/company/CPY7p4CO2sE1afW3ImwiLyBND/website/8577/assets/css/advanced_custom_css_1778787824.css" media="screen"/><link id="uploaded-advanced-css" rel="stylesheet" type="text/css" href="https://cdn.ca.yapla.com/company/CPY7p4CO2sE1afW3ImwiLyBND/website/8577/assets/css/main-1764619933_1764619937.css" media="screen"/></head>
138
139<body class="pageid-49221  template-00012 lang-fr default">
140		<div id="site-wrapper" class="">
141		<!-- Vue global config -->
142		<div
143			id="vue-config"
144			data-locale="fr_CA"
145			data-google-captcha-site-key="6Ldjx5ccAAAAAAjK8xuaLqnmEaiPbSZlPzejoRbE"
146		></div>
147
148		<div data-component="cookie-consent" data-props="{}" ></div>		<div data-component="floating-elements-queue" data-props="{}" ></div>
149		<div class="site-inner">
150				
150<script id="js-config" type="application/json">{"id":"CPY7p4CO2sE1afW3ImwiLyBND","companyCountry":"CA","companyLocale":"fr_CA","companyCurrency":"cad"}</script>
150
151
152<div class="line site_line__item line-head" data-line-id="129903"><div class="container"><div class="row-fluid row"><div id="ROXVH2ifZjW31lPB99QFNVjL"  class=" col-sm-6 zone-25 zone-html" data-zone-alias="Zone 1903181" data-zone-id="1903184"><div class="content"><a href="/fr"><img alt="" src="https://cdn.ca.yapla.com/company/CPY7p4CO2sE1afW3ImwiLyBND/asset/images/Site%20Web%202021/Logos/ircm-logo-fr-renverse-45px.svg" style="width: 300px; height: 42px;" /></a></div></div><div id="adyXZP6g1L5UQS1DWfgmWqle"  class=" col-sm-18 zone-75 zone-header" data-zone-alias="Zone 1903461" data-zone-id="1903464"><div class="rf-mod-header-wrapper">
153	<div class="mod-header-container">		<div class="mod-header-part mod-header-part__right">
154			<ul class="mod-header mod-header-wrapper">
155										<li class="header-ext header-ext-custom"><div class="menu-hamburger"><span>.</span> <span>.</span> <span>.</span></div>
156</li>
157											<li class="header-ext header-ext-language"><a class="switch-language" href="/en/our-research">English</a></li>
158								</ul>
159		</div>
160	</div>
161</div></div></div></div></div><div class="line site_line__item line-menu-container " data-line-id="129904"><div class="container"><div class="row-fluid row"><div id="NmfFk2vKaffL3BYEVeJ6uCwo"  class=" col-sm-8 zone-33 zone-html" data-zone-alias="Zone 1903741" data-zone-id="1903744"><div class="content"><div class="menu-hamburger"><span>.</span> <span>.</span></div>
162</div></div><div id="DiDWQpJexoryDH9eqJinpq5d"  class=" col-sm-8 zone-33 zone-menu" data-zone-alias="Zone 1904021" data-zone-id="1904024"><div class="navbar hidden-print">
163	<div id="mainMenu" class="">
164		<ul class="nav nav-stacked menu-vertical-items menu-vertical-1904024">
165			<li rel="data-menu-49220" class="menu-type-page" data-menu-id="49220"><a href="/fr/" class="child-link">Recherche</a><a id="dropdown49220" class="dropdown-toggle" data-toggle="dropdown" data-expanded="true"><span class="caret"></span></a><ul class="dropdown-menu dropdown-menu-level-2" aria-labelledby="dropdown49220"><li rel="data-children-49221" class="menu-type-page" data-menu-id="49221"><a href="/fr/nos-recherches">Nos recherches</a></li><li rel="data-children-120293" class="menu-type-external" data-menu-id="120293"><a href="https://www.ircm.qc.ca/fr/chercheurs?filter[2798811]=938322&filter[activetab]=formbuilder">Chercheurs et chercheuses</a></li><li rel="data-children-135125" class="menu-type-page" data-menu-id="135125"><a href="/fr/valorisation-de-la-recherche">Valorisation de la recherche</a></li><li rel="data-children-49225" class="menu-type-page" data-menu-id="49225"><a href="/fr/integrite-scientifique">Intégrité scientifique</a></li><li rel="data-children-147838" class="menu-type-page" data-menu-id="147838"><a href="/fr/chaires-philantropiques">Chaires philanthropiques</a></li></ul></li><li rel="data-menu-49227" class="menu-type-separator" data-menu-id="49227"><a href="javascript:void(0);" class="child-link">Plateformes</a><a id="dropdown49227" class="dropdown-toggle" data-toggle="dropdown" data-expanded="true"><span class="caret"></span></a><ul class="dropdown-menu dropdown-menu-level-2" aria-labelledby="dropdown49227"><li rel="data-children-84410" class="menu-type-page" data-menu-id="84410"><a href="/fr/nos-plateformes">Nos plateformes</a></li><li rel="data-children-49230" class="menu-type-page" data-menu-id="49230"><a href="/fr/animalerie-et-sante-animale">Animalerie et santé animale</a></li><li rel="data-children-49231" class="menu-type-page" data-menu-id="49231"><a href="/fr/bio-informatique">Bio-informatique</a></li><li rel="data-children-54244" class="menu-type-page" data-menu-id="54244"><a href="/fr/biologie-moleculaire-et-genomique-fonctionnelle">Biologie moléculaire et génomique fonctionnelle</a></li><li rel="data-children-49234" class="menu-type-page" data-menu-id="49234"><a href="/fr/cytometrie-en-flux">Cytométrie en flux</a></li><li rel="data-children-78363" class="menu-type-page" data-menu-id="78363"><a href="/fr/modelisation-des-maladies-et-edition-du-genome">Modélisation des maladies et édition du génome</a></li><li rel="data-children-49239" class="menu-type-page" data-menu-id="49239"><a href="/fr/microscopie-et-imagerie">Microscopie et imagerie</a></li><li rel="data-children-49240" class="menu-type-page" data-menu-id="49240"><a href="/fr/spectrometrie-de-masse-et-proteomique">Spectrométrie de masse et protéomique</a></li><li rel="data-children-57999" class="menu-type-page" data-menu-id="57999">
165<a href="/fr/plateforme-de-recherche-en-obesite-metabolisme-et-diabete">Plateforme de recherche en obésité, métabolisme et diabète</a></li></ul></li><li rel="data-menu-49243" class="menu-type-separator" data-menu-id="49243"><a href="javascript:void(0);" class="child-link">Formation</a><a id="dropdown49243" class="dropdown-toggle" data-toggle="dropdown" data-expanded="true"><span class="caret"></span></a><ul class="dropdown-menu dropdown-menu-level-2" aria-labelledby="dropdown49243"><li rel="data-children-49245" class="menu-type-page" data-menu-id="49245"><a href="/fr/lexperience-ircm">L’expérience IRCM</a></li><li rel="data-children-49246" class="menu-type-page" data-menu-id="49246"><a href="/fr/stages-au-premier-cycle">Stages au premier cycle</a></li><li rel="data-children-110231" class="menu-type-page" data-menu-id="110231"><a href="/fr/etudes">Études supérieures</a></li><li rel="data-children-49252" class="menu-type-page" data-menu-id="49252"><a href="/fr/formation-post-doctorale">Formation postdoctorale</a></li><li rel="data-children-49254" class="menu-type-page" data-menu-id="49254"><a href="/fr/etudiants-etrangers">Étudiants Internationaux</a></li><li rel="data-children-141343" class="menu-type-page" data-menu-id="141343"><a href="/fr/sciencepop">Science POP 2025-2026</a></li><li rel="data-children-49256" class="menu-type-page" data-menu-id="49256"><a href="/fr/vie-etudiante">Vie étudiante</a></li></ul></li><li rel="data-menu-102947" class="menu-type-page" data-menu-id="102947"><a href="/fr/evenements">Évènements</a></li><li rel="data-menu-49226" class="menu-type-separator" data-menu-id="49226"><a href="javascript:void(0);" class="child-link">Institut</a><a id="dropdown49226" class="dropdown-toggle" data-toggle="dropdown" data-expanded="true"><span class="caret"></span></a><ul class="dropdown-menu dropdown-menu-level-2" aria-labelledby="dropdown49226"><li rel="data-children-49238" class="menu-type-page" data-menu-id="49238"><a href="/fr/gouvernance">Gouvernance</a></li><li rel="data-children-49241" class="menu-type-page" data-menu-id="49241"><a href="/fr/comite-de-direction">Comité de direction</a></li><li rel="data-children-86444" class="menu-type-page" data-menu-id="86444"><a href="/fr/comite-scientifique-consultatif">Comité scientifique consultatif</a></li><li rel="data-children-74917" class="menu-type-page" data-menu-id="74917"><a href="/fr/ombudsman">Ombudsman</a></li><li rel="data-children-96272" class="menu-type-page" data-menu-id="96272"><a href="/fr/salle-de-presse">Salle de presse</a></li><li rel="data-children-49259" class="menu-type-page" data-menu-id="49259"><a href="/fr/rapports-annuels">Rapports annuels</a></li></ul></li><li rel="data-menu-49261" class="menu-type-separator" data-menu-id="49261"><a href="javascript:void(0);" class="child-link">La Clinique</a><a id="dropdown49261" class="dropdown-toggle" data-toggle="dropdown" data-expanded="true"><span class="caret"></span></a><ul class="dropdown-menu dropdown-menu-level-2" aria-labelledby="dropdown49261"><li rel="data-children-50260" class="menu-type-page" data-menu-id="50260"><a href="/fr/la-clinique-de-lircm">La Clinique de l’IRCM</a></li><li rel="data-children-103177" class="menu-type-page" data-menu-id="103177"><a href="/fr/ressources-en-sante">Ressources en santé</a></li><li rel="data-children-49266" class="menu-type-page" data-menu-id="49266"><a href="/fr/contacter-la-clinique">Joindre la Clinique</a></li><li rel="data-children-146910" class="menu-type-page" data-menu-id="146910"><a href="/fr/nos-etudes-cliniques">Nos études cliniques</a></li></ul></li><li rel="data-menu-49283" class="menu-type-external" data-menu-id="49283"><a href="https://fondation-de-lircm.s1.yapla.com/fr/faire-un-don-en-ligne" target="_blank">Soutenir la Fondation</a></li><li rel="data-menu-49265" class="menu-type-page" data-menu-id="49265"><a href="/fr/actualites">Actualités</a></li><li rel="data-menu-146858" class="menu-type-separator" data-menu-id="146858"><a href="javascript:void(0);" class="child-link">À propos</a><a id="dropdown146858" class="dropdown-toggle" data-toggle="dropdown" data-expanded="true"><span class="caret"></span></a><ul class="dropdown-menu dropdown-menu-level-2" aria-labelledby="dropdown146858"><li rel="data-children-49229" class="menu-type-page" data-menu-id="49229"><a href="/fr/mot-du-president">Mot du président</a></li><li rel="data-children-49232" class="menu-type-page" data-menu-id="49232"><a href="/fr/notre-impact">Notre impact</a></li><li rel="data-children-49236" class="menu-type-page" data-menu-id="49236"><a href="/fr/notre-heritage">Notre héritage</a></li><li rel="data-children-49247" class="menu-type-page" data-menu-id="49247"><a href="/fr/prix-de-lircm">Reconnaissances et prix</a></li></ul></li><li rel="data-menu-49275" class="menu-type-page" data-menu-id="49275"><a href="/fr/nous-joindre">Nous joindre</a></li><li rel="data-menu-49264" class="menu-type-separator" data-menu-id="49264"><a href="javascript:void(0);" class="child-link">Carrières</a><a id="dropdown49264" class="dropdown-toggle" data-toggle="dropdown" data-expanded="true"><span class="caret"></span></a><ul class="dropdown-menu dropdown-menu-level-2" aria-labelledby="dropdown49264"><li rel="data-children-49272" class="menu-type-page" data-menu-id="49272"><a href="/fr/la-vie-a-lircm">La vie à l’IRCM</a></li><li rel="data-children-138536" class="menu-type-page" data-menu-id="138536"><a href="/fr/opportunites">Opportunités</a></li></ul></li><li rel="data-menu-49280" class="menu-type-page" data-menu-id="49280"><a href="/fr/intranet">Connexion</a></li><li rel="data-menu-49366" class="menu-type-page" data-menu-id="49366"><a href="/fr/infolettre">Infolettre</a></li><li rel="data-menu-50224" class="menu-type-external" data-menu-id="50224"><a href="https://languageswitch">English</a></li>
165		</ul>
166	</div>
167</div></div><div id="GYd4EbjJtgMbqn7NKcaIc5lA"  class=" col-sm-8 zone-33 zone-header" data-zone-alias="Zone 1904301" data-zone-id="1904304"><div class="rf-mod-header-wrapper">
168	<div class="mod-header-container">		<div class="mod-header-part mod-header-part__right">
169			<ul class="mod-header mod-header-wrapper">
170										<li class="header-ext header-ext-custom"><a class="fondation-btn" href="https://fondation-de-lircm.s1.yapla.com/fr/faire-un-don-en-ligne" target="_blank"><span>Soutenir la Fondation</span></a>
171<ul class="social">
172	<li class="white"><a class="search" href="/fr/rechercher">&nbsp;</a></li>
173	<li class="white"><a class="linkedin" href="https://www.linkedin.com/company/ircm/" target="blank">&nbsp;</a></li>
174	<li class="white"><a class="facebook" href="https://www.facebook.com/IRCM.Montreal/" target="_blank">&nbsp;</a></li>
175	<li class="white"><a class="youtube" href="https://www.youtube.com/channel/UCd5RrcOYlEHr3WJZtZX-x3A" target="_blank">&nbsp;</a></li>
176	<li class="white"><a class="bluesky" href="https://bsky.app/profile/ircm.bsky.social"  target="blank">&nbsp;</a></li>
177	<li class="white"><a class="instagram" href="https://www.instagram.com/ircm_mtl/" target="_blank">&nbsp;</a></li>
178</ul>
179</li>
180											<li class="header-ext header-ext-login"><a class="member-login btn" href="https://www.ircm.qc.ca/fr/intranet/authentication#login_content_box">Connexion</a><style>@media(max-width:767px){.site-inner{padding-bottom:34px;}}</style></li>
181											<li class="header-ext header-ext-language"><a class="switch-language" href="/en/our-research">English</a></li>
182								</ul>
183		</div>
184	</div>
185</div></div></div></div></div><div class="line site_line__item line-header displaynone" data-line-id="88762"><div class="container"><div class="row-fluid row"><div id="sBQuJQ1J9Ph3BYqAlirnvWWp"  class=" col-sm-24 zone-100 zone-header" data-zone-alias="Header" data-zone-id="749768"><div class="rf-mod-header-wrapper">
186	<div class="mod-header-container">		<div class="mod-header-part mod-header-part__right">
187			<ul class="mod-header mod-header-wrapper">
188										<li class="header-ext header-ext-custom"><ul class="social">
189	<li class="white"><a class="search" href="/fr/rechercher">&nbsp;</a></li>
190	<li class="white"><a class="instagram" href="https://www.instagram.com/ircm_mtl/" target="_blank">&nbsp;</a></li>
191	<li class="white"><a class="facebook" href="https://www.facebook.com/IRCM.Montreal/" target="_blank">&nbsp;</a></li>
192	<li class="white"><a class="youtube" href="https://www.youtube.com/channel/UCd5RrcOYlEHr3WJZtZX-x3A" target="_blank">&nbsp;</a></li>
193	<li class="white"><a class="twitter" href="https://twitter.com/ircm_mtl" target="blank">&nbsp;</a></li>
194	<li class="white"><a class="linkedin" href="https://www.linkedin.com/company/ircm/" target="blank">&nbsp;</a></li>
195</ul>
196
197<p class="custom-links"><a href="/fr/la-vie-a-lircm">Carrières</a> &nbsp; <span>&bull;</span> &nbsp; <a href="/fr/actualites">Actualités</a> &nbsp;<span>&bull;</span> &nbsp; <a href="/fr/nous-joindre">Nous joindre</a> &nbsp;<span>&bull;</span>&nbsp;</p>
198</li>
199											<li class="header-ext header-ext-login"><a class="member-login btn" href="https://www.ircm.qc.ca/fr/intranet/authentication#login_content_box">Connexion</a><style>@media(max-width:767px){.site-inner{padding-bottom:34px;}}</style></li>
200											<li class="header-ext header-ext-social-links">	<div class="mod-social-links">
201					<a class="social-link facebook" href="https://www.facebook.com/IRCM.Montreal/" target="_blank">
202				<span class="icon-facebook fab fa-facebook"><span class="sr-only">facebook</span></span>			</a>
203					<a class="social-link x-twitter" href="https://twitter.com/ircm_mtl" target="_blank">
204				<span class="icon-x-twitter fab fa-x-twitter"><span class="sr-only">x-twitter</span></span>			</a>
205					<a class="social-link linkedin" href="https://www.linkedin.com/company/ircm/" target="_blank">
206				<span class="icon-linkedin fab fa-linkedin"><span class="sr-only">linkedin</span></span>			</a>
207					<a class="social-link youtube" href="https://www.youtube.com/channel/UCd5RrcOYlEHr3WJZtZX-x3A" target="_blank">
208				<span class="icon-youtube fab fa-youtube"><span class="sr-only">youtube</span></span>			</a>
209					<a class="social-link instagram" href="https://www.instagram.com/ircm_mtl/" target="_blank">
210				<span class="icon-instagram fab fa-instagram"><span class="sr-only">instagram</span></span>			</a>
211			</div>
212</li>
213											<li class="header-ext header-ext-language"><a class="switch-language" href="/en/our-research">English</a></li>
214								</ul>
215		</div>
216	</div>
217</div></div></div></div></div><div class="line site_line__item line-menu darkgrey" data-line-id="89446"><div class="container"><div class="row-fluid row"><div id="m9DGdYRScXFuAVMHI2bnia7P"  class=" col-sm-8 zone-33 zone-html" data-zone-alias="Logo" data-zone-id="750720"><div class="content"><a class="dark" href="/"><img alt="" src="https://cdn.ca.yapla.com/company/CPY7p4CO2sE1afW3ImwiLyBND/asset/images/Site%20Web%202021/Logos/Logo_IRCM_Sticky_FR.svg" /> </a> <a class="light" href="/"><img alt="" src="https://cdn.ca.yapla.com/company/CPY7p4CO2sE1afW3ImwiLyBND/asset/images/Site%20Web%202021/Logos/Logo_IRCM_Header_FR.svg" /></a></div></div><div id="GVqLJWdWLcvasBG3UBAtTUn4"  class=" col-sm-16 zone-67 zone-menu" data-zone-alias="Menu" data-zone-id="750785"><div class="navbar navbar-default  hidden-print">
218	<div class="navbar-header">
219		<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#mainMenu"
220				aria-expanded="false">
221			<span class="sr-only"></span>
222			<span class="icon-bar"></span>
223			<span class="icon-bar"></span>
224			<span class="icon-bar"></span>
225		</button>
226	</div>
227	<div class="collapse navbar-collapse" id="mainMenu">
228		<ul class="nav navbar-nav menu-vertical-items menu-vertical-750785">
229			<li rel="data-menu-49220" class="menu-type-page" data-menu-id="49220"><a href="/fr/" class="child-link">Recherche</a><a id="dropdown49220" class="dropdown-toggle" data-toggle="dropdown" data-expanded="true"><span class="caret"></span></a><ul class="dropdown-menu dropdown-menu-level-2" aria-labelledby="dropdown49220"><li rel="data-children-49221" class="menu-type-page" data-menu-id="49221"><a href="/fr/nos-recherches">Nos recherches</a></li><li rel="data-children-120293" class="menu-type-external" data-menu-id="120293"><a href="https://www.ircm.qc.ca/fr/chercheurs?filter[2798811]=938322&filter[activetab]=formbuilder">Chercheurs et chercheuses</a></li><li rel="data-children-135125" class="menu-type-page" data-menu-id="135125"><a href="/fr/valorisation-de-la-recherche">Valorisation de la recherche</a></li><li rel="data-children-49225" class="menu-type-page" data-menu-id="49225"><a href="/fr/integrite-scientifique">Intégrité scientifique</a></li><li rel="data-children-147838" class="menu-type-page" data-menu-id="147838"><a href="/fr/chaires-philantropiques">Chaires philanthropiques</a></li></ul></li><li rel="data-menu-49227" class="menu-type-separator" data-menu-id="49227"><a href="javascript:void(0);" class="child-link">Plateformes</a><a id="dropdown49227" class="dropdown-toggle" data-toggle="dropdown" data-expanded="true"><span class="caret"></span></a><ul class="dropdown-menu dropdown-menu-level-2" aria-labelledby="dropdown49227">
229<li rel="data-children-84410" class="menu-type-page" data-menu-id="84410"><a href="/fr/nos-plateformes">Nos plateformes</a></li><li rel="data-children-49230" class="menu-type-page" data-menu-id="49230"><a href="/fr/animalerie-et-sante-animale">Animalerie et santé animale</a></li><li rel="data-children-49231" class="menu-type-page" data-menu-id="49231"><a href="/fr/bio-informatique">Bio-informatique</a></li><li rel="data-children-54244" class="menu-type-page" data-menu-id="54244"><a href="/fr/biologie-moleculaire-et-genomique-fonctionnelle">Biologie moléculaire et génomique fonctionnelle</a></li><li rel="data-children-49234" class="menu-type-page" data-menu-id="49234"><a href="/fr/cytometrie-en-flux">Cytométrie en flux</a></li><li rel="data-children-78363" class="menu-type-page" data-menu-id="78363"><a href="/fr/modelisation-des-maladies-et-edition-du-genome">Modélisation des maladies et édition du génome</a></li><li rel="data-children-49239" class="menu-type-page" data-menu-id="49239"><a href="/fr/microscopie-et-imagerie">Microscopie et imagerie</a></li><li rel="data-children-49240" class="menu-type-page" data-menu-id="49240"><a href="/fr/spectrometrie-de-masse-et-proteomique">Spectrométrie de masse et protéomique</a></li><li rel="data-children-57999" class="menu-type-page" data-menu-id="57999"><a href="/fr/plateforme-de-recherche-en-obesite-metabolisme-et-diabete">Plateforme de recherche en obésité, métabolisme et diabète</a></li></ul></li><li rel="data-menu-49243" class="menu-type-separator" data-menu-id="49243"><a href="javascript:void(0);" class="child-link">Formation</a><a id="dropdown49243" class="dropdown-toggle" data-toggle="dropdown" data-expanded="true"><span class="caret"></span></a><ul class="dropdown-menu dropdown-menu-level-2" aria-labelledby="dropdown49243"><li rel="data-children-49245" class="menu-type-page" data-menu-id="49245"><a href="/fr/lexperience-ircm">L’expérience IRCM</a></li><li rel="data-children-49246" class="menu-type-page" data-menu-id="49246"><a href="/fr/stages-au-premier-cycle">Stages au premier cycle</a></li><li rel="data-children-110231" class="menu-type-page" data-menu-id="110231"><a href="/fr/etudes">Études supérieures</a></li><li rel="data-children-49252" class="menu-type-page" data-menu-id="49252"><a href="/fr/formation-post-doctorale">Formation postdoctorale</a></li><li rel="data-children-49254" class="menu-type-page" data-menu-id="49254"><a href="/fr/etudiants-etrangers">Étudiants Internationaux</a></li><li rel="data-children-141343" class="menu-type-page" data-menu-id="141343"><a href="/fr/sciencepop">Science POP 2025-2026</a></li><li rel="data-children-49256" class="menu-type-page" data-menu-id="49256"><a href="/fr/vie-etudiante">Vie étudiante</a></li></ul></li><li rel="data-menu-102947" class="menu-type-page" data-menu-id="102947"><a href="/fr/evenements">Évènements</a></li><li rel="data-menu-49226" class="menu-type-separator" data-menu-id="49226"><a href="javascript:void(0);" class="child-link">Institut</a><a id="dropdown49226" class="dropdown-toggle" data-toggle="dropdown" data-expanded="true"><span class="caret"></span></a><ul class="dropdown-menu dropdown-menu-level-2" aria-labelledby="dropdown49226"><li rel="data-children-49238" class="menu-type-page" data-menu-id="49238"><a href="/fr/gouvernance">Gouvernance</a></li><li rel="data-children-49241" class="menu-type-page" data-menu-id="49241"><a href="/fr/comite-de-direction">Comité de direction</a></li><li rel="data-children-86444" class="menu-type-page" data-menu-id="86444"><a href="/fr/comite-scientifique-consultatif">Comité scientifique consultatif</a></li><li rel="data-children-74917" class="menu-type-page" data-menu-id="74917"><a href="/fr/ombudsman">Ombudsman</a></li><li rel="data-children-96272" class="menu-type-page" data-menu-id="96272"><a href="/fr/salle-de-presse">Salle de presse</a></li><li rel="data-children-49259" class="menu-type-page" data-menu-id="49259"><a href="/fr/rapports-annuels">Rapports annuels</a></li></ul></li><li rel="data-menu-49261" class="menu-type-separator" data-menu-id="49261"><a href="javascript:void(0);" class="child-link">La Clinique</a><a id="dropdown49261" class="dropdown-toggle" data-toggle="dropdown" data-expanded="true"><span class="caret"></span></a><ul class="dropdown-menu dropdown-menu-level-2" aria-labelledby="dropdown49261"><li rel="data-children-50260" class="menu-type-page" data-menu-id="50260"><a href="/fr/la-clinique-de-lircm">La Clinique de l’IRCM</a></li><li rel="data-children-103177" class="menu-type-page" data-menu-id="103177"><a href="/fr/ressources-en-sante">Ressources en santé</a></li><li rel="data-children-49266" class="menu-type-page" data-menu-id="49266"><a href="/fr/contacter-la-clinique">Joindre la Clinique</a></li><li rel="data-children-146910" class="menu-type-page" data-menu-id="146910"><a href="/fr/nos-etudes-cliniques">Nos études cliniques</a></li></ul></li><li rel="data-menu-49283" class="menu-type-external" data-menu-id="49283"><a href="https://fondation-de-lircm.s1.yapla.com/fr/faire-un-don-en-ligne" target="_blank">Soutenir la Fondation</a></li><li rel="data-menu-49265" class="menu-type-page" data-menu-id="49265"><a href="/fr/actualites">Actualités</a></li><li rel="data-menu-146858" class="menu-type-separator" data-menu-id="146858"><a href="javascript:void(0);" class="child-link">À propos</a><a id="dropdown146858" class="dropdown-toggle" data-toggle="dropdown" data-expanded="true"><span class="caret"></span></a><ul class="dropdown-menu dropdown-menu-level-2" aria-labelledby="dropdown146858"><li rel="data-children-49229" class="menu-type-page" data-menu-id="49229"><a href="/fr/mot-du-president">Mot du président</a></li><li rel="data-children-49232" class="menu-type-page" data-menu-id="49232"><a href="/fr/notre-impact">Notre impact</a></li><li rel="data-children-49236" class="menu-type-page" data-menu-id="49236"><a href="/fr/notre-heritage">Notre héritage</a></li><li rel="data-children-49247" class="menu-type-page" data-menu-id="49247"><a href="/fr/prix-de-lircm">Reconnaissances et prix</a></li></ul></li><li rel="data-menu-49275" class="menu-type-page" data-menu-id="49275"><a href="/fr/nous-joindre">Nous joindre</a></li><li rel="data-menu-49264" class="menu-type-separator" data-menu-id="49264"><a href="javascript:void(0);" class="child-link">Carrières</a><a id="dropdown49264" class="dropdown-toggle" data-toggle="dropdown" data-expanded="true"><span class="caret"></span></a><ul class="dropdown-menu dropdown-menu-level-2" aria-labelledby="dropdown49264"><li rel="data-children-49272" class="menu-type-page" data-menu-id="49272"><a href="/fr/la-vie-a-lircm">La vie à l’IRCM</a></li><li rel="data-children-138536" class="menu-type-page" data-menu-id="138536"><a href="/fr/opportunites">Opportunités</a></li></ul></li><li rel="data-menu-49280" class="menu-type-page" data-menu-id="49280"><a href="/fr/intranet">Connexion</a></li><li rel="data-menu-49366" class="menu-type-page" data-menu-id="49366"><a href="/fr/infolettre">Infolettre</a></li><li rel="data-menu-50224" class="menu-type-external" data-menu-id="50224"><a href="https://languageswitch">English</a></li>
229		</ul>
230	</div></div></div></div></div></div><div class="line site_line__item line-breadcrumbs" data-line-id="90504"><div class="container"><div class="row-fluid row"><div id="DxwZHEHhhAvvb1OGbXfaevqN"  class=" col-sm-24 zone-100 zone-breadcrumbs" data-zone-alias="Fil d'Ariane" data-zone-id="778346"><ul class="breadcrumb">						<li><a href="/fr/accueil" class="pathway">Accueil</a></li>						<li><a href="/fr/" class="pathway">Recherche</a></li><li class="active"><span>Nos recherches</span></li></ul>
231</div></div></div></div><div class="line site_line__item line-banner darkbackground" data-line-id="89731"><div class="container-fluid"><div class="row-fluid row"><div id="DXnoGaaEQW41wbzg36o3oN7x"  class=" col-sm-24 zone-100 zone-banner" data-zone-alias="Bannière page" data-zone-id="758184"><div class="mod-banner__wrapper">
232	<div class="mod-banner__img" style="background-image: url(https://cdn.ca.yapla.com/company/CPY7p4CO2sE1afW3ImwiLyBND/module/banner/ircm_banniere-sujet-1626380886.jpg);">
233		<div class="mod-banner__content"><h1>Nos recherches</h1>
234</div>
235	</div>
236</div></div></div></div></div><div class="line site_line__item smallpadding cols-lined-absolute mobilemargin darkbackground" style="background-color:#21242F" data-line-id="90343"><div class="container"><div class="row-fluid row"><div id="zFcTOOwOVJ5tfOoSDgnNRTDw"  class=" col-sm-12 zone-50 zone-html" data-zone-alias="Zone 774277" data-zone-id="774280"><div class="content"><h2>La recherche<br />
237inspirée par la vie</h2>
238</div></div><div id="F99leKfhEsXWmypj5WR9SQkJ"  class=" col-sm-12 zone-50 zone-html" data-zone-alias="Zone 774345" data-zone-id="774348"><div class="content"><p class="p-large">À l&rsquo;origine de toute grande découverte, il y a la recherche. Les chercheuses et chercheurs de l&rsquo;IRCM scrutent et observent le fondement même de la vie pour mieux comprendre les maladies. L&rsquo;amélioration de la vie nous inspire et nous donne le courage de voir chaque défi comme le point de départ d&rsquo;une aventure qui mène à un nouveau traitement.</p>
239</div></div></div></div></div><div class="line site_line__item darkbackground" style="background-color:#21242F" data-line-id="93506"><div class="container"><div class="row-fluid row"><div id="iQCuLelksA8dcGdhjPRAH8v5"  class=" col-sm-24 zone-100 zone-html" data-zone-alias="Zone 879470" data-zone-id="879473"><div class="content"><h2 class="extra">Comprendre<span style="color:#0091d1;">.</span><br />
240Diagnostiquer<span style="color:#0091d1;">.</span><br />
241Traiter<span style="color:#0091d1;">.</span></h2>
242</div></div></div></div></div><div class="line site_line__item smallpaddingtop darkbackground" style="background-color:#21242F" data-line-id="89466"><div class="container"><div class="row-fluid row"><div id="0rZ9SrE8ixpMaTGKw9Ah3BaS"  class=" col-sm-24 zone-100 zone-html" data-zone-alias="Zone 751582" data-zone-id="751585"><div class="content"><h3 class="h2" style="text-align: right;">Les maladies qui<br />
243font l&rsquo;objet de nos<br />
244recherches</h3>
245</div></div></div></div></div><div class="line site_line__item section-imgtext-subject mobile-imgmarginbottom row-lined-absolute xsmallpadding darkbackground blue" style="background-color:#21242F" data-line-id="89467"><div class="container"><div class="row-fluid row"><div id="MKLuAw9whnlVcagiJ8j6qsfe"  class=" col-sm-12 zone-50 zone-image" data-zone-alias="Zone 751647" data-zone-id="751650"><div class="content" align="center"><img src="https://cdn.ca.yapla.com/company/CPY7p4CO2sE1afW3ImwiLyBND/8577/48315/images/ircm_maladies-metaboliques-2x-1629743089.jpg" alt="" width=""></div></div><div id="yof4I4P1PZ6ekSx5sArk3dns"  class=" col-sm-12 zone-50 zone-html" data-zone-alias="Zone 751712" data-zone-id="751715"><div class="content"><h3>Centre de recherche en santé cardiométabolique</h3>
246
247<p><u>Co-responsables : Jennifer Estall et May Faraj</u></p>
248
249<p>Les maladies cardiométaboliques toucheront le tiers de la population au cours de leur vie, plus particulièrement les personnes en surpoids. Le diabète, les maladies cardiovasculaires et la maladie du foie gras, entre&nbsp;autres, ont des conséquences importantes sur la qualité et l&rsquo;espérance de vie des personnes qui en souffrent, en plus de représenter un fardeau financier pour le système de santé. Le processus de détérioration de la santé cardiométabolique et les complications qui s&rsquo;ensuivent n&rsquo;ont pas encore été entièrement élucidés. Le Centre de recherche en santé cardiométabolique regroupe l&rsquo;expertise de chercheurs en biochimie, en biologie cellulaire, en génétique, en nutrition, en physiologie et en médecine, permettant ainsi une approche interdisciplinaire. Par le maillage de la recherche fondamentale, translationnelle et 
249clinique, nous travaillons à découvrir de nouveaux outils permettant de maintenir la santé cardiométabolique, à identifier des facteurs engendrant sa détérioration et à développer de nouvelles thérapies. Ces efforts sont essentiels pour la prévention, le dépistage précoce, le traitement efficace et la gestion des maladies cardiométaboliques, de même que pour l&rsquo;amélioration de la qualité de vie des personnes qui en souffrent et de leur famille.</p>
250
251<p><a class="btn btn-secondary" href="https://www.ircm.qc.ca/fr/chercheurs?filter[1215464]=29762&filter[activetab]=formbuilder">Découvrez les chercheuses et chercheurs de ce centre</a></p>
252</div></div></div></div></div><div class="line site_line__item section-imgtext-subject mobile-imgmarginbottom row-lined-absolute xsmallpaddingbottom darkbackground blue" style="background-color:#21242F" data-line-id="90818"><div class="container"><div class="row-fluid row"><div id="y4jNclbrs6BF0CJeGKAcTqD4"  class=" col-sm-12 zone-50 zone-image" data-zone-alias="Zone 786296" data-zone-id="786299"><div class="content" align="center"><img src="https://cdn.ca.yapla.com/company/CPY7p4CO2sE1afW3ImwiLyBND/8577/48315/images/ircm_cancer-2x-1629743607.jpg" alt="" width=""></div></div><div id="RKSnHAiGKlB83p33vooOwlu9"  class=" col-sm-12 zone-50 zone-html" data-zone-alias="Zone 786365" data-zone-id="786368"><div class="content"><h3>Centre de recherche en cancer</h3>
253
254<p><u>Co-responsables : Jean-François Côté et Frédéric Charron</u></p>
255
256<p>Près de la moitié des citoyens canadiens recevront un diagnostic de cancer au cours de leur vie, et environ le quart en mourront. Trop de nos proches devront faire face à cette épreuve difficile. Malgré les avancées extraordinaires réalisées au cours des dernières années pour traiter cette maladie, il n&rsquo;existe toujours pas d&rsquo;approche globale permettant de prévenir le développement et la récurrence des cancers de tous genres. La mission du Centre de recherche en cancer est de mieux comprendre les mécanismes moléculaires et cellulaires sous-jacents à plusieurs cancers, dans l&rsquo;espoir que ces connaissances mèneront au développement de nouvelles approches thérapeutiques tant attendues. Nos experts contribuent ainsi à la lutte contre de nombreux cancers répandus, tels que le cancer du cerveau chez l&rsquo;enfant, le cancer du sein, les lymphomes et les leucémies.</p>
257
258<p><a class="btn btn-secondary" href="https://www.ircm.qc.ca/fr/chercheurs?filter[1215464]=29759&filter[activetab]=formbuilder">Découvrez les chercheuses et chercheurs de ce centre</a></p>
259</div></div></div></div></div><div class="line site_line__item section-imgtext-subject mobile-imgmarginbottom row-lined-absolute xsmallpaddingbottom darkbackground blue" style="background-color:#21242F" data-line-id="89470"><div class="container"><div class="row-fluid row"><div id="AnRmVttraZgX0Q0boKfCTKeF"  class=" col-sm-12 zone-50 zone-image" data-zone-alias="Zone 751907" data-zone-id="751910"><div class="content" align="center"><img src="https://cdn.ca.yapla.com/company/CPY7p4CO2sE1afW3ImwiLyBND/8577/48315/images/ircm_maladies-genetiques-2x-1629743875.jpg" alt="" width=""></div></div><div id="Mnf0tiwXqRsb7mEc8L1GtFPe"  class=" col-sm-12 zone-50 zone-html" data-zone-alias="Zone 751972" data-zone-id="751975"><div class="content"><h3>Centre de recherche sur les maladies génétiques et neurologiques</h3>
260
261<p><u>Co-responsables : Marie Kmita et Jacques Drouin</u></p>
262
263<p>De nombreuses maladies et malformations développementales sont causées par des erreurs dans le code génétique. Cependant, les mécanismes par lesquels ces erreurs se manifestent en pathologies demeurent mal connus. Grâce aux percées récentes en biologie moléculaire, il est de plus en plus réaliste d&rsquo;entrevoir le développement de thérapies pour corriger ces erreurs génétiques. Pour y parvenir, les scientifiques du Centre de recherche sur les maladies génétiques et neurologiques œuvrent à comprendre le fonctionnement et la régulation des gènes dans les cellules saines, ainsi que comment le dysfonctionnement de ces processus peut mener à diverses pathologies. Alors que les travaux de certains chercheurs du Centre mettent l&rsquo;emphase sur l&rsquo;origine des maladies neurologiques et neurodégénératives et sur la conception de traitements novateurs, d&rsquo;autres ciblent les malformations congénitales qui surviennent lors du développement fœtal, causées par des mutations génétiques ou un contrôle défectueux dans la régulation de l&rsquo;activité des gènes.</p>
264
265<p><a class="btn btn-secondary" href="https://www.ircm.qc.ca/fr/chercheurs?filter[1215464]=29761&filter[activetab]=formbuilder">Découvrez les chercheuses et chercheurs de ce centre</a></p>
266</div></div></div></div></div><div class="line site_line__item section-imgtext-subject mobile-imgmarginbottom row-lined-absolute xsmallpaddingbottom darkbackground blue" style="background-color:#21242F" data-line-id="90819"><div class="container"><div class="row-fluid row"><div id="z29qP2BFNfoHmkipQFRKDwaP"  class=" col-sm-12 zone-50 zone-image" data-zone-alias="Zone 786434" data-zone-id="786437"><div class="content" align="center"><img src="https://cdn.ca.yapla.com/company/CPY7p4CO2sE1afW3ImwiLyBND/8577/48315/images/ircm_immunodeficie
266nces-2x-1629744044.jpg" alt="" width=""></div></div><div id="2OYBsOjf4tZUBxkjVFaaZfgV"  class=" col-sm-12 zone-50 zone-html" data-zone-alias="Zone 786503" data-zone-id="786506"><div class="content"><h3>Centre de recherche en immunité, inflammation et maladies infectieuses</h3>
267
268<p><u>Co-responsables : Javier Di Noia et Woong-Kyung Suh</u></p>
269
270<p>Le Centre &laquo; 3i &raquo; &nbsp;réunit des experts en recherche fondamentale et des médecins cliniciens spécialisés en immunité, en inflammation, en microbiologie et en maladies infectieuses. Sa mission est d&rsquo;approfondir nos connaissances sur le fonctionnement du système immunitaire, d&rsquo;élucider les mécanismes pathogéniques des maladies immunes et de développer de nouvelles méthodes permettant d&rsquo;altérer ou exploiter le système immunitaire dans la lutte contre les immunodéficiences, les maladies autoimmunes, les maladies intestinales inflammatoires, les maladies métaboliques, les infections et les cancers. Nous utilisons des approches à la fine pointe de la technologie en génétique, en génomique, en protéomique, en biologie cellulaire, ainsi que des modèles expérimentaux de maladies, qui bénéficient d&rsquo;échanges et de collaborations avec la Clinique d&rsquo;immunodéficience primaire à l&rsquo;IRCM. Nos études portent notamment sur les cancers qui sont causés par des cellules immunitaires, tels que les lymphomes et les leucémies, sur l&rsquo;impact du microbiome et de la nutrition sur l&rsquo;inflammation et les réponses immunitaires, et sur la pathophysiologie derrière les infections virales et les conditions qui s&rsquo;ensuivent. Bien que basé à l&rsquo;IRCM, le Centre 3i collabore avec des chercheurs de diverses institutions de la grande région métropolitaine, ainsi qu&rsquo;à travers le Canada et le monde.&nbsp;</p>
271
272<p><a class="btn btn-secondary" href="https://www.ircm.qc.ca/fr/chercheurs?filter[1215464]=29760&filter[activetab]=formbuilder">Découvrez les chercheuses et chercheurs de ce centre</a></p>
273</div></div></div></div></div><div class="line site_line__item smallpaddingtop xsmallpaddingbottom row75 displaynone" data-line-id="89471"><div class="container"><div class="row-fluid row"><div id="A8uBrdDxzMuw0N9JV610AXbO"  class=" col-sm-24 zone-100 zone-html" data-zone-alias="Zone 752037" data-zone-id="752040"><div class="content"><h2 class="h1">Nos programmes<br />
274de recherche</h2>
275
276<p class="p-large">&nbsp;</p>
277</div></div></div></div></div><div class="line site_line__item largepaddingbottom section-programmes col-grid grid3 displaynone" data-line-id="90344"><div class="container"><div class="row-fluid row"><div id="421IJdNMIqbWHbh6ioQBfaMz"  class=" col-sm-24 zone-100 zone-news_flash" data-zone-alias="Zone 774537" data-zone-id="774540">	<div class="content news newsList">			<div class="row">					<div class="item col-sm-24">							<div class="itemImage">								<img src="https://cdn.ca.yapla.com/company/CPY7p4CO2sE1afW3ImwiLyBND/website/article/70171/images/icon_bioethique-2x-1629745230.jpg" class="e-thumbnail" alt="thumbnail"/>							</div><div class="intro"><h3 class="h5">Bioéthique</h5>
278</div>					</div>			</div>			<div class="row">					<div class="item col-sm-24">							<div class="itemImage">								<img src="https://cdn.ca.yapla.com/company/CPY7p4CO2sE1afW3ImwiLyBND/website/article/70172/images/icon_biologie-cancer-2x-1629745317.jpg" class="e-thumbnail" alt="thumbnail"/>							</div><div class="intro"><h3 class="h5">Biologie du Cancer</h3>
279</div>					</div>			</div>			<div class="row">					<div class="item col-sm-24">							<div class="itemImage">								<img src="https://cdn.ca.yapla.com/company/CPY7p4CO2sE1afW3ImwiLyBND/website/article/70173/images/icon_biologie-developpementale-2x-1629745480.jpg" class="e-thumbnail" alt="thumbnail"/>							</div><div class="intro"><h3 class="h5">Biologie<br />
280Développementale</h3>
281</div>					</div>			</div>			<div class="row">					<div class="item col-sm-24">							<div class="itemImage">								<img src="https://cdn.ca.yapla.com/company/CPY7p4CO2sE1afW3ImwiLyBND/website/article/70175/images/icon_epigenetique-2x-1629745653.jpg" class="e-thumbnail" alt="thumbnail"/>							</div><div class="intro"><h3 class="h5">Épigénétique et<br />
282régulation génétique</h3>
283</div>					</div>			</div>			<div class="row">					<div class="item col-sm-24">							<div class="itemImage">								<img src="https://cdn.ca.yapla.com/company/CPY7p4CO2sE1afW3ImwiLyBND/website/article/70176/images/icon_immunologie-2x-1629745734.jpg" class="e-thumbnail" alt="thumbnail"/>							</div><div class="intro"><h3 class="h5">Immunologie et<br />
284Microbiologie</h3>
285</div>					</div>			</div>			<div class="row">					<div class="item col-sm-24">							<div class="itemImage">								<img src="https://cdn.ca.yapla.com/company/CPY7p4CO2sE1afW3ImwiLyBND/website/article/70177/images/icon_chimie-medicale-2x-1629745859.jpg" class="e-thumbnail" alt="thumbnail"/>							</div><div class="intro"><h3 class="h5">Chimie<br />
286médicale</h3>
287</div>					</div>			</div>			<div class="row">					<div class="item col-sm-24">							<div class="itemImage">								<img src="https://cdn.ca.yapla.com/company/CPY7p4CO2sE1afW3ImwiLyBND/website/article/70178/images/icon_metabolisme-2x-1629745954.jpg" class="e-thumbnail" alt="thumbnail"/>							</div><div class="intro"><h3 class="h5">Métabolisme et<br />
288biologie des lipides</h3>
289</div>					</div>			</div>			<div class="row">					<div class="item col-sm-24">							<div class="itemImage">								<img src="https://cdn.ca.yapla.com/company/CPY7p4CO2sE1afW3ImwiLyBND/website/article/70179/images/icon_proteines-2x-1629746062.jpg" class="e-thumbnail" alt="thumbnail"/>							</div><div class="intro"><h3 class="h5">Protéines et<br />
290biologie de l&#39;ARN</h3>
291</div>					</div>			</div>			<div class="row">					<div class="item col-sm-24">							<div class="itemImage">								<img src="https://cdn.ca.yapla.com/company/CPY7p4CO2sE1afW3ImwiLyBND/website/article/70180/images/icon_neuroscience-2x-1629746163.jpg" class="e-thumbnail" alt="thumbnail"/>							</div><div class="intro"><h3 class="h5">Neurosciencee</h3>
292</div>					</div>			</div>	</div></div></div></div></div><div class="line site_line__item section-imgtext-subject mobile-imgmarginbottom row-lined-absolute xsmallpadding blue" data-line-id="89478"><div class="container"><div class="row-fluid row"><div id="mvW0KgA24GogbkwMJxo1WJPa"  class=" col-sm-12 zone-50 zone-image" data-zone-alias="Zone 752689" data-zone-id="752692"><div class="content" align="left"><img src="https://cdn.ca.yapla.com/company/CPY7p4CO2sE1afW3ImwiLyBND/8577/49221/images/ircm-recherches-centre-maladies-rares-genetiques-1778765357.jpg" alt="" width=""></div></div><div id="9e2Sq9R9yNRkm5JEqPwwiHVn"  class=" col-sm-12 zone-50 zone-html" data-zone-alias="Zone 752754" data-zone-id="752757"><div class="content"><h3>Centre de recherche sur les maladies rares et génétiques chez l&rsquo;adulte</h3>
293
294<p><u>Chercheurs : Alexis Baas, Hugo Chapdelaine et Guillaume Bollée</u></p>
295
296<p>Seul endroit au Canada où l&#39;accent est mis sur la transition des soins pédiatriques aux soins adultes pour les patients atteints de maladies rares, ce centre répond à un besoin pressant : on compte plus de 500 000 personnes touchées au Québec et plus de 2,5 millions au Canada. Alliant soins médicaux et recherche biomédicale sous un même toit, il se spécialise dans trois domaines. La clinique de dyslipidémies génétiques évalue et traite les patients présentant des taux élevés de cholestérol et/ou de triglycérides afin de prévenir les complications cardiovasculaires et pancréatiques. La clinique d&#39;immunologie primaire prend en charge les patients dont le système immunitaire est défaillant, causant des infections fréquentes, sévères ou atypiques, ainsi que des manifestations auto-immunes. La clinique des maladies rénales rares évalue et traite des pathologies telles que la polykystose rénale, la cystinose et les glomérulopathies héréditaires. Dans chacun de ces domaines, l&#39;
296équipe clinique collabore étroitement avec les chercheurs de l&#39;IRCM pour améliorer le diagnostic, le suivi et les traitements offerts aux patients.</p>
297
298<p><a class="btn btn-secondary" href="https://www.ircm.qc.ca/fr/centre-de-recherche-sur-les-maladies">Découvrez&nbsp;ce centre</a></p>
299</div></div></div></div></div><div class="line site_line__item smallpadding section-discover-searchers verticalalign center" style="background-color:#F4F4F5" data-line-id="90265"><div class="container"><div class="row-fluid row"><div id="deKCnbnXj1R4eLEg0S8ywCKp"  class=" col-sm-12 zone-50 zone-html" data-zone-alias="Zone 772679" data-zone-id="772682"><div class="content"><h2>Nos chercheurs et chercheuses</h2>
300
301<p>Découvrez les chercheurs et les chercheuses de l&rsquo;IRCM et apprenez en plus sur leurs travaux.</p>
302
303<p><a class="btn btn-secondary" href="/fr/chercheurs">Découvrez nos chercheurs et chercheuses</a></p>
304</div></div><div id="77wNhBw4D5HzGnoY9fakNVYH"  class=" col-sm-12 zone-50 zone-image" data-zone-alias="Zone 772747" data-zone-id="772750"><div class="content" align="left"><img src="https://cdn.ca.yapla.com/company/CPY7p4CO2sE1afW3ImwiLyBND/8577/49221/images/mosaique_v2-2x-1631908249.png" alt="" width=""></div></div></div></div></div><div class="line site_line__item line-secondary" style="background-color:#122CBA" data-line-id="88767"><div class="container"><div class="row-fluid row"><div id="0e3jFbwX2QGziVhuDMcyoXnH"  class=" col-sm-12 zone-50 zone-html" data-zone-alias="SecondaryArea1" data-zone-id="749766"><div class="content"><img alt="" src="https://cdn.ca.yapla.com/company/CPY7p4CO2sE1afW3ImwiLyBND/asset/images/Site%20Web%202021/Logos/Logo_IRCM_Footer_FR.svg" style="width: 361px; height: 83px;" /></div></div><div id="tVR0mPFdwb3PqfzHzBvmuT42"  class=" col-sm-12 zone-50 zone-html" data-zone-alias="SecondaryArea2" data-zone-id="749767"><div class="content"><div class="row">
305<div class="col-md-12">
306<p>Infolettre</p>
307
308<h4>Découvertes,<br />
309évènements et plus</h4>
310
311<p><a class="btn btn-primary" href="/fr/infolettre">Je m&rsquo;inscris</a></p>
312</div>
313
314<div class="col-md-12">
315<p>Fondation de l&#39;IRCM</p>
316
317<h4>Faites partie de la<br />
318solution</h4>
319
320<p><a class="btn btn-primary" href="https://fondation-de-lircm.s1.yapla.com/fr/soutenir-la-campagne" target="_blank">Soutenir la recherche</a></p>
321</div>
322</div>
323</div></div></div></div></div><div class="line site_line__item line-footer" style="background-color:#122CBA" data-line-id="88768"><div class="container"><div class="row-fluid row"><div id="PNhtzEcZEnRBUhHmsbRgx8yj"  class=" col-sm-24 zone-100 zone-html" data-zone-alias="Footer" data-zone-id="749772"><div class="content"><div class="row">
324<div class="col-lg-6 col-md-12 col-sm-24">
325<p>110, avenue des Pins Ouest,<br />
326Montréal (Québec) Canada<br />
327H2W 1R7<br />
328514 987-5500</p>
329
330<ul class="social-icons">
331	<li><a href="https://www.instagram.com/ircm_mtl/" target="_blank"><img alt="" src="https://cdn.ca.yapla.com/company/CPY7p4CO2sE1afW3ImwiLyBND/asset/images/Site%20Web%202021/Icons/Instagram_UP%402x.png" style="width:17px;" /></a></li>
332	<li><a href="https://www.facebook.com/IRCM.Montreal/" target="_blank"><img alt="" src="https://cdn.ca.yapla.com/company/CPY7p4CO2sE1afW3ImwiLyBND/asset/images/Site%20Web%202021/Icons/Facebook_UP%402x.png" style="width: 9px; " /></a></li>
333	<li><a href="https://www.youtube.com/channel/UCd5RrcOYlEHr3WJZtZX-x3A" target="_blank"><img alt="" src="https://cdn.ca.yapla.com/company/CPY7p4CO2sE1afW3ImwiLyBND/asset/images/Site%20Web%202021/Icons/Youtube_UP%402x.png" style="width: 18px;" /></a></li>
334	<li><a href="https://bsky.app/profile/ircm.bsky.social" target="_blank"><img alt="" src="https://cdn.ca.yapla.com/company/CPY7p4CO2sE1afW3ImwiLyBND/asset/images/Site%20Web%202021/Icons/bluesky-blanc.svg" style="height: 20px; width: 20px;" /></a></li>
335	<li><a href="https://www.linkedin.com/company/ircm/" target="_blank"><img alt="" src="https://cdn.ca.yapla.com/company/CPY7p4CO2sE1afW3ImwiLyBND/asset/images/Site%20Web%202021/Icons/Linkedin_UP%402x.png" style="width: 16px; " /></a></li>
336</ul>
337
338<p id="partenaires">Partenaires&nbsp;</p>
339
340<p>&nbsp;<a href="https://www.umontreal.ca/" target="_blank"><img alt="" src="https://cdn.ca.yapla.com/company/CPY7p4CO2sE1afW3ImwiLyBND/asset/images/Site%20Web%202021/Logos/udem-logo%402x.png" style="width: 180px; height: 69px;" /></a></p>
341</div>
342
343<div class="col-lg-6 col-md-12 col-sm-24">
344<h5><strong>Recherches</strong></h5>
345
346<ul>
347	<li><a href="/fr/nos-recherches">Nos recherches</a></li>
348	<li><a href="/fr/chercheurs">Chercheurs</a></li>
349	<li><a href="/fr/valorisation-de-la-recherche">Valorisation de la recherche</a></li>
350	<li><a href="/fr/integrite-scientifique">Intégrité scientifique</a></li>
351</ul>
352
353<h5><strong>Services</strong></h5>
354
355<ul>
356	<li><a href="/fr/nos-plateformes">Nos plateformes</a></li>
357</ul>
358
359<h5><b>Vie étudiante</b></h5>
360
361<ul>
362	<li><a href="/fr/lexperience-ircm">L&rsquo;expérience IRCM</a></li>
363	<li><a href="/fr/bourses-ircm-pour-jeunes-chercheurs">Bourses IRCM</a></li>
364</ul>
365
366<h5><b>Admission</b></h5>
367
368<ul>
369	<li><a href="/fr/m-sc-medecine-cellulaire-et-moleculaire">Études supérieures à l&#39;IRCM</a></li>
370	<li><a href="/fr/stages-au-premier-cycle">Stages au premier cycle</a></li>
371	<li><a href="https://www.ircm.qc.ca/fr/formation-post-doctorale">Formation&nbsp;postdoctorale</a></li>
372	<li><a href="/fr/opportunites-disponibles">Opportunités disponibles</a></li>
373	<li><a href="/fr/etudiants-etrangers">Étudiants internationaux</a></li>
374</ul>
375</div>
376
377<div class="col-lg-6 col-md-12 col-sm-24">
378<h5><strong>L&#39;Institut</strong></h5>
379
380<ul>
381	<li><a href="/fr/mot-du-president">Mot du Président</a></li>
382	<li><a href="/fr/notre-impact">Notre impact</a></li>
383	<li><a href="/fr/notre-heritage">Notre héritage</a></li>
384	<li><a href="/fr/gouvernance">Gouvernance</a></li>
385	<li><a href="/fr/comite-de-direction">Comité de direction</a></li>
386	<li><a href="/fr/prix-de-lircm">Prix de l&rsquo;IRCM</a></li>
387	<li><a href="/fr/rapports-annuels">Rapports annuels</a></li>
388</ul>
389
390<h5><a href="/fr/evenements"><strong>Évènements</strong></a></h5>
391
392<h5><strong>La clinique</strong></h5>
393
394<ul>
395	<li><a href="/fr/la-clinique-de-lircm">La clinique de l&#39;IRCM</a></li>
396	<li><a href="/fr/centre-de-recherche-sur-les-maladies">Centre de recherche sur les maladies rares<br />
397	et génétiques chez l&#39;adulte</a></li>
398	<li><a href="/fr/clinique-de-recherche-post-covid">Clinique de recherche&nbsp;post-Covid-19</a></li>
399	<li><a href="/fr/ressources-en-sante">Ressources en santé</a></li>
400	<li><a href="/fr/ressources-pour-professionnels-de-la-sante">Ressources pour professionnels de la santé</a></li>
401	<li><a href="/fr/prendre-rendez-vous">Prendre rendez-vous</a></li>
402	<li><a href="/fr/contacter-la-clinique">Joindre la clinique</a></li>
403	<li><a href="/fr/participer-a-une-etude-clinique">Participer à une étude clinique</a></li>
404</ul>
405</div>
406
407<div class="col-lg-6 col-md-12 col-sm-24">
408<h5><strong>Carrières</strong></h5>
409
410<ul>
411	<li><a href="/fr/la-vie-a-lircm">
411La vie à l&rsquo;IRCM</a></li>
412	<li><a href="/fr/opportunites">Opportunités</a></li>
413	<li><a href="/fr/candidatures-spontanees">Candidatures spontanées</a></li>
414</ul>
415
416<h5><a href="/fr/nous-joindre"><b>Nous joindre</b></a></h5>
417
418<h5><a href="/fr/actualites"><strong>Actualités</strong></a></h5>
419
420<h5><a href="/fr/salle-de-presse"><strong>Salle de presse</strong></a></h5>
421</div>
422</div>
423</div></div></div></div></div><div class="line site_line__item line-copyright" style="background-color:#122CBA" data-line-id="89497"><div class="container"><div class="row-fluid row"><div id="x258otSdAAEW7rxiW9iXyK9I"  class=" col-sm-24 zone-100 zone-html" data-zone-alias="Crédits" data-zone-id="753301"><div class="content"><p>&copy; Institut de recherches cliniques de Montréal, <span id="copyright-year">Année</span>.Tous droits réservés. | <a href="/fr/politique-sur-la-protection-des-renseignements-personnels">Politique sur la protection des renseignements personnels</a><a href="/fr/politique-sur-la-protection-des-renseignements-personnels">&nbsp;</a> |&nbsp;<a href="/fr/conditions-d-utilisation">Conditions d&#39;utilisation</a>&nbsp;| &nbsp;Réalisation Agence <a href="https://www.riposte.ca/fr/" target="_blank">Riposte</a></p>
424</div></div></div></div></div><div class="line site_line__item sidebutton" data-line-id="90591"><div class="container"><div class="row-fluid row"><div id="b2KuZpScj0LZLC9S8UMp8i2O"  class=" col-sm-24 zone-100 zone-html" data-zone-alias="Sticky Side Button" data-zone-id="780052"><div class="content"><a class="btn btn-primary" href="https://fondation-de-lircm.s1.yapla.com/fr/faire-un-don-en-ligne" target="_blank"><span>Soutenir la Fondation</span></a></div></div></div></div></div><div class="line site_line__item popup-section" data-line-id="129905"><div class="container"><div class="row-fluid row"><div id="G6QMEtrIqRosG93Z55NrpYHV"  class=" col-sm-24 zone-100 zone-html" data-zone-alias="Zone 1904581" data-zone-id="1904584"><div class="content"><div aria-hidden="false" class="modal fade in" id="popup" role="dialog">
425<div class="modal-dialog">
426<div class="modal-content">
427<div class="modal-header"><button class="close" data-dismiss="modal" type="button">&times;</button></div>
428
429<div class="modal-body">
430<h2>Vous êtes avide<br />
431de découvertes?<br />
432<span>Notre infolettre&nbsp;<br />
433est pour vous!</span></h2>
434<a class="btn btn-secondary" href="/fr/infolettre">S&#39;abonner</a></div>
435</div>
436</div>
437</div>
438</div></div></div></div></div>
439<div class="poweredBy-wrapper">
440    <div class="container poweredBy-container">
441        <div class="row-fluid">
442            <div class="col-sm-24 poweredBy">
443                <a class="poweredBy-link"
444                   href="https://www.yapla.com/fr-ca/?utm_source=yapla-app&utm_medium=referral&utm_campaign=customer-footer"
445                   target="_blank">
446                    <span style="display: inline-block;margin-right: 1px;">Propulsé par </span>
447                    <img src="/images/yapla-logo-grey.svg"
448                         alt="Yapla Logo" height="16"
449                         style="height:16px !important;vertical-align: sub;margin-bottom: 1px;">
450                </a>
451            </div>
452        </div>
453    </div>
454</div>
454<script>memboGo.core.tracking([{"app_scope":"front","organisation_plan":"Premium"}]);</script>
454		</div>
455	</div>
456		
456<script>//document.write('<link rel="stylesheet" href="http://localhost/ircm/public/main.css?'+Date.now()+'">');
457
458/*****************************************************************************/
459/* ADD OPENED CLASS FOR  OPEN MENU */
460/*****************************************************************************/
461let menu_toggle_open = $(".line-head .menu-hamburger");
462menu_toggle_open.on("click", function(e) {
463    // e.preventDefault(); // Uncomment if you need to prevent the default action.
464    $("body").addClass("overflowhidden");
465    $(".line-head").addClass("opened");
466    $(".line-menu-container").addClass("opened");
467    $(".line-head .menu-hamburger").css("display", "none");
468    $(".line-head .header-ext-language").css("display", "none");
469});
470
471let menu_toggle_close = $(".line-menu-container .menu-hamburger");
472menu_toggle_close.on("click", function(e) {
473    $("body").removeClass("overflowhidden");
474    $(".line-head").removeClass("opened");
475    $(".line-menu-container").removeClass("opened");
476    $(".line-head .menu-hamburger").css("display", "flex");
477    $(".line-head .header-ext-language").css("display", "flex");
478});
479
480
481/*****************************************************************************/
482/* REMOVE SIDE BUTTON WHEN MENU OPENED */
483/*****************************************************************************/
484document.addEventListener('DOMContentLoaded', function() {
485    // Select the elements
486    var lineHead = document.querySelector('.line-head');
487    var lineSideButton = document.querySelector('.sidebutton');
488
489    // Function to check the class and apply styles
490    function checkAndApplyStyles() {
491        if (lineHead.classList.contains('opened')) {
492            lineSideButton.style.display = 'none';
493        } else {
494            lineSideButton.style.display = '';
495        }
496    }
497
498    // Initial check on page load
499    checkAndApplyStyles();
500
501    // Add an event listener for class changes
502    var observer = new MutationObserver(checkAndApplyStyles);
503    observer.observe(lineHead, { attributes: true, attributeFilter: ['class'] });
504});
505
506
507
508/*****************************************************************************/
509/* RESSOURCES EN SANTE: FIX BANNER SIZE ON VUE DETAILS  */
510/*****************************************************************************/
511document.addEventListener('DOMContentLoaded', function(){
512   if (document.body.classList.contains('res')) {
513       const detailVue = document.querySelector('.search-object-detail-bloc');
514       const banner = document.querySelector('.line-banner.reslist');
515
516       if (detailVue) {
517         banner.classList.remove('long');
518         banner.classList.add('court');
519       }
520       
521       document.querySelectorAll('.section-title').forEach(function(title) {
522           const nextElement = title.nextElementSibling;
523    
524           // Condition 1: Hide if the next element is neither a ul nor a p.res-item
525           if (!nextElement || nextElement.innerHTML.trim() === '' || (!nextElement.matches('ul') && !nextElement.matches('p.res-item'))) {
526               title.style.display = 'none';
527           }
528           // Condition 2: Hide if the next element is p.res-item, but the <a> inside has empty innerHTML
529           else if (nextElement.matches('p.res-item')) {
530               const linkElement = nextElement.querySelector('a');
531               if (linkElement && linkElement.innerHTML.trim() === '') {
532                   title.style.display = 'none';
533               } else {
534                   title.style.display = 'block'; // Show if <a> has content
535               }
536           } else {
537               title.style.display = 'block'; // Show if next element is ul
538           }
539       });
540
541       document.querySelectorAll('p.res-item').forEach(function(item) {
542           const link = item.querySelector('a');
543           if (link && (!link.hasAttribute('href') || link.getAttribute('href').trim() === '')) {
544               item.style.display = 'none';
545           }
546       });
547
548       // Add your 'p.type' check inside the larger block here
549       var typeElement = document.querySelector('p.type');
550
551       // Check if the innerHTML matches the given text
552       if (typeElement && (typeElement.textContent.trim() === "Ressources externes" || typeElement.textContent.trim() === "External resources")) {
553           // Select all elements with the class 'external'
554           var externalElements = document.querySelectorAll('.external');
555
556           // Loop through each element and hide it
557           externalElements.forEach(function(element) {
558               element.style.display = 'none';
559           });
560       }
561   } 
562});
563
564
565
566/*****************************************************************************/
567/* CHANGE INTRANET BANNER COLOR */
568/*****************************************************************************/
569document.addEventListener('DOMContentLoaded', function() {
570    // Check if the body has the class 'member--isConnected'
571    if (document.body.classList.contains('member--isConnected')) {
572        // Check if the URL contains '/fr/intranet' or '/en/intranet'
573        var url = window.location.href;
574        if (url.includes('/fr/intranet') || url.includes('/en/intranet')) {
575            // Apply the 'coffee' class to the div with class 'line-head'
576            var lineHead = document.querySelector('.line-head');
577            if (lineHead) {
578                lineHead.classList.add('coffee');
579            }
580        }
581    }
582});
583
584
585
586/*****************************************************************************/
587/* RESSOURCES EN SANTE: CHANGER LE BANNER POUR LE SEARCH BAR  */
588/*****************************************************************************/
589document.addEventListener('DOMContentLoaded', function() {
590    if (document.body.classList.contains('res')) {
591        const simpleForm = document.getElementById("module_directory_global_search");
592        const advancedForm = document.getElementById("module_directory_member");
593        const advancedButton = document.getElementById('search_advanced');
594        const simpleButton = document.getElementById('search_simple');
595        const searchBloc = document.querySelector('.search-object-bloc');
596        const elements = document.querySelectorAll('.line-banner.reslist, .ressources-en-sante');
597
598        if (searchBloc) {
599            elements.forEach(function(element) {
600                element.classList.add('long');
601            });  
602        } else {
603            elements.forEach(function(element) {
604                element.classList.remove('long');
605            });  
606        }
607
608
609        advancedButton.addEventListener('click', function() {
610            elements.forEach(function(element) {
611                element.classList.add('long');
612            });
613        });
614
615        simpleButton.addEventListener('click', function() {
616            elements.forEach(function(element) {
617                element.classList.remove('long');
618            });
619        });
620    }
621});
622
623
624
625/*****************************************************************************/
626/* RESSOURCES EN SANTE: REMPLACER CAT PAR PASTILLES */
627/*****************************************************************************/
628document.addEventListener('DOMContentLoaded', function() {
629  const catImages = {
630    'Activité physique': 'https://cdn.ca.yapla.com/company/CPY7p4CO2sE1afW3ImwiLyBND/asset/images/Site%20Web%202021/_La%20Clinique/_ressources-en-sante/act-physiQUE.png',
631    'Alimentation': 'https://cdn.ca.yapla.com/company/CPY7p4CO2sE1afW3ImwiLyBND/asset/images/Site%20Web%202021/_La%20Clinique/_ressources-en-sante/alimentatino.png',
632    'COVID longue': 'https://cdn.ca.yapla.com/company/CPY7p4CO2sE1afW3ImwiLyBND/asset/images/Site%20Web%202021/_La%20Clinique/_ressources-en-sante/covid-longue.png',
633    'Diabète': 'https://cdn.ca.yapla.com/company/CPY7p4CO2sE1afW3ImwiLyBND/asset/images/Site%20Web%202021/_La%20Clinique/_ressources-en-sante/diabete.png',
634    'Hypertension': 'https://cdn.ca.yapla.com/company/CPY7p4CO2sE1afW3ImwiLyBND/asset/images/Site%20Web%202021/_La%20Clinique/_ressources-en-sante/hypertension.png',
635    'Immunologie': 'https://cdn.ca.yapla.com/company/CPY7p4CO2sE1afW3ImwiLyBND/asset/images/Site%20Web%202021/_La%20Clinique/_ressources-en-sante/immunologie.png',
636    'Maladies rénales rares': 'https://cdn.ca.yapla.com/company/CPY7p4CO2sE1afW3ImwiLyBND/asset/images/Site%20Web%202021/_La%20Clinique/_ressources-en-sante/mal-renales.png',
637    'Médication': 'https://cdn.ca.yapla.com/company/CPY7p4CO2sE1afW3ImwiLyBND/asset/images/Site%20Web%202021/_La%20Clinique/_ressources-en-sante/medication.png',
638    'Pour professionnels de la santé': 'https://cdn.ca.yapla.com/company/CPY7p4CO2sE1afW3ImwiLyBND/asset/images/Site%20Web%202021/_La%20Clinique/_ressources-en-sante/OPTION1.png',
639    'Prévention cardiovasculaire et dyslipidémie': 'https://cdn.ca.yapla.com/company/CPY7p4CO2sE1afW3ImwiLyBND/asset/images/Site%20Web%202021/_La%20Clinique/_ressources-en-sante/prev-cardio.png',
640    'Ressources et documentation générales': 'https://cdn.ca.yapla.com/company/CPY7p4CO2sE1afW3ImwiLyBND/asset/images/Site%20Web%202021/_La%20Clinique/_ressources-en-sante/ressources.png',
641    'Santé psychologique': 'https://cdn.ca.yapla.com/company/CPY7p4CO2sE1afW3ImwiLyBND/asset/images/Site%20Web%202021/_La%20Clinique/_ressources-en-sante/sante-psycho.png',
642    'Tabagisme': 'https://cdn.ca.yapla.com/company/CPY7p4CO2sE1afW3ImwiLyBND/asset/images/Site%20Web%202021/_La%20Clinique/_ressources-en-sante/tabagisme.png'
643  };
644
645  function updatecatImages() {
646    const listItems = document.querySelectorAll('p.res-cat');
647    listItems.forEach(item => {
648      const cat = item.textContent.trim();
649      if (cat in catImages) {
650        const img = document.createElement('img');
651        img.src = catImages[cat];
652        img.alt = cat;
653        item.textContent = ''; // Clear the existing text
654        item.appendChild(img); // Add the image to the list item
655      }
656    });
657  }
658
659  // Initial update
660  updatecatImages();
661  
662  // Create a mutation observer to watch for changes in the DOM
663  const observer = new MutationObserver(function(mutations) {
664    mutations.forEach(function(mutation) {
665      if (mutation.type === 'childList' || mutation.type === 'subtree') {
666        updatecatImages();
667      }
668    });
669  });
670
671  // Start observing the body for changes
672  observer.observe(document.body, { childList: true, subtree: true });
673});
674
675
676/*****************************************************************************/
677/* COOKIE QUI GÈRE LE POP-UP (24h) */
678/*****************************************************************************/
679const script = document.createElement("script");
680script.src = "https://cdn.jsdelivr.net/npm/js-cookie@2/src/js.cookie.min.js";
681script.addEventListener('load', function() {
682   if (!Cookies.get('info-modal')) {
683     $("#popup").modal("show");
684   }
685   $('#popup').on('hidden.bs.modal', function (e) {
686      Cookies.set('info-modal', true, {expires: 30});
687   });
688   
689   // Add click event listener to "s'abonner" button
690   document.querySelector('#popup .btn-secondary').addEventListener('click', function() {
691      $("#popup").modal("hide");
692   });
693});
694document.head.appendChild(script);
695
696/*****************************************************************************/
697/* EDIT CONTENT OF REVUE DE PRESSE ON PAGE CHERCHEUR */
698/*****************************************************************************/
699document.addEventListener("DOMContentLoaded", function() {
700    const titreDeLarticle = document.querySelectorAll('.object-dans_les_medias_production-field-titre_de_larticle_ou_de_lentrevue');
701    const nomDuMedia = document.querySelectorAll('.object-dans_les_medias_production-field-nom_du_media');
702    
703    titreDeLarticle.forEach(span => {
704        span.innerHTML += " - ";
705    });
706    
707    nomDuMedia.forEach(span => {
708        span.innerHTML += " - ";
709    });
710});
711
712////////////////HIDEN BANNER ON EVENTS DETAIL///////////////////
713document.addEventListener("DOMContentLoaded", function() {
714    if (document.querySelector('.event-detail')) {
715        // Hide the div with class 'line-banner'
716        var lineBanner = document.querySelector('.line-banner');
717        if (lineBanner) {
718            lineBanner.style.display = 'none';
719        }
720
721        // Hide the line-selector button
722        var lineSelectorButton = document.querySelector('.line-selector-button');
723        if (lineSelectorButton) {
724            lineSelectorButton.style.display = 'none';
725        }
726
727        // Hide the h2 inside .zone-event
728        var zoneEventH2 = document.querySelector('.zone-event > h2');
729        if (zoneEventH2) {
730            zoneEventH2.style.display = 'none';
731        }
732    }
733});
734
735document.addEventListener("DOMContentLoaded", function() {
736    if (document.querySelector('.events-mosaic')) {
737        // Hide the line retour-list-event
738        var lineRetour = document.querySelector('.retour-list-event');
739        if (lineRetour) {
740            lineRetour.style.display = 'none';
741        }
742    }
743});
744
745
746
747
748
749/////RAPPORTS////////////
750if($(".rapport-repertory").length) {
751const script = document.createElement("script");
752script.src = "https://cdnjs.cloudflare.com/ajax/libs/jspdf/0.9.0rc1/jspdf.min.js";
753script.addEventListener('load', function() {
754   var script2 = document.createElement("script");
755   script2.src = "https://html2canvas.hertzen.com/dist/html2canvas.js";
756   document.head.appendChild(script2);
757});
758document.head.appendChild(script);
759
760function CreatePDFfromHTML(reportName, firstName, lastName) {
761   html2canvas($(".rapport-export-details")[0], { useCORS: true, allowTaint: true, scrollY: 0 }).then((canvas) => {
762      const image = { type: 'jpeg', quality: 0.98 };
763      const margin = [0.5, 0.5];
764      const filename = 'rapport-academique.pdf';
765      var imgWidth = 8.5;
766      var pageHeight = 11;
767      var innerPageWidth = imgWidth - margin[0] * 2;
768      var innerPageHeight = pageHeight - margin[1] * 2;
769      // Calculate the number of pages.
770      var pxFullHeight = canvas.height;
771      var pxPageHeight = Math.floor(canvas.width * (pageHeight / imgWidth));
772      var nPages = Math.ceil(pxFullHeight / pxPageHeight);
773      // Define pageHeight separately so it can be trimmed on the final page.
774      var pageHeight = innerPageHeight;
775      // Create a one-page canvas to split up the full image.
776      var pageCanvas = document.createElement('canvas');
777      var pageCtx = pageCanvas.getContext('2d');
778      pageCanvas.width = canvas.width;
779      pageCanvas.height = pxPageHeight;
780      // Initialize the PDF.
781      var pdf = new jsPDF('p', 'in', [8.5, 11]);
782
783      for (var page = 0; page < nPages; page++) {
784         // Trim the final page to reduce file size.
785         if (page === nPages - 1 && pxFullHeight % pxPageHeight !== 0) {
786            pageCanvas.height = pxFullHeight % pxPageHeight;
787            pageHeight = (pageCanvas.height * innerPageWidth) / pageCanvas.width;
788         }
789
790         // Display the page.
791         var w = pageCanvas.width;
792         var h = pageCanvas.height;
793         pageCtx.fillStyle = 'white';
794         pageCtx.fillRect(0, 0, w, h);
795         pageCtx.drawImage(canvas, 0, page * pxPageHeight, w, h, 0, 0, w, h);
796
797         // Add the page to the PDF.
798         if (page > 0) pdf.addPage();
799         var imgData = pageCanvas.toDataURL('image/' + image.type, image.quality);
800         pdf.addImage(imgData, image.type, margin[0], margin[1], innerPageWidth, pageHeight);
801      }
802      pdf.save(reportName+(firstName ? '-'+firstName : '')+(lastName ? '-'+lastName : ''));
803   });
804}
805}
806
807
808// Menu
809$(".zone-menu .navbar .navbar-toggle").click(function() {
810	$("body").toggleClass("overflowhidden");
811	$(".line-header").toggleClass("topmenuopened");
812        $(".sticked").toggleClass("topmenuopened");
813        $(".navbar").toggleClass("active");
814        $(".navbar-header").toggleClass("active");
815        $(".sidebutton").toggleClass("remove");
816});
817function fixme(){
818	var fixmeTop = 150;
819	$(window).scroll(function(){
820		var currentScroll = $(window).scrollTop();
821		if(currentScroll >= fixmeTop){
822			$('.line-menu').addClass("sticked");
823			$('.line-header').addClass("sticked");
824		} else {
825			$('.line-menu').removeClass("sticked");
826			$('.line-header').removeClass("sticked");
827		}
828	});
829}
830//fixme();
831
832// Ancres
833$('.anchor-link').click(function(e){
834  e.preventDefault();
835  var target = $($(this).attr('href'));
836  if(target.length){
837    var scrollTo = target.offset().top;
838    $('body, html').animate({scrollTop: scrollTo - 150 +'px'}, 800);
839  }
840});
841
842/*****************************************************************************/
843/*  COPYRIGHT YEAR AUTO UPDATE  */
844/* <span id="copyright-year">Année</span> */
845/*****************************************************************************/
846document.getElementById("copyright-year").innerHTML = new Date().getFullYear();
847
848
849// Accordéon en tableau
850$("table.accordeon tbody tr:first-child").click(function () {
851	var target = $(this);
852	var open =  target.closest(".accordeon").hasClass('active');
853	
854	$(".accordeon").removeClass("active");
855	
856	if (!open) {
857		var scrollTo = target.offset().top;
858		target.closest(".accordeon").addClass("active");
859		$('body, html').animate({scrollTop: scrollTo-120+'px'}, 800);
860	}
861});
862
863//////Reload page at new articles: participer à une étude//////
864function reloadtocat() {
865  if ($('.section-ressources').length > 0) {
866     $('.news-category').click(function(){
867    var sectionHeight = $('.section-ressources').height();
868    $(window).scrollTop(sectionHeight);
869    location.reload();
870  });
871  }
872}
873
874////////////////////////////////////////////////////////////////////
875///////////////DANS LES MEDIAS:CHANGER TITRE//////
876/////////////////////////////////////////////////////////////////////////
877document.addEventListener("DOMContentLoaded", function() {
878    var bodyClasses = document.body.classList;
879    var label = document.querySelector('label.control-label[for="2058246"]');
880
881    if (bodyClasses.contains('lang-fr')) {
882        label.innerHTML = "Recherche par titre";
883    } else if (bodyClasses.contains('lang-en')) {
884        label.innerHTML = "Search by title";
885    }
886});
887
888
889////////////////////////////////////////////////////////////////////
890///////////////DANS LES MEDIAS:CACHER CHERCHEUR SI PAS DE CHERCHEUR//////
891/////////////////////////////////////////////////////////////////////////
892
893// Function to process the content
894function processContent() {
895    const mediaElements = document.querySelectorAll('p.media-element');
896    mediaElements.forEach(mediaElement => {
897        let nextSibling = mediaElement.nextElementSibling;
898        if (nextSibling && nextSibling.tagName.toLowerCase() === 'ul' && nextSibling.classList.contains('object-assigner_cette_publication')) {
899            return;
900        } else {
901            const chercheurSpan = mediaElement.querySelector('span.chercheur');
902            if (chercheurSpan) {
903                chercheurSpan.style.display = 'none';
904            }
905        }
906    });
907}
908
909// Create a MutationObserver instance
910const observer = new MutationObserver((mutationsList, observer) => {
911    // Call processContent() whenever mutations occur in the DOM
912    processContent();
913});
914
915// Start observing changes to the DOM
916observer.observe(document.body, { subtree: true, childList: true });
917
918
919
920
921
922
923// Change le bouton English / Francais pour EN / FR
924function changeLanguageLabel() {
925	var lang_switch = document.querySelector("a.switch-language");
926	var lang_list = { "fr" : "EN", "en" : "FR" };
927	if(lang_switch) {
928		if(document.body.classList.contains("lang-fr")) {
929			lang_switch.text = lang_list.fr;
930		} else if(document.body.classList.contains("lang-en")) {
931			lang_switch.text = lang_list.en;
932		}
933	}
934}
935
936// Gestion de liens dynamique sur bouton langue en mobile
937function changeLanguage() {
938  var LanguageLink = $('a.switch-language ').attr('href');
939  $('li[rel="data-menu-50224"]  > a').attr('href', LanguageLink);
940}
941
942
943//Remove Covid Alert on Click
944function removeAlert(){
945  $("#close-alert").click(function(){
946    $(".banner-alert, .section-alert, .banner-message").addClass( "inactive" );
947  })
948}
949
950
951
952////Make intranet banner div clickable
953  document.addEventListener("DOMContentLoaded", function() {
954    const bannerDiv = document.querySelector(".banner-links-section");
955    const linkTo = document.querySelector(".linkto");
956
957    bannerDiv.addEventListener("click", function() {
958      linkTo.click();
959    });
960  });
961
962// Module article en vedette agit en accordéon
963$(".moduleaccordion .row > div > h3").click(function () {
964	var target = $(this);
965	target.next(".newsList").slideToggle(500);
966        $(".moduleaccordion").toggleClass("active");
967});
968
969//Activer les sous-pages de Gouvernance
970$(".line-menu-tab a").each(function() {   
971    if (this.href == window.location.href) {
972        $(this).addClass("active");
973    }
974});
975
976//Sticky Menu on scroll up
977$(function(){
978    var lastScrollTop = 0, delta = 5;
979    $(window).scroll(function(event){
980      	var st = $(this).scrollTop();
981
982        if(Math.abs(lastScrollTop - st) <= delta)
983        	return;
984       	if (st > lastScrollTop || st <= 100){
985        	$('.line-menu').removeClass('sticked');
986       	} else {
987        	$('.line-menu').addClass('sticked');
988       	}
989       	lastScrollTop = st;
990    });
991});
992
993$( document ).ready(function() {
994	changeLanguageLabel();
995        changeLanguage();
996        removeAlert();
997reloadtocat()
998  
999});
1000
1001//SCROLL DOWN TO MESSAGE ON RELOAD FORM
1002var get = [];
1003location.search.replace('?', '').split('&').forEach(function (val) {
1004    split = val.split("=", 2);
1005    get[split[0]] = split[1];
1006});
1007if(get["step"]=="confirmation"){  //?step=confirmation
1008    var aid = "#confirmation";
1009    $('html,body').animate({scrollTop: $(aid).offset().top - 250}, 1000);
1010}
1011
1012// Code pour ajouter le poste à une soumission de candidature dans carrière, à l'aide d'un champs caché 
1013if ($("#hiddeninput")) {
1014    var identifiant = "Identifiant non disponible";
1015    $(".form-element-hiddeninput").hide();
1016
1017    var jobtitle = $("#news-title-750270, #news-title-750280");
1018    // Dans ce cas-ci extraire la valeur du titre de l'article (premier h1 du contenu de l'article
1019    if (jobtitle.length > 0) {
1020        identifiant = $("#news-title-750270, #news-title-750280").text();
1021    }
1022    // champ identifiant, mettre à jour
1023    $("#hiddeninput").val(identifiant);
1024}
1025
1026function dismissablePopInfo() {
1027   var popInfo = $(".large-alert-content");
1028   var popInfoContent = $(".large-alert-content .content");
1029   var popInfoClose = $(".large-alert-content #close-alert");
1030   if(popInfo.length) {
1031      $(".line-banner .mod-banner__content").css("padding-bottom", "80px");
1032      popInfo.addClass("popMarginTop");
1033   }
1034   popInfoClose.click(function(){
1035      $(".line-banner .mod-banner__content").css("padding-bottom", "0px");
1036      popInfo.hide();
1037  })
1038}
1039dismissablePopInfo();
1040
1041// INTRANET HOMEPAGE NAVIGATION////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
1042$( ".line-intranet-nav .news-intro" ).click(function() {
1043    //alert($(this).find("a").attr("href"));
1044    window.location = $(this).find("a").attr("href");
1045});
1046
1047// EVENTS TITLE CLICKABLE////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
1048$( ".section-events .item h3" ).click(function() {
1049    //alert($(this).find("a").attr("href"));
1050    window.location = $(this).parent().find("a").attr("href");
1051});
1052
1053/////////MAKE INTRANET MENU ITEM UNCLICKABLE (for breadbrumb to work)////////////////
1054$('li[rel="data-menu-49267"] .child-link').removeAttr('href');
1055
1056$('li[rel="data-menu-49267"] a').css('cursor', 'pointer');
1057
1058
1059
1060/*
1061if ($("body").hasClass("lang-fr")) {
1062    window.addEventListener("DOMContentLoaded", () => {
1063        const interval = setInterval(() => {
1064            const element = document.querySelector(".cookie-notice .cn-body > p");
1065            if (!element) return;
1066            element.innerHTML = "<h4>Nous voulons mieux vous servir !</h4><p>Nous utilisons des cookies afin de vous offrir la meilleure expérience possible. N'hésitez pas à consulter notre <a href='/fr/politique-sur-la-protection-des-renseignements-personnels' target='_blank'>politique de confidentialité</a> pour en savoir plus.</p>";
1067            clearInterval(interval); 
1068        }, 500);
1069    });
1070
1071    $(document).on('click', '.cm-bg', function () {
1072        console.log("test");
1073        const element = document.querySelector(".cookie-notice .cn-body > p");
1074        if (!element) return;
1075        element.innerHTML = "<h4>Nous voulons mieux vous servir !</h4><p>Nous utilisons des cookies afin de vous offrir la meilleure expérience possible. N'hésitez pas à consulter notre <a href='/fr/politique-sur-la-protection-des-renseignements-personnels' target='_blank'>politique de confidentialité</a> pour en savoir plus.</p>";
1076    });
1077    
1078    $(document).on('click', '.cn-learn-more', function () {
1079       const element = document.querySelector(".cookie-modal .cm-header > p");
1080       if (!element) return;
1081       element.innerHTML = "<p>Nous utilisons des cookies afin de vous offrir une navigation fluide et agréable. Vous avez la possibilité de refuser, accepter ou gérer ces préférences en cliquant sur l'un des trois boutons ci-dessous.</p> <p>Cliquez sur chaque catégorie de cookies pour activer ou désactiver leur utilisation.</p>";
1082    });
1083}
1084
1085if ($("body").hasClass("lang-en")) {
1086
1087    window.addEventListener("DOMContentLoaded", () => {
1088        const interval = setInterval(() => {
1089            const element = document.querySelector(".cookie-notice .cn-body > p");
1090            if (!element) return;
1091            element.innerHTML = "<h4>We want to serve you better!</h4><p>We use cookies to provide you with the best possible experience. Please feel free to review our <a href='/en/privacy-policy' target='_blank'>privacy policy</a> to learn more.</p>";
1092            clearInterval(interval); 
1093        }, 500);
1094    });
1095
1096    $(document).on('click', '.cm-bg', function () {
1097        const element = document.querySelector(".cookie-notice .cn-body > p");
1098        if (!element) return;
1099        element.innerHTML = "<h4>We want to serve you better!</h4><p>We use cookies to provide you with the best possible experience. Please feel free to review our <a href='/en/privacy-policy' target='_blank'>privacy policy</a> to learn more.</p>";
1100    });
1101    
1102    $(document).on('click', '.cn-learn-more', function () {
1103       const element = document.querySelector(".cookie-modal .cm-header > p");
1104       if (!element) return;
1105       element.innerHTML = "<p>We use cookies to provide you with a smooth and enjoyable browsing experience. You have the option to refuse, accept, or manage these preferences by clicking on one of the three buttons below.</p> <p>Click on each cookie category to enable or disable their use.</p>";
1106    });
1107}
1108*/
1109
1110
1111
1112
1113/*****************************************************************************/
1114/* SALLE DE PRESSE - LIST - ENLEVER TRAIT UNION SI VIDE */
1115/*****************************************************************************/
1116function hideEmptySpan() {
1117    $('p.media-element span').each(function() {
1118        if ($(this).is(':empty') || $(this).html().trim() === "-&nbsp;") {
1119            $(this).remove();
1120        }
1121    });
1122}
1123// Run the function initially
1124hideEmptySpan();
1125
1126// Create a MutationObserver instance
1127const spanObserver = new MutationObserver((mutationsList, spanObserver) => {
1128    // Call processContent() whenever mutations occur in the DOM
1129    hideEmptySpan();
1130});
1131
1132spanObserver.observe(document.body, { childList: true, subtree: true });
1133
1134
1135
1136    
1137
1138/*****************************************************************************/
1139/* GDPR MODIFIER LE TEXTE FRANCAIS DE LA BARRE EN BAS EN STICKY AND MODAL */
1140/*****************************************************************************/
1141
1142if ($("body").hasClass("lang-fr")) {
1143    /* STICKY */
1144    window.addEventListener("DOMContentLoaded", () => {
1145        const interval_titre = setInterval(() => {
1146            const element_titre = document.querySelector(".cookie-consent-modal > p.consent-title");
1147            if (!element_titre) return;
1148            element_titre.innerHTML = "Nous voulons mieux vous servir !";
1149            clearInterval(interval_titre); 
1150        }, 500);
1151        const interval_description = setInterval(() => {
1152            const element_description = document.querySelector(".cookie-consent-modal > p.consent-description");
1153            if (!element_description) return;
1154            element_description.innerHTML = "Nous utilisons des cookies afin de vous offrir la meilleure expérience possible. N'hésitez pas à consulter notre <a href='/fr/politique-sur-la-protection-des-renseignements-personnels' target='_blank'>politique de confidentialité</a> pour en savoir plus.";
1155            clearInterval(interval_description); 
1156        }, 500);
1157    });
1158
1159    /* MODAL */
1160    $(document).on('click', '.cookie-consent-modal .btn-link', function () {
1161       const element = document.querySelector(".cookie-modal .cm-header > p");
1162       if (!element) return;
1163       element.innerHTML  = "<p>Nous utilisons des cookies afin de vous offrir une navigation fluide et agréable. Vous avez la possibilité de refuser, accepter ou gérer ces préférences en cliquant sur l'un des trois boutons ci-dessous.</p> <p>Cliquez sur chaque catégorie de cookies pour activer ou désactiver leur utilisation.</p>";
1164    });
1165}
1166
1167
1168/*****************************************************************************/
1169/* GDPR MODIFIER LE TEXTE ANGLAIS DE LA BARRE EN BAS EN STICKY */
1170/*****************************************************************************/
1171/* MODAL */
1172if ($("body").hasClass("lang-en")) {
1173
1174    /* STICKY */
1175    window.addEventListener("DOMContentLoaded", () => {
1176        const interval_titre = setInterval(() => {
1177            const element_titre = document.querySelector(".cookie-consent-modal > p.consent-title");
1178            if (!element_titre) return;
1179            element_titre.innerHTML = "We want to serve you better!";
1180            clearInterval(interval_titre); 
1181        }, 500);
1182        const interval_description = setInterval(() => {
1183            const element_description = document.querySelector(".cookie-consent-modal > p.consent-description");
1184            if (!element_description) return;
1185            element_description.innerHTML = "We use cookies to provide you with the best possible experience. Please feel free to review our <a href='/en/privacy-policy' target='_blank'>privacy policy</a> to learn more.";
1186            clearInterval(interval_description); 
1187        }, 500);
1188    });
1189
1190    /* MODAL */
1191    $(document).on('click', '.cookie-consent-modal .btn-link', function () {
1192       const element = document.querySelector(".cookie-modal .cm-header > p");
1193       if (!element) return;
1194       element.innerHTML  = "<p>We use cookies to provide you with a smooth and enjoyable browsing experience. You have the option to refuse, accept, or manage these preferences by clicking on one of the three buttons below.</p> <p>Click on each cookie category to enable or disable their use.</p>";
1195    });
1196}
1197    
1198
1199
1200/*****************************************************************************/
1201/* CALCULATOR */
1202if ($("body").hasClass("calculator")) {
1203
1204    const translations = {
1205        "en": {
1206            "ageRequired": "Age is required.",
1207            "ageInvalid": "The FH-Risk-Score calculator is only validated for patients aged 18 to 65.",
1208            "hdlcRequired": "HDLC is required.",
1209            "ldlcRequired": "LDLC is required.",
1210            "hypertensionRequired": "Hypertension is required.",
1211            "smokingRequired": "Smoking is required.",
1212            "resultPrefix": "FH-Risk-Score: ",
1213            "lowRisk": "Low risk",
1214            "moderateRisk": "Moderate risk",
1215            "highRisk": "High risk",
1216            "descriptionResult": "10-year cardiovascular disease risk (including: stable and unstable angina, myocardial infarction, coronary angioplasty, coronary artery bypass graft, claudication, peripheral angioplasty, peripheral arterial surgery, transient ischemic attack, stroke, 
1216carotidendarterectomy, carotid angioplasty, and cardiovascular death)."
1217        },
1218        "fr": {
1219            "ageRequired": "L'âge est requis.",
1220            "ageInvalid": "Le calculateur FH-Risk-Score n’est validé que pour les patients de 18 à 65 ans.",
1221            "hdlcRequired": "Le HDLC est requis.",
1222            "ldlcRequired": "Le LDLC est requis.",
1223            "hypertensionRequired": "L'hypertension est requise.",
1224            "smokingRequired": "Le tabagisme est requis.",
1225            "resultPrefix": "FH-Risk-Score : ",
1226            "lowRisk": "Faible risque",
1227            "moderateRisk": "Risque modéré",
1228            "highRisk": "Risque élevé",
1229            "descriptionResult": "Risque de maladies cardiovasculaires sur 10 ans (incluant: angine stable et instable, infarctus du myocarde, angioplastie coronarienne, pontage, claudication, angioplastie périphérique, chirurgie artérielle périphérique, ischémie cérébrale transitoire, AVC, endartériectomie carotidienne, angioplastie carotidienne et décès cardiovasculaire)."
1230        }
1231    };
1232
1233    const mgdlToMmol = val => val / 38.67;
1234    const mmolToMgdl = val => val * 38.67;
1235
1236    const pageLang = document.body.classList.contains("lang-fr") ? "fr" : "en";
1237
1238    function translate(key, lang = pageLang) {
1239        return translations[lang][key] || key;
1240    }
1241
1242    function updateUnitLabel(unit, id) {
1243        const label = document.querySelector(`.dynamic-mesure-${id}`);
1244        label.textContent = unit === "mgdl" ? "mg/dL" : "mmol/L";
1245    }
1246
1247    function convertInput(inputId, unitName, labelId) {
1248        const input = document.getElementById(inputId);
1249        let value = parseFloat(input.value);
1250
1251        const selectedUnit = document.querySelector(`input[name="${unitName}"]:checked`).value;
1252        const labelEl = document.querySelector(`.dynamic-mesure-${labelId}`);
1253        const currentUnit = labelEl.textContent === "mg/dL" ? "mgdl" : "mmol";
1254
1255        if (isNaN(value)) {
1256            updateUnitLabel(selectedUnit, labelId);
1257            return;
1258        }
1259
1260        if (selectedUnit !== currentUnit) {
1261            if (selectedUnit === "mmol") {
1262                input.value = mgdlToMmol(value).toFixed(2);
1263            } else {
1264                input.value = mmolToMgdl(value).toFixed(0);
1265            }
1266        }
1267
1268        updateUnitLabel(selectedUnit, labelId);
1269    }
1270
1271    function validateUnitValue(value, unit, field) {
1272    /*
1273        const val = parseFloat(value);
1274        if (isNaN(val)) return true;
1275
1276        if (unit === "mmol") {
1277            if (field === "hdlc" && (val > 5 || val < 0.5)) {
1278                alert("La valeur HDL-C en mmol/L semble incorrecte. Vérifiez l’unité ou la valeur.");
1279                return false;
1280            }
1281            if (field === "ldlc" && (val > 10 || val < 0.5)) {
1282                alert("La valeur LDL-C en mmol/L semble incorrecte. Vérifiez l’unité ou la valeur.");
1283                return false;
1284            }
1285        } else {
1286            if (field === "hdlc" && (val > 200 || val < 10)) {
1287                alert("La valeur HDL-C en mg/dL semble incorrecte. Vérifiez l’unité ou la valeur.");
1288                return false;
1289            }
1290            if (field === "ldlc" && (val > 400 || val < 20)) {
1291                alert("La valeur LDL-C en mg/dL semble incorrecte. Vérifiez l’unité ou la valeur.");
1292                return false;
1293            }
1294        }
1295    */
1296        return true;
1297    }
1298
1299    function validateFormIRCM(event) {
1300        event.preventDefault();
1301
1302        const lang = pageLang;
1303        const sex = document.getElementById("sex").value;
1304        const age = document.getElementById("age").value.trim();
1305        const hdlc = document.getElementById("hdlc").value.trim();
1306        const ldlc = document.getElementById("ldlc").value.trim();
1307        const hdlUnit = document.querySelector('input[name="unit-select-1"]:checked').value;
1308        const ldlUnit = document.querySelector('input[name="unit-select-2"]:checked').value;
1309
1310        if (!validateUnitValue(hdlc, hdlUnit, "hdlc") || !validateUnitValue(ldlc, ldlUnit, "ldlc")) {
1311            return;
1312        }
1313
1314        let hdlcVal = parseFloat(hdlc);
1315        let ldlcVal = parseFloat(ldlc);
1316        if (hdlUnit === "mgdl") hdlcVal = mgdlToMmol(hdlcVal);
1317        if (ldlUnit === "mgdl") ldlcVal = mgdlToMmol(ldlcVal);
1318
1319        let hypertension = null;
1320        if (document.getElementById("hypertensionNo").checked) {
1321            hypertension = 0;
1322            document.getElementById("hypertensionError").textContent = "";
1323        } else if (document.getElementById("hypertensionYes").checked) {
1324            hypertension = 1;
1325            document.getElementById("hypertensionError").textContent = "";
1326        } else {
1327            document.getElementById("hypertensionError").textContent = translate("hypertensionRequired", lang);
1328        }
1329
1330        let smoking = null;
1331        if (document.getElementById("smokingNo").checked) {
1332            smoking = 0;
1333            document.getElementById("smokingError").textContent = "";
1334        } else if (document.getElementById("smokingYes").checked) {
1335            smoking = 1;
1336            document.getElementById("smokingError").textContent = "";
1337        } else {
1338            document.getElementById("smokingError").textContent = translate("smokingRequired", lang);
1339        }
1340
1341        let lp = document.getElementById("lp").value;
1342        lp = lp.trim() === "" ? 0 : (parseFloat(lp) >= 50 ? 1 : 0);
1343
1344        document.getElementById("ageError").textContent = age === "" ? translate("ageRequired", lang) : (age < 18 || age > 65 ? translate("ageInvalid", lang) : "");
1345        document.getElementById("hdlcError").textContent = hdlc === "" ? translate("hdlcRequired", lang) : "";
1346        document.getElementById("ldlcError").textContent = ldlc === "" ? translate("ldlcRequired", lang) : "";
1347
1348        if (
1349            document.getElementById("ageError").textContent === "" &&
1350            document.getElementById("hdlcError").textContent === "" &&
1351            document.getElementById("ldlcError").textContent === "" &&
1352            document.getElementById("hypertensionError").textContent === "" &&
1353            document.getElementById("smokingError").textContent === ""
1354        ) {
1355            let Age1 = 0, Age2 = 0, Age3 = 0, Age4 = 0, Age5 = 0, Age6 = 0, Age7 = 0;
1356            if (age >= 31 && age <= 35) Age1 = 1;
1357            if (age >= 36 && age <= 40) Age2 = 1;
1358            if (age >= 41 && age <= 45) Age3 = 1;
1359            if (age >= 46 && age <= 50) Age4 = 1;
1360            if (age >= 51 && age <= 55) Age5 = 1;
1361            if (age >= 56 && age <= 60) Age6 = 1;
1362            if (age >= 61) Age7 = 1;
1363
1364            let HDL1 = 0, HDL2 = 0, HDL3 = 0;
1365            if (hdlcVal >= 1.01 && hdlcVal <= 1.30) HDL1 = 1;
1366            if (hdlcVal >= 0.85 && hdlcVal <= 1.00) HDL2 = 1;
1367            if (hdlcVal < 0.85) HDL3 = 1;
1368
1369            let LDL1 = 0, LDL2 = 0, LDL3 = 0, LDL4 = 0;
1370            if (ldlcVal >= 5.51 && ldlcVal <= 7.50) LDL1 = 1;
1371            if (ldlcVal >= 7.51 && ldlcVal <= 8.50) LDL2 = 1;
1372            if (ldlcVal >= 8.51 && ldlcVal <= 9.50) LDL3 = 1;
1373            if (ldlcVal > 9.50) LDL4 = 1;
1374
1375            console.log("Flags:");
1376            console.log("Age flags:", Age1, Age2, Age3, Age4, Age5, Age6, Age7);
1377            console.log("HDL flags:", HDL1, HDL2, HDL3);
1378            console.log("LDL flags:", LDL1, LDL2, LDL3, LDL4);
1379
1380            console.log("🧪 Calculating FH-Risk Score with:");
1381            console.log("Sex:", sex);
1382            console.log("Age:", age);
1383            console.log("HDL-C Value:", hdlcVal.toFixed(2), "mmol/L");
1384            console.log("LDL-C Value:", ldlcVal.toFixed(2), "mmol/L");
1385            console.log("Smoking:", smoking);
1386            console.log("Hypertension:", hypertension);
1387            console.log("Lp(a):", lp);
1388
1389            const score =
1390                0.721 * Number(sex) +
1391                0.625 * Number(smoking) +
1392                0.644 * Number(hypertension) +
1393                0.434 * Number(lp) +
1394                0.938 * Number(Age1) +
1395                1.383 * Number(Age2) +
1396                1.621 * Number(Age3) +
1397                1.738 * Number(Age4) +
1398                1.804 * Number(Age5) +
1399                1.964 * Number(Age6) +
1400                2.256 * Number(Age7) +
1401                0.315 * Number(LDL1) +
1402                0.718 * Number(LDL2) +
1403                0.918 * Number(LDL3) +
1404                1.136 * Number(LDL4) +
1405                0.298 * Number(HDL1) +
1406                0.712 * Number(HDL2) +
1407                0.752 * Number(HDL3);
1408            
1409            const risk = 1 - Math.pow(0.889, Math.exp(score - 3));
1410
1411            console.log("Score parts:");
1412            console.log("score:", score);
1413            console.log("risk (raw):", risk);
1414            
1415            const riskPercent = Math.round(risk * 100);
1416            let riskLabel = "", riskColor = "";
1417            if (riskPercent < 10) {
1418                riskLabel = translate("lowRisk", lang); riskColor = "yellow";
1419            } else if (riskPercent < 20) {
1420                riskLabel = translate("moderateRisk", lang); riskColor = "orange";
1421            } else {
1422                riskLabel = translate("highRisk", lang); riskColor = "red";
1423            }
1424
1425            document.getElementById("result").innerHTML = `
1426                <div class="result-container">
1427                    <div class="content-left">
1428                        <div class="circle ${riskColor}"></div>
1429                    </div>
1430                    <div class="content-right">
1431                        <h2>${translate("resultPrefix", lang)}
1432                            <span style="color:#0091d1;">${riskPercent}%</span>
1433                        </h2>
1434                        <h3><span style="color:#0091d1;">${riskLabel}</span></h3>
1435                        <p>${translate("descriptionResult", lang)}</p>
1436                    </div>
1437                </div>
1438            `;
1439        } else {
1440            document.getElementById("result").innerHTML = "";
1441        }
1442    }
1443
1444    document.querySelectorAll('input[name="unit-select-1"]').forEach(radio => {
1445        radio.addEventListener("change", () => convertInput("hdlc", "unit-select-1", 1));
1446    });
1447    document.querySelectorAll('input[name="unit-select-2"]').forEach(radio => {
1448        radio.addEventListener("change", () => convertInput("ldlc", "unit-select-2", 2));
1449    });
1450}
1451/*****************************************************************************/
1452/* PUBLICATIONS SCIENTIFIQUES DES CHERCHEUR.E.S */
1453/*****************************************************************************/
1454(function () {
1455    'use strict';
1456    
1457    const BASE_URL = "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/";
1458    let articlesCache = [];
1459    let activeTab = 'all';
1460
1461    function init() {
1462        const container = document.getElementById('pubmed-module');
1463        if (!container) return;
1464
1465        const list = document.getElementById('pubmed-list');
1466        const countDisplay = document.getElementById('pub-count');
1467        const filter = document.getElementById('pubmed-filter');
1468        
1469        const baseQuery = container.getAttribute('data-pubmed-query');
1470        const affiliation = container.getAttribute('data-affiliation') || '';
1471        
1472        if (!baseQuery || !list || !countDisplay) {
1473            console.error('Module PubMed: configuration incomplète');
1474            return;
1475        }
1476
1477        // CORRECTION : On ne filtre PAS par affiliation dans la requête API
1478        // car cela élimine trop de publications (affiliations mal indexées)
1479        const buildQuery = () => baseQuery; // Requête simple sans affiliation
1480
1481        let tabsEl = document.getElementById('pubmed-tabs');
1482        if (!tabsEl) {
1483            tabsEl = document.createElement('div');
1484            tabsEl.id = 'pubmed-tabs';
1485            tabsEl.className = 'ircm-tabs';
1486            if (filter && filter.parentNode) {
1487                filter.parentNode.insertBefore(tabsEl, filter);
1488            } else {
1489                container.appendChild(tabsEl);
1490            }
1491        }
1492
1493        // Extraction nom auteur
1494        const authorName = (baseQuery.match(/([^[]+)\[Author\]/i)?.[1] || "").trim();
1495
1496        // Gestion accents pour regex
1497        const getPattern = (text) => {
1498            return text.split('').map(char => {
1499                const eq = {
1500                    'c':'[cç]', 'e':'[eéèêë]', 'a':'[aàâä]', 
1501                    'o':'[oôö]', 'i':'[iïî]', 'u':'[uùûü]',
1502                    'y':'[yÿ]', 'n':'[nñ]'
1503                };
1504                const low = char.toLowerCase();
1505                if (eq[low]) return eq[low];
1506                if (char === ' ' || char === '-') return '[-\\s]*';
1507                return char.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
1508            }).join('');
1509        };
1510
1511        const boldAuthor = (text) => {
1512            if (!authorName || !text) return text;
1513            try {
1514                return text.replace(new RegExp(`(${getPattern(authorName)})`, 'gi'), '<strong>$1</strong>');
1515            } catch (e) { return text; }
1516        };
1517
1518        // i18n
1519        const i18n = {
1520            fr: {
1521                notFound: "Aucune publication trouvée.",
1522                error: "Erreur de chargement.",
1523                publications: (n) => `${n} PUBLICATION${n > 1 ? 'S' : ''}`,
1524                placeholder: "Rechercher par mot-clé...",
1525                cite: "Citer",
1526                copied: "Copié !",
1527                tabs: {
1528                    all: "Tous", journal: "Articles", review: "Reviews",
1529                    preprint: "Prépublications", conference: "Conférences",
1530                    book: "Livres", other: "Autres"
1531                }
1532            },
1533            en: {
1534                notFound: "No publications found.",
1535                error: "Loading error.",
1536                publications: (n) => `${n} PUBLICATION${n > 1 ? 'S' : ''}`,
1537                placeholder: "Search by keyword...",
1538                cite: "Cite", copied: "Copied!",
1539                tabs: {
1540                    all: "All", journal: "Articles", review: "Reviews",
1541                    preprint: "Preprints", conference: "Conferences",
1542                    book: "Books", other: "Other"
1543                }
1544            }
1545        };
1546
1547        const lang = () => document.documentElement.lang?.startsWith('en') ? 'en' : 'fr';
1548        const t = () => i18n[lang()];
1549
1550        const getPubType = (item) => {
1551            const types = (item.pubtype || []).map(p => String(p).toLowerCase());
1552            if (types.includes('review')) return 'review';
1553            if (types.includes('journal article')) return 'journal';
1554            if (types.includes('preprint')) return 'preprint';
1555            if (types.some(t => t.includes('conference'))) return 'conference';
1556            if (types.includes('book')) return 'book';
1557            return 'other';
1558        };
1559
1560        // Construction citation séparée en 3 parties
1561        const buildCitation = (item) => {
1562            const title = item.title || 'Sans titre';
1563            const authors = (item.authors || []).map(a => a.name).join(", ") || "Auteurs inconnus";
1564            const authorsHtml = boldAuthor(authors);
1565            
1566            const details = [];
1567            if (item.source) details.push(item.source);
1568            if (item.pubdate) {
1569                let dateStr = item.pubdate;
1570                if (item.volume) {
1571                    dateStr += `;${item.volume}`;
1572                    if (item.issue) dateStr += `(${item.issue})`;
1573                    if (item.pages) dateStr += `:${item.pages}`;
1574                }
1575                details.push(dateStr);
1576            }
1577            details.push(`PMID: ${item.uid}`);
1578            
1579            const detailsText = details.join('. ') + '.';
1580            const plain = `${authors}. ${title} ${detailsText}`;
1581
1582            return { title, authors: authorsHtml, details: detailsText, plain };
1583        };
1584
1585        const renderTabs = () => {
1586            const types = ['all', 'journal', 'review', 'preprint', 'conference', 'book', 'other'];
1587            const counts = { all: articlesCache.length };
1588            types.slice(1).forEach(type => counts[type] = 0);
1589            articlesCache.forEach(a => { if (counts[a.pubType] !== undefined) counts[a.pubType]++; });
1590
1591            tabsEl.innerHTML = types
1592                .filter(type => type === 'all' || counts[type] > 0)
1593                .map(type => `
1594                    <button class="ircm-tab ${activeTab === type ? 'active' : ''}" data-type="${type}">
1595                        ${t().tabs[type]} <span class="ircm-tab-count">${counts[type]}</span>
1596                    </button>
1597                `).join('');
1598
1599            tabsEl.querySelectorAll('.ircm-tab').forEach(btn => {
1600                btn.addEventListener('click', () => {
1601                    activeTab = btn.dataset.type;
1602                    applyFilters();
1603                });
1604            });
1605        };
1606
1607        const renderList = (items) => {
1608            countDisplay.textContent = t().publications(items.length);
1609            
1610            if (items.length === 0) {
1611                list.innerHTML = `<p class="ircm-not-found">${t().notFound}</p>`;
1612                return;
1613            }
1614
1615            // Tri garanti par date décroissante
1616            const sortedItems = [...items].sort((a, b) => {
1617                const yearA = parseInt(String(a.pubdate).match(/\d{4}/)?.[0]) || 0;
1618                const yearB = parseInt(String(b.pubdate).match(/\d{4}/)?.[0]) || 0;
1619                return yearB - yearA;
1620            });
1621
1622            list.innerHTML = sortedItems.map(item => {
1623                const cit = buildCitation(item);
1624                const type = item.pubType || 'other';
1625                
1626                return `<div class="ircm-pub-item">
1627                    <div class="ircm-pub-header">
1628                        <a href="https://pubmed.ncbi.nlm.nih.gov/${item.uid}/" target="_blank" class="ircm-pub-link">${cit.title}</a>
1629                        <span class="ircm-type-badge ircm-type-${type}">${t().tabs[type]}</span>
1630                    </div>
1631                    <div class="ircm-pub-authors">${cit.authors}</div>
1632                    <div class="ircm-pub-details">${cit.details}</div>
1633                    <button class="ircm-cite-btn" data-citation="${encodeURIComponent(cit.plain)}">${t().cite}</button>
1634                </div>`;
1635            }).join('');
1636
1637            list.querySelectorAll('.ircm-cite-btn').forEach(btn => {
1638                btn.addEventListener('click', function() {
1639                    const text = decodeURIComponent(this.dataset.citation);
1640                    navigator.clipboard.writeText(text).then(() => {
1641                        const original = this.textContent;
1642                        this.textContent = t().copied;
1643                        this.classList.add('copied');
1644                        setTimeout(() => {
1645                            this.textContent = original;
1646                            this.classList.remove('copied');
1647                        }, 1500);
1648                    });
1649                });
1650            });
1651        };
1652
1653        const applyFilters = () => {
1654            let filtered = articlesCache;
1655            if (activeTab !== 'all') filtered = filtered.filter(a => a.pubType === activeTab);
1656            
1657            const val = filter.value.toLowerCase();
1658            if (val) filtered = filtered.filter(a => 
1659                a.title.toLowerCase().includes(val) || 
1660                a.authors?.some(au => au.name.toLowerCase().includes(val))
1661            );
1662            
1663            renderList(filtered);
1664            renderTabs();
1665        };
1666
1667        // Chargement avec limite augmentée pour s'assurer d'avoir tout
1668        const load = async () => {
1669            try {
1670                countDisplay.innerHTML = '<span class="loading-spinner">⟳</span> Chargement...';
1671                
1672                const fullQuery = buildQuery();
1673                console.log('Requête PubMed:', fullQuery); // Pour déboguer
1674                
1675                // retmax=10000 pour être sûr d'avoir tout (max autorisé par NCBI sans API key)
1676                const searchRes = await fetch(`${BASE_URL}esearch.fcgi?db=pubmed&term=${encodeURIComponent(fullQuery)}&retmode=json&retmax=10000`);
1677                if (!searchRes.ok) throw new Error('Erreur réseau');
1678                
1679                const searchData = await searchRes.json();
1680                const ids = searchData.esearchresult?.idlist || [];
1681                
1682                console.log('IDs trouvés:', ids.length); // Vérifier le nombre
1683                
1684                if (!ids.length) {
1685                    renderList([]);
1686                    return;
1687                }
1688
1689                countDisplay.textContent = `0 / ${ids.length}`;
1690                const all = [];
1691                
1692                // Récupération par lots de 200
1693                for (let i = 0; i < ids.length; i += 200) {
1694                    const batch = ids.slice(i, i + 200).join(',');
1695                    const res = await fetch(`${BASE_URL}esummary.fcgi?db=pubmed&id=${batch}&retmode=json`);
1696                    if (!res.ok) continue;
1697                    
1698                    const data = await res.json();
1699                    const items = Object.values(data.result || {}).filter(x => x.uid).map(x => ({
1700                        ...x,
1701                        pubType: getPubType(x)
1702                    }));
1703                    
1704                    all.push(...items);
1705                    countDisplay.textContent = `${all.length} / ${ids.length}`;
1706                }
1707
1708                articlesCache = all;
1709                activeTab = 'all';
1710                applyFilters();
1711
1712            } catch (err) {
1713                console.error(err);
1714                list.innerHTML = `<p class="ircm-error">${t().error}</p>`;
1715            }
1716        };
1717
1718        filter.placeholder = t().placeholder;
1719        filter.addEventListener('input', applyFilters);
1720        
1721        new MutationObserver(() => articlesCache.length && applyFilters())
1722            .observe(document.documentElement, { attributes: true, attributeFilter: ['lang'] });
1723
1724        load();
1725    }
1726
1727    if (document.readyState === 'loading') {
1728        document.addEventListener('DOMContentLoaded', init);
1729    } else {
1730        init();
1731    }
1732})();
1733/*****************************************************************************/
1734/* LOOP */
1735/*****************************************************************************/
1736(function () {
1737  'use strict';
1738 
1739  function initMarquee(outer) {
1740    var track = outer.querySelector('.mq-track');
1741    if (!track) return;
1742 
1743    /* ── Normalise la structure : on veut exactement un .mq-set
1744         enfant direct de .mq-track, contenant tous les items ── */
1745    var set = track.querySelector(':scope > .mq-set');
1746 
1747    if (!set) {
1748      /* Cas 1 : pas de .mq-set → englobe tous les enfants directs */
1749      set = document.createElement('div');
1750      set.className = 'mq-set';
1751      while (track.firstChild) {
1752        set.appendChild(track.firstChild);
1753      }
1754      track.appendChild(set);
1755    }
1756 
1757    /* Cas 2 : .mq-set imbriqué à l'intérieur d'un .mq-item
1758       → on remonte les items au bon niveau                     */
1759    var nestedSets = set.querySelectorAll('.mq-set');
1760    if (nestedSets.length > 0) {
1761      var wrapper = document.createElement('div');
1762      wrapper.className = 'mq-set';
1763      var items = set.querySelectorAll('.mq-item');
1764      items.forEach(function (item) {
1765        var inner = item.querySelector('.mq-set');
1766        if (inner) {
1767          while (inner.firstChild) item.appendChild(inner.firstChild);
1768          inner.parentNode.removeChild(inner);
1769        }
1770        wrapper.appendChild(item);
1771      });
1772      track.innerHTML = '';
1773      track.appendChild(wrapper);
1774      set = wrapper;
1775    }
1776 
1777    /* ── Paramètres ── */
1778    var copies = parseInt(outer.dataset.copies) || 4;
1779    var dur    = parseFloat(outer.dataset.dur)   || 20;
1780 
1781    /* ── Durée de l'animation ── */
1782    track.style.setProperty('--dur', dur + 's');
1783 
1784    /* ── Dupliquer le set N fois ── */
1785    for (var i = 1; i < copies; i++) {
1786      track.appendChild(set.cloneNode(true));
1787    }
1788 
1789    /* ── Mesurer --shift après le premier paint ── */
1790    requestAnimationFrame(function () {
1791      requestAnimationFrame(function () {
1792        measure(track);
1793      });
1794    });
1795 
1796    /* ── Re-mesurer au resize ── */
1797    window.addEventListener('resize', debounce(function () {
1798      measure(track);
1799    }, 200));
1800  }
1801 
1802  function measure(track) {
1803    var firstSet = track.querySelector('.mq-set');
1804    if (!firstSet) return;
1805    track.style.setProperty('--shift', firstSet.offsetWidth + 'px');
1806  }
1807 
1808  function debounce(fn, delay) {
1809    var t;
1810    return function () { clearTimeout(t); t = setTimeout(fn, delay); };
1811  }
1812 
1813  function autoInit() {
1814    document.querySelectorAll('[data-marquee]').forEach(initMarquee);
1815  }
1816 
1817  if (document.readyState === 'loading') {
1818    document.addEventListener('DOMContentLoaded', autoInit);
1819  } else {
1820    autoInit();
1821  }
1822 
1823  /* ── API publique ── */
1824  window.Marquee = {
1825    init: function (target) {
1826      var el = typeof target === 'string' ? document.querySelector(target) : target;
1827      if (el) initMarquee(el);
1828    },
1829    setSpeed: function (target, seconds) {
1830      var outer = typeof target === 'string' ? document.querySelector(target) : target;
1831      if (!outer) return;
1832      var track = outer.querySelector('.mq-track');
1833      if (track) track.style.setProperty('--dur', seconds + 's');
1834    },
1835    pause: function (target) {
1836      var outer = typeof target === 'string' ? document.querySelector(target) : target;
1837      if (!outer) return;
1838      var track = outer.querySelector('.mq-track');
1839      if (track) track.style.animationPlayState = 'paused';
1840    },
1841    resume: function (target) {
1842      var outer = typeof target === 'string' ? document.querySelector(target) : target;
1843      if (!outer) return;
1844      var track = outer.querySelector('.mq-track');
1845      if (track) track.style.animationPlayState = 'running';
1846    }
1847  };
1848 
1849})();</script>
1849		<link rel="stylesheet" href="https://cdn.ca.yapla.com/js/joomflo/cookieconsent/cookieconsent.min.css?v=v6.286.0&v=v6.286.0&sha1=58f08ee70a13815357d6966834bf9d10186a7cfa" type="text/css"><link rel="stylesheet" href="/font/neotechstd/stylesheet.css?v=v6.286.0" type="text/css"><link rel="stylesheet" href="/font/brandontext/stylesheet.css?v=v6.286.0" type="text/css"><link rel="stylesheet" href="https://cdn.ca.yapla.com/css/jquery-tools.css?v=v6.286.0&sha1=58f08ee70a13815357d6966834bf9d10186a7cfa" type="text/css"><link rel="stylesheet" href="https://cdn.ca.yapla.com/css/paginator.css?v=v6.286.0&v=v6.286.0&sha1=58f08ee70a13815357d6966834bf9d10186a7cfa" type="text/css"><link rel="stylesheet" href="https://cdn.ca.yapla.com/css/icons.css?v=v6.286.0&v=v6.286.0&sha1=58f08ee70a13815357d6966834bf9d10186a7cfa" type="text/css"><link rel="stylesheet" href="https://cdn.ca.yapla.com/js/jquery/hpj-custom/jquery-ui-1.7.custom.css?v=v6.286.0&sha1=58f08ee70a13815357d6966834bf9d10186a7cfa" type="text/css">	<link href="https://fonts.googleapis.com/css?family=Muli:400" rel="stylesheet">
1850<script type="text/javascript">window.NREUM||(NREUM={});NREUM.info={"beacon":"bam.nr-data.net","licenseKey":"f76546586f","applicationID":"1038230873","transactionName":"YQNRMhMEWEFRVEFRX1hJZhQISl9cVFJNFkBeFg==","queueTime":0,"applicationTime":405,"atts":"TURSRFseS08=","errorBeacon":"bam.nr-data.net","agent":""}</script>
1850</body>
1851
1852</html>

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