@sbb-esta/lyne-elements-dev 5.0.0-next.3-dev.1780400156 → 5.0.0-next.3-dev.1780406485
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/calendar/_calendar.global.scss +25 -26
- package/calendar/calendar/calendar.component.js +1 -1
- package/calendar/calendar-day/calendar-day.component.js +1 -1
- package/calendar/calendar-month/calendar-month.component.js +1 -1
- package/calendar/calendar-year/calendar-year.component.js +1 -1
- package/calendar/common/calendar-cell-base-element.js +1 -1
- package/calendar-cell-base-element-DHCKK3bU.js +23 -0
- package/{calendar-day.component-Caf2w9lS.js → calendar-day.component-DrMWf6-w.js} +2 -2
- package/calendar.component-BM4L9oyb.js +987 -0
- package/calendar.js +3 -3
- package/calendar.pure.js +3 -3
- package/core/i18n/i18n.js +4 -4
- package/core/styles/_theme.scss +1 -0
- package/custom-elements.json +401 -233
- package/datepicker/datepicker/datepicker.component.js +45 -27
- package/development/calendar/calendar/calendar.component.d.ts +27 -42
- package/development/calendar/calendar/calendar.component.d.ts.map +1 -1
- package/development/calendar/calendar/calendar.component.js +1 -1
- package/development/calendar/calendar-day/calendar-day.component.js +1 -1
- package/development/calendar/calendar-month/calendar-month.component.js +2 -2
- package/development/calendar/calendar-year/calendar-year.component.js +2 -2
- package/development/calendar/common/calendar-cell-base-element.js +1 -1
- package/development/calendar-cell-base-element-D9XadTz1.js +38 -0
- package/development/calendar-day.component-Zky9Z-Fq.js +139 -0
- package/development/calendar.component-C_Yc2PNV.js +1367 -0
- package/development/calendar.js +3 -3
- package/development/calendar.pure.js +3 -3
- package/development/core/decorators/id-reference.d.ts.map +1 -1
- package/development/core/decorators/id-reference.js +1 -1
- package/development/core/i18n/i18n.js +5 -5
- package/development/datepicker/datepicker/datepicker.component.d.ts +2 -0
- package/development/datepicker/datepicker/datepicker.component.d.ts.map +1 -1
- package/development/datepicker/datepicker/datepicker.component.js +37 -11
- package/lean-off-brand-theme.css +14 -22
- package/lean-safety-theme.css +14 -22
- package/lean-theme.css +14 -22
- package/off-brand-theme.css +14 -22
- package/package.json +2 -2
- package/safety-theme.css +14 -22
- package/standard-theme.css +14 -22
- package/calendar-cell-base-element-Dq7Ap5n-.js +0 -23
- package/calendar.component-DKKptbyy.js +0 -1082
- package/development/calendar-cell-base-element-D_CTwDn9.js +0 -38
- package/development/calendar-day.component-Bux4ezpg.js +0 -139
- package/development/calendar.component-NvMN01yi.js +0 -1478
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { __esDecorate, __runInitializers } from "tslib";
|
|
2
|
+
import { html, unsafeCSS } from "lit";
|
|
3
|
+
import { property, state } from "lit/decorators.js";
|
|
4
|
+
import { SbbCalendarCellBaseElement } from "./calendar/common/calendar-cell-base-element.js";
|
|
5
|
+
//#region src/elements/calendar/calendar-day/calendar-day.scss?inline
|
|
6
|
+
var calendar_day_default = ".sbb-calendar-day {\n justify-content: var(--sbb-calendar-day-justify-content);\n}\n\n.sbb-calendar-day__value {\n display: flex;\n height: var(--sbb-calendar-day-value-height);\n align-items: center;\n justify-content: center;\n position: relative;\n}\n\n.sbb-calendar-day__extra {\n display: var(--sbb-calendar-day-extra-display);\n height: var(--sbb-calendar-day-extra-height);\n}\n\n::slotted(*) {\n height: var(--sbb-calendar-day-extra-height);\n}";
|
|
7
|
+
//#endregion
|
|
8
|
+
//#region src/elements/calendar/calendar-day/calendar-day.component.ts
|
|
9
|
+
/**
|
|
10
|
+
* It displays a single day cell in the `sbb-calendar` component.
|
|
11
|
+
*
|
|
12
|
+
* @slot - Use the unnamed slot to add some custom content to the day.
|
|
13
|
+
*/
|
|
14
|
+
var SbbCalendarDayElement = (() => {
|
|
15
|
+
let _classSuper = SbbCalendarCellBaseElement;
|
|
16
|
+
let _instanceExtraInitializers = [];
|
|
17
|
+
let _set_slot_decorators;
|
|
18
|
+
let _set_value_decorators;
|
|
19
|
+
return class SbbCalendarDayElement extends _classSuper {
|
|
20
|
+
constructor() {
|
|
21
|
+
super(...arguments);
|
|
22
|
+
this._value = (__runInitializers(this, _instanceExtraInitializers), null);
|
|
23
|
+
}
|
|
24
|
+
static {
|
|
25
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
26
|
+
_set_slot_decorators = [property()];
|
|
27
|
+
_set_value_decorators = [state()];
|
|
28
|
+
__esDecorate(this, null, _set_slot_decorators, {
|
|
29
|
+
kind: "setter",
|
|
30
|
+
name: "slot",
|
|
31
|
+
static: false,
|
|
32
|
+
private: false,
|
|
33
|
+
access: {
|
|
34
|
+
has: (obj) => "slot" in obj,
|
|
35
|
+
set: (obj, value) => {
|
|
36
|
+
obj.slot = value;
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
metadata: _metadata
|
|
40
|
+
}, null, _instanceExtraInitializers);
|
|
41
|
+
__esDecorate(this, null, _set_value_decorators, {
|
|
42
|
+
kind: "setter",
|
|
43
|
+
name: "value",
|
|
44
|
+
static: false,
|
|
45
|
+
private: false,
|
|
46
|
+
access: {
|
|
47
|
+
has: (obj) => "value" in obj,
|
|
48
|
+
set: (obj, value) => {
|
|
49
|
+
obj.value = value;
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
metadata: _metadata
|
|
53
|
+
}, null, _instanceExtraInitializers);
|
|
54
|
+
if (_metadata) Object.defineProperty(this, Symbol.metadata, {
|
|
55
|
+
enumerable: true,
|
|
56
|
+
configurable: true,
|
|
57
|
+
writable: true,
|
|
58
|
+
value: _metadata
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
static {
|
|
62
|
+
this.elementName = "sbb-calendar-day";
|
|
63
|
+
}
|
|
64
|
+
static {
|
|
65
|
+
this.styles = [unsafeCSS(calendar_day_default)];
|
|
66
|
+
}
|
|
67
|
+
set slot(value) {
|
|
68
|
+
super.slot = value;
|
|
69
|
+
this.value = this.dateAdapter.deserialize(value);
|
|
70
|
+
}
|
|
71
|
+
get slot() {
|
|
72
|
+
return super.slot;
|
|
73
|
+
}
|
|
74
|
+
/** Value of the calendar-day element. */
|
|
75
|
+
set value(value) {
|
|
76
|
+
const date = this.dateAdapter.getValidDateOrNull(this.dateAdapter.deserialize(value));
|
|
77
|
+
if (date) {
|
|
78
|
+
this._value = date;
|
|
79
|
+
const isToday = this.dateAdapter.sameDate(date, this.dateAdapter.today());
|
|
80
|
+
this.toggleState("current", isToday);
|
|
81
|
+
this.internals.ariaCurrent = isToday ? "date" : null;
|
|
82
|
+
this.internals.ariaLabel = this.dateAdapter.getAccessibilityFormatDate(date);
|
|
83
|
+
const parent = this.getParent();
|
|
84
|
+
if (parent) {
|
|
85
|
+
this.setDisabledFilteredState(parent);
|
|
86
|
+
this.setSelectedState(parent);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
get value() {
|
|
91
|
+
return this._value;
|
|
92
|
+
}
|
|
93
|
+
connectedCallback() {
|
|
94
|
+
super.connectedCallback();
|
|
95
|
+
this.tabIndex = -1;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* The component is used as the default day cell within the `sbb-calendar`,
|
|
99
|
+
* or, if extra content is needed, it can be slotted.
|
|
100
|
+
*/
|
|
101
|
+
getParent() {
|
|
102
|
+
return this.closest?.("sbb-calendar") ?? this.getRootNode?.()?.host?.closest("sbb-calendar");
|
|
103
|
+
}
|
|
104
|
+
setSelectedState(parent) {
|
|
105
|
+
const selected = parent.multiple ? parent.value.some((selDay) => this.dateAdapter.sameDate(this.value, selDay)) : !!parent.value && this.dateAdapter.compareDate(this.value, parent.value) === 0;
|
|
106
|
+
this.toggleState("selected", selected);
|
|
107
|
+
this.internals.ariaPressed = String(selected);
|
|
108
|
+
}
|
|
109
|
+
setDisabledFilteredState(parent) {
|
|
110
|
+
const isFilteredOut = !this._isActiveDate(parent.dateFilter);
|
|
111
|
+
const isOutOfRange = !this._isDayInRange(parent.min, parent.max);
|
|
112
|
+
this.disabled = isFilteredOut || isOutOfRange;
|
|
113
|
+
this.internals.ariaDisabled = String(this.disabled);
|
|
114
|
+
this.toggleState("crossed-out", isFilteredOut && !isOutOfRange);
|
|
115
|
+
}
|
|
116
|
+
_isActiveDate(dateFilter) {
|
|
117
|
+
return dateFilter?.(this.value) ?? true;
|
|
118
|
+
}
|
|
119
|
+
_isDayInRange(min, max) {
|
|
120
|
+
if (!min && !max) return true;
|
|
121
|
+
return this.dateAdapter.sameDate(this.value, this.dateAdapter.clampDate(this.value, min, max));
|
|
122
|
+
}
|
|
123
|
+
_handleSlotchange(e) {
|
|
124
|
+
this.internals.ariaDescribedByElements = e.target.assignedElements();
|
|
125
|
+
}
|
|
126
|
+
renderTemplate() {
|
|
127
|
+
return html` <span class="sbb-calendar-day__value" aria-hidden="true">
|
|
128
|
+
${this.dateAdapter.getDate(this.value)}
|
|
129
|
+
</span>
|
|
130
|
+
<span class="sbb-calendar-day__extra">
|
|
131
|
+
<slot @slotchange=${(event) => this._handleSlotchange(event)}></slot>
|
|
132
|
+
</span>`;
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
})();
|
|
136
|
+
//#endregion
|
|
137
|
+
export { SbbCalendarDayElement as t };
|
|
138
|
+
|
|
139
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItZGF5LmNvbXBvbmVudC1aa3k5Wi1GcS5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZWxlbWVudHMvY2FsZW5kYXIvY2FsZW5kYXItZGF5L2NhbGVuZGFyLWRheS5zY3NzP2lubGluZSIsIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9jYWxlbmRhci9jYWxlbmRhci1kYXkvY2FsZW5kYXItZGF5LmNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJAdXNlICcuLi8uLi9jb3JlL3N0eWxlcycgYXMgc2JiO1xuXG4uc2JiLWNhbGVuZGFyLWRheSB7XG4gIGp1c3RpZnktY29udGVudDogdmFyKC0tc2JiLWNhbGVuZGFyLWRheS1qdXN0aWZ5LWNvbnRlbnQpO1xufVxuXG4uc2JiLWNhbGVuZGFyLWRheV9fdmFsdWUge1xuICBkaXNwbGF5OiBmbGV4O1xuICBoZWlnaHQ6IHZhcigtLXNiYi1jYWxlbmRhci1kYXktdmFsdWUtaGVpZ2h0KTtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLnNiYi1jYWxlbmRhci1kYXlfX2V4dHJhIHtcbiAgZGlzcGxheTogdmFyKC0tc2JiLWNhbGVuZGFyLWRheS1leHRyYS1kaXNwbGF5KTtcbiAgaGVpZ2h0OiB2YXIoLS1zYmItY2FsZW5kYXItZGF5LWV4dHJhLWhlaWdodCk7XG59XG5cbjo6c2xvdHRlZCgqKSB7XG4gIGhlaWdodDogdmFyKC0tc2JiLWNhbGVuZGFyLWRheS1leHRyYS1oZWlnaHQpO1xufVxuIiwiaW1wb3J0IHsgdHlwZSBDU1NSZXN1bHRHcm91cCwgaHRtbCwgdHlwZSBUZW1wbGF0ZVJlc3VsdCwgdW5zYWZlQ1NTIH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IHByb3BlcnR5LCBzdGF0ZSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHR5cGUgeyBTYmJDYWxlbmRhckVsZW1lbnQgfSBmcm9tICcuLi9jYWxlbmRhci9jYWxlbmRhci5jb21wb25lbnQudHMnO1xuaW1wb3J0IHsgU2JiQ2FsZW5kYXJDZWxsQmFzZUVsZW1lbnQgfSBmcm9tICcuLi9jb21tb24vY2FsZW5kYXItY2VsbC1iYXNlLWVsZW1lbnQudHMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9jYWxlbmRhci1kYXkuc2Nzcz9pbmxpbmUnO1xuXG4vKipcbiAqIEl0IGRpc3BsYXlzIGEgc2luZ2xlIGRheSBjZWxsIGluIHRoZSBgc2JiLWNhbGVuZGFyYCBjb21wb25lbnQuXG4gKlxuICogQHNsb3QgLSBVc2UgdGhlIHVubmFtZWQgc2xvdCB0byBhZGQgc29tZSBjdXN0b20gY29udGVudCB0byB0aGUgZGF5LlxuICovXG5leHBvcnQgY2xhc3MgU2JiQ2FsZW5kYXJEYXlFbGVtZW50PFQgPSBEYXRlPiBleHRlbmRzIFNiYkNhbGVuZGFyQ2VsbEJhc2VFbGVtZW50PFQ+IHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSByZWFkb25seSBlbGVtZW50TmFtZTogc3RyaW5nID0gJ3NiYi1jYWxlbmRhci1kYXknO1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBbdW5zYWZlQ1NTKHN0eWxlKV07XG5cbiAgQHByb3BlcnR5KClcbiAgcHVibGljIG92ZXJyaWRlIHNldCBzbG90KHZhbHVlOiBzdHJpbmcpIHtcbiAgICBzdXBlci5zbG90ID0gdmFsdWU7XG4gICAgdGhpcy52YWx1ZSA9IHRoaXMuZGF0ZUFkYXB0ZXIuZGVzZXJpYWxpemUodmFsdWUpO1xuICB9XG4gIHB1YmxpYyBvdmVycmlkZSBnZXQgc2xvdCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBzdXBlci5zbG90O1xuICB9XG5cbiAgLyoqIFZhbHVlIG9mIHRoZSBjYWxlbmRhci1kYXkgZWxlbWVudC4gKi9cbiAgQHN0YXRlKClcbiAgcHVibGljIHNldCB2YWx1ZSh2YWx1ZTogVCB8IG51bGwpIHtcbiAgICBjb25zdCBkYXRlID0gdGhpcy5kYXRlQWRhcHRlci5nZXRWYWxpZERhdGVPck51bGwodGhpcy5kYXRlQWRhcHRlci5kZXNlcmlhbGl6ZSh2YWx1ZSkpO1xuICAgIGlmIChkYXRlKSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IGRhdGU7XG4gICAgICBjb25zdCBpc1RvZGF5ID0gdGhpcy5kYXRlQWRhcHRlci5zYW1lRGF0ZShkYXRlLCB0aGlzLmRhdGVBZGFwdGVyLnRvZGF5KCkpO1xuICAgICAgdGhpcy50b2dnbGVTdGF0ZSgnY3VycmVudCcsIGlzVG9kYXkpO1xuICAgICAgdGhpcy5pbnRlcm5hbHMuYXJpYUN1cnJlbnQgPSBpc1RvZGF5ID8gJ2RhdGUnIDogbnVsbDtcbiAgICAgIHRoaXMuaW50ZXJuYWxzLmFyaWFMYWJlbCA9IHRoaXMuZGF0ZUFkYXB0ZXIuZ2V0QWNjZXNzaWJpbGl0eUZvcm1hdERhdGUoZGF0ZSk7XG4gICAgICBjb25zdCBwYXJlbnQgPSB0aGlzLmdldFBhcmVudCgpO1xuICAgICAgaWYgKHBhcmVudCkge1xuICAgICAgICB0aGlzLnNldERpc2FibGVkRmlsdGVyZWRTdGF0ZShwYXJlbnQpO1xuICAgICAgICB0aGlzLnNldFNlbGVjdGVkU3RhdGUocGFyZW50KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcHVibGljIGdldCB2YWx1ZSgpOiBUIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG4gIHByaXZhdGUgX3ZhbHVlOiBUIHwgbnVsbCA9IG51bGw7XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy50YWJJbmRleCA9IC0xO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBjb21wb25lbnQgaXMgdXNlZCBhcyB0aGUgZGVmYXVsdCBkYXkgY2VsbCB3aXRoaW4gdGhlIGBzYmItY2FsZW5kYXJgLFxuICAgKiBvciwgaWYgZXh0cmEgY29udGVudCBpcyBuZWVkZWQsIGl0IGNhbiBiZSBzbG90dGVkLlxuICAgKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGdldFBhcmVudCgpOiBTYmJDYWxlbmRhckVsZW1lbnQ8VD4gfCBudWxsIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5jbG9zZXN0Py48U2JiQ2FsZW5kYXJFbGVtZW50PFQ+Pignc2JiLWNhbGVuZGFyJykgPz9cbiAgICAgICh0aGlzLmdldFJvb3ROb2RlPy4oKSBhcyBTaGFkb3dSb290KT8uaG9zdD8uY2xvc2VzdDxTYmJDYWxlbmRhckVsZW1lbnQ8VD4+KCdzYmItY2FsZW5kYXInKVxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0U2VsZWN0ZWRTdGF0ZShwYXJlbnQ6IFNiYkNhbGVuZGFyRWxlbWVudDxUPik6IHZvaWQge1xuICAgIGNvbnN0IHNlbGVjdGVkID0gcGFyZW50Lm11bHRpcGxlXG4gICAgICA/IChwYXJlbnQudmFsdWUgYXMgRGF0ZVtdKS5zb21lKChzZWxEYXkpID0+IHRoaXMuZGF0ZUFkYXB0ZXIuc2FtZURhdGUodGhpcy52YWx1ZSwgc2VsRGF5KSlcbiAgICAgIDogISFwYXJlbnQudmFsdWUgJiYgdGhpcy5kYXRlQWRhcHRlci5jb21wYXJlRGF0ZSh0aGlzLnZhbHVlLCBwYXJlbnQudmFsdWUpID09PSAwO1xuICAgIHRoaXMudG9nZ2xlU3RhdGUoJ3NlbGVjdGVkJywgc2VsZWN0ZWQpO1xuICAgIHRoaXMuaW50ZXJuYWxzLmFyaWFQcmVzc2VkID0gU3RyaW5nKHNlbGVjdGVkKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXREaXNhYmxlZEZpbHRlcmVkU3RhdGUocGFyZW50OiBTYmJDYWxlbmRhckVsZW1lbnQ8VD4pOiB2b2lkIHtcbiAgICBjb25zdCBpc0ZpbHRlcmVkT3V0ID0gIXRoaXMuX2lzQWN0aXZlRGF0ZShwYXJlbnQuZGF0ZUZpbHRlcik7XG4gICAgY29uc3QgaXNPdXRPZlJhbmdlID0gIXRoaXMuX2lzRGF5SW5SYW5nZShwYXJlbnQubWluLCBwYXJlbnQubWF4KTtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNGaWx0ZXJlZE91dCB8fCBpc091dE9mUmFuZ2U7XG4gICAgdGhpcy5pbnRlcm5hbHMuYXJpYURpc2FibGVkID0gU3RyaW5nKHRoaXMuZGlzYWJsZWQpO1xuICAgIHRoaXMudG9nZ2xlU3RhdGUoJ2Nyb3NzZWQtb3V0JywgaXNGaWx0ZXJlZE91dCAmJiAhaXNPdXRPZlJhbmdlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2lzQWN0aXZlRGF0ZShkYXRlRmlsdGVyOiAoKGRhdGU6IFQgfCBudWxsKSA9PiBib29sZWFuKSB8IG51bGwpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZGF0ZUZpbHRlcj8uKHRoaXMudmFsdWUpID8/IHRydWU7XG4gIH1cblxuICBwcml2YXRlIF9pc0RheUluUmFuZ2UobWluOiBUIHwgbnVsbCwgbWF4OiBUIHwgbnVsbCk6IGJvb2xlYW4ge1xuICAgIGlmICghbWluICYmICFtYXgpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5kYXRlQWRhcHRlci5zYW1lRGF0ZSh0aGlzLnZhbHVlLCB0aGlzLmRhdGVBZGFwdGVyLmNsYW1wRGF0ZSh0aGlzLnZhbHVlLCBtaW4sIG1heCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlU2xvdGNoYW5nZShlOiBFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuaW50ZXJuYWxzLmFyaWFEZXNjcmliZWRCeUVsZW1lbnRzID0gKGUudGFyZ2V0IGFzIEhUTUxTbG90RWxlbWVudCkuYXNzaWduZWRFbGVtZW50cygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlclRlbXBsYXRlKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGAgPHNwYW4gY2xhc3M9XCJzYmItY2FsZW5kYXItZGF5X192YWx1ZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAke3RoaXMuZGF0ZUFkYXB0ZXIuZ2V0RGF0ZSh0aGlzLnZhbHVlKX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwic2JiLWNhbGVuZGFyLWRheV9fZXh0cmFcIj5cbiAgICAgICAgPHNsb3QgQHNsb3RjaGFuZ2U9JHsoZXZlbnQ6IEV2ZW50KSA9PiB0aGlzLl9oYW5kbGVTbG90Y2hhbmdlKGV2ZW50KX0+PC9zbG90PlxuICAgICAgPC9zcGFuPmA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1jYWxlbmRhci1kYXknOiBTYmJDYWxlbmRhckRheUVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztJQ2FhLCtCQUFxQjttQkFBbUI7Ozs7Y0FBeEMsOEJBQXdDLFlBQTZCOzs7R0FpQ3hFLEtBQUEsVUFqQ0csa0JBQUEsTUFBQSwwQkFBQSxHQWlDZ0I7RUF5RDdCOzs7MkJBdEZHLFNBQVEsQ0FBRTs0QkFVVixNQUFLLENBQUU7R0FUUixhQUFBLE1BQUEsTUFBQSxzQkFBQTtJQUFBLE1BQUE7SUFBQSxNQUFBO0lBQUEsUUFBQTtJQUFBLFNBQUE7SUFBQSxRQUFBO0tBQUEsTUFBQSxRQUFBLFVBQUE7S0FBQSxNQUFBLEtBQUEsVUFBQTtNQUFBLElBQW9CLE9BQUk7S0FBQTtJQUFBO0lBQUEsVUFBQTtHQUFBLEdBQUEsTUFBQSwwQkFBQTtHQVV4QixhQUFBLE1BQUEsTUFBQSx1QkFBQTtJQUFBLE1BQUE7SUFBQSxNQUFBO0lBQUEsUUFBQTtJQUFBLFNBQUE7SUFBQSxRQUFBO0tBQUEsTUFBQSxRQUFBLFdBQUE7S0FBQSxNQUFBLEtBQUEsVUFBQTtNQUFBLElBQVcsUUFBSztLQUFBO0lBQUE7SUFBQSxVQUFBO0dBQUEsR0FBQSxNQUFBLDBCQUFBOzs7Ozs7Ozs7R0FkZ0IsS0FBQSxjQUFzQjtFQUFtQjs7R0FDbEQsS0FB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
|