diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/assets/RulesSearch-AGDNDU76-DpFdA1vP.js b/assets/RulesSearch-AGDNDU76-DpFdA1vP.js new file mode 100644 index 0000000..bc4cc95 --- /dev/null +++ b/assets/RulesSearch-AGDNDU76-DpFdA1vP.js @@ -0,0 +1,39 @@ +import{u as de,r as O,D as fe,j as w,R as ge,a as N}from"./index-Jxm2TFAY.js";function _(t){return Array.isArray?Array.isArray(t):ne(t)==="[object Array]"}const pe=1/0;function me(t){if(typeof t=="string")return t;let e=t+"";return e=="0"&&1/t==-pe?"-0":e}function xe(t){return t==null?"":me(t)}function y(t){return typeof t=="string"}function se(t){return typeof t=="number"}function Me(t){return t===!0||t===!1||Ee(t)&&ne(t)=="[object Boolean]"}function re(t){return typeof t=="object"}function Ee(t){return re(t)&&t!==null}function m(t){return t!=null}function W(t){return!t.trim().length}function ne(t){return t==null?t===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(t)}const ye="Incorrect 'index' type",Ie=t=>`Invalid value for key ${t}`,_e=t=>`Pattern length exceeds max of ${t}.`,Se=t=>`Missing ${t} property in key`,Ae=t=>`Property 'weight' in key '${t}' must be a positive integer`,J=Object.prototype.hasOwnProperty;class we{constructor(e){this._keys=[],this._keyMap={};let s=0;e.forEach(r=>{let n=ie(r);this._keys.push(n),this._keyMap[n.id]=n,s+=n.weight}),this._keys.forEach(r=>{r.weight/=s})}get(e){return this._keyMap[e]}keys(){return this._keys}toJSON(){return JSON.stringify(this._keys)}}function ie(t){let e=null,s=null,r=null,n=1,i=null;if(y(t)||_(t))r=t,e=Z(t),s=B(t);else{if(!J.call(t,"name"))throw new Error(Se("name"));const c=t.name;if(r=c,J.call(t,"weight")&&(n=t.weight,n<=0))throw new Error(Ae(c));e=Z(c),s=B(c),i=t.getFn}return{path:e,id:s,weight:n,src:r,getFn:i}}function Z(t){return _(t)?t:t.split(".")}function B(t){return _(t)?t.join("."):t}function be(t,e){let s=[],r=!1;const n=(i,c,o)=>{if(m(i))if(!c[o])s.push(i);else{let h=c[o];const a=i[h];if(!m(a))return;if(o===c.length-1&&(y(a)||se(a)||Me(a)))s.push(xe(a));else if(_(a)){r=!0;for(let l=0,d=a.length;lt.score===e.score?t.idx{this._keysMap[s.id]=r})}create(){this.isCreated||!this.docs.length||(this.isCreated=!0,y(this.docs[0])?this.docs.forEach((e,s)=>{this._addString(e,s)}):this.docs.forEach((e,s)=>{this._addObject(e,s)}),this.norm.clear())}add(e){const s=this.size();y(e)?this._addString(e,s):this._addObject(e,s)}removeAt(e){this.records.splice(e,1);for(let s=e,r=this.size();s{let c=n.getFn?n.getFn(e):this.getFn(e,n.path);if(m(c)){if(_(c)){let o=[];const h=[{nestedArrIndex:-1,value:c}];for(;h.length;){const{nestedArrIndex:a,value:l}=h.pop();if(m(l))if(y(l)&&!W(l)){let d={v:l,i:a,n:this.norm.get(l)};o.push(d)}else _(l)&&l.forEach((d,f)=>{h.push({nestedArrIndex:f,value:d})})}r.$[i]=o}else if(y(c)&&!W(c)){let o={v:c,n:this.norm.get(c)};r.$[i]=o}}}),this.records.push(r)}toJSON(){return{keys:this.keys,records:this.records}}}function ce(t,e,{getFn:s=u.getFn,fieldNormWeight:r=u.fieldNormWeight}={}){const n=new Q({getFn:s,fieldNormWeight:r});return n.setKeys(t.map(ie)),n.setSources(e),n.create(),n}function $e(t,{getFn:e=u.getFn,fieldNormWeight:s=u.fieldNormWeight}={}){const{keys:r,records:n}=t,i=new Q({getFn:e,fieldNormWeight:s});return i.setKeys(r),i.setIndexRecords(n),i}function F(t,{errors:e=0,currentLocation:s=0,expectedLocation:r=0,distance:n=u.distance,ignoreLocation:i=u.ignoreLocation}={}){const c=e/t.length;if(i)return c;const o=Math.abs(r-s);return n?c+o/n:o?1:c}function Oe(t=[],e=u.minMatchCharLength){let s=[],r=-1,n=-1,i=0;for(let c=t.length;i=e&&s.push([r,n]),r=-1)}return t[i-1]&&i-r>=e&&s.push([r,i-1]),s}const v=32;function je(t,e,s,{location:r=u.location,distance:n=u.distance,threshold:i=u.threshold,findAllMatches:c=u.findAllMatches,minMatchCharLength:o=u.minMatchCharLength,includeMatches:h=u.includeMatches,ignoreLocation:a=u.ignoreLocation}={}){if(e.length>v)throw new Error(_e(v));const l=e.length,d=t.length,f=Math.max(0,Math.min(r,d));let g=i,p=f;const x=o>1||h,R=x?Array(d):[];let I;for(;(I=t.indexOf(e,p))>-1;){let M=F(e,{currentLocation:I,expectedLocation:f,distance:n,ignoreLocation:a});if(g=Math.min(M,g),p=I+l,x){let S=0;for(;S=U;E-=1){let T=E-1,X=s[t.charAt(T)];if(x&&(R[T]=+!!X),C[E]=(C[E+1]<<1|1)&X,M&&(C[E]|=(k[E+1]|k[E])<<1|1|k[E+1]),C[E]&ue&&(L=F(e,{errors:M,currentLocation:T,expectedLocation:f,distance:n,ignoreLocation:a}),L<=g)){if(g=L,p=T,p<=f)break;U=Math.max(1,2*f-p)}}if(F(e,{errors:M+1,currentLocation:f,expectedLocation:f,distance:n,ignoreLocation:a})>g)break;k=C}const D={isMatch:p>=0,score:Math.max(.001,L)};if(x){const M=Oe(R,o);M.length?h&&(D.indices=M):D.isMatch=!1}return D}function Te(t){let e={};for(let s=0,r=t.length;s{this.chunks.push({pattern:f,alphabet:Te(f),startIndex:g})},d=this.pattern.length;if(d>v){let f=0;const g=d%v,p=d-g;for(;f{const{isMatch:I,score:k,indices:L}=je(e,p,x,{location:n+R,distance:i,threshold:c,findAllMatches:o,minMatchCharLength:h,includeMatches:r,ignoreLocation:a});I&&(f=!0),d+=k,I&&L&&(l=[...l,...L])});let g={isMatch:f,score:f?d/this.chunks.length:1};return f&&r&&(g.indices=l),g}}class b{constructor(e){this.pattern=e}static isMultiMatch(e){return q(e,this.multiRegex)}static isSingleMatch(e){return q(e,this.singleRegex)}search(){}}function q(t,e){const s=t.match(e);return s?s[1]:null}class Fe extends b{constructor(e){super(e)}static get type(){return"exact"}static get multiRegex(){return/^="(.*)"$/}static get singleRegex(){return/^=(.*)$/}search(e){const s=e===this.pattern;return{isMatch:s,score:s?0:1,indices:[0,this.pattern.length-1]}}}class Pe extends b{constructor(e){super(e)}static get type(){return"inverse-exact"}static get multiRegex(){return/^!"(.*)"$/}static get singleRegex(){return/^!(.*)$/}search(e){const r=e.indexOf(this.pattern)===-1;return{isMatch:r,score:r?0:1,indices:[0,e.length-1]}}}class De extends b{constructor(e){super(e)}static get type(){return"prefix-exact"}static get multiRegex(){return/^\^"(.*)"$/}static get singleRegex(){return/^\^(.*)$/}search(e){const s=e.startsWith(this.pattern);return{isMatch:s,score:s?0:1,indices:[0,this.pattern.length-1]}}}class Ke extends b{constructor(e){super(e)}static get type(){return"inverse-prefix-exact"}static get multiRegex(){return/^!\^"(.*)"$/}static get singleRegex(){return/^!\^(.*)$/}search(e){const s=!e.startsWith(this.pattern);return{isMatch:s,score:s?0:1,indices:[0,e.length-1]}}}class We extends b{constructor(e){super(e)}static get type(){return"suffix-exact"}static get multiRegex(){return/^"(.*)"\$$/}static get singleRegex(){return/^(.*)\$$/}search(e){const s=e.endsWith(this.pattern);return{isMatch:s,score:s?0:1,indices:[e.length-this.pattern.length,e.length-1]}}}class Be extends b{constructor(e){super(e)}static get type(){return"inverse-suffix-exact"}static get multiRegex(){return/^!"(.*)"\$$/}static get singleRegex(){return/^!(.*)\$$/}search(e){const s=!e.endsWith(this.pattern);return{isMatch:s,score:s?0:1,indices:[0,e.length-1]}}}class ae extends b{constructor(e,{location:s=u.location,threshold:r=u.threshold,distance:n=u.distance,includeMatches:i=u.includeMatches,findAllMatches:c=u.findAllMatches,minMatchCharLength:o=u.minMatchCharLength,isCaseSensitive:h=u.isCaseSensitive,ignoreLocation:a=u.ignoreLocation}={}){super(e),this._bitapSearch=new oe(e,{location:s,threshold:r,distance:n,includeMatches:i,findAllMatches:c,minMatchCharLength:o,isCaseSensitive:h,ignoreLocation:a})}static get type(){return"fuzzy"}static get multiRegex(){return/^"(.*)"$/}static get singleRegex(){return/^(.*)$/}search(e){return this._bitapSearch.searchIn(e)}}class he extends b{constructor(e){super(e)}static get type(){return"include"}static get multiRegex(){return/^'"(.*)"$/}static get singleRegex(){return/^'(.*)$/}search(e){let s=0,r;const n=[],i=this.pattern.length;for(;(r=e.indexOf(this.pattern,s))>-1;)s=r+i,n.push([r,s-1]);const c=!!n.length;return{isMatch:c,score:c?0:1,indices:n}}}const z=[Fe,he,De,Ke,Be,We,Pe,ae],ee=z.length,ze=/ +(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/,He="|";function Ve(t,e={}){return t.split(He).map(s=>{let r=s.trim().split(ze).filter(i=>i&&!!i.trim()),n=[];for(let i=0,c=r.length;i!!(t[P.AND]||t[P.OR]),Ue=t=>!!t[Y.PATH],Xe=t=>!_(t)&&re(t)&&!G(t),te=t=>({[P.AND]:Object.keys(t).map(e=>({[e]:t[e]}))});function le(t,e,{auto:s=!0}={}){const r=n=>{let i=Object.keys(n);const c=Ue(n);if(!c&&i.length>1&&!G(n))return r(te(n));if(Xe(n)){const h=c?n[Y.PATH]:i[0],a=c?n[Y.PATTERN]:n[h];if(!y(a))throw new Error(Ie(h));const l={keyId:B(h),pattern:a};return s&&(l.searcher=V(a,e)),l}let o={children:[],operator:i[0]};return i.forEach(h=>{const a=n[h];_(a)&&a.forEach(l=>{o.children.push(r(l))})}),o};return G(t)||(t=te(t)),r(t)}function Je(t,{ignoreFieldNorm:e=u.ignoreFieldNorm}){t.forEach(s=>{let r=1;s.matches.forEach(({key:n,norm:i,score:c})=>{const o=n?n.weight:null;r*=Math.pow(c===0&&o?Number.EPSILON:c,(o||1)*(e?1:i))}),s.score=r})}function Ze(t,e){const s=t.matches;e.matches=[],m(s)&&s.forEach(r=>{if(!m(r.indices)||!r.indices.length)return;const{indices:n,value:i}=r;let c={indices:n,value:i};r.key&&(c.key=r.key.src),r.idx>-1&&(c.refIndex=r.idx),e.matches.push(c)})}function qe(t,e){e.score=t.score}function et(t,e,{includeMatches:s=u.includeMatches,includeScore:r=u.includeScore}={}){const n=[];return s&&n.push(Ze),r&&n.push(qe),t.map(i=>{const{idx:c}=i,o={item:e[c],refIndex:c};return n.length&&n.forEach(h=>{h(i,o)}),o})}class ${constructor(e,s={},r){this.options={...u,...s},this.options.useExtendedSearch,this._keyStore=new we(this.options.keys),this.setCollection(e,r)}setCollection(e,s){if(this._docs=e,s&&!(s instanceof Q))throw new Error(ye);this._myIndex=s||ce(this.options.keys,this._docs,{getFn:this.options.getFn,fieldNormWeight:this.options.fieldNormWeight})}add(e){m(e)&&(this._docs.push(e),this._myIndex.add(e))}remove(e=()=>!1){const s=[];for(let r=0,n=this._docs.length;r-1&&(h=h.slice(0,s)),et(h,this._docs,{includeMatches:r,includeScore:n})}_searchStringList(e){const s=V(e,this.options),{records:r}=this._myIndex,n=[];return r.forEach(({v:i,i:c,n:o})=>{if(!m(i))return;const{isMatch:h,score:a,indices:l}=s.searchIn(i);h&&n.push({item:i,idx:c,matches:[{score:a,value:i,norm:o,indices:l}]})}),n}_searchLogical(e){const s=le(e,this.options),r=(o,h,a)=>{if(!o.children){const{keyId:d,searcher:f}=o,g=this._findMatches({key:this._keyStore.get(d),value:this._myIndex.getValueForItemAtKeyId(h,d),searcher:f});return g&&g.length?[{idx:a,item:h,matches:g}]:[]}const l=[];for(let d=0,f=o.children.length;d{if(m(o)){let a=r(s,o,h);a.length&&(i[h]||(i[h]={idx:h,item:o,matches:[]},c.push(i[h])),a.forEach(({matches:l})=>{i[h].matches.push(...l)}))}}),c}_searchObjectList(e){const s=V(e,this.options),{keys:r,records:n}=this._myIndex,i=[];return n.forEach(({$:c,i:o})=>{if(!m(c))return;let h=[];r.forEach((a,l)=>{h.push(...this._findMatches({key:a,value:c[l],searcher:s}))}),h.length&&i.push({idx:o,item:c,matches:h})}),i}_findMatches({key:e,value:s,searcher:r}){if(!m(s))return[];let n=[];if(_(s))s.forEach(({v:i,i:c,n:o})=>{if(!m(i))return;const{isMatch:h,score:a,indices:l}=r.searchIn(i);h&&n.push({score:a,key:e,value:i,idx:c,norm:o,indices:l})});else{const{v:i,n:c}=s,{isMatch:o,score:h,indices:a}=r.searchIn(i);o&&n.push({score:h,key:e,value:i,norm:c,indices:a})}return n}}$.version="7.0.0";$.createIndex=ce;$.parseIndex=$e;$.config=u;$.parseQuery=le;Qe(Ge);function lt(){const t=de(),e=O.useContext(fe),s=Object.entries(t.getParsedRules()).map(([a,l])=>{var d;return{name:a,title:(d=l==null?void 0:l.rawNode)==null?void 0:d.titre}}),[r,n]=O.useState([]),[i,c]=O.useState(""),o=new $(s,{keys:["title","name"]});O.useEffect(()=>{c("")},[e]),O.useEffect(()=>{const a=o.search(i,{limit:10});n(a.map(l=>l.item))},[i]);const h=r.length===0;return w.jsxs(tt,{id:"documentation-search",children:[w.jsx(st,{id:"documentation-search-input",type:"text",placeholder:"Chercher une règle",value:i,onChange:a=>c(a.target.value),onFocus:a=>c(a.target.value),empty:h}),h?null:w.jsx(rt,{id:"documentation-search-results",children:r.map(({name:a,title:l},d)=>w.jsx(nt,{id:"documentation-search-item",isLast:d===r.length-1,onClick:()=>c(""),children:w.jsx(ge,{dottedName:a,children:w.jsxs(it,{onClick:()=>c(""),children:[w.jsx(ct,{id:"documentation-search-item-name",children:a}),w.jsx(ot,{id:"documentation-search-item-title",children:l})]})})},a))})]})}var tt=N.div` + margin-bottom: 1rem; + margin-right: 1rem; + max-width: 350px; +`,st=N.input` + width: 100%; + padding: 0.5rem; + border: 1px solid #ccc; + border-radius: ${({empty:t})=>t?"5px":"5px 5px 0 0"}; + + &:focus { + outline: none; + border: 1px solid #666; + } +`,rt=N.div` + background-color: white; + border: 1px solid #ccc; + border-top: none; + border-radius: 0 0 0.25rem 0.25rem; + position: relative; +`,nt=N.div` + padding: 0.5rem; + border-bottom: ${({isLast:t})=>t?"none":"1px solid #e6e6e6"}; + border-left: 2px solid transparent; + border-radius: ${({isLast:t})=>t?"0 0 0.25rem 0.25rem":"0"}; + + &:hover { + background-color: #f6f6f6; + } +`,it=N.span` + display: flex; + flex-wrap: wrap; + flex-gap: 0.5rem; + align-items: center; +`,ct=N.span` + width: 100%; +`,ot=N.span` + color: #666; +`;export{lt as default}; diff --git a/assets/index-BEqDY2_e.css b/assets/index-BEqDY2_e.css new file mode 100644 index 0000000..dbc2a00 --- /dev/null +++ b/assets/index-BEqDY2_e.css @@ -0,0 +1 @@ +body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}*{--textColor: #2975d1;--darkerColor: #333350}.App{padding:1rem;margin-bottom:1rem}#documentation-rule-root>p:first-of-type{display:inline-block;background:var(--lighterColor);padding:.4rem .6rem .2rem}header{color:var(--textColor);background:linear-gradient(60deg,var(--darkColor) 0%,var(--color) 100%);padding:.6rem 1rem;box-shadow:0 1px 3px rgba(var(--rgbColor),.12),0 1px 2px rgba(var(--rgbColor),.24);border-radius:.4rem}small{color:inherit}a{color:var(--textColor)}a:hover{color:var(--darkerColor)}h1{color:inherit;margin-top:.6rem;margin-bottom:.6rem}a{text-decoration:none}button{color:inherit}span{background:inherit}small{background:none}li :scope.active .content{background-color:transparent}#documentation-rule-root>article{max-width:800px} diff --git a/assets/index-Jxm2TFAY.js b/assets/index-Jxm2TFAY.js new file mode 100644 index 0000000..663d62c --- /dev/null +++ b/assets/index-Jxm2TFAY.js @@ -0,0 +1,1478 @@ +var q0=Object.defineProperty;var P0=(e,t,n)=>t in e?q0(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var Se=(e,t,n)=>P0(e,typeof t!="symbol"?t+"":t,n);function N0(e,t){for(var n=0;nr[i]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))r(i);new MutationObserver(i=>{for(const o of i)if(o.type==="childList")for(const a of o.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&r(a)}).observe(document,{childList:!0,subtree:!0});function n(i){const o={};return i.integrity&&(o.integrity=i.integrity),i.referrerPolicy&&(o.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?o.credentials="include":i.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(i){if(i.ep)return;i.ep=!0;const o=n(i);fetch(i.href,o)}})();function hr(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Ff={exports:{}},iu={},Df={exports:{}},re={};/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var go=Symbol.for("react.element"),L0=Symbol.for("react.portal"),j0=Symbol.for("react.fragment"),O0=Symbol.for("react.strict_mode"),V0=Symbol.for("react.profiler"),_0=Symbol.for("react.provider"),R0=Symbol.for("react.context"),A0=Symbol.for("react.forward_ref"),I0=Symbol.for("react.suspense"),T0=Symbol.for("react.memo"),z0=Symbol.for("react.lazy"),Bm=Symbol.iterator;function $0(e){return e===null||typeof e!="object"?null:(e=Bm&&e[Bm]||e["@@iterator"],typeof e=="function"?e:null)}var Bf={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Mf=Object.assign,Wf={};function si(e,t,n){this.props=e,this.context=t,this.refs=Wf,this.updater=n||Bf}si.prototype.isReactComponent={};si.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};si.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function Gf(){}Gf.prototype=si.prototype;function dc(e,t,n){this.props=e,this.context=t,this.refs=Wf,this.updater=n||Bf}var pc=dc.prototype=new Gf;pc.constructor=dc;Mf(pc,si.prototype);pc.isPureReactComponent=!0;var Mm=Array.isArray,Hf=Object.prototype.hasOwnProperty,fc={current:null},Kf={key:!0,ref:!0,__self:!0,__source:!0};function Qf(e,t,n){var r,i={},o=null,a=null;if(t!=null)for(r in t.ref!==void 0&&(a=t.ref),t.key!==void 0&&(o=""+t.key),t)Hf.call(t,r)&&!Kf.hasOwnProperty(r)&&(i[r]=t[r]);var u=arguments.length-2;if(u===1)i.children=n;else if(1>>1,G=L[z];if(0>>1;zi(Ee,b))tei(me,Ee)?(L[z]=me,L[te]=b,z=te):(L[z]=Ee,L[ae]=b,z=ae);else if(tei(me,b))L[z]=me,L[te]=b,z=te;else break e}}return T}function i(L,T){var b=L.sortIndex-T.sortIndex;return b!==0?b:L.id-T.id}if(typeof performance=="object"&&typeof performance.now=="function"){var o=performance;e.unstable_now=function(){return o.now()}}else{var a=Date,u=a.now();e.unstable_now=function(){return a.now()-u}}var s=[],l=[],c=1,m=null,p=3,d=!1,x=!1,y=!1,k=typeof setTimeout=="function"?setTimeout:null,h=typeof clearTimeout=="function"?clearTimeout:null,v=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function g(L){for(var T=n(l);T!==null;){if(T.callback===null)r(l);else if(T.startTime<=L)r(l),T.sortIndex=T.expirationTime,t(s,T);else break;T=n(l)}}function S(L){if(y=!1,g(L),!x)if(n(s)!==null)x=!0,B(P);else{var T=n(l);T!==null&&F(S,T.startTime-L)}}function P(L,T){x=!1,y&&(y=!1,h(j),j=-1),d=!0;var b=p;try{for(g(T),m=n(s);m!==null&&(!(m.expirationTime>T)||L&&!U());){var z=m.callback;if(typeof z=="function"){m.callback=null,p=m.priorityLevel;var G=z(m.expirationTime<=T);T=e.unstable_now(),typeof G=="function"?m.callback=G:m===n(s)&&r(s),g(T)}else r(s);m=n(s)}if(m!==null)var w=!0;else{var ae=n(l);ae!==null&&F(S,ae.startTime-T),w=!1}return w}finally{m=null,p=b,d=!1}}var E=!1,q=null,j=-1,M=5,W=-1;function U(){return!(e.unstable_now()-WL||125z?(L.sortIndex=b,t(l,L),n(s)===null&&L===n(l)&&(y?(h(j),j=-1):y=!0,F(S,b-z))):(L.sortIndex=G,t(s,L),x||d||(x=!0,B(P))),L},e.unstable_shouldYield=U,e.unstable_wrapCallback=function(L){var T=p;return function(){var b=p;p=T;try{return L.apply(this,arguments)}finally{p=b}}}})(eh);Zf.exports=eh;var X0=Zf.exports;/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var th=V,yt=X0;function _(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Ds=Object.prototype.hasOwnProperty,J0=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,Gm={},Hm={};function Z0(e){return Ds.call(Hm,e)?!0:Ds.call(Gm,e)?!1:J0.test(e)?Hm[e]=!0:(Gm[e]=!0,!1)}function eb(e,t,n,r){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return r?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function tb(e,t,n,r){if(t===null||typeof t>"u"||eb(e,t,n,r))return!0;if(r)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function Ze(e,t,n,r,i,o,a){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=r,this.attributeNamespace=i,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=o,this.removeEmptyString=a}var Me={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){Me[e]=new Ze(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];Me[t]=new Ze(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){Me[e]=new Ze(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){Me[e]=new Ze(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){Me[e]=new Ze(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){Me[e]=new Ze(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){Me[e]=new Ze(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){Me[e]=new Ze(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){Me[e]=new Ze(e,5,!1,e.toLowerCase(),null,!1,!1)});var vc=/[\-:]([a-z])/g;function gc(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(vc,gc);Me[t]=new Ze(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(vc,gc);Me[t]=new Ze(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(vc,gc);Me[t]=new Ze(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){Me[e]=new Ze(e,1,!1,e.toLowerCase(),null,!1,!1)});Me.xlinkHref=new Ze("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){Me[e]=new Ze(e,1,!1,e.toLowerCase(),null,!0,!0)});function yc(e,t,n,r){var i=Me.hasOwnProperty(t)?Me[t]:null;(i!==null?i.type!==0:r||!(2u||i[a]!==o[u]){var s=` +`+i[a].replace(" at new "," at ");return e.displayName&&s.includes("")&&(s=s.replace("",e.displayName)),s}while(1<=a&&0<=u);break}}}finally{Yu=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?Ni(e):""}function nb(e){switch(e.tag){case 5:return Ni(e.type);case 16:return Ni("Lazy");case 13:return Ni("Suspense");case 19:return Ni("SuspenseList");case 0:case 2:case 15:return e=Xu(e.type,!1),e;case 11:return e=Xu(e.type.render,!1),e;case 1:return e=Xu(e.type,!0),e;default:return""}}function Gs(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case Pr:return"Fragment";case qr:return"Portal";case Bs:return"Profiler";case bc:return"StrictMode";case Ms:return"Suspense";case Ws:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case ih:return(e.displayName||"Context")+".Consumer";case rh:return(e._context.displayName||"Context")+".Provider";case xc:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case Ec:return t=e.displayName||null,t!==null?t:Gs(e.type)||"Memo";case Cn:t=e._payload,e=e._init;try{return Gs(e(t))}catch{}}return null}function rb(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return Gs(t);case 8:return t===bc?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function Dn(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function ah(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function ib(e){var t=ah(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var i=n.get,o=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return i.call(this)},set:function(a){r=""+a,o.call(this,a)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(a){r=""+a},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function Vo(e){e._valueTracker||(e._valueTracker=ib(e))}function uh(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=ah(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function Ca(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function Hs(e,t){var n=t.checked;return Ce({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function Qm(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=Dn(t.value!=null?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function sh(e,t){t=t.checked,t!=null&&yc(e,"checked",t,!1)}function Ks(e,t){sh(e,t);var n=Dn(t.value),r=t.type;if(n!=null)r==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?Qs(e,t.type,n):t.hasOwnProperty("defaultValue")&&Qs(e,t.type,Dn(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function Ym(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!(r!=="submit"&&r!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function Qs(e,t,n){(t!=="number"||Ca(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var Li=Array.isArray;function Ur(e,t,n,r){if(e=e.options,t){t={};for(var i=0;i"+t.valueOf().toString()+"",t=_o.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function Qi(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var Ri={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},ob=["Webkit","ms","Moz","O"];Object.keys(Ri).forEach(function(e){ob.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),Ri[t]=Ri[e]})});function dh(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||Ri.hasOwnProperty(e)&&Ri[e]?(""+t).trim():t+"px"}function ph(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,i=dh(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,i):e[n]=i}}var ab=Ce({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function Js(e,t){if(t){if(ab[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(_(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(_(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(_(61))}if(t.style!=null&&typeof t.style!="object")throw Error(_(62))}}function Zs(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var el=null;function wc(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var tl=null,Fr=null,Dr=null;function Zm(e){if(e=xo(e)){if(typeof tl!="function")throw Error(_(280));var t=e.stateNode;t&&(t=lu(t),tl(e.stateNode,e.type,t))}}function fh(e){Fr?Dr?Dr.push(e):Dr=[e]:Fr=e}function hh(){if(Fr){var e=Fr,t=Dr;if(Dr=Fr=null,Zm(e),t)for(e=0;e>>=0,e===0?32:31-(gb(e)/yb|0)|0}var Ro=64,Ao=4194304;function ji(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function Na(e,t){var n=e.pendingLanes;if(n===0)return 0;var r=0,i=e.suspendedLanes,o=e.pingedLanes,a=n&268435455;if(a!==0){var u=a&~i;u!==0?r=ji(u):(o&=a,o!==0&&(r=ji(o)))}else a=n&~i,a!==0?r=ji(a):o!==0&&(r=ji(o));if(r===0)return 0;if(t!==0&&t!==r&&!(t&i)&&(i=r&-r,o=t&-t,i>=o||i===16&&(o&4194240)!==0))return t;if(r&4&&(r|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=r;0n;n++)t.push(e);return t}function yo(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-zt(t),e[t]=n}function wb(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0=Ii),sd=" ",ld=!1;function Ah(e,t){switch(e){case"keyup":return Yb.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Ih(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Nr=!1;function Jb(e,t){switch(e){case"compositionend":return Ih(t);case"keypress":return t.which!==32?null:(ld=!0,sd);case"textInput":return e=t.data,e===sd&&ld?null:e;default:return null}}function Zb(e,t){if(Nr)return e==="compositionend"||!jc&&Ah(e,t)?(e=_h(),aa=Pc=Ln=null,Nr=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=pd(n)}}function Uh(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Uh(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Fh(){for(var e=window,t=Ca();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=Ca(e.document)}return t}function Oc(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function sx(e){var t=Fh(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&Uh(n.ownerDocument.documentElement,n)){if(r!==null&&Oc(n)){if(t=r.start,e=r.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var i=n.textContent.length,o=Math.min(r.start,i);r=r.end===void 0?o:Math.min(r.end,i),!e.extend&&o>r&&(i=r,r=o,o=i),i=fd(n,o);var a=fd(n,r);i&&a&&(e.rangeCount!==1||e.anchorNode!==i.node||e.anchorOffset!==i.offset||e.focusNode!==a.node||e.focusOffset!==a.offset)&&(t=t.createRange(),t.setStart(i.node,i.offset),e.removeAllRanges(),o>r?(e.addRange(t),e.extend(a.node,a.offset)):(t.setEnd(a.node,a.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,Lr=null,ul=null,zi=null,sl=!1;function hd(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;sl||Lr==null||Lr!==Ca(r)||(r=Lr,"selectionStart"in r&&Oc(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),zi&&to(zi,r)||(zi=r,r=Oa(ul,"onSelect"),0Vr||(e.current=fl[Vr],fl[Vr]=null,Vr--)}function he(e,t){Vr++,fl[Vr]=e.current,e.current=t}var Bn={},Qe=Gn(Bn),ot=Gn(!1),sr=Bn;function Qr(e,t){var n=e.type.contextTypes;if(!n)return Bn;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var i={},o;for(o in n)i[o]=t[o];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=i),i}function at(e){return e=e.childContextTypes,e!=null}function _a(){be(ot),be(Qe)}function wd(e,t,n){if(Qe.current!==Bn)throw Error(_(168));he(Qe,t),he(ot,n)}function Yh(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var i in r)if(!(i in t))throw Error(_(108,rb(e)||"Unknown",i));return Ce({},n,r)}function Ra(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Bn,sr=Qe.current,he(Qe,e),he(ot,ot.current),!0}function kd(e,t,n){var r=e.stateNode;if(!r)throw Error(_(169));n?(e=Yh(e,t,sr),r.__reactInternalMemoizedMergedChildContext=e,be(ot),be(Qe),he(Qe,e)):be(ot),he(ot,n)}var on=null,cu=!1,ms=!1;function Xh(e){on===null?on=[e]:on.push(e)}function xx(e){cu=!0,Xh(e)}function Hn(){if(!ms&&on!==null){ms=!0;var e=0,t=le;try{var n=on;for(le=1;e>=a,i-=a,an=1<<32-zt(t)+i|n<j?(M=q,q=null):M=q.sibling;var W=p(h,q,g[j],S);if(W===null){q===null&&(q=M);break}e&&q&&W.alternate===null&&t(h,q),v=o(W,v,j),E===null?P=W:E.sibling=W,E=W,q=M}if(j===g.length)return n(h,q),xe&&Yn(h,j),P;if(q===null){for(;jj?(M=q,q=null):M=q.sibling;var U=p(h,q,W.value,S);if(U===null){q===null&&(q=M);break}e&&q&&U.alternate===null&&t(h,q),v=o(U,v,j),E===null?P=U:E.sibling=U,E=U,q=M}if(W.done)return n(h,q),xe&&Yn(h,j),P;if(q===null){for(;!W.done;j++,W=g.next())W=m(h,W.value,S),W!==null&&(v=o(W,v,j),E===null?P=W:E.sibling=W,E=W);return xe&&Yn(h,j),P}for(q=r(h,q);!W.done;j++,W=g.next())W=d(q,h,j,W.value,S),W!==null&&(e&&W.alternate!==null&&q.delete(W.key===null?j:W.key),v=o(W,v,j),E===null?P=W:E.sibling=W,E=W);return e&&q.forEach(function(C){return t(h,C)}),xe&&Yn(h,j),P}function k(h,v,g,S){if(typeof g=="object"&&g!==null&&g.type===Pr&&g.key===null&&(g=g.props.children),typeof g=="object"&&g!==null){switch(g.$$typeof){case Oo:e:{for(var P=g.key,E=v;E!==null;){if(E.key===P){if(P=g.type,P===Pr){if(E.tag===7){n(h,E.sibling),v=i(E,g.props.children),v.return=h,h=v;break e}}else if(E.elementType===P||typeof P=="object"&&P!==null&&P.$$typeof===Cn&&jd(P)===E.type){n(h,E.sibling),v=i(E,g.props),v.ref=wi(h,E,g),v.return=h,h=v;break e}n(h,E);break}else t(h,E);E=E.sibling}g.type===Pr?(v=ir(g.props.children,h.mode,S,g.key),v.return=h,h=v):(S=fa(g.type,g.key,g.props,null,h.mode,S),S.ref=wi(h,v,g),S.return=h,h=S)}return a(h);case qr:e:{for(E=g.key;v!==null;){if(v.key===E)if(v.tag===4&&v.stateNode.containerInfo===g.containerInfo&&v.stateNode.implementation===g.implementation){n(h,v.sibling),v=i(v,g.children||[]),v.return=h,h=v;break e}else{n(h,v);break}else t(h,v);v=v.sibling}v=bs(g,h.mode,S),v.return=h,h=v}return a(h);case Cn:return E=g._init,k(h,v,E(g._payload),S)}if(Li(g))return x(h,v,g,S);if(gi(g))return y(h,v,g,S);Do(h,g)}return typeof g=="string"&&g!==""||typeof g=="number"?(g=""+g,v!==null&&v.tag===6?(n(h,v.sibling),v=i(v,g),v.return=h,h=v):(n(h,v),v=ys(g,h.mode,S),v.return=h,h=v),a(h)):n(h,v)}return k}var Xr=ov(!0),av=ov(!1),Eo={},Qt=Gn(Eo),oo=Gn(Eo),ao=Gn(Eo);function tr(e){if(e===Eo)throw Error(_(174));return e}function Uc(e,t){switch(he(ao,t),he(oo,e),he(Qt,Eo),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:Xs(null,"");break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=Xs(t,e)}be(Qt),he(Qt,t)}function Jr(){be(Qt),be(oo),be(ao)}function uv(e){tr(ao.current);var t=tr(Qt.current),n=Xs(t,e.type);t!==n&&(he(oo,e),he(Qt,n))}function Fc(e){oo.current===e&&(be(Qt),be(oo))}var we=Gn(0);function Ua(e){for(var t=e;t!==null;){if(t.tag===13){var n=t.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||n.data==="$?"||n.data==="$!"))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if(t.flags&128)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var ds=[];function Dc(){for(var e=0;en?n:4,e(!0);var r=ps.transition;ps.transition={};try{e(!1),t()}finally{le=n,ps.transition=r}}function kv(){return Pt().memoizedState}function Cx(e,t,n){var r=zn(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},Cv(e))Sv(t,n);else if(n=tv(e,t,n,r),n!==null){var i=Xe();$t(n,e,r,i),qv(n,t,r)}}function Sx(e,t,n){var r=zn(e),i={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(Cv(e))Sv(t,i);else{var o=e.alternate;if(e.lanes===0&&(o===null||o.lanes===0)&&(o=t.lastRenderedReducer,o!==null))try{var a=t.lastRenderedState,u=o(a,n);if(i.hasEagerState=!0,i.eagerState=u,Ft(u,a)){var s=t.interleaved;s===null?(i.next=i,zc(t)):(i.next=s.next,s.next=i),t.interleaved=i;return}}catch{}finally{}n=tv(e,t,i,r),n!==null&&(i=Xe(),$t(n,e,r,i),qv(n,t,r))}}function Cv(e){var t=e.alternate;return e===ke||t!==null&&t===ke}function Sv(e,t){$i=Fa=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function qv(e,t,n){if(n&4194240){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Cc(e,n)}}var Da={readContext:qt,useCallback:Ge,useContext:Ge,useEffect:Ge,useImperativeHandle:Ge,useInsertionEffect:Ge,useLayoutEffect:Ge,useMemo:Ge,useReducer:Ge,useRef:Ge,useState:Ge,useDebugValue:Ge,useDeferredValue:Ge,useTransition:Ge,useMutableSource:Ge,useSyncExternalStore:Ge,useId:Ge,unstable_isNewReconciler:!1},qx={readContext:qt,useCallback:function(e,t){return Bt().memoizedState=[e,t===void 0?null:t],e},useContext:qt,useEffect:Vd,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,ca(4194308,4,yv.bind(null,t,e),n)},useLayoutEffect:function(e,t){return ca(4194308,4,e,t)},useInsertionEffect:function(e,t){return ca(4,2,e,t)},useMemo:function(e,t){var n=Bt();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=Bt();return t=n!==void 0?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=Cx.bind(null,ke,e),[r.memoizedState,e]},useRef:function(e){var t=Bt();return e={current:e},t.memoizedState=e},useState:Od,useDebugValue:Hc,useDeferredValue:function(e){return Bt().memoizedState=e},useTransition:function(){var e=Od(!1),t=e[0];return e=kx.bind(null,e[1]),Bt().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=ke,i=Bt();if(xe){if(n===void 0)throw Error(_(407));n=n()}else{if(n=t(),Fe===null)throw Error(_(349));cr&30||cv(r,t,n)}i.memoizedState=n;var o={value:n,getSnapshot:t};return i.queue=o,Vd(dv.bind(null,r,o,e),[e]),r.flags|=2048,lo(9,mv.bind(null,r,o,n,t),void 0,null),n},useId:function(){var e=Bt(),t=Fe.identifierPrefix;if(xe){var n=un,r=an;n=(r&~(1<<32-zt(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=uo++,0<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=a.createElement(n,{is:r.is}):(e=a.createElement(n),n==="select"&&(a=e,r.multiple?a.multiple=!0:r.size&&(a.size=r.size))):e=a.createElementNS(e,n),e[Gt]=t,e[io]=r,Av(e,t,!1,!1),t.stateNode=e;e:{switch(a=Zs(n,r),n){case"dialog":ge("cancel",e),ge("close",e),i=r;break;case"iframe":case"object":case"embed":ge("load",e),i=r;break;case"video":case"audio":for(i=0;iei&&(t.flags|=128,r=!0,ki(o,!1),t.lanes=4194304)}else{if(!r)if(e=Ua(a),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),ki(o,!0),o.tail===null&&o.tailMode==="hidden"&&!a.alternate&&!xe)return He(t),null}else 2*je()-o.renderingStartTime>ei&&n!==1073741824&&(t.flags|=128,r=!0,ki(o,!1),t.lanes=4194304);o.isBackwards?(a.sibling=t.child,t.child=a):(n=o.last,n!==null?n.sibling=a:t.child=a,o.last=a)}return o.tail!==null?(t=o.tail,o.rendering=t,o.tail=t.sibling,o.renderingStartTime=je(),t.sibling=null,n=we.current,he(we,r?n&1|2:n&1),t):(He(t),null);case 22:case 23:return Zc(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&t.mode&1?pt&1073741824&&(He(t),t.subtreeFlags&6&&(t.flags|=8192)):He(t),null;case 24:return null;case 25:return null}throw Error(_(156,t.tag))}function Rx(e,t){switch(_c(t),t.tag){case 1:return at(t.type)&&_a(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Jr(),be(ot),be(Qe),Dc(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return Fc(t),null;case 13:if(be(we),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(_(340));Yr()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return be(we),null;case 4:return Jr(),null;case 10:return Tc(t.type._context),null;case 22:case 23:return Zc(),null;case 24:return null;default:return null}}var Mo=!1,Ke=!1,Ax=typeof WeakSet=="function"?WeakSet:Set,D=null;function Ir(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){Pe(e,t,r)}else n.current=null}function ql(e,t,n){try{n()}catch(r){Pe(e,t,r)}}var Fd=!1;function Ix(e,t){if(ll=La,e=Fh(),Oc(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var i=r.anchorOffset,o=r.focusNode;r=r.focusOffset;try{n.nodeType,o.nodeType}catch{n=null;break e}var a=0,u=-1,s=-1,l=0,c=0,m=e,p=null;t:for(;;){for(var d;m!==n||i!==0&&m.nodeType!==3||(u=a+i),m!==o||r!==0&&m.nodeType!==3||(s=a+r),m.nodeType===3&&(a+=m.nodeValue.length),(d=m.firstChild)!==null;)p=m,m=d;for(;;){if(m===e)break t;if(p===n&&++l===i&&(u=a),p===o&&++c===r&&(s=a),(d=m.nextSibling)!==null)break;m=p,p=m.parentNode}m=d}n=u===-1||s===-1?null:{start:u,end:s}}else n=null}n=n||{start:0,end:0}}else n=null;for(cl={focusedElem:e,selectionRange:n},La=!1,D=t;D!==null;)if(t=D,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,D=e;else for(;D!==null;){t=D;try{var x=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(x!==null){var y=x.memoizedProps,k=x.memoizedState,h=t.stateNode,v=h.getSnapshotBeforeUpdate(t.elementType===t.type?y:At(t.type,y),k);h.__reactInternalSnapshotBeforeUpdate=v}break;case 3:var g=t.stateNode.containerInfo;g.nodeType===1?g.textContent="":g.nodeType===9&&g.documentElement&&g.removeChild(g.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(_(163))}}catch(S){Pe(t,t.return,S)}if(e=t.sibling,e!==null){e.return=t.return,D=e;break}D=t.return}return x=Fd,Fd=!1,x}function Ui(e,t,n){var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var i=r=r.next;do{if((i.tag&e)===e){var o=i.destroy;i.destroy=void 0,o!==void 0&&ql(t,n,o)}i=i.next}while(i!==r)}}function pu(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function Pl(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function zv(e){var t=e.alternate;t!==null&&(e.alternate=null,zv(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[Gt],delete t[io],delete t[pl],delete t[yx],delete t[bx])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function $v(e){return e.tag===5||e.tag===3||e.tag===4}function Dd(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||$v(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Nl(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=Va));else if(r!==4&&(e=e.child,e!==null))for(Nl(e,t,n),e=e.sibling;e!==null;)Nl(e,t,n),e=e.sibling}function Ll(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(Ll(e,t,n),e=e.sibling;e!==null;)Ll(e,t,n),e=e.sibling}var De=null,It=!1;function En(e,t,n){for(n=n.child;n!==null;)Uv(e,t,n),n=n.sibling}function Uv(e,t,n){if(Kt&&typeof Kt.onCommitFiberUnmount=="function")try{Kt.onCommitFiberUnmount(ou,n)}catch{}switch(n.tag){case 5:Ke||Ir(n,t);case 6:var r=De,i=It;De=null,En(e,t,n),De=r,It=i,De!==null&&(It?(e=De,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):De.removeChild(n.stateNode));break;case 18:De!==null&&(It?(e=De,n=n.stateNode,e.nodeType===8?cs(e.parentNode,n):e.nodeType===1&&cs(e,n),Zi(e)):cs(De,n.stateNode));break;case 4:r=De,i=It,De=n.stateNode.containerInfo,It=!0,En(e,t,n),De=r,It=i;break;case 0:case 11:case 14:case 15:if(!Ke&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){i=r=r.next;do{var o=i,a=o.destroy;o=o.tag,a!==void 0&&(o&2||o&4)&&ql(n,t,a),i=i.next}while(i!==r)}En(e,t,n);break;case 1:if(!Ke&&(Ir(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(u){Pe(n,t,u)}En(e,t,n);break;case 21:En(e,t,n);break;case 22:n.mode&1?(Ke=(r=Ke)||n.memoizedState!==null,En(e,t,n),Ke=r):En(e,t,n);break;default:En(e,t,n)}}function Bd(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new Ax),t.forEach(function(r){var i=Wx.bind(null,e,r);n.has(r)||(n.add(r),r.then(i,i))})}}function Rt(e,t){var n=t.deletions;if(n!==null)for(var r=0;ri&&(i=a),r&=~o}if(r=i,r=je()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*zx(r/1960))-r,10e?16:e,jn===null)var r=!1;else{if(e=jn,jn=null,Wa=0,oe&6)throw Error(_(331));var i=oe;for(oe|=4,D=e.current;D!==null;){var o=D,a=o.child;if(D.flags&16){var u=o.deletions;if(u!==null){for(var s=0;sje()-Xc?rr(e,0):Yc|=n),ut(e,t)}function Kv(e,t){t===0&&(e.mode&1?(t=Ao,Ao<<=1,!(Ao&130023424)&&(Ao=4194304)):t=1);var n=Xe();e=dn(e,t),e!==null&&(yo(e,t,n),ut(e,n))}function Mx(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),Kv(e,n)}function Wx(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,i=e.memoizedState;i!==null&&(n=i.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(_(314))}r!==null&&r.delete(t),Kv(e,n)}var Qv;Qv=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||ot.current)nt=!0;else{if(!(e.lanes&n)&&!(t.flags&128))return nt=!1,Vx(e,t,n);nt=!!(e.flags&131072)}else nt=!1,xe&&t.flags&1048576&&Jh(t,Ia,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;ma(e,t),e=t.pendingProps;var i=Qr(t,Qe.current);Mr(t,n),i=Mc(null,t,r,e,i,n);var o=Wc();return t.flags|=1,typeof i=="object"&&i!==null&&typeof i.render=="function"&&i.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,at(r)?(o=!0,Ra(t)):o=!1,t.memoizedState=i.state!==null&&i.state!==void 0?i.state:null,$c(t),i.updater=mu,t.stateNode=i,i._reactInternals=t,bl(t,r,e,n),t=wl(null,t,r,!0,o,n)):(t.tag=0,xe&&o&&Vc(t),Ye(null,t,i,n),t=t.child),t;case 16:r=t.elementType;e:{switch(ma(e,t),e=t.pendingProps,i=r._init,r=i(r._payload),t.type=r,i=t.tag=Hx(r),e=At(r,e),i){case 0:t=El(null,t,r,e,n);break e;case 1:t=zd(null,t,r,e,n);break e;case 11:t=Id(null,t,r,e,n);break e;case 14:t=Td(null,t,r,At(r.type,e),n);break e}throw Error(_(306,r,""))}return t;case 0:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:At(r,i),El(e,t,r,i,n);case 1:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:At(r,i),zd(e,t,r,i,n);case 3:e:{if(Vv(t),e===null)throw Error(_(387));r=t.pendingProps,o=t.memoizedState,i=o.element,nv(e,t),$a(t,r,null,n);var a=t.memoizedState;if(r=a.element,o.isDehydrated)if(o={element:r,isDehydrated:!1,cache:a.cache,pendingSuspenseBoundaries:a.pendingSuspenseBoundaries,transitions:a.transitions},t.updateQueue.baseState=o,t.memoizedState=o,t.flags&256){i=Zr(Error(_(423)),t),t=$d(e,t,r,n,i);break e}else if(r!==i){i=Zr(Error(_(424)),t),t=$d(e,t,r,n,i);break e}else for(ft=An(t.stateNode.containerInfo.firstChild),gt=t,xe=!0,Tt=null,n=av(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(Yr(),r===i){t=pn(e,t,n);break e}Ye(e,t,r,n)}t=t.child}return t;case 5:return uv(t),e===null&&vl(t),r=t.type,i=t.pendingProps,o=e!==null?e.memoizedProps:null,a=i.children,ml(r,i)?a=null:o!==null&&ml(r,o)&&(t.flags|=32),Ov(e,t),Ye(e,t,a,n),t.child;case 6:return e===null&&vl(t),null;case 13:return _v(e,t,n);case 4:return Uc(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=Xr(t,null,r,n):Ye(e,t,r,n),t.child;case 11:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:At(r,i),Id(e,t,r,i,n);case 7:return Ye(e,t,t.pendingProps,n),t.child;case 8:return Ye(e,t,t.pendingProps.children,n),t.child;case 12:return Ye(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,i=t.pendingProps,o=t.memoizedProps,a=i.value,he(Ta,r._currentValue),r._currentValue=a,o!==null)if(Ft(o.value,a)){if(o.children===i.children&&!ot.current){t=pn(e,t,n);break e}}else for(o=t.child,o!==null&&(o.return=t);o!==null;){var u=o.dependencies;if(u!==null){a=o.child;for(var s=u.firstContext;s!==null;){if(s.context===r){if(o.tag===1){s=ln(-1,n&-n),s.tag=2;var l=o.updateQueue;if(l!==null){l=l.shared;var c=l.pending;c===null?s.next=s:(s.next=c.next,c.next=s),l.pending=s}}o.lanes|=n,s=o.alternate,s!==null&&(s.lanes|=n),gl(o.return,n,t),u.lanes|=n;break}s=s.next}}else if(o.tag===10)a=o.type===t.type?null:o.child;else if(o.tag===18){if(a=o.return,a===null)throw Error(_(341));a.lanes|=n,u=a.alternate,u!==null&&(u.lanes|=n),gl(a,n,t),a=o.sibling}else a=o.child;if(a!==null)a.return=o;else for(a=o;a!==null;){if(a===t){a=null;break}if(o=a.sibling,o!==null){o.return=a.return,a=o;break}a=a.return}o=a}Ye(e,t,i.children,n),t=t.child}return t;case 9:return i=t.type,r=t.pendingProps.children,Mr(t,n),i=qt(i),r=r(i),t.flags|=1,Ye(e,t,r,n),t.child;case 14:return r=t.type,i=At(r,t.pendingProps),i=At(r.type,i),Td(e,t,r,i,n);case 15:return Lv(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:At(r,i),ma(e,t),t.tag=1,at(r)?(e=!0,Ra(t)):e=!1,Mr(t,n),iv(t,r,i),bl(t,r,i,n),wl(null,t,r,!0,e,n);case 19:return Rv(e,t,n);case 22:return jv(e,t,n)}throw Error(_(156,t.tag))};function Yv(e,t){return wh(e,t)}function Gx(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Ct(e,t,n,r){return new Gx(e,t,n,r)}function tm(e){return e=e.prototype,!(!e||!e.isReactComponent)}function Hx(e){if(typeof e=="function")return tm(e)?1:0;if(e!=null){if(e=e.$$typeof,e===xc)return 11;if(e===Ec)return 14}return 2}function $n(e,t){var n=e.alternate;return n===null?(n=Ct(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function fa(e,t,n,r,i,o){var a=2;if(r=e,typeof e=="function")tm(e)&&(a=1);else if(typeof e=="string")a=5;else e:switch(e){case Pr:return ir(n.children,i,o,t);case bc:a=8,i|=8;break;case Bs:return e=Ct(12,n,t,i|2),e.elementType=Bs,e.lanes=o,e;case Ms:return e=Ct(13,n,t,i),e.elementType=Ms,e.lanes=o,e;case Ws:return e=Ct(19,n,t,i),e.elementType=Ws,e.lanes=o,e;case oh:return hu(n,i,o,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case rh:a=10;break e;case ih:a=9;break e;case xc:a=11;break e;case Ec:a=14;break e;case Cn:a=16,r=null;break e}throw Error(_(130,e==null?e:typeof e,""))}return t=Ct(a,n,t,i),t.elementType=e,t.type=r,t.lanes=o,t}function ir(e,t,n,r){return e=Ct(7,e,r,t),e.lanes=n,e}function hu(e,t,n,r){return e=Ct(22,e,r,t),e.elementType=oh,e.lanes=n,e.stateNode={isHidden:!1},e}function ys(e,t,n){return e=Ct(6,e,null,t),e.lanes=n,e}function bs(e,t,n){return t=Ct(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Kx(e,t,n,r,i){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Zu(0),this.expirationTimes=Zu(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Zu(0),this.identifierPrefix=r,this.onRecoverableError=i,this.mutableSourceEagerHydrationData=null}function nm(e,t,n,r,i,o,a,u,s){return e=new Kx(e,t,n,u,s),t===1?(t=1,o===!0&&(t|=8)):t=0,o=Ct(3,null,null,t),e.current=o,o.stateNode=e,o.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},$c(o),e}function Qx(e,t,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(eg)}catch(e){console.error(e)}}eg(),Jf.exports=bt;var tg=Jf.exports;const Xd=hr(tg);var Jd=tg;Fs.createRoot=Jd.createRoot,Fs.hydrateRoot=Jd.hydrateRoot;var e1=Object.create,am=Object.defineProperty,t1=Object.getOwnPropertyDescriptor,ng=Object.getOwnPropertyNames,n1=Object.getPrototypeOf,r1=Object.prototype.hasOwnProperty,rg=(e,t)=>function(){return t||(0,e[ng(e)[0]])((t={exports:{}}).exports,t),t.exports},i1=(e,t)=>{for(var n in t)am(e,n,{get:t[n],enumerable:!0})},o1=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of ng(t))!r1.call(e,i)&&i!==n&&am(e,i,{get:()=>t[i],enumerable:!(r=t1(t,i))||r.enumerable});return e},ig=(e,t,n)=>(n=e!=null?e1(n1(e)):{},o1(am(n,"default",{value:e,enumerable:!0}),e)),a1=rg({"../../node_modules/nearley/lib/nearley.js"(e,t){(function(n,r){typeof t=="object"&&t.exports?t.exports=r():n.nearley=r()})(e,function(){function n(c,m,p){return this.id=++n.highestId,this.name=c,this.symbols=m,this.postprocess=p,this}n.highestId=0,n.prototype.toString=function(c){var m=typeof c>"u"?this.symbols.map(l).join(" "):this.symbols.slice(0,c).map(l).join(" ")+" ● "+this.symbols.slice(c).map(l).join(" ");return this.name+" → "+m};function r(c,m,p,d){this.rule=c,this.dot=m,this.reference=p,this.data=[],this.wantedBy=d,this.isComplete=this.dot===c.symbols.length}r.prototype.toString=function(){return"{"+this.rule.toString(this.dot)+"}, from: "+(this.reference||0)},r.prototype.nextState=function(c){var m=new r(this.rule,this.dot+1,this.reference,this.wantedBy);return m.left=this,m.right=c,m.isComplete&&(m.data=m.build(),m.right=void 0),m},r.prototype.build=function(){var c=[],m=this;do c.push(m.right.data),m=m.left;while(m.left);return c.reverse(),c},r.prototype.finish=function(){this.rule.postprocess&&(this.data=this.rule.postprocess(this.data,this.reference,u.fail))};function i(c,m){this.grammar=c,this.index=m,this.states=[],this.wants={},this.scannable=[],this.completed={}}i.prototype.process=function(c){for(var m=this.states,p=this.wants,d=this.completed,x=0;x0&&m.push(" ^ "+d+" more lines identical to this"),d=0,m.push(" "+k)),p=k}},u.prototype.getSymbolDisplay=function(c){return s(c)},u.prototype.buildFirstStateStack=function(c,m){if(m.indexOf(c)!==-1)return null;if(c.wantedBy.length===0)return[c];var p=c.wantedBy[0],d=[c].concat(m),x=this.buildFirstStateStack(p,d);return x===null?null:[c].concat(x)},u.prototype.save=function(){var c=this.table[this.current];return c.lexerState=this.lexerState,c},u.prototype.restore=function(c){var m=c.index;this.current=m,this.table[m]=c,this.table.splice(m+1),this.lexerState=c.lexerState,this.results=this.finish()},u.prototype.rewind=function(c){if(!this.options.keepHistory)throw new Error("set option `keepHistory` to enable rewinding");this.restore(this.table[c])},u.prototype.finish=function(){var c=[],m=this.grammar.start,p=this.table[this.table.length-1];return p.states.forEach(function(d){d.rule.name===m&&d.dot===d.rule.symbols.length&&d.reference===0&&d.data!==u.fail&&c.push(d)}),c.map(function(d){return d.data})};function s(c){var m=typeof c;if(m==="string")return c;if(m==="object"){if(c.literal)return JSON.stringify(c.literal);if(c instanceof RegExp)return"character matching "+c;if(c.type)return c.type+" token";if(c.test)return"token matching "+String(c.test);throw new Error("Unknown symbol type: "+c)}}function l(c){var m=typeof c;if(m==="string")return c;if(m==="object"){if(c.literal)return JSON.stringify(c.literal);if(c instanceof RegExp)return c.toString();if(c.type)return"%"+c.type;if(c.test)return"<"+String(c.test)+">";throw new Error("Unknown symbol type: "+c)}}return{Parser:u,Grammar:o,Rule:n}})}}),u1=rg({"../../node_modules/moo/moo.js"(e,t){(function(n,r){typeof define=="function"&&define.amd?define([],r):typeof t=="object"&&t.exports?t.exports=r():n.moo=r()})(e,function(){var n=Object.prototype.hasOwnProperty,r=Object.prototype.toString,i=typeof new RegExp().sticky=="boolean";function o(C){return C&&r.call(C)==="[object RegExp]"}function a(C){return C&&typeof C=="object"&&!o(C)&&!Array.isArray(C)}function u(C){return C.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function s(C){var O=new RegExp("|"+C);return O.exec("").length-1}function l(C){return"("+C+")"}function c(C){if(!C.length)return"(?!)";var O=C.map(function(A){return"(?:"+A+")"}).join("|");return"(?:"+O+")"}function m(C){if(typeof C=="string")return"(?:"+u(C)+")";if(o(C)){if(C.ignoreCase)throw new Error("RegExp /i flag not allowed");if(C.global)throw new Error("RegExp /g flag is implied");if(C.sticky)throw new Error("RegExp /y flag is implied");if(C.multiline)throw new Error("RegExp /m flag is implied");return C.source}else throw new Error("Not a pattern: "+C)}function p(C,O){return C.length>O?C:Array(O-C.length+1).join(" ")+C}function d(C,O){for(var A=C.length,I=0;;){var B=C.lastIndexOf(` +`,A-1);if(B===-1||(I++,A=B,I===O)||A===0)break}var F=I0)throw new Error("RegExp has capture groups: "+me+` +Use (?: … ) instead`);if(!z.lineBreaks&&me.test(` +`))throw new Error("Rule should declare lineBreaks: "+me);T.push(l(te))}}var Ne=A&&A.fallback,We=i&&!Ne?"ym":"gm",lt=i||Ne?"":"|";F===!0&&(We+="u");var ct=new RegExp(c(T)+lt,We);return{regexp:ct,groups:L,fast:I,error:A||v}}function S(C){var O=g(h(C));return new j({start:O},"start")}function P(C,O,A){var I=C&&(C.push||C.next);if(I&&!A[I])throw new Error("Missing state '"+I+"' (in token '"+C.defaultType+"' of state '"+O+"')");if(C&&C.pop&&+C.pop!=1)throw new Error("pop must be 1 (in token '"+C.defaultType+"' of state '"+O+"')")}function E(C,O){var A=C.$all?h(C.$all):[];delete C.$all;var I=Object.getOwnPropertyNames(C);O||(O=I[0]);for(var B=Object.create(null),F=0;F{var a;const i={SyntaxError:"Erreur syntaxique",EvaluationError:"Erreur d'évaluation",SituationError:"Erreur lors de la mise à jour de la situation",UnknownRule:"Règle inconnue",PrivateRule:"Règle privée"},o=/error/i.test(e);return` +[ ${i[e]??e} ]`+(n&&"dottedName"in n&&((a=n.dottedName)!=null&&a.length)?` +➡️ Dans la règle "${n.dottedName}"`:"")+` +${o?"✖️":"⚠️"} ${t}`+(r?` +`+(o?" ":"ℹ️ ")+r.message:"")},xu=class extends H{constructor(e){super("InternalError",` +Erreur interne du moteur. + +Cette erreur est le signe d'un bug dans publicodes. Pour nous aider à le résoudre, vous pouvez copier ce texte dans un nouveau ticket : https://github.com/betagouv/mon-entreprise/issues/new. + +payload: +${JSON.stringify(e,null,2)} +`,e)}},s1=class extends xu{constructor(e){super(e)}};function Eu(e,t,n,r){e.warn(um("Avertissement",t,n,r))}function Zd(e,t){e.warn(um("Avertissement",`Cette règle est tagguée comme experimentale. + +Cela veut dire qu'elle peut être modifiée, renommée, ou supprimée sans qu'il n'y ait de changement de version majeure dans l'API. +`,{dottedName:t}))}function ep(e,t,n){if(e.has(t)){e.get(t).add(n);return}e.set(t,new Set([n]))}function l1(e,t){return Object.entries(t).reduce((n,[r,i])=>({...n,[r]:[...n[r]??[],...i]}),e)}var Yt=e=>{const t={};for(const n in e)t[n]=e[n];return t};function mo(e,t=!0){function n(r){const i=e(r,n);return i===!1?r:i===void 0?Rl(n,r):t?i:Rl(n,i)}return n}function og(e){function t(r){switch(e(r,t)){case"continue":Rl(n,r);return;case"stop":return}}const n=r=>(t(r),r);return t}function c1(e,t){const n={};for(const r in t)n[r]=e(t[r]);return n}var Rl=(e,t)=>{switch(t=m1(e,t),t.nodeKind){case"rule":return d1(e,t);case"reference":case"constant":return t;case"arrondi":return E1(e,t);case"simplifier unité":case"variable manquante":case"est non applicable":case"est non défini":return f1(e,t);case"barème":case"taux progressif":case"grille":return v1(e,t);case"une possibilité":return g1(e,t);case"durée":return b1(e,t);case"résoudre référence circulaire":return w1(e,t);case"inversion":return x1(e,t);case"operation":return y1(e,t);case"contexte":return C1(e,t);case"unité":return S1(e,t);case"variations":return q1(e,t);case"replacementRule":return p1(e,t);case"texte":return k1(e,t);case"condition":return P1(e,t);default:throw new s1(t)}},m1=(e,t)=>{if(!("sourceMap"in t)||!t.sourceMap||!t.sourceMap.args)return t;const n=t.sourceMap,r={};for(const i in n.args){const o=n.args[i];r[i]=Array.isArray(o)?o.map(a=>e(a)):e(o)}return{...t,sourceMap:{...n,args:r}}},d1=(e,t)=>{const n=Yt(t);n.suggestions={};for(const r in t.suggestions)n.suggestions[r]=e(t.suggestions[r]);return n.replacements=t.replacements.map(e),n.explanation={ruleDisabledByItsParent:t.explanation.ruleDisabledByItsParent,nullableParent:t.explanation.nullableParent?e(t.explanation.nullableParent):void 0,parents:t.explanation.parents.map(e),valeur:e(t.explanation.valeur)},n},p1=(e,t)=>({...t,definitionRule:e(t.definitionRule),replacedReference:e(t.replacedReference),whiteListedNames:t.whiteListedNames.map(e),blackListedNames:t.blackListedNames.map(e)}),f1=(e,t)=>({...t,explanation:e(t.explanation)});function h1(e,t){return t.map(n=>({...n,...n.plafond&&{plafond:e(n.plafond)},..."montant"in n&&{montant:e(n.montant)},..."taux"in n&&{taux:e(n.taux)}}))}var v1=(e,t)=>({...t,explanation:{assiette:e(t.explanation.assiette),multiplicateur:e(t.explanation.multiplicateur),tranches:h1(e,t.explanation.tranches)}}),g1=(e,t)=>({...t,explanation:t.explanation.map(e)}),y1=(e,t)=>{const n=Yt(t);return n.explanation=[e(t.explanation[0]),e(t.explanation[1])],n},b1=(e,t)=>({...t,explanation:{depuis:e(t.explanation.depuis),"jusqu'à":e(t.explanation["jusqu'à"])}}),x1=(e,t)=>({...t,explanation:{...t.explanation,inversionCandidates:t.explanation.inversionCandidates.map(e)}}),E1=(e,t)=>({...t,explanation:{valeur:e(t.explanation.valeur),arrondi:e(t.explanation.arrondi)}}),w1=(e,t)=>({...t,explanation:{...t.explanation,valeur:e(t.explanation.valeur)}}),k1=(e,t)=>({...t,explanation:t.explanation.map(n=>typeof n=="string"?n:e(n))}),C1=(e,t)=>({...t,explanation:{...t.explanation,contexte:t.explanation.contexte.map(([n,r])=>[e(n),e(r)]),valeur:e(t.explanation.valeur)}}),S1=(e,t)=>{const n=Yt(t);return n.explanation=e(t.explanation),n},q1=(e,t)=>({...t,explanation:t.explanation.map(({condition:n,consequence:r})=>({condition:e(n),consequence:r&&e(r)}))}),P1=(e,t)=>{const n=Yt(t);return n.explanation={si:e(t.explanation.si),alors:e(t.explanation.alors),sinon:e(t.explanation.sinon)},n},Bi={constant:e=>e};function Ie(e,t){if(Bi??(Bi={}),Bi[e])throw new H("EvaluationError",`Multiple evaluation functions registered for the nodeKind \x1B[4m${e}`,{dottedName:""});Bi[e]=t}var tp={isNullable:void 0,type:void 0};function N1(e,t,n){function r(o){if(!o||typeof o!="object")return tp;if(n.has(o))return n.get(o);n.set(o,tp);const a=i(o);return n.set(o,a),a}function i(o){switch(o.nodeKind){case"barème":case"durée":case"grille":case"taux progressif":return{isNullable:!1,type:"number"};case"est non défini":case"est non applicable":return{isNullable:!1,type:"boolean"};case"constant":return{isNullable:o.isNullable??o.nodeValue===null,type:o.type};case"operation":return{isNullable:["<","<=",">",">=","/","*"].includes(o.operationKind)?r(o.explanation[0]).isNullable||r(o.explanation[1]).isNullable:o.operationKind==="-"?r(o.explanation[0]).isNullable:!1,type:["<","<=",">",">=","=","!=","et","ou"].includes(o.operationKind)?"boolean":"number"};case"inversion":case"replacementRule":case"résoudre référence circulaire":return{isNullable:!1,type:"number"};case"texte":case"une possibilité":return{isNullable:!1,type:"string"};case"contexte":case"rule":case"arrondi":return r(o.explanation.valeur);case"unité":case"simplifier unité":case"variable manquante":return r(o.explanation);case"condition":return{isNullable:[o.explanation.si,o.explanation.alors,o.explanation.sinon].some(a=>r(a).isNullable),type:r(o.explanation.alors).type??r(o.explanation.sinon).type};case"variations":{const a=o.explanation.map(({consequence:u})=>r(u));return{isNullable:a.some(u=>u.isNullable),type:a.map(u=>u.type).find(u=>u!==void 0)}}case"reference":return r(t[o.dottedName])}}return e.forEach(o=>{const a=t[o];r(a),a.explanation.parents.forEach(r)}),n}var L1=e=>"missingVariables"in e?e.missingVariables:{},ag=(e={})=>Object.fromEntries(Object.entries(e).map(([t,n])=>[t,n+1])),pr=(e={},t={})=>Object.fromEntries([...Object.keys(e),...Object.keys(t)].map(n=>[n,(e[n]??0)+(t[n]??0)])),Nt=e=>e.map(L1).reduce(pr,{}),Xt=e=>({nodeValue:e,type:typeof e,isDefault:!0,nodeKind:"constant"}),yr={nodeKind:"constant",nodeValue:null,missingVariables:{},type:void 0,isNullable:!0},ug={nodeKind:"constant",nodeValue:void 0,missingVariables:{},type:void 0,isNullable:!1},Ka={...ug,type:"number"};function vn(e,t,n){let r,i;function o(a,u){r??(r=Y(n,po({dottedName:"INLINE_MECANISM"}))),i??(i={});for(const c in t)"par défaut"in t[c]&&(i[c]=Y(t[c]["par défaut"],po({})));Object.keys(t).length===1&&"valeur"in t&&(a={valeur:a});const s={};for(const c in a)s[c]=Y(a[c],u);const l=mo(c=>{if(c.nodeKind!=="reference"||!(c.name in t))return;const m=c.name;if(m in s)return s[m];if(m in i)return i[m];throw new H("SyntaxError",`Il manque la clé '${m} dans le mécanisme ${e}`,{dottedName:m})})(r);return l.sourceMap={mecanismName:e,args:s},l}return o.nom=e,Object.assign(o,"name",{value:`parse${sg(e)}Inline`})}function br(e,t,n){function r(i,o){Object.keys(t).length===1&&"valeur"in t&&(i={valeur:i});const a={};for(const s in i){const l=i[s];a[s]=Array.isArray(l)?l.map(c=>Y(c,o)):Y(l,o)}const u=Y(n(a),o);return u.sourceMap={mecanismName:e,args:a},u}return r.nom=e,Object.assign(r,"name",{value:`parse${sg(e)}Inline`})}function sg(e){return e.replace(/(?:^\w|[A-Z]|\b\w)/g,t=>t.toUpperCase()).replace(/\s+/g,"")}var j1=vn("abattement",{abattement:{},valeur:{}},{"-":["valeur","abattement"],plancher:0}),O1=vn("applicable si",{"applicable si":{},valeur:{}},{condition:{si:"applicable si != non",alors:"valeur",sinon:yr}}),sn=(e,t=n=>n)=>{if(e.includes(" /")||e.includes("/ "))throw new Error(`L'unité "${e}" ne doit pas contenir d'espace avant et après "/"`);const[n,...r]=e.split("/"),i=a=>_1(a.split(".").filter(Boolean).map(u=>t(u)));return{numerators:i(n),denominators:r.flatMap(a=>i(a))}},V1=/(\d+)(?!.*[A-Za-z])/g;function lg(e){const t={};return e.forEach(n=>{const r=n.match(V1);if(r!=null){const i=r[0],o=n.split(i)[0];t[o]=(t[o]??0)+ +i}else t[n]=(t[n]??0)+1}),t}function _1(e){const t=lg(e);return Object.entries(t).flatMap(([n,r])=>Array(r).fill(n))}function R1(e){const t=lg(e);return Object.entries(t).map(([n,r])=>r>1?`${n}${r}`:n)}var Ho=(e,t,n=r=>r)=>R1(e.map(r=>n(r,t))).join("."),np=2;function rt(e,t=np,n=r=>r){if(e===null||typeof e!="object")return typeof e=="string"?n(e,t):e;const r=wu(e),{numerators:i=[],denominators:o=[]}=r,a=i.length>0,u=o.length>0;return!a&&!u?"":a&&!u?Ho(i,t,n):!a&&u?`/${Ho(o,1,n)}`:`${Ho(i,np,n)}/${Ho(o,1,n)}`}var Mi={numerators:[],denominators:[]},qn=(e,t)=>{if(e==="/"){if(t.length!==2)throw new H("InternalError","Infer units of a division with units.length !== 2)",{});return qn("*",[t[0]||Mi,{numerators:(t[1]||Mi).denominators,denominators:(t[1]||Mi).numerators}])}const n=t.filter(Boolean);if(n.length<=1)return n[0];if(e==="*")return wu({numerators:n.flatMap(r=>(r==null?void 0:r.numerators)??[]),denominators:n.flatMap(r=>(r==null?void 0:r.denominators)??[])});if(e==="-"||e==="+")return t.find(r=>r)},cg=(e,t)=>Array.isArray(e)&&Array.isArray(t)?e.length===t.length&&e.every((n,r)=>e[r]===t[r]):e===t,rp=(e,t=cg)=>n=>{const r=n.findIndex(i=>t(i,e));return n.filter((i,o)=>o!==r)},wu=(e,t=cg)=>[...e.numerators,...e.denominators].reduce(({numerators:r,denominators:i},o)=>r.find(a=>t(o,a))&&i.find(a=>t(o,a))?{numerators:rp(o,t)(r),denominators:rp(o,t)(i)}:{numerators:r,denominators:i},e),ha={"mois/an":12,"jour/an":365,"jour/mois":365/12,"trimestre/an":4,"mois/trimestre":3,"jour/trimestre":365/12*3,"€/k€":10**3,"g/kg":10**3,"mg/g":10**3,"mg/kg":10**6,"m/km":10**3,"cm/m":10**2,"mm/cm":10**1,"mm/m":10**3,"cm/km":10**5,"mm/km":10**6};function ip(e,t){return ha[`${t}/${e}`]||ha[`${e}/${t}`]&&1/ha[`${e}/${t}`]}function Al(e,t){let n=100**(t.filter(r=>r==="%").length-e.filter(r=>r==="%").length);return[n]=e.reduce(([r,i],o)=>{const a=i.findIndex(s=>!!ip(o,s)),u=ip(o,i[a])||1;return[r*u,[...i.slice(0,a+1),...i.slice(a+1)]]},[n,t]),n}var op={"kW.h":"kWh","mn/h":"noeud"};function A1(e,t){return!e||!t?!1:e===t||e===op[t]||t===op[e]}function wo(e,t,n){const r=rt(e),i=rt(t);if(!A1(r,i)&&!T1(e,t))throw new H("EngineError",`Impossible de convertir l'unité '${r}' en '${i}'`,{});if(!n||e===void 0)return n;const[o,a]=ap(e||Mi),[u,s]=ap(t||Mi);return pg(n*a/s*Al(o.numerators,u.numerators)*Al(u.denominators,o.denominators))}var mg=I1(ha);function I1(e){return Object.keys(e).reduce((t,n)=>{const[r,i]=n.split("/"),o=t.findIndex(u=>u.has(r)),a=t.findIndex(u=>u.has(i));if(o>-1&&a>-1&&o!==a)throw new H("EngineError",`Invalid ratio ${n}`,{});return o===-1&&a===-1?t.push(new Set([r,i])):o>-1?t[o].add(i):a>-1&&t[a].add(r),t},[])}function dg(e,t){return e===t||mg.some(n=>n.has(e)&&n.has(t))}function pg(e){return+e.toFixed(16)}function fg(e){const{numerators:t,denominators:n}=wu(e,dg);return t.length&&t.every(r=>r==="%")?{numerators:["%"],denominators:n}:hg({numerators:t,denominators:n})}function ap(e,t=1){const n=Al(e.numerators,e.denominators);return[wu(hg(e),dg),t&&pg(t*n)]}var hg=e=>({numerators:e.numerators.filter(t=>t!=="%"),denominators:e.denominators.filter(t=>t!=="%")});function T1(e,t){if(e==null||t==null)return!0;const n=l=>l.reduce((c,m)=>{const p=mg.findIndex(x=>x.has(m)),d=p===-1?m:""+p;return{...c,[d]:1+(c[d]??0)}},{}),[r,i,o,a]=[e.numerators,e.denominators,t.numerators,t.denominators].map(n),u=l=>[...new Set(l)],s=[r,i,o,a].map(Object.keys).flat();return u(s).every(l=>(r[l]||0)-(i[l]||0)===(o[l]||0)-(a[l]||0)||l==="%")}function up(e,t){return+e.toFixed(t)}var z1=function(e){var i;const t=vg(this.evaluateNode(e.explanation.valeur)),n=t.nodeValue;let r=e.explanation.arrondi;if(n!==!1&&(r=this.evaluateNode(r),typeof r.nodeValue=="number"&&!((i=rt(r.unit))!=null&&i.match(/décimales?/))))throw new H("EvaluationError",`L'unité ${rt(r.unit)} de l'arrondi est inconnu. Vous devez utiliser l'unité “décimales”`,{dottedName:this.cache._meta.evaluationRuleStack[0]});return{...e,nodeValue:typeof t.nodeValue!="number"||!("nodeValue"in r)?t.nodeValue:typeof r.nodeValue=="number"?up(t.nodeValue,r.nodeValue):r.nodeValue===!0?up(t.nodeValue,0):r.nodeValue===void 0?void 0:t.nodeValue,explanation:{valeur:t,arrondi:r},missingVariables:Nt([t,r]),unit:t.unit}};function ku(e,t){return{explanation:{valeur:Y(e.valeur,t),arrondi:Y(e.arrondi,t)},nodeKind:ku.nom}}ku.nom="arrondi";Ie(ku.nom,z1);function vg(e){if(!e.unit)return e;const t=fg(e.unit);return or(t,e)}function or(e,t){return{...t,nodeValue:t.unit&&typeof t.nodeValue=="number"?wo(t.unit,e,t.nodeValue):t.nodeValue,unit:e}}var xs=({style:e,maximumFractionDigits:t=2,minimumFractionDigits:n=0,language:r})=>i=>{const o=e==="currency"&&t>=2&&n===0&&!Number.isInteger(i)?2:n;return Intl.NumberFormat(r,{style:e,currency:"EUR",maximumFractionDigits:t,minimumFractionDigits:o}).format(i)};function $1({maximumFractionDigits:e,minimumFractionDigits:t,language:n,formatUnit:r,unit:i,nodeValue:o}){if(typeof o!="number")return o;const a=i?rt(i,o,r):void 0;switch(a){case"€":return xs({style:"currency",maximumFractionDigits:e,minimumFractionDigits:t,language:n})(o);case"%":return xs({style:"percent",maximumFractionDigits:e,language:n})(o/100);default:return xs({style:"decimal",minimumFractionDigits:t,maximumFractionDigits:e,language:n})(o)+(typeof a=="string"?` ${a}`:"")}}function gg(e){return e&&e[0].toUpperCase()+e.slice(1)}var U1={fr:{true:"oui",false:"non"},en:{true:"yes",false:"no"}};function Un(e,{language:t="fr",displayedUnit:n,formatUnit:r,precision:i=2}={}){let o=typeof e=="number"||typeof e>"u"||e===null?e:e.nodeValue;if(typeof o=="number"&&Number.isNaN(o))return"Erreur dans le calcul du nombre";if(o===void 0)return"Pas encore défini";if(o===null)return"Non applicable";if(typeof o=="string")return o.replace("\\n",` +`);if(typeof o=="boolean")return U1[t][o];if(typeof o=="number"){let a=typeof e=="number"||typeof e>"u"||!("unit"in e)?void 0:e.unit;if(a){const u=vg({unit:a,nodeValue:o});a=u.unit,o=u.nodeValue}return $1({minimumFractionDigits:0,maximumFractionDigits:i,language:t,formatUnit:r,nodeValue:o,unit:n??a}).trim()}}var Jt={};i1(Jt,{contextNameToDottedName:()=>Il,cyclicDependencies:()=>K1,decodeRuleName:()=>J1,disambiguateReference:()=>Eg,disambiguateReferenceNode:()=>zl,encodeRuleName:()=>X1,findCommonAncestor:()=>xg,getChildrenRules:()=>Z1,isAccessible:()=>Cu,isExperimental:()=>Tl,nameLeaf:()=>yg,ruleParent:()=>bg,ruleParents:()=>ko,ruleWithDedicatedDocumentationPage:()=>eE,updateReferencesMapsFromReferenceNode:()=>lm});function Si(e,t){return e!=null&&Object.prototype.hasOwnProperty.call(e,t)}function sp(e){return function(){return e}}var F1="\0",lp="",cp=(e,t)=>{e[t]?e[t]++:e[t]=1},mp=(e,t)=>{--e[t]||delete e[t]},Vi=(e,t,n,r)=>{let i=""+t,o=""+n;if(!e&&i>o){const a=i;i=o,o=a}return i+lp+o+lp+(r===void 0?F1:r)},D1=(e,t,n,r)=>{let i=""+t,o=""+n;if(!e&&i>o){const u=i;i=o,o=u}const a={v:i,w:o};return r&&(a.name=r),a},Es=(e,t)=>Vi(e,t.v,t.w,t.name),B1=class{constructor(e={}){Se(this,"_nodeCount",0);Se(this,"_edgeCount",0);Se(this,"_isDirected");Se(this,"_label");Se(this,"_defaultNodeLabelFn");Se(this,"_defaultEdgeLabelFn");Se(this,"_nodes");Se(this,"_in");Se(this,"_preds");Se(this,"_out");Se(this,"_sucs");Se(this,"_edgeObjs");Se(this,"_edgeLabels");this._isDirected=Si(e,"directed")?e.directed:!0,this._label=void 0,this._defaultNodeLabelFn=sp(void 0),this._defaultEdgeLabelFn=sp(void 0),this._nodes={},this._in={},this._preds={},this._out={},this._sucs={},this._edgeObjs={},this._edgeLabels={}}isDirected(){return this._isDirected}setGraph(e){return this._label=e,this}graph(){return this._label}nodeCount(){return this._nodeCount}nodes(){return Object.keys(this._nodes)}setNode(e,t=void 0){return Si(this._nodes,e)?(arguments.length>1&&(this._nodes[e]=t),this):(this._nodes[e]=arguments.length>1?t:this._defaultNodeLabelFn(e),this._in[e]={},this._preds[e]={},this._out[e]={},this._sucs[e]={},++this._nodeCount,this)}setNodes(e,t){return e.forEach(n=>{t!==void 0?this.setNode(n,t):this.setNode(n)}),this}node(e){return this._nodes[e]}hasNode(e){return Si(this._nodes,e)}successors(e){const t=this._sucs[e];if(t)return Object.keys(t)}edgeCount(){return this._edgeCount}edges(){return Object.values(this._edgeObjs)}setEdge(e,t,n=void 0,r=void 0){e=""+e,t=""+t;const i=Vi(this._isDirected,e,t,r);if(Si(this._edgeLabels,i))return n!==void 0&&(this._edgeLabels[i]=n),this;this.setNode(e),this.setNode(t),this._edgeLabels[i]=n!==void 0?n:this._defaultEdgeLabelFn(e,t,r);const o=D1(this._isDirected,e,t,r);return e=o.v,t=o.w,Object.freeze(o),this._edgeObjs[i]=o,cp(this._preds[t],e),cp(this._sucs[e],t),this._in[t][i]=o,this._out[e][i]=o,this._edgeCount++,this}edge(e,t,n){const r=arguments.length===1?Es(this._isDirected,arguments[0]):Vi(this._isDirected,e,t,n);return this._edgeLabels[r]}hasEdge(e,t,n){const r=arguments.length===1?Es(this._isDirected,arguments[0]):Vi(this._isDirected,e,t,n);return Si(this._edgeLabels,r)}removeEdge(e,t,n){const r=arguments.length===1?Es(this._isDirected,arguments[0]):Vi(this._isDirected,e,t,n),i=this._edgeObjs[r];return i&&(e=i.v,t=i.w,delete this._edgeLabels[r],delete this._edgeObjs[r],mp(this._preds[t],e),mp(this._sucs[e],t),delete this._in[t][r],delete this._out[e][r],this._edgeCount--),this}outEdges(e,t=void 0){const n=this._out[e];if(n){const r=Object.values(n);return t===void 0?r:r.filter(function(i){return i.w===t})}}};function M1(e){let t=0;const n=[],r={},i=[];function o(a){const u=r[a]={onStack:!0,lowlink:t,index:t++};if(n.push(a),e.successors(a).forEach(function(s){Object.prototype.hasOwnProperty.call(r,s)?r[s].onStack&&(u.lowlink=Math.min(u.lowlink,r[s].index)):(o(s),u.lowlink=Math.min(u.lowlink,r[s].lowlink))}),u.lowlink===u.index){const s=[];let l;do l=n.pop(),r[l].onStack=!1,s.push(l);while(a!==l);i.push(s)}}return e.nodes().forEach(function(a){Object.prototype.hasOwnProperty.call(r,a)||o(a)}),i}function W1(e){return M1(e).filter(function(t){return t.length>1||t.length===1&&e.hasEdge(t[0],t[0])})}function G1(e){const t=new B1;return[...e.entries()].forEach(([n,r])=>{r.forEach(i=>{t.setEdge(n,i)})}),t}function H1(e,t){var o;function*n(a){let u=a;for(;;)yield t[u++%t.length]}const r=[];for(let a=0;au.length>a.length?a:u)}function K1(e){const{referencesMaps:t}=va(e),n=G1(t.referencesIn),i=W1(n).map(u=>u.reverse()),o=i.map(u=>H1(t.referencesIn,u)),a=i.map((u,s)=>Y1(n,u,o[s]));return[o,a]}var Q1=(e,t,n)=>{for(let r=0;r{e.outEdges(i).filter(({w:o})=>t.includes(o)).forEach(({v:o,w:a})=>{r.add(`"${o}" -> "${a}"`+(Q1(n,o,a)?" [color=red]":""))})}),`digraph Cycle { + ${[...r].join(`; + `)}; +}`}var fr=e=>e.split(" . "),sm=e=>e.join(" . "),yg=e=>{var t;return(t=fr(e).slice(-1))==null?void 0:t[0]},X1=e=>e==null?void 0:e.replace(/\s\.\s/g,"/").replace(/-/g,"‑").replace(/\s/g,"-"),J1=e=>e.replace(/\//g," . ").replace(/-/g," ").replace(/\u2011/g,"-"),Il=e=>e.endsWith("$SITUATION")?bg(e):e,bg=e=>sm(fr(e).slice(0,-1));function ko(e){return fr(e).slice(0,-1).map((t,n,r)=>sm(r.slice(0,n+1))).reverse()}var Z1=(e,t)=>Object.keys(e).filter(r=>r.startsWith(t)&&fr(r).length===fr(t).length+1);function xg(e,t){const n=fr(e),r=fr(t),i=n.findIndex((o,a)=>r[a]!==o);return i===-1?e:sm(n.slice(0,i))}function Cu(e,t,n){if(!(n in e))throw new H("InternalError",`La règle "${n}" n'existe pas`,{dottedName:n});const r=xg(t,n),i=[n,...ko(n),""];return i.slice(0,Math.max(i.indexOf(r)-1,0)).every(a=>!(a in e)||e[a].private===!1)}function Tl(e,t){if(!(t in e))throw new H("InternalError",`La règle "${t}" n'existe pas`,{dottedName:t});return[t,...ko(t)].some(r=>{var i;return r in e&&((i=e[r].rawNode)==null?void 0:i.experimental)==="oui"})}function ws(e,t){return e?e+" . "+t:t}function Eg(e,t="",n){const r=ko(t);if(r.push(t),n.startsWith("^ . ")){const u=n.match(/^(\^ \. )+/)[0].length/4;n=n.replace(/^(\^ \. )+/,""),r.splice(-u)}const i=r.pop();r.unshift(i),r.push("");const o=r.find(u=>{const s=ws(u,n);return!(s in e)||s===t?!1:Cu(e,t,s)});if(o!==void 0)return ws(o,n);if(t.endsWith(n))return t;const a=r.map(u=>ws(u,n));throw a.every(u=>!(u in e))?new H("SyntaxError",`La référence "${n}" est introuvable. +Vérifiez que l'orthographe et l'espace de nom sont corrects`,{dottedName:Il(t)}):new H("SyntaxError",`La règle "${a.find(u=>u in e)}" n'est pas accessible depuis "${t}". + Cela vient du fait qu'elle est privée ou qu'un de ses parent est privé`,{dottedName:Il(t)})}function eE(e){return e.virtualRule!==!0&&e.type!=="groupe"&&e.type!=="texte"&&e.type!=="paragraphe"&&e.type!=="notification"}function lm(e,t,n){e.nodeKind==="reference"&&(ep(t.referencesIn,n??e.contextDottedName,e.dottedName),ep(t.rulesThatUse,e.dottedName,n??e.contextDottedName))}function zl(e,t){if(e.nodeKind==="reference")return e.dottedName||(e.dottedName=Eg(t,e.contextDottedName,e.name),e.title=t[e.dottedName].title,e.acronym=t[e.dottedName].rawNode.acronyme),e}function tE(e,t,n){const r=t.privé==="oui"||e.startsWith("[privé] ");e=e.replace(/^\[privé\] /,"");const i=[n.dottedName,e].filter(Boolean).join(" . "),o=yg(i),a=gg(t.titre??o);if(n.parsedRules[i])throw new H("EvaluationError",`La référence '${i}' a déjà été définie`,{dottedName:i});const u={};for(const m in t)lw.includes(m)&&(u[m]=t[m]);if("formule"in t&&(u.valeur=t.formule),!r&&!i.endsWith("$SITUATION")){u["dans la situation"]=`${i} . $SITUATION`,u.avec=Yt(u.avec)??{};const m=Yt(ug);m.isNullable=t["possiblement non applicable"]==="oui",u.avec["[privé] $SITUATION"]={valeur:m},u["par défaut"]!=null&&(u["par défaut"]={valeur:u["par défaut"],"variable manquante":i})}const s=n.dottedName;n.dottedName=i,n.parsedRules[i]=void 0;const l={valeur:Y(u,n),parents:ko(i).map(m=>({dottedName:m,nodeKind:"reference",contextDottedName:n.dottedName}))},c={};if(t.suggestions)for(const m in t.suggestions)c[m]=Y(t.suggestions[m],n);return n.parsedRules[i]={dottedName:i,replacements:[...mw(t["rend non applicable"],n),...$g(t.remplace,n)],title:a,private:r,suggestions:c,nodeKind:"rule",explanation:l,rawNode:t,virtualRule:r},n.dottedName=s,n.parsedRules[i]}function wg(e,t){for(const n in e){let r=e[n];if((typeof r=="string"||typeof r=="number")&&(r={valeur:`${r}`}),typeof r!="object")throw new H("SyntaxError",`Rule ${n} is incorrectly written. Please give it a proper value.`,{dottedName:n});const i=r===null?{}:Yt(r);tE(n,i,t)}}Ie("rule",function(t){const{ruleDisabledByItsParent:n,nullableParent:r,parentMissingVariables:i}=kg(this,t);let o={...t.explanation.valeur,nodeValue:null,missingVariables:{}};return n||(this.cache._meta.evaluationRuleStack.filter(u=>u===t.dottedName).length>1?o={nodeValue:void 0}:(this.cache._meta.evaluationRuleStack.unshift(t.dottedName),o=this.evaluateNode(t.explanation.valeur),this.cache._meta.evaluationRuleStack.shift())),o.missingVariables??(o.missingVariables={}),nE(this,t,o),{...o,missingVariables:pr(o.missingVariables,i),...t,explanation:{parents:t.explanation.parents,valeur:o,nullableParent:r,ruleDisabledByItsParent:n}}});function nE(e,t,n){t.private===!0||!Cu(e.context.parsedRules,"",t.dottedName)||n.nodeValue===void 0&&!Object.keys(n.missingVariables).length&&(n.missingVariables[t.dottedName]=1)}function kg(e,t){var o,a,u;if(t.private)return{ruleDisabledByItsParent:!1,parentMissingVariables:{}};const n=e.context.nodesTypes,r=t.explanation.parents.find(s=>{var l,c;return((l=n.get(s))==null?void 0:l.isNullable)||((c=n.get(s))==null?void 0:c.type)==="boolean"});if(!r)return{ruleDisabledByItsParent:!1,parentMissingVariables:{}};if(!e.cache._meta.parentRuleStack.includes(t.dottedName)){e.cache._meta.parentRuleStack.unshift(t.dottedName);let s=Xt(!1);if((o=n.get(r))!=null&&o.isNullable&&(s=e.evaluateNode({nodeKind:"est non applicable",explanation:r})),s.nodeValue!==!0&&((a=n.get(r))==null?void 0:a.type)==="boolean"&&(s=e.evaluateNode({nodeKind:"operation",operator:"=",operationKind:"=",explanation:[r,Xt(!1)]})),e.cache._meta.parentRuleStack.shift(),s.nodeValue===!0)return{ruleDisabledByItsParent:!0,parentMissingVariables:s.missingVariables??{},nullableParent:r}}let i={};if(((u=n.get(r))==null?void 0:u.type)==="boolean"){const s=e.evaluateNode(r);return i=s.missingVariables??{},{ruleDisabledByItsParent:s.nodeValue===!1,parentMissingVariables:i,nullableParent:r}}return{ruleDisabledByItsParent:!1,parentMissingVariables:i,nullableParent:r}}function Cg(e,t){return wg(e.avec,t),Y(e.valeur,t)}Cg.nom="avec";var cm=(e,t)=>e.map((n,r)=>{if(!n.plafond&&r>e.length)throw new H("SyntaxError",`La tranche n°${r} du barème n'a pas de plafond précisé. Seule la dernière tranche peut ne pas être plafonnée`,{dottedName:""});return{...n,...n.taux!==void 0?{taux:Y(n.taux,t)}:{},...n.montant!==void 0?{montant:Y(n.montant,t)}:{},plafond:"plafond"in n?Y(n.plafond,t):{nodeValue:1/0,nodeKind:"constant",type:"number",isNullable:!1}}});function mm({multiplicateur:e,assiette:t,parsedTranches:n}){return n.reduce(([r,i],o,a)=>{if(i)return[[...r,{...o,isAfterActive:!0}],i];const u=this.evaluateNode(o.plafond),s=r[a-1]?r[a-1].plafond:{nodeValue:0};let l=u.nodeValue===void 0||e.nodeValue===void 0?void 0:u.nodeValue*e.nodeValue;try{l=l===1/0||l===0?l:wo(qn("*",[u.unit,e.unit]),t.unit,l)}catch(x){Eu(this.context.logger,`L'unité du plafond de la tranche n°${a+1} n'est pas compatible avec celle l'assiette`,{dottedName:this.cache._meta.evaluationRuleStack[0]},x)}const c=r[a-1]?r[a-1].plafondValue:0,m=c===void 0||t.nodeValue===void 0?void 0:c>t.nodeValue,p=[u,t,e,s];if(p.some(x=>x.nodeValue===void 0))return[[...r,{...o,plafond:u,plafondValue:l,plancherValue:c,nodeValue:void 0,isActive:void 0,isAfterActive:m,missingVariables:Nt(p)}],!1];if(r[a-1]&&c&&l<=c)throw new H("EvaluationError",`Le plafond de la tranche n°${a+1} a une valeur inférieure à celui de la tranche précédente`,{dottedName:this.cache._meta.evaluationRuleStack[0]});const d={...o,plafond:u,plancherValue:c,plafondValue:l,isAfterActive:m,isActive:t.nodeValue>=c&&t.nodeValue{if(r.isAfterActive)return{...r,nodeValue:0};const i=n(r.taux),o=Nt([i,r]);return[t.nodeValue,i.nodeValue,r.plafondValue,r.plancherValue].some(a=>a===void 0)?{...r,taux:i,nodeValue:void 0,missingVariables:o}:{...r,taux:i,..."unit"in t&&{unit:t.unit},nodeValue:(Math.min(t.nodeValue,r.plafondValue)-r.plancherValue)*wo(i.unit,sn(""),i.nodeValue),missingVariables:o}})}var oE=function(e){const t=this.evaluateNode.bind(this),n=this.evaluateNode(e.explanation.assiette),r=this.evaluateNode(e.explanation.multiplicateur);if(r.nodeValue===0)throw new H("EvaluationError","Le multiplicateur ne peut pas être nul",{dottedName:this.cache._meta.evaluationRuleStack[0]});let i=e.explanation.tranches,o=n.nodeValue;return[0,void 0,null].includes(n.nodeValue)||(i=iE(mm.call(this,{parsedTranches:e.explanation.tranches,assiette:n,multiplicateur:r}),n,t),o=i.reduce((a,{nodeValue:u})=>u==null?void 0:a+u,0)),{...e,nodeValue:o,missingVariables:Nt([n,r,...i]),explanation:{assiette:n,multiplicateur:r,tranches:i},unit:n.unit}};Ie("barème",oE);var aE=function(e){let t;const n=this.evaluateNode(e.explanation.si);let r=e.explanation.alors,i=e.explanation.sinon;if("unit"in n)throw new H("EvaluationError","La condition doit être de type booléen",{dottedName:this.cache._meta.evaluationRuleStack[0]});if(n.nodeValue===!0)r=this.evaluateNode(e.explanation.alors),r.isActive=!0,t=r;else if(n.nodeValue===!1)i=this.evaluateNode(e.explanation.sinon),t=i;else if(n.nodeValue===null)t=n;else if(n.nodeValue===void 0)i=this.evaluateNode(e.explanation.sinon),r=this.evaluateNode(e.explanation.alors),t={...n,missingVariables:Nt([i,r])};else throw new H("EvaluationError","La condition doit être de type booléen",{dottedName:this.cache._meta.evaluationRuleStack[0]});const o=t.unit??r.unit;return{nodeValue:t.nodeValue,missingVariables:pr(ag(n.missingVariables),t.missingVariables),...o!=null?{unit:o}:{},...e,explanation:{si:n,alors:r,sinon:i}}};function Sg(e,t){return{explanation:{si:Y(e.si,t),alors:Y(e.alors,t),sinon:Y(e.sinon,t)},nodeKind:"condition"}}Sg.nom="condition";Ie("condition",aE);function dm(e,t){const n=Y(e.valeur,t),r=Object.keys(e.contexte).map(o=>[Y(o,t),Y(e.contexte[o],t)]).sort(([o],[a])=>o.name.localeCompare(a.name)),i=sE(JSON.stringify(r));return{explanation:{valeur:n,contexte:r,subEngineId:i},nodeKind:dm.nom}}dm.nom="contexte";var uE=function(e){const t=Object.fromEntries(e.explanation.contexte.filter(([i,o])=>{const a=this.evaluateNode(i),u=this.evaluateNode(o);return a.nodeValue!==u.nodeValue||rt(a.unit)!==rt(u.unit)}).map(([i,o])=>[i.dottedName,o]));if(this.cache._meta.currentContexteSituation===JSON.stringify(t))return{...yr,...e};let n;this.context.subEngines.has(e.explanation.subEngineId)?n=this.context.subEngines.get(e.explanation.subEngineId):(n=this.shallowCopy(),n.context.subEngineId=e.explanation.subEngineId,this.context.subEngines.set(e.explanation.subEngineId,n),Object.keys(t).length&&(n.setSituation(t,{keepPreviousSituation:!0}),Object.entries(t).forEach(([i,o])=>{const a=this.cache.nodes.get(o);if(!a)throw new H("InternalError","The situation should have already been evaluated",{dottedName:this.context.dottedName});const u=n.context.parsedRules[i+" . $SITUATION"];if(!(u!=null&&u.explanation.valeur))throw new H("InternalError","The origin rule should be defined",{dottedName:this.context.dottedName});n.cache.nodes.set(u.explanation.valeur,a)}))),n.cache._meta.currentContexteSituation=JSON.stringify(t);const r=n.evaluateNode(e.explanation.valeur);return{...e,nodeValue:r.nodeValue,explanation:{...e.explanation,valeur:r},missingVariables:r.missingVariables,..."unit"in r&&{unit:r.unit}}};Ie("contexte",uE);function sE(e){let t=0;for(let n=0,r=e.length;n+e<10?`0${e}`:""+e;function Pg(e,t,n){const r=new Date(+e,+t-1,+n);if(!+r||r.getDate()!==+n)throw new H("SyntaxError",`La date ${n}/${t}/${e} n'est pas valide`,{dottedName:""});return`${ks(n)}/${ks(t)}/${ks(e)}`}function ti(e){const[t,n,r]=qg(e).split("/"),i=new Date(+r,+n-1,+t);return i.setMinutes(i.getMinutes()-i.getTimezoneOffset()),i}function lE(e){return Pg(e.getFullYear(),e.getMonth()+1,e.getDate())}function dp(e){return+e.slice(-4)}function pp(e){const[,t,n]=e.split("/");return`01/${(3*Math.floor((Number.parseInt(t,10)-1)/3)+1).toString().padStart(2,"0")}/${n}`}function Ng(e,t){return(ti(t).getTime()-ti(e).getTime())/864e5}function $l(e,t){const[n,r,i]=e.split("/").map(d=>+d),[o,a,u]=t.split("/").map(d=>+d),s=a-r+12*(u-i),l=new Date(i,r,0).getDate(),c=new Date(u,a,0).getDate(),m=(n-1)/l,p=o/c;return s-m+p}function Lg(e,t){const n=Ng(e,t),r=c=>c%4===0&&c%100!==0||c%400===0,i=c=>c>=new Date(c.getFullYear(),2,1),o=ti(e),a=ti(t),u=o.getFullYear()+(i(o)?1:0),s=a.getFullYear()+(i(o)?0:-1),l=Array.from({length:s-u+1},(c,m)=>u+m).filter(r).length;return(n-l)/365}function cE(e,t){return Math.floor($l(pp(e),pp(t))/3)+1}function mE(e,t){const n="01/"+dp(e),r="01/"+dp(t);return Math.floor(Lg(n,r))+1}var dE=function(e){const t=this.evaluateNode(e.explanation.depuis),n=this.evaluateNode(e.explanation["jusqu'à"]),r=t.nodeValue,i=n.nodeValue;let o;if(r===null||i===null)o=null;else if(r===void 0||i===void 0)o=void 0;else switch(e.unit.numerators[0]){case"jour":o=Ng(r,i);break;case"mois":o=$l(r,i);break;case"an":o=Lg(r,i);break;case"trimestre":o=$l(r,i)/3;break;case"trimestre civil":o=cE(r,i);break;case"année civile":o=mE(r,i);break}return typeof o=="number"&&(o=Math.max(0,o)),{...e,missingVariables:Nt([t,n]),nodeValue:o,explanation:{depuis:t,"jusqu'à":n}}},fp=Xt(lE(new Date)),pE=(e,t)=>{const n={depuis:Y(e.depuis??fp,t),"jusqu'à":Y(e["jusqu'à"]??fp,t)},r=e.unité?sn(e.unité):sn("jour");if(r.denominators.length>0||r.numerators.length>1||!hp.includes(r.numerators[0]))throw new H("SyntaxError",`Seules les unités suivantes sont acceptées pour une durée : ${hp.join(", ")}. + L'unité fournie est: ${r.numerators[0]}`,{dottedName:t.dottedName});return{explanation:n,unit:r,nodeKind:"durée"}};Ie("durée",dE);var hp=["mois","jour","an","trimestre","trimestre civil","année civile"];function jg(e,t){return{explanation:Y(e,t),nodeKind:"est non défini"}}jg.nom="est non défini";var fE=vn("est défini",{valeur:{}},{"=":[{"est non défini":"valeur"},"non"]}),hE=vn("est applicable",{valeur:{}},{"=":[{"est non applicable":"valeur"},"non"]}),vE=function(e){const t=this.evaluateNode(e.explanation);let n=!1;return t.nodeValue===void 0&&(n=!0),{...e,nodeValue:n,missingVariables:t.missingVariables,explanation:t}};Ie("est non défini",vE);function Og(e,t){return{explanation:Y(e,t),nodeKind:"est non applicable"}}Og.nom="est non applicable";var Ko=e=>({nodeKind:"est non applicable",explanation:e}),gE=function(e){var r,i,o,a;const t=e.explanation;if(((r=this.context.nodesTypes.get(t))==null?void 0:r.isNullable)===!1&&t.nodeKind!=="rule"&&t.nodeKind!=="reference")return{...e,nodeValue:!1,missingVariables:{}};if(this.cache.nodes.has(t)&&this.cache.nodes.get(t)!==void 0)return{...e,nodeValue:((i=this.cache.nodes.get(t))==null?void 0:i.nodeValue)===null,missingVariables:((o=this.cache.nodes.get(t))==null?void 0:o.missingVariables)??{}};switch(t.nodeKind){case"rule":{const{ruleDisabledByItsParent:u,parentMissingVariables:s}=kg(this,t);if(u)return{...e,nodeValue:!0,missingVariables:s};const l=this.evaluateNode(Ko(t.explanation.valeur)),c=pr(s,l.missingVariables);return l.nodeValue===!1&&((a=this.context.nodesTypes.get(this.context.parsedRules[`${t.dottedName} . $SITUATION`]))!=null&&a.isNullable)&&!Object.keys(l.missingVariables).length&&(c[t.dottedName]=1),{...e,nodeValue:l.nodeValue,missingVariables:c}}case"reference":return{...this.evaluateNode(Ko(this.context.parsedRules[t.dottedName])),...e};case"condition":return{...this.evaluateNode({...t,explanation:{si:t.explanation.si,alors:Ko(t.explanation.alors),sinon:Ko(t.explanation.sinon)}}),...e}}const n=this.evaluateNode(t);return{...e,nodeValue:n.nodeValue===void 0?void 0:n.nodeValue===null,missingVariables:n.missingVariables}};Ie("est non applicable",gE);function yE(e,t){return{explanation:{assiette:Y(e.assiette,t),multiplicateur:e.multiplicateur?Y(e.multiplicateur,t):Xt(1),tranches:cm(e.tranches,t)},nodeKind:"grille"}}var bE=function(e){var s;const t=this.evaluateNode.bind(this),n=this.evaluateNode(e.explanation.assiette),r=this.evaluateNode(e.explanation.multiplicateur);if(r.nodeValue===0)throw new H("EvaluationError","Le multiplicateur ne peut pas être nul",{dottedName:this.cache._meta.evaluationRuleStack[0]});const i=mm.call(this,{parsedTranches:e.explanation.tranches,assiette:n,multiplicateur:r}).map(l=>{if(l.isActive===!1)return l;const c=t(l.montant);return{...l,montant:c,nodeValue:c.nodeValue,unit:c.unit,missingVariables:Nt([c,l])}});let o;const a=i.find(l=>l.isActive);a?o=[a]:i[i.length-1].isAfterActive===!1?o=[{nodeValue:!1}]:o=i.filter(l=>l.isActive===void 0);const u=o[0]?o[0].isActive===void 0?void 0:o[0].nodeValue:!1;return{...e,nodeValue:u,missingVariables:Nt([n,r,...o]),explanation:{...e.explanation,assiette:n,multiplicateur:r,tranches:i},unit:((s=o[0])==null?void 0:s.unit)??void 0}};Ie("grille",bE);function Vg(e,t,n,r=0,i=100,o=0){let a=t,u=n,s=a,l=e(a),c=e(u),m=l,p,d,x,y,k,h;for(;i-- >0;){if(x=u-a,Math.abs(m)=p&&Math.abs(l)>Math.abs(c)){let v,g;const S=s-u;a===s?(v=c/l,y=S*v,k=1-v):(k=l/m,v=c/m,g=c/l,y=g*(S*k*(k-v)-(u-a)*(v-1)),k=(k-1)*(v-1)*(g-1)),y>0?k=-k:y=-y,y<.75*S*k-Math.abs(p*k)/2&&y0?p:-p),a=u,l=c,u+=d,c=e(u),(c>0&&m>0||c<0&&m<0)&&(s=a,m=l),Math.abs(c){if(this.cache._meta.evaluationRuleStack.includes(h.dottedName))return!1;const v=t.evaluateNode(t.context.parsedRules[`${h.dottedName} . $SITUATION`]);return typeof v.nodeValue=="number"&&!(h.dottedName in v.missingVariables)});if(n===void 0)return{...e,nodeValue:void 0,missingVariables:{...Object.fromEntries(e.explanation.inversionCandidates.map(h=>[h.dottedName,1])),[e.explanation.ruleToInverse]:1}};const r=t.evaluateNode(n);let i=0;t.setSituation({[n.dottedName]:Ka},{keepPreviousSituation:!0}),t.cache.traversedVariablesStack=this.cache.traversedVariablesStack?[]:void 0;let o;const a=h=>(i++,t.setSituation({[e.explanation.ruleToInverse]:{nodeValue:h,nodeKind:"constant",type:"number",unit:r.unit}},{keepPreviousSituation:!0}),t.cache.traversedVariablesStack=this.cache.traversedVariablesStack?[]:void 0,o=t.evaluateNode(n),o),u=r.nodeValue;let s;const l=u,m=a(l).nodeValue,p=m>u?.9:1.2,d=m!==void 0?l*u*p/m:2e3,y=a(d).nodeValue,k=this.context.inversionMaxIterations??10;if(m!==void 0||y!==void 0){const h=P=>(P===l?m:P===d?y:a(P).nodeValue)-u,v=y!==void 0&&ym||m>u)?d:m!==void 0&&my||y>u)?l:e.explanation.min,g=y!==void 0&&y>u&&(yu&&(me.explanation.max)&&(s=void 0)}if(s==null&&(this.cache.inversionFail=!0),this.cache.traversedVariablesStack){const h=this.cache.traversedVariablesStack[0];h&&(o.traversedVariables??[]).forEach(v=>h.add(v))}return{...e,nodeValue:s,unit:r.unit,explanation:{...e.explanation,inversionGoal:n,numberOfIteration:i,inversionFail:this.cache.inversionFail},missingVariables:o.missingVariables}},EE=(e,t)=>{let n=typeof e=="object"&&"avec"in e?e.avec:e;const r=typeof e=="object"&&"min"in e?e.min:-1e6,i=typeof e=="object"&&"max"in e?e.max:1e8,o=typeof e=="object"&&"tolérance d'erreur"in e?e["tolérance d'erreur"]:.1;if(e===null)throw new H("SyntaxError","Il manque les règles avec laquelle effectuer le calcul d'inversion dans le mécanisme `inversion numérique`",{dottedName:t.dottedName});return Array.isArray(n)||(n=[n]),{explanation:{ruleToInverse:t.dottedName,inversionCandidates:n.map(a=>({...Y(a,t)})),min:r,max:i,errorTolerance:o},nodeKind:"inversion"}};Ie("inversion",xE);var wE=br("le maximum de",{valeur:{type:"liste"}},({valeur:e})=>e.reduce((t,n)=>({condition:{si:{"est non applicable":"$INTERNAL valeur"},alors:"$INTERNAL acc",sinon:{condition:{si:{ou:[{"est non applicable":"$INTERNAL acc"},{">":["$INTERNAL valeur","$INTERNAL acc"]}]},alors:"$INTERNAL valeur",sinon:"$INTERNAL acc"}}},avec:{"[privé] $INTERNAL valeur":{valeur:n},"[privé] $INTERNAL acc":{valeur:t}}}),yr)),kE=br("le minimum de",{valeur:{type:"liste"}},({valeur:e})=>e.reduce((t,n)=>({condition:{si:{"est non applicable":"$INTERNAL valeur"},alors:"$INTERNAL acc",sinon:{condition:{si:{ou:[{"est non applicable":"$INTERNAL acc"},{"<":["$INTERNAL valeur","$INTERNAL acc"]}]},alors:"$INTERNAL valeur",sinon:"$INTERNAL acc"}}},avec:{"[privé] $INTERNAL valeur":{valeur:n},"[privé] $INTERNAL acc":{valeur:t}}}),yr));function Ul(e){return e.reverse().reduce((t,n)=>({"+":[n,t]}),yr)}var CE=br("somme",{valeur:{type:"liste"}},({valeur:e})=>Ul([...e])),SE=br("moyenne",{valeur:{type:"liste"}},({valeur:e})=>{const t=[...e];return{"/":[Ul(t),Ul(t.map(qE))]}});function qE(e){return{"applicable si":{"est applicable":e},valeur:1}}var PE=vn("non applicable si",{"non applicable si":{},valeur:{}},{condition:{si:"non applicable si = non",alors:"valeur",sinon:yr}}),NE=(e,t)=>(Array.isArray(e)&&(e={possibilités:e}),{...e,explanation:e.possibilités.map(n=>Y(n,t)),context:t.dottedName,nodeKind:"une possibilité"});Ie("une possibilité",e=>({...e,missingVariables:{[e.context]:1},nodeValue:void 0}));var _g={"*":[(e,t)=>e*t,"×"],"/":[(e,t)=>e/t,"∕"],"+":[(e,t)=>e+t],"-":[(e,t)=>e-t,"−"],"<":[(e,t)=>ee<=t,"≤"],">":[(e,t)=>e>t],">=":[(e,t)=>e>=t,"≥"],"=":[(e,t)=>(e??!1)===(t??!1)],"!=":[(e,t)=>(e??!1)!==(t??!1),"≠"],et:[(e,t)=>(e??!1)&&(t??!1)],ou:[(e,t)=>(e??!1)||(t??!1)]},LE=(e,t)=>(n,r)=>{const i=n.map(o=>Y(o,r));return{...n,nodeKind:"operation",operationKind:e,operator:t||e,explanation:i}},jE=function(e){var s;let t=this.evaluateNode(e.explanation[0]),n={...e,missingVariables:{}};if(t.nodeValue===null&&["<",">","<=",">=","/","*","-","et"].includes(e.operationKind)||t.nodeValue===0&&["/","*"].includes(e.operationKind)||t.nodeValue===!1&&e.operationKind==="et"||t.nodeValue===!0&&e.operationKind==="ou")return{...n,nodeValue:e.operationKind==="et"?!1:t.nodeValue,missingVariables:t.missingVariables};let r=this.evaluateNode(e.explanation[1]);if(n.explanation=[t,r],e.operationKind==="/"&&r.nodeValue===0)throw new H("EvaluationError","Division by zero",{dottedName:this.cache._meta.evaluationRuleStack[0]});if(r.nodeValue===null&&["<",">","<=",">=","/","*","et"].includes(e.operationKind)||r.nodeValue===0&&["*"].includes(e.operationKind)||r.nodeValue===!1&&e.operationKind==="et"||r.nodeValue===!0&&e.operationKind==="ou")return{...n,nodeValue:e.operationKind==="et"?!1:r.nodeValue,missingVariables:r.missingVariables};n.missingVariables=Nt([t,r]),(t.nodeValue===void 0||r.nodeValue===void 0)&&(n={...n,nodeValue:void 0});const i=["+","-"].includes(e.operationKind)&&rt(r.unit)==="%"&&rt(t.unit)!=="%";if(!("nodeValue"in n)&&!["/","*"].includes(e.operationKind)&&!i)try{t.unit&&"unit"in r?r=or(t.unit,r):r.unit&&(t=or(r.unit,t))}catch(l){Eu(this.context.logger,`Dans l'expression '${e.operationKind}', la partie gauche (unité: ${rt(t.unit)}) n'est pas compatible avec la partie droite (unité: ${rt(r.unit)})`,{dottedName:this.cache._meta.evaluationRuleStack[0]},l)}const o=_g[e.operationKind][0],a=t.nodeValue,u=r.nodeValue;if(n.nodeValue="nodeValue"in n?n.nodeValue:["<",">","<=",">=","*","/"].includes(e.operationKind)&&r.nodeValue===null?null:[a,u].every(l=>{var c;return typeof l=="string"&&((c=l.match)==null?void 0:c.call(l,/^[\d]{2}\/[\d]{2}\/[\d]{4}$/))})?o(ti(a).getTime(),ti(u).getTime()):o(a,u),e.operationKind==="*"&&((s=qn("*",[t.unit,r.unit]))!=null&&s.numerators.includes("%"))){const l=qn("*",[t.unit,r.unit]),c=n.nodeValue;return{...n,nodeValue:typeof c=="number"?c/100:c,unit:qn("*",[l,{numerators:[],denominators:["%"]}])}}if(i){const l=qn("*",[t.unit,r.unit]);return{...n,nodeValue:typeof t.nodeValue=="number"&&typeof r.nodeValue=="number"?t.nodeValue*(1+r.nodeValue/100*(e.operationKind==="-"?-1:1)):n.nodeValue,unit:qn("*",[l,{numerators:[],denominators:["%"]}])}}return e.operationKind==="*"||e.operationKind==="/"||e.operationKind==="-"||e.operationKind==="+"?{...n,unit:qn(e.operationKind,[t.unit,r.unit])}:n};Ie("operation",jE);var OE=Object.fromEntries(Object.entries(_g).map(([e,[,t]])=>[e,LE(e,t)])),VE=OE,_E=vn("par défaut",{"par défaut":{},valeur:{}},{condition:{si:{"est non défini":"valeur"},alors:"par défaut",sinon:"valeur"}}),RE=vn("plafond",{plafond:{},valeur:{}},{condition:{si:{et:["plafond != non","valeur > plafond"]},alors:"plafond",sinon:"valeur"}}),AE=vn("plancher",{plancher:{},valeur:{}},{condition:{si:{et:["plancher != non","valeur < plancher"]},alors:"plancher",sinon:"valeur"}});function IE(e){return e.reduce((t,n)=>({"*":[n,t]}),Xt(1))}var vp=br("produit",{valeur:{type:"liste"}},({valeur:e})=>({valeur:IE([...e]),"simplifier l'unité":"oui"})),TE=function(e){if(this.cache._meta.evaluationRuleStack.slice(1).includes(e.explanation.ruleToSolve))return{...Ka,...e};let t=0;const n=this.shallowCopy();n.cache._meta.parentRuleStack=[...this.cache._meta.parentRuleStack],n.cache._meta.evaluationRuleStack=[...this.cache._meta.evaluationRuleStack];const r=this.context.inversionMaxIterations??25,i=m=>(t++,n.setSituation({[e.explanation.ruleToSolve]:{...Ka,nodeValue:m}},{keepPreviousSituation:!0}),n.evaluateNode(e.explanation.valeur)),o=Symbol("inversion failed");let a=o;const u=1;let s=i(u);const l=s.nodeValue,c=s.unit;return l!==void 0&&(a=Vg(x=>x===u?l-u:(s=i(x),s.nodeValue-x),-1e6,1e8,.5,r,2)),a===o&&(a=void 0,this.cache.inversionFail=!0),a!==void 0&&(s=i(a)),{...e,unit:c,nodeValue:a,explanation:{...e.explanation,valeur:s,numberOfIterations:t},missingVariables:s.missingVariables}};function Rg(e,t){return{explanation:{ruleToSolve:t.dottedName,valeur:Y(e.valeur,t)},nodeKind:"résoudre référence circulaire"}}Rg.nom="résoudre la référence circulaire";Ie("résoudre référence circulaire",TE);function Ag(e,t){return{explanation:Y(e.valeur,t),nodeKind:"simplifier unité"}}Ag.nom="simplifier l'unité";Ie("simplifier unité",function(t){const n=this.evaluateNode(t.explanation),r=n.nodeValue,i={...n,...t,explanation:n};if(r==null)return i;if(!n.unit)return{...i,unit:n.unit};const o=fg(n.unit);return{...i,nodeValue:typeof r=="number"?wo(n.unit,o,r):r,unit:o}});var zE=vn("dans la situation",{valeur:{},"dans la situation":{}},{condition:{si:{"est non défini":"dans la situation"},alors:"valeur",sinon:"dans la situation"}});function $E(e,t){return{explanation:{assiette:Y(e.assiette,t),multiplicateur:e.multiplicateur?Y(e.multiplicateur,t):Xt(1),tranches:cm(e.tranches,t)},nodeKind:"taux progressif"}}var UE=function(e){const t=this.evaluateNode.bind(this),n=this.evaluateNode(e.explanation.assiette),r=this.evaluateNode(e.explanation.multiplicateur);if(r.nodeValue===0)throw new H("EvaluationError","Division by zero",{dottedName:""});const i=mm.call(this,{parsedTranches:e.explanation.tranches,assiette:n,multiplicateur:r}),o={...e,explanation:{tranches:i,assiette:n,multiplicateur:r},unit:sn("%")},a=i[i.length-1];if(i.every(({isActive:v})=>v===!1)||a.isActive&&a.plafond.nodeValue===1/0){const v=or(sn("%"),t(a.taux)),{nodeValue:g,missingVariables:S}=v;return a.taux=v,a.nodeValue=g,a.missingVariables=S,{...o,nodeValue:g,missingVariables:S}}if(i.every(({isActive:v})=>v!==!0)||typeof n.nodeValue!="number")return{...o,nodeValue:void 0,missingVariables:Nt(i)};const u=i.findIndex(({isActive:v})=>v===!0),s=i[u];s.taux=or(sn("%"),t(s.taux));const l=i[u-1];l&&(l.taux=or(sn("%"),t(l.taux)),l.isActive=!0);const c=l?l.taux:s.taux,m=[c,s.taux];if(m.some(v=>v.nodeValue===void 0))return s.nodeValue=void 0,{...o,nodeValue:void 0,missingVariables:Nt(m)};const p=c.nodeValue,d=s.taux.nodeValue,x=s.plancherValue,y=s.plafondValue,k=(d-p)/(y-x),h=p+(n.nodeValue-x)*k;return s.nodeValue=h,{...o,nodeValue:h,missingVariables:{}}};Ie("taux progressif",UE);var pm="texte";function Fl(e,t){const n=[];let r=0;for(const{0:i,index:o}of e.matchAll(/{{(.|\n)*?}}/g)){const a=i.slice(2,-2).trim(),u=Y(a,t);n.push(e.substring(r,o),u),r=(o??0)+i.length}return n.push(e.slice(r)),{nodeKind:pm,explanation:n}}Fl.nom=pm;Ie(pm,function(t){const n=t.explanation.map(r=>typeof r=="string"?r:this.evaluateNode(r));return{...t,explanation:n,missingVariables:Nt(t.explanation.filter(r=>typeof r!="string")),nodeValue:n.map(r=>typeof r=="string"?r:Un(r)).join("")}});var FE=br("toutes ces conditions",{valeur:{type:"liste"}},({valeur:e})=>e.reduce((t,n)=>({et:[t,n]}),"oui")),DE=br("une de ces conditions",{valeur:{type:"liste"}},({valeur:e})=>e.reduce((t,n)=>({ou:[t,n]}),"non"));function Su(e,t){const n=Y(e.valeur,t),r=sn(e.unité,t.getUnitKey);return{explanation:n,unit:r,nodeKind:Su.nom}}Su.nom="unité";Ie(Su.nom,function(t){const n=this.evaluateNode(t.explanation);let r=n.nodeValue;if(r!==null&&"unit"in t)try{r=wo(n.unit,t.unit,n.nodeValue)}catch(i){Eu(this.context.logger,"Erreur lors de la conversion d'unité explicite",{dottedName:this.cache._meta.evaluationRuleStack[0]},i)}return{...t,nodeValue:r,explanation:n,missingVariables:n.missingVariables}});function qu(e,t){return{missingVariable:e["variable manquante"],nodeKind:qu.nom,explanation:Y(e.valeur,t)}}qu.nom="variable manquante";Ie(qu.nom,function(t){const n=this.evaluateNode(t.explanation),r=Object.values(n.missingVariables).reduce((i,o)=>i>o?i:o,0);return{...t,nodeValue:n.nodeValue,unit:n.unit,explanation:n,missingVariables:pr(n.missingVariables,{[t.missingVariable]:r+1})}});function BE(e,t){return{explanation:e.map(({si:r,alors:i,sinon:o})=>o!==void 0?{consequence:Y(o,t),condition:Xt(!0)}:{consequence:Y(i,t),condition:Y(r,t)}),nodeKind:"variations"}}var ME=function(e){const[t,n,r]=e.explanation.reduce(([i,o,a,u],{condition:s,consequence:l},c)=>{if(u===!0)return[i,[...o,{condition:s,consequence:l}],a,u];const m=this.evaluateNode(s),p=u===void 0?u:!u&&(m.nodeValue===void 0?void 0:m.nodeValue!==!1&&m.nodeValue!==null);if(p===!1||p===null)return[i,[...o,{condition:m,consequence:l}],a,u];let d;if(m.nodeValue!==!1&&m.nodeValue!==null&&(d=this.evaluateNode(l),a))try{d=or(a,d)}catch(x){Eu(this.context.logger,`L'unité de la branche n° ${c+1} du mécanisme 'variations' n'est pas compatible avec celle d'une branche précédente`,{dottedName:this.cache._meta.evaluationRuleStack[0]},x)}return[p&&(d==null?void 0:d.nodeValue),[...o,{condition:m,consequence:d??l}],a||(d==null?void 0:d.unit),u||p]},[null,[],void 0,!1]);return{...e,nodeValue:t,...r!==void 0&&{unit:r},explanation:n,missingVariables:n.reduce((i,{condition:o,consequence:a})=>pr(i,pr(ag(o.missingVariables),"nodeValue"in o&&o.nodeValue!==!1&&o.nodeValue!==null?a.missingVariables:{})),{})}};Ie("variations",ME);var WE=ig(a1()),Qo=([e,,t,,n])=>({[t.value.toLowerCase()]:[e,n]}),GE=([e,,t])=>({[e]:[zr([{value:"0"}]),t]}),gp=e=>({variable:e.value}),yp=([{value:e}])=>{},zr=([{value:e}])=>({constant:{type:"number",nodeValue:parseFloat(e)}}),HE=e=>({...zr(e),unité:e[2].value}),bp=([{value:e}])=>({constant:{type:"date",nodeValue:qg(e)}}),Cs=([{value:e}])=>({constant:{type:"boolean",nodeValue:e==="oui"}}),xp=([{value:e}])=>({constant:{type:"string",nodeValue:e.slice(1,-1)}}),KE=ig(u1());function qe(e){return e[0]}var QE="(?:(?:0?[1-9]|[12][0-9]|3[01])\\/)?(?:0?[1-9]|1[012])\\/\\d{4}",YE="[a-zA-ZÀ-ſ€$%°]",XE="[a-zA-ZÀ-ſ0-9',]",Dl=`${YE}(?:[-']?${XE}+)*`,JE="-?(?:[1-9][0-9]+|[0-9])(?:\\.[0-9]+)?",ie=KE.default.compile({"(":"(",")":")","[":"[","]":"]",comparison:[">","<",">=","<=","=","!="],date:new RegExp(QE),boolean:["oui","non"],number:new RegExp(JE),word:new RegExp(Dl),string:[/'.*'/,/".*"/],parentSelector:"^",JSONObject:/{.*}/,additionSubstraction:/[\+-]/,multiplicationDivision:["*","/"],dot:" . ",".":".",space:{match:/[\s]+/,lineBreaks:!0}}),Sr=e=>({value:e.map(t=>t&&t.value).join("")}),qi=e=>Sr(e.flat()),ZE=ie,ew=[{name:"main",symbols:["Comparison"],postprocess:qe},{name:"main",symbols:["NumericValue"],postprocess:qe},{name:"main",symbols:["Date"],postprocess:qe},{name:"main",symbols:["NonNumericTerminal"],postprocess:qe},{name:"main",symbols:["JSONObject"],postprocess:qe},{name:"NumericValue",symbols:["AdditionSubstraction"],postprocess:qe},{name:"NumericValue",symbols:["Negation"],postprocess:qe},{name:"NumericTerminal",symbols:["Variable"],postprocess:qe},{name:"NumericTerminal",symbols:["number"],postprocess:qe},{name:"Negation",symbols:[{literal:"-"},ie.has("space")?{type:"space"}:space,"Parentheses"],postprocess:GE},{name:"Parentheses",symbols:[{literal:"("},ie.has("space")?{type:"space"}:space,"NumericValue",ie.has("space")?{type:"space"}:space,{literal:")"}],postprocess:([,,e])=>e},{name:"Parentheses",symbols:[{literal:"("},"NumericValue",{literal:")"}],postprocess:([,e])=>e},{name:"Parentheses",symbols:["NumericTerminal"],postprocess:qe},{name:"Date",symbols:["Variable"],postprocess:qe},{name:"Date",symbols:[ie.has("date")?{type:"date"}:bp],postprocess:bp},{name:"Comparison",symbols:["Comparable",ie.has("space")?{type:"space"}:space,ie.has("comparison")?{type:"comparison"}:comparison,ie.has("space")?{type:"space"}:space,"Comparable"],postprocess:Qo},{name:"Comparison",symbols:["Date",ie.has("space")?{type:"space"}:space,ie.has("comparison")?{type:"comparison"}:comparison,ie.has("space")?{type:"space"}:space,"Date"],postprocess:Qo},{name:"Comparable$subexpression$1",symbols:["AdditionSubstraction"]},{name:"Comparable$subexpression$1",symbols:["NonNumericTerminal"]},{name:"Comparable",symbols:["Comparable$subexpression$1"],postprocess:([[e]])=>e},{name:"NonNumericTerminal",symbols:[ie.has("boolean")?{type:"boolean"}:Cs],postprocess:Cs},{name:"NonNumericTerminal",symbols:[ie.has("string")?{type:"string"}:xp],postprocess:xp},{name:"Variable",symbols:["VariableWithoutParentSelector"],postprocess:([e])=>gp(e)},{name:"Variable$ebnf$1",symbols:[]},{name:"Variable$ebnf$1$subexpression$1",symbols:[ie.has("parentSelector")?{type:"parentSelector"}:parentSelector,ie.has("dot")?{type:"dot"}:dot],postprocess:Sr},{name:"Variable$ebnf$1",symbols:["Variable$ebnf$1","Variable$ebnf$1$subexpression$1"],postprocess:function(t){return t[0].concat([t[1]])}},{name:"Variable",symbols:["Variable$ebnf$1","VariableWithoutParentSelector"],postprocess:e=>gp(qi(e))},{name:"VariableWithoutParentSelector$ebnf$1",symbols:[]},{name:"VariableWithoutParentSelector$ebnf$1$subexpression$1",symbols:[ie.has("dot")?{type:"dot"}:dot,"Words"],postprocess:Sr},{name:"VariableWithoutParentSelector$ebnf$1",symbols:["VariableWithoutParentSelector$ebnf$1","VariableWithoutParentSelector$ebnf$1$subexpression$1"],postprocess:function(t){return t[0].concat([t[1]])}},{name:"VariableWithoutParentSelector",symbols:["Words","VariableWithoutParentSelector$ebnf$1"],postprocess:e=>qi(e)},{name:"Words$ebnf$1$subexpression$1$ebnf$1",symbols:[ie.has("space")?{type:"space"}:space],postprocess:qe},{name:"Words$ebnf$1$subexpression$1$ebnf$1",symbols:[],postprocess:function(e){return null}},{name:"Words$ebnf$1$subexpression$1",symbols:["Words$ebnf$1$subexpression$1$ebnf$1","WordOrNumber"],postprocess:Sr},{name:"Words$ebnf$1",symbols:["Words$ebnf$1$subexpression$1"]},{name:"Words$ebnf$1$subexpression$2$ebnf$1",symbols:[ie.has("space")?{type:"space"}:space],postprocess:qe},{name:"Words$ebnf$1$subexpression$2$ebnf$1",symbols:[],postprocess:function(e){return null}},{name:"Words$ebnf$1$subexpression$2",symbols:["Words$ebnf$1$subexpression$2$ebnf$1","WordOrNumber"],postprocess:Sr},{name:"Words$ebnf$1",symbols:["Words$ebnf$1","Words$ebnf$1$subexpression$2"],postprocess:function(t){return t[0].concat([t[1]])}},{name:"Words",symbols:["WordOrKeyword","Words$ebnf$1"],postprocess:qi},{name:"Words",symbols:[ie.has("word")?{type:"word"}:Dl],postprocess:qe},{name:"WordOrKeyword",symbols:[ie.has("word")?{type:"word"}:Dl],postprocess:qe},{name:"WordOrKeyword",symbols:[ie.has("boolean")?{type:"boolean"}:Cs],postprocess:qe},{name:"WordOrNumber",symbols:["WordOrKeyword"],postprocess:qe},{name:"WordOrNumber",symbols:[ie.has("number")?{type:"number"}:zr],postprocess:qe},{name:"Unit$ebnf$1",symbols:[]},{name:"Unit$ebnf$1",symbols:["Unit$ebnf$1","UnitNumerator"],postprocess:function(t){return t[0].concat([t[1]])}},{name:"Unit$ebnf$2",symbols:[]},{name:"Unit$ebnf$2",symbols:["Unit$ebnf$2","UnitDenominator"],postprocess:function(t){return t[0].concat([t[1]])}},{name:"Unit",symbols:["Unit$ebnf$1","Unit$ebnf$2"],postprocess:qi},{name:"UnitNumerator",symbols:["Words"],postprocess:qe},{name:"UnitNumerator",symbols:[{literal:"."},"UnitNumerator"],postprocess:Sr},{name:"UnitDenominator$ebnf$1",symbols:[]},{name:"UnitDenominator$ebnf$1$subexpression$1",symbols:[ie.has("space")?{type:"space"}:space]},{name:"UnitDenominator$ebnf$1",symbols:["UnitDenominator$ebnf$1","UnitDenominator$ebnf$1$subexpression$1"],postprocess:function(t){return t[0].concat([t[1]])}},{name:"UnitDenominator$ebnf$2",symbols:["UnitNumerator"]},{name:"UnitDenominator$ebnf$2",symbols:["UnitDenominator$ebnf$2","UnitNumerator"],postprocess:function(t){return t[0].concat([t[1]])}},{name:"UnitDenominator",symbols:["UnitDenominator$ebnf$1",{literal:"/"},"UnitDenominator$ebnf$2"],postprocess:qi},{name:"AdditionSubstraction",symbols:["AdditionSubstraction",ie.has("space")?{type:"space"}:space,ie.has("additionSubstraction")?{type:"additionSubstraction"}:additionSubstraction,ie.has("space")?{type:"space"}:space,"MultiplicationDivision"],postprocess:Qo},{name:"AdditionSubstraction",symbols:["MultiplicationDivision"],postprocess:qe},{name:"MultiplicationDivision",symbols:["MultiplicationDivision",ie.has("space")?{type:"space"}:space,ie.has("multiplicationDivision")?{type:"multiplicationDivision"}:multiplicationDivision,ie.has("space")?{type:"space"}:space,"Parentheses"],postprocess:Qo},{name:"MultiplicationDivision",symbols:["Parentheses"],postprocess:qe},{name:"number",symbols:[ie.has("number")?{type:"number"}:zr],postprocess:zr},{name:"number$ebnf$1$subexpression$1",symbols:[ie.has("space")?{type:"space"}:space]},{name:"number$ebnf$1",symbols:["number$ebnf$1$subexpression$1"],postprocess:qe},{name:"number$ebnf$1",symbols:[],postprocess:function(e){return null}},{name:"number",symbols:[ie.has("number")?{type:"number"}:zr,"number$ebnf$1","Unit"],postprocess:HE},{name:"JSONObject",symbols:[ie.has("JSONObject")?{type:"JSONObject"}:yp],postprocess:yp}],tw="main",nw={Lexer:ZE,ParserRules:ew,ParserStart:tw},{Grammar:rw,Parser:iw}=WE.default,ow=rw.fromCompiled(nw),Bl=new iw(ow),aw=Bl.save();function Ig(e,t){const n=(e+"").replace(/\s*\n\s*/g," ").trim();try{Bl.restore(aw);const[r]=Bl.feed(n).results;if(r==null)throw new H("InternalError",` +Un problème est survenu lors du parsing de l'expression \`${n}\` : + + le parseur Nearley n'a pas réussi à parser l'expression. +`,{dottedName:t});return r}catch(r){throw r instanceof H?r:new H("SyntaxError",`\`${n}\` n'est pas une expression valide`,{dottedName:t},r)}}function uw(e,t){if(!t.dottedName)throw new H("InternalError","Une référence ne peut pas exister en dehors d'une règle (`context.dottedName` est vide)",{dottedName:e});if(!e)throw new H("SyntaxError","Une référence ne peut pas être vide",{dottedName:t.dottedName});return{nodeKind:"reference",name:e,contextDottedName:t.dottedName}}Ie("reference",function(t){if(!t.dottedName)throw new xu(t);const n=this.evaluateNode(this.context.parsedRules[t.dottedName]);return delete n.sourceMap,{...n,...t}});function Y(e,t){if(e==null)throw new H("SyntaxError",` + Une des valeurs de la formule est vide. + Vérifiez que tous les champs à droite des deux points sont remplis`,{dottedName:t.dottedName});if(typeof e=="boolean")throw new H("SyntaxError",` +Les valeurs booléennes true / false ne sont acceptées. +Utilisez leur contrepartie française : 'oui' / 'non'`,{dottedName:t.dottedName});const n=typeof e=="object"?e:Ig(e,t.dottedName);return"nodeKind"in n?n:{...sw(n,t),rawNode:e}}function Ep(e,t){if(Array.isArray(e))throw new H("SyntaxError",` +Il manque le nom du mécanisme pour le tableau : [${e.map(a=>`'${a}'`).join(", ")}] +Les mécanisme possibles sont : 'somme', 'le maximum de', 'le minimum de', 'toutes ces conditions', 'une de ces conditions'. + `,{dottedName:t.dottedName});const n=Object.keys(e);if(n.length>1)throw new H("SyntaxError",` +Les mécanismes suivants se situent au même niveau : ${n.map(a=>`'${a}'`).join(", ")} +Cela vient probablement d'une erreur dans l'indentation + `,{dottedName:t.dottedName});if(n.length===0)return{nodeKind:"constant",nodeValue:void 0};const r=n[0],i=e[r],o=zg[r];if(!o)throw new H("SyntaxError",`Le mécanisme "${r}" est inconnu. + +Vérifiez qu'il n'y ait pas d'erreur dans l'orthographe du nom.`,{dottedName:t.dottedName});try{return o(i,t)}catch(a){throw a instanceof H?a:new H("SyntaxError",r?`➡️ Dans le mécanisme ${r} +${a.message}`:a.message,{dottedName:t.dottedName})}}var Tg=[dm,qu,Cg,O1,PE,ku,Su,Ag,AE,RE,_E,zE,Rg,j1];function sw(e,t){const n=Tg.find(o=>o.nom in e);if(!n)return Ep(e,t);const{[n.nom]:r,...i}=e;return Ep({[n.nom]:{valeur:i,[n.nom]:r}},t)}var zg={...VE,...Tg.reduce((e,t)=>({[t.nom]:t,...e}),{}),"inversion numérique":EE,"le maximum de":wE,"le minimum de":kE,"taux progressif":$E,"toutes ces conditions":FE,"est non défini":jg,"est non applicable":Og,"est applicable":hE,"est défini":fE,"une de ces conditions":DE,"une possibilité":NE,condition:Sg,barème:rE,durée:pE,grille:yE,multiplication:vp,produit:vp,somme:CE,moyenne:SE,[Fl.nom]:Fl,valeur:Y,variable:uw,variations:BE,constant:e=>({type:e.type,fullPrecision:!0,isNullable:e.nodeValue==null,missingVariables:{},nodeValue:e.nodeValue,nodeKind:"constant"})},lw=Object.keys(zg),cw=0,Yo={};function $g(e,t){return e?(Array.isArray(e)?e:[e]).map(n=>{typeof n=="string"&&(n={"références à":n});const r=Y(n["références à"],t),[i,o]=[n.dans??[],n["sauf dans"]??[]].map(a=>Array.isArray(a)?a:[a]).map(a=>a.map(u=>Y(u,t)));if(n.priorité!=null&&(typeof n.priorité!="number"||n.priorité<0))throw new H("SyntaxError","La priorité du remplacement doit être un nombre positif",t);return{nodeKind:"replacementRule",rawNode:n,priority:n.priorité,definitionRule:Y(t.dottedName,t),replacedReference:r,replaceByNonApplicable:!1,whiteListedNames:i,blackListedNames:o,remplacementRuleId:cw++}}):[]}function mw(e,t){const n=$g(e,t);return n.forEach(r=>r.replaceByNonApplicable=!0),n}function dw(e){const t={};for(const n in e){const r=e[n];for(const i of r.replacements){if(!i.replacedReference.dottedName)throw new xu(i);const o=i.replacedReference.dottedName;t[o]=[...t[o]??[],i]}}return t}function pw({newRules:e,previousReplacements:t,parsedRules:n,referencesMaps:r}){const i=dw(e),o=new Set([]);for(const c in i){const m=r.rulesThatUse.get(c)??[];for(const p of m)o.add(p)}const a=new Set(Object.keys(e).filter(c=>[...r.referencesIn.get(c)??new Set].some(m=>(t[m]??[]).length))),u=l1(t,i);if(!a.size&&!o.size)return[n,u];const s=wp(t,r),l=wp(i,r);return a.forEach(c=>{n[c]=s(n[c])}),o.forEach(c=>{n[c]=l(n[c])}),[n,u]}function wp(e,t){return mo((n,r)=>{if(n.nodeKind==="replacementRule"||n.nodeKind==="inversion"||n.nodeKind==="une possibilité")return!1;if(n.nodeKind==="contexte")return{...n,explanation:{...n.explanation,valeur:r(n.explanation.valeur),contexte:n.explanation.contexte.map(([i,o])=>[i,r(o)])}};if(n.nodeKind==="reference"){if(!n.dottedName)throw new xu(n);const i=fw(n,e[n.dottedName]??[]);return og(o=>(lm(o,t,n.contextDottedName),"continue"))(i),i}})}function fw(e,t){const n=t.filter(({definitionRule:o})=>o.dottedName!==e.contextDottedName).filter(({whiteListedNames:o})=>!o.length||o.some(a=>e.contextDottedName.startsWith(a.dottedName))).filter(({blackListedNames:o})=>!o.length||o.every(a=>!e.contextDottedName.startsWith(a.dottedName))).reverse().sort((o,a)=>{const u=(a.priority??0)-(o.priority??0);return u!==0?u:a.definitionRule.dottedName.localeCompare(o.definitionRule.dottedName)});if(!n.length)return e;const r=n.map(o=>o.remplacementRuleId).join("-");if(Yo[r])return Yo[r];const i={nodeKind:"variations",explanation:[...n.map(({definitionRule:o,replaceByNonApplicable:a})=>a?{condition:o,consequence:yr}:{condition:hw(o),consequence:o}),{condition:Ug,consequence:e}]};return i.sourceMap={mecanismName:"replacement",args:{applicableReplacements:n,originalNode:e}},Yo[r]=i,Yo[r]}function hw(e){return{nodeKind:"condition",explanation:{si:{nodeKind:"est non applicable",explanation:e},alors:vw,sinon:Ug}}}var Ug=Xt(!0),vw=Xt(!1);function po(e){return{dottedName:"",logger:console,getUnitKey:t=>t,parsedRules:{},referencesMaps:{referencesIn:new Map,rulesThatUse:new Map},nodesTypes:new WeakMap,rulesReplacements:{},subEngines:new Map,subEngineId:void 0,strict:{situation:!0,noOrphanRule:!0,...e.strict},...e}}function Ss(e){return Object.assign({},e,{parsedRules:Yt(e.parsedRules),referencesMaps:{referencesIn:new Map(e.referencesMaps.referencesIn),rulesThatUse:new Map(e.referencesMaps.rulesThatUse)},subEngines:new Map})}function va(e,t=po({})){if(typeof e=="string")throw new H("EngineError","Publicodes does not parse yaml rule sets itself anymore. Please provide a parsed js object. E.g. the `eemeli/yaml` package.",{});const n=Yt(e),r=po(t),i=r.parsedRules;r.parsedRules={},wg(n,r);let o={};for(const c in i)o[c]=i[c];for(const c in r.parsedRules)o[c]=r.parsedRules[c];const[a,u]=gw(o,r.parsedRules,r.referencesMaps,!r.strict.noOrphanRule);let s;[o,s]=pw({parsedRules:o,newRules:a,referencesMaps:u,previousReplacements:r.rulesReplacements});const l=N1(Object.keys(a),o,r.nodesTypes);return{parsedRules:o,nodesTypes:l,referencesMaps:u,rulesReplacements:s}}function gw(e,t,n,r){const i=mo(u=>zl(u,e)),o=mo(u=>{const s=zl(u,e);return s&&lm(s,n),s});return[c1(u=>{if(u.nodeKind==="replacementRule")return i(u);if(u.nodeKind==="rule"){const s=u.explanation.parents.find(l=>!(l.dottedName in e));if(!r&&s)throw new H("SyntaxError",`La règle parente "${s.dottedName}" n'existe pas`,{dottedName:u.dottedName})}return o(u)},t),n]}function yw(e,t,n,r,i){var o;if(e!==void 0){if(n!==void 0){(o=n.traversedVariables)==null||o.forEach(a=>{var u;return(u=e[0])==null?void 0:u.add(a)});return}i&&e.unshift(new Set),t.nodeKind==="reference"&&t.dottedName&&t.dottedName in r&&e[0].add(t.dottedName)}}function bw(e,t){return!!e&&(e.length===0||t.nodeKind==="rule")}function xw(e,t,n){e!==void 0&&n&&(t.traversedVariables=Array.from(e.shift()??[]),e.length>0&&t.traversedVariables.forEach(r=>{e[0].add(r)}))}function Ew(e,t,n){var o,a,u,s,l;const r=typeof n=="string"?Ig(n,t):void 0,i=e.getParsedRules();return!(r&&"constant"in r&&r.constant.type==="string"&&!(`${t} . ${r.constant.nodeValue}`in i)&&((o=i[t].rawNode)!=null&&o["une possibilité"]||(u=(a=i[t].rawNode)==null?void 0:a.formule)!=null&&u["une possibilité"]||(l=(s=i[t].rawNode)==null?void 0:s.valeur)!=null&&l["une possibilité"]))}var Xo=()=>({_meta:{evaluationRuleStack:[],parentRuleStack:[]},traversedVariablesStack:void 0,nodes:new Map}),ww=class Fg{constructor(t={},n={}){Se(this,"baseContext");Se(this,"context");Se(this,"publicParsedRules");Se(this,"publicSituation");Se(this,"cache",Xo());Se(this,"checkExperimentalRule",og(t=>(t.nodeKind==="reference"&&Tl(this.context.parsedRules,t.dottedName)&&Zd(this.baseContext.logger,t.dottedName),"continue")));const r=n.strict??!0,i={dottedName:"",...n,strict:typeof r=="boolean"?{situation:r,noOrphanRule:n.allowOrphanRules===!0?!1:r}:r};this.baseContext=po({...i,...va(t,i)}),this.context=this.baseContext,this.publicParsedRules={};for(const o in this.baseContext.parsedRules){const a=this.baseContext.parsedRules[o];!a.private&&Cu(this.baseContext.parsedRules,"",o)&&(this.publicParsedRules[o]=a)}this.publicSituation={}}resetCache(){this.cache=Xo()}setSituation(t={},n={}){this.resetCache();const r=n.keepPreviousSituation??!1,i=n.strict??this.baseContext.strict.situation??!0;let o=Object.entries(t).filter(([u,s])=>{const l=this.checkSituationRule(u,s);if(!l)return!0;if(i)throw l;return this.baseContext.logger.error(l.message),!1});const a=this.context;if(r||(this.context=Ss(this.baseContext),this.publicSituation={}),i){const u=this.parseSituationRules(o);if(u)throw this.context=a,u}else o=o.filter(u=>{const s=this.parseSituationRules([u]);return s&&this.baseContext.logger.error(s.message),!s});return this.publicSituation=Object.assign(this.publicSituation,Object.fromEntries(o)),Object.keys(this.publicSituation).forEach(u=>{Tl(this.context.parsedRules,u)&&Zd(this.baseContext.logger,u),this.checkExperimentalRule(this.context.parsedRules[`${u} . $SITUATION`])}),this}inversionFail(){return!!this.cache.inversionFail}getRule(t){if(!(t in this.baseContext.parsedRules))throw new H("UnknownRule",`La règle '${t}' n'existe pas`,{dottedName:t});if(!(t in this.publicParsedRules))throw new H("PrivateRule",`La règle ${t} est une règle privée.`,{dottedName:t});return this.publicParsedRules[t]}getParsedRules(){return this.publicParsedRules}getSituation(){return this.publicSituation}evaluate(t){const n=this.cache.nodes.get(t);if(n)return n;this.context=Object.assign(this.context,va({"[privé] $EVALUATION":t&&typeof t=="object"&&"nodeKind"in t?{valeur:t}:t},this.context)),this.checkExperimentalRule(this.context.parsedRules.$EVALUATION),this.cache._meta=Xo()._meta;const r=this.evaluateNode(this.context.parsedRules.$EVALUATION.explanation.valeur);return this.cache.nodes.set(t,r),r}evaluateNode(t){const n=this.cache.nodes.get(t);let r=!1;if(this.cache.traversedVariablesStack&&(r=bw(this.cache.traversedVariablesStack,t),yw(this.cache.traversedVariablesStack,t,n,this.publicParsedRules,r)),n!==void 0)return n;if(!Bi[t.nodeKind])throw new H("EvaluationError",`Unknown "nodeKind": ${t.nodeKind}`,{dottedName:""});const i=Bi[t.nodeKind].call(this,t);return this.cache.traversedVariablesStack&&xw(this.cache.traversedVariablesStack,i,r),this.cache.nodes.set(t,i),i}shallowCopy(){const t=new Fg;return t.baseContext=Ss(this.baseContext),t.context=Ss(this.context),t.publicParsedRules=this.publicParsedRules,t.publicSituation=Yt(this.publicSituation),t.cache={...Xo(),nodes:new Map(this.cache.nodes)},t}checkSituationRule(t,n){if(!(t in this.baseContext.parsedRules)){const r=`'${t}' n'existe pas dans la base de règle.`;return new H("SituationError",r,{dottedName:t})}if(this.baseContext.parsedRules[t].private){const r=`La règle ${t} est une règle privée.`;return new H("SituationError",r,{dottedName:t})}if(!Ew(this,t,n)){const r=`La valeur ${n} ne fait pas parti des possibilités listées dans la base de règles.`;return new H("SituationError",r,{dottedName:t})}return!1}parseSituationRules(t){const n=Object.fromEntries(t.map(([r,i])=>[`[privé] ${r} . $SITUATION`,i&&typeof i=="object"&&"nodeKind"in i?{valeur:i}:i]));try{const r=va(n,this.context);return this.context=Object.assign(this.context,r),!1}catch(r){return new H("SituationError",r.message,{dottedName:r.dottedName})}}},kw=ww;const Cw="modulepreload",Sw=function(e){return"/"+e},kp={},qw=function(t,n,r){let i=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const o=document.querySelector("meta[property=csp-nonce]"),a=(o==null?void 0:o.nonce)||(o==null?void 0:o.getAttribute("nonce"));i=Promise.all(n.map(u=>{if(u=Sw(u),u in kp)return;kp[u]=!0;const s=u.endsWith(".css"),l=s?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${u}"]${l}`))return;const c=document.createElement("link");if(c.rel=s?"stylesheet":Cw,s||(c.as="script",c.crossOrigin=""),c.href=u,a&&c.setAttribute("nonce",a),document.head.appendChild(c),s)return new Promise((m,p)=>{c.addEventListener("load",m),c.addEventListener("error",()=>p(new Error(`Unable to preload CSS for ${u}`)))})}))}return i.then(()=>t()).catch(o=>{const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=o,window.dispatchEvent(a),!a.defaultPrevented)throw o})};var it=function(){return it=Object.assign||function(t){for(var n,r=1,i=arguments.length;r0?Ue(mi,--Lt):0,ri--,_e===10&&(ri=1,Nu--),_e}function Ut(){return _e=Lt2||Wl(_e)>3?"":" "}function Iw(e,t){for(;--t&&Ut()&&!(_e<48||_e>102||_e>57&&_e<65||_e>70&&_e<97););return ju(e,ya()+(t<6&&ar()==32&&Ut()==32))}function Gl(e){for(;Ut();)switch(_e){case e:return Lt;case 34:case 39:e!==34&&e!==39&&Gl(_e);break;case 40:e===41&&Gl(e);break;case 92:Ut();break}return Lt}function Tw(e,t){for(;Ut()&&e+_e!==57;)if(e+_e===84&&ar()===47)break;return"/*"+ju(t,Lt-1)+"*"+hm(e===47?e:Ut())}function zw(e){for(;!Wl(ar());)Ut();return ju(e,Lt)}function $w(e){return Rw(ba("",null,null,null,[""],e=_w(e),0,[0],e))}function ba(e,t,n,r,i,o,a,u,s){for(var l=0,c=0,m=a,p=0,d=0,x=0,y=1,k=1,h=1,v=0,g="",S=i,P=o,E=r,q=g;k;)switch(x=v,v=Ut()){case 40:if(x!=108&&Ue(q,m-1)==58){ga(q+=Z(qs(v),"&","&\f"),"&\f",Mg(l?u[l-1]:0))!=-1&&(h=-1);break}case 34:case 39:case 91:q+=qs(v);break;case 9:case 10:case 13:case 32:q+=Aw(x);break;case 92:q+=Iw(ya()-1,7);continue;case 47:switch(ar()){case 42:case 47:_i(Uw(Tw(Ut(),ya()),t,n,s),s);break;default:q+="/"}break;case 123*y:u[l++]=Wt(q)*h;case 125*y:case 59:case 0:switch(v){case 0:case 125:k=0;case 59+c:h==-1&&(q=Z(q,/\f/g,"")),d>0&&Wt(q)-m&&_i(d>32?qp(q+";",r,n,m-1,s):qp(Z(q," ","")+";",r,n,m-2,s),s);break;case 59:q+=";";default:if(_i(E=Sp(q,t,n,l,c,i,u,g,S=[],P=[],m,o),o),v===123)if(c===0)ba(q,t,E,E,S,o,m,u,P);else switch(p===99&&Ue(q,3)===110?100:p){case 100:case 108:case 109:case 115:ba(e,E,E,r&&_i(Sp(e,E,E,0,0,i,u,g,i,S=[],m,P),P),i,P,m,u,r?S:P);break;default:ba(q,E,E,E,[""],P,0,u,P)}}l=c=d=0,y=h=1,g=q="",m=a;break;case 58:m=1+Wt(q),d=x;default:if(y<1){if(v==123)--y;else if(v==125&&y++==0&&Vw()==125)continue}switch(q+=hm(v),v*y){case 38:h=c>0?1:(q+="\f",-1);break;case 44:u[l++]=(Wt(q)-1)*h,h=1;break;case 64:ar()===45&&(q+=qs(Ut())),p=ar(),c=m=Wt(g=q+=zw(ya())),v++;break;case 45:x===45&&Wt(q)==2&&(y=0)}}return o}function Sp(e,t,n,r,i,o,a,u,s,l,c,m){for(var p=i-1,d=i===0?o:[""],x=Gg(d),y=0,k=0,h=0;y0?d[v]+" "+g:Z(g,/&\f/g,d[v])))&&(s[h++]=S);return Lu(e,t,n,i===0?Pu:u,s,l,c,m)}function Uw(e,t,n,r){return Lu(e,t,n,Dg,hm(Ow()),ni(e,2,-2),0,r)}function qp(e,t,n,r,i){return Lu(e,t,n,fm,ni(e,0,r),ni(e,r+1,-1),r,i)}function Kg(e,t,n){switch(Lw(e,t)){case 5103:return se+"print-"+e+e;case 5737:case 4201:case 3177:case 3433:case 1641:case 4457:case 2921:case 5572:case 6356:case 5844:case 3191:case 6645:case 3005:case 6391:case 5879:case 5623:case 6135:case 4599:case 4855:case 4215:case 6389:case 5109:case 5365:case 5621:case 3829:return se+e+e;case 4789:return Wi+e+e;case 5349:case 4246:case 4810:case 6968:case 2756:return se+e+Wi+e+ye+e+e;case 5936:switch(Ue(e,t+11)){case 114:return se+e+ye+Z(e,/[svh]\w+-[tblr]{2}/,"tb")+e;case 108:return se+e+ye+Z(e,/[svh]\w+-[tblr]{2}/,"tb-rl")+e;case 45:return se+e+ye+Z(e,/[svh]\w+-[tblr]{2}/,"lr")+e}case 6828:case 4268:case 2903:return se+e+ye+e+e;case 6165:return se+e+ye+"flex-"+e+e;case 5187:return se+e+Z(e,/(\w+).+(:[^]+)/,se+"box-$1$2"+ye+"flex-$1$2")+e;case 5443:return se+e+ye+"flex-item-"+Z(e,/flex-|-self/g,"")+(rn(e,/flex-|baseline/)?"":ye+"grid-row-"+Z(e,/flex-|-self/g,""))+e;case 4675:return se+e+ye+"flex-line-pack"+Z(e,/align-content|flex-|-self/g,"")+e;case 5548:return se+e+ye+Z(e,"shrink","negative")+e;case 5292:return se+e+ye+Z(e,"basis","preferred-size")+e;case 6060:return se+"box-"+Z(e,"-grow","")+se+e+ye+Z(e,"grow","positive")+e;case 4554:return se+Z(e,/([^-])(transform)/g,"$1"+se+"$2")+e;case 6187:return Z(Z(Z(e,/(zoom-|grab)/,se+"$1"),/(image-set)/,se+"$1"),e,"")+e;case 5495:case 3959:return Z(e,/(image-set\([^]*)/,se+"$1$`$1");case 4968:return Z(Z(e,/(.+:)(flex-)?(.*)/,se+"box-pack:$3"+ye+"flex-pack:$3"),/s.+-b[^;]+/,"justify")+se+e+e;case 4200:if(!rn(e,/flex-|baseline/))return ye+"grid-column-align"+ni(e,t)+e;break;case 2592:case 3360:return ye+Z(e,"template-","")+e;case 4384:case 3616:return n&&n.some(function(r,i){return t=i,rn(r.props,/grid-\w+-end/)})?~ga(e+(n=n[t].value),"span",0)?e:ye+Z(e,"-start","")+e+ye+"grid-row-span:"+(~ga(n,"span",0)?rn(n,/\d+/):+rn(n,/\d+/)-+rn(e,/\d+/))+";":ye+Z(e,"-start","")+e;case 4896:case 4128:return n&&n.some(function(r){return rn(r.props,/grid-\w+-start/)})?e:ye+Z(Z(e,"-end","-span"),"span ","")+e;case 4095:case 3583:case 4068:case 2532:return Z(e,/(.+)-inline(.+)/,se+"$1$2")+e;case 8116:case 7059:case 5753:case 5535:case 5445:case 5701:case 4933:case 4677:case 5533:case 5789:case 5021:case 4765:if(Wt(e)-1-t>6)switch(Ue(e,t+1)){case 109:if(Ue(e,t+4)!==45)break;case 102:return Z(e,/(.+:)(.+)-([^]+)/,"$1"+se+"$2-$3$1"+Wi+(Ue(e,t+3)==108?"$3":"$2-$3"))+e;case 115:return~ga(e,"stretch",0)?Kg(Z(e,"stretch","fill-available"),t,n)+e:e}break;case 5152:case 5920:return Z(e,/(.+?):(\d+)(\s*\/\s*(span)?\s*(\d+))?(.*)/,function(r,i,o,a,u,s,l){return ye+i+":"+o+l+(a?ye+i+"-span:"+(u?s:+s-+o)+l:"")+e});case 4949:if(Ue(e,t+6)===121)return Z(e,":",":"+se)+e;break;case 6444:switch(Ue(e,Ue(e,14)===45?18:11)){case 120:return Z(e,/(.+:)([^;\s!]+)(;|(\s+)?!.+)?/,"$1"+se+(Ue(e,14)===45?"inline-":"")+"box$3$1"+se+"$2$3$1"+ye+"$2box$3")+e;case 100:return Z(e,":",":"+ye)+e}break;case 5719:case 2647:case 2135:case 3927:case 2391:return Z(e,"scroll-","scroll-snap-")+e}return e}function Ya(e,t){for(var n="",r=0;r-1&&!e.return)switch(e.type){case fm:e.return=Kg(e.value,e.length,n);return;case Bg:return Ya([kn(e,{value:Z(e.value,"@","@"+se)})],r);case Pu:if(e.length)return jw(n=e.props,function(i){switch(rn(i,r=/(::plac\w+|:read-\w+)/)){case":read-only":case":read-write":Cr(kn(e,{props:[Z(i,/:(read-\w+)/,":"+Wi+"$1")]})),Cr(kn(e,{props:[i]})),Ml(e,{props:Cp(n,r)});break;case"::placeholder":Cr(kn(e,{props:[Z(i,/:(plac\w+)/,":"+se+"input-$1")]})),Cr(kn(e,{props:[Z(i,/:(plac\w+)/,":"+Wi+"$1")]})),Cr(kn(e,{props:[Z(i,/:(plac\w+)/,ye+"input-$1")]})),Cr(kn(e,{props:[i]})),Ml(e,{props:Cp(n,r)});break}return""})}}var Ww={animationIterationCount:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1},dt={},ii=typeof process<"u"&&dt!==void 0&&(dt.REACT_APP_SC_ATTR||dt.SC_ATTR)||"data-styled",Qg="active",Yg="data-styled-version",Ou="6.1.8",vm=`/*!sc*/ +`,gm=typeof window<"u"&&"HTMLElement"in window,Gw=!!(typeof SC_DISABLE_SPEEDY=="boolean"?SC_DISABLE_SPEEDY:typeof process<"u"&&dt!==void 0&&dt.REACT_APP_SC_DISABLE_SPEEDY!==void 0&&dt.REACT_APP_SC_DISABLE_SPEEDY!==""?dt.REACT_APP_SC_DISABLE_SPEEDY!=="false"&&dt.REACT_APP_SC_DISABLE_SPEEDY:typeof process<"u"&&dt!==void 0&&dt.SC_DISABLE_SPEEDY!==void 0&&dt.SC_DISABLE_SPEEDY!==""&&dt.SC_DISABLE_SPEEDY!=="false"&&dt.SC_DISABLE_SPEEDY),Vu=Object.freeze([]),oi=Object.freeze({});function Hw(e,t,n){return n===void 0&&(n=oi),e.theme!==n.theme&&e.theme||t||n.theme}var Xg=new Set(["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","big","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","track","u","ul","use","var","video","wbr","circle","clipPath","defs","ellipse","foreignObject","g","image","line","linearGradient","marker","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","svg","text","tspan"]),Kw=/[!"#$%&'()*+,./:;<=>?@[\\\]^`{|}~-]+/g,Qw=/(^-|-$)/g;function Pp(e){return e.replace(Kw,"-").replace(Qw,"")}var Yw=/(a)(d)/gi,Jo=52,Np=function(e){return String.fromCharCode(e+(e>25?39:97))};function Hl(e){var t,n="";for(t=Math.abs(e);t>Jo;t=t/Jo|0)n=Np(t%Jo)+n;return(Np(t%Jo)+n).replace(Yw,"$1-$2")}var Ps,Jg=5381,$r=function(e,t){for(var n=t.length;n;)e=33*e^t.charCodeAt(--n);return e},Zg=function(e){return $r(Jg,e)};function Xw(e){return Hl(Zg(e)>>>0)}function Jw(e){return e.displayName||e.name||"Component"}function Ns(e){return typeof e=="string"&&!0}var ey=typeof Symbol=="function"&&Symbol.for,ty=ey?Symbol.for("react.memo"):60115,Zw=ey?Symbol.for("react.forward_ref"):60112,ek={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},tk={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},ny={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},nk=((Ps={})[Zw]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},Ps[ty]=ny,Ps);function Lp(e){return("type"in(t=e)&&t.type.$$typeof)===ty?ny:"$$typeof"in e?nk[e.$$typeof]:ek;var t}var rk=Object.defineProperty,ik=Object.getOwnPropertyNames,jp=Object.getOwnPropertySymbols,ok=Object.getOwnPropertyDescriptor,ak=Object.getPrototypeOf,Op=Object.prototype;function ry(e,t,n){if(typeof t!="string"){if(Op){var r=ak(t);r&&r!==Op&&ry(e,r,n)}var i=ik(t);jp&&(i=i.concat(jp(t)));for(var o=Lp(e),a=Lp(t),u=0;u0?" Args: ".concat(t.join(", ")):""))}var uk=function(){function e(t){this.groupSizes=new Uint32Array(512),this.length=512,this.tag=t}return e.prototype.indexOfGroup=function(t){for(var n=0,r=0;r=this.groupSizes.length){for(var r=this.groupSizes,i=r.length,o=i;t>=o;)if((o<<=1)<0)throw Co(16,"".concat(t));this.groupSizes=new Uint32Array(o),this.groupSizes.set(r),this.length=o;for(var a=i;a=this.length||this.groupSizes[t]===0)return n;for(var r=this.groupSizes[t],i=this.indexOfGroup(t),o=i+r,a=i;a=0){var r=document.createTextNode(n);return this.element.insertBefore(r,this.nodes[t]||null),this.length++,!0}return!1},e.prototype.deleteRule=function(t){this.element.removeChild(this.nodes[t]),this.length--},e.prototype.getRule=function(t){return t0&&(k+="".concat(h,","))}),s+="".concat(x).concat(y,'{content:"').concat(k,'"}').concat(vm)},c=0;c0?".".concat(t):p},c=s.slice();c.push(function(p){p.type===Pu&&p.value.includes("&")&&(p.props[0]=p.props[0].replace(yk,n).replace(r,l))}),a.prefix&&c.push(Mw),c.push(Fw);var m=function(p,d,x,y){d===void 0&&(d=""),x===void 0&&(x=""),y===void 0&&(y="&"),t=y,n=d,r=new RegExp("\\".concat(n,"\\b"),"g");var k=p.replace(bk,""),h=$w(x||d?"".concat(x," ").concat(d," { ").concat(k," }"):k);a.namespace&&(h=ay(h,a.namespace));var v=[];return Ya(h,Dw(c.concat(Bw(function(g){return v.push(g)})))),v};return m.hash=s.length?s.reduce(function(p,d){return d.name||Co(15),$r(p,d.name)},Jg).toString():"",m}var Ek=new oy,Ql=xk(),uy=vt.createContext({shouldForwardProp:void 0,styleSheet:Ek,stylis:Ql});uy.Consumer;vt.createContext(void 0);function Rp(){return V.useContext(uy)}var wk=function(){function e(t,n){var r=this;this.inject=function(i,o){o===void 0&&(o=Ql);var a=r.name+o.hash;i.hasNameForId(r.id,a)||i.insertRules(r.id,a,o(r.rules,a,"@keyframes"))},this.name=t,this.id="sc-keyframes-".concat(t),this.rules=n,bm(this,function(){throw Co(12,String(r.name))})}return e.prototype.getName=function(t){return t===void 0&&(t=Ql),this.name+t.hash},e}(),kk=function(e){return e>="A"&&e<="Z"};function Ap(e){for(var t="",n=0;n>>0);if(!n.hasNameForId(this.componentId,a)){var u=r(o,".".concat(a),void 0,this.componentId);n.insertRules(this.componentId,a,u)}i=nr(i,a),this.staticRulesId=a}else{for(var s=$r(this.baseHash,r.hash),l="",c=0;c>>0);n.hasNameForId(this.componentId,d)||n.insertRules(this.componentId,d,r(l,".".concat(d),void 0,this.componentId)),i=nr(i,d)}}return i},e}(),cy=vt.createContext(void 0);cy.Consumer;var Ls={};function Pk(e,t,n){var r=ym(e),i=e,o=!Ns(e),a=t.attrs,u=a===void 0?Vu:a,s=t.componentId,l=s===void 0?function(S,P){var E=typeof S!="string"?"sc":Pp(S);Ls[E]=(Ls[E]||0)+1;var q="".concat(E,"-").concat(Xw(Ou+E+Ls[E]));return P?"".concat(P,"-").concat(q):q}(t.displayName,t.parentComponentId):s,c=t.displayName,m=c===void 0?function(S){return Ns(S)?"styled.".concat(S):"Styled(".concat(Jw(S),")")}(e):c,p=t.displayName&&t.componentId?"".concat(Pp(t.displayName),"-").concat(t.componentId):t.componentId||l,d=r&&i.attrs?i.attrs.concat(u).filter(Boolean):u,x=t.shouldForwardProp;if(r&&i.shouldForwardProp){var y=i.shouldForwardProp;if(t.shouldForwardProp){var k=t.shouldForwardProp;x=function(S,P){return y(S,P)&&k(S,P)}}else x=y}var h=new qk(n,p,r?i.componentStyle:void 0);function v(S,P){return function(E,q,j){var M=E.attrs,W=E.componentStyle,U=E.defaultProps,C=E.foldedComponentIds,O=E.styledComponentId,A=E.target,I=vt.useContext(cy),B=Rp(),F=E.shouldForwardProp||B.shouldForwardProp,L=Hw(q,I,U)||oi,T=function(Ee,te,me){for(var Oe,Ne=it(it({},te),{className:void 0,theme:me}),We=0;Wef.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",height:"24px",viewBox:"0 0 24 24",width:"24px",fill:"#000000",className:e,role:"img",children:[f.jsx("path",{d:"M0 0h24v24H0V0z",fill:"none"}),f.jsx("path",{d:"M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z"})]}),Nk=ee.div` + overflow: hidden; + border-radius: 6px; + border: 1px solid #bbb; +`,py=ee.h4` + font-size: 16px; + font-weight: 700; + margin: 2rem 0px 1rem; + font-size: 1.25rem; + line-height: 1.75rem; + + button { + display: flex; + flex-wrap: nowrap; + flex-direction: row; + align-content: center; + align-items: center; + justify-content: space-between; + text-align: left; + width: 100%; + height: 50px; + border: none; + padding: 1.5rem; + cursor: pointer; + font-size: 1rem; + font-weight: bold; + + &:hover { + text-decoration: underline; + } + } +`,Lk=ee.div` + border: 0 solid #bbb; + ${({i:e})=>e>0&&ui` + border-top-width: 1px; + `} + + & ${py} { + margin: 0; + } +`,jk=ee.div` + display: ${({open:e})=>e?"block":"none"}; + margin: 1.5rem; +`,Ok=ee(dy)` + display: inline-block; + width: 25px; + transition: transform 0.1s; + height: 25px; + transform: rotate(${({$isOpen:e})=>e?"180deg":"360deg"}); +`,Vk=({items:e})=>{const[t,n]=V.useState([]),r=i=>()=>n(o=>(o[i]=!o[i],[...o]));return f.jsx(Nk,{children:e.map(({id:i,title:o,children:a},u)=>f.jsxs(Lk,{id:i,i:u,children:[f.jsx(py,{children:f.jsxs("button",{onClick:r(u),children:[f.jsx("span",{children:o}),f.jsx(Ok,{$isOpen:t[u]})]})}),f.jsx("div",{children:f.jsx(jk,{open:!!t[u],children:a})})]},i))})},_k=ee.div` + position: relative; + :hover button, + :focus-within button { + opacity: 1; + } +`,Rk=ee.div` + position: absolute; + right: 0; + top: 0; + margin: 0.5rem; + line-height: 0; + + & button { + margin: 0; + padding: 1px 3px; + transition: opacity ease-in-out 0.1s; + opacity: 0.25; + + :hover { + cursor: pointer; + } + :not(:last-child) { + margin-right: 0.5rem; + } + } +`,Ak=ee.pre` + overflow: auto; + padding: 0.5rem; + background-color: #e6e9ec; + border-radius: 0.25rem; +`,Ik=({tabs:e})=>{const[t,n]=V.useState(),r=Object.keys(e),i=t??r[0];return f.jsxs(_k,{children:[f.jsxs(Rk,{children:[typeof navigator<"u"&&navigator.clipboard&&f.jsx("button",{onClick:()=>navigator.clipboard.writeText(e[i]),children:"copier"}),r.length>1&&r.filter(o=>o!==i).map(o=>f.jsx("button",{onClick:()=>n(o),children:o},o))]}),f.jsx(Ak,{children:f.jsx("code",{children:e[i]})})]})};function Tk({references:e}){return e?f.jsx("ul",{children:Object.entries(e).map(([t,n])=>f.jsxs("li",{style:{display:"flex",alignItems:"center"},children:[f.jsx("a",{href:n,target:"_blank",style:{marginRight:"1rem"},rel:"noreferrer",children:gg(t)}),f.jsx("span",{className:"ui__ label",children:n})]},t))}):null}var zk=({children:e})=>f.jsx("p",{children:e}),$k=e=>f.jsx("a",{...e}),fy=(e={})=>{const t={References:Tk,Text:zk,Code:Ik,Accordion:Vk,Link:$k};return Object.fromEntries([...Object.keys(t),...Object.keys(e)].map(n=>[n,e[n]??t[n]]).filter(([,n])=>n))},gn=V.createContext(fy()),hy=V.createContext("/documentation"),xm=V.createContext(void 0),xr=V.createContext(void 0),yn=()=>{const e=V.useContext(xr);if(!e)throw new Error("Engine expected");return e},{encodeRuleName:Uk}=Jt;function Fk({dottedName:e,engine:t,currentEngineId:n,documentationPath:r,displayIcon:i=!1,linkComponent:o,children:a,...u}){var x;const s=V.useContext(gn),l=Jt.findCommonAncestor(V.useContext(xm)??e,e),c=o||s.Link;if(!c)throw new Error("You must provide a component.");const m=t.context.parsedRules[e],p=r+"/"+Uk(e),d=[...Jt.ruleParents(e).reverse().filter(y=>y.startsWith(`${l} . `)).map(y=>{var k;return(k=t.context.parsedRules[y])==null?void 0:k.title.trim()}),(x=m.title)==null?void 0:x.trim()].join(" › ");if(!m)throw new Error(`Unknown rule: ${e}`);return f.jsxs(c,{...u,"aria-label":u["aria-label"]??(m.title&&m.title+", voir les détails du calcul pour : "+m.title),to:p+(n?`?currentEngineId=${n}`:""),children:[a||d||m.dottedName.split(" . ").slice(-1)[0]," ",i&&m.rawNode.icônes&&f.jsx("span",{children:m.rawNode.icônes})]})}function fn(e){const t=yn(),n=V.useContext(hy),r=typeof window<"u"&&new URLSearchParams(window.location.search).get("currentEngineId"),i=e.useSubEngine!==!1&&(e.currentEngineId||t.context.subEngineId||r&&Number.parseInt(r))||void 0;return f.jsx(Fk,{engine:t,currentEngineId:i,documentationPath:n,...e})}var Em=({value:e,prefixed:t,children:n})=>f.jsxs("div",{children:[t&&n,f.jsx("div",{className:"value",style:{position:"relative",margin:"1rem 0"},children:f.jsx(ne,{node:e})}),!t&&n]});function Dk(e){return f.jsx(Em,{value:e.explanation.valeur,children:f.jsxs("p",{children:[f.jsx("strong",{children:"Arrondi : "}),f.jsx(ne,{node:e.explanation.arrondi})]})})}var So=({data:e,unit:t})=>f.jsx(Bk,{className:"node-value-pointer",title:e===null?"Non applicable":"","aria-label":e===null?"Valeur non applicable":"",children:e===null?f.jsx("span",{"aria-hidden":!0,children:"-"}):Un({nodeValue:e,unit:t})}),Bk=ee.span` + background: white; + border-bottom: 0 !important; + font-size: 0.875rem; + line-height: 1.25rem; + margin: 0 0.2rem; + flex-shrink: 0; + padding: 0.1rem 0.2rem; + text-decoration: none !important; + box-shadow: + 0px 1px 2px 1px #d9d9d9, + 0 0 0 1px #d9d9d9; + border: 1px solid #f8f9fa; + border-radius: 0.2rem; +`,Mk={"applicable si":"#7B1FA2","non applicable si":"#7B1FA2","est applicable":"#00796B","est non applicable":"#00796B","est défini":"#00796B","est non défini":"#00796B",somme:"#18457B",plafond:"#EF6C00",plancher:"#EF6C00",abattement:"#B73731",produit:"#2ecc71","une de ces conditions":"#3498db","toutes ces conditions":"#3498db","le maximum de":"#795548","le minimum de":"#795548",variations:"#FF9800","par défaut":"#00695C","taux progressif":"#795548",barème:"#9B296F",grille:"#AD1457",avec:"#2653ce"},vy=e=>Mk[e]||"palevioletred";function bn({name:e,value:t,children:n,unit:r,displayName:i=!0}){return f.jsxs(Wk,{mecanismName:e,children:[i&&f.jsx(Gk,{name:e,children:e}),f.jsxs("div",{children:[n,t!==void 0&&f.jsxs(Kk,{children:[f.jsx("small",{children:" = "}),f.jsx(So,{data:t,unit:r})]})]})]})}var Wk=ee.div` + border: 1px solid; + max-width: 100%; + border-radius: 3px; + padding: 0.5rem 1rem; + position: relative; + flex: 1; + flex-direction: column; + text-align: left; + border-color: ${({mecanismName:e})=>vy(e)}; + .properties > li { + margin: 1rem 0; + } +`,Gk=({name:e,inline:t=!1,children:n})=>f.jsx(f.Fragment,{children:f.jsx(Hk,{name:e,inline:t,target:"_blank",href:`https://publi.codes/docs/api/mécanismes#${e}`,children:n})}),Hk=ee.a` + background-color: ${({name:e})=>vy(e)} !important; + font-size: inherit; + display: inline-block; + font-weight: inherit; + width: fit-content; + font-family: inherit; + padding: 0.4rem 0.6rem !important; + color: white !important; + transition: hover 0.2s; + :hover { + color: white; + } + ${e=>e.inline?ui` + border-radius: 0.3rem; + margin-bottom: 0.5rem; + `:ui` + top: -0.5rem; + position: relative; + margin-left: -1rem; + border-radius: 0 !important; + border-bottom-right-radius: 0.3rem !important; + ::first-letter { + text-transform: capitalize; + } + `} + :hover { + opacity: 0.8; + } +`,Kk=ee.div` + text-align: right; + margin-top: 1rem; + font-weight: bold; +`;function Qk({nodeValue:e,explanation:t,unit:n}){return f.jsx(bn,{name:"barème",value:e,unit:n,children:f.jsx(Cm,{children:f.jsxs("ul",{className:"properties",children:[f.jsx(wm,{explanation:t}),f.jsx(km,{tranches:t.tranches,multiplicateur:t.multiplicateur}),e!=null&&t.tranches.length>2&&f.jsxs(f.Fragment,{children:[f.jsx("b",{children:"Taux moyen : "}),f.jsx(So,{data:100*e/(t.assiette.nodeValue??1),unit:sn("%")})]})]})})})}var wm=({explanation:e})=>{const t=e.multiplicateur;return f.jsxs(f.Fragment,{children:[f.jsxs("li",{children:[f.jsx("span",{className:"key",children:"Assiette : "}),f.jsx("span",{className:"value",children:f.jsx(ne,{node:e.assiette})})]},"assiette"),t&&!t.isDefault&&f.jsxs("li",{children:[f.jsx("span",{className:"key",children:"Multiplicateur : "}),f.jsx("span",{className:"value",children:f.jsx(ne,{node:t})})]},"multiplicateur")]})},km=({tranches:e,multiplicateur:t})=>{const n=e.find(({isActive:r})=>r);return e.length?f.jsxs("table",{className:"tranches",children:[f.jsx("thead",{children:f.jsxs("tr",{children:[f.jsx("th",{children:"Plafonds des tranches"}),"taux"in e[0]&&f.jsx("th",{children:"Taux"}),("montant"in e[0]||(n==null?void 0:n.nodeValue)!=null)&&f.jsx("th",{children:"Montant"})]})}),f.jsx("tbody",{children:e.map((r,i)=>f.jsx(Yk,{tranche:r,multiplicateur:t},i))})]}):null},Yk=({tranche:e,multiplicateur:t})=>{const n=e.isActive;return f.jsxs("tr",{className:`tranche ${n?"activated":""}`,children:[f.jsx("td",{children:e.plafond.nodeValue===1/0?"Au-delà du dernier plafond":f.jsxs(f.Fragment,{children:["Inférieur à ",f.jsx(ne,{node:e.plafond}),t&&!t.isDefault&&f.jsxs(f.Fragment,{children:[" × ",f.jsx(ne,{node:t})]})]})},"tranche"),"taux"in e&&f.jsx("td",{children:f.jsx(ne,{node:e.taux})},"taux"),(e.nodeValue!=null||"montant"in e)&&f.jsx("td",{children:"montant"in e?f.jsx(ne,{node:e.montant}):f.jsx(So,{data:e.nodeValue,unit:e.unit})},"value")]})},Cm=ee.div` + table { + margin: 1em 0; + width: 100%; + text-align: left; + font-weight: 400; + } + table td { + padding: 0.1em 0.4em; + } + table th { + font-weight: 600; + } + table th:first-letter { + text-transform: uppercase; + } + .tranche:nth-child(2n) { + background: var(--lightestColor); + } + .tranche.activated { + background: var(--lighterColor); + font-weight: bold; + } +`;function Xk(e){const t=V.useContext(xr),{dottedName:n,nodeValue:r,unit:i}=e,o=t==null?void 0:t.context.parsedRules[e.dottedName];if(!o)throw new Error(`Unknown rule: ${n}`);const[a,u]=V.useState(!0),s=V.useContext(Xl);return e.dottedName===e.contextDottedName+" . "+e.name&&!e.name.includes(" . ")&&o.virtualRule?f.jsx(ne,{node:t==null?void 0:t.evaluate(o)}):f.jsxs("div",{style:{display:"flex",flex:s?1:"initial",flexDirection:"column",maxWidth:"100%"},children:[f.jsxs("div",{style:{display:"flex",alignItems:"baseline",flexWrap:"wrap",justifyContent:"space-between"},children:[f.jsx("span",{style:{paddingRight:"0.2rem"},children:f.jsx(fn,{dottedName:n})}),f.jsxs("div",{style:{flex:1,display:"flex",alignItems:"baseline"},children:[s&&f.jsxs(f.Fragment,{children:[f.jsx(Jk,{onClick:()=>u(!a),"aria-expanded":!a,className:"publicodes_btn-small","aria-label":a?"Déplier, afficher le détail":"Replier, afficher le détail",children:a?"Déplier":"Replier"}),f.jsx(Zk,{})]}),r!==void 0&&f.jsx(So,{data:r,unit:i})]})]})," ",!a&&f.jsx("div",{children:f.jsx(Xl.Provider,{value:!1,children:f.jsx(ne,{node:t==null?void 0:t.evaluate(o)})})})]})}var Xl=V.createContext(!1),Jk=ee.button` + text-transform: none !important; +`,Zk=ee.div` + @media (max-width: 500px) { + /* border: none; */ + } + margin: 0.5rem; + flex: 1; + border-bottom: 2px dotted lightgray; +`;function qo({sourceMap:e,nodeValue:t,unit:n}){const{args:r,mecanismName:i}=e,o="valeur"in r&&i in r&&Object.keys(r).length===2,a="valeur"in r&&Object.keys(r).length===1;return f.jsxs(f.Fragment,{children:[o&&f.jsx(ea,{node:r.valeur}),f.jsx("div",{style:{marginTop:o?"1rem":0},children:f.jsx(bn,{name:i,value:t,unit:n,children:o?f.jsx(ea,{node:r[i],mecanismName:i}):a?f.jsx(ea,{node:r.valeur,mecanismName:i}):f.jsx("ul",{children:Object.entries(r).map(([u,s])=>f.jsxs("li",{style:{display:"flex",alignItems:"baseline",padding:"0.25rem 0"},children:[f.jsxs("span",{children:[u," : "]}),f.jsx("span",{children:f.jsx(ea,{node:s})})]},u))})})})]})}function ea({node:e,mecanismName:t}){if(Array.isArray(e)){const n=t==="produit"?"×":t==="somme"?"+":void 0;return f.jsx(tC,{explanation:e,hideNotApplicable:t!=="produit",sign:n})}return f.jsx(ne,{node:e})}var eC=e=>{var n;const t=(n=V.useContext(xr))==null?void 0:n.evaluate(e).nodeValue;return t===null||t===0};function tC({explanation:e,hideNotApplicable:t=!0,sign:n}){const[r,i]=e.reduce((s,l)=>(s[t&&eC(l)?1:0].push(l),s),[[],[]]),[o,a]=V.useState(r.length===0),u=V.useMemo(()=>"notApplicableExplanation"+Math.random().toString(36).substring(7),[]);return f.jsxs(f.Fragment,{children:[f.jsx(zp,{$sign:n,children:r.map((s,l)=>f.jsx($p,{node:s},l))}),i.length>0&&r.length!==0&&f.jsx(nC,{style:{textAlign:"right"},children:f.jsx("button",{"aria-expanded":o,"aria-controls":u,className:"publicodes_btn-small",onClick:()=>a(!o),children:o?"Masquer les valeurs non applicable":"Voir toute la liste"})}),o&&f.jsx(zp,{id:u,$sign:n,$showFirst:r.length>0,children:i.map((s,l)=>f.jsx($p,{node:s},l))})]})}var nC=ee.div` + margin: 0.5rem 0; + margin-left: 1rem; +`,zp=ee.ul` + margin: 0; + margin-left: 1rem; + + ${({$sign:e,$showFirst:t})=>e&&!t&&ui` + & > li:first-child::marker { + content: ''; + } + `} + ${({$sign:e})=>e&&ui` + & > li::marker { + font-weight: bold; + content: '${e} '; + } + `} +`;function $p({node:e}){return f.jsx(rC,{style:{padding:"0.25rem 0"},children:f.jsx(Xl.Provider,{value:!0,children:f.jsx(ne,{node:e})})})}var rC=ee.li` + > * { + width: 100%; + } +`;function iC(e){return f.jsx(qo,{...e,sourceMap:{mecanismName:e.nodeKind,args:e.explanation}})}function oC({nodeValue:e,type:t,fullPrecision:n,unit:r}){return e===void 0?null:e===null?f.jsx("span",{className:"value",children:Un({nodeValue:e})}):n?f.jsx("span",{className:t,children:Un({nodeValue:e,unit:r},{precision:5})}):f.jsx("span",{className:"value",children:Un({nodeValue:e,unit:r})})}function aC({explanation:e}){const t=yn(),n=e.subEngineId?t.context.subEngines.get(e.subEngineId)??t:t;return f.jsxs(f.Fragment,{children:[f.jsxs(bn,{name:"contexte",children:[f.jsx("p",{children:"Ce calcul est effectué en changeant les valeurs des règles suivantes :"}),f.jsx(uC,{children:e.contexte.map(([r,i])=>f.jsxs(V.Fragment,{children:[f.jsx("dt",{children:f.jsx(fn,{dottedName:r.dottedName})}),f.jsxs("dd",{children:[f.jsx("span",{"aria-hidden":!0,children:" = "}),f.jsx(ne,{node:i})]})]},r.dottedName))})]}),f.jsx(xr.Provider,{value:n,children:f.jsx(ne,{node:e.valeur})})]})}var uC=ee.dl` + display: grid; + grid-template-columns: auto 1fr; + gap: 0.6rem; + line-height: 1.75; + dd { + margin: 0; + display: flex; + gap: 0.5rem; + } + @media (max-width: 600px) { + grid-template-columns: auto; + line-height: initial; + dd { + justify-content: flex-end; + margin-bottom: 0.5rem; + } + } +`;function sC(e){return f.jsx(qo,{...e,sourceMap:{mecanismName:e.nodeKind,args:e.explanation}})}function lC(e){return f.jsx(qo,{...e,sourceMap:{mecanismName:e.nodeKind,args:{valeur:e.explanation}}})}function cC(e){return f.jsx(qo,{...e,sourceMap:{mecanismName:e.nodeKind,args:{valeur:e.explanation}}})}function mC({nodeValue:e,explanation:t,unit:n}){return f.jsx(Cm,{children:f.jsx(bn,{name:"grille",value:e,unit:n,children:f.jsxs("ul",{className:"properties",children:[f.jsx(wm,{explanation:t}),f.jsx(km,{tranches:t.tranches,multiplicateur:t.multiplicateur})]})})})}function dC({nodeValue:e,explanation:t}){const n=yn();return f.jsx(bn,{name:"inversion numérique",value:e,children:n.cache.inversionFail&&t.inversionGoal?f.jsxs(f.Fragment,{children:[f.jsx("p",{children:"Cette valeur devrait pouvoir être estimée à partir d’une autre variable qui possède une formule de calcul et dont la valeur a été fixée dans la simulation :"}),f.jsx(ne,{node:t.inversionGoal}),f.jsx("p",{children:"Malheureusement, il a été impossible de retrouver une valeur pour cette formule qui permette d’atterrir sur la valeur demandée."})]}):t.inversionGoal?f.jsxs(f.Fragment,{children:[f.jsx("p",{children:"Cette valeur a été estimée à partir d’une autre variable qui possède une formule de calcul et dont la valeur a été fixée dans la simulation :"}),f.jsx(ne,{node:t.inversionGoal})]}):f.jsxs(f.Fragment,{children:[f.jsx("p",{children:"Cette formule de calcul n’existe pas, mais on peut la calculer par inversion en utilisant les formules des règles suivantes :"}),f.jsx("ul",{id:"inversionsPossibles",children:t.inversionCandidates.map(r=>f.jsx("li",{children:f.jsx(ne,{node:r})},r.dottedName))})]})})}function pC({nodeValue:e,explanation:t,operator:n,unit:r}){const i=t[0].nodeValue===0&&n==="−"&&t[0].nodeKind==="constant";return f.jsxs(fC,{className:"operation",role:"math",children:[f.jsx("span",{children:"("}),!i&&f.jsxs(f.Fragment,{children:[f.jsx(ne,{node:t[0]})," "]}),n," ",f.jsx(ne,{node:t[1]}),e!=null&&f.jsxs("span",{className:"result",children:[f.jsx("small",{children:" = "}),f.jsx(So,{data:e,unit:r})]}),f.jsx("span",{children:")"})]})}var fC=ee.div` + display: flex; + flex-wrap: wrap; + gap: 0.125rem; + > .operation ::before, + > .operation ::after { + content: ''; + } + .result { + margin-left: 0.2rem; + } + .operation .result { + display: none; + } +`;function hC(e){const t=yn(),n=e.sourceMap,r=n.args.originalNode,i=n.args.applicableReplacements.find(({definitionRule:s})=>t.evaluate(s).nodeValue===e.nodeValue);if(!i||i.replaceByNonApplicable)return r.nodeValue=e.nodeValue,f.jsx(ne,{node:r});const[o,a]=V.useState(!1),u=V.useId();return f.jsx(f.Fragment,{children:f.jsxs("span",{style:{display:"inline-flex",maxWidth:"100%"},children:[f.jsxs("span",{style:{display:"flex",flexDirection:"column",flex:"1 1 0%"},children:[o&&f.jsx("span",{id:u,style:{opacity:"0.6",textDecoration:"line-through"},children:f.jsx(ne,{node:r})}),f.jsx(ne,{node:i.definitionRule})]}),f.jsx("div",{style:{marginLeft:"0.4rem"},children:f.jsx("button",{onClick:()=>a(!o),type:"button",className:"publicodes_btn-small","aria-expanded":o,"aria-controls":u,title:o?"Cacher la valeur d’origine":"Voir la valeur d’origine",children:"🔄"})})]})})}function vC(e){return f.jsxs("span",{children:["Remplace ",f.jsx(ne,{node:e.replacedReference})," ",e.rawNode.dans&&f.jsxs(f.Fragment,{children:["dans"," ",e.whiteListedNames.map((t,n)=>f.jsx(ne,{node:t},n)).join(", ")]}),e.rawNode["sauf dans"]&&f.jsxs(f.Fragment,{children:["sauf dans"," ",e.blackListedNames.map((t,n)=>f.jsx(ne,{node:t},n)).join(", ")]})]})}function gC({explanation:e,dottedName:t}){return f.jsx(bC,{children:f.jsx(xm.Provider,{value:t,children:f.jsx(yC,{children:f.jsx(ne,{node:e.valeur})})})})}var yC=ee.div` + border-left: 1rem solid hsl(220, 60%, 97.5%); + padding-left: 1rem; + margin-left: -2rem; +`,bC=ee.div` + margin-top: 0.5rem; + margin-bottom: 1rem; + display: flex; + flex-direction: column; +`;function xC({explanation:e}){return f.jsxs(bn,{name:"résoudre la référence circulaire",value:e.valeur,children:[f.jsxs("p",{children:[" ","Cette valeur a été retrouvé en résolvant la référence circulaire dans la formule ci dessous :"," "]}),f.jsx(ne,{node:e.valeur})]})}function EC({sourceMap:e}){const t=V.useContext(xr),n=t==null?void 0:t.evaluate(e.args["dans la situation"]);return(n==null?void 0:n.nodeValue)!==void 0?f.jsx(Em,{prefixed:!0,value:e.args.valeur,children:f.jsxs("p",{children:[f.jsx("strong",{children:"Valeur renseignée dans la simulation : "}),f.jsx(ne,{node:n.explanation.valeur})]})}):f.jsx(ne,{node:e.args.valeur})}function wC({nodeValue:e,explanation:t,unit:n}){return f.jsx(Cm,{children:f.jsx(bn,{name:"taux progressif",value:e,unit:n,children:f.jsxs("ul",{className:"properties",children:[f.jsx(wm,{explanation:t}),f.jsx(km,{tranches:t.tranches,multiplicateur:t.multiplicateur})]})})})}function kC({explanation:e}){return f.jsx("p",{children:e.map(t=>typeof t=="string"?t:f.jsx(CC,{children:f.jsx(ne,{node:t})},t.rawNode))})}var CC=ee.span` + border: 1px solid rgba(0, 0, 0, 0.1); + padding: 0.2rem; + position: relative; + border-radius: 0.15rem; + background-color: rgba(0, 0, 0, 0.05); +`;function SC({explanation:e}){return f.jsx(bn,{name:"une possibilité parmi",value:void 0,children:f.jsx("ul",{children:e.map((t,n)=>f.jsx("li",{children:f.jsx(ne,{node:t})},n))})})}function qC({nodeValue:e,explanation:t,unit:n}){return t.nodeKind==="constant"?Un({nodeValue:e,unit:n}):t.nodeKind==="reference"?f.jsxs(f.Fragment,{children:[f.jsx(ne,{node:t})," ",rt(n)]}):f.jsx(Em,{value:t,children:f.jsxs("p",{children:[f.jsx("strong",{children:"Unité : "}),rt(n)]})})}function PC({nodeValue:e,explanation:t,unit:n}){const r=t.findIndex(({condition:u})=>u.nodeValue===!0);let i;r!==void 0&&(i=t[r],t=[...t.slice(0,r),...t.slice(r+1)]);const[o,a]=V.useState(!i);return f.jsx(bn,{name:"variations",unit:n,value:e,children:f.jsxs("ul",{children:[i&&f.jsxs("li",{children:[f.jsx(Up,{...i}),f.jsx("span",{style:{paddingLeft:"1rem"},children:f.jsxs("button",{className:"publicodes_btn-small",onClick:()=>a(!o),children:[o?"Masquer":"Afficher"," les autres cas"]})})]}),o&&f.jsx(f.Fragment,{children:t.map((u,s)=>f.jsx("li",{children:f.jsx(Up,{...u})},s))})]})})}function Up({condition:e,consequence:t}){return f.jsx(jC,{children:f.jsxs(LC,{children:[f.jsx(NC,{children:e.nodeKind==="constant"&&e.nodeValue===!0?f.jsx(Dp,{children:"Par défaut : "}):f.jsxs(f.Fragment,{children:[f.jsx(Dp,{children:"Condition : "}),f.jsx(Fp,{children:f.jsx(ne,{node:e})})]})}),f.jsx(Fp,{children:f.jsx(ne,{node:t})})]})})}var Fp=ee.div``,Dp=ee.span` + font-weight: bold; +`,NC=ee.div` + padding-bottom: 1rem; + padding-top: 0.5rem; + display: flex; + align-items: baseline; +`,LC=ee.div` + border-left: 1rem solid hsl(36, 60%, 97%); + padding-left: 1rem; + margin-left: -1rem; +`,jC=ee.div` + padding: 1rem 0; +`,OC={constant:oC,arrondi:Dk,barème:Qk,durée:sC,grille:mC,inversion:dC,operation:pC,texte:kC,reference:Xk,"est non applicable":lC,"est non défini":cC,rule:gC,condition:iC,"dans la situation":EC,contexte:aC,replacement:hC,replacementRule:vC,"taux progressif":wC,"une possibilité":SC,"résoudre référence circulaire":xC,unité:qC,"variable manquante":e=>f.jsx(ne,{node:e.explanation}),variations:PC};function ne({node:e}){var a,u;const t=((a=e.sourceMap)==null?void 0:a.mecanismName)??e.nodeKind,n=yn(),i=mo(s=>"nodeValue"in s||s.nodeKind==="replacementRule"?!1:n.evaluateNode(s),!1)(e),o=OC[t]??((u=e.sourceMap)!=null&&u.mecanismName?qo:void 0);if(!o)throw new Error(`Unknown visualisation: ${t}`);return f.jsx(o,{...i})}var{encodeRuleName:VC}=Jt;function _C({engine:e,dottedName:t}){const n=RC(e,t);if(typeof window<"u"&&window.location.host==="publi.codes")return null;const r="Afficher la règle dans le bac à sable Publicodes";return f.jsx("p",{style:{textAlign:"right"},children:f.jsxs("a",{target:"_blank",href:n,"aria-label":`${r}, nouvelle fenêtre`,rel:"noreferrer",children:[f.jsx("span",{"aria-hidden":!0,children:"✍️"})," ",r]})})}var RC=(e,t)=>{const n=Array.from(e.context.referencesMaps.referencesIn.get(t)??[]),r=e.evaluateNode(e.context.parsedRules[t]),i={[t]:Object.fromEntries(Object.entries(r.rawNode).filter(([s])=>s!=="nom"))},o=Object.fromEntries(n.filter(s=>s!==t&&!s.endsWith(" . $SITUATION")).map(s=>[s,AC(r)])),a=encodeURIComponent(JSON.stringify({rules:i,situation:o}));return`${typeof window<"u"&&location.hostname==="localhost"?"":"https://publi.codes"}/studio/${VC(t)}#${a}`};function AC(e){const t=Un(e).replace(/\s\/\s/g,"/").replace(/(\d)\s(\d)/g,"$1$2").replace(",",".");return t.match(/^[0-9]/)||t==="Oui"||t==="Non"?t.toLowerCase():t==="-"?"non":`'${t}'`}var Ja=ee.ul` + padding: 0; + max-height: 400px; + overflow: auto; + list-style: none; +`,Za=ee.li` + position: relative; + padding-left: 1.5rem; + + &::before { + content: '●'; + font-size: 80%; + display: inline-block; + position: absolute; + left: 0; + width: 1.5rem; + text-align: center; + color: #b3b3b3; + margin-bottom: 0.5rem; + } +`;function IC({rule:e,engine:t,dottedName:n,situation:r={},apiDocumentationUrl:i,apiEvaluateUrl:o,npmPackage:a}){const{Accordion:u}=V.useContext(gn),s=[{title:"Règle et situation",id:"rule-situation",children:f.jsxs(f.Fragment,{children:[f.jsx(TC,{engine:t,dottedName:n}),f.jsx(zC,{situation:r})]})},i&&o||a?{title:"Réutiliser ce calcul ("+[i&&o?"API REST":null,a?"Paquet NPM":null].filter(l=>l!==null).join(" / ")+")",id:"usage",children:f.jsxs(f.Fragment,{children:[Jt.isExperimental(t.baseContext.parsedRules,n)&&f.jsxs(MC,{children:[f.jsx("h4",{children:"⚠️ Cette règle est tagguée comme experimentale ⚠️"}),f.jsx("p",{children:"Cela veut dire qu’elle peut être modifiée, renommée, ou supprimée sans qu’il n’y ait de changement de version majeure dans l’API."})]}),a&&f.jsx($C,{rule:e,situation:r,dottedName:n,npmPackage:a}),i&&o&&f.jsx(UC,{situation:r,dottedName:n,apiDocumentationUrl:i,apiEvaluateUrl:o})]})}:null,{title:"Dépendances et effets de la règle",id:"dependencies-effects",children:f.jsxs(f.Fragment,{children:[f.jsx(FC,{selfMissing:Object.keys(e.missingVariables)}),f.jsx(DC,{engine:t,dottedName:n,ruleIsNotDefined:e.nodeValue===void 0}),f.jsx(BC,{engine:t,dottedName:n,replacements:e.replacements})]})}].filter(l=>l!==null);return f.jsx(u,{items:s})}function TC({engine:e,dottedName:t}){const{Code:n}=V.useContext(gn);return f.jsxs("section",{children:[f.jsx("h4",{children:"Règle actuelle"}),f.jsx(n,{tabs:{dottedName:t}}),f.jsx(_C,{dottedName:t,engine:e})]})}function zC({situation:e}){const{Code:t}=V.useContext(gn),n=Object.keys(e),r={json:JSON.stringify(e,null,2)};return f.jsxs("section",{children:[f.jsx("h4",{children:"Situation actuelle"}),n.length?f.jsx("p",{children:"Voici les données que vous avez saisies dans notre simulateur sous forme de JSON."}):f.jsx("p",{children:"Votre situation est pour l’instant vide, vous n’avez probablement pas encore fait de simulation."}),f.jsx(t,{tabs:r})]})}var Bp="Retrouvez ce paquet sur NPM",Mp="moteur Publicodes";function $C({rule:e,situation:t,dottedName:n,npmPackage:r}){const{Code:i,Link:o}=V.useContext(gn),a={npmPackage:`// npm i publicodes ${r} + +import Engine, { formatValue } from 'publicodes' +import rules from '${r}' + +const engine = new Engine(rules) +engine.setSituation(${JSON.stringify(t,null,2)}) + +// ${e.title} +const evaluation = engine.evaluate(${JSON.stringify(n)}) + +console.log(formatValue(evaluation)) +`};return f.jsxs("section",{children:[f.jsx("h4",{children:"Lancer un calcul avec Publicodes"}),f.jsxs("p",{children:["Vous pouvez installer notre package de règles pour l’utiliser avec le"," ",f.jsx(o,{"aria-label":`${Mp}, accéder au site publi.codes, nouvelle fenêtre`,href:"https://publi.codes/",children:Mp})," ","et ainsi effectuer vos propres calculs. Voici un exemple avec votre situation et la règle actuelle :"]}),f.jsx(i,{tabs:a}),f.jsx("p",{style:{textAlign:"right"},children:f.jsxs(o,{href:"https://www.npmjs.com/package/"+r,"aria-label":`${Bp}, accéder à la page npm du package Publicodes, nouvelle fenêtre`,children:[f.jsx("span",{"aria-hidden":!0,children:"📦"})," ",Bp]})})]})}var Wp="En savoir plus sur notre API REST";function UC({situation:e,dottedName:t,apiDocumentationUrl:n,apiEvaluateUrl:r}){const{Code:i,Link:o}=V.useContext(gn),a={expressions:[t],situation:e},u={curl:`curl '${r}' \\ + -H 'accept: application/json' \\ + -H 'content-type: application/json' \\ + --data-raw $'${JSON.stringify(a).replace(/'/g,"'\\''")}' \\ + --compressed`,"fetch js":`const request = await fetch("${r}", { + "headers": { "content-type": "application/json" }, + "method": "POST", + "body": JSON.stringify(${JSON.stringify(a,null,2)}), +}) +const { evaluate } = await request.json() + +console.log(evaluate)`};return f.jsxs("section",{children:[f.jsx("h4",{children:"Utiliser notre API REST"}),f.jsx("p",{children:"Vous trouverez ici un exemple d’utilisation de notre API REST via curl ou un fetch javascript."}),f.jsx(i,{tabs:u}),n&&f.jsx("p",{style:{textAlign:"right"},children:f.jsxs(o,{to:n,"aria-label":`${Wp}, accéder à la documentation, nouvelle fenêtre`,children:[f.jsx("span",{"aria-hidden":!0,children:"👩‍💻"})," ",Wp]})})]})}function FC({selfMissing:e}){return f.jsxs("section",{children:[f.jsx("h4",{children:"Données manquantes"}),e!=null&&e.length?f.jsxs(f.Fragment,{children:[f.jsx("p",{children:"Les règles suivantes sont nécessaires pour le calcul mais n’ont pas été saisies dans la situation. Leur valeur par défaut est utilisée."}),f.jsx(Ja,{children:e.map(t=>f.jsx(Za,{children:f.jsx(fn,{dottedName:t})},t))})]}):f.jsx("p",{children:"Il n’y a pas de données manquante."})]})}var gy=(e,t)=>e&&"replacements"in e&&e.replacements.some(({replacedReference:n})=>n.dottedName===t);function DC({engine:e,dottedName:t,ruleIsNotDefined:n=!1}){const r=Array.from(e.context.referencesMaps.rulesThatUse.get(t)??[]).filter(i=>i!=="$EVALUATION"&&i in e.context.parsedRules&&!e.context.parsedRules[i].private&&!gy(e.context.parsedRules[i],t));return f.jsxs("section",{children:[f.jsx("h4",{children:"Règles qui ont besoin de cette valeur"}),r.length?f.jsxs(f.Fragment,{children:[f.jsxs("p",{children:["Les règles suivantes ont besoin de la règle courante pour être calculées :",n&&f.jsxs(f.Fragment,{children:[" ","La règle courante n’étant pas encore définie, c’est sa valeur par défaut qui est utilisée pour déterminer la valeur de ces règles."]})]}),f.jsx(Ja,{children:r.map(i=>f.jsx(Za,{children:f.jsx(fn,{dottedName:i})},i))})]}):f.jsx("p",{children:"Aucune règle n’utilise cette valeur."})]})}function BC({engine:e,dottedName:t,replacements:n}){const r=Array.from(e.context.referencesMaps.rulesThatUse.get(t)??[]).filter(i=>i!=="$EVALUATION"&&i in e.context.parsedRules&&!e.context.parsedRules[i].private&&gy(e.context.parsedRules[i],t));return f.jsxs(f.Fragment,{children:[f.jsxs("section",{children:[f.jsx("h4",{children:"Effets sur d’autres règles"}),n.length?f.jsxs(f.Fragment,{children:[f.jsx("p",{children:"Une règle peut avoir des effets sur d’autres règles afin de modifier leur comportement."}),f.jsx(Ja,{children:n.map(i=>f.jsx(Za,{style:{marginBottom:"0.5rem"},children:f.jsx(ne,{node:i})},i.replacedReference.dottedName))})]}):f.jsx("p",{children:"Cette règle ne modifie aucune autre règle."})]}),f.jsxs("section",{children:[f.jsx("h4",{children:"Règles qui peuvent avoir un effet sur cette valeur"}),r.length?f.jsxs(f.Fragment,{children:[f.jsx("p",{children:"Les règles suivantes peuvent remplacer la valeur de la règle courante :"}),f.jsx(Ja,{children:r.map(i=>f.jsx(Za,{children:f.jsx(fn,{dottedName:i})},i))})]}):f.jsx("p",{children:"Aucune autre règle n’a d’effets sur cette valeur."})]})]})}var MC=ee.div``;function WC({title:e,description:t}){const{Head:n}=V.useContext(gn);return n?f.jsxs(n,{children:[f.jsx("title",{children:e}),f.jsx("meta",{property:"og:type",content:"article"}),f.jsx("meta",{property:"og:title",content:e}),t&&f.jsx("meta",{property:"og:description",content:t}),t&&f.jsx("meta",{name:"description",content:t})]}):null}function GC({dottedName:e}){const t=yn(),{title:n,rawNode:{description:r,question:i,icônes:o}}=t.context.parsedRules[e],a=o?n+" "+o:n;return f.jsxs("header",{children:[f.jsx(WC,{title:a,description:r||i}),f.jsxs("div",{children:[f.jsx("span",{id:"rules-nav-open-nav-button"}),Jt.ruleParents(e).reverse().map(u=>f.jsxs("span",{children:[f.jsx(fn,{dottedName:u,displayIcon:!0}),f.jsx("span",{"aria-hidden":!0,children:" › "})]},u))]}),f.jsx("h1",{children:f.jsx(fn,{dottedName:e,displayIcon:!0})})]})}var HC=V.lazy(()=>qw(()=>import("./RulesSearch-AGDNDU76-DpFdA1vP.js"),[])),KC=({dottedName:e,searchBar:t,mobileMenuPortalId:n,openNavButtonPortalId:r})=>{const o=yn().getParsedRules(),a=Object.keys(o),[u,s]=V.useState(!1),l=h=>Object.fromEntries([[h,!0],...Jt.ruleParents(h).map(v=>[v,!0])]),[c,m]=V.useState(l(e));V.useEffect(()=>{m(h=>({...h,...l(e)}))},[e]);const p=V.useCallback(h=>{m(v=>v[h]?Object.fromEntries(Object.entries(v).map(([g,S])=>g.startsWith(h)?[g,!1]:[g,S])):{...v,[h]:!v[h]})},[]),d=typeof window>"u"?null:r&&window.document.getElementById(r)||window.document.getElementById("rules-nav-open-nav-button"),x=f.jsxs(XC,{$open:u,children:[f.jsx(JC,{$open:u,onClick:()=>{s(h=>!h)}}),d&&Xd.createPortal(f.jsx(ZC,{onClick:()=>s(!0),children:"Toutes les règles"}),d),f.jsxs(eS,{$open:u,children:[t?f.jsx(V.Suspense,{fallback:f.jsx("p",{children:"Chargement..."}),children:f.jsx(HC,{})}):null,f.jsx("ul",{children:a.sort((h,v)=>h.localeCompare(v)).map(h=>{const v=Jt.ruleParent(h);if(h.split(" . ").length>1&&!c[v])return null;const g=h in c&&c[h];return f.jsx(YC,{ruleDottedName:h,open:g,active:e===h,onClickDropdown:p},h)})})]})]}),y=typeof window<"u"&&window.matchMedia(`(max-width: ${Mn.lg})`).matches,k=typeof window<"u"&&n?window.document.getElementById(n):null;return y&&k?Xd.createPortal(x,k):x},QC=({ruleDottedName:e,open:t,active:n,onClickDropdown:r})=>{const o=yn().getParsedRules(),a=Object.keys(o).reduce((l,c)=>c.startsWith(e+" . ")&&c.split(" . ").length===e.split(" . ").length+1?l+1:l,0),u=V.useRef(!0),s=V.useRef(null);return V.useEffect(()=>{var l,c;if(u.current){u.current=!1;return}(c=(l=s.current)==null?void 0:l.scrollIntoView)==null||c.call(l,{behavior:"auto",block:"nearest",inline:"start"})},[n]),f.jsx("li",{ref:n?s:void 0,style:{paddingLeft:(e.split(" . ").length-1)*16},className:(a>0?"dropdown ":"")+(n?"active ":""),children:f.jsxs("span",{className:"content",children:[a>0&&f.jsx(tS,{"aria-label":t?"Replier le sous-menu":"Déplier le sous-menu","aria-expanded":t,onClick:()=>r(e),children:f.jsx(nS,{$open:t})}),f.jsx(fn,{dottedName:e,displayIcon:!0})]})},e)},YC=V.memo(QC),Mn={sm:"576px",md:"768px",lg:"992px",xl:"1200px"},XC=ee.div` + z-index: 200; + overflow: auto; + position: sticky; + top: 0; + + @media (min-width: ${Mn.lg}) { + max-width: 50%; + flex-shrink: 0; + } +`,JC=ee.div` + background: rgb(0 0 0 / 25%); + position: fixed; + top: 0; + left: 0; + bottom: 0; + right: 0; + z-index: 200; + transition: ease-in-out 0.25s; + transition-property: visibility, opacity; + visibility: ${({$open:e})=>e?"visible":"hidden"}; + opacity: ${({$open:e})=>e?"1":"0"}; + + @media (min-width: ${Mn.lg}) { + display: none; + } +`,ZC=ee.button` + margin: 0.25rem 0; + margin-right: 0.5rem; + background: none; + border: 1px solid rgb(29, 66, 140); + border-radius: 3px; + color: rgb(29, 66, 140); + padding: 0.5rem; + display: inline-block; + + &:hover { + background-color: rgb(219, 231, 255); + } + @media (min-width: ${Mn.lg}) { + display: none; + } +`,eS=ee.nav` + @media (min-width: ${Mn.lg}) { + flex-shrink: 0; + } + border-right: 1px solid #e6e6e6; + overflow: auto; + max-height: calc(100vh - 2rem); + position: sticky; + top: 0; + @media (max-width: ${Mn.lg}) { + position: fixed; + top: 0; + left: 0; + padding-top: 1rem; + bottom: 0; + z-index: 200; + max-height: initial; + background: white; + max-width: 80vw; + height: 100%; + + transition: all ease-in-out 0.25s; + ${({$open:e})=>e?"":"transform: translateX(-100%);"} + } + + ul { + flex-wrap: nowrap; + margin: 0; + + padding: 0; + list-style: none; + li { + margin-bottom: 3px; + max-width: 350px; + .content { + border-radius: 3px; + padding: 3px 1rem; + display: flex; + width: fit-content; + align-items: center; + flex-direction: row; + flex-wrap: nowrap; + } + + &.active .content { + background-color: #e6e6e6; + } + &:not(.active) a { + font-weight: normal; + } + &:not(.dropdown) .content:before { + content: ' '; + display: inline-block; + background-color: #b3b3b3; + min-width: 0.5rem; + min-height: 0.5rem; + border-radius: 0.5rem; + margin-left: 0.5rem; + margin-right: 1.25rem; + pointer-events: none; + } + } + } +`,tS=ee.button` + margin-right: 0.75rem; + flex-shrink: 0; + background: none; + border: 1px solid #b3b3b3; + border-radius: 2rem; + width: 1.5rem; + height: 1.5rem; + color: #999; + padding: 0; + display: inline-block; +`,nS=ee(dy)` + width: 100%; + transition: transform 0.1s; + height: 100%; + transform: rotate(${({$open:e})=>e?"0deg":"-90deg"}); +`;function rS({documentationPath:e,rulePath:t,engine:n,renderers:r,searchBar:i,language:o,apiDocumentationUrl:a,apiEvaluateUrl:u,npmPackage:s,mobileMenuPortalId:l,openNavButtonPortalId:c,showDevSection:m=!0}){const p=typeof window<"u"&&new URLSearchParams(window.location.search).get("currentEngineId"),d=V.useRef(r);return V.useEffect(()=>{d.current!==r&&(d.current=r)},[r]),f.jsx(xr.Provider,{value:n,children:f.jsx(hy.Provider,{value:e,children:f.jsx(gn.Provider,{value:fy(r),children:f.jsx(iS,{dottedName:Jt.decodeRuleName(t),subEngineId:p?parseInt(p,10):void 0,language:o,apiDocumentationUrl:a,apiEvaluateUrl:u,npmPackage:s,mobileMenuPortalId:l,openNavButtonPortalId:c,showDevSection:m,searchBar:i})})})})}function iS({dottedName:e,language:t,subEngineId:n,searchBar:r=!1,apiDocumentationUrl:i,apiEvaluateUrl:o,npmPackage:a,mobileMenuPortalId:u,openNavButtonPortalId:s,showDevSection:l}){const c=yn(),{References:m,Text:p}=V.useContext(gn),d=c.context.subEngines,x=n&&d.has(n),y=x?d.get(n):c;if(!(e in y.context.parsedRules))return f.jsx("p",{children:"Cette règle est introuvable dans la base"});y.resetCache(),y.cache.traversedVariablesStack=[];const k=y.evaluateNode(y.context.parsedRules[e]),{description:h,question:v}=k.rawNode,{valeur:g,nullableParent:S,ruleDisabledByItsParent:P}=k.explanation,E=uS(y,k),q=m==null?void 0:m({references:k.rawNode.références,dottedName:k.dottedName});return f.jsx(xr.Provider,{value:y,children:f.jsxs(oS,{id:"documentation-rule-root",children:[f.jsx(KC,{dottedName:e,mobileMenuPortalId:u,openNavButtonPortalId:s,searchBar:r}),f.jsx(aS,{children:f.jsxs(xm.Provider,{value:e,children:[f.jsx(GC,{dottedName:e}),f.jsx("section",{children:f.jsx(p,{children:h||v||""})}),f.jsxs("p",{style:{fontSize:"1.25rem",lineHeight:"2rem"},children:["Valeur : ",Un(k,{language:t}),k.nodeValue===void 0&&k.unit&&f.jsxs(f.Fragment,{children:[f.jsx("br",{}),"Unité : ",rt(k.unit)]})]}),P&&S&&f.jsx(f.Fragment,{children:f.jsxs("blockquote",{children:["Cette règle est ",f.jsx("strong",{children:"non applicable"})," car elle appartient à l’espace de nom :"," ",f.jsx(ne,{node:S})]})}),x&&f.jsxs("div",{style:{margin:"1rem 0",padding:"0rem 1rem",display:"flex",justifyContent:"flex-end",columnGap:"1rem",alignItems:"baseline",flexWrap:"wrap",background:"hsl(220, 60%, 97.5%)",borderRadius:"0.25rem"},children:[f.jsxs("p",{children:["Vous naviguez la documentation avec un"," ",f.jsx("strong",{children:"contexte"})," d’évaluation"," ",f.jsx("strong",{children:"spécifique"}),"."]}),f.jsx("div",{style:{flex:1}}),f.jsx("p",{style:{textAlign:"right",marginTop:0},children:f.jsx(fn,{dottedName:e,useSubEngine:!1,children:"Retourner à la version de base"})})]}),f.jsx("h2",{children:"Comment cette donnée est-elle calculée ?"}),f.jsx("div",{id:"documentation-rule-explanation",children:f.jsx(ne,{node:g})}),k.rawNode.note&&f.jsxs(f.Fragment,{children:[f.jsx("h3",{children:"Note"}),f.jsx("div",{children:f.jsx(p,{children:k.rawNode.note})})]}),q&&f.jsxs(f.Fragment,{children:[f.jsx("h3",{children:"Références"}),q]}),f.jsx("br",{}),l&&f.jsxs(f.Fragment,{children:[f.jsx("h3",{children:"Informations techniques"}),f.jsx(p,{children:"Si vous êtes développeur/euse vous trouverez ci-dessous des informations techniques utiles pour l’intégration de cette règle dans votre application."}),f.jsx(IC,{engine:y,situation:E,dottedName:e,rule:k,apiDocumentationUrl:i,apiEvaluateUrl:o,npmPackage:a})]})]})})]})})}var oS=ee.div` + display: flex; + flex-wrap: nowrap; + align-items: flex-start; + @media (max-width: ${Mn.lg}) { + flex-direction: column; + } +`,aS=ee.article` + flex-shrink: 1; + max-width: 100%; + @media (min-width: ${Mn.lg}) { + min-width: 0; + padding-left: 1rem; + border-left: 1px solid #e6e6e6; + margin-left: -1px; + } +`;function uS(e,t){const n=e.getSituation();return Object.fromEntries(Object.entries(n).filter(([i])=>{var o;return i===t.dottedName?!0:(o=t.traversedVariables)==null?void 0:o.includes(i)}))}/** + * @remix-run/router v1.15.2 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */function ho(){return ho=Object.assign?Object.assign.bind():function(e){for(var t=1;t"u")throw new Error(t)}function yy(e,t){if(!e){typeof console<"u"&&console.warn(t);try{throw new Error(t)}catch{}}}function lS(){return Math.random().toString(36).substr(2,8)}function Hp(e,t){return{usr:e.state,key:e.key,idx:t}}function Jl(e,t,n,r){return n===void 0&&(n=null),ho({pathname:typeof e=="string"?e:e.pathname,search:"",hash:""},typeof t=="string"?di(t):t,{state:n,key:t&&t.key||r||lS()})}function eu(e){let{pathname:t="/",search:n="",hash:r=""}=e;return n&&n!=="?"&&(t+=n.charAt(0)==="?"?n:"?"+n),r&&r!=="#"&&(t+=r.charAt(0)==="#"?r:"#"+r),t}function di(e){let t={};if(e){let n=e.indexOf("#");n>=0&&(t.hash=e.substr(n),e=e.substr(0,n));let r=e.indexOf("?");r>=0&&(t.search=e.substr(r),e=e.substr(0,r)),e&&(t.pathname=e)}return t}function cS(e,t,n,r){r===void 0&&(r={});let{window:i=document.defaultView,v5Compat:o=!1}=r,a=i.history,u=On.Pop,s=null,l=c();l==null&&(l=0,a.replaceState(ho({},a.state,{idx:l}),""));function c(){return(a.state||{idx:null}).idx}function m(){u=On.Pop;let k=c(),h=k==null?null:k-l;l=k,s&&s({action:u,location:y.location,delta:h})}function p(k,h){u=On.Push;let v=Jl(y.location,k,h);l=c()+1;let g=Hp(v,l),S=y.createHref(v);try{a.pushState(g,"",S)}catch(P){if(P instanceof DOMException&&P.name==="DataCloneError")throw P;i.location.assign(S)}o&&s&&s({action:u,location:y.location,delta:1})}function d(k,h){u=On.Replace;let v=Jl(y.location,k,h);l=c();let g=Hp(v,l),S=y.createHref(v);a.replaceState(g,"",S),o&&s&&s({action:u,location:y.location,delta:0})}function x(k){let h=i.location.origin!=="null"?i.location.origin:i.location.href,v=typeof k=="string"?k:eu(k);return v=v.replace(/ $/,"%20"),Ae(h,"No window.location.(origin|href) available to create URL for href: "+v),new URL(v,h)}let y={get action(){return u},get location(){return e(i,a)},listen(k){if(s)throw new Error("A history only accepts one active listener");return i.addEventListener(Gp,m),s=k,()=>{i.removeEventListener(Gp,m),s=null}},createHref(k){return t(i,k)},createURL:x,encodeLocation(k){let h=x(k);return{pathname:h.pathname,search:h.search,hash:h.hash}},push:p,replace:d,go(k){return a.go(k)}};return y}var Kp;(function(e){e.data="data",e.deferred="deferred",e.redirect="redirect",e.error="error"})(Kp||(Kp={}));function mS(e,t,n){n===void 0&&(n="/");let r=typeof t=="string"?di(t):t,i=Sm(r.pathname||"/",n);if(i==null)return null;let o=by(e);dS(o);let a=null;for(let u=0;a==null&&u{let s={relativePath:u===void 0?o.path||"":u,caseSensitive:o.caseSensitive===!0,childrenIndex:a,route:o};s.relativePath.startsWith("/")&&(Ae(s.relativePath.startsWith(r),'Absolute route path "'+s.relativePath+'" nested under path '+('"'+r+'" is not valid. An absolute child route path ')+"must start with the combined path of all its parent routes."),s.relativePath=s.relativePath.slice(r.length));let l=Fn([r,s.relativePath]),c=n.concat(s);o.children&&o.children.length>0&&(Ae(o.index!==!0,"Index routes must not have child routes. Please remove "+('all child routes from route path "'+l+'".')),by(o.children,t,c,l)),!(o.path==null&&!o.index)&&t.push({path:l,score:bS(l,o.index),routesMeta:c})};return e.forEach((o,a)=>{var u;if(o.path===""||!((u=o.path)!=null&&u.includes("?")))i(o,a);else for(let s of xy(o.path))i(o,a,s)}),t}function xy(e){let t=e.split("/");if(t.length===0)return[];let[n,...r]=t,i=n.endsWith("?"),o=n.replace(/\?$/,"");if(r.length===0)return i?[o,""]:[o];let a=xy(r.join("/")),u=[];return u.push(...a.map(s=>s===""?o:[o,s].join("/"))),i&&u.push(...a),u.map(s=>e.startsWith("/")&&s===""?"/":s)}function dS(e){e.sort((t,n)=>t.score!==n.score?n.score-t.score:xS(t.routesMeta.map(r=>r.childrenIndex),n.routesMeta.map(r=>r.childrenIndex)))}const pS=/^:[\w-]+$/,fS=3,hS=2,vS=1,gS=10,yS=-2,Qp=e=>e==="*";function bS(e,t){let n=e.split("/"),r=n.length;return n.some(Qp)&&(r+=yS),t&&(r+=hS),n.filter(i=>!Qp(i)).reduce((i,o)=>i+(pS.test(o)?fS:o===""?vS:gS),r)}function xS(e,t){return e.length===t.length&&e.slice(0,-1).every((r,i)=>r===t[i])?e[e.length-1]-t[t.length-1]:0}function ES(e,t){let{routesMeta:n}=e,r={},i="/",o=[];for(let a=0;a{let{paramName:p,isOptional:d}=c;if(p==="*"){let y=u[m]||"";a=o.slice(0,o.length-y.length).replace(/(.)\/+$/,"$1")}const x=u[m];return d&&!x?l[p]=void 0:l[p]=(x||"").replace(/%2F/g,"/"),l},{}),pathname:o,pathnameBase:a,pattern:e}}function kS(e,t,n){t===void 0&&(t=!1),n===void 0&&(n=!0),yy(e==="*"||!e.endsWith("*")||e.endsWith("/*"),'Route path "'+e+'" will be treated as if it were '+('"'+e.replace(/\*$/,"/*")+'" because the `*` character must ')+"always follow a `/` in the pattern. To get rid of this warning, "+('please change the route path to "'+e.replace(/\*$/,"/*")+'".'));let r=[],i="^"+e.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(a,u,s)=>(r.push({paramName:u,isOptional:s!=null}),s?"/?([^\\/]+)?":"/([^\\/]+)"));return e.endsWith("*")?(r.push({paramName:"*"}),i+=e==="*"||e==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):n?i+="\\/*$":e!==""&&e!=="/"&&(i+="(?:(?=\\/|$))"),[new RegExp(i,t?void 0:"i"),r]}function CS(e){try{return e.split("/").map(t=>decodeURIComponent(t).replace(/\//g,"%2F")).join("/")}catch(t){return yy(!1,'The URL path "'+e+'" could not be decoded because it is is a malformed URL segment. This is probably due to a bad percent '+("encoding ("+t+").")),e}}function Sm(e,t){if(t==="/")return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let n=t.endsWith("/")?t.length-1:t.length,r=e.charAt(n);return r&&r!=="/"?null:e.slice(n)||"/"}function SS(e,t){t===void 0&&(t="/");let{pathname:n,search:r="",hash:i=""}=typeof e=="string"?di(e):e;return{pathname:n?n.startsWith("/")?n:qS(n,t):t,search:LS(r),hash:jS(i)}}function qS(e,t){let n=t.replace(/\/+$/,"").split("/");return e.split("/").forEach(i=>{i===".."?n.length>1&&n.pop():i!=="."&&n.push(i)}),n.length>1?n.join("/"):"/"}function js(e,t,n,r){return"Cannot include a '"+e+"' character in a manually specified "+("`to."+t+"` field ["+JSON.stringify(r)+"]. Please separate it out to the ")+("`to."+n+"` field. Alternatively you may provide the full path as ")+'a string in and the router will parse it for you.'}function PS(e){return e.filter((t,n)=>n===0||t.route.path&&t.route.path.length>0)}function Ey(e,t){let n=PS(e);return t?n.map((r,i)=>i===e.length-1?r.pathname:r.pathnameBase):n.map(r=>r.pathnameBase)}function wy(e,t,n,r){r===void 0&&(r=!1);let i;typeof e=="string"?i=di(e):(i=ho({},e),Ae(!i.pathname||!i.pathname.includes("?"),js("?","pathname","search",i)),Ae(!i.pathname||!i.pathname.includes("#"),js("#","pathname","hash",i)),Ae(!i.search||!i.search.includes("#"),js("#","search","hash",i)));let o=e===""||i.pathname==="",a=o?"/":i.pathname,u;if(a==null)u=n;else{let m=t.length-1;if(!r&&a.startsWith("..")){let p=a.split("/");for(;p[0]==="..";)p.shift(),m-=1;i.pathname=p.join("/")}u=m>=0?t[m]:"/"}let s=SS(i,u),l=a&&a!=="/"&&a.endsWith("/"),c=(o||a===".")&&n.endsWith("/");return!s.pathname.endsWith("/")&&(l||c)&&(s.pathname+="/"),s}const Fn=e=>e.join("/").replace(/\/\/+/g,"/"),NS=e=>e.replace(/\/+$/,"").replace(/^\/*/,"/"),LS=e=>!e||e==="?"?"":e.startsWith("?")?e:"?"+e,jS=e=>!e||e==="#"?"":e.startsWith("#")?e:"#"+e;function OS(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.internal=="boolean"&&"data"in e}const ky=["post","put","patch","delete"];new Set(ky);const VS=["get",...ky];new Set(VS);/** + * React Router v6.22.2 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */function vo(){return vo=Object.assign?Object.assign.bind():function(e){for(var t=1;t{u.current=!0}),V.useCallback(function(l,c){if(c===void 0&&(c={}),!u.current)return;if(typeof l=="number"){r.go(l);return}let m=wy(l,JSON.parse(a),o,c.relative==="path");e==null&&t!=="/"&&(m.pathname=m.pathname==="/"?t:Fn([t,m.pathname])),(c.replace?r.replace:r.push)(m,c.state,c)},[t,r,a,o,e])}function TS(){let{matches:e}=V.useContext(Kn),t=e[e.length-1];return t?t.params:{}}function qy(e,t){let{relative:n}=t===void 0?{}:t,{future:r}=V.useContext(Er),{matches:i}=V.useContext(Kn),{pathname:o}=Ru(),a=JSON.stringify(Ey(i,r.v7_relativeSplatPath));return V.useMemo(()=>wy(e,JSON.parse(a),o,n==="path"),[e,a,o,n])}function zS(e,t){return $S(e,t)}function $S(e,t,n,r){Po()||Ae(!1);let{navigator:i}=V.useContext(Er),{matches:o}=V.useContext(Kn),a=o[o.length-1],u=a?a.params:{};a&&a.pathname;let s=a?a.pathnameBase:"/";a&&a.route;let l=Ru(),c;if(t){var m;let k=typeof t=="string"?di(t):t;s==="/"||(m=k.pathname)!=null&&m.startsWith(s)||Ae(!1),c=k}else c=l;let p=c.pathname||"/",d=p;if(s!=="/"){let k=s.replace(/^\//,"").split("/");d="/"+p.replace(/^\//,"").split("/").slice(k.length).join("/")}let x=mS(e,{pathname:d}),y=MS(x&&x.map(k=>Object.assign({},k,{params:Object.assign({},u,k.params),pathname:Fn([s,i.encodeLocation?i.encodeLocation(k.pathname).pathname:k.pathname]),pathnameBase:k.pathnameBase==="/"?s:Fn([s,i.encodeLocation?i.encodeLocation(k.pathnameBase).pathname:k.pathnameBase])})),o,n,r);return t&&y?V.createElement(_u.Provider,{value:{location:vo({pathname:"/",search:"",hash:"",state:null,key:"default"},c),navigationType:On.Pop}},y):y}function US(){let e=KS(),t=OS(e)?e.status+" "+e.statusText:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,i={padding:"0.5rem",backgroundColor:"rgba(200,200,200, 0.5)"};return V.createElement(V.Fragment,null,V.createElement("h2",null,"Unexpected Application Error!"),V.createElement("h3",{style:{fontStyle:"italic"}},t),n?V.createElement("pre",{style:i},n):null,null)}const FS=V.createElement(US,null);class DS extends V.Component{constructor(t){super(t),this.state={location:t.location,revalidation:t.revalidation,error:t.error}}static getDerivedStateFromError(t){return{error:t}}static getDerivedStateFromProps(t,n){return n.location!==t.location||n.revalidation!=="idle"&&t.revalidation==="idle"?{error:t.error,location:t.location,revalidation:t.revalidation}:{error:t.error!==void 0?t.error:n.error,location:n.location,revalidation:t.revalidation||n.revalidation}}componentDidCatch(t,n){console.error("React Router caught the following error during render",t,n)}render(){return this.state.error!==void 0?V.createElement(Kn.Provider,{value:this.props.routeContext},V.createElement(Cy.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}function BS(e){let{routeContext:t,match:n,children:r}=e,i=V.useContext(qm);return i&&i.static&&i.staticContext&&(n.route.errorElement||n.route.ErrorBoundary)&&(i.staticContext._deepestRenderedBoundaryId=n.route.id),V.createElement(Kn.Provider,{value:t},r)}function MS(e,t,n,r){var i;if(t===void 0&&(t=[]),n===void 0&&(n=null),r===void 0&&(r=null),e==null){var o;if((o=n)!=null&&o.errors)e=n.matches;else return null}let a=e,u=(i=n)==null?void 0:i.errors;if(u!=null){let c=a.findIndex(m=>m.route.id&&(u==null?void 0:u[m.route.id]));c>=0||Ae(!1),a=a.slice(0,Math.min(a.length,c+1))}let s=!1,l=-1;if(n&&r&&r.v7_partialHydration)for(let c=0;c=0?a=a.slice(0,l+1):a=[a[0]];break}}}return a.reduceRight((c,m,p)=>{let d,x=!1,y=null,k=null;n&&(d=u&&m.route.id?u[m.route.id]:void 0,y=m.route.errorElement||FS,s&&(l<0&&p===0?(x=!0,k=null):l===p&&(x=!0,k=m.route.hydrateFallbackElement||null)));let h=t.concat(a.slice(0,p+1)),v=()=>{let g;return d?g=y:x?g=k:m.route.Component?g=V.createElement(m.route.Component,null):m.route.element?g=m.route.element:g=c,V.createElement(BS,{match:m,routeContext:{outlet:c,matches:h,isDataRoute:n!=null},children:g})};return n&&(m.route.ErrorBoundary||m.route.errorElement||p===0)?V.createElement(DS,{location:n.location,revalidation:n.revalidation,component:y,error:d,children:v(),routeContext:{outlet:null,matches:h,isDataRoute:!0}}):v()},null)}var Py=function(e){return e.UseBlocker="useBlocker",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e}(Py||{}),tu=function(e){return e.UseBlocker="useBlocker",e.UseLoaderData="useLoaderData",e.UseActionData="useActionData",e.UseRouteError="useRouteError",e.UseNavigation="useNavigation",e.UseRouteLoaderData="useRouteLoaderData",e.UseMatches="useMatches",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e.UseRouteId="useRouteId",e}(tu||{});function WS(e){let t=V.useContext(qm);return t||Ae(!1),t}function GS(e){let t=V.useContext(_S);return t||Ae(!1),t}function HS(e){let t=V.useContext(Kn);return t||Ae(!1),t}function Ny(e){let t=HS(),n=t.matches[t.matches.length-1];return n.route.id||Ae(!1),n.route.id}function KS(){var e;let t=V.useContext(Cy),n=GS(tu.UseRouteError),r=Ny(tu.UseRouteError);return t!==void 0?t:(e=n.errors)==null?void 0:e[r]}function QS(){let{router:e}=WS(Py.UseNavigateStable),t=Ny(tu.UseNavigateStable),n=V.useRef(!1);return Sy(()=>{n.current=!0}),V.useCallback(function(i,o){o===void 0&&(o={}),n.current&&(typeof i=="number"?e.navigate(i):e.navigate(i,vo({fromRouteId:t},o)))},[e,t])}function Zl(e){Ae(!1)}function YS(e){let{basename:t="/",children:n=null,location:r,navigationType:i=On.Pop,navigator:o,static:a=!1,future:u}=e;Po()&&Ae(!1);let s=t.replace(/^\/*/,"/"),l=V.useMemo(()=>({basename:s,navigator:o,static:a,future:vo({v7_relativeSplatPath:!1},u)}),[s,u,o,a]);typeof r=="string"&&(r=di(r));let{pathname:c="/",search:m="",hash:p="",state:d=null,key:x="default"}=r,y=V.useMemo(()=>{let k=Sm(c,s);return k==null?null:{location:{pathname:k,search:m,hash:p,state:d,key:x},navigationType:i}},[s,c,m,p,d,x,i]);return y==null?null:V.createElement(Er.Provider,{value:l},V.createElement(_u.Provider,{children:n,value:y}))}function XS(e){let{children:t,location:n}=e;return zS(ec(t),n)}new Promise(()=>{});function ec(e,t){t===void 0&&(t=[]);let n=[];return V.Children.forEach(e,(r,i)=>{if(!V.isValidElement(r))return;let o=[...t,i];if(r.type===V.Fragment){n.push.apply(n,ec(r.props.children,o));return}r.type!==Zl&&Ae(!1),!r.props.index||!r.props.children||Ae(!1);let a={id:r.props.id||o.join("-"),caseSensitive:r.props.caseSensitive,element:r.props.element,Component:r.props.Component,index:r.props.index,path:r.props.path,loader:r.props.loader,action:r.props.action,errorElement:r.props.errorElement,ErrorBoundary:r.props.ErrorBoundary,hasErrorBoundary:r.props.ErrorBoundary!=null||r.props.errorElement!=null,shouldRevalidate:r.props.shouldRevalidate,handle:r.props.handle,lazy:r.props.lazy};r.props.children&&(a.children=ec(r.props.children,o)),n.push(a)}),n}/** + * React Router DOM v6.22.2 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */function tc(){return tc=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0)&&(n[i]=e[i]);return n}function ZS(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function eq(e,t){return e.button===0&&(!t||t==="_self")&&!ZS(e)}const tq=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset","unstable_viewTransition"],nq="6";try{window.__reactRouterVersion=nq}catch{}const rq="startTransition",Yp=M0[rq];function iq(e){let{basename:t,children:n,future:r,window:i}=e,o=V.useRef();o.current==null&&(o.current=sS({window:i,v5Compat:!0}));let a=o.current,[u,s]=V.useState({action:a.action,location:a.location}),{v7_startTransition:l}=r||{},c=V.useCallback(m=>{l&&Yp?Yp(()=>s(m)):s(m)},[s,l]);return V.useLayoutEffect(()=>a.listen(c),[a,c]),V.createElement(YS,{basename:t,children:n,location:u.location,navigationType:u.action,navigator:a,future:r})}const oq=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",aq=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,Ly=V.forwardRef(function(t,n){let{onClick:r,relative:i,reloadDocument:o,replace:a,state:u,target:s,to:l,preventScrollReset:c,unstable_viewTransition:m}=t,p=JS(t,tq),{basename:d}=V.useContext(Er),x,y=!1;if(typeof l=="string"&&aq.test(l)&&(x=l,oq))try{let g=new URL(window.location.href),S=l.startsWith("//")?new URL(g.protocol+l):new URL(l),P=Sm(S.pathname,d);S.origin===g.origin&&P!=null?l=P+S.search+S.hash:y=!0}catch{}let k=RS(l,{relative:i}),h=uq(l,{replace:a,state:u,target:s,preventScrollReset:c,relative:i,unstable_viewTransition:m});function v(g){r&&r(g),g.defaultPrevented||h(g)}return V.createElement("a",tc({},p,{href:x||k,onClick:y||o?r:v,ref:n,target:s}))});var Xp;(function(e){e.UseScrollRestoration="useScrollRestoration",e.UseSubmit="useSubmit",e.UseSubmitFetcher="useSubmitFetcher",e.UseFetcher="useFetcher",e.useViewTransitionState="useViewTransitionState"})(Xp||(Xp={}));var Jp;(function(e){e.UseFetcher="useFetcher",e.UseFetchers="useFetchers",e.UseScrollRestoration="useScrollRestoration"})(Jp||(Jp={}));function uq(e,t){let{target:n,replace:r,state:i,preventScrollReset:o,relative:a,unstable_viewTransition:u}=t===void 0?{}:t,s=AS(),l=Ru(),c=qy(e,{relative:a});return V.useCallback(m=>{if(eq(m,n)){m.preventDefault();let p=r!==void 0?r:eu(l)===eu(c);s(e,{replace:p,state:i,preventScrollReset:o,relative:a,unstable_viewTransition:u})}},[l,s,c,r,i,n,e,o,a,u])}const Zp=["http","https","mailto","tel"];function sq(e){const t=(e||"").trim(),n=t.charAt(0);if(n==="#"||n==="/")return t;const r=t.indexOf(":");if(r===-1)return t;let i=-1;for(;++ii||(i=t.indexOf("#"),i!==-1&&r>i)?t:"javascript:void(0)"}/*! + * Determine if an object is a Buffer + * + * @author Feross Aboukhadijeh + * @license MIT + */var lq=function(t){return t!=null&&t.constructor!=null&&typeof t.constructor.isBuffer=="function"&&t.constructor.isBuffer(t)};const jy=hr(lq);function Gi(e){return!e||typeof e!="object"?"":"position"in e||"type"in e?ef(e.position):"start"in e||"end"in e?ef(e):"line"in e||"column"in e?nc(e):""}function nc(e){return tf(e&&e.line)+":"+tf(e&&e.column)}function ef(e){return nc(e&&e.start)+"-"+nc(e&&e.end)}function tf(e){return e&&typeof e=="number"?e:1}class jt extends Error{constructor(t,n,r){const i=[null,null];let o={start:{line:null,column:null},end:{line:null,column:null}};if(super(),typeof n=="string"&&(r=n,n=void 0),typeof r=="string"){const a=r.indexOf(":");a===-1?i[1]=r:(i[0]=r.slice(0,a),i[1]=r.slice(a+1))}n&&("type"in n||"position"in n?n.position&&(o=n.position):"start"in n||"end"in n?o=n:("line"in n||"column"in n)&&(o.start=n)),this.name=Gi(n)||"1:1",this.message=typeof t=="object"?t.message:t,this.stack="",typeof t=="object"&&t.stack&&(this.stack=t.stack),this.reason=this.message,this.fatal,this.line=o.start.line,this.column=o.start.column,this.position=o,this.source=i[0],this.ruleId=i[1],this.file,this.actual,this.expected,this.url,this.note}}jt.prototype.file="";jt.prototype.name="";jt.prototype.reason="";jt.prototype.message="";jt.prototype.stack="";jt.prototype.fatal=null;jt.prototype.column=null;jt.prototype.line=null;jt.prototype.source=null;jt.prototype.ruleId=null;jt.prototype.position=null;const Mt={basename:cq,dirname:mq,extname:dq,join:pq,sep:"/"};function cq(e,t){if(t!==void 0&&typeof t!="string")throw new TypeError('"ext" argument must be a string');No(e);let n=0,r=-1,i=e.length,o;if(t===void 0||t.length===0||t.length>e.length){for(;i--;)if(e.charCodeAt(i)===47){if(o){n=i+1;break}}else r<0&&(o=!0,r=i+1);return r<0?"":e.slice(n,r)}if(t===e)return"";let a=-1,u=t.length-1;for(;i--;)if(e.charCodeAt(i)===47){if(o){n=i+1;break}}else a<0&&(o=!0,a=i+1),u>-1&&(e.charCodeAt(i)===t.charCodeAt(u--)?u<0&&(r=i):(u=-1,r=a));return n===r?r=a:r<0&&(r=e.length),e.slice(n,r)}function mq(e){if(No(e),e.length===0)return".";let t=-1,n=e.length,r;for(;--n;)if(e.charCodeAt(n)===47){if(r){t=n;break}}else r||(r=!0);return t<0?e.charCodeAt(0)===47?"/":".":t===1&&e.charCodeAt(0)===47?"//":e.slice(0,t)}function dq(e){No(e);let t=e.length,n=-1,r=0,i=-1,o=0,a;for(;t--;){const u=e.charCodeAt(t);if(u===47){if(a){r=t+1;break}continue}n<0&&(a=!0,n=t+1),u===46?i<0?i=t:o!==1&&(o=1):i>-1&&(o=-1)}return i<0||n<0||o===0||o===1&&i===n-1&&i===r+1?"":e.slice(i,n)}function pq(...e){let t=-1,n;for(;++t0&&e.charCodeAt(e.length-1)===47&&(n+="/"),t?"/"+n:n}function hq(e,t){let n="",r=0,i=-1,o=0,a=-1,u,s;for(;++a<=e.length;){if(a2){if(s=n.lastIndexOf("/"),s!==n.length-1){s<0?(n="",r=0):(n=n.slice(0,s),r=n.length-1-n.lastIndexOf("/")),i=a,o=0;continue}}else if(n.length>0){n="",r=0,i=a,o=0;continue}}t&&(n=n.length>0?n+"/..":"..",r=2)}else n.length>0?n+="/"+e.slice(i+1,a):n=e.slice(i+1,a),r=a-i-1;i=a,o=0}else u===46&&o>-1?o++:o=-1}return n}function No(e){if(typeof e!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}const vq={cwd:gq};function gq(){return"/"}function rc(e){return e!==null&&typeof e=="object"&&e.href&&e.origin}function yq(e){if(typeof e=="string")e=new URL(e);else if(!rc(e)){const t=new TypeError('The "path" argument must be of type string or an instance of URL. Received `'+e+"`");throw t.code="ERR_INVALID_ARG_TYPE",t}if(e.protocol!=="file:"){const t=new TypeError("The URL must be of scheme file");throw t.code="ERR_INVALID_URL_SCHEME",t}return bq(e)}function bq(e){if(e.hostname!==""){const r=new TypeError('File URL host must be "localhost" or empty on darwin');throw r.code="ERR_INVALID_FILE_URL_HOST",r}const t=e.pathname;let n=-1;for(;++n"u"||wa.call(t,i)},lf=function(t,n){of&&n.name==="__proto__"?of(t,n.name,{enumerable:!0,configurable:!0,value:n.newValue,writable:!0}):t[n.name]=n.newValue},cf=function(t,n){if(n==="__proto__")if(wa.call(t,n)){if(af)return af(t,n).value}else return;return t[n]},Eq=function e(){var t,n,r,i,o,a,u=arguments[0],s=1,l=arguments.length,c=!1;for(typeof u=="boolean"&&(c=u,u=arguments[1]||{},s=2),(u==null||typeof u!="object"&&typeof u!="function")&&(u={});sa.length;let s;u&&a.push(i);try{s=e.apply(this,a)}catch(l){const c=l;if(u&&n)throw c;return i(c)}u||(s&&s.then&&typeof s.then=="function"?s.then(o,i):s instanceof Error?i(s):o(s))}function i(a,...u){n||(n=!0,t(a,...u))}function o(a){i(null,a)}}const Cq=Ry().freeze(),_y={}.hasOwnProperty;function Ry(){const e=wq(),t=[];let n={},r,i=-1;return o.data=a,o.Parser=void 0,o.Compiler=void 0,o.freeze=u,o.attachers=t,o.use=s,o.parse=l,o.stringify=c,o.run=m,o.runSync=p,o.process=d,o.processSync=x,o;function o(){const y=Ry();let k=-1;for(;++k{if(E||!q||!j)P(E);else{const M=o.stringify(q,j);M==null||(Pq(M)?j.value=M:j.result=M),P(E,j)}});function P(E,q){E||!q?g(E):v?v(q):k(null,q)}}}function x(y){let k;o.freeze(),Rs("processSync",o.Parser),As("processSync",o.Compiler);const h=Pi(y);return o.process(h,v),ff("processSync","process",k),h;function v(g){k=!0,rf(g)}}}function df(e,t){return typeof e=="function"&&e.prototype&&(Sq(e.prototype)||t in e.prototype)}function Sq(e){let t;for(t in e)if(_y.call(e,t))return!0;return!1}function Rs(e,t){if(typeof t!="function")throw new TypeError("Cannot `"+e+"` without `Parser`")}function As(e,t){if(typeof t!="function")throw new TypeError("Cannot `"+e+"` without `Compiler`")}function Is(e,t){if(t)throw new Error("Cannot call `"+e+"` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.")}function pf(e){if(!ic(e)||typeof e.type!="string")throw new TypeError("Expected node, got `"+e+"`")}function ff(e,t,n){if(!n)throw new Error("`"+e+"` finished async. Use `"+t+"` instead")}function Pi(e){return qq(e)?e:new Oy(e)}function qq(e){return!!(e&&typeof e=="object"&&"message"in e&&"messages"in e)}function Pq(e){return typeof e=="string"||jy(e)}const Nq={};function Lq(e,t){const n=Nq,r=typeof n.includeImageAlt=="boolean"?n.includeImageAlt:!0,i=typeof n.includeHtml=="boolean"?n.includeHtml:!0;return Ay(e,r,i)}function Ay(e,t,n){if(jq(e)){if("value"in e)return e.type==="html"&&!n?"":e.value;if(t&&"alt"in e&&e.alt)return e.alt;if("children"in e)return hf(e.children,t,n)}return Array.isArray(e)?hf(e,t,n):""}function hf(e,t,n){const r=[];let i=-1;for(;++ii?0:i+t:t=t>i?i:t,n=n>0?n:0,r.length<1e4)a=Array.from(r),a.unshift(t,n),e.splice(...a);else for(n&&e.splice(t,n);o0?(Zt(e,e.length,0,t),e):t}const vf={}.hasOwnProperty;function Oq(e){const t={};let n=-1;for(;++na))return;const q=t.events.length;let j=q,M,W;for(;j--;)if(t.events[j][0]==="exit"&&t.events[j][1].type==="chunkFlow"){if(M){W=t.events[j][1].end;break}M=!0}for(h(r),E=q;Eg;){const P=n[S];t.containerState=P[1],P[0].exit.call(t,e)}n.length=g}function v(){i.write([null]),o=void 0,i=void 0,t.containerState._closeFlow=void 0}}function Mq(e,t,n){return ve(e,e.attempt(this.parser.constructs.document,t,n),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function yf(e){if(e===null||st(e)||$q(e))return 1;if(zq(e))return 2}function Pm(e,t,n){const r=[];let i=-1;for(;++i1&&e[n][1].end.offset-e[n][1].start.offset>1?2:1;const m=Object.assign({},e[r][1].end),p=Object.assign({},e[n][1].start);bf(m,-s),bf(p,s),a={type:s>1?"strongSequence":"emphasisSequence",start:m,end:Object.assign({},e[r][1].end)},u={type:s>1?"strongSequence":"emphasisSequence",start:Object.assign({},e[n][1].start),end:p},o={type:s>1?"strongText":"emphasisText",start:Object.assign({},e[r][1].end),end:Object.assign({},e[n][1].start)},i={type:s>1?"strong":"emphasis",start:Object.assign({},a.start),end:Object.assign({},u.end)},e[r][1].end=Object.assign({},a.start),e[n][1].start=Object.assign({},u.end),l=[],e[r][1].end.offset-e[r][1].start.offset&&(l=kt(l,[["enter",e[r][1],t],["exit",e[r][1],t]])),l=kt(l,[["enter",i,t],["enter",a,t],["exit",a,t],["enter",o,t]]),l=kt(l,Pm(t.parser.constructs.insideSpan.null,e.slice(r+1,n),t)),l=kt(l,[["exit",o,t],["enter",u,t],["exit",u,t],["exit",i,t]]),e[n][1].end.offset-e[n][1].start.offset?(c=2,l=kt(l,[["enter",e[n][1],t],["exit",e[n][1],t]])):c=0,Zt(e,r-1,n-r+3,l),n=r+l.length-c-2;break}}for(n=-1;++n0&&ue(E)?ve(e,v,"linePrefix",o+1)(E):v(E)}function v(E){return E===null||Q(E)?e.check(Ef,y,S)(E):(e.enter("codeFlowValue"),g(E))}function g(E){return E===null||Q(E)?(e.exit("codeFlowValue"),v(E)):(e.consume(E),g)}function S(E){return e.exit("codeFenced"),t(E)}function P(E,q,j){let M=0;return W;function W(I){return E.enter("lineEnding"),E.consume(I),E.exit("lineEnding"),U}function U(I){return E.enter("codeFencedFence"),ue(I)?ve(E,C,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(I):C(I)}function C(I){return I===u?(E.enter("codeFencedFenceSequence"),O(I)):j(I)}function O(I){return I===u?(M++,E.consume(I),O):M>=a?(E.exit("codeFencedFenceSequence"),ue(I)?ve(E,A,"whitespace")(I):A(I)):j(I)}function A(I){return I===null||Q(I)?(E.exit("codeFencedFence"),q(I)):j(I)}}}function n2(e,t,n){const r=this;return i;function i(a){return a===null?n(a):(e.enter("lineEnding"),e.consume(a),e.exit("lineEnding"),o)}function o(a){return r.parser.lazy[r.now().line]?n(a):t(a)}}const Ts={name:"codeIndented",tokenize:i2},r2={tokenize:o2,partial:!0};function i2(e,t,n){const r=this;return i;function i(l){return e.enter("codeIndented"),ve(e,o,"linePrefix",5)(l)}function o(l){const c=r.events[r.events.length-1];return c&&c[1].type==="linePrefix"&&c[2].sliceSerialize(c[1],!0).length>=4?a(l):n(l)}function a(l){return l===null?s(l):Q(l)?e.attempt(r2,a,s)(l):(e.enter("codeFlowValue"),u(l))}function u(l){return l===null||Q(l)?(e.exit("codeFlowValue"),a(l)):(e.consume(l),u)}function s(l){return e.exit("codeIndented"),t(l)}}function o2(e,t,n){const r=this;return i;function i(a){return r.parser.lazy[r.now().line]?n(a):Q(a)?(e.enter("lineEnding"),e.consume(a),e.exit("lineEnding"),i):ve(e,o,"linePrefix",5)(a)}function o(a){const u=r.events[r.events.length-1];return u&&u[1].type==="linePrefix"&&u[2].sliceSerialize(u[1],!0).length>=4?t(a):Q(a)?i(a):n(a)}}const a2={name:"codeText",tokenize:l2,resolve:u2,previous:s2};function u2(e){let t=e.length-4,n=3,r,i;if((e[n][1].type==="lineEnding"||e[n][1].type==="space")&&(e[t][1].type==="lineEnding"||e[t][1].type==="space")){for(r=n;++r=4?t(a):e.interrupt(r.parser.constructs.flow,n,t)(a)}}function Uy(e,t,n,r,i,o,a,u,s){const l=s||Number.POSITIVE_INFINITY;let c=0;return m;function m(h){return h===60?(e.enter(r),e.enter(i),e.enter(o),e.consume(h),e.exit(o),p):h===null||h===32||h===41||oc(h)?n(h):(e.enter(r),e.enter(a),e.enter(u),e.enter("chunkString",{contentType:"string"}),y(h))}function p(h){return h===62?(e.enter(o),e.consume(h),e.exit(o),e.exit(i),e.exit(r),t):(e.enter(u),e.enter("chunkString",{contentType:"string"}),d(h))}function d(h){return h===62?(e.exit("chunkString"),e.exit(u),p(h)):h===null||h===60||Q(h)?n(h):(e.consume(h),h===92?x:d)}function x(h){return h===60||h===62||h===92?(e.consume(h),d):d(h)}function y(h){return!c&&(h===null||h===41||st(h))?(e.exit("chunkString"),e.exit(u),e.exit(a),e.exit(r),t(h)):c999||d===null||d===91||d===93&&!s||d===94&&!u&&"_hiddenFootnoteSupport"in a.parser.constructs?n(d):d===93?(e.exit(o),e.enter(i),e.consume(d),e.exit(i),e.exit(r),t):Q(d)?(e.enter("lineEnding"),e.consume(d),e.exit("lineEnding"),c):(e.enter("chunkString",{contentType:"string"}),m(d))}function m(d){return d===null||d===91||d===93||Q(d)||u++>999?(e.exit("chunkString"),c(d)):(e.consume(d),s||(s=!ue(d)),d===92?p:m)}function p(d){return d===91||d===92||d===93?(e.consume(d),u++,m):m(d)}}function Dy(e,t,n,r,i,o){let a;return u;function u(p){return p===34||p===39||p===40?(e.enter(r),e.enter(i),e.consume(p),e.exit(i),a=p===40?41:p,s):n(p)}function s(p){return p===a?(e.enter(i),e.consume(p),e.exit(i),e.exit(r),t):(e.enter(o),l(p))}function l(p){return p===a?(e.exit(o),s(a)):p===null?n(p):Q(p)?(e.enter("lineEnding"),e.consume(p),e.exit("lineEnding"),ve(e,l,"linePrefix")):(e.enter("chunkString",{contentType:"string"}),c(p))}function c(p){return p===a||p===null||Q(p)?(e.exit("chunkString"),l(p)):(e.consume(p),p===92?m:c)}function m(p){return p===a||p===92?(e.consume(p),c):c(p)}}function Hi(e,t){let n;return r;function r(i){return Q(i)?(e.enter("lineEnding"),e.consume(i),e.exit("lineEnding"),n=!0,r):ue(i)?ve(e,r,n?"linePrefix":"lineSuffix")(i):t(i)}}function Gr(e){return e.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}const v2={name:"definition",tokenize:y2},g2={tokenize:b2,partial:!0};function y2(e,t,n){const r=this;let i;return o;function o(d){return e.enter("definition"),a(d)}function a(d){return Fy.call(r,e,u,n,"definitionLabel","definitionLabelMarker","definitionLabelString")(d)}function u(d){return i=Gr(r.sliceSerialize(r.events[r.events.length-1][1]).slice(1,-1)),d===58?(e.enter("definitionMarker"),e.consume(d),e.exit("definitionMarker"),s):n(d)}function s(d){return st(d)?Hi(e,l)(d):l(d)}function l(d){return Uy(e,c,n,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(d)}function c(d){return e.attempt(g2,m,m)(d)}function m(d){return ue(d)?ve(e,p,"whitespace")(d):p(d)}function p(d){return d===null||Q(d)?(e.exit("definition"),r.parser.defined.push(i),t(d)):n(d)}}function b2(e,t,n){return r;function r(u){return st(u)?Hi(e,i)(u):n(u)}function i(u){return Dy(e,o,n,"definitionTitle","definitionTitleMarker","definitionTitleString")(u)}function o(u){return ue(u)?ve(e,a,"whitespace")(u):a(u)}function a(u){return u===null||Q(u)?t(u):n(u)}}const x2={name:"hardBreakEscape",tokenize:E2};function E2(e,t,n){return r;function r(o){return e.enter("hardBreakEscape"),e.consume(o),i}function i(o){return Q(o)?(e.exit("hardBreakEscape"),t(o)):n(o)}}const w2={name:"headingAtx",tokenize:C2,resolve:k2};function k2(e,t){let n=e.length-2,r=3,i,o;return e[r][1].type==="whitespace"&&(r+=2),n-2>r&&e[n][1].type==="whitespace"&&(n-=2),e[n][1].type==="atxHeadingSequence"&&(r===n-1||n-4>r&&e[n-2][1].type==="whitespace")&&(n-=r+1===n?2:4),n>r&&(i={type:"atxHeadingText",start:e[r][1].start,end:e[n][1].end},o={type:"chunkText",start:e[r][1].start,end:e[n][1].end,contentType:"text"},Zt(e,r,n-r+1,[["enter",i,t],["enter",o,t],["exit",o,t],["exit",i,t]])),e}function C2(e,t,n){let r=0;return i;function i(c){return e.enter("atxHeading"),o(c)}function o(c){return e.enter("atxHeadingSequence"),a(c)}function a(c){return c===35&&r++<6?(e.consume(c),a):c===null||st(c)?(e.exit("atxHeadingSequence"),u(c)):n(c)}function u(c){return c===35?(e.enter("atxHeadingSequence"),s(c)):c===null||Q(c)?(e.exit("atxHeading"),t(c)):ue(c)?ve(e,u,"whitespace")(c):(e.enter("atxHeadingText"),l(c))}function s(c){return c===35?(e.consume(c),s):(e.exit("atxHeadingSequence"),u(c))}function l(c){return c===null||c===35||st(c)?(e.exit("atxHeadingText"),u(c)):(e.consume(c),l)}}const S2=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],kf=["pre","script","style","textarea"],q2={name:"htmlFlow",tokenize:j2,resolveTo:L2,concrete:!0},P2={tokenize:V2,partial:!0},N2={tokenize:O2,partial:!0};function L2(e){let t=e.length;for(;t--&&!(e[t][0]==="enter"&&e[t][1].type==="htmlFlow"););return t>1&&e[t-2][1].type==="linePrefix"&&(e[t][1].start=e[t-2][1].start,e[t+1][1].start=e[t-2][1].start,e.splice(t-2,2)),e}function j2(e,t,n){const r=this;let i,o,a,u,s;return l;function l(w){return c(w)}function c(w){return e.enter("htmlFlow"),e.enter("htmlFlowData"),e.consume(w),m}function m(w){return w===33?(e.consume(w),p):w===47?(e.consume(w),o=!0,y):w===63?(e.consume(w),i=3,r.interrupt?t:b):Ht(w)?(e.consume(w),a=String.fromCharCode(w),k):n(w)}function p(w){return w===45?(e.consume(w),i=2,d):w===91?(e.consume(w),i=5,u=0,x):Ht(w)?(e.consume(w),i=4,r.interrupt?t:b):n(w)}function d(w){return w===45?(e.consume(w),r.interrupt?t:b):n(w)}function x(w){const ae="CDATA[";return w===ae.charCodeAt(u++)?(e.consume(w),u===ae.length?r.interrupt?t:C:x):n(w)}function y(w){return Ht(w)?(e.consume(w),a=String.fromCharCode(w),k):n(w)}function k(w){if(w===null||w===47||w===62||st(w)){const ae=w===47,Ee=a.toLowerCase();return!ae&&!o&&kf.includes(Ee)?(i=1,r.interrupt?t(w):C(w)):S2.includes(a.toLowerCase())?(i=6,ae?(e.consume(w),h):r.interrupt?t(w):C(w)):(i=7,r.interrupt&&!r.parser.lazy[r.now().line]?n(w):o?v(w):g(w))}return w===45||ht(w)?(e.consume(w),a+=String.fromCharCode(w),k):n(w)}function h(w){return w===62?(e.consume(w),r.interrupt?t:C):n(w)}function v(w){return ue(w)?(e.consume(w),v):W(w)}function g(w){return w===47?(e.consume(w),W):w===58||w===95||Ht(w)?(e.consume(w),S):ue(w)?(e.consume(w),g):W(w)}function S(w){return w===45||w===46||w===58||w===95||ht(w)?(e.consume(w),S):P(w)}function P(w){return w===61?(e.consume(w),E):ue(w)?(e.consume(w),P):g(w)}function E(w){return w===null||w===60||w===61||w===62||w===96?n(w):w===34||w===39?(e.consume(w),s=w,q):ue(w)?(e.consume(w),E):j(w)}function q(w){return w===s?(e.consume(w),s=null,M):w===null||Q(w)?n(w):(e.consume(w),q)}function j(w){return w===null||w===34||w===39||w===47||w===60||w===61||w===62||w===96||st(w)?P(w):(e.consume(w),j)}function M(w){return w===47||w===62||ue(w)?g(w):n(w)}function W(w){return w===62?(e.consume(w),U):n(w)}function U(w){return w===null||Q(w)?C(w):ue(w)?(e.consume(w),U):n(w)}function C(w){return w===45&&i===2?(e.consume(w),B):w===60&&i===1?(e.consume(w),F):w===62&&i===4?(e.consume(w),z):w===63&&i===3?(e.consume(w),b):w===93&&i===5?(e.consume(w),T):Q(w)&&(i===6||i===7)?(e.exit("htmlFlowData"),e.check(P2,G,O)(w)):w===null||Q(w)?(e.exit("htmlFlowData"),O(w)):(e.consume(w),C)}function O(w){return e.check(N2,A,G)(w)}function A(w){return e.enter("lineEnding"),e.consume(w),e.exit("lineEnding"),I}function I(w){return w===null||Q(w)?O(w):(e.enter("htmlFlowData"),C(w))}function B(w){return w===45?(e.consume(w),b):C(w)}function F(w){return w===47?(e.consume(w),a="",L):C(w)}function L(w){if(w===62){const ae=a.toLowerCase();return kf.includes(ae)?(e.consume(w),z):C(w)}return Ht(w)&&a.length<8?(e.consume(w),a+=String.fromCharCode(w),L):C(w)}function T(w){return w===93?(e.consume(w),b):C(w)}function b(w){return w===62?(e.consume(w),z):w===45&&i===2?(e.consume(w),b):C(w)}function z(w){return w===null||Q(w)?(e.exit("htmlFlowData"),G(w)):(e.consume(w),z)}function G(w){return e.exit("htmlFlow"),t(w)}}function O2(e,t,n){const r=this;return i;function i(a){return Q(a)?(e.enter("lineEnding"),e.consume(a),e.exit("lineEnding"),o):n(a)}function o(a){return r.parser.lazy[r.now().line]?n(a):t(a)}}function V2(e,t,n){return r;function r(i){return e.enter("lineEnding"),e.consume(i),e.exit("lineEnding"),e.attempt(Au,t,n)}}const _2={name:"htmlText",tokenize:R2};function R2(e,t,n){const r=this;let i,o,a;return u;function u(b){return e.enter("htmlText"),e.enter("htmlTextData"),e.consume(b),s}function s(b){return b===33?(e.consume(b),l):b===47?(e.consume(b),P):b===63?(e.consume(b),g):Ht(b)?(e.consume(b),j):n(b)}function l(b){return b===45?(e.consume(b),c):b===91?(e.consume(b),o=0,x):Ht(b)?(e.consume(b),v):n(b)}function c(b){return b===45?(e.consume(b),d):n(b)}function m(b){return b===null?n(b):b===45?(e.consume(b),p):Q(b)?(a=m,F(b)):(e.consume(b),m)}function p(b){return b===45?(e.consume(b),d):m(b)}function d(b){return b===62?B(b):b===45?p(b):m(b)}function x(b){const z="CDATA[";return b===z.charCodeAt(o++)?(e.consume(b),o===z.length?y:x):n(b)}function y(b){return b===null?n(b):b===93?(e.consume(b),k):Q(b)?(a=y,F(b)):(e.consume(b),y)}function k(b){return b===93?(e.consume(b),h):y(b)}function h(b){return b===62?B(b):b===93?(e.consume(b),h):y(b)}function v(b){return b===null||b===62?B(b):Q(b)?(a=v,F(b)):(e.consume(b),v)}function g(b){return b===null?n(b):b===63?(e.consume(b),S):Q(b)?(a=g,F(b)):(e.consume(b),g)}function S(b){return b===62?B(b):g(b)}function P(b){return Ht(b)?(e.consume(b),E):n(b)}function E(b){return b===45||ht(b)?(e.consume(b),E):q(b)}function q(b){return Q(b)?(a=q,F(b)):ue(b)?(e.consume(b),q):B(b)}function j(b){return b===45||ht(b)?(e.consume(b),j):b===47||b===62||st(b)?M(b):n(b)}function M(b){return b===47?(e.consume(b),B):b===58||b===95||Ht(b)?(e.consume(b),W):Q(b)?(a=M,F(b)):ue(b)?(e.consume(b),M):B(b)}function W(b){return b===45||b===46||b===58||b===95||ht(b)?(e.consume(b),W):U(b)}function U(b){return b===61?(e.consume(b),C):Q(b)?(a=U,F(b)):ue(b)?(e.consume(b),U):M(b)}function C(b){return b===null||b===60||b===61||b===62||b===96?n(b):b===34||b===39?(e.consume(b),i=b,O):Q(b)?(a=C,F(b)):ue(b)?(e.consume(b),C):(e.consume(b),A)}function O(b){return b===i?(e.consume(b),i=void 0,I):b===null?n(b):Q(b)?(a=O,F(b)):(e.consume(b),O)}function A(b){return b===null||b===34||b===39||b===60||b===61||b===96?n(b):b===47||b===62||st(b)?M(b):(e.consume(b),A)}function I(b){return b===47||b===62||st(b)?M(b):n(b)}function B(b){return b===62?(e.consume(b),e.exit("htmlTextData"),e.exit("htmlText"),t):n(b)}function F(b){return e.exit("htmlTextData"),e.enter("lineEnding"),e.consume(b),e.exit("lineEnding"),L}function L(b){return ue(b)?ve(e,T,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(b):T(b)}function T(b){return e.enter("htmlTextData"),a(b)}}const Lm={name:"labelEnd",tokenize:U2,resolveTo:$2,resolveAll:z2},A2={tokenize:F2},I2={tokenize:D2},T2={tokenize:B2};function z2(e){let t=-1;for(;++t=3&&(l===null||Q(l))?(e.exit("thematicBreak"),t(l)):n(l)}function s(l){return l===i?(e.consume(l),r++,s):(e.exit("thematicBreakSequence"),ue(l)?ve(e,u,"whitespace")(l):u(l))}}const et={name:"list",tokenize:J2,continuation:{tokenize:Z2},exit:tP},Y2={tokenize:nP,partial:!0},X2={tokenize:eP,partial:!0};function J2(e,t,n){const r=this,i=r.events[r.events.length-1];let o=i&&i[1].type==="linePrefix"?i[2].sliceSerialize(i[1],!0).length:0,a=0;return u;function u(d){const x=r.containerState.type||(d===42||d===43||d===45?"listUnordered":"listOrdered");if(x==="listUnordered"?!r.containerState.marker||d===r.containerState.marker:ac(d)){if(r.containerState.type||(r.containerState.type=x,e.enter(x,{_container:!0})),x==="listUnordered")return e.enter("listItemPrefix"),d===42||d===45?e.check(ka,n,l)(d):l(d);if(!r.interrupt||d===49)return e.enter("listItemPrefix"),e.enter("listItemValue"),s(d)}return n(d)}function s(d){return ac(d)&&++a<10?(e.consume(d),s):(!r.interrupt||a<2)&&(r.containerState.marker?d===r.containerState.marker:d===41||d===46)?(e.exit("listItemValue"),l(d)):n(d)}function l(d){return e.enter("listItemMarker"),e.consume(d),e.exit("listItemMarker"),r.containerState.marker=r.containerState.marker||d,e.check(Au,r.interrupt?n:c,e.attempt(Y2,p,m))}function c(d){return r.containerState.initialBlankLine=!0,o++,p(d)}function m(d){return ue(d)?(e.enter("listItemPrefixWhitespace"),e.consume(d),e.exit("listItemPrefixWhitespace"),p):n(d)}function p(d){return r.containerState.size=o+r.sliceSerialize(e.exit("listItemPrefix"),!0).length,t(d)}}function Z2(e,t,n){const r=this;return r.containerState._closeFlow=void 0,e.check(Au,i,o);function i(u){return r.containerState.furtherBlankLines=r.containerState.furtherBlankLines||r.containerState.initialBlankLine,ve(e,t,"listItemIndent",r.containerState.size+1)(u)}function o(u){return r.containerState.furtherBlankLines||!ue(u)?(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,a(u)):(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,e.attempt(X2,t,a)(u))}function a(u){return r.containerState._closeFlow=!0,r.interrupt=void 0,ve(e,e.attempt(et,t,n),"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(u)}}function eP(e,t,n){const r=this;return ve(e,i,"listItemIndent",r.containerState.size+1);function i(o){const a=r.events[r.events.length-1];return a&&a[1].type==="listItemIndent"&&a[2].sliceSerialize(a[1],!0).length===r.containerState.size?t(o):n(o)}}function tP(e){e.exit(this.containerState.type)}function nP(e,t,n){const r=this;return ve(e,i,"listItemPrefixWhitespace",r.parser.constructs.disable.null.includes("codeIndented")?void 0:5);function i(o){const a=r.events[r.events.length-1];return!ue(o)&&a&&a[1].type==="listItemPrefixWhitespace"?t(o):n(o)}}const Cf={name:"setextUnderline",tokenize:iP,resolveTo:rP};function rP(e,t){let n=e.length,r,i,o;for(;n--;)if(e[n][0]==="enter"){if(e[n][1].type==="content"){r=n;break}e[n][1].type==="paragraph"&&(i=n)}else e[n][1].type==="content"&&e.splice(n,1),!o&&e[n][1].type==="definition"&&(o=n);const a={type:"setextHeading",start:Object.assign({},e[i][1].start),end:Object.assign({},e[e.length-1][1].end)};return e[i][1].type="setextHeadingText",o?(e.splice(i,0,["enter",a,t]),e.splice(o+1,0,["exit",e[r][1],t]),e[r][1].end=Object.assign({},e[o][1].end)):e[r][1]=a,e.push(["exit",a,t]),e}function iP(e,t,n){const r=this;let i;return o;function o(l){let c=r.events.length,m;for(;c--;)if(r.events[c][1].type!=="lineEnding"&&r.events[c][1].type!=="linePrefix"&&r.events[c][1].type!=="content"){m=r.events[c][1].type==="paragraph";break}return!r.parser.lazy[r.now().line]&&(r.interrupt||m)?(e.enter("setextHeadingLine"),i=l,a(l)):n(l)}function a(l){return e.enter("setextHeadingLineSequence"),u(l)}function u(l){return l===i?(e.consume(l),u):(e.exit("setextHeadingLineSequence"),ue(l)?ve(e,s,"lineSuffix")(l):s(l))}function s(l){return l===null||Q(l)?(e.exit("setextHeadingLine"),t(l)):n(l)}}const oP={tokenize:aP};function aP(e){const t=this,n=e.attempt(Au,r,e.attempt(this.parser.constructs.flowInitial,i,ve(e,e.attempt(this.parser.constructs.flow,i,e.attempt(m2,i)),"linePrefix")));return n;function r(o){if(o===null){e.consume(o);return}return e.enter("lineEndingBlank"),e.consume(o),e.exit("lineEndingBlank"),t.currentConstruct=void 0,n}function i(o){if(o===null){e.consume(o);return}return e.enter("lineEnding"),e.consume(o),e.exit("lineEnding"),t.currentConstruct=void 0,n}}const uP={resolveAll:My()},sP=By("string"),lP=By("text");function By(e){return{tokenize:t,resolveAll:My(e==="text"?cP:void 0)};function t(n){const r=this,i=this.parser.constructs[e],o=n.attempt(i,a,u);return a;function a(c){return l(c)?o(c):u(c)}function u(c){if(c===null){n.consume(c);return}return n.enter("data"),n.consume(c),s}function s(c){return l(c)?(n.exit("data"),o(c)):(n.consume(c),s)}function l(c){if(c===null)return!0;const m=i[c];let p=-1;if(m)for(;++p-1){const u=a[0];typeof u=="string"?a[0]=u.slice(r):a.shift()}o>0&&a.push(e[i].slice(0,o))}return a}function pP(e,t){let n=-1;const r=[];let i;for(;++n13&&n<32||n>126&&n<160||n>55295&&n<57344||n>64975&&n<65008||(n&65535)===65535||(n&65535)===65534||n>1114111?"�":String.fromCharCode(n)}const PP=/\\([!-/:-@[-`{-~])|&(#(?:\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi;function NP(e){return e.replace(PP,LP)}function LP(e,t,n){if(t)return t;if(n.charCodeAt(0)===35){const i=n.charCodeAt(1),o=i===120||i===88;return Wy(n.slice(o?2:1),o?16:10)}return Nm(n)||e}const Gy={}.hasOwnProperty,jP=function(e,t,n){return typeof t!="string"&&(n=t,t=void 0),OP(n)(qP(CP(n).document().write(SP()(e,t,!0))))};function OP(e){const t={transforms:[],canContainEols:["emphasis","fragment","heading","paragraph","strong"],enter:{autolink:u(Fm),autolinkProtocol:U,autolinkEmail:U,atxHeading:u(zm),blockQuote:u(lt),characterEscape:U,characterReference:U,codeFenced:u(ct),codeFencedFenceInfo:s,codeFencedFenceMeta:s,codeIndented:u(ct,s),codeText:u(g0,s),codeTextData:U,data:U,codeFlowValue:U,definition:u(y0),definitionDestinationString:s,definitionLabelString:s,definitionTitleString:s,emphasis:u(b0),hardBreakEscape:u($m),hardBreakTrailing:u($m),htmlFlow:u(Um,s),htmlFlowData:U,htmlText:u(Um,s),htmlTextData:U,image:u(x0),label:s,link:u(Fm),listItem:u(E0),listItemValue:x,listOrdered:u(Dm,d),listUnordered:u(Dm),paragraph:u(w0),reference:Ee,referenceString:s,resourceDestinationString:s,resourceTitleString:s,setextHeading:u(zm),strong:u(k0),thematicBreak:u(S0)},exit:{atxHeading:c(),atxHeadingSequence:q,autolink:c(),autolinkEmail:We,autolinkProtocol:Ne,blockQuote:c(),characterEscapeValue:C,characterReferenceMarkerHexadecimal:me,characterReferenceMarkerNumeric:me,characterReferenceValue:Oe,codeFenced:c(v),codeFencedFence:h,codeFencedFenceInfo:y,codeFencedFenceMeta:k,codeFlowValue:C,codeIndented:c(g),codeText:c(F),codeTextData:C,data:C,definition:c(),definitionDestinationString:E,definitionLabelString:S,definitionTitleString:P,emphasis:c(),hardBreakEscape:c(A),hardBreakTrailing:c(A),htmlFlow:c(I),htmlFlowData:C,htmlText:c(B),htmlTextData:C,image:c(T),label:z,labelText:b,lineEnding:O,link:c(L),listItem:c(),listOrdered:c(),listUnordered:c(),paragraph:c(),referenceString:te,resourceDestinationString:G,resourceTitleString:w,resource:ae,setextHeading:c(W),setextHeadingLineSequence:M,setextHeadingText:j,strong:c(),thematicBreak:c()}};Hy(t,(e||{}).mdastExtensions||[]);const n={};return r;function r(N){let $={type:"root",children:[]};const K={stack:[$],tokenStack:[],config:t,enter:l,exit:m,buffer:s,resume:p,setData:o,getData:a},de=[];let pe=-1;for(;++pe0){const _t=K.tokenStack[K.tokenStack.length-1];(_t[1]||qf).call(K,void 0,_t[0])}for($.position={start:wn(N.length>0?N[0][1].start:{line:1,column:1,offset:0}),end:wn(N.length>0?N[N.length-2][1].end:{line:1,column:1,offset:0})},pe=-1;++pe{const r=this.data("settings");return jP(n,Object.assign({},r,e,{extensions:this.data("micromarkExtensions")||[],mdastExtensions:this.data("fromMarkdownExtensions")||[]}))}})}function RP(e,t){const n={type:"element",tagName:"blockquote",properties:{},children:e.wrap(e.all(t),!0)};return e.patch(t,n),e.applyData(t,n)}function AP(e,t){const n={type:"element",tagName:"br",properties:{},children:[]};return e.patch(t,n),[e.applyData(t,n),{type:"text",value:` +`}]}function IP(e,t){const n=t.value?t.value+` +`:"",r=t.lang?t.lang.match(/^[^ \t]+(?=[ \t]|$)/):null,i={};r&&(i.className=["language-"+r]);let o={type:"element",tagName:"code",properties:i,children:[{type:"text",value:n}]};return t.meta&&(o.data={meta:t.meta}),e.patch(t,o),o=e.applyData(t,o),o={type:"element",tagName:"pre",properties:{},children:[o]},e.patch(t,o),o}function TP(e,t){const n={type:"element",tagName:"del",properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}function zP(e,t){const n={type:"element",tagName:"em",properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}function pi(e){const t=[];let n=-1,r=0,i=0;for(;++n55295&&o<57344){const u=e.charCodeAt(n+1);o<56320&&u>56319&&u<57344?(a=String.fromCharCode(o,u),i=1):a="�"}else a=String.fromCharCode(o);a&&(t.push(e.slice(r,n),encodeURIComponent(a)),r=n+i+1,a=""),i&&(n+=i,i=0)}return t.join("")+e.slice(r)}function Ky(e,t){const n=String(t.identifier).toUpperCase(),r=pi(n.toLowerCase()),i=e.footnoteOrder.indexOf(n);let o;i===-1?(e.footnoteOrder.push(n),e.footnoteCounts[n]=1,o=e.footnoteOrder.length):(e.footnoteCounts[n]++,o=i+1);const a=e.footnoteCounts[n],u={type:"element",tagName:"a",properties:{href:"#"+e.clobberPrefix+"fn-"+r,id:e.clobberPrefix+"fnref-"+r+(a>1?"-"+a:""),dataFootnoteRef:!0,ariaDescribedBy:["footnote-label"]},children:[{type:"text",value:String(o)}]};e.patch(t,u);const s={type:"element",tagName:"sup",properties:{},children:[u]};return e.patch(t,s),e.applyData(t,s)}function $P(e,t){const n=e.footnoteById;let r=1;for(;r in n;)r++;const i=String(r);return n[i]={type:"footnoteDefinition",identifier:i,children:[{type:"paragraph",children:t.children}],position:t.position},Ky(e,{type:"footnoteReference",identifier:i,position:t.position})}function UP(e,t){const n={type:"element",tagName:"h"+t.depth,properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}function FP(e,t){if(e.dangerous){const n={type:"raw",value:t.value};return e.patch(t,n),e.applyData(t,n)}return null}function Qy(e,t){const n=t.referenceType;let r="]";if(n==="collapsed"?r+="[]":n==="full"&&(r+="["+(t.label||t.identifier)+"]"),t.type==="imageReference")return{type:"text",value:"!["+t.alt+r};const i=e.all(t),o=i[0];o&&o.type==="text"?o.value="["+o.value:i.unshift({type:"text",value:"["});const a=i[i.length-1];return a&&a.type==="text"?a.value+=r:i.push({type:"text",value:r}),i}function DP(e,t){const n=e.definition(t.identifier);if(!n)return Qy(e,t);const r={src:pi(n.url||""),alt:t.alt};n.title!==null&&n.title!==void 0&&(r.title=n.title);const i={type:"element",tagName:"img",properties:r,children:[]};return e.patch(t,i),e.applyData(t,i)}function BP(e,t){const n={src:pi(t.url)};t.alt!==null&&t.alt!==void 0&&(n.alt=t.alt),t.title!==null&&t.title!==void 0&&(n.title=t.title);const r={type:"element",tagName:"img",properties:n,children:[]};return e.patch(t,r),e.applyData(t,r)}function MP(e,t){const n={type:"text",value:t.value.replace(/\r?\n|\r/g," ")};e.patch(t,n);const r={type:"element",tagName:"code",properties:{},children:[n]};return e.patch(t,r),e.applyData(t,r)}function WP(e,t){const n=e.definition(t.identifier);if(!n)return Qy(e,t);const r={href:pi(n.url||"")};n.title!==null&&n.title!==void 0&&(r.title=n.title);const i={type:"element",tagName:"a",properties:r,children:e.all(t)};return e.patch(t,i),e.applyData(t,i)}function GP(e,t){const n={href:pi(t.url)};t.title!==null&&t.title!==void 0&&(n.title=t.title);const r={type:"element",tagName:"a",properties:n,children:e.all(t)};return e.patch(t,r),e.applyData(t,r)}function HP(e,t,n){const r=e.all(t),i=n?KP(n):Yy(t),o={},a=[];if(typeof t.checked=="boolean"){const c=r[0];let m;c&&c.type==="element"&&c.tagName==="p"?m=c:(m={type:"element",tagName:"p",properties:{},children:[]},r.unshift(m)),m.children.length>0&&m.children.unshift({type:"text",value:" "}),m.children.unshift({type:"element",tagName:"input",properties:{type:"checkbox",checked:t.checked,disabled:!0},children:[]}),o.className=["task-list-item"]}let u=-1;for(;++u1}function QP(e,t){const n={},r=e.all(t);let i=-1;for(typeof t.start=="number"&&t.start!==1&&(n.start=t.start);++i-1?r.offset:null}}}function eN(e,t){const n=e.all(t),r=n.shift(),i=[];if(r){const a={type:"element",tagName:"thead",properties:{},children:e.wrap([r],!0)};e.patch(t.children[0],a),i.push(a)}if(n.length>0){const a={type:"element",tagName:"tbody",properties:{},children:e.wrap(n,!0)},u=jm(t.children[1]),s=Om(t.children[t.children.length-1]);u.line&&s.line&&(a.position={start:u,end:s}),i.push(a)}const o={type:"element",tagName:"table",properties:{},children:e.wrap(i,!0)};return e.patch(t,o),e.applyData(t,o)}function tN(e,t,n){const r=n?n.children:void 0,o=(r?r.indexOf(t):1)===0?"th":"td",a=n&&n.type==="table"?n.align:void 0,u=a?a.length:t.children.length;let s=-1;const l=[];for(;++s0,!0),r[0]),i=r.index+r[0].length,r=n.exec(t);return o.push(Lf(t.slice(i),i>0,!1)),o.join("")}function Lf(e,t,n){let r=0,i=e.length;if(t){let o=e.codePointAt(r);for(;o===Pf||o===Nf;)r++,o=e.codePointAt(r)}if(n){let o=e.codePointAt(i-1);for(;o===Pf||o===Nf;)i--,o=e.codePointAt(i-1)}return i>r?e.slice(r,i):""}function iN(e,t){const n={type:"text",value:rN(String(t.value))};return e.patch(t,n),e.applyData(t,n)}function oN(e,t){const n={type:"element",tagName:"hr",properties:{},children:[]};return e.patch(t,n),e.applyData(t,n)}const aN={blockquote:RP,break:AP,code:IP,delete:TP,emphasis:zP,footnoteReference:Ky,footnote:$P,heading:UP,html:FP,imageReference:DP,image:BP,inlineCode:MP,linkReference:WP,link:GP,listItem:HP,list:QP,paragraph:YP,root:XP,strong:JP,table:eN,tableCell:nN,tableRow:tN,text:iN,thematicBreak:oN,toml:ta,yaml:ta,definition:ta,footnoteDefinition:ta};function ta(){return null}const Jy=function(e){if(e==null)return cN;if(typeof e=="string")return lN(e);if(typeof e=="object")return Array.isArray(e)?uN(e):sN(e);if(typeof e=="function")return Iu(e);throw new Error("Expected function, string, or object as test")};function uN(e){const t=[];let n=-1;for(;++n":""))+")"})}return m;function m(){let p=[],d,x,y;if((!t||i(u,s,l[l.length-1]||null))&&(p=fN(n(u,l)),p[0]===jf))return p;if(u.children&&p[0]!==dN)for(x=(r?u.children.length:-1)+o,y=l.concat(u);x>-1&&x{const i=Vf(r.identifier);i&&!Of.call(t,i)&&(t[i]=r)}),n;function n(r){const i=Vf(r);return i&&Of.call(t,i)?t[i]:null}}function Vf(e){return String(e||"").toUpperCase()}const nu={}.hasOwnProperty;function gN(e,t){const n=t||{},r=n.allowDangerousHtml||!1,i={};return a.dangerous=r,a.clobberPrefix=n.clobberPrefix===void 0||n.clobberPrefix===null?"user-content-":n.clobberPrefix,a.footnoteLabel=n.footnoteLabel||"Footnotes",a.footnoteLabelTagName=n.footnoteLabelTagName||"h2",a.footnoteLabelProperties=n.footnoteLabelProperties||{className:["sr-only"]},a.footnoteBackLabel=n.footnoteBackLabel||"Back to content",a.unknownHandler=n.unknownHandler,a.passThrough=n.passThrough,a.handlers={...aN,...n.handlers},a.definition=vN(e),a.footnoteById=i,a.footnoteOrder=[],a.footnoteCounts={},a.patch=yN,a.applyData=bN,a.one=u,a.all=s,a.wrap=EN,a.augment=o,Vm(e,"footnoteDefinition",l=>{const c=String(l.identifier).toUpperCase();nu.call(i,c)||(i[c]=l)}),a;function o(l,c){if(l&&"data"in l&&l.data){const m=l.data;m.hName&&(c.type!=="element"&&(c={type:"element",tagName:"",properties:{},children:[]}),c.tagName=m.hName),c.type==="element"&&m.hProperties&&(c.properties={...c.properties,...m.hProperties}),"children"in c&&c.children&&m.hChildren&&(c.children=m.hChildren)}if(l){const m="type"in l?l:{position:l};hN(m)||(c.position={start:jm(m),end:Om(m)})}return c}function a(l,c,m,p){return Array.isArray(m)&&(p=m,m={}),o(l,{type:"element",tagName:c,properties:m||{},children:p||[]})}function u(l,c){return Zy(a,l,c)}function s(l){return _m(a,l)}}function yN(e,t){e.position&&(t.position=ZP(e))}function bN(e,t){let n=t;if(e&&e.data){const r=e.data.hName,i=e.data.hChildren,o=e.data.hProperties;typeof r=="string"&&(n.type==="element"?n.tagName=r:n={type:"element",tagName:r,properties:{},children:[]}),n.type==="element"&&o&&(n.properties={...n.properties,...o}),"children"in n&&n.children&&i!==null&&i!==void 0&&(n.children=i)}return n}function Zy(e,t,n){const r=t&&t.type;if(!r)throw new Error("Expected node, got `"+t+"`");return nu.call(e.handlers,r)?e.handlers[r](e,t,n):e.passThrough&&e.passThrough.includes(r)?"children"in t?{...t,children:_m(e,t)}:t:e.unknownHandler?e.unknownHandler(e,t,n):xN(e,t)}function _m(e,t){const n=[];if("children"in t){const r=t.children;let i=-1;for(;++i0&&n.push({type:"text",value:` +`}),n}function wN(e){const t=[];let n=-1;for(;++n1?"-"+u:""),dataFootnoteBackref:!0,className:["data-footnote-backref"],ariaLabel:e.footnoteBackLabel},children:[{type:"text",value:"↩"}]};u>1&&m.children.push({type:"element",tagName:"sup",children:[{type:"text",value:String(u)}]}),s.length>0&&s.push({type:"text",value:" "}),s.push(m)}const l=i[i.length-1];if(l&&l.type==="element"&&l.tagName==="p"){const m=l.children[l.children.length-1];m&&m.type==="text"?m.value+=" ":l.children.push({type:"text",value:" "}),l.children.push(...s)}else i.push(...s);const c={type:"element",tagName:"li",properties:{id:e.clobberPrefix+"fn-"+a},children:e.wrap(i,!0)};e.patch(r,c),t.push(c)}if(t.length!==0)return{type:"element",tagName:"section",properties:{dataFootnotes:!0,className:["footnotes"]},children:[{type:"element",tagName:e.footnoteLabelTagName,properties:{...JSON.parse(JSON.stringify(e.footnoteLabelProperties)),id:"footnote-label"},children:[{type:"text",value:e.footnoteLabel}]},{type:"text",value:` +`},{type:"element",tagName:"ol",properties:{},children:e.wrap(t,!0)},{type:"text",value:` +`}]}}function e0(e,t){const n=gN(e,t),r=n.one(e,null),i=wN(n);return i&&r.children.push({type:"text",value:` +`},i),Array.isArray(r)?{type:"root",children:r}:r}const kN=function(e,t){return e&&"run"in e?CN(e,t):SN(e||t)};function CN(e,t){return(n,r,i)=>{e.run(e0(n,t),r,o=>{i(o)})}}function SN(e){return t=>e0(t,e)}var t0={exports:{}},qN="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED",PN=qN,NN=PN;function n0(){}function r0(){}r0.resetWarningCache=n0;var LN=function(){function e(r,i,o,a,u,s){if(s!==NN){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}e.isRequired=e;function t(){return e}var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:r0,resetWarningCache:n0};return n.PropTypes=n,n};t0.exports=LN();var jN=t0.exports;const X=hr(jN);class Lo{constructor(t,n,r){this.property=t,this.normal=n,r&&(this.space=r)}}Lo.prototype.property={};Lo.prototype.normal={};Lo.prototype.space=null;function i0(e,t){const n={},r={};let i=-1;for(;++i4&&n.slice(0,4)==="data"&&AN.test(t)){if(t.charAt(4)==="-"){const o=t.slice(5).replace(Rf,$N);r="data"+o.charAt(0).toUpperCase()+o.slice(1)}else{const o=t.slice(4);if(!Rf.test(o)){let a=o.replace(IN,zN);a.charAt(0)!=="-"&&(a="-"+a),t="data"+a}}i=Rm}return new i(r,t)}function zN(e){return"-"+e.toLowerCase()}function $N(e){return e.charAt(1).toUpperCase()}const Af={classId:"classID",dataType:"datatype",itemId:"itemID",strokeDashArray:"strokeDasharray",strokeDashOffset:"strokeDashoffset",strokeLineCap:"strokeLinecap",strokeLineJoin:"strokeLinejoin",strokeMiterLimit:"strokeMiterlimit",typeOf:"typeof",xLinkActuate:"xlinkActuate",xLinkArcRole:"xlinkArcrole",xLinkHref:"xlinkHref",xLinkRole:"xlinkRole",xLinkShow:"xlinkShow",xLinkTitle:"xlinkTitle",xLinkType:"xlinkType",xmlnsXLink:"xmlnsXlink"},UN=i0([u0,a0,c0,m0,_N],"html"),FN=i0([u0,a0,c0,m0,RN],"svg");function DN(e){if(e.allowedElements&&e.disallowedElements)throw new TypeError("Only one of `allowedElements` and `disallowedElements` should be defined");if(e.allowedElements||e.disallowedElements||e.allowElement)return t=>{Vm(t,"element",(n,r,i)=>{const o=i;let a;if(e.allowedElements?a=!e.allowedElements.includes(n.tagName):e.disallowedElements&&(a=e.disallowedElements.includes(n.tagName)),!a&&e.allowElement&&typeof r=="number"&&(a=!e.allowElement(n,r,o)),a&&typeof r=="number")return e.unwrapDisallowed&&n.children?o.children.splice(r,1,...n.children):o.children.splice(r,1),r})}}var d0={exports:{}},ce={};/** + * @license React + * react-is.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Am=Symbol.for("react.element"),Im=Symbol.for("react.portal"),Tu=Symbol.for("react.fragment"),zu=Symbol.for("react.strict_mode"),$u=Symbol.for("react.profiler"),Uu=Symbol.for("react.provider"),Fu=Symbol.for("react.context"),BN=Symbol.for("react.server_context"),Du=Symbol.for("react.forward_ref"),Bu=Symbol.for("react.suspense"),Mu=Symbol.for("react.suspense_list"),Wu=Symbol.for("react.memo"),Gu=Symbol.for("react.lazy"),MN=Symbol.for("react.offscreen"),p0;p0=Symbol.for("react.module.reference");function Vt(e){if(typeof e=="object"&&e!==null){var t=e.$$typeof;switch(t){case Am:switch(e=e.type,e){case Tu:case $u:case zu:case Bu:case Mu:return e;default:switch(e=e&&e.$$typeof,e){case BN:case Fu:case Du:case Gu:case Wu:case Uu:return e;default:return t}}case Im:return t}}}ce.ContextConsumer=Fu;ce.ContextProvider=Uu;ce.Element=Am;ce.ForwardRef=Du;ce.Fragment=Tu;ce.Lazy=Gu;ce.Memo=Wu;ce.Portal=Im;ce.Profiler=$u;ce.StrictMode=zu;ce.Suspense=Bu;ce.SuspenseList=Mu;ce.isAsyncMode=function(){return!1};ce.isConcurrentMode=function(){return!1};ce.isContextConsumer=function(e){return Vt(e)===Fu};ce.isContextProvider=function(e){return Vt(e)===Uu};ce.isElement=function(e){return typeof e=="object"&&e!==null&&e.$$typeof===Am};ce.isForwardRef=function(e){return Vt(e)===Du};ce.isFragment=function(e){return Vt(e)===Tu};ce.isLazy=function(e){return Vt(e)===Gu};ce.isMemo=function(e){return Vt(e)===Wu};ce.isPortal=function(e){return Vt(e)===Im};ce.isProfiler=function(e){return Vt(e)===$u};ce.isStrictMode=function(e){return Vt(e)===zu};ce.isSuspense=function(e){return Vt(e)===Bu};ce.isSuspenseList=function(e){return Vt(e)===Mu};ce.isValidElementType=function(e){return typeof e=="string"||typeof e=="function"||e===Tu||e===$u||e===zu||e===Bu||e===Mu||e===MN||typeof e=="object"&&e!==null&&(e.$$typeof===Gu||e.$$typeof===Wu||e.$$typeof===Uu||e.$$typeof===Fu||e.$$typeof===Du||e.$$typeof===p0||e.getModuleId!==void 0)};ce.typeOf=Vt;d0.exports=ce;var WN=d0.exports;const GN=hr(WN);function HN(e){const t=e&&typeof e=="object"&&e.type==="text"?e.value||"":e;return typeof t=="string"&&t.replace(/[ \t\n\f\r]/g,"")===""}function KN(e){return e.join(" ").trim()}function QN(e,t){const n={};return(e[e.length-1]===""?[...e,""]:e).join((n.padRight?" ":"")+","+(n.padLeft===!1?"":" ")).trim()}var Tm={exports:{}},If=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,YN=/\n/g,XN=/^\s*/,JN=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,ZN=/^:\s*/,e5=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,t5=/^[;\s]*/,n5=/^\s+|\s+$/g,r5=` +`,Tf="/",zf="*",Jn="",i5="comment",o5="declaration",a5=function(e,t){if(typeof e!="string")throw new TypeError("First argument must be a string");if(!e)return[];t=t||{};var n=1,r=1;function i(x){var y=x.match(YN);y&&(n+=y.length);var k=x.lastIndexOf(r5);r=~k?x.length-k:r+x.length}function o(){var x={line:n,column:r};return function(y){return y.position=new a(x),l(),y}}function a(x){this.start=x,this.end={line:n,column:r},this.source=t.source}a.prototype.content=e;function u(x){var y=new Error(t.source+":"+n+":"+r+": "+x);if(y.reason=x,y.filename=t.source,y.line=n,y.column=r,y.source=e,!t.silent)throw y}function s(x){var y=x.exec(e);if(y){var k=y[0];return i(k),e=e.slice(k.length),y}}function l(){s(XN)}function c(x){var y;for(x=x||[];y=m();)y!==!1&&x.push(y);return x}function m(){var x=o();if(!(Tf!=e.charAt(0)||zf!=e.charAt(1))){for(var y=2;Jn!=e.charAt(y)&&(zf!=e.charAt(y)||Tf!=e.charAt(y+1));)++y;if(y+=2,Jn===e.charAt(y-1))return u("End of comment missing");var k=e.slice(2,y-2);return r+=2,i(k),e=e.slice(y),r+=2,x({type:i5,comment:k})}}function p(){var x=o(),y=s(JN);if(y){if(m(),!s(ZN))return u("property missing ':'");var k=s(e5),h=x({type:o5,property:$f(y[0].replace(If,Jn)),value:k?$f(k[0].replace(If,Jn)):Jn});return s(t5),h}}function d(){var x=[];c(x);for(var y;y=p();)y!==!1&&(x.push(y),c(x));return x}return l(),d()};function $f(e){return e?e.replace(n5,Jn):Jn}var u5=a5;function f0(e,t){var n=null;if(!e||typeof e!="string")return n;for(var r,i=u5(e),o=typeof t=="function",a,u,s=0,l=i.length;s0?vt.createElement(d,s,m):vt.createElement(d,s)}function d5(e){let t=-1;for(;++t for more info)`),delete na[o]}const t=Cq().use(_P).use(e.remarkPlugins||[]).use(kN,{...e.remarkRehypeOptions,allowDangerousHtml:!0}).use(e.rehypePlugins||[]).use(DN,e),n=new Oy;typeof e.children=="string"?n.value=e.children:e.children!==void 0&&e.children!==null&&console.warn(`[react-markdown] Warning: please pass a string as \`children\` (not: \`${e.children}\`)`);const r=t.runSync(t.parse(n),n);if(r.type!=="root")throw new TypeError("Expected a `root` node");let i=vt.createElement(vt.Fragment,{},h0({options:e,schema:UN,listDepth:0},r));return e.className&&(i=vt.createElement("div",{className:e.className},i)),i}v0.propTypes={children:X.string,className:X.string,allowElement:X.func,allowedElements:X.arrayOf(X.string),disallowedElements:X.arrayOf(X.string),unwrapDisallowed:X.bool,remarkPlugins:X.arrayOf(X.oneOfType([X.object,X.func,X.arrayOf(X.oneOfType([X.bool,X.string,X.object,X.func,X.arrayOf(X.any)]))])),rehypePlugins:X.arrayOf(X.oneOfType([X.object,X.func,X.arrayOf(X.oneOfType([X.bool,X.string,X.object,X.func,X.arrayOf(X.any)]))])),sourcePos:X.bool,rawSourcePos:X.bool,skipHtml:X.bool,includeElementIndex:X.bool,transformLinkUri:X.oneOfType([X.func,X.bool]),linkTarget:X.oneOfType([X.func,X.string]),transformImageUri:X.func,components:X.object};const y5={titre:"Informations sur la voiture",description:`Par défaut, tous les champs sont pré-remplis avec des valeurs moyennes. +Ainsi si vous ne savez pas répondre à une question, vous pouvez laisser la +valeur par défaut et quand même obtenir une estimation de votre empreinte +carbone. + +Cependant, plus vous renseignerez de champs, plus l'estimation sera précise. +`},b5={titre:"Usage de la voiture",description:`Pour affiner le calcul, il est nécessaire de préciser l'usage que vous +avez de votre voiture. + +Si vous connaissez la distance totale parcourue à l'année, vous pouvez +renseigner cette information. Sinon, vous pouvez renseigner la distance +parcourue au quotidien et pour les vacances qui seront ensuite cumulées. +`},x5={titre:"Alternatives"},E5={titre:"Nos Gestes Climat",description:`Ce modèle utilise une partie des règles de calcul du modèle de [Nos +Gestes Climat](https://nosgestesclimat.fr) pour calculer l'empreinte +CO2e. +`},w5={titre:"Empreinte carbone annuelle de votre voiture",description:`Nous utilisons le modèle de [Nos Gestes Climat](https://nosgestesclimat.fr) +pour calculer l'empreinte carbone de votre voiture. +`,unité:"kgCO2e/an",valeur:"ngc . transport . voiture",contexte:{"ngc . transport . voiture . électrique . consommation aux 100":{variations:[{si:"voiture . électrique . consommation électricité > 1",alors:"voiture . électrique . consommation électricité"},{sinon:"voiture . électrique . consommation estimée"}]},"ngc . transport . voiture . gabarit":"voiture . gabarit","ngc . transport . voiture . km":"usage . km annuels","ngc . transport . voiture . motorisation":"voiture . motorisation","ngc . transport . voiture . thermique . carburant":"voiture . thermique . carburant","ngc . transport . voiture . thermique . consommation aux 100":{variations:[{si:"voiture . thermique . consommation carburant > 1",alors:"voiture . thermique . consommation carburant"},{sinon:"voiture . thermique . consommation estimée"}]},"ngc . transport . voiture . utilisateur":"'propriétaire'","ngc . transport . voiture . voyageurs":1}},k5=null,C5={voiture:y5,"voiture . prix d'achat":{question:"Quel est le prix d'achat de votre voiture ?","par défaut":{variations:[{si:"voiture . occasion",alors:"prix d'achat . estimé * (100 % - décote)"},{sinon:"prix d'achat . estimé"}]},plancher:1,unité:"€",description:`Renseignez le montant que vous avez payé pour l'achat de votre voiture +(hors primes ou aides à l'achat) qu'elle soit neuve ou d'occasion. +`},"voiture . occasion":{titre:"Achat d'occasion",question:"Est-ce une voiture d'occasion ?","par défaut":"non"},"voiture . prix d'achat . estimé":{titre:"Prix d'achat estimé par défaut",decription:`Prix d'achat moyen d'une voiture neuve en fonction du gabarit et de sa +motorisation. +`,unité:"€",note:`La valeur du prix d'achat moyen d'une voiture neuve est importante pour le +calcul des coûts des alternatives et pas vraiment pour le calcul de la +voiture actuelle. En effet, le prix d'achat de la voiture actuelle pourra +facilement être renseigné par l'utilisateurice. C'est **pourquoi nous avons +choisi de nous baser sur des valeurs d'achat de voitures récentes**, car ce +seront elles qui seront les plus susceptibles d'être achetées en +remplacement de la voiture actuelle. + +Il est **très difficile de trouver une valeur moyenne pour le prix d'achat +car il y a de grand écarts entre les gammes de voitures**, les valeurs sont +donc à prendre avec du recul et pose un problème sur la précision de +l'estimation notamment pour les alternatives. + +### Sources + +Pour déterminer un prix d'achat moyen, nous avons utilisé le +[script](https://github.com/betagouv/publicodes-voiture/blob/main/scripts/prix-voiture.js) +avec les données récupérées sur le comparateur [Que +Choisir](https://www.quechoisir.org/comparatif-voiture-citadine-n3). + +Autres sources utilisées: +- [_Le tarif des autos neuves par segment_ (Kidioui)](https://voiture.kidioui.fr/voiture-neuve/3.html) +- [L'Argus](https://www.largus.fr) +- [Caroom](https://www.caroom.fr/guide/voiture-propre/electrique/carrosserie/suv) + +#### Pistes d'amélioration + +Nous pourrions aller plus loin en prenant en compte les différents +carburants. Il faudrait alors trouver une source le détaillant. Cependant, +l'écart de prix n'est peut-être pas assez significatif pour justifier la +complexité supplémentaire. + +Il serait également **nécessaire de trouver un moyen d'affiner l'estimation +du prix d'achat pour les alternatives** en se basant sur d'autres critères, +comme par exemple la **gamme du véhicule envisagée** (entré de gamme, +milieu de gamme, haut de gamme). Il faudra là aussi trouver une source +permettant de préciser le prix d'achat en fonction de ce critère. + +##### Utilisation des données de Car Labelling + +L'ADEME publie des [données](https://data.ademe.fr/datasets/ademe-car-labelling) (prix d'achat, consommation au 100, etc...) sur un ensemble de véhicules neufs +vendus en France. Ces données pourraient être utilisées comme source +de confiance pour déterminer le prix d'achat moyen d'une voiture neuve. +Cependant, il faudrait trouver un moyen de faire correspondre +les type de carrosserie de Car Labelling avec les gabarits de Nos Gestes Climat. + +La solution qui parait la plus pertinent serait de plutôt établir la même +correspondance entre les gabarits et le +[poids](https://nosgestesclimat.fr/documentation/transport/voiture/bar%C3%A8me-construction/bar%C3%A8me-thermique) +des véhicules. + +En utilisant les données de Car Labelling et en ignorant les modèles de la gamme \`LUXE\` +nous obtenons les résultats suivants : + +| Poids (kg) | Motorisation | Prix moyen (€) | Nombre de véhicules | +| ---------- | ------------ | -------------- | ------------------- | +| < 1250 | thermique | 24 670 | 452 | +| < 1250 | électrique | 27 228 | 12 | +| < 1250 | hybride | 22 101 | 172 | +| 1250-1500 | thermique | 38 078 | 1021 | +| 1250-1500 | électrique | 35 564 | 18 | +| 1250-1500 | hybride | 33 268 | 191 | +| 1500-1750 | thermique | 47 512 | 444 | +| 1500-1750 | électrique | 40 162 | 56 | +| 1500-1750 | hybride | 49 298 | 270 | +| 1750-2000 | thermique | 56 769 | 83 | +| 1750-2000 | électrique | 51 102 | 8 | +| 1750-2000 | hybride | 61 374 | 399 | +| > 2000 | thermique | 53 250 | 67 | +| > 2000 | électrique | 55 443 | 14 | +| > 2000 | hybride | 76 385 | 56 | + +Cependant, il semblerait qu'il n'y ait pas assez de modèles électriques +pour obtenir une valeur significative. Nous nous attendons, en effet, à +ce que les modèles électriques soient plus chers que les modèles +thermiques pour un même gabarit. + +C'est pourquoi nous avons choisi de ne pas utiliser ces données pour +l'instant. +`,variations:[{si:"voiture . gabarit = 'petite'",alors:{variations:[{si:"voiture . motorisation = 'thermique'",alors:19e3},{si:"voiture . motorisation = 'hybride'",alors:22e3},{si:"voiture . motorisation = 'électrique'",alors:32e3}]}},{si:"voiture . gabarit = 'moyenne'",alors:{variations:[{si:"voiture . motorisation = 'thermique'",alors:31e3},{si:"voiture . motorisation = 'hybride'",alors:34e3},{si:"voiture . motorisation = 'électrique'",alors:4e4}]}},{si:"voiture . gabarit = 'berline'",alors:{variations:[{si:"voiture . motorisation = 'thermique'",alors:38e3},{si:"voiture . motorisation = 'hybride'",alors:42e3},{si:"voiture . motorisation = 'électrique'",alors:48e3}]}},{si:"voiture . gabarit = 'SUV'",alors:{variations:[{si:"voiture . motorisation = 'thermique'",alors:4e4},{si:"voiture . motorisation = 'hybride'",alors:44e3},{si:"voiture . motorisation = 'électrique'",alors:5e4}]}},{si:"voiture . gabarit = 'VUL'",alors:{variations:[{si:"voiture . motorisation = 'thermique'",alors:3e4},{si:"voiture . motorisation = 'hybride'",alors:38e3},{si:"voiture . motorisation = 'électrique'",alors:45e3}]}}]},"voiture . thermique . consommation carburant":{question:"Quelle est sa consommation moyenne ?","applicable si":{"une de ces conditions":["motorisation = 'thermique'","motorisation = 'hybride'"]},"par défaut":"consommation estimée",unité:"l/100km",plancher:1,description:`Renseignez la consommation réelle de votre voiture en litre aux 100 km. Si +vous ne la connaissez pas, vous pouvez utiliser la valeur fournie par le +constructeur ou laisser la valeur par défaut. +`},"voiture . thermique . consommation estimée":{titre:"Consommation estimée par défaut",unité:"l/100km",valeur:"ngc . transport . voiture . thermique . consommation estimée",contexte:{"ngc . transport . voiture . gabarit":"voiture . gabarit","ngc . transport . voiture . motorisation":"voiture . motorisation","ngc . transport . voiture . thermique . carburant":"voiture . thermique . carburant","ngc . transport . voiture . utilisateur":"'propriétaire'"}},"voiture . électrique":{titre:"Voiture électrique"},"voiture . électrique . consommation électricité":{question:"Quelle est sa consommation électrique moyenne ?","applicable si":{"une de ces conditions":["motorisation = 'électrique'","motorisation = 'hybride'"]},"par défaut":"consommation estimée",unité:"kWh/100km",plancher:1,description:`Renseignez la consommation réelle de votre voiture en kWh aux 100 km. Si +vous ne la connaissez pas, vous pouvez utiliser la valeur fournie par le +constructeur ou laisser la valeur par défaut. +`},"voiture . électrique . consommation estimée":{titre:"Consommation estimée par défaut",unité:"kWh/100km",valeur:"ngc . transport . voiture . électrique . consommation estimée",contexte:{"ngc . transport . voiture . gabarit":"voiture . gabarit","ngc . transport . voiture . utilisateur":"'propriétaire'"}},"voiture . électrique . prix kWh":{question:"Quel est le prix du kWh ?","applicable si":"motorisation = 'électrique'","par défaut":"estimé",unité:"€/kWh",description:`Cette question n'est pas évidente sachant que les lieux de recharges sont +nombreux et que les tarifs varient. + +Cela dit, il se peut que vous la rechargiez en grand majorité à un +endroit précis, souvent votre maison, ce qui simplifie la saisie. + +Si vous ne savez pas, vous pouvez laisser la valeur par défaut. +`},"voiture . électrique . prix kWh . estimé":{titre:"Prix du kWh estimé par défaut","applicable si":"motorisation = 'électrique'",unité:"€/kWh",note:`On fait ici la même hypothèse que celle faite dans la note d'analyse +[_Voiture électrique : à quel coût +?_](https://www.strategie.gouv.fr/sites/strategie.gouv.fr/files/atoms/files/fs-2022-na-115-voiture_electrique-annexe_methodo-novembre.pdf) +de France Stratégie : l'essentiel des recharges à domicile est effectuée la +nuit. +`,somme:["prix électricité . TRV HC * 85 %","prix électricité . TRV HP * 15 %"]},"voiture . motorisation":{question:"Quel type de voiture possédez-vous ?","par défaut":"'thermique'","une possibilité":{"choix obligatoire":"oui",possibilités:["thermique","hybride","électrique"]}},"voiture . motorisation . thermique":{titre:"Thermique"},"voiture . motorisation . électrique":{titre:"Électrique"},"voiture . motorisation . hybride":{titre:"Hybride"},"voiture . thermique":{titre:"Voiture thermique"},"voiture . thermique . carburant":{question:"Quel type de carburant utilise-t-elle ?","applicable si":{"une de ces conditions":["motorisation = 'thermique'","motorisation = 'hybride'"]},"par défaut":"'essence E5 ou E10'",note:`Pour comprendre les différents types de carburants, [cet article +pédagogique](https://www.francetvinfo.fr/economie/automobile/essence/les-carburants-changent-de-nom-a-la-pompe-voici-comment-vous-y-retrouver_2967013.html) +est très utile. + +[Cet +article](https://www.ecologie.gouv.fr/carburants-et-combustibles-autorises-en-france) +du ministère de l'Écologie explique plus en détail les carburants légaux +en France. + +> Attention, si le type de carburant fait varier de façon significative +> l'empreinte climat au litre, la consommation en litre par 100km elle +> aussi varie. Veillez à saisir une consommation au litre basée sur votre +> moyenne réelle. + +--- + +La domination du couple gazole-essence est écrasante +[source](https://www.leprogres.fr/magazine-automobile/2021/03/27/quels-sont-les-carburants-les-plus-utilises-dans-votre-commune). + +Par contre, parmi les véhicules neufs, l'essence domine aujourd'hui. + +Le facteur d'émission associé au biocarburant E85 n'est pas représentatif +des conséquences environnementales liées à l'utilisation des biocarburants. +En effet, au vu des problématiques liées au changement d'affectation des +sols et autres impacts environnementaux liés à la culture du maïs par +exemple, les **biocarburants** ne sont pas pris en compte (le facteur +d'émission de la base carbone étant particulièrement incertain). Voir nos +discussions +[ici](https://github.com/incubateur-ademe/nosgestesclimat/pull/1324). + +Le GPL (Gaz de Pétrole Liquéfiés) est un [résidu de l'extraction du pétrole +qui était autrefois +brûlé](https://fr.wikipedia.org/wiki/Gaz_de_p%C3%A9trole_liqu%C3%A9fi%C3%A9). +Il a une empreinte carbone par litre moins importante que les véhicules +essence ou diesel, par contre sa consommation est légèrement supérieure, ce +qui compense légèrement le gain. Mais si les rejets de CO2e sont au final +presque équivalents entre le GPL et les autres carburants, c'est [du côté +de l'émission de particules +nocives](https://agirpourlatransition.ademe.fr/particuliers/conso/conso-responsable/comment-choisir-voiture-deux-roues-moins-polluant) +que le GPL est un bien meilleur élève que les autres carburants thermiques. +`,"une possibilité":{"choix obligatoire":"oui",possibilités:["gazole B7 ou B10","essence E5 ou E10","essence E85","GPL"]}},"voiture . thermique . carburant . gazole B7 ou B10":{titre:"Diesel",description:"Gazole B7 ou B10"},"voiture . thermique . carburant . essence E5 ou E10":{titre:"Essence",description:"Essence E5 ou E10"},"voiture . thermique . carburant . essence E85":{titre:"Essence (E85)",description:"Essence E85"},"voiture . thermique . carburant . GPL":{titre:"GPL",description:"GPL (Gaz de Pétrole Liquéfié)"},"voiture . gabarit":{question:"Quel est son gabarit ?","par défaut":"'berline'",description:`Si vous ne savez pas quel gabarit choisir, vous pouvez penser à la taille +comme (petite, moyenne, grande, 4x4 urbain, camionnette). +`,note:`### Sur le choix des gabarits + +Nous avons choisi de distinguer les types de voiture par leur gabarit. Cela +fait référence aux [segments +automobiles](https://fr.wikipedia.org/wiki/Classification_des_automobiles) +définis par des lettres en Europe (A, B, etc...). + +Ne semblant pas y avoir de dénomination faisant consensus entre les +différents acteurs du secteur automobile (concessionnaires, site +constructeur, journalisme auto, Car Labelling, etc...), nous avons fait le +choix de garder la même division en 5 catégories et valeur par défaut que +celle utilisée par [Nos Gestes +Climat](https://nosgestesclimat.fr/documentation/transport/voiture/gabarit) +pour plus de compatibilité et de simplicité. + +Nous avons tout de même choisit de les renommer pour facilité la +compréhension des utilisateurices. +`,"une possibilité":{"choix obligatoire":"oui",possibilités:["petite","moyenne","berline","SUV","VUL"]}},"voiture . gabarit . petite":{titre:"Citadine",description:"Citadine type Zoé, Fiat 500, Clio"},"voiture . gabarit . moyenne":{titre:"Monospace",description:"Modèle au dessus de la petite citadine, type Mégane, Golf"},"voiture . gabarit . berline":{titre:"Berline",description:"Une voiture longue, type 308, Tesla Model 3, Audi A3"},"voiture . gabarit . SUV":{titre:"SUV",description:'Sport utility vehicle", type 4x4 urbain'},"voiture . gabarit . VUL":{titre:"Véhicule utilitaire",description:"Camionette de type Kangoo ou Partner jusqu'au Trafic et Vito"},"voiture . thermique . prix carburant":{question:"Quel est le prix du carburant ?","applicable si":{"une de ces conditions":["motorisation = 'thermique'","motorisation = 'hybride'"]},"par défaut":"prix carburant moyen",plancher:0,description:`Renseignez le prix moyen du carburant que vous avez dû payer cette année. +Si vous ne le connaissez pas, vous pouvez laisser la valeur par défaut. +`,unité:"€/l"},"voiture . thermique . prix carburant moyen":{titre:"Prix du carburant moyen (août 2024)",unité:"€/l",note:`### Source + +Données récupérées sur +[prix-carburants-info.fr](https://prix-carburants-info.fr/) le 15 août +2024. +Le site utilise les données de +[prix-carburant.gouv.fr](https://www.prix-carburants.gouv.fr/). +`,variations:[{si:"carburant = 'gazole B7 ou B10'",alors:1.631},{si:"carburant = 'essence E5 ou E10'",alors:1.733},{si:"carburant = 'essence E85'",alors:.837},{si:"carburant = 'GPL'",alors:.959}]},"voiture . âge":{titre:"Âge de la voiture",description:`Âge de la voiture depuis sa première mise en circulation. + +Cette valeur permet de calculer la décote de la voiture qui a un impact +important sur le prix d'achat. +`,valeur:"commun . année courante - année de fabrication"},"voiture . année de fabrication":{titre:"Année de fabrication de la voiture",question:"Quelle est son année de fabrication ?",description:`Renseignez l'année de fabrication de votre voiture. +`,"par défaut":{variations:[{si:"occasion",alors:"commun . année courante - âge moyen d'une voiture d'occasion"},{sinon:"commun . année courante - durée de détention moyenne"}]},plafond:"commun . année courante",plancher:1900,arrondi:"oui"},"voiture . année de fabrication . âge moyen d'une voiture d'occasion":{description:`Âge moyen des véhicules échangés sur le marché de l'occasion en 2023 +estimé à 10,5 ans selon [cette publication du +SDES](https://www.statistiques.developpement-durable.gouv.fr/immatriculations-des-voitures-particulieres-en-2023-rebond-dans-le-neuf-mais-un-marche-de-loccasion). +`,valeur:"10.5 an"},"voiture . durée de détention totale":{question:"Combien de temps envisagez-vous de garder votre voiture au total ?",description:`Renseignez la durée totale de détention de votre voiture. Si vous la +possédez depuis 5 ans et que vous comptez encore la garder 4 ans, +renseignez 9 ans. +`,"par défaut":"durée de détention moyenne",plancher:0,unité:"an",note:`La durée de détention défini la durée sur la quelle amortir le prix +d'achat. +`},"voiture . durée de détention moyenne":{description:`Durée de détention moyenne d'une voiture en France en 2022. +`,note:`### Source + +Nous utilisons une valeur par défaut de 5,5 ans correspondant à la durée +de détention moyenne en 2020 (valeur relativement stable depuis 2015) +selon [_La sécurité routière en France - bilan de l'année 2021_ (ONISR +2022)](https://www.onisr.securite-routiere.gouv.fr/sites/default/files/2022-09/74-75%20Le%20parc%20automobile%20des%20m%C3%A9nages%20V5.pdf). +`,valeur:"5.5 an"},"voiture . cible":{titre:"Voiture envisagée",description:`Afin de vous proposer des alternatives en cohérence avec votre projet de +mobilité, nous avons besoin de connaître quelques informations sur la +voiture que vous envisagez d'acquérir. +`},"voiture . cible . achat envisagé":{question:"Envisagez-vous d'acheter une voiture ?","par défaut":{variations:[{si:"usage . km annuels < 1000",alors:"non"},{sinon:"oui"}]},description:`La voiture la plus écologique et économique est celle que l'on n'achète +pas. + +Nous considérons qu'avec un usage inférieur à 1000 km/an (arbitraire pour +l'instant), il est plus intéressant de recourir à des solutions de mobilité +alternatives. +`},"voiture . cible . borne de recharge":{question:"Avez-vous la possibilité de recharger une voiture électrique au quotidien ?","applicable si":"achat envisagé","par défaut":"oui",description:`Répondez "non" uniquement si vous vous êtes déjà renseigné sur la +possibilité de pouvoir recharger une voiture électrique au quotidien. +Par exemple, en installant une borne de recharge chez vous ou en utilisant +une borne en libre service. +`},"voiture . cible . gabarit":{"applicable si":"achat envisagé",question:"Quel gabarit de voiture envisagez-vous ?",description:`Renseignez le gabarit de voiture que vous envisagez d'acheter afin de vous +proposer des alternatives en cohérence avec votre projet de mobilité. +`,"par défaut":"voiture . gabarit","une possibilité":{"choix obligatoire":"oui",possibilités:["petite","moyenne","berline","SUV","VUL"]}},"voiture . cible . gabarit . petite":{titre:"Citadine",description:"Citadine type Zoé, Fiat 500"},"voiture . cible . gabarit . moyenne":{titre:"Monospace",description:"Modèle au dessus de la petite citadine, type Mégane, Golf"},"voiture . cible . gabarit . berline":{titre:"Berline",description:"Une voiture longue, type 308, Tesla Model 3, Audi A3"},"voiture . cible . gabarit . SUV":{titre:"SUV",description:'Sport utility vehicle", type 4x4 urbain'},"voiture . cible . gabarit . VUL":{titre:"Véhicule utilitaire",description:"Camionette de type Kangoo ou Partner jusqu'au Trafic et Vito"},usage:b5,"usage . km annuels":{titre:"Distance totale parcourue à l'année",variations:[{si:"km annuels . connus",alors:"km annuels . renseignés"},{sinon:"km annuels . calculés"}]},"usage . km annuels . connus":{question:"Connaissez-vous la distance totale que vous parcourez à l'année ?","par défaut":"oui",description:`Répondez "non" pour renseigner la distance parcourue au quotidien et pour +les vacances. +`},"usage . km annuels . renseignés":{"applicable si":"km annuels . connus",question:"Kilomètres parcourus à l'année","par défaut":"estimés",unité:"km/an",plancher:0},"usage . km annuels . estimés":{titre:"Distance moyenne parcourue à l'année",unité:"km/an",note:`### Source + +Selon le [_Bilan annuel des transports en 2022_ +(SDES)](https://www.statistiques.developpement-durable.gouv.fr/media/6822/download?inline) + +### Pistes d'amélioration + +Il serait intéressant de trouver une source détaillant les distances +moyennes pour les voitures électriques et hybrides. +`,variations:[{si:"voiture . thermique . carburant = 'gazole B7 ou B10'",alors:9535},{si:"voiture . thermique . carburant = 'essence E5 ou E10'",alors:13975},{sinon:"(13975 km/an + 9535 km/an) / 2"}]},"usage . km annuels . calculés":{titre:"Cumul des distances parcourues au quotidien et pour les vacances","non applicable si":"km annuels . connus",unité:"km/an",somme:["quotidien","vacances"]},"usage . km annuels . calculés . quotidien":{question:"Kilomètres parcourus en moyenne par jours","par défaut":33,unité:"km/jour",plancher:0,suggestions:{jamais:"0 km/jour",régulièrement:"10 km/jour","de temps en temps":"30 km/semaine","pour les courses":"5 km/semaine"},description:`Renseignez les informations concernant l'usage au quotidien de votre +voiture (ex: aller au travail, faire les courses ou transporter vos enfants +à l'école). +`,note:`D'après [cette article du +Monde](https://www.lemonde.fr/les-decodeurs/article/2023/01/22/qui-pourrait-se-passer-de-sa-voiture-six-graphiques-pour-analyser-nos-trajets-du-quotidien_6158829_4355770.html) +s'appuyant sur la +[thèse](https://chair-energy-prosperity.org/publications/travail-de-these-decarboner-transports-dici-2050/) +d'Aurélien Bigo, les trajets du quotidien sont en moyenne de 33km/jour en +2019. +`},"usage . km annuels . calculés . vacances":{titre:"Usage pour les vacances",question:"Kilomètres parcourus en moyenne pour vos vacances à l'année","par défaut":500,plancher:0,unité:"km/an",suggestions:{jamais:"0 km/an","Pour les vacances d'été":"500 km/an","Toutes les vacances":"1000 km/an","Tous les week-ends":"1000 km/an"},description:`Renseignez les informations concernant l'usage de votre voiture pour les +vacances (ex: trajets pour les vacances d'été ou d'hiver ou encore pour les +week-ends). +`},"usage . km annuels . part autoroute":{titre:"Moyenne de la part des kilomètres parcourus à l'année sur autoroute",notes:`Selon la figure G1-1 du [_Bilan annuel des transports en 2022_ +(SDES)](https://www.statistiques.developpement-durable.gouv.fr/media/6822/download?inline), +la cirulation routière par réseau routier. +`,valeur:"30 %"},"commun . jours par an":{titre:"Nombre de jours par an",unité:"jour",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/publicodes-commun`](https://github.com/incubateur-ademe/publicodes-commun).",valeur:365},"commun . voiture":null,"commun . voiture . parc français 2022":{titre:"Nombre de voiture en circulation en France au 1er janvier 2022",valeur:"38.7 millions de voiture"},"commun . année courante":{titre:"Année courante",valeur:2024},alternatives:x5,"alternatives . voiture":{titre:"Voiture Individuelle"},"alternatives . voiture . petite":{titre:"Citadine"},"alternatives . voiture . petite . thermique":{titre:"Thermique"},"alternatives . voiture . petite . thermique . gazole B7 ou B10":{titre:"Citadine Thermique (Diesel)"},"alternatives . voiture . petite . thermique . gazole B7 ou B10 . empreinte":{titre:"Empreinte CO2e",unité:"kgCO2e/an",valeur:"empreinte",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'petite'"}},"voiture . gabarit":"'petite'","voiture . motorisation":"'thermique'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'petite'","voiture . motorisation":"'thermique'"}},"voiture . thermique . carburant":"'gazole B7 ou B10'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'petite'","voiture . motorisation":"'thermique'","voiture . thermique . carburant":"'gazole B7 ou B10'"}}}},"alternatives . voiture . petite . thermique . gazole B7 ou B10 . coûts":{titre:"Coûts annuels",unité:"€/an",valeur:"coûts",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'petite'"}},"voiture . gabarit":"'petite'","voiture . motorisation":"'thermique'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'petite'","voiture . motorisation":"'thermique'"}},"voiture . thermique . carburant":"'gazole B7 ou B10'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'petite'","voiture . motorisation":"'thermique'","voiture . thermique . carburant":"'gazole B7 ou B10'"}}}},"alternatives . voiture . petite . thermique . essence E5 ou E10":{titre:"Citadine Thermique (Essence)"},"alternatives . voiture . petite . thermique . essence E5 ou E10 . empreinte":{titre:"Empreinte CO2e",unité:"kgCO2e/an",valeur:"empreinte",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'petite'"}},"voiture . gabarit":"'petite'","voiture . motorisation":"'thermique'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'petite'","voiture . motorisation":"'thermique'"}},"voiture . thermique . carburant":"'essence E5 ou E10'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'petite'","voiture . motorisation":"'thermique'","voiture . thermique . carburant":"'essence E5 ou E10'"}}}},"alternatives . voiture . petite . thermique . essence E5 ou E10 . coûts":{titre:"Coûts annuels",unité:"€/an",valeur:"coûts",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'petite'"}},"voiture . gabarit":"'petite'","voiture . motorisation":"'thermique'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'petite'","voiture . motorisation":"'thermique'"}},"voiture . thermique . carburant":"'essence E5 ou E10'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'petite'","voiture . motorisation":"'thermique'","voiture . thermique . carburant":"'essence E5 ou E10'"}}}},"alternatives . voiture . petite . thermique . essence E85":{titre:"Citadine Thermique (Essence (E85))"},"alternatives . voiture . petite . thermique . essence E85 . empreinte":{titre:"Empreinte CO2e",unité:"kgCO2e/an",valeur:"empreinte",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'petite'"}},"voiture . gabarit":"'petite'","voiture . motorisation":"'thermique'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'petite'","voiture . motorisation":"'thermique'"}},"voiture . thermique . carburant":"'essence E85'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'petite'","voiture . motorisation":"'thermique'","voiture . thermique . carburant":"'essence E85'"}}}},"alternatives . voiture . petite . thermique . essence E85 . coûts":{titre:"Coûts annuels",unité:"€/an",valeur:"coûts",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'petite'"}},"voiture . gabarit":"'petite'","voiture . motorisation":"'thermique'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'petite'","voiture . motorisation":"'thermique'"}},"voiture . thermique . carburant":"'essence E85'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'petite'","voiture . motorisation":"'thermique'","voiture . thermique . carburant":"'essence E85'"}}}},"alternatives . voiture . petite . thermique . GPL":{titre:"Citadine Thermique (GPL)"},"alternatives . voiture . petite . thermique . GPL . empreinte":{titre:"Empreinte CO2e",unité:"kgCO2e/an",valeur:"empreinte",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'petite'"}},"voiture . gabarit":"'petite'","voiture . motorisation":"'thermique'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'petite'","voiture . motorisation":"'thermique'"}},"voiture . thermique . carburant":"'GPL'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'petite'","voiture . motorisation":"'thermique'","voiture . thermique . carburant":"'GPL'"}}}},"alternatives . voiture . petite . thermique . GPL . coûts":{titre:"Coûts annuels",unité:"€/an",valeur:"coûts",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'petite'"}},"voiture . gabarit":"'petite'","voiture . motorisation":"'thermique'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'petite'","voiture . motorisation":"'thermique'"}},"voiture . thermique . carburant":"'GPL'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'petite'","voiture . motorisation":"'thermique'","voiture . thermique . carburant":"'GPL'"}}}},"alternatives . voiture . petite . électrique":{titre:"Citadine Électrique"},"alternatives . voiture . petite . électrique . empreinte":{titre:"Empreinte CO2e",unité:"kgCO2e/an",valeur:"empreinte",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'petite'"}},"voiture . gabarit":"'petite'","voiture . motorisation":"'électrique'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'petite'","voiture . motorisation":"'électrique'"}}}},"alternatives . voiture . petite . électrique . coûts":{titre:"Coûts annuels",unité:"€/an",valeur:"coûts",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'petite'"}},"voiture . gabarit":"'petite'","voiture . motorisation":"'électrique'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'petite'","voiture . motorisation":"'électrique'"}}}},"alternatives . voiture . petite . hybride":{titre:"Hybride"},"alternatives . voiture . petite . hybride . gazole B7 ou B10":{titre:"Citadine Hybride (Diesel)"},"alternatives . voiture . petite . hybride . gazole B7 ou B10 . empreinte":{titre:"Empreinte CO2e",unité:"kgCO2e/an",valeur:"empreinte",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'petite'"}},"voiture . gabarit":"'petite'","voiture . motorisation":"'hybride'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'petite'","voiture . motorisation":"'hybride'"}},"voiture . thermique . carburant":"'gazole B7 ou B10'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'petite'","voiture . motorisation":"'hybride'","voiture . thermique . carburant":"'gazole B7 ou B10'"}}}},"alternatives . voiture . petite . hybride . gazole B7 ou B10 . coûts":{titre:"Coûts annuels",unité:"€/an",valeur:"coûts",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'petite'"}},"voiture . gabarit":"'petite'","voiture . motorisation":"'hybride'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'petite'","voiture . motorisation":"'hybride'"}},"voiture . thermique . carburant":"'gazole B7 ou B10'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'petite'","voiture . motorisation":"'hybride'","voiture . thermique . carburant":"'gazole B7 ou B10'"}}}},"alternatives . voiture . petite . hybride . essence E5 ou E10":{titre:"Citadine Hybride (Essence)"},"alternatives . voiture . petite . hybride . essence E5 ou E10 . empreinte":{titre:"Empreinte CO2e",unité:"kgCO2e/an",valeur:"empreinte",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'petite'"}},"voiture . gabarit":"'petite'","voiture . motorisation":"'hybride'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'petite'","voiture . motorisation":"'hybride'"}},"voiture . thermique . carburant":"'essence E5 ou E10'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'petite'","voiture . motorisation":"'hybride'","voiture . thermique . carburant":"'essence E5 ou E10'"}}}},"alternatives . voiture . petite . hybride . essence E5 ou E10 . coûts":{titre:"Coûts annuels",unité:"€/an",valeur:"coûts",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'petite'"}},"voiture . gabarit":"'petite'","voiture . motorisation":"'hybride'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'petite'","voiture . motorisation":"'hybride'"}},"voiture . thermique . carburant":"'essence E5 ou E10'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'petite'","voiture . motorisation":"'hybride'","voiture . thermique . carburant":"'essence E5 ou E10'"}}}},"alternatives . voiture . petite . hybride . essence E85":{titre:"Citadine Hybride (Essence (E85))"},"alternatives . voiture . petite . hybride . essence E85 . empreinte":{titre:"Empreinte CO2e",unité:"kgCO2e/an",valeur:"empreinte",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'petite'"}},"voiture . gabarit":"'petite'","voiture . motorisation":"'hybride'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'petite'","voiture . motorisation":"'hybride'"}},"voiture . thermique . carburant":"'essence E85'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'petite'","voiture . motorisation":"'hybride'","voiture . thermique . carburant":"'essence E85'"}}}},"alternatives . voiture . petite . hybride . essence E85 . coûts":{titre:"Coûts annuels",unité:"€/an",valeur:"coûts",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'petite'"}},"voiture . gabarit":"'petite'","voiture . motorisation":"'hybride'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'petite'","voiture . motorisation":"'hybride'"}},"voiture . thermique . carburant":"'essence E85'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'petite'","voiture . motorisation":"'hybride'","voiture . thermique . carburant":"'essence E85'"}}}},"alternatives . voiture . petite . hybride . GPL":{titre:"Citadine Hybride (GPL)"},"alternatives . voiture . petite . hybride . GPL . empreinte":{titre:"Empreinte CO2e",unité:"kgCO2e/an",valeur:"empreinte",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'petite'"}},"voiture . gabarit":"'petite'","voiture . motorisation":"'hybride'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'petite'","voiture . motorisation":"'hybride'"}},"voiture . thermique . carburant":"'GPL'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'petite'","voiture . motorisation":"'hybride'","voiture . thermique . carburant":"'GPL'"}}}},"alternatives . voiture . petite . hybride . GPL . coûts":{titre:"Coûts annuels",unité:"€/an",valeur:"coûts",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'petite'"}},"voiture . gabarit":"'petite'","voiture . motorisation":"'hybride'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'petite'","voiture . motorisation":"'hybride'"}},"voiture . thermique . carburant":"'GPL'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'petite'","voiture . motorisation":"'hybride'","voiture . thermique . carburant":"'GPL'"}}}},"alternatives . voiture . moyenne":{titre:"Monospace"},"alternatives . voiture . moyenne . thermique":{titre:"Thermique"},"alternatives . voiture . moyenne . thermique . gazole B7 ou B10":{titre:"Monospace Thermique (Diesel)"},"alternatives . voiture . moyenne . thermique . gazole B7 ou B10 . empreinte":{titre:"Empreinte CO2e",unité:"kgCO2e/an",valeur:"empreinte",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'moyenne'"}},"voiture . gabarit":"'moyenne'","voiture . motorisation":"'thermique'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'moyenne'","voiture . motorisation":"'thermique'"}},"voiture . thermique . carburant":"'gazole B7 ou B10'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'moyenne'","voiture . motorisation":"'thermique'","voiture . thermique . carburant":"'gazole B7 ou B10'"}}}},"alternatives . voiture . moyenne . thermique . gazole B7 ou B10 . coûts":{titre:"Coûts annuels",unité:"€/an",valeur:"coûts",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'moyenne'"}},"voiture . gabarit":"'moyenne'","voiture . motorisation":"'thermique'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'moyenne'","voiture . motorisation":"'thermique'"}},"voiture . thermique . carburant":"'gazole B7 ou B10'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'moyenne'","voiture . motorisation":"'thermique'","voiture . thermique . carburant":"'gazole B7 ou B10'"}}}},"alternatives . voiture . moyenne . thermique . essence E5 ou E10":{titre:"Monospace Thermique (Essence)"},"alternatives . voiture . moyenne . thermique . essence E5 ou E10 . empreinte":{titre:"Empreinte CO2e",unité:"kgCO2e/an",valeur:"empreinte",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'moyenne'"}},"voiture . gabarit":"'moyenne'","voiture . motorisation":"'thermique'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'moyenne'","voiture . motorisation":"'thermique'"}},"voiture . thermique . carburant":"'essence E5 ou E10'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'moyenne'","voiture . motorisation":"'thermique'","voiture . thermique . carburant":"'essence E5 ou E10'"}}}},"alternatives . voiture . moyenne . thermique . essence E5 ou E10 . coûts":{titre:"Coûts annuels",unité:"€/an",valeur:"coûts",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'moyenne'"}},"voiture . gabarit":"'moyenne'","voiture . motorisation":"'thermique'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'moyenne'","voiture . motorisation":"'thermique'"}},"voiture . thermique . carburant":"'essence E5 ou E10'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'moyenne'","voiture . motorisation":"'thermique'","voiture . thermique . carburant":"'essence E5 ou E10'"}}}},"alternatives . voiture . moyenne . thermique . essence E85":{titre:"Monospace Thermique (Essence (E85))"},"alternatives . voiture . moyenne . thermique . essence E85 . empreinte":{titre:"Empreinte CO2e",unité:"kgCO2e/an",valeur:"empreinte",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'moyenne'"}},"voiture . gabarit":"'moyenne'","voiture . motorisation":"'thermique'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'moyenne'","voiture . motorisation":"'thermique'"}},"voiture . thermique . carburant":"'essence E85'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'moyenne'","voiture . motorisation":"'thermique'","voiture . thermique . carburant":"'essence E85'"}}}},"alternatives . voiture . moyenne . thermique . essence E85 . coûts":{titre:"Coûts annuels",unité:"€/an",valeur:"coûts",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'moyenne'"}},"voiture . gabarit":"'moyenne'","voiture . motorisation":"'thermique'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'moyenne'","voiture . motorisation":"'thermique'"}},"voiture . thermique . carburant":"'essence E85'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'moyenne'","voiture . motorisation":"'thermique'","voiture . thermique . carburant":"'essence E85'"}}}},"alternatives . voiture . moyenne . thermique . GPL":{titre:"Monospace Thermique (GPL)"},"alternatives . voiture . moyenne . thermique . GPL . empreinte":{titre:"Empreinte CO2e",unité:"kgCO2e/an",valeur:"empreinte",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'moyenne'"}},"voiture . gabarit":"'moyenne'","voiture . motorisation":"'thermique'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'moyenne'","voiture . motorisation":"'thermique'"}},"voiture . thermique . carburant":"'GPL'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'moyenne'","voiture . motorisation":"'thermique'","voiture . thermique . carburant":"'GPL'"}}}},"alternatives . voiture . moyenne . thermique . GPL . coûts":{titre:"Coûts annuels",unité:"€/an",valeur:"coûts",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'moyenne'"}},"voiture . gabarit":"'moyenne'","voiture . motorisation":"'thermique'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'moyenne'","voiture . motorisation":"'thermique'"}},"voiture . thermique . carburant":"'GPL'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'moyenne'","voiture . motorisation":"'thermique'","voiture . thermique . carburant":"'GPL'"}}}},"alternatives . voiture . moyenne . électrique":{titre:"Monospace Électrique"},"alternatives . voiture . moyenne . électrique . empreinte":{titre:"Empreinte CO2e",unité:"kgCO2e/an",valeur:"empreinte",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'moyenne'"}},"voiture . gabarit":"'moyenne'","voiture . motorisation":"'électrique'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'moyenne'","voiture . motorisation":"'électrique'"}}}},"alternatives . voiture . moyenne . électrique . coûts":{titre:"Coûts annuels",unité:"€/an",valeur:"coûts",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'moyenne'"}},"voiture . gabarit":"'moyenne'","voiture . motorisation":"'électrique'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'moyenne'","voiture . motorisation":"'électrique'"}}}},"alternatives . voiture . moyenne . hybride":{titre:"Hybride"},"alternatives . voiture . moyenne . hybride . gazole B7 ou B10":{titre:"Monospace Hybride (Diesel)"},"alternatives . voiture . moyenne . hybride . gazole B7 ou B10 . empreinte":{titre:"Empreinte CO2e",unité:"kgCO2e/an",valeur:"empreinte",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'moyenne'"}},"voiture . gabarit":"'moyenne'","voiture . motorisation":"'hybride'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'moyenne'","voiture . motorisation":"'hybride'"}},"voiture . thermique . carburant":"'gazole B7 ou B10'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'moyenne'","voiture . motorisation":"'hybride'","voiture . thermique . carburant":"'gazole B7 ou B10'"}}}},"alternatives . voiture . moyenne . hybride . gazole B7 ou B10 . coûts":{titre:"Coûts annuels",unité:"€/an",valeur:"coûts",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'moyenne'"}},"voiture . gabarit":"'moyenne'","voiture . motorisation":"'hybride'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'moyenne'","voiture . motorisation":"'hybride'"}},"voiture . thermique . carburant":"'gazole B7 ou B10'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'moyenne'","voiture . motorisation":"'hybride'","voiture . thermique . carburant":"'gazole B7 ou B10'"}}}},"alternatives . voiture . moyenne . hybride . essence E5 ou E10":{titre:"Monospace Hybride (Essence)"},"alternatives . voiture . moyenne . hybride . essence E5 ou E10 . empreinte":{titre:"Empreinte CO2e",unité:"kgCO2e/an",valeur:"empreinte",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'moyenne'"}},"voiture . gabarit":"'moyenne'","voiture . motorisation":"'hybride'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'moyenne'","voiture . motorisation":"'hybride'"}},"voiture . thermique . carburant":"'essence E5 ou E10'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'moyenne'","voiture . motorisation":"'hybride'","voiture . thermique . carburant":"'essence E5 ou E10'"}}}},"alternatives . voiture . moyenne . hybride . essence E5 ou E10 . coûts":{titre:"Coûts annuels",unité:"€/an",valeur:"coûts",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'moyenne'"}},"voiture . gabarit":"'moyenne'","voiture . motorisation":"'hybride'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'moyenne'","voiture . motorisation":"'hybride'"}},"voiture . thermique . carburant":"'essence E5 ou E10'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'moyenne'","voiture . motorisation":"'hybride'","voiture . thermique . carburant":"'essence E5 ou E10'"}}}},"alternatives . voiture . moyenne . hybride . essence E85":{titre:"Monospace Hybride (Essence (E85))"},"alternatives . voiture . moyenne . hybride . essence E85 . empreinte":{titre:"Empreinte CO2e",unité:"kgCO2e/an",valeur:"empreinte",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'moyenne'"}},"voiture . gabarit":"'moyenne'","voiture . motorisation":"'hybride'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'moyenne'","voiture . motorisation":"'hybride'"}},"voiture . thermique . carburant":"'essence E85'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'moyenne'","voiture . motorisation":"'hybride'","voiture . thermique . carburant":"'essence E85'"}}}},"alternatives . voiture . moyenne . hybride . essence E85 . coûts":{titre:"Coûts annuels",unité:"€/an",valeur:"coûts",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'moyenne'"}},"voiture . gabarit":"'moyenne'","voiture . motorisation":"'hybride'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'moyenne'","voiture . motorisation":"'hybride'"}},"voiture . thermique . carburant":"'essence E85'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'moyenne'","voiture . motorisation":"'hybride'","voiture . thermique . carburant":"'essence E85'"}}}},"alternatives . voiture . moyenne . hybride . GPL":{titre:"Monospace Hybride (GPL)"},"alternatives . voiture . moyenne . hybride . GPL . empreinte":{titre:"Empreinte CO2e",unité:"kgCO2e/an",valeur:"empreinte",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'moyenne'"}},"voiture . gabarit":"'moyenne'","voiture . motorisation":"'hybride'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'moyenne'","voiture . motorisation":"'hybride'"}},"voiture . thermique . carburant":"'GPL'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'moyenne'","voiture . motorisation":"'hybride'","voiture . thermique . carburant":"'GPL'"}}}},"alternatives . voiture . moyenne . hybride . GPL . coûts":{titre:"Coûts annuels",unité:"€/an",valeur:"coûts",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'moyenne'"}},"voiture . gabarit":"'moyenne'","voiture . motorisation":"'hybride'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'moyenne'","voiture . motorisation":"'hybride'"}},"voiture . thermique . carburant":"'GPL'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'moyenne'","voiture . motorisation":"'hybride'","voiture . thermique . carburant":"'GPL'"}}}},"alternatives . voiture . berline":{titre:"Berline"},"alternatives . voiture . berline . thermique":{titre:"Thermique"},"alternatives . voiture . berline . thermique . gazole B7 ou B10":{titre:"Berline Thermique (Diesel)"},"alternatives . voiture . berline . thermique . gazole B7 ou B10 . empreinte":{titre:"Empreinte CO2e",unité:"kgCO2e/an",valeur:"empreinte",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'berline'"}},"voiture . gabarit":"'berline'","voiture . motorisation":"'thermique'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'berline'","voiture . motorisation":"'thermique'"}},"voiture . thermique . carburant":"'gazole B7 ou B10'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'berline'","voiture . motorisation":"'thermique'","voiture . thermique . carburant":"'gazole B7 ou B10'"}}}},"alternatives . voiture . berline . thermique . gazole B7 ou B10 . coûts":{titre:"Coûts annuels",unité:"€/an",valeur:"coûts",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'berline'"}},"voiture . gabarit":"'berline'","voiture . motorisation":"'thermique'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'berline'","voiture . motorisation":"'thermique'"}},"voiture . thermique . carburant":"'gazole B7 ou B10'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'berline'","voiture . motorisation":"'thermique'","voiture . thermique . carburant":"'gazole B7 ou B10'"}}}},"alternatives . voiture . berline . thermique . essence E5 ou E10":{titre:"Berline Thermique (Essence)"},"alternatives . voiture . berline . thermique . essence E5 ou E10 . empreinte":{titre:"Empreinte CO2e",unité:"kgCO2e/an",valeur:"empreinte",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'berline'"}},"voiture . gabarit":"'berline'","voiture . motorisation":"'thermique'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'berline'","voiture . motorisation":"'thermique'"}},"voiture . thermique . carburant":"'essence E5 ou E10'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'berline'","voiture . motorisation":"'thermique'","voiture . thermique . carburant":"'essence E5 ou E10'"}}}},"alternatives . voiture . berline . thermique . essence E5 ou E10 . coûts":{titre:"Coûts annuels",unité:"€/an",valeur:"coûts",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'berline'"}},"voiture . gabarit":"'berline'","voiture . motorisation":"'thermique'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'berline'","voiture . motorisation":"'thermique'"}},"voiture . thermique . carburant":"'essence E5 ou E10'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'berline'","voiture . motorisation":"'thermique'","voiture . thermique . carburant":"'essence E5 ou E10'"}}}},"alternatives . voiture . berline . thermique . essence E85":{titre:"Berline Thermique (Essence (E85))"},"alternatives . voiture . berline . thermique . essence E85 . empreinte":{titre:"Empreinte CO2e",unité:"kgCO2e/an",valeur:"empreinte",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'berline'"}},"voiture . gabarit":"'berline'","voiture . motorisation":"'thermique'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'berline'","voiture . motorisation":"'thermique'"}},"voiture . thermique . carburant":"'essence E85'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'berline'","voiture . motorisation":"'thermique'","voiture . thermique . carburant":"'essence E85'"}}}},"alternatives . voiture . berline . thermique . essence E85 . coûts":{titre:"Coûts annuels",unité:"€/an",valeur:"coûts",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'berline'"}},"voiture . gabarit":"'berline'","voiture . motorisation":"'thermique'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'berline'","voiture . motorisation":"'thermique'"}},"voiture . thermique . carburant":"'essence E85'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'berline'","voiture . motorisation":"'thermique'","voiture . thermique . carburant":"'essence E85'"}}}},"alternatives . voiture . berline . thermique . GPL":{titre:"Berline Thermique (GPL)"},"alternatives . voiture . berline . thermique . GPL . empreinte":{titre:"Empreinte CO2e",unité:"kgCO2e/an",valeur:"empreinte",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'berline'"}},"voiture . gabarit":"'berline'","voiture . motorisation":"'thermique'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'berline'","voiture . motorisation":"'thermique'"}},"voiture . thermique . carburant":"'GPL'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'berline'","voiture . motorisation":"'thermique'","voiture . thermique . carburant":"'GPL'"}}}},"alternatives . voiture . berline . thermique . GPL . coûts":{titre:"Coûts annuels",unité:"€/an",valeur:"coûts",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'berline'"}},"voiture . gabarit":"'berline'","voiture . motorisation":"'thermique'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'berline'","voiture . motorisation":"'thermique'"}},"voiture . thermique . carburant":"'GPL'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'berline'","voiture . motorisation":"'thermique'","voiture . thermique . carburant":"'GPL'"}}}},"alternatives . voiture . berline . électrique":{titre:"Berline Électrique"},"alternatives . voiture . berline . électrique . empreinte":{titre:"Empreinte CO2e",unité:"kgCO2e/an",valeur:"empreinte",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'berline'"}},"voiture . gabarit":"'berline'","voiture . motorisation":"'électrique'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'berline'","voiture . motorisation":"'électrique'"}}}},"alternatives . voiture . berline . électrique . coûts":{titre:"Coûts annuels",unité:"€/an",valeur:"coûts",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'berline'"}},"voiture . gabarit":"'berline'","voiture . motorisation":"'électrique'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'berline'","voiture . motorisation":"'électrique'"}}}},"alternatives . voiture . berline . hybride":{titre:"Hybride"},"alternatives . voiture . berline . hybride . gazole B7 ou B10":{titre:"Berline Hybride (Diesel)"},"alternatives . voiture . berline . hybride . gazole B7 ou B10 . empreinte":{titre:"Empreinte CO2e",unité:"kgCO2e/an",valeur:"empreinte",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'berline'"}},"voiture . gabarit":"'berline'","voiture . motorisation":"'hybride'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'berline'","voiture . motorisation":"'hybride'"}},"voiture . thermique . carburant":"'gazole B7 ou B10'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'berline'","voiture . motorisation":"'hybride'","voiture . thermique . carburant":"'gazole B7 ou B10'"}}}},"alternatives . voiture . berline . hybride . gazole B7 ou B10 . coûts":{titre:"Coûts annuels",unité:"€/an",valeur:"coûts",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'berline'"}},"voiture . gabarit":"'berline'","voiture . motorisation":"'hybride'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'berline'","voiture . motorisation":"'hybride'"}},"voiture . thermique . carburant":"'gazole B7 ou B10'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'berline'","voiture . motorisation":"'hybride'","voiture . thermique . carburant":"'gazole B7 ou B10'"}}}},"alternatives . voiture . berline . hybride . essence E5 ou E10":{titre:"Berline Hybride (Essence)"},"alternatives . voiture . berline . hybride . essence E5 ou E10 . empreinte":{titre:"Empreinte CO2e",unité:"kgCO2e/an",valeur:"empreinte",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'berline'"}},"voiture . gabarit":"'berline'","voiture . motorisation":"'hybride'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'berline'","voiture . motorisation":"'hybride'"}},"voiture . thermique . carburant":"'essence E5 ou E10'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'berline'","voiture . motorisation":"'hybride'","voiture . thermique . carburant":"'essence E5 ou E10'"}}}},"alternatives . voiture . berline . hybride . essence E5 ou E10 . coûts":{titre:"Coûts annuels",unité:"€/an",valeur:"coûts",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'berline'"}},"voiture . gabarit":"'berline'","voiture . motorisation":"'hybride'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'berline'","voiture . motorisation":"'hybride'"}},"voiture . thermique . carburant":"'essence E5 ou E10'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'berline'","voiture . motorisation":"'hybride'","voiture . thermique . carburant":"'essence E5 ou E10'"}}}},"alternatives . voiture . berline . hybride . essence E85":{titre:"Berline Hybride (Essence (E85))"},"alternatives . voiture . berline . hybride . essence E85 . empreinte":{titre:"Empreinte CO2e",unité:"kgCO2e/an",valeur:"empreinte",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'berline'"}},"voiture . gabarit":"'berline'","voiture . motorisation":"'hybride'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'berline'","voiture . motorisation":"'hybride'"}},"voiture . thermique . carburant":"'essence E85'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'berline'","voiture . motorisation":"'hybride'","voiture . thermique . carburant":"'essence E85'"}}}},"alternatives . voiture . berline . hybride . essence E85 . coûts":{titre:"Coûts annuels",unité:"€/an",valeur:"coûts",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'berline'"}},"voiture . gabarit":"'berline'","voiture . motorisation":"'hybride'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'berline'","voiture . motorisation":"'hybride'"}},"voiture . thermique . carburant":"'essence E85'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'berline'","voiture . motorisation":"'hybride'","voiture . thermique . carburant":"'essence E85'"}}}},"alternatives . voiture . berline . hybride . GPL":{titre:"Berline Hybride (GPL)"},"alternatives . voiture . berline . hybride . GPL . empreinte":{titre:"Empreinte CO2e",unité:"kgCO2e/an",valeur:"empreinte",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'berline'"}},"voiture . gabarit":"'berline'","voiture . motorisation":"'hybride'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'berline'","voiture . motorisation":"'hybride'"}},"voiture . thermique . carburant":"'GPL'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'berline'","voiture . motorisation":"'hybride'","voiture . thermique . carburant":"'GPL'"}}}},"alternatives . voiture . berline . hybride . GPL . coûts":{titre:"Coûts annuels",unité:"€/an",valeur:"coûts",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'berline'"}},"voiture . gabarit":"'berline'","voiture . motorisation":"'hybride'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'berline'","voiture . motorisation":"'hybride'"}},"voiture . thermique . carburant":"'GPL'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'berline'","voiture . motorisation":"'hybride'","voiture . thermique . carburant":"'GPL'"}}}},"alternatives . voiture . SUV":{titre:"SUV"},"alternatives . voiture . SUV . thermique":{titre:"Thermique"},"alternatives . voiture . SUV . thermique . gazole B7 ou B10":{titre:"SUV Thermique (Diesel)"},"alternatives . voiture . SUV . thermique . gazole B7 ou B10 . empreinte":{titre:"Empreinte CO2e",unité:"kgCO2e/an",valeur:"empreinte",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'SUV'"}},"voiture . gabarit":"'SUV'","voiture . motorisation":"'thermique'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'SUV'","voiture . motorisation":"'thermique'"}},"voiture . thermique . carburant":"'gazole B7 ou B10'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'SUV'","voiture . motorisation":"'thermique'","voiture . thermique . carburant":"'gazole B7 ou B10'"}}}},"alternatives . voiture . SUV . thermique . gazole B7 ou B10 . coûts":{titre:"Coûts annuels",unité:"€/an",valeur:"coûts",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'SUV'"}},"voiture . gabarit":"'SUV'","voiture . motorisation":"'thermique'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'SUV'","voiture . motorisation":"'thermique'"}},"voiture . thermique . carburant":"'gazole B7 ou B10'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'SUV'","voiture . motorisation":"'thermique'","voiture . thermique . carburant":"'gazole B7 ou B10'"}}}},"alternatives . voiture . SUV . thermique . essence E5 ou E10":{titre:"SUV Thermique (Essence)"},"alternatives . voiture . SUV . thermique . essence E5 ou E10 . empreinte":{titre:"Empreinte CO2e",unité:"kgCO2e/an",valeur:"empreinte",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'SUV'"}},"voiture . gabarit":"'SUV'","voiture . motorisation":"'thermique'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'SUV'","voiture . motorisation":"'thermique'"}},"voiture . thermique . carburant":"'essence E5 ou E10'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'SUV'","voiture . motorisation":"'thermique'","voiture . thermique . carburant":"'essence E5 ou E10'"}}}},"alternatives . voiture . SUV . thermique . essence E5 ou E10 . coûts":{titre:"Coûts annuels",unité:"€/an",valeur:"coûts",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'SUV'"}},"voiture . gabarit":"'SUV'","voiture . motorisation":"'thermique'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'SUV'","voiture . motorisation":"'thermique'"}},"voiture . thermique . carburant":"'essence E5 ou E10'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'SUV'","voiture . motorisation":"'thermique'","voiture . thermique . carburant":"'essence E5 ou E10'"}}}},"alternatives . voiture . SUV . thermique . essence E85":{titre:"SUV Thermique (Essence (E85))"},"alternatives . voiture . SUV . thermique . essence E85 . empreinte":{titre:"Empreinte CO2e",unité:"kgCO2e/an",valeur:"empreinte",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'SUV'"}},"voiture . gabarit":"'SUV'","voiture . motorisation":"'thermique'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'SUV'","voiture . motorisation":"'thermique'"}},"voiture . thermique . carburant":"'essence E85'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'SUV'","voiture . motorisation":"'thermique'","voiture . thermique . carburant":"'essence E85'"}}}},"alternatives . voiture . SUV . thermique . essence E85 . coûts":{titre:"Coûts annuels",unité:"€/an",valeur:"coûts",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'SUV'"}},"voiture . gabarit":"'SUV'","voiture . motorisation":"'thermique'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'SUV'","voiture . motorisation":"'thermique'"}},"voiture . thermique . carburant":"'essence E85'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'SUV'","voiture . motorisation":"'thermique'","voiture . thermique . carburant":"'essence E85'"}}}},"alternatives . voiture . SUV . thermique . GPL":{titre:"SUV Thermique (GPL)"},"alternatives . voiture . SUV . thermique . GPL . empreinte":{titre:"Empreinte CO2e",unité:"kgCO2e/an",valeur:"empreinte",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'SUV'"}},"voiture . gabarit":"'SUV'","voiture . motorisation":"'thermique'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'SUV'","voiture . motorisation":"'thermique'"}},"voiture . thermique . carburant":"'GPL'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'SUV'","voiture . motorisation":"'thermique'","voiture . thermique . carburant":"'GPL'"}}}},"alternatives . voiture . SUV . thermique . GPL . coûts":{titre:"Coûts annuels",unité:"€/an",valeur:"coûts",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'SUV'"}},"voiture . gabarit":"'SUV'","voiture . motorisation":"'thermique'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'SUV'","voiture . motorisation":"'thermique'"}},"voiture . thermique . carburant":"'GPL'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'SUV'","voiture . motorisation":"'thermique'","voiture . thermique . carburant":"'GPL'"}}}},"alternatives . voiture . SUV . électrique":{titre:"SUV Électrique"},"alternatives . voiture . SUV . électrique . empreinte":{titre:"Empreinte CO2e",unité:"kgCO2e/an",valeur:"empreinte",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'SUV'"}},"voiture . gabarit":"'SUV'","voiture . motorisation":"'électrique'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'SUV'","voiture . motorisation":"'électrique'"}}}},"alternatives . voiture . SUV . électrique . coûts":{titre:"Coûts annuels",unité:"€/an",valeur:"coûts",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'SUV'"}},"voiture . gabarit":"'SUV'","voiture . motorisation":"'électrique'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'SUV'","voiture . motorisation":"'électrique'"}}}},"alternatives . voiture . SUV . hybride":{titre:"Hybride"},"alternatives . voiture . SUV . hybride . gazole B7 ou B10":{titre:"SUV Hybride (Diesel)"},"alternatives . voiture . SUV . hybride . gazole B7 ou B10 . empreinte":{titre:"Empreinte CO2e",unité:"kgCO2e/an",valeur:"empreinte",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'SUV'"}},"voiture . gabarit":"'SUV'","voiture . motorisation":"'hybride'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'SUV'","voiture . motorisation":"'hybride'"}},"voiture . thermique . carburant":"'gazole B7 ou B10'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'SUV'","voiture . motorisation":"'hybride'","voiture . thermique . carburant":"'gazole B7 ou B10'"}}}},"alternatives . voiture . SUV . hybride . gazole B7 ou B10 . coûts":{titre:"Coûts annuels",unité:"€/an",valeur:"coûts",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'SUV'"}},"voiture . gabarit":"'SUV'","voiture . motorisation":"'hybride'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'SUV'","voiture . motorisation":"'hybride'"}},"voiture . thermique . carburant":"'gazole B7 ou B10'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'SUV'","voiture . motorisation":"'hybride'","voiture . thermique . carburant":"'gazole B7 ou B10'"}}}},"alternatives . voiture . SUV . hybride . essence E5 ou E10":{titre:"SUV Hybride (Essence)"},"alternatives . voiture . SUV . hybride . essence E5 ou E10 . empreinte":{titre:"Empreinte CO2e",unité:"kgCO2e/an",valeur:"empreinte",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'SUV'"}},"voiture . gabarit":"'SUV'","voiture . motorisation":"'hybride'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'SUV'","voiture . motorisation":"'hybride'"}},"voiture . thermique . carburant":"'essence E5 ou E10'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'SUV'","voiture . motorisation":"'hybride'","voiture . thermique . carburant":"'essence E5 ou E10'"}}}},"alternatives . voiture . SUV . hybride . essence E5 ou E10 . coûts":{titre:"Coûts annuels",unité:"€/an",valeur:"coûts",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'SUV'"}},"voiture . gabarit":"'SUV'","voiture . motorisation":"'hybride'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'SUV'","voiture . motorisation":"'hybride'"}},"voiture . thermique . carburant":"'essence E5 ou E10'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'SUV'","voiture . motorisation":"'hybride'","voiture . thermique . carburant":"'essence E5 ou E10'"}}}},"alternatives . voiture . SUV . hybride . essence E85":{titre:"SUV Hybride (Essence (E85))"},"alternatives . voiture . SUV . hybride . essence E85 . empreinte":{titre:"Empreinte CO2e",unité:"kgCO2e/an",valeur:"empreinte",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'SUV'"}},"voiture . gabarit":"'SUV'","voiture . motorisation":"'hybride'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'SUV'","voiture . motorisation":"'hybride'"}},"voiture . thermique . carburant":"'essence E85'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'SUV'","voiture . motorisation":"'hybride'","voiture . thermique . carburant":"'essence E85'"}}}},"alternatives . voiture . SUV . hybride . essence E85 . coûts":{titre:"Coûts annuels",unité:"€/an",valeur:"coûts",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'SUV'"}},"voiture . gabarit":"'SUV'","voiture . motorisation":"'hybride'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'SUV'","voiture . motorisation":"'hybride'"}},"voiture . thermique . carburant":"'essence E85'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'SUV'","voiture . motorisation":"'hybride'","voiture . thermique . carburant":"'essence E85'"}}}},"alternatives . voiture . SUV . hybride . GPL":{titre:"SUV Hybride (GPL)"},"alternatives . voiture . SUV . hybride . GPL . empreinte":{titre:"Empreinte CO2e",unité:"kgCO2e/an",valeur:"empreinte",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'SUV'"}},"voiture . gabarit":"'SUV'","voiture . motorisation":"'hybride'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'SUV'","voiture . motorisation":"'hybride'"}},"voiture . thermique . carburant":"'GPL'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'SUV'","voiture . motorisation":"'hybride'","voiture . thermique . carburant":"'GPL'"}}}},"alternatives . voiture . SUV . hybride . GPL . coûts":{titre:"Coûts annuels",unité:"€/an",valeur:"coûts",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'SUV'"}},"voiture . gabarit":"'SUV'","voiture . motorisation":"'hybride'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'SUV'","voiture . motorisation":"'hybride'"}},"voiture . thermique . carburant":"'GPL'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'SUV'","voiture . motorisation":"'hybride'","voiture . thermique . carburant":"'GPL'"}}}},"alternatives . voiture . VUL":{titre:"Véhicule utilitaire"},"alternatives . voiture . VUL . thermique":{titre:"Thermique"},"alternatives . voiture . VUL . thermique . gazole B7 ou B10":{titre:"Véhicule utilitaire Thermique (Diesel)"},"alternatives . voiture . VUL . thermique . gazole B7 ou B10 . empreinte":{titre:"Empreinte CO2e",unité:"kgCO2e/an",valeur:"empreinte",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'VUL'"}},"voiture . gabarit":"'VUL'","voiture . motorisation":"'thermique'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'VUL'","voiture . motorisation":"'thermique'"}},"voiture . thermique . carburant":"'gazole B7 ou B10'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'VUL'","voiture . motorisation":"'thermique'","voiture . thermique . carburant":"'gazole B7 ou B10'"}}}},"alternatives . voiture . VUL . thermique . gazole B7 ou B10 . coûts":{titre:"Coûts annuels",unité:"€/an",valeur:"coûts",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'VUL'"}},"voiture . gabarit":"'VUL'","voiture . motorisation":"'thermique'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'VUL'","voiture . motorisation":"'thermique'"}},"voiture . thermique . carburant":"'gazole B7 ou B10'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'VUL'","voiture . motorisation":"'thermique'","voiture . thermique . carburant":"'gazole B7 ou B10'"}}}},"alternatives . voiture . VUL . thermique . essence E5 ou E10":{titre:"Véhicule utilitaire Thermique (Essence)"},"alternatives . voiture . VUL . thermique . essence E5 ou E10 . empreinte":{titre:"Empreinte CO2e",unité:"kgCO2e/an",valeur:"empreinte",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'VUL'"}},"voiture . gabarit":"'VUL'","voiture . motorisation":"'thermique'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'VUL'","voiture . motorisation":"'thermique'"}},"voiture . thermique . carburant":"'essence E5 ou E10'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'VUL'","voiture . motorisation":"'thermique'","voiture . thermique . carburant":"'essence E5 ou E10'"}}}},"alternatives . voiture . VUL . thermique . essence E5 ou E10 . coûts":{titre:"Coûts annuels",unité:"€/an",valeur:"coûts",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'VUL'"}},"voiture . gabarit":"'VUL'","voiture . motorisation":"'thermique'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'VUL'","voiture . motorisation":"'thermique'"}},"voiture . thermique . carburant":"'essence E5 ou E10'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'VUL'","voiture . motorisation":"'thermique'","voiture . thermique . carburant":"'essence E5 ou E10'"}}}},"alternatives . voiture . VUL . thermique . essence E85":{titre:"Véhicule utilitaire Thermique (Essence (E85))"},"alternatives . voiture . VUL . thermique . essence E85 . empreinte":{titre:"Empreinte CO2e",unité:"kgCO2e/an",valeur:"empreinte",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'VUL'"}},"voiture . gabarit":"'VUL'","voiture . motorisation":"'thermique'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'VUL'","voiture . motorisation":"'thermique'"}},"voiture . thermique . carburant":"'essence E85'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'VUL'","voiture . motorisation":"'thermique'","voiture . thermique . carburant":"'essence E85'"}}}},"alternatives . voiture . VUL . thermique . essence E85 . coûts":{titre:"Coûts annuels",unité:"€/an",valeur:"coûts",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'VUL'"}},"voiture . gabarit":"'VUL'","voiture . motorisation":"'thermique'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'VUL'","voiture . motorisation":"'thermique'"}},"voiture . thermique . carburant":"'essence E85'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'VUL'","voiture . motorisation":"'thermique'","voiture . thermique . carburant":"'essence E85'"}}}},"alternatives . voiture . VUL . thermique . GPL":{titre:"Véhicule utilitaire Thermique (GPL)"},"alternatives . voiture . VUL . thermique . GPL . empreinte":{titre:"Empreinte CO2e",unité:"kgCO2e/an",valeur:"empreinte",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'VUL'"}},"voiture . gabarit":"'VUL'","voiture . motorisation":"'thermique'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'VUL'","voiture . motorisation":"'thermique'"}},"voiture . thermique . carburant":"'GPL'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'VUL'","voiture . motorisation":"'thermique'","voiture . thermique . carburant":"'GPL'"}}}},"alternatives . voiture . VUL . thermique . GPL . coûts":{titre:"Coûts annuels",unité:"€/an",valeur:"coûts",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'VUL'"}},"voiture . gabarit":"'VUL'","voiture . motorisation":"'thermique'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'VUL'","voiture . motorisation":"'thermique'"}},"voiture . thermique . carburant":"'GPL'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'VUL'","voiture . motorisation":"'thermique'","voiture . thermique . carburant":"'GPL'"}}}},"alternatives . voiture . VUL . électrique":{titre:"Véhicule utilitaire Électrique"},"alternatives . voiture . VUL . électrique . empreinte":{titre:"Empreinte CO2e",unité:"kgCO2e/an",valeur:"empreinte",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'VUL'"}},"voiture . gabarit":"'VUL'","voiture . motorisation":"'électrique'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'VUL'","voiture . motorisation":"'électrique'"}}}},"alternatives . voiture . VUL . électrique . coûts":{titre:"Coûts annuels",unité:"€/an",valeur:"coûts",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'VUL'"}},"voiture . gabarit":"'VUL'","voiture . motorisation":"'électrique'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'VUL'","voiture . motorisation":"'électrique'"}}}},"alternatives . voiture . VUL . hybride":{titre:"Hybride"},"alternatives . voiture . VUL . hybride . gazole B7 ou B10":{titre:"Véhicule utilitaire Hybride (Diesel)"},"alternatives . voiture . VUL . hybride . gazole B7 ou B10 . empreinte":{titre:"Empreinte CO2e",unité:"kgCO2e/an",valeur:"empreinte",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'VUL'"}},"voiture . gabarit":"'VUL'","voiture . motorisation":"'hybride'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'VUL'","voiture . motorisation":"'hybride'"}},"voiture . thermique . carburant":"'gazole B7 ou B10'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'VUL'","voiture . motorisation":"'hybride'","voiture . thermique . carburant":"'gazole B7 ou B10'"}}}},"alternatives . voiture . VUL . hybride . gazole B7 ou B10 . coûts":{titre:"Coûts annuels",unité:"€/an",valeur:"coûts",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'VUL'"}},"voiture . gabarit":"'VUL'","voiture . motorisation":"'hybride'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'VUL'","voiture . motorisation":"'hybride'"}},"voiture . thermique . carburant":"'gazole B7 ou B10'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'VUL'","voiture . motorisation":"'hybride'","voiture . thermique . carburant":"'gazole B7 ou B10'"}}}},"alternatives . voiture . VUL . hybride . essence E5 ou E10":{titre:"Véhicule utilitaire Hybride (Essence)"},"alternatives . voiture . VUL . hybride . essence E5 ou E10 . empreinte":{titre:"Empreinte CO2e",unité:"kgCO2e/an",valeur:"empreinte",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'VUL'"}},"voiture . gabarit":"'VUL'","voiture . motorisation":"'hybride'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'VUL'","voiture . motorisation":"'hybride'"}},"voiture . thermique . carburant":"'essence E5 ou E10'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'VUL'","voiture . motorisation":"'hybride'","voiture . thermique . carburant":"'essence E5 ou E10'"}}}},"alternatives . voiture . VUL . hybride . essence E5 ou E10 . coûts":{titre:"Coûts annuels",unité:"€/an",valeur:"coûts",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'VUL'"}},"voiture . gabarit":"'VUL'","voiture . motorisation":"'hybride'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'VUL'","voiture . motorisation":"'hybride'"}},"voiture . thermique . carburant":"'essence E5 ou E10'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'VUL'","voiture . motorisation":"'hybride'","voiture . thermique . carburant":"'essence E5 ou E10'"}}}},"alternatives . voiture . VUL . hybride . essence E85":{titre:"Véhicule utilitaire Hybride (Essence (E85))"},"alternatives . voiture . VUL . hybride . essence E85 . empreinte":{titre:"Empreinte CO2e",unité:"kgCO2e/an",valeur:"empreinte",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'VUL'"}},"voiture . gabarit":"'VUL'","voiture . motorisation":"'hybride'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'VUL'","voiture . motorisation":"'hybride'"}},"voiture . thermique . carburant":"'essence E85'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'VUL'","voiture . motorisation":"'hybride'","voiture . thermique . carburant":"'essence E85'"}}}},"alternatives . voiture . VUL . hybride . essence E85 . coûts":{titre:"Coûts annuels",unité:"€/an",valeur:"coûts",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'VUL'"}},"voiture . gabarit":"'VUL'","voiture . motorisation":"'hybride'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'VUL'","voiture . motorisation":"'hybride'"}},"voiture . thermique . carburant":"'essence E85'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'VUL'","voiture . motorisation":"'hybride'","voiture . thermique . carburant":"'essence E85'"}}}},"alternatives . voiture . VUL . hybride . GPL":{titre:"Véhicule utilitaire Hybride (GPL)"},"alternatives . voiture . VUL . hybride . GPL . empreinte":{titre:"Empreinte CO2e",unité:"kgCO2e/an",valeur:"empreinte",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'VUL'"}},"voiture . gabarit":"'VUL'","voiture . motorisation":"'hybride'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'VUL'","voiture . motorisation":"'hybride'"}},"voiture . thermique . carburant":"'GPL'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'VUL'","voiture . motorisation":"'hybride'","voiture . thermique . carburant":"'GPL'"}}}},"alternatives . voiture . VUL . hybride . GPL . coûts":{titre:"Coûts annuels",unité:"€/an",valeur:"coûts",contexte:{"voiture . électrique . consommation électricité":{valeur:"voiture . électrique . consommation estimée",contexte:{"voiture . gabarit":"'VUL'"}},"voiture . gabarit":"'VUL'","voiture . motorisation":"'hybride'","voiture . prix d'achat":{valeur:"voiture . prix d'achat . estimé",contexte:{"voiture . gabarit":"'VUL'","voiture . motorisation":"'hybride'"}},"voiture . thermique . carburant":"'GPL'","voiture . thermique . consommation carburant":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'VUL'","voiture . motorisation":"'hybride'","voiture . thermique . carburant":"'GPL'"}}}},"ngc . transport . voiture":{titre:"voiture",icônes:"🚘",unité:"kgCO2e",description:` +> ℹ️ Cette règle provient du modèle [\`@incubateur-ademe/nosgestesclimat\`](https://github.com/incubateur-ademe/nosgestesclimat). + + +![](https://upload.wikimedia.org/wikipedia/commons/9/9a/Congestion_caused_by_a_road_accident%2C_Algarve%2C_Portugal.jpg) + +La voiture est aujourd'hui en France essentiellement thermique (essence, diesel), bien que l'électrique progresse lentement. + +Pourtant, électrique ou thermique, elle reste un moyen de déplacement très peu efficient : +**il s'agit en moyenne de déplacer un humain de 80kg dans une boîte en métal de 1200kg**. + +Un peu comme si chaque midi, nous faisions à manger pour 10 avant de jeter 90% de la nourriture, ou que nous décidions de chauffer tout le pâté de maisons plutôt que l'intérieur de chacune des 10 maisons. + +Notons finalement qu'il est important de prendre en compte à la fois l'usage (les km parcourus) et la construction de ce véhicule de plus d'une tonne de matériaux divers. +`,variations:[{si:"km = 0",alors:0},{sinon:{variations:[{si:{"est défini":"utilisateur"},alors:{variations:[{si:{"une de ces conditions":["utilisateur = 'propriétaire'","utilisateur = 'régulier non propriétaire'"]},alors:"empreinte calculée"},{si:"utilisateur = 'non régulier'",alors:"empreinte moyenne non régulier"}]}},{sinon:"empreinte moyenne"}]}}]},"ngc . transport . voiture . empreinte calculée":{unité:"kgCO2e",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"(usage + construction) / voyageurs"},"ngc . transport . voiture . empreinte moyenne non régulier":{description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"voiture . empreinte calculée",contexte:{"voiture . gabarit":"'berline'","voiture . motorisation":"'thermique'","voiture . thermique . carburant":"'essence E5 ou E10'","voiture . thermique . consommation aux 100":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'berline'","voiture . motorisation":"'thermique'","voiture . thermique . carburant":"'essence E5 ou E10'","voiture . utilisateur":"'régulier non propriétaire'"}},"voiture . utilisateur":"'régulier non propriétaire'"}},"ngc . transport . voiture . empreinte moyenne":{description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"voiture . empreinte calculée",contexte:{"voiture . gabarit":"'berline'","voiture . motorisation":"'thermique'","voiture . thermique . carburant":"'essence E5 ou E10'","voiture . thermique . consommation aux 100":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'berline'","voiture . motorisation":"'thermique'","voiture . thermique . carburant":"'essence E5 ou E10'","voiture . utilisateur":"'propriétaire'"}},"voiture . utilisateur":"'propriétaire'"}},"ngc . transport . voiture . utilisateur . propriétaire":{titre:"Oui et j'en suis propriétaire",description:` +> ℹ️ Cette règle provient du modèle [\`@incubateur-ademe/nosgestesclimat\`](https://github.com/incubateur-ademe/nosgestesclimat). + + +Vous faites la grande majorité de vos trajets avec un même véhicule que vous possédez.`},"ngc . transport . voiture . utilisateur . régulier non propriétaire":{titre:"Oui mais ce n'est pas la mienne",description:` +> ℹ️ Cette règle provient du modèle [\`@incubateur-ademe/nosgestesclimat\`](https://github.com/incubateur-ademe/nosgestesclimat). + + +Vous utilisez presque systématiquement la voiture d'un ami, de votre grand-mère, ou le même véhicule en autopartage.`},"ngc . transport . voiture . utilisateur . non régulier":{titre:"Non, je change souvent (autopartage, proches, taxi...)",description:` +> ℹ️ Cette règle provient du modèle [\`@incubateur-ademe/nosgestesclimat\`](https://github.com/incubateur-ademe/nosgestesclimat). + + +Vous ne disposez pas de votre propre véhicule et les usages sont tous différents.`},"ngc . transport . voiture . usage":{titre:"Usage de la voiture",unité:"kgCO2e",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"usage au kilomètre * km"},"ngc . transport . voiture . construction":{titre:"Construction de la voiture",unité:"kgCO2e",note:`Pour le moment, nous ne considérons pas l'amortissement complet d'une voiture (c'est-à-dire que nous n'avons pas l'info de l'âge ou le kilométrage complet de la voiture donc sa contruction ne sera jamais nulle). +`,description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",variations:[{si:{"toutes ces conditions":["voiture . utilisateur = 'propriétaire'","km < seuil km"]},alors:"construction au kilomètre * seuil km"},{sinon:"construction au kilomètre * km"}]},"ngc . transport . voiture . usage au kilomètre":{unité:"kgCO2e/km",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"empreinte au kilomètre + base au kilomètre"},"ngc . transport . voiture . empreinte au kilomètre":{description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",variations:[{si:{"est défini":"utilisateur"},alors:{variations:[{si:{"une de ces conditions":["utilisateur = 'propriétaire'","utilisateur = 'régulier non propriétaire'"]},alors:"empreinte au kilomètre calculée"},{si:"utilisateur = 'non régulier'",alors:"empreinte au kilomètre non régulier"}]}},{sinon:"empreinte au kilomètre moyenne"}]},"ngc . transport . voiture . base au kilomètre":{"applicable si":{"toutes ces conditions":[{"est défini":"utilisateur"},{"une de ces conditions":["utilisateur = 'propriétaire'","utilisateur = 'régulier non propriétaire'"]}]},titre:"Entretien et climatisation au kilomètre",unité:"kgCO2e/km",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"entretien pondéré + climatisation"},"ngc . transport . voiture . empreinte au kilomètre calculée":{unité:"kgCO2e/km",note:`Pour la voiture hybride, nous n'avons pour l'instant pas utilisé les valeurs de la base bilan-GES, car elles sont compliquées à interpréter : + - la catégorie "hybride rechargeable" a une empreinte étonnamment faible (du niveau de l'électrique), mais surtout 0 émission à la combustion. Ce serait donc un véhicule essence qui n'utilise pas d'essence à l'usage ? [Un sujet récent] sur le forum de bilan-GES n'explique pas l'incohérence. + - la différence entre Hybride full Prius et Hybride full P2 n'est pas expliquée + - dans ces 2 catégories, il n'y a pas l'entrée de gamme. + +L'étude FNH-Carbone4 pourrait être utilisée pour l'empreinte au km des véhicules hybrides rechargeables. Voici l'hypothèse structurante retenue : + +> Répartition des modes de roulage (thermique / électrique) pour les hybrides : 50% / 50% en 2016 + +Mais on notera la controverse récente sur l'empreinte des véhicules hybrides rechargeable suite à [une étude](https://www.transportenvironment.org/press/les-hybrides-rechargeables-au-cœur-d’un-nouveau-scandale-d’émissions-des-tests-révèlent-des) de Transport & Environnement faisant état d'une empreinte réelle incomparable à l'empreinte annoncée par les constructeurs. + +Nous avons donc pour l'instant retenu le calcul du calculateur MicMac qui est la base de Nos Gestes Climat, dont la source est malheureusement inaccessible : + +> Hybride : enlever 15% aux consommations ci-dessus (source ADEME: http://www2.ademe.fr/servlet/KBaseShow?catid=13655) +`,description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",variations:[{si:"motorisation = 'thermique'",alors:"thermique . empreinte au kilomètre"},{si:"motorisation = 'hybride'",alors:"thermique . empreinte au kilomètre * 0.85"},{si:"motorisation = 'électrique'",alors:"électrique . empreinte au kilomètre"}]},"ngc . transport . voiture . empreinte au kilomètre non régulier":{description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"voiture . empreinte au kilomètre calculée",contexte:{"voiture . gabarit":"'berline'","voiture . motorisation":"'thermique'","voiture . thermique . carburant":"'essence E5 ou E10'","voiture . thermique . consommation aux 100":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'berline'","voiture . motorisation":"'thermique'","voiture . thermique . carburant":"'essence E5 ou E10'","voiture . utilisateur":"'régulier non propriétaire'"}},"voiture . utilisateur":"'régulier non propriétaire'"}},"ngc . transport . voiture . empreinte au kilomètre moyenne":{description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"voiture . empreinte au kilomètre calculée",contexte:{"voiture . gabarit":"'berline'","voiture . motorisation":"'thermique'","voiture . thermique . carburant":"'essence E5 ou E10'","voiture . thermique . consommation aux 100":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'berline'","voiture . motorisation":"'thermique'","voiture . thermique . carburant":"'essence E5 ou E10'","voiture . utilisateur":"'propriétaire'"}},"voiture . utilisateur":"'propriétaire'"}},"ngc . transport . voiture . thermique . empreinte au kilomètre":{titre:"empreinte au km thermique",note:"Cette méthode de calcul, plutôt qu'un barème gabarit -> empreinte au km, permet à l'utilisateur qui connait la consommation moyenne réelle de sa voiture de la saisir pour plus de précision.",unité:"kgCO2e/km",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"consommation au kilomètre * empreinte au litre"},"ngc . transport . voiture . électrique . empreinte au kilomètre":{titre:"empreinte au km électrique",unité:"kgCO2e/km",note:`Nous considérons ici le mix électrique moyen français. La majorité des possesseurs de voitures électriques rechargent leur véhicule chez eux avec une tarification heure creuses, qui est plus avantageuse financièrement et correspond d'ailleurs aux moments où la demande en électricité est moins forte et le mix électrique moins carboné (les centrales gaz ne sont pas sollicitées). +`,description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"consommation au kilomètre * logement . électricité . empreinte au kWh"},"ngc . transport . voiture . motorisation . thermique":{titre:"Thermique (diesel/essence/GPL)",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat)."},"ngc . transport . voiture . motorisation . hybride":{titre:"Hybride",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat)."},"ngc . transport . voiture . motorisation . électrique":{titre:"Électrique",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat)."},"ngc . transport . voiture . thermique . consommation au kilomètre":{unité:"l/km",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"consommation aux 100 / 100 km/centkm"},"ngc . transport . voiture . thermique . empreinte au litre":{description:` +> ℹ️ Cette règle provient du modèle [\`@incubateur-ademe/nosgestesclimat\`](https://github.com/incubateur-ademe/nosgestesclimat). + + +Les empreintes sont disponibles de façon assez détaillée sur [la base carbone](https://bilans-ges.ademe.fr/fr/basecarbone/donnees-consulter/liste-element?recherche=diesel), ici par exemple pour le "diesel". Idem pour "essence". +Pour les retrouver facilement, filtrez par unité "kgCO2e/litre" et par géographie "France continentale". + +À noter que pour le gazole, le FE choisi est la moyenne entre le gazole B7 et le gazole B10. +`,unité:"kgCO2e/l",variations:[{si:"carburant = 'gazole B7 ou B10'",alors:{moyenne:["3.1 kgCO2e/l","3.04 kgCO2e/l"]}},{si:"carburant = 'essence E5 ou E10'",alors:2.7},{si:"carburant = 'essence E85'",alors:1.11},{si:"carburant = 'GPL'",alors:1.86}]},"ngc . transport . voiture . thermique . consommation estimée":{titre:"Consommation estimée voiture",note:`> Si nous avons travaillé les propositions de consommation moyenne, l'idéal au vu de l'impact de cette donnée est bien que l'utilisateur ou l'utilisatrice saisisse sa propre consommation réelle, moyennée sur son usage. + +Pour obtenir nos propositions pour les voitures individuelles, nous avons croisé deux sources de données : + +- Les données moyennes de consommation des véhicules essence et diesel, [fournies par l'ADEME](https://carlabelling.ademe.fr/chiffrescles/r/evolutionConsoMoyenne) +- Les données des "meilleures consommations" par gabarit et par carburant, fournies par [cet article de CAROOM](https://www.caroom.fr/guide/voiture-neuve/comment-choisir/carburant/faible-consommation): + +Nous n'avons pas trouvé d'autre source pour obtenir la consommation moyenne par type de véhicule. Dans l'article de CAROOM, sont donnés les chiffres des meilleures performances par véhicule: + + | | E5 ou E10 | Diesel | % circulation | + |------------------|-----------|--------|---------------| + | Petite | 5,07 | 3,65 | 25,29% | + | Moyenne | 4,70 | 3,75 | 10,30% | + | Berline | 4,70 | 3,75 | 49,81% | + | SUV | 5,08 | 4,14 | 14,60% | + | Moyenne pondérée | 4,85 | 3,78 | | + +D'un autre côté, nous avons les données fournies par l'ADEME qui donnent des consommations moyennes de 6,8 L/100km pour une essence, 5 L/100km pour un diesel. +On remarque bien que les consommations moyennes calculées via les données de CAROOM (4,85 L/100km et 3,78 L/100km) sont bien plus basses que celles +de l'ADEME, ce sont les voitures les plus performantes. + +Nous avons donc retravaillé les chiffres via un ratio (conso moyenne / conso moyenne performante) pour mettre à jour les consommations moyennes par véhicules : +A titre d'exemple, pour une citadine essence, on obtient le chiffre de 7,11 L/100km via la formule suivante : 5,07 / 4,85 * 6,8. + +- Moyennes corrigées (et utilisées dans NGC): + + | | E5 ou E10 | Diesel | % circulation | + |------------------|-----------|--------|---------------| + | Petite | 7,11 | 4,83 | 25,29% | + | Moyenne | 6,59 | 4,96 | 10,30% | + | Berline | 6,59 | 4,96 | 49,81% | + | SUV | 7,13 | 5,48 | 14,60% | + | Moyenne pondérée | 6,80 | 5,00 | | + +Pour les véhicules utilitaires légers, nous avons utilisé cette source : +- [Consommation des véhicules utilitaires légers](https://www.webfleet.com/fr_fr/webfleet/blog/consommation-utilitaire/) + +> Nous avons bien noté que la consomation d'une citadine essence est plus élevée que celle d'une berline, ce qui semble contre-intuitif mais nous n'avons pas d'autres sources pour l'instant. + +Enfin, pour obtenir les consommations des véhicules roulant à l'essence E85, nous avons appliqué une **surconsommation de 25%** par rapport aux véhicules essence, chiffre qui semble faire consensus. + +De même, pour obtenir les consommations des véhicules roulant au GPL, nous avons appliqué une **surconsommation de 15%** par rapport aux véhicules essence, sauf pour le GPL, véhicule pour lequel nous avons déjà la données. +`,unité:"l/centkm",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",variations:[{si:"gabarit = 'petite'",alors:{variations:[{si:"thermique . carburant = 'gazole B7 ou B10'",alors:"petite diesel"},{si:"thermique . carburant = 'essence E5 ou E10'",alors:"petite essence"},{si:"thermique . carburant = 'essence E85'",alors:"petite essence * 1.25"},{si:"thermique . carburant = 'GPL'",alors:"petite essence * 1.15"}]}},{si:"gabarit = 'moyenne'",alors:{variations:[{si:"thermique . carburant = 'gazole B7 ou B10'",alors:"moyenne diesel"},{si:"thermique . carburant = 'essence E5 ou E10'",alors:"moyenne essence"},{si:"thermique . carburant = 'essence E85'",alors:"moyenne essence * 1.25"},{si:"thermique . carburant = 'GPL'",alors:"moyenne essence * 1.15"}]}},{si:"gabarit = 'VUL'",alors:{variations:[{si:"thermique . carburant = 'gazole B7 ou B10'",alors:"VUL diesel"},{si:"thermique . carburant = 'essence E5 ou E10'",alors:"VUL essence"},{si:"thermique . carburant = 'essence E85'",alors:"VUL essence * 1.25"},{si:"thermique . carburant = 'GPL'",alors:13}]}},{si:"gabarit = 'berline'",alors:{variations:[{si:"thermique . carburant = 'gazole B7 ou B10'",alors:"moyenne diesel"},{si:"thermique . carburant = 'essence E5 ou E10'",alors:"moyenne essence"},{si:"thermique . carburant = 'essence E85'",alors:"moyenne essence * 1.25"},{si:"thermique . carburant = 'GPL'",alors:"moyenne essence * 1.15"}]}},{si:"gabarit = 'SUV'",alors:{variations:[{si:"thermique . carburant = 'gazole B7 ou B10'",alors:"SUV diesel"},{si:"thermique . carburant = 'essence E5 ou E10'",alors:"SUV essence"},{si:"thermique . carburant = 'essence E85'",alors:"SUV essence * 1.25"},{si:"thermique . carburant = 'GPL'",alors:"SUV essence * 1.15"}]}}]},"ngc . transport . voiture . thermique . consommation estimée . petite diesel":{titre:"Consommation moyenne petite voiture diesel",unité:"l/centkm",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:4.83},"ngc . transport . voiture . thermique . consommation estimée . petite essence":{titre:"Consommation moyenne petite voiture essence",unité:"l/centkm",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:7.11},"ngc . transport . voiture . thermique . consommation estimée . moyenne diesel":{titre:'Consommation moyenne voiture "moyenne" diesel',unité:"l/centkm",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:4.96},"ngc . transport . voiture . thermique . consommation estimée . moyenne essence":{titre:'Consommation moyenne voiture "moyenne" essence',unité:"l/centkm",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:6.59},"ngc . transport . voiture . thermique . consommation estimée . VUL diesel":{titre:"Consommation moyenne VUL diesel",unité:"l/centkm",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:7.7},"ngc . transport . voiture . thermique . consommation estimée . VUL essence":{titre:"Consommation moyenne VUL essence",unité:"l/centkm",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:9},"ngc . transport . voiture . thermique . consommation estimée . SUV diesel":{titre:"Consommation moyenne SUV diesel",unité:"l/centkm",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:5.48},"ngc . transport . voiture . thermique . consommation estimée . SUV essence":{titre:"Consommation moyenne SUV essence",unité:"l/centkm",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:7.13},"ngc . transport . voiture . gabarit . petite":{titre:"Petite",description:` +> ℹ️ Cette règle provient du modèle [\`@incubateur-ademe/nosgestesclimat\`](https://github.com/incubateur-ademe/nosgestesclimat). + + +Citadine type Zoé, Fiat 500`},"ngc . transport . voiture . gabarit . moyenne":{titre:"Moyenne",description:` +> ℹ️ Cette règle provient du modèle [\`@incubateur-ademe/nosgestesclimat\`](https://github.com/incubateur-ademe/nosgestesclimat). + + +Modèle au dessus de la petite citadine, type Mégane, Golf`},"ngc . transport . voiture . gabarit . VUL":{titre:"Véhicule utilitaire",description:` +> ℹ️ Cette règle provient du modèle [\`@incubateur-ademe/nosgestesclimat\`](https://github.com/incubateur-ademe/nosgestesclimat). + + +Camionette de type Kangoo ou Partner jusqu'au Trafic et Vito`},"ngc . transport . voiture . gabarit . berline":{titre:"Berline",description:` +> ℹ️ Cette règle provient du modèle [\`@incubateur-ademe/nosgestesclimat\`](https://github.com/incubateur-ademe/nosgestesclimat). + + +Une voiture longue, type 308, Tesla Model 3, Audi A3`},"ngc . transport . voiture . gabarit . SUV":{titre:"SUV",description:` +> ℹ️ Cette règle provient du modèle [\`@incubateur-ademe/nosgestesclimat\`](https://github.com/incubateur-ademe/nosgestesclimat). + + +"Sport utility vehicle", type 4x4 urbain +`},"ngc . transport . voiture . thermique . carburant . gazole B7 ou B10":{titre:"Gazole (B7 ou B10)",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat)."},"ngc . transport . voiture . thermique . carburant . essence E5 ou E10":{titre:"Essence (E5 ou E10)",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat)."},"ngc . transport . voiture . thermique . carburant . essence E85":{titre:"Essence E85 (biocarburants)",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat)."},"ngc . transport . voiture . thermique . carburant . GPL":{titre:"GPL (Gaz de Pétrole Liquéfiés)",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat)."},"ngc . transport . voiture . électrique . consommation au kilomètre":{unité:"kWh/km",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"consommation aux 100 / 100 km/centkm"},"ngc . logement . électricité . empreinte au kWh":{description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",variations:[{si:"métrique = 'carbone'",alors:"intensité carbone équivalente"},{si:"métrique = 'eau'",alors:"empreinte eau mix électrique"}]},"ngc . transport . voiture . électrique . consommation estimée":{variations:[{si:"gabarit = 'petite'",alors:15},{si:"gabarit = 'moyenne'",alors:17},{si:"gabarit = 'berline'",alors:25},{si:"gabarit = 'SUV'",alors:25},{si:"gabarit = 'VUL'",alors:25}],unité:"kWh/centkm",note:"Données moyennes fournies par le service Transport et Mobilité de l'ADEME.",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat)."},"ngc . métrique":{"par défaut":"'carbone'",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).","une possibilité":{"choix obligatoire":"oui",possibilités:["carbone","eau"]}},"ngc . logement . électricité . intensité carbone équivalente":{description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",variations:[{si:"photovoltaique . présent",alors:{variations:[{si:"photovoltaique . production >= consommation totale",alors:"photovoltaique . intensité carbone"},{si:"photovoltaique . production < consommation totale",alors:{somme:["(photovoltaique . production / consommation totale) * photovoltaique . intensité carbone","((consommation totale - photovoltaique . production) / consommation totale) * réseau . intensité carbone"]}}]}},{sinon:"réseau . intensité carbone"}]},"ngc . logement . électricité . empreinte eau mix électrique":{unité:"l/kWh",note:`On tente ici une approche pour estimer l'empreinte eau du mix électrique français en utilisant le papier [Water footprint of bio-energy and other primary energy carriers](https://www.waterfootprint.org/resources/Report29-WaterFootprintBioenergy.pdf) (Gerbens-Leenes, Winnie & Hoekstra, Arjen & Meer, Th.H., 2008) qui donne l'équivalent eau (eau verte, bleue, grise) pour chaque source d'énergie. + +Nous utilisons les données de [Electricity map](https://app.electricitymaps.com/map) (affichage par année, 2023) pour obtenir la composition du mix Français. +Curieusement, la composition n'atteint pas 100% ..? + +| | part | m3/GJ | l/kWh | | +| --------- | ----------- | ----- | ------- | ------------- | +| Nucléaire | 63,65% | 0,086 | 0,31 | | +| Biomasse | 1,24% | 24,2 | 87,12 | (Netherlands) | +| Charbon | 0,17% | 0,164 | 0,59 | | +| Eolien | 9,56% | 0 | 0,00 | | +| Solaire | 4,29% | 0,265 | 0,95 | | +| Hydro | 10,11% | 22,3 | 80,28 | | +| Gaz | 5,58% | 0,109 | 0,39 | | +| Fioul | 0,33% | 1,058 | 3,81 | | +| | **94,93%** | | **9,47** | | + + +Néanmoins, l'utilisation de cette étude pour le calcul de l'empreinte eau dans Nos Gestes Climat est discutable dans la mesure ou cette étude n'utilise pas la méthode AWARE pour le calcul de l'empreinte eau. Ce résultat est donc à mettre à jour dès que possible. + +Par ailleurs, nous avons eu accès, par l'intermédiaire d'Ecobalyse, à des données d'empreinte eau du mix électrique plus récentes (Ecoinvent) mais les accords de publication de données non aggrégées telles que celle-ci ne nous permettent pas de les utiliser pour le moment. +`,description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:9.47},"ngc . métrique . carbone":{description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat)."},"ngc . métrique . eau":{description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat)."},"ngc . logement . électricité . consommation totale":{description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",somme:["photovoltaique . autoconsommation","réseau . consommation"]},"ngc . logement . électricité . photovoltaique . intensité carbone":{unité:"kgCO2e/kWh",note:"D'après l'ADEME, nous considérons que la zone H1C (est de la France) est représentative d'un logement moyen standard en France, ce qui correspond à une empreinte moyenne de 29,1 gCO2e / kWh produit.",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:.0291},"ngc . logement . électricité . réseau . intensité carbone":{unité:"kgCO2e/kWh",description:` +> ℹ️ Cette règle provient du modèle [\`@incubateur-ademe/nosgestesclimat\`](https://github.com/incubateur-ademe/nosgestesclimat). + + +Nous utilisons ici l'empreinte moyenne du mix de la région de simulation. + +Nous pourrions faire mieux, en séparant la partie chauffage de l'air et le reste de la consommation du logement, car le chauffage est utilisé principalement l'hiver, au moment où les centrales à charbon et gaz tournent davantage et empirent l'empreinte du mix. Mais cela demanderait pour les foyers chauffés à l'électricité de trouver ces deux valeurs et les renseigner, chose peu évidente. + +> A titre d'exemple, l'intensité carbone du chauffage résidentiel est ainsi définie à 80gCO2e/kWh en France par la RE2020, [source](https://www.batiactu.com/edito/facteur-energie-primaire-contenu-carbone-electricite-58485.php). +`,valeur:"commun . intensité électricité"},"ngc . logement . type . maison":{description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat)."},"ngc . logement . type . appartement":{description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat)."},"ngc . logement . électricité . photovoltaique . production estimée via la puissance installée . facteur":{unité:"kWh/Wc",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:1.3},"ngc . parc français . surface moyenne appartement":{titre:"Surface moyenne par appartement",unité:"m2",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"surface totale appartements / nombre appartements"},"ngc . parc français . surface moyenne maison":{titre:"Surface moyenne par maison",unité:"m2",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"surface totale maisons / nombre maisons"},"ngc . parc français . surface moyenne":{titre:"Surface moyenne par logement",unité:"m2",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"surface totale / nombre logements"},"ngc . parc français . surface totale appartements":{unité:"m2",note:"Surface totale habitable en France",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:819081251},"ngc . parc français . nombre appartements":{titre:"Nombre d'appartements en France",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:13142142},"ngc . parc français . surface totale maisons":{unité:"m2",note:"Surface totale habitable en France",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:1887756548},"ngc . parc français . nombre maisons":{titre:"Nombre de maisons en France",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:16699885},"ngc . parc français . surface totale":{unité:"m2",note:"Surface totale habitable en France",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"surface totale appartements + surface totale maisons"},"ngc . parc français . nombre logements":{titre:"Nombre de logements en France",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"nombre appartements + nombre maisons"},"ngc . logement . électricité . photovoltaique . autoconsommation":{description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"production * part autoconsommation"},"ngc . logement . électricité . réseau . consommation par défaut":{titre:"Consommation par défaut électricité",note:`Dans l'état actuel du test NGC, la question du chauffage est posée après la question de la consommation d'électricité. Or, la valeur par défaut de cette question dépend du mode de chauffage. Si l'utilisateur répond "Je ne sais pas" à cette question, il y a des chances que la valeur attribuée change après coup. +`,description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",variations:[{si:"logement . chauffage . choix utilisateur = non",alors:"surface * (parc français . consommation électricité autre par m2 + (parc français . surface . part électricité * parc français . chauffage . consommation électricité par m2))"},{si:{"toutes ces conditions":["logement . chauffage . choix utilisateur = oui",{"est défini":"logement . chauffage . électricité . présent"},{"est défini":"logement . chauffage . PAC . présent"},"logement . chauffage . électricité . présent","logement . chauffage . PAC . présent"]},alors:"surface * (parc français . consommation électricité autre par m2 + parc français . chauffage . consommation électricité par m2)"},{si:{"toutes ces conditions":["logement . chauffage . choix utilisateur = oui",{"est défini":"logement . chauffage . électricité . présent"},{"est défini":"logement . chauffage . PAC . présent"},"logement . chauffage . électricité . présent","logement . chauffage . PAC . présent = non"]},alors:"surface * (parc français . consommation électricité autre par m2 + parc français . chauffage . consommation électricité hors PAC par m2)"},{si:{"toutes ces conditions":["logement . chauffage . choix utilisateur = oui",{"est défini":"logement . chauffage . électricité . présent"},{"est défini":"logement . chauffage . PAC . présent"},"logement . chauffage . électricité . présent = non","logement . chauffage . PAC . présent"]},alors:"surface * (parc français . consommation électricité autre par m2 + parc français . chauffage . consommation électricité PAC par m2)"},{sinon:"surface * parc français . consommation électricité autre par m2"}]},"ngc . logement . chauffage . choix utilisateur":{titre:"Choix utilisateur pour le chauffage",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).","une de ces conditions":[{"est défini":"électricité . présent"},{"est défini":"PAC . présent"},{"est défini":"gaz . présent"},{"est défini":"réseau de chaleur . présent"},{"est défini":"bouteille gaz . présent"},{"est défini":"citerne propane . présent"},{"est défini":"fioul . présent"},{"est défini":"bois . présent"}]},"ngc . parc français . consommation électricité autre par m2":{unité:"kWh/m2",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"consommation électricité autre / surface totale"},"ngc . parc français . surface . part électricité":{description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"électricité / surface"},"ngc . parc français . chauffage . consommation électricité par m2":{note:"électricité + pompe à chaleur",unité:"kWh/m2",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"consommation électricité / surface . électricité"},"ngc . parc français . chauffage . consommation électricité hors PAC par m2":{unité:"kWh/m2",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"consommation électricité hors PAC / surface . électricité hors PAC"},"ngc . parc français . chauffage . consommation électricité PAC par m2":{unité:"kWh/m2",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"consommation électricité PAC / surface . électricité PAC"},"ngc . parc français . consommation électricité autre":{note:"spécifique + climatisation",unité:"kWh",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"74810546534 + 2000000000"},"ngc . parc français . surface . électricité":{unité:"m2",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:980364088},"ngc . parc français . surface":{titre:"Surface totale par somme des énergies",note:"on considère ici toutes les sources d'énergie servant à chauffer le parc français.",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",somme:["électricité","gaz","fioul","bois","réseau de chaleur","GPL"]},"ngc . parc français . surface . gaz":{unité:"m2",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:957251338},"ngc . parc français . surface . fioul":{unité:"m2",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:296898719},"ngc . parc français . surface . bois":{unité:"m2",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:319546177},"ngc . parc français . surface . réseau de chaleur":{unité:"m2",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:97385759},"ngc . parc français . surface . GPL":{unité:"m2",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:47600352},"ngc . parc français . chauffage . consommation électricité":{note:"électricité et pompe à chaleur",unité:"kWh",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"(chauffage + ecs) + cuisson"},"ngc . parc français . chauffage . consommation électricité . chauffage":{titre:"conso électrique liée au chauffage",unité:"kWh",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:54859667824},"ngc . parc français . chauffage . consommation électricité . ecs":{titre:"conso électrique liée à l'eau chaude sanitaire",unité:"kWh",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:23584851016},"ngc . parc français . chauffage . consommation électricité . cuisson":{titre:"conso électrique liée à la cuisson",unité:"kWh",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:11416870555},"ngc . parc français . chauffage . consommation électricité hors PAC":{unité:"kWh",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"consommation électricité hors PAC . chauffage + (surface . part hors PAC électricité * (consommation électricité . ecs + consommation électricité . cuisson))"},"ngc . parc français . surface . électricité hors PAC":{unité:"m2",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"surface . électricité - surface . électricité PAC"},"ngc . parc français . chauffage . consommation électricité hors PAC . chauffage":{titre:"conso électrique hors PAC liée au chauffage",unité:"kWh",note:"Cette consommation est compris dans `consommation électricité . chauffage`.",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"consommation électricité . chauffage - consommation électricité PAC . chauffage"},"ngc . parc français . surface . part hors PAC électricité":{description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"surface . électricité hors PAC / surface . électricité"},"ngc . parc français . chauffage . consommation électricité PAC . chauffage":{titre:"conso électrique via PAC liée au chauffage",unité:"kWh",note:"Cette consommation est compris dans `consommation électricité . chauffage`.",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:14077969585},"ngc . parc français . surface . électricité PAC":{unité:"m2",note:"Cette surface est compris dans `surface . électricité`.",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:301589218},"ngc . parc français . chauffage . consommation électricité PAC":{unité:"kWh",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"consommation électricité PAC . chauffage + (surface . part PAC électricité * (consommation électricité . ecs + consommation électricité . cuisson))"},"ngc . parc français . surface . part PAC électricité":{description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"surface . électricité PAC / surface . électricité"},"ngc . commun . intensité électricité":{titre:"Intensité carbone du mix électrique français",description:` +> ℹ️ Cette règle provient du modèle [\`@incubateur-ademe/nosgestesclimat\`](https://github.com/incubateur-ademe/nosgestesclimat). + + + +> ℹ️ Cette règle provient du modèle [\`@incubateur-ademe/publicodes-commun\`](https://github.com/incubateur-ademe/publicodes-commun). + + +Intensité moyenne, tous types de consommations confondues, année 2022.`,unité:"kgCO2e/kWh",note:`Ici, on parle du mix électrique de consommation. +Le chiffre est issu de la Base Empreinte (Electricité/2022 - mix moyen/consommation) dont la méthodologie est décrite dans la [documentation](https://prod-basecarbonesolo.ademe-dri.fr/documentation/UPLOAD_DOC_FR/). +La v2.6 de MicMac donnait une valeur de 12.4gCO2e/kWh pour les fournisseurs d'électricité "verte", mais cette valeur semble correspondre à un calcul théorique sur l'année, et non pas à un calcul réel, minute par minute. +`,valeur:.052},"ngc . transport . voiture . entretien pondéré":{unité:"kgCO2e/km",note:`Plusieurs sources s'accordent pour dire que l'entretien d'un véhicule électrique est inférieur à celui d'un véhicule thermique de 25%. Comme [celle-ci](https://izi-by-edf.fr/blog/voiture-hybride-entretien/). + +Pour ce qui est d'un véhicule hybride, son entretien se situe entre celui d'un véhicule électrique et celui d'un véhicule thermique. Cela dépend de l'utilisation du moteur électrique ou thermique. +Nous choisissons de partir sur une hypothèse conservatrice de -10% de coût d'entretien par rapport aux véhicules thermiques. +`,description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",variations:[{si:"motorisation = 'thermique'",alors:"entretien"},{si:"motorisation = 'hybride'",alors:"entretien * 0.9"},{si:"motorisation = 'électrique'",alors:"entretien * 0.75"}]},"ngc . transport . voiture . climatisation":{unité:"kgCO2e/km",note:`L'idée ici est de prendre en compte une part des émissions liées aux gaz fluorés issus des climatisations des véhicules +en France via le total des émissions dues à ces gaz sur le secteur du transport (voitures et VUL diesel, essence, GNV, GPL, électrique). +`,description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"(émissions gaz fluorés transport / nombre véhicules circulation) / transport . voiture . km annuels moyen"},"ngc . transport . voiture . entretien":{unité:"kgCO2e/km",note:`Dans le poste G45, nous prenons la part Entretien et réparation de véhicules automobiles (7%). +Nous le divisons par le nombre de véhicules en circulation, puis par 12200 km (la moyenne de km effectués par véhicule) pour obtenir une empreinte en kgCO2e / km. +`,description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"(((empreinte branche . G45 * 1000000 kgCO2e/ktCO2e) * 0.07) / nombre véhicules circulation) / transport . voiture . km annuels moyen"},"ngc . empreinte branche . G45":{description:` +> ℹ️ Cette règle provient du modèle [\`@incubateur-ademe/nosgestesclimat\`](https://github.com/incubateur-ademe/nosgestesclimat). + + +Commerce et réparation d'automobiles et de motocycles + +> La description ci-dessous correspond à la part de chaque sous-classe de la branche G45 (en % de chiffre d'affaire) + +- **Commerce de véhicules automobiles (67%)** + - Commerce de voitures et de véhicules automobiles légers (94%) + - Commerce d'autres véhicules automobiles (6%) +- **Entretien et réparation de véhicules automobiles (8%)** +- **Commerce d'équipements automobiles (24%)** + - Commerce de gros d'équipements automobiles (67%) + - Commerce de détail d'équipements automobiles (33%) +- **Commerce et réparation de motocycles (2%)**`,titre:"Commerce et réparation d'automobiles et de motocycles (France)",unité:"ktCO2e",valeur:6988},"ngc . transport . voiture . nombre véhicules circulation":{note:`Ce chiffre concerne les véhicules en circulation (voitures et VUL). +Il est issu des [Données sur le parc automobile français au 1er janvier 2023](https://www.statistiques.developpement-durable.gouv.fr/donnees-sur-le-parc-automobile-francais-au-1er-janvier-2023?rubrique=&dossier=1348). + +Nous considérons néanmoins les données pour l'année 2022 car la distance moyenne parcourue par véhicule n'est dispo que pour 2022. + +Nous avons choisi de ne pas prendre en compte la catégorisation pro/perso dans de nombreux véhicules professionels sont utilisés également pour les trajets perso et domicile travail (que nous prenons en compte dans le calculateur). +`,description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"véhicules légers + VUL"},"ngc . transport . voiture . km annuels moyen":{unité:"km",note:`Ce chiffre concerne les véhicules en circulation (voitures et VUL). +Il est issu des [Données sur le parc automobile français au 1er janvier 2023](https://www.statistiques.developpement-durable.gouv.fr/donnees-sur-le-parc-automobile-francais-au-1er-janvier-2023?rubrique=&dossier=1348). + +Nous considérons néanmoins les données pour l'année 2022 car la distance moyenne parcourue par véhicule n'est dispo que pour 2022. + +Nous avons choisi de ne pas prendre en compte la catégorisation pro/perso dans de nombreux véhicules professionels sont utilisés également pour les trajets perso et domicile travail (que nous prenons en compte dans le calculateur). +`,description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",somme:["(km annuels moyen . véhicules légers * nombre véhicules circulation . véhicules légers) / nombre véhicules circulation","(km annuels moyen . VUL * nombre véhicules circulation . VUL) / nombre véhicules circulation"]},"ngc . transport . voiture . nombre véhicules circulation . véhicules légers":{note:`Ce chiffre est issu des [Données sur le parc automobile français au 1er janvier 2023](https://www.statistiques.developpement-durable.gouv.fr/donnees-sur-le-parc-automobile-francais-au-1er-janvier-2023?rubrique=&dossier=1348). + +Nous considérons néanmoins les données pour l'année 2022 car la distance moyenne parcourue par véhicule n'est dispo que pour 2022. +`,description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:38814659},"ngc . transport . voiture . nombre véhicules circulation . VUL":{note:`Ce chiffre est issu des [Données sur le parc automobile français au 1er janvier 2023](https://www.statistiques.developpement-durable.gouv.fr/donnees-sur-le-parc-automobile-francais-au-1er-janvier-2023?rubrique=&dossier=1348). + +Nous considérons néanmoins les données pour l'année 2022 car la distance moyenne parcourue par véhicule n'est dispo que pour 2022. +`,description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:6384963},"ngc . transport . voiture . km annuels moyen . véhicules légers":{unité:"km",note:`Ce chiffre concerne les véhicules en circulation (voitures et VUL). +Il est issu des [Données sur le parc automobile français au 1er janvier 2023](https://www.statistiques.developpement-durable.gouv.fr/donnees-sur-le-parc-automobile-francais-au-1er-janvier-2023?rubrique=&dossier=1348). + +Nous considérons néanmoins les données pour l'année 2022 car la distance moyenne parcourue par véhicule n'est dispo que pour 2022. +`,description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:11957},"ngc . transport . voiture . km annuels moyen . VUL":{unité:"km",note:`Ce chiffre concerne les véhicules en circulation (voitures et VUL). +Il est issu des [Données sur le parc automobile français au 1er janvier 2023](https://www.statistiques.developpement-durable.gouv.fr/donnees-sur-le-parc-automobile-francais-au-1er-janvier-2023?rubrique=&dossier=1348). + +Nous considérons néanmoins les données pour l'année 2022 car la distance moyenne parcourue par véhicule n'est dispo que pour 2022. +`,description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:13793},"ngc . transport . voiture . climatisation . émissions gaz fluorés transport":{titre:"Emissions nationales dûes aux climatisations des voitures et VUL",unité:"kgCO2e",note:`Ce chiffre provient de l'étude [SECTEN](https://www.citepa.org/fr/secten/) (le rapport de référence sur les émissions de gaz à effet de serre et de polluants atmosphériques en France). + +D'après l'excel [Données par substance de gaz à effet de serre (GES) édition 2023, onglet "GF-UE_total"](https://www.citepa.org/wp-content/uploads/publications/secten/2023/Citepa_gaz_a_effet_de_serre_v2.zip), +les émissions de gaz fluorés pour le secteur du transport (provenant des équipements de réfrigération et d'air conditionné, utilisant des halocarbures ou du SF6), sont de 1374 ktCO₂e. +`,description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:1374e6},"ngc . transport . voiture . construction . seuil km":{plafond:"voiture . km annuels moyen",unité:"km",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"voiture . durée de vie en km / durée de vie moyenne"},"ngc . transport . voiture . construction au kilomètre":{unité:"kgCO2e/km",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"barème construction * amortissement"},"ngc . transport . voiture . durée de vie en km":{unité:"km",note:`Nous nous appuyons sur le référentiel (durée de vie, kilométrage) que reprend la [plateforme automobile de préconisations européennes](https://pfa-auto.fr/wp-content/uploads/2023/04/DT_Me%CC%81thodologie_2023_V15_FRANCAIS.pdf), avec les segments suivants : + +- Gabarit "petit" : correspondant au segment A, soit 150000 km +- Gabarit "moyen" : correspondant au segment B ou C, soit 225000 km +- Gabarit "VUL" : correspondant au segment CDV (Car-Derived Vehicle), soit 270000 km +- Gabarit "berline" : correspondant au segment B ou C, soit 225000 km +- Gabarit "SUV" : correspondant au segment E ou F, soit 270000 km + +Pour le moment, nous ne faisons pas la différence entre thermique et électrique. C'est une hypothèse très forte. +`,description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",variations:[{si:"gabarit = 'petite'",alors:15e4},{si:{"une de ces conditions":["gabarit = 'moyenne'","gabarit = 'berline'"]},alors:225e3},{sinon:27e4}]},"ngc . transport . voiture . durée de vie moyenne":{note:`On considère que l'âge moyen d'une voiture qui part à la casse est de 20 ans. Néanmoins, c'est une hypothèse forte car on peut légitimement penser qu'une voiture électrique possède une durée de vie plus longue qu'une voiture thermique. Il faudrait cependant considérer une valeur plus importante également pour la durée de vie en km. +`,description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:20},"ngc . transport . voiture . barème construction":{unité:"kgCO2e",description:` +> ℹ️ Cette règle provient du modèle [\`@incubateur-ademe/nosgestesclimat\`](https://github.com/incubateur-ademe/nosgestesclimat). + + +![](https://i.imgur.com/uIlZcEjl.jpg) + +Une voiture est un gros, très gros objet, qui pèse souvent plus d'une tonne et demie. En conséquence, sa construction a une empreinte importante. + +En particulier, la construction d'une voiture électrique de gamme équivalente à une thermique émet plus de gaz à effet de serre. C'est notamment dû à la batterie et son poids important. + +Malgré cela, en France, sur la durée de vie de la voiture et donc les km parcourus, le choix de la voiture électrique est nettement mieux pour le climat. + +Mieux, mais loin d'être faible ! Aujourd'hui, il ne s'agit plus seulement de comparer des solutions techniques entre elles, il s'agit d'évaluer ses achats par rapport aux objectifs climat. +`,note:`Les données autour des émissions liées à la fabrication de véhicules sont nombreuses et variées. La première approche utilisait l'étude [FNH-Carbone4](https://github.com/betagouv/ecolab-data/files/5945898/vehicule_electrique_rapport.pdf) qui propose des facteurs d'émissions pour la construction pour 2 gabarits, en distinguant les véhicules thermiques, électriques et hybrides. Certaines données pour le véhicules paraissaient incohérentes, et nous avions besoin, d'un point de vue méthodologique, de plus de finesse dans le calcul de l'empreinte des véhicules électriques. + +C'est pouquoi, désormais, nous adoptons l'approche suivante: + +- Pour les véhicules thermiques, nous utilisons les données de la Base Empreinte de l'ADEME donnant une valeur de 4,5 kgCO2e/kg pour la construction d'une voiture. Nous appliquons ce facteur à la masse de la voiture pour obtenir l'empreinte de la construction, masse étant déterminée par le gabarit du véhicule. +- Pour les véhicules électriques, nous calculons l'empreinte de la batterie en fonction de sa capacité, puis nous ajoutons l'empreinte de la construction d'une voiture thermique de gamme équivalente. +- Pour les véhicules hybrides, nous utilisons les mêmes données que pour les véhicules électriques (hypothèse forte, voir note sur le barème hybride). +`,variations:[{si:"motorisation = 'thermique'",alors:"barème thermique"},{si:"motorisation = 'électrique'",alors:"barème électrique"},{si:"motorisation = 'hybride'",alors:"barème hybride"}]},"ngc . transport . voiture . amortissement":{description:` +> ℹ️ Cette règle provient du modèle [\`@incubateur-ademe/nosgestesclimat\`](https://github.com/incubateur-ademe/nosgestesclimat). + + +Les discussions ont été animées sur l'amortissement de la voiture. Précédemment, dans le but de décourager l'achat neuf, un amortissement non linéaire avait été imaginé, fortement dégressif dans le temps, sur 10 ans. +Cet amortissement non linéaire avait le mérite de décourager l'achat, et de bien faire comprendre à l'utilisateur qu'une grande partie de l'empreinte du véhicule est liée à sa production, donc à l'achat neuf. + +Mais cet amortissement non linéaire n'était pas évident à comprendre pour les utilisateurs, et manquait son objectif pédagogique. +Par ailleurs, il occasionnait un double-discours dans Nos Gestes Climat, car dans les actions proposées aux propriétaires de voitures, nous proposons l'achat d'un véhicule électrique, or celui-ci est fortement pénalisant s'il est acheté neuf dans l'empreinte carbone individuelle. + +Enfin, il était, dans le simulateur Nos Gestes Climat, une exception : tous les autres biens amortis le sont de manière linéaire (l'empreinte de construction est divisée par la durée de vie du bien). + +Nous avions donc fait le choix de revenir pour la voiture à un amortissement linéaire sur la durée de vie de la voiture, une durée de vie en années. + +Mais ce fonctionnement ne nous convenait toujours pas : en effet, elle pénalisait beaucoup les petits rouleurs, et ne paraissait pas très juste par rapport à la réalité d'un véhicule, dont la durée de vie s'exprime plutôt en km. + +C'est donc, finalement, ce choix-là que nous avons fait : l'amortissement du véhicule est fonction du nombre de km parcourus, au regard du nombre de km maximal correspondant au gabarit du véhicule. +`,valeur:"1 / durée de vie en km"},"ngc . transport . voiture . barème construction . barème thermique":{unité:"kgCO2e",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",variations:[{si:"gabarit = 'petite'",alors:"empreinte par kg * gabarit . petite . poids"},{si:"gabarit = 'moyenne'",alors:"empreinte par kg * gabarit . moyenne . poids"},{si:"gabarit = 'VUL'",alors:"empreinte par kg * gabarit . VUL . poids"},{si:"gabarit = 'berline'",alors:"empreinte par kg * gabarit . berline . poids"},{si:"gabarit = 'SUV'",alors:"empreinte par kg * gabarit . SUV . poids"}]},"ngc . transport . voiture . barème construction . barème électrique":{unité:"kgCO2e",note:`La construction d'une voiture électrique émet plus de gaz à effet de serre qu'une voiture thermique de gamme équivalente. +Cela est dû à la production de la batterie, qui est très énergivore et à une empreinte carbone importante. + +> Ce surplus d'émissions est d'environ +50% (mais varie d'environ +20% à plus d'une multiplication par 2 selon les études). +https://bonpote.com/la-voiture-electrique-solution-ideale-pour-le-climat/ +`,description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"barème thermique + batterie"},"ngc . transport . voiture . barème construction . barème hybride":{unité:"kgCO2e",note:`On fait l'hypothèse forte que la construction d'un véhicule hybride correspond à l'empreinte d'un véhicule électrique équipé d'une petite batterie. Néanmoins, le calcul est plus complexe, notamment car le type de véhicule hybride (rechargeable ou non) sur la composition de la voiture. On a également 2 moteurs... +`,description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"barème thermique + batterie"},"ngc . transport . voiture . barème construction . barème thermique . empreinte par kg":{unité:"kgCO2e/kg",note:"Facteur d'émission issu de la Base Empreinte.",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:4.5},"ngc . transport . voiture . gabarit . petite . poids":{unité:"kg",note:"Les valeurs de poids sont tirées du simulateur [carculator](https://carculator.readthedocs.io/en/latest/modeling.html#size-classes) qui utilise le papier [Cost and well-to-wheel implications of the vehicle fleet CO2 emission regulation in the European Union, Christian and others, 2014](https://www.sciencedirect.com/science/article/abs/pii/S0965856414000494?via%3Dihub)",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:1e3},"ngc . transport . voiture . gabarit . moyenne . poids":{unité:"kg",note:"Les valeurs de poids sont tirées du simulateur [carculator](https://carculator.readthedocs.io/en/latest/modeling.html#size-classes) qui utilise le papier [Cost and well-to-wheel implications of the vehicle fleet CO2 emission regulation in the European Union, Christian and others, 2014](https://www.sciencedirect.com/science/article/abs/pii/S0965856414000494?via%3Dihub)",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:1500},"ngc . transport . voiture . gabarit . VUL . poids":{unité:"kg",note:"Les valeurs de poids sont tirées du simulateur [carculator](https://carculator.readthedocs.io/en/latest/modeling.html#size-classes) qui utilise le papier [Cost and well-to-wheel implications of the vehicle fleet CO2 emission regulation in the European Union, Christian and others, 2014](https://www.sciencedirect.com/science/article/abs/pii/S0965856414000494?via%3Dihub)",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:1750},"ngc . transport . voiture . gabarit . berline . poids":{unité:"kg",note:"Les valeurs de poids sont tirées du simulateur [carculator](https://carculator.readthedocs.io/en/latest/modeling.html#size-classes) qui utilise le papier [Cost and well-to-wheel implications of the vehicle fleet CO2 emission regulation in the European Union, Christian and others, 2014](https://www.sciencedirect.com/science/article/abs/pii/S0965856414000494?via%3Dihub)",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:1750},"ngc . transport . voiture . gabarit . SUV . poids":{unité:"kg",note:"Les valeurs de poids sont tirées du simulateur [carculator](https://carculator.readthedocs.io/en/latest/modeling.html#size-classes) qui utilise le papier [Cost and well-to-wheel implications of the vehicle fleet CO2 emission regulation in the European Union, Christian and others, 2014](https://www.sciencedirect.com/science/article/abs/pii/S0965856414000494?via%3Dihub)",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:2e3},"ngc . transport . voiture . barème construction . barème électrique . batterie":{unité:"kgCO2e",note:`L'empreinte carbone d'une batterie augmente avec sa capacité, car une capacité plus élevée nécessite l'utilisation d'un plus grand nombre de cellules lithium-ion. + +La capacité de la batterie est exprimée en kWh, elle peut varier considérablement selon les modèles de voitures électriques. +Pour réduire l'impact de la voiture électrique il faut privilégier les modèles avec une batterie de petite capacité. +`,description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"capacité * barème construction . batterie . empreinte par kWh"},"ngc . transport . voiture . barème construction . barème électrique . batterie . capacité":{"applicable si":{"toutes ces conditions":[{"est défini":"utilisateur"},{"une de ces conditions":["utilisateur = 'propriétaire'","utilisateur = 'régulier non propriétaire'"]},"motorisation = 'électrique'"]},description:` +> ℹ️ Cette règle provient du modèle [\`@incubateur-ademe/nosgestesclimat\`](https://github.com/incubateur-ademe/nosgestesclimat). + + +La capacité de la batterie est exprimée en kWh, elle varie considérablement selon les modèles de véhicules. + +Les constructeurs distinguent parfois une capacité brute et une capacité nette, réellement disponible. Si vous avez les deux valeurs, choisissez la capacité brute. +`,unité:"kWh","par défaut":{variations:[{si:{"une de ces conditions":["gabarit = 'petite'","gabarit = 'moyenne'"]},alors:40},{si:{"une de ces conditions":["gabarit = 'berline'","gabarit = 'SUV'","gabarit = 'VUL'"]},alors:65}]},suggestions:{"petite autonomie":40,"autonomie moyenne":65,"grande autonomie":100}},"ngc . transport . voiture . barème construction . batterie . empreinte par kWh":{unité:"kgCO2e/kWh",note:`Les études académiques sur l'empreinte carbone des batteries des véhicules électriques sont nombreuses, mais leurs résultats sont très variables. + +Les valeurs varient de 60 kgCO2e/kWh à 150 kgCO2e/kWh. Une [méta-étude de l'IFPEN](https://www.sciencedirect.com/science/article/abs/pii/S0959652622006291) +(Institut Français du Pétrole et des Énergies Nouvelles) calcule une valeur médiane de 83 kgCO2e/kWh, en précisant que les résultats différent selons les chimies de batteries, +les pays de productions, le pays des auteurs de l'étude, et que même ces facteurs intégrés il reste une grande variabilité des résultats. + +Compte tenu de l'incertitude et des variations observées dans les études, nous adoptons une valeur prudente de 100 kgCO2e/kWh pour l'empreinte carbone des batteries. + +[Étude Carbone 4 sur l'empreinte des batteries (en)](https://www.carbone4.com/publication-liion-battery-carbon-footprint) +`,description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:100},"ngc . transport . voiture . barème construction . barème hybride . batterie":{unité:"kgCO2e",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"capacité * barème construction . batterie . empreinte par kWh"},"ngc . transport . voiture . barème construction . barème hybride . capacité":{unité:"kWh",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:40},"ngc . transport . voiture . km":{titre:"Km en voiture",question:null,description:` +> ℹ️ Cette règle provient du modèle [\`@incubateur-ademe/nosgestesclimat\`](https://github.com/incubateur-ademe/nosgestesclimat). + + +Ne comptez que les kilomètres de déplacement personnel (courses, loisirs, famille, etc.) et de déplacement domicile travail pour rejoindre votre lieu de travail habituel. + +Par exemple, si vous êtes en mission professionnelle dans un autre département ou un autre pays, cela rentre dans la comptabilité de votre entreprise : ne le comptez pas ici. +`,"par défaut":8210,unité:"km/an",plancher:0,suggestions:{zéro:0,vacances:2e3,"10km / jour":3600,"1000km / mois":12e3,"20 000km / an":2e4}},"ngc . transport . voiture . utilisateur":{question:null,"applicable si":"km > 0",description:` +> ℹ️ Cette règle provient du modèle [\`@incubateur-ademe/nosgestesclimat\`](https://github.com/incubateur-ademe/nosgestesclimat). + + +Deux données sont importantes dans le cadre du calcul de l'empreinte liée à la construction : + +- L'usage ou non d'un même véhicule pour tous les kilomètres parcourus (si non : on vous attribue un véhicule "moyen") +- La propriété ou non dudit véhicule s'il s'agit toujours du même + +Nous avons fait le choix d'attribuer l'empreinte de construction au pro-rata des kilomètres parcourus. Mais cette approche avait deux défauts : + +- Elle était extrêmement avantageuse pour les petits rouleurs, alors que leur véhicule qui roule moins peut s'user plus vite (un moteur a besoin de tourner régulièrement) et donc avoir une durée de vie inférieure. +- Elle ne permettait pas de valoriser l'engagement de ne pas disposer de son propre véhicule, et de pratiquer à la place l'autopartage, ou la location ponctuelle (car l'empreinte de construction était la même, que l'on soit propriétaire ou non). + +> Pour pallier ces deux problèmes, et mieux représenter qu'un véhicule possédé mais sous-utilisé s'use plus vite et mérite une empreinte de construction plus importante, **nous appliquons un seuil pour la partie construction de l'empreinte, pour les propriétaires**. +`,"une possibilité":{"choix obligatoire":"oui",possibilités:["propriétaire","régulier non propriétaire","non régulier"]}},"ngc . transport . voiture . voyageurs":{titre:"Nombre de voyageurs",question:null,"applicable si":"km > 0",description:` +> ℹ️ Cette règle provient du modèle [\`@incubateur-ademe/nosgestesclimat\`](https://github.com/incubateur-ademe/nosgestesclimat). + + +Une voiture consomme à peu près autant qu'elle ait 1, 2 ou 5 voyageurs à bord. Voyager à plusieurs, c'est donc potentiellement diviser par 5 l'empreinte individuelle ! + +🤔 Mais cette question n'est pas facile : il est probable que dans une année vous soyez parti en vacances à 3, ayez pris la voiture quotidiennement tout seul, etc. + +Essayez d'estimer une moyenne approximative : si tous les jours vous prenez la voiture tout seul, mettez 1 ou 1,2. +Si vous ne la prenez qu'en famille ou entre amis, mettez 3 ou 4. + +> Dans une prochaine évolution du simulateur, nous pourrons séparer les questions par type de trajets : vacances, domicile-travail, quotidiens avec un nombre de voyageurs personnalisable. + +Bien sûr, si vous vous faites conduire ou si vous prenez le taxi, le chauffeur ne compte pas, car il est au service de votre déplacement. +`,plancher:1,avertissement:`Le nombre de voyageurs ne peut pas être nul. Au volant de votre voiture, vous en êtes le premier voyageur. +`,"par défaut":1.2,suggestions:{"je suis seul":1,deux:2,cinq:5}},"ngc . transport . voiture . motorisation":{question:null,"applicable si":{"toutes ces conditions":[{"est défini":"utilisateur"},{"une de ces conditions":["utilisateur = 'propriétaire'","utilisateur = 'régulier non propriétaire'"]},"km > 0"]},description:` +> ℹ️ Cette règle provient du modèle [\`@incubateur-ademe/nosgestesclimat\`](https://github.com/incubateur-ademe/nosgestesclimat). + + +💡 **Si vous utilisez plusieurs voitures (par exemple dans le cas où vous n'en possédez pas une), choisissez la réponse la plus représentative de votre usage.**`,"par défaut":"'thermique'","une possibilité":{"choix obligatoire":"oui",possibilités:["thermique","hybride","électrique"]}},"ngc . transport . voiture . thermique . consommation aux 100":{question:null,"applicable si":{"toutes ces conditions":[{"est défini":"utilisateur"},{"une de ces conditions":["utilisateur = 'propriétaire'","utilisateur = 'régulier non propriétaire'"]},{"une de ces conditions":["motorisation = 'thermique'","motorisation = 'hybride'"]},"km > 0"]},description:` +> ℹ️ Cette règle provient du modèle [\`@incubateur-ademe/nosgestesclimat\`](https://github.com/incubateur-ademe/nosgestesclimat). + + +**💡 Si vous utilisez plusieurs voitures (par exemple dans le cas où vous n'en possédez pas une), choisissez la réponse la plus représentative de votre usage.** +`,suggestions:{"5 l/100km":5,"7 l/100km":7,"9 l/100km":9},"par défaut":"consommation estimée",unité:"l/centkm",note:"Les suggestions de réponse sont à la louche, à préciser et sourcer."},"ngc . transport . voiture . gabarit":{question:null,"applicable si":{"toutes ces conditions":[{"est défini":"utilisateur"},{"une de ces conditions":["utilisateur = 'propriétaire'","utilisateur = 'régulier non propriétaire'"]},"km > 0"]},description:` +> ℹ️ Cette règle provient du modèle [\`@incubateur-ademe/nosgestesclimat\`](https://github.com/incubateur-ademe/nosgestesclimat). + + +**💡 Si vous utilisez plusieurs voitures (par exemple dans le cas où vous n'en possédez pas une), choisissez la réponse la plus représentative de votre usage.** + +Plus une voiture est lourde et haute donc avec une forte prise au vent, plus elle consomme donc plus elle pollue ! +`,"par défaut":"'berline'",note:`Nous considérons que la voiture par défaut est une "Berline", en témoigne [une étude menée par AAA Data](https://www.alphabet.com/fr-fr/parc-automobile-roulant-les-donnees-cles) +qui indique que "Si les SUV ont représenté 38 % des ventes de véhicules en 2019, ils ne représentent que 16 % de la totalité des véhicules en circulation, loin derrière les berlines qui comptent pour 58 %, soit 23 millions de véhicules." +`,"une possibilité":{"choix obligatoire":"oui",possibilités:["petite","moyenne","VUL","berline","SUV"]}},"ngc . transport . voiture . thermique . carburant":{question:null,"applicable si":{"toutes ces conditions":[{"est défini":"utilisateur"},{"une de ces conditions":["utilisateur = 'propriétaire'","utilisateur = 'régulier non propriétaire'"]},{"une de ces conditions":["motorisation = 'thermique'","motorisation = 'hybride'"]},"km > 0"]},description:` +> ℹ️ Cette règle provient du modèle [\`@incubateur-ademe/nosgestesclimat\`](https://github.com/incubateur-ademe/nosgestesclimat). + + +Pour comprendre les différents types de carburants, [cet article pédagogique](https://www.francetvinfo.fr/economie/automobile/essence/les-carburants-changent-de-nom-a-la-pompe-voici-comment-vous-y-retrouver_2967013.html) est très utile. + +[Cet article](https://www.ecologie.gouv.fr/carburants-et-combustibles-autorises-en-france) du ministère de l'Écologie explique plus en détail les carburants légaux en France. + +> Attention, si le type de carburant fait varier de façon significative l'empreinte climat au litre, la consommation en litre par 100km elle aussi varie. Veillez à saisir une consommation au litre basée sur votre moyenne réelle. +`,"par défaut":"'essence E5 ou E10'",note:`La domination du couple gazole-essence est écrasante [source](https://www.leprogres.fr/magazine-automobile/2021/03/27/quels-sont-les-carburants-les-plus-utilises-dans-votre-commune). + +Par contre, parmi les véhicules neufs, l'essence domine aujourd'hui. + +Le facteur d'émission associé au biocarburant E85 n'est pas représentatif des conséquences environnementales liées à l'utilisation des biocarburants. +En effet, au vu des problématiques liées au changement d'affectation des sols et autres impacts environnementaux liés à la culture du maïs par exemple, les **biocarburants** ne sont pas pris en compte +(le facteur d'émission de la base carbone étant particulièrement incertain). Voir nos discussions [ici](https://github.com/incubateur-ademe/nosgestesclimat/pull/1324). + +Le GPL (Gaz de Pétrole Liquéfiés) est un [résidu de l'extraction du pétrole qui était autrefois brûlé](https://fr.wikipedia.org/wiki/Gaz_de_p%C3%A9trole_liqu%C3%A9fi%C3%A9). +Il a une empreinte carbone par litre moins importante que les véhicules essence ou diesel, par contre sa consommation est légèrement supérieure, ce qui compense légèrement le gain. +Mais si les rejets de CO2e sont au final presque équivalents entre le GPL et les autres carburants, c'est [du côté de l'émission de particules nocives](https://agirpourlatransition.ademe.fr/particuliers/conso/conso-responsable/comment-choisir-voiture-deux-roues-moins-polluant) que le GPL est un bien meilleur élève que les autres carburants thermiques. +`,"une possibilité":{"choix obligatoire":"oui",possibilités:["gazole B7 ou B10","essence E5 ou E10","essence E85","GPL"]}},"ngc . transport . voiture . électrique . consommation aux 100":{titre:"Consommation électrique au km",question:null,"applicable si":{"toutes ces conditions":[{"est défini":"utilisateur"},{"une de ces conditions":["utilisateur = 'propriétaire'","utilisateur = 'régulier non propriétaire'"]},"motorisation = 'électrique'","km > 0"]},suggestions:{"15 kWh/100km":15,"20 kWh/100km":20,"25 kWh/100km":25},"par défaut":"consommation estimée",unité:"kWh/centkm",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat)."},"ngc . logement . électricité . photovoltaique . présent":{"non applicable si":"logement . type = 'appartement'",question:null,"par défaut":"non",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat)."},"ngc . logement . électricité . photovoltaique . production":{"applicable si":"photovoltaique . présent",icônes:"🌞⚡️",question:null,plancher:0,"par défaut":"(logement . surface * 30 Wc/m2) * logement . électricité . photovoltaique . production estimée via la puissance installée . facteur",unité:"kWh",suggestions:{"1000 kWh":1e3,"2000 kWh":2e3,"4000 kWh":4e3,"6000 kWh":6e3},aide:"logement . électricité . photovoltaique . production estimée via la puissance installée . saisie",description:` +> ℹ️ Cette règle provient du modèle [\`@incubateur-ademe/nosgestesclimat\`](https://github.com/incubateur-ademe/nosgestesclimat). + + +Nous parlons bien ici de toute l'énergie produite par vos panneaux, que vous la consommiez ou non. +La façon de disposer de ce chiffre varie selon votre installation. La plupart des installations présentes disposent d'une application de suivi de production qui devrait vous fournir cette donnée. + +> Nous proposons des suggestions via le nombre de panneaux en considérant que la puissance moyenne d'un panneau solaire est de 400 Wc environ, avec une production de 1300 kWh/kWc. +`,note:`Par défaut, on propose une production qui varie selon la surface du logement en considèrant qu'un logement de 100 m² possède une installation de 3 kWc, soit une puissance installée de 0,03 kWc/m². +`},"ngc . logement . type":{question:null,"par défaut":"'moyen'",description:` +> ℹ️ Cette règle provient du modèle [\`@incubateur-ademe/nosgestesclimat\`](https://github.com/incubateur-ademe/nosgestesclimat). + + +L'augmentation de l'habitat en appartements peut nous faire oublier que la maison reste le logement majoritaire des foyers français en 2018. + +Cette information influence notamment l'empreinte de construction, mais aussi les possibilités de travaux d'isolation par exemple. + +> Si vous vivez dans un habitat original, par exemple un camping-car / un camion / une péniche, pas de problème : choisissez "appartement" et saisissez les m² de ce qui constitue quand même votre logement. +`,note:`En 2018, l’habitat individuel représente 56 % des logements ([Source INSEE](https://www.insee.fr/fr/statistiques/3676693?sommaire=3696937)) : il est majoritaire parmi les résidences principales comme parmi les résidences secondaires et logements occasionnels. Après avoir progressé entre 1999 et 2008 sa part recule légèrement, car le nombre de logements collectifs augmente plus vite que celui des logements individuels du fait des évolutions récentes de la construction neuve. +Notons qu'il s'agit d'une proportion de logements ; or on peut s'attendre (à vérifier) à ce que les maisons contiennent davantage de gens en moyenne que les appartements, ce qui renforce le choix de la valeur par défaut. +`,"une possibilité":{"choix obligatoire":"oui",possibilités:["maison","appartement"]}},"ngc . logement . surface":{titre:"Surface",question:null,plancher:1,avertissement:`La surface de votre logement ne peut-être nulle. +`,"par défaut":{variations:[{si:"logement . type = 'appartement'",alors:"parc français . surface moyenne appartement"},{si:"logement . type = 'maison'",alors:"parc français . surface moyenne maison"},{sinon:"parc français . surface moyenne"}]},note:`Valeur par défaut obtenue dans [ce jeu de données du Ceren et SDES](https://www.statistiques.developpement-durable.gouv.fr/consommation-denergie-par-usage-du-residentiel). + +> Les logements ont une surface moyenne d’environ 91 m2. + +> Si vous vivez dans un logement original, par exemple un camping-car / un camion / une péniche, renseignez simplement les m² de ce logement. +`,suggestions:{studio:25,"3 pièces":70,"6 pièces":130,"Château 🏰":500},unité:"m2",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat)."},"ngc . logement . électricité . réseau . consommation":{question:null,aide:"logement . électricité . réseau . consommation estimée via le coût . saisie",plancher:0,unité:"kWh","par défaut":"consommation par défaut",note:"on considère que seule la consommation d'électricité liée au chauffage est dépendante de la surface du logement",description:` +> ℹ️ Cette règle provient du modèle [\`@incubateur-ademe/nosgestesclimat\`](https://github.com/incubateur-ademe/nosgestesclimat). + + +Astuce : vous trouverez la consommation annuelle d'électricité sur vos factures ou sur votre compte en ligne sur le site de votre fournisseur. + +Pour rappel, si vous vivez dans plusieurs logements (par exemple, si vous avez une résidence secondaire), essayez de "ramener" ces consommations dans celles du logement principal afin d'avoir l'estimation la plus juste possible. +`},"ngc . logement . électricité . photovoltaique . part autoconsommation":{"applicable si":{"toutes ces conditions":["photovoltaique . présent","photovoltaique . production > 0"]},question:null,description:` +> ℹ️ Cette règle provient du modèle [\`@incubateur-ademe/nosgestesclimat\`](https://github.com/incubateur-ademe/nosgestesclimat). + + +Si vous consommez toute votre production, renseignez 100%. Si vous revendez toute votre production, vous pouvez mettre 0. Dans tous les cas, il vous sera demandé par la suite votre consommation d'électricité du réseau et votre production sera prise en compte indirectement dans le calcul de vos émissions. +`,"par défaut":30,plancher:0,plafond:100,unité:"%",suggestions:{"je réinjecte tout dans le réseau":0,"le quart de ma production":25,"la moitié de ma production":50,"je consomme 100% de ce que je produis":100}},"ngc . logement . chauffage . électricité . présent":{question:null,description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat)."},"ngc . logement . chauffage . PAC . présent":{question:null,description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat)."},"ngc . logement . chauffage . gaz . présent":{question:null,note:`Bien que le chauffage majoritaire en France soit électrique [source](https://fr.statista.com/statistiques/856283/types-chauffage-logement-principal-france), nous mettons ici la valeur par défaut à oui pour se rapprocher de la moyenne d'empreinte du logement. + +On touche aux limites actuelles de ce système de situation par défaut. +`,description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat)."},"ngc . logement . chauffage . réseau de chaleur . présent":{question:null,description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat)."},"ngc . logement . chauffage . bouteille gaz . présent":{question:null,description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat)."},"ngc . logement . chauffage . citerne propane . présent":{question:null,description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat)."},"ngc . logement . chauffage . fioul . présent":{question:null,description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat)."},"ngc . logement . chauffage . bois . présent":{question:null,description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat)."},ngc:E5,empreinte:w5,décote:{titre:"Calcul de la décote d'une voiture",description:`Ce modèle permet de calculer la décote moyenne d'une voiture en fonction de +son âge. + +La décote est une estimation de la perte de valeur d'un bien, ici d'une +voiture, au fil du temps. Elle s'explique par l'usure du véhicule, son +obsolescence, l'évolution des normes environnementales, etc... + +A noter que le prix d'une voiture peut grandement varier en fonction du +modèle, de l'état du véhicule et que seul une comparaison avec les prix du +marché à un instant donné permettra de déterminer le prix de vente réel. +Par conséquent, **la décote calculée ici est une estimation moyenne**. +`,plafond:"80 %",unité:"%",note:`Nous avons choisi un plafond de 80% pour la décote. Cette valeur est +arbitraire mais nous considérons que la valeur de revente d'une voiture +ne peut pas descendre en dessous de 20% de sa valeur d'achat. Nous +n'avons pas trouvé de sources fiables pour justifier ce choix, cela +pourrait être un point d'amélioration pour ce modèle. + +### Sources + +Selon cet +[article](https://www.carizy.com/blog/article/decote-voiture-impacts) ou +[celui-ci](https://www.fiches-auto.fr/articles-auto/argent-economie/s-2952-decote-d-une-voiture-variables-et-estimation.php), +on peut estimer une valeur moyenne de décote dégressive au fur et à mesure +de sa mise en circulation : + +| Temps écoulé depuis la mise en circulation | Décote moyenne | +|---------------------------------------------|----------------| +| 1 an | 20-25% | +| 2 ans | 15% | +| 3 ans | 10-12% | +| 4 ans | 10% | +| 5 ans et plus | 5-7% | + +### Pistes d'amélioration + +Le taux de décote varie d'un type de motorisation à un autre. Il serait +pertinent de prendre en compte ce critère pour affiner le calcul. +Cependant, il n'existe pas réellement de sources pour le faire. +`,variations:[{si:"durée décote <= 1",alors:"20 %"},{si:"durée décote <= 2",alors:"35 %"},{si:"durée décote <= 3",alors:"45 %"},{si:"durée décote <= 4",alors:"55 %"},{sinon:"60 + (5 %/an * (durée décote - 5))"}]},"décote . durée décote":{description:"Durée sur laquelle la décote est appliquée.","par défaut":"voiture . âge",unité:"an"},"prix électricité":{description:`Prix de l'électricité en France en août 2024 selon le tarif réglementé de +vente (TRV) d'EDF. +`},"prix électricité . TRV base":{titre:"Tarif réglementé de vente (TRV) (Tarif Bleu d'EDF - Base)",note:`Tarif réglementé de vente (TRV) de l'électricité au 14 août 2024 selon la +grille tarifaire renseignée sur [hello +watt](https://www.hellowatt.fr/contrat-electricit%C3%A9/prix-trv-electricite). +`,valeur:"0.2516 €/kWh"},"prix électricité . TRV HC":{titre:"Tarif réglementé de vente (TRV) (Tarif Bleu d'EDF - Heures Creuses)",note:`Tarif réglementé de vente (TRV) de l'électricité au 14 août 2024 selon la +grille tarifaire renseignée sur [hello +watt](https://www.hellowatt.fr/contrat-electricit%C3%A9/prix-trv-electricite). +`,valeur:"0.2068 €/kWh"},"prix électricité . TRV HP":{titre:"Tarif réglementé de vente (TRV) (Tarif Bleu d'EDF - Heures Pleines)",note:`Tarif réglementé de vente (TRV) de l'électricité au 14 août 2024 selon la +grille tarifaire renseignée sur [hello +watt](https://www.hellowatt.fr/contrat-electricit%C3%A9/prix-trv-electricite). +`,valeur:"0.27 €/kWh"},coûts:{titre:"Coûts annuels de votre voiture",description:`Coûts répartis entre les coûts liés à la possession d'une voiture (achat, +assurance, etc...) et les coûts liés à son utilisation (carburant, +entretien, etc...). +`,unité:"€/an",note:`### Historique + +Ce modèle de calcul des coûts d'une voiture utilisait dans sa première version +le modèle de [futur.eco](https://futur.eco/cout-voiture) permettant de calculer +le coût au km d'un trajet en voiture. Cependant, des limitations sont apparues +et le modèle a été réécrit en changeant notamment de fonction d'amortissement. + +Une partie des valeurs ont été reprises du modèle de +[futur.eco](https://futur.eco/cout-voiture) et le modèle reste une source +d'inspiration. +`,somme:["coûts de possession","coûts d'utilisation"]},"coûts . coûts de possession":{titre:"Coûts de possession annuels",description:`Ensemble des coûts liés à la possession d'une voiture et qui peuvent par +conséquent, être négligés dans le calcul des coûts d'une voiture louée par +exemple. +`,unité:"€/an",somme:["achat amorti","contrôle technique","entretien","assurance","certificat d'immatriculation amorti"]},"coûts . coûts de possession . contrôle technique":{titre:"Coût annuel du contrôle technique",note:`Le contrôle technique est obligatoire tous les deux ans pour les voitures +de plus de 4 ans (voir +[economie.gouv.fr](https://www.economie.gouv.fr/dgccrf/Publications/Vie-pratique/Fiches-pratiques/Vehicule-automobile-controle-technique)). + +### Sources + +La valeur moyenne du contrôle technique est estimée à 85 € en 2024 à +partir des données de l'API +[data.economie.gouv.fr/explore/embed/dataset/prix-controle-technique/](https://data.economie.gouv.fr/explore/embed/dataset/prix-controle-technique/analyze/?dataChart=eyJxdWVyaWVzIjpbeyJjb25maWciOnsiZGF0YXNldCI6InByaXgtY29udHJvbGUtdGVjaG5pcXVlIiwib3B0aW9ucyI6e319LCJjaGFydHMiOlt7ImFsaWduTW9udGgiOnRydWUsInR5cGUiOiJiYXIiLCJmdW5jIjoiQVZHIiwieUF4aXMiOiJwcml4X3Zpc2l0ZSIsInNjaWVudGlmaWNEaXNwbGF5Ijp0cnVlLCJjb2xvciI6IiM0NDcwNDkifV0sInhBeGlzIjoiY2F0X2VuZXJnaWVfaWQiLCJtYXhwb2ludHMiOm51bGwsInRpbWVzY2FsZSI6IiIsInNvcnQiOiIiLCJzZXJpZXNCcmVha2Rvd25UaW1lc2NhbGUiOiIifV0sImRpc3BsYXlMZWdlbmQiOnRydWUsImFsaWduTW9udGgiOnRydWUsInRpbWVzY2FsZSI6IiJ9) : +`,valeur:"85 € / 2 an"},"coûts . coûts de possession . entretien":{question:"Combien coûte l'entretien de votre voiture ?",description:`Renseignez le coût annuel moyen de l'entretien de votre voiture hors +contrôle technique. Cela comprend les réparations occasionnelles, +changement de batterie, etc... +Si vous ne connaissez pas ce coût, vous pouvez laisser la valeur par +défaut. +`,"par défaut":"entretien estimé",plancher:0,unité:"€/an"},"coûts . coûts de possession . entretien estimé":{titre:"Estimation du coût d'entretien moyen",description:`Estimation du coût d'entretien moyen de votre voiture par an en prenant +en compte les révisions annuelles et les réparations occasionnelles. +`,note:`Il n'existe pour l'instant pas de sources détaillées sur le coût +d'entretien. Pour une première estimation, nous avons considéré un coût +d'entretien moyen et appliqué un ratio en fonction de la motorisation du +véhicule comme cela est fait dans la note d'analyse [_Voiture électrique : +à quel coût +?_](https://www.strategie.gouv.fr/sites/strategie.gouv.fr/files/atoms/files/fs-2022-na-115-voiture_electrique-annexe_methodo-novembre.pdf) +de France Stratégie. + +### Pistes d'amélioration + +De nombreux articles estiment le coût d'entretien en fonction des km +parcourus. Par exemple, la fréquence recommandée pour effectuer une +vidange varie entre 7000 et 30 000 km parcourus en fonction des sources +et du type de véhicule. Se pose donc la question des sources à utiliser +et de la façon de répartir ces coûts en fonction des km annuels +parcourus. + +Le modèle de +[Futur.eco](https://futur.eco/documentation/voyage/voiture/co%C3%BBt-de-possession/entretien?lu=oui) +prend en compte un ratio d'usage pour diminuer les coûts d'entretien pour +les voitures roulant peu. Pour l'instant, nous utilisons des coûts fixes +pour l'entretien basé sur la note d'analyse [_Voiture électrique : à quel +coût +?_](https://www.strategie.gouv.fr/sites/strategie.gouv.fr/files/atoms/files/fs-2022-na-115-voiture_electrique-annexe_methodo-novembre.pdf) +de France Stratégie afin de simplifier le calcul. + +Dans une future version, nous pourrions essayer de rentrer dans le détail +et de proposer une modélisation plus fine des coûts d'entretien en fonction +des km parcourus et avoir une division plus fine des coûts d'entretien en +sous-postes. +`,variations:[{si:"voiture . motorisation = 'hybride'",alors:"entretien thermique moyen * 90 %"},{si:"voiture . motorisation = 'électrique'",alors:"entretien thermique moyen * 80 %"},{sinon:"entretien thermique moyen"}]},"coûts . coûts de possession . entretien thermique moyen":{titre:"Coût d'entretien moyen d'une voiture thermique",note:`Valeur moyenne retenue dans la note d'analyse [_Voiture électrique : à quel +coût +?_](https://www.strategie.gouv.fr/sites/strategie.gouv.fr/files/atoms/files/fs-2022-na-115-voiture_electrique-annexe_methodo-novembre.pdf) +de France Stratégie (en retranchant le coût du contrôle technique qui est +comptabilisé à part). +`,valeur:"1250 €/an"},"coûts . coûts de possession . assurance":{question:"Quel est le coût de l'assurance de votre voiture ?",description:`Renseignez le coût annuel de l'assurance de votre voiture. Si vous ne +connaissez pas ce coût, vous pouvez laisser la valeur par défaut. +`,"par défaut":"assurance estimée",plancher:0,unité:"€/an"},"coûts . coûts de possession . assurance estimée":{titre:"Coût annuel estimé de l'assurance",note:`Estimation du coût annuel de l'assurance de votre voiture en fonction de +sa motorisation. Les primes d'assurance peuvent varier en fonction de +plusieurs critères (âge, lieu de résidence, etc...). Nous avons pris en +compte une prime moyenne pour une voiture thermique et une prime moyenne +pour une voiture électrique. + +### Sources + +- [LesFurets.com](https://www.lesfurets.com/assurance-auto/types-vehicules/voiture-propre/electrique) +`,variations:[{si:"voiture . motorisation = 'électrique'",alors:"520 €/an"},{sinon:"640 €/an"}]},"coûts . coûts de possession . achat amorti":{titre:"Coût annuel de l'achat de votre voiture",note:`Le prix d'achat d'une voiture qu'elle soit neuve ou d'occasion représente +un facteur important du coût total du véhicule. Le choix de la fonction +d'amortissement est par conséquent crucial pour le calcul du coût annuel. + +De nombreuses méthodes existe pour définir cette fonction : amortissement +linéaire sur toute la durée de vie ou sur la durée d'utilisation, +non-linéaire en _payant_ plus les premières années, amorti en retranchant +le prix de revente. L'amortissement sur la durée de vie peut se faire en +années ou bien en km parcourus. + +Nous avons donc du faire un choix et avons décidé de choisir un +**amortissement linéaire sur la durée de détention**. + +#### Historique de ce choix + +La première version du modèle pour le calcul des coûts d'une voiture était +basée sur le modèle de [futur.eco](https://futur.eco/cout-voiture) qui +utilise un amortissement linéaire sur la durée de vie en années de la +voiture, en faisant l'hypothèse qu'en moyenne la voiture est gardée +jusqu'au bout de sa vie. + +Si à l'échelle d'une voiture, il est probable qu'elle roule jusqu'à la fin de +sa vie, (c'est-à-dire qu'elle ne soit plus en état de fonctionner), à l'échelle +d'un.e conducteurice cela semble peu probable. En effet, selon le [bilan de +2021 de +l'ONSIR](https://www.onisr.securite-routiere.gouv.fr/sites/default/files/2022-09/74-75%20Le%20parc%20automobile%20des%20m%C3%A9nages%20V5.pdf), la durée de +détention n'est que de 5,5 ans alors que l'âge moyen des voitures hors d'usage (VHU) +est de 19 ans (voir +cet [article](https://www.ecologie.gouv.fr/politiques-publiques/vehicules-hors-dusage-vhu)). + +De plus, ce choix d'amortissement peut se justifier dans le contexte du +calcul du coût d'un trajet arbitraire (comme c'est le cas pour futur.eco). +Contexte qui ne permet de savoir facilement à ce moment là qu'elle sera la +durée de détention du véhicule. Or, dans le contexte d'un questionnement +sur le remplacement d'un véhicule, il est plus probable que la durée de +détention soit connue. +`,valeur:"(voiture . prix d'achat - valeur résiduelle) / voiture . durée de détention totale"},"coûts . coûts de possession . achat amorti . valeur résiduelle":{titre:"Valeur résiduelle du véhicule à la revente",description:`Prix estimé de revente de votre voiture à la fin de son utilisation, +permettant ainsi d'amortir uniquement la différence entre le prix +d'achat et la valeur résiduelle. +`,valeur:"voiture . prix d'achat * décote",contexte:{"décote . durée décote":"voiture . durée de détention totale"}},"coûts . coûts de possession . certificat d'immatriculation amorti":{titre:"Coût annuel du certificat d'immatriculation",valeur:"certificat d'immatriculation / voiture . durée de détention totale"},"coûts . coûts de possession . certificat d'immatriculation":{titre:"Coût du certificat d'immatriculation (ex-carte grise)",note:`En attendant la remise en service du [simulateur de +l'État](https://www.service-public.fr/simulateur/calcul/cout-certificat-immatriculation), +nous utilisons la règle récupérée du modèle de +[Futur.eco](https://futur.eco/documentation/voyage/voiture/carte-grise/immatriculation). + +### Améliorations futur + +A terme, il serait intéressant d'utiliser l'API du simulateur pour +récupérer et calculer le coût moyen du certificat d'immatriculation en +fonction du type de véhicule et si il est d'occasion. +`,variations:[{si:"voiture . motorisation = 'électrique'",alors:"15 €"},{sinon:"300 €"}]},"coûts . coûts d'utilisation":{titre:"Coûts d'utilisation annuels",description:`Ensemble des coûts liés à l'utilisation d'une voiture et qui peuvent par +conséquent, être pris en compte dans le calcul des coûts d'une voiture +louée ou partagée. +`,unité:"€/an",somme:["consommation","stationnement","péage","contraventions","permis de conduire"]},"coûts . coûts d'utilisation . consommation":{titre:"Coût de la consommation annuelle",valeur:"consommation au km * usage . km annuels"},"coûts . coûts d'utilisation . consommation . consommation au km":{titre:"Coût de la consommation au km",unité:"€/km",note:`Pour les voitures hybrides nous faisons la même hypothèse que pour la +note d'analyse [_Voiture électrique : à quel coût +?_](https://www.strategie.gouv.fr/sites/strategie.gouv.fr/files/atoms/files/fs-2022-na-115-voiture_electrique-annexe_methodo-novembre.pdf) +de France Stratégie. +`,variations:[{si:"voiture . motorisation = 'électrique'",alors:"électrique"},{si:"voiture . motorisation = 'thermique'",alors:"thermique"},{si:"voiture . motorisation = 'hybride'",alors:"hybride"}]},"coûts . coûts d'utilisation . consommation . consommation au km . thermique":{unité:"€/km",valeur:"(voiture . thermique . consommation carburant * voiture . thermique . prix carburant) / 100"},"coûts . coûts d'utilisation . consommation . consommation au km . électrique":{unité:"€/km",valeur:"(voiture . électrique . consommation électricité * voiture . électrique . prix kWh) / 100"},"coûts . coûts d'utilisation . consommation . consommation au km . hybride":{unité:"€/km",note:`Pour les voitures hybrides nous faisons la même hypothèse que pour la +note d'analyse [_Voiture électrique : à quel coût +?_](https://www.strategie.gouv.fr/sites/strategie.gouv.fr/files/atoms/files/fs-2022-na-115-voiture_electrique-annexe_methodo-novembre.pdf) +de France Stratégie. +`,somme:["consommation au km . thermique * 75 %","consommation au km . électrique * 25 %"]},"coûts . coûts d'utilisation . stationnement":{question:"Combien coûte le stationnement de votre voiture ?",description:`Renseignez le coût annuel associé au stationnement de votre voiture +(parking, garage, place payante, etc...). +`,"par défaut":"50 €/mois",plancher:0,unité:"€/an",note:`Valeur par défaut basée sur le [baromètre de +Yespark](https://www.yespark.fr/prix-parking?k=car). + +### Pistes d'amélioration + +Peut de données sont disponibles sur le coût moyen qu'un.e conducteurice +dépense pour le stationnement de sa voiture. Il serait intéressant de +trouver des informations plus précises. + +_A priori_, le coût de stationnement peut être plus élevé pour une +voiture électrique souhaitant bénéficier d'une borne de recharge, mais +nous n'avons pas encore de données pour le confirmer. +`},"coûts . coûts d'utilisation . péage":{titre:"Coût annuel lié aux péages",question:"Combien payez-vous en moyenne pour les péages ?","par défaut":{valeur:"estimé",arrondi:"oui"},plancher:0,unité:"€/an"},"coûts . coûts d'utilisation . péage . estimé":{titre:"Coût annuel estimé des péages",produit:["prix au km","usage . km annuels","usage . km annuels . part autoroute"]},"coûts . coûts d'utilisation . péage . prix au km":{titre:"Prix moyen du péage au km",note:`Valeur moyenne calculée à l'aide du script +[\`cout-autoroute.js\`](https://github.com/betagouv/publicodes-voiture/blob/main/scripts/cout-autoroute.js) +utilisant lui-même les données de [France +Infos](https://www.francetvinfo.fr/economie/automobile/infographies-prix-des-peages-visualisez-l-augmentation-des-tarifs-en-2023-autoroute-par-autoroute_5917970.html) +comparant l'évolution des tarifs des autoroutes entre 2022 et 2023. +`,valeur:"0.17194424757025703 €/km"},"coûts . coûts d'utilisation . contraventions":{question:"Quel le coût des contraventions que vous payez ?",description:`Il s'agit ici de toutes les contraventions qui surviennent : parking, +vitesse, ivresse, feu cassé, stop grillé, etc. + +Bien sûr, le respect du code de la route varie énormément d'une personne à +l'autre, à vous d'estimer la votre. +`,"par défaut":{valeur:"recettes annuelles 2022 / parc français 2022",arrondi:"oui"},unité:"€/an",plancher:0,note:`Cette question n'est pas évidente, mais elle est néanmoins non négligeable. +Les recettes des amendes diverses de circulation [ont atteint 1,8 milliards +d'euros en +[2022](https://www.ccomptes.fr/system/files/2023-04/NEB-2022-Controle-circulation-et-stationnement-routiers.pdf?page=15), +dont 1 milliard pour les seuls radars (excès de vitesse). Ce qui donne 46€ +par voiture et par an ! + +### Source + +Règle récupérée du modèle de calcul de [futur.eco](https://futur.eco/cout-voiture). + +### Piste d'amélioration + +Idéalement, il faudrait trouver le montant moyen payé par français par an. +`},"coûts . coûts d'utilisation . contraventions . recettes annuelles 2022":{description:`Montant prévisionnel des recettes des amendes en circulation en 2022 +selon un [rapport de la Cour des +comptes](https://www.ccomptes.fr/system/files/2023-04/NEB-2022-Controle-circulation-et-stationnement-routiers.pdf?page=15) +`,valeur:"1784 millions de voiture.€/an"},"coûts . coûts d'utilisation . contraventions . parc français 2022":{description:`Nombre de voiture en circulation en France au 1er janvier 2022 selon le +[SDES](https://www.statistiques.developpement-durable.gouv.fr/387-millions-de-voitures-en-circulation-en-france-au-1er-janvier-2022). +`,valeur:"38.7 millions de voiture"},"coûts . coûts d'utilisation . permis de conduire":{unité:"€/an",note:`### Source + +Règle récupérée du modèle de [futur.eco](https://futur.eco/cout-voiture). +`,valeur:"coût d'obtention / durée d'utilisation"},"coûts . coûts d'utilisation . permis de conduire . durée d'utilisation":{valeur:"durée de vie en bonne santé - âge d'obtention"},"coûts . coûts d'utilisation . permis de conduire . âge d'obtention":{valeur:"19 an"},"coûts . coûts d'utilisation . permis de conduire . durée de vie en bonne santé":{note:`### Source +- [_Espérance de vie en bonne santé : 67 ans pour les femmes, 65,6 ans + pour les hommes_ + (vie-publique.fr)](https://www.vie-publique.fr/en-bref/288403-esperance-de-vie-en-bonne-sante-67-ans-femmes-656-ans-hommes) +`,valeur:"66 an"},"coûts . coûts d'utilisation . permis de conduire . coût d'obtention":{description:`Sans conducteur avec permis, pas de km parcourus en voiture individuelle +! + +Bien sûr, on peut se dire "Non mais tous les Français passent le permis +de toutes façon". Certes, une majorité le passe, mais avec le même +raisonnement, on prétend que tous les Français ont une voiture de toute +façon... et on en revient à un coût totalement sous-estimé. +`,note:`### Source + +Le prix est tiré d'une [étude de l'UFC-Que Choisir de +2016](https://www.bfmtv.com/auto/combien-coute-le-permis-de-conduire-en-france_AV-202303270437.html) +qui semble rester encore réaliste selon +[BFMTV](https://www.bfmtv.com/auto/combien-coute-le-permis-de-conduire-en-france_AV-202303270437.html). +`,valeur:"1804 €"},commun:k5,"ngc . transport":null,"ngc . transport . voiture . thermique":null,"ngc . transport . voiture . électrique":null,"ngc . logement . électricité":null,"ngc . logement":null,"ngc . logement . électricité . photovoltaique":null,"ngc . logement . électricité . réseau":null,"ngc . logement . électricité . photovoltaique . production estimée via la puissance installée":null,"ngc . parc français":null,"ngc . logement . chauffage":null,"ngc . parc français . chauffage":null,"ngc . commun":null,"ngc . empreinte branche":null,"ngc . transport . voiture . barème construction . batterie":null,"ngc . logement . chauffage . électricité":null,"ngc . logement . chauffage . PAC":null,"ngc . logement . chauffage . gaz":null,"ngc . logement . chauffage . réseau de chaleur":null,"ngc . logement . chauffage . bouteille gaz":null,"ngc . logement . chauffage . citerne propane":null,"ngc . logement . chauffage . fioul":null,"ngc . logement . chauffage . bois":null},S5=new kw(C5);console.log("Engine instantiated");const ru="/publicodes-voiture",mc="empreinte";function q5(){const e=TS()["*"],{current:t}=V.useRef({Link:Ly,Text:({children:n})=>f.jsx(v0,{children:n})});return console.log(`Rendering rule ${e??mc}`),f.jsx("div",{children:f.jsx(rS,{documentationPath:`${ru}/doc`,rulePath:e??mc,searchBar:!0,engine:S5,renderers:t,language:"fr",npmPackage:"publicodes-voiture"})})}function P5(){return f.jsxs("div",{children:[f.jsx("h1",{children:"Documentation"}),f.jsx("ul",{children:f.jsx("li",{children:f.jsx(Ly,{to:`${ru}/doc/${mc}`,children:"Accéder à la documentation"})})})]})}function N5(){return f.jsx("div",{className:"App",children:f.jsxs(XS,{children:[f.jsx(Zl,{path:`${ru}/`,element:f.jsx(P5,{})}),f.jsx(Zl,{path:`${ru}/doc/*`,element:f.jsx(q5,{})})]})})}const L5=Fs.createRoot(document.getElementById("root"));L5.render(f.jsx(vt.StrictMode,{children:f.jsx(iq,{children:f.jsx(N5,{})})}));export{xm as D,fn as R,ee as a,f as j,V as r,yn as u}; diff --git a/index.html b/index.html new file mode 100644 index 0000000..28a77e1 --- /dev/null +++ b/index.html @@ -0,0 +1,49 @@ + + + + + + + + + + publicodes-voiture - Documentation + + + + + +
+ +