@libs-ui/components-inputs-quill 0.2.339-0 → 0.2.341-0
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/esm2022/link/link.component.mjs +2 -2
- package/esm2022/quill2x.component.mjs +22 -5
- package/esm2022/upload-image/upload-image.component.mjs +1 -1
- package/esm2022/utils/quill2x.define.mjs +26 -19
- package/fesm2022/libs-ui-components-inputs-quill.mjs +46 -22
- package/fesm2022/libs-ui-components-inputs-quill.mjs.map +1 -1
- package/package.json +17 -17
- package/utils/quill2x.define.d.ts +2 -1
|
@@ -58,7 +58,7 @@ export class LibsUiComponentsInputsQuillUploadImageComponent {
|
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
60
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsInputsQuillUploadImageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
61
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: LibsUiComponentsInputsQuillUploadImageComponent, isStandalone: true, selector: "libs_ui-components-inputs-quill-upload_image", inputs: { ignoreCommunicateMicroEvent: { classPropertyName: "ignoreCommunicateMicroEvent", publicName: "ignoreCommunicateMicroEvent", isSignal: true, isRequired: false, transformFunction: null }, uploadImageConfig: { classPropertyName: "uploadImageConfig", publicName: "uploadImageConfig", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { outClose: "outClose" }, ngImport: i0, template: "<libs_ui-components-modal\n [title]=\"'i18n_upload_image'\"\n [mode]=\"'center'\"\n [width]=\"'598px'\"\n [headerConfig]=\"{ ignoreHeaderTheme: true }\"\n [maxHeight]=\"'calc(100% - 100px)'\"\n [height]=\"'auto'\"\n [zIndex]=\"uploadImageConfig().zIndex || 1203\"\n [disable]=\"disable()\"\n [ignoreCommunicateMicroEvent]=\"ignoreCommunicateMicroEvent()\"\n [buttonsFooter]=\"buttonFooter()\"\n (outEvent)=\"handlerEventModal($event)\">\n <div class=\"libs-ui-modal-body-custom\">\n <!-- <libs-uicomponents-media-upload [zIndex]=\"zIndex+1\"\n [labelConfig]=\"labelConfig\"\n [multiple]=\"false\"\n [fileType]=\"'image'\"\n [doNotDelete]=\"true\"\n [maxImageSize]=\"maxImageSize || 1048576\"\n [limitFile]=\"10\"\n [validRequired]=\"{isRequired: true}\"\n (moChangeFile)=\"handlerChangeFile($event)\"\n (outFunctionsControl)=\"handlerFunctionsControl($event)\">\n </libs-uicomponents-media-upload> -->\n </div>\n</libs_ui-components-modal>\n", dependencies: [{ kind: "component", type: LibsUiComponentsModalComponent, selector: "libs_ui-components-modal", inputs: ["show", "mode", "isBackdropTransparent", "isBackgroundTransparentModal", "isSizeBackdropByWidthHeightInput", "hasShadowBoxWhenHiddenBackDropTransparent", "classIncludeModalWrapper", "zIndex", "width", "height", "maxWidth", "maxHeight", "minWidth", "isFullScreen", "disable", "ignoreCommunicateMicroEvent", "headerConfig", "bodyConfig", "footerConfig", "buttonsFooter", "title", "titleUseXssFilter", "titleUseTooltip", "titleUseInnerText"], outputs: ["showChange", "widthChange", "heightChange", "maxWidthChange", "maxHeightChange", "minWidthChange", "disableChange", "buttonsFooterChange", "outScrollContent", "outEvent", "outFunctionControl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
61
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: LibsUiComponentsInputsQuillUploadImageComponent, isStandalone: true, selector: "libs_ui-components-inputs-quill-upload_image", inputs: { ignoreCommunicateMicroEvent: { classPropertyName: "ignoreCommunicateMicroEvent", publicName: "ignoreCommunicateMicroEvent", isSignal: true, isRequired: false, transformFunction: null }, uploadImageConfig: { classPropertyName: "uploadImageConfig", publicName: "uploadImageConfig", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { outClose: "outClose" }, ngImport: i0, template: "<libs_ui-components-modal\n [title]=\"'i18n_upload_image'\"\n [mode]=\"'center'\"\n [width]=\"'598px'\"\n [headerConfig]=\"{ ignoreHeaderTheme: true }\"\n [maxHeight]=\"'calc(100% - 100px)'\"\n [height]=\"'auto'\"\n [zIndex]=\"uploadImageConfig().zIndex || 1203\"\n [disable]=\"disable()\"\n [ignoreCommunicateMicroEvent]=\"ignoreCommunicateMicroEvent()\"\n [buttonsFooter]=\"buttonFooter()\"\n (outEvent)=\"handlerEventModal($event)\">\n <div class=\"libs-ui-modal-body-custom\">\n <!-- <libs-uicomponents-media-upload [zIndex]=\"zIndex+1\"\n [labelConfig]=\"labelConfig\"\n [multiple]=\"false\"\n [fileType]=\"'image'\"\n [doNotDelete]=\"true\"\n [maxImageSize]=\"maxImageSize || 1048576\"\n [limitFile]=\"10\"\n [validRequired]=\"{isRequired: true}\"\n (moChangeFile)=\"handlerChangeFile($event)\"\n (outFunctionsControl)=\"handlerFunctionsControl($event)\">\n </libs-uicomponents-media-upload> -->\n </div>\n</libs_ui-components-modal>\n", dependencies: [{ kind: "component", type: LibsUiComponentsModalComponent, selector: "libs_ui-components-modal", inputs: ["show", "mode", "isBackdropTransparent", "isBackgroundTransparentModal", "isSizeBackdropByWidthHeightInput", "hasShadowBoxWhenHiddenBackDropTransparent", "classIncludeModalWrapper", "zIndex", "width", "height", "maxWidth", "maxHeight", "minWidth", "isFullScreen", "disable", "ignoreCommunicateMicroEvent", "escapeKeyboardCloseModal", "headerConfig", "bodyConfig", "footerConfig", "buttonsFooter", "title", "titleUseXssFilter", "titleUseTooltip", "titleUseInnerText"], outputs: ["showChange", "widthChange", "heightChange", "maxWidthChange", "maxHeightChange", "minWidthChange", "disableChange", "buttonsFooterChange", "outScrollContent", "outEvent", "outFunctionControl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
62
62
|
}
|
|
63
63
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsInputsQuillUploadImageComponent, decorators: [{
|
|
64
64
|
type: Component,
|
|
@@ -392,6 +392,25 @@ export function splitCells(cellSplit) {
|
|
|
392
392
|
});
|
|
393
393
|
});
|
|
394
394
|
}
|
|
395
|
+
export const getAllTablesWithSpan = (quill) => {
|
|
396
|
+
const root = quill.root;
|
|
397
|
+
// Tìm tất cả table trong quill
|
|
398
|
+
const tableEls = root.querySelectorAll('table');
|
|
399
|
+
tableEls.forEach((tableEl) => {
|
|
400
|
+
const rows = tableEl.querySelectorAll('tr');
|
|
401
|
+
rows.forEach((rowEl, rIndex) => {
|
|
402
|
+
rowEl.setAttribute('index', `${rIndex}`);
|
|
403
|
+
const cells = rowEl.querySelectorAll('td, th');
|
|
404
|
+
cells.forEach((cellEl, cIndex) => {
|
|
405
|
+
cellEl.setAttribute('index', `${rIndex}-${cIndex}`);
|
|
406
|
+
const rowspan = parseInt(cellEl.getAttribute('rowspan') || '1', 10);
|
|
407
|
+
const colspan = parseInt(cellEl.getAttribute('colspan') || '1', 10);
|
|
408
|
+
cellEl.setAttribute('rowspan', String(rowspan));
|
|
409
|
+
cellEl.setAttribute('colspan', String(colspan));
|
|
410
|
+
});
|
|
411
|
+
});
|
|
412
|
+
});
|
|
413
|
+
};
|
|
395
414
|
//-------------------------------------------
|
|
396
415
|
let register = false;
|
|
397
416
|
export const registerQuill2x = () => {
|
|
@@ -415,23 +434,11 @@ export const registerQuill2x = () => {
|
|
|
415
434
|
Quill.register('modules/resize', ResizeModule);
|
|
416
435
|
[...iconList()].forEach((element) => set(icons, element.key, `<span class="${element.icon} ${element.key === 'unLink' ? 'hover:text-[#ee2d41] ' : 'hover:text-[var(--libs-ui-color-light-1)]'} text-[16px] text-[#6a7383]"></span>`));
|
|
417
436
|
};
|
|
418
|
-
export const
|
|
419
|
-
const
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
rows.forEach((rowEl, rIndex) => {
|
|
425
|
-
rowEl.setAttribute('index', `${rIndex}`);
|
|
426
|
-
const cells = rowEl.querySelectorAll('td, th');
|
|
427
|
-
cells.forEach((cellEl, cIndex) => {
|
|
428
|
-
cellEl.setAttribute('index', `${rIndex}-${cIndex}`);
|
|
429
|
-
const rowspan = parseInt(cellEl.getAttribute('rowspan') || '1', 10);
|
|
430
|
-
const colspan = parseInt(cellEl.getAttribute('colspan') || '1', 10);
|
|
431
|
-
cellEl.setAttribute('rowspan', String(rowspan));
|
|
432
|
-
cellEl.setAttribute('colspan', String(colspan));
|
|
433
|
-
});
|
|
434
|
-
});
|
|
435
|
-
});
|
|
437
|
+
export const isEmptyQuill = (quill) => {
|
|
438
|
+
const rootElement = quill?.root;
|
|
439
|
+
if (!rootElement)
|
|
440
|
+
return true;
|
|
441
|
+
const html = rootElement.innerHTML.trim();
|
|
442
|
+
return html === '<p><br></p>' || html === '<p></p>' || html === '' || html === '<p><span class="ql-cursor"></span><br></p>' || rootElement.classList.contains('ql-blank');
|
|
436
443
|
};
|
|
437
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVpbGwyeC5kZWZpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvaW5wdXRzL3F1aWxsL3NyYy91dGlscy9xdWlsbDJ4LmRlZmluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsNkRBQTZEO0FBQzdELE9BQU8sRUFBRSxHQUFHLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2RCxPQUFPLFlBQVksTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLE9BQU8sTUFBTSxTQUFTLENBQUM7QUFDOUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0QsSUFBSSxTQUFTLEdBQXVCLElBQUksQ0FBQztBQUN6QyxJQUFJLE9BQU8sR0FBdUIsSUFBSSxDQUFDO0FBQ3ZDLElBQUksV0FBVyxHQUFHLEtBQUssQ0FBQztBQUV4Qix1QkFBdUI7QUFDdkIsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxLQUFjLEVBQUUsUUFBNEIsRUFBRSxTQUEyQixFQUFFLEVBQUU7SUFDL0csZ0NBQWdDO0lBQ2hDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUV0RyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVDLEtBQUssQ0FBQyxTQUFTLEdBQUcsc0JBQXNCLENBQUM7SUFDekMsMkVBQTJFO0lBQzNFLEtB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RyxRQUFRLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3BFLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFFcEUsTUFBTSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7Z0JBQ2hELE1BQU0sQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ2xELENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb24gKi9cbmltcG9ydCB7IHNldCwgc2V0U3R5bGVzRWxlbWVudCB9IGZyb20gJ0BsaWJzLXVpL3V0aWxzJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCBSZXNpemVNb2R1bGUgZnJvbSAnQHNzdW1vL3F1aWxsLXJlc2l6ZS1tb2R1bGUnO1xuaW1wb3J0IFF1aWxsMnggZnJvbSAncXVpbGwyeCc7XG5pbXBvcnQgeyBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFF1aWxsTWVudGlvbjJ4QmxvdCB9IGZyb20gJy4uL2Jsb3RzLWN1c3RvbSc7XG5pbXBvcnQgeyBmb250U2l6ZVdoaXRlTGlzdCwgaWNvbkxpc3QgfSBmcm9tICcuL3F1aWxsLmRlZmluZSc7XG5sZXQgc3RhcnRDZWxsOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xubGV0IGVuZENlbGw6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5sZXQgaXNTZWxlY3RpbmcgPSBmYWxzZTtcblxuLy9yZWdpb24gRnVuY3Rpb24gVGFibGVcbmV4cG9ydCBjb25zdCBjcmVhdGVUYWJsZVNlbGVjdG9yID0gKHF1aWxsOiBRdWlsbDJ4LCBhbmNob3JFbDogSFRNTEVsZW1lbnQgfCBudWxsLCB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpID0+IHtcbiAgLy8gxJDDs25nIHBvcHVwIGPFqSBu4bq/dSBjw7JuIHThu5NuIHThuqFpXG4gIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5tYW51YWwtdGFibGUtY3JlYXRvcicpLmZvckVhY2goKGVsKSA9PiBlbC5wYXJlbnRFbGVtZW50Py5yZW1vdmVDaGlsZChlbCkpO1xuXG4gIGNvbnN0IHBvcHVwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIHBvcHVwLmNsYXNzTmFtZSA9ICdtYW51YWwtdGFibGUtY3JlYXRvcic7XG4gIC8vIElubGluZSBzdHlsZSDEkeG7gyDEkeG6o20gYuG6o28gaGnhu4NuIHRo4buLIG5nYXkgY+G6oyBraGkgQ1NTIGNvbXBvbmVudCBraMO0bmcgw6FwIGThu6VuZ1xuICBwb3B1cC5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gIHBvcHVwLnN0eWxlLmJhY2tncm91bmQgPSAnI2ZmZic7XG4gIHBvcHVwLnN0eWxlLmJvcmRlciA9ICcxcHggc29saWQgI2RkZCc7XG4gIHBvcHVwLnN0eWxlLmJvcmRlclJhZGl1cyA9ICc2cHgnO1xuICBwb3B1cC5zdHlsZS5ib3hTaGFkb3cgPSAnMCA2cHggMTZweCByZ2JhKDAsMCwwLDAuMTIpJztcbiAgcG9wdXAuc3R5bGUucGFkZGluZyA9ICcxMnB4JztcbiAgcG9wdXAuc3R5bGUuekluZGV4ID0gJzEwMDAwJztcbiAgcG9wdXAuc3R5bGUubWluV2lkdGggPSAnMjAwcHgnO1xuICBzZXRTdHlsZXNFbGVtZW50KHBvcHVwLCB7XG4gICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgYmFja2dyb3VuZDogJyNmZmYnLFxuICAgIGJvcmRlcjogJzFweCBzb2xpZCAjZGRkJyxcbiAgICBib3JkZXJSYWRpdXM6ICc2cHgnLFxuICAgIGJveFNoYWRvdzogJzAgNnB4IDE2cHggcmdiYSgwLDAsMCwwLjEyKScsXG4gICAgcGFkZGluZzogJzEycHgnLFxuICAgIHpJbmRleDogJzEwMDAwJyxcbiAgICBtaW5XaWR0aDogJzIwMHB4JyxcbiAgfSk7XG5cbiAgY29uc3QgaW5mbyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICBpbmZvLnRleHRDb250ZW50ID0gdHJhbnNsYXRlLmluc3RhbnQoJ2kxOG5fc2VsZWN0X2NlbGwnKTtcbiAgc2V0U3R5bGVzRWxlbWVudChpbmZvLCB7XG4gICAgZm9udFNpemU6ICcxMnB4JyxcbiAgICBjb2xvcjogJyMzMzMnLFxuICAgIG1hcmdpbkJvdHRvbTogJzEwcHgnLFxuICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgZm9udFdlaWdodDogJzYwMCcsXG4gIH0pO1xuICBwb3B1cC5hcHBlbmRDaGlsZChpbmZvKTtcblxuICBjb25zdCBncmlkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIHNldFN0eWxlc0VsZW1lbnQoZ3JpZCwge1xuICAgIGRpc3BsYXk6ICdncmlkJyxcbiAgICBncmlkVGVtcGxhdGVDb2x1bW5zOiAncmVwZWF0KDgsIDE4cHgpJyxcbiAgICBnYXA6ICc0cHgnLFxuICB9KTtcblxuICBjb25zdCBtYXggPSA4O1xuICBmb3IgKGxldCByb3cgPSAxOyByb3cgPD0gbWF4OyByb3crKykge1xuICAgIGZvciAobGV0IGNvbCA9IDE7IGNvbCA8PSBtYXg7IGNvbCsrKSB7XG4gICAgICBjb25zdCBjZWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICBjZWxsLnN0eWxlLndpZHRoID0gJzE4cHgnO1xuICAgICAgY2VsbC5zdHlsZS5oZWlnaHQgPSAnMThweCc7XG4gICAgICBjZWxsLnN0eWxlLmJvcmRlciA9ICcxcHggc29saWQgI2U1ZTdlYic7XG4gICAgICBjZWxsLnN0eWxlLmJhY2tncm91bmQgPSAnI2ZmZic7XG4gICAgICBjZWxsLnN0eWxlLmN1cnNvciA9ICdwb2ludGVyJztcblxuICAgICAgY2VsbC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWVudGVyJywgKCkgPT4ge1xuICAgICAgICBpbmZvLnRleHRDb250ZW50ID0gYCR7cm93fSDDlyAke2NvbH1gO1xuICAgICAgICBBcnJheS5mcm9tKGdyaWQuY2hpbGRyZW4pLmZvckVhY2goKGVsLCBpZHgpID0+IHtcbiAgICAgICAgICBjb25zdCByciA9IE1hdGguZmxvb3IoaWR4IC8gbWF4KSArIDE7XG4gICAgICAgICAgY29uc3QgY2MgPSAoaWR4ICUgbWF4KSArIDE7XG4gICAgICAgICAgKGVsIGFzIEhUTUxFbGVtZW50KS5zdHlsZS5iYWNrZ3JvdW5kID0gcnIgPD0gcm93ICYmIGNjIDw9IGNvbCA/ICcjZGJlYWZlJyA6ICcjZmZmJztcbiAgICAgICAgICAoZWwgYXMgSFRNTEVsZW1lbnQpLnN0eWxlLmJvcmRlckNvbG9yID0gcnIgPD0gcm93ICYmIGNjIDw9IGNvbCA/ICcjOTNjNWZkJyA6ICcjZTVlN2ViJztcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgY2VsbC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBxdWlsbC5mb2N1cygpO1xuICAgICAgICAgIGNvbnN0IHRhYmxlTW9kdWxlID0gcXVpbGwuZ2V0TW9kdWxlKCd0YWJsZScpIGFzIGFueTtcbiAgICAgICAgICBpZiAodGFibGVNb2R1bGUgJiYgdHlwZW9mIHRhYmxlTW9kdWxlLmluc2VydFRhYmxlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB0YWJsZU1vZHVsZS5pbnNlcnRUYWJsZShyb3csIGNvbCk7XG4gICAgICAgICAgICBnZXRBbGxUYWJsZXNXaXRoU3BhbihxdWlsbCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIGlmIChkb2N1bWVudC5ib2R5LmNvbnRhaW5zKHBvcHVwKSkge1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChwb3B1cCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgb25PdXRzaWRlQ2xpY2ssIHRydWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgZ3JpZC5hcHBlbmRDaGlsZChjZWxsKTtcbiAgICB9XG4gIH1cbiAgcG9wdXAuYXBwZW5kQ2hpbGQoZ3JpZCk7XG5cbiAgY29uc3QgcGxhY2VQb3B1cCA9ICgpID0+IHtcbiAgICBjb25zdCByZWN0ID0gYW5jaG9yRWw/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IHRvcCA9IHJlY3QgPyByZWN0LmJvdHRvbSArIHdpbmRvdy5zY3JvbGxZICsgNiA6IDEwMDtcbiAgICBjb25zdCBsZWZ0ID0gcmVjdCA/IHJlY3QubGVmdCArIHdpbmRvdy5zY3JvbGxYIDogMTAwO1xuICAgIHBvcHVwLnN0eWxlLnRvcCA9IGAke3RvcH1weGA7XG4gICAgcG9wdXAuc3R5bGUubGVmdCA9IGAke2xlZnR9cHhgO1xuICB9O1xuXG4gIGNvbnN0IG9uT3V0c2lkZUNsaWNrID0gKGV2OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgaWYgKCFwb3B1cC5jb250YWlucyhldi50YXJnZXQgYXMgTm9kZSkpIHtcbiAgICAgIGlmIChkb2N1bWVudC5ib2R5LmNvbnRhaW5zKHBvcHVwKSkge1xuICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHBvcHVwKTtcbiAgICAgIH1cbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgb25PdXRzaWRlQ2xpY2ssIHRydWUpO1xuICAgIH1cbiAgfTtcblxuICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHBvcHVwKTtcbiAgcGxhY2VQb3B1cCgpO1xuICBzZXRUaW1lb3V0KCgpID0+IGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgb25PdXRzaWRlQ2xpY2ssIHRydWUpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVDb250ZXh0TWVudU9wdGlvblRhYmxlID0gKHF1aWxsOiBRdWlsbDJ4LCB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpID0+IHtcbiAgbGV0IGxhc3RDb250ZXh0SW5kZXg6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0IGNsb3NlQW55TWVudSA9ICgpID0+IHtcbiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcubWFudWFsLXRhYmxlLW1lbnUnKS5mb3JFYWNoKChlbCkgPT4gZWwucGFyZW50RWxlbWVudD8ucmVtb3ZlQ2hpbGQoZWwpKTtcbiAgfTtcblxuICBjb25zdCBydW5XaXRoU2VsZWN0aW9uID0gKGZuOiAoKSA9PiB2b2lkKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIHF1aWxsLmZvY3VzKCk7XG4gICAgICBpZiAodHlwZW9mIGxhc3RDb250ZXh0SW5kZXggPT09ICdudW1iZXInKSB7XG4gICAgICAgIHF1aWxsLnNldFNlbGVjdGlvbihsYXN0Q29udGV4dEluZGV4LCAwLCAnc2lsZW50Jyk7XG4gICAgICB9XG4gICAgfSBjYXRjaCB7XG4gICAgICAvKiBuby1vcDogZ2nhu68gecOqbiBu4bq/dSBraMO0bmcgdGjhu4Mgc2V0IHNlbGVjdGlvbiAqL1xuICAgIH1cbiAgICBmbigpO1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZU1lbnVJdGVtID0gKGxhYmVsOiBzdHJpbmcsIG9uQ2xpY2s6ICgpID0+IHZvaWQpID0+IHtcbiAgICBjb25zdCBpdGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgaXRlbS50ZXh0Q29udGVudCA9IGxhYmVsO1xuICAgIGl0ZW0uc3R5bGUucGFkZGluZyA9ICc2cHggMTJweCc7XG4gICAgaXRlbS5zdHlsZS5jdXJzb3IgPSAncG9pbnRlcic7XG4gICAgaXRlbS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAgICAgIHJ1bldpdGhTZWxlY3Rpb24ob25DbGljayk7XG4gICAgICBjbG9zZUFueU1lbnUoKTtcbiAgICB9KTtcbiAgICBpdGVtLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZW50ZXInLCAoKSA9PiB7XG4gICAgICBpdGVtLnN0eWxlLmJhY2tncm91bmQgPSAnI2Y1ZjVmNSc7XG4gICAgfSk7XG4gICAgaXRlbS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgKCkgPT4ge1xuICAgICAgaXRlbS5zdHlsZS5iYWNrZ3JvdW5kID0gJ3RyYW5zcGFyZW50JztcbiAgICB9KTtcbiAgICByZXR1cm4gaXRlbTtcbiAgfTtcblxuICBjb25zdCBvcGVuQ29udGV4dE1lbnUgPSAocGFnZVg6IG51bWJlciwgcGFnZVk6IG51bWJlcikgPT4ge1xuICAgIGNsb3NlQW55TWVudSgpO1xuXG4gICAgY29uc3QgbWVudSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIG1lbnUuY2xhc3NOYW1lID0gJ21hbnVhbC10YWJsZS1tZW51JztcbiAgICBtZW51LnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICBtZW51LnN0eWxlLnRvcCA9IGAke3BhZ2VZfXB4YDtcbiAgICBtZW51LnN0eWxlLmxlZnQgPSBgJHtwYWdlWH1weGA7XG4gICAgbWVudS5zdHlsZS5iYWNrZ3JvdW5kID0gJyNmZmYnO1xuICAgIG1lbnUuc3R5bGUuYm9yZGVyID0gJzFweCBzb2xpZCAjY2NjJztcbiAgICBtZW51LnN0eWxlLmJvcmRlclJhZGl1cyA9ICc0cHgnO1xuICAgIG1lbnUuc3R5bGUuYm94U2hhZG93ID0gJzAgNHB4IDEycHggcmdiYSgwLDAsMCwwLjIpJztcbiAgICBtZW51LnN0eWxlLnpJbmRleCA9ICcxMDAwMSc7XG4gICAgbWVudS5zdHlsZS5wYWRkaW5nID0gJzRweCc7XG4gICAgbWVudS5zdHlsZS5taW5XaWR0aCA9ICcxODBweCc7XG5cbiAgICBjb25zdCB0YWJsZU1vZHVsZSA9IHF1aWxsLmdldE1vZHVsZSgndGFibGUnKSBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgbnVsbDtcbiAgICBjb25zdCBzYWZlQ2FsbCA9IChtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pID0+IHtcbiAgICAgIGlmIChtZXRob2QgPT09ICdtZXJnZUNlbGxzJykge1xuICAgICAgICBjb25zdCBbc3RhcnRDZWxsLCBlbmRDZWxsXSA9IGFyZ3M7XG4gICAgICAgIG1lcmdlQ2VsbHMoc3RhcnRDZWxsLCBlbmRDZWxsKTtcbiAgICAgICAgY2xvc2VBbnlNZW51KCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChtZXRob2QgPT09ICdzcGxpdENlbGxzJykge1xuICAgICAgICBjb25zdCBbc3RhcnRDZWxsXSA9IGFyZ3M7XG4gICAgICAgIHNwbGl0Q2VsbHMoc3RhcnRDZWxsKTtcbiAgICAgICAgY2xvc2VBbnlNZW51KCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0YWJsZU1vZHVsZSAmJiB0eXBlb2YgdGFibGVNb2R1bGVbbWV0aG9kXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0YWJsZU1vZHVsZVttZXRob2RdKC4uLmFyZ3MpO1xuICAgICAgICBnZXRBbGxUYWJsZXNXaXRoU3BhbihxdWlsbCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIG1lbnUuYXBwZW5kQ2hpbGQoY3JlYXRlTWVudUl0ZW0odHJhbnNsYXRlLmluc3RhbnQoJ2kxOG5fYWRkX25ld19yb3dfYWJvdmUnKSwgKCkgPT4gc2FmZUNhbGwoJ2luc2VydFJvd0Fib3ZlJykpKTtcbiAgICBtZW51LmFwcGVuZENoaWxkKGNyZWF0ZU1lbnVJdGVtKHRyYW5zbGF0ZS5pbnN0YW50KCdpMThuX2FkZF9uZXdfcm93X2JlbG93JyksICgpID0+IHNhZmVDYWxsKCdpbnNlcnRSb3dCZWxvdycpKSk7XG4gICAgbWVudS5hcHBlbmRDaGlsZChjcmVhdGVNZW51SXRlbSh0cmFuc2xhdGUuaW5zdGFudCgnaTE4bl9hZGRfbmV3X2NvbHVtbl9sZWZ0JyksICgpID0+IHNhZmVDYWxsKCdpbnNlcnRDb2x1bW5MZWZ0JykpKTtcbiAgICBtZW51LmFwcGVuZENoaWxkKGNyZWF0ZU1lbnVJdGVtKHRyYW5zbGF0ZS5pbnN0YW50KCdpMThuX2FkZF9uZXdfY29sdW1uX3JpZ2h0JyksICgpID0+IHNhZmVDYWxsKCdpbnNlcnRDb2x1bW5SaWdodCcpKSk7XG4gICAgY29uc3QgZGl2aWRlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIGRpdmlkZXIuc3R5bGUuaGVpZ2h0ID0gJzFweCc7XG4gICAgZGl2aWRlci5zdHlsZS5iYWNrZ3JvdW5kID0gJyNlZWUnO1xuICAgIGRpdmlkZXIuc3R5bGUubWFyZ2luID0gJzRweCAwJztcbiAgICBtZW51LmFwcGVuZENoaWxkKGRpdmlkZXIpO1xuICAgIGlmIChzdGFydENlbGwgJiYgZW5kQ2VsbCkge1xuICAgICAgY29uc3Qgc3RhcnRDZWxsU3RvcmUgPSBzdGFydENlbGw7XG4gICAgICBjb25zdCBlbmRDZWxsU3RvcmUgPSBlbmRDZWxsO1xuICAgICAgY29uc3QgY29sc3BhbiA9IHBhcnNlSW50KHN0YXJ0Q2VsbFN0b3JlLmdldEF0dHJpYnV0ZSgnY29sc3BhbicpIHx8ICcxJywgMTApO1xuICAgICAgY29uc3Qgcm93c3BhbiA9IHBhcnNlSW50KHN0YXJ0Q2VsbFN0b3JlLmdldEF0dHJpYnV0ZSgncm93c3BhbicpIHx8ICcxJywgMTApO1xuICAgICAgbGV0IHRvdGFsTWVudSA9IDA7XG4gICAgICBpZiAoc3RhcnRDZWxsICE9PSBlbmRDZWxsKSB7XG4gICAgICAgIG1lbnUuYXBwZW5kQ2hpbGQoY3JlYXRlTWVudUl0ZW0odHJhbnNsYXRlLmluc3RhbnQoJ2kxOG5fbWVyZ2VfY2VsbHMnKSwgKCkgPT4gc2FmZUNhbGwoJ21lcmdlQ2VsbHMnLCBzdGFydENlbGxTdG9yZSwgZW5kQ2VsbFN0b3JlKSkpO1xuICAgICAgICB0b3RhbE1lbnUrKztcbiAgICAgIH1cbiAgICAgIGlmIChzdGFydENlbGwgPT09IGVuZENlbGwgJiYgKGNvbHNwYW4gPiAxIHx8IHJvd3NwYW4gPiAxKSkge1xuICAgICAgICBtZW51LmFwcGVuZENoaWxkKGNyZWF0ZU1lbnVJdGVtKHRyYW5zbGF0ZS5pbnN0YW50KCdpMThuX3NwbGl0X2NlbGxzJyksICgpID0+IHNhZmVDYWxsKCdzcGxpdENlbGxzJywgc3RhcnRDZWxsU3RvcmUpKSk7XG4gICAgICAgIHRvdGFsTWVudSsrO1xuICAgICAgfVxuXG4gICAgICBpZiAodG90YWxNZW51ID4gMCkge1xuICAgICAgICBjb25zdCBkaXZpZGVyMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICBkaXZpZGVyMi5zdHlsZS5oZWlnaHQgPSAnMXB4JztcbiAgICAgICAgZGl2aWRlcjIuc3R5bGUuYmFja2dyb3VuZCA9ICcjZWVlJztcbiAgICAgICAgZGl2aWRlcjIuc3R5bGUubWFyZ2luID0gJzRweCAwJztcbiAgICAgICAgbWVudS5hcHBlbmRDaGlsZChkaXZpZGVyMik7XG4gICAgICB9XG4gICAgfVxuICAgIG1lbnUuYXBwZW5kQ2hpbGQoY3JlYXRlTWVudUl0ZW0odHJhbnNsYXRlLmluc3RhbnQoJ2kxOG5fZGVsZXRlX3JvdycpLCAoKSA9PiBzYWZlQ2FsbCgnZGVsZXRlUm93JykpKTtcbiAgICBtZW51LmFwcGVuZENoaWxkKGNyZWF0ZU1lbnVJdGVtKHRyYW5zbGF0ZS5pbnN0YW50KCdpMThuX2RlbGV0ZV9jb2x1bW4nKSwgKCkgPT4gc2FmZUNhbGwoJ2RlbGV0ZUNvbHVtbicpKSk7XG4gICAgbWVudS5hcHBlbmRDaGlsZChjcmVhdGVNZW51SXRlbSh0cmFuc2xhdGUuaW5zdGFudCgnaTE4bl9kZWxldGVfdGFibGUnKSwgKCkgPT4gc2FmZUNhbGwoJ2RlbGV0ZVRhYmxlJykpKTtcblxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobWVudSk7XG5cbiAgICBjb25zdCBvbk91dHNpZGUgPSAoZXY6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGlmICghbWVudS5jb250YWlucyhldi50YXJnZXQgYXMgTm9kZSkgfHwgKGV2LnRhcmdldCBhcyBIVE1MRWxlbWVudCkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3RhYmxlJykubGVuZ3RoIDwgMCkge1xuICAgICAgICBjbG9zZUFueU1lbnUoKTtcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBvbk91dHNpZGUsIHRydWUpO1xuICAgICAgfVxuICAgIH07XG4gICAgc2V0VGltZW91dCgoKSA9PiBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIG9uT3V0c2lkZSwgdHJ1ZSkpO1xuXG4gICAgY29uc3Qgb25TY3JvbGwgPSAoKSA9PiB7XG4gICAgICBjbG9zZUFueU1lbnUoKTtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBvblNjcm9sbCwgdHJ1ZSk7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgb25TY3JvbGwsIHRydWUpO1xuICAgIH07XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIG9uU2Nyb2xsLCB0cnVlKTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgb25TY3JvbGwsIHRydWUpO1xuICB9O1xuXG4gIGZyb21FdmVudDxNb3VzZUV2ZW50PihxdWlsbC5yb290LCAnY29udGV4dG1lbnUnKS5zdWJzY3JpYmUoKGV2OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgY29uc3QgdGFyZ2V0ID0gZXYudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIGNvbnN0IGlzQ2VsbCA9ICEhdGFyZ2V0LmNsb3Nlc3QoJ3RkLHRoLHRhYmxlLC5xbC10YWJsZScpO1xuICAgIGlmICghaXNDZWxsKSByZXR1cm47XG4gICAgZXYucHJldmVudERlZmF1bHQoKTtcbiAgICB0cnkge1xuICAgICAgLy8gxq91IHRpw6puIGzhuqV5IGluZGV4IHThu6sgYmxvdCB0xrDGoW5nIOG7qW5nIG5vZGVcbiAgICAgIGNvbnN0IFF1aWxsQW55ID0gUXVpbGwyeCBhcyBhbnk7XG4gICAgICBjb25zdCBibG90ID0gUXVpbGxBbnk/LmZpbmQ/Lih0YXJnZXQpO1xuICAgICAgaWYgKGJsb3QgJiYgdHlwZW9mIGJsb3Qub2Zmc2V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGxhc3RDb250ZXh0SW5kZXggPSBibG90Lm9mZnNldChxdWlsbC5zY3JvbGwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gRmFsbGJhY2s6IMSR4bq3dCBzZWxlY3Rpb24gaGnhu4duIHThuqFpIG7hur91IGtow7RuZyB4w6FjIMSR4buLbmggxJHGsOG7o2NcbiAgICAgICAgY29uc3Qgc2VsID0gcXVpbGwuZ2V0U2VsZWN0aW9uKHRydWUpO1xuICAgICAgICBsYXN0Q29udGV4dEluZGV4ID0gc2VsID8gc2VsLmluZGV4IDogMDtcbiAgICAgIH1cbiAgICB9IGNhdGNoIHtcbiAgICAgIGNvbnN0IHNlbCA9IHF1aWxsLmdldFNlbGVjdGlvbih0cnVlKTtcbiAgICAgIGxhc3RDb250ZXh0SW5kZXggPSBzZWwgPyBzZWwuaW5kZXggOiAwO1xuICAgIH1cbiAgICBxdWlsbC5mb2N1cygpO1xuICAgIG9wZW5Db250ZXh0TWVudShldi5wYWdlWCwgZXYucGFnZVkpO1xuICB9KTtcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFV0aWxzOiBjbGVhciB2w6Agc2VsZWN0IGNlbGxzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmNvbnN0IGNsZWFyU2VsZWN0aW9uID0gKCkgPT4ge1xuICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuc2VsZWN0ZWQtY2VsbCcpLmZvckVhY2goKGMpID0+IHtcbiAgICBjLmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdGVkLWNlbGwnKTtcbiAgfSk7XG59O1xuXG5jb25zdCBzZWxlY3RSYW5nZUNlbGxzID0gKHN0YXJ0OiBIVE1MRWxlbWVudCwgZW5kOiBIVE1MRWxlbWVudCkgPT4ge1xuICBjbGVhclNlbGVjdGlvbigpO1xuICBjb25zdCB0YWJsZSA9IHN0YXJ0LmNsb3Nlc3QoJ3RhYmxlJyk7XG4gIGlmICghdGFibGUgfHwgdGFibGUgIT09IGVuZC5jbG9zZXN0KCd0YWJsZScpKSByZXR1cm47XG5cbiAgY29uc3Qgcm93cyA9IEFycmF5LmZyb20odGFibGUucXVlcnlTZWxlY3RvckFsbCgndHInKSk7XG4gIGNvbnN0IHN0YXJ0Um93ID0gcm93cy5pbmRleE9mKHN0YXJ0LnBhcmVudEVsZW1lbnQgYXMgSFRNTFRhYmxlUm93RWxlbWVudCk7XG4gIGNvbnN0IGVuZFJvdyA9IHJvd3MuaW5kZXhPZihlbmQucGFyZW50RWxlbWVudCBhcyBIVE1MVGFibGVSb3dFbGVtZW50KTtcblxuICBjb25zdCBtaW5Sb3cgPSBNYXRoLm1pbihzdGFydFJvdywgZW5kUm93KTtcbiAgY29uc3QgbWF4Um93ID0gTWF0aC5tYXgoc3RhcnRSb3csIGVuZFJvdyk7XG5cbiAgY29uc3Qgc3RhcnRDb2wgPSBBcnJheS5mcm9tKHN0YXJ0LnBhcmVudEVsZW1lbnQhLmNoaWxkcmVuKS5pbmRleE9mKHN0YXJ0KTtcbiAgY29uc3QgZW5kQ29sID0gQXJyYXkuZnJvbShlbmQucGFyZW50RWxlbWVudCEuY2hpbGRyZW4pLmluZGV4T2YoZW5kKTtcblxuICBjb25zdCBtaW5Db2wgPSBNYXRoLm1pbihzdGFydENvbCwgZW5kQ29sKTtcbiAgY29uc3QgbWF4Q29sID0gTWF0aC5tYXgoc3RhcnRDb2wsIGVuZENvbCk7XG5cbiAgZm9yIChsZXQgciA9IG1pblJvdzsgciA8PSBtYXhSb3c7IHIrKykge1xuICAgIGNvbnN0IHJvdyA9IHJvd3Nbcl07XG4gICAgY29uc3QgY2VsbHMgPSBBcnJheS5mcm9tKHJvdy5jaGlsZHJlbik7XG4gICAgZm9yIChsZXQgYyA9IG1pbkNvbDsgYyA8PSBtYXhDb2w7IGMrKykge1xuICAgICAgKGNlbGxzW2NdIGFzIEhUTUxFbGVtZW50KS5jbGFzc0xpc3QuYWRkKCdzZWxlY3RlZC1jZWxsJyk7XG4gICAgfVxuICB9XG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBFbmFibGUgc2VsZWN0aW9uIHRyw6puIHRhYmxlXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5leHBvcnQgZnVuY3Rpb24gZW5hYmxlVGFibGVTZWxlY3Rpb24oY29udGFpbmVyOiBIVE1MRWxlbWVudCkge1xuICBjb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgKGUpID0+IHtcbiAgICBjb25zdCB0YXJnZXQgPSBlLnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICBpZiAoKHRhcmdldC50YWdOYW1lID09PSAnVEQnICYmIGUuYnV0dG9uICE9PSAyKSB8fCAoZS5idXR0b24gPT09IDIgJiYgIXRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoJ3NlbGVjdGVkLWNlbGwnKSkpIHtcbiAgICAgIGNsZWFyU2VsZWN0aW9uKCk7XG4gICAgICBpc1NlbGVjdGluZyA9IHRydWU7XG4gICAgICBzdGFydENlbGwgPSB0YXJnZXQ7XG4gICAgICBlbmRDZWxsID0gdGFyZ2V0O1xuICAgICAgc2VsZWN0UmFuZ2VDZWxscyhzdGFydENlbGwsIGVuZENlbGwpO1xuICAgIH1cbiAgfSk7XG5cbiAgY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIChlKSA9PiB7XG4gICAgaWYgKCFpc1NlbGVjdGluZykgcmV0dXJuO1xuICAgIGNvbnN0IHRhcmdldCA9IGUudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIGlmICh0YXJnZXQudGFnTmFtZSA9PT0gJ1REJyAmJiBzdGFydENlbGwpIHtcbiAgICAgIGVuZENlbGwgPSB0YXJnZXQ7XG4gICAgICBzZWxlY3RSYW5nZUNlbGxzKHN0YXJ0Q2VsbCwgZW5kQ2VsbCk7XG4gICAgfVxuICB9KTtcblxuICBjb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsICgpID0+IHtcbiAgICBpc1NlbGVjdGluZyA9IGZhbHNlO1xuICB9KTtcbn1cbmNvbnN0IG9uT3V0c2lkZSA9IChldjogTW91c2VFdmVudCkgPT4ge1xuICBjb25zdCB0YXJnZXQgPSBldi50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gIGlmICh0YXJnZXQudGFnTmFtZSAhPT0gJ1REJyAmJiB0YXJnZXQudGFnTmFtZSAhPT0gJ1RSJyAmJiB0YXJnZXQudGFnTmFtZSAhPT0gJ1RCT0RZJyAmJiB0YXJnZXQudGFnTmFtZSAhPT0gJ1RIRUFEJyAmJiB0YXJnZXQudGFnTmFtZSAhPT0gJ1RBQkxFJykge1xuICAgIGlzU2VsZWN0aW5nID0gZmFsc2U7XG4gICAgc3RhcnRDZWxsID0gbnVsbDtcbiAgICBlbmRDZWxsID0gbnVsbDtcbiAgICBjbGVhclNlbGVjdGlvbigpO1xuICB9XG59O1xuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBvbk91dHNpZGUsIHRydWUpO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNZXJnZSBjZWxsc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuZXhwb3J0IGNvbnN0IG1lcmdlQ2VsbHMgPSAoc3RhcnRDZWxsOiBIVE1MRWxlbWVudCwgZW5kQ2VsbDogSFRNTEVsZW1lbnQpID0+IHtcbiAgY29uc3Qgc3RhcnRDZWxsSW5kZXggPSBzdGFydENlbGwuZ2V0QXR0cmlidXRlKCdpbmRleCcpO1xuICBjb25zdCBlbmRDZWxsSW5kZXggPSBlbmRDZWxsLmdldEF0dHJpYnV0ZSgnaW5kZXgnKTtcbiAgY29uc3Qgc3RhcnRDZWxsUm93ID0gcGFyc2VJbnQoc3RhcnRDZWxsSW5kZXg/LnNwbGl0KCctJylbMF0gfHwgJzAnLCAxMCk7XG4gIGNvbnN0IGVuZENlbGxSb3cgPSBwYXJzZUludChlbmRDZWxsSW5kZXg/LnNwbGl0KCctJylbMF0gfHwgJzAnLCAxMCk7XG4gIGNvbnN0IHN0YXJ0Q2VsbENvbCA9IHBhcnNlSW50KHN0YXJ0Q2VsbEluZGV4Py5zcGxpdCgnLScpWzFdIHx8ICcwJywgMTApO1xuICBjb25zdCBlbmRDZWxsQ29sID0gcGFyc2VJbnQoZW5kQ2VsbEluZGV4Py5zcGxpdCgnLScpWzFdIHx8ICcwJywgMTApO1xuICBjb25zdCBtaW5Sb3cgPSBNYXRoLm1pbihzdGFydENlbGxSb3csIGVuZENlbGxSb3cpO1xuICBjb25zdCBtYXhSb3cgPSBNYXRoLm1heChzdGFydENlbGxSb3csIGVuZENlbGxSb3cpO1xuICBjb25zdCBtaW5Db2wgPSBNYXRoLm1pbihzdGFydENlbGxDb2wsIGVuZENlbGxDb2wpO1xuICBjb25zdCBtYXhDb2wgPSBNYXRoLm1heChzdGFydENlbGxDb2wsIGVuZENlbGxDb2wpO1xuXG4gIGNvbnN0IHJvd3MgPSBzdGFydENlbGwuY2xvc2VzdCgndGFibGUnKT8ucXVlcnlTZWxlY3RvckFsbCgndHInKTtcbiAgcm93cz8uZm9yRWFjaCgocm93RWwsIHJvd0luZGV4KSA9PiB7XG4gICAgaWYgKHJvd0luZGV4IDwgbWluUm93IHx8IHJvd0luZGV4ID4gbWF4Um93KSByZXR1cm47XG5cbiAgICBjb25zdCBjZWxscyA9IHJvd0VsLnF1ZXJ5U2VsZWN0b3JBbGwoJ3RkLCB0aCcpO1xuICAgIGNlbGxzLmZvckVhY2goKGNlbGxFbCwgY29sSW5kZXgpID0+IHtcbiAgICAgIGlmIChjb2xJbmRleCA8IG1pbkNvbCB8fCBjb2xJbmRleCA+IG1heENvbCkgcmV0dXJuO1xuICAgICAgaWYgKHJvd0luZGV4ID09PSBtaW5Sb3cgJiYgY29sSW5kZXggPT09IG1pbkNvbCkge1xuICAgICAgICBjZWxsRWwuc2V0QXR0cmlidXRlKCdjb2xzcGFuJywgU3RyaW5nKG1heENvbCAtIG1pbkNvbCArIDEpKTtcbiAgICAgICAgY2VsbEVsLnNldEF0dHJpYnV0ZSgncm93c3BhbicsIFN0cmluZyhtYXhSb3cgLSBtaW5Sb3cgKyAxKSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNlbGxFbC5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKTtcbiAgICB9KTtcbiAgfSk7XG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTcGxpdCBjZWxsc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuZXhwb3J0IGZ1bmN0aW9uIHNwbGl0Q2VsbHMoY2VsbFNwbGl0OiBIVE1MRWxlbWVudCkge1xuICBjb25zdCBpbmRleCA9IGNlbGxTcGxpdC5nZXRBdHRyaWJ1dGUoJ2luZGV4Jyk7XG4gIGxldCBjb2xTcGFuID0gcGFyc2VJbnQoY2VsbFNwbGl0LmdldEF0dHJpYnV0ZSgnY29sc3BhbicpIHx8ICcxJywgMTApO1xuICBsZXQgcm93U3BhbiA9IHBhcnNlSW50KGNlbGxTcGxpdC5nZXRBdHRyaWJ1dGUoJ3Jvd3NwYW4nKSB8fCAnMScsIDEwKTtcbiAgY29uc3QgdG90YWxDZWxsU3BsaXQgPSByb3dTcGFuICogY29sU3BhbjtcbiAgbGV0IGNvdW50Q2VsbFNwbGl0ID0gMDtcbiAgY29uc3Qgcm93U3RhcnQgPSBwYXJzZUludChpbmRleD8uc3BsaXQoJy0nKVswXSB8fCAnMCcsIDEwKTtcbiAgY29uc3QgY29sU3RhcnQgPSBwYXJzZUludChpbmRleD8uc3BsaXQoJy0nKVsxXSB8fCAnMCcsIDEwKTtcbiAgY29uc3QgY29sSW5jcmVtZW50ID0gbmV3IFNldDxudW1iZXI+KCk7XG4gIGNvbnN0IHJvd0luY3JlbWVudCA9IG5ldyBTZXQ8bnVtYmVyPigpO1xuXG4gIGNvbnN0IHJvd3MgPSBjZWxsU3BsaXQuY2xvc2VzdCgndGFibGUnKT8ucXVlcnlTZWxlY3RvckFsbCgndHInKTtcbiAgcm93cz8uZm9yRWFjaCgocm93RWwsIHJvd0luZGV4KSA9PiB7XG4gICAgaWYgKHJvd0luZGV4IDwgcm93U3RhcnQpIHJldHVybjtcblxuICAgIGNvbnN0IGNlbGxzID0gcm93RWwucXVlcnlTZWxlY3RvckFsbCgndGQsIHRoJyk7XG4gICAgY2VsbHMuZm9yRWFjaCgoY2VsbEVsLCBjb2xJbmRleCkgPT4ge1xuICAgICAgaWYgKHJvd0luZGV4IDwgcm93U3RhcnQgfHwgY29sSW5kZXggPCBjb2xTdGFydCB8fCByb3dTdGFydCArIHJvd1NwYW4gPCByb3dJbmRleCB8fCBjb2xTdGFydCArIGNvbFNwYW4gPCBjb2xJbmRleCB8fCBjb3VudENlbGxTcGxpdCA+PSB0b3RhbENlbGxTcGxpdCkgcmV0dXJuO1xuICAgICAgaWYgKHJvd0luZGV4ID09PSByb3dTdGFydCAmJiBjb2xJbmRleCA9PT0gY29sU3RhcnQpIHtcbiAgICAgICAgY291bnRDZWxsU3BsaXQrKztcbiAgICAgICAgY2VsbEVsLnNldEF0dHJpYnV0ZSgnY29sc3BhbicsICcxJyk7XG4gICAgICAgIGNlbGxFbC5zZXRBdHRyaWJ1dGUoJ3Jvd3NwYW4nLCAnMScpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoIWNlbGxFbC5jbGFzc0xpc3QuY29udGFpbnMoJ2hpZGRlbicpKSB7XG4gICAgICAgIGlmICghcm93SW5jcmVtZW50Lmhhcyhyb3dJbmRleCkpIHtcbiAgICAgICAgICByb3dTcGFuKys7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFjb2xJbmNyZW1lbnQuaGFzKGNvbEluZGV4KSkge1xuICAgICAgICAgIGNvbFNwYW4rKztcbiAgICAgICAgfVxuICAgICAgICByb3dJbmNyZW1lbnQuYWRkKHJvd0luZGV4KTtcbiAgICAgICAgY29sSW5jcmVtZW50LmFkZChjb2xJbmRleCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNlbGxFbC5jbGFzc0xpc3QucmVtb3ZlKCdoaWRkZW4nKTtcbiAgICAgIGNvdW50Q2VsbFNwbGl0Kys7XG4gICAgfSk7XG4gIH0pO1xufVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmxldCByZWdpc3RlciA9IGZhbHNlO1xuZXhwb3J0IGNvbnN0IHJlZ2lzdGVyUXVpbGwyeCA9ICgpID0+IHtcbiAgaWYgKHJlZ2lzdGVyKSByZXR1cm47XG4gIHJlZ2lzdGVyID0gdHJ1ZTtcblxuICBjb25zdCBRdWlsbCA9IFF1aWxsMnggYXMgYW55O1xuXG4gIGNvbnN0IHNpemUgPSBRdWlsbC5pbXBvcnQoJ2F0dHJpYnV0b3JzL3N0eWxlL3NpemUnKTtcbiAgY29uc3QgYWxpZ25TdHlsZSA9IFF1aWxsLmltcG9ydCgnYXR0cmlidXRvcnMvc3R5bGUvYWxpZ24nKTtcbiAgY29uc3QgaXRhbGljID0gUXVpbGwuaW1wb3J0KCdmb3JtYXRzL2l0YWxpYycpO1xuICBjb25zdCBib2xkID0gUXVpbGwuaW1wb3J0KCdmb3JtYXRzL2JvbGQnKTtcbiAgY29uc3QgaWNvbnMgPSBRdWlsbC5pbXBvcnQoJ3VpL2ljb25zJyk7XG4gIHNpemUud2hpdGVsaXN0ID0gZm9udFNpemVXaGl0ZUxpc3QoKTtcblxuICBpdGFsaWMudGFnTmFtZSA9ICdpJztcbiAgYm9sZC50YWdOYW1lID0gJ2InO1xuXG4gIFF1aWxsLnJlZ2lzdGVyKGJvbGQsIHRydWUpO1xuICBRdWlsbC5yZWdpc3RlcihpdGFsaWMsIHRydWUpO1xuICBRdWlsbC5yZWdpc3RlcihzaXplLCB0cnVlKTtcbiAgUXVpbGwucmVnaXN0ZXIoYWxpZ25TdHlsZSwgdHJ1ZSk7XG4gIFF1aWxsLnJlZ2lzdGVyKFF1aWxsTWVudGlvbjJ4QmxvdCwgdHJ1ZSk7XG4gIFF1aWxsLnJlZ2lzdGVyKCdtb2R1bGVzL3Jlc2l6ZScsIFJlc2l6ZU1vZHVsZSk7XG4gIFsuLi5pY29uTGlzdCgpXS5mb3JFYWNoKChlbGVtZW50KSA9PiBzZXQoaWNvbnMsIGVsZW1lbnQua2V5LCBgPHNwYW4gY2xhc3M9XCIke2VsZW1lbnQuaWNvbn0gJHtlbGVtZW50LmtleSA9PT0gJ3VuTGluaycgPyAnaG92ZXI6dGV4dC1bI2VlMmQ0MV0gJyA6ICdob3Zlcjp0ZXh0LVt2YXIoLS1saWJzLXVpLWNvbG9yLWxpZ2h0LTEpXSd9IHRleHQtWzE2cHhdIHRleHQtWyM2YTczODNdXCI+PC9zcGFuPmApKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBbGxUYWJsZXNXaXRoU3BhbiA9IChxdWlsbDogYW55KSA9PiB7XG4gIGNvbnN0IHJvb3QgPSBxdWlsbC5yb290O1xuXG4gIC8vIFTDrG0gdOG6pXQgY+G6oyB0YWJsZSB0cm9uZyBxdWlsbFxuICBjb25zdCB0YWJsZUVscyA9IHJvb3QucXVlcnlTZWxlY3RvckFsbCgndGFibGUnKTtcblxuICB0YWJsZUVscy5mb3JFYWNoKCh0YWJsZUVsOiBIVE1MRWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IHJvd3MgPSB0YWJsZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoJ3RyJyk7XG4gICAgcm93cy5mb3JFYWNoKChyb3dFbCwgckluZGV4KSA9PiB7XG4gICAgICByb3dFbC5zZXRBdHRyaWJ1dGUoJ2luZGV4JywgYCR7ckluZGV4fWApO1xuICAgICAgY29uc3QgY2VsbHMgPSByb3dFbC5xdWVyeVNlbGVjdG9yQWxsKCd0ZCwgdGgnKTtcbiAgICAgIGNlbGxzLmZvckVhY2goKGNlbGxFbCwgY0luZGV4KSA9PiB7XG4gICAgICAgIGNlbGxFbC5zZXRBdHRyaWJ1dGUoJ2luZGV4JywgYCR7ckluZGV4fS0ke2NJbmRleH1gKTtcbiAgICAgICAgY29uc3Qgcm93c3BhbiA9IHBhcnNlSW50KGNlbGxFbC5nZXRBdHRyaWJ1dGUoJ3Jvd3NwYW4nKSB8fCAnMScsIDEwKTtcbiAgICAgICAgY29uc3QgY29sc3BhbiA9IHBhcnNlSW50KGNlbGxFbC5nZXRBdHRyaWJ1dGUoJ2NvbHNwYW4nKSB8fCAnMScsIDEwKTtcblxuICAgICAgICBjZWxsRWwuc2V0QXR0cmlidXRlKCdyb3dzcGFuJywgU3RyaW5nKHJvd3NwYW4pKTtcbiAgICAgICAgY2VsbEVsLnNldEF0dHJpYnV0ZSgnY29sc3BhbicsIFN0cmluZyhjb2xzcGFuKSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59O1xuIl19
|
|
444
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVpbGwyeC5kZWZpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvaW5wdXRzL3F1aWxsL3NyYy91dGlscy9xdWlsbDJ4LmRlZmluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsNkRBQTZEO0FBQzdELE9BQU8sRUFBRSxHQUFHLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2RCxPQUFPLFlBQVksTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLE9BQU8sTUFBTSxTQUFTLENBQUM7QUFDOUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0QsSUFBSSxTQUFTLEdBQXVCLElBQUksQ0FBQztBQUN6QyxJQUFJLE9BQU8sR0FBdUIsSUFBSSxDQUFDO0FBQ3ZDLElBQUksV0FBVyxHQUFHLEtBQUssQ0FBQztBQUV4Qix1QkFBdUI7QUFDdkIsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxLQUFjLEVBQUUsUUFBNEIsRUFBRSxTQUEyQixFQUFFLEVBQUU7SUFDL0csZ0NBQWdDO0lBQ2hDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUV0RyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVDLEtBQUssQ0FBQyxTQUFTLEdBQUcsc0JBQXNCLENBQUM7SUFDekMsMkVBQTJFO0lBQzNFLEtB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QVUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNqQyxLQUFLLENBQUMsUUFBUSxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3pDLEtBQUssQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDL0MsQ0FBQyxHQUFHLFFBQVEsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxHQUFHLEVBQUUsZ0JBQWdCLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLEdBQUcsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQywyQ0FBMkMsc0NBQXNDLENBQUMsQ0FBQyxDQUFDO0FBQ3hPLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLEtBQWUsRUFBRSxFQUFFO0lBQzlDLE1BQU0sV0FBVyxHQUFHLEtBQUssRUFBRSxJQUFJLENBQUM7SUFDaEMsSUFBSSxDQUFDLFdBQVc7UUFBRSxPQUFPLElBQUksQ0FBQztJQUM5QixNQUFNLElBQUksR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzFDLE9BQU8sSUFBSSxLQUFLLGFBQWEsSUFBSSxJQUFJLEtBQUssU0FBUyxJQUFJLElBQUksS0FBSyxFQUFFLElBQUksSUFBSSxLQUFLLDRDQUE0QyxJQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQzVLLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb24gKi9cbmltcG9ydCB7IHNldCwgc2V0U3R5bGVzRWxlbWVudCB9IGZyb20gJ0BsaWJzLXVpL3V0aWxzJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCBSZXNpemVNb2R1bGUgZnJvbSAnQHNzdW1vL3F1aWxsLXJlc2l6ZS1tb2R1bGUnO1xuaW1wb3J0IFF1aWxsMnggZnJvbSAncXVpbGwyeCc7XG5pbXBvcnQgeyBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFF1aWxsTWVudGlvbjJ4QmxvdCB9IGZyb20gJy4uL2Jsb3RzLWN1c3RvbSc7XG5pbXBvcnQgeyBmb250U2l6ZVdoaXRlTGlzdCwgaWNvbkxpc3QgfSBmcm9tICcuL3F1aWxsLmRlZmluZSc7XG5sZXQgc3RhcnRDZWxsOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xubGV0IGVuZENlbGw6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5sZXQgaXNTZWxlY3RpbmcgPSBmYWxzZTtcblxuLy9yZWdpb24gRnVuY3Rpb24gVGFibGVcbmV4cG9ydCBjb25zdCBjcmVhdGVUYWJsZVNlbGVjdG9yID0gKHF1aWxsOiBRdWlsbDJ4LCBhbmNob3JFbDogSFRNTEVsZW1lbnQgfCBudWxsLCB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpID0+IHtcbiAgLy8gxJDDs25nIHBvcHVwIGPFqSBu4bq/dSBjw7JuIHThu5NuIHThuqFpXG4gIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5tYW51YWwtdGFibGUtY3JlYXRvcicpLmZvckVhY2goKGVsKSA9PiBlbC5wYXJlbnRFbGVtZW50Py5yZW1vdmVDaGlsZChlbCkpO1xuXG4gIGNvbnN0IHBvcHVwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIHBvcHVwLmNsYXNzTmFtZSA9ICdtYW51YWwtdGFibGUtY3JlYXRvcic7XG4gIC8vIElubGluZSBzdHlsZSDEkeG7gyDEkeG6o20gYuG6o28gaGnhu4NuIHRo4buLIG5nYXkgY+G6oyBraGkgQ1NTIGNvbXBvbmVudCBraMO0bmcgw6FwIGThu6VuZ1xuICBwb3B1cC5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gIHBvcHVwLnN0eWxlLmJhY2tncm91bmQgPSAnI2ZmZic7XG4gIHBvcHVwLnN0eWxlLmJvcmRlciA9ICcxcHggc29saWQgI2RkZCc7XG4gIHBvcHVwLnN0eWxlLmJvcmRlclJhZGl1cyA9ICc2cHgnO1xuICBwb3B1cC5zdHlsZS5ib3hTaGFkb3cgPSAnMCA2cHggMTZweCByZ2JhKDAsMCwwLDAuMTIpJztcbiAgcG9wdXAuc3R5bGUucGFkZGluZyA9ICcxMnB4JztcbiAgcG9wdXAuc3R5bGUuekluZGV4ID0gJzEwMDAwJztcbiAgcG9wdXAuc3R5bGUubWluV2lkdGggPSAnMjAwcHgnO1xuICBzZXRTdHlsZXNFbGVtZW50KHBvcHVwLCB7XG4gICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgYmFja2dyb3VuZDogJyNmZmYnLFxuICAgIGJvcmRlcjogJzFweCBzb2xpZCAjZGRkJyxcbiAgICBib3JkZXJSYWRpdXM6ICc2cHgnLFxuICAgIGJveFNoYWRvdzogJzAgNnB4IDE2cHggcmdiYSgwLDAsMCwwLjEyKScsXG4gICAgcGFkZGluZzogJzEycHgnLFxuICAgIHpJbmRleDogJzEwMDAwJyxcbiAgICBtaW5XaWR0aDogJzIwMHB4JyxcbiAgfSk7XG5cbiAgY29uc3QgaW5mbyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICBpbmZvLnRleHRDb250ZW50ID0gdHJhbnNsYXRlLmluc3RhbnQoJ2kxOG5fc2VsZWN0X2NlbGwnKTtcbiAgc2V0U3R5bGVzRWxlbWVudChpbmZvLCB7XG4gICAgZm9udFNpemU6ICcxMnB4JyxcbiAgICBjb2xvcjogJyMzMzMnLFxuICAgIG1hcmdpbkJvdHRvbTogJzEwcHgnLFxuICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgZm9udFdlaWdodDogJzYwMCcsXG4gIH0pO1xuICBwb3B1cC5hcHBlbmRDaGlsZChpbmZvKTtcblxuICBjb25zdCBncmlkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIHNldFN0eWxlc0VsZW1lbnQoZ3JpZCwge1xuICAgIGRpc3BsYXk6ICdncmlkJyxcbiAgICBncmlkVGVtcGxhdGVDb2x1bW5zOiAncmVwZWF0KDgsIDE4cHgpJyxcbiAgICBnYXA6ICc0cHgnLFxuICB9KTtcblxuICBjb25zdCBtYXggPSA4O1xuICBmb3IgKGxldCByb3cgPSAxOyByb3cgPD0gbWF4OyByb3crKykge1xuICAgIGZvciAobGV0IGNvbCA9IDE7IGNvbCA8PSBtYXg7IGNvbCsrKSB7XG4gICAgICBjb25zdCBjZWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICBjZWxsLnN0eWxlLndpZHRoID0gJzE4cHgnO1xuICAgICAgY2VsbC5zdHlsZS5oZWlnaHQgPSAnMThweCc7XG4gICAgICBjZWxsLnN0eWxlLmJvcmRlciA9ICcxcHggc29saWQgI2U1ZTdlYic7XG4gICAgICBjZWxsLnN0eWxlLmJhY2tncm91bmQgPSAnI2ZmZic7XG4gICAgICBjZWxsLnN0eWxlLmN1cnNvciA9ICdwb2ludGVyJztcblxuICAgICAgY2VsbC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWVudGVyJywgKCkgPT4ge1xuICAgICAgICBpbmZvLnRleHRDb250ZW50ID0gYCR7cm93fSDDlyAke2NvbH1gO1xuICAgICAgICBBcnJheS5mcm9tKGdyaWQuY2hpbGRyZW4pLmZvckVhY2goKGVsLCBpZHgpID0+IHtcbiAgICAgICAgICBjb25zdCByciA9IE1hdGguZmxvb3IoaWR4IC8gbWF4KSArIDE7XG4gICAgICAgICAgY29uc3QgY2MgPSAoaWR4ICUgbWF4KSArIDE7XG4gICAgICAgICAgKGVsIGFzIEhUTUxFbGVtZW50KS5zdHlsZS5iYWNrZ3JvdW5kID0gcnIgPD0gcm93ICYmIGNjIDw9IGNvbCA/ICcjZGJlYWZlJyA6ICcjZmZmJztcbiAgICAgICAgICAoZWwgYXMgSFRNTEVsZW1lbnQpLnN0eWxlLmJvcmRlckNvbG9yID0gcnIgPD0gcm93ICYmIGNjIDw9IGNvbCA/ICcjOTNjNWZkJyA6ICcjZTVlN2ViJztcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgY2VsbC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBxdWlsbC5mb2N1cygpO1xuICAgICAgICAgIGNvbnN0IHRhYmxlTW9kdWxlID0gcXVpbGwuZ2V0TW9kdWxlKCd0YWJsZScpIGFzIGFueTtcbiAgICAgICAgICBpZiAodGFibGVNb2R1bGUgJiYgdHlwZW9mIHRhYmxlTW9kdWxlLmluc2VydFRhYmxlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB0YWJsZU1vZHVsZS5pbnNlcnRUYWJsZShyb3csIGNvbCk7XG4gICAgICAgICAgICBnZXRBbGxUYWJsZXNXaXRoU3BhbihxdWlsbCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIGlmIChkb2N1bWVudC5ib2R5LmNvbnRhaW5zKHBvcHVwKSkge1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChwb3B1cCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgb25PdXRzaWRlQ2xpY2ssIHRydWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgZ3JpZC5hcHBlbmRDaGlsZChjZWxsKTtcbiAgICB9XG4gIH1cbiAgcG9wdXAuYXBwZW5kQ2hpbGQoZ3JpZCk7XG5cbiAgY29uc3QgcGxhY2VQb3B1cCA9ICgpID0+IHtcbiAgICBjb25zdCByZWN0ID0gYW5jaG9yRWw/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IHRvcCA9IHJlY3QgPyByZWN0LmJvdHRvbSArIHdpbmRvdy5zY3JvbGxZICsgNiA6IDEwMDtcbiAgICBjb25zdCBsZWZ0ID0gcmVjdCA/IHJlY3QubGVmdCArIHdpbmRvdy5zY3JvbGxYIDogMTAwO1xuICAgIHBvcHVwLnN0eWxlLnRvcCA9IGAke3RvcH1weGA7XG4gICAgcG9wdXAuc3R5bGUubGVmdCA9IGAke2xlZnR9cHhgO1xuICB9O1xuXG4gIGNvbnN0IG9uT3V0c2lkZUNsaWNrID0gKGV2OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgaWYgKCFwb3B1cC5jb250YWlucyhldi50YXJnZXQgYXMgTm9kZSkpIHtcbiAgICAgIGlmIChkb2N1bWVudC5ib2R5LmNvbnRhaW5zKHBvcHVwKSkge1xuICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHBvcHVwKTtcbiAgICAgIH1cbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgb25PdXRzaWRlQ2xpY2ssIHRydWUpO1xuICAgIH1cbiAgfTtcblxuICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHBvcHVwKTtcbiAgcGxhY2VQb3B1cCgpO1xuICBzZXRUaW1lb3V0KCgpID0+IGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgb25PdXRzaWRlQ2xpY2ssIHRydWUpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVDb250ZXh0TWVudU9wdGlvblRhYmxlID0gKHF1aWxsOiBRdWlsbDJ4LCB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpID0+IHtcbiAgbGV0IGxhc3RDb250ZXh0SW5kZXg6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0IGNsb3NlQW55TWVudSA9ICgpID0+IHtcbiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcubWFudWFsLXRhYmxlLW1lbnUnKS5mb3JFYWNoKChlbCkgPT4gZWwucGFyZW50RWxlbWVudD8ucmVtb3ZlQ2hpbGQoZWwpKTtcbiAgfTtcblxuICBjb25zdCBydW5XaXRoU2VsZWN0aW9uID0gKGZuOiAoKSA9PiB2b2lkKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIHF1aWxsLmZvY3VzKCk7XG4gICAgICBpZiAodHlwZW9mIGxhc3RDb250ZXh0SW5kZXggPT09ICdudW1iZXInKSB7XG4gICAgICAgIHF1aWxsLnNldFNlbGVjdGlvbihsYXN0Q29udGV4dEluZGV4LCAwLCAnc2lsZW50Jyk7XG4gICAgICB9XG4gICAgfSBjYXRjaCB7XG4gICAgICAvKiBuby1vcDogZ2nhu68gecOqbiBu4bq/dSBraMO0bmcgdGjhu4Mgc2V0IHNlbGVjdGlvbiAqL1xuICAgIH1cbiAgICBmbigpO1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZU1lbnVJdGVtID0gKGxhYmVsOiBzdHJpbmcsIG9uQ2xpY2s6ICgpID0+IHZvaWQpID0+IHtcbiAgICBjb25zdCBpdGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgaXRlbS50ZXh0Q29udGVudCA9IGxhYmVsO1xuICAgIGl0ZW0uc3R5bGUucGFkZGluZyA9ICc2cHggMTJweCc7XG4gICAgaXRlbS5zdHlsZS5jdXJzb3IgPSAncG9pbnRlcic7XG4gICAgaXRlbS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAgICAgIHJ1bldpdGhTZWxlY3Rpb24ob25DbGljayk7XG4gICAgICBjbG9zZUFueU1lbnUoKTtcbiAgICB9KTtcbiAgICBpdGVtLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZW50ZXInLCAoKSA9PiB7XG4gICAgICBpdGVtLnN0eWxlLmJhY2tncm91bmQgPSAnI2Y1ZjVmNSc7XG4gICAgfSk7XG4gICAgaXRlbS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgKCkgPT4ge1xuICAgICAgaXRlbS5zdHlsZS5iYWNrZ3JvdW5kID0gJ3RyYW5zcGFyZW50JztcbiAgICB9KTtcbiAgICByZXR1cm4gaXRlbTtcbiAgfTtcblxuICBjb25zdCBvcGVuQ29udGV4dE1lbnUgPSAocGFnZVg6IG51bWJlciwgcGFnZVk6IG51bWJlcikgPT4ge1xuICAgIGNsb3NlQW55TWVudSgpO1xuXG4gICAgY29uc3QgbWVudSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIG1lbnUuY2xhc3NOYW1lID0gJ21hbnVhbC10YWJsZS1tZW51JztcbiAgICBtZW51LnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICBtZW51LnN0eWxlLnRvcCA9IGAke3BhZ2VZfXB4YDtcbiAgICBtZW51LnN0eWxlLmxlZnQgPSBgJHtwYWdlWH1weGA7XG4gICAgbWVudS5zdHlsZS5iYWNrZ3JvdW5kID0gJyNmZmYnO1xuICAgIG1lbnUuc3R5bGUuYm9yZGVyID0gJzFweCBzb2xpZCAjY2NjJztcbiAgICBtZW51LnN0eWxlLmJvcmRlclJhZGl1cyA9ICc0cHgnO1xuICAgIG1lbnUuc3R5bGUuYm94U2hhZG93ID0gJzAgNHB4IDEycHggcmdiYSgwLDAsMCwwLjIpJztcbiAgICBtZW51LnN0eWxlLnpJbmRleCA9ICcxMDAwMSc7XG4gICAgbWVudS5zdHlsZS5wYWRkaW5nID0gJzRweCc7XG4gICAgbWVudS5zdHlsZS5taW5XaWR0aCA9ICcxODBweCc7XG5cbiAgICBjb25zdCB0YWJsZU1vZHVsZSA9IHF1aWxsLmdldE1vZHVsZSgndGFibGUnKSBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgbnVsbDtcbiAgICBjb25zdCBzYWZlQ2FsbCA9IChtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pID0+IHtcbiAgICAgIGlmIChtZXRob2QgPT09ICdtZXJnZUNlbGxzJykge1xuICAgICAgICBjb25zdCBbc3RhcnRDZWxsLCBlbmRDZWxsXSA9IGFyZ3M7XG4gICAgICAgIG1lcmdlQ2VsbHMoc3RhcnRDZWxsLCBlbmRDZWxsKTtcbiAgICAgICAgY2xvc2VBbnlNZW51KCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChtZXRob2QgPT09ICdzcGxpdENlbGxzJykge1xuICAgICAgICBjb25zdCBbc3RhcnRDZWxsXSA9IGFyZ3M7XG4gICAgICAgIHNwbGl0Q2VsbHMoc3RhcnRDZWxsKTtcbiAgICAgICAgY2xvc2VBbnlNZW51KCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0YWJsZU1vZHVsZSAmJiB0eXBlb2YgdGFibGVNb2R1bGVbbWV0aG9kXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0YWJsZU1vZHVsZVttZXRob2RdKC4uLmFyZ3MpO1xuICAgICAgICBnZXRBbGxUYWJsZXNXaXRoU3BhbihxdWlsbCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIG1lbnUuYXBwZW5kQ2hpbGQoY3JlYXRlTWVudUl0ZW0odHJhbnNsYXRlLmluc3RhbnQoJ2kxOG5fYWRkX25ld19yb3dfYWJvdmUnKSwgKCkgPT4gc2FmZUNhbGwoJ2luc2VydFJvd0Fib3ZlJykpKTtcbiAgICBtZW51LmFwcGVuZENoaWxkKGNyZWF0ZU1lbnVJdGVtKHRyYW5zbGF0ZS5pbnN0YW50KCdpMThuX2FkZF9uZXdfcm93X2JlbG93JyksICgpID0+IHNhZmVDYWxsKCdpbnNlcnRSb3dCZWxvdycpKSk7XG4gICAgbWVudS5hcHBlbmRDaGlsZChjcmVhdGVNZW51SXRlbSh0cmFuc2xhdGUuaW5zdGFudCgnaTE4bl9hZGRfbmV3X2NvbHVtbl9sZWZ0JyksICgpID0+IHNhZmVDYWxsKCdpbnNlcnRDb2x1bW5MZWZ0JykpKTtcbiAgICBtZW51LmFwcGVuZENoaWxkKGNyZWF0ZU1lbnVJdGVtKHRyYW5zbGF0ZS5pbnN0YW50KCdpMThuX2FkZF9uZXdfY29sdW1uX3JpZ2h0JyksICgpID0+IHNhZmVDYWxsKCdpbnNlcnRDb2x1bW5SaWdodCcpKSk7XG4gICAgY29uc3QgZGl2aWRlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIGRpdmlkZXIuc3R5bGUuaGVpZ2h0ID0gJzFweCc7XG4gICAgZGl2aWRlci5zdHlsZS5iYWNrZ3JvdW5kID0gJyNlZWUnO1xuICAgIGRpdmlkZXIuc3R5bGUubWFyZ2luID0gJzRweCAwJztcbiAgICBtZW51LmFwcGVuZENoaWxkKGRpdmlkZXIpO1xuICAgIGlmIChzdGFydENlbGwgJiYgZW5kQ2VsbCkge1xuICAgICAgY29uc3Qgc3RhcnRDZWxsU3RvcmUgPSBzdGFydENlbGw7XG4gICAgICBjb25zdCBlbmRDZWxsU3RvcmUgPSBlbmRDZWxsO1xuICAgICAgY29uc3QgY29sc3BhbiA9IHBhcnNlSW50KHN0YXJ0Q2VsbFN0b3JlLmdldEF0dHJpYnV0ZSgnY29sc3BhbicpIHx8ICcxJywgMTApO1xuICAgICAgY29uc3Qgcm93c3BhbiA9IHBhcnNlSW50KHN0YXJ0Q2VsbFN0b3JlLmdldEF0dHJpYnV0ZSgncm93c3BhbicpIHx8ICcxJywgMTApO1xuICAgICAgbGV0IHRvdGFsTWVudSA9IDA7XG4gICAgICBpZiAoc3RhcnRDZWxsICE9PSBlbmRDZWxsKSB7XG4gICAgICAgIG1lbnUuYXBwZW5kQ2hpbGQoY3JlYXRlTWVudUl0ZW0odHJhbnNsYXRlLmluc3RhbnQoJ2kxOG5fbWVyZ2VfY2VsbHMnKSwgKCkgPT4gc2FmZUNhbGwoJ21lcmdlQ2VsbHMnLCBzdGFydENlbGxTdG9yZSwgZW5kQ2VsbFN0b3JlKSkpO1xuICAgICAgICB0b3RhbE1lbnUrKztcbiAgICAgIH1cbiAgICAgIGlmIChzdGFydENlbGwgPT09IGVuZENlbGwgJiYgKGNvbHNwYW4gPiAxIHx8IHJvd3NwYW4gPiAxKSkge1xuICAgICAgICBtZW51LmFwcGVuZENoaWxkKGNyZWF0ZU1lbnVJdGVtKHRyYW5zbGF0ZS5pbnN0YW50KCdpMThuX3NwbGl0X2NlbGxzJyksICgpID0+IHNhZmVDYWxsKCdzcGxpdENlbGxzJywgc3RhcnRDZWxsU3RvcmUpKSk7XG4gICAgICAgIHRvdGFsTWVudSsrO1xuICAgICAgfVxuXG4gICAgICBpZiAodG90YWxNZW51ID4gMCkge1xuICAgICAgICBjb25zdCBkaXZpZGVyMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICBkaXZpZGVyMi5zdHlsZS5oZWlnaHQgPSAnMXB4JztcbiAgICAgICAgZGl2aWRlcjIuc3R5bGUuYmFja2dyb3VuZCA9ICcjZWVlJztcbiAgICAgICAgZGl2aWRlcjIuc3R5bGUubWFyZ2luID0gJzRweCAwJztcbiAgICAgICAgbWVudS5hcHBlbmRDaGlsZChkaXZpZGVyMik7XG4gICAgICB9XG4gICAgfVxuICAgIG1lbnUuYXBwZW5kQ2hpbGQoY3JlYXRlTWVudUl0ZW0odHJhbnNsYXRlLmluc3RhbnQoJ2kxOG5fZGVsZXRlX3JvdycpLCAoKSA9PiBzYWZlQ2FsbCgnZGVsZXRlUm93JykpKTtcbiAgICBtZW51LmFwcGVuZENoaWxkKGNyZWF0ZU1lbnVJdGVtKHRyYW5zbGF0ZS5pbnN0YW50KCdpMThuX2RlbGV0ZV9jb2x1bW4nKSwgKCkgPT4gc2FmZUNhbGwoJ2RlbGV0ZUNvbHVtbicpKSk7XG4gICAgbWVudS5hcHBlbmRDaGlsZChjcmVhdGVNZW51SXRlbSh0cmFuc2xhdGUuaW5zdGFudCgnaTE4bl9kZWxldGVfdGFibGUnKSwgKCkgPT4gc2FmZUNhbGwoJ2RlbGV0ZVRhYmxlJykpKTtcblxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobWVudSk7XG5cbiAgICBjb25zdCBvbk91dHNpZGUgPSAoZXY6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGlmICghbWVudS5jb250YWlucyhldi50YXJnZXQgYXMgTm9kZSkgfHwgKGV2LnRhcmdldCBhcyBIVE1MRWxlbWVudCkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3RhYmxlJykubGVuZ3RoIDwgMCkge1xuICAgICAgICBjbG9zZUFueU1lbnUoKTtcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBvbk91dHNpZGUsIHRydWUpO1xuICAgICAgfVxuICAgIH07XG4gICAgc2V0VGltZW91dCgoKSA9PiBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIG9uT3V0c2lkZSwgdHJ1ZSkpO1xuXG4gICAgY29uc3Qgb25TY3JvbGwgPSAoKSA9PiB7XG4gICAgICBjbG9zZUFueU1lbnUoKTtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBvblNjcm9sbCwgdHJ1ZSk7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgb25TY3JvbGwsIHRydWUpO1xuICAgIH07XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIG9uU2Nyb2xsLCB0cnVlKTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgb25TY3JvbGwsIHRydWUpO1xuICB9O1xuXG4gIGZyb21FdmVudDxNb3VzZUV2ZW50PihxdWlsbC5yb290LCAnY29udGV4dG1lbnUnKS5zdWJzY3JpYmUoKGV2OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgY29uc3QgdGFyZ2V0ID0gZXYudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIGNvbnN0IGlzQ2VsbCA9ICEhdGFyZ2V0LmNsb3Nlc3QoJ3RkLHRoLHRhYmxlLC5xbC10YWJsZScpO1xuICAgIGlmICghaXNDZWxsKSByZXR1cm47XG4gICAgZXYucHJldmVudERlZmF1bHQoKTtcbiAgICB0cnkge1xuICAgICAgLy8gxq91IHRpw6puIGzhuqV5IGluZGV4IHThu6sgYmxvdCB0xrDGoW5nIOG7qW5nIG5vZGVcbiAgICAgIGNvbnN0IFF1aWxsQW55ID0gUXVpbGwyeCBhcyBhbnk7XG4gICAgICBjb25zdCBibG90ID0gUXVpbGxBbnk/LmZpbmQ/Lih0YXJnZXQpO1xuICAgICAgaWYgKGJsb3QgJiYgdHlwZW9mIGJsb3Qub2Zmc2V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGxhc3RDb250ZXh0SW5kZXggPSBibG90Lm9mZnNldChxdWlsbC5zY3JvbGwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gRmFsbGJhY2s6IMSR4bq3dCBzZWxlY3Rpb24gaGnhu4duIHThuqFpIG7hur91IGtow7RuZyB4w6FjIMSR4buLbmggxJHGsOG7o2NcbiAgICAgICAgY29uc3Qgc2VsID0gcXVpbGwuZ2V0U2VsZWN0aW9uKHRydWUpO1xuICAgICAgICBsYXN0Q29udGV4dEluZGV4ID0gc2VsID8gc2VsLmluZGV4IDogMDtcbiAgICAgIH1cbiAgICB9IGNhdGNoIHtcbiAgICAgIGNvbnN0IHNlbCA9IHF1aWxsLmdldFNlbGVjdGlvbih0cnVlKTtcbiAgICAgIGxhc3RDb250ZXh0SW5kZXggPSBzZWwgPyBzZWwuaW5kZXggOiAwO1xuICAgIH1cbiAgICBxdWlsbC5mb2N1cygpO1xuICAgIG9wZW5Db250ZXh0TWVudShldi5wYWdlWCwgZXYucGFnZVkpO1xuICB9KTtcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFV0aWxzOiBjbGVhciB2w6Agc2VsZWN0IGNlbGxzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmNvbnN0IGNsZWFyU2VsZWN0aW9uID0gKCkgPT4ge1xuICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuc2VsZWN0ZWQtY2VsbCcpLmZvckVhY2goKGMpID0+IHtcbiAgICBjLmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdGVkLWNlbGwnKTtcbiAgfSk7XG59O1xuXG5jb25zdCBzZWxlY3RSYW5nZUNlbGxzID0gKHN0YXJ0OiBIVE1MRWxlbWVudCwgZW5kOiBIVE1MRWxlbWVudCkgPT4ge1xuICBjbGVhclNlbGVjdGlvbigpO1xuICBjb25zdCB0YWJsZSA9IHN0YXJ0LmNsb3Nlc3QoJ3RhYmxlJyk7XG4gIGlmICghdGFibGUgfHwgdGFibGUgIT09IGVuZC5jbG9zZXN0KCd0YWJsZScpKSByZXR1cm47XG5cbiAgY29uc3Qgcm93cyA9IEFycmF5LmZyb20odGFibGUucXVlcnlTZWxlY3RvckFsbCgndHInKSk7XG4gIGNvbnN0IHN0YXJ0Um93ID0gcm93cy5pbmRleE9mKHN0YXJ0LnBhcmVudEVsZW1lbnQgYXMgSFRNTFRhYmxlUm93RWxlbWVudCk7XG4gIGNvbnN0IGVuZFJvdyA9IHJvd3MuaW5kZXhPZihlbmQucGFyZW50RWxlbWVudCBhcyBIVE1MVGFibGVSb3dFbGVtZW50KTtcblxuICBjb25zdCBtaW5Sb3cgPSBNYXRoLm1pbihzdGFydFJvdywgZW5kUm93KTtcbiAgY29uc3QgbWF4Um93ID0gTWF0aC5tYXgoc3RhcnRSb3csIGVuZFJvdyk7XG5cbiAgY29uc3Qgc3RhcnRDb2wgPSBBcnJheS5mcm9tKHN0YXJ0LnBhcmVudEVsZW1lbnQhLmNoaWxkcmVuKS5pbmRleE9mKHN0YXJ0KTtcbiAgY29uc3QgZW5kQ29sID0gQXJyYXkuZnJvbShlbmQucGFyZW50RWxlbWVudCEuY2hpbGRyZW4pLmluZGV4T2YoZW5kKTtcblxuICBjb25zdCBtaW5Db2wgPSBNYXRoLm1pbihzdGFydENvbCwgZW5kQ29sKTtcbiAgY29uc3QgbWF4Q29sID0gTWF0aC5tYXgoc3RhcnRDb2wsIGVuZENvbCk7XG5cbiAgZm9yIChsZXQgciA9IG1pblJvdzsgciA8PSBtYXhSb3c7IHIrKykge1xuICAgIGNvbnN0IHJvdyA9IHJvd3Nbcl07XG4gICAgY29uc3QgY2VsbHMgPSBBcnJheS5mcm9tKHJvdy5jaGlsZHJlbik7XG4gICAgZm9yIChsZXQgYyA9IG1pbkNvbDsgYyA8PSBtYXhDb2w7IGMrKykge1xuICAgICAgKGNlbGxzW2NdIGFzIEhUTUxFbGVtZW50KS5jbGFzc0xpc3QuYWRkKCdzZWxlY3RlZC1jZWxsJyk7XG4gICAgfVxuICB9XG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBFbmFibGUgc2VsZWN0aW9uIHRyw6puIHRhYmxlXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5leHBvcnQgZnVuY3Rpb24gZW5hYmxlVGFibGVTZWxlY3Rpb24oY29udGFpbmVyOiBIVE1MRWxlbWVudCkge1xuICBjb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgKGUpID0+IHtcbiAgICBjb25zdCB0YXJnZXQgPSBlLnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICBpZiAoKHRhcmdldC50YWdOYW1lID09PSAnVEQnICYmIGUuYnV0dG9uICE9PSAyKSB8fCAoZS5idXR0b24gPT09IDIgJiYgIXRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoJ3NlbGVjdGVkLWNlbGwnKSkpIHtcbiAgICAgIGNsZWFyU2VsZWN0aW9uKCk7XG4gICAgICBpc1NlbGVjdGluZyA9IHRydWU7XG4gICAgICBzdGFydENlbGwgPSB0YXJnZXQ7XG4gICAgICBlbmRDZWxsID0gdGFyZ2V0O1xuICAgICAgc2VsZWN0UmFuZ2VDZWxscyhzdGFydENlbGwsIGVuZENlbGwpO1xuICAgIH1cbiAgfSk7XG5cbiAgY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIChlKSA9PiB7XG4gICAgaWYgKCFpc1NlbGVjdGluZykgcmV0dXJuO1xuICAgIGNvbnN0IHRhcmdldCA9IGUudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIGlmICh0YXJnZXQudGFnTmFtZSA9PT0gJ1REJyAmJiBzdGFydENlbGwpIHtcbiAgICAgIGVuZENlbGwgPSB0YXJnZXQ7XG4gICAgICBzZWxlY3RSYW5nZUNlbGxzKHN0YXJ0Q2VsbCwgZW5kQ2VsbCk7XG4gICAgfVxuICB9KTtcblxuICBjb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsICgpID0+IHtcbiAgICBpc1NlbGVjdGluZyA9IGZhbHNlO1xuICB9KTtcbn1cbmNvbnN0IG9uT3V0c2lkZSA9IChldjogTW91c2VFdmVudCkgPT4ge1xuICBjb25zdCB0YXJnZXQgPSBldi50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gIGlmICh0YXJnZXQudGFnTmFtZSAhPT0gJ1REJyAmJiB0YXJnZXQudGFnTmFtZSAhPT0gJ1RSJyAmJiB0YXJnZXQudGFnTmFtZSAhPT0gJ1RCT0RZJyAmJiB0YXJnZXQudGFnTmFtZSAhPT0gJ1RIRUFEJyAmJiB0YXJnZXQudGFnTmFtZSAhPT0gJ1RBQkxFJykge1xuICAgIGlzU2VsZWN0aW5nID0gZmFsc2U7XG4gICAgc3RhcnRDZWxsID0gbnVsbDtcbiAgICBlbmRDZWxsID0gbnVsbDtcbiAgICBjbGVhclNlbGVjdGlvbigpO1xuICB9XG59O1xuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBvbk91dHNpZGUsIHRydWUpO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNZXJnZSBjZWxsc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuZXhwb3J0IGNvbnN0IG1lcmdlQ2VsbHMgPSAoc3RhcnRDZWxsOiBIVE1MRWxlbWVudCwgZW5kQ2VsbDogSFRNTEVsZW1lbnQpID0+IHtcbiAgY29uc3Qgc3RhcnRDZWxsSW5kZXggPSBzdGFydENlbGwuZ2V0QXR0cmlidXRlKCdpbmRleCcpO1xuICBjb25zdCBlbmRDZWxsSW5kZXggPSBlbmRDZWxsLmdldEF0dHJpYnV0ZSgnaW5kZXgnKTtcbiAgY29uc3Qgc3RhcnRDZWxsUm93ID0gcGFyc2VJbnQoc3RhcnRDZWxsSW5kZXg/LnNwbGl0KCctJylbMF0gfHwgJzAnLCAxMCk7XG4gIGNvbnN0IGVuZENlbGxSb3cgPSBwYXJzZUludChlbmRDZWxsSW5kZXg/LnNwbGl0KCctJylbMF0gfHwgJzAnLCAxMCk7XG4gIGNvbnN0IHN0YXJ0Q2VsbENvbCA9IHBhcnNlSW50KHN0YXJ0Q2VsbEluZGV4Py5zcGxpdCgnLScpWzFdIHx8ICcwJywgMTApO1xuICBjb25zdCBlbmRDZWxsQ29sID0gcGFyc2VJbnQoZW5kQ2VsbEluZGV4Py5zcGxpdCgnLScpWzFdIHx8ICcwJywgMTApO1xuICBjb25zdCBtaW5Sb3cgPSBNYXRoLm1pbihzdGFydENlbGxSb3csIGVuZENlbGxSb3cpO1xuICBjb25zdCBtYXhSb3cgPSBNYXRoLm1heChzdGFydENlbGxSb3csIGVuZENlbGxSb3cpO1xuICBjb25zdCBtaW5Db2wgPSBNYXRoLm1pbihzdGFydENlbGxDb2wsIGVuZENlbGxDb2wpO1xuICBjb25zdCBtYXhDb2wgPSBNYXRoLm1heChzdGFydENlbGxDb2wsIGVuZENlbGxDb2wpO1xuXG4gIGNvbnN0IHJvd3MgPSBzdGFydENlbGwuY2xvc2VzdCgndGFibGUnKT8ucXVlcnlTZWxlY3RvckFsbCgndHInKTtcbiAgcm93cz8uZm9yRWFjaCgocm93RWwsIHJvd0luZGV4KSA9PiB7XG4gICAgaWYgKHJvd0luZGV4IDwgbWluUm93IHx8IHJvd0luZGV4ID4gbWF4Um93KSByZXR1cm47XG5cbiAgICBjb25zdCBjZWxscyA9IHJvd0VsLnF1ZXJ5U2VsZWN0b3JBbGwoJ3RkLCB0aCcpO1xuICAgIGNlbGxzLmZvckVhY2goKGNlbGxFbCwgY29sSW5kZXgpID0+IHtcbiAgICAgIGlmIChjb2xJbmRleCA8IG1pbkNvbCB8fCBjb2xJbmRleCA+IG1heENvbCkgcmV0dXJuO1xuICAgICAgaWYgKHJvd0luZGV4ID09PSBtaW5Sb3cgJiYgY29sSW5kZXggPT09IG1pbkNvbCkge1xuICAgICAgICBjZWxsRWwuc2V0QXR0cmlidXRlKCdjb2xzcGFuJywgU3RyaW5nKG1heENvbCAtIG1pbkNvbCArIDEpKTtcbiAgICAgICAgY2VsbEVsLnNldEF0dHJpYnV0ZSgncm93c3BhbicsIFN0cmluZyhtYXhSb3cgLSBtaW5Sb3cgKyAxKSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNlbGxFbC5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKTtcbiAgICB9KTtcbiAgfSk7XG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTcGxpdCBjZWxsc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuZXhwb3J0IGZ1bmN0aW9uIHNwbGl0Q2VsbHMoY2VsbFNwbGl0OiBIVE1MRWxlbWVudCkge1xuICBjb25zdCBpbmRleCA9IGNlbGxTcGxpdC5nZXRBdHRyaWJ1dGUoJ2luZGV4Jyk7XG4gIGxldCBjb2xTcGFuID0gcGFyc2VJbnQoY2VsbFNwbGl0LmdldEF0dHJpYnV0ZSgnY29sc3BhbicpIHx8ICcxJywgMTApO1xuICBsZXQgcm93U3BhbiA9IHBhcnNlSW50KGNlbGxTcGxpdC5nZXRBdHRyaWJ1dGUoJ3Jvd3NwYW4nKSB8fCAnMScsIDEwKTtcbiAgY29uc3QgdG90YWxDZWxsU3BsaXQgPSByb3dTcGFuICogY29sU3BhbjtcbiAgbGV0IGNvdW50Q2VsbFNwbGl0ID0gMDtcbiAgY29uc3Qgcm93U3RhcnQgPSBwYXJzZUludChpbmRleD8uc3BsaXQoJy0nKVswXSB8fCAnMCcsIDEwKTtcbiAgY29uc3QgY29sU3RhcnQgPSBwYXJzZUludChpbmRleD8uc3BsaXQoJy0nKVsxXSB8fCAnMCcsIDEwKTtcbiAgY29uc3QgY29sSW5jcmVtZW50ID0gbmV3IFNldDxudW1iZXI+KCk7XG4gIGNvbnN0IHJvd0luY3JlbWVudCA9IG5ldyBTZXQ8bnVtYmVyPigpO1xuXG4gIGNvbnN0IHJvd3MgPSBjZWxsU3BsaXQuY2xvc2VzdCgndGFibGUnKT8ucXVlcnlTZWxlY3RvckFsbCgndHInKTtcbiAgcm93cz8uZm9yRWFjaCgocm93RWwsIHJvd0luZGV4KSA9PiB7XG4gICAgaWYgKHJvd0luZGV4IDwgcm93U3RhcnQpIHJldHVybjtcblxuICAgIGNvbnN0IGNlbGxzID0gcm93RWwucXVlcnlTZWxlY3RvckFsbCgndGQsIHRoJyk7XG4gICAgY2VsbHMuZm9yRWFjaCgoY2VsbEVsLCBjb2xJbmRleCkgPT4ge1xuICAgICAgaWYgKHJvd0luZGV4IDwgcm93U3RhcnQgfHwgY29sSW5kZXggPCBjb2xTdGFydCB8fCByb3dTdGFydCArIHJvd1NwYW4gPCByb3dJbmRleCB8fCBjb2xTdGFydCArIGNvbFNwYW4gPCBjb2xJbmRleCB8fCBjb3VudENlbGxTcGxpdCA+PSB0b3RhbENlbGxTcGxpdCkgcmV0dXJuO1xuICAgICAgaWYgKHJvd0luZGV4ID09PSByb3dTdGFydCAmJiBjb2xJbmRleCA9PT0gY29sU3RhcnQpIHtcbiAgICAgICAgY291bnRDZWxsU3BsaXQrKztcbiAgICAgICAgY2VsbEVsLnNldEF0dHJpYnV0ZSgnY29sc3BhbicsICcxJyk7XG4gICAgICAgIGNlbGxFbC5zZXRBdHRyaWJ1dGUoJ3Jvd3NwYW4nLCAnMScpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoIWNlbGxFbC5jbGFzc0xpc3QuY29udGFpbnMoJ2hpZGRlbicpKSB7XG4gICAgICAgIGlmICghcm93SW5jcmVtZW50Lmhhcyhyb3dJbmRleCkpIHtcbiAgICAgICAgICByb3dTcGFuKys7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFjb2xJbmNyZW1lbnQuaGFzKGNvbEluZGV4KSkge1xuICAgICAgICAgIGNvbFNwYW4rKztcbiAgICAgICAgfVxuICAgICAgICByb3dJbmNyZW1lbnQuYWRkKHJvd0luZGV4KTtcbiAgICAgICAgY29sSW5jcmVtZW50LmFkZChjb2xJbmRleCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNlbGxFbC5jbGFzc0xpc3QucmVtb3ZlKCdoaWRkZW4nKTtcbiAgICAgIGNvdW50Q2VsbFNwbGl0Kys7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5leHBvcnQgY29uc3QgZ2V0QWxsVGFibGVzV2l0aFNwYW4gPSAocXVpbGw6IGFueSkgPT4ge1xuICBjb25zdCByb290ID0gcXVpbGwucm9vdDtcblxuICAvLyBUw6xtIHThuqV0IGPhuqMgdGFibGUgdHJvbmcgcXVpbGxcbiAgY29uc3QgdGFibGVFbHMgPSByb290LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RhYmxlJyk7XG5cbiAgdGFibGVFbHMuZm9yRWFjaCgodGFibGVFbDogSFRNTEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCByb3dzID0gdGFibGVFbC5xdWVyeVNlbGVjdG9yQWxsKCd0cicpO1xuICAgIHJvd3MuZm9yRWFjaCgocm93RWwsIHJJbmRleCkgPT4ge1xuICAgICAgcm93RWwuc2V0QXR0cmlidXRlKCdpbmRleCcsIGAke3JJbmRleH1gKTtcbiAgICAgIGNvbnN0IGNlbGxzID0gcm93RWwucXVlcnlTZWxlY3RvckFsbCgndGQsIHRoJyk7XG4gICAgICBjZWxscy5mb3JFYWNoKChjZWxsRWwsIGNJbmRleCkgPT4ge1xuICAgICAgICBjZWxsRWwuc2V0QXR0cmlidXRlKCdpbmRleCcsIGAke3JJbmRleH0tJHtjSW5kZXh9YCk7XG4gICAgICAgIGNvbnN0IHJvd3NwYW4gPSBwYXJzZUludChjZWxsRWwuZ2V0QXR0cmlidXRlKCdyb3dzcGFuJykgfHwgJzEnLCAxMCk7XG4gICAgICAgIGNvbnN0IGNvbHNwYW4gPSBwYXJzZUludChjZWxsRWwuZ2V0QXR0cmlidXRlKCdjb2xzcGFuJykgfHwgJzEnLCAxMCk7XG5cbiAgICAgICAgY2VsbEVsLnNldEF0dHJpYnV0ZSgncm93c3BhbicsIFN0cmluZyhyb3dzcGFuKSk7XG4gICAgICAgIGNlbGxFbC5zZXRBdHRyaWJ1dGUoJ2NvbHNwYW4nLCBTdHJpbmcoY29sc3BhbikpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmxldCByZWdpc3RlciA9IGZhbHNlO1xuZXhwb3J0IGNvbnN0IHJlZ2lzdGVyUXVpbGwyeCA9ICgpID0+IHtcbiAgaWYgKHJlZ2lzdGVyKSByZXR1cm47XG4gIHJlZ2lzdGVyID0gdHJ1ZTtcblxuICBjb25zdCBRdWlsbCA9IFF1aWxsMnggYXMgYW55O1xuXG4gIGNvbnN0IHNpemUgPSBRdWlsbC5pbXBvcnQoJ2F0dHJpYnV0b3JzL3N0eWxlL3NpemUnKTtcbiAgY29uc3QgYWxpZ25TdHlsZSA9IFF1aWxsLmltcG9ydCgnYXR0cmlidXRvcnMvc3R5bGUvYWxpZ24nKTtcbiAgY29uc3QgaXRhbGljID0gUXVpbGwuaW1wb3J0KCdmb3JtYXRzL2l0YWxpYycpO1xuICBjb25zdCBib2xkID0gUXVpbGwuaW1wb3J0KCdmb3JtYXRzL2JvbGQnKTtcbiAgY29uc3QgaWNvbnMgPSBRdWlsbC5pbXBvcnQoJ3VpL2ljb25zJyk7XG4gIHNpemUud2hpdGVsaXN0ID0gZm9udFNpemVXaGl0ZUxpc3QoKTtcblxuICBpdGFsaWMudGFnTmFtZSA9ICdpJztcbiAgYm9sZC50YWdOYW1lID0gJ2InO1xuXG4gIFF1aWxsLnJlZ2lzdGVyKGJvbGQsIHRydWUpO1xuICBRdWlsbC5yZWdpc3RlcihpdGFsaWMsIHRydWUpO1xuICBRdWlsbC5yZWdpc3RlcihzaXplLCB0cnVlKTtcbiAgUXVpbGwucmVnaXN0ZXIoYWxpZ25TdHlsZSwgdHJ1ZSk7XG4gIFF1aWxsLnJlZ2lzdGVyKFF1aWxsTWVudGlvbjJ4QmxvdCwgdHJ1ZSk7XG4gIFF1aWxsLnJlZ2lzdGVyKCdtb2R1bGVzL3Jlc2l6ZScsIFJlc2l6ZU1vZHVsZSk7XG4gIFsuLi5pY29uTGlzdCgpXS5mb3JFYWNoKChlbGVtZW50KSA9PiBzZXQoaWNvbnMsIGVsZW1lbnQua2V5LCBgPHNwYW4gY2xhc3M9XCIke2VsZW1lbnQuaWNvbn0gJHtlbGVtZW50LmtleSA9PT0gJ3VuTGluaycgPyAnaG92ZXI6dGV4dC1bI2VlMmQ0MV0gJyA6ICdob3Zlcjp0ZXh0LVt2YXIoLS1saWJzLXVpLWNvbG9yLWxpZ2h0LTEpXSd9IHRleHQtWzE2cHhdIHRleHQtWyM2YTczODNdXCI+PC9zcGFuPmApKTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0VtcHR5UXVpbGwgPSAocXVpbGw/OiBRdWlsbDJ4KSA9PiB7XG4gIGNvbnN0IHJvb3RFbGVtZW50ID0gcXVpbGw/LnJvb3Q7XG4gIGlmICghcm9vdEVsZW1lbnQpIHJldHVybiB0cnVlO1xuICBjb25zdCBodG1sID0gcm9vdEVsZW1lbnQuaW5uZXJIVE1MLnRyaW0oKTtcbiAgcmV0dXJuIGh0bWwgPT09ICc8cD48YnI+PC9wPicgfHwgaHRtbCA9PT0gJzxwPjwvcD4nIHx8IGh0bWwgPT09ICcnIHx8IGh0bWwgPT09ICc8cD48c3BhbiBjbGFzcz1cInFsLWN1cnNvclwiPjwvc3Bhbj48YnI+PC9wPicgfHwgcm9vdEVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCdxbC1ibGFuaycpO1xufTtcbiJdfQ==
|
|
@@ -18,7 +18,7 @@ import { patternUrl, convertFileToBase64_ObjectUrl, get, set, isNil, xssFilter,
|
|
|
18
18
|
import * as i1 from '@ngx-translate/core';
|
|
19
19
|
import { TranslateService, TranslateModule } from '@ngx-translate/core';
|
|
20
20
|
import Quill from 'quill';
|
|
21
|
-
import { Subject, lastValueFrom, timer, fromEvent, takeUntil } from 'rxjs';
|
|
21
|
+
import { Subject, lastValueFrom, timer, fromEvent, takeUntil, merge } from 'rxjs';
|
|
22
22
|
import { LibsUiComponentsModalComponent } from '@libs-ui/components-modal';
|
|
23
23
|
import { returnListObject } from '@libs-ui/services-http-request';
|
|
24
24
|
import Quill2x, { Delta } from 'quill2x';
|
|
@@ -65,7 +65,7 @@ class LibsUiComponentsInputsQuillLinkComponent {
|
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
67
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsInputsQuillLinkComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
68
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: LibsUiComponentsInputsQuillLinkComponent, isStandalone: true, selector: "libs_ui-components-inputs-quill-link", inputs: { zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, link: { classPropertyName: "link", publicName: "link", isSignal: true, isRequired: false, transformFunction: null }, ignoreCommunicateMicroEvent: { classPropertyName: "ignoreCommunicateMicroEvent", publicName: "ignoreCommunicateMicroEvent", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { outClose: "outClose", outSaveLink: "outSaveLink" }, ngImport: i0, template: "<libs_ui-components-modal\n [title]=\"'i18n_insert_link'\"\n [mode]=\"'center'\"\n [height]=\"'auto'\"\n [width]=\"'598px'\"\n [ignoreCommunicateMicroEvent]=\"ignoreCommunicateMicroEvent()\"\n [headerConfig]=\"{ ignoreHeaderTheme: true }\"\n [zIndex]=\"zIndex()\"\n (outEvent)=\"handlerEvent($event)\">\n <div class=\"libs-ui-modal-body-custom\">\n <libs_ui-components-inputs-valid\n [labelConfig]=\"{ labelLeft: 'i18n_content', required: true }\"\n [(item)]=\"dataLink\"\n [fieldNameBind]=\"'title'\"\n [placeholder]=\"'i18n_import_content'\"\n [validRequired]=\"{ isRequired: true }\"\n (outFunctionsControl)=\"handlerFunctionsControl($event)\" />\n <div class=\"mt-[16px]\">\n <libs_ui-components-inputs-valid\n [labelConfig]=\"{ labelLeft: 'Link', required: true }\"\n [(item)]=\"dataLink\"\n [fieldNameBind]=\"'link'\"\n [placeholder]=\"'https://example.com'\"\n [validRequired]=\"{ isRequired: true }\"\n [validPattern]=\"[{ pattern: patternLink(), valuePatternShowError: false }]\"\n [keySelectedUnitLeft]=\"'1'\"\n [unitsLeft]=\"[{ id: '1', label: 'URL' }]\"\n (outFunctionsControl)=\"handlerFunctionsControl($event)\" />\n </div>\n </div>\n</libs_ui-components-modal>\n", dependencies: [{ kind: "component", type: LibsUiComponentsModalComponent, selector: "libs_ui-components-modal", inputs: ["show", "mode", "isBackdropTransparent", "isBackgroundTransparentModal", "isSizeBackdropByWidthHeightInput", "hasShadowBoxWhenHiddenBackDropTransparent", "classIncludeModalWrapper", "zIndex", "width", "height", "maxWidth", "maxHeight", "minWidth", "isFullScreen", "disable", "ignoreCommunicateMicroEvent", "headerConfig", "bodyConfig", "footerConfig", "buttonsFooter", "title", "titleUseXssFilter", "titleUseTooltip", "titleUseInnerText"], outputs: ["showChange", "widthChange", "heightChange", "maxWidthChange", "maxHeightChange", "minWidthChange", "disableChange", "buttonsFooterChange", "outScrollContent", "outEvent", "outFunctionControl"] }, { kind: "component", type: LibsUiComponentsInputsValidComponent, selector: "libs_ui-components-inputs-valid", inputs: ["item", "labelConfig", "emitEmptyInDataTypeNumber", "ignoreBlockInputMaxValue", "fieldNameBind", "showCount", "typeComponentSelectItem", "valueComponentSelectItem", "disableComponentSelectItem", "tagInput", "dataType", "typeInput", "modeInput", "resetAutoCompletePassword", "textAreaEnterNotNewLine", "fixedFloat", "acceptNegativeValue", "valueUpDownNumber", "ignoreWidthInput100", "classIncludeInput", "classContainerInput", "readonly", "disable", "noBorder", "backgroundNone", "useColorModeExist", "placeholder", "keepPlaceholderOnly", "classContainerBottomInput", "autoRemoveEmoji", "defaultHeight", "maxHeightTextArea", "minHeightTextArea", "ignoreShowError", "borderError", "iconLeftClass", "popoverContentIconLeft", "iconRightClass", "popoverContentIconRight", "zIndexPopoverContent", "unitsLeft", "configUnitLeft", "keySelectedUnitLeft", "unitsRight", "configUnitRight", "keySelectedUnitRight", "maxValueNumber", "minValueNumber", "ignoreContentLeft", "ignoreContentRight", "isBaselineStyle", "valuePatternShowError", "validPattern", "validRequired", "validMinLength", "validMinValue", "validMaxValue", "validMaxLength", "functionValid", "maxLength", "positionMessageErrorStartInput", "classInclude", "resize", "templateLeftBottomInput", "templateRightBottomInput", "onlyAcceptNegativeValue", "autoAddZeroLessThan10InTypeInt", "maxLengthNumberCount", "classMessageErrorInclude", "ignoreStopPropagationEvent", "ignoreUnitRightClassReadOnly", "paddingRightCustomSpecific", "focusTimeOut", "debounceTimeValidate"], outputs: ["itemChange", "outValueChange", "outSelect", "outIconLeft", "outIconRight", "outClickButtonLabel", "outSwitchEventLabel", "outLabelRightClick", "outEnterInputEvent", "outHeightAreaChange", "outFunctionsControl", "outFocusAndBlur", "outChangeValueByButtonUpDown"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
68
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: LibsUiComponentsInputsQuillLinkComponent, isStandalone: true, selector: "libs_ui-components-inputs-quill-link", inputs: { zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, link: { classPropertyName: "link", publicName: "link", isSignal: true, isRequired: false, transformFunction: null }, ignoreCommunicateMicroEvent: { classPropertyName: "ignoreCommunicateMicroEvent", publicName: "ignoreCommunicateMicroEvent", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { outClose: "outClose", outSaveLink: "outSaveLink" }, ngImport: i0, template: "<libs_ui-components-modal\n [title]=\"'i18n_insert_link'\"\n [mode]=\"'center'\"\n [height]=\"'auto'\"\n [width]=\"'598px'\"\n [ignoreCommunicateMicroEvent]=\"ignoreCommunicateMicroEvent()\"\n [headerConfig]=\"{ ignoreHeaderTheme: true }\"\n [zIndex]=\"zIndex()\"\n (outEvent)=\"handlerEvent($event)\">\n <div class=\"libs-ui-modal-body-custom\">\n <libs_ui-components-inputs-valid\n [labelConfig]=\"{ labelLeft: 'i18n_content', required: true }\"\n [(item)]=\"dataLink\"\n [fieldNameBind]=\"'title'\"\n [placeholder]=\"'i18n_import_content'\"\n [validRequired]=\"{ isRequired: true }\"\n (outFunctionsControl)=\"handlerFunctionsControl($event)\" />\n <div class=\"mt-[16px]\">\n <libs_ui-components-inputs-valid\n [labelConfig]=\"{ labelLeft: 'Link', required: true }\"\n [(item)]=\"dataLink\"\n [fieldNameBind]=\"'link'\"\n [placeholder]=\"'https://example.com'\"\n [validRequired]=\"{ isRequired: true }\"\n [validPattern]=\"[{ pattern: patternLink(), valuePatternShowError: false }]\"\n [keySelectedUnitLeft]=\"'1'\"\n [unitsLeft]=\"[{ id: '1', label: 'URL' }]\"\n (outFunctionsControl)=\"handlerFunctionsControl($event)\" />\n </div>\n </div>\n</libs_ui-components-modal>\n", dependencies: [{ kind: "component", type: LibsUiComponentsModalComponent, selector: "libs_ui-components-modal", inputs: ["show", "mode", "isBackdropTransparent", "isBackgroundTransparentModal", "isSizeBackdropByWidthHeightInput", "hasShadowBoxWhenHiddenBackDropTransparent", "classIncludeModalWrapper", "zIndex", "width", "height", "maxWidth", "maxHeight", "minWidth", "isFullScreen", "disable", "ignoreCommunicateMicroEvent", "escapeKeyboardCloseModal", "headerConfig", "bodyConfig", "footerConfig", "buttonsFooter", "title", "titleUseXssFilter", "titleUseTooltip", "titleUseInnerText"], outputs: ["showChange", "widthChange", "heightChange", "maxWidthChange", "maxHeightChange", "minWidthChange", "disableChange", "buttonsFooterChange", "outScrollContent", "outEvent", "outFunctionControl"] }, { kind: "component", type: LibsUiComponentsInputsValidComponent, selector: "libs_ui-components-inputs-valid", inputs: ["item", "labelConfig", "emitEmptyInDataTypeNumber", "ignoreBlockInputMaxValue", "fieldNameBind", "showCount", "typeComponentSelectItem", "valueComponentSelectItem", "disableComponentSelectItem", "tagInput", "dataType", "typeInput", "modeInput", "resetAutoCompletePassword", "textAreaEnterNotNewLine", "fixedFloat", "acceptNegativeValue", "valueUpDownNumber", "ignoreWidthInput100", "classIncludeInput", "classContainerInput", "readonly", "disable", "noBorder", "backgroundNone", "useColorModeExist", "placeholder", "keepPlaceholderOnly", "classContainerBottomInput", "autoRemoveEmoji", "defaultHeight", "maxHeightTextArea", "minHeightTextArea", "ignoreShowError", "borderError", "iconLeftClass", "popoverContentIconLeft", "iconRightClass", "popoverContentIconRight", "zIndexPopoverContent", "unitsLeft", "configUnitLeft", "keySelectedUnitLeft", "unitsRight", "configUnitRight", "keySelectedUnitRight", "maxValueNumber", "minValueNumber", "ignoreContentLeft", "ignoreContentRight", "isBaselineStyle", "valuePatternShowError", "validPattern", "validRequired", "validMinLength", "validMinValue", "validMaxValue", "validMaxLength", "functionValid", "maxLength", "positionMessageErrorStartInput", "classInclude", "resize", "templateLeftBottomInput", "templateRightBottomInput", "onlyAcceptNegativeValue", "autoAddZeroLessThan10InTypeInt", "maxLengthNumberCount", "classMessageErrorInclude", "ignoreStopPropagationEvent", "ignoreUnitRightClassReadOnly", "paddingRightCustomSpecific", "focusTimeOut", "debounceTimeValidate"], outputs: ["itemChange", "outValueChange", "outSelect", "outIconLeft", "outIconRight", "outClickButtonLabel", "outSwitchEventLabel", "outLabelRightClick", "outEnterInputEvent", "outHeightAreaChange", "outFunctionsControl", "outFocusAndBlur", "outChangeValueByButtonUpDown"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
69
69
|
}
|
|
70
70
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsInputsQuillLinkComponent, decorators: [{
|
|
71
71
|
type: Component,
|
|
@@ -129,7 +129,7 @@ class LibsUiComponentsInputsQuillUploadImageComponent {
|
|
|
129
129
|
}
|
|
130
130
|
}
|
|
131
131
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsInputsQuillUploadImageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
132
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: LibsUiComponentsInputsQuillUploadImageComponent, isStandalone: true, selector: "libs_ui-components-inputs-quill-upload_image", inputs: { ignoreCommunicateMicroEvent: { classPropertyName: "ignoreCommunicateMicroEvent", publicName: "ignoreCommunicateMicroEvent", isSignal: true, isRequired: false, transformFunction: null }, uploadImageConfig: { classPropertyName: "uploadImageConfig", publicName: "uploadImageConfig", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { outClose: "outClose" }, ngImport: i0, template: "<libs_ui-components-modal\n [title]=\"'i18n_upload_image'\"\n [mode]=\"'center'\"\n [width]=\"'598px'\"\n [headerConfig]=\"{ ignoreHeaderTheme: true }\"\n [maxHeight]=\"'calc(100% - 100px)'\"\n [height]=\"'auto'\"\n [zIndex]=\"uploadImageConfig().zIndex || 1203\"\n [disable]=\"disable()\"\n [ignoreCommunicateMicroEvent]=\"ignoreCommunicateMicroEvent()\"\n [buttonsFooter]=\"buttonFooter()\"\n (outEvent)=\"handlerEventModal($event)\">\n <div class=\"libs-ui-modal-body-custom\">\n <!-- <libs-uicomponents-media-upload [zIndex]=\"zIndex+1\"\n [labelConfig]=\"labelConfig\"\n [multiple]=\"false\"\n [fileType]=\"'image'\"\n [doNotDelete]=\"true\"\n [maxImageSize]=\"maxImageSize || 1048576\"\n [limitFile]=\"10\"\n [validRequired]=\"{isRequired: true}\"\n (moChangeFile)=\"handlerChangeFile($event)\"\n (outFunctionsControl)=\"handlerFunctionsControl($event)\">\n </libs-uicomponents-media-upload> -->\n </div>\n</libs_ui-components-modal>\n", dependencies: [{ kind: "component", type: LibsUiComponentsModalComponent, selector: "libs_ui-components-modal", inputs: ["show", "mode", "isBackdropTransparent", "isBackgroundTransparentModal", "isSizeBackdropByWidthHeightInput", "hasShadowBoxWhenHiddenBackDropTransparent", "classIncludeModalWrapper", "zIndex", "width", "height", "maxWidth", "maxHeight", "minWidth", "isFullScreen", "disable", "ignoreCommunicateMicroEvent", "headerConfig", "bodyConfig", "footerConfig", "buttonsFooter", "title", "titleUseXssFilter", "titleUseTooltip", "titleUseInnerText"], outputs: ["showChange", "widthChange", "heightChange", "maxWidthChange", "maxHeightChange", "minWidthChange", "disableChange", "buttonsFooterChange", "outScrollContent", "outEvent", "outFunctionControl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
132
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: LibsUiComponentsInputsQuillUploadImageComponent, isStandalone: true, selector: "libs_ui-components-inputs-quill-upload_image", inputs: { ignoreCommunicateMicroEvent: { classPropertyName: "ignoreCommunicateMicroEvent", publicName: "ignoreCommunicateMicroEvent", isSignal: true, isRequired: false, transformFunction: null }, uploadImageConfig: { classPropertyName: "uploadImageConfig", publicName: "uploadImageConfig", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { outClose: "outClose" }, ngImport: i0, template: "<libs_ui-components-modal\n [title]=\"'i18n_upload_image'\"\n [mode]=\"'center'\"\n [width]=\"'598px'\"\n [headerConfig]=\"{ ignoreHeaderTheme: true }\"\n [maxHeight]=\"'calc(100% - 100px)'\"\n [height]=\"'auto'\"\n [zIndex]=\"uploadImageConfig().zIndex || 1203\"\n [disable]=\"disable()\"\n [ignoreCommunicateMicroEvent]=\"ignoreCommunicateMicroEvent()\"\n [buttonsFooter]=\"buttonFooter()\"\n (outEvent)=\"handlerEventModal($event)\">\n <div class=\"libs-ui-modal-body-custom\">\n <!-- <libs-uicomponents-media-upload [zIndex]=\"zIndex+1\"\n [labelConfig]=\"labelConfig\"\n [multiple]=\"false\"\n [fileType]=\"'image'\"\n [doNotDelete]=\"true\"\n [maxImageSize]=\"maxImageSize || 1048576\"\n [limitFile]=\"10\"\n [validRequired]=\"{isRequired: true}\"\n (moChangeFile)=\"handlerChangeFile($event)\"\n (outFunctionsControl)=\"handlerFunctionsControl($event)\">\n </libs-uicomponents-media-upload> -->\n </div>\n</libs_ui-components-modal>\n", dependencies: [{ kind: "component", type: LibsUiComponentsModalComponent, selector: "libs_ui-components-modal", inputs: ["show", "mode", "isBackdropTransparent", "isBackgroundTransparentModal", "isSizeBackdropByWidthHeightInput", "hasShadowBoxWhenHiddenBackDropTransparent", "classIncludeModalWrapper", "zIndex", "width", "height", "maxWidth", "maxHeight", "minWidth", "isFullScreen", "disable", "ignoreCommunicateMicroEvent", "escapeKeyboardCloseModal", "headerConfig", "bodyConfig", "footerConfig", "buttonsFooter", "title", "titleUseXssFilter", "titleUseTooltip", "titleUseInnerText"], outputs: ["showChange", "widthChange", "heightChange", "maxWidthChange", "maxHeightChange", "minWidthChange", "disableChange", "buttonsFooterChange", "outScrollContent", "outEvent", "outFunctionControl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
133
133
|
}
|
|
134
134
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsInputsQuillUploadImageComponent, decorators: [{
|
|
135
135
|
type: Component,
|
|
@@ -1897,6 +1897,25 @@ function splitCells(cellSplit) {
|
|
|
1897
1897
|
});
|
|
1898
1898
|
});
|
|
1899
1899
|
}
|
|
1900
|
+
const getAllTablesWithSpan = (quill) => {
|
|
1901
|
+
const root = quill.root;
|
|
1902
|
+
// Tìm tất cả table trong quill
|
|
1903
|
+
const tableEls = root.querySelectorAll('table');
|
|
1904
|
+
tableEls.forEach((tableEl) => {
|
|
1905
|
+
const rows = tableEl.querySelectorAll('tr');
|
|
1906
|
+
rows.forEach((rowEl, rIndex) => {
|
|
1907
|
+
rowEl.setAttribute('index', `${rIndex}`);
|
|
1908
|
+
const cells = rowEl.querySelectorAll('td, th');
|
|
1909
|
+
cells.forEach((cellEl, cIndex) => {
|
|
1910
|
+
cellEl.setAttribute('index', `${rIndex}-${cIndex}`);
|
|
1911
|
+
const rowspan = parseInt(cellEl.getAttribute('rowspan') || '1', 10);
|
|
1912
|
+
const colspan = parseInt(cellEl.getAttribute('colspan') || '1', 10);
|
|
1913
|
+
cellEl.setAttribute('rowspan', String(rowspan));
|
|
1914
|
+
cellEl.setAttribute('colspan', String(colspan));
|
|
1915
|
+
});
|
|
1916
|
+
});
|
|
1917
|
+
});
|
|
1918
|
+
};
|
|
1900
1919
|
//-------------------------------------------
|
|
1901
1920
|
let register = false;
|
|
1902
1921
|
const registerQuill2x = () => {
|
|
@@ -1920,24 +1939,12 @@ const registerQuill2x = () => {
|
|
|
1920
1939
|
Quill.register('modules/resize', ResizeModule);
|
|
1921
1940
|
[...iconList()].forEach((element) => set(icons, element.key, `<span class="${element.icon} ${element.key === 'unLink' ? 'hover:text-[#ee2d41] ' : 'hover:text-[var(--libs-ui-color-light-1)]'} text-[16px] text-[#6a7383]"></span>`));
|
|
1922
1941
|
};
|
|
1923
|
-
const
|
|
1924
|
-
const
|
|
1925
|
-
|
|
1926
|
-
|
|
1927
|
-
|
|
1928
|
-
|
|
1929
|
-
rows.forEach((rowEl, rIndex) => {
|
|
1930
|
-
rowEl.setAttribute('index', `${rIndex}`);
|
|
1931
|
-
const cells = rowEl.querySelectorAll('td, th');
|
|
1932
|
-
cells.forEach((cellEl, cIndex) => {
|
|
1933
|
-
cellEl.setAttribute('index', `${rIndex}-${cIndex}`);
|
|
1934
|
-
const rowspan = parseInt(cellEl.getAttribute('rowspan') || '1', 10);
|
|
1935
|
-
const colspan = parseInt(cellEl.getAttribute('colspan') || '1', 10);
|
|
1936
|
-
cellEl.setAttribute('rowspan', String(rowspan));
|
|
1937
|
-
cellEl.setAttribute('colspan', String(colspan));
|
|
1938
|
-
});
|
|
1939
|
-
});
|
|
1940
|
-
});
|
|
1942
|
+
const isEmptyQuill = (quill) => {
|
|
1943
|
+
const rootElement = quill?.root;
|
|
1944
|
+
if (!rootElement)
|
|
1945
|
+
return true;
|
|
1946
|
+
const html = rootElement.innerHTML.trim();
|
|
1947
|
+
return html === '<p><br></p>' || html === '<p></p>' || html === '' || html === '<p><span class="ql-cursor"></span><br></p>' || rootElement.classList.contains('ql-blank');
|
|
1941
1948
|
};
|
|
1942
1949
|
|
|
1943
1950
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
@@ -2191,6 +2198,23 @@ class LibsUiComponentsInputsQuill2xComponent {
|
|
|
2191
2198
|
createContextMenuOptionTable(this.quill, this.translate);
|
|
2192
2199
|
enableTableSelection(this.quill.root);
|
|
2193
2200
|
getAllTablesWithSpan(this.quill);
|
|
2201
|
+
const rootElement = this.quill?.root;
|
|
2202
|
+
if (!rootElement) {
|
|
2203
|
+
return;
|
|
2204
|
+
}
|
|
2205
|
+
merge(fromEvent(rootElement, 'compositionstart'), fromEvent(rootElement, 'compositionend'))
|
|
2206
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
2207
|
+
.subscribe((e) => {
|
|
2208
|
+
if (e.type === 'compositionstart') {
|
|
2209
|
+
rootElement.classList.remove('ql-blank');
|
|
2210
|
+
return;
|
|
2211
|
+
}
|
|
2212
|
+
if (isEmptyQuill(this.quill)) {
|
|
2213
|
+
rootElement.classList.add('ql-blank');
|
|
2214
|
+
return;
|
|
2215
|
+
}
|
|
2216
|
+
rootElement.classList.remove('ql-blank');
|
|
2217
|
+
});
|
|
2194
2218
|
}
|
|
2195
2219
|
get FunctionsControl() {
|
|
2196
2220
|
return {
|
|
@@ -2442,7 +2466,7 @@ class LibsUiComponentsInputsQuill2xComponent {
|
|
|
2442
2466
|
const item = this.item();
|
|
2443
2467
|
const fieldNameBind = this.fieldBind();
|
|
2444
2468
|
const value = get(item, fieldNameBind);
|
|
2445
|
-
if (validRequired && validRequired.isRequired && !this.readonly() && this.
|
|
2469
|
+
if (validRequired && validRequired.isRequired && !this.readonly() && isEmptyQuill(this.quill)) {
|
|
2446
2470
|
this.messageError.set(validRequired.message || ERROR_MESSAGE_EMPTY_VALID);
|
|
2447
2471
|
this.outMessageError.emit(this.messageError());
|
|
2448
2472
|
return false;
|