@supersoniks/concorde 4.9.4 → 4.9.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/ai/README.md CHANGED
@@ -10,7 +10,7 @@ node node_modules/@supersoniks/concorde/scripts/ai-init.mjs
10
10
 
11
11
  Options :
12
12
 
13
- - `--overlay <dir>` — couche additionnelle (ex. kit starter) ; lit aussi `AGENTS.starter.md`
13
+ - `--overlay <dir>` — couche projet ; lit `AGENTS.concorde.md` (legacy : `AGENTS.overlay.md`, `AGENTS.starter.md`)
14
14
  - `--skip-agents` — n’écrit jamais `AGENTS.md` (skills / rules seulement)
15
15
  - `--merge-agents` — opt-in : conserve le préambule projet et ajoute / rafraîchit le bloc Concorde
16
16
  - `--force-agents` — opt-in : **remplace** tout `AGENTS.md` (destructif)
@@ -33,12 +33,13 @@ Depuis le dépôt Concorde (dev) : `yarn ai-init`
33
33
  [optional project preamble — short, project-only]
34
34
  <!-- concorde-ai -->
35
35
  <package ai/AGENTS.md>
36
- [--- + overlay AGENTS.starter.md]
36
+ [--- + overlay AGENTS.concorde.md]
37
37
  ```
38
38
 
39
39
  - Tout **après** `<!-- concorde-ai -->` est **régénéré** à chaque run (pas d’empilement).
40
- - Ne pas recopier le guide Concorde dans le préambule : notes projet → `overlay/AGENTS.starter.md`.
40
+ - Ne pas recopier le guide Concorde dans le préambule : notes projet → `overlay/AGENTS.concorde.md`.
41
41
  - Si le préambule duplique `ai/AGENTS.md`, `ai-init` le **allège / drop** et affiche un warning.
42
+ - Legacy : `AGENTS.overlay.md` / `AGENTS.starter.md` encore lus si `AGENTS.concorde.md` est absent (warning de dépréciation).
42
43
 
43
44
  ## Contenu
44
45
 
package/build-infos.json CHANGED
@@ -1 +1 @@
1
- {"date":1785400304}
1
+ {"date":1785410199}
@@ -1,4 +1,4 @@
1
- (function(Z){typeof define=="function"&&define.amd?define(Z):Z()})((function(){"use strict";var M,tt;let Z=class Ft{static getLanguage(){const t=document.documentElement.lang;return localStorage.getItem("SonicSelectedLanguage")||t}static getCookies(){return document.cookie.split(";").reduce((t,i)=>{const r=i.indexOf("=");return t[i.substring(0,r).trim()]=i.substring(r+1),t},{})}static everyAncestors(t,i){for(;t;){if(!i(t))return;t=t.parentNode||t.host}}static getScrollableAncestor(t){for(;t;){const i=t;if(i.nodeType===1){const r=window.getComputedStyle(i);if(r?.overflowY==="auto"||r?.overflowY==="scroll"||r?.overflowY==="hidden"||r?.overflowX==="auto"||r?.overflowX==="scroll"||r?.overflowX==="hidden")return t}t=t.parentNode||t.host}return null}static scopeAttributeNames(t){const i=t.toLowerCase();return i===t?[t]:[t,i]}static readScopeAttributeOnElement(t,i){for(const r of Ft.scopeAttributeNames(i))if(t.hasAttribute(r))return t.getAttribute(r)??"";return null}static getAncestorAttributeValue(t,i){if(!t)return null;let r=t;for(;r;){if(r instanceof HTMLElement){const o=Ft.readScopeAttributeOnElement(r,i);if(o!=null)return o}const e=r.parentNode||r.host;if(!e)break;r=e}return null}static getApiConfiguration(t){const i=Ft.getAncestorAttributeValue(t,"token"),r=Ft.getAncestorAttributeValue(t,"addHTTPResponse")!=null,e=Ft.getAncestorAttributeValue(t,"serviceURL");let o=null,n=null;const l=Ft.getAncestorAttributeValue(t,"tokenProvider"),c=Ft.getAncestorAttributeValue(t,"eventsApiToken");i||(o=Ft.getAncestorAttributeValue(t,"userName"),n=Ft.getAncestorAttributeValue(t,"password"));const h=Ft.getAncestorAttributeValue(t,"credentials")||void 0,u=t.getAttribute("cache"),d=t.hasAttribute("blockUntilDone"),p=t.hasAttribute("keepAlive");return{serviceURL:e,token:i,userName:o,password:n,authToken:c,tokenProvider:l,addHTTPResponse:r,credentials:h,cache:u,blockUntilDone:d,keepAlive:p}}static getClosestElement(t,i){for(;!(t.nodeName&&t.nodeName.toLowerCase()===i)&&(t.parentNode||t.host);)t=t.parentNode||t.host;return t.nodeName?t:null}static getClosestForm(t){return Ft.getClosestElement(t,"form")}static getAncestorsByTagNames(t,i){const r=new Set(i.map(n=>n.toLowerCase())),e=[];let o=t.parentNode||t.host;for(;o;)o instanceof Element&&r.has(o.tagName.toLowerCase())&&e.push(o),o=o.parentNode||o.host;return e}static getAncestorsBySelectors(t,i){const r=[];let e=t.parentNode||t.host;for(;e;){if(e instanceof Element)for(const o of i)try{if(e.matches(o)){r.push(e);break}}catch{}e=e.parentNode||e.host}return r}static async loadJS(t){return new Promise(async r=>{const e=document.createElement("script");e.src=t,e.onload=()=>r(!0),e.onerror=()=>r(!0),document.head.appendChild(e)})}static async loadCSS(t){return new Promise(async r=>{const e=document.createElement("link");e.type="text/css",e.rel="stylesheet",e.href=t,e.onload=()=>r(!0),e.onerror=()=>r(!0),document.head.appendChild(e)})}};const bi=s=>{const t=document.documentElement,i=new MutationObserver(e=>{for(let o of e)o.type==="attributes"&&o.attributeName==="lang"&&s()}),r={attributes:!0,attributeFilter:["lang"]};i.observe(t,r)};let Os=class{static ucFirst(t){return typeof t!="string"?t:t.charAt(0).toUpperCase()+t.substring(1)}static minutesDuration(t,i="",r="long"){i||(i=Z.getLanguage());const e=(h,u)=>[Math.floor(h/u),h%u];function o(h,u,d){return new Intl.NumberFormat(h,{style:"unit",unit:u,unitDisplay:d}).format}const[n,l]=e(t,60),c=[];return n&&c.push(o(i,"hour",r)(n)),l&&c.push(o(i,"minute",r)(l)),new Intl.ListFormat(i,{style:"long",type:"conjunction"}).format(c)}static js(t){try{return Function("return "+t)()}catch{return""}}};class _r{constructor(t){this.path=t}toString(){return this.path}}function wr(s){return new Proxy(s,{get(t,i){if(i==="path")return t.path;if(i==="toString")return t.toString.bind(t);if(i===Symbol.toStringTag)return"DataProviderKey";if(typeof i=="symbol")return t[i];const r=t.path?`${t.path}.${String(i)}`:String(i);return wr(new _r(r))}})}const Jo=/\$\{|\{\$/;function tn(s){return Jo.test(s)}function mi(s){const t=typeof s=="string"?s:s.path;if(tn(t))throw new Error("Static publisher path required for get/set/dp. Use @subscribe, @publish, or @handle for dynamic DataProviderKey paths.");return t}const es=function(s){return this instanceof es?wr(new _r(s)):new es(s)};let nt=class oe{static shallowEqual(t,i,r=!0){const e=Object.keys(t),o=Object.keys(i);if(e.length!==o.length&&r)return!1;for(const n of e){const l=t[n],c=i[n];if(r?l!==c:l!=c)return!1}return!0}static deepEqual(t,i,r=!0){const e=Object.keys(t),o=Object.keys(i);if(e.length!==o.length&&r)return!1;for(const n of e){const l=t[n],c=i[n],h=oe.isObject(l)&&oe.isObject(c),u=r?l!==c:l!=c;if(h&&!oe.deepEqual(l,c)||!h&&u)return!1}return!0}static isObject(t){return t!=null&&typeof t=="object"}static isUndefindOrNull(t){return t==null}static isEmpty(t){return oe.isUndefindOrNull(t)?!0:Object.keys(t).length===0}static traverse(t,i,r=!1){for(const e of i){const o=t[e];if(o===void 0)return;r&&oe.isObject(o)?t=Object.assign(Array.isArray(o)?[]:{},t,o):t=t[e]}return t}static traverseDotNotation(t,i,r=!1){return oe.traverse(t,i.split("."),r)}static getURLSearchArray(t,i=""){let r=[];for(let e in t){const o=t[e];i&&(e=i+"["+e+"]"),oe.isObject(o)?r=[...r,...this.getURLSearchArray(o,e)]:r.push(`${e}=${o}`)}return r}static getURLSearchString(t){return oe.getURLSearchArray(t,"").join("&")}};const yt=nt.traverseDotNotation;let en=class{static async queueTaskPromise(){return new Promise(t=>{window.queueMicrotask(()=>t(null))})}static async delayPromise(t){return new Promise(i=>{setTimeout(i,t)})}},xr="sonic";typeof __SONIC_PREFIX__<"u"&&(xr=__SONIC_PREFIX__);let Pr=xr.replace(/-([a-z])/g,s=>s[1].toUpperCase());const Es=Pr.charAt(0).toUpperCase()+Pr.slice(1),sn=new Set(["localStorageMode","expirationDelayMs","invalidateOnPageShow"]);function Cr(s){return s==null||typeof s!="object"||Array.isArray(s)?!1:Object.keys(s).some(t=>sn.has(t))}function Ls(s){return Object.prototype.hasOwnProperty.call(s,"__value")}function ne(s){return typeof s=="object"&&s!==null}let ze="sonic";typeof __SONIC_PREFIX__>"u"&&(ze="sonic");const gi=ze=="sonic"?"publisher-proxies-data":ze+"-publisher-proxies-data",xe=class xe{constructor(t,i,r){for(this._proxies_=new Map,this._is_savable_=!1,this._expiration_delay_=1e3*60*60*12,this._invalidate_on_page_show_=!1,this._invalidateListeners_=new Set,this._formInvalidateListeners_=new Set,this._assignListeners_=new Set,this._mutationListeners_=new Set,this._fillListeners_=new Set,this._templateFillListeners_=new Set,this._lockInternalMutationPublishing_=!1,this._instanceCounter_=0,this._assignmentId_=0,this._value_=t,this.parent=i||null,this._parentKey_=r,this.root=this,this._instanceCounter_=0;this.root.parent;)this.root=this.root.parent}delete(){for(const t in this._proxies_.keys())t!="_parent_"&&this._proxies_.get(t)?.delete();this._invalidateListeners_.clear(),this._formInvalidateListeners_.clear(),this._assignListeners_.clear(),this._mutationListeners_.clear(),this._fillListeners_.clear(),this._templateFillListeners_.clear(),this._proxies_.clear(),xe.instances.delete(this._instanceCounter_)}hasListener(){return this._templateFillListeners_.size>0||this._assignListeners_.size>0||this._invalidateListeners_.size>0||this._formInvalidateListeners_.size>0||this._mutationListeners_.size>0||this._fillListeners_.size>0}_publishInternalMutation_(t=!1){if(this._mutationListeners_.forEach(i=>i()),this._is_savable_&&!E.changed){E.changed=!0,E.saveId++;const i=E.saveId;setTimeout(()=>E.getInstance().saveToLocalStorage(i),1e3)}t||this.parent&&this.parent._publishInternalMutation_()}async _publishAssignement_(t=!1){if(this._assignmentId_++,this._assignmentId_!==this._assignmentId_)return;const r=this.get();this._assignListeners_.forEach(e=>{e(r)}),this._publishInternalMutation_(t)}_publishInvalidation_(){this._invalidateListeners_.forEach(t=>t())}_publishFormInvalidation_(){this._formInvalidateListeners_.forEach(t=>t())}_publishDynamicFilling_(t,i){this._fillListeners_.forEach(r=>{r[t]!==i&&(r[t]=i)}),this._publishTemplateFilling_(t,i)}_publishTemplateFilling_(t,i){this._templateFillListeners_.forEach(r=>{const e=Object.getOwnPropertyDescriptor(r,t);e&&!e.set&&!e.writable||(r.propertyMap&&r.propertyMap[t]&&(t=r.propertyMap[t]),typeof r[t]<"u"&&r[t]!==i&&(r[t]=i))})}onAssign(t,i=!0){typeof t=="function"&&(this._assignListeners_.has(t)||(this._assignListeners_.add(t),i&&t(this.get())))}offAssign(t){this._assignListeners_.delete(t)}onInvalidate(t){typeof t=="function"&&this._invalidateListeners_.add(t)}offInvalidate(t){typeof t=="function"&&this._invalidateListeners_.delete(t)}invalidate(){this._publishInvalidation_()}onFormInvalidate(t){typeof t=="function"&&this._formInvalidateListeners_.add(t)}offFormInvalidate(t){typeof t=="function"&&this._formInvalidateListeners_.delete(t)}invalidateForm(){this._publishFormInvalidation_()}onInternalMutation(t){typeof t=="function"&&(this._mutationListeners_.add(t),t())}offInternalMutation(t){typeof t=="function"&&this._mutationListeners_.delete(t)}startTemplateFilling(t){if(this._templateFillListeners_.add(t),typeof this._value_=="object")for(const i in this._value_){let r=i;const e=this._value_[i];t.propertyMap&&t.propertyMap[i]&&(r=t.propertyMap[i]),typeof t[i]<"u"&&t[i]!==e&&(t[r]=e)}}stopTemplateFilling(t){this._templateFillListeners_.delete(t)}startDynamicFilling(t){this._fillListeners_.add(t);for(const i in this._value_){const r=this._value_[i];t[i]!==r&&(t[i]=r)}}stopDynamicFilling(t){this._fillListeners_.delete(t)}set(t,i=!1){if(this._value_===t||ne(this._value_)&&ne(t)&&t&&Ls(this._value_)&&Ls(t)&&this._value_.__value===t.__value||!ne(t)&&t===this._value_.__value)return!0;this._value_=ne(t)?t:{__value:t},this._cachedGet_=void 0;const r=Ls(this._value_);if(this._parentKey_&&this.parent){const e=Ls(this._value_)?this._value_.__value:this._value_;if(this.parent?.get()==null&&this.parent?.get()==null)if(isNaN(Number(this._parentKey_)))this.parent.set({[this._parentKey_]:e});else{const o=[];o[Number(this._parentKey_)]=e,this.parent.set(o)}else this.parent._value_[this._parentKey_]=e}if(r)return this._proxies_.forEach((e,o)=>{o!="_parent_"&&(e.set(null),this._publishDynamicFilling_(o,null))}),this._publishAssignement_(i),this.parent&&this._parentKey_&&this.parent._publishDynamicFilling_(this._parentKey_,this._value_.__value),!0;for(const e in this._value_)this._value_[e]===void 0&&delete this._value_[e];if(this._proxies_.forEach((e,o)=>{const n=this._value_[o];o!="_parent_"&&n===void 0&&n!==null&&isNaN(Number(o))&&(e.set(null),this._publishDynamicFilling_(o,null))}),this._publishAssignement_(),this.parent&&this._parentKey_&&this.parent._publishDynamicFilling_(this._parentKey_,this._value_),ne(this._value_))for(const e in this._value_){const o=t[e],l=ne(o)?o:{__value:o};if(!this._proxies_.has(e)){this._publishDynamicFilling_(e,o);continue}this._proxies_.get(e)?.set(l,!0),this._publishDynamicFilling_(e,o)}return!0}get(){if(rn(this),this._cachedGet_!==void 0)return this._cachedGet_;if(Object.prototype.hasOwnProperty.call(this._value_,"__value")){const t=this._value_.__value;return this._cachedGet_=t??null}return this._cachedGet_=this._value_!=null?this._value_:null}get $tag(){return this._instanceCounter_||(xe.instancesCounter++,this._instanceCounter_=xe.instancesCounter),xe.instances.set(this._instanceCounter_,this),"<"+ze+'-publisher-proxy publisher="'+this._instanceCounter_+'"></'+ze+"-publisher-proxy>"}};xe.instances=new Map,xe.instancesCounter=0;let ss=xe;const Ts=[];function rn(s){Ts.length>0&&Ts[0].add(s)}function Sr(){Ts.unshift(new Set)}function $r(){return Ts.shift()}const F=class F{constructor(){if(this.enabledLocaStorageProxies=[],this.publishers=new Map,this.localStorageData={},this.isLocalStrorageReady=null,this.initialisedData=[],F.instance!=null)throw"Singleton / use getInstance";F.instance=this,this.isLocalStrorageReady=this.cleanStorageData(),F.initPageShowHandler()}static initPageShowHandler(){F.pageShowHandlerInitialized||(F.pageShowHandlerInitialized=!0,window.addEventListener("pageshow",t=>{t.persisted&&F.getInstance().invalidateAll()}))}invalidateAll(){this.publishers.forEach(t=>{t._invalidate_on_page_show_&&t.invalidate()})}async cleanStorageData(){return new Promise(t=>{(async()=>{try{let r=localStorage.getItem(gi),e=null;if(r&&(e=await this.decompress(r,"gzip")),e)try{this.localStorageData=JSON.parse(e)}catch{this.localStorageData={}}else r=await this.compress("{}","gzip"),localStorage.setItem(gi,r),this.localStorageData={};const o=1e3*60*60*12;for(const n in this.localStorageData){const l=this.localStorageData[n],c=new Date().getTime()-(l.expirationDelayMs||o);l.lastModifiationMS<c&&delete this.localStorageData[n]}t(!0)}catch{window.requestAnimationFrame(()=>{t(!1)}),console.warn("no publisher cache in this browser")}})()})}static getInstance(t){if(t){const i=F.instances.get(t);return i||(console.warn("No PublisherManager instance registered with id:",t,"creating new one"),new F)}return F.instance==null?new F:F.instance}static get(t,i){return F.getInstance().get(t,i)}async setLocalData(t,i){await this.isLocalStrorageReady,t.set(this.localStorageData[i+"¤lang_"+Z.getLanguage()]?.data||t.get())}get(t,i){const r=i?.localStorageMode==="enabled",e=i?.invalidateOnPageShow===!0;if(!this.publishers.has(t)){const l=vi({});this.set(t,l)}const o=this.publishers.get(t);return r&&this.initialisedData.indexOf(t)===-1&&(i?.expirationDelayMs&&(o._expiration_delay_=i.expirationDelayMs),o._is_savable_=!0,this.initialisedData.push(t),this.setLocalData(o,t)),e&&(o._invalidate_on_page_show_=e),this.publishers.get(t)}set(t,i){this.publishers.set(t,i)}delete(t){return this.publishers.has(t)?(this.publishers.delete(t),!0):!1}async saveToLocalStorage(t=0){if(!(t!==F.saveId&&t%10!=0))try{if(!F.changed||F.saving)return;F.saving=!0,F.changed=!1;const i=Array.from(this.publishers.keys());let r=!1;for(const e of i){const o=this.publishers.get(e);if(!o?._is_savable_)continue;const n=o?.get();n&&(this.localStorageData[e+"¤lang_"+Z.getLanguage()]={lastModifiationMS:new Date().getTime(),expirationDelayMs:o._expiration_delay_,data:n},r=!0)}if(r){const e=await this.compress(JSON.stringify(this.localStorageData),"gzip");localStorage.setItem(gi,e)}if(F.saving=!1,F.changed){F.saveId++;const e=F.saveId;setTimeout(()=>this.saveToLocalStorage(e),1e3)}}catch{F.saving=!1}}async compress(t,i){const r=new TextEncoder().encode(t),e=window,o=new e.CompressionStream(i),n=o.writable.getWriter();n.write(r),n.close();const l=await new Response(o.readable).arrayBuffer(),c=new Uint8Array(l);let h="";for(let u=0;u<c.length;u++)h+=String.fromCharCode(c[u]);return btoa(h)}async decompress(t,i){const r=atob(t),o=Uint8Array.from(r,u=>u.charCodeAt(0)).buffer,n=window,l=new n.DecompressionStream(i),c=l.writable.getWriter();c.write(o),c.close();const h=await new Response(l.readable).arrayBuffer();return new TextDecoder().decode(h)}};F.buildDate="Thu Jul 30 2026 10:31:44 GMT+0200 (Central European Summer Time)",F.changed=!1,F.saving=!1,F.saveId=0,F.instance=null,F.instances=new Map,F.pageShowHandlerInitialized=!1;let E=F;if(typeof window<"u"){const s=window;s[Es+"PublisherManager"]=s[Es+"PublisherManager"]||E}const on=new Set(["invalidate","onInvalidate","offInvalidate","invalidateForm","onFormInvalidate","offFormInvalidate","onAssign","offAssign","startDynamicFilling","stopDynamicFilling","startTemplateFilling","stopTemplateFilling","onInternalMutation","offInternalMutation","set","get","$tag","_cachedGet_","_templateFillListeners_","_fillListeners_","_assignListeners_","_invalidateListeners_","_formInvalidateListeners_","_publishInternalMutation_","hasListener","delete","_mutationListeners_","_publishDynamicFilling_","_publishInvalidation_","_publishFormInvalidation_","_publishTemplateFilling_","_publishAssignement_","_proxies_","parent","_parentKey_","_value_","_is_savable_","_expiration_delay_","_lockInternalMutationPublishing_","_instanceCounter_","_assignmentId_","_invalidate_on_page_show_"]);function nn(s,t){return{get:function(i,r){if(typeof r=="string"&&on.has(r))return s[r];if(r==Symbol.toPrimitive)return()=>t().get();if(!s._proxies_.has(r)){const e=s._value_[r],o=vi(ne(e)?e:{__value:e},s,r);o._proxies_.set("_parent_",t()),s._proxies_.set(r,o)}return s._proxies_.get(r)},set:function(i,r,e){if(r=="_value_")return s._value_=e,!0;if(r=="_cachedGet_")return s._cachedGet_=e,!0;if(r=="_assignmentId_")return s._assignmentId_=e,!0;if(r=="_is_savable_")return s._is_savable_=e,!0;if(r=="_expiration_delay_")return s._expiration_delay_=e,!0;if(r=="_invalidate_on_page_show_")return s._invalidate_on_page_show_=e,!0;if(r=="_instanceCounter_")return s._instanceCounter_=e,!0;if(!s._proxies_.has(r)){const n=vi({},s,r);n._proxies_.set("_parent_",t()),s._proxies_.set(r,n)}return s._value_[r]!==e&&(s._value_[r]=e,s._publishDynamicFilling_(r,e),s._proxies_.get(r)?.set(ne(e)?e:{__value:e})),!0},deleteProperty:function(i,r){return s._publishDynamicFilling_(r,null),s._proxies_.get(r)?.set(null),delete s._value_[r]},has:function(i,r){return r in s._value_&&r!="_lockInternalMutationPublishing_"},defineProperty:function(i,r,e){return e&&"value"in e&&(s._value_[r]=e.value),!0},getOwnPropertyDescriptor:function(i,r){return{enumerable:!0,configurable:!0}},ownKeys:function(i){return s._value_.__value?Object.keys(s._value_.__value):Object.keys(s._value_)}}}function vi(s,t=null,i){const r=new ss(s,t,i);let e=null;const o=nn(r,()=>e);return e=new Proxy(r,o),e}class an extends HTMLElement{constructor(){super(),this.publisherId="",this.onAssign=t=>{this.innerHTML=t.toString()}}connectedCallback(){this.publisherId=this.getAttribute("publisher")||"",this.publisher=ss.instances.get(parseInt(this.publisherId)),this.publisher?.onAssign(this.onAssign)}disconnectedCallback(){this.publisher?.offAssign(this.onAssign)}}try{customElements.define(ze+"-publisher-proxy",an)}catch{}const Is=(s,t)=>{if(typeof s=="function"){const i=s;return Sr(),i(),$r()}if(typeof s=="string"){const i=s.split("."),r=i.shift()||"";let e=E.get(r,t);e=nt.traverse(e,i);const o=new Set;return o.add(e),o}return new Set([s])};function ln(s){const t=mi(s);return Is(t).values().next().value?.get()}function Ms(s,t,i){const r=mi(s);return Is(r,i).values().next().value}function cn(s,t){return Cr(t)?Ms(s,void 0,t):Ms(s)}function Ns(s,t){return Cr(t)?Ms(s,void 0,t):Ms(s)}function hn(s,t){const i=mi(s);Is(i).values().next().value?.set(t)}let Fs=(M=class{static disable(){this.enabled&&(this.enabled=!1,Array.from(M.observedElements.keys()).forEach(t=>M.unObserve(t)))}static observe(t){if(!t||!M.enabled||M.observedElements.has(t))return;const i=new MutationObserver(M.onMutation),r={};r.childList=!0,r.subtree=!0,r.attributes=!0,r.attributeFilter=["data-bind"],i.observe(t,r),t.querySelectorAll("[data-bind]").forEach(e=>M.addPublisherListeners(e)),M.observedElements.set(t,i)}static unObserve(t){if(!t)return;const i=this.observedElements.get(t);i&&(i.disconnect(),t.querySelectorAll("[data-bind]").forEach(r=>M.removePublisherListeners(r)))}static onAdded(t){t.hasAttribute&&t.hasAttribute("data-bind")&&M.addPublisherListeners(t),t.querySelectorAll?t.querySelectorAll("[data-bind]").forEach(i=>M.addPublisherListeners(i)):t.childNodes.forEach(i=>M.onAdded(i))}static onRemoved(t){t.hasAttribute&&t.hasAttribute("data-bind")&&M.removePublisherListeners(t),t.querySelectorAll?t.querySelectorAll("[data-bind]").forEach(i=>M.removePublisherListeners(i)):t.childNodes.forEach(i=>M.onRemoved(i))}static onMutation(t){for(const i of t)switch(i.type){case"attributes":M.addPublisherListeners(i.target);break;case"childList":i.addedNodes.forEach(r=>{M.onAdded(r)}),i.removedNodes.forEach(r=>{M.onRemoved(r)});break}}static removePublisherListeners(t){const i=M.publisherListeners.get(t);i&&(M.publisherListeners.delete(t),i.forEach(r=>{r.publisher?.offAssign(r.onAssign)}))}static getVariablesDescriptor(t){let i=t.match(/(\$(?:\w+\\?\.?)+)/g);return i?i=i.map(r=>r.replace("$","")):i=[t],i=i.filter(r=>r.length>0),{expression:t.replace("\\",""),variables:i.map(r=>r.split(/\b\.\b/).map(e=>e.replace("\\","")))}}static getDataBindItems(t){return"attributes"in t?Array.from(t.attributes).filter(i=>i.name.indexOf("::")==0).map(i=>({propertyToUpdate:i.name.substring(2).replace(/-((html)|\w)/g,e=>e.substring(1).toUpperCase()),bindedVariablesDescriptor:M.getVariablesDescriptor(i.value)})):[]}static getSubPublisher(t,i){if(!i)return t;for(const r of i)if(r!="_self_"){if(!t)return null;t=t[r]}return t}static addPublisherListeners(t){M.removePublisherListeners(t);const i=Z.getAncestorAttributeValue(t.parentNode||t.host||t,"dataProvider");if(!i)return;const r=E.getInstance().get(i),e=M.getDataBindItems(t),o=[];e.forEach(n=>{const l=n.bindedVariablesDescriptor,c=n.propertyToUpdate;for(const h of l.variables){const u=h;let d=r;d=M.getSubPublisher(r,u);const p=t,w={publisher:d,onAssign:()=>{const v=l.variables.map(D=>M.getSubPublisher(r,D)?.get());let m=l.expression,y=!1;if(v.length==1&&l.variables[0].join(".")==m.substring(1)){let D=v[0];D===null&&(D=""),p[c]=D;return}for(let D=0;D<v.length;D++){let f=v[D];const b=l.variables[D];f===null&&(y=!0,f=void 0),m=m.replace("$"+b.join("."),f)}if(m.indexOf("|")!=-1){const D=m.indexOf("|");if(D==0)m=Os.js(m.substring(1));else{const f=m.substring(0,D),b=m.substring(D+1),x=Os[f];m=y?"":x?x(b):m}}else m=y?"":m;p[c]=m}};d?.onAssign(w.onAssign),o.push(w)}}),M.publisherListeners.set(t,o)}},M.observedElements=new Map,M.enabled=!0,M.publisherListeners=new Map,M);Fs.observe(document.documentElement),window.SonicDataBindObserver||(window.SonicDataBindObserver=Fs);/**
1
+ (function(Z){typeof define=="function"&&define.amd?define(Z):Z()})((function(){"use strict";var M,tt;let Z=class Ft{static getLanguage(){const t=document.documentElement.lang;return localStorage.getItem("SonicSelectedLanguage")||t}static getCookies(){return document.cookie.split(";").reduce((t,i)=>{const r=i.indexOf("=");return t[i.substring(0,r).trim()]=i.substring(r+1),t},{})}static everyAncestors(t,i){for(;t;){if(!i(t))return;t=t.parentNode||t.host}}static getScrollableAncestor(t){for(;t;){const i=t;if(i.nodeType===1){const r=window.getComputedStyle(i);if(r?.overflowY==="auto"||r?.overflowY==="scroll"||r?.overflowY==="hidden"||r?.overflowX==="auto"||r?.overflowX==="scroll"||r?.overflowX==="hidden")return t}t=t.parentNode||t.host}return null}static scopeAttributeNames(t){const i=t.toLowerCase();return i===t?[t]:[t,i]}static readScopeAttributeOnElement(t,i){for(const r of Ft.scopeAttributeNames(i))if(t.hasAttribute(r))return t.getAttribute(r)??"";return null}static getAncestorAttributeValue(t,i){if(!t)return null;let r=t;for(;r;){if(r instanceof HTMLElement){const o=Ft.readScopeAttributeOnElement(r,i);if(o!=null)return o}const e=r.parentNode||r.host;if(!e)break;r=e}return null}static getApiConfiguration(t){const i=Ft.getAncestorAttributeValue(t,"token"),r=Ft.getAncestorAttributeValue(t,"addHTTPResponse")!=null,e=Ft.getAncestorAttributeValue(t,"serviceURL");let o=null,n=null;const l=Ft.getAncestorAttributeValue(t,"tokenProvider"),c=Ft.getAncestorAttributeValue(t,"eventsApiToken");i||(o=Ft.getAncestorAttributeValue(t,"userName"),n=Ft.getAncestorAttributeValue(t,"password"));const h=Ft.getAncestorAttributeValue(t,"credentials")||void 0,u=t.getAttribute("cache"),d=t.hasAttribute("blockUntilDone"),p=t.hasAttribute("keepAlive");return{serviceURL:e,token:i,userName:o,password:n,authToken:c,tokenProvider:l,addHTTPResponse:r,credentials:h,cache:u,blockUntilDone:d,keepAlive:p}}static getClosestElement(t,i){for(;!(t.nodeName&&t.nodeName.toLowerCase()===i)&&(t.parentNode||t.host);)t=t.parentNode||t.host;return t.nodeName?t:null}static getClosestForm(t){return Ft.getClosestElement(t,"form")}static getAncestorsByTagNames(t,i){const r=new Set(i.map(n=>n.toLowerCase())),e=[];let o=t.parentNode||t.host;for(;o;)o instanceof Element&&r.has(o.tagName.toLowerCase())&&e.push(o),o=o.parentNode||o.host;return e}static getAncestorsBySelectors(t,i){const r=[];let e=t.parentNode||t.host;for(;e;){if(e instanceof Element)for(const o of i)try{if(e.matches(o)){r.push(e);break}}catch{}e=e.parentNode||e.host}return r}static async loadJS(t){return new Promise(async r=>{const e=document.createElement("script");e.src=t,e.onload=()=>r(!0),e.onerror=()=>r(!0),document.head.appendChild(e)})}static async loadCSS(t){return new Promise(async r=>{const e=document.createElement("link");e.type="text/css",e.rel="stylesheet",e.href=t,e.onload=()=>r(!0),e.onerror=()=>r(!0),document.head.appendChild(e)})}};const bi=s=>{const t=document.documentElement,i=new MutationObserver(e=>{for(let o of e)o.type==="attributes"&&o.attributeName==="lang"&&s()}),r={attributes:!0,attributeFilter:["lang"]};i.observe(t,r)};let Os=class{static ucFirst(t){return typeof t!="string"?t:t.charAt(0).toUpperCase()+t.substring(1)}static minutesDuration(t,i="",r="long"){i||(i=Z.getLanguage());const e=(h,u)=>[Math.floor(h/u),h%u];function o(h,u,d){return new Intl.NumberFormat(h,{style:"unit",unit:u,unitDisplay:d}).format}const[n,l]=e(t,60),c=[];return n&&c.push(o(i,"hour",r)(n)),l&&c.push(o(i,"minute",r)(l)),new Intl.ListFormat(i,{style:"long",type:"conjunction"}).format(c)}static js(t){try{return Function("return "+t)()}catch{return""}}};class _r{constructor(t){this.path=t}toString(){return this.path}}function wr(s){return new Proxy(s,{get(t,i){if(i==="path")return t.path;if(i==="toString")return t.toString.bind(t);if(i===Symbol.toStringTag)return"DataProviderKey";if(typeof i=="symbol")return t[i];const r=t.path?`${t.path}.${String(i)}`:String(i);return wr(new _r(r))}})}const Jo=/\$\{|\{\$/;function tn(s){return Jo.test(s)}function mi(s){const t=typeof s=="string"?s:s.path;if(tn(t))throw new Error("Static publisher path required for get/set/dp. Use @subscribe, @publish, or @handle for dynamic DataProviderKey paths.");return t}const es=function(s){return this instanceof es?wr(new _r(s)):new es(s)};let nt=class oe{static shallowEqual(t,i,r=!0){const e=Object.keys(t),o=Object.keys(i);if(e.length!==o.length&&r)return!1;for(const n of e){const l=t[n],c=i[n];if(r?l!==c:l!=c)return!1}return!0}static deepEqual(t,i,r=!0){const e=Object.keys(t),o=Object.keys(i);if(e.length!==o.length&&r)return!1;for(const n of e){const l=t[n],c=i[n],h=oe.isObject(l)&&oe.isObject(c),u=r?l!==c:l!=c;if(h&&!oe.deepEqual(l,c)||!h&&u)return!1}return!0}static isObject(t){return t!=null&&typeof t=="object"}static isUndefindOrNull(t){return t==null}static isEmpty(t){return oe.isUndefindOrNull(t)?!0:Object.keys(t).length===0}static traverse(t,i,r=!1){for(const e of i){const o=t[e];if(o===void 0)return;r&&oe.isObject(o)?t=Object.assign(Array.isArray(o)?[]:{},t,o):t=t[e]}return t}static traverseDotNotation(t,i,r=!1){return oe.traverse(t,i.split("."),r)}static getURLSearchArray(t,i=""){let r=[];for(let e in t){const o=t[e];i&&(e=i+"["+e+"]"),oe.isObject(o)?r=[...r,...this.getURLSearchArray(o,e)]:r.push(`${e}=${o}`)}return r}static getURLSearchString(t){return oe.getURLSearchArray(t,"").join("&")}};const yt=nt.traverseDotNotation;let en=class{static async queueTaskPromise(){return new Promise(t=>{window.queueMicrotask(()=>t(null))})}static async delayPromise(t){return new Promise(i=>{setTimeout(i,t)})}},xr="sonic";typeof __SONIC_PREFIX__<"u"&&(xr=__SONIC_PREFIX__);let Pr=xr.replace(/-([a-z])/g,s=>s[1].toUpperCase());const Es=Pr.charAt(0).toUpperCase()+Pr.slice(1),sn=new Set(["localStorageMode","expirationDelayMs","invalidateOnPageShow"]);function Cr(s){return s==null||typeof s!="object"||Array.isArray(s)?!1:Object.keys(s).some(t=>sn.has(t))}function Ls(s){return Object.prototype.hasOwnProperty.call(s,"__value")}function ne(s){return typeof s=="object"&&s!==null}let ze="sonic";typeof __SONIC_PREFIX__>"u"&&(ze="sonic");const gi=ze=="sonic"?"publisher-proxies-data":ze+"-publisher-proxies-data",xe=class xe{constructor(t,i,r){for(this._proxies_=new Map,this._is_savable_=!1,this._expiration_delay_=1e3*60*60*12,this._invalidate_on_page_show_=!1,this._invalidateListeners_=new Set,this._formInvalidateListeners_=new Set,this._assignListeners_=new Set,this._mutationListeners_=new Set,this._fillListeners_=new Set,this._templateFillListeners_=new Set,this._lockInternalMutationPublishing_=!1,this._instanceCounter_=0,this._assignmentId_=0,this._value_=t,this.parent=i||null,this._parentKey_=r,this.root=this,this._instanceCounter_=0;this.root.parent;)this.root=this.root.parent}delete(){for(const t in this._proxies_.keys())t!="_parent_"&&this._proxies_.get(t)?.delete();this._invalidateListeners_.clear(),this._formInvalidateListeners_.clear(),this._assignListeners_.clear(),this._mutationListeners_.clear(),this._fillListeners_.clear(),this._templateFillListeners_.clear(),this._proxies_.clear(),xe.instances.delete(this._instanceCounter_)}hasListener(){return this._templateFillListeners_.size>0||this._assignListeners_.size>0||this._invalidateListeners_.size>0||this._formInvalidateListeners_.size>0||this._mutationListeners_.size>0||this._fillListeners_.size>0}_publishInternalMutation_(t=!1){if(this._mutationListeners_.forEach(i=>i()),this._is_savable_&&!E.changed){E.changed=!0,E.saveId++;const i=E.saveId;setTimeout(()=>E.getInstance().saveToLocalStorage(i),1e3)}t||this.parent&&this.parent._publishInternalMutation_()}async _publishAssignement_(t=!1){if(this._assignmentId_++,this._assignmentId_!==this._assignmentId_)return;const r=this.get();this._assignListeners_.forEach(e=>{e(r)}),this._publishInternalMutation_(t)}_publishInvalidation_(){this._invalidateListeners_.forEach(t=>t())}_publishFormInvalidation_(){this._formInvalidateListeners_.forEach(t=>t())}_publishDynamicFilling_(t,i){this._fillListeners_.forEach(r=>{r[t]!==i&&(r[t]=i)}),this._publishTemplateFilling_(t,i)}_publishTemplateFilling_(t,i){this._templateFillListeners_.forEach(r=>{const e=Object.getOwnPropertyDescriptor(r,t);e&&!e.set&&!e.writable||(r.propertyMap&&r.propertyMap[t]&&(t=r.propertyMap[t]),typeof r[t]<"u"&&r[t]!==i&&(r[t]=i))})}onAssign(t,i=!0){typeof t=="function"&&(this._assignListeners_.has(t)||(this._assignListeners_.add(t),i&&t(this.get())))}offAssign(t){this._assignListeners_.delete(t)}onInvalidate(t){typeof t=="function"&&this._invalidateListeners_.add(t)}offInvalidate(t){typeof t=="function"&&this._invalidateListeners_.delete(t)}invalidate(){this._publishInvalidation_()}onFormInvalidate(t){typeof t=="function"&&this._formInvalidateListeners_.add(t)}offFormInvalidate(t){typeof t=="function"&&this._formInvalidateListeners_.delete(t)}invalidateForm(){this._publishFormInvalidation_()}onInternalMutation(t){typeof t=="function"&&(this._mutationListeners_.add(t),t())}offInternalMutation(t){typeof t=="function"&&this._mutationListeners_.delete(t)}startTemplateFilling(t){if(this._templateFillListeners_.add(t),typeof this._value_=="object")for(const i in this._value_){let r=i;const e=this._value_[i];t.propertyMap&&t.propertyMap[i]&&(r=t.propertyMap[i]),typeof t[i]<"u"&&t[i]!==e&&(t[r]=e)}}stopTemplateFilling(t){this._templateFillListeners_.delete(t)}startDynamicFilling(t){this._fillListeners_.add(t);for(const i in this._value_){const r=this._value_[i];t[i]!==r&&(t[i]=r)}}stopDynamicFilling(t){this._fillListeners_.delete(t)}set(t,i=!1){if(this._value_===t||ne(this._value_)&&ne(t)&&t&&Ls(this._value_)&&Ls(t)&&this._value_.__value===t.__value||!ne(t)&&t===this._value_.__value)return!0;this._value_=ne(t)?t:{__value:t},this._cachedGet_=void 0;const r=Ls(this._value_);if(this._parentKey_&&this.parent){const e=Ls(this._value_)?this._value_.__value:this._value_;if(this.parent?.get()==null&&this.parent?.get()==null)if(isNaN(Number(this._parentKey_)))this.parent.set({[this._parentKey_]:e});else{const o=[];o[Number(this._parentKey_)]=e,this.parent.set(o)}else this.parent._value_[this._parentKey_]=e}if(r)return this._proxies_.forEach((e,o)=>{o!="_parent_"&&(e.set(null),this._publishDynamicFilling_(o,null))}),this._publishAssignement_(i),this.parent&&this._parentKey_&&this.parent._publishDynamicFilling_(this._parentKey_,this._value_.__value),!0;for(const e in this._value_)this._value_[e]===void 0&&delete this._value_[e];if(this._proxies_.forEach((e,o)=>{const n=this._value_[o];o!="_parent_"&&n===void 0&&n!==null&&isNaN(Number(o))&&(e.set(null),this._publishDynamicFilling_(o,null))}),this._publishAssignement_(),this.parent&&this._parentKey_&&this.parent._publishDynamicFilling_(this._parentKey_,this._value_),ne(this._value_))for(const e in this._value_){const o=t[e],l=ne(o)?o:{__value:o};if(!this._proxies_.has(e)){this._publishDynamicFilling_(e,o);continue}this._proxies_.get(e)?.set(l,!0),this._publishDynamicFilling_(e,o)}return!0}get(){if(rn(this),this._cachedGet_!==void 0)return this._cachedGet_;if(Object.prototype.hasOwnProperty.call(this._value_,"__value")){const t=this._value_.__value;return this._cachedGet_=t??null}return this._cachedGet_=this._value_!=null?this._value_:null}get $tag(){return this._instanceCounter_||(xe.instancesCounter++,this._instanceCounter_=xe.instancesCounter),xe.instances.set(this._instanceCounter_,this),"<"+ze+'-publisher-proxy publisher="'+this._instanceCounter_+'"></'+ze+"-publisher-proxy>"}};xe.instances=new Map,xe.instancesCounter=0;let ss=xe;const Ts=[];function rn(s){Ts.length>0&&Ts[0].add(s)}function Sr(){Ts.unshift(new Set)}function $r(){return Ts.shift()}const F=class F{constructor(){if(this.enabledLocaStorageProxies=[],this.publishers=new Map,this.localStorageData={},this.isLocalStrorageReady=null,this.initialisedData=[],F.instance!=null)throw"Singleton / use getInstance";F.instance=this,this.isLocalStrorageReady=this.cleanStorageData(),F.initPageShowHandler()}static initPageShowHandler(){F.pageShowHandlerInitialized||(F.pageShowHandlerInitialized=!0,window.addEventListener("pageshow",t=>{t.persisted&&F.getInstance().invalidateAll()}))}invalidateAll(){this.publishers.forEach(t=>{t._invalidate_on_page_show_&&t.invalidate()})}async cleanStorageData(){return new Promise(t=>{(async()=>{try{let r=localStorage.getItem(gi),e=null;if(r&&(e=await this.decompress(r,"gzip")),e)try{this.localStorageData=JSON.parse(e)}catch{this.localStorageData={}}else r=await this.compress("{}","gzip"),localStorage.setItem(gi,r),this.localStorageData={};const o=1e3*60*60*12;for(const n in this.localStorageData){const l=this.localStorageData[n],c=new Date().getTime()-(l.expirationDelayMs||o);l.lastModifiationMS<c&&delete this.localStorageData[n]}t(!0)}catch{window.requestAnimationFrame(()=>{t(!1)}),console.warn("no publisher cache in this browser")}})()})}static getInstance(t){if(t){const i=F.instances.get(t);return i||(console.warn("No PublisherManager instance registered with id:",t,"creating new one"),new F)}return F.instance==null?new F:F.instance}static get(t,i){return F.getInstance().get(t,i)}async setLocalData(t,i){await this.isLocalStrorageReady,t.set(this.localStorageData[i+"¤lang_"+Z.getLanguage()]?.data||t.get())}get(t,i){const r=i?.localStorageMode==="enabled",e=i?.invalidateOnPageShow===!0;if(!this.publishers.has(t)){const l=vi({});this.set(t,l)}const o=this.publishers.get(t);return r&&this.initialisedData.indexOf(t)===-1&&(i?.expirationDelayMs&&(o._expiration_delay_=i.expirationDelayMs),o._is_savable_=!0,this.initialisedData.push(t),this.setLocalData(o,t)),e&&(o._invalidate_on_page_show_=e),this.publishers.get(t)}set(t,i){this.publishers.set(t,i)}delete(t){return this.publishers.has(t)?(this.publishers.delete(t),!0):!1}async saveToLocalStorage(t=0){if(!(t!==F.saveId&&t%10!=0))try{if(!F.changed||F.saving)return;F.saving=!0,F.changed=!1;const i=Array.from(this.publishers.keys());let r=!1;for(const e of i){const o=this.publishers.get(e);if(!o?._is_savable_)continue;const n=o?.get();n&&(this.localStorageData[e+"¤lang_"+Z.getLanguage()]={lastModifiationMS:new Date().getTime(),expirationDelayMs:o._expiration_delay_,data:n},r=!0)}if(r){const e=await this.compress(JSON.stringify(this.localStorageData),"gzip");localStorage.setItem(gi,e)}if(F.saving=!1,F.changed){F.saveId++;const e=F.saveId;setTimeout(()=>this.saveToLocalStorage(e),1e3)}}catch{F.saving=!1}}async compress(t,i){const r=new TextEncoder().encode(t),e=window,o=new e.CompressionStream(i),n=o.writable.getWriter();n.write(r),n.close();const l=await new Response(o.readable).arrayBuffer(),c=new Uint8Array(l);let h="";for(let u=0;u<c.length;u++)h+=String.fromCharCode(c[u]);return btoa(h)}async decompress(t,i){const r=atob(t),o=Uint8Array.from(r,u=>u.charCodeAt(0)).buffer,n=window,l=new n.DecompressionStream(i),c=l.writable.getWriter();c.write(o),c.close();const h=await new Response(l.readable).arrayBuffer();return new TextDecoder().decode(h)}};F.buildDate="Thu Jul 30 2026 13:16:38 GMT+0200 (Central European Summer Time)",F.changed=!1,F.saving=!1,F.saveId=0,F.instance=null,F.instances=new Map,F.pageShowHandlerInitialized=!1;let E=F;if(typeof window<"u"){const s=window;s[Es+"PublisherManager"]=s[Es+"PublisherManager"]||E}const on=new Set(["invalidate","onInvalidate","offInvalidate","invalidateForm","onFormInvalidate","offFormInvalidate","onAssign","offAssign","startDynamicFilling","stopDynamicFilling","startTemplateFilling","stopTemplateFilling","onInternalMutation","offInternalMutation","set","get","$tag","_cachedGet_","_templateFillListeners_","_fillListeners_","_assignListeners_","_invalidateListeners_","_formInvalidateListeners_","_publishInternalMutation_","hasListener","delete","_mutationListeners_","_publishDynamicFilling_","_publishInvalidation_","_publishFormInvalidation_","_publishTemplateFilling_","_publishAssignement_","_proxies_","parent","_parentKey_","_value_","_is_savable_","_expiration_delay_","_lockInternalMutationPublishing_","_instanceCounter_","_assignmentId_","_invalidate_on_page_show_"]);function nn(s,t){return{get:function(i,r){if(typeof r=="string"&&on.has(r))return s[r];if(r==Symbol.toPrimitive)return()=>t().get();if(!s._proxies_.has(r)){const e=s._value_[r],o=vi(ne(e)?e:{__value:e},s,r);o._proxies_.set("_parent_",t()),s._proxies_.set(r,o)}return s._proxies_.get(r)},set:function(i,r,e){if(r=="_value_")return s._value_=e,!0;if(r=="_cachedGet_")return s._cachedGet_=e,!0;if(r=="_assignmentId_")return s._assignmentId_=e,!0;if(r=="_is_savable_")return s._is_savable_=e,!0;if(r=="_expiration_delay_")return s._expiration_delay_=e,!0;if(r=="_invalidate_on_page_show_")return s._invalidate_on_page_show_=e,!0;if(r=="_instanceCounter_")return s._instanceCounter_=e,!0;if(!s._proxies_.has(r)){const n=vi({},s,r);n._proxies_.set("_parent_",t()),s._proxies_.set(r,n)}return s._value_[r]!==e&&(s._value_[r]=e,s._publishDynamicFilling_(r,e),s._proxies_.get(r)?.set(ne(e)?e:{__value:e})),!0},deleteProperty:function(i,r){return s._publishDynamicFilling_(r,null),s._proxies_.get(r)?.set(null),delete s._value_[r]},has:function(i,r){return r in s._value_&&r!="_lockInternalMutationPublishing_"},defineProperty:function(i,r,e){return e&&"value"in e&&(s._value_[r]=e.value),!0},getOwnPropertyDescriptor:function(i,r){return{enumerable:!0,configurable:!0}},ownKeys:function(i){return s._value_.__value?Object.keys(s._value_.__value):Object.keys(s._value_)}}}function vi(s,t=null,i){const r=new ss(s,t,i);let e=null;const o=nn(r,()=>e);return e=new Proxy(r,o),e}class an extends HTMLElement{constructor(){super(),this.publisherId="",this.onAssign=t=>{this.innerHTML=t.toString()}}connectedCallback(){this.publisherId=this.getAttribute("publisher")||"",this.publisher=ss.instances.get(parseInt(this.publisherId)),this.publisher?.onAssign(this.onAssign)}disconnectedCallback(){this.publisher?.offAssign(this.onAssign)}}try{customElements.define(ze+"-publisher-proxy",an)}catch{}const Is=(s,t)=>{if(typeof s=="function"){const i=s;return Sr(),i(),$r()}if(typeof s=="string"){const i=s.split("."),r=i.shift()||"";let e=E.get(r,t);e=nt.traverse(e,i);const o=new Set;return o.add(e),o}return new Set([s])};function ln(s){const t=mi(s);return Is(t).values().next().value?.get()}function Ms(s,t,i){const r=mi(s);return Is(r,i).values().next().value}function cn(s,t){return Cr(t)?Ms(s,void 0,t):Ms(s)}function Ns(s,t){return Cr(t)?Ms(s,void 0,t):Ms(s)}function hn(s,t){const i=mi(s);Is(i).values().next().value?.set(t)}let Fs=(M=class{static disable(){this.enabled&&(this.enabled=!1,Array.from(M.observedElements.keys()).forEach(t=>M.unObserve(t)))}static observe(t){if(!t||!M.enabled||M.observedElements.has(t))return;const i=new MutationObserver(M.onMutation),r={};r.childList=!0,r.subtree=!0,r.attributes=!0,r.attributeFilter=["data-bind"],i.observe(t,r),t.querySelectorAll("[data-bind]").forEach(e=>M.addPublisherListeners(e)),M.observedElements.set(t,i)}static unObserve(t){if(!t)return;const i=this.observedElements.get(t);i&&(i.disconnect(),t.querySelectorAll("[data-bind]").forEach(r=>M.removePublisherListeners(r)))}static onAdded(t){t.hasAttribute&&t.hasAttribute("data-bind")&&M.addPublisherListeners(t),t.querySelectorAll?t.querySelectorAll("[data-bind]").forEach(i=>M.addPublisherListeners(i)):t.childNodes.forEach(i=>M.onAdded(i))}static onRemoved(t){t.hasAttribute&&t.hasAttribute("data-bind")&&M.removePublisherListeners(t),t.querySelectorAll?t.querySelectorAll("[data-bind]").forEach(i=>M.removePublisherListeners(i)):t.childNodes.forEach(i=>M.onRemoved(i))}static onMutation(t){for(const i of t)switch(i.type){case"attributes":M.addPublisherListeners(i.target);break;case"childList":i.addedNodes.forEach(r=>{M.onAdded(r)}),i.removedNodes.forEach(r=>{M.onRemoved(r)});break}}static removePublisherListeners(t){const i=M.publisherListeners.get(t);i&&(M.publisherListeners.delete(t),i.forEach(r=>{r.publisher?.offAssign(r.onAssign)}))}static getVariablesDescriptor(t){let i=t.match(/(\$(?:\w+\\?\.?)+)/g);return i?i=i.map(r=>r.replace("$","")):i=[t],i=i.filter(r=>r.length>0),{expression:t.replace("\\",""),variables:i.map(r=>r.split(/\b\.\b/).map(e=>e.replace("\\","")))}}static getDataBindItems(t){return"attributes"in t?Array.from(t.attributes).filter(i=>i.name.indexOf("::")==0).map(i=>({propertyToUpdate:i.name.substring(2).replace(/-((html)|\w)/g,e=>e.substring(1).toUpperCase()),bindedVariablesDescriptor:M.getVariablesDescriptor(i.value)})):[]}static getSubPublisher(t,i){if(!i)return t;for(const r of i)if(r!="_self_"){if(!t)return null;t=t[r]}return t}static addPublisherListeners(t){M.removePublisherListeners(t);const i=Z.getAncestorAttributeValue(t.parentNode||t.host||t,"dataProvider");if(!i)return;const r=E.getInstance().get(i),e=M.getDataBindItems(t),o=[];e.forEach(n=>{const l=n.bindedVariablesDescriptor,c=n.propertyToUpdate;for(const h of l.variables){const u=h;let d=r;d=M.getSubPublisher(r,u);const p=t,w={publisher:d,onAssign:()=>{const v=l.variables.map(D=>M.getSubPublisher(r,D)?.get());let m=l.expression,y=!1;if(v.length==1&&l.variables[0].join(".")==m.substring(1)){let D=v[0];D===null&&(D=""),p[c]=D;return}for(let D=0;D<v.length;D++){let f=v[D];const b=l.variables[D];f===null&&(y=!0,f=void 0),m=m.replace("$"+b.join("."),f)}if(m.indexOf("|")!=-1){const D=m.indexOf("|");if(D==0)m=Os.js(m.substring(1));else{const f=m.substring(0,D),b=m.substring(D+1),x=Os[f];m=y?"":x?x(b):m}}else m=y?"":m;p[c]=m}};d?.onAssign(w.onAssign),o.push(w)}}),M.publisherListeners.set(t,o)}},M.observedElements=new Map,M.enabled=!0,M.publisherListeners=new Map,M);Fs.observe(document.documentElement),window.SonicDataBindObserver||(window.SonicDataBindObserver=Fs);/**
2
2
  * @license
3
3
  * Copyright 2017 Google LLC
4
4
  * SPDX-License-Identifier: BSD-3-Clause
@@ -742,7 +742,7 @@ const j = class j {
742
742
  return new TextDecoder().decode(h);
743
743
  }
744
744
  };
745
- j.buildDate = "Thu Jul 30 2026 10:31:44 GMT+0200 (Central European Summer Time)", j.changed = !1, j.saving = !1, j.saveId = 0, j.instance = null, j.instances = /* @__PURE__ */ new Map(), j.pageShowHandlerInitialized = !1;
745
+ j.buildDate = "Thu Jul 30 2026 13:16:38 GMT+0200 (Central European Summer Time)", j.changed = !1, j.saving = !1, j.saveId = 0, j.instance = null, j.instances = /* @__PURE__ */ new Map(), j.pageShowHandlerInitialized = !1;
746
746
  let E = j;
747
747
  if (typeof window < "u") {
748
748
  const s = window;
@@ -1,4 +1,4 @@
1
- (function(Z){typeof define=="function"&&define.amd?define(Z):Z()})((function(){"use strict";var M,tt;let Z=class Ft{static getLanguage(){const t=document.documentElement.lang;return localStorage.getItem("SonicSelectedLanguage")||t}static getCookies(){return document.cookie.split(";").reduce((t,i)=>{const r=i.indexOf("=");return t[i.substring(0,r).trim()]=i.substring(r+1),t},{})}static everyAncestors(t,i){for(;t;){if(!i(t))return;t=t.parentNode||t.host}}static getScrollableAncestor(t){for(;t;){const i=t;if(i.nodeType===1){const r=window.getComputedStyle(i);if(r?.overflowY==="auto"||r?.overflowY==="scroll"||r?.overflowY==="hidden"||r?.overflowX==="auto"||r?.overflowX==="scroll"||r?.overflowX==="hidden")return t}t=t.parentNode||t.host}return null}static scopeAttributeNames(t){const i=t.toLowerCase();return i===t?[t]:[t,i]}static readScopeAttributeOnElement(t,i){for(const r of Ft.scopeAttributeNames(i))if(t.hasAttribute(r))return t.getAttribute(r)??"";return null}static getAncestorAttributeValue(t,i){if(!t)return null;let r=t;for(;r;){if(r instanceof HTMLElement){const o=Ft.readScopeAttributeOnElement(r,i);if(o!=null)return o}const e=r.parentNode||r.host;if(!e)break;r=e}return null}static getApiConfiguration(t){const i=Ft.getAncestorAttributeValue(t,"token"),r=Ft.getAncestorAttributeValue(t,"addHTTPResponse")!=null,e=Ft.getAncestorAttributeValue(t,"serviceURL");let o=null,n=null;const l=Ft.getAncestorAttributeValue(t,"tokenProvider"),c=Ft.getAncestorAttributeValue(t,"eventsApiToken");i||(o=Ft.getAncestorAttributeValue(t,"userName"),n=Ft.getAncestorAttributeValue(t,"password"));const h=Ft.getAncestorAttributeValue(t,"credentials")||void 0,u=t.getAttribute("cache"),d=t.hasAttribute("blockUntilDone"),p=t.hasAttribute("keepAlive");return{serviceURL:e,token:i,userName:o,password:n,authToken:c,tokenProvider:l,addHTTPResponse:r,credentials:h,cache:u,blockUntilDone:d,keepAlive:p}}static getClosestElement(t,i){for(;!(t.nodeName&&t.nodeName.toLowerCase()===i)&&(t.parentNode||t.host);)t=t.parentNode||t.host;return t.nodeName?t:null}static getClosestForm(t){return Ft.getClosestElement(t,"form")}static getAncestorsByTagNames(t,i){const r=new Set(i.map(n=>n.toLowerCase())),e=[];let o=t.parentNode||t.host;for(;o;)o instanceof Element&&r.has(o.tagName.toLowerCase())&&e.push(o),o=o.parentNode||o.host;return e}static getAncestorsBySelectors(t,i){const r=[];let e=t.parentNode||t.host;for(;e;){if(e instanceof Element)for(const o of i)try{if(e.matches(o)){r.push(e);break}}catch{}e=e.parentNode||e.host}return r}static async loadJS(t){return new Promise(async r=>{const e=document.createElement("script");e.src=t,e.onload=()=>r(!0),e.onerror=()=>r(!0),document.head.appendChild(e)})}static async loadCSS(t){return new Promise(async r=>{const e=document.createElement("link");e.type="text/css",e.rel="stylesheet",e.href=t,e.onload=()=>r(!0),e.onerror=()=>r(!0),document.head.appendChild(e)})}};const bi=s=>{const t=document.documentElement,i=new MutationObserver(e=>{for(let o of e)o.type==="attributes"&&o.attributeName==="lang"&&s()}),r={attributes:!0,attributeFilter:["lang"]};i.observe(t,r)};let Os=class{static ucFirst(t){return typeof t!="string"?t:t.charAt(0).toUpperCase()+t.substring(1)}static minutesDuration(t,i="",r="long"){i||(i=Z.getLanguage());const e=(h,u)=>[Math.floor(h/u),h%u];function o(h,u,d){return new Intl.NumberFormat(h,{style:"unit",unit:u,unitDisplay:d}).format}const[n,l]=e(t,60),c=[];return n&&c.push(o(i,"hour",r)(n)),l&&c.push(o(i,"minute",r)(l)),new Intl.ListFormat(i,{style:"long",type:"conjunction"}).format(c)}static js(t){try{return Function("return "+t)()}catch{return""}}};class _r{constructor(t){this.path=t}toString(){return this.path}}function wr(s){return new Proxy(s,{get(t,i){if(i==="path")return t.path;if(i==="toString")return t.toString.bind(t);if(i===Symbol.toStringTag)return"DataProviderKey";if(typeof i=="symbol")return t[i];const r=t.path?`${t.path}.${String(i)}`:String(i);return wr(new _r(r))}})}const Jo=/\$\{|\{\$/;function tn(s){return Jo.test(s)}function mi(s){const t=typeof s=="string"?s:s.path;if(tn(t))throw new Error("Static publisher path required for get/set/dp. Use @subscribe, @publish, or @handle for dynamic DataProviderKey paths.");return t}const es=function(s){return this instanceof es?wr(new _r(s)):new es(s)};let nt=class oe{static shallowEqual(t,i,r=!0){const e=Object.keys(t),o=Object.keys(i);if(e.length!==o.length&&r)return!1;for(const n of e){const l=t[n],c=i[n];if(r?l!==c:l!=c)return!1}return!0}static deepEqual(t,i,r=!0){const e=Object.keys(t),o=Object.keys(i);if(e.length!==o.length&&r)return!1;for(const n of e){const l=t[n],c=i[n],h=oe.isObject(l)&&oe.isObject(c),u=r?l!==c:l!=c;if(h&&!oe.deepEqual(l,c)||!h&&u)return!1}return!0}static isObject(t){return t!=null&&typeof t=="object"}static isUndefindOrNull(t){return t==null}static isEmpty(t){return oe.isUndefindOrNull(t)?!0:Object.keys(t).length===0}static traverse(t,i,r=!1){for(const e of i){const o=t[e];if(o===void 0)return;r&&oe.isObject(o)?t=Object.assign(Array.isArray(o)?[]:{},t,o):t=t[e]}return t}static traverseDotNotation(t,i,r=!1){return oe.traverse(t,i.split("."),r)}static getURLSearchArray(t,i=""){let r=[];for(let e in t){const o=t[e];i&&(e=i+"["+e+"]"),oe.isObject(o)?r=[...r,...this.getURLSearchArray(o,e)]:r.push(`${e}=${o}`)}return r}static getURLSearchString(t){return oe.getURLSearchArray(t,"").join("&")}};const yt=nt.traverseDotNotation;let en=class{static async queueTaskPromise(){return new Promise(t=>{window.queueMicrotask(()=>t(null))})}static async delayPromise(t){return new Promise(i=>{setTimeout(i,t)})}},xr="sonic";typeof __SONIC_PREFIX__<"u"&&(xr=__SONIC_PREFIX__);let Pr=xr.replace(/-([a-z])/g,s=>s[1].toUpperCase());const Es=Pr.charAt(0).toUpperCase()+Pr.slice(1),sn=new Set(["localStorageMode","expirationDelayMs","invalidateOnPageShow"]);function Cr(s){return s==null||typeof s!="object"||Array.isArray(s)?!1:Object.keys(s).some(t=>sn.has(t))}function Ls(s){return Object.prototype.hasOwnProperty.call(s,"__value")}function ne(s){return typeof s=="object"&&s!==null}let ze="sonic";typeof __SONIC_PREFIX__>"u"&&(ze="sonic");const gi=ze=="sonic"?"publisher-proxies-data":ze+"-publisher-proxies-data",xe=class xe{constructor(t,i,r){for(this._proxies_=new Map,this._is_savable_=!1,this._expiration_delay_=1e3*60*60*12,this._invalidate_on_page_show_=!1,this._invalidateListeners_=new Set,this._formInvalidateListeners_=new Set,this._assignListeners_=new Set,this._mutationListeners_=new Set,this._fillListeners_=new Set,this._templateFillListeners_=new Set,this._lockInternalMutationPublishing_=!1,this._instanceCounter_=0,this._assignmentId_=0,this._value_=t,this.parent=i||null,this._parentKey_=r,this.root=this,this._instanceCounter_=0;this.root.parent;)this.root=this.root.parent}delete(){for(const t in this._proxies_.keys())t!="_parent_"&&this._proxies_.get(t)?.delete();this._invalidateListeners_.clear(),this._formInvalidateListeners_.clear(),this._assignListeners_.clear(),this._mutationListeners_.clear(),this._fillListeners_.clear(),this._templateFillListeners_.clear(),this._proxies_.clear(),xe.instances.delete(this._instanceCounter_)}hasListener(){return this._templateFillListeners_.size>0||this._assignListeners_.size>0||this._invalidateListeners_.size>0||this._formInvalidateListeners_.size>0||this._mutationListeners_.size>0||this._fillListeners_.size>0}_publishInternalMutation_(t=!1){if(this._mutationListeners_.forEach(i=>i()),this._is_savable_&&!E.changed){E.changed=!0,E.saveId++;const i=E.saveId;setTimeout(()=>E.getInstance().saveToLocalStorage(i),1e3)}t||this.parent&&this.parent._publishInternalMutation_()}async _publishAssignement_(t=!1){if(this._assignmentId_++,this._assignmentId_!==this._assignmentId_)return;const r=this.get();this._assignListeners_.forEach(e=>{e(r)}),this._publishInternalMutation_(t)}_publishInvalidation_(){this._invalidateListeners_.forEach(t=>t())}_publishFormInvalidation_(){this._formInvalidateListeners_.forEach(t=>t())}_publishDynamicFilling_(t,i){this._fillListeners_.forEach(r=>{r[t]!==i&&(r[t]=i)}),this._publishTemplateFilling_(t,i)}_publishTemplateFilling_(t,i){this._templateFillListeners_.forEach(r=>{const e=Object.getOwnPropertyDescriptor(r,t);e&&!e.set&&!e.writable||(r.propertyMap&&r.propertyMap[t]&&(t=r.propertyMap[t]),typeof r[t]<"u"&&r[t]!==i&&(r[t]=i))})}onAssign(t,i=!0){typeof t=="function"&&(this._assignListeners_.has(t)||(this._assignListeners_.add(t),i&&t(this.get())))}offAssign(t){this._assignListeners_.delete(t)}onInvalidate(t){typeof t=="function"&&this._invalidateListeners_.add(t)}offInvalidate(t){typeof t=="function"&&this._invalidateListeners_.delete(t)}invalidate(){this._publishInvalidation_()}onFormInvalidate(t){typeof t=="function"&&this._formInvalidateListeners_.add(t)}offFormInvalidate(t){typeof t=="function"&&this._formInvalidateListeners_.delete(t)}invalidateForm(){this._publishFormInvalidation_()}onInternalMutation(t){typeof t=="function"&&(this._mutationListeners_.add(t),t())}offInternalMutation(t){typeof t=="function"&&this._mutationListeners_.delete(t)}startTemplateFilling(t){if(this._templateFillListeners_.add(t),typeof this._value_=="object")for(const i in this._value_){let r=i;const e=this._value_[i];t.propertyMap&&t.propertyMap[i]&&(r=t.propertyMap[i]),typeof t[i]<"u"&&t[i]!==e&&(t[r]=e)}}stopTemplateFilling(t){this._templateFillListeners_.delete(t)}startDynamicFilling(t){this._fillListeners_.add(t);for(const i in this._value_){const r=this._value_[i];t[i]!==r&&(t[i]=r)}}stopDynamicFilling(t){this._fillListeners_.delete(t)}set(t,i=!1){if(this._value_===t||ne(this._value_)&&ne(t)&&t&&Ls(this._value_)&&Ls(t)&&this._value_.__value===t.__value||!ne(t)&&t===this._value_.__value)return!0;this._value_=ne(t)?t:{__value:t},this._cachedGet_=void 0;const r=Ls(this._value_);if(this._parentKey_&&this.parent){const e=Ls(this._value_)?this._value_.__value:this._value_;if(this.parent?.get()==null&&this.parent?.get()==null)if(isNaN(Number(this._parentKey_)))this.parent.set({[this._parentKey_]:e});else{const o=[];o[Number(this._parentKey_)]=e,this.parent.set(o)}else this.parent._value_[this._parentKey_]=e}if(r)return this._proxies_.forEach((e,o)=>{o!="_parent_"&&(e.set(null),this._publishDynamicFilling_(o,null))}),this._publishAssignement_(i),this.parent&&this._parentKey_&&this.parent._publishDynamicFilling_(this._parentKey_,this._value_.__value),!0;for(const e in this._value_)this._value_[e]===void 0&&delete this._value_[e];if(this._proxies_.forEach((e,o)=>{const n=this._value_[o];o!="_parent_"&&n===void 0&&n!==null&&isNaN(Number(o))&&(e.set(null),this._publishDynamicFilling_(o,null))}),this._publishAssignement_(),this.parent&&this._parentKey_&&this.parent._publishDynamicFilling_(this._parentKey_,this._value_),ne(this._value_))for(const e in this._value_){const o=t[e],l=ne(o)?o:{__value:o};if(!this._proxies_.has(e)){this._publishDynamicFilling_(e,o);continue}this._proxies_.get(e)?.set(l,!0),this._publishDynamicFilling_(e,o)}return!0}get(){if(rn(this),this._cachedGet_!==void 0)return this._cachedGet_;if(Object.prototype.hasOwnProperty.call(this._value_,"__value")){const t=this._value_.__value;return this._cachedGet_=t??null}return this._cachedGet_=this._value_!=null?this._value_:null}get $tag(){return this._instanceCounter_||(xe.instancesCounter++,this._instanceCounter_=xe.instancesCounter),xe.instances.set(this._instanceCounter_,this),"<"+ze+'-publisher-proxy publisher="'+this._instanceCounter_+'"></'+ze+"-publisher-proxy>"}};xe.instances=new Map,xe.instancesCounter=0;let ss=xe;const Ts=[];function rn(s){Ts.length>0&&Ts[0].add(s)}function Sr(){Ts.unshift(new Set)}function $r(){return Ts.shift()}const F=class F{constructor(){if(this.enabledLocaStorageProxies=[],this.publishers=new Map,this.localStorageData={},this.isLocalStrorageReady=null,this.initialisedData=[],F.instance!=null)throw"Singleton / use getInstance";F.instance=this,this.isLocalStrorageReady=this.cleanStorageData(),F.initPageShowHandler()}static initPageShowHandler(){F.pageShowHandlerInitialized||(F.pageShowHandlerInitialized=!0,window.addEventListener("pageshow",t=>{t.persisted&&F.getInstance().invalidateAll()}))}invalidateAll(){this.publishers.forEach(t=>{t._invalidate_on_page_show_&&t.invalidate()})}async cleanStorageData(){return new Promise(t=>{(async()=>{try{let r=localStorage.getItem(gi),e=null;if(r&&(e=await this.decompress(r,"gzip")),e)try{this.localStorageData=JSON.parse(e)}catch{this.localStorageData={}}else r=await this.compress("{}","gzip"),localStorage.setItem(gi,r),this.localStorageData={};const o=1e3*60*60*12;for(const n in this.localStorageData){const l=this.localStorageData[n],c=new Date().getTime()-(l.expirationDelayMs||o);l.lastModifiationMS<c&&delete this.localStorageData[n]}t(!0)}catch{window.requestAnimationFrame(()=>{t(!1)}),console.warn("no publisher cache in this browser")}})()})}static getInstance(t){if(t){const i=F.instances.get(t);return i||(console.warn("No PublisherManager instance registered with id:",t,"creating new one"),new F)}return F.instance==null?new F:F.instance}static get(t,i){return F.getInstance().get(t,i)}async setLocalData(t,i){await this.isLocalStrorageReady,t.set(this.localStorageData[i+"¤lang_"+Z.getLanguage()]?.data||t.get())}get(t,i){const r=i?.localStorageMode==="enabled",e=i?.invalidateOnPageShow===!0;if(!this.publishers.has(t)){const l=vi({});this.set(t,l)}const o=this.publishers.get(t);return r&&this.initialisedData.indexOf(t)===-1&&(i?.expirationDelayMs&&(o._expiration_delay_=i.expirationDelayMs),o._is_savable_=!0,this.initialisedData.push(t),this.setLocalData(o,t)),e&&(o._invalidate_on_page_show_=e),this.publishers.get(t)}set(t,i){this.publishers.set(t,i)}delete(t){return this.publishers.has(t)?(this.publishers.delete(t),!0):!1}async saveToLocalStorage(t=0){if(!(t!==F.saveId&&t%10!=0))try{if(!F.changed||F.saving)return;F.saving=!0,F.changed=!1;const i=Array.from(this.publishers.keys());let r=!1;for(const e of i){const o=this.publishers.get(e);if(!o?._is_savable_)continue;const n=o?.get();n&&(this.localStorageData[e+"¤lang_"+Z.getLanguage()]={lastModifiationMS:new Date().getTime(),expirationDelayMs:o._expiration_delay_,data:n},r=!0)}if(r){const e=await this.compress(JSON.stringify(this.localStorageData),"gzip");localStorage.setItem(gi,e)}if(F.saving=!1,F.changed){F.saveId++;const e=F.saveId;setTimeout(()=>this.saveToLocalStorage(e),1e3)}}catch{F.saving=!1}}async compress(t,i){const r=new TextEncoder().encode(t),e=window,o=new e.CompressionStream(i),n=o.writable.getWriter();n.write(r),n.close();const l=await new Response(o.readable).arrayBuffer(),c=new Uint8Array(l);let h="";for(let u=0;u<c.length;u++)h+=String.fromCharCode(c[u]);return btoa(h)}async decompress(t,i){const r=atob(t),o=Uint8Array.from(r,u=>u.charCodeAt(0)).buffer,n=window,l=new n.DecompressionStream(i),c=l.writable.getWriter();c.write(o),c.close();const h=await new Response(l.readable).arrayBuffer();return new TextDecoder().decode(h)}};F.buildDate="Thu Jul 30 2026 10:31:44 GMT+0200 (Central European Summer Time)",F.changed=!1,F.saving=!1,F.saveId=0,F.instance=null,F.instances=new Map,F.pageShowHandlerInitialized=!1;let E=F;if(typeof window<"u"){const s=window;s[Es+"PublisherManager"]=s[Es+"PublisherManager"]||E}const on=new Set(["invalidate","onInvalidate","offInvalidate","invalidateForm","onFormInvalidate","offFormInvalidate","onAssign","offAssign","startDynamicFilling","stopDynamicFilling","startTemplateFilling","stopTemplateFilling","onInternalMutation","offInternalMutation","set","get","$tag","_cachedGet_","_templateFillListeners_","_fillListeners_","_assignListeners_","_invalidateListeners_","_formInvalidateListeners_","_publishInternalMutation_","hasListener","delete","_mutationListeners_","_publishDynamicFilling_","_publishInvalidation_","_publishFormInvalidation_","_publishTemplateFilling_","_publishAssignement_","_proxies_","parent","_parentKey_","_value_","_is_savable_","_expiration_delay_","_lockInternalMutationPublishing_","_instanceCounter_","_assignmentId_","_invalidate_on_page_show_"]);function nn(s,t){return{get:function(i,r){if(typeof r=="string"&&on.has(r))return s[r];if(r==Symbol.toPrimitive)return()=>t().get();if(!s._proxies_.has(r)){const e=s._value_[r],o=vi(ne(e)?e:{__value:e},s,r);o._proxies_.set("_parent_",t()),s._proxies_.set(r,o)}return s._proxies_.get(r)},set:function(i,r,e){if(r=="_value_")return s._value_=e,!0;if(r=="_cachedGet_")return s._cachedGet_=e,!0;if(r=="_assignmentId_")return s._assignmentId_=e,!0;if(r=="_is_savable_")return s._is_savable_=e,!0;if(r=="_expiration_delay_")return s._expiration_delay_=e,!0;if(r=="_invalidate_on_page_show_")return s._invalidate_on_page_show_=e,!0;if(r=="_instanceCounter_")return s._instanceCounter_=e,!0;if(!s._proxies_.has(r)){const n=vi({},s,r);n._proxies_.set("_parent_",t()),s._proxies_.set(r,n)}return s._value_[r]!==e&&(s._value_[r]=e,s._publishDynamicFilling_(r,e),s._proxies_.get(r)?.set(ne(e)?e:{__value:e})),!0},deleteProperty:function(i,r){return s._publishDynamicFilling_(r,null),s._proxies_.get(r)?.set(null),delete s._value_[r]},has:function(i,r){return r in s._value_&&r!="_lockInternalMutationPublishing_"},defineProperty:function(i,r,e){return e&&"value"in e&&(s._value_[r]=e.value),!0},getOwnPropertyDescriptor:function(i,r){return{enumerable:!0,configurable:!0}},ownKeys:function(i){return s._value_.__value?Object.keys(s._value_.__value):Object.keys(s._value_)}}}function vi(s,t=null,i){const r=new ss(s,t,i);let e=null;const o=nn(r,()=>e);return e=new Proxy(r,o),e}class an extends HTMLElement{constructor(){super(),this.publisherId="",this.onAssign=t=>{this.innerHTML=t.toString()}}connectedCallback(){this.publisherId=this.getAttribute("publisher")||"",this.publisher=ss.instances.get(parseInt(this.publisherId)),this.publisher?.onAssign(this.onAssign)}disconnectedCallback(){this.publisher?.offAssign(this.onAssign)}}try{customElements.define(ze+"-publisher-proxy",an)}catch{}const Is=(s,t)=>{if(typeof s=="function"){const i=s;return Sr(),i(),$r()}if(typeof s=="string"){const i=s.split("."),r=i.shift()||"";let e=E.get(r,t);e=nt.traverse(e,i);const o=new Set;return o.add(e),o}return new Set([s])};function ln(s){const t=mi(s);return Is(t).values().next().value?.get()}function Ms(s,t,i){const r=mi(s);return Is(r,i).values().next().value}function cn(s,t){return Cr(t)?Ms(s,void 0,t):Ms(s)}function Ns(s,t){return Cr(t)?Ms(s,void 0,t):Ms(s)}function hn(s,t){const i=mi(s);Is(i).values().next().value?.set(t)}let Fs=(M=class{static disable(){this.enabled&&(this.enabled=!1,Array.from(M.observedElements.keys()).forEach(t=>M.unObserve(t)))}static observe(t){if(!t||!M.enabled||M.observedElements.has(t))return;const i=new MutationObserver(M.onMutation),r={};r.childList=!0,r.subtree=!0,r.attributes=!0,r.attributeFilter=["data-bind"],i.observe(t,r),t.querySelectorAll("[data-bind]").forEach(e=>M.addPublisherListeners(e)),M.observedElements.set(t,i)}static unObserve(t){if(!t)return;const i=this.observedElements.get(t);i&&(i.disconnect(),t.querySelectorAll("[data-bind]").forEach(r=>M.removePublisherListeners(r)))}static onAdded(t){t.hasAttribute&&t.hasAttribute("data-bind")&&M.addPublisherListeners(t),t.querySelectorAll?t.querySelectorAll("[data-bind]").forEach(i=>M.addPublisherListeners(i)):t.childNodes.forEach(i=>M.onAdded(i))}static onRemoved(t){t.hasAttribute&&t.hasAttribute("data-bind")&&M.removePublisherListeners(t),t.querySelectorAll?t.querySelectorAll("[data-bind]").forEach(i=>M.removePublisherListeners(i)):t.childNodes.forEach(i=>M.onRemoved(i))}static onMutation(t){for(const i of t)switch(i.type){case"attributes":M.addPublisherListeners(i.target);break;case"childList":i.addedNodes.forEach(r=>{M.onAdded(r)}),i.removedNodes.forEach(r=>{M.onRemoved(r)});break}}static removePublisherListeners(t){const i=M.publisherListeners.get(t);i&&(M.publisherListeners.delete(t),i.forEach(r=>{r.publisher?.offAssign(r.onAssign)}))}static getVariablesDescriptor(t){let i=t.match(/(\$(?:\w+\\?\.?)+)/g);return i?i=i.map(r=>r.replace("$","")):i=[t],i=i.filter(r=>r.length>0),{expression:t.replace("\\",""),variables:i.map(r=>r.split(/\b\.\b/).map(e=>e.replace("\\","")))}}static getDataBindItems(t){return"attributes"in t?Array.from(t.attributes).filter(i=>i.name.indexOf("::")==0).map(i=>({propertyToUpdate:i.name.substring(2).replace(/-((html)|\w)/g,e=>e.substring(1).toUpperCase()),bindedVariablesDescriptor:M.getVariablesDescriptor(i.value)})):[]}static getSubPublisher(t,i){if(!i)return t;for(const r of i)if(r!="_self_"){if(!t)return null;t=t[r]}return t}static addPublisherListeners(t){M.removePublisherListeners(t);const i=Z.getAncestorAttributeValue(t.parentNode||t.host||t,"dataProvider");if(!i)return;const r=E.getInstance().get(i),e=M.getDataBindItems(t),o=[];e.forEach(n=>{const l=n.bindedVariablesDescriptor,c=n.propertyToUpdate;for(const h of l.variables){const u=h;let d=r;d=M.getSubPublisher(r,u);const p=t,w={publisher:d,onAssign:()=>{const v=l.variables.map(D=>M.getSubPublisher(r,D)?.get());let m=l.expression,y=!1;if(v.length==1&&l.variables[0].join(".")==m.substring(1)){let D=v[0];D===null&&(D=""),p[c]=D;return}for(let D=0;D<v.length;D++){let f=v[D];const b=l.variables[D];f===null&&(y=!0,f=void 0),m=m.replace("$"+b.join("."),f)}if(m.indexOf("|")!=-1){const D=m.indexOf("|");if(D==0)m=Os.js(m.substring(1));else{const f=m.substring(0,D),b=m.substring(D+1),x=Os[f];m=y?"":x?x(b):m}}else m=y?"":m;p[c]=m}};d?.onAssign(w.onAssign),o.push(w)}}),M.publisherListeners.set(t,o)}},M.observedElements=new Map,M.enabled=!0,M.publisherListeners=new Map,M);Fs.observe(document.documentElement),window.SonicDataBindObserver||(window.SonicDataBindObserver=Fs);/**
1
+ (function(Z){typeof define=="function"&&define.amd?define(Z):Z()})((function(){"use strict";var M,tt;let Z=class Ft{static getLanguage(){const t=document.documentElement.lang;return localStorage.getItem("SonicSelectedLanguage")||t}static getCookies(){return document.cookie.split(";").reduce((t,i)=>{const r=i.indexOf("=");return t[i.substring(0,r).trim()]=i.substring(r+1),t},{})}static everyAncestors(t,i){for(;t;){if(!i(t))return;t=t.parentNode||t.host}}static getScrollableAncestor(t){for(;t;){const i=t;if(i.nodeType===1){const r=window.getComputedStyle(i);if(r?.overflowY==="auto"||r?.overflowY==="scroll"||r?.overflowY==="hidden"||r?.overflowX==="auto"||r?.overflowX==="scroll"||r?.overflowX==="hidden")return t}t=t.parentNode||t.host}return null}static scopeAttributeNames(t){const i=t.toLowerCase();return i===t?[t]:[t,i]}static readScopeAttributeOnElement(t,i){for(const r of Ft.scopeAttributeNames(i))if(t.hasAttribute(r))return t.getAttribute(r)??"";return null}static getAncestorAttributeValue(t,i){if(!t)return null;let r=t;for(;r;){if(r instanceof HTMLElement){const o=Ft.readScopeAttributeOnElement(r,i);if(o!=null)return o}const e=r.parentNode||r.host;if(!e)break;r=e}return null}static getApiConfiguration(t){const i=Ft.getAncestorAttributeValue(t,"token"),r=Ft.getAncestorAttributeValue(t,"addHTTPResponse")!=null,e=Ft.getAncestorAttributeValue(t,"serviceURL");let o=null,n=null;const l=Ft.getAncestorAttributeValue(t,"tokenProvider"),c=Ft.getAncestorAttributeValue(t,"eventsApiToken");i||(o=Ft.getAncestorAttributeValue(t,"userName"),n=Ft.getAncestorAttributeValue(t,"password"));const h=Ft.getAncestorAttributeValue(t,"credentials")||void 0,u=t.getAttribute("cache"),d=t.hasAttribute("blockUntilDone"),p=t.hasAttribute("keepAlive");return{serviceURL:e,token:i,userName:o,password:n,authToken:c,tokenProvider:l,addHTTPResponse:r,credentials:h,cache:u,blockUntilDone:d,keepAlive:p}}static getClosestElement(t,i){for(;!(t.nodeName&&t.nodeName.toLowerCase()===i)&&(t.parentNode||t.host);)t=t.parentNode||t.host;return t.nodeName?t:null}static getClosestForm(t){return Ft.getClosestElement(t,"form")}static getAncestorsByTagNames(t,i){const r=new Set(i.map(n=>n.toLowerCase())),e=[];let o=t.parentNode||t.host;for(;o;)o instanceof Element&&r.has(o.tagName.toLowerCase())&&e.push(o),o=o.parentNode||o.host;return e}static getAncestorsBySelectors(t,i){const r=[];let e=t.parentNode||t.host;for(;e;){if(e instanceof Element)for(const o of i)try{if(e.matches(o)){r.push(e);break}}catch{}e=e.parentNode||e.host}return r}static async loadJS(t){return new Promise(async r=>{const e=document.createElement("script");e.src=t,e.onload=()=>r(!0),e.onerror=()=>r(!0),document.head.appendChild(e)})}static async loadCSS(t){return new Promise(async r=>{const e=document.createElement("link");e.type="text/css",e.rel="stylesheet",e.href=t,e.onload=()=>r(!0),e.onerror=()=>r(!0),document.head.appendChild(e)})}};const bi=s=>{const t=document.documentElement,i=new MutationObserver(e=>{for(let o of e)o.type==="attributes"&&o.attributeName==="lang"&&s()}),r={attributes:!0,attributeFilter:["lang"]};i.observe(t,r)};let Os=class{static ucFirst(t){return typeof t!="string"?t:t.charAt(0).toUpperCase()+t.substring(1)}static minutesDuration(t,i="",r="long"){i||(i=Z.getLanguage());const e=(h,u)=>[Math.floor(h/u),h%u];function o(h,u,d){return new Intl.NumberFormat(h,{style:"unit",unit:u,unitDisplay:d}).format}const[n,l]=e(t,60),c=[];return n&&c.push(o(i,"hour",r)(n)),l&&c.push(o(i,"minute",r)(l)),new Intl.ListFormat(i,{style:"long",type:"conjunction"}).format(c)}static js(t){try{return Function("return "+t)()}catch{return""}}};class _r{constructor(t){this.path=t}toString(){return this.path}}function wr(s){return new Proxy(s,{get(t,i){if(i==="path")return t.path;if(i==="toString")return t.toString.bind(t);if(i===Symbol.toStringTag)return"DataProviderKey";if(typeof i=="symbol")return t[i];const r=t.path?`${t.path}.${String(i)}`:String(i);return wr(new _r(r))}})}const Jo=/\$\{|\{\$/;function tn(s){return Jo.test(s)}function mi(s){const t=typeof s=="string"?s:s.path;if(tn(t))throw new Error("Static publisher path required for get/set/dp. Use @subscribe, @publish, or @handle for dynamic DataProviderKey paths.");return t}const es=function(s){return this instanceof es?wr(new _r(s)):new es(s)};let nt=class oe{static shallowEqual(t,i,r=!0){const e=Object.keys(t),o=Object.keys(i);if(e.length!==o.length&&r)return!1;for(const n of e){const l=t[n],c=i[n];if(r?l!==c:l!=c)return!1}return!0}static deepEqual(t,i,r=!0){const e=Object.keys(t),o=Object.keys(i);if(e.length!==o.length&&r)return!1;for(const n of e){const l=t[n],c=i[n],h=oe.isObject(l)&&oe.isObject(c),u=r?l!==c:l!=c;if(h&&!oe.deepEqual(l,c)||!h&&u)return!1}return!0}static isObject(t){return t!=null&&typeof t=="object"}static isUndefindOrNull(t){return t==null}static isEmpty(t){return oe.isUndefindOrNull(t)?!0:Object.keys(t).length===0}static traverse(t,i,r=!1){for(const e of i){const o=t[e];if(o===void 0)return;r&&oe.isObject(o)?t=Object.assign(Array.isArray(o)?[]:{},t,o):t=t[e]}return t}static traverseDotNotation(t,i,r=!1){return oe.traverse(t,i.split("."),r)}static getURLSearchArray(t,i=""){let r=[];for(let e in t){const o=t[e];i&&(e=i+"["+e+"]"),oe.isObject(o)?r=[...r,...this.getURLSearchArray(o,e)]:r.push(`${e}=${o}`)}return r}static getURLSearchString(t){return oe.getURLSearchArray(t,"").join("&")}};const yt=nt.traverseDotNotation;let en=class{static async queueTaskPromise(){return new Promise(t=>{window.queueMicrotask(()=>t(null))})}static async delayPromise(t){return new Promise(i=>{setTimeout(i,t)})}},xr="sonic";typeof __SONIC_PREFIX__<"u"&&(xr=__SONIC_PREFIX__);let Pr=xr.replace(/-([a-z])/g,s=>s[1].toUpperCase());const Es=Pr.charAt(0).toUpperCase()+Pr.slice(1),sn=new Set(["localStorageMode","expirationDelayMs","invalidateOnPageShow"]);function Cr(s){return s==null||typeof s!="object"||Array.isArray(s)?!1:Object.keys(s).some(t=>sn.has(t))}function Ls(s){return Object.prototype.hasOwnProperty.call(s,"__value")}function ne(s){return typeof s=="object"&&s!==null}let ze="sonic";typeof __SONIC_PREFIX__>"u"&&(ze="sonic");const gi=ze=="sonic"?"publisher-proxies-data":ze+"-publisher-proxies-data",xe=class xe{constructor(t,i,r){for(this._proxies_=new Map,this._is_savable_=!1,this._expiration_delay_=1e3*60*60*12,this._invalidate_on_page_show_=!1,this._invalidateListeners_=new Set,this._formInvalidateListeners_=new Set,this._assignListeners_=new Set,this._mutationListeners_=new Set,this._fillListeners_=new Set,this._templateFillListeners_=new Set,this._lockInternalMutationPublishing_=!1,this._instanceCounter_=0,this._assignmentId_=0,this._value_=t,this.parent=i||null,this._parentKey_=r,this.root=this,this._instanceCounter_=0;this.root.parent;)this.root=this.root.parent}delete(){for(const t in this._proxies_.keys())t!="_parent_"&&this._proxies_.get(t)?.delete();this._invalidateListeners_.clear(),this._formInvalidateListeners_.clear(),this._assignListeners_.clear(),this._mutationListeners_.clear(),this._fillListeners_.clear(),this._templateFillListeners_.clear(),this._proxies_.clear(),xe.instances.delete(this._instanceCounter_)}hasListener(){return this._templateFillListeners_.size>0||this._assignListeners_.size>0||this._invalidateListeners_.size>0||this._formInvalidateListeners_.size>0||this._mutationListeners_.size>0||this._fillListeners_.size>0}_publishInternalMutation_(t=!1){if(this._mutationListeners_.forEach(i=>i()),this._is_savable_&&!E.changed){E.changed=!0,E.saveId++;const i=E.saveId;setTimeout(()=>E.getInstance().saveToLocalStorage(i),1e3)}t||this.parent&&this.parent._publishInternalMutation_()}async _publishAssignement_(t=!1){if(this._assignmentId_++,this._assignmentId_!==this._assignmentId_)return;const r=this.get();this._assignListeners_.forEach(e=>{e(r)}),this._publishInternalMutation_(t)}_publishInvalidation_(){this._invalidateListeners_.forEach(t=>t())}_publishFormInvalidation_(){this._formInvalidateListeners_.forEach(t=>t())}_publishDynamicFilling_(t,i){this._fillListeners_.forEach(r=>{r[t]!==i&&(r[t]=i)}),this._publishTemplateFilling_(t,i)}_publishTemplateFilling_(t,i){this._templateFillListeners_.forEach(r=>{const e=Object.getOwnPropertyDescriptor(r,t);e&&!e.set&&!e.writable||(r.propertyMap&&r.propertyMap[t]&&(t=r.propertyMap[t]),typeof r[t]<"u"&&r[t]!==i&&(r[t]=i))})}onAssign(t,i=!0){typeof t=="function"&&(this._assignListeners_.has(t)||(this._assignListeners_.add(t),i&&t(this.get())))}offAssign(t){this._assignListeners_.delete(t)}onInvalidate(t){typeof t=="function"&&this._invalidateListeners_.add(t)}offInvalidate(t){typeof t=="function"&&this._invalidateListeners_.delete(t)}invalidate(){this._publishInvalidation_()}onFormInvalidate(t){typeof t=="function"&&this._formInvalidateListeners_.add(t)}offFormInvalidate(t){typeof t=="function"&&this._formInvalidateListeners_.delete(t)}invalidateForm(){this._publishFormInvalidation_()}onInternalMutation(t){typeof t=="function"&&(this._mutationListeners_.add(t),t())}offInternalMutation(t){typeof t=="function"&&this._mutationListeners_.delete(t)}startTemplateFilling(t){if(this._templateFillListeners_.add(t),typeof this._value_=="object")for(const i in this._value_){let r=i;const e=this._value_[i];t.propertyMap&&t.propertyMap[i]&&(r=t.propertyMap[i]),typeof t[i]<"u"&&t[i]!==e&&(t[r]=e)}}stopTemplateFilling(t){this._templateFillListeners_.delete(t)}startDynamicFilling(t){this._fillListeners_.add(t);for(const i in this._value_){const r=this._value_[i];t[i]!==r&&(t[i]=r)}}stopDynamicFilling(t){this._fillListeners_.delete(t)}set(t,i=!1){if(this._value_===t||ne(this._value_)&&ne(t)&&t&&Ls(this._value_)&&Ls(t)&&this._value_.__value===t.__value||!ne(t)&&t===this._value_.__value)return!0;this._value_=ne(t)?t:{__value:t},this._cachedGet_=void 0;const r=Ls(this._value_);if(this._parentKey_&&this.parent){const e=Ls(this._value_)?this._value_.__value:this._value_;if(this.parent?.get()==null&&this.parent?.get()==null)if(isNaN(Number(this._parentKey_)))this.parent.set({[this._parentKey_]:e});else{const o=[];o[Number(this._parentKey_)]=e,this.parent.set(o)}else this.parent._value_[this._parentKey_]=e}if(r)return this._proxies_.forEach((e,o)=>{o!="_parent_"&&(e.set(null),this._publishDynamicFilling_(o,null))}),this._publishAssignement_(i),this.parent&&this._parentKey_&&this.parent._publishDynamicFilling_(this._parentKey_,this._value_.__value),!0;for(const e in this._value_)this._value_[e]===void 0&&delete this._value_[e];if(this._proxies_.forEach((e,o)=>{const n=this._value_[o];o!="_parent_"&&n===void 0&&n!==null&&isNaN(Number(o))&&(e.set(null),this._publishDynamicFilling_(o,null))}),this._publishAssignement_(),this.parent&&this._parentKey_&&this.parent._publishDynamicFilling_(this._parentKey_,this._value_),ne(this._value_))for(const e in this._value_){const o=t[e],l=ne(o)?o:{__value:o};if(!this._proxies_.has(e)){this._publishDynamicFilling_(e,o);continue}this._proxies_.get(e)?.set(l,!0),this._publishDynamicFilling_(e,o)}return!0}get(){if(rn(this),this._cachedGet_!==void 0)return this._cachedGet_;if(Object.prototype.hasOwnProperty.call(this._value_,"__value")){const t=this._value_.__value;return this._cachedGet_=t??null}return this._cachedGet_=this._value_!=null?this._value_:null}get $tag(){return this._instanceCounter_||(xe.instancesCounter++,this._instanceCounter_=xe.instancesCounter),xe.instances.set(this._instanceCounter_,this),"<"+ze+'-publisher-proxy publisher="'+this._instanceCounter_+'"></'+ze+"-publisher-proxy>"}};xe.instances=new Map,xe.instancesCounter=0;let ss=xe;const Ts=[];function rn(s){Ts.length>0&&Ts[0].add(s)}function Sr(){Ts.unshift(new Set)}function $r(){return Ts.shift()}const F=class F{constructor(){if(this.enabledLocaStorageProxies=[],this.publishers=new Map,this.localStorageData={},this.isLocalStrorageReady=null,this.initialisedData=[],F.instance!=null)throw"Singleton / use getInstance";F.instance=this,this.isLocalStrorageReady=this.cleanStorageData(),F.initPageShowHandler()}static initPageShowHandler(){F.pageShowHandlerInitialized||(F.pageShowHandlerInitialized=!0,window.addEventListener("pageshow",t=>{t.persisted&&F.getInstance().invalidateAll()}))}invalidateAll(){this.publishers.forEach(t=>{t._invalidate_on_page_show_&&t.invalidate()})}async cleanStorageData(){return new Promise(t=>{(async()=>{try{let r=localStorage.getItem(gi),e=null;if(r&&(e=await this.decompress(r,"gzip")),e)try{this.localStorageData=JSON.parse(e)}catch{this.localStorageData={}}else r=await this.compress("{}","gzip"),localStorage.setItem(gi,r),this.localStorageData={};const o=1e3*60*60*12;for(const n in this.localStorageData){const l=this.localStorageData[n],c=new Date().getTime()-(l.expirationDelayMs||o);l.lastModifiationMS<c&&delete this.localStorageData[n]}t(!0)}catch{window.requestAnimationFrame(()=>{t(!1)}),console.warn("no publisher cache in this browser")}})()})}static getInstance(t){if(t){const i=F.instances.get(t);return i||(console.warn("No PublisherManager instance registered with id:",t,"creating new one"),new F)}return F.instance==null?new F:F.instance}static get(t,i){return F.getInstance().get(t,i)}async setLocalData(t,i){await this.isLocalStrorageReady,t.set(this.localStorageData[i+"¤lang_"+Z.getLanguage()]?.data||t.get())}get(t,i){const r=i?.localStorageMode==="enabled",e=i?.invalidateOnPageShow===!0;if(!this.publishers.has(t)){const l=vi({});this.set(t,l)}const o=this.publishers.get(t);return r&&this.initialisedData.indexOf(t)===-1&&(i?.expirationDelayMs&&(o._expiration_delay_=i.expirationDelayMs),o._is_savable_=!0,this.initialisedData.push(t),this.setLocalData(o,t)),e&&(o._invalidate_on_page_show_=e),this.publishers.get(t)}set(t,i){this.publishers.set(t,i)}delete(t){return this.publishers.has(t)?(this.publishers.delete(t),!0):!1}async saveToLocalStorage(t=0){if(!(t!==F.saveId&&t%10!=0))try{if(!F.changed||F.saving)return;F.saving=!0,F.changed=!1;const i=Array.from(this.publishers.keys());let r=!1;for(const e of i){const o=this.publishers.get(e);if(!o?._is_savable_)continue;const n=o?.get();n&&(this.localStorageData[e+"¤lang_"+Z.getLanguage()]={lastModifiationMS:new Date().getTime(),expirationDelayMs:o._expiration_delay_,data:n},r=!0)}if(r){const e=await this.compress(JSON.stringify(this.localStorageData),"gzip");localStorage.setItem(gi,e)}if(F.saving=!1,F.changed){F.saveId++;const e=F.saveId;setTimeout(()=>this.saveToLocalStorage(e),1e3)}}catch{F.saving=!1}}async compress(t,i){const r=new TextEncoder().encode(t),e=window,o=new e.CompressionStream(i),n=o.writable.getWriter();n.write(r),n.close();const l=await new Response(o.readable).arrayBuffer(),c=new Uint8Array(l);let h="";for(let u=0;u<c.length;u++)h+=String.fromCharCode(c[u]);return btoa(h)}async decompress(t,i){const r=atob(t),o=Uint8Array.from(r,u=>u.charCodeAt(0)).buffer,n=window,l=new n.DecompressionStream(i),c=l.writable.getWriter();c.write(o),c.close();const h=await new Response(l.readable).arrayBuffer();return new TextDecoder().decode(h)}};F.buildDate="Thu Jul 30 2026 13:16:38 GMT+0200 (Central European Summer Time)",F.changed=!1,F.saving=!1,F.saveId=0,F.instance=null,F.instances=new Map,F.pageShowHandlerInitialized=!1;let E=F;if(typeof window<"u"){const s=window;s[Es+"PublisherManager"]=s[Es+"PublisherManager"]||E}const on=new Set(["invalidate","onInvalidate","offInvalidate","invalidateForm","onFormInvalidate","offFormInvalidate","onAssign","offAssign","startDynamicFilling","stopDynamicFilling","startTemplateFilling","stopTemplateFilling","onInternalMutation","offInternalMutation","set","get","$tag","_cachedGet_","_templateFillListeners_","_fillListeners_","_assignListeners_","_invalidateListeners_","_formInvalidateListeners_","_publishInternalMutation_","hasListener","delete","_mutationListeners_","_publishDynamicFilling_","_publishInvalidation_","_publishFormInvalidation_","_publishTemplateFilling_","_publishAssignement_","_proxies_","parent","_parentKey_","_value_","_is_savable_","_expiration_delay_","_lockInternalMutationPublishing_","_instanceCounter_","_assignmentId_","_invalidate_on_page_show_"]);function nn(s,t){return{get:function(i,r){if(typeof r=="string"&&on.has(r))return s[r];if(r==Symbol.toPrimitive)return()=>t().get();if(!s._proxies_.has(r)){const e=s._value_[r],o=vi(ne(e)?e:{__value:e},s,r);o._proxies_.set("_parent_",t()),s._proxies_.set(r,o)}return s._proxies_.get(r)},set:function(i,r,e){if(r=="_value_")return s._value_=e,!0;if(r=="_cachedGet_")return s._cachedGet_=e,!0;if(r=="_assignmentId_")return s._assignmentId_=e,!0;if(r=="_is_savable_")return s._is_savable_=e,!0;if(r=="_expiration_delay_")return s._expiration_delay_=e,!0;if(r=="_invalidate_on_page_show_")return s._invalidate_on_page_show_=e,!0;if(r=="_instanceCounter_")return s._instanceCounter_=e,!0;if(!s._proxies_.has(r)){const n=vi({},s,r);n._proxies_.set("_parent_",t()),s._proxies_.set(r,n)}return s._value_[r]!==e&&(s._value_[r]=e,s._publishDynamicFilling_(r,e),s._proxies_.get(r)?.set(ne(e)?e:{__value:e})),!0},deleteProperty:function(i,r){return s._publishDynamicFilling_(r,null),s._proxies_.get(r)?.set(null),delete s._value_[r]},has:function(i,r){return r in s._value_&&r!="_lockInternalMutationPublishing_"},defineProperty:function(i,r,e){return e&&"value"in e&&(s._value_[r]=e.value),!0},getOwnPropertyDescriptor:function(i,r){return{enumerable:!0,configurable:!0}},ownKeys:function(i){return s._value_.__value?Object.keys(s._value_.__value):Object.keys(s._value_)}}}function vi(s,t=null,i){const r=new ss(s,t,i);let e=null;const o=nn(r,()=>e);return e=new Proxy(r,o),e}class an extends HTMLElement{constructor(){super(),this.publisherId="",this.onAssign=t=>{this.innerHTML=t.toString()}}connectedCallback(){this.publisherId=this.getAttribute("publisher")||"",this.publisher=ss.instances.get(parseInt(this.publisherId)),this.publisher?.onAssign(this.onAssign)}disconnectedCallback(){this.publisher?.offAssign(this.onAssign)}}try{customElements.define(ze+"-publisher-proxy",an)}catch{}const Is=(s,t)=>{if(typeof s=="function"){const i=s;return Sr(),i(),$r()}if(typeof s=="string"){const i=s.split("."),r=i.shift()||"";let e=E.get(r,t);e=nt.traverse(e,i);const o=new Set;return o.add(e),o}return new Set([s])};function ln(s){const t=mi(s);return Is(t).values().next().value?.get()}function Ms(s,t,i){const r=mi(s);return Is(r,i).values().next().value}function cn(s,t){return Cr(t)?Ms(s,void 0,t):Ms(s)}function Ns(s,t){return Cr(t)?Ms(s,void 0,t):Ms(s)}function hn(s,t){const i=mi(s);Is(i).values().next().value?.set(t)}let Fs=(M=class{static disable(){this.enabled&&(this.enabled=!1,Array.from(M.observedElements.keys()).forEach(t=>M.unObserve(t)))}static observe(t){if(!t||!M.enabled||M.observedElements.has(t))return;const i=new MutationObserver(M.onMutation),r={};r.childList=!0,r.subtree=!0,r.attributes=!0,r.attributeFilter=["data-bind"],i.observe(t,r),t.querySelectorAll("[data-bind]").forEach(e=>M.addPublisherListeners(e)),M.observedElements.set(t,i)}static unObserve(t){if(!t)return;const i=this.observedElements.get(t);i&&(i.disconnect(),t.querySelectorAll("[data-bind]").forEach(r=>M.removePublisherListeners(r)))}static onAdded(t){t.hasAttribute&&t.hasAttribute("data-bind")&&M.addPublisherListeners(t),t.querySelectorAll?t.querySelectorAll("[data-bind]").forEach(i=>M.addPublisherListeners(i)):t.childNodes.forEach(i=>M.onAdded(i))}static onRemoved(t){t.hasAttribute&&t.hasAttribute("data-bind")&&M.removePublisherListeners(t),t.querySelectorAll?t.querySelectorAll("[data-bind]").forEach(i=>M.removePublisherListeners(i)):t.childNodes.forEach(i=>M.onRemoved(i))}static onMutation(t){for(const i of t)switch(i.type){case"attributes":M.addPublisherListeners(i.target);break;case"childList":i.addedNodes.forEach(r=>{M.onAdded(r)}),i.removedNodes.forEach(r=>{M.onRemoved(r)});break}}static removePublisherListeners(t){const i=M.publisherListeners.get(t);i&&(M.publisherListeners.delete(t),i.forEach(r=>{r.publisher?.offAssign(r.onAssign)}))}static getVariablesDescriptor(t){let i=t.match(/(\$(?:\w+\\?\.?)+)/g);return i?i=i.map(r=>r.replace("$","")):i=[t],i=i.filter(r=>r.length>0),{expression:t.replace("\\",""),variables:i.map(r=>r.split(/\b\.\b/).map(e=>e.replace("\\","")))}}static getDataBindItems(t){return"attributes"in t?Array.from(t.attributes).filter(i=>i.name.indexOf("::")==0).map(i=>({propertyToUpdate:i.name.substring(2).replace(/-((html)|\w)/g,e=>e.substring(1).toUpperCase()),bindedVariablesDescriptor:M.getVariablesDescriptor(i.value)})):[]}static getSubPublisher(t,i){if(!i)return t;for(const r of i)if(r!="_self_"){if(!t)return null;t=t[r]}return t}static addPublisherListeners(t){M.removePublisherListeners(t);const i=Z.getAncestorAttributeValue(t.parentNode||t.host||t,"dataProvider");if(!i)return;const r=E.getInstance().get(i),e=M.getDataBindItems(t),o=[];e.forEach(n=>{const l=n.bindedVariablesDescriptor,c=n.propertyToUpdate;for(const h of l.variables){const u=h;let d=r;d=M.getSubPublisher(r,u);const p=t,w={publisher:d,onAssign:()=>{const v=l.variables.map(D=>M.getSubPublisher(r,D)?.get());let m=l.expression,y=!1;if(v.length==1&&l.variables[0].join(".")==m.substring(1)){let D=v[0];D===null&&(D=""),p[c]=D;return}for(let D=0;D<v.length;D++){let f=v[D];const b=l.variables[D];f===null&&(y=!0,f=void 0),m=m.replace("$"+b.join("."),f)}if(m.indexOf("|")!=-1){const D=m.indexOf("|");if(D==0)m=Os.js(m.substring(1));else{const f=m.substring(0,D),b=m.substring(D+1),x=Os[f];m=y?"":x?x(b):m}}else m=y?"":m;p[c]=m}};d?.onAssign(w.onAssign),o.push(w)}}),M.publisherListeners.set(t,o)}},M.observedElements=new Map,M.enabled=!0,M.publisherListeners=new Map,M);Fs.observe(document.documentElement),window.SonicDataBindObserver||(window.SonicDataBindObserver=Fs);/**
2
2
  * @license
3
3
  * Copyright 2017 Google LLC
4
4
  * SPDX-License-Identifier: BSD-3-Clause
@@ -742,7 +742,7 @@ const j = class j {
742
742
  return new TextDecoder().decode(h);
743
743
  }
744
744
  };
745
- j.buildDate = "Thu Jul 30 2026 10:31:44 GMT+0200 (Central European Summer Time)", j.changed = !1, j.saving = !1, j.saveId = 0, j.instance = null, j.instances = /* @__PURE__ */ new Map(), j.pageShowHandlerInitialized = !1;
745
+ j.buildDate = "Thu Jul 30 2026 13:16:38 GMT+0200 (Central European Summer Time)", j.changed = !1, j.saving = !1, j.saveId = 0, j.instance = null, j.instances = /* @__PURE__ */ new Map(), j.pageShowHandlerInitialized = !1;
746
746
  let E = j;
747
747
  if (typeof window < "u") {
748
748
  const s = window;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@supersoniks/concorde",
3
- "version": "4.9.4",
3
+ "version": "4.9.5",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "main": "",
@@ -9,7 +9,7 @@
9
9
  * Options:
10
10
  * --project-root <dir> Project root (default: cwd)
11
11
  * --concorde-ai <dir> Concorde ai/ folder (default: auto-detect)
12
- * --overlay <dir> Extra layer (e.g. starter kit) — uses AGENTS.starter.md
12
+ * --overlay <dir> Extra layer (project kit) — uses AGENTS.concorde.md
13
13
  * --cursor-only Install only Cursor (.cursor/)
14
14
  * --jetbrains-only Install only JetBrains (.aiassistant/rules/)
15
15
  * --skip-agents Never write AGENTS.md (skills/rules only)
@@ -27,11 +27,13 @@
27
27
  * [optional project preamble — short, project-only]
28
28
  * <!-- concorde-ai -->
29
29
  * <package ai/AGENTS.md>
30
- * [--- + overlay AGENTS.starter.md]
30
+ * [--- + overlay AGENTS.concorde.md]
31
31
  *
32
32
  * Everything AFTER the marker is owned by Concorde and replaced on every run.
33
- * Do not copy the full Concorde guide into the preamble — use overlay/AGENTS.starter.md
33
+ * Do not copy the full Concorde guide into the preamble — use overlay/AGENTS.concorde.md
34
34
  * for project-specific agent notes (endpoints, dpKeys, …).
35
+ *
36
+ * Legacy: AGENTS.starter.md / AGENTS.overlay.md still read if AGENTS.concorde.md is missing.
35
37
  */
36
38
 
37
39
  import fs from "node:fs";
@@ -41,6 +43,13 @@ import {fileURLToPath, pathToFileURL} from "node:url";
41
43
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
42
44
 
43
45
  const AGENTS_MARKER = "<!-- concorde-ai -->";
46
+ /** Project Concorde notes for `--overlay` (preferred). */
47
+ const OVERLAY_AGENTS_FILE = "AGENTS.concorde.md";
48
+ /** @deprecated Prefer AGENTS.concorde.md */
49
+ const OVERLAY_AGENTS_FILE_LEGACY = [
50
+ "AGENTS.overlay.md",
51
+ "AGENTS.starter.md",
52
+ ];
44
53
 
45
54
  const args = process.argv.slice(2);
46
55
 
@@ -102,6 +111,33 @@ function detectConcordeAi() {
102
111
  );
103
112
  }
104
113
 
114
+ /**
115
+ * Read project Concorde AGENTS notes from `--overlay` dir.
116
+ * Prefers AGENTS.concorde.md; falls back to deprecated legacy names.
117
+ * @returns {{ content: string, warnings: string[] }}
118
+ */
119
+ export function readOverlayAgents(overlayDir) {
120
+ const warnings = [];
121
+ if (!overlayDir) return {content: "", warnings};
122
+
123
+ const preferred = path.join(overlayDir, OVERLAY_AGENTS_FILE);
124
+ if (fs.existsSync(preferred)) {
125
+ return {content: fs.readFileSync(preferred, "utf8"), warnings};
126
+ }
127
+
128
+ for (const legacyName of OVERLAY_AGENTS_FILE_LEGACY) {
129
+ const legacy = path.join(overlayDir, legacyName);
130
+ if (fs.existsSync(legacy)) {
131
+ warnings.push(
132
+ `Overlay uses deprecated ${legacyName} — rename to ${OVERLAY_AGENTS_FILE}.`,
133
+ );
134
+ return {content: fs.readFileSync(legacy, "utf8"), warnings};
135
+ }
136
+ }
137
+
138
+ return {content: "", warnings};
139
+ }
140
+
105
141
  function copyDir(src, dest) {
106
142
  if (!fs.existsSync(src)) return;
107
143
  fs.mkdirSync(dest, {recursive: true});
@@ -300,7 +336,7 @@ export function buildAgentsFile({
300
336
  preamble = slimPreamble(preamble, baseContent);
301
337
  if (before.trim() && !preamble) {
302
338
  warnings.push(
303
- "AGENTS.md preamble duplicated Concorde ai/AGENTS.md — dropped. Put project-only notes in overlay AGENTS.starter.md (or a short preamble before <!-- concorde-ai -->).",
339
+ "AGENTS.md preamble duplicated Concorde ai/AGENTS.md — dropped. Put project-only notes in overlay AGENTS.concorde.md (or a short preamble before <!-- concorde-ai -->).",
304
340
  );
305
341
  } else if (before.trim() && preamble !== before.trim()) {
306
342
  warnings.push(
@@ -413,18 +449,16 @@ function main() {
413
449
  }
414
450
  } else {
415
451
  const baseAgents = fs.readFileSync(path.join(concordeAi, "AGENTS.md"), "utf8");
416
- let overlayAgents = "";
417
- if (overlayDir) {
418
- const overlayPath = path.join(overlayDir, "AGENTS.starter.md");
419
- if (fs.existsSync(overlayPath)) {
420
- overlayAgents = fs.readFileSync(overlayPath, "utf8");
421
- }
422
- }
423
-
424
- const warnings = mergeAgentsFile(agentsPath, baseAgents, overlayAgents, {
425
- mergeAgents: action === "merge" || action === "refresh",
426
- forceAgents: action === "force",
427
- });
452
+ const {content: overlayAgents, warnings: overlayWarnings} =
453
+ readOverlayAgents(overlayDir);
454
+
455
+ const warnings = [
456
+ ...overlayWarnings,
457
+ ...mergeAgentsFile(agentsPath, baseAgents, overlayAgents, {
458
+ mergeAgents: action === "merge" || action === "refresh",
459
+ forceAgents: action === "force",
460
+ }),
461
+ ];
428
462
  for (const w of warnings) {
429
463
  console.warn(` ⚠ ${w}`);
430
464
  }
@@ -1,9 +1,13 @@
1
1
  import assert from "node:assert/strict";
2
+ import fs from "node:fs/promises";
3
+ import os from "node:os";
4
+ import path from "node:path";
2
5
  import test from "node:test";
3
6
  import {
4
7
  buildAgentsFile,
5
8
  decideAgentsAction,
6
9
  preambleDuplicatesBase,
10
+ readOverlayAgents,
7
11
  slimPreamble,
8
12
  } from "./ai-init.mjs";
9
13
 
@@ -204,3 +208,52 @@ custom install cmd
204
208
  // Installation may stay if not in package — package has no Installation ##
205
209
  assert.match(slim, /Installation \/ réinstallation|Project endpoints/);
206
210
  });
211
+
212
+ test("readOverlayAgents: prefers AGENTS.concorde.md", async () => {
213
+ const dir = await fs.mkdtemp(path.join(os.tmpdir(), "concorde-overlay-"));
214
+ try {
215
+ await fs.writeFile(
216
+ path.join(dir, "AGENTS.concorde.md"),
217
+ "# overlay preferred\n",
218
+ );
219
+ await fs.writeFile(
220
+ path.join(dir, "AGENTS.starter.md"),
221
+ "# overlay legacy\n",
222
+ );
223
+ const {content, warnings} = readOverlayAgents(dir);
224
+ assert.match(content, /overlay preferred/);
225
+ assert.equal(warnings.length, 0);
226
+ } finally {
227
+ await fs.rm(dir, {recursive: true, force: true});
228
+ }
229
+ });
230
+
231
+ test("readOverlayAgents: falls back to AGENTS.starter.md with warning", async () => {
232
+ const dir = await fs.mkdtemp(path.join(os.tmpdir(), "concorde-overlay-"));
233
+ try {
234
+ await fs.writeFile(
235
+ path.join(dir, "AGENTS.starter.md"),
236
+ "# overlay legacy\n",
237
+ );
238
+ const {content, warnings} = readOverlayAgents(dir);
239
+ assert.match(content, /overlay legacy/);
240
+ assert.match(warnings[0] ?? "", /deprecated AGENTS\.starter\.md/);
241
+ } finally {
242
+ await fs.rm(dir, {recursive: true, force: true});
243
+ }
244
+ });
245
+
246
+ test("readOverlayAgents: falls back to AGENTS.overlay.md with warning", async () => {
247
+ const dir = await fs.mkdtemp(path.join(os.tmpdir(), "concorde-overlay-"));
248
+ try {
249
+ await fs.writeFile(
250
+ path.join(dir, "AGENTS.overlay.md"),
251
+ "# overlay mid legacy\n",
252
+ );
253
+ const {content, warnings} = readOverlayAgents(dir);
254
+ assert.match(content, /overlay mid legacy/);
255
+ assert.match(warnings[0] ?? "", /deprecated AGENTS\.overlay\.md/);
256
+ } finally {
257
+ await fs.rm(dir, {recursive: true, force: true});
258
+ }
259
+ });
@@ -29,7 +29,7 @@ node node_modules/@supersoniks/concorde/scripts/ai-init.mjs
29
29
  | `--skip-agents` | Never write `AGENTS.md` (skills / rules only) |
30
30
  | `--merge-agents` | Opt-in: keep the project preamble and append / refresh the Concorde block |
31
31
  | `--force-agents` | Opt-in: **replace** the whole `AGENTS.md` (destructive) |
32
- | `--overlay <dir>` | Extra rules/skills + optional `AGENTS.starter.md` for project-only agent notes |
32
+ | `--overlay <dir>` | Extra rules/skills + optional `AGENTS.concorde.md` for project-only Concorde agent notes |
33
33
  | `--cursor-only` | Install only `.cursor/skills` and `.cursor/rules` |
34
34
  | `--jetbrains-only` | Install only `.aiassistant/rules/` |
35
35
 
@@ -46,10 +46,10 @@ node node_modules/@supersoniks/concorde/scripts/ai-init.mjs
46
46
  [optional project preamble — short, project-only]
47
47
  <!-- concorde-ai -->
48
48
  <package ai/AGENTS.md>
49
- [--- + overlay AGENTS.starter.md]
49
+ [--- + overlay AGENTS.concorde.md]
50
50
  ```
51
51
 
52
- Everything **after** `<!-- concorde-ai -->` is replaced on each `ai-init` run (idempotent). Do not paste a full copy of the Concorde guide above the marker — put project-specific notes in `AGENTS.starter.md` (overlay). If the preamble duplicates package `AGENTS.md`, `ai-init` slims or drops it and prints a warning.
52
+ Everything **after** `<!-- concorde-ai -->` is replaced on each `ai-init` run (idempotent). Do not paste a full copy of the Concorde guide above the marker — put project-specific notes in `AGENTS.concorde.md` (overlay). If the preamble duplicates package `AGENTS.md`, `ai-init` slims or drops it and prints a warning. Legacy filenames `AGENTS.overlay.md` / `AGENTS.starter.md` are still accepted with a deprecation warning.
53
53
 
54
54
  ## What gets installed
55
55