UNPKG

mantine-datepicker-jalali

Version:
226 lines (219 loc) 29.1 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var dayjs = require('dayjs'); var React = require('react'); var core = require('@mantine/core'); var hooks = require('@mantine/hooks'); var Calendar = require('../Calendar/Calendar.js'); var pickCalendarLevelsProps = require('../Calendar/pick-calendar-levels-props/pick-calendar-levels-props.js'); var HiddenDatesInput = require('../HiddenDatesInput/HiddenDatesInput.js'); var assignTime = require('../../utils/assign-time/assign-time.js'); require('../DatesProvider/DatesProvider.js'); var useDatesContext = require('../DatesProvider/use-dates-context.js'); var isDateValid = require('./is-date-valid/is-date-valid.js'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e["default"] : e; } var dayjs__default = /*#__PURE__*/_interopDefaultLegacy(dayjs); var React__default = /*#__PURE__*/_interopDefaultLegacy(React); var __defProp = Object.defineProperty; var __defProps = Object.defineProperties; var __getOwnPropDescs = Object.getOwnPropertyDescriptors; var __getOwnPropSymbols = Object.getOwnPropertySymbols; var __hasOwnProp = Object.prototype.hasOwnProperty; var __propIsEnum = Object.prototype.propertyIsEnumerable; var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __spreadValues = (a, b) => { for (var prop in b || (b = {})) if (__hasOwnProp.call(b, prop)) __defNormalProp(a, prop, b[prop]); if (__getOwnPropSymbols) for (var prop of __getOwnPropSymbols(b)) { if (__propIsEnum.call(b, prop)) __defNormalProp(a, prop, b[prop]); } return a; }; var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); var __objRest = (source, exclude) => { var target = {}; for (var prop in source) if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) target[prop] = source[prop]; if (source != null && __getOwnPropSymbols) for (var prop of __getOwnPropSymbols(source)) { if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop)) target[prop] = source[prop]; } return target; }; const defaultProps = { valueFormat: "MMMM D, YYYY", fixOnBlur: true, preserveTime: true }; const DateInput = React.forwardRef((props, ref) => { const _a = core.useInputProps("DateInput", defaultProps, props), { inputProps, wrapperProps, value, defaultValue, onChange, clearable, clearButtonProps, popoverProps, getDayProps, locale, valueFormat, dateParser, minDate, maxDate, fixOnBlur, onFocus, onBlur, onClick, readOnly, name, form, rightSection, unstyled, classNames, styles, allowDeselect, preserveTime } = _a, rest = __objRest(_a, [ "inputProps", "wrapperProps", "value", "defaultValue", "onChange", "clearable", "clearButtonProps", "popoverProps", "getDayProps", "locale", "valueFormat", "dateParser", "minDate", "maxDate", "fixOnBlur", "onFocus", "onBlur", "onClick", "readOnly", "name", "form", "rightSection", "unstyled", "classNames", "styles", "allowDeselect", "preserveTime" ]); const { calendarProps, others } = pickCalendarLevelsProps.pickCalendarProps(rest); const ctx = useDatesContext.useDatesContext(); const defaultDateParser = (val) => dayjs__default(val, valueFormat, ctx.getLocale(locale)).toDate(); const _dateParser = dateParser || defaultDateParser; const _allowDeselect = clearable || allowDeselect; const [_value, setValue, controlled] = hooks.useUncontrolled({ value, defaultValue, finalValue: null, onChange }); const formatValue = (val) => val ? locale && locale === "fa" ? new Intl.DateTimeFormat("fa-IR", { dateStyle: "long" }).format(val) : dayjs__default(val).locale(ctx.getLocale(locale)).format(valueFormat) : ""; const [inputValue, setInputValue] = React.useState(formatValue(_value)); const [dropdownOpened, setDropdownOpened] = React.useState(false); const handleInputChange = (event) => { const val = event.currentTarget.value; setInputValue(val); if (val.trim() === "" && _allowDeselect) { setValue(null); } else { const dateValue = _dateParser(val); isDateValid.isDateValid({ date: dateValue, minDate, maxDate }) && setValue(dateValue); } }; const handleInputBlur = (event) => { onBlur == null ? void 0 : onBlur(event); setDropdownOpened(false); fixOnBlur && setInputValue(formatValue(_value)); }; const handleInputFocus = (event) => { onFocus == null ? void 0 : onFocus(event); setDropdownOpened(true); }; const handleInputClick = (event) => { onClick == null ? void 0 : onClick(event); setDropdownOpened(true); }; const _getDayProps = (date) => __spreadProps(__spreadValues({}, getDayProps == null ? void 0 : getDayProps(date)), { selected: dayjs__default(_value).isSame(date, "day"), onClick: () => { const valueWithTime = preserveTime ? assignTime.assignTime(_value, date) : date; const val = _allowDeselect ? dayjs__default(_value).isSame(date, "day") ? null : valueWithTime : valueWithTime; setValue(val); !controlled && setInputValue(formatValue(val)); setDropdownOpened(false); } }); const _rightSection = rightSection || (clearable && _value && !readOnly ? /* @__PURE__ */ React__default.createElement(core.CloseButton, __spreadValues({ variant: "transparent", onMouseDown: (event) => event.preventDefault(), tabIndex: -1, onClick: () => { setValue(null); !controlled && setInputValue(""); }, unstyled }, clearButtonProps)) : null); hooks.useDidUpdate(() => { value !== void 0 && !dropdownOpened && setInputValue(formatValue(value)); }, [value]); return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(core.Input.Wrapper, __spreadProps(__spreadValues({}, wrapperProps), { __staticSelector: "DateInput" }), /* @__PURE__ */ React__default.createElement(core.Popover, __spreadValues({ opened: dropdownOpened, trapFocus: false, position: "bottom-start", disabled: readOnly }, popoverProps), /* @__PURE__ */ React__default.createElement(core.Popover.Target, null, /* @__PURE__ */ React__default.createElement(core.Input, __spreadProps(__spreadValues(__spreadValues({ style: { direction: locale && locale === "fa" ? "rtl" : "ltr", textAlignLast: locale && locale === "fa" ? "right" : "auto" }, "data-dates-input": true, "data-read-only": readOnly || void 0, autoComplete: "off", ref, value: inputValue, onChange: handleInputChange, onBlur: handleInputBlur, onFocus: handleInputFocus, onClick: handleInputClick, readOnly, rightSection: _rightSection }, inputProps), others), { __staticSelector: "DateInput" }))), /* @__PURE__ */ React__default.createElement(core.Popover.Dropdown, { onMouseDown: (event) => event.preventDefault(), "data-dates-dropdown": true }, /* @__PURE__ */ React__default.createElement(Calendar.Calendar, __spreadProps(__spreadValues({ __staticSelector: "DateInput", defaultDate: _value || void 0 }, calendarProps), { classNames, styles, unstyled, __preventFocus: true, minDate, maxDate, locale, getDayProps: _getDayProps }))))), /* @__PURE__ */ React__default.createElement(HiddenDatesInput.HiddenDatesInput, { name, form, value: _value, type: "default" })); }); exports.DateInput = DateInput; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0ZUlucHV0LmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9EYXRlSW5wdXQvRGF0ZUlucHV0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xuaW1wb3J0IFJlYWN0LCB7IGZvcndhcmRSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtcbiAgRGVmYXVsdFByb3BzLFxuICBJbnB1dFNoYXJlZFByb3BzLFxuICBJbnB1dFdyYXBwZXJCYXNlUHJvcHMsXG4gIElucHV0U3R5bGVzTmFtZXMsXG4gIElucHV0V3JhcHBlclN0eWxlc05hbWVzLFxuICB1c2VJbnB1dFByb3BzLFxuICBJbnB1dCxcbiAgUG9wb3ZlclByb3BzLFxuICBQb3BvdmVyLFxuICBDbG9zZUJ1dHRvbixcbn0gZnJvbSAnQG1hbnRpbmUvY29yZSc7XG5pbXBvcnQgeyB1c2VVbmNvbnRyb2xsZWQsIHVzZURpZFVwZGF0ZSB9IGZyb20gJ0BtYW50aW5lL2hvb2tzJztcbmltcG9ydCB7IENhbGVuZGFyLCBDYWxlbmRhckJhc2VQcm9wcywgQ2FsZW5kYXJTdHlsZXNOYW1lcywgcGlja0NhbGVuZGFyUHJvcHMgfSBmcm9tICcuLi9DYWxlbmRhcic7XG5pbXBvcnQgeyBEZWNhZGVMZXZlbFNldHRpbmdzIH0gZnJvbSAnLi4vRGVjYWRlTGV2ZWwnO1xuaW1wb3J0IHsgWWVhckxldmVsU2V0dGluZ3MgfSBmcm9tICcuLi9ZZWFyTGV2ZWwnO1xuaW1wb3J0IHsgTW9udGhMZXZlbFNldHRpbmdzIH0gZnJvbSAnLi4vTW9udGhMZXZlbCc7XG5pbXBvcnQgeyBIaWRkZW5EYXRlc0lucHV0IH0gZnJvbSAnLi4vSGlkZGVuRGF0ZXNJbnB1dCc7XG5pbXBvcnQgeyBhc3NpZ25UaW1lIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgRGF0ZVZhbHVlIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgdXNlRGF0ZXNDb250ZXh0IH0gZnJvbSAnLi4vRGF0ZXNQcm92aWRlcic7XG5pbXBvcnQgeyBpc0RhdGVWYWxpZCB9IGZyb20gJy4vaXMtZGF0ZS12YWxpZC9pcy1kYXRlLXZhbGlkJztcblxuZXhwb3J0IHR5cGUgRGF0ZUlucHV0U3R5bGVzTmFtZXMgPSBDYWxlbmRhclN0eWxlc05hbWVzIHwgSW5wdXRTdHlsZXNOYW1lcyB8IElucHV0V3JhcHBlclN0eWxlc05hbWVzO1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGVJbnB1dFByb3BzXG4gIGV4dGVuZHMgRGVmYXVsdFByb3BzPERhdGVJbnB1dFN0eWxlc05hbWVzPixcbiAgICBJbnB1dFNoYXJlZFByb3BzLFxuICAgIElucHV0V3JhcHBlckJhc2VQcm9wcyxcbiAgICBDYWxlbmRhckJhc2VQcm9wcyxcbiAgICBEZWNhZGVMZXZlbFNldHRpbmdzLFxuICAgIFllYXJMZXZlbFNldHRpbmdzLFxuICAgIE1vbnRoTGV2ZWxTZXR0aW5ncyxcbiAgICBPbWl0PFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjwnaW5wdXQnPiwgJ3NpemUnIHwgJ3ZhbHVlJyB8ICdkZWZhdWx0VmFsdWUnIHwgJ29uQ2hhbmdlJz4ge1xuICAvKiogUGFyc2VzIHVzZXIgaW5wdXQgdG8gY29udmVydCBpdCB0byBEYXRlIG9iamVjdCAqL1xuICBkYXRlUGFyc2VyPzogKHZhbHVlOiBzdHJpbmcpID0+IERhdGU7XG5cbiAgLyoqIFZhbHVlIGZvciBjb250cm9sbGVkIGNvbXBvbmVudCAqL1xuICB2YWx1ZT86IERhdGVWYWx1ZTtcblxuICAvKiogRGVmYXVsdCB2YWx1ZSBmb3IgdW5jb250cm9sbGVkIGNvbXBvbmVudCAqL1xuICBkZWZhdWx0VmFsdWU/OiBEYXRlVmFsdWU7XG5cbiAgLyoqIENhbGxlZCB3aGVuIHZhbHVlIGNoYW5nZXMgKi9cbiAgb25DaGFuZ2U/KHZhbHVlOiBEYXRlVmFsdWUpOiB2b2lkO1xuXG4gIC8qKiBQcm9wcyBhZGRlZCB0byBQb3BvdmVyIGNvbXBvbmVudCAqL1xuICBwb3BvdmVyUHJvcHM/OiBQYXJ0aWFsPE9taXQ8UG9wb3ZlclByb3BzLCAnY2hpbGRyZW4nPj47XG5cbiAgLyoqIERldGVybWluZXMgd2hldGhlciBpbnB1dCB2YWx1ZSBjYW4gYmUgY2xlYXJlZCwgYWRkcyBjbGVhciBidXR0b24gdG8gcmlnaHQgc2VjdGlvbiwgZmFsc2UgYnkgZGVmYXVsdCAqL1xuICBjbGVhcmFibGU/OiBib29sZWFuO1xuXG4gIC8qKiBQcm9wcyBhZGRlZCB0byBjbGVhciBidXR0b24gKi9cbiAgY2xlYXJCdXR0b25Qcm9wcz86IFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjwnYnV0dG9uJz47XG5cbiAgLyoqIERheWpzIGZvcm1hdCB0byBkaXNwbGF5IGlucHV0IHZhbHVlLCBcIk1NTU0gRCwgWVlZWVwiIGJ5IGRlZmF1bHQgICovXG4gIHZhbHVlRm9ybWF0Pzogc3RyaW5nO1xuXG4gIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgaW5wdXQgdmFsdWUgc2hvdWxkIGJlIHJldmVydGVkIHRvIGxhc3Qga25vd24gdmFsaWQgdmFsdWUgb24gYmx1ciwgdHJ1ZSBieSBkZWZhdWx0ICovXG4gIGZpeE9uQmx1cj86IGJvb2xlYW47XG5cbiAgLyoqIERldGVybWluZXMgd2hldGhlciB2YWx1ZSBjYW4gYmUgZGVzZWxlY3RlZCB3aGVuIHRoZSB1c2VyIGNsaWNrcyBvbiB0aGUgc2VsZWN0ZWQgZGF0ZSBpbiB0aGUgY2FsZW5kYXIgb3IgZXJhc2VzIGNvbnRlbnQgb2YgdGhlIGlucHV0LCB0cnVlIGlmIGNsZWFyYWJsZSBwcm9wIGlzIHNldCwgZmFsc2UgYnkgZGVmYXVsdCAqL1xuICBhbGxvd0Rlc2VsZWN0PzogYm9vbGVhbjtcblxuICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIHRpbWUgKGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzIGFuZCBtaWxsaXNlY29uZHMpIHNob3VsZCBiZSBwcmVzZXJ2ZWQgd2hlbiBuZXcgZGF0ZSBpcyBwaWNrZWQsIHRydWUgYnkgZGVmYXVsdCAqL1xuICBwcmVzZXJ2ZVRpbWU/OiBib29sZWFuO1xufVxuXG5jb25zdCBkZWZhdWx0UHJvcHM6IFBhcnRpYWw8RGF0ZUlucHV0UHJvcHM+ID0ge1xuICB2YWx1ZUZvcm1hdDogJ01NTU0gRCwgWVlZWScsXG4gIGZpeE9uQmx1cjogdHJ1ZSxcbiAgcHJlc2VydmVUaW1lOiB0cnVlLFxufTtcblxuZXhwb3J0IGNvbnN0IERhdGVJbnB1dCA9IGZvcndhcmRSZWY8SFRNTElucHV0RWxlbWVudCwgRGF0ZUlucHV0UHJvcHM+KChwcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBpbnB1dFByb3BzLFxuICAgIHdyYXBwZXJQcm9wcyxcbiAgICB2YWx1ZSxcbiAgICBkZWZhdWx0VmFsdWUsXG4gICAgb25DaGFuZ2UsXG4gICAgY2xlYXJhYmxlLFxuICAgIGNsZWFyQnV0dG9uUHJvcHMsXG4gICAgcG9wb3ZlclByb3BzLFxuICAgIGdldERheVByb3BzLFxuICAgIGxvY2FsZSxcbiAgICB2YWx1ZUZvcm1hdCxcbiAgICBkYXRlUGFyc2VyLFxuICAgIG1pbkRhdGUsXG4gICAgbWF4RGF0ZSxcbiAgICBmaXhPbkJsdXIsXG4gICAgb25Gb2N1cyxcbiAgICBvbkJsdXIsXG4gICAgb25DbGljayxcbiAgICByZWFkT25seSxcbiAgICBuYW1lLFxuICAgIGZvcm0sXG4gICAgcmlnaHRTZWN0aW9uLFxuICAgIHVuc3R5bGVkLFxuICAgIGNsYXNzTmFtZXMsXG4gICAgc3R5bGVzLFxuICAgIGFsbG93RGVzZWxlY3QsXG4gICAgcHJlc2VydmVUaW1lLFxuICAgIC4uLnJlc3RcbiAgfSA9IHVzZUlucHV0UHJvcHMoJ0RhdGVJbnB1dCcsIGRlZmF1bHRQcm9wcywgcHJvcHMpO1xuICBjb25zdCB7IGNhbGVuZGFyUHJvcHMsIG90aGVycyB9ID0gcGlja0NhbGVuZGFyUHJvcHMocmVzdCk7XG4gIGNvbnN0IGN0eCA9IHVzZURhdGVzQ29udGV4dCgpO1xuICBjb25zdCBkZWZhdWx0RGF0ZVBhcnNlciA9ICh2YWw6IHN0cmluZykgPT5cbiAgICBkYXlqcyh2YWwsIHZhbHVlRm9ybWF0LCBjdHguZ2V0TG9jYWxlKGxvY2FsZSkpLnRvRGF0ZSgpO1xuXG4gIGNvbnN0IF9kYXRlUGFyc2VyID0gZGF0ZVBhcnNlciB8fCBkZWZhdWx0RGF0ZVBhcnNlcjtcbiAgY29uc3QgX2FsbG93RGVzZWxlY3QgPSBjbGVhcmFibGUgfHwgYWxsb3dEZXNlbGVjdDtcblxuICBjb25zdCBbX3ZhbHVlLCBzZXRWYWx1ZSwgY29udHJvbGxlZF0gPSB1c2VVbmNvbnRyb2xsZWQoe1xuICAgIHZhbHVlLFxuICAgIGRlZmF1bHRWYWx1ZSxcbiAgICBmaW5hbFZhbHVlOiBudWxsLFxuICAgIG9uQ2hhbmdlLFxuICB9KTtcblxuICBjb25zdCBmb3JtYXRWYWx1ZSA9ICh2YWw6IERhdGUpID0+XG4gICAgdmFsXG4gICAgICA/IGxvY2FsZSAmJiBsb2NhbGUgPT09ICdmYSdcbiAgICAgICAgPyBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCgnZmEtSVInLCB7IGRhdGVTdHlsZTogJ2xvbmcnIH0pLmZvcm1hdCh2YWwpXG4gICAgICAgIDogZGF5anModmFsKS5sb2NhbGUoY3R4LmdldExvY2FsZShsb2NhbGUpKS5mb3JtYXQodmFsdWVGb3JtYXQpXG4gICAgICA6ICcnO1xuXG4gIGNvbnN0IFtpbnB1dFZhbHVlLCBzZXRJbnB1dFZhbHVlXSA9IHVzZVN0YXRlKGZvcm1hdFZhbHVlKF92YWx1ZSkpO1xuICBjb25zdCBbZHJvcGRvd25PcGVuZWQsIHNldERyb3Bkb3duT3BlbmVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCBoYW5kbGVJbnB1dENoYW5nZSA9IChldmVudDogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICBjb25zdCB2YWwgPSBldmVudC5jdXJyZW50VGFyZ2V0LnZhbHVlO1xuICAgIHNldElucHV0VmFsdWUodmFsKTtcblxuICAgIGlmICh2YWwudHJpbSgpID09PSAnJyAmJiBfYWxsb3dEZXNlbGVjdCkge1xuICAgICAgc2V0VmFsdWUobnVsbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGRhdGVWYWx1ZSA9IF9kYXRlUGFyc2VyKHZhbCk7XG4gICAgICBpc0RhdGVWYWxpZCh7IGRhdGU6IGRhdGVWYWx1ZSwgbWluRGF0ZSwgbWF4RGF0ZSB9KSAmJiBzZXRWYWx1ZShkYXRlVmFsdWUpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVJbnB1dEJsdXIgPSAoZXZlbnQ6IFJlYWN0LkZvY3VzRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICBvbkJsdXI/LihldmVudCk7XG4gICAgc2V0RHJvcGRvd25PcGVuZWQoZmFsc2UpO1xuICAgIGZpeE9uQmx1ciAmJiBzZXRJbnB1dFZhbHVlKGZvcm1hdFZhbHVlKF92YWx1ZSkpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUlucHV0Rm9jdXMgPSAoZXZlbnQ6IFJlYWN0LkZvY3VzRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICBvbkZvY3VzPy4oZXZlbnQpO1xuICAgIHNldERyb3Bkb3duT3BlbmVkKHRydWUpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUlucHV0Q2xpY2sgPSAoZXZlbnQ6IFJlYWN0Lk1vdXNlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICBvbkNsaWNrPy4oZXZlbnQpO1xuICAgIHNldERyb3Bkb3duT3BlbmVkKHRydWUpO1xuICB9O1xuXG4gIGNvbnN0IF9nZXREYXlQcm9wcyA9IChkYXRlOiBEYXRlKSA9PiAoe1xuICAgIC4uLmdldERheVByb3BzPy4oZGF0ZSksXG4gICAgc2VsZWN0ZWQ6IGRheWpzKF92YWx1ZSkuaXNTYW1lKGRhdGUsICdkYXknKSxcbiAgICBvbkNsaWNrOiAoKSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZVdpdGhUaW1lID0gcHJlc2VydmVUaW1lID8gYXNzaWduVGltZShfdmFsdWUsIGRhdGUpIDogZGF0ZTtcbiAgICAgIGNvbnN0IHZhbCA9IF9hbGxvd0Rlc2VsZWN0XG4gICAgICAgID8gZGF5anMoX3ZhbHVlKS5pc1NhbWUoZGF0ZSwgJ2RheScpXG4gICAgICAgICAgPyBudWxsXG4gICAgICAgICAgOiB2YWx1ZVdpdGhUaW1lXG4gICAgICAgIDogdmFsdWVXaXRoVGltZTtcbiAgICAgIHNldFZhbHVlKHZhbCk7XG4gICAgICAhY29udHJvbGxlZCAmJiBzZXRJbnB1dFZhbHVlKGZvcm1hdFZhbHVlKHZhbCkpO1xuICAgICAgc2V0RHJvcGRvd25PcGVuZWQoZmFsc2UpO1xuICAgIH0sXG4gIH0pO1xuXG4gIGNvbnN0IF9yaWdodFNlY3Rpb24gPVxuICAgIHJpZ2h0U2VjdGlvbiB8fFxuICAgIChjbGVhcmFibGUgJiYgX3ZhbHVlICYmICFyZWFkT25seSA/IChcbiAgICAgIDxDbG9zZUJ1dHRvblxuICAgICAgICB2YXJpYW50PVwidHJhbnNwYXJlbnRcIlxuICAgICAgICBvbk1vdXNlRG93bj17KGV2ZW50KSA9PiBldmVudC5wcmV2ZW50RGVmYXVsdCgpfVxuICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICBzZXRWYWx1ZShudWxsKTtcbiAgICAgICAgICAhY29udHJvbGxlZCAmJiBzZXRJbnB1dFZhbHVlKCcnKTtcbiAgICAgICAgfX1cbiAgICAgICAgdW5zdHlsZWQ9e3Vuc3R5bGVkfVxuICAgICAgICB7Li4uY2xlYXJCdXR0b25Qcm9wc31cbiAgICAgIC8+XG4gICAgKSA6IG51bGwpO1xuXG4gIHVzZURpZFVwZGF0ZSgoKSA9PiB7XG4gICAgdmFsdWUgIT09IHVuZGVmaW5lZCAmJiAhZHJvcGRvd25PcGVuZWQgJiYgc2V0SW5wdXRWYWx1ZShmb3JtYXRWYWx1ZSh2YWx1ZSkpO1xuICB9LCBbdmFsdWVdKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8SW5wdXQuV3JhcHBlciB7Li4ud3JhcHBlclByb3BzfSBfX3N0YXRpY1NlbGVjdG9yPVwiRGF0ZUlucHV0XCI+XG4gICAgICAgIDxQb3BvdmVyXG4gICAgICAgICAgb3BlbmVkPXtkcm9wZG93bk9wZW5lZH1cbiAgICAgICAgICB0cmFwRm9jdXM9e2ZhbHNlfVxuICAgICAgICAgIHBvc2l0aW9uPVwiYm90dG9tLXN0YXJ0XCJcbiAgICAgICAgICBkaXNhYmxlZD17cmVhZE9ubHl9XG4gICAgICAgICAgey4uLnBvcG92ZXJQcm9wc31cbiAgICAgICAgPlxuICAgICAgICAgIDxQb3BvdmVyLlRhcmdldD5cbiAgICAgICAgICAgIDxJbnB1dFxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIGRpcmVjdGlvbjogbG9jYWxlICYmIGxvY2FsZSA9PT0gJ2ZhJyA/ICdydGwnIDogJ2x0cicsXG4gICAgICAgICAgICAgICAgdGV4dEFsaWduTGFzdDogbG9jYWxlICYmIGxvY2FsZSA9PT0gJ2ZhJyA/ICdyaWdodCcgOiAnYXV0bycsXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIGRhdGEtZGF0ZXMtaW5wdXRcbiAgICAgICAgICAgICAgZGF0YS1yZWFkLW9ubHk9e3JlYWRPbmx5IHx8IHVuZGVmaW5lZH1cbiAgICAgICAgICAgICAgYXV0b0NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgICAgICAgIHZhbHVlPXtpbnB1dFZhbHVlfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlSW5wdXRDaGFuZ2V9XG4gICAgICAgICAgICAgIG9uQmx1cj17aGFuZGxlSW5wdXRCbHVyfVxuICAgICAgICAgICAgICBvbkZvY3VzPXtoYW5kbGVJbnB1dEZvY3VzfVxuICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVJbnB1dENsaWNrfVxuICAgICAgICAgICAgICByZWFkT25seT17cmVhZE9ubHl9XG4gICAgICAgICAgICAgIHJpZ2h0U2VjdGlvbj17X3JpZ2h0U2VjdGlvbn1cbiAgICAgICAgICAgICAgey4uLmlucHV0UHJvcHN9XG4gICAgICAgICAgICAgIHsuLi5vdGhlcnN9XG4gICAgICAgICAgICAgIF9fc3RhdGljU2VsZWN0b3I9XCJEYXRlSW5wdXRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1BvcG92ZXIuVGFyZ2V0PlxuICAgICAgICAgIDxQb3BvdmVyLkRyb3Bkb3duIG9uTW91c2VEb3duPXsoZXZlbnQpID0+IGV2ZW50LnByZXZlbnREZWZhdWx0KCl9IGRhdGEtZGF0ZXMtZHJvcGRvd24+XG4gICAgICAgICAgICA8Q2FsZW5kYXJcbiAgICAgICAgICAgICAgX19zdGF0aWNTZWxlY3Rvcj1cIkRhdGVJbnB1dFwiXG4gICAgICAgICAgICAgIGRlZmF1bHREYXRlPXtfdmFsdWUgfHwgdW5kZWZpbmVkfVxuICAgICAgICAgICAgICB7Li4uY2FsZW5kYXJQcm9wc31cbiAgICAgICAgICAgICAgY2xhc3NOYW1lcz17Y2xhc3NOYW1lc31cbiAgICAgICAgICAgICAgc3R5bGVzPXtzdHlsZXN9XG4gICAgICAgICAgICAgIHVuc3R5bGVkPXt1bnN0eWxlZH1cbiAgICAgICAgICAgICAgX19wcmV2ZW50Rm9jdXNcbiAgICAgICAgICAgICAgbWluRGF0ZT17bWluRGF0ZX1cbiAgICAgICAgICAgICAgbWF4RGF0ZT17bWF4RGF0ZX1cbiAgICAgICAgICAgICAgbG9jYWxlPXtsb2NhbGV9XG4gICAgICAgICAgICAgIGdldERheVByb3BzPXtfZ2V0RGF5UHJvcHN9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvUG9wb3Zlci5Ecm9wZG93bj5cbiAgICAgICAgPC9Qb3BvdmVyPlxuICAgICAgPC9JbnB1dC5XcmFwcGVyPlxuICAgICAgPEhpZGRlbkRhdGVzSW5wdXQgbmFtZT17bmFtZX0gZm9ybT17Zm9ybX0gdmFsdWU9e192YWx1ZX0gdHlwZT1cImRlZmF1bHRcIiAvPlxuICAgIDwvPlxuICApO1xufSk7XG4iXSwibmFtZXMiOlsiZm9yd2FyZFJlZiIsInVzZUlucHV0UHJvcHMiLCJwaWNrQ2FsZW5kYXJQcm9wcyIsInVzZURhdGVzQ29udGV4dCIsImRheWpzIiwidXNlVW5jb250cm9sbGVkIiwidXNlU3RhdGUiLCJpc0RhdGVWYWxpZCIsImFzc2lnblRpbWUiLCJSZWFjdCIsIkNsb3NlQnV0dG9uIiwidXNlRGlkVXBkYXRlIiwiSW5wdXQiLCJQb3BvdmVyIiwiQ2FsZW5kYXIiLCJIaWRkZW5EYXRlc0lucHV0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFJLFNBQVMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDO0FBQ3RDLElBQUksVUFBVSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztBQUN6QyxJQUFJLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQztBQUN6RCxJQUFJLG1CQUFtQixHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQztBQUN2RCxJQUFJLFlBQVksR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQztBQUNuRCxJQUFJLFlBQVksR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLG9CQUFvQixDQUFDO0FBQ3pELElBQUksZUFBZSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxLQUFLLEtBQUssR0FBRyxJQUFJLEdBQUcsR0FBRyxTQUFTLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUNoSyxJQUFJLGNBQWMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUs7QUFDL0IsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ2hDLElBQUksSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUM7QUFDbEMsTUFBTSxlQUFlLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMs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