@defra/flood-webchat 0.0.1-beta.44 → 0.0.1-beta.46
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/dist/client.js +11 -8
- package/dist/client.js.map +1 -1
- package/package.json +1 -1
- package/src/client/components/availability/availability.jsx +1 -1
- package/src/client/components/chat/chat.jsx +1 -1
- package/src/client/components/chat/chat.scss +10 -1
- package/src/client/components/panel/panel-header.jsx +2 -2
- package/src/client/components/panel/panel.jsx +1 -1
- package/src/client/components/screens/end-chat.jsx +1 -1
- package/src/client/components/screens/feedback.jsx +1 -1
- package/src/client/components/screens/pre-chat.jsx +1 -1
- package/src/client/components/screens/request-chat.jsx +3 -3
package/dist/client.js
CHANGED
|
@@ -65,7 +65,7 @@ function Availability() {
|
|
|
65
65
|
};
|
|
66
66
|
(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
|
|
67
67
|
if (showUnseenCount) {
|
|
68
|
-
setLiveRegionText(`Floodline
|
|
68
|
+
setLiveRegionText(`Floodline webchat - ${unseenCount} ${messageText}`);
|
|
69
69
|
}
|
|
70
70
|
return () => {
|
|
71
71
|
setLiveRegionText();
|
|
@@ -196,7 +196,7 @@ function Chat({
|
|
|
196
196
|
const connectionHeadlineText = (0,_lib_agent_status_headline_js__WEBPACK_IMPORTED_MODULE_7__.agentStatusHeadline)(availability, agentStatus, agentName);
|
|
197
197
|
(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
|
|
198
198
|
if (connectionHeadlineText) {
|
|
199
|
-
setLiveRegionText(`Floodline
|
|
199
|
+
setLiveRegionText(`Floodline webchat - ${connectionHeadlineText}`);
|
|
200
200
|
}
|
|
201
201
|
return () => {
|
|
202
202
|
setLiveRegionText();
|
|
@@ -639,9 +639,9 @@ function PanelHeader() {
|
|
|
639
639
|
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
640
640
|
className: "wc-header"
|
|
641
641
|
}, isMobileAndHasHistory ? BackButtonComponent : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("h2", {
|
|
642
|
-
id: "wc-header
|
|
642
|
+
id: "wc-header",
|
|
643
643
|
className: "wc-header__title"
|
|
644
|
-
}, "Floodline
|
|
644
|
+
}, "Floodline webchat"), RightButtonComponent);
|
|
645
645
|
}
|
|
646
646
|
|
|
647
647
|
/***/ }),
|
|
@@ -840,7 +840,7 @@ function Panel() {
|
|
|
840
840
|
className: (0,_lib_classnames_js__WEBPACK_IMPORTED_MODULE_2__.classnames)('wc-panel', isKeyboard && 'wc-focus-visible'),
|
|
841
841
|
tabIndex: "-1",
|
|
842
842
|
"aria-modal": "true",
|
|
843
|
-
"aria-labelledby": "wc-header-
|
|
843
|
+
"aria-labelledby": "wc-header wc-subtitle"
|
|
844
844
|
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
845
845
|
className: "wc-panel__inner"
|
|
846
846
|
}, ScreenComponent), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_live_region_jsx__WEBPACK_IMPORTED_MODULE_10__.LiveRegion, null));
|
|
@@ -915,6 +915,7 @@ function EndChat({
|
|
|
915
915
|
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
916
916
|
className: "wc-content"
|
|
917
917
|
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("h3", {
|
|
918
|
+
id: "wc-subtitle",
|
|
918
919
|
className: "wc-heading",
|
|
919
920
|
"aria-live": "polite"
|
|
920
921
|
}, "Are you sure you want to end the chat?"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
@@ -984,7 +985,7 @@ function Feedback({
|
|
|
984
985
|
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("h3", {
|
|
985
986
|
id: "wc-subtitle",
|
|
986
987
|
className: "wc-heading"
|
|
987
|
-
}, "Give Feedback on Floodline webchat"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", null, "Please note we
|
|
988
|
+
}, "Give Feedback on Floodline webchat"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", null, "Please note we're unable to respond to feedback."), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", {
|
|
988
989
|
id: "feedback-send",
|
|
989
990
|
className: "govuk-link",
|
|
990
991
|
href: "#",
|
|
@@ -1028,6 +1029,7 @@ function PreChat({
|
|
|
1028
1029
|
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
1029
1030
|
className: "wc-content"
|
|
1030
1031
|
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("h3", {
|
|
1032
|
+
id: "wc-subtitle",
|
|
1031
1033
|
className: "wc-heading",
|
|
1032
1034
|
"aria-live": "polite"
|
|
1033
1035
|
}, "What you can use webchat for"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", null, "Webchat lets you talk directly to a Floodline adviser."), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", null, "You can use webchat to get:"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("ul", {
|
|
@@ -1124,7 +1126,7 @@ function RequestChat({
|
|
|
1124
1126
|
const onQuestionChange = e => {
|
|
1125
1127
|
setQuestionLength(e.target.value.length);
|
|
1126
1128
|
};
|
|
1127
|
-
const buttonLabel = isButtonDisabled ? 'Requesting...' : 'Request
|
|
1129
|
+
const buttonLabel = isButtonDisabled ? 'Requesting...' : 'Request chat';
|
|
1128
1130
|
(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
|
|
1129
1131
|
if (isButtonDisabled) {
|
|
1130
1132
|
setLiveRegionText(buttonLabel);
|
|
@@ -1158,7 +1160,7 @@ function RequestChat({
|
|
|
1158
1160
|
setThread(thread);
|
|
1159
1161
|
thread.setCustomField('threadid', threadId);
|
|
1160
1162
|
} catch (err) {
|
|
1161
|
-
console.log('[Request
|
|
1163
|
+
console.log('[Request chat Error]', err);
|
|
1162
1164
|
}
|
|
1163
1165
|
}
|
|
1164
1166
|
setErrors(errs);
|
|
@@ -1174,6 +1176,7 @@ function RequestChat({
|
|
|
1174
1176
|
}, "What you can use webchat for"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_errorSummary_error_summary_jsx__WEBPACK_IMPORTED_MODULE_6__.ErrorSummary, {
|
|
1175
1177
|
errors: errors
|
|
1176
1178
|
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("h3", {
|
|
1179
|
+
id: "wc-subtitle",
|
|
1177
1180
|
className: "wc-heading",
|
|
1178
1181
|
"aria-live": "polite"
|
|
1179
1182
|
}, "Your name and question"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("form", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","mappings":";;;;;;;;;;;;;;;;;;;;;;AAAgD;AAEC;AACP;AACC;AAEA;AACiC;AAC7B;AAExC,SAASU,YAAYA,CAAA,EAAI;EAC9B,MAAM;IAAEC,YAAY;IAAEC,UAAU;IAAEC,iBAAiB;IAAEC,WAAW;IAAEC,QAAQ;IAAEC,cAAc;IAAEC,eAAe;IAAEC;EAAkB,CAAC,GAAGZ,qDAAM,CAAC,CAAC;EAE3I,MAAMa,SAAS,GAAGjB,6CAAM,CAAC,CAAC;EAE1B,MAAMkB,eAAe,GAAGN,WAAW,GAAG,CAAC,IAAI,CAACF,UAAU;EAEtD,MAAMS,WAAW,GAAGP,WAAW,GAAG,CAAC,GAAG,cAAc,GAAG,aAAa;EAEpE,MAAMQ,OAAO,GAAGC,CAAC,IAAI;IACnBA,CAAC,CAACC,cAAc,CAAC,CAAC;IAClBR,cAAc,CAAC,CAAC,CAAC;IACjBH,iBAAiB,CAAC,CAACD,UAAU,CAAC;IAC9BK,eAAe,CAACM,CAAC,CAACE,MAAM,CAACC,EAAE,CAAC;IAE5B,IAAI,CAACd,UAAU,EAAE;MACfL,iEAAgB,CAAC,CAAC;IACpB,CAAC,MAAM;MACLC,oEAAmB,CAAC,CAAC;IACvB;EACF,CAAC;EAED,MAAMmB,SAAS,GAAGC,KAAK,IAAI;IACzB,IAAIA,KAAK,CAACC,GAAG,KAAK,GAAG,EAAE;MACrBD,KAAK,CAACJ,cAAc,CAAC,CAAC;IACxB;EACF,CAAC;EAED,MAAMM,OAAO,GAAGF,KAAK,IAAI;IACvB,IAAIA,KAAK,CAACC,GAAG,KAAK,GAAG,EAAE;MACrBb,cAAc,CAAC,CAAC,CAAC;MACjBH,iBAAiB,CAAC,CAACD,UAAU,CAAC;IAChC;EACF,CAAC;EAEDX,gDAAS,CAAC,MAAM;IACd,IAAImB,eAAe,EAAE;MACnBF,iBAAiB,CAAE,uBAAsBJ,WAAY,IAAGO,WAAY,EAAC,CAAC;IACxE;IAEA,OAAO,MAAM;MACXH,iBAAiB,CAAC,CAAC;IACrB,CAAC;EACH,CAAC,EAAE,CAACJ,WAAW,EAAEF,UAAU,CAAC,CAAC;EAE7BX,gDAAS,CAAC,MAAM;IACd,MAAM8B,QAAQ,GAAGA,CAAA,KAAM;MACrB,IAAI,CAAChB,QAAQ,EAAE;QACb;MACF;MAEA,IAAIJ,YAAY,KAAK,WAAW,EAAE;QAChC;MACF;MAEA,MAAMqB,IAAI,GAAGb,SAAS,CAACc,OAAO,CAACC,aAAa,CAACC,qBAAqB,CAAC,CAAC;MAEpE,MAAMC,WAAW,GAAGJ,IAAI,CAACK,GAAG,GAAG,EAAE,IAAIC,MAAM,CAACC,WAAW,IAAIC,QAAQ,CAACC,eAAe,CAACC,YAAY,CAAC;MACjG,MAAMC,OAAO,GAAG,CAAC/B,UAAU,IAAIwB,WAAW;MAE1CI,QAAQ,CAACC,eAAe,CAACG,SAAS,CAACC,MAAM,CAAC,qBAAqB,EAAEF,OAAO,CAAC;MACzEH,QAAQ,CAACM,IAAI,CAACF,SAAS,CAACC,MAAM,CAAC,qBAAqB,EAAEF,OAAO,CAAC;MAC9DxB,SAAS,CAACc,OAAO,CAACW,SAAS,CAACC,MAAM,CAAC,wBAAwB,EAAEF,OAAO,CAAC;IACvE,CAAC;IAEDH,QAAQ,CAACO,gBAAgB,CAAC,QAAQ,EAAEhB,QAAQ,CAAC;IAC7CA,QAAQ,CAAC,CAAC;IAEV,OAAO,MAAM;MACXS,QAAQ,CAACQ,mBAAmB,CAAC,QAAQ,EAAEjB,QAAQ,CAAC;IAClD,CAAC;EACH,CAAC,EAAE,CAAChB,QAAQ,EAAEH,UAAU,EAAED,YAAY,CAAC,CAAC;EAExC,QAAQA,YAAY;IAClB,KAAK,WAAW;MACd,oBACEX,0DAAA,CAAAA,uDAAA,qBACEA,0DAAA;QACEmD,SAAS,EAAEhD,2DAAU,CAAC,iBAAiB,EAAES,UAAU,IAAI,SAAS,CAAE;QAClEwC,GAAG,EAAEjC;MAAU,gBAEfnB,0DAAA;QAAKmD,SAAS,EAAC;MAAwB,gBACrCnD,0DAAA;QACE0B,EAAE,EAAC,yBAAyB;QAC5ByB,SAAS,EAAC,uBAAuB;QACjCE,IAAI,EAAC,UAAU;QACfC,SAAS,EAAC,OAAO;QACjBhC,OAAO,EAAEA,OAAQ;QACjBQ,OAAO,EAAEA,OAAQ;QACjBH,SAAS,EAAEA,SAAU;QACrB4B,IAAI,EAAC,QAAQ;QACb,eAAY;MAAc,GAEzB,CAACxC,QAAQ,gBAAGf,0DAAA,CAAAA,uDAAA,QAAE,YAAY,CAAC,gBAAGA,0DAAA,CAAAA,uDAAA,QAAE,WAAW,CAAC,EAC5CoB,eAAe,gBAEZpB,0DAAA;QAAMmD,SAAS,EAAC;MAAyB,GACtCrC,WAAW,eACZd,0DAAA;QAAMmD,SAAS,EAAC;MAAuB,GAAC,GAAC,EAAC9B,WAAkB,CACxD,CAAC,GAEP,IACH,CACA,CACF,CAAC,EACL,CAACT,UAAU,gBAAGZ,0DAAA,CAACS,wDAAU,MAAE,CAAC,gBAAGT,0DAAA,CAACI,mDAAK,MAAE,CAAC,eACzCJ,0DAAA,CAACK,oDAAQ,MAAE,CACX,CAAC;IAEP,KAAK,UAAU;IACf,KAAK,aAAa;MAChB,oBACEL,0DAAA;QAAGmD,SAAS,EAAC;MAAY,GAAC,wDAAyD,CAAC;IAExF;MACE,oBACEnD,0DAAA;QAAGmD,SAAS,EAAC;MAAY,GAAC,uBAAwB,CAAC;EAEzD;AACF;;;;;;;;;;;;;;;;;;;;;;;ACjI0D;AAEH;AACA;AACP;AAEF;AAC0B;AACN;AACM;AAEjE,SAASY,IAAIA,CAAE;EAAEC,eAAe;EAAEC;AAAiB,CAAC,EAAE;EAC3D,MAAM;IAAEtD,YAAY;IAAEuD,MAAM;IAAEC,QAAQ;IAAEC,KAAK;IAAEC,WAAW;IAAEC,aAAa;IAAE1D,UAAU;IAAE2D,QAAQ;IAAEC,UAAU;IAAEtD;EAAkB,CAAC,GAAGZ,wDAAM,CAAC,CAAC;EAE3I,MAAM,CAACmE,WAAW,EAAEC,cAAc,CAAC,GAAGlB,+CAAQ,CAAC,EAAE,CAAC;EAClD,MAAM,CAACmB,kBAAkB,EAAEC,qBAAqB,CAAC,GAAGpB,+CAAQ,CAAC,KAAK,CAAC;EAEnE,MAAMqB,UAAU,GAAG3E,6CAAM,CAAC,CAAC;EAE3B0D,kFAAmB,CAACiB,UAAU,CAAC5C,OAAO,EAAEwC,WAAW,CAAC;EAEpDxE,gDAAS,CAAC,MAAM;IACd,IAAIsE,QAAQ,CAACO,MAAM,IAAIX,QAAQ,CAACY,MAAM,KAAK,CAAC,EAAE;MAC5C,MAAMC,QAAQ,GAAGxC,QAAQ,CAACyC,aAAa,CAAC,UAAU,CAAC;MACnDD,QAAQ,CAACE,SAAS,GAAGF,QAAQ,CAACG,YAAY;IAC5C;EACF,CAAC,EAAE,CAAChB,QAAQ,EAAEG,aAAa,CAAC,CAAC;EAE7BrE,gDAAS,CAAC,MAAM;IACd,MAAMmF,KAAK,GAAG5C,QAAQ,CAACyC,aAAa,CAAC,iBAAiB,CAAC;IAEvD,IAAIR,WAAW,CAACM,MAAM,KAAK,CAAC,EAAE;MAC5BK,KAAK,CAACxC,SAAS,CAACyC,MAAM,CAAC,uBAAuB,CAAC;IACjD,CAAC,MAAM;MACLD,KAAK,CAACxC,SAAS,CAAC0C,GAAG,CAAC,uBAAuB,CAAC;IAC9C;EACF,CAAC,EAAE,CAACb,WAAW,CAAC,CAAC;EAEjB,MAAMc,QAAQ,GAAGhE,CAAC,IAAI;IACpBmD,cAAc,CAACnD,CAAC,CAACE,MAAM,EAAE+D,KAAK,CAAC;EACjC,CAAC;EAED,MAAMC,SAAS,GAAGrB,KAAK,EAAEsB,QAAQ,IAAItB,KAAK,EAAEuB,SAAS;EAErD,MAAMC,sBAAsB,GAAG9B,kFAAmB,CAACnD,YAAY,EAAE0D,WAAW,EAAEoB,SAAS,CAAC;EAExFxF,gDAAS,CAAC,MAAM;IACd,IAAI2F,sBAAsB,EAAE;MAC1B1E,iBAAiB,CAAE,uBAAsB0E,sBAAuB,EAAC,CAAC;IACpE;IAEA,OAAO,MAAM;MACX1E,iBAAiB,CAAC,CAAC;IACrB,CAAC;EACH,CAAC,EAAE,CAAC0E,sBAAsB,CAAC,CAAC;EAE5B3F,gDAAS,CAAC,MAAM;IACd,IAAIqE,aAAa,IAAI1D,UAAU,EAAE;MAC/BM,iBAAiB,CAAE,GAAEuE,SAAU,eAAc,CAAC;IAChD;IAEA,OAAO,MAAM;MACXvE,iBAAiB,CAAC,CAAC;IACrB,CAAC;EACH,CAAC,EAAE,CAACoD,aAAa,EAAE1D,UAAU,CAAC,CAAC;EAE/BX,gDAAS,CAAC,MAAM;IACd,MAAM4F,gBAAgB,GAAG1B,QAAQ,CAACA,QAAQ,CAACY,MAAM,GAAG,CAAC,CAAC;IAEtD,IAAIV,WAAW,KAAK,QAAQ,IAAIwB,gBAAgB,EAAEC,SAAS,KAAK,UAAU,EAAE;MAC1E5E,iBAAiB,CAAE,GAAEuE,SAAU,UAASI,gBAAgB,CAACE,IAAK,EAAC,CAAC;IAClE;IAEA,OAAO,MAAM;MACX7E,iBAAiB,CAAC,CAAC;IACrB,CAAC;EACH,CAAC,EAAE,CAACiD,QAAQ,CAAC,CAAC;EAEd,MAAM6B,WAAW,GAAGA,CAAA,KAAM;IACxB,IAAInB,UAAU,CAAC5C,OAAO,CAACuD,KAAK,CAACT,MAAM,KAAK,CAAC,IAAIV,WAAW,KAAK,QAAQ,EAAE;MACrE;IACF;IAEA,IAAI;MACF,MAAM4B,OAAO,GAAGpB,UAAU,CAAC5C,OAAO,CAACuD,KAAK,CAACU,IAAI,CAAC,CAAC;MAC/ChC,MAAM,CAACiC,eAAe,CAACF,OAAO,CAAC;MAC/B/E,iBAAiB,CAAE,aAAY+E,OAAQ,EAAC,CAAC;IAC3C,CAAC,CAAC,OAAOG,GAAG,EAAE;MACZC,OAAO,CAACC,GAAG,CAAC,0BAA0B,EAAEF,GAAG,CAAC;IAC9C;IAEA1B,cAAc,CAAC,EAAE,CAAC;EACpB,CAAC;EAED,MAAM6B,YAAY,GAAGhF,CAAC,IAAI;IACxBA,CAAC,CAACC,cAAc,CAAC,CAAC;IAClBwE,WAAW,CAAC,CAAC;EACf,CAAC;EAED,MAAMQ,QAAQ,GAAGA,CAAA,KAAM;IACrB,MAAMC,UAAU,GAAG5C,4EAAgB,CAACM,QAAQ,CAAC;IAE7C,MAAMuC,YAAY,GAAGlE,QAAQ,CAACyC,aAAa,CAAC,sBAAsB,CAAC;IAEnEyB,YAAY,CAACC,YAAY,CAAC,MAAM,EAAG,iCAAgCF,UAAW,EAAC,CAAC;EAClF,CAAC;EAED,MAAMG,cAAc,GAAGrF,CAAC,IAAI;IAC1B,IAAIA,CAAC,CAACM,GAAG,KAAK,OAAO,IAAI,CAACN,CAAC,CAACsF,QAAQ,EAAE;MACpC,QAAQtF,CAAC,CAACE,MAAM,CAACC,EAAE;QACjB,KAAK,WAAW;UACdH,CAAC,CAACC,cAAc,CAAC,CAAC;UAClBwE,WAAW,CAAC,CAAC;UACb;QACF,KAAK,UAAU;UACbhC,eAAe,CAACzC,CAAC,CAAC;UAClB;QACF,KAAK,aAAa;UAChB0C,gBAAgB,CAAC1C,CAAC,CAAC;UACnB;QACF,KAAK,qBAAqB;UACxBiF,QAAQ,CAAC,CAAC;UACV;QACF;UACE;MACJ;IACF;IACA,IAAIjF,CAAC,CAACM,GAAG,KAAK,GAAG,EAAE;MACjB,IAAIN,CAAC,CAACE,MAAM,CAACC,EAAE,KAAK,UAAU,EAAE;QAC9BsC,eAAe,CAACzC,CAAC,CAAC;MACpB;MACA,IAAIA,CAAC,CAACE,MAAM,CAACC,EAAE,KAAK,aAAa,EAAE;QACjCuC,gBAAgB,CAAC1C,CAAC,CAAC;MACrB;IACF;EACF,CAAC;EAED,oBACEvB,0DAAA,CAAAA,uDAAA,qBACEA,0DAAA,CAACyD,gEAAW,MAAE,CAAC,eAEfzD,0DAAA;IAAKmD,SAAS,EAAC;EAAW,gBACxBnD,0DAAA;IAAGmD,SAAS,EAAC;EAAyB,GAAEyC,sBAA0B,CAAC,eACnE5F,0DAAA;IACE0B,EAAE,EAAC,UAAU;IACbyB,SAAS,EAAC,iBAAiB;IAC3BE,IAAI,EAAC,GAAG;IACR,eAAY,cAAc;IAC1BE,IAAI,EAAC,QAAQ;IACbjC,OAAO,EAAE0C,eAAgB;IACzBrC,SAAS,EAAEiF;EAAe,GAC3B,UAEE,CACA,CAAC,eAEN5G,0DAAA;IAAKmD,SAAS,EAAC,SAAS;IAAC2D,QAAQ,EAAC;EAAG,gBACnC9G,0DAAA;IAAImD,SAAS,EAAC;EAAS,GACpBgB,QAAQ,CAACY,MAAM,GACZZ,QAAQ,CAAC4C,GAAG,CAAC,CAACC,GAAG,EAAEC,KAAK,kBAAKjH,0DAAA,CAAC2D,yDAAO;IAAC9B,GAAG,EAAEmF,GAAG,CAACtF,EAAG;IAACuE,OAAO,EAAEe,GAAI;IAACE,eAAe,EAAE/C,QAAQ,CAAC8C,KAAK,GAAG,CAAC;EAAE,CAAE,CAAC,CAAC,GAC1G,IAAI,EACP3C,aAAa,gBAEVtE,0DAAA;IAAImD,SAAS,EAAC;EAA2B,gBACvCnD,0DAAA;IAAKmD,SAAS,EAAC;EAAe,GAAEsC,SAAS,EAAC,YAAe,CAAC,eAC1DzF,0DAAA;IAAKmD,SAAS,EAAC;EAAwB,gBACrCnD,0DAAA;IAAKmH,KAAK,EAAC,IAAI;IAACC,MAAM,EAAC,IAAI;IAACC,CAAC,EAAC,KAAK;IAACC,CAAC,EAAC,KAAK;IAACC,OAAO,EAAC;EAAW,gBAC7DvH,0DAAA;IAAQwH,MAAM,EAAC,MAAM;IAACC,EAAE,EAAC,GAAG;IAACC,EAAE,EAAC,GAAG;IAACC,CAAC,EAAC,GAAG;IAACC,IAAI,EAAC;EAAc,CAAE,CAAC,eAChE5H,0DAAA;IAAQwH,MAAM,EAAC,MAAM;IAACC,EAAE,EAAC,IAAI;IAACC,EAAE,EAAC,GAAG;IAACC,CAAC,EAAC,GAAG;IAACC,IAAI,EAAC;EAAc,CAAE,CAAC,eACjE5H,0DAAA;IAAQwH,MAAM,EAAC,MAAM;IAACC,EAAE,EAAC,IAAI;IAACC,EAAE,EAAC,GAAG;IAACC,CAAC,EAAC,GAAG;IAACC,IAAI,EAAC;EAAc,CAAE,CAC7D,CACF,CACH,CAAC,GAEL,IACF,CACD,CAAC,eAEN5H,0DAAA,CAAC0D,gEAAW,qBACV1D,0DAAA;IAAMmD,SAAS,EAAG,UAASwB,kBAAkB,GAAG,kBAAkB,GAAG,EAAG,EAAE;IAACkD,UAAU;IAACC,QAAQ,EAAEvB;EAAa,gBAC3GvG,0DAAA;IAAOmD,SAAS,EAAC,4BAA4B;IAAC4E,OAAO,EAAC;EAAkB,GAAC,cAC3D,eAAA/H,0DAAA;IAAMmD,SAAS,EAAC;EAAuB,GAAC,sBAA0B,CACzE,CAAC,eAERnD,0DAAA;IACEoD,GAAG,EAAEyB,UAAW;IAChBmD,IAAI,EAAC,GAAG;IACR,iBAAc,MAAM;IACpB7E,SAAS,EAAC,mBAAmB;IAC7BzB,EAAE,EAAC,WAAW;IACduG,IAAI,EAAC,SAAS;IACd1C,QAAQ,EAAEA,QAAS;IACnB5D,SAAS,EAAEiF,cAAe;IAC1BsB,OAAO,EAAEA,CAAA,KAAM;MAAEtD,qBAAqB,CAACJ,UAAU,CAAC;IAAC,CAAE;IACrD2D,MAAM,EAAEA,CAAA,KAAM;MAAEvD,qBAAqB,CAAC,KAAK,CAAC;IAAC,CAAE;IAC/CY,KAAK,EAAEf;EAAY,CACpB,CAAC,eAEFzE,0DAAA;IACEoI,IAAI,EAAC,QAAQ;IACbjF,SAAS,EAAC,8BAA8B;IACxCqC,KAAK,EAAC,MAAM;IACZ,6BAA0B;EAAM,CACjC,CACG,CAAC,eAEPxF,0DAAA;IAAKmD,SAAS,EAAC;EAAqB,gBAClCnD,0DAAA;IACEqD,IAAI,EAAC,GAAG;IACR3B,EAAE,EAAC,aAAa;IAChByB,SAAS,EAAC,0BAA0B;IACpC,eAAY,cAAc;IAC1BxB,SAAS,EAAEiF,cAAe;IAC1BtF,OAAO,EAAE2C;EAAiB,GAC3B,UAEE,CAAC,eACJjE,0DAAA;IACEqD,IAAI,EAAC,GAAG;IACR3B,EAAE,EAAC,qBAAqB;IACxByB,SAAS,EAAC,0BAA0B;IACpC,eAAY,cAAc;IAC1BkF,QAAQ,EAAC,kCAAkC;IAC3C1G,SAAS,EAAEiF,cAAe;IAC1BtF,OAAO,EAAEkF;EAAS,GACnB,WAEE,CACA,CACM,CACb,CAAC;AAEP;;;;;;;;;;;;;;;;ACxOyB;AAElB,MAAM8B,YAAY,GAAGA,CAAC;EAAEC;AAAO,CAAC,KAAK;EAC1C,MAAMC,IAAI,GAAGC,MAAM,CAACC,IAAI,CAACH,MAAM,CAAC;EAEhC,MAAMI,SAAS,GAAGpH,CAAC,IAAI;IACrBA,CAAC,CAACC,cAAc,CAAC,CAAC;IAClB,MAAMK,GAAG,GAAGN,CAAC,CAACE,MAAM,CAACmH,YAAY,CAAC,UAAU,CAAC;IAC7CpG,QAAQ,CAACyC,aAAa,CAAE,OAAMpD,GAAI,EAAC,CAAC,CAACgH,KAAK,CAAC,CAAC;EAC9C,CAAC;EAED,IAAIL,IAAI,CAACzD,MAAM,KAAK,CAAC,EAAE;IACrB,OAAO,IAAI;EACb;EAEA,oBACE/E,0DAAA;IAAKmD,SAAS,EAAC,oDAAoD;IAAC,eAAY,qBAAqB;IAAC2D,QAAQ,EAAC;EAAI,gBACjH9G,0DAAA;IAAKuD,IAAI,EAAC;EAAO,gBACfvD,0DAAA;IAAI0B,EAAE,EAAC,UAAU;IAACyB,SAAS,EAAC;EAAoD,GAAC,oBAE7E,CAAC,eACLnD,0DAAA;IAAKmD,SAAS,EAAC;EAA2B,gBACxCnD,0DAAA;IAAImD,SAAS,EAAC;EAA6D,GACxEqF,IAAI,CAACzB,GAAG,CAAClF,GAAG,iBACX7B,0DAAA;IAAI6B,GAAG,EAAEA;EAAI,gBACX7B,0DAAA;IAAGqD,IAAI,EAAC,GAAG;IAAC,YAAUxB,GAAI;IAACP,OAAO,EAAEqH;EAAU,GAAEJ,MAAM,CAAC1G,GAAG,CAAK,CAC7D,CACL,CACC,CACD,CACF,CACF,CAAC;AAEV,CAAC;;;;;;;;;;;;;;;;;;;ACjC8D;AACzB;AACE;AAExC,MAAMmH,qBAAqB,GAAG,IAAI;AAE3B,MAAMvI,UAAU,GAAGA,CAAA,KAAM;EAC9B,MAAM;IAAE4D,WAAW;IAAE4E,cAAc;IAAE/H;EAAkB,CAAC,GAAGZ,qDAAM,CAAC,CAAC;EAEnE,MAAM,CAAC4I,KAAK,EAAEC,QAAQ,CAAC,GAAG3F,+CAAQ,CAAC,CAAC;EACpC,MAAM,CAAC4F,KAAK,EAAEC,QAAQ,CAAC,GAAG7F,+CAAQ,CAAC,CAAC;EAEpC,MAAM8F,cAAc,GAAGjF,WAAW,KAAK,QAAQ,IAAIA,WAAW,KAAK,IAAI;EAEvE,MAAMkF,SAAS,GAAGA,CAAA,KAAM;IACtBJ,QAAQ,CAAC,CAAC;IACVE,QAAQ,CAAC,CAAC;EACZ,CAAC;EAED,MAAMG,OAAO,GAAGV,kDAAW,CAACC,sDAAQ,CAAChD,IAAI,IAAI;IAC3C,IAAImD,KAAK,EAAE;MACTG,QAAQ,CAACtD,IAAI,CAAC;IAChB,CAAC,MAAM;MACLoD,QAAQ,CAACpD,IAAI,CAAC;IAChB;EACF,CAAC,EAAEiD,qBAAqB,CAAC,EAAE,CAACE,KAAK,EAAEE,KAAK,CAAC,CAAC;EAE1CnJ,gDAAS,CAAC,MAAM;IACd,IAAIgJ,cAAc,EAAE;MAClBM,SAAS,CAAC,CAAC;MACXC,OAAO,CAACP,cAAc,CAAC;IACzB;IAEA,IAAIK,cAAc,EAAE;MAClBC,SAAS,CAAC,CAAC;MACXrI,iBAAiB,CAAC,CAAC;IACrB;IAEA,OAAO,MAAM;MACXqI,SAAS,CAAC,CAAC;MACXrI,iBAAiB,CAAC,CAAC;IACrB,CAAC;EACH,CAAC,EAAE,CAAC+H,cAAc,CAAC,CAAC;EAEpB,oBACEjJ,0DAAA,CAAAA,uDAAA,qBACEA,0DAAA;IAAKmD,SAAS,EAAC,SAAS;IAACI,IAAI,EAAC,QAAQ;IAAC,eAAY;EAAM,GACtD2F,KACE,CAAC,eACNlJ,0DAAA;IAAKmD,SAAS,EAAC,SAAS;IAACI,IAAI,EAAC,QAAQ;IAAC,eAAY;EAAM,GACtD6F,KACE,CACL,CAAC;AAEP,CAAC;;;;;;;;;;;;;;;;;ACtDwB;AACwB;AAE1C,SAASzF,OAAOA,CAAE;EAAEsC,OAAO;EAAEiB;AAAgB,CAAC,EAAE;EACrD,MAAMuC,QAAQ,GAAGxD,OAAO,CAACH,SAAS,KAAK,UAAU;EAEjD,MAAM4D,0BAA0B,GAAGzD,OAAO,EAAEH,SAAS,KAAKoB,eAAe,EAAEpB,SAAS;EAEpF,oBACE9F,0DAAA;IAAImD,SAAS,EAAEhD,2DAAU,CAAC,kBAAkB,EAAEsJ,QAAQ,GAAG,UAAU,GAAG,SAAS;EAAE,gBAC/EzJ,0DAAA;IAAKmD,SAAS,EAAC;EAAe,GAC3BuG,0BAA0B,GAAG,IAAI,gBAAG1J,0DAAA,eAAOyJ,QAAQ,GAAGxD,OAAO,CAAC0D,QAAQ,GAAG,KAAY,CAAC,eACvF3J,0DAAA;IAAMmD,SAAS,EAAC;EAAuB,GAAC,GAAO,CAC5C,CAAC,eACNnD,0DAAA;IAAKmD,SAAS,EAAEhD,2DAAU,CAAC,eAAe,EAAEsJ,QAAQ,GAAG,UAAU,GAAG,SAAS;EAAE,GAC5ExD,OAAO,CAACF,IACN,CACH,CAAC;AAET;;;;;;;;;;;;;;;;ACnByB;AAElB,SAASrC,WAAWA,CAAE;EAAEkG;AAAS,CAAC,EAAE;EACzC,oBACE5J,0DAAA;IAAKmD,SAAS,EAAC;EAAW,GACvByG,QACE,CAAC;AAEV;;;;;;;;;;;;;;;;;;ACRyB;AACqB;AACY;AAEnD,SAASnG,WAAWA,CAAA,EAAI;EAC7B,MAAM;IAAES,MAAM;IAAEnD,QAAQ;IAAEF,iBAAiB;IAAEG,cAAc;IAAE6I;EAAS,CAAC,GAAGvJ,wDAAM,CAAC,CAAC;EAElF,MAAMwJ,OAAO,GAAGvI,CAAC,IAAI;IACnBA,CAAC,CAACC,cAAc,CAAC,CAAC;IAClBX,iBAAiB,CAAC,KAAK,CAAC;IACxBL,oEAAmB,CAAC,CAAC;IAErB,IAAIO,QAAQ,EAAE;MACZmD,MAAM,EAAE6F,eAAe,CAAC,CAAC;MACzB/I,cAAc,CAAC,CAAC,CAAC;IACnB;EACF,CAAC;EAED,MAAMgJ,mBAAmB,gBACvBhK,0DAAA;IAAQmD,SAAS,EAAC,iBAAiB;IAAC,cAAW,mBAAmB;IAAC7B,OAAO,EAAEwI;EAAQ,gBAClF9J,0DAAA;IAAK,eAAY,MAAM;IAACiK,SAAS,EAAC,OAAO;IAAC9C,KAAK,EAAC,IAAI;IAACC,MAAM,EAAC,IAAI;IAACG,OAAO,EAAC;EAAW,gBAClFvH,0DAAA;IAAMkK,CAAC,EAAC,mGAAmG;IAACtC,IAAI,EAAC;EAAc,CAAE,CAC9H,CACC,CACT;EAED,MAAMuC,oBAAoB,gBACxBnK,0DAAA;IAAQmD,SAAS,EAAC,kBAAkB;IAAC,cAAW,mBAAmB;IAAC7B,OAAO,EAAEwI;EAAQ,gBACnF9J,0DAAA;IAAK,eAAY,MAAM;IAACiK,SAAS,EAAC,OAAO;IAAC9C,KAAK,EAAC,IAAI;IAACC,MAAM,EAAC,IAAI;IAACG,OAAO,EAAC;EAAW,gBAClFvH,0DAAA;IAAMkK,CAAC,EAAC,gGAAgG;IAACtC,IAAI,EAAC;EAAc,CAAE,CAC3H,CACC,CACT;EAED,MAAMwC,uBAAuB,gBAC3BpK,0DAAA;IAAQmD,SAAS,EAAC,iBAAiB;IAAC,cAAW,sBAAsB;IAAC7B,OAAO,EAAEwI;EAAQ,gBACrF9J,0DAAA;IAAK,eAAY,MAAM;IAACiK,SAAS,EAAC,OAAO;IAAC9C,KAAK,EAAC,IAAI;IAACC,MAAM,EAAC,IAAI;IAACG,OAAO,EAAC;EAAW,gBAClFvH,0DAAA;IAAMkK,CAAC,EAAC,iDAAiD;IAACtC,IAAI,EAAC;EAAc,CAAE,CAC5E,CACC,CACT;EAED,MAAMyC,qBAAqB,GAAGR,QAAQ,IAAIvH,MAAM,CAACgI,OAAO,CAACC,KAAK;EAC9D,MAAMC,oBAAoB,GAAGX,QAAQ,IAAI,CAACvH,MAAM,CAACgI,OAAO,CAACC,KAAK;EAE9D,IAAIE,oBAAoB,GAAGN,oBAAoB;EAE/C,IAAIpJ,QAAQ,EAAE;IACZ0J,oBAAoB,GAAGL,uBAAuB;IAE9C,IAAII,oBAAoB,EAAE;MACxBC,oBAAoB,GAAGL,uBAAuB;IAChD;EACF;EAEA,IAAI,CAACrJ,QAAQ,IAAIyJ,oBAAoB,EAAE;IACrCC,oBAAoB,GAAGN,oBAAoB;EAC7C;EAEA,IAAIE,qBAAqB,EAAE;IACzBI,oBAAoB,GAAG,IAAI;EAC7B;EAEA,oBACEzK,0DAAA;IAAKmD,SAAS,EAAC;EAAW,GACvBkH,qBAAqB,GAAGL,mBAAmB,GAAG,IAAI,eAEnDhK,0DAAA;IAAI0B,EAAE,EAAC,iBAAiB;IAACyB,SAAS,EAAC;EAAkB,GAAC,mBAElD,CAAC,EAEJsH,oBACE,CAAC;AAEV;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1E+D;AACvB;AACY;AAEH;AACQ;AAClB;AACiB;AACP;AACC;AACA;AACH;AAED;AACQ;AACgB;AACZ;AAEnD,SAASrK,KAAKA,CAAA,EAAI;EACvB,MAAM;IAAE+K,GAAG;IAAExK,YAAY;IAAEyK,YAAY;IAAElH,MAAM;IAAEnD,QAAQ;IAAEsK,SAAS;IAAEC,WAAW;IAAEzK,iBAAiB;IAAE0K,WAAW;IAAEvK,cAAc;IAAE6I,QAAQ;IAAErF;EAAW,CAAC,GAAGlE,yDAAM,CAAC,CAAC;EACpK,MAAM;IAAEkL,WAAW;IAAEC;EAAc,CAAC,GAAGR,iEAAU,CAACE,GAAG,CAAC;EAEtD,MAAM,CAACO,MAAM,EAAEC,SAAS,CAAC,GAAGnI,+CAAQ,CAACzC,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC;EAEtDmK,iFAAkB,CAACQ,MAAM,CAAC;EAE1B,MAAME,WAAW,GAAG9C,kDAAW,CAACvH,CAAC,IAAI;IACnC,IAAIA,CAAC,CAACM,GAAG,KAAK,QAAQ,IAAIN,CAAC,CAACM,GAAG,KAAK,KAAK,EAAE;MACzC,IAAId,QAAQ,EAAE;QACZmD,MAAM,EAAE6F,eAAe,CAAC,CAAC;QACzB/I,cAAc,CAAC,CAAC,CAAC;MACnB;MACAH,iBAAiB,CAAC,KAAK,CAAC;MACxBL,qEAAmB,CAAC,CAAC;IACvB;EACF,CAAC,EAAE,CAAC0D,MAAM,EAAEnD,QAAQ,EAAEC,cAAc,EAAEH,iBAAiB,CAAC,CAAC;;EAEzD;AACF;AACA;EACEZ,gDAAS,CAAC,MAAM;IACd,OAAO,MAAM;MACXuC,QAAQ,CAACqJ,cAAc,CAACT,YAAY,CAAC,EAAEvC,KAAK,CAAC,CAAC;IAChD,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;;EAEN;AACF;AACA;EACE5I,gDAAS,CAAC,MAAM;IACduC,QAAQ,CAACM,IAAI,CAACF,SAAS,CAACyC,MAAM,CAAC,aAAa,CAAC;IAC7C7C,QAAQ,CAACsJ,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAClJ,SAAS,CAAC0C,GAAG,CAAC,WAAW,CAAC;IACnE9C,QAAQ,CAACM,IAAI,CAACF,SAAS,CAAC0C,GAAG,CAAC,WAAW,CAAC;IACxC,OAAO,MAAM;MACX9C,QAAQ,CAACsJ,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAClJ,SAAS,CAACyC,MAAM,CAAC,WAAW,CAAC;MACtE7C,QAAQ,CAACM,IAAI,CAACF,SAAS,CAACyC,MAAM,CAAC,WAAW,CAAC;IAC7C,CAAC;EACH,CAAC,EAAE,CAACwE,QAAQ,CAAC,CAAC;;EAEd;AACF;AACA;EACE5J,gDAAS,CAAC,MAAM;IACduC,QAAQ,CAACO,gBAAgB,CAAC,SAAS,EAAE6I,WAAW,CAAC;IAEjD,OAAO,MAAM;MACXpJ,QAAQ,CAACQ,mBAAmB,CAAC,SAAS,EAAE4I,WAAW,CAAC;IACtD,CAAC;EACH,CAAC,EAAE,CAACA,WAAW,EAAE/K,iBAAiB,CAAC,CAAC;;EAEpC;AACF;AACA;EACEZ,gDAAS,CAAC,MAAM;IACd,MAAM8L,OAAO,GAAG,MAAAA,CAAA,KAAY;MAC1B,IAAI;QACF,MAAMC,aAAa,GAAG,MAAMR,WAAW,CAACzK,QAAQ,CAAC;QACjDsK,SAAS,CAACW,aAAa,CAAC;QAExB,MAAMC,eAAe,GAAG,MAAMR,aAAa,CAACO,aAAa,EAAEjL,QAAQ,CAAC;QACpEwK,WAAW,CAACU,eAAe,CAAC;MAC9B,CAAC,CAAC,OAAO7F,GAAG,EAAE;QACZC,OAAO,CAACC,GAAG,CAAC,0BAA0B,EAAEF,GAAG,CAAC;QAE5CkF,WAAW,CAAC,CAAC;QACbD,SAAS,CAAC,CAAC;QACXM,SAAS,CAAC,CAAC,CAAC;MACd;IACF,CAAC;IAED,IAAI5K,QAAQ,EAAE;MACZ,IAAImD,MAAM,EAAE;QACVA,MAAM,CAAC6F,eAAe,CAAC,CAAC;QACxB/I,cAAc,CAAC,CAAC,CAAC;QACjB2K,SAAS,CAAC,CAAC,CAAC;MACd,CAAC,MAAM;QACLI,OAAO,CAAC,CAAC;MACX;IACF;EACF,CAAC,EAAE,CAAC7H,MAAM,EAAEnD,QAAQ,CAAC,CAAC;EAEtB,MAAMmL,kBAAkB,GAAGC,SAAS,IAAI5K,CAAC,IAAI;IAC3CA,CAAC,CAACC,cAAc,CAAC,CAAC;IAClBmK,SAAS,CAACQ,SAAS,CAAC;EACtB,CAAC;EAED,MAAMC,iBAAiB,GAAGF,kBAAkB,CAAC,CAAC,CAAC;EAC/C,MAAMG,qBAAqB,GAAGH,kBAAkB,CAAC,CAAC,CAAC;EACnD,MAAMI,cAAc,GAAGJ,kBAAkB,CAAC,CAAC,CAAC;EAC5C,MAAMK,iBAAiB,GAAGL,kBAAkB,CAAC,CAAC,CAAC;EAC/C,MAAMM,kBAAkB,GAAGN,kBAAkB,CAAC,CAAC,CAAC;EAChD,MAAMO,kBAAkB,GAAGP,kBAAkB,CAAC,CAAC,CAAC;EAEhD,IAAIQ,eAAe;EAEnB,QAAQhB,MAAM;IACZ,KAAK,CAAC;MACJgB,eAAe,gBAAG1M,0DAAA,CAAC2K,0DAAO;QAACgC,UAAU,EAAEN;MAAsB,CAAE,CAAC;MAChE;IACF,KAAK,CAAC;MACJK,eAAe,gBAAG1M,0DAAA,CAAC4K,kEAAW;QAACgC,eAAe,EAAER;MAAkB,CAAE,CAAC;MACrE;IACF,KAAK,CAAC;MACJM,eAAe,gBAAG1M,0DAAA,CAAC+D,gDAAI;QAACE,gBAAgB,EAAEwI,kBAAmB;QAACzI,eAAe,EAAEuI;MAAkB,CAAE,CAAC;MACpG;IACF,KAAK,CAAC;MACJG,eAAe,gBAAG1M,0DAAA,CAAC8K,0DAAO;QAAC+B,YAAY,EAAEP,cAAe;QAACQ,gBAAgB,EAAEN;MAAmB,CAAE,CAAC;MACjG;IACF,KAAK,CAAC;MACJE,eAAe,gBACb1M,0DAAA,CAACgL,2DAAQ;QAAC+B,QAAQ,EAAEA,CAAA,KAAM;UACxBlM,iBAAiB,CAAC,KAAK,CAAC;UACxBL,qEAAmB,CAAC,CAAC;QACvB;MAAE,CACD,CACF;MACD;IACF,KAAK,CAAC;MACJkM,eAAe,gBAAG1M,0DAAA,CAAC+K,2DAAQ;QAACgC,QAAQ,EAAET;MAAe,CAAE,CAAC;MACxD;IACF;MACEI,eAAe,gBAAG1M,0DAAA,CAAC2K,0DAAO;QAACgC,UAAU,EAAEN;MAAsB,CAAE,CAAC;EACpE;EAEA,IAAI1L,YAAY,KAAK,aAAa,EAAE;IAClC+L,eAAe,gBAAG1M,0DAAA,CAAC6K,iEAAW,MAAE,CAAC;EACnC;EAEA,MAAMmC,SAAS,gBACbhN,0DAAA;IAAK0B,EAAE,EAAC,UAAU;IAAC6B,IAAI,EAAC,QAAQ;IAACJ,SAAS,EAAEhD,8DAAU,CAAC,UAAU,EAAEqE,UAAU,IAAI,kBAAkB,CAAE;IAACsC,QAAQ,EAAC,IAAI;IAAC,cAAW,MAAM;IAAC,mBAAgB;EAAiB,gBACrK9G,0DAAA;IAAKmD,SAAS,EAAC;EAAiB,GAC7BuJ,eACE,CAAC,eACN1M,0DAAA,CAACS,yDAAU,MAAE,CACV,CACN;EAED,oBACET,0DAAA,CAAAA,uDAAA,qBACG0K,uDAAY,CAACsC,SAAS,EAAExK,QAAQ,CAACM,IAAI,CACtC,CAAC;AAEP;;;;;;;;;;;;;;;;;;AClKwC;AACe;AACT;AAEvC,SAASgI,OAAOA,CAAE;EAAE+B,YAAY;EAAEC;AAAiB,CAAC,EAAE;EAC3D,MAAM;IAAEG,aAAa;IAAE3B,WAAW;IAAEC,WAAW;IAAElH,WAAW;IAAEH,MAAM;IAAEnD,QAAQ;IAAEC,cAAc;IAAEwD;EAAW,CAAC,GAAGlE,wDAAM,CAAC,CAAC;EAEvH,MAAM4M,cAAc,GAAG,MAAM3L,CAAC,IAAI;IAChCA,CAAC,CAACC,cAAc,CAAC,CAAC;IAElBc,MAAM,CAAC6K,YAAY,CAACC,OAAO,CAAC,aAAa,EAAErM,QAAQ,CAAC;IACpDuK,WAAW,CAAC,CAAC;IACbC,WAAW,CAAC,EAAE,CAAC;IACf0B,aAAa,CAAC,CAAC;IACf/I,MAAM,CAAC6F,eAAe,CAAC,CAAC;IACxB/I,cAAc,CAAC,CAAC,CAAC;;IAEjB;IACA,IAAIqD,WAAW,KAAK,QAAQ,EAAE;MAC5BH,MAAM,CAACmJ,OAAO,CAAC,CAAC;IAClB;IAEAP,gBAAgB,CAACvL,CAAC,CAAC;EACrB,CAAC;EAEDtB,gDAAS,CAAC,MAAM;IACd,IAAIuE,UAAU,EAAE;MACd8I,UAAU,CAAC,MAAM;QACf9K,QAAQ,CAACyC,aAAa,CAAC,kBAAkB,CAAC,CAAC4D,KAAK,CAAC,CAAC;MACpD,CAAC,EAAE,EAAE,CAAC;IACR;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMjC,cAAc,GAAGrF,CAAC,IAAI;IAC1B,IAAI,CAACA,CAAC,CAACM,GAAG,KAAK,OAAO,IAAIN,CAAC,CAACM,GAAG,KAAK,GAAG,KAAKN,CAAC,CAACE,MAAM,CAACC,EAAE,KAAK,iBAAiB,EAAE;MAC7EwL,cAAc,CAAC3L,CAAC,CAAC;IACnB;IACA,IAAI,CAACA,CAAC,CAACM,GAAG,KAAK,OAAO,IAAIN,CAAC,CAACM,GAAG,KAAK,GAAG,KAAKN,CAAC,CAACE,MAAM,CAACC,EAAE,KAAK,aAAa,EAAE;MACzEmL,YAAY,CAACtL,CAAC,CAAC;IACjB;EACF,CAAC;EAED,oBACEvB,0DAAA,CAAAA,uDAAA,qBACEA,0DAAA,CAACyD,gEAAW,MAAE,CAAC,eACfzD,0DAAA;IAAKmD,SAAS,EAAC;EAAS,gBACtBnD,0DAAA;IAAKmD,SAAS,EAAC;EAAY,gBACzBnD,0DAAA;IAAImD,SAAS,EAAC,YAAY;IAAC,aAAU;EAAQ,GAAC,wCAA0C,CAAC,eACzFnD,0DAAA;IAAKmD,SAAS,EAAC;EAAoB,gBACjCnD,0DAAA;IACE0B,EAAE,EAAC,iBAAiB;IACpB2B,IAAI,EAAC,UAAU;IACfE,IAAI,EAAC,QAAQ;IACbJ,SAAS,EAAC,wBAAwB;IAClC,eAAY,cAAc;IAC1B7B,OAAO,EAAE4L,cAAe;IACxBvL,SAAS,EAAEiF;EAAe,GAC3B,eAEE,CAAC,eACJ5G,0DAAA;IACE0B,EAAE,EAAC,aAAa;IAChB2B,IAAI,EAAC,aAAa;IAClBE,IAAI,EAAC,QAAQ;IACbJ,SAAS,EAAC,oBAAoB;IAC9B,eAAY,cAAc;IAC1B7B,OAAO,EAAEuL,YAAa;IACtBlL,SAAS,EAAEiF;EAAe,GAC3B,iBAEE,CACA,CACF,CACF,CACL,CAAC;AAEP;;;;;;;;;;;;;;;;;AC5EyB;AAC8B;AAEhD,SAASoE,QAAQA,CAAE;EAAE+B;AAAS,CAAC,EAAE;EACtC,MAAMQ,YAAY,GAAGA,CAAA,KAAM;IACzB,MAAMC,WAAW,GAAGlL,MAAM,CAAC6K,YAAY,CAACM,OAAO,CAAC,aAAa,CAAC;IAC9DnL,MAAM,CAACoL,QAAQ,CAACrK,IAAI,GAAI,sEAAqEmK,WAAY,WAAUlL,MAAM,CAACoL,QAAQ,CAACrK,IAAK,EAAC;IACzIf,MAAM,CAAC6K,YAAY,CAACQ,UAAU,CAAC,aAAa,CAAC;EAC/C,CAAC;EAED,MAAMC,aAAa,GAAG,MAAMrM,CAAC,IAAI;IAC/Be,MAAM,CAAC6K,YAAY,CAACQ,UAAU,CAAC,aAAa,CAAC;IAC7CZ,QAAQ,CAACxL,CAAC,CAAC;EACb,CAAC;EAED,MAAMqF,cAAc,GAAGrF,CAAC,IAAI;IAC1B,IAAIA,CAAC,CAACM,GAAG,KAAK,OAAO,IAAIN,CAAC,CAACM,GAAG,KAAK,GAAG,EAAE;MACtC,IAAIN,CAAC,CAACE,MAAM,CAACC,EAAE,KAAK,gBAAgB,EAAE;QACpCkM,aAAa,CAACrM,CAAC,CAAC;MAClB;MACA,IAAIA,CAAC,CAACE,MAAM,CAACC,EAAE,KAAK,eAAe,EAAE;QACnC6L,YAAY,CAAC,CAAC;MAChB;IACF;EACF,CAAC;EAED,oBACEvN,0DAAA,CAAAA,uDAAA,qBACEA,0DAAA,CAACyD,gEAAW,MAAE,CAAC,eAEfzD,0DAAA;IAAKmD,SAAS,EAAC;EAAS,gBACtBnD,0DAAA;IAAKmD,SAAS,EAAC;EAAY,gBACzBnD,0DAAA;IAAI0B,EAAE,EAAC,aAAa;IAACyB,SAAS,EAAC;EAAY,GAAC,oCAAsC,CAAC,eACnFnD,0DAAA,YAAG,uDAAmD,CAAC,eACvDA,0DAAA,yBACEA,0DAAA;IACE0B,EAAE,EAAC,eAAe;IAClByB,SAAS,EAAC,YAAY;IACtBE,IAAI,EAAC,GAAG;IACR5B,MAAM,EAAC,QAAQ;IACfoM,GAAG,EAAC,YAAY;IAChBlM,SAAS,EAAEiF,cAAe;IAC1BtF,OAAO,EAAEiM;EAAa,GACvB,eAEE,CACF,CAAC,eACJvN,0DAAA,yBACEA,0DAAA;IACE0B,EAAE,EAAC,gBAAgB;IACnByB,SAAS,EAAC,oBAAoB;IAC9BE,IAAI,EAAC,GAAG;IACR,eAAY,cAAc;IAC1BE,IAAI,EAAC,QAAQ;IACb5B,SAAS,EAAEiF,cAAe;IAC1BtF,OAAO,EAAEsM;EAAc,GACxB,OAEE,CACF,CACA,CACF,CACL,CAAC;AAEP;;;;;;;;;;;;;;;;;AChEyB;AAC8B;AAEhD,SAASjD,OAAOA,CAAE;EAAEgC;AAAW,CAAC,EAAE;EACvC,oBACE3M,0DAAA,CAAAA,uDAAA,qBACEA,0DAAA,CAACyD,gEAAW,MAAE,CAAC,eAEfzD,0DAAA;IAAKmD,SAAS,EAAC;EAAS,gBACtBnD,0DAAA;IAAKmD,SAAS,EAAC;EAAY,gBACzBnD,0DAAA;IAAImD,SAAS,EAAC,YAAY;IAAC,aAAU;EAAQ,GAAC,8BAAgC,CAAC,eAC/EnD,0DAAA,YAAG,wDAAyD,CAAC,eAE7DA,0DAAA,YAAG,6BAA8B,CAAC,eAClCA,0DAAA;IAAImD,SAAS,EAAC;EAAS,gBACrBnD,0DAAA,aAAI,gDAAkD,CAAC,eACvDA,0DAAA,aAAI,0CAA4C,CAAC,eACjDA,0DAAA,aAAI,uDAAyD,CAC3D,CAAC,eACLA,0DAAA,YAAG,6BAED,eAAAA,0DAAA;IAAGmD,SAAS,EAAC,YAAY;IAACE,IAAI,EAAC,+CAA+C;IAAC5B,MAAM,EAAC,QAAQ;IAACoM,GAAG,EAAC;EAAY,GAAC,4BAE7G,CAAC,eAEJ,eAAA7N,0DAAA;IAAGmD,SAAS,EAAC,YAAY;IAACE,IAAI,EAAC,yDAAyD;IAAC5B,MAAM,EAAC,QAAQ;IAACoM,GAAG,EAAC;EAAY,GAAC,oCAEvH,CAAC,KACH,CAAC,eACJ7N,0DAAA,YAAG,2BAED,eAAAA,0DAAA;IACEmD,SAAS,EAAC,YAAY;IACtBE,IAAI,EAAC,uCAAuC;IAC5C5B,MAAM,EAAC,QAAQ;IACfoM,GAAG,EAAC;EAAY,GACjB,gBAEE,CAAC,KACH,CAAC,eAEJ7N,0DAAA;IAAQmD,SAAS,EAAC,6CAA6C;IAAC,eAAY,cAAc;IAAC7B,OAAO,EAAEqL;EAAW,GAAC,UAAgB,CAAC,eAEjI3M,0DAAA;IAAImD,SAAS,EAAC;EAAY,GAAC,yBAA2B,CAAC,eAEvDnD,0DAAA,YAAG,mEAAoE,CAAC,eACxEA,0DAAA,yBACEA,0DAAA,iBAAQ,oBAA0B,CAAC,eACnCA,0DAAA,WAAK,CAAC,4BAEN,eAAAA,0DAAA,WAAK,CAAC,4BAEN,eAAAA,0DAAA,WAAK,CAAC,sCAEN,eAAAA,0DAAA,WAAK,CAAC,eACNA,0DAAA;IAAGmD,SAAS,EAAC,YAAY;IAACE,IAAI,EAAC,6BAA6B;IAAC5B,MAAM,EAAC,QAAQ;IAACoM,GAAG,EAAC;EAAY,GAAC,kCAAmC,CAChI,CACA,CACF,CACL,CAAC;AAEP;;;;;;;;;;;;;;;;;;;;;;;AC7D0D;AAC9B;AAEwB;AACG;AACT;AACQ;AACU;AAEhE,MAAME,mBAAmB,GAAG,GAAG;AAExB,SAASnD,WAAWA,CAAE;EAAEgC;AAAgB,CAAC,EAAE;EAChD,MAAM;IAAEzB,GAAG;IAAE8B,aAAa;IAAE3B,WAAW;IAAED,SAAS;IAAEnK;EAAkB,CAAC,GAAGZ,wDAAM,CAAC,CAAC;EAClF,MAAM;IAAE0N,eAAe;IAAExC;EAAY,CAAC,GAAGP,gEAAU,CAACE,GAAG,CAAC;EACxD,MAAM,CAAC5C,MAAM,EAAE0F,SAAS,CAAC,GAAGzK,+CAAQ,CAAC,CAAC,CAAC,CAAC;EACxC,MAAM,CAAC0K,cAAc,EAAEC,iBAAiB,CAAC,GAAG3K,+CAAQ,CAAC,CAAC,CAAC;EACvD,MAAM,CAAC4K,gBAAgB,EAAEC,iBAAiB,CAAC,GAAG7K,+CAAQ,CAAC,KAAK,CAAC;EAE7D,MAAM8K,OAAO,GAAGpO,6CAAM,CAAC,CAAC;EACxB,MAAMqO,WAAW,GAAGrO,6CAAM,CAAC,CAAC;EAE5B,MAAMsO,qBAAqB,GAAGT,mBAAmB,IAAIG,cAAc;EACnE,MAAMO,uBAAuB,GAAGV,mBAAmB,GAAGG,cAAc;EACpE,MAAMQ,sBAAsB,GAAGR,cAAc,GAAGH,mBAAmB;EAEnE,IAAIY,YAAY,GAAI,YAAWF,uBAAwB,uBAAsB;EAE7E,IAAI,CAACD,qBAAqB,EAAE;IAC1BG,YAAY,GAAI,YAAWD,sBAAuB,sBAAqB;EACzE;EAEAzO,gDAAS,CAAC,MAAM;IACd,IAAIwI,MAAM,CAACC,IAAI,CAACH,MAAM,CAAC,CAACxD,MAAM,EAAE;MAC9BvC,QAAQ,CAACyC,aAAa,CAAC,sBAAsB,CAAC,EAAE4D,KAAK,CAAC,CAAC;IACzD;EACF,CAAC,EAAE,CAACN,MAAM,CAAC,CAAC;EAEZ,MAAMqG,gBAAgB,GAAGrN,CAAC,IAAI;IAC5B4M,iBAAiB,CAAC5M,CAAC,CAACE,MAAM,CAAC+D,KAAK,CAACT,MAAM,CAAC;EAC1C,CAAC;EAED,MAAM8J,WAAW,GAAGT,gBAAgB,GAAG,eAAe,GAAG,cAAc;EAEvEnO,gDAAS,CAAC,MAAM;IACd,IAAImO,gBAAgB,EAAE;MACpBlN,iBAAiB,CAAC2N,WAAW,CAAC;IAChC;EACF,CAAC,EAAE,CAACT,gBAAgB,CAAC,CAAC;EAEtB,MAAMU,aAAa,GAAG,MAAMvN,CAAC,IAAI;IAC/BA,CAAC,CAACC,cAAc,CAAC,CAAC;IAElB,IAAI4M,gBAAgB,EAAE;MACpB;IACF;IAEA,MAAM5F,IAAI,GAAG,CAAC,CAAC;IAEf,IAAI8F,OAAO,CAACrM,OAAO,CAACuD,KAAK,CAACT,MAAM,KAAK,CAAC,EAAE;MACtCyD,IAAI,CAACP,IAAI,GAAG,iBAAiB;IAC/B;IAEA,IAAIsG,WAAW,CAACtM,OAAO,CAACuD,KAAK,CAACT,MAAM,KAAK,CAAC,EAAE;MAC1CyD,IAAI,CAACuG,QAAQ,GAAG,qBAAqB;IACvC;IAEA,IAAIR,WAAW,CAACtM,OAAO,CAACuD,KAAK,CAACT,MAAM,GAAGgJ,mBAAmB,EAAE;MAC1DvF,IAAI,CAACuG,QAAQ,GAAG,8CAA8C;IAChE;IAEA,IAAItG,MAAM,CAACC,IAAI,CAACF,IAAI,CAAC,CAACzD,MAAM,KAAK,CAAC,EAAE;MAClC,IAAI;QACFsJ,iBAAiB,CAAC,IAAI,CAAC;QACvB,MAAMtN,QAAQ,GAAG+M,oCAAO,CAAC,CAAC;QAC1B,MAAMmB,UAAU,GAAG,MAAMjB,eAAe,CAAC,CAAC;QAC1C,MAAM9J,MAAM,GAAG,MAAMsH,WAAW,CAACzK,QAAQ,CAAC;QAE1CoK,GAAG,CAAC+D,WAAW,CAAC,CAAC,CAACC,OAAO,CAACb,OAAO,CAACrM,OAAO,CAACuD,KAAK,CAAC;QAEhD,MAAMtB,MAAM,CAACkL,SAAS,CAACb,WAAW,CAACtM,OAAO,CAACuD,KAAK,IAAI,oBAAoB,CAAC;QAEzEyH,aAAa,CAACgC,UAAU,CAAC;QACzB3D,WAAW,CAACvK,QAAQ,CAAC;QACrBsK,SAAS,CAACnH,MAAM,CAAC;QACjBA,MAAM,CAACmL,cAAc,CAAC,UAAU,EAAEtO,QAAQ,CAAC;MAC7C,CAAC,CAAC,OAAOqF,GAAG,EAAE;QACZC,OAAO,CAACC,GAAG,CAAC,sBAAsB,EAAEF,GAAG,CAAC;MAC1C;IACF;IAEA6H,SAAS,CAACzF,IAAI,CAAC;EACjB,CAAC;EAED,oBACExI,0DAAA,CAAAA,uDAAA,qBACEA,0DAAA,CAACyD,gEAAW,MAAE,CAAC,eAEfzD,0DAAA;IAAKmD,SAAS,EAAC;EAAS,gBACtBnD,0DAAA;IAAKmD,SAAS,EAAC;EAAY,gBACzBnD,0DAAA;IAAGqD,IAAI,EAAC,GAAG;IAACF,SAAS,EAAC,8BAA8B;IAAC7B,OAAO,EAAEsL;EAAgB,GAAC,8BAE5E,CAAC,eAEJ5M,0DAAA,CAACsI,yEAAY;IAACC,MAAM,EAAEA;EAAO,CAAE,CAAC,eAEhCvI,0DAAA;IAAImD,SAAS,EAAC,YAAY;IAAC,aAAU;EAAQ,GAAC,wBAE1C,CAAC,eAELnD,0DAAA,4BACEA,0DAAA;IAAKmD,SAAS,EAAEhD,8DAAU,CAAC,eAAe,EAAE,kBAAkB,EAAEoI,MAAM,CAACN,IAAI,IAAI,yBAAyB;EAAE,gBACxGjI,0DAAA;IAAOmD,SAAS,EAAC,sBAAsB;IAAC4E,OAAO,EAAC;EAAS,GAAC,WAEnD,CAAC,EACPQ,MAAM,CAACN,IAAI,iBACVjI,0DAAA;IAAGmD,SAAS,EAAC;EAAqB,gBAChCnD,0DAAA;IAAMmD,SAAS,EAAC;EAAuB,GAAC,QAAY,CAAC,KAAC,EAACoF,MAAM,CAACN,IAC7D,CACJ,eACDjI,0DAAA;IACEoD,GAAG,EAAEkL,OAAQ;IACbnL,SAAS,EAAEhD,8DAAU,CAAC,UAAU,EAAE,aAAa,EAAEoI,MAAM,CAACN,IAAI,IAAI,oBAAoB,CAAE;IACtFvG,EAAE,EAAC,SAAS;IACZuG,IAAI,EAAC,MAAM;IACXG,IAAI,EAAC,MAAM;IACX,eAAY;EAAwB,CACrC,CACE,CAAC,eAENpI,0DAAA;IAAKmD,SAAS,EAAC,qCAAqC;IAAC,eAAY,uBAAuB;IAAC,kBAAe;EAAK,gBAC3GnD,0DAAA;IAAKmD,SAAS,EAAEhD,8DAAU,CAAC,kBAAkB,EAAEoI,MAAM,CAACwG,QAAQ,IAAI,yBAAyB;EAAE,gBAC3F/O,0DAAA;IAAOmD,SAAS,EAAC,sBAAsB;IAAC4E,OAAO,EAAC;EAAa,GAAC,eAEvD,CAAC,EACPQ,MAAM,CAACwG,QAAQ,iBACd/O,0DAAA;IAAGmD,SAAS,EAAC;EAAqB,gBAChCnD,0DAAA;IAAMmD,SAAS,EAAC;EAAuB,GAAC,QAAY,CAAC,EACpDoF,MAAM,CAACwG,QACP,CACJ,eACD/O,0DAAA;IACEoD,GAAG,EAAEmL,WAAY;IACjB7M,EAAE,EAAC,aAAa;IAChBuG,IAAI,EAAC,UAAU;IACfD,IAAI,EAAC,GAAG;IACR,oBAAiB,kBAAkB;IACnCzC,QAAQ,EAAEqJ,gBAAiB;IAC3BzL,SAAS,EAAEhD,8DAAU,CAAC,aAAa,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,CAACqO,qBAAqB,IAAIjG,MAAM,CAACwG,QAAQ,GAAG,uBAAuB,GAAG,EAAE,CAAE;IAC7J,eAAY;EAA4B,CACzC,CAAC,eACF/O,0DAAA;IACE0B,EAAE,EAAC,kBAAkB;IACrByB,SAAS,EAAC,0CAA0C;IACpDmM,KAAK,EAAE;MAAEC,KAAK,EAAG,GAAE,CAACf,qBAAqB,GAAG,SAAS,GAAG,EAAG;IAAE,CAAE;IAC/D,eAAY;EAAM,GAEjBG,YACE,CAAC,eACN3O,0DAAA;IAAKmD,SAAS,EAAC,wDAAwD;IAAC,aAAU;EAAQ,GACvFwL,YACE,CACF,CACF,CAAC,eAEN3O,0DAAA;IAAKmD,SAAS,EAAC;EAAgC,GAAC,+DAE9C,eAAAnD,0DAAA;IAAGqD,IAAI,EAAC,0DAA0D;IAAC5B,MAAM,EAAC,QAAQ;IAACoM,GAAG,EAAC,YAAY;IAAC1K,SAAS,EAAC;EAAY,GAAC,gBAAiB,CAAC,KAC1I,CAAC,eAENnD,0DAAA;IACEmD,SAAS,EAAC,6CAA6C;IACvD,eAAY,cAAc;IAC1B7B,OAAO,EAAEwN,aAAc;IACvB,iBAAeV;EAAiB,GAE/BS,WACK,CACJ,CACH,CACF,CACL,CAAC;AAEP;;;;;;;;;;;;;;;;;;ACtLuC;AACgB;AAET;AAEvC,SAAS9D,QAAQA,CAAE;EAAEgC;AAAS,CAAC,EAAE;EACtC,MAAM;IAAExI,QAAQ;IAAEiL;EAAY,CAAC,GAAGlP,wDAAM,CAAC,CAAC;EAE1C,MAAM,CAACmP,WAAW,EAAEC,cAAc,CAAC,GAAGlM,+CAAQ,CAACe,QAAQ,CAACoL,KAAK,CAAC;EAC9D,MAAM,CAACC,YAAY,EAAEC,eAAe,CAAC,GAAGrM,+CAAQ,CAACe,QAAQ,CAACO,MAAM,CAAC;EAEjE,MAAMgL,MAAM,GAAGvO,CAAC,IAAI;IAClBA,CAAC,CAACC,cAAc,CAAC,CAAC;IAElBgO,WAAW,CAAC;MAAEG,KAAK,EAAEF,WAAW;MAAE3K,MAAM,EAAE8K;IAAa,CAAC,CAAC;IACzD7C,QAAQ,CAACxL,CAAC,CAAC;EACb,CAAC;EAED,MAAMqF,cAAc,GAAGrF,CAAC,IAAI;IAC1B,IAAI,CAACA,CAAC,CAACM,GAAG,KAAK,OAAO,IAAIN,CAAC,CAACM,GAAG,KAAK,GAAG,KAAKN,CAAC,CAACE,MAAM,CAACC,EAAE,KAAK,eAAe,EAAE;MAC3EoO,MAAM,CAACvO,CAAC,CAAC;IACX,CAAC,MAAM,IAAI,CAACA,CAAC,CAACM,GAAG,KAAK,OAAO,IAAIN,CAAC,CAACM,GAAG,KAAK,GAAG,KAAKN,CAAC,CAACE,MAAM,CAACC,EAAE,KAAK,iBAAiB,EAAE;MACpFqL,QAAQ,CAACxL,CAAC,CAAC;IACb;EACF,CAAC;EAED,oBACEvB,0DAAA,CAAAA,uDAAA,qBACEA,0DAAA,CAACyD,gEAAW,MAAE,CAAC,eAEfzD,0DAAA;IAAKmD,SAAS,EAAC;EAAS,gBACtBnD,0DAAA;IAAKmD,SAAS,EAAC;EAAY,gBACzBnD,0DAAA;IAAUmD,SAAS,EAAC;EAAwC,gBAC1DnD,0DAAA;IAAQmD,SAAS,EAAC;EAA+C,gBAC/DnD,0DAAA;IAAI0B,EAAE,EAAC,aAAa;IAACyB,SAAS,EAAC;EAAY,GAAC,iBAAmB,CACzD,CAAC,eACTnD,0DAAA;IAAKmD,SAAS,EAAC,0CAA0C;IAAC,eAAY;EAAkB,gBACtFnD,0DAAA;IAAKmD,SAAS,EAAC;EAAwB,gBACrCnD,0DAAA;IACE0B,EAAE,EAAC,OAAO;IACVuG,IAAI,EAAC,OAAO;IACZG,IAAI,EAAC,UAAU;IACf5C,KAAK,EAAC,OAAO;IACbrC,SAAS,EAAC,yBAAyB;IACnC4M,cAAc,EAAEN,WAAY;IAC5BlK,QAAQ,EAAEA,CAAA,KAAMmK,cAAc,CAAC,CAACD,WAAW;EAAE,CAC9C,CAAC,eACFzP,0DAAA;IAAOmD,SAAS,EAAC,8CAA8C;IAAC4E,OAAO,EAAC;EAAO,GAAC,2CAEzE,CACJ,CAAC,eACN/H,0DAAA;IAAKmD,SAAS,EAAC;EAAwB,gBACrCnD,0DAAA;IACE0B,EAAE,EAAC,QAAQ;IACXuG,IAAI,EAAC,QAAQ;IACbG,IAAI,EAAC,UAAU;IACf5C,KAAK,EAAC,QAAQ;IACdrC,SAAS,EAAC,yBAAyB;IACnC4M,cAAc,EAAEH,YAAa;IAC7BrK,QAAQ,EAAEA,CAAA,KAAMsK,eAAe,CAAC,CAACD,YAAY;EAAE,CAChD,CAAC,eACF5P,0DAAA;IAAOmD,SAAS,EAAC,8CAA8C;IAAC4E,OAAO,EAAC;EAAQ,GAAC,uCAE1E,CACJ,CACF,CACG,CAAC,eAEX/H,0DAAA;IAAKmD,SAAS,EAAC;EAAoB,gBACjCnD,0DAAA;IACE0B,EAAE,EAAC,eAAe;IAClB2B,IAAI,EAAC,GAAG;IACRF,SAAS,EAAC,wBAAwB;IAClC,eAAY,cAAc;IAC1BI,IAAI,EAAC,QAAQ;IACbjC,OAAO,EAAEwO,MAAO;IAChBnO,SAAS,EAAEiF;EAAe,GAC3B,MAEE,CAAC,eACJ5G,0DAAA;IACE0B,EAAE,EAAC,iBAAiB;IACpB2B,IAAI,EAAC,GAAG;IACRF,SAAS,EAAC,oBAAoB;IAC9B,eAAY,cAAc;IAC1BI,IAAI,EAAC,QAAQ;IACbjC,OAAO,EAAEyL,QAAS;IAClBpL,SAAS,EAAEiF;EAAe,GAC3B,QAEE,CACA,CACF,CACF,CACL,CAAC;AAEP;;;;;;;;;;;;;;;;;AChGyB;AAC8B;AAEhD,SAASiE,WAAWA,CAAA,EAAI;EAC7B,oBACE7K,0DAAA,CAAAA,uDAAA,qBACEA,0DAAA,CAACyD,gEAAW,MAAE,CAAC,eAEfzD,0DAAA;IAAKmD,SAAS,EAAC;EAAS,gBACtBnD,0DAAA;IAAI0B,EAAE,EAAC,aAAa;IAACyB,SAAS,EAAC;EAAiB,GAAC,oCAAsC,CAAC,eACxFnD,0DAAA;IAAGmD,SAAS,EAAC;EAAc,GAAC,qCAAsC,CAAC,eACnEnD,0DAAA;IAAGmD,SAAS,EAAC;EAAc,gBACzBnD,0DAAA,iBAAQ,oBAA0B,CAAC,eACnCA,0DAAA,WAAK,CAAC,4BACN,eAAAA,0DAAA,WAAK,CAAC,4BACN,eAAAA,0DAAA,WAAK,CAAC,sCACN,eAAAA,0DAAA,WAAK,CAAC,eAAAA,0DAAA;IAAGmD,SAAS,EAAC,YAAY;IAACE,IAAI,EAAC;EAA6B,GAAC,kCAAmC,CACrG,CAAC,eACJrD,0DAAA;IAAGmD,SAAS,EAAC;EAAc,GAAC,oEAAqE,CAC9F,CACL,CAAC;AAEP;;;;;;;;;;;;;;;;;;;ACtByB;AACe;AACA;AAEjC,MAAM9C,QAAQ,GAAGA,CAAA,KAAM;EAC5B,MAAM;IAAEU,QAAQ;IAAEE;EAAgB,CAAC,GAAGX,qDAAM,CAAC,CAAC;EAE9C,IAAI,CAACS,QAAQ,EAAE;IACb,OAAO,IAAI;EACb;EAEA,MAAMiP,eAAe,GAAGxN,QAAQ,CAACqJ,cAAc,CAAC,6BAA6B,CAAC;EAE9E,IAAI,CAACmE,eAAe,EAAE;IACpB,OAAO,IAAI;EACb;EAEA,MAAM1O,OAAO,GAAGC,CAAC,IAAI;IACnBA,CAAC,CAACC,cAAc,CAAC,CAAC;IAClBP,eAAe,CAACM,CAAC,CAACE,MAAM,CAACC,EAAE,CAAC;IAC5BY,MAAM,CAACoL,QAAQ,CAACuC,IAAI,GAAG,UAAU;EACnC,CAAC;EAED,oBACEjQ,0DAAA,CAAAA,uDAAA,qBACG0K,uDAAY,eACX1K,0DAAA;IACE0B,EAAE,EAAC,mBAAmB;IACtB2B,IAAI,EAAC,UAAU;IACfF,SAAS,EAAC,iBAAiB;IAC3B,eAAY,iBAAiB;IAC7B7B,OAAO,EAAEA,OAAQ;IACjB,wBAAgB;IAChB;EAAgB,GACjB,iBAEE,CAAC,EACJ0O,eACF,CACA,CAAC;AAEP,CAAC;;;;;;;;;;;;;;;;;ACzCuD;AAExD,MAAME,UAAU,GAAG,aAAa;AAChC,MAAMC,WAAW,GAAG,eAAe;AAEnC,MAAMC,aAAa,GAAGC,OAAO,IAAI;EAC/B,KAAK,MAAMC,IAAI,IAAI9N,QAAQ,CAACM,IAAI,CAAC8G,QAAQ,EAAE;IACzC,IAAI0G,IAAI,CAAC5O,EAAE,KAAK,UAAU,EAAE;MAC1B;MACA,IAAI2O,OAAO,IAAI,CAACC,IAAI,CAAC1H,YAAY,CAACsH,UAAU,CAAC,EAAE;QAC7CI,IAAI,CAAC3J,YAAY,CAACuJ,UAAU,EAAE,MAAM,CAAC;QACrCI,IAAI,CAAC3J,YAAY,CAACwJ,WAAW,EAAE,EAAE,CAAC;MACpC,CAAC,MAAM,IAAIG,IAAI,CAACC,YAAY,CAACJ,WAAW,CAAC,EAAE;QACzCG,IAAI,CAACE,eAAe,CAACN,UAAU,CAAC;QAChCI,IAAI,CAACE,eAAe,CAACL,WAAW,CAAC;MACnC;IACF;EACF;AACF,CAAC;AAEM,MAAMM,oBAAoB,GAAGA,CAAA,KAAM;EACxC,MAAMC,SAAS,GAAG,CAChB,6BAA6B,EAC7B,kCAAkC,EAClC,kCAAkC,EAClC,iCAAiC,EACjC,oCAAoC,EACpC,2CAA2C,CAC5C;EAED,MAAMC,QAAQ,GAAGnO,QAAQ,CAACM,IAAI,CAAC8N,gBAAgB,CAACF,SAAS,CAACG,IAAI,CAAC,GAAG,CAAC,CAAC;EACpE,OAAOC,KAAK,CAACC,IAAI,CAACJ,QAAQ,CAAC,CAACK,MAAM,CAACzP,CAAC,IAAI,CAACA,CAAC,CAAC0P,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC1P,CAAC,CAAC0P,OAAO,CAAC,sBAAsB,CAAC,CAAC;AACvG,CAAC;AAED,MAAM/F,kBAAkB,GAAGQ,MAAM,IAAI;EACnC,MAAM,CAACwF,aAAa,EAAEC,gBAAgB,CAAC,GAAG3N,+CAAQ,CAAC,EAAE,CAAC;EAEtD,MAAM7B,SAAS,GAAGmH,kDAAW,CAACvH,CAAC,IAAI;IACjC,MAAM6P,mBAAmB,GAAG5O,QAAQ,CAACyC,aAAa,CAAC,WAAW,CAAC;IAE/D,IAAI1D,CAAC,CAACM,GAAG,KAAK,KAAK,EAAE;MACnB,IAAIuP,mBAAmB,IAAI,CAAC5O,QAAQ,CAAC6O,aAAa,CAACJ,OAAO,CAAC,WAAW,CAAC,EAAE;QACvEG,mBAAmB,CAACvI,KAAK,CAAC,CAAC;MAC7B;MAEA,IAAItH,CAAC,CAACsF,QAAQ,EAAE;QACd,IAAIrE,QAAQ,CAAC6O,aAAa,KAAKH,aAAa,CAAC,CAAC,CAAC,EAAE;UAC/CA,aAAa,CAACA,aAAa,CAACnM,MAAM,GAAG,CAAC,CAAC,CAAC8D,KAAK,CAAC,CAAC;UAC/CtH,CAAC,CAACC,cAAc,CAAC,CAAC;QACpB,CAAC,MAAM,IAAIgB,QAAQ,CAAC6O,aAAa,KAAK7O,QAAQ,CAACyC,aAAa,CAAC,WAAW,CAAC,EAAE;UACzEiM,aAAa,CAACA,aAAa,CAACnM,MAAM,GAAG,CAAC,CAAC,EAAE8D,KAAK,CAAC,CAAC;UAChDtH,CAAC,CAACC,cAAc,CAAC,CAAC;QACpB;MACF,CAAC,MAAM,IAAIgB,QAAQ,CAAC6O,aAAa,KAAKH,aAAa,CAACA,aAAa,CAACnM,MAAM,GAAG,CAAC,CAAC,EAAE;QAC7EmM,aAAa,CAAC,CAAC,CAAC,CAACrI,KAAK,CAAC,CAAC;QACxBtH,CAAC,CAACC,cAAc,CAAC,CAAC;MACpB;IACF;EACF,CAAC,EAAE,CAAC0P,aAAa,CAAC,CAAC;EAEnBjR,gDAAS,CAAC,MAAM;IACdkR,gBAAgB,CAACV,oBAAoB,CAAC,CAAC,CAAC;EAC1C,CAAC,EAAE,CAAC/E,MAAM,CAAC,CAAC;EAEZzL,gDAAS,CAAC,MAAM;IACdmQ,aAAa,CAAC,IAAI,CAAC;IAEnB,MAAMkB,YAAY,GAAG9O,QAAQ,CAACyC,aAAa,CAAC,WAAW,CAAC;IACxDqM,YAAY,CAACzI,KAAK,CAAC,CAAC;IAEpBrG,QAAQ,CAACO,gBAAgB,CAAC,SAAS,EAAEpB,SAAS,CAAC;IAE/C,OAAO,MAAM;MACXyO,aAAa,CAAC,CAAC;MACf5N,QAAQ,CAACQ,mBAAmB,CAAC,SAAS,EAAErB,SAAS,CAAC;IACpD,CAAC;EACH,CAAC,EAAE,CAACuP,aAAa,CAAC,CAAC;AACrB,CAAC;;;;;;;;;;;;;;;;;AC7EgC;AAE1B,MAAMtN,mBAAmB,GAAGA,CAAC2N,WAAW,EAAE/L,KAAK,KAAK;EACzDvF,gDAAS,CAAC,MAAM;IACd,IAAIsR,WAAW,EAAE;MACfA,WAAW,CAACjC,KAAK,CAAClI,MAAM,GAAG,KAAK;MAEhC,MAAMjC,YAAY,GAAGoM,WAAW,CAACpM,YAAY;MAE7CoM,WAAW,CAACjC,KAAK,CAAClI,MAAM,GAAI,GAAEjC,YAAa,IAAG;IAChD;EACF,CAAC,EAAE,CAACoM,WAAW,EAAE/L,KAAK,CAAC,CAAC;AAC1B,CAAC;;;;;;;;;;;;;;ACZM,MAAM1B,mBAAmB,GAAGA,CAACnD,YAAY,EAAE0D,WAAW,EAAEoB,SAAS,KAAK;EAC3E,IAAI9E,YAAY,KAAK,aAAa,EAAE;IAClC,OAAO,oCAAoC;EAC7C;EAEA,IAAI,CAAC0D,WAAW,EAAE;IAChB,OAAO,yBAAyB;EAClC;EAEA,QAAQA,WAAW;IACjB,KAAK,QAAQ;IACb,KAAK,UAAU;MACb,OAAOoB,SAAS,GAAI,GAAEA,SAAU,oBAAmB,GAAG,0BAA0B;IAClF;MACE,OAAOA,SAAS,GAAI,yBAAwBA,SAAU,EAAC,GAAG,iCAAiC;EAC/F;AACF,CAAC;;;;;;;;;;;;;;AChBM,eAAe+L,iBAAiBA,CAAEC,QAAQ,EAAE;EACjD,MAAMC,QAAQ,GAAG,MAAMC,KAAK,CAACF,QAAQ,CAAC;EACtC,MAAMG,IAAI,GAAG,MAAMF,QAAQ,CAACG,IAAI,CAAC,CAAC;EAElC,OAAO;IACLlR,YAAY,EAAEiR,IAAI,CAACjR,YAAY,IAAI;EACrC,CAAC;AACH;;;;;;;;;;;;;;ACPO,MAAMR,UAAU,GAAGA,CAAC,GAAG2R,OAAO,KAAKA,OAAO,CAACd,MAAM,CAACe,SAAS,IAAIA,SAAS,IAAI,OAAOA,SAAS,KAAK,QAAQ,CAAC,CAAClB,IAAI,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;ACApH,MAAMtQ,gBAAgB,GAAGA,CAAA,KAAM;EACpC,MAAMyR,GAAG,GAAG1P,MAAM,CAACoL,QAAQ,CAACrK,IAAI,CAAC4O,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EAC9C3P,MAAM,CAACgI,OAAO,CAAC4H,SAAS,CAAC;IAAE5H,OAAO,EAAE;EAAK,CAAC,EAAE,IAAI,EAAG,GAAE0H,GAAI,UAAS,CAAC;AACrE,CAAC;AAEM,MAAMxR,mBAAmB,GAAGA,CAAA,KAAM;EACvC,IAAI8B,MAAM,CAACgI,OAAO,CAACC,KAAK,EAAED,OAAO,EAAE;IACjC,OAAOhI,MAAM,CAACgI,OAAO,CAAC6H,IAAI,CAAC,CAAC;EAC9B;EAEA,MAAMH,GAAG,GAAG1P,MAAM,CAACoL,QAAQ,CAACrK,IAAI,CAAC4O,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EAC9C,OAAO3P,MAAM,CAACgI,OAAO,CAAC8H,YAAY,CAAC,IAAI,EAAE,IAAI,EAAEJ,GAAG,CAAC;AACrD,CAAC;;;;;;;;;;;;;;ACZM,MAAMK,mBAAmB,GAAGC,QAAQ,IAAI;EAC7C,IAAIC,MAAM;EAEV,MAAMC,OAAO,GAAG,KAAKlQ,MAAM,CAACmQ,YAAY,IAAInQ,MAAM,CAACoQ,kBAAkB,EAAE,CAAC;EAExE,IAAIF,OAAO,CAACjI,KAAK,KAAK,WAAW,EAAE;IACjC,MAAMoI,MAAM,GAAG,CAAC,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC;IAEnF,MAAMC,MAAM,GAAGC,EAAE,IAAI;MACnBF,MAAM,CAACG,OAAO,CAAClR,KAAK,IAAI;QACtBY,QAAQ,CAACM,IAAI,CAACE,mBAAmB,CAACpB,KAAK,EAAEgR,MAAM,CAAC;MAClD,CAAC,CAAC;MAEFJ,OAAO,CAACO,MAAM,CAAC,CAAC;IAClB,CAAC;IAEDJ,MAAM,CAACG,OAAO,CAAClR,KAAK,IAAI;MACtBY,QAAQ,CAACM,IAAI,CAACC,gBAAgB,CAACnB,KAAK,EAAEgR,MAAM,EAAE,KAAK,CAAC;IACtD,CAAC,CAAC;EACJ;EAEAjB,KAAK,CAACW,QAAQ,CAAC,CACZU,IAAI,CAACtB,QAAQ,IAAIA,QAAQ,CAACuB,WAAW,CAAC,CAAC,CAAC,CACxCD,IAAI,CAACpB,IAAI,IAAIY,OAAO,CAACU,eAAe,CAACtB,IAAI,CAAC,CAAC,CAC3CoB,IAAI,CAACG,WAAW,IAAI;IACnBZ,MAAM,GAAGY,WAAW;EACtB,CAAC,CAAC,CACDC,KAAK,CAAC/M,OAAO,CAACgN,KAAK,CAAC;EAEvB,OAAO,MAAM;IACX,MAAMC,MAAM,GAAGd,OAAO,CAACe,kBAAkB,CAAC,CAAC;IAC3CD,MAAM,CAACf,MAAM,GAAGA,MAAM;IACtBe,MAAM,CAACE,OAAO,CAAChB,OAAO,CAACiB,WAAW,CAAC;IACnCH,MAAM,CAACI,KAAK,CAAC,CAAC;EAChB,CAAC;AACH,CAAC;;;;;;;;;;;;;;;;;;ACnC+B;AAEzB,MAAME,gBAAgB,GAAG3N,OAAO,IAAI;EACzC,OAAO;IACLvE,EAAE,EAAEuE,OAAO,CAACvE,EAAE;IACdqE,IAAI,EAAEE,OAAO,CAAC4N,cAAc,EAAE9N,IAAI;IAClC+N,SAAS,EAAE,IAAIC,IAAI,CAAC9N,OAAO,CAAC6N,SAAS,CAAC;IACtCE,IAAI,EAAE/N,OAAO,CAACgO,qBAAqB,EAAEC,QAAQ,EAAEhO,IAAI,CAAC,CAAC,IAAI,IAAI;IAC7DyD,QAAQ,EAAE1D,OAAO,CAACkO,UAAU,EAAExO,SAAS,IAAI,IAAI;IAC/CG,SAAS,EAAEG,OAAO,CAACH;EACrB,CAAC;AACH,CAAC;AAEM,MAAMsO,iBAAiB,GAAGjQ,QAAQ,IAAIA,QAAQ,CAAC4C,GAAG,CAACd,OAAO,IAAI2N,gBAAgB,CAAC3N,OAAO,CAAC,CAAC;AAExF,MAAMpC,gBAAgB,GAAGM,QAAQ,IAAI;EAC1C,MAAMkQ,GAAG,GAAGV,2CAAQ,CAACW,KAAK,CAAC,CAAC;EAC5BD,GAAG,CAACE,OAAO,CAAC,eAAe,CAAC;EAE5B,IAAIC,MAAM,GAAI,iCAAgCH,GAAG,CAACI,QAAQ,CAAC,0BAA0B,CAAE,MAAK;EAE5F,KAAK,MAAMxO,OAAO,IAAI9B,QAAQ,EAAE;IAC9B,MAAM;MAAE4B,IAAI;MAAED,SAAS;MAAEkO,IAAI;MAAErK,QAAQ;MAAEmK;IAAU,CAAC,GAAG7N,OAAO;IAE9D,MAAMyO,MAAM,GAAG5O,SAAS,KAAK,SAAS,GAAGkO,IAAI,GAAI,GAAErK,QAAS,sBAAqB;IACjF,MAAMgL,IAAI,GAAGhB,2CAAQ,CAACiB,UAAU,CAAC,IAAIb,IAAI,CAACD,SAAS,CAAC,CAAC,CAACS,OAAO,CAAC,eAAe,CAAC,CAACE,QAAQ,CAAC,0BAA0B,CAAC;IAEnHD,MAAM,IAAK,IAAGG,IAAK,KAAID,MAAO,OAAM3O,IAAK,MAAK;EAChD;EAEAyO,MAAM,GAAGA,MAAM,CAACK,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAACA,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;EAEhE,OAAOC,kBAAkB,CAACN,MAAM,CAAC;AACnC,CAAC;;;;;;;;;;;;;;;;;;;;;;ACjC2E;AACZ;AAEI;AAEhB;AACiD;AAE9F,MAAMgB,UAAU,gBAAGT,oDAAa,CAACI,qDAAY,CAAC;AAE9C,MAAMM,WAAW,GAAGA,CAAC;EAAEtK,GAAG;EAAExK,YAAY;EAAE+U,OAAO;EAAE9L;AAAS,CAAC,KAAK;EACvE,MAAM,CAACW,KAAK,EAAEoL,QAAQ,CAAC,GAAGX,iDAAU,CAACI,gDAAO,EAAED,qDAAY,CAAC;EAE3D,MAAMS,SAAS,GAAGvD,iFAAmB,CAACqD,OAAO,CAACpD,QAAQ,CAAC;;EAEvD;AACF;AACA;EACE,MAAMuD,mBAAmB,GAAGtU,CAAC,IAAI;IAC/BoU,QAAQ,CAAC;MAAEvN,IAAI,EAAE,WAAW;MAAE0N,OAAO,EAAEvU,CAAC,CAACwU,MAAM,CAACnE,IAAI,CAACoE;IAAc,CAAC,CAAC;IACrEL,QAAQ,CAAC;MAAEvN,IAAI,EAAE,kBAAkB;MAAE0N,OAAO,EAAEvU,CAAC,CAACwU,MAAM,CAACnE,IAAI,CAACqE,OAAO,CAACC;IAAO,CAAC,CAAC;IAC7EP,QAAQ,CAAC;MAAEvN,IAAI,EAAE,kBAAkB;MAAE0N,OAAO,EAAEvU,CAAC,CAACwU,MAAM,CAACnE,IAAI,CAACqE,OAAO,CAACE,kBAAkB,CAACC;IAAoB,CAAC,CAAC;EAC/G,CAAC;EAED,MAAMC,sBAAsB,GAAG9U,CAAC,IAAI;IAClCoU,QAAQ,CAAC;MAAEvN,IAAI,EAAE,WAAW;MAAE0N,OAAO,EAAEvU,CAAC,CAACwU,MAAM,CAACnE,IAAI,CAACoE;IAAc,CAAC,CAAC;IACrEL,QAAQ,CAAC;MAAEvN,IAAI,EAAE,kBAAkB;MAAE0N,OAAO,EAAEvU,CAAC,CAACwU,MAAM,CAACnE,IAAI,CAAC0E,IAAI,CAACJ;IAAO,CAAC,CAAC;EAC5E,CAAC;EAED,MAAMK,oBAAoB,GAAGA,CAAA,KAAM;IACjCZ,QAAQ,CAAC;MAAEvN,IAAI,EAAE,kBAAkB;MAAE0N,OAAO,EAAE;IAAK,CAAC,CAAC;EACvD,CAAC;EAED,MAAMU,kBAAkB,GAAGA,CAAA,KAAM;IAC/Bb,QAAQ,CAAC;MAAEvN,IAAI,EAAE,kBAAkB;MAAE0N,OAAO,EAAE;IAAM,CAAC,CAAC;IACtDH,QAAQ,CAAC;MAAEvN,IAAI,EAAE;IAAuB,CAAC,CAAC;EAC5C,CAAC;EAED,MAAMqO,gBAAgB,GAAGlV,CAAC,IAAI;IAC5BoU,QAAQ,CAAC;MAAEvN,IAAI,EAAE,aAAa;MAAE0N,OAAO,EAAEvU,CAAC,CAACwU,MAAM,CAACnE,IAAI,CAAC3L;IAAQ,CAAC,CAAC;IACjE0P,QAAQ,CAAC;MAAEvN,IAAI,EAAE,kBAAkB;MAAE0N,OAAO,EAAEvU,CAAC,CAACwU,MAAM,CAACnE,IAAI,CAAC0E,IAAI,CAACJ;IAAO,CAAC,CAAC;IAC1EP,QAAQ,CAAC;MAAEvN,IAAI,EAAE,kBAAkB;MAAE0N,OAAO,EAAEvU,CAAC,CAACwU,MAAM,CAACnE,IAAI,CAAC0E,IAAI,CAACH,kBAAkB,CAACC;IAAoB,CAAC,CAAC;IAE1G,MAAMM,SAAS,GAAGC,IAAI,CAACC,KAAK,CAACtU,MAAM,CAAC6K,YAAY,CAACM,OAAO,CAAC8H,+DAAoB,CAAC,CAAC,CAAC5F,KAAK;IAErF,IAAI+G,SAAS,IAAInV,CAAC,CAACwU,MAAM,CAACnE,IAAI,CAAC3L,OAAO,CAACH,SAAS,KAAK,UAAU,EAAE;MAC/D8P,SAAS,CAAC,CAAC;IACb;EACF,CAAC;EAED,MAAMiB,sBAAsB,GAAGtV,CAAC,IAAI;IAClCoU,QAAQ,CAAC;MAAEvN,IAAI,EAAE,kBAAkB;MAAE0N,OAAO,EAAEvU,CAAC,CAACwU,MAAM,CAACnE,IAAI,CAAC0E,IAAI,CAACJ;IAAO,CAAC,CAAC;EAC5E,CAAC;EAED,MAAMY,YAAY,GAAGvV,CAAC,IAAI;IACxBoU,QAAQ,CAAC;MAAEvN,IAAI,EAAE,kBAAkB;MAAE0N,OAAO,EAAEvU,CAAC,CAACwV;IAAQ,CAAC,CAAC;EAC5D,CAAC;EAED,MAAMC,SAAS,GAAGA,CAAA,KAAM;IACtBrB,QAAQ,CAAC;MAAEvN,IAAI,EAAE,oBAAoB;MAAE0N,OAAO,EAAE;IAAK,CAAC,CAAC;EACzD,CAAC;EAED,MAAMmB,aAAa,GAAGA,CAAA,KAAM;IAC1BtB,QAAQ,CAAC;MAAEvN,IAAI,EAAE,oBAAoB;MAAE0N,OAAO,EAAE;IAAM,CAAC,CAAC;EAC1D,CAAC;EAED7V,gDAAS,CAAC,MAAM;IACdkL,GAAG,CAAC+L,WAAW,CAAChC,2EAAS,CAACiC,kBAAkB,EAAEtB,mBAAmB,CAAC;IAClE1K,GAAG,CAAC+L,WAAW,CAAChC,2EAAS,CAACkC,eAAe,EAAEX,gBAAgB,CAAC;IAC5DtL,GAAG,CAAC+L,WAAW,CAAChC,2EAAS,CAACmC,oBAAoB,EAAEd,oBAAoB,CAAC;IACrEpL,GAAG,CAAC+L,WAAW,CAAChC,2EAAS,CAACoC,kBAAkB,EAAEd,kBAAkB,CAAC;IACjErL,GAAG,CAAC+L,WAAW,CAAChC,2EAAS,CAACqC,sBAAsB,EAAElB,sBAAsB,CAAC;IACzElL,GAAG,CAAC+L,WAAW,CAAChC,2EAAS,CAACsC,sBAAsB,EAAEX,sBAAsB,CAAC;IACzE;IACAvU,MAAM,CAACmV,UAAU,CAAC,oBAAoB,CAAC,CAAC1U,gBAAgB,CAAC,QAAQ,EAAE+T,YAAY,CAAC;IAChFxU,MAAM,CAACS,gBAAgB,CAAC,SAAS,EAAEiU,SAAS,CAAC;IAC7C1U,MAAM,CAACS,gBAAgB,CAAC,aAAa,EAAEkU,aAAa,CAAC;IACrD;IACA,OAAO,MAAM;MACX3U,MAAM,CAACU,mBAAmB,CAAC,QAAQ,EAAE8T,YAAY,CAAC;MAClDxU,MAAM,CAACU,mBAAmB,CAAC,SAAS,EAAEgU,SAAS,CAAC;MAChD1U,MAAM,CAACU,mBAAmB,CAAC,aAAa,EAAEiU,aAAa,CAAC;IAC1D,CAAC;EACH,CAAC,EAAE,CAAC9L,GAAG,CAAC,CAAC;;EAET;AACF;AACA;EACElL,gDAAS,CAAC,MAAM;IACd0V,QAAQ,CAAC;MAAEvN,IAAI,EAAE,kBAAkB;MAAE0N,OAAO,EAAEnV;IAAa,CAAC,CAAC;IAE7DsM,aAAa,CAAC3K,MAAM,CAAC6K,YAAY,CAACM,OAAO,CAAC4H,kEAAuB,CAAC,CAAC;IACnE/J,WAAW,CAAChJ,MAAM,CAAC6K,YAAY,CAACM,OAAO,CAAC6H,gEAAqB,CAAC,CAAC;IAC/D9F,WAAW,CAACmH,IAAI,CAACC,KAAK,CAACtU,MAAM,CAAC6K,YAAY,CAACM,OAAO,CAAC8H,+DAAoB,CAAC,CAAC,IAAIhL,KAAK,CAAChG,QAAQ,CAAC;EAC9F,CAAC,EAAE,EAAE,CAAC;;EAEN;AACF;AACA;EACEtE,gDAAS,CAAC,MAAM;IACd,IAAIqC,MAAM,CAACoL,QAAQ,CAACuC,IAAI,KAAK,UAAU,EAAE;MACvCpP,iBAAiB,CAAC,IAAI,CAAC;IACzB;IAEA,MAAM6W,mBAAmB,GAAGA,CAAA,KAAM;MAChC,IAAIpV,MAAM,CAACoL,QAAQ,CAACuC,IAAI,KAAK,UAAU,EAAE;QACvCpP,iBAAiB,CAAC,IAAI,CAAC;MACzB,CAAC,MAAM;QACLA,iBAAiB,CAAC,KAAK,CAAC;MAC1B;IACF,CAAC;IAEDyB,MAAM,CAACS,gBAAgB,CAAC,UAAU,EAAE2U,mBAAmB,CAAC;IAExD,OAAO,MAAM;MACXpV,MAAM,CAACU,mBAAmB,CAAC,UAAU,EAAE0U,mBAAmB,CAAC;IAC7D,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;;EAEN;AACF;AACA;EACE,MAAM7W,iBAAiB,GAAGiV,OAAO,IAAI;IACnCH,QAAQ,CAAC;MAAEvN,IAAI,EAAE,qBAAqB;MAAE0N;IAAQ,CAAC,CAAC;EACpD,CAAC;EAED,MAAM7I,aAAa,GAAGgC,UAAU,IAAI;IAClC0G,QAAQ,CAAC;MAAEvN,IAAI,EAAE,iBAAiB;MAAE0N,OAAO,EAAE7G;IAAW,CAAC,CAAC;EAC5D,CAAC;EAED,MAAM3D,WAAW,GAAGvK,QAAQ,IAAI;IAC9B4U,QAAQ,CAAC;MAAEvN,IAAI,EAAE,eAAe;MAAE0N,OAAO,EAAE/U;IAAS,CAAC,CAAC;EACxD,CAAC;EAED,MAAMsK,SAAS,GAAGnH,MAAM,IAAI;IAC1ByR,QAAQ,CAAC;MAAEvN,IAAI,EAAE,YAAY;MAAE0N,OAAO,EAAE5R;IAAO,CAAC,CAAC;EACnD,CAAC;EAED,MAAMqH,WAAW,GAAGpH,QAAQ,IAAI;IAC9BwR,QAAQ,CAAC;MAAEvN,IAAI,EAAE,cAAc;MAAE0N,OAAO,EAAE3R;IAAS,CAAC,CAAC;EACvD,CAAC;EAED,MAAMqL,WAAW,GAAGoC,IAAI,IAAI;IAC1B+D,QAAQ,CAAC;MAAEvN,IAAI,EAAE,cAAc;MAAE0N,OAAO,EAAElE;IAAK,CAAC,CAAC;EACnD,CAAC;EAED,MAAM5Q,cAAc,GAAGF,WAAW,IAAI;IACpC6U,QAAQ,CAAC;MAAEvN,IAAI,EAAE,kBAAkB;MAAE0N,OAAO,EAAEhV;IAAY,CAAC,CAAC;EAC9D,CAAC;EAED,MAAMG,eAAe,GAAGS,EAAE,IAAI;IAC5BiU,QAAQ,CAAC;MAAEvN,IAAI,EAAE,mBAAmB;MAAE0N,OAAO,EAAEpU;IAAG,CAAC,CAAC;EACtD,CAAC;EAED,MAAMR,iBAAiB,GAAG6E,IAAI,IAAI;IAChC4P,QAAQ,CAAC;MAAEvN,IAAI,EAAE,sBAAsB;MAAE0N,OAAO,EAAE/P;IAAK,CAAC,CAAC;EAC3D,CAAC;;EAED;AACF;AACA;EACE,MAAM4R,KAAK,GAAG1C,8CAAO,CAAC,OAAO;IAC3B,GAAG1K,KAAK;IACRY,GAAG;IACHqE,WAAW;IACXvC,aAAa;IACb3B,WAAW;IACXD,SAAS;IACTE,WAAW;IACXvK,cAAc;IACdH,iBAAiB;IACjBI,eAAe;IACfC,iBAAiB;IACjB2U,mBAAmB;IACnBQ,sBAAsB;IACtBE,oBAAoB;IACpBC,kBAAkB;IAClBC,gBAAgB;IAChBI;EACF,CAAC,CAAC,CAAC;EAEH,oBACE7W,0DAAA,CAACwV,UAAU,CAACoC,QAAQ;IAACpS,KAAK,EAAEmS;EAAM,GAC/B/N,QACkB,CAAC;AAE1B,CAAC;;;;;;;;;;;;;;;;AC1L8E;AACmB;AAElG,MAAM4F,WAAW,GAAGA,CAACjF,KAAK,EAAEuL,OAAO,KAAK;EACtC,IAAIA,OAAO,EAAE;IACXxT,MAAM,CAAC6K,YAAY,CAACC,OAAO,CAACmI,4DAAoB,EAAEoB,IAAI,CAACkB,SAAS,CAAC/B,OAAO,CAAC,CAAC;EAC5E,CAAC,MAAM;IACLxT,MAAM,CAAC6K,YAAY,CAACQ,UAAU,CAAC4H,4DAAoB,CAAC;EACtD;EAEA,OAAO;IACL,GAAGhL,KAAK;IACRhG,QAAQ,EAAEuR;EACZ,CAAC;AACH,CAAC;AAED,MAAM7I,aAAa,GAAGA,CAAC1C,KAAK,EAAEuL,OAAO,KAAK;EACxC,IAAIA,OAAO,EAAE;IACXxT,MAAM,CAAC6K,YAAY,CAACC,OAAO,CAACiI,+DAAuB,EAAES,OAAO,CAAC;EAC/D,CAAC,MAAM;IACLxT,MAAM,CAAC6K,YAAY,CAACQ,UAAU,CAAC0H,+DAAuB,CAAC;EACzD;EAEA,OAAO;IACL,GAAG9K,KAAK;IACR0E,UAAU,EAAE6G;EACd,CAAC;AACH,CAAC;AAED,MAAMxK,WAAW,GAAGA,CAACf,KAAK,EAAEuL,OAAO,KAAK;EACtC,IAAIA,OAAO,EAAE;IACXxT,MAAM,CAAC6K,YAAY,CAACC,OAAO,CAACkI,6DAAqB,EAAEQ,OAAO,CAAC;EAC7D,CAAC,MAAM;IACLxT,MAAM,CAAC6K,YAAY,CAACQ,UAAU,CAAC2H,6DAAqB,CAAC;EACvD;EAEA,OAAO;IACL,GAAG/K,KAAK;IACRxJ,QAAQ,EAAE+U;EACZ,CAAC;AACH,CAAC;AAED,MAAMjV,iBAAiB,GAAGA,CAAC0J,KAAK,EAAEuL,OAAO,KAAK;EAC5C,OAAO;IACL,GAAGvL,KAAK;IACR3J,UAAU,EAAEkV;EACd,CAAC;AACH,CAAC;AAED,MAAMgC,eAAe,GAAGA,CAACvN,KAAK,EAAEuL,OAAO,KAAK;EAC1C,OAAO;IACL,GAAGvL,KAAK;IACR5J,YAAY,EAAEmV;EAChB,CAAC;AACH,CAAC;AAED,MAAMzK,SAAS,GAAGA,CAACd,KAAK,EAAEuL,OAAO,KAAK;EACpC,OAAO;IACL,GAAGvL,KAAK;IACRrG,MAAM,EAAE4R;EACV,CAAC;AACH,CAAC;AAED,MAAMvK,WAAW,GAAGA,CAAChB,KAAK,EAAEuL,OAAO,KAAK;EACtC,OAAO;IACL,GAAGvL,KAAK;IACRpG,QAAQ,EAAEiQ,0EAAiB,CAAC0B,OAAO,CAAC,CAACiC,OAAO,CAAC;EAC/C,CAAC;AACH,CAAC;AAED,MAAMC,UAAU,GAAGA,CAACzN,KAAK,EAAEuL,OAAO,KAAK;EACrC,OAAO;IACL,GAAGvL,KAAK;IACRtE,OAAO,EAAE2N,yEAAgB,CAACkC,OAAO,CAAC;IAClC3R,QAAQ,EAAE,CAAC,GAAGoG,KAAK,CAACpG,QAAQ,EAAEyP,yEAAgB,CAACkC,OAAO,CAAC;EACzD,CAAC;AACH,CAAC;AAED,MAAMmC,QAAQ,GAAGA,CAAC1N,KAAK,EAAEuL,OAAO,KAAK;EACnC,OAAO;IACL,GAAGvL,KAAK;IACRnG,KAAK,EAAE0R;EACT,CAAC;AACH,CAAC;AAED,MAAMoC,gBAAgB,GAAGA,CAAC3N,KAAK,EAAEuL,OAAO,KAAK;EAC3C,OAAO;IACL,GAAGvL,KAAK;IACRjG,aAAa,EAAEwR;EACjB,CAAC;AACH,CAAC;AAED,MAAMqC,cAAc,GAAGA,CAAC5N,KAAK,EAAEuL,OAAO,KAAK;EACzC,OAAO;IACL,GAAGvL,KAAK;IACRlG,WAAW,EAAEyR;EACf,CAAC;AACH,CAAC;AAED,MAAM9U,cAAc,GAAGA,CAACuJ,KAAK,EAAEuL,OAAO,KAAK;EACzC,OAAO;IACL,GAAGvL,KAAK;IACRzJ,WAAW,EAAEgV;EACf,CAAC;AACH,CAAC;AAED,MAAM7U,eAAe,GAAGA,CAACsJ,KAAK,EAAEuL,OAAO,KAAK;EAC1C,OAAO;IACL,GAAGvL,KAAK;IACRa,YAAY,EAAE0K;EAChB,CAAC;AACH,CAAC;AAED,MAAM5U,iBAAiB,GAAGA,CAACqJ,KAAK,EAAEuL,OAAO,KAAK;EAC5C,OAAO;IACL,GAAGvL,KAAK;IACRtB,cAAc,EAAE6M;EAClB,CAAC;AACH,CAAC;AAED,MAAMsC,cAAc,GAAGA,CAAC7N,KAAK,EAAEuL,OAAO,KAAK;EACzC,OAAO;IACL,GAAGvL,KAAK;IACRV,QAAQ,EAAEiM;EACZ,CAAC;AACH,CAAC;AAED,MAAMuC,gBAAgB,GAAGA,CAAC9N,KAAK,EAAEuL,OAAO,KAAK;EAC3C,OAAO;IACL,GAAGvL,KAAK;IACR/F,UAAU,EAAEsR;EACd,CAAC;AACH,CAAC;AAEM,MAAMwC,UAAU,GAAG;EACxBC,mBAAmB,EAAE1X,iBAAiB;EACtC2X,gBAAgB,EAAEV,eAAe;EACjCW,YAAY,EAAEjJ,WAAW;EACzBkJ,eAAe,EAAEzL,aAAa;EAC9B0L,aAAa,EAAErN,WAAW;EAC1BsN,UAAU,EAAEvN,SAAS;EACrBwN,WAAW,EAAEb,UAAU;EACvBc,YAAY,EAAEvN,WAAW;EACzBwN,SAAS,EAAEd,QAAQ;EACnBe,gBAAgB,EAAEd,gBAAgB;EAClCe,gBAAgB,EAAEd,cAAc;EAChCe,gBAAgB,EAAElY,cAAc;EAChCmY,iBAAiB,EAAElY,eAAe;EAClCmY,oBAAoB,EAAElY,iBAAiB;EACvCmY,gBAAgB,EAAEjB,cAAc;EAChCkB,kBAAkB,EAAEjB;AACtB,CAAC;;;;;;;;;;;;;;;;ACvJM,MAAM9C,oBAAoB,GAAG,kBAAkB;AAC/C,MAAMF,uBAAuB,GAAG,qBAAqB;AACrD,MAAMC,qBAAqB,GAAG,mBAAmB;;;;;;;;;;;;;;;;ACFd;AAEnC,MAAMH,YAAY,GAAG;EAC1BxU,YAAY,EAAE,IAAI;EAClBsO,UAAU,EAAE,IAAI;EAChBlO,QAAQ,EAAE,IAAI;EACdmD,MAAM,EAAE,IAAI;EACZC,QAAQ,EAAE,EAAE;EACZrD,WAAW,EAAE,CAAC;EACdsK,YAAY,EAAE,IAAI;EAClBhH,KAAK,EAAE,IAAI;EACXC,WAAW,EAAE,IAAI;EACjBC,aAAa,EAAE,KAAK;EACpB1D,UAAU,EAAE,KAAK;EACjBiJ,QAAQ,EAAEvH,MAAM,CAACmV,UAAU,CAAC,oBAAoB,CAAC,CAACV,OAAO;EACzDvS,UAAU,EAAE,KAAK;EACjBD,QAAQ,EAAE;IAAEoL,KAAK,EAAE,IAAI;IAAE7K,MAAM,EAAE;EAAK;AACxC,CAAC;AAEM,MAAMsQ,OAAO,GAAGA,CAAC7K,KAAK,EAAEgP,MAAM,KAAK;EACxC,MAAM;IAAEnR,IAAI;IAAE0N;EAAQ,CAAC,GAAGyD,MAAM;EAEhC,MAAMC,EAAE,GAAGlB,oDAAU,CAAClQ,IAAI,CAAC;EAE3B,IAAIoR,EAAE,EAAE;IACN,MAAMC,cAAc,GAAGD,EAAE,CAACE,IAAI,CAAC,SAAI,EAAEnP,KAAK,EAAEuL,OAAO,CAAC;IACpD,OAAO2D,cAAc,CAAC,CAAC;EACzB;EAEA,OAAOlP,KAAK;AACd,CAAC;;;;;;;;;;;;;;;;;AC9BiC;AAEY;AAEvC,MAAMjK,MAAM,GAAGA,CAAA,KAAMqZ,iDAAU,CAACnE,wDAAU,CAAC;;;;;;;;;;;;;;ACJ3C,MAAMvK,UAAU,GAAGE,GAAG,IAAI;EAC/B,MAAMqI,OAAO,GAAG,MAAAA,CAAA,KAAYrI,GAAG,CAACyO,SAAS,CAAC,CAAC;EAE3C,MAAM5L,eAAe,GAAG,MAAAA,CAAA,KAAY;IAClC,MAAM0D,QAAQ,GAAG,MAAM8B,OAAO,CAAC,CAAC;IAChC,OAAO9B,QAAQ,EAAEmI,gBAAgB,CAACC,oBAAoB;EACxD,CAAC;EAED,MAAMtO,WAAW,GAAG,MAAMzK,QAAQ,IAAI;IACpC,MAAMyS,OAAO,CAAC,CAAC;IACf,OAAOrI,GAAG,CAAC4O,SAAS,CAAChZ,QAAQ,CAAC;EAChC,CAAC;EAED,MAAM0K,aAAa,GAAG,MAAAA,CAAOvH,MAAM,EAAEnD,QAAQ,KAAK;IAChD,MAAMyS,OAAO,CAAC,CAAC;IAEf,MAAMwG,SAAS,GAAG,MAAM9V,MAAM,CAAC6H,OAAO,CAAChL,QAAQ,CAAC;IAEhD,MAAMkZ,WAAW,GAAG,EAAE;IACtB,IAAIhO,eAAe,GAAG+N,SAAS,CAAC7V,QAAQ;IAExC,OAAO8H,eAAe,CAAClH,MAAM,EAAE;MAC7BkH,eAAe,CAAClF,GAAG,CAACC,GAAG,IAAIiT,WAAW,CAACC,IAAI,CAAClT,GAAG,CAAC,CAAC;MAEjD,IAAI;QACF,MAAM0K,QAAQ,GAAG,MAAMxN,MAAM,CAACiW,gBAAgB,CAAC,CAAC;QAChDlO,eAAe,GAAGyF,QAAQ,CAACE,IAAI,CAACzN,QAAQ;MAC1C,CAAC,CAAC,OAAOiC,GAAG,EAAE;QACZ6F,eAAe,GAAG,EAAE;MACtB;IACF;IAEA,OAAOgO,WAAW;EACpB,CAAC;EAED,OAAO;IAAEzG,OAAO;IAAExF,eAAe;IAAExC,WAAW;IAAEC;EAAc,CAAC;AACjE,CAAC;;;;;;;;;;ACpCD;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;UCAA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA;WACA;WACA,iCAAiC,WAAW;WAC5C;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;;;;;;;;;;;;;;;;;;;;ACNyB;AACoB;AACiB;AACW;AACb;AACP;AACS;AAEvD,eAAe6O,IAAIA,CAAEC,SAAS,EAAE7E,OAAO,EAAE;EAC9C,MAAMvK,GAAG,GAAG,IAAIkP,yEAAO,CAAC;IACtBG,OAAO,EAAE9E,OAAO,CAAC8E,OAAO;IACxBC,SAAS,EAAE/E,OAAO,CAAC+E,SAAS;IAC5BxL,UAAU,EAAE3M,MAAM,CAAC6K,YAAY,CAACM,OAAO,CAAC4H,wEAAuB,CAAC,IAAI,EAAE;IACtEqF,WAAW,EAAEhF,OAAO,CAACgF;EACvB,CAAC,CAAC;EAEF,MAAMC,IAAI,GAAGP,4DAAU,CAACG,SAAS,CAAC;EAClC,IAAI5Z,YAAY;EAChB,IAAI;IACF,MAAMia,MAAM,GAAG,MAAMpJ,0EAAiB,CAACkE,OAAO,CAACmF,oBAAoB,CAAC;IACpEla,YAAY,GAAGia,MAAM,CAACja,YAAY;EACpC,CAAC,CAAC,OAAOY,CAAC,EAAE;IACVZ,YAAY,GAAG,aAAa;EAC9B;EACAga,IAAI,CAACG,MAAM,eACT9a,0DAAA,CAACyV,+DAAW;IAACtK,GAAG,EAAEA,GAAI;IAACxK,YAAY,EAAEA,YAAa;IAAC+U,OAAO,EAAEA;EAAQ,gBAClE1V,0DAAA,CAACU,mFAAY,MAAE,CACJ,CACf,CAAC;AACH,C","sources":["webpack://@defra/flood-webchat/./src/client/components/availability/availability.jsx","webpack://@defra/flood-webchat/./src/client/components/chat/chat.jsx","webpack://@defra/flood-webchat/./src/client/components/errorSummary/error-summary.jsx","webpack://@defra/flood-webchat/./src/client/components/live-region.jsx","webpack://@defra/flood-webchat/./src/client/components/message/message.jsx","webpack://@defra/flood-webchat/./src/client/components/panel/panel-footer.jsx","webpack://@defra/flood-webchat/./src/client/components/panel/panel-header.jsx","webpack://@defra/flood-webchat/./src/client/components/panel/panel.jsx","webpack://@defra/flood-webchat/./src/client/components/screens/end-chat.jsx","webpack://@defra/flood-webchat/./src/client/components/screens/feedback.jsx","webpack://@defra/flood-webchat/./src/client/components/screens/pre-chat.jsx","webpack://@defra/flood-webchat/./src/client/components/screens/request-chat.jsx","webpack://@defra/flood-webchat/./src/client/components/screens/settings.jsx","webpack://@defra/flood-webchat/./src/client/components/screens/unavailable.jsx","webpack://@defra/flood-webchat/./src/client/components/skip-link.jsx","webpack://@defra/flood-webchat/./src/client/hooks/useFocusedElements.js","webpack://@defra/flood-webchat/./src/client/hooks/useTextareaAutosize.js","webpack://@defra/flood-webchat/./src/client/lib/agent-status-headline.js","webpack://@defra/flood-webchat/./src/client/lib/check-availability.js","webpack://@defra/flood-webchat/./src/client/lib/classnames.js","webpack://@defra/flood-webchat/./src/client/lib/history.js","webpack://@defra/flood-webchat/./src/client/lib/message-notification.js","webpack://@defra/flood-webchat/./src/client/lib/transform-messages.js","webpack://@defra/flood-webchat/./src/client/store/AppProvider.jsx","webpack://@defra/flood-webchat/./src/client/store/actions-map.js","webpack://@defra/flood-webchat/./src/client/store/constants.js","webpack://@defra/flood-webchat/./src/client/store/reducer.js","webpack://@defra/flood-webchat/./src/client/store/useApp.js","webpack://@defra/flood-webchat/./src/client/store/useChatSdk.js","webpack://@defra/flood-webchat/external commonjs \"@nice-devone/nice-cxone-chat-web-sdk\"","webpack://@defra/flood-webchat/external commonjs \"lodash.debounce\"","webpack://@defra/flood-webchat/external commonjs \"luxon\"","webpack://@defra/flood-webchat/external commonjs \"react\"","webpack://@defra/flood-webchat/external commonjs \"react-dom\"","webpack://@defra/flood-webchat/external commonjs \"react-dom/client\"","webpack://@defra/flood-webchat/external commonjs \"uuid\"","webpack://@defra/flood-webchat/webpack/bootstrap","webpack://@defra/flood-webchat/webpack/runtime/compat get default export","webpack://@defra/flood-webchat/webpack/runtime/define property getters","webpack://@defra/flood-webchat/webpack/runtime/hasOwnProperty shorthand","webpack://@defra/flood-webchat/webpack/runtime/make namespace object","webpack://@defra/flood-webchat/./src/client/index.jsx"],"sourcesContent":["import React, { useEffect, useRef } from 'react'\n\nimport { classnames } from '../../lib/classnames'\nimport { Panel } from '../panel/panel.jsx'\nimport { SkipLink } from '../skip-link.jsx'\n\nimport { useApp } from '../../store/useApp'\nimport { historyPushState, historyReplaceState } from '../../lib/history.js'\nimport { LiveRegion } from '../live-region.jsx'\n\nexport function Availability () {\n const { availability, isChatOpen, setChatVisibility, unseenCount, threadId, setUnseenCount, setInstigatorId, setLiveRegionText } = useApp()\n\n const buttonRef = useRef()\n\n const showUnseenCount = unseenCount > 0 && !isChatOpen\n\n const messageText = unseenCount > 1 ? 'new messages' : 'new message'\n\n const onClick = e => {\n e.preventDefault()\n setUnseenCount(0)\n setChatVisibility(!isChatOpen)\n setInstigatorId(e.target.id)\n\n if (!isChatOpen) {\n historyPushState()\n } else {\n historyReplaceState()\n }\n }\n\n const onKeyDown = event => {\n if (event.key === ' ') {\n event.preventDefault()\n }\n }\n\n const onKeyUp = event => {\n if (event.key === ' ') {\n setUnseenCount(0)\n setChatVisibility(!isChatOpen)\n }\n }\n\n useEffect(() => {\n if (showUnseenCount) {\n setLiveRegionText(`Floodline Webchat - ${unseenCount} ${messageText}`)\n }\n\n return () => {\n setLiveRegionText()\n }\n }, [unseenCount, isChatOpen])\n\n useEffect(() => {\n const onScroll = () => {\n if (!threadId) {\n return\n }\n\n if (availability !== 'AVAILABLE') {\n return\n }\n\n const rect = buttonRef.current.parentElement.getBoundingClientRect()\n\n const isBelowFold = rect.top + 35 > (window.innerHeight || document.documentElement.clientHeight)\n const isFixed = !isChatOpen && isBelowFold\n\n document.documentElement.classList.toggle('wc-u-scroll-padding', isFixed)\n document.body.classList.toggle('wc-u-scroll-padding', isFixed)\n buttonRef.current.classList.toggle('wc-availability--fixed', isFixed)\n }\n\n document.addEventListener('scroll', onScroll)\n onScroll()\n\n return () => {\n document.removeEventListener('scroll', onScroll)\n }\n }, [threadId, isChatOpen, availability])\n\n switch (availability) {\n case 'AVAILABLE':\n return (\n <>\n <div\n className={classnames('wc-availability', isChatOpen && 'wc-open')}\n ref={buttonRef}\n >\n <div className='wc-availability__inner'>\n <a\n id='webchat-start-chat-link'\n className='wc-availability__link'\n href='#webchat'\n draggable='false'\n onClick={onClick}\n onKeyUp={onKeyUp}\n onKeyDown={onKeyDown}\n role='button'\n data-module='govuk-button'\n >\n {!threadId ? <>Start chat</> : <>Show chat</>}\n {showUnseenCount\n ? (\n <span className='wc-availability__unseen'>\n {unseenCount}\n <span className='govuk-visually-hidden'> {messageText}</span>\n </span>\n )\n : null}\n </a>\n </div>\n </div>\n {!isChatOpen ? <LiveRegion /> : <Panel />}\n <SkipLink />\n </>\n )\n case 'EXISTING':\n case 'UNAVAILABLE':\n return (\n <p className='govuk-body'>When it is available, a 'start chat' link will appear.</p>\n )\n default:\n return (\n <p className='govuk-body'>Checking availability</p>\n )\n }\n}\n","import React, { useEffect, useRef, useState } from 'react'\n\nimport { PanelHeader } from '../panel/panel-header.jsx'\nimport { PanelFooter } from '../panel/panel-footer.jsx'\nimport { Message } from '../message/message.jsx'\n\nimport { useApp } from '../../store/useApp.js'\nimport { useTextareaAutosize } from '../../hooks/useTextareaAutosize.js'\nimport { formatTranscript } from '../../lib/transform-messages.js'\nimport { agentStatusHeadline } from '../../lib/agent-status-headline.js'\n\nexport function Chat ({ onEndChatScreen, onSettingsScreen }) {\n const { availability, thread, messages, agent, agentStatus, isAgentTyping, isChatOpen, settings, isKeyboard, setLiveRegionText } = useApp()\n\n const [userMessage, setUserMessage] = useState('')\n const [focusVisibleWithin, setFocusVisibleWithin] = useState(false)\n\n const messageRef = useRef()\n\n useTextareaAutosize(messageRef.current, userMessage)\n\n useEffect(() => {\n if (settings.scroll && messages.length !== 0) {\n const chatBody = document.querySelector('.wc-body')\n chatBody.scrollTop = chatBody.scrollHeight\n }\n }, [messages, isAgentTyping])\n\n useEffect(() => {\n const label = document.querySelector('.wc-form__label')\n\n if (userMessage.length === 0) {\n label.classList.remove('govuk-visually-hidden')\n } else {\n label.classList.add('govuk-visually-hidden')\n }\n }, [userMessage])\n\n const onChange = e => {\n setUserMessage(e.target?.value)\n }\n\n const agentName = agent?.nickname || agent?.firstName\n\n const connectionHeadlineText = agentStatusHeadline(availability, agentStatus, agentName)\n\n useEffect(() => {\n if (connectionHeadlineText) {\n setLiveRegionText(`Floodline Webchat - ${connectionHeadlineText}`)\n }\n\n return () => {\n setLiveRegionText()\n }\n }, [connectionHeadlineText])\n\n useEffect(() => {\n if (isAgentTyping && isChatOpen) {\n setLiveRegionText(`${agentName} is typing...`)\n }\n\n return () => {\n setLiveRegionText()\n }\n }, [isAgentTyping, isChatOpen])\n\n useEffect(() => {\n const lastAgentMessage = messages[messages.length - 1]\n\n if (agentStatus !== 'closed' && lastAgentMessage?.direction === 'outbound') {\n setLiveRegionText(`${agentName} said: ${lastAgentMessage.text}`)\n }\n\n return () => {\n setLiveRegionText()\n }\n }, [messages])\n\n const sendMessage = () => {\n if (messageRef.current.value.length === 0 || agentStatus === 'closed') {\n return\n }\n\n try {\n const message = messageRef.current.value.trim()\n thread.sendTextMessage(message)\n setLiveRegionText(`You said: ${message}`)\n } catch (err) {\n console.log('[Chat Error] sendMessage', err)\n }\n\n setUserMessage('')\n }\n\n const handleSubmit = e => {\n e.preventDefault()\n sendMessage()\n }\n\n const saveChat = () => {\n const transcript = formatTranscript(messages)\n\n const saveChatLink = document.querySelector('#transcript-download')\n\n saveChatLink.setAttribute('href', `data:text/plain;charset=utf-8,${transcript}`)\n }\n\n const handleKeyPress = e => {\n if (e.key === 'Enter' && !e.shiftKey) {\n switch (e.target.id) {\n case 'text-area':\n e.preventDefault()\n sendMessage()\n break\n case 'end-chat':\n onEndChatScreen(e)\n break\n case 'wc-settings':\n onSettingsScreen(e)\n break\n case 'transcript-download':\n saveChat()\n break\n default:\n break\n }\n }\n if (e.key === ' ') {\n if (e.target.id === 'end-chat') {\n onEndChatScreen(e)\n }\n if (e.target.id === 'wc-settings') {\n onSettingsScreen(e)\n }\n }\n }\n\n return (\n <>\n <PanelHeader />\n\n <div className='wc-status'>\n <p className='wc-status__availability'>{connectionHeadlineText}</p>\n <a\n id='end-chat'\n className='wc-status__link'\n href='#'\n data-module='govuk-button'\n role='button'\n onClick={onEndChatScreen}\n onKeyDown={handleKeyPress}\n >\n End chat\n </a>\n </div>\n\n <div className='wc-body' tabIndex='0'>\n <ul className='wc-chat'>\n {messages.length\n ? messages.map((msg, index) => <Message key={msg.id} message={msg} previousMessage={messages[index - 1]} />)\n : null}\n {isAgentTyping\n ? (\n <li className='wc-chat__message outbound'>\n <div className='wc-chat__from'>{agentName} is typing</div>\n <div className='wc-chat__text outbound'>\n <svg width='28' height='16' x='0px' y='0px' viewBox='0 0 28 16'>\n <circle stroke='none' cx='3' cy='8' r='3' fill='currentColor' />\n <circle stroke='none' cx='14' cy='8' r='3' fill='currentColor' />\n <circle stroke='none' cx='25' cy='8' r='3' fill='currentColor' />\n </svg>\n </div>\n </li>\n )\n : null}\n </ul>\n </div>\n\n <PanelFooter>\n <form className={`wc-form${focusVisibleWithin ? ' wc-focus-within' : ''}`} noValidate onSubmit={handleSubmit}>\n <label className='govuk-label wc-form__label' htmlFor='wc-form-textarea'>\n Your message<span className='govuk-visually-hidden'> (enter key submits)</span>\n </label>\n\n <textarea\n ref={messageRef}\n rows='1'\n aria-required='true'\n className='wc-form__textarea'\n id='text-area'\n name='message'\n onChange={onChange}\n onKeyDown={handleKeyPress}\n onFocus={() => { setFocusVisibleWithin(isKeyboard) }}\n onBlur={() => { setFocusVisibleWithin(false) }}\n value={userMessage}\n />\n\n <input\n type='submit'\n className='wc-form__button govuk-button'\n value='Send'\n data-prevent-double-click='true'\n />\n </form>\n\n <div className='wc-footer__settings'>\n <a\n href='#'\n id='wc-settings'\n className='wc-footer__settings-link'\n data-module='govuk-button'\n onKeyDown={handleKeyPress}\n onClick={onSettingsScreen}\n >\n Settings\n </a>\n <a\n href='#'\n id='transcript-download'\n className='wc-footer__settings-link'\n data-module='govuk-button'\n download='floodline-webchat-transcript.txt'\n onKeyDown={handleKeyPress}\n onClick={saveChat}\n >\n Save chat\n </a>\n </div>\n </PanelFooter>\n </>\n )\n}\n","import React from 'react'\n\nexport const ErrorSummary = ({ errors }) => {\n const errs = Object.keys(errors)\n\n const goToInput = e => {\n e.preventDefault()\n const key = e.target.getAttribute('data-key')\n document.querySelector(`#wc-${key}`).focus()\n }\n\n if (errs.length === 0) {\n return null\n }\n\n return (\n <div className='govuk-error-summary govuk-!-static-margin-bottom-7' data-module='govuk-error-summary' tabIndex='-1'>\n <div role='alert'>\n <h2 id='wc-error' className='wc-error-summary__title govuk-error-summary__title'>\n There is a problem\n </h2>\n <div className='govuk-error-summary__body'>\n <ul className='govuk-list govuk-error-summary__list wc-error-summary__list'>\n {errs.map(key => (\n <li key={key}>\n <a href='#' data-key={key} onClick={goToInput}>{errors[key]}</a>\n </li>\n ))}\n </ul>\n </div>\n </div>\n </div>\n )\n}\n","import React, { useEffect, useState, useCallback } from 'react'\nimport debounce from 'lodash.debounce'\nimport { useApp } from '../store/useApp'\n\nconst DEBOUNCE_MILLISECONDS = 2000\n\nexport const LiveRegion = () => {\n const { agentStatus, liveRegionText, setLiveRegionText } = useApp()\n\n const [textA, setTextA] = useState()\n const [textB, setTextB] = useState()\n\n const isSessionEnded = agentStatus === 'closed' || agentStatus === null\n\n const clearText = () => {\n setTextA()\n setTextB()\n }\n\n const setText = useCallback(debounce(text => {\n if (textA) {\n setTextB(text)\n } else {\n setTextA(text)\n }\n }, DEBOUNCE_MILLISECONDS), [textA, textB])\n\n useEffect(() => {\n if (liveRegionText) {\n clearText()\n setText(liveRegionText)\n }\n\n if (isSessionEnded) {\n clearText()\n setLiveRegionText()\n }\n\n return () => {\n clearText()\n setLiveRegionText()\n }\n }, [liveRegionText])\n\n return (\n <>\n <div className='wc-live' role='status' aria-atomic='true'>\n {textA}\n </div>\n <div className='wc-live' role='status' aria-atomic='true'>\n {textB}\n </div>\n </>\n )\n}\n","import React from 'react'\nimport { classnames } from '../../lib/classnames'\n\nexport function Message ({ message, previousMessage }) {\n const outbound = message.direction === 'outbound'\n\n const messageOwnerSameAsPrevious = message?.direction === previousMessage?.direction\n\n return (\n <li className={classnames('wc-chat__message', outbound ? 'outbound' : 'inbound')}>\n <div className='wc-chat__from'>\n {messageOwnerSameAsPrevious ? null : <span>{outbound ? message.assignee : 'You'}</span>}\n <span className='govuk-visually-hidden'>:</span>\n </div>\n <div className={classnames('wc-chat__text', outbound ? 'outbound' : 'inbound')}>\n {message.text}\n </div>\n </li>\n )\n}\n","import React from 'react'\n\nexport function PanelFooter ({ children }) {\n return (\n <div className='wc-footer'>\n {children}\n </div>\n )\n}\n","import React from 'react'\nimport { useApp } from '../../store/useApp.js'\nimport { historyReplaceState } from '../../lib/history.js'\n\nexport function PanelHeader () {\n const { thread, threadId, setChatVisibility, setUnseenCount, isMobile } = useApp()\n\n const onClose = e => {\n e.preventDefault()\n setChatVisibility(false)\n historyReplaceState()\n\n if (threadId) {\n thread?.lastMessageSeen()\n setUnseenCount(0)\n }\n }\n\n const BackButtonComponent = (\n <button className='wc-header__back' aria-label='Close the webchat' onClick={onClose}>\n <svg aria-hidden='true' focusable='false' width='20' height='20' viewBox='0 0 20 20'>\n <path d='M4.828,11L12.314,18.485L10.899,19.899L1,10L10.899,0.101L12.314,1.515L4.828,9L19,9L19,11L4.828,11Z' fill='currentColor' />\n </svg>\n </button>\n )\n\n const CloseButtonComponent = (\n <button className='wc-header__close' aria-label='Close the webchat' onClick={onClose}>\n <svg aria-hidden='true' focusable='false' width='20' height='20' viewBox='0 0 20 20'>\n <path d='M10,8.6L15.6,3L17,4.4L11.4,10L17,15.6L15.6,17L10,11.4L4.4,17L3,15.6L8.6,10L3,4.4L4.4,3L10,8.6Z' fill='currentColor' />\n </svg>\n </button>\n )\n\n const MinimiseButtonComponent = (\n <button className='wc-header__hide' aria-label='Minimise the webchat' onClick={onClose}>\n <svg aria-hidden='true' focusable='false' width='20' height='20' viewBox='0 0 20 20'>\n <path d='M10 14.4l-7-7L4.4 6l5.6 5.6L15.6 6 17 7.4l-7 7z' fill='currentColor' />\n </svg>\n </button>\n )\n\n const isMobileAndHasHistory = isMobile && window.history.state\n const isMobileAndNoHistory = isMobile && !window.history.state\n\n let RightButtonComponent = CloseButtonComponent\n\n if (threadId) {\n RightButtonComponent = MinimiseButtonComponent\n\n if (isMobileAndNoHistory) {\n RightButtonComponent = MinimiseButtonComponent\n }\n }\n\n if (!threadId && isMobileAndNoHistory) {\n RightButtonComponent = CloseButtonComponent\n }\n\n if (isMobileAndHasHistory) {\n RightButtonComponent = null\n }\n\n return (\n <div className='wc-header'>\n {isMobileAndHasHistory ? BackButtonComponent : null}\n\n <h2 id='wc-header-title' className='wc-header__title'>\n Floodline Webchat\n </h2>\n\n {RightButtonComponent}\n </div>\n )\n}\n","import React, { useEffect, useState, useCallback } from 'react'\nimport { createPortal } from 'react-dom'\nimport { classnames } from '../../lib/classnames.js'\n\nimport { PreChat } from '../screens/pre-chat.jsx'\nimport { RequestChat } from '../screens/request-chat.jsx'\nimport { Chat } from '../chat/chat.jsx'\nimport { Unavailable } from '../screens/unavailable.jsx'\nimport { EndChat } from '../screens/end-chat.jsx'\nimport { Settings } from '../screens/settings.jsx'\nimport { Feedback } from '../screens/feedback.jsx'\nimport { LiveRegion } from '../live-region.jsx'\n\nimport { useApp } from '../../store/useApp.js'\nimport { useChatSdk } from '../../store/useChatSdk.js'\nimport { useFocusedElements } from '../../hooks/useFocusedElements.js'\nimport { historyReplaceState } from '../../lib/history.js'\n\nexport function Panel () {\n const { sdk, availability, instigatorId, thread, threadId, setThread, setThreadId, setChatVisibility, setMessages, setUnseenCount, isMobile, isKeyboard } = useApp()\n const { fetchThread, fetchMessages } = useChatSdk(sdk)\n\n const [screen, setScreen] = useState(threadId ? 2 : 0)\n\n useFocusedElements(screen)\n\n const onEscapeKey = useCallback(e => {\n if (e.key === 'Escape' || e.key === 'Esc') {\n if (threadId) {\n thread?.lastMessageSeen()\n setUnseenCount(0)\n }\n setChatVisibility(false)\n historyReplaceState()\n }\n }, [thread, threadId, setUnseenCount, setChatVisibility])\n\n /**\n * Focus previously focused element when closing the webchat\n */\n useEffect(() => {\n return () => {\n document.getElementById(instigatorId)?.focus()\n }\n }, [])\n\n /**\n * We need ammend classes on the body element to handle mobile behaviour\n */\n useEffect(() => {\n document.body.classList.remove('wc-u-hidden')\n document.getElementsByTagName('html')[0].classList.add('wc-u-html')\n document.body.classList.add('wc-u-body')\n return () => {\n document.getElementsByTagName('html')[0].classList.remove('wc-u-html')\n document.body.classList.remove('wc-u-body')\n }\n }, [isMobile])\n\n /**\n * Initializes the eventListener for pressing the escape key\n */\n useEffect(() => {\n document.addEventListener('keydown', onEscapeKey)\n\n return () => {\n document.removeEventListener('keydown', onEscapeKey)\n }\n }, [onEscapeKey, setChatVisibility])\n\n /**\n * Recovers the thread if there is a threadId but no thread loaded in to state\n */\n useEffect(() => {\n const recover = async () => {\n try {\n const fetchedThread = await fetchThread(threadId)\n setThread(fetchedThread)\n\n const fetchedMessages = await fetchMessages(fetchedThread, threadId)\n setMessages(fetchedMessages)\n } catch (err) {\n console.log('[Chat Error] fetchThread', err)\n\n setThreadId()\n setThread()\n setScreen(0)\n }\n }\n\n if (threadId) {\n if (thread) {\n thread.lastMessageSeen()\n setUnseenCount(0)\n setScreen(2)\n } else {\n recover()\n }\n }\n }, [thread, threadId])\n\n const handleScreenChange = newScreen => e => {\n e.preventDefault()\n setScreen(newScreen)\n }\n\n const goToPreChatScreen = handleScreenChange(0)\n const goToRequestChatScreen = handleScreenChange(1)\n const goToChatScreen = handleScreenChange(2)\n const goToEndChatScreen = handleScreenChange(3)\n const goToFeedbackScreen = handleScreenChange(4)\n const goToSettingsScreen = handleScreenChange(5)\n\n let ScreenComponent\n\n switch (screen) {\n case 0:\n ScreenComponent = <PreChat onContinue={goToRequestChatScreen} />\n break\n case 1:\n ScreenComponent = <RequestChat onPreChatScreen={goToPreChatScreen} />\n break\n case 2:\n ScreenComponent = <Chat onSettingsScreen={goToSettingsScreen} onEndChatScreen={goToEndChatScreen} />\n break\n case 3:\n ScreenComponent = <EndChat onChatScreen={goToChatScreen} onEndChatConfirm={goToFeedbackScreen} />\n break\n case 4:\n ScreenComponent = (\n <Feedback onCancel={() => {\n setChatVisibility(false)\n historyReplaceState()\n }}\n />\n )\n break\n case 5:\n ScreenComponent = <Settings onCancel={goToChatScreen} />\n break\n default:\n ScreenComponent = <PreChat onContinue={goToRequestChatScreen} />\n }\n\n if (availability === 'UNAVAILABLE') {\n ScreenComponent = <Unavailable />\n }\n\n const Component = (\n <div id='wc-panel' role='dialog' className={classnames('wc-panel', isKeyboard && 'wc-focus-visible')} tabIndex='-1' aria-modal='true' aria-labelledby='wc-header-title'>\n <div className='wc-panel__inner'>\n {ScreenComponent}\n </div>\n <LiveRegion />\n </div>\n )\n\n return (\n <>\n {createPortal(Component, document.body)}\n </>\n )\n}\n","import React, { useEffect } from 'react'\nimport { PanelHeader } from '../panel/panel-header.jsx'\nimport { useApp } from '../../store/useApp.js'\n\nexport function EndChat ({ onChatScreen, onEndChatConfirm }) {\n const { setCustomerId, setThreadId, setMessages, agentStatus, thread, threadId, setUnseenCount, isKeyboard } = useApp()\n\n const confirmEndChat = async e => {\n e.preventDefault()\n\n window.localStorage.setItem('tmpThreadId', threadId)\n setThreadId()\n setMessages([])\n setCustomerId()\n thread.lastMessageSeen()\n setUnseenCount(0)\n\n // End chat if still open\n if (agentStatus !== 'closed') {\n thread.endChat()\n }\n\n onEndChatConfirm(e)\n }\n\n useEffect(() => {\n if (isKeyboard) {\n setTimeout(() => {\n document.querySelector('#confirm-endchat').focus()\n }, 10)\n }\n }, [])\n\n const handleKeyPress = e => {\n if ((e.key === 'Enter' || e.key === ' ') && e.target.id === 'confirm-endchat') {\n confirmEndChat(e)\n }\n if ((e.key === 'Enter' || e.key === ' ') && e.target.id === 'resume-chat') {\n onChatScreen(e)\n }\n }\n\n return (\n <>\n <PanelHeader />\n <div className='wc-body'>\n <div className='wc-content'>\n <h3 className='wc-heading' aria-live='polite'>Are you sure you want to end the chat?</h3>\n <div className='govuk-button-group'>\n <a\n id='confirm-endchat'\n href='#endChat'\n role='button'\n className='wc-button govuk-button'\n data-module='govuk-button'\n onClick={confirmEndChat}\n onKeyDown={handleKeyPress}\n >\n Yes, end chat\n </a>\n <a\n id='resume-chat'\n href='#resumeChat'\n role='button'\n className='wc-link govuk-link'\n data-module='govuk-button'\n onClick={onChatScreen}\n onKeyDown={handleKeyPress}\n >\n No, resume chat\n </a>\n </div>\n </div>\n </div>\n </>\n )\n}\n","import React from 'react'\nimport { PanelHeader } from '../panel/panel-header.jsx'\n\nexport function Feedback ({ onCancel }) {\n const feedbackSend = () => {\n const tmpThreadId = window.localStorage.getItem('tmpThreadId')\n window.location.href = `https://defragroup.eu.qualtrics.com/jfe/form/SV_8dgFSJcxxIfqx5Y?Id=${tmpThreadId}&Source=${window.location.href}`\n window.localStorage.removeItem('tmpThreadId')\n }\n\n const feedbackClose = async e => {\n window.localStorage.removeItem('tmpThreadId')\n onCancel(e)\n }\n\n const handleKeyPress = e => {\n if (e.key === 'Enter' || e.key === ' ') {\n if (e.target.id === 'feedback-close') {\n feedbackClose(e)\n }\n if (e.target.id === 'feedback-send') {\n feedbackSend()\n }\n }\n }\n\n return (\n <>\n <PanelHeader />\n\n <div className='wc-body'>\n <div className='wc-content'>\n <h3 id='wc-subtitle' className='wc-heading'>Give Feedback on Floodline webchat</h3>\n <p>Please note we’re unable to respond to feedback.</p>\n <p>\n <a\n id='feedback-send'\n className='govuk-link'\n href='#'\n target='_blank'\n rel='noreferrer'\n onKeyDown={handleKeyPress}\n onClick={feedbackSend}\n >\n Give Feedback\n </a>\n </p>\n <p>\n <a\n id='feedback-close'\n className='wc-link govuk-link'\n href='#'\n data-module='govuk-button'\n role='button'\n onKeyDown={handleKeyPress}\n onClick={feedbackClose}\n >\n Close\n </a>\n </p>\n </div>\n </div>\n </>\n )\n}\n","import React from 'react'\nimport { PanelHeader } from '../panel/panel-header.jsx'\n\nexport function PreChat ({ onContinue }) {\n return (\n <>\n <PanelHeader />\n\n <div className='wc-body'>\n <div className='wc-content'>\n <h3 className='wc-heading' aria-live='polite'>What you can use webchat for</h3>\n <p>Webchat lets you talk directly to a Floodline adviser.</p>\n\n <p>You can use webchat to get:</p>\n <ul className='wc-list'>\n <li>current flood warnings and alerts in your area</li>\n <li>information on the flood warning service</li>\n <li>advice on what to do before, during and after a flood</li>\n </ul>\n <p>\n There are other ways to \n <a className='govuk-link' href='https://www.gov.uk/sign-up-for-flood-warnings' target='_blank' rel='noreferrer'>\n sign up for flood warnings\n </a>\n and \n <a className='govuk-link' href='https://www.fws.environment-agency.gov.uk/app/olr/login' target='_blank' rel='noreferrer'>\n manage your flood warnings account\n </a>.\n </p>\n <p>\n Do not use webchat to \n <a\n className='govuk-link'\n href='https://www.gov.uk/report-flood-cause'\n target='_blank'\n rel='noreferrer'\n >\n report a flood\n </a>.\n </p>\n\n <button className='govuk-button wc-button govuk-!-margin-top-1' data-module='govuk-button' onClick={onContinue}>Continue</button>\n\n <h3 className='wc-heading'>Other flood information</h3>\n\n <p>Call Floodline for all other flood and flood warning information.</p>\n <p>\n <strong>Floodline helpline</strong>\n <br />\n Telephone: 0345 988 1188\n <br />\n Textphone: 0345 602 6340\n <br />\n Open 24 hours a day, 7 days a week\n <br />\n <a className='govuk-link' href='https://gov.uk/call-charges' target='_blank' rel='noreferrer'>Find out more about call charges</a>\n </p>\n </div>\n </div>\n </>\n )\n}\n","import React, { useRef, useState, useEffect } from 'react'\nimport * as uuid from 'uuid'\n\nimport { classnames } from '../../lib/classnames.js'\nimport { PanelHeader } from '../panel/panel-header.jsx'\nimport { useApp } from '../../store/useApp.js'\nimport { useChatSdk } from '../../store/useChatSdk.js'\nimport { ErrorSummary } from '../errorSummary/error-summary.jsx'\n\nconst QUESTION_MAX_LENGTH = 500\n\nexport function RequestChat ({ onPreChatScreen }) {\n const { sdk, setCustomerId, setThreadId, setThread, setLiveRegionText } = useApp()\n const { fetchCustomerId, fetchThread } = useChatSdk(sdk)\n const [errors, setErrors] = useState({})\n const [questionLength, setQuestionLength] = useState(0)\n const [isButtonDisabled, setButtonDisabled] = useState(false)\n\n const nameRef = useRef()\n const questionRef = useRef()\n\n const isQuestionLengthValid = QUESTION_MAX_LENGTH >= questionLength\n const questionLengthRemaining = QUESTION_MAX_LENGTH - questionLength\n const questionLengthExceeded = questionLength - QUESTION_MAX_LENGTH\n\n let questionHint = `You have ${questionLengthRemaining} characters remaining`\n\n if (!isQuestionLengthValid) {\n questionHint = `You have ${questionLengthExceeded} characters too many`\n }\n\n useEffect(() => {\n if (Object.keys(errors).length) {\n document.querySelector('.govuk-error-summary')?.focus()\n }\n }, [errors])\n\n const onQuestionChange = e => {\n setQuestionLength(e.target.value.length)\n }\n\n const buttonLabel = isButtonDisabled ? 'Requesting...' : 'Request Chat'\n\n useEffect(() => {\n if (isButtonDisabled) {\n setLiveRegionText(buttonLabel)\n }\n }, [isButtonDisabled])\n\n const onRequestChat = async e => {\n e.preventDefault()\n\n if (isButtonDisabled) {\n return\n }\n\n const errs = {}\n\n if (nameRef.current.value.length === 0) {\n errs.name = 'Enter your name'\n }\n\n if (questionRef.current.value.length === 0) {\n errs.question = 'Enter your question'\n }\n\n if (questionRef.current.value.length > QUESTION_MAX_LENGTH) {\n errs.question = 'Your question must be 500 characters or less'\n }\n\n if (Object.keys(errs).length === 0) {\n try {\n setButtonDisabled(true)\n const threadId = uuid.v4()\n const customerId = await fetchCustomerId()\n const thread = await fetchThread(threadId)\n\n sdk.getCustomer().setName(nameRef.current.value)\n\n await thread.startChat(questionRef.current.value || 'Begin conversation')\n\n setCustomerId(customerId)\n setThreadId(threadId)\n setThread(thread)\n thread.setCustomField('threadid', threadId)\n } catch (err) {\n console.log('[Request Chat Error]', err)\n }\n }\n\n setErrors(errs)\n }\n\n return (\n <>\n <PanelHeader />\n\n <div className='wc-body'>\n <div className='wc-content'>\n <a href='#' className='wc-back-link govuk-back-link' onClick={onPreChatScreen}>\n What you can use webchat for\n </a>\n\n <ErrorSummary errors={errors} />\n\n <h3 className='wc-heading' aria-live='polite'>\n Your name and question\n </h3>\n\n <form>\n <div className={classnames('wc-form-group', 'govuk-form-group', errors.name && 'govuk-form-group--error')}>\n <label className='wc-label govuk-label' htmlFor='wc-name'>\n Your name\n </label>\n {errors.name && (\n <p className='govuk-error-message'>\n <span className='govuk-visually-hidden'>Error:</span> {errors.name}\n </p>\n )}\n <input\n ref={nameRef}\n className={classnames('wc-input', 'govuk-input', errors.name && 'govuk-input--error')}\n id='wc-name'\n name='name'\n type='text'\n data-testid='request-chat-user-name'\n />\n </div>\n\n <div className='wc-form-group govuk-character-count' data-module='govuk-character-count' data-maxlength='500'>\n <div className={classnames('govuk-form-group', errors.question && 'govuk-form-group--error')}>\n <label className='wc-label govuk-label' htmlFor='wc-question'>\n Your question\n </label>\n {errors.question && (\n <p className='govuk-error-message'>\n <span className='govuk-visually-hidden'>Error:</span>\n {errors.question}\n </p>\n )}\n <textarea\n ref={questionRef}\n id='wc-question'\n name='question'\n rows='5'\n aria-describedby='wc-question-info'\n onChange={onQuestionChange}\n className={classnames('wc-textarea', 'govuk-textarea', 'govuk-js-character-count', !isQuestionLengthValid || errors.question ? 'govuk-textarea--error' : '')}\n data-testid='request-chat-user-question'\n />\n <div\n id='wc-question-info'\n className='wc-hint govuk-hint govuk-char-count__msg'\n style={{ color: `${!isQuestionLengthValid ? '#d4351c' : ''}` }}\n aria-hidden='true'\n >\n {questionHint}\n </div>\n <div className='govuk-character-count__sr-status govuk-visually-hidden' aria-live='polite'>\n {questionHint}\n </div>\n </div>\n </div>\n\n <div className='wc-inset-text govuk-inset-text'>\n By selecting 'Request chat' you agree to the terms of our \n <a href='https://check-for-flooding.service.gov.uk/privacy-notice' target='_blank' rel='noreferrer' className='govuk-link'>privacy notice</a>.\n </div>\n\n <button\n className='wc-button govuk-button govuk-!-margin-top-1'\n data-module='govuk-button'\n onClick={onRequestChat}\n aria-disabled={isButtonDisabled}\n >\n {buttonLabel}\n </button>\n </form>\n </div>\n </div>\n </>\n )\n}\n","import React, { useState } from 'react'\nimport { PanelHeader } from '../panel/panel-header.jsx'\n\nimport { useApp } from '../../store/useApp.js'\n\nexport function Settings ({ onCancel }) {\n const { settings, setSettings } = useApp()\n\n const [optionAudio, setOptionAudio] = useState(settings.audio)\n const [optionScroll, setOptionScroll] = useState(settings.scroll)\n\n const onSave = e => {\n e.preventDefault()\n\n setSettings({ audio: optionAudio, scroll: optionScroll })\n onCancel(e)\n }\n\n const handleKeyPress = e => {\n if ((e.key === 'Enter' || e.key === ' ') && e.target.id === 'settings-save') {\n onSave(e)\n } else if ((e.key === 'Enter' || e.key === ' ') && e.target.id === 'settings-cancel') {\n onCancel(e)\n }\n }\n\n return (\n <>\n <PanelHeader />\n\n <div className='wc-body'>\n <div className='wc-content'>\n <fieldset className='govuk-fieldset govuk-!-margin-bottom-4'>\n <legend className='govuk-fieldset__legend govuk-fieldset__legend'>\n <h3 id='wc-subtitle' className='wc-heading'>Change settings</h3>\n </legend>\n <div className='govuk-checkboxes govuk-checkboxes--small' data-module='govuk-checkboxes'>\n <div className='govuk-checkboxes__item'>\n <input\n id='audio'\n name='audio'\n type='checkbox'\n value='audio'\n className='govuk-checkboxes__input'\n defaultChecked={optionAudio}\n onChange={() => setOptionAudio(!optionAudio)}\n />\n <label className='wc-label govuk-label govuk-checkboxes__label' htmlFor='audio'>\n Play a sound when receiving a new message\n </label>\n </div>\n <div className='govuk-checkboxes__item'>\n <input\n id='scroll'\n name='scroll'\n type='checkbox'\n value='scroll'\n className='govuk-checkboxes__input'\n defaultChecked={optionScroll}\n onChange={() => setOptionScroll(!optionScroll)}\n />\n <label className='wc-label govuk-label govuk-checkboxes__label' htmlFor='scroll'>\n Scroll automatically to a new message\n </label>\n </div>\n </div>\n </fieldset>\n\n <div className='govuk-button-group'>\n <a\n id='settings-save'\n href='#'\n className='wc-button govuk-button'\n data-module='govuk-button'\n role='button'\n onClick={onSave}\n onKeyDown={handleKeyPress}\n >\n Save\n </a>\n <a\n id='settings-cancel'\n href='#'\n className='wc-link govuk-link'\n data-module='govuk-button'\n role='button'\n onClick={onCancel}\n onKeyDown={handleKeyPress}\n >\n Cancel\n </a>\n </div>\n </div>\n </div>\n </>\n )\n}\n","import React from 'react'\nimport { PanelHeader } from '../panel/panel-header.jsx'\n\nexport function Unavailable () {\n return (\n <>\n <PanelHeader />\n\n <div className='wc-body'>\n <h3 id='wc-subtitle' className='govuk-heading-m'>Webchat is currently not available</h3>\n <p className='govuk-body-s'>Try again later, or call Floodline:</p>\n <p className='govuk-body-s'>\n <strong>Floodline helpline</strong>\n <br />Telephone: 0345 988 1188\n <br />Textphone: 0345 602 6340\n <br />Open 24 hours a day, 7 days a week\n <br /><a className='govuk-link' href='https://gov.uk/call-charges'>Find out more about call charges</a>\n </p>\n <p className='govuk-body-s'>We're running webchat as a trial, it will not always be available.</p>\n </div>\n </>\n )\n}\n","import React from 'react'\nimport { createPortal } from 'react-dom'\nimport { useApp } from '../store/useApp'\n\nexport const SkipLink = () => {\n const { threadId, setInstigatorId } = useApp()\n\n if (!threadId) {\n return null\n }\n\n const targetContainer = document.getElementById('webchat-skip-link-container')\n\n if (!targetContainer) {\n return null\n }\n\n const onClick = e => {\n e.preventDefault()\n setInstigatorId(e.target.id)\n window.location.hash = '#webchat'\n }\n\n return (\n <>\n {createPortal(\n <a\n id='webchat-skip-link'\n href='#webchat'\n className='govuk-skip-link'\n data-module='govuk-skip-link'\n onClick={onClick}\n data-wc-skiplink\n data-wc-open-btn\n >\n Skip to webchat\n </a>,\n targetContainer\n )}\n </>\n )\n}\n","import { useState, useEffect, useCallback } from 'react'\n\nconst ariaHidden = 'aria-hidden'\nconst dataWcInert = 'data-wc-inert'\n\nconst setAriaHidden = isInert => {\n for (const node of document.body.children) {\n if (node.id !== 'wc-panel') {\n // We only want to toggle elements that aren't already inert\n if (isInert && !node.getAttribute(ariaHidden)) {\n node.setAttribute(ariaHidden, 'true')\n node.setAttribute(dataWcInert, '')\n } else if (node.hasAttribute(dataWcInert)) {\n node.removeAttribute(ariaHidden)\n node.removeAttribute(dataWcInert)\n }\n }\n }\n}\n\nexport const getFocusableElements = () => {\n const selectors = [\n '#wc-panel a:not([disabled])',\n '#wc-panel button:not([disabled])',\n '#wc-panel select:not([disabled])',\n '#wc-panel input:not([disabled])',\n '#wc-panel textarea:not([disabled])',\n '#wc-panel *[tabindex=\"0\"]:not([disabled])'\n ]\n\n const elements = document.body.querySelectorAll(selectors.join(','))\n return Array.from(elements).filter(e => !e.closest('[hidden]') && !e.closest('[aria-hidden=\"true\"]'))\n}\n\nconst useFocusedElements = screen => {\n const [panelElements, setPanelElements] = useState([])\n\n const onKeyDown = useCallback(e => {\n const webchatPanelElement = document.querySelector('#wc-panel')\n\n if (e.key === 'Tab') {\n if (webchatPanelElement && !document.activeElement.closest('#wc-panel')) {\n webchatPanelElement.focus()\n }\n\n if (e.shiftKey) {\n if (document.activeElement === panelElements[0]) {\n panelElements[panelElements.length - 1].focus()\n e.preventDefault()\n } else if (document.activeElement === document.querySelector('#wc-panel')) {\n panelElements[panelElements.length - 1]?.focus()\n e.preventDefault()\n }\n } else if (document.activeElement === panelElements[panelElements.length - 1]) {\n panelElements[0].focus()\n e.preventDefault()\n }\n }\n }, [panelElements])\n\n useEffect(() => {\n setPanelElements(getFocusableElements())\n }, [screen])\n\n useEffect(() => {\n setAriaHidden(true)\n\n const panelElement = document.querySelector('#wc-panel')\n panelElement.focus()\n\n document.addEventListener('keydown', onKeyDown)\n\n return () => {\n setAriaHidden()\n document.removeEventListener('keydown', onKeyDown)\n }\n }, [panelElements])\n}\n\nexport { useFocusedElements }\n","import { useEffect } from 'react'\n\nexport const useTextareaAutosize = (textAreaRef, value) => {\n useEffect(() => {\n if (textAreaRef) {\n textAreaRef.style.height = '0px'\n\n const scrollHeight = textAreaRef.scrollHeight\n\n textAreaRef.style.height = `${scrollHeight}px`\n }\n }, [textAreaRef, value])\n}\n","export const agentStatusHeadline = (availability, agentStatus, agentName) => {\n if (availability === 'UNAVAILABLE') {\n return 'Webchat is not currently available'\n }\n\n if (!agentStatus) {\n return 'Connecting to Floodline'\n }\n\n switch (agentStatus) {\n case 'closed':\n case 'resolved':\n return agentName ? `${agentName} ended the session` : 'Session ended by advisor'\n default:\n return agentName ? `You are speaking with ${agentName}` : 'No advisers currently available'\n }\n}\n","export async function checkAvailability (endpoint) {\n const response = await fetch(endpoint)\n const data = await response.json()\n\n return {\n availability: data.availability || 'UNAVAILABLE'\n }\n}\n","export const classnames = (...classes) => classes.filter(classname => classname && typeof classname === 'string').join(' ')\n","export const historyPushState = () => {\n const url = window.location.href.split('#')[0]\n window.history.pushState({ history: true }, null, `${url}#webchat`)\n}\n\nexport const historyReplaceState = () => {\n if (window.history.state?.history) {\n return window.history.back()\n }\n\n const url = window.location.href.split('#')[0]\n return window.history.replaceState(null, null, url)\n}\n","export const messageNotification = audioUrl => {\n let buffer\n\n const context = new (window.AudioContext || window.webkitAudioContext)()\n\n if (context.state === 'suspended') {\n const events = ['touchstart', 'touchend', 'mousedown', 'wheel', 'keydown', 'click']\n\n const unlock = _e => {\n events.forEach(event => {\n document.body.removeEventListener(event, unlock)\n })\n\n context.resume()\n }\n\n events.forEach(event => {\n document.body.addEventListener(event, unlock, false)\n })\n }\n\n fetch(audioUrl)\n .then(response => response.arrayBuffer())\n .then(data => context.decodeAudioData(data))\n .then(decodedData => {\n buffer = decodedData\n })\n .catch(console.error)\n\n return () => {\n const source = context.createBufferSource()\n source.buffer = buffer\n source.connect(context.destination)\n source.start()\n }\n}\n","import { DateTime } from 'luxon'\n\nexport const transformMessage = message => {\n return {\n id: message.id,\n text: message.messageContent?.text,\n createdAt: new Date(message.createdAt),\n user: message.authorEndUserIdentity?.fullName?.trim() || null,\n assignee: message.authorUser?.firstName || null,\n direction: message.direction\n }\n}\n\nexport const transformMessages = messages => messages.map(message => transformMessage(message))\n\nexport const formatTranscript = messages => {\n const now = DateTime.local()\n now.setZone('Europe/London')\n\n let string = `Floodline webchat transcript, ${now.toFormat('HH:mm:ss a, dd LLLL yyyy')}\\n\\n`\n\n for (const message of messages) {\n const { text, direction, user, assignee, createdAt } = message\n\n const author = direction === 'inbound' ? user : `${assignee} (Floodline adviser)`\n const date = DateTime.fromJSDate(new Date(createdAt)).setZone('Europe/London').toFormat('HH:mm:ss a, dd LLLL yyyy')\n\n string += `[${date}] ${author}: \\n${text}\\n\\n`\n }\n\n string = string.replace(/<a\\b[^>]*>/i, '').replace(/<\\/a>/i, '')\n\n return encodeURIComponent(string)\n}\n","import React, { createContext, useEffect, useReducer, useMemo } from 'react'\nimport { ChatEvent } from '@nice-devone/nice-cxone-chat-web-sdk'\n\nimport { messageNotification } from '../lib/message-notification.js'\n\nimport { initialState, reducer } from './reducer.js'\nimport { CUSTOMER_ID_STORAGE_KEY, THREAD_ID_STORAGE_KEY, SETTINGS_STORAGE_KEY } from './constants.js'\n\nexport const AppContext = createContext(initialState)\n\nexport const AppProvider = ({ sdk, availability, options, children }) => {\n const [state, dispatch] = useReducer(reducer, initialState)\n\n const playSound = messageNotification(options.audioUrl)\n\n /**\n * SDK event handlers\n */\n const onLiveChatRecovered = e => {\n dispatch({ type: 'SET_AGENT', payload: e.detail.data.inboxAssignee })\n dispatch({ type: 'SET_AGENT_STATUS', payload: e.detail.data.contact.status })\n dispatch({ type: 'SET_UNSEEN_COUNT', payload: e.detail.data.contact.customerStatistics.unseenMessagesCount })\n }\n\n const onAssignedAgentChanged = e => {\n dispatch({ type: 'SET_AGENT', payload: e.detail.data.inboxAssignee })\n dispatch({ type: 'SET_AGENT_STATUS', payload: e.detail.data.case.status })\n }\n\n const onAgentTypingStarted = () => {\n dispatch({ type: 'SET_AGENT_TYPING', payload: true })\n }\n\n const onAgentTypingEnded = () => {\n dispatch({ type: 'SET_AGENT_TYPING', payload: false })\n dispatch({ type: 'SET_LIVE_REGION_TEXT' })\n }\n\n const onMessageCreated = e => {\n dispatch({ type: 'SET_MESSAGE', payload: e.detail.data.message })\n dispatch({ type: 'SET_AGENT_STATUS', payload: e.detail.data.case.status })\n dispatch({ type: 'SET_UNSEEN_COUNT', payload: e.detail.data.case.customerStatistics.unseenMessagesCount })\n\n const isAudioOn = JSON.parse(window.localStorage.getItem(SETTINGS_STORAGE_KEY)).audio\n\n if (isAudioOn && e.detail.data.message.direction === 'outbound') {\n playSound()\n }\n }\n\n const onContactStatusChanged = e => {\n dispatch({ type: 'SET_AGENT_STATUS', payload: e.detail.data.case.status })\n }\n\n const onMatchMedia = e => {\n dispatch({ type: 'TOGGLE_IS_MOBILE', payload: e.matches })\n }\n\n const onKeydown = () => {\n dispatch({ type: 'TOGGLE_IS_KEYBOARD', payload: true })\n }\n\n const onPointerdown = () => {\n dispatch({ type: 'TOGGLE_IS_KEYBOARD', payload: false })\n }\n\n useEffect(() => {\n sdk.onChatEvent(ChatEvent.LIVECHAT_RECOVERED, onLiveChatRecovered)\n sdk.onChatEvent(ChatEvent.MESSAGE_CREATED, onMessageCreated)\n sdk.onChatEvent(ChatEvent.AGENT_TYPING_STARTED, onAgentTypingStarted)\n sdk.onChatEvent(ChatEvent.AGENT_TYPING_ENDED, onAgentTypingEnded)\n sdk.onChatEvent(ChatEvent.ASSIGNED_AGENT_CHANGED, onAssignedAgentChanged)\n sdk.onChatEvent(ChatEvent.CONTACT_STATUS_CHANGED, onContactStatusChanged)\n // We need to know if it is a mobile and if it is a keyboard interaction\n window.matchMedia('(max-width: 640px)').addEventListener('change', onMatchMedia)\n window.addEventListener('keydown', onKeydown)\n window.addEventListener('pointerdown', onPointerdown)\n // Tidying up\n return () => {\n window.removeEventListener('change', onMatchMedia)\n window.removeEventListener('keydown', onKeydown)\n window.removeEventListener('pointerdown', onPointerdown)\n }\n }, [sdk])\n\n /**\n * Initialize customerId, threadId and whether the webchat should be open\n */\n useEffect(() => {\n dispatch({ type: 'SET_AVAILABILITY', payload: availability })\n\n setCustomerId(window.localStorage.getItem(CUSTOMER_ID_STORAGE_KEY))\n setThreadId(window.localStorage.getItem(THREAD_ID_STORAGE_KEY))\n setSettings(JSON.parse(window.localStorage.getItem(SETTINGS_STORAGE_KEY)) || state.settings)\n }, [])\n\n /**\n * Set browser history on start chat click\n */\n useEffect(() => {\n if (window.location.hash === '#webchat') {\n setChatVisibility(true)\n }\n\n const onBrowserNavigation = () => {\n if (window.location.hash === '#webchat') {\n setChatVisibility(true)\n } else {\n setChatVisibility(false)\n }\n }\n\n window.addEventListener('popstate', onBrowserNavigation)\n\n return () => {\n window.removeEventListener('popstate', onBrowserNavigation)\n }\n }, [])\n\n /**\n * State update functions\n */\n const setChatVisibility = payload => {\n dispatch({ type: 'SET_CHAT_VISIBILITY', payload })\n }\n\n const setCustomerId = customerId => {\n dispatch({ type: 'SET_CUSTOMER_ID', payload: customerId })\n }\n\n const setThreadId = threadId => {\n dispatch({ type: 'SET_THREAD_ID', payload: threadId })\n }\n\n const setThread = thread => {\n dispatch({ type: 'SET_THREAD', payload: thread })\n }\n\n const setMessages = messages => {\n dispatch({ type: 'SET_MESSAGES', payload: messages })\n }\n\n const setSettings = data => {\n dispatch({ type: 'SET_SETTINGS', payload: data })\n }\n\n const setUnseenCount = unseenCount => {\n dispatch({ type: 'SET_UNSEEN_COUNT', payload: unseenCount })\n }\n\n const setInstigatorId = id => {\n dispatch({ type: 'SET_INSTIGATOR_ID', payload: id })\n }\n\n const setLiveRegionText = text => {\n dispatch({ type: 'SET_LIVE_REGION_TEXT', payload: text })\n }\n\n /**\n * Application-wide state and state functions\n */\n const store = useMemo(() => ({\n ...state,\n sdk,\n setSettings,\n setCustomerId,\n setThreadId,\n setThread,\n setMessages,\n setUnseenCount,\n setChatVisibility,\n setInstigatorId,\n setLiveRegionText,\n onLiveChatRecovered,\n onAssignedAgentChanged,\n onAgentTypingStarted,\n onAgentTypingEnded,\n onMessageCreated,\n onContactStatusChanged\n }))\n\n return (\n <AppContext.Provider value={store}>\n {children}\n </AppContext.Provider>\n )\n}\n","import { transformMessages, transformMessage } from '../lib/transform-messages'\nimport { CUSTOMER_ID_STORAGE_KEY, THREAD_ID_STORAGE_KEY, SETTINGS_STORAGE_KEY } from './constants'\n\nconst setSettings = (state, payload) => {\n if (payload) {\n window.localStorage.setItem(SETTINGS_STORAGE_KEY, JSON.stringify(payload))\n } else {\n window.localStorage.removeItem(SETTINGS_STORAGE_KEY)\n }\n\n return {\n ...state,\n settings: payload\n }\n}\n\nconst setCustomerId = (state, payload) => {\n if (payload) {\n window.localStorage.setItem(CUSTOMER_ID_STORAGE_KEY, payload)\n } else {\n window.localStorage.removeItem(CUSTOMER_ID_STORAGE_KEY)\n }\n\n return {\n ...state,\n customerId: payload\n }\n}\n\nconst setThreadId = (state, payload) => {\n if (payload) {\n window.localStorage.setItem(THREAD_ID_STORAGE_KEY, payload)\n } else {\n window.localStorage.removeItem(THREAD_ID_STORAGE_KEY)\n }\n\n return {\n ...state,\n threadId: payload\n }\n}\n\nconst setChatVisibility = (state, payload) => {\n return {\n ...state,\n isChatOpen: payload\n }\n}\n\nconst setAvailability = (state, payload) => {\n return {\n ...state,\n availability: payload\n }\n}\n\nconst setThread = (state, payload) => {\n return {\n ...state,\n thread: payload\n }\n}\n\nconst setMessages = (state, payload) => {\n return {\n ...state,\n messages: transformMessages(payload).reverse()\n }\n}\n\nconst setMessage = (state, payload) => {\n return {\n ...state,\n message: transformMessage(payload),\n messages: [...state.messages, transformMessage(payload)]\n }\n}\n\nconst setAgent = (state, payload) => {\n return {\n ...state,\n agent: payload\n }\n}\n\nconst setAgentIsTyping = (state, payload) => {\n return {\n ...state,\n isAgentTyping: payload\n }\n}\n\nconst setAgentStatus = (state, payload) => {\n return {\n ...state,\n agentStatus: payload\n }\n}\n\nconst setUnseenCount = (state, payload) => {\n return {\n ...state,\n unseenCount: payload\n }\n}\n\nconst setInstigatorId = (state, payload) => {\n return {\n ...state,\n instigatorId: payload\n }\n}\n\nconst setLiveRegionText = (state, payload) => {\n return {\n ...state,\n liveRegionText: payload\n }\n}\n\nconst toggleIsMobile = (state, payload) => {\n return {\n ...state,\n isMobile: payload\n }\n}\n\nconst toggleIsKeyboard = (state, payload) => {\n return {\n ...state,\n isKeyboard: payload\n }\n}\n\nexport const actionsMap = {\n SET_CHAT_VISIBILITY: setChatVisibility,\n SET_AVAILABILITY: setAvailability,\n SET_SETTINGS: setSettings,\n SET_CUSTOMER_ID: setCustomerId,\n SET_THREAD_ID: setThreadId,\n SET_THREAD: setThread,\n SET_MESSAGE: setMessage,\n SET_MESSAGES: setMessages,\n SET_AGENT: setAgent,\n SET_AGENT_TYPING: setAgentIsTyping,\n SET_AGENT_STATUS: setAgentStatus,\n SET_UNSEEN_COUNT: setUnseenCount,\n SET_INSTIGATOR_ID: setInstigatorId,\n SET_LIVE_REGION_TEXT: setLiveRegionText,\n TOGGLE_IS_MOBILE: toggleIsMobile,\n TOGGLE_IS_KEYBOARD: toggleIsKeyboard\n}\n","export const SETTINGS_STORAGE_KEY = 'webchat_settings'\nexport const CUSTOMER_ID_STORAGE_KEY = 'webchat_customer_id'\nexport const THREAD_ID_STORAGE_KEY = 'webchat_thread_id'\n","import { actionsMap } from './actions-map'\n\nexport const initialState = {\n availability: null,\n customerId: null,\n threadId: null,\n thread: null,\n messages: [],\n unseenCount: 0,\n instigatorId: null,\n agent: null,\n agentStatus: null,\n isAgentTyping: false,\n isChatOpen: false,\n isMobile: window.matchMedia('(max-width: 640px)').matches,\n isKeyboard: false,\n settings: { audio: true, scroll: true }\n}\n\nexport const reducer = (state, action) => {\n const { type, payload } = action\n\n const fn = actionsMap[type]\n\n if (fn) {\n const actionFunction = fn.bind(this, state, payload)\n return actionFunction()\n }\n\n return state\n}\n","import { useContext } from 'react'\n\nimport { AppContext } from './AppProvider.jsx'\n\nexport const useApp = () => useContext(AppContext)\n","export const useChatSdk = sdk => {\n const connect = async () => sdk.authorize()\n\n const fetchCustomerId = async () => {\n const response = await connect()\n return response?.consumerIdentity.idOnExternalPlatform\n }\n\n const fetchThread = async threadId => {\n await connect()\n return sdk.getThread(threadId)\n }\n\n const fetchMessages = async (thread, threadId) => {\n await connect()\n\n const recovered = await thread.recover(threadId)\n\n const allMessages = []\n let fetchedMessages = recovered.messages\n\n while (fetchedMessages.length) {\n fetchedMessages.map(msg => allMessages.push(msg))\n\n try {\n const response = await thread.loadMoreMessages()\n fetchedMessages = response.data.messages\n } catch (err) {\n fetchedMessages = []\n }\n }\n\n return allMessages\n }\n\n return { connect, fetchCustomerId, fetchThread, fetchMessages }\n}\n","module.exports = require(\"@nice-devone/nice-cxone-chat-web-sdk\");","module.exports = require(\"lodash.debounce\");","module.exports = require(\"luxon\");","module.exports = require(\"react\");","module.exports = require(\"react-dom\");","module.exports = require(\"react-dom/client\");","module.exports = require(\"uuid\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import React from 'react'\nimport { createRoot } from 'react-dom/client'\nimport { ChatSdk } from '@nice-devone/nice-cxone-chat-web-sdk'\nimport { Availability } from './components/availability/availability.jsx'\nimport { checkAvailability } from './lib/check-availability'\nimport { AppProvider } from './store/AppProvider.jsx'\nimport { CUSTOMER_ID_STORAGE_KEY } from './store/constants.js'\n\nexport async function init (container, options) {\n const sdk = new ChatSdk({\n brandId: options.brandId,\n channelId: options.channelId,\n customerId: window.localStorage.getItem(CUSTOMER_ID_STORAGE_KEY) || '',\n environment: options.environment\n })\n\n const root = createRoot(container)\n let availability\n try {\n const result = await checkAvailability(options.availabilityEndpoint)\n availability = result.availability\n } catch (e) {\n availability = 'UNAVAILABLE'\n }\n root.render(\n <AppProvider sdk={sdk} availability={availability} options={options}>\n <Availability />\n </AppProvider>\n )\n}\n"],"names":["React","useEffect","useRef","classnames","Panel","SkipLink","useApp","historyPushState","historyReplaceState","LiveRegion","Availability","availability","isChatOpen","setChatVisibility","unseenCount","threadId","setUnseenCount","setInstigatorId","setLiveRegionText","buttonRef","showUnseenCount","messageText","onClick","e","preventDefault","target","id","onKeyDown","event","key","onKeyUp","onScroll","rect","current","parentElement","getBoundingClientRect","isBelowFold","top","window","innerHeight","document","documentElement","clientHeight","isFixed","classList","toggle","body","addEventListener","removeEventListener","createElement","Fragment","className","ref","href","draggable","role","useState","PanelHeader","PanelFooter","Message","useTextareaAutosize","formatTranscript","agentStatusHeadline","Chat","onEndChatScreen","onSettingsScreen","thread","messages","agent","agentStatus","isAgentTyping","settings","isKeyboard","userMessage","setUserMessage","focusVisibleWithin","setFocusVisibleWithin","messageRef","scroll","length","chatBody","querySelector","scrollTop","scrollHeight","label","remove","add","onChange","value","agentName","nickname","firstName","connectionHeadlineText","lastAgentMessage","direction","text","sendMessage","message","trim","sendTextMessage","err","console","log","handleSubmit","saveChat","transcript","saveChatLink","setAttribute","handleKeyPress","shiftKey","tabIndex","map","msg","index","previousMessage","width","height","x","y","viewBox","stroke","cx","cy","r","fill","noValidate","onSubmit","htmlFor","rows","name","onFocus","onBlur","type","download","ErrorSummary","errors","errs","Object","keys","goToInput","getAttribute","focus","useCallback","debounce","DEBOUNCE_MILLISECONDS","liveRegionText","textA","setTextA","textB","setTextB","isSessionEnded","clearText","setText","outbound","messageOwnerSameAsPrevious","assignee","children","isMobile","onClose","lastMessageSeen","BackButtonComponent","focusable","d","CloseButtonComponent","MinimiseButtonComponent","isMobileAndHasHistory","history","state","isMobileAndNoHistory","RightButtonComponent","createPortal","PreChat","RequestChat","Unavailable","EndChat","Settings","Feedback","useChatSdk","useFocusedElements","sdk","instigatorId","setThread","setThreadId","setMessages","fetchThread","fetchMessages","screen","setScreen","onEscapeKey","getElementById","getElementsByTagName","recover","fetchedThread","fetchedMessages","handleScreenChange","newScreen","goToPreChatScreen","goToRequestChatScreen","goToChatScreen","goToEndChatScreen","goToFeedbackScreen","goToSettingsScreen","ScreenComponent","onContinue","onPreChatScreen","onChatScreen","onEndChatConfirm","onCancel","Component","setCustomerId","confirmEndChat","localStorage","setItem","endChat","setTimeout","feedbackSend","tmpThreadId","getItem","location","removeItem","feedbackClose","rel","uuid","QUESTION_MAX_LENGTH","fetchCustomerId","setErrors","questionLength","setQuestionLength","isButtonDisabled","setButtonDisabled","nameRef","questionRef","isQuestionLengthValid","questionLengthRemaining","questionLengthExceeded","questionHint","onQuestionChange","buttonLabel","onRequestChat","question","v4","customerId","getCustomer","setName","startChat","setCustomField","style","color","setSettings","optionAudio","setOptionAudio","audio","optionScroll","setOptionScroll","onSave","defaultChecked","targetContainer","hash","ariaHidden","dataWcInert","setAriaHidden","isInert","node","hasAttribute","removeAttribute","getFocusableElements","selectors","elements","querySelectorAll","join","Array","from","filter","closest","panelElements","setPanelElements","webchatPanelElement","activeElement","panelElement","textAreaRef","checkAvailability","endpoint","response","fetch","data","json","classes","classname","url","split","pushState","back","replaceState","messageNotification","audioUrl","buffer","context","AudioContext","webkitAudioContext","events","unlock","_e","forEach","resume","then","arrayBuffer","decodeAudioData","decodedData","catch","error","source","createBufferSource","connect","destination","start","DateTime","transformMessage","messageContent","createdAt","Date","user","authorEndUserIdentity","fullName","authorUser","transformMessages","now","local","setZone","string","toFormat","author","date","fromJSDate","replace","encodeURIComponent","createContext","useReducer","useMemo","ChatEvent","initialState","reducer","CUSTOMER_ID_STORAGE_KEY","THREAD_ID_STORAGE_KEY","SETTINGS_STORAGE_KEY","AppContext","AppProvider","options","dispatch","playSound","onLiveChatRecovered","payload","detail","inboxAssignee","contact","status","customerStatistics","unseenMessagesCount","onAssignedAgentChanged","case","onAgentTypingStarted","onAgentTypingEnded","onMessageCreated","isAudioOn","JSON","parse","onContactStatusChanged","onMatchMedia","matches","onKeydown","onPointerdown","onChatEvent","LIVECHAT_RECOVERED","MESSAGE_CREATED","AGENT_TYPING_STARTED","AGENT_TYPING_ENDED","ASSIGNED_AGENT_CHANGED","CONTACT_STATUS_CHANGED","matchMedia","onBrowserNavigation","store","Provider","stringify","setAvailability","reverse","setMessage","setAgent","setAgentIsTyping","setAgentStatus","toggleIsMobile","toggleIsKeyboard","actionsMap","SET_CHAT_VISIBILITY","SET_AVAILABILITY","SET_SETTINGS","SET_CUSTOMER_ID","SET_THREAD_ID","SET_THREAD","SET_MESSAGE","SET_MESSAGES","SET_AGENT","SET_AGENT_TYPING","SET_AGENT_STATUS","SET_UNSEEN_COUNT","SET_INSTIGATOR_ID","SET_LIVE_REGION_TEXT","TOGGLE_IS_MOBILE","TOGGLE_IS_KEYBOARD","action","fn","actionFunction","bind","useContext","authorize","consumerIdentity","idOnExternalPlatform","getThread","recovered","allMessages","push","loadMoreMessages","createRoot","ChatSdk","init","container","brandId","channelId","environment","root","result","availabilityEndpoint","render"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"client.js","mappings":";;;;;;;;;;;;;;;;;;;;;;AAAgD;AAEC;AACP;AACC;AAEA;AACiC;AAC7B;AAExC,SAASU,YAAYA,CAAA,EAAI;EAC9B,MAAM;IAAEC,YAAY;IAAEC,UAAU;IAAEC,iBAAiB;IAAEC,WAAW;IAAEC,QAAQ;IAAEC,cAAc;IAAEC,eAAe;IAAEC;EAAkB,CAAC,GAAGZ,qDAAM,CAAC,CAAC;EAE3I,MAAMa,SAAS,GAAGjB,6CAAM,CAAC,CAAC;EAE1B,MAAMkB,eAAe,GAAGN,WAAW,GAAG,CAAC,IAAI,CAACF,UAAU;EAEtD,MAAMS,WAAW,GAAGP,WAAW,GAAG,CAAC,GAAG,cAAc,GAAG,aAAa;EAEpE,MAAMQ,OAAO,GAAGC,CAAC,IAAI;IACnBA,CAAC,CAACC,cAAc,CAAC,CAAC;IAClBR,cAAc,CAAC,CAAC,CAAC;IACjBH,iBAAiB,CAAC,CAACD,UAAU,CAAC;IAC9BK,eAAe,CAACM,CAAC,CAACE,MAAM,CAACC,EAAE,CAAC;IAE5B,IAAI,CAACd,UAAU,EAAE;MACfL,iEAAgB,CAAC,CAAC;IACpB,CAAC,MAAM;MACLC,oEAAmB,CAAC,CAAC;IACvB;EACF,CAAC;EAED,MAAMmB,SAAS,GAAGC,KAAK,IAAI;IACzB,IAAIA,KAAK,CAACC,GAAG,KAAK,GAAG,EAAE;MACrBD,KAAK,CAACJ,cAAc,CAAC,CAAC;IACxB;EACF,CAAC;EAED,MAAMM,OAAO,GAAGF,KAAK,IAAI;IACvB,IAAIA,KAAK,CAACC,GAAG,KAAK,GAAG,EAAE;MACrBb,cAAc,CAAC,CAAC,CAAC;MACjBH,iBAAiB,CAAC,CAACD,UAAU,CAAC;IAChC;EACF,CAAC;EAEDX,gDAAS,CAAC,MAAM;IACd,IAAImB,eAAe,EAAE;MACnBF,iBAAiB,CAAE,uBAAsBJ,WAAY,IAAGO,WAAY,EAAC,CAAC;IACxE;IAEA,OAAO,MAAM;MACXH,iBAAiB,CAAC,CAAC;IACrB,CAAC;EACH,CAAC,EAAE,CAACJ,WAAW,EAAEF,UAAU,CAAC,CAAC;EAE7BX,gDAAS,CAAC,MAAM;IACd,MAAM8B,QAAQ,GAAGA,CAAA,KAAM;MACrB,IAAI,CAAChB,QAAQ,EAAE;QACb;MACF;MAEA,IAAIJ,YAAY,KAAK,WAAW,EAAE;QAChC;MACF;MAEA,MAAMqB,IAAI,GAAGb,SAAS,CAACc,OAAO,CAACC,aAAa,CAACC,qBAAqB,CAAC,CAAC;MAEpE,MAAMC,WAAW,GAAGJ,IAAI,CAACK,GAAG,GAAG,EAAE,IAAIC,MAAM,CAACC,WAAW,IAAIC,QAAQ,CAACC,eAAe,CAACC,YAAY,CAAC;MACjG,MAAMC,OAAO,GAAG,CAAC/B,UAAU,IAAIwB,WAAW;MAE1CI,QAAQ,CAACC,eAAe,CAACG,SAAS,CAACC,MAAM,CAAC,qBAAqB,EAAEF,OAAO,CAAC;MACzEH,QAAQ,CAACM,IAAI,CAACF,SAAS,CAACC,MAAM,CAAC,qBAAqB,EAAEF,OAAO,CAAC;MAC9DxB,SAAS,CAACc,OAAO,CAACW,SAAS,CAACC,MAAM,CAAC,wBAAwB,EAAEF,OAAO,CAAC;IACvE,CAAC;IAEDH,QAAQ,CAACO,gBAAgB,CAAC,QAAQ,EAAEhB,QAAQ,CAAC;IAC7CA,QAAQ,CAAC,CAAC;IAEV,OAAO,MAAM;MACXS,QAAQ,CAACQ,mBAAmB,CAAC,QAAQ,EAAEjB,QAAQ,CAAC;IAClD,CAAC;EACH,CAAC,EAAE,CAAChB,QAAQ,EAAEH,UAAU,EAAED,YAAY,CAAC,CAAC;EAExC,QAAQA,YAAY;IAClB,KAAK,WAAW;MACd,oBACEX,0DAAA,CAAAA,uDAAA,qBACEA,0DAAA;QACEmD,SAAS,EAAEhD,2DAAU,CAAC,iBAAiB,EAAES,UAAU,IAAI,SAAS,CAAE;QAClEwC,GAAG,EAAEjC;MAAU,gBAEfnB,0DAAA;QAAKmD,SAAS,EAAC;MAAwB,gBACrCnD,0DAAA;QACE0B,EAAE,EAAC,yBAAyB;QAC5ByB,SAAS,EAAC,uBAAuB;QACjCE,IAAI,EAAC,UAAU;QACfC,SAAS,EAAC,OAAO;QACjBhC,OAAO,EAAEA,OAAQ;QACjBQ,OAAO,EAAEA,OAAQ;QACjBH,SAAS,EAAEA,SAAU;QACrB4B,IAAI,EAAC,QAAQ;QACb,eAAY;MAAc,GAEzB,CAACxC,QAAQ,gBAAGf,0DAAA,CAAAA,uDAAA,QAAE,YAAY,CAAC,gBAAGA,0DAAA,CAAAA,uDAAA,QAAE,WAAW,CAAC,EAC5CoB,eAAe,gBAEZpB,0DAAA;QAAMmD,SAAS,EAAC;MAAyB,GACtCrC,WAAW,eACZd,0DAAA;QAAMmD,SAAS,EAAC;MAAuB,GAAC,GAAC,EAAC9B,WAAkB,CACxD,CAAC,GAEP,IACH,CACA,CACF,CAAC,EACL,CAACT,UAAU,gBAAGZ,0DAAA,CAACS,wDAAU,MAAE,CAAC,gBAAGT,0DAAA,CAACI,mDAAK,MAAE,CAAC,eACzCJ,0DAAA,CAACK,oDAAQ,MAAE,CACX,CAAC;IAEP,KAAK,UAAU;IACf,KAAK,aAAa;MAChB,oBACEL,0DAAA;QAAGmD,SAAS,EAAC;MAAY,GAAC,wDAAyD,CAAC;IAExF;MACE,oBACEnD,0DAAA;QAAGmD,SAAS,EAAC;MAAY,GAAC,uBAAwB,CAAC;EAEzD;AACF;;;;;;;;;;;;;;;;;;;;;;;ACjI0D;AAEH;AACA;AACP;AAEF;AAC0B;AACN;AACM;AAEjE,SAASY,IAAIA,CAAE;EAAEC,eAAe;EAAEC;AAAiB,CAAC,EAAE;EAC3D,MAAM;IAAEtD,YAAY;IAAEuD,MAAM;IAAEC,QAAQ;IAAEC,KAAK;IAAEC,WAAW;IAAEC,aAAa;IAAE1D,UAAU;IAAE2D,QAAQ;IAAEC,UAAU;IAAEtD;EAAkB,CAAC,GAAGZ,wDAAM,CAAC,CAAC;EAE3I,MAAM,CAACmE,WAAW,EAAEC,cAAc,CAAC,GAAGlB,+CAAQ,CAAC,EAAE,CAAC;EAClD,MAAM,CAACmB,kBAAkB,EAAEC,qBAAqB,CAAC,GAAGpB,+CAAQ,CAAC,KAAK,CAAC;EAEnE,MAAMqB,UAAU,GAAG3E,6CAAM,CAAC,CAAC;EAE3B0D,kFAAmB,CAACiB,UAAU,CAAC5C,OAAO,EAAEwC,WAAW,CAAC;EAEpDxE,gDAAS,CAAC,MAAM;IACd,IAAIsE,QAAQ,CAACO,MAAM,IAAIX,QAAQ,CAACY,MAAM,KAAK,CAAC,EAAE;MAC5C,MAAMC,QAAQ,GAAGxC,QAAQ,CAACyC,aAAa,CAAC,UAAU,CAAC;MACnDD,QAAQ,CAACE,SAAS,GAAGF,QAAQ,CAACG,YAAY;IAC5C;EACF,CAAC,EAAE,CAAChB,QAAQ,EAAEG,aAAa,CAAC,CAAC;EAE7BrE,gDAAS,CAAC,MAAM;IACd,MAAMmF,KAAK,GAAG5C,QAAQ,CAACyC,aAAa,CAAC,iBAAiB,CAAC;IAEvD,IAAIR,WAAW,CAACM,MAAM,KAAK,CAAC,EAAE;MAC5BK,KAAK,CAACxC,SAAS,CAACyC,MAAM,CAAC,uBAAuB,CAAC;IACjD,CAAC,MAAM;MACLD,KAAK,CAACxC,SAAS,CAAC0C,GAAG,CAAC,uBAAuB,CAAC;IAC9C;EACF,CAAC,EAAE,CAACb,WAAW,CAAC,CAAC;EAEjB,MAAMc,QAAQ,GAAGhE,CAAC,IAAI;IACpBmD,cAAc,CAACnD,CAAC,CAACE,MAAM,EAAE+D,KAAK,CAAC;EACjC,CAAC;EAED,MAAMC,SAAS,GAAGrB,KAAK,EAAEsB,QAAQ,IAAItB,KAAK,EAAEuB,SAAS;EAErD,MAAMC,sBAAsB,GAAG9B,kFAAmB,CAACnD,YAAY,EAAE0D,WAAW,EAAEoB,SAAS,CAAC;EAExFxF,gDAAS,CAAC,MAAM;IACd,IAAI2F,sBAAsB,EAAE;MAC1B1E,iBAAiB,CAAE,uBAAsB0E,sBAAuB,EAAC,CAAC;IACpE;IAEA,OAAO,MAAM;MACX1E,iBAAiB,CAAC,CAAC;IACrB,CAAC;EACH,CAAC,EAAE,CAAC0E,sBAAsB,CAAC,CAAC;EAE5B3F,gDAAS,CAAC,MAAM;IACd,IAAIqE,aAAa,IAAI1D,UAAU,EAAE;MAC/BM,iBAAiB,CAAE,GAAEuE,SAAU,eAAc,CAAC;IAChD;IAEA,OAAO,MAAM;MACXvE,iBAAiB,CAAC,CAAC;IACrB,CAAC;EACH,CAAC,EAAE,CAACoD,aAAa,EAAE1D,UAAU,CAAC,CAAC;EAE/BX,gDAAS,CAAC,MAAM;IACd,MAAM4F,gBAAgB,GAAG1B,QAAQ,CAACA,QAAQ,CAACY,MAAM,GAAG,CAAC,CAAC;IAEtD,IAAIV,WAAW,KAAK,QAAQ,IAAIwB,gBAAgB,EAAEC,SAAS,KAAK,UAAU,EAAE;MAC1E5E,iBAAiB,CAAE,GAAEuE,SAAU,UAASI,gBAAgB,CAACE,IAAK,EAAC,CAAC;IAClE;IAEA,OAAO,MAAM;MACX7E,iBAAiB,CAAC,CAAC;IACrB,CAAC;EACH,CAAC,EAAE,CAACiD,QAAQ,CAAC,CAAC;EAEd,MAAM6B,WAAW,GAAGA,CAAA,KAAM;IACxB,IAAInB,UAAU,CAAC5C,OAAO,CAACuD,KAAK,CAACT,MAAM,KAAK,CAAC,IAAIV,WAAW,KAAK,QAAQ,EAAE;MACrE;IACF;IAEA,IAAI;MACF,MAAM4B,OAAO,GAAGpB,UAAU,CAAC5C,OAAO,CAACuD,KAAK,CAACU,IAAI,CAAC,CAAC;MAC/ChC,MAAM,CAACiC,eAAe,CAACF,OAAO,CAAC;MAC/B/E,iBAAiB,CAAE,aAAY+E,OAAQ,EAAC,CAAC;IAC3C,CAAC,CAAC,OAAOG,GAAG,EAAE;MACZC,OAAO,CAACC,GAAG,CAAC,0BAA0B,EAAEF,GAAG,CAAC;IAC9C;IAEA1B,cAAc,CAAC,EAAE,CAAC;EACpB,CAAC;EAED,MAAM6B,YAAY,GAAGhF,CAAC,IAAI;IACxBA,CAAC,CAACC,cAAc,CAAC,CAAC;IAClBwE,WAAW,CAAC,CAAC;EACf,CAAC;EAED,MAAMQ,QAAQ,GAAGA,CAAA,KAAM;IACrB,MAAMC,UAAU,GAAG5C,4EAAgB,CAACM,QAAQ,CAAC;IAE7C,MAAMuC,YAAY,GAAGlE,QAAQ,CAACyC,aAAa,CAAC,sBAAsB,CAAC;IAEnEyB,YAAY,CAACC,YAAY,CAAC,MAAM,EAAG,iCAAgCF,UAAW,EAAC,CAAC;EAClF,CAAC;EAED,MAAMG,cAAc,GAAGrF,CAAC,IAAI;IAC1B,IAAIA,CAAC,CAACM,GAAG,KAAK,OAAO,IAAI,CAACN,CAAC,CAACsF,QAAQ,EAAE;MACpC,QAAQtF,CAAC,CAACE,MAAM,CAACC,EAAE;QACjB,KAAK,WAAW;UACdH,CAAC,CAACC,cAAc,CAAC,CAAC;UAClBwE,WAAW,CAAC,CAAC;UACb;QACF,KAAK,UAAU;UACbhC,eAAe,CAACzC,CAAC,CAAC;UAClB;QACF,KAAK,aAAa;UAChB0C,gBAAgB,CAAC1C,CAAC,CAAC;UACnB;QACF,KAAK,qBAAqB;UACxBiF,QAAQ,CAAC,CAAC;UACV;QACF;UACE;MACJ;IACF;IACA,IAAIjF,CAAC,CAACM,GAAG,KAAK,GAAG,EAAE;MACjB,IAAIN,CAAC,CAACE,MAAM,CAACC,EAAE,KAAK,UAAU,EAAE;QAC9BsC,eAAe,CAACzC,CAAC,CAAC;MACpB;MACA,IAAIA,CAAC,CAACE,MAAM,CAACC,EAAE,KAAK,aAAa,EAAE;QACjCuC,gBAAgB,CAAC1C,CAAC,CAAC;MACrB;IACF;EACF,CAAC;EAED,oBACEvB,0DAAA,CAAAA,uDAAA,qBACEA,0DAAA,CAACyD,gEAAW,MAAE,CAAC,eAEfzD,0DAAA;IAAKmD,SAAS,EAAC;EAAW,gBACxBnD,0DAAA;IAAGmD,SAAS,EAAC;EAAyB,GAAEyC,sBAA0B,CAAC,eACnE5F,0DAAA;IACE0B,EAAE,EAAC,UAAU;IACbyB,SAAS,EAAC,iBAAiB;IAC3BE,IAAI,EAAC,GAAG;IACR,eAAY,cAAc;IAC1BE,IAAI,EAAC,QAAQ;IACbjC,OAAO,EAAE0C,eAAgB;IACzBrC,SAAS,EAAEiF;EAAe,GAC3B,UAEE,CACA,CAAC,eAEN5G,0DAAA;IAAKmD,SAAS,EAAC,SAAS;IAAC2D,QAAQ,EAAC;EAAG,gBACnC9G,0DAAA;IAAImD,SAAS,EAAC;EAAS,GACpBgB,QAAQ,CAACY,MAAM,GACZZ,QAAQ,CAAC4C,GAAG,CAAC,CAACC,GAAG,EAAEC,KAAK,kBAAKjH,0DAAA,CAAC2D,yDAAO;IAAC9B,GAAG,EAAEmF,GAAG,CAACtF,EAAG;IAACuE,OAAO,EAAEe,GAAI;IAACE,eAAe,EAAE/C,QAAQ,CAAC8C,KAAK,GAAG,CAAC;EAAE,CAAE,CAAC,CAAC,GAC1G,IAAI,EACP3C,aAAa,gBAEVtE,0DAAA;IAAImD,SAAS,EAAC;EAA2B,gBACvCnD,0DAAA;IAAKmD,SAAS,EAAC;EAAe,GAAEsC,SAAS,EAAC,YAAe,CAAC,eAC1DzF,0DAAA;IAAKmD,SAAS,EAAC;EAAwB,gBACrCnD,0DAAA;IAAKmH,KAAK,EAAC,IAAI;IAACC,MAAM,EAAC,IAAI;IAACC,CAAC,EAAC,KAAK;IAACC,CAAC,EAAC,KAAK;IAACC,OAAO,EAAC;EAAW,gBAC7DvH,0DAAA;IAAQwH,MAAM,EAAC,MAAM;IAACC,EAAE,EAAC,GAAG;IAACC,EAAE,EAAC,GAAG;IAACC,CAAC,EAAC,GAAG;IAACC,IAAI,EAAC;EAAc,CAAE,CAAC,eAChE5H,0DAAA;IAAQwH,MAAM,EAAC,MAAM;IAACC,EAAE,EAAC,IAAI;IAACC,EAAE,EAAC,GAAG;IAACC,CAAC,EAAC,GAAG;IAACC,IAAI,EAAC;EAAc,CAAE,CAAC,eACjE5H,0DAAA;IAAQwH,MAAM,EAAC,MAAM;IAACC,EAAE,EAAC,IAAI;IAACC,EAAE,EAAC,GAAG;IAACC,CAAC,EAAC,GAAG;IAACC,IAAI,EAAC;EAAc,CAAE,CAC7D,CACF,CACH,CAAC,GAEL,IACF,CACD,CAAC,eAEN5H,0DAAA,CAAC0D,gEAAW,qBACV1D,0DAAA;IAAMmD,SAAS,EAAG,UAASwB,kBAAkB,GAAG,kBAAkB,GAAG,EAAG,EAAE;IAACkD,UAAU;IAACC,QAAQ,EAAEvB;EAAa,gBAC3GvG,0DAAA;IAAOmD,SAAS,EAAC,4BAA4B;IAAC4E,OAAO,EAAC;EAAkB,GAAC,cAC3D,eAAA/H,0DAAA;IAAMmD,SAAS,EAAC;EAAuB,GAAC,sBAA0B,CACzE,CAAC,eAERnD,0DAAA;IACEoD,GAAG,EAAEyB,UAAW;IAChBmD,IAAI,EAAC,GAAG;IACR,iBAAc,MAAM;IACpB7E,SAAS,EAAC,mBAAmB;IAC7BzB,EAAE,EAAC,WAAW;IACduG,IAAI,EAAC,SAAS;IACd1C,QAAQ,EAAEA,QAAS;IACnB5D,SAAS,EAAEiF,cAAe;IAC1BsB,OAAO,EAAEA,CAAA,KAAM;MAAEtD,qBAAqB,CAACJ,UAAU,CAAC;IAAC,CAAE;IACrD2D,MAAM,EAAEA,CAAA,KAAM;MAAEvD,qBAAqB,CAAC,KAAK,CAAC;IAAC,CAAE;IAC/CY,KAAK,EAAEf;EAAY,CACpB,CAAC,eAEFzE,0DAAA;IACEoI,IAAI,EAAC,QAAQ;IACbjF,SAAS,EAAC,8BAA8B;IACxCqC,KAAK,EAAC,MAAM;IACZ,6BAA0B;EAAM,CACjC,CACG,CAAC,eAEPxF,0DAAA;IAAKmD,SAAS,EAAC;EAAqB,gBAClCnD,0DAAA;IACEqD,IAAI,EAAC,GAAG;IACR3B,EAAE,EAAC,aAAa;IAChByB,SAAS,EAAC,0BAA0B;IACpC,eAAY,cAAc;IAC1BxB,SAAS,EAAEiF,cAAe;IAC1BtF,OAAO,EAAE2C;EAAiB,GAC3B,UAEE,CAAC,eACJjE,0DAAA;IACEqD,IAAI,EAAC,GAAG;IACR3B,EAAE,EAAC,qBAAqB;IACxByB,SAAS,EAAC,0BAA0B;IACpC,eAAY,cAAc;IAC1BkF,QAAQ,EAAC,kCAAkC;IAC3C1G,SAAS,EAAEiF,cAAe;IAC1BtF,OAAO,EAAEkF;EAAS,GACnB,WAEE,CACA,CACM,CACb,CAAC;AAEP;;;;;;;;;;;;;;;;ACxOyB;AAElB,MAAM8B,YAAY,GAAGA,CAAC;EAAEC;AAAO,CAAC,KAAK;EAC1C,MAAMC,IAAI,GAAGC,MAAM,CAACC,IAAI,CAACH,MAAM,CAAC;EAEhC,MAAMI,SAAS,GAAGpH,CAAC,IAAI;IACrBA,CAAC,CAACC,cAAc,CAAC,CAAC;IAClB,MAAMK,GAAG,GAAGN,CAAC,CAACE,MAAM,CAACmH,YAAY,CAAC,UAAU,CAAC;IAC7CpG,QAAQ,CAACyC,aAAa,CAAE,OAAMpD,GAAI,EAAC,CAAC,CAACgH,KAAK,CAAC,CAAC;EAC9C,CAAC;EAED,IAAIL,IAAI,CAACzD,MAAM,KAAK,CAAC,EAAE;IACrB,OAAO,IAAI;EACb;EAEA,oBACE/E,0DAAA;IAAKmD,SAAS,EAAC,oDAAoD;IAAC,eAAY,qBAAqB;IAAC2D,QAAQ,EAAC;EAAI,gBACjH9G,0DAAA;IAAKuD,IAAI,EAAC;EAAO,gBACfvD,0DAAA;IAAI0B,EAAE,EAAC,UAAU;IAACyB,SAAS,EAAC;EAAoD,GAAC,oBAE7E,CAAC,eACLnD,0DAAA;IAAKmD,SAAS,EAAC;EAA2B,gBACxCnD,0DAAA;IAAImD,SAAS,EAAC;EAA6D,GACxEqF,IAAI,CAACzB,GAAG,CAAClF,GAAG,iBACX7B,0DAAA;IAAI6B,GAAG,EAAEA;EAAI,gBACX7B,0DAAA;IAAGqD,IAAI,EAAC,GAAG;IAAC,YAAUxB,GAAI;IAACP,OAAO,EAAEqH;EAAU,GAAEJ,MAAM,CAAC1G,GAAG,CAAK,CAC7D,CACL,CACC,CACD,CACF,CACF,CAAC;AAEV,CAAC;;;;;;;;;;;;;;;;;;;ACjC8D;AACzB;AACE;AAExC,MAAMmH,qBAAqB,GAAG,IAAI;AAE3B,MAAMvI,UAAU,GAAGA,CAAA,KAAM;EAC9B,MAAM;IAAE4D,WAAW;IAAE4E,cAAc;IAAE/H;EAAkB,CAAC,GAAGZ,qDAAM,CAAC,CAAC;EAEnE,MAAM,CAAC4I,KAAK,EAAEC,QAAQ,CAAC,GAAG3F,+CAAQ,CAAC,CAAC;EACpC,MAAM,CAAC4F,KAAK,EAAEC,QAAQ,CAAC,GAAG7F,+CAAQ,CAAC,CAAC;EAEpC,MAAM8F,cAAc,GAAGjF,WAAW,KAAK,QAAQ,IAAIA,WAAW,KAAK,IAAI;EAEvE,MAAMkF,SAAS,GAAGA,CAAA,KAAM;IACtBJ,QAAQ,CAAC,CAAC;IACVE,QAAQ,CAAC,CAAC;EACZ,CAAC;EAED,MAAMG,OAAO,GAAGV,kDAAW,CAACC,sDAAQ,CAAChD,IAAI,IAAI;IAC3C,IAAImD,KAAK,EAAE;MACTG,QAAQ,CAACtD,IAAI,CAAC;IAChB,CAAC,MAAM;MACLoD,QAAQ,CAACpD,IAAI,CAAC;IAChB;EACF,CAAC,EAAEiD,qBAAqB,CAAC,EAAE,CAACE,KAAK,EAAEE,KAAK,CAAC,CAAC;EAE1CnJ,gDAAS,CAAC,MAAM;IACd,IAAIgJ,cAAc,EAAE;MAClBM,SAAS,CAAC,CAAC;MACXC,OAAO,CAACP,cAAc,CAAC;IACzB;IAEA,IAAIK,cAAc,EAAE;MAClBC,SAAS,CAAC,CAAC;MACXrI,iBAAiB,CAAC,CAAC;IACrB;IAEA,OAAO,MAAM;MACXqI,SAAS,CAAC,CAAC;MACXrI,iBAAiB,CAAC,CAAC;IACrB,CAAC;EACH,CAAC,EAAE,CAAC+H,cAAc,CAAC,CAAC;EAEpB,oBACEjJ,0DAAA,CAAAA,uDAAA,qBACEA,0DAAA;IAAKmD,SAAS,EAAC,SAAS;IAACI,IAAI,EAAC,QAAQ;IAAC,eAAY;EAAM,GACtD2F,KACE,CAAC,eACNlJ,0DAAA;IAAKmD,SAAS,EAAC,SAAS;IAACI,IAAI,EAAC,QAAQ;IAAC,eAAY;EAAM,GACtD6F,KACE,CACL,CAAC;AAEP,CAAC;;;;;;;;;;;;;;;;;ACtDwB;AACwB;AAE1C,SAASzF,OAAOA,CAAE;EAAEsC,OAAO;EAAEiB;AAAgB,CAAC,EAAE;EACrD,MAAMuC,QAAQ,GAAGxD,OAAO,CAACH,SAAS,KAAK,UAAU;EAEjD,MAAM4D,0BAA0B,GAAGzD,OAAO,EAAEH,SAAS,KAAKoB,eAAe,EAAEpB,SAAS;EAEpF,oBACE9F,0DAAA;IAAImD,SAAS,EAAEhD,2DAAU,CAAC,kBAAkB,EAAEsJ,QAAQ,GAAG,UAAU,GAAG,SAAS;EAAE,gBAC/EzJ,0DAAA;IAAKmD,SAAS,EAAC;EAAe,GAC3BuG,0BAA0B,GAAG,IAAI,gBAAG1J,0DAAA,eAAOyJ,QAAQ,GAAGxD,OAAO,CAAC0D,QAAQ,GAAG,KAAY,CAAC,eACvF3J,0DAAA;IAAMmD,SAAS,EAAC;EAAuB,GAAC,GAAO,CAC5C,CAAC,eACNnD,0DAAA;IAAKmD,SAAS,EAAEhD,2DAAU,CAAC,eAAe,EAAEsJ,QAAQ,GAAG,UAAU,GAAG,SAAS;EAAE,GAC5ExD,OAAO,CAACF,IACN,CACH,CAAC;AAET;;;;;;;;;;;;;;;;ACnByB;AAElB,SAASrC,WAAWA,CAAE;EAAEkG;AAAS,CAAC,EAAE;EACzC,oBACE5J,0DAAA;IAAKmD,SAAS,EAAC;EAAW,GACvByG,QACE,CAAC;AAEV;;;;;;;;;;;;;;;;;;ACRyB;AACqB;AACY;AAEnD,SAASnG,WAAWA,CAAA,EAAI;EAC7B,MAAM;IAAES,MAAM;IAAEnD,QAAQ;IAAEF,iBAAiB;IAAEG,cAAc;IAAE6I;EAAS,CAAC,GAAGvJ,wDAAM,CAAC,CAAC;EAElF,MAAMwJ,OAAO,GAAGvI,CAAC,IAAI;IACnBA,CAAC,CAACC,cAAc,CAAC,CAAC;IAClBX,iBAAiB,CAAC,KAAK,CAAC;IACxBL,oEAAmB,CAAC,CAAC;IAErB,IAAIO,QAAQ,EAAE;MACZmD,MAAM,EAAE6F,eAAe,CAAC,CAAC;MACzB/I,cAAc,CAAC,CAAC,CAAC;IACnB;EACF,CAAC;EAED,MAAMgJ,mBAAmB,gBACvBhK,0DAAA;IAAQmD,SAAS,EAAC,iBAAiB;IAAC,cAAW,mBAAmB;IAAC7B,OAAO,EAAEwI;EAAQ,gBAClF9J,0DAAA;IAAK,eAAY,MAAM;IAACiK,SAAS,EAAC,OAAO;IAAC9C,KAAK,EAAC,IAAI;IAACC,MAAM,EAAC,IAAI;IAACG,OAAO,EAAC;EAAW,gBAClFvH,0DAAA;IAAMkK,CAAC,EAAC,mGAAmG;IAACtC,IAAI,EAAC;EAAc,CAAE,CAC9H,CACC,CACT;EAED,MAAMuC,oBAAoB,gBACxBnK,0DAAA;IAAQmD,SAAS,EAAC,kBAAkB;IAAC,cAAW,mBAAmB;IAAC7B,OAAO,EAAEwI;EAAQ,gBACnF9J,0DAAA;IAAK,eAAY,MAAM;IAACiK,SAAS,EAAC,OAAO;IAAC9C,KAAK,EAAC,IAAI;IAACC,MAAM,EAAC,IAAI;IAACG,OAAO,EAAC;EAAW,gBAClFvH,0DAAA;IAAMkK,CAAC,EAAC,gGAAgG;IAACtC,IAAI,EAAC;EAAc,CAAE,CAC3H,CACC,CACT;EAED,MAAMwC,uBAAuB,gBAC3BpK,0DAAA;IAAQmD,SAAS,EAAC,iBAAiB;IAAC,cAAW,sBAAsB;IAAC7B,OAAO,EAAEwI;EAAQ,gBACrF9J,0DAAA;IAAK,eAAY,MAAM;IAACiK,SAAS,EAAC,OAAO;IAAC9C,KAAK,EAAC,IAAI;IAACC,MAAM,EAAC,IAAI;IAACG,OAAO,EAAC;EAAW,gBAClFvH,0DAAA;IAAMkK,CAAC,EAAC,iDAAiD;IAACtC,IAAI,EAAC;EAAc,CAAE,CAC5E,CACC,CACT;EAED,MAAMyC,qBAAqB,GAAGR,QAAQ,IAAIvH,MAAM,CAACgI,OAAO,CAACC,KAAK;EAC9D,MAAMC,oBAAoB,GAAGX,QAAQ,IAAI,CAACvH,MAAM,CAACgI,OAAO,CAACC,KAAK;EAE9D,IAAIE,oBAAoB,GAAGN,oBAAoB;EAE/C,IAAIpJ,QAAQ,EAAE;IACZ0J,oBAAoB,GAAGL,uBAAuB;IAE9C,IAAII,oBAAoB,EAAE;MACxBC,oBAAoB,GAAGL,uBAAuB;IAChD;EACF;EAEA,IAAI,CAACrJ,QAAQ,IAAIyJ,oBAAoB,EAAE;IACrCC,oBAAoB,GAAGN,oBAAoB;EAC7C;EAEA,IAAIE,qBAAqB,EAAE;IACzBI,oBAAoB,GAAG,IAAI;EAC7B;EAEA,oBACEzK,0DAAA;IAAKmD,SAAS,EAAC;EAAW,GACvBkH,qBAAqB,GAAGL,mBAAmB,GAAG,IAAI,eAEnDhK,0DAAA;IAAI0B,EAAE,EAAC,WAAW;IAACyB,SAAS,EAAC;EAAkB,GAAC,mBAE5C,CAAC,EAEJsH,oBACE,CAAC;AAEV;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1E+D;AACvB;AACY;AAEH;AACQ;AAClB;AACiB;AACP;AACC;AACA;AACH;AAED;AACQ;AACgB;AACZ;AAEnD,SAASrK,KAAKA,CAAA,EAAI;EACvB,MAAM;IAAE+K,GAAG;IAAExK,YAAY;IAAEyK,YAAY;IAAElH,MAAM;IAAEnD,QAAQ;IAAEsK,SAAS;IAAEC,WAAW;IAAEzK,iBAAiB;IAAE0K,WAAW;IAAEvK,cAAc;IAAE6I,QAAQ;IAAErF;EAAW,CAAC,GAAGlE,yDAAM,CAAC,CAAC;EACpK,MAAM;IAAEkL,WAAW;IAAEC;EAAc,CAAC,GAAGR,iEAAU,CAACE,GAAG,CAAC;EAEtD,MAAM,CAACO,MAAM,EAAEC,SAAS,CAAC,GAAGnI,+CAAQ,CAACzC,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC;EAEtDmK,iFAAkB,CAACQ,MAAM,CAAC;EAE1B,MAAME,WAAW,GAAG9C,kDAAW,CAACvH,CAAC,IAAI;IACnC,IAAIA,CAAC,CAACM,GAAG,KAAK,QAAQ,IAAIN,CAAC,CAACM,GAAG,KAAK,KAAK,EAAE;MACzC,IAAId,QAAQ,EAAE;QACZmD,MAAM,EAAE6F,eAAe,CAAC,CAAC;QACzB/I,cAAc,CAAC,CAAC,CAAC;MACnB;MACAH,iBAAiB,CAAC,KAAK,CAAC;MACxBL,qEAAmB,CAAC,CAAC;IACvB;EACF,CAAC,EAAE,CAAC0D,MAAM,EAAEnD,QAAQ,EAAEC,cAAc,EAAEH,iBAAiB,CAAC,CAAC;;EAEzD;AACF;AACA;EACEZ,gDAAS,CAAC,MAAM;IACd,OAAO,MAAM;MACXuC,QAAQ,CAACqJ,cAAc,CAACT,YAAY,CAAC,EAAEvC,KAAK,CAAC,CAAC;IAChD,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;;EAEN;AACF;AACA;EACE5I,gDAAS,CAAC,MAAM;IACduC,QAAQ,CAACM,IAAI,CAACF,SAAS,CAACyC,MAAM,CAAC,aAAa,CAAC;IAC7C7C,QAAQ,CAACsJ,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAClJ,SAAS,CAAC0C,GAAG,CAAC,WAAW,CAAC;IACnE9C,QAAQ,CAACM,IAAI,CAACF,SAAS,CAAC0C,GAAG,CAAC,WAAW,CAAC;IACxC,OAAO,MAAM;MACX9C,QAAQ,CAACsJ,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAClJ,SAAS,CAACyC,MAAM,CAAC,WAAW,CAAC;MACtE7C,QAAQ,CAACM,IAAI,CAACF,SAAS,CAACyC,MAAM,CAAC,WAAW,CAAC;IAC7C,CAAC;EACH,CAAC,EAAE,CAACwE,QAAQ,CAAC,CAAC;;EAEd;AACF;AACA;EACE5J,gDAAS,CAAC,MAAM;IACduC,QAAQ,CAACO,gBAAgB,CAAC,SAAS,EAAE6I,WAAW,CAAC;IAEjD,OAAO,MAAM;MACXpJ,QAAQ,CAACQ,mBAAmB,CAAC,SAAS,EAAE4I,WAAW,CAAC;IACtD,CAAC;EACH,CAAC,EAAE,CAACA,WAAW,EAAE/K,iBAAiB,CAAC,CAAC;;EAEpC;AACF;AACA;EACEZ,gDAAS,CAAC,MAAM;IACd,MAAM8L,OAAO,GAAG,MAAAA,CAAA,KAAY;MAC1B,IAAI;QACF,MAAMC,aAAa,GAAG,MAAMR,WAAW,CAACzK,QAAQ,CAAC;QACjDsK,SAAS,CAACW,aAAa,CAAC;QAExB,MAAMC,eAAe,GAAG,MAAMR,aAAa,CAACO,aAAa,EAAEjL,QAAQ,CAAC;QACpEwK,WAAW,CAACU,eAAe,CAAC;MAC9B,CAAC,CAAC,OAAO7F,GAAG,EAAE;QACZC,OAAO,CAACC,GAAG,CAAC,0BAA0B,EAAEF,GAAG,CAAC;QAE5CkF,WAAW,CAAC,CAAC;QACbD,SAAS,CAAC,CAAC;QACXM,SAAS,CAAC,CAAC,CAAC;MACd;IACF,CAAC;IAED,IAAI5K,QAAQ,EAAE;MACZ,IAAImD,MAAM,EAAE;QACVA,MAAM,CAAC6F,eAAe,CAAC,CAAC;QACxB/I,cAAc,CAAC,CAAC,CAAC;QACjB2K,SAAS,CAAC,CAAC,CAAC;MACd,CAAC,MAAM;QACLI,OAAO,CAAC,CAAC;MACX;IACF;EACF,CAAC,EAAE,CAAC7H,MAAM,EAAEnD,QAAQ,CAAC,CAAC;EAEtB,MAAMmL,kBAAkB,GAAGC,SAAS,IAAI5K,CAAC,IAAI;IAC3CA,CAAC,CAACC,cAAc,CAAC,CAAC;IAClBmK,SAAS,CAACQ,SAAS,CAAC;EACtB,CAAC;EAED,MAAMC,iBAAiB,GAAGF,kBAAkB,CAAC,CAAC,CAAC;EAC/C,MAAMG,qBAAqB,GAAGH,kBAAkB,CAAC,CAAC,CAAC;EACnD,MAAMI,cAAc,GAAGJ,kBAAkB,CAAC,CAAC,CAAC;EAC5C,MAAMK,iBAAiB,GAAGL,kBAAkB,CAAC,CAAC,CAAC;EAC/C,MAAMM,kBAAkB,GAAGN,kBAAkB,CAAC,CAAC,CAAC;EAChD,MAAMO,kBAAkB,GAAGP,kBAAkB,CAAC,CAAC,CAAC;EAEhD,IAAIQ,eAAe;EAEnB,QAAQhB,MAAM;IACZ,KAAK,CAAC;MACJgB,eAAe,gBAAG1M,0DAAA,CAAC2K,0DAAO;QAACgC,UAAU,EAAEN;MAAsB,CAAE,CAAC;MAChE;IACF,KAAK,CAAC;MACJK,eAAe,gBAAG1M,0DAAA,CAAC4K,kEAAW;QAACgC,eAAe,EAAER;MAAkB,CAAE,CAAC;MACrE;IACF,KAAK,CAAC;MACJM,eAAe,gBAAG1M,0DAAA,CAAC+D,gDAAI;QAACE,gBAAgB,EAAEwI,kBAAmB;QAACzI,eAAe,EAAEuI;MAAkB,CAAE,CAAC;MACpG;IACF,KAAK,CAAC;MACJG,eAAe,gBAAG1M,0DAAA,CAAC8K,0DAAO;QAAC+B,YAAY,EAAEP,cAAe;QAACQ,gBAAgB,EAAEN;MAAmB,CAAE,CAAC;MACjG;IACF,KAAK,CAAC;MACJE,eAAe,gBACb1M,0DAAA,CAACgL,2DAAQ;QAAC+B,QAAQ,EAAEA,CAAA,KAAM;UACxBlM,iBAAiB,CAAC,KAAK,CAAC;UACxBL,qEAAmB,CAAC,CAAC;QACvB;MAAE,CACD,CACF;MACD;IACF,KAAK,CAAC;MACJkM,eAAe,gBAAG1M,0DAAA,CAAC+K,2DAAQ;QAACgC,QAAQ,EAAET;MAAe,CAAE,CAAC;MACxD;IACF;MACEI,eAAe,gBAAG1M,0DAAA,CAAC2K,0DAAO;QAACgC,UAAU,EAAEN;MAAsB,CAAE,CAAC;EACpE;EAEA,IAAI1L,YAAY,KAAK,aAAa,EAAE;IAClC+L,eAAe,gBAAG1M,0DAAA,CAAC6K,iEAAW,MAAE,CAAC;EACnC;EAEA,MAAMmC,SAAS,gBACbhN,0DAAA;IAAK0B,EAAE,EAAC,UAAU;IAAC6B,IAAI,EAAC,QAAQ;IAACJ,SAAS,EAAEhD,8DAAU,CAAC,UAAU,EAAEqE,UAAU,IAAI,kBAAkB,CAAE;IAACsC,QAAQ,EAAC,IAAI;IAAC,cAAW,MAAM;IAAC,mBAAgB;EAAuB,gBAC3K9G,0DAAA;IAAKmD,SAAS,EAAC;EAAiB,GAC7BuJ,eACE,CAAC,eACN1M,0DAAA,CAACS,yDAAU,MAAE,CACV,CACN;EAED,oBACET,0DAAA,CAAAA,uDAAA,qBACG0K,uDAAY,CAACsC,SAAS,EAAExK,QAAQ,CAACM,IAAI,CACtC,CAAC;AAEP;;;;;;;;;;;;;;;;;;AClKwC;AACe;AACT;AAEvC,SAASgI,OAAOA,CAAE;EAAE+B,YAAY;EAAEC;AAAiB,CAAC,EAAE;EAC3D,MAAM;IAAEG,aAAa;IAAE3B,WAAW;IAAEC,WAAW;IAAElH,WAAW;IAAEH,MAAM;IAAEnD,QAAQ;IAAEC,cAAc;IAAEwD;EAAW,CAAC,GAAGlE,wDAAM,CAAC,CAAC;EAEvH,MAAM4M,cAAc,GAAG,MAAM3L,CAAC,IAAI;IAChCA,CAAC,CAACC,cAAc,CAAC,CAAC;IAElBc,MAAM,CAAC6K,YAAY,CAACC,OAAO,CAAC,aAAa,EAAErM,QAAQ,CAAC;IACpDuK,WAAW,CAAC,CAAC;IACbC,WAAW,CAAC,EAAE,CAAC;IACf0B,aAAa,CAAC,CAAC;IACf/I,MAAM,CAAC6F,eAAe,CAAC,CAAC;IACxB/I,cAAc,CAAC,CAAC,CAAC;;IAEjB;IACA,IAAIqD,WAAW,KAAK,QAAQ,EAAE;MAC5BH,MAAM,CAACmJ,OAAO,CAAC,CAAC;IAClB;IAEAP,gBAAgB,CAACvL,CAAC,CAAC;EACrB,CAAC;EAEDtB,gDAAS,CAAC,MAAM;IACd,IAAIuE,UAAU,EAAE;MACd8I,UAAU,CAAC,MAAM;QACf9K,QAAQ,CAACyC,aAAa,CAAC,kBAAkB,CAAC,CAAC4D,KAAK,CAAC,CAAC;MACpD,CAAC,EAAE,EAAE,CAAC;IACR;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMjC,cAAc,GAAGrF,CAAC,IAAI;IAC1B,IAAI,CAACA,CAAC,CAACM,GAAG,KAAK,OAAO,IAAIN,CAAC,CAACM,GAAG,KAAK,GAAG,KAAKN,CAAC,CAACE,MAAM,CAACC,EAAE,KAAK,iBAAiB,EAAE;MAC7EwL,cAAc,CAAC3L,CAAC,CAAC;IACnB;IACA,IAAI,CAACA,CAAC,CAACM,GAAG,KAAK,OAAO,IAAIN,CAAC,CAACM,GAAG,KAAK,GAAG,KAAKN,CAAC,CAACE,MAAM,CAACC,EAAE,KAAK,aAAa,EAAE;MACzEmL,YAAY,CAACtL,CAAC,CAAC;IACjB;EACF,CAAC;EAED,oBACEvB,0DAAA,CAAAA,uDAAA,qBACEA,0DAAA,CAACyD,gEAAW,MAAE,CAAC,eACfzD,0DAAA;IAAKmD,SAAS,EAAC;EAAS,gBACtBnD,0DAAA;IAAKmD,SAAS,EAAC;EAAY,gBACzBnD,0DAAA;IAAI0B,EAAE,EAAC,aAAa;IAACyB,SAAS,EAAC,YAAY;IAAC,aAAU;EAAQ,GAAC,wCAA0C,CAAC,eAC1GnD,0DAAA;IAAKmD,SAAS,EAAC;EAAoB,gBACjCnD,0DAAA;IACE0B,EAAE,EAAC,iBAAiB;IACpB2B,IAAI,EAAC,UAAU;IACfE,IAAI,EAAC,QAAQ;IACbJ,SAAS,EAAC,wBAAwB;IAClC,eAAY,cAAc;IAC1B7B,OAAO,EAAE4L,cAAe;IACxBvL,SAAS,EAAEiF;EAAe,GAC3B,eAEE,CAAC,eACJ5G,0DAAA;IACE0B,EAAE,EAAC,aAAa;IAChB2B,IAAI,EAAC,aAAa;IAClBE,IAAI,EAAC,QAAQ;IACbJ,SAAS,EAAC,oBAAoB;IAC9B,eAAY,cAAc;IAC1B7B,OAAO,EAAEuL,YAAa;IACtBlL,SAAS,EAAEiF;EAAe,GAC3B,iBAEE,CACA,CACF,CACF,CACL,CAAC;AAEP;;;;;;;;;;;;;;;;;AC5EyB;AAC8B;AAEhD,SAASoE,QAAQA,CAAE;EAAE+B;AAAS,CAAC,EAAE;EACtC,MAAMQ,YAAY,GAAGA,CAAA,KAAM;IACzB,MAAMC,WAAW,GAAGlL,MAAM,CAAC6K,YAAY,CAACM,OAAO,CAAC,aAAa,CAAC;IAC9DnL,MAAM,CAACoL,QAAQ,CAACrK,IAAI,GAAI,sEAAqEmK,WAAY,WAAUlL,MAAM,CAACoL,QAAQ,CAACrK,IAAK,EAAC;IACzIf,MAAM,CAAC6K,YAAY,CAACQ,UAAU,CAAC,aAAa,CAAC;EAC/C,CAAC;EAED,MAAMC,aAAa,GAAG,MAAMrM,CAAC,IAAI;IAC/Be,MAAM,CAAC6K,YAAY,CAACQ,UAAU,CAAC,aAAa,CAAC;IAC7CZ,QAAQ,CAACxL,CAAC,CAAC;EACb,CAAC;EAED,MAAMqF,cAAc,GAAGrF,CAAC,IAAI;IAC1B,IAAIA,CAAC,CAACM,GAAG,KAAK,OAAO,IAAIN,CAAC,CAACM,GAAG,KAAK,GAAG,EAAE;MACtC,IAAIN,CAAC,CAACE,MAAM,CAACC,EAAE,KAAK,gBAAgB,EAAE;QACpCkM,aAAa,CAACrM,CAAC,CAAC;MAClB;MACA,IAAIA,CAAC,CAACE,MAAM,CAACC,EAAE,KAAK,eAAe,EAAE;QACnC6L,YAAY,CAAC,CAAC;MAChB;IACF;EACF,CAAC;EAED,oBACEvN,0DAAA,CAAAA,uDAAA,qBACEA,0DAAA,CAACyD,gEAAW,MAAE,CAAC,eAEfzD,0DAAA;IAAKmD,SAAS,EAAC;EAAS,gBACtBnD,0DAAA;IAAKmD,SAAS,EAAC;EAAY,gBACzBnD,0DAAA;IAAI0B,EAAE,EAAC,aAAa;IAACyB,SAAS,EAAC;EAAY,GAAC,oCAAsC,CAAC,eACnFnD,0DAAA,YAAG,kDAAmD,CAAC,eACvDA,0DAAA,yBACEA,0DAAA;IACE0B,EAAE,EAAC,eAAe;IAClByB,SAAS,EAAC,YAAY;IACtBE,IAAI,EAAC,GAAG;IACR5B,MAAM,EAAC,QAAQ;IACfoM,GAAG,EAAC,YAAY;IAChBlM,SAAS,EAAEiF,cAAe;IAC1BtF,OAAO,EAAEiM;EAAa,GACvB,eAEE,CACF,CAAC,eACJvN,0DAAA,yBACEA,0DAAA;IACE0B,EAAE,EAAC,gBAAgB;IACnByB,SAAS,EAAC,oBAAoB;IAC9BE,IAAI,EAAC,GAAG;IACR,eAAY,cAAc;IAC1BE,IAAI,EAAC,QAAQ;IACb5B,SAAS,EAAEiF,cAAe;IAC1BtF,OAAO,EAAEsM;EAAc,GACxB,OAEE,CACF,CACA,CACF,CACL,CAAC;AAEP;;;;;;;;;;;;;;;;;AChEyB;AAC8B;AAEhD,SAASjD,OAAOA,CAAE;EAAEgC;AAAW,CAAC,EAAE;EACvC,oBACE3M,0DAAA,CAAAA,uDAAA,qBACEA,0DAAA,CAACyD,gEAAW,MAAE,CAAC,eAEfzD,0DAAA;IAAKmD,SAAS,EAAC;EAAS,gBACtBnD,0DAAA;IAAKmD,SAAS,EAAC;EAAY,gBACzBnD,0DAAA;IAAI0B,EAAE,EAAC,aAAa;IAACyB,SAAS,EAAC,YAAY;IAAC,aAAU;EAAQ,GAAC,8BAAgC,CAAC,eAChGnD,0DAAA,YAAG,wDAAyD,CAAC,eAE7DA,0DAAA,YAAG,6BAA8B,CAAC,eAClCA,0DAAA;IAAImD,SAAS,EAAC;EAAS,gBACrBnD,0DAAA,aAAI,gDAAkD,CAAC,eACvDA,0DAAA,aAAI,0CAA4C,CAAC,eACjDA,0DAAA,aAAI,uDAAyD,CAC3D,CAAC,eACLA,0DAAA,YAAG,6BAED,eAAAA,0DAAA;IAAGmD,SAAS,EAAC,YAAY;IAACE,IAAI,EAAC,+CAA+C;IAAC5B,MAAM,EAAC,QAAQ;IAACoM,GAAG,EAAC;EAAY,GAAC,4BAE7G,CAAC,eAEJ,eAAA7N,0DAAA;IAAGmD,SAAS,EAAC,YAAY;IAACE,IAAI,EAAC,yDAAyD;IAAC5B,MAAM,EAAC,QAAQ;IAACoM,GAAG,EAAC;EAAY,GAAC,oCAEvH,CAAC,KACH,CAAC,eACJ7N,0DAAA,YAAG,2BAED,eAAAA,0DAAA;IACEmD,SAAS,EAAC,YAAY;IACtBE,IAAI,EAAC,uCAAuC;IAC5C5B,MAAM,EAAC,QAAQ;IACfoM,GAAG,EAAC;EAAY,GACjB,gBAEE,CAAC,KACH,CAAC,eAEJ7N,0DAAA;IAAQmD,SAAS,EAAC,6CAA6C;IAAC,eAAY,cAAc;IAAC7B,OAAO,EAAEqL;EAAW,GAAC,UAAgB,CAAC,eAEjI3M,0DAAA;IAAImD,SAAS,EAAC;EAAY,GAAC,yBAA2B,CAAC,eAEvDnD,0DAAA,YAAG,mEAAoE,CAAC,eACxEA,0DAAA,yBACEA,0DAAA,iBAAQ,oBAA0B,CAAC,eACnCA,0DAAA,WAAK,CAAC,4BAEN,eAAAA,0DAAA,WAAK,CAAC,4BAEN,eAAAA,0DAAA,WAAK,CAAC,sCAEN,eAAAA,0DAAA,WAAK,CAAC,eACNA,0DAAA;IAAGmD,SAAS,EAAC,YAAY;IAACE,IAAI,EAAC,6BAA6B;IAAC5B,MAAM,EAAC,QAAQ;IAACoM,GAAG,EAAC;EAAY,GAAC,kCAAmC,CAChI,CACA,CACF,CACL,CAAC;AAEP;;;;;;;;;;;;;;;;;;;;;;;AC7D0D;AAC9B;AAEwB;AACG;AACT;AACQ;AACU;AAEhE,MAAME,mBAAmB,GAAG,GAAG;AAExB,SAASnD,WAAWA,CAAE;EAAEgC;AAAgB,CAAC,EAAE;EAChD,MAAM;IAAEzB,GAAG;IAAE8B,aAAa;IAAE3B,WAAW;IAAED,SAAS;IAAEnK;EAAkB,CAAC,GAAGZ,wDAAM,CAAC,CAAC;EAClF,MAAM;IAAE0N,eAAe;IAAExC;EAAY,CAAC,GAAGP,gEAAU,CAACE,GAAG,CAAC;EACxD,MAAM,CAAC5C,MAAM,EAAE0F,SAAS,CAAC,GAAGzK,+CAAQ,CAAC,CAAC,CAAC,CAAC;EACxC,MAAM,CAAC0K,cAAc,EAAEC,iBAAiB,CAAC,GAAG3K,+CAAQ,CAAC,CAAC,CAAC;EACvD,MAAM,CAAC4K,gBAAgB,EAAEC,iBAAiB,CAAC,GAAG7K,+CAAQ,CAAC,KAAK,CAAC;EAE7D,MAAM8K,OAAO,GAAGpO,6CAAM,CAAC,CAAC;EACxB,MAAMqO,WAAW,GAAGrO,6CAAM,CAAC,CAAC;EAE5B,MAAMsO,qBAAqB,GAAGT,mBAAmB,IAAIG,cAAc;EACnE,MAAMO,uBAAuB,GAAGV,mBAAmB,GAAGG,cAAc;EACpE,MAAMQ,sBAAsB,GAAGR,cAAc,GAAGH,mBAAmB;EAEnE,IAAIY,YAAY,GAAI,YAAWF,uBAAwB,uBAAsB;EAE7E,IAAI,CAACD,qBAAqB,EAAE;IAC1BG,YAAY,GAAI,YAAWD,sBAAuB,sBAAqB;EACzE;EAEAzO,gDAAS,CAAC,MAAM;IACd,IAAIwI,MAAM,CAACC,IAAI,CAACH,MAAM,CAAC,CAACxD,MAAM,EAAE;MAC9BvC,QAAQ,CAACyC,aAAa,CAAC,sBAAsB,CAAC,EAAE4D,KAAK,CAAC,CAAC;IACzD;EACF,CAAC,EAAE,CAACN,MAAM,CAAC,CAAC;EAEZ,MAAMqG,gBAAgB,GAAGrN,CAAC,IAAI;IAC5B4M,iBAAiB,CAAC5M,CAAC,CAACE,MAAM,CAAC+D,KAAK,CAACT,MAAM,CAAC;EAC1C,CAAC;EAED,MAAM8J,WAAW,GAAGT,gBAAgB,GAAG,eAAe,GAAG,cAAc;EAEvEnO,gDAAS,CAAC,MAAM;IACd,IAAImO,gBAAgB,EAAE;MACpBlN,iBAAiB,CAAC2N,WAAW,CAAC;IAChC;EACF,CAAC,EAAE,CAACT,gBAAgB,CAAC,CAAC;EAEtB,MAAMU,aAAa,GAAG,MAAMvN,CAAC,IAAI;IAC/BA,CAAC,CAACC,cAAc,CAAC,CAAC;IAElB,IAAI4M,gBAAgB,EAAE;MACpB;IACF;IAEA,MAAM5F,IAAI,GAAG,CAAC,CAAC;IAEf,IAAI8F,OAAO,CAACrM,OAAO,CAACuD,KAAK,CAACT,MAAM,KAAK,CAAC,EAAE;MACtCyD,IAAI,CAACP,IAAI,GAAG,iBAAiB;IAC/B;IAEA,IAAIsG,WAAW,CAACtM,OAAO,CAACuD,KAAK,CAACT,MAAM,KAAK,CAAC,EAAE;MAC1CyD,IAAI,CAACuG,QAAQ,GAAG,qBAAqB;IACvC;IAEA,IAAIR,WAAW,CAACtM,OAAO,CAACuD,KAAK,CAACT,MAAM,GAAGgJ,mBAAmB,EAAE;MAC1DvF,IAAI,CAACuG,QAAQ,GAAG,8CAA8C;IAChE;IAEA,IAAItG,MAAM,CAACC,IAAI,CAACF,IAAI,CAAC,CAACzD,MAAM,KAAK,CAAC,EAAE;MAClC,IAAI;QACFsJ,iBAAiB,CAAC,IAAI,CAAC;QACvB,MAAMtN,QAAQ,GAAG+M,oCAAO,CAAC,CAAC;QAC1B,MAAMmB,UAAU,GAAG,MAAMjB,eAAe,CAAC,CAAC;QAC1C,MAAM9J,MAAM,GAAG,MAAMsH,WAAW,CAACzK,QAAQ,CAAC;QAE1CoK,GAAG,CAAC+D,WAAW,CAAC,CAAC,CAACC,OAAO,CAACb,OAAO,CAACrM,OAAO,CAACuD,KAAK,CAAC;QAEhD,MAAMtB,MAAM,CAACkL,SAAS,CAACb,WAAW,CAACtM,OAAO,CAACuD,KAAK,IAAI,oBAAoB,CAAC;QAEzEyH,aAAa,CAACgC,UAAU,CAAC;QACzB3D,WAAW,CAACvK,QAAQ,CAAC;QACrBsK,SAAS,CAACnH,MAAM,CAAC;QACjBA,MAAM,CAACmL,cAAc,CAAC,UAAU,EAAEtO,QAAQ,CAAC;MAC7C,CAAC,CAAC,OAAOqF,GAAG,EAAE;QACZC,OAAO,CAACC,GAAG,CAAC,sBAAsB,EAAEF,GAAG,CAAC;MAC1C;IACF;IAEA6H,SAAS,CAACzF,IAAI,CAAC;EACjB,CAAC;EAED,oBACExI,0DAAA,CAAAA,uDAAA,qBACEA,0DAAA,CAACyD,gEAAW,MAAE,CAAC,eAEfzD,0DAAA;IAAKmD,SAAS,EAAC;EAAS,gBACtBnD,0DAAA;IAAKmD,SAAS,EAAC;EAAY,gBACzBnD,0DAAA;IAAGqD,IAAI,EAAC,GAAG;IAACF,SAAS,EAAC,8BAA8B;IAAC7B,OAAO,EAAEsL;EAAgB,GAAC,8BAE5E,CAAC,eAEJ5M,0DAAA,CAACsI,yEAAY;IAACC,MAAM,EAAEA;EAAO,CAAE,CAAC,eAEhCvI,0DAAA;IAAI0B,EAAE,EAAC,aAAa;IAACyB,SAAS,EAAC,YAAY;IAAC,aAAU;EAAQ,GAAC,wBAE3D,CAAC,eAELnD,0DAAA,4BACEA,0DAAA;IAAKmD,SAAS,EAAEhD,8DAAU,CAAC,eAAe,EAAE,kBAAkB,EAAEoI,MAAM,CAACN,IAAI,IAAI,yBAAyB;EAAE,gBACxGjI,0DAAA;IAAOmD,SAAS,EAAC,sBAAsB;IAAC4E,OAAO,EAAC;EAAS,GAAC,WAEnD,CAAC,EACPQ,MAAM,CAACN,IAAI,iBACVjI,0DAAA;IAAGmD,SAAS,EAAC;EAAqB,gBAChCnD,0DAAA;IAAMmD,SAAS,EAAC;EAAuB,GAAC,QAAY,CAAC,KAAC,EAACoF,MAAM,CAACN,IAC7D,CACJ,eACDjI,0DAAA;IACEoD,GAAG,EAAEkL,OAAQ;IACbnL,SAAS,EAAEhD,8DAAU,CAAC,UAAU,EAAE,aAAa,EAAEoI,MAAM,CAACN,IAAI,IAAI,oBAAoB,CAAE;IACtFvG,EAAE,EAAC,SAAS;IACZuG,IAAI,EAAC,MAAM;IACXG,IAAI,EAAC,MAAM;IACX,eAAY;EAAwB,CACrC,CACE,CAAC,eAENpI,0DAAA;IAAKmD,SAAS,EAAC,qCAAqC;IAAC,eAAY,uBAAuB;IAAC,kBAAe;EAAK,gBAC3GnD,0DAAA;IAAKmD,SAAS,EAAEhD,8DAAU,CAAC,kBAAkB,EAAEoI,MAAM,CAACwG,QAAQ,IAAI,yBAAyB;EAAE,gBAC3F/O,0DAAA;IAAOmD,SAAS,EAAC,sBAAsB;IAAC4E,OAAO,EAAC;EAAa,GAAC,eAEvD,CAAC,EACPQ,MAAM,CAACwG,QAAQ,iBACd/O,0DAAA;IAAGmD,SAAS,EAAC;EAAqB,gBAChCnD,0DAAA;IAAMmD,SAAS,EAAC;EAAuB,GAAC,QAAY,CAAC,EACpDoF,MAAM,CAACwG,QACP,CACJ,eACD/O,0DAAA;IACEoD,GAAG,EAAEmL,WAAY;IACjB7M,EAAE,EAAC,aAAa;IAChBuG,IAAI,EAAC,UAAU;IACfD,IAAI,EAAC,GAAG;IACR,oBAAiB,kBAAkB;IACnCzC,QAAQ,EAAEqJ,gBAAiB;IAC3BzL,SAAS,EAAEhD,8DAAU,CAAC,aAAa,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,CAACqO,qBAAqB,IAAIjG,MAAM,CAACwG,QAAQ,GAAG,uBAAuB,GAAG,EAAE,CAAE;IAC7J,eAAY;EAA4B,CACzC,CAAC,eACF/O,0DAAA;IACE0B,EAAE,EAAC,kBAAkB;IACrByB,SAAS,EAAC,0CAA0C;IACpDmM,KAAK,EAAE;MAAEC,KAAK,EAAG,GAAE,CAACf,qBAAqB,GAAG,SAAS,GAAG,EAAG;IAAE,CAAE;IAC/D,eAAY;EAAM,GAEjBG,YACE,CAAC,eACN3O,0DAAA;IAAKmD,SAAS,EAAC,wDAAwD;IAAC,aAAU;EAAQ,GACvFwL,YACE,CACF,CACF,CAAC,eAEN3O,0DAAA;IAAKmD,SAAS,EAAC;EAAgC,GAAC,+DAE9C,eAAAnD,0DAAA;IAAGqD,IAAI,EAAC,0DAA0D;IAAC5B,MAAM,EAAC,QAAQ;IAACoM,GAAG,EAAC,YAAY;IAAC1K,SAAS,EAAC;EAAY,GAAC,gBAAiB,CAAC,KAC1I,CAAC,eAENnD,0DAAA;IACEmD,SAAS,EAAC,6CAA6C;IACvD,eAAY,cAAc;IAC1B7B,OAAO,EAAEwN,aAAc;IACvB,iBAAeV;EAAiB,GAE/BS,WACK,CACJ,CACH,CACF,CACL,CAAC;AAEP;;;;;;;;;;;;;;;;;;ACtLuC;AACgB;AAET;AAEvC,SAAS9D,QAAQA,CAAE;EAAEgC;AAAS,CAAC,EAAE;EACtC,MAAM;IAAExI,QAAQ;IAAEiL;EAAY,CAAC,GAAGlP,wDAAM,CAAC,CAAC;EAE1C,MAAM,CAACmP,WAAW,EAAEC,cAAc,CAAC,GAAGlM,+CAAQ,CAACe,QAAQ,CAACoL,KAAK,CAAC;EAC9D,MAAM,CAACC,YAAY,EAAEC,eAAe,CAAC,GAAGrM,+CAAQ,CAACe,QAAQ,CAACO,MAAM,CAAC;EAEjE,MAAMgL,MAAM,GAAGvO,CAAC,IAAI;IAClBA,CAAC,CAACC,cAAc,CAAC,CAAC;IAElBgO,WAAW,CAAC;MAAEG,KAAK,EAAEF,WAAW;MAAE3K,MAAM,EAAE8K;IAAa,CAAC,CAAC;IACzD7C,QAAQ,CAACxL,CAAC,CAAC;EACb,CAAC;EAED,MAAMqF,cAAc,GAAGrF,CAAC,IAAI;IAC1B,IAAI,CAACA,CAAC,CAACM,GAAG,KAAK,OAAO,IAAIN,CAAC,CAACM,GAAG,KAAK,GAAG,KAAKN,CAAC,CAACE,MAAM,CAACC,EAAE,KAAK,eAAe,EAAE;MAC3EoO,MAAM,CAACvO,CAAC,CAAC;IACX,CAAC,MAAM,IAAI,CAACA,CAAC,CAACM,GAAG,KAAK,OAAO,IAAIN,CAAC,CAACM,GAAG,KAAK,GAAG,KAAKN,CAAC,CAACE,MAAM,CAACC,EAAE,KAAK,iBAAiB,EAAE;MACpFqL,QAAQ,CAACxL,CAAC,CAAC;IACb;EACF,CAAC;EAED,oBACEvB,0DAAA,CAAAA,uDAAA,qBACEA,0DAAA,CAACyD,gEAAW,MAAE,CAAC,eAEfzD,0DAAA;IAAKmD,SAAS,EAAC;EAAS,gBACtBnD,0DAAA;IAAKmD,SAAS,EAAC;EAAY,gBACzBnD,0DAAA;IAAUmD,SAAS,EAAC;EAAwC,gBAC1DnD,0DAAA;IAAQmD,SAAS,EAAC;EAA+C,gBAC/DnD,0DAAA;IAAI0B,EAAE,EAAC,aAAa;IAACyB,SAAS,EAAC;EAAY,GAAC,iBAAmB,CACzD,CAAC,eACTnD,0DAAA;IAAKmD,SAAS,EAAC,0CAA0C;IAAC,eAAY;EAAkB,gBACtFnD,0DAAA;IAAKmD,SAAS,EAAC;EAAwB,gBACrCnD,0DAAA;IACE0B,EAAE,EAAC,OAAO;IACVuG,IAAI,EAAC,OAAO;IACZG,IAAI,EAAC,UAAU;IACf5C,KAAK,EAAC,OAAO;IACbrC,SAAS,EAAC,yBAAyB;IACnC4M,cAAc,EAAEN,WAAY;IAC5BlK,QAAQ,EAAEA,CAAA,KAAMmK,cAAc,CAAC,CAACD,WAAW;EAAE,CAC9C,CAAC,eACFzP,0DAAA;IAAOmD,SAAS,EAAC,8CAA8C;IAAC4E,OAAO,EAAC;EAAO,GAAC,2CAEzE,CACJ,CAAC,eACN/H,0DAAA;IAAKmD,SAAS,EAAC;EAAwB,gBACrCnD,0DAAA;IACE0B,EAAE,EAAC,QAAQ;IACXuG,IAAI,EAAC,QAAQ;IACbG,IAAI,EAAC,UAAU;IACf5C,KAAK,EAAC,QAAQ;IACdrC,SAAS,EAAC,yBAAyB;IACnC4M,cAAc,EAAEH,YAAa;IAC7BrK,QAAQ,EAAEA,CAAA,KAAMsK,eAAe,CAAC,CAACD,YAAY;EAAE,CAChD,CAAC,eACF5P,0DAAA;IAAOmD,SAAS,EAAC,8CAA8C;IAAC4E,OAAO,EAAC;EAAQ,GAAC,uCAE1E,CACJ,CACF,CACG,CAAC,eAEX/H,0DAAA;IAAKmD,SAAS,EAAC;EAAoB,gBACjCnD,0DAAA;IACE0B,EAAE,EAAC,eAAe;IAClB2B,IAAI,EAAC,GAAG;IACRF,SAAS,EAAC,wBAAwB;IAClC,eAAY,cAAc;IAC1BI,IAAI,EAAC,QAAQ;IACbjC,OAAO,EAAEwO,MAAO;IAChBnO,SAAS,EAAEiF;EAAe,GAC3B,MAEE,CAAC,eACJ5G,0DAAA;IACE0B,EAAE,EAAC,iBAAiB;IACpB2B,IAAI,EAAC,GAAG;IACRF,SAAS,EAAC,oBAAoB;IAC9B,eAAY,cAAc;IAC1BI,IAAI,EAAC,QAAQ;IACbjC,OAAO,EAAEyL,QAAS;IAClBpL,SAAS,EAAEiF;EAAe,GAC3B,QAEE,CACA,CACF,CACF,CACL,CAAC;AAEP;;;;;;;;;;;;;;;;;AChGyB;AAC8B;AAEhD,SAASiE,WAAWA,CAAA,EAAI;EAC7B,oBACE7K,0DAAA,CAAAA,uDAAA,qBACEA,0DAAA,CAACyD,gEAAW,MAAE,CAAC,eAEfzD,0DAAA;IAAKmD,SAAS,EAAC;EAAS,gBACtBnD,0DAAA;IAAI0B,EAAE,EAAC,aAAa;IAACyB,SAAS,EAAC;EAAiB,GAAC,oCAAsC,CAAC,eACxFnD,0DAAA;IAAGmD,SAAS,EAAC;EAAc,GAAC,qCAAsC,CAAC,eACnEnD,0DAAA;IAAGmD,SAAS,EAAC;EAAc,gBACzBnD,0DAAA,iBAAQ,oBAA0B,CAAC,eACnCA,0DAAA,WAAK,CAAC,4BACN,eAAAA,0DAAA,WAAK,CAAC,4BACN,eAAAA,0DAAA,WAAK,CAAC,sCACN,eAAAA,0DAAA,WAAK,CAAC,eAAAA,0DAAA;IAAGmD,SAAS,EAAC,YAAY;IAACE,IAAI,EAAC;EAA6B,GAAC,kCAAmC,CACrG,CAAC,eACJrD,0DAAA;IAAGmD,SAAS,EAAC;EAAc,GAAC,oEAAqE,CAC9F,CACL,CAAC;AAEP;;;;;;;;;;;;;;;;;;;ACtByB;AACe;AACA;AAEjC,MAAM9C,QAAQ,GAAGA,CAAA,KAAM;EAC5B,MAAM;IAAEU,QAAQ;IAAEE;EAAgB,CAAC,GAAGX,qDAAM,CAAC,CAAC;EAE9C,IAAI,CAACS,QAAQ,EAAE;IACb,OAAO,IAAI;EACb;EAEA,MAAMiP,eAAe,GAAGxN,QAAQ,CAACqJ,cAAc,CAAC,6BAA6B,CAAC;EAE9E,IAAI,CAACmE,eAAe,EAAE;IACpB,OAAO,IAAI;EACb;EAEA,MAAM1O,OAAO,GAAGC,CAAC,IAAI;IACnBA,CAAC,CAACC,cAAc,CAAC,CAAC;IAClBP,eAAe,CAACM,CAAC,CAACE,MAAM,CAACC,EAAE,CAAC;IAC5BY,MAAM,CAACoL,QAAQ,CAACuC,IAAI,GAAG,UAAU;EACnC,CAAC;EAED,oBACEjQ,0DAAA,CAAAA,uDAAA,qBACG0K,uDAAY,eACX1K,0DAAA;IACE0B,EAAE,EAAC,mBAAmB;IACtB2B,IAAI,EAAC,UAAU;IACfF,SAAS,EAAC,iBAAiB;IAC3B,eAAY,iBAAiB;IAC7B7B,OAAO,EAAEA,OAAQ;IACjB,wBAAgB;IAChB;EAAgB,GACjB,iBAEE,CAAC,EACJ0O,eACF,CACA,CAAC;AAEP,CAAC;;;;;;;;;;;;;;;;;ACzCuD;AAExD,MAAME,UAAU,GAAG,aAAa;AAChC,MAAMC,WAAW,GAAG,eAAe;AAEnC,MAAMC,aAAa,GAAGC,OAAO,IAAI;EAC/B,KAAK,MAAMC,IAAI,IAAI9N,QAAQ,CAACM,IAAI,CAAC8G,QAAQ,EAAE;IACzC,IAAI0G,IAAI,CAAC5O,EAAE,KAAK,UAAU,EAAE;MAC1B;MACA,IAAI2O,OAAO,IAAI,CAACC,IAAI,CAAC1H,YAAY,CAACsH,UAAU,CAAC,EAAE;QAC7CI,IAAI,CAAC3J,YAAY,CAACuJ,UAAU,EAAE,MAAM,CAAC;QACrCI,IAAI,CAAC3J,YAAY,CAACwJ,WAAW,EAAE,EAAE,CAAC;MACpC,CAAC,MAAM,IAAIG,IAAI,CAACC,YAAY,CAACJ,WAAW,CAAC,EAAE;QACzCG,IAAI,CAACE,eAAe,CAACN,UAAU,CAAC;QAChCI,IAAI,CAACE,eAAe,CAACL,WAAW,CAAC;MACnC;IACF;EACF;AACF,CAAC;AAEM,MAAMM,oBAAoB,GAAGA,CAAA,KAAM;EACxC,MAAMC,SAAS,GAAG,CAChB,6BAA6B,EAC7B,kCAAkC,EAClC,kCAAkC,EAClC,iCAAiC,EACjC,oCAAoC,EACpC,2CAA2C,CAC5C;EAED,MAAMC,QAAQ,GAAGnO,QAAQ,CAACM,IAAI,CAAC8N,gBAAgB,CAACF,SAAS,CAACG,IAAI,CAAC,GAAG,CAAC,CAAC;EACpE,OAAOC,KAAK,CAACC,IAAI,CAACJ,QAAQ,CAAC,CAACK,MAAM,CAACzP,CAAC,IAAI,CAACA,CAAC,CAAC0P,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC1P,CAAC,CAAC0P,OAAO,CAAC,sBAAsB,CAAC,CAAC;AACvG,CAAC;AAED,MAAM/F,kBAAkB,GAAGQ,MAAM,IAAI;EACnC,MAAM,CAACwF,aAAa,EAAEC,gBAAgB,CAAC,GAAG3N,+CAAQ,CAAC,EAAE,CAAC;EAEtD,MAAM7B,SAAS,GAAGmH,kDAAW,CAACvH,CAAC,IAAI;IACjC,MAAM6P,mBAAmB,GAAG5O,QAAQ,CAACyC,aAAa,CAAC,WAAW,CAAC;IAE/D,IAAI1D,CAAC,CAACM,GAAG,KAAK,KAAK,EAAE;MACnB,IAAIuP,mBAAmB,IAAI,CAAC5O,QAAQ,CAAC6O,aAAa,CAACJ,OAAO,CAAC,WAAW,CAAC,EAAE;QACvEG,mBAAmB,CAACvI,KAAK,CAAC,CAAC;MAC7B;MAEA,IAAItH,CAAC,CAACsF,QAAQ,EAAE;QACd,IAAIrE,QAAQ,CAAC6O,aAAa,KAAKH,aAAa,CAAC,CAAC,CAAC,EAAE;UAC/CA,aAAa,CAACA,aAAa,CAACnM,MAAM,GAAG,CAAC,CAAC,CAAC8D,KAAK,CAAC,CAAC;UAC/CtH,CAAC,CAACC,cAAc,CAAC,CAAC;QACpB,CAAC,MAAM,IAAIgB,QAAQ,CAAC6O,aAAa,KAAK7O,QAAQ,CAACyC,aAAa,CAAC,WAAW,CAAC,EAAE;UACzEiM,aAAa,CAACA,aAAa,CAACnM,MAAM,GAAG,CAAC,CAAC,EAAE8D,KAAK,CAAC,CAAC;UAChDtH,CAAC,CAACC,cAAc,CAAC,CAAC;QACpB;MACF,CAAC,MAAM,IAAIgB,QAAQ,CAAC6O,aAAa,KAAKH,aAAa,CAACA,aAAa,CAACnM,MAAM,GAAG,CAAC,CAAC,EAAE;QAC7EmM,aAAa,CAAC,CAAC,CAAC,CAACrI,KAAK,CAAC,CAAC;QACxBtH,CAAC,CAACC,cAAc,CAAC,CAAC;MACpB;IACF;EACF,CAAC,EAAE,CAAC0P,aAAa,CAAC,CAAC;EAEnBjR,gDAAS,CAAC,MAAM;IACdkR,gBAAgB,CAACV,oBAAoB,CAAC,CAAC,CAAC;EAC1C,CAAC,EAAE,CAAC/E,MAAM,CAAC,CAAC;EAEZzL,gDAAS,CAAC,MAAM;IACdmQ,aAAa,CAAC,IAAI,CAAC;IAEnB,MAAMkB,YAAY,GAAG9O,QAAQ,CAACyC,aAAa,CAAC,WAAW,CAAC;IACxDqM,YAAY,CAACzI,KAAK,CAAC,CAAC;IAEpBrG,QAAQ,CAACO,gBAAgB,CAAC,SAAS,EAAEpB,SAAS,CAAC;IAE/C,OAAO,MAAM;MACXyO,aAAa,CAAC,CAAC;MACf5N,QAAQ,CAACQ,mBAAmB,CAAC,SAAS,EAAErB,SAAS,CAAC;IACpD,CAAC;EACH,CAAC,EAAE,CAACuP,aAAa,CAAC,CAAC;AACrB,CAAC;;;;;;;;;;;;;;;;;AC7EgC;AAE1B,MAAMtN,mBAAmB,GAAGA,CAAC2N,WAAW,EAAE/L,KAAK,KAAK;EACzDvF,gDAAS,CAAC,MAAM;IACd,IAAIsR,WAAW,EAAE;MACfA,WAAW,CAACjC,KAAK,CAAClI,MAAM,GAAG,KAAK;MAEhC,MAAMjC,YAAY,GAAGoM,WAAW,CAACpM,YAAY;MAE7CoM,WAAW,CAACjC,KAAK,CAAClI,MAAM,GAAI,GAAEjC,YAAa,IAAG;IAChD;EACF,CAAC,EAAE,CAACoM,WAAW,EAAE/L,KAAK,CAAC,CAAC;AAC1B,CAAC;;;;;;;;;;;;;;ACZM,MAAM1B,mBAAmB,GAAGA,CAACnD,YAAY,EAAE0D,WAAW,EAAEoB,SAAS,KAAK;EAC3E,IAAI9E,YAAY,KAAK,aAAa,EAAE;IAClC,OAAO,oCAAoC;EAC7C;EAEA,IAAI,CAAC0D,WAAW,EAAE;IAChB,OAAO,yBAAyB;EAClC;EAEA,QAAQA,WAAW;IACjB,KAAK,QAAQ;IACb,KAAK,UAAU;MACb,OAAOoB,SAAS,GAAI,GAAEA,SAAU,oBAAmB,GAAG,0BAA0B;IAClF;MACE,OAAOA,SAAS,GAAI,yBAAwBA,SAAU,EAAC,GAAG,iCAAiC;EAC/F;AACF,CAAC;;;;;;;;;;;;;;AChBM,eAAe+L,iBAAiBA,CAAEC,QAAQ,EAAE;EACjD,MAAMC,QAAQ,GAAG,MAAMC,KAAK,CAACF,QAAQ,CAAC;EACtC,MAAMG,IAAI,GAAG,MAAMF,QAAQ,CAACG,IAAI,CAAC,CAAC;EAElC,OAAO;IACLlR,YAAY,EAAEiR,IAAI,CAACjR,YAAY,IAAI;EACrC,CAAC;AACH;;;;;;;;;;;;;;ACPO,MAAMR,UAAU,GAAGA,CAAC,GAAG2R,OAAO,KAAKA,OAAO,CAACd,MAAM,CAACe,SAAS,IAAIA,SAAS,IAAI,OAAOA,SAAS,KAAK,QAAQ,CAAC,CAAClB,IAAI,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;ACApH,MAAMtQ,gBAAgB,GAAGA,CAAA,KAAM;EACpC,MAAMyR,GAAG,GAAG1P,MAAM,CAACoL,QAAQ,CAACrK,IAAI,CAAC4O,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EAC9C3P,MAAM,CAACgI,OAAO,CAAC4H,SAAS,CAAC;IAAE5H,OAAO,EAAE;EAAK,CAAC,EAAE,IAAI,EAAG,GAAE0H,GAAI,UAAS,CAAC;AACrE,CAAC;AAEM,MAAMxR,mBAAmB,GAAGA,CAAA,KAAM;EACvC,IAAI8B,MAAM,CAACgI,OAAO,CAACC,KAAK,EAAED,OAAO,EAAE;IACjC,OAAOhI,MAAM,CAACgI,OAAO,CAAC6H,IAAI,CAAC,CAAC;EAC9B;EAEA,MAAMH,GAAG,GAAG1P,MAAM,CAACoL,QAAQ,CAACrK,IAAI,CAAC4O,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EAC9C,OAAO3P,MAAM,CAACgI,OAAO,CAAC8H,YAAY,CAAC,IAAI,EAAE,IAAI,EAAEJ,GAAG,CAAC;AACrD,CAAC;;;;;;;;;;;;;;ACZM,MAAMK,mBAAmB,GAAGC,QAAQ,IAAI;EAC7C,IAAIC,MAAM;EAEV,MAAMC,OAAO,GAAG,KAAKlQ,MAAM,CAACmQ,YAAY,IAAInQ,MAAM,CAACoQ,kBAAkB,EAAE,CAAC;EAExE,IAAIF,OAAO,CAACjI,KAAK,KAAK,WAAW,EAAE;IACjC,MAAMoI,MAAM,GAAG,CAAC,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC;IAEnF,MAAMC,MAAM,GAAGC,EAAE,IAAI;MACnBF,MAAM,CAACG,OAAO,CAAClR,KAAK,IAAI;QACtBY,QAAQ,CAACM,IAAI,CAACE,mBAAmB,CAACpB,KAAK,EAAEgR,MAAM,CAAC;MAClD,CAAC,CAAC;MAEFJ,OAAO,CAACO,MAAM,CAAC,CAAC;IAClB,CAAC;IAEDJ,MAAM,CAACG,OAAO,CAAClR,KAAK,IAAI;MACtBY,QAAQ,CAACM,IAAI,CAACC,gBAAgB,CAACnB,KAAK,EAAEgR,MAAM,EAAE,KAAK,CAAC;IACtD,CAAC,CAAC;EACJ;EAEAjB,KAAK,CAACW,QAAQ,CAAC,CACZU,IAAI,CAACtB,QAAQ,IAAIA,QAAQ,CAACuB,WAAW,CAAC,CAAC,CAAC,CACxCD,IAAI,CAACpB,IAAI,IAAIY,OAAO,CAACU,eAAe,CAACtB,IAAI,CAAC,CAAC,CAC3CoB,IAAI,CAACG,WAAW,IAAI;IACnBZ,MAAM,GAAGY,WAAW;EACtB,CAAC,CAAC,CACDC,KAAK,CAAC/M,OAAO,CAACgN,KAAK,CAAC;EAEvB,OAAO,MAAM;IACX,MAAMC,MAAM,GAAGd,OAAO,CAACe,kBAAkB,CAAC,CAAC;IAC3CD,MAAM,CAACf,MAAM,GAAGA,MAAM;IACtBe,MAAM,CAACE,OAAO,CAAChB,OAAO,CAACiB,WAAW,CAAC;IACnCH,MAAM,CAACI,KAAK,CAAC,CAAC;EAChB,CAAC;AACH,CAAC;;;;;;;;;;;;;;;;;;ACnC+B;AAEzB,MAAME,gBAAgB,GAAG3N,OAAO,IAAI;EACzC,OAAO;IACLvE,EAAE,EAAEuE,OAAO,CAACvE,EAAE;IACdqE,IAAI,EAAEE,OAAO,CAAC4N,cAAc,EAAE9N,IAAI;IAClC+N,SAAS,EAAE,IAAIC,IAAI,CAAC9N,OAAO,CAAC6N,SAAS,CAAC;IACtCE,IAAI,EAAE/N,OAAO,CAACgO,qBAAqB,EAAEC,QAAQ,EAAEhO,IAAI,CAAC,CAAC,IAAI,IAAI;IAC7DyD,QAAQ,EAAE1D,OAAO,CAACkO,UAAU,EAAExO,SAAS,IAAI,IAAI;IAC/CG,SAAS,EAAEG,OAAO,CAACH;EACrB,CAAC;AACH,CAAC;AAEM,MAAMsO,iBAAiB,GAAGjQ,QAAQ,IAAIA,QAAQ,CAAC4C,GAAG,CAACd,OAAO,IAAI2N,gBAAgB,CAAC3N,OAAO,CAAC,CAAC;AAExF,MAAMpC,gBAAgB,GAAGM,QAAQ,IAAI;EAC1C,MAAMkQ,GAAG,GAAGV,2CAAQ,CAACW,KAAK,CAAC,CAAC;EAC5BD,GAAG,CAACE,OAAO,CAAC,eAAe,CAAC;EAE5B,IAAIC,MAAM,GAAI,iCAAgCH,GAAG,CAACI,QAAQ,CAAC,0BAA0B,CAAE,MAAK;EAE5F,KAAK,MAAMxO,OAAO,IAAI9B,QAAQ,EAAE;IAC9B,MAAM;MAAE4B,IAAI;MAAED,SAAS;MAAEkO,IAAI;MAAErK,QAAQ;MAAEmK;IAAU,CAAC,GAAG7N,OAAO;IAE9D,MAAMyO,MAAM,GAAG5O,SAAS,KAAK,SAAS,GAAGkO,IAAI,GAAI,GAAErK,QAAS,sBAAqB;IACjF,MAAMgL,IAAI,GAAGhB,2CAAQ,CAACiB,UAAU,CAAC,IAAIb,IAAI,CAACD,SAAS,CAAC,CAAC,CAACS,OAAO,CAAC,eAAe,CAAC,CAACE,QAAQ,CAAC,0BAA0B,CAAC;IAEnHD,MAAM,IAAK,IAAGG,IAAK,KAAID,MAAO,OAAM3O,IAAK,MAAK;EAChD;EAEAyO,MAAM,GAAGA,MAAM,CAACK,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAACA,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;EAEhE,OAAOC,kBAAkB,CAACN,MAAM,CAAC;AACnC,CAAC;;;;;;;;;;;;;;;;;;;;;;ACjC2E;AACZ;AAEI;AAEhB;AACiD;AAE9F,MAAMgB,UAAU,gBAAGT,oDAAa,CAACI,qDAAY,CAAC;AAE9C,MAAMM,WAAW,GAAGA,CAAC;EAAEtK,GAAG;EAAExK,YAAY;EAAE+U,OAAO;EAAE9L;AAAS,CAAC,KAAK;EACvE,MAAM,CAACW,KAAK,EAAEoL,QAAQ,CAAC,GAAGX,iDAAU,CAACI,gDAAO,EAAED,qDAAY,CAAC;EAE3D,MAAMS,SAAS,GAAGvD,iFAAmB,CAACqD,OAAO,CAACpD,QAAQ,CAAC;;EAEvD;AACF;AACA;EACE,MAAMuD,mBAAmB,GAAGtU,CAAC,IAAI;IAC/BoU,QAAQ,CAAC;MAAEvN,IAAI,EAAE,WAAW;MAAE0N,OAAO,EAAEvU,CAAC,CAACwU,MAAM,CAACnE,IAAI,CAACoE;IAAc,CAAC,CAAC;IACrEL,QAAQ,CAAC;MAAEvN,IAAI,EAAE,kBAAkB;MAAE0N,OAAO,EAAEvU,CAAC,CAACwU,MAAM,CAACnE,IAAI,CAACqE,OAAO,CAACC;IAAO,CAAC,CAAC;IAC7EP,QAAQ,CAAC;MAAEvN,IAAI,EAAE,kBAAkB;MAAE0N,OAAO,EAAEvU,CAAC,CAACwU,MAAM,CAACnE,IAAI,CAACqE,OAAO,CAACE,kBAAkB,CAACC;IAAoB,CAAC,CAAC;EAC/G,CAAC;EAED,MAAMC,sBAAsB,GAAG9U,CAAC,IAAI;IAClCoU,QAAQ,CAAC;MAAEvN,IAAI,EAAE,WAAW;MAAE0N,OAAO,EAAEvU,CAAC,CAACwU,MAAM,CAACnE,IAAI,CAACoE;IAAc,CAAC,CAAC;IACrEL,QAAQ,CAAC;MAAEvN,IAAI,EAAE,kBAAkB;MAAE0N,OAAO,EAAEvU,CAAC,CAACwU,MAAM,CAACnE,IAAI,CAAC0E,IAAI,CAACJ;IAAO,CAAC,CAAC;EAC5E,CAAC;EAED,MAAMK,oBAAoB,GAAGA,CAAA,KAAM;IACjCZ,QAAQ,CAAC;MAAEvN,IAAI,EAAE,kBAAkB;MAAE0N,OAAO,EAAE;IAAK,CAAC,CAAC;EACvD,CAAC;EAED,MAAMU,kBAAkB,GAAGA,CAAA,KAAM;IAC/Bb,QAAQ,CAAC;MAAEvN,IAAI,EAAE,kBAAkB;MAAE0N,OAAO,EAAE;IAAM,CAAC,CAAC;IACtDH,QAAQ,CAAC;MAAEvN,IAAI,EAAE;IAAuB,CAAC,CAAC;EAC5C,CAAC;EAED,MAAMqO,gBAAgB,GAAGlV,CAAC,IAAI;IAC5BoU,QAAQ,CAAC;MAAEvN,IAAI,EAAE,aAAa;MAAE0N,OAAO,EAAEvU,CAAC,CAACwU,MAAM,CAACnE,IAAI,CAAC3L;IAAQ,CAAC,CAAC;IACjE0P,QAAQ,CAAC;MAAEvN,IAAI,EAAE,kBAAkB;MAAE0N,OAAO,EAAEvU,CAAC,CAACwU,MAAM,CAACnE,IAAI,CAAC0E,IAAI,CAACJ;IAAO,CAAC,CAAC;IAC1EP,QAAQ,CAAC;MAAEvN,IAAI,EAAE,kBAAkB;MAAE0N,OAAO,EAAEvU,CAAC,CAACwU,MAAM,CAACnE,IAAI,CAAC0E,IAAI,CAACH,kBAAkB,CAACC;IAAoB,CAAC,CAAC;IAE1G,MAAMM,SAAS,GAAGC,IAAI,CAACC,KAAK,CAACtU,MAAM,CAAC6K,YAAY,CAACM,OAAO,CAAC8H,+DAAoB,CAAC,CAAC,CAAC5F,KAAK;IAErF,IAAI+G,SAAS,IAAInV,CAAC,CAACwU,MAAM,CAACnE,IAAI,CAAC3L,OAAO,CAACH,SAAS,KAAK,UAAU,EAAE;MAC/D8P,SAAS,CAAC,CAAC;IACb;EACF,CAAC;EAED,MAAMiB,sBAAsB,GAAGtV,CAAC,IAAI;IAClCoU,QAAQ,CAAC;MAAEvN,IAAI,EAAE,kBAAkB;MAAE0N,OAAO,EAAEvU,CAAC,CAACwU,MAAM,CAACnE,IAAI,CAAC0E,IAAI,CAACJ;IAAO,CAAC,CAAC;EAC5E,CAAC;EAED,MAAMY,YAAY,GAAGvV,CAAC,IAAI;IACxBoU,QAAQ,CAAC;MAAEvN,IAAI,EAAE,kBAAkB;MAAE0N,OAAO,EAAEvU,CAAC,CAACwV;IAAQ,CAAC,CAAC;EAC5D,CAAC;EAED,MAAMC,SAAS,GAAGA,CAAA,KAAM;IACtBrB,QAAQ,CAAC;MAAEvN,IAAI,EAAE,oBAAoB;MAAE0N,OAAO,EAAE;IAAK,CAAC,CAAC;EACzD,CAAC;EAED,MAAMmB,aAAa,GAAGA,CAAA,KAAM;IAC1BtB,QAAQ,CAAC;MAAEvN,IAAI,EAAE,oBAAoB;MAAE0N,OAAO,EAAE;IAAM,CAAC,CAAC;EAC1D,CAAC;EAED7V,gDAAS,CAAC,MAAM;IACdkL,GAAG,CAAC+L,WAAW,CAAChC,2EAAS,CAACiC,kBAAkB,EAAEtB,mBAAmB,CAAC;IAClE1K,GAAG,CAAC+L,WAAW,CAAChC,2EAAS,CAACkC,eAAe,EAAEX,gBAAgB,CAAC;IAC5DtL,GAAG,CAAC+L,WAAW,CAAChC,2EAAS,CAACmC,oBAAoB,EAAEd,oBAAoB,CAAC;IACrEpL,GAAG,CAAC+L,WAAW,CAAChC,2EAAS,CAACoC,kBAAkB,EAAEd,kBAAkB,CAAC;IACjErL,GAAG,CAAC+L,WAAW,CAAChC,2EAAS,CAACqC,sBAAsB,EAAElB,sBAAsB,CAAC;IACzElL,GAAG,CAAC+L,WAAW,CAAChC,2EAAS,CAACsC,sBAAsB,EAAEX,sBAAsB,CAAC;IACzE;IACAvU,MAAM,CAACmV,UAAU,CAAC,oBAAoB,CAAC,CAAC1U,gBAAgB,CAAC,QAAQ,EAAE+T,YAAY,CAAC;IAChFxU,MAAM,CAACS,gBAAgB,CAAC,SAAS,EAAEiU,SAAS,CAAC;IAC7C1U,MAAM,CAACS,gBAAgB,CAAC,aAAa,EAAEkU,aAAa,CAAC;IACrD;IACA,OAAO,MAAM;MACX3U,MAAM,CAACU,mBAAmB,CAAC,QAAQ,EAAE8T,YAAY,CAAC;MAClDxU,MAAM,CAACU,mBAAmB,CAAC,SAAS,EAAEgU,SAAS,CAAC;MAChD1U,MAAM,CAACU,mBAAmB,CAAC,aAAa,EAAEiU,aAAa,CAAC;IAC1D,CAAC;EACH,CAAC,EAAE,CAAC9L,GAAG,CAAC,CAAC;;EAET;AACF;AACA;EACElL,gDAAS,CAAC,MAAM;IACd0V,QAAQ,CAAC;MAAEvN,IAAI,EAAE,kBAAkB;MAAE0N,OAAO,EAAEnV;IAAa,CAAC,CAAC;IAE7DsM,aAAa,CAAC3K,MAAM,CAAC6K,YAAY,CAACM,OAAO,CAAC4H,kEAAuB,CAAC,CAAC;IACnE/J,WAAW,CAAChJ,MAAM,CAAC6K,YAAY,CAACM,OAAO,CAAC6H,gEAAqB,CAAC,CAAC;IAC/D9F,WAAW,CAACmH,IAAI,CAACC,KAAK,CAACtU,MAAM,CAAC6K,YAAY,CAACM,OAAO,CAAC8H,+DAAoB,CAAC,CAAC,IAAIhL,KAAK,CAAChG,QAAQ,CAAC;EAC9F,CAAC,EAAE,EAAE,CAAC;;EAEN;AACF;AACA;EACEtE,gDAAS,CAAC,MAAM;IACd,IAAIqC,MAAM,CAACoL,QAAQ,CAACuC,IAAI,KAAK,UAAU,EAAE;MACvCpP,iBAAiB,CAAC,IAAI,CAAC;IACzB;IAEA,MAAM6W,mBAAmB,GAAGA,CAAA,KAAM;MAChC,IAAIpV,MAAM,CAACoL,QAAQ,CAACuC,IAAI,KAAK,UAAU,EAAE;QACvCpP,iBAAiB,CAAC,IAAI,CAAC;MACzB,CAAC,MAAM;QACLA,iBAAiB,CAAC,KAAK,CAAC;MAC1B;IACF,CAAC;IAEDyB,MAAM,CAACS,gBAAgB,CAAC,UAAU,EAAE2U,mBAAmB,CAAC;IAExD,OAAO,MAAM;MACXpV,MAAM,CAACU,mBAAmB,CAAC,UAAU,EAAE0U,mBAAmB,CAAC;IAC7D,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;;EAEN;AACF;AACA;EACE,MAAM7W,iBAAiB,GAAGiV,OAAO,IAAI;IACnCH,QAAQ,CAAC;MAAEvN,IAAI,EAAE,qBAAqB;MAAE0N;IAAQ,CAAC,CAAC;EACpD,CAAC;EAED,MAAM7I,aAAa,GAAGgC,UAAU,IAAI;IAClC0G,QAAQ,CAAC;MAAEvN,IAAI,EAAE,iBAAiB;MAAE0N,OAAO,EAAE7G;IAAW,CAAC,CAAC;EAC5D,CAAC;EAED,MAAM3D,WAAW,GAAGvK,QAAQ,IAAI;IAC9B4U,QAAQ,CAAC;MAAEvN,IAAI,EAAE,eAAe;MAAE0N,OAAO,EAAE/U;IAAS,CAAC,CAAC;EACxD,CAAC;EAED,MAAMsK,SAAS,GAAGnH,MAAM,IAAI;IAC1ByR,QAAQ,CAAC;MAAEvN,IAAI,EAAE,YAAY;MAAE0N,OAAO,EAAE5R;IAAO,CAAC,CAAC;EACnD,CAAC;EAED,MAAMqH,WAAW,GAAGpH,QAAQ,IAAI;IAC9BwR,QAAQ,CAAC;MAAEvN,IAAI,EAAE,cAAc;MAAE0N,OAAO,EAAE3R;IAAS,CAAC,CAAC;EACvD,CAAC;EAED,MAAMqL,WAAW,GAAGoC,IAAI,IAAI;IAC1B+D,QAAQ,CAAC;MAAEvN,IAAI,EAAE,cAAc;MAAE0N,OAAO,EAAElE;IAAK,CAAC,CAAC;EACnD,CAAC;EAED,MAAM5Q,cAAc,GAAGF,WAAW,IAAI;IACpC6U,QAAQ,CAAC;MAAEvN,IAAI,EAAE,kBAAkB;MAAE0N,OAAO,EAAEhV;IAAY,CAAC,CAAC;EAC9D,CAAC;EAED,MAAMG,eAAe,GAAGS,EAAE,IAAI;IAC5BiU,QAAQ,CAAC;MAAEvN,IAAI,EAAE,mBAAmB;MAAE0N,OAAO,EAAEpU;IAAG,CAAC,CAAC;EACtD,CAAC;EAED,MAAMR,iBAAiB,GAAG6E,IAAI,IAAI;IAChC4P,QAAQ,CAAC;MAAEvN,IAAI,EAAE,sBAAsB;MAAE0N,OAAO,EAAE/P;IAAK,CAAC,CAAC;EAC3D,CAAC;;EAED;AACF;AACA;EACE,MAAM4R,KAAK,GAAG1C,8CAAO,CAAC,OAAO;IAC3B,GAAG1K,KAAK;IACRY,GAAG;IACHqE,WAAW;IACXvC,aAAa;IACb3B,WAAW;IACXD,SAAS;IACTE,WAAW;IACXvK,cAAc;IACdH,iBAAiB;IACjBI,eAAe;IACfC,iBAAiB;IACjB2U,mBAAmB;IACnBQ,sBAAsB;IACtBE,oBAAoB;IACpBC,kBAAkB;IAClBC,gBAAgB;IAChBI;EACF,CAAC,CAAC,CAAC;EAEH,oBACE7W,0DAAA,CAACwV,UAAU,CAACoC,QAAQ;IAACpS,KAAK,EAAEmS;EAAM,GAC/B/N,QACkB,CAAC;AAE1B,CAAC;;;;;;;;;;;;;;;;AC1L8E;AACmB;AAElG,MAAM4F,WAAW,GAAGA,CAACjF,KAAK,EAAEuL,OAAO,KAAK;EACtC,IAAIA,OAAO,EAAE;IACXxT,MAAM,CAAC6K,YAAY,CAACC,OAAO,CAACmI,4DAAoB,EAAEoB,IAAI,CAACkB,SAAS,CAAC/B,OAAO,CAAC,CAAC;EAC5E,CAAC,MAAM;IACLxT,MAAM,CAAC6K,YAAY,CAACQ,UAAU,CAAC4H,4DAAoB,CAAC;EACtD;EAEA,OAAO;IACL,GAAGhL,KAAK;IACRhG,QAAQ,EAAEuR;EACZ,CAAC;AACH,CAAC;AAED,MAAM7I,aAAa,GAAGA,CAAC1C,KAAK,EAAEuL,OAAO,KAAK;EACxC,IAAIA,OAAO,EAAE;IACXxT,MAAM,CAAC6K,YAAY,CAACC,OAAO,CAACiI,+DAAuB,EAAES,OAAO,CAAC;EAC/D,CAAC,MAAM;IACLxT,MAAM,CAAC6K,YAAY,CAACQ,UAAU,CAAC0H,+DAAuB,CAAC;EACzD;EAEA,OAAO;IACL,GAAG9K,KAAK;IACR0E,UAAU,EAAE6G;EACd,CAAC;AACH,CAAC;AAED,MAAMxK,WAAW,GAAGA,CAACf,KAAK,EAAEuL,OAAO,KAAK;EACtC,IAAIA,OAAO,EAAE;IACXxT,MAAM,CAAC6K,YAAY,CAACC,OAAO,CAACkI,6DAAqB,EAAEQ,OAAO,CAAC;EAC7D,CAAC,MAAM;IACLxT,MAAM,CAAC6K,YAAY,CAACQ,UAAU,CAAC2H,6DAAqB,CAAC;EACvD;EAEA,OAAO;IACL,GAAG/K,KAAK;IACRxJ,QAAQ,EAAE+U;EACZ,CAAC;AACH,CAAC;AAED,MAAMjV,iBAAiB,GAAGA,CAAC0J,KAAK,EAAEuL,OAAO,KAAK;EAC5C,OAAO;IACL,GAAGvL,KAAK;IACR3J,UAAU,EAAEkV;EACd,CAAC;AACH,CAAC;AAED,MAAMgC,eAAe,GAAGA,CAACvN,KAAK,EAAEuL,OAAO,KAAK;EAC1C,OAAO;IACL,GAAGvL,KAAK;IACR5J,YAAY,EAAEmV;EAChB,CAAC;AACH,CAAC;AAED,MAAMzK,SAAS,GAAGA,CAACd,KAAK,EAAEuL,OAAO,KAAK;EACpC,OAAO;IACL,GAAGvL,KAAK;IACRrG,MAAM,EAAE4R;EACV,CAAC;AACH,CAAC;AAED,MAAMvK,WAAW,GAAGA,CAAChB,KAAK,EAAEuL,OAAO,KAAK;EACtC,OAAO;IACL,GAAGvL,KAAK;IACRpG,QAAQ,EAAEiQ,0EAAiB,CAAC0B,OAAO,CAAC,CAACiC,OAAO,CAAC;EAC/C,CAAC;AACH,CAAC;AAED,MAAMC,UAAU,GAAGA,CAACzN,KAAK,EAAEuL,OAAO,KAAK;EACrC,OAAO;IACL,GAAGvL,KAAK;IACRtE,OAAO,EAAE2N,yEAAgB,CAACkC,OAAO,CAAC;IAClC3R,QAAQ,EAAE,CAAC,GAAGoG,KAAK,CAACpG,QAAQ,EAAEyP,yEAAgB,CAACkC,OAAO,CAAC;EACzD,CAAC;AACH,CAAC;AAED,MAAMmC,QAAQ,GAAGA,CAAC1N,KAAK,EAAEuL,OAAO,KAAK;EACnC,OAAO;IACL,GAAGvL,KAAK;IACRnG,KAAK,EAAE0R;EACT,CAAC;AACH,CAAC;AAED,MAAMoC,gBAAgB,GAAGA,CAAC3N,KAAK,EAAEuL,OAAO,KAAK;EAC3C,OAAO;IACL,GAAGvL,KAAK;IACRjG,aAAa,EAAEwR;EACjB,CAAC;AACH,CAAC;AAED,MAAMqC,cAAc,GAAGA,CAAC5N,KAAK,EAAEuL,OAAO,KAAK;EACzC,OAAO;IACL,GAAGvL,KAAK;IACRlG,WAAW,EAAEyR;EACf,CAAC;AACH,CAAC;AAED,MAAM9U,cAAc,GAAGA,CAACuJ,KAAK,EAAEuL,OAAO,KAAK;EACzC,OAAO;IACL,GAAGvL,KAAK;IACRzJ,WAAW,EAAEgV;EACf,CAAC;AACH,CAAC;AAED,MAAM7U,eAAe,GAAGA,CAACsJ,KAAK,EAAEuL,OAAO,KAAK;EAC1C,OAAO;IACL,GAAGvL,KAAK;IACRa,YAAY,EAAE0K;EAChB,CAAC;AACH,CAAC;AAED,MAAM5U,iBAAiB,GAAGA,CAACqJ,KAAK,EAAEuL,OAAO,KAAK;EAC5C,OAAO;IACL,GAAGvL,KAAK;IACRtB,cAAc,EAAE6M;EAClB,CAAC;AACH,CAAC;AAED,MAAMsC,cAAc,GAAGA,CAAC7N,KAAK,EAAEuL,OAAO,KAAK;EACzC,OAAO;IACL,GAAGvL,KAAK;IACRV,QAAQ,EAAEiM;EACZ,CAAC;AACH,CAAC;AAED,MAAMuC,gBAAgB,GAAGA,CAAC9N,KAAK,EAAEuL,OAAO,KAAK;EAC3C,OAAO;IACL,GAAGvL,KAAK;IACR/F,UAAU,EAAEsR;EACd,CAAC;AACH,CAAC;AAEM,MAAMwC,UAAU,GAAG;EACxBC,mBAAmB,EAAE1X,iBAAiB;EACtC2X,gBAAgB,EAAEV,eAAe;EACjCW,YAAY,EAAEjJ,WAAW;EACzBkJ,eAAe,EAAEzL,aAAa;EAC9B0L,aAAa,EAAErN,WAAW;EAC1BsN,UAAU,EAAEvN,SAAS;EACrBwN,WAAW,EAAEb,UAAU;EACvBc,YAAY,EAAEvN,WAAW;EACzBwN,SAAS,EAAEd,QAAQ;EACnBe,gBAAgB,EAAEd,gBAAgB;EAClCe,gBAAgB,EAAEd,cAAc;EAChCe,gBAAgB,EAAElY,cAAc;EAChCmY,iBAAiB,EAAElY,eAAe;EAClCmY,oBAAoB,EAAElY,iBAAiB;EACvCmY,gBAAgB,EAAEjB,cAAc;EAChCkB,kBAAkB,EAAEjB;AACtB,CAAC;;;;;;;;;;;;;;;;ACvJM,MAAM9C,oBAAoB,GAAG,kBAAkB;AAC/C,MAAMF,uBAAuB,GAAG,qBAAqB;AACrD,MAAMC,qBAAqB,GAAG,mBAAmB;;;;;;;;;;;;;;;;ACFd;AAEnC,MAAMH,YAAY,GAAG;EAC1BxU,YAAY,EAAE,IAAI;EAClBsO,UAAU,EAAE,IAAI;EAChBlO,QAAQ,EAAE,IAAI;EACdmD,MAAM,EAAE,IAAI;EACZC,QAAQ,EAAE,EAAE;EACZrD,WAAW,EAAE,CAAC;EACdsK,YAAY,EAAE,IAAI;EAClBhH,KAAK,EAAE,IAAI;EACXC,WAAW,EAAE,IAAI;EACjBC,aAAa,EAAE,KAAK;EACpB1D,UAAU,EAAE,KAAK;EACjBiJ,QAAQ,EAAEvH,MAAM,CAACmV,UAAU,CAAC,oBAAoB,CAAC,CAACV,OAAO;EACzDvS,UAAU,EAAE,KAAK;EACjBD,QAAQ,EAAE;IAAEoL,KAAK,EAAE,IAAI;IAAE7K,MAAM,EAAE;EAAK;AACxC,CAAC;AAEM,MAAMsQ,OAAO,GAAGA,CAAC7K,KAAK,EAAEgP,MAAM,KAAK;EACxC,MAAM;IAAEnR,IAAI;IAAE0N;EAAQ,CAAC,GAAGyD,MAAM;EAEhC,MAAMC,EAAE,GAAGlB,oDAAU,CAAClQ,IAAI,CAAC;EAE3B,IAAIoR,EAAE,EAAE;IACN,MAAMC,cAAc,GAAGD,EAAE,CAACE,IAAI,CAAC,SAAI,EAAEnP,KAAK,EAAEuL,OAAO,CAAC;IACpD,OAAO2D,cAAc,CAAC,CAAC;EACzB;EAEA,OAAOlP,KAAK;AACd,CAAC;;;;;;;;;;;;;;;;;AC9BiC;AAEY;AAEvC,MAAMjK,MAAM,GAAGA,CAAA,KAAMqZ,iDAAU,CAACnE,wDAAU,CAAC;;;;;;;;;;;;;;ACJ3C,MAAMvK,UAAU,GAAGE,GAAG,IAAI;EAC/B,MAAMqI,OAAO,GAAG,MAAAA,CAAA,KAAYrI,GAAG,CAACyO,SAAS,CAAC,CAAC;EAE3C,MAAM5L,eAAe,GAAG,MAAAA,CAAA,KAAY;IAClC,MAAM0D,QAAQ,GAAG,MAAM8B,OAAO,CAAC,CAAC;IAChC,OAAO9B,QAAQ,EAAEmI,gBAAgB,CAACC,oBAAoB;EACxD,CAAC;EAED,MAAMtO,WAAW,GAAG,MAAMzK,QAAQ,IAAI;IACpC,MAAMyS,OAAO,CAAC,CAAC;IACf,OAAOrI,GAAG,CAAC4O,SAAS,CAAChZ,QAAQ,CAAC;EAChC,CAAC;EAED,MAAM0K,aAAa,GAAG,MAAAA,CAAOvH,MAAM,EAAEnD,QAAQ,KAAK;IAChD,MAAMyS,OAAO,CAAC,CAAC;IAEf,MAAMwG,SAAS,GAAG,MAAM9V,MAAM,CAAC6H,OAAO,CAAChL,QAAQ,CAAC;IAEhD,MAAMkZ,WAAW,GAAG,EAAE;IACtB,IAAIhO,eAAe,GAAG+N,SAAS,CAAC7V,QAAQ;IAExC,OAAO8H,eAAe,CAAClH,MAAM,EAAE;MAC7BkH,eAAe,CAAClF,GAAG,CAACC,GAAG,IAAIiT,WAAW,CAACC,IAAI,CAAClT,GAAG,CAAC,CAAC;MAEjD,IAAI;QACF,MAAM0K,QAAQ,GAAG,MAAMxN,MAAM,CAACiW,gBAAgB,CAAC,CAAC;QAChDlO,eAAe,GAAGyF,QAAQ,CAACE,IAAI,CAACzN,QAAQ;MAC1C,CAAC,CAAC,OAAOiC,GAAG,EAAE;QACZ6F,eAAe,GAAG,EAAE;MACtB;IACF;IAEA,OAAOgO,WAAW;EACpB,CAAC;EAED,OAAO;IAAEzG,OAAO;IAAExF,eAAe;IAAExC,WAAW;IAAEC;EAAc,CAAC;AACjE,CAAC;;;;;;;;;;ACpCD;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;UCAA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA;WACA;WACA,iCAAiC,WAAW;WAC5C;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;;;;;;;;;;;;;;;;;;;;ACNyB;AACoB;AACiB;AACW;AACb;AACP;AACS;AAEvD,eAAe6O,IAAIA,CAAEC,SAAS,EAAE7E,OAAO,EAAE;EAC9C,MAAMvK,GAAG,GAAG,IAAIkP,yEAAO,CAAC;IACtBG,OAAO,EAAE9E,OAAO,CAAC8E,OAAO;IACxBC,SAAS,EAAE/E,OAAO,CAAC+E,SAAS;IAC5BxL,UAAU,EAAE3M,MAAM,CAAC6K,YAAY,CAACM,OAAO,CAAC4H,wEAAuB,CAAC,IAAI,EAAE;IACtEqF,WAAW,EAAEhF,OAAO,CAACgF;EACvB,CAAC,CAAC;EAEF,MAAMC,IAAI,GAAGP,4DAAU,CAACG,SAAS,CAAC;EAClC,IAAI5Z,YAAY;EAChB,IAAI;IACF,MAAMia,MAAM,GAAG,MAAMpJ,0EAAiB,CAACkE,OAAO,CAACmF,oBAAoB,CAAC;IACpEla,YAAY,GAAGia,MAAM,CAACja,YAAY;EACpC,CAAC,CAAC,OAAOY,CAAC,EAAE;IACVZ,YAAY,GAAG,aAAa;EAC9B;EACAga,IAAI,CAACG,MAAM,eACT9a,0DAAA,CAACyV,+DAAW;IAACtK,GAAG,EAAEA,GAAI;IAACxK,YAAY,EAAEA,YAAa;IAAC+U,OAAO,EAAEA;EAAQ,gBAClE1V,0DAAA,CAACU,mFAAY,MAAE,CACJ,CACf,CAAC;AACH,C","sources":["webpack://@defra/flood-webchat/./src/client/components/availability/availability.jsx","webpack://@defra/flood-webchat/./src/client/components/chat/chat.jsx","webpack://@defra/flood-webchat/./src/client/components/errorSummary/error-summary.jsx","webpack://@defra/flood-webchat/./src/client/components/live-region.jsx","webpack://@defra/flood-webchat/./src/client/components/message/message.jsx","webpack://@defra/flood-webchat/./src/client/components/panel/panel-footer.jsx","webpack://@defra/flood-webchat/./src/client/components/panel/panel-header.jsx","webpack://@defra/flood-webchat/./src/client/components/panel/panel.jsx","webpack://@defra/flood-webchat/./src/client/components/screens/end-chat.jsx","webpack://@defra/flood-webchat/./src/client/components/screens/feedback.jsx","webpack://@defra/flood-webchat/./src/client/components/screens/pre-chat.jsx","webpack://@defra/flood-webchat/./src/client/components/screens/request-chat.jsx","webpack://@defra/flood-webchat/./src/client/components/screens/settings.jsx","webpack://@defra/flood-webchat/./src/client/components/screens/unavailable.jsx","webpack://@defra/flood-webchat/./src/client/components/skip-link.jsx","webpack://@defra/flood-webchat/./src/client/hooks/useFocusedElements.js","webpack://@defra/flood-webchat/./src/client/hooks/useTextareaAutosize.js","webpack://@defra/flood-webchat/./src/client/lib/agent-status-headline.js","webpack://@defra/flood-webchat/./src/client/lib/check-availability.js","webpack://@defra/flood-webchat/./src/client/lib/classnames.js","webpack://@defra/flood-webchat/./src/client/lib/history.js","webpack://@defra/flood-webchat/./src/client/lib/message-notification.js","webpack://@defra/flood-webchat/./src/client/lib/transform-messages.js","webpack://@defra/flood-webchat/./src/client/store/AppProvider.jsx","webpack://@defra/flood-webchat/./src/client/store/actions-map.js","webpack://@defra/flood-webchat/./src/client/store/constants.js","webpack://@defra/flood-webchat/./src/client/store/reducer.js","webpack://@defra/flood-webchat/./src/client/store/useApp.js","webpack://@defra/flood-webchat/./src/client/store/useChatSdk.js","webpack://@defra/flood-webchat/external commonjs \"@nice-devone/nice-cxone-chat-web-sdk\"","webpack://@defra/flood-webchat/external commonjs \"lodash.debounce\"","webpack://@defra/flood-webchat/external commonjs \"luxon\"","webpack://@defra/flood-webchat/external commonjs \"react\"","webpack://@defra/flood-webchat/external commonjs \"react-dom\"","webpack://@defra/flood-webchat/external commonjs \"react-dom/client\"","webpack://@defra/flood-webchat/external commonjs \"uuid\"","webpack://@defra/flood-webchat/webpack/bootstrap","webpack://@defra/flood-webchat/webpack/runtime/compat get default export","webpack://@defra/flood-webchat/webpack/runtime/define property getters","webpack://@defra/flood-webchat/webpack/runtime/hasOwnProperty shorthand","webpack://@defra/flood-webchat/webpack/runtime/make namespace object","webpack://@defra/flood-webchat/./src/client/index.jsx"],"sourcesContent":["import React, { useEffect, useRef } from 'react'\n\nimport { classnames } from '../../lib/classnames'\nimport { Panel } from '../panel/panel.jsx'\nimport { SkipLink } from '../skip-link.jsx'\n\nimport { useApp } from '../../store/useApp'\nimport { historyPushState, historyReplaceState } from '../../lib/history.js'\nimport { LiveRegion } from '../live-region.jsx'\n\nexport function Availability () {\n const { availability, isChatOpen, setChatVisibility, unseenCount, threadId, setUnseenCount, setInstigatorId, setLiveRegionText } = useApp()\n\n const buttonRef = useRef()\n\n const showUnseenCount = unseenCount > 0 && !isChatOpen\n\n const messageText = unseenCount > 1 ? 'new messages' : 'new message'\n\n const onClick = e => {\n e.preventDefault()\n setUnseenCount(0)\n setChatVisibility(!isChatOpen)\n setInstigatorId(e.target.id)\n\n if (!isChatOpen) {\n historyPushState()\n } else {\n historyReplaceState()\n }\n }\n\n const onKeyDown = event => {\n if (event.key === ' ') {\n event.preventDefault()\n }\n }\n\n const onKeyUp = event => {\n if (event.key === ' ') {\n setUnseenCount(0)\n setChatVisibility(!isChatOpen)\n }\n }\n\n useEffect(() => {\n if (showUnseenCount) {\n setLiveRegionText(`Floodline webchat - ${unseenCount} ${messageText}`)\n }\n\n return () => {\n setLiveRegionText()\n }\n }, [unseenCount, isChatOpen])\n\n useEffect(() => {\n const onScroll = () => {\n if (!threadId) {\n return\n }\n\n if (availability !== 'AVAILABLE') {\n return\n }\n\n const rect = buttonRef.current.parentElement.getBoundingClientRect()\n\n const isBelowFold = rect.top + 35 > (window.innerHeight || document.documentElement.clientHeight)\n const isFixed = !isChatOpen && isBelowFold\n\n document.documentElement.classList.toggle('wc-u-scroll-padding', isFixed)\n document.body.classList.toggle('wc-u-scroll-padding', isFixed)\n buttonRef.current.classList.toggle('wc-availability--fixed', isFixed)\n }\n\n document.addEventListener('scroll', onScroll)\n onScroll()\n\n return () => {\n document.removeEventListener('scroll', onScroll)\n }\n }, [threadId, isChatOpen, availability])\n\n switch (availability) {\n case 'AVAILABLE':\n return (\n <>\n <div\n className={classnames('wc-availability', isChatOpen && 'wc-open')}\n ref={buttonRef}\n >\n <div className='wc-availability__inner'>\n <a\n id='webchat-start-chat-link'\n className='wc-availability__link'\n href='#webchat'\n draggable='false'\n onClick={onClick}\n onKeyUp={onKeyUp}\n onKeyDown={onKeyDown}\n role='button'\n data-module='govuk-button'\n >\n {!threadId ? <>Start chat</> : <>Show chat</>}\n {showUnseenCount\n ? (\n <span className='wc-availability__unseen'>\n {unseenCount}\n <span className='govuk-visually-hidden'> {messageText}</span>\n </span>\n )\n : null}\n </a>\n </div>\n </div>\n {!isChatOpen ? <LiveRegion /> : <Panel />}\n <SkipLink />\n </>\n )\n case 'EXISTING':\n case 'UNAVAILABLE':\n return (\n <p className='govuk-body'>When it is available, a 'start chat' link will appear.</p>\n )\n default:\n return (\n <p className='govuk-body'>Checking availability</p>\n )\n }\n}\n","import React, { useEffect, useRef, useState } from 'react'\n\nimport { PanelHeader } from '../panel/panel-header.jsx'\nimport { PanelFooter } from '../panel/panel-footer.jsx'\nimport { Message } from '../message/message.jsx'\n\nimport { useApp } from '../../store/useApp.js'\nimport { useTextareaAutosize } from '../../hooks/useTextareaAutosize.js'\nimport { formatTranscript } from '../../lib/transform-messages.js'\nimport { agentStatusHeadline } from '../../lib/agent-status-headline.js'\n\nexport function Chat ({ onEndChatScreen, onSettingsScreen }) {\n const { availability, thread, messages, agent, agentStatus, isAgentTyping, isChatOpen, settings, isKeyboard, setLiveRegionText } = useApp()\n\n const [userMessage, setUserMessage] = useState('')\n const [focusVisibleWithin, setFocusVisibleWithin] = useState(false)\n\n const messageRef = useRef()\n\n useTextareaAutosize(messageRef.current, userMessage)\n\n useEffect(() => {\n if (settings.scroll && messages.length !== 0) {\n const chatBody = document.querySelector('.wc-body')\n chatBody.scrollTop = chatBody.scrollHeight\n }\n }, [messages, isAgentTyping])\n\n useEffect(() => {\n const label = document.querySelector('.wc-form__label')\n\n if (userMessage.length === 0) {\n label.classList.remove('govuk-visually-hidden')\n } else {\n label.classList.add('govuk-visually-hidden')\n }\n }, [userMessage])\n\n const onChange = e => {\n setUserMessage(e.target?.value)\n }\n\n const agentName = agent?.nickname || agent?.firstName\n\n const connectionHeadlineText = agentStatusHeadline(availability, agentStatus, agentName)\n\n useEffect(() => {\n if (connectionHeadlineText) {\n setLiveRegionText(`Floodline webchat - ${connectionHeadlineText}`)\n }\n\n return () => {\n setLiveRegionText()\n }\n }, [connectionHeadlineText])\n\n useEffect(() => {\n if (isAgentTyping && isChatOpen) {\n setLiveRegionText(`${agentName} is typing...`)\n }\n\n return () => {\n setLiveRegionText()\n }\n }, [isAgentTyping, isChatOpen])\n\n useEffect(() => {\n const lastAgentMessage = messages[messages.length - 1]\n\n if (agentStatus !== 'closed' && lastAgentMessage?.direction === 'outbound') {\n setLiveRegionText(`${agentName} said: ${lastAgentMessage.text}`)\n }\n\n return () => {\n setLiveRegionText()\n }\n }, [messages])\n\n const sendMessage = () => {\n if (messageRef.current.value.length === 0 || agentStatus === 'closed') {\n return\n }\n\n try {\n const message = messageRef.current.value.trim()\n thread.sendTextMessage(message)\n setLiveRegionText(`You said: ${message}`)\n } catch (err) {\n console.log('[Chat Error] sendMessage', err)\n }\n\n setUserMessage('')\n }\n\n const handleSubmit = e => {\n e.preventDefault()\n sendMessage()\n }\n\n const saveChat = () => {\n const transcript = formatTranscript(messages)\n\n const saveChatLink = document.querySelector('#transcript-download')\n\n saveChatLink.setAttribute('href', `data:text/plain;charset=utf-8,${transcript}`)\n }\n\n const handleKeyPress = e => {\n if (e.key === 'Enter' && !e.shiftKey) {\n switch (e.target.id) {\n case 'text-area':\n e.preventDefault()\n sendMessage()\n break\n case 'end-chat':\n onEndChatScreen(e)\n break\n case 'wc-settings':\n onSettingsScreen(e)\n break\n case 'transcript-download':\n saveChat()\n break\n default:\n break\n }\n }\n if (e.key === ' ') {\n if (e.target.id === 'end-chat') {\n onEndChatScreen(e)\n }\n if (e.target.id === 'wc-settings') {\n onSettingsScreen(e)\n }\n }\n }\n\n return (\n <>\n <PanelHeader />\n\n <div className='wc-status'>\n <p className='wc-status__availability'>{connectionHeadlineText}</p>\n <a\n id='end-chat'\n className='wc-status__link'\n href='#'\n data-module='govuk-button'\n role='button'\n onClick={onEndChatScreen}\n onKeyDown={handleKeyPress}\n >\n End chat\n </a>\n </div>\n\n <div className='wc-body' tabIndex='0'>\n <ul className='wc-chat'>\n {messages.length\n ? messages.map((msg, index) => <Message key={msg.id} message={msg} previousMessage={messages[index - 1]} />)\n : null}\n {isAgentTyping\n ? (\n <li className='wc-chat__message outbound'>\n <div className='wc-chat__from'>{agentName} is typing</div>\n <div className='wc-chat__text outbound'>\n <svg width='28' height='16' x='0px' y='0px' viewBox='0 0 28 16'>\n <circle stroke='none' cx='3' cy='8' r='3' fill='currentColor' />\n <circle stroke='none' cx='14' cy='8' r='3' fill='currentColor' />\n <circle stroke='none' cx='25' cy='8' r='3' fill='currentColor' />\n </svg>\n </div>\n </li>\n )\n : null}\n </ul>\n </div>\n\n <PanelFooter>\n <form className={`wc-form${focusVisibleWithin ? ' wc-focus-within' : ''}`} noValidate onSubmit={handleSubmit}>\n <label className='govuk-label wc-form__label' htmlFor='wc-form-textarea'>\n Your message<span className='govuk-visually-hidden'> (enter key submits)</span>\n </label>\n\n <textarea\n ref={messageRef}\n rows='1'\n aria-required='true'\n className='wc-form__textarea'\n id='text-area'\n name='message'\n onChange={onChange}\n onKeyDown={handleKeyPress}\n onFocus={() => { setFocusVisibleWithin(isKeyboard) }}\n onBlur={() => { setFocusVisibleWithin(false) }}\n value={userMessage}\n />\n\n <input\n type='submit'\n className='wc-form__button govuk-button'\n value='Send'\n data-prevent-double-click='true'\n />\n </form>\n\n <div className='wc-footer__settings'>\n <a\n href='#'\n id='wc-settings'\n className='wc-footer__settings-link'\n data-module='govuk-button'\n onKeyDown={handleKeyPress}\n onClick={onSettingsScreen}\n >\n Settings\n </a>\n <a\n href='#'\n id='transcript-download'\n className='wc-footer__settings-link'\n data-module='govuk-button'\n download='floodline-webchat-transcript.txt'\n onKeyDown={handleKeyPress}\n onClick={saveChat}\n >\n Save chat\n </a>\n </div>\n </PanelFooter>\n </>\n )\n}\n","import React from 'react'\n\nexport const ErrorSummary = ({ errors }) => {\n const errs = Object.keys(errors)\n\n const goToInput = e => {\n e.preventDefault()\n const key = e.target.getAttribute('data-key')\n document.querySelector(`#wc-${key}`).focus()\n }\n\n if (errs.length === 0) {\n return null\n }\n\n return (\n <div className='govuk-error-summary govuk-!-static-margin-bottom-7' data-module='govuk-error-summary' tabIndex='-1'>\n <div role='alert'>\n <h2 id='wc-error' className='wc-error-summary__title govuk-error-summary__title'>\n There is a problem\n </h2>\n <div className='govuk-error-summary__body'>\n <ul className='govuk-list govuk-error-summary__list wc-error-summary__list'>\n {errs.map(key => (\n <li key={key}>\n <a href='#' data-key={key} onClick={goToInput}>{errors[key]}</a>\n </li>\n ))}\n </ul>\n </div>\n </div>\n </div>\n )\n}\n","import React, { useEffect, useState, useCallback } from 'react'\nimport debounce from 'lodash.debounce'\nimport { useApp } from '../store/useApp'\n\nconst DEBOUNCE_MILLISECONDS = 2000\n\nexport const LiveRegion = () => {\n const { agentStatus, liveRegionText, setLiveRegionText } = useApp()\n\n const [textA, setTextA] = useState()\n const [textB, setTextB] = useState()\n\n const isSessionEnded = agentStatus === 'closed' || agentStatus === null\n\n const clearText = () => {\n setTextA()\n setTextB()\n }\n\n const setText = useCallback(debounce(text => {\n if (textA) {\n setTextB(text)\n } else {\n setTextA(text)\n }\n }, DEBOUNCE_MILLISECONDS), [textA, textB])\n\n useEffect(() => {\n if (liveRegionText) {\n clearText()\n setText(liveRegionText)\n }\n\n if (isSessionEnded) {\n clearText()\n setLiveRegionText()\n }\n\n return () => {\n clearText()\n setLiveRegionText()\n }\n }, [liveRegionText])\n\n return (\n <>\n <div className='wc-live' role='status' aria-atomic='true'>\n {textA}\n </div>\n <div className='wc-live' role='status' aria-atomic='true'>\n {textB}\n </div>\n </>\n )\n}\n","import React from 'react'\nimport { classnames } from '../../lib/classnames'\n\nexport function Message ({ message, previousMessage }) {\n const outbound = message.direction === 'outbound'\n\n const messageOwnerSameAsPrevious = message?.direction === previousMessage?.direction\n\n return (\n <li className={classnames('wc-chat__message', outbound ? 'outbound' : 'inbound')}>\n <div className='wc-chat__from'>\n {messageOwnerSameAsPrevious ? null : <span>{outbound ? message.assignee : 'You'}</span>}\n <span className='govuk-visually-hidden'>:</span>\n </div>\n <div className={classnames('wc-chat__text', outbound ? 'outbound' : 'inbound')}>\n {message.text}\n </div>\n </li>\n )\n}\n","import React from 'react'\n\nexport function PanelFooter ({ children }) {\n return (\n <div className='wc-footer'>\n {children}\n </div>\n )\n}\n","import React from 'react'\nimport { useApp } from '../../store/useApp.js'\nimport { historyReplaceState } from '../../lib/history.js'\n\nexport function PanelHeader () {\n const { thread, threadId, setChatVisibility, setUnseenCount, isMobile } = useApp()\n\n const onClose = e => {\n e.preventDefault()\n setChatVisibility(false)\n historyReplaceState()\n\n if (threadId) {\n thread?.lastMessageSeen()\n setUnseenCount(0)\n }\n }\n\n const BackButtonComponent = (\n <button className='wc-header__back' aria-label='Close the webchat' onClick={onClose}>\n <svg aria-hidden='true' focusable='false' width='20' height='20' viewBox='0 0 20 20'>\n <path d='M4.828,11L12.314,18.485L10.899,19.899L1,10L10.899,0.101L12.314,1.515L4.828,9L19,9L19,11L4.828,11Z' fill='currentColor' />\n </svg>\n </button>\n )\n\n const CloseButtonComponent = (\n <button className='wc-header__close' aria-label='Close the webchat' onClick={onClose}>\n <svg aria-hidden='true' focusable='false' width='20' height='20' viewBox='0 0 20 20'>\n <path d='M10,8.6L15.6,3L17,4.4L11.4,10L17,15.6L15.6,17L10,11.4L4.4,17L3,15.6L8.6,10L3,4.4L4.4,3L10,8.6Z' fill='currentColor' />\n </svg>\n </button>\n )\n\n const MinimiseButtonComponent = (\n <button className='wc-header__hide' aria-label='Minimise the webchat' onClick={onClose}>\n <svg aria-hidden='true' focusable='false' width='20' height='20' viewBox='0 0 20 20'>\n <path d='M10 14.4l-7-7L4.4 6l5.6 5.6L15.6 6 17 7.4l-7 7z' fill='currentColor' />\n </svg>\n </button>\n )\n\n const isMobileAndHasHistory = isMobile && window.history.state\n const isMobileAndNoHistory = isMobile && !window.history.state\n\n let RightButtonComponent = CloseButtonComponent\n\n if (threadId) {\n RightButtonComponent = MinimiseButtonComponent\n\n if (isMobileAndNoHistory) {\n RightButtonComponent = MinimiseButtonComponent\n }\n }\n\n if (!threadId && isMobileAndNoHistory) {\n RightButtonComponent = CloseButtonComponent\n }\n\n if (isMobileAndHasHistory) {\n RightButtonComponent = null\n }\n\n return (\n <div className='wc-header'>\n {isMobileAndHasHistory ? BackButtonComponent : null}\n\n <h2 id='wc-header' className='wc-header__title'>\n Floodline webchat\n </h2>\n\n {RightButtonComponent}\n </div>\n )\n}\n","import React, { useEffect, useState, useCallback } from 'react'\nimport { createPortal } from 'react-dom'\nimport { classnames } from '../../lib/classnames.js'\n\nimport { PreChat } from '../screens/pre-chat.jsx'\nimport { RequestChat } from '../screens/request-chat.jsx'\nimport { Chat } from '../chat/chat.jsx'\nimport { Unavailable } from '../screens/unavailable.jsx'\nimport { EndChat } from '../screens/end-chat.jsx'\nimport { Settings } from '../screens/settings.jsx'\nimport { Feedback } from '../screens/feedback.jsx'\nimport { LiveRegion } from '../live-region.jsx'\n\nimport { useApp } from '../../store/useApp.js'\nimport { useChatSdk } from '../../store/useChatSdk.js'\nimport { useFocusedElements } from '../../hooks/useFocusedElements.js'\nimport { historyReplaceState } from '../../lib/history.js'\n\nexport function Panel () {\n const { sdk, availability, instigatorId, thread, threadId, setThread, setThreadId, setChatVisibility, setMessages, setUnseenCount, isMobile, isKeyboard } = useApp()\n const { fetchThread, fetchMessages } = useChatSdk(sdk)\n\n const [screen, setScreen] = useState(threadId ? 2 : 0)\n\n useFocusedElements(screen)\n\n const onEscapeKey = useCallback(e => {\n if (e.key === 'Escape' || e.key === 'Esc') {\n if (threadId) {\n thread?.lastMessageSeen()\n setUnseenCount(0)\n }\n setChatVisibility(false)\n historyReplaceState()\n }\n }, [thread, threadId, setUnseenCount, setChatVisibility])\n\n /**\n * Focus previously focused element when closing the webchat\n */\n useEffect(() => {\n return () => {\n document.getElementById(instigatorId)?.focus()\n }\n }, [])\n\n /**\n * We need ammend classes on the body element to handle mobile behaviour\n */\n useEffect(() => {\n document.body.classList.remove('wc-u-hidden')\n document.getElementsByTagName('html')[0].classList.add('wc-u-html')\n document.body.classList.add('wc-u-body')\n return () => {\n document.getElementsByTagName('html')[0].classList.remove('wc-u-html')\n document.body.classList.remove('wc-u-body')\n }\n }, [isMobile])\n\n /**\n * Initializes the eventListener for pressing the escape key\n */\n useEffect(() => {\n document.addEventListener('keydown', onEscapeKey)\n\n return () => {\n document.removeEventListener('keydown', onEscapeKey)\n }\n }, [onEscapeKey, setChatVisibility])\n\n /**\n * Recovers the thread if there is a threadId but no thread loaded in to state\n */\n useEffect(() => {\n const recover = async () => {\n try {\n const fetchedThread = await fetchThread(threadId)\n setThread(fetchedThread)\n\n const fetchedMessages = await fetchMessages(fetchedThread, threadId)\n setMessages(fetchedMessages)\n } catch (err) {\n console.log('[Chat Error] fetchThread', err)\n\n setThreadId()\n setThread()\n setScreen(0)\n }\n }\n\n if (threadId) {\n if (thread) {\n thread.lastMessageSeen()\n setUnseenCount(0)\n setScreen(2)\n } else {\n recover()\n }\n }\n }, [thread, threadId])\n\n const handleScreenChange = newScreen => e => {\n e.preventDefault()\n setScreen(newScreen)\n }\n\n const goToPreChatScreen = handleScreenChange(0)\n const goToRequestChatScreen = handleScreenChange(1)\n const goToChatScreen = handleScreenChange(2)\n const goToEndChatScreen = handleScreenChange(3)\n const goToFeedbackScreen = handleScreenChange(4)\n const goToSettingsScreen = handleScreenChange(5)\n\n let ScreenComponent\n\n switch (screen) {\n case 0:\n ScreenComponent = <PreChat onContinue={goToRequestChatScreen} />\n break\n case 1:\n ScreenComponent = <RequestChat onPreChatScreen={goToPreChatScreen} />\n break\n case 2:\n ScreenComponent = <Chat onSettingsScreen={goToSettingsScreen} onEndChatScreen={goToEndChatScreen} />\n break\n case 3:\n ScreenComponent = <EndChat onChatScreen={goToChatScreen} onEndChatConfirm={goToFeedbackScreen} />\n break\n case 4:\n ScreenComponent = (\n <Feedback onCancel={() => {\n setChatVisibility(false)\n historyReplaceState()\n }}\n />\n )\n break\n case 5:\n ScreenComponent = <Settings onCancel={goToChatScreen} />\n break\n default:\n ScreenComponent = <PreChat onContinue={goToRequestChatScreen} />\n }\n\n if (availability === 'UNAVAILABLE') {\n ScreenComponent = <Unavailable />\n }\n\n const Component = (\n <div id='wc-panel' role='dialog' className={classnames('wc-panel', isKeyboard && 'wc-focus-visible')} tabIndex='-1' aria-modal='true' aria-labelledby='wc-header wc-subtitle'>\n <div className='wc-panel__inner'>\n {ScreenComponent}\n </div>\n <LiveRegion />\n </div>\n )\n\n return (\n <>\n {createPortal(Component, document.body)}\n </>\n )\n}\n","import React, { useEffect } from 'react'\nimport { PanelHeader } from '../panel/panel-header.jsx'\nimport { useApp } from '../../store/useApp.js'\n\nexport function EndChat ({ onChatScreen, onEndChatConfirm }) {\n const { setCustomerId, setThreadId, setMessages, agentStatus, thread, threadId, setUnseenCount, isKeyboard } = useApp()\n\n const confirmEndChat = async e => {\n e.preventDefault()\n\n window.localStorage.setItem('tmpThreadId', threadId)\n setThreadId()\n setMessages([])\n setCustomerId()\n thread.lastMessageSeen()\n setUnseenCount(0)\n\n // End chat if still open\n if (agentStatus !== 'closed') {\n thread.endChat()\n }\n\n onEndChatConfirm(e)\n }\n\n useEffect(() => {\n if (isKeyboard) {\n setTimeout(() => {\n document.querySelector('#confirm-endchat').focus()\n }, 10)\n }\n }, [])\n\n const handleKeyPress = e => {\n if ((e.key === 'Enter' || e.key === ' ') && e.target.id === 'confirm-endchat') {\n confirmEndChat(e)\n }\n if ((e.key === 'Enter' || e.key === ' ') && e.target.id === 'resume-chat') {\n onChatScreen(e)\n }\n }\n\n return (\n <>\n <PanelHeader />\n <div className='wc-body'>\n <div className='wc-content'>\n <h3 id='wc-subtitle' className='wc-heading' aria-live='polite'>Are you sure you want to end the chat?</h3>\n <div className='govuk-button-group'>\n <a\n id='confirm-endchat'\n href='#endChat'\n role='button'\n className='wc-button govuk-button'\n data-module='govuk-button'\n onClick={confirmEndChat}\n onKeyDown={handleKeyPress}\n >\n Yes, end chat\n </a>\n <a\n id='resume-chat'\n href='#resumeChat'\n role='button'\n className='wc-link govuk-link'\n data-module='govuk-button'\n onClick={onChatScreen}\n onKeyDown={handleKeyPress}\n >\n No, resume chat\n </a>\n </div>\n </div>\n </div>\n </>\n )\n}\n","import React from 'react'\nimport { PanelHeader } from '../panel/panel-header.jsx'\n\nexport function Feedback ({ onCancel }) {\n const feedbackSend = () => {\n const tmpThreadId = window.localStorage.getItem('tmpThreadId')\n window.location.href = `https://defragroup.eu.qualtrics.com/jfe/form/SV_8dgFSJcxxIfqx5Y?Id=${tmpThreadId}&Source=${window.location.href}`\n window.localStorage.removeItem('tmpThreadId')\n }\n\n const feedbackClose = async e => {\n window.localStorage.removeItem('tmpThreadId')\n onCancel(e)\n }\n\n const handleKeyPress = e => {\n if (e.key === 'Enter' || e.key === ' ') {\n if (e.target.id === 'feedback-close') {\n feedbackClose(e)\n }\n if (e.target.id === 'feedback-send') {\n feedbackSend()\n }\n }\n }\n\n return (\n <>\n <PanelHeader />\n\n <div className='wc-body'>\n <div className='wc-content'>\n <h3 id='wc-subtitle' className='wc-heading'>Give Feedback on Floodline webchat</h3>\n <p>Please note we're unable to respond to feedback.</p>\n <p>\n <a\n id='feedback-send'\n className='govuk-link'\n href='#'\n target='_blank'\n rel='noreferrer'\n onKeyDown={handleKeyPress}\n onClick={feedbackSend}\n >\n Give Feedback\n </a>\n </p>\n <p>\n <a\n id='feedback-close'\n className='wc-link govuk-link'\n href='#'\n data-module='govuk-button'\n role='button'\n onKeyDown={handleKeyPress}\n onClick={feedbackClose}\n >\n Close\n </a>\n </p>\n </div>\n </div>\n </>\n )\n}\n","import React from 'react'\nimport { PanelHeader } from '../panel/panel-header.jsx'\n\nexport function PreChat ({ onContinue }) {\n return (\n <>\n <PanelHeader />\n\n <div className='wc-body'>\n <div className='wc-content'>\n <h3 id='wc-subtitle' className='wc-heading' aria-live='polite'>What you can use webchat for</h3>\n <p>Webchat lets you talk directly to a Floodline adviser.</p>\n\n <p>You can use webchat to get:</p>\n <ul className='wc-list'>\n <li>current flood warnings and alerts in your area</li>\n <li>information on the flood warning service</li>\n <li>advice on what to do before, during and after a flood</li>\n </ul>\n <p>\n There are other ways to \n <a className='govuk-link' href='https://www.gov.uk/sign-up-for-flood-warnings' target='_blank' rel='noreferrer'>\n sign up for flood warnings\n </a>\n and \n <a className='govuk-link' href='https://www.fws.environment-agency.gov.uk/app/olr/login' target='_blank' rel='noreferrer'>\n manage your flood warnings account\n </a>.\n </p>\n <p>\n Do not use webchat to \n <a\n className='govuk-link'\n href='https://www.gov.uk/report-flood-cause'\n target='_blank'\n rel='noreferrer'\n >\n report a flood\n </a>.\n </p>\n\n <button className='govuk-button wc-button govuk-!-margin-top-1' data-module='govuk-button' onClick={onContinue}>Continue</button>\n\n <h3 className='wc-heading'>Other flood information</h3>\n\n <p>Call Floodline for all other flood and flood warning information.</p>\n <p>\n <strong>Floodline helpline</strong>\n <br />\n Telephone: 0345 988 1188\n <br />\n Textphone: 0345 602 6340\n <br />\n Open 24 hours a day, 7 days a week\n <br />\n <a className='govuk-link' href='https://gov.uk/call-charges' target='_blank' rel='noreferrer'>Find out more about call charges</a>\n </p>\n </div>\n </div>\n </>\n )\n}\n","import React, { useRef, useState, useEffect } from 'react'\nimport * as uuid from 'uuid'\n\nimport { classnames } from '../../lib/classnames.js'\nimport { PanelHeader } from '../panel/panel-header.jsx'\nimport { useApp } from '../../store/useApp.js'\nimport { useChatSdk } from '../../store/useChatSdk.js'\nimport { ErrorSummary } from '../errorSummary/error-summary.jsx'\n\nconst QUESTION_MAX_LENGTH = 500\n\nexport function RequestChat ({ onPreChatScreen }) {\n const { sdk, setCustomerId, setThreadId, setThread, setLiveRegionText } = useApp()\n const { fetchCustomerId, fetchThread } = useChatSdk(sdk)\n const [errors, setErrors] = useState({})\n const [questionLength, setQuestionLength] = useState(0)\n const [isButtonDisabled, setButtonDisabled] = useState(false)\n\n const nameRef = useRef()\n const questionRef = useRef()\n\n const isQuestionLengthValid = QUESTION_MAX_LENGTH >= questionLength\n const questionLengthRemaining = QUESTION_MAX_LENGTH - questionLength\n const questionLengthExceeded = questionLength - QUESTION_MAX_LENGTH\n\n let questionHint = `You have ${questionLengthRemaining} characters remaining`\n\n if (!isQuestionLengthValid) {\n questionHint = `You have ${questionLengthExceeded} characters too many`\n }\n\n useEffect(() => {\n if (Object.keys(errors).length) {\n document.querySelector('.govuk-error-summary')?.focus()\n }\n }, [errors])\n\n const onQuestionChange = e => {\n setQuestionLength(e.target.value.length)\n }\n\n const buttonLabel = isButtonDisabled ? 'Requesting...' : 'Request chat'\n\n useEffect(() => {\n if (isButtonDisabled) {\n setLiveRegionText(buttonLabel)\n }\n }, [isButtonDisabled])\n\n const onRequestChat = async e => {\n e.preventDefault()\n\n if (isButtonDisabled) {\n return\n }\n\n const errs = {}\n\n if (nameRef.current.value.length === 0) {\n errs.name = 'Enter your name'\n }\n\n if (questionRef.current.value.length === 0) {\n errs.question = 'Enter your question'\n }\n\n if (questionRef.current.value.length > QUESTION_MAX_LENGTH) {\n errs.question = 'Your question must be 500 characters or less'\n }\n\n if (Object.keys(errs).length === 0) {\n try {\n setButtonDisabled(true)\n const threadId = uuid.v4()\n const customerId = await fetchCustomerId()\n const thread = await fetchThread(threadId)\n\n sdk.getCustomer().setName(nameRef.current.value)\n\n await thread.startChat(questionRef.current.value || 'Begin conversation')\n\n setCustomerId(customerId)\n setThreadId(threadId)\n setThread(thread)\n thread.setCustomField('threadid', threadId)\n } catch (err) {\n console.log('[Request chat Error]', err)\n }\n }\n\n setErrors(errs)\n }\n\n return (\n <>\n <PanelHeader />\n\n <div className='wc-body'>\n <div className='wc-content'>\n <a href='#' className='wc-back-link govuk-back-link' onClick={onPreChatScreen}>\n What you can use webchat for\n </a>\n\n <ErrorSummary errors={errors} />\n\n <h3 id='wc-subtitle' className='wc-heading' aria-live='polite'>\n Your name and question\n </h3>\n\n <form>\n <div className={classnames('wc-form-group', 'govuk-form-group', errors.name && 'govuk-form-group--error')}>\n <label className='wc-label govuk-label' htmlFor='wc-name'>\n Your name\n </label>\n {errors.name && (\n <p className='govuk-error-message'>\n <span className='govuk-visually-hidden'>Error:</span> {errors.name}\n </p>\n )}\n <input\n ref={nameRef}\n className={classnames('wc-input', 'govuk-input', errors.name && 'govuk-input--error')}\n id='wc-name'\n name='name'\n type='text'\n data-testid='request-chat-user-name'\n />\n </div>\n\n <div className='wc-form-group govuk-character-count' data-module='govuk-character-count' data-maxlength='500'>\n <div className={classnames('govuk-form-group', errors.question && 'govuk-form-group--error')}>\n <label className='wc-label govuk-label' htmlFor='wc-question'>\n Your question\n </label>\n {errors.question && (\n <p className='govuk-error-message'>\n <span className='govuk-visually-hidden'>Error:</span>\n {errors.question}\n </p>\n )}\n <textarea\n ref={questionRef}\n id='wc-question'\n name='question'\n rows='5'\n aria-describedby='wc-question-info'\n onChange={onQuestionChange}\n className={classnames('wc-textarea', 'govuk-textarea', 'govuk-js-character-count', !isQuestionLengthValid || errors.question ? 'govuk-textarea--error' : '')}\n data-testid='request-chat-user-question'\n />\n <div\n id='wc-question-info'\n className='wc-hint govuk-hint govuk-char-count__msg'\n style={{ color: `${!isQuestionLengthValid ? '#d4351c' : ''}` }}\n aria-hidden='true'\n >\n {questionHint}\n </div>\n <div className='govuk-character-count__sr-status govuk-visually-hidden' aria-live='polite'>\n {questionHint}\n </div>\n </div>\n </div>\n\n <div className='wc-inset-text govuk-inset-text'>\n By selecting 'Request chat' you agree to the terms of our \n <a href='https://check-for-flooding.service.gov.uk/privacy-notice' target='_blank' rel='noreferrer' className='govuk-link'>privacy notice</a>.\n </div>\n\n <button\n className='wc-button govuk-button govuk-!-margin-top-1'\n data-module='govuk-button'\n onClick={onRequestChat}\n aria-disabled={isButtonDisabled}\n >\n {buttonLabel}\n </button>\n </form>\n </div>\n </div>\n </>\n )\n}\n","import React, { useState } from 'react'\nimport { PanelHeader } from '../panel/panel-header.jsx'\n\nimport { useApp } from '../../store/useApp.js'\n\nexport function Settings ({ onCancel }) {\n const { settings, setSettings } = useApp()\n\n const [optionAudio, setOptionAudio] = useState(settings.audio)\n const [optionScroll, setOptionScroll] = useState(settings.scroll)\n\n const onSave = e => {\n e.preventDefault()\n\n setSettings({ audio: optionAudio, scroll: optionScroll })\n onCancel(e)\n }\n\n const handleKeyPress = e => {\n if ((e.key === 'Enter' || e.key === ' ') && e.target.id === 'settings-save') {\n onSave(e)\n } else if ((e.key === 'Enter' || e.key === ' ') && e.target.id === 'settings-cancel') {\n onCancel(e)\n }\n }\n\n return (\n <>\n <PanelHeader />\n\n <div className='wc-body'>\n <div className='wc-content'>\n <fieldset className='govuk-fieldset govuk-!-margin-bottom-4'>\n <legend className='govuk-fieldset__legend govuk-fieldset__legend'>\n <h3 id='wc-subtitle' className='wc-heading'>Change settings</h3>\n </legend>\n <div className='govuk-checkboxes govuk-checkboxes--small' data-module='govuk-checkboxes'>\n <div className='govuk-checkboxes__item'>\n <input\n id='audio'\n name='audio'\n type='checkbox'\n value='audio'\n className='govuk-checkboxes__input'\n defaultChecked={optionAudio}\n onChange={() => setOptionAudio(!optionAudio)}\n />\n <label className='wc-label govuk-label govuk-checkboxes__label' htmlFor='audio'>\n Play a sound when receiving a new message\n </label>\n </div>\n <div className='govuk-checkboxes__item'>\n <input\n id='scroll'\n name='scroll'\n type='checkbox'\n value='scroll'\n className='govuk-checkboxes__input'\n defaultChecked={optionScroll}\n onChange={() => setOptionScroll(!optionScroll)}\n />\n <label className='wc-label govuk-label govuk-checkboxes__label' htmlFor='scroll'>\n Scroll automatically to a new message\n </label>\n </div>\n </div>\n </fieldset>\n\n <div className='govuk-button-group'>\n <a\n id='settings-save'\n href='#'\n className='wc-button govuk-button'\n data-module='govuk-button'\n role='button'\n onClick={onSave}\n onKeyDown={handleKeyPress}\n >\n Save\n </a>\n <a\n id='settings-cancel'\n href='#'\n className='wc-link govuk-link'\n data-module='govuk-button'\n role='button'\n onClick={onCancel}\n onKeyDown={handleKeyPress}\n >\n Cancel\n </a>\n </div>\n </div>\n </div>\n </>\n )\n}\n","import React from 'react'\nimport { PanelHeader } from '../panel/panel-header.jsx'\n\nexport function Unavailable () {\n return (\n <>\n <PanelHeader />\n\n <div className='wc-body'>\n <h3 id='wc-subtitle' className='govuk-heading-m'>Webchat is currently not available</h3>\n <p className='govuk-body-s'>Try again later, or call Floodline:</p>\n <p className='govuk-body-s'>\n <strong>Floodline helpline</strong>\n <br />Telephone: 0345 988 1188\n <br />Textphone: 0345 602 6340\n <br />Open 24 hours a day, 7 days a week\n <br /><a className='govuk-link' href='https://gov.uk/call-charges'>Find out more about call charges</a>\n </p>\n <p className='govuk-body-s'>We're running webchat as a trial, it will not always be available.</p>\n </div>\n </>\n )\n}\n","import React from 'react'\nimport { createPortal } from 'react-dom'\nimport { useApp } from '../store/useApp'\n\nexport const SkipLink = () => {\n const { threadId, setInstigatorId } = useApp()\n\n if (!threadId) {\n return null\n }\n\n const targetContainer = document.getElementById('webchat-skip-link-container')\n\n if (!targetContainer) {\n return null\n }\n\n const onClick = e => {\n e.preventDefault()\n setInstigatorId(e.target.id)\n window.location.hash = '#webchat'\n }\n\n return (\n <>\n {createPortal(\n <a\n id='webchat-skip-link'\n href='#webchat'\n className='govuk-skip-link'\n data-module='govuk-skip-link'\n onClick={onClick}\n data-wc-skiplink\n data-wc-open-btn\n >\n Skip to webchat\n </a>,\n targetContainer\n )}\n </>\n )\n}\n","import { useState, useEffect, useCallback } from 'react'\n\nconst ariaHidden = 'aria-hidden'\nconst dataWcInert = 'data-wc-inert'\n\nconst setAriaHidden = isInert => {\n for (const node of document.body.children) {\n if (node.id !== 'wc-panel') {\n // We only want to toggle elements that aren't already inert\n if (isInert && !node.getAttribute(ariaHidden)) {\n node.setAttribute(ariaHidden, 'true')\n node.setAttribute(dataWcInert, '')\n } else if (node.hasAttribute(dataWcInert)) {\n node.removeAttribute(ariaHidden)\n node.removeAttribute(dataWcInert)\n }\n }\n }\n}\n\nexport const getFocusableElements = () => {\n const selectors = [\n '#wc-panel a:not([disabled])',\n '#wc-panel button:not([disabled])',\n '#wc-panel select:not([disabled])',\n '#wc-panel input:not([disabled])',\n '#wc-panel textarea:not([disabled])',\n '#wc-panel *[tabindex=\"0\"]:not([disabled])'\n ]\n\n const elements = document.body.querySelectorAll(selectors.join(','))\n return Array.from(elements).filter(e => !e.closest('[hidden]') && !e.closest('[aria-hidden=\"true\"]'))\n}\n\nconst useFocusedElements = screen => {\n const [panelElements, setPanelElements] = useState([])\n\n const onKeyDown = useCallback(e => {\n const webchatPanelElement = document.querySelector('#wc-panel')\n\n if (e.key === 'Tab') {\n if (webchatPanelElement && !document.activeElement.closest('#wc-panel')) {\n webchatPanelElement.focus()\n }\n\n if (e.shiftKey) {\n if (document.activeElement === panelElements[0]) {\n panelElements[panelElements.length - 1].focus()\n e.preventDefault()\n } else if (document.activeElement === document.querySelector('#wc-panel')) {\n panelElements[panelElements.length - 1]?.focus()\n e.preventDefault()\n }\n } else if (document.activeElement === panelElements[panelElements.length - 1]) {\n panelElements[0].focus()\n e.preventDefault()\n }\n }\n }, [panelElements])\n\n useEffect(() => {\n setPanelElements(getFocusableElements())\n }, [screen])\n\n useEffect(() => {\n setAriaHidden(true)\n\n const panelElement = document.querySelector('#wc-panel')\n panelElement.focus()\n\n document.addEventListener('keydown', onKeyDown)\n\n return () => {\n setAriaHidden()\n document.removeEventListener('keydown', onKeyDown)\n }\n }, [panelElements])\n}\n\nexport { useFocusedElements }\n","import { useEffect } from 'react'\n\nexport const useTextareaAutosize = (textAreaRef, value) => {\n useEffect(() => {\n if (textAreaRef) {\n textAreaRef.style.height = '0px'\n\n const scrollHeight = textAreaRef.scrollHeight\n\n textAreaRef.style.height = `${scrollHeight}px`\n }\n }, [textAreaRef, value])\n}\n","export const agentStatusHeadline = (availability, agentStatus, agentName) => {\n if (availability === 'UNAVAILABLE') {\n return 'Webchat is not currently available'\n }\n\n if (!agentStatus) {\n return 'Connecting to Floodline'\n }\n\n switch (agentStatus) {\n case 'closed':\n case 'resolved':\n return agentName ? `${agentName} ended the session` : 'Session ended by advisor'\n default:\n return agentName ? `You are speaking with ${agentName}` : 'No advisers currently available'\n }\n}\n","export async function checkAvailability (endpoint) {\n const response = await fetch(endpoint)\n const data = await response.json()\n\n return {\n availability: data.availability || 'UNAVAILABLE'\n }\n}\n","export const classnames = (...classes) => classes.filter(classname => classname && typeof classname === 'string').join(' ')\n","export const historyPushState = () => {\n const url = window.location.href.split('#')[0]\n window.history.pushState({ history: true }, null, `${url}#webchat`)\n}\n\nexport const historyReplaceState = () => {\n if (window.history.state?.history) {\n return window.history.back()\n }\n\n const url = window.location.href.split('#')[0]\n return window.history.replaceState(null, null, url)\n}\n","export const messageNotification = audioUrl => {\n let buffer\n\n const context = new (window.AudioContext || window.webkitAudioContext)()\n\n if (context.state === 'suspended') {\n const events = ['touchstart', 'touchend', 'mousedown', 'wheel', 'keydown', 'click']\n\n const unlock = _e => {\n events.forEach(event => {\n document.body.removeEventListener(event, unlock)\n })\n\n context.resume()\n }\n\n events.forEach(event => {\n document.body.addEventListener(event, unlock, false)\n })\n }\n\n fetch(audioUrl)\n .then(response => response.arrayBuffer())\n .then(data => context.decodeAudioData(data))\n .then(decodedData => {\n buffer = decodedData\n })\n .catch(console.error)\n\n return () => {\n const source = context.createBufferSource()\n source.buffer = buffer\n source.connect(context.destination)\n source.start()\n }\n}\n","import { DateTime } from 'luxon'\n\nexport const transformMessage = message => {\n return {\n id: message.id,\n text: message.messageContent?.text,\n createdAt: new Date(message.createdAt),\n user: message.authorEndUserIdentity?.fullName?.trim() || null,\n assignee: message.authorUser?.firstName || null,\n direction: message.direction\n }\n}\n\nexport const transformMessages = messages => messages.map(message => transformMessage(message))\n\nexport const formatTranscript = messages => {\n const now = DateTime.local()\n now.setZone('Europe/London')\n\n let string = `Floodline webchat transcript, ${now.toFormat('HH:mm:ss a, dd LLLL yyyy')}\\n\\n`\n\n for (const message of messages) {\n const { text, direction, user, assignee, createdAt } = message\n\n const author = direction === 'inbound' ? user : `${assignee} (Floodline adviser)`\n const date = DateTime.fromJSDate(new Date(createdAt)).setZone('Europe/London').toFormat('HH:mm:ss a, dd LLLL yyyy')\n\n string += `[${date}] ${author}: \\n${text}\\n\\n`\n }\n\n string = string.replace(/<a\\b[^>]*>/i, '').replace(/<\\/a>/i, '')\n\n return encodeURIComponent(string)\n}\n","import React, { createContext, useEffect, useReducer, useMemo } from 'react'\nimport { ChatEvent } from '@nice-devone/nice-cxone-chat-web-sdk'\n\nimport { messageNotification } from '../lib/message-notification.js'\n\nimport { initialState, reducer } from './reducer.js'\nimport { CUSTOMER_ID_STORAGE_KEY, THREAD_ID_STORAGE_KEY, SETTINGS_STORAGE_KEY } from './constants.js'\n\nexport const AppContext = createContext(initialState)\n\nexport const AppProvider = ({ sdk, availability, options, children }) => {\n const [state, dispatch] = useReducer(reducer, initialState)\n\n const playSound = messageNotification(options.audioUrl)\n\n /**\n * SDK event handlers\n */\n const onLiveChatRecovered = e => {\n dispatch({ type: 'SET_AGENT', payload: e.detail.data.inboxAssignee })\n dispatch({ type: 'SET_AGENT_STATUS', payload: e.detail.data.contact.status })\n dispatch({ type: 'SET_UNSEEN_COUNT', payload: e.detail.data.contact.customerStatistics.unseenMessagesCount })\n }\n\n const onAssignedAgentChanged = e => {\n dispatch({ type: 'SET_AGENT', payload: e.detail.data.inboxAssignee })\n dispatch({ type: 'SET_AGENT_STATUS', payload: e.detail.data.case.status })\n }\n\n const onAgentTypingStarted = () => {\n dispatch({ type: 'SET_AGENT_TYPING', payload: true })\n }\n\n const onAgentTypingEnded = () => {\n dispatch({ type: 'SET_AGENT_TYPING', payload: false })\n dispatch({ type: 'SET_LIVE_REGION_TEXT' })\n }\n\n const onMessageCreated = e => {\n dispatch({ type: 'SET_MESSAGE', payload: e.detail.data.message })\n dispatch({ type: 'SET_AGENT_STATUS', payload: e.detail.data.case.status })\n dispatch({ type: 'SET_UNSEEN_COUNT', payload: e.detail.data.case.customerStatistics.unseenMessagesCount })\n\n const isAudioOn = JSON.parse(window.localStorage.getItem(SETTINGS_STORAGE_KEY)).audio\n\n if (isAudioOn && e.detail.data.message.direction === 'outbound') {\n playSound()\n }\n }\n\n const onContactStatusChanged = e => {\n dispatch({ type: 'SET_AGENT_STATUS', payload: e.detail.data.case.status })\n }\n\n const onMatchMedia = e => {\n dispatch({ type: 'TOGGLE_IS_MOBILE', payload: e.matches })\n }\n\n const onKeydown = () => {\n dispatch({ type: 'TOGGLE_IS_KEYBOARD', payload: true })\n }\n\n const onPointerdown = () => {\n dispatch({ type: 'TOGGLE_IS_KEYBOARD', payload: false })\n }\n\n useEffect(() => {\n sdk.onChatEvent(ChatEvent.LIVECHAT_RECOVERED, onLiveChatRecovered)\n sdk.onChatEvent(ChatEvent.MESSAGE_CREATED, onMessageCreated)\n sdk.onChatEvent(ChatEvent.AGENT_TYPING_STARTED, onAgentTypingStarted)\n sdk.onChatEvent(ChatEvent.AGENT_TYPING_ENDED, onAgentTypingEnded)\n sdk.onChatEvent(ChatEvent.ASSIGNED_AGENT_CHANGED, onAssignedAgentChanged)\n sdk.onChatEvent(ChatEvent.CONTACT_STATUS_CHANGED, onContactStatusChanged)\n // We need to know if it is a mobile and if it is a keyboard interaction\n window.matchMedia('(max-width: 640px)').addEventListener('change', onMatchMedia)\n window.addEventListener('keydown', onKeydown)\n window.addEventListener('pointerdown', onPointerdown)\n // Tidying up\n return () => {\n window.removeEventListener('change', onMatchMedia)\n window.removeEventListener('keydown', onKeydown)\n window.removeEventListener('pointerdown', onPointerdown)\n }\n }, [sdk])\n\n /**\n * Initialize customerId, threadId and whether the webchat should be open\n */\n useEffect(() => {\n dispatch({ type: 'SET_AVAILABILITY', payload: availability })\n\n setCustomerId(window.localStorage.getItem(CUSTOMER_ID_STORAGE_KEY))\n setThreadId(window.localStorage.getItem(THREAD_ID_STORAGE_KEY))\n setSettings(JSON.parse(window.localStorage.getItem(SETTINGS_STORAGE_KEY)) || state.settings)\n }, [])\n\n /**\n * Set browser history on start chat click\n */\n useEffect(() => {\n if (window.location.hash === '#webchat') {\n setChatVisibility(true)\n }\n\n const onBrowserNavigation = () => {\n if (window.location.hash === '#webchat') {\n setChatVisibility(true)\n } else {\n setChatVisibility(false)\n }\n }\n\n window.addEventListener('popstate', onBrowserNavigation)\n\n return () => {\n window.removeEventListener('popstate', onBrowserNavigation)\n }\n }, [])\n\n /**\n * State update functions\n */\n const setChatVisibility = payload => {\n dispatch({ type: 'SET_CHAT_VISIBILITY', payload })\n }\n\n const setCustomerId = customerId => {\n dispatch({ type: 'SET_CUSTOMER_ID', payload: customerId })\n }\n\n const setThreadId = threadId => {\n dispatch({ type: 'SET_THREAD_ID', payload: threadId })\n }\n\n const setThread = thread => {\n dispatch({ type: 'SET_THREAD', payload: thread })\n }\n\n const setMessages = messages => {\n dispatch({ type: 'SET_MESSAGES', payload: messages })\n }\n\n const setSettings = data => {\n dispatch({ type: 'SET_SETTINGS', payload: data })\n }\n\n const setUnseenCount = unseenCount => {\n dispatch({ type: 'SET_UNSEEN_COUNT', payload: unseenCount })\n }\n\n const setInstigatorId = id => {\n dispatch({ type: 'SET_INSTIGATOR_ID', payload: id })\n }\n\n const setLiveRegionText = text => {\n dispatch({ type: 'SET_LIVE_REGION_TEXT', payload: text })\n }\n\n /**\n * Application-wide state and state functions\n */\n const store = useMemo(() => ({\n ...state,\n sdk,\n setSettings,\n setCustomerId,\n setThreadId,\n setThread,\n setMessages,\n setUnseenCount,\n setChatVisibility,\n setInstigatorId,\n setLiveRegionText,\n onLiveChatRecovered,\n onAssignedAgentChanged,\n onAgentTypingStarted,\n onAgentTypingEnded,\n onMessageCreated,\n onContactStatusChanged\n }))\n\n return (\n <AppContext.Provider value={store}>\n {children}\n </AppContext.Provider>\n )\n}\n","import { transformMessages, transformMessage } from '../lib/transform-messages'\nimport { CUSTOMER_ID_STORAGE_KEY, THREAD_ID_STORAGE_KEY, SETTINGS_STORAGE_KEY } from './constants'\n\nconst setSettings = (state, payload) => {\n if (payload) {\n window.localStorage.setItem(SETTINGS_STORAGE_KEY, JSON.stringify(payload))\n } else {\n window.localStorage.removeItem(SETTINGS_STORAGE_KEY)\n }\n\n return {\n ...state,\n settings: payload\n }\n}\n\nconst setCustomerId = (state, payload) => {\n if (payload) {\n window.localStorage.setItem(CUSTOMER_ID_STORAGE_KEY, payload)\n } else {\n window.localStorage.removeItem(CUSTOMER_ID_STORAGE_KEY)\n }\n\n return {\n ...state,\n customerId: payload\n }\n}\n\nconst setThreadId = (state, payload) => {\n if (payload) {\n window.localStorage.setItem(THREAD_ID_STORAGE_KEY, payload)\n } else {\n window.localStorage.removeItem(THREAD_ID_STORAGE_KEY)\n }\n\n return {\n ...state,\n threadId: payload\n }\n}\n\nconst setChatVisibility = (state, payload) => {\n return {\n ...state,\n isChatOpen: payload\n }\n}\n\nconst setAvailability = (state, payload) => {\n return {\n ...state,\n availability: payload\n }\n}\n\nconst setThread = (state, payload) => {\n return {\n ...state,\n thread: payload\n }\n}\n\nconst setMessages = (state, payload) => {\n return {\n ...state,\n messages: transformMessages(payload).reverse()\n }\n}\n\nconst setMessage = (state, payload) => {\n return {\n ...state,\n message: transformMessage(payload),\n messages: [...state.messages, transformMessage(payload)]\n }\n}\n\nconst setAgent = (state, payload) => {\n return {\n ...state,\n agent: payload\n }\n}\n\nconst setAgentIsTyping = (state, payload) => {\n return {\n ...state,\n isAgentTyping: payload\n }\n}\n\nconst setAgentStatus = (state, payload) => {\n return {\n ...state,\n agentStatus: payload\n }\n}\n\nconst setUnseenCount = (state, payload) => {\n return {\n ...state,\n unseenCount: payload\n }\n}\n\nconst setInstigatorId = (state, payload) => {\n return {\n ...state,\n instigatorId: payload\n }\n}\n\nconst setLiveRegionText = (state, payload) => {\n return {\n ...state,\n liveRegionText: payload\n }\n}\n\nconst toggleIsMobile = (state, payload) => {\n return {\n ...state,\n isMobile: payload\n }\n}\n\nconst toggleIsKeyboard = (state, payload) => {\n return {\n ...state,\n isKeyboard: payload\n }\n}\n\nexport const actionsMap = {\n SET_CHAT_VISIBILITY: setChatVisibility,\n SET_AVAILABILITY: setAvailability,\n SET_SETTINGS: setSettings,\n SET_CUSTOMER_ID: setCustomerId,\n SET_THREAD_ID: setThreadId,\n SET_THREAD: setThread,\n SET_MESSAGE: setMessage,\n SET_MESSAGES: setMessages,\n SET_AGENT: setAgent,\n SET_AGENT_TYPING: setAgentIsTyping,\n SET_AGENT_STATUS: setAgentStatus,\n SET_UNSEEN_COUNT: setUnseenCount,\n SET_INSTIGATOR_ID: setInstigatorId,\n SET_LIVE_REGION_TEXT: setLiveRegionText,\n TOGGLE_IS_MOBILE: toggleIsMobile,\n TOGGLE_IS_KEYBOARD: toggleIsKeyboard\n}\n","export const SETTINGS_STORAGE_KEY = 'webchat_settings'\nexport const CUSTOMER_ID_STORAGE_KEY = 'webchat_customer_id'\nexport const THREAD_ID_STORAGE_KEY = 'webchat_thread_id'\n","import { actionsMap } from './actions-map'\n\nexport const initialState = {\n availability: null,\n customerId: null,\n threadId: null,\n thread: null,\n messages: [],\n unseenCount: 0,\n instigatorId: null,\n agent: null,\n agentStatus: null,\n isAgentTyping: false,\n isChatOpen: false,\n isMobile: window.matchMedia('(max-width: 640px)').matches,\n isKeyboard: false,\n settings: { audio: true, scroll: true }\n}\n\nexport const reducer = (state, action) => {\n const { type, payload } = action\n\n const fn = actionsMap[type]\n\n if (fn) {\n const actionFunction = fn.bind(this, state, payload)\n return actionFunction()\n }\n\n return state\n}\n","import { useContext } from 'react'\n\nimport { AppContext } from './AppProvider.jsx'\n\nexport const useApp = () => useContext(AppContext)\n","export const useChatSdk = sdk => {\n const connect = async () => sdk.authorize()\n\n const fetchCustomerId = async () => {\n const response = await connect()\n return response?.consumerIdentity.idOnExternalPlatform\n }\n\n const fetchThread = async threadId => {\n await connect()\n return sdk.getThread(threadId)\n }\n\n const fetchMessages = async (thread, threadId) => {\n await connect()\n\n const recovered = await thread.recover(threadId)\n\n const allMessages = []\n let fetchedMessages = recovered.messages\n\n while (fetchedMessages.length) {\n fetchedMessages.map(msg => allMessages.push(msg))\n\n try {\n const response = await thread.loadMoreMessages()\n fetchedMessages = response.data.messages\n } catch (err) {\n fetchedMessages = []\n }\n }\n\n return allMessages\n }\n\n return { connect, fetchCustomerId, fetchThread, fetchMessages }\n}\n","module.exports = require(\"@nice-devone/nice-cxone-chat-web-sdk\");","module.exports = require(\"lodash.debounce\");","module.exports = require(\"luxon\");","module.exports = require(\"react\");","module.exports = require(\"react-dom\");","module.exports = require(\"react-dom/client\");","module.exports = require(\"uuid\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import React from 'react'\nimport { createRoot } from 'react-dom/client'\nimport { ChatSdk } from '@nice-devone/nice-cxone-chat-web-sdk'\nimport { Availability } from './components/availability/availability.jsx'\nimport { checkAvailability } from './lib/check-availability'\nimport { AppProvider } from './store/AppProvider.jsx'\nimport { CUSTOMER_ID_STORAGE_KEY } from './store/constants.js'\n\nexport async function init (container, options) {\n const sdk = new ChatSdk({\n brandId: options.brandId,\n channelId: options.channelId,\n customerId: window.localStorage.getItem(CUSTOMER_ID_STORAGE_KEY) || '',\n environment: options.environment\n })\n\n const root = createRoot(container)\n let availability\n try {\n const result = await checkAvailability(options.availabilityEndpoint)\n availability = result.availability\n } catch (e) {\n availability = 'UNAVAILABLE'\n }\n root.render(\n <AppProvider sdk={sdk} availability={availability} options={options}>\n <Availability />\n </AppProvider>\n )\n}\n"],"names":["React","useEffect","useRef","classnames","Panel","SkipLink","useApp","historyPushState","historyReplaceState","LiveRegion","Availability","availability","isChatOpen","setChatVisibility","unseenCount","threadId","setUnseenCount","setInstigatorId","setLiveRegionText","buttonRef","showUnseenCount","messageText","onClick","e","preventDefault","target","id","onKeyDown","event","key","onKeyUp","onScroll","rect","current","parentElement","getBoundingClientRect","isBelowFold","top","window","innerHeight","document","documentElement","clientHeight","isFixed","classList","toggle","body","addEventListener","removeEventListener","createElement","Fragment","className","ref","href","draggable","role","useState","PanelHeader","PanelFooter","Message","useTextareaAutosize","formatTranscript","agentStatusHeadline","Chat","onEndChatScreen","onSettingsScreen","thread","messages","agent","agentStatus","isAgentTyping","settings","isKeyboard","userMessage","setUserMessage","focusVisibleWithin","setFocusVisibleWithin","messageRef","scroll","length","chatBody","querySelector","scrollTop","scrollHeight","label","remove","add","onChange","value","agentName","nickname","firstName","connectionHeadlineText","lastAgentMessage","direction","text","sendMessage","message","trim","sendTextMessage","err","console","log","handleSubmit","saveChat","transcript","saveChatLink","setAttribute","handleKeyPress","shiftKey","tabIndex","map","msg","index","previousMessage","width","height","x","y","viewBox","stroke","cx","cy","r","fill","noValidate","onSubmit","htmlFor","rows","name","onFocus","onBlur","type","download","ErrorSummary","errors","errs","Object","keys","goToInput","getAttribute","focus","useCallback","debounce","DEBOUNCE_MILLISECONDS","liveRegionText","textA","setTextA","textB","setTextB","isSessionEnded","clearText","setText","outbound","messageOwnerSameAsPrevious","assignee","children","isMobile","onClose","lastMessageSeen","BackButtonComponent","focusable","d","CloseButtonComponent","MinimiseButtonComponent","isMobileAndHasHistory","history","state","isMobileAndNoHistory","RightButtonComponent","createPortal","PreChat","RequestChat","Unavailable","EndChat","Settings","Feedback","useChatSdk","useFocusedElements","sdk","instigatorId","setThread","setThreadId","setMessages","fetchThread","fetchMessages","screen","setScreen","onEscapeKey","getElementById","getElementsByTagName","recover","fetchedThread","fetchedMessages","handleScreenChange","newScreen","goToPreChatScreen","goToRequestChatScreen","goToChatScreen","goToEndChatScreen","goToFeedbackScreen","goToSettingsScreen","ScreenComponent","onContinue","onPreChatScreen","onChatScreen","onEndChatConfirm","onCancel","Component","setCustomerId","confirmEndChat","localStorage","setItem","endChat","setTimeout","feedbackSend","tmpThreadId","getItem","location","removeItem","feedbackClose","rel","uuid","QUESTION_MAX_LENGTH","fetchCustomerId","setErrors","questionLength","setQuestionLength","isButtonDisabled","setButtonDisabled","nameRef","questionRef","isQuestionLengthValid","questionLengthRemaining","questionLengthExceeded","questionHint","onQuestionChange","buttonLabel","onRequestChat","question","v4","customerId","getCustomer","setName","startChat","setCustomField","style","color","setSettings","optionAudio","setOptionAudio","audio","optionScroll","setOptionScroll","onSave","defaultChecked","targetContainer","hash","ariaHidden","dataWcInert","setAriaHidden","isInert","node","hasAttribute","removeAttribute","getFocusableElements","selectors","elements","querySelectorAll","join","Array","from","filter","closest","panelElements","setPanelElements","webchatPanelElement","activeElement","panelElement","textAreaRef","checkAvailability","endpoint","response","fetch","data","json","classes","classname","url","split","pushState","back","replaceState","messageNotification","audioUrl","buffer","context","AudioContext","webkitAudioContext","events","unlock","_e","forEach","resume","then","arrayBuffer","decodeAudioData","decodedData","catch","error","source","createBufferSource","connect","destination","start","DateTime","transformMessage","messageContent","createdAt","Date","user","authorEndUserIdentity","fullName","authorUser","transformMessages","now","local","setZone","string","toFormat","author","date","fromJSDate","replace","encodeURIComponent","createContext","useReducer","useMemo","ChatEvent","initialState","reducer","CUSTOMER_ID_STORAGE_KEY","THREAD_ID_STORAGE_KEY","SETTINGS_STORAGE_KEY","AppContext","AppProvider","options","dispatch","playSound","onLiveChatRecovered","payload","detail","inboxAssignee","contact","status","customerStatistics","unseenMessagesCount","onAssignedAgentChanged","case","onAgentTypingStarted","onAgentTypingEnded","onMessageCreated","isAudioOn","JSON","parse","onContactStatusChanged","onMatchMedia","matches","onKeydown","onPointerdown","onChatEvent","LIVECHAT_RECOVERED","MESSAGE_CREATED","AGENT_TYPING_STARTED","AGENT_TYPING_ENDED","ASSIGNED_AGENT_CHANGED","CONTACT_STATUS_CHANGED","matchMedia","onBrowserNavigation","store","Provider","stringify","setAvailability","reverse","setMessage","setAgent","setAgentIsTyping","setAgentStatus","toggleIsMobile","toggleIsKeyboard","actionsMap","SET_CHAT_VISIBILITY","SET_AVAILABILITY","SET_SETTINGS","SET_CUSTOMER_ID","SET_THREAD_ID","SET_THREAD","SET_MESSAGE","SET_MESSAGES","SET_AGENT","SET_AGENT_TYPING","SET_AGENT_STATUS","SET_UNSEEN_COUNT","SET_INSTIGATOR_ID","SET_LIVE_REGION_TEXT","TOGGLE_IS_MOBILE","TOGGLE_IS_KEYBOARD","action","fn","actionFunction","bind","useContext","authorize","consumerIdentity","idOnExternalPlatform","getThread","recovered","allMessages","push","loadMoreMessages","createRoot","ChatSdk","init","container","brandId","channelId","environment","root","result","availabilityEndpoint","render"],"sourceRoot":""}
|
package/package.json
CHANGED
|
@@ -46,7 +46,7 @@ export function Chat ({ onEndChatScreen, onSettingsScreen }) {
|
|
|
46
46
|
|
|
47
47
|
useEffect(() => {
|
|
48
48
|
if (connectionHeadlineText) {
|
|
49
|
-
setLiveRegionText(`Floodline
|
|
49
|
+
setLiveRegionText(`Floodline webchat - ${connectionHeadlineText}`)
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
return () => {
|
|
@@ -31,9 +31,13 @@
|
|
|
31
31
|
margin-bottom: 0;
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
&__link
|
|
34
|
+
&__link{
|
|
35
35
|
@extend %wc-link-button;
|
|
36
36
|
margin-left: auto;
|
|
37
|
+
|
|
38
|
+
&:link {
|
|
39
|
+
color: govuk-colour('black');
|
|
40
|
+
}
|
|
37
41
|
}
|
|
38
42
|
}
|
|
39
43
|
|
|
@@ -83,6 +87,7 @@
|
|
|
83
87
|
margin-bottom: 0;
|
|
84
88
|
display: inline-block;
|
|
85
89
|
border: 1px solid transparent;
|
|
90
|
+
overflow-wrap: anywhere;
|
|
86
91
|
|
|
87
92
|
@media (forced-colors: active) {
|
|
88
93
|
border-color: currentColor;
|
|
@@ -222,6 +227,10 @@
|
|
|
222
227
|
&:first-child {
|
|
223
228
|
margin-right: govuk-spacing(3);
|
|
224
229
|
}
|
|
230
|
+
|
|
231
|
+
&:link {
|
|
232
|
+
color: govuk-colour('black');
|
|
233
|
+
}
|
|
225
234
|
}
|
|
226
235
|
}
|
|
227
236
|
|
|
@@ -65,8 +65,8 @@ export function PanelHeader () {
|
|
|
65
65
|
<div className='wc-header'>
|
|
66
66
|
{isMobileAndHasHistory ? BackButtonComponent : null}
|
|
67
67
|
|
|
68
|
-
<h2 id='wc-header
|
|
69
|
-
Floodline
|
|
68
|
+
<h2 id='wc-header' className='wc-header__title'>
|
|
69
|
+
Floodline webchat
|
|
70
70
|
</h2>
|
|
71
71
|
|
|
72
72
|
{RightButtonComponent}
|
|
@@ -147,7 +147,7 @@ export function Panel () {
|
|
|
147
147
|
}
|
|
148
148
|
|
|
149
149
|
const Component = (
|
|
150
|
-
<div id='wc-panel' role='dialog' className={classnames('wc-panel', isKeyboard && 'wc-focus-visible')} tabIndex='-1' aria-modal='true' aria-labelledby='wc-header-
|
|
150
|
+
<div id='wc-panel' role='dialog' className={classnames('wc-panel', isKeyboard && 'wc-focus-visible')} tabIndex='-1' aria-modal='true' aria-labelledby='wc-header wc-subtitle'>
|
|
151
151
|
<div className='wc-panel__inner'>
|
|
152
152
|
{ScreenComponent}
|
|
153
153
|
</div>
|
|
@@ -45,7 +45,7 @@ export function EndChat ({ onChatScreen, onEndChatConfirm }) {
|
|
|
45
45
|
<PanelHeader />
|
|
46
46
|
<div className='wc-body'>
|
|
47
47
|
<div className='wc-content'>
|
|
48
|
-
<h3 className='wc-heading' aria-live='polite'>Are you sure you want to end the chat?</h3>
|
|
48
|
+
<h3 id='wc-subtitle' className='wc-heading' aria-live='polite'>Are you sure you want to end the chat?</h3>
|
|
49
49
|
<div className='govuk-button-group'>
|
|
50
50
|
<a
|
|
51
51
|
id='confirm-endchat'
|
|
@@ -31,7 +31,7 @@ export function Feedback ({ onCancel }) {
|
|
|
31
31
|
<div className='wc-body'>
|
|
32
32
|
<div className='wc-content'>
|
|
33
33
|
<h3 id='wc-subtitle' className='wc-heading'>Give Feedback on Floodline webchat</h3>
|
|
34
|
-
<p>Please note we
|
|
34
|
+
<p>Please note we're unable to respond to feedback.</p>
|
|
35
35
|
<p>
|
|
36
36
|
<a
|
|
37
37
|
id='feedback-send'
|
|
@@ -8,7 +8,7 @@ export function PreChat ({ onContinue }) {
|
|
|
8
8
|
|
|
9
9
|
<div className='wc-body'>
|
|
10
10
|
<div className='wc-content'>
|
|
11
|
-
<h3 className='wc-heading' aria-live='polite'>What you can use webchat for</h3>
|
|
11
|
+
<h3 id='wc-subtitle' className='wc-heading' aria-live='polite'>What you can use webchat for</h3>
|
|
12
12
|
<p>Webchat lets you talk directly to a Floodline adviser.</p>
|
|
13
13
|
|
|
14
14
|
<p>You can use webchat to get:</p>
|
|
@@ -39,7 +39,7 @@ export function RequestChat ({ onPreChatScreen }) {
|
|
|
39
39
|
setQuestionLength(e.target.value.length)
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
const buttonLabel = isButtonDisabled ? 'Requesting...' : 'Request
|
|
42
|
+
const buttonLabel = isButtonDisabled ? 'Requesting...' : 'Request chat'
|
|
43
43
|
|
|
44
44
|
useEffect(() => {
|
|
45
45
|
if (isButtonDisabled) {
|
|
@@ -84,7 +84,7 @@ export function RequestChat ({ onPreChatScreen }) {
|
|
|
84
84
|
setThread(thread)
|
|
85
85
|
thread.setCustomField('threadid', threadId)
|
|
86
86
|
} catch (err) {
|
|
87
|
-
console.log('[Request
|
|
87
|
+
console.log('[Request chat Error]', err)
|
|
88
88
|
}
|
|
89
89
|
}
|
|
90
90
|
|
|
@@ -103,7 +103,7 @@ export function RequestChat ({ onPreChatScreen }) {
|
|
|
103
103
|
|
|
104
104
|
<ErrorSummary errors={errors} />
|
|
105
105
|
|
|
106
|
-
<h3 className='wc-heading' aria-live='polite'>
|
|
106
|
+
<h3 id='wc-subtitle' className='wc-heading' aria-live='polite'>
|
|
107
107
|
Your name and question
|
|
108
108
|
</h3>
|
|
109
109
|
|