@libs-ui/components-inputs-quill 0.2.348-8 → 0.2.350-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.
@@ -1,6 +1,12 @@
1
1
  import { signal } from '@angular/core';
2
2
  import { returnListObject } from '@libs-ui/services-http-request';
3
- import { convertFileToBase64_ObjectUrl } from '@libs-ui/utils';
3
+ import { convertFileToBase64_ObjectUrl, decodeEscapeHtml } from '@libs-ui/utils';
4
+ import Quill from 'quill';
5
+ import { lastValueFrom } from 'rxjs/internal/lastValueFrom';
6
+ import { timer } from 'rxjs/internal/observable/timer';
7
+ let quill = null;
8
+ let timeout = undefined;
9
+ let timeout2 = undefined;
4
10
  export const listDataAlign = () => {
5
11
  return [
6
12
  { key: '', icon: 'libs-ui-icon-align-left text-[#6a7383] text-[16px] hover:text-[var(--libs-ui-color-light-1)]' },
@@ -473,4 +479,145 @@ export const fontSizeWhiteList = () => [
473
479
  '71px',
474
480
  '72px',
475
481
  ];
476
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVpbGwuZGVmaW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL2lucHV0cy9xdWlsbC9zcmMvdXRpbHMvcXVpbGwuZGVmaW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkMsT0FBTyxFQUFzQixnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXRGLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRS9ELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxHQUFHLEVBQUU7SUFDaEMsT0FBTztRQUNMLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsOEZBQThGLEVBQUU7UUFDakgsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSwrRkFBK0YsRUFBRTtRQUN2SCxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLGdHQUFnRyxFQUFFO1FBQ3pILEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsaUdBQWlHLEVBQUU7S0FDNUgsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxHQUFHLEVBQUU7SUFDM0IsT0FBTztRQUNMLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFO1FBQ2hDLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO1FBQ2hDLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFO0tBQ3pDLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsR0FBRyxFQUFFO0lBQzdCLE9BQU87UUFDTCxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUs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QU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07Q0FDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJTGlzdENvbmZpZ0l0ZW0gfSBmcm9tICdAbGlicy11aS9jb21wb25lbnRzLWxpc3QnO1xuaW1wb3J0IHsgSUh0dHBSZXF1ZXN0Q29uZmlnLCByZXR1cm5MaXN0T2JqZWN0IH0gZnJvbSAnQGxpYnMtdWkvc2VydmljZXMtaHR0cC1yZXF1ZXN0JztcbmltcG9ydCB7IElRdWlsbExpbmssIElRdWlsbFRvb2xiYXJDb25maWcsIElRdWlsbFVwbG9hZEltYWdlQ29uZmlnLCBUWVBFX01PREVfQkFSX0NPTkZJR19PUFRJT04gfSBmcm9tICcuLi9pbnRlcmZhY2VzL3F1aWxsLmludGVyZmFjZSc7XG5pbXBvcnQgeyBjb252ZXJ0RmlsZVRvQmFzZTY0X09iamVjdFVybCB9IGZyb20gJ0BsaWJzLXVpL3V0aWxzJztcblxuZXhwb3J0IGNvbnN0IGxpc3REYXRhQWxpZ24gPSAoKSA9PiB7XG4gIHJldHVybiBbXG4gICAgeyBrZXk6ICcnLCBpY29uOiAnbGlicy11aS1pY29uLWFsaWduLWxlZnQgdGV4dC1bIzZhNzM4M10gdGV4dC1bMTZweF0gaG92ZXI6dGV4dC1bdmFyKC0tbGlicy11aS1jb2xvci1saWdodC0xKV0nIH0sXG4gICAgeyBrZXk6ICdyaWdodCcsIGljb246ICdsaWJzLXVpLWljb24tYWxpZ24tcmlnaHQgdGV4dC1bIzZhNzM4M10gdGV4dC1bMTZweF0gaG92ZXI6dGV4dC1bdmFyKC0tbGlicy11aS1jb2xvci1saWdodC0xKV0nIH0sXG4gICAgeyBrZXk6ICdjZW50ZXInLCBpY29uOiAnbGlicy11aS1pY29uLWFsaWduLWNlbnRlciB0ZXh0LVsjNmE3MzgzXSB0ZXh0LVsxNnB4XSBob3Zlcjp0ZXh0LVt2YXIoLS1saWJzLXVpLWNvbG9yLWxpZ2h0LTEpXScgfSxcbiAgICB7IGtleTogJ2p1c3RpZnknLCBpY29uOiAnbGlicy11aS1pY29uLWFsaWduLWp1c3RpZnkgdGV4dC1bIzZhNzM4M10gdGV4dC1bMTZweF0gaG92ZXI6dGV4dC1bdmFyKC0tbGlicy11aS1jb2xvci1saWdodC0xKV0nIH0sXG4gIF07XG59O1xuXG5leHBvcnQgY29uc3QgbGlzdEZvbnQgPSAoKSA9PiB7XG4gIHJldHVybiBbXG4gICAgeyBrZXk6ICcnLCBsYWJlbDogJ1NhbnMgU2VyaWYnIH0sXG4gICAgeyBrZXk6ICdzZXJpZicsIGxhYmVsOiAnU2VyaWYnIH0sXG4gICAgeyBrZXk6ICdtb25vc3BhY2UnLCBsYWJlbDogJ01vbm9zcGFjZScgfSxcbiAgXTtcbn07XG5cbmV4cG9ydCBjb25zdCBsaXN0SGVhZGVyID0gKCkgPT4ge1xuICByZXR1cm4gW1xuICAgIHsga2V5OiAnJywgbGFiZWw6ICdOb3JtYWwnIH0sXG4gICAgeyBrZXk6ICcxJywgbGFiZWw6ICdIZWFkaW5nIDEnIH0sXG4gICAgeyBrZXk6ICcyJywgbGFiZWw6ICdIZWFkaW5nIDInIH0sXG4gICAgeyBrZXk6ICczJywgbGFiZWw6ICdIZWFkaW5nIDMnIH0sXG4gICAgeyBrZXk6ICc0JywgbGFiZWw6ICdIZWFkaW5nIDQnIH0sXG4gICAgeyBrZXk6ICc1JywgbGFiZWw6ICdIZWFkaW5nIDUnIH0sXG4gICAgeyBrZXk6ICc2JywgbGFiZWw6ICdIZWFkaW5nIDYnIH0sXG4gIF07XG59O1xuXG5leHBvcnQgY29uc3QgbGlzdENvbmZpZ0FsaWduID0gKCk6IElMaXN0Q29uZmlnSXRlbSA9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogJ3RleHQnLFxuICAgIGF1dG9TZWxlY3RGaXJzdEl0ZW06IHRydWUsXG4gICAgaHR0cFJlcXVlc3REYXRhOiBzaWduYWw8SUh0dHBSZXF1ZXN0Q29uZmlnPih7XG4gICAgICBvYmplY3RJbnN0YW5jZTogcmV0dXJuTGlzdE9iamVjdChsaXN0RGF0YUFsaWduKCkpLFxuICAgICAgZnVuY3Rpb25OYW1lOiAnbGlzdCcsXG4gICAgICBhcmd1bWVudHNWYWx1ZTogW10sXG4gICAgfSksXG4gICAgY29uZmlnVGVtcGxhdGVUZXh0OiBzaWduYWwoe1xuICAgICAgZmllbGRLZXk6ICdrZXknLFxuICAgICAgZ2V0Q2xhc3NJdGVtOiAoKSA9PiAnIXB4LVs4cHhdICFweS1bNHB4XScsXG4gICAgICBnZXRWYWx1ZTogKGl0ZW0pID0+IGA8aSBjbGFzcz0nZmxleCAke2l0ZW0uaWNvbn0nPjwvaT5gLFxuICAgICAgaWdub3JlSWNvblNlbGVjdGVkOiB0cnVlLFxuICAgIH0pLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGxpc3RDb25maWdGb250ID0gKCk6IElMaXN0Q29uZmlnSXRlbSA9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogJ3RleHQnLFxuICAgIGF1dG9TZWxlY3RGaXJzdEl0ZW06IHRydWUsXG4gICAgaHR0cFJlcXVlc3REYXRhOiBzaWduYWw8SUh0dHBSZXF1ZXN0Q29uZmlnPih7XG4gICAgICBvYmplY3RJbnN0YW5jZTogcmV0dXJuTGlzdE9iamVjdChsaXN0Rm9udCgpKSxcbiAgICAgIGZ1bmN0aW9uTmFtZTogJ2xpc3QnLFxuICAgICAgYXJndW1lbnRzVmFsdWU6IFtdLFxuICAgIH0pLFxuICAgIGNvbmZpZ1RlbXBsYXRlVGV4dDogc2lnbmFsKHtcbiAgICAgIGZpZWxkS2V5OiAna2V5JyxcbiAgICAgIGdldFZhbHVlOiAoaXRlbSkgPT4gaXRlbS5sYWJlbCxcbiAgICAgIGlnbm9yZUljb25TZWxlY3RlZDogdHJ1ZSxcbiAgICB9KSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBsaXN0Q29uZmlnSGVhZGVyID0gKCk6IElMaXN0Q29uZmlnSXRlbSA9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogJ3RleHQnLFxuICAgIGF1dG9TZWxlY3RGaXJzdEl0ZW06IHRydWUsXG4gICAgaHR0cFJlcXVlc3REYXRhOiBzaWduYWw8SUh0dHBSZXF1ZXN0Q29uZmlnPih7XG4gICAgICBvYmplY3RJbnN0YW5jZTogcmV0dXJuTGlzdE9iamVjdChsaXN0SGVhZGVyKCkpLFxuICAgICAgZnVuY3Rpb25OYW1lOiAnbGlzdCcsXG4gICAgICBhcmd1bWVudHNWYWx1ZTogW10sXG4gICAgfSksXG4gICAgY29uZmlnVGVtcGxhdGVUZXh0OiBzaWduYWwoe1xuICAgICAgZmllbGRLZXk6ICdrZXknLFxuICAgICAgZ2V0VmFsdWU6IChpdGVtKSA9PiB7XG4gICAgICAgIHN3aXRjaCAoaXRlbT8ua2V5KSB7XG4gICAgICAgICAgY2FzZSAnJzpcbiAgICAgICAgICAgIHJldHVybiBgPHNwYW4gY2xhc3M9XCJsaWJzLXVpLWZvbnQtaDVyXCI+JHtpdGVtPy5sYWJlbH08L3NwYW4+YDtcbiAgICAgICAgICBjYXNlICcxJzpcbiAgICAgICAgICAgIHJldHVybiBgPHNwYW4gY2xhc3M9XCJsaWJzLXVpLWZvbnQtaDFyXCI+JHtpdGVtPy5sYWJlbH08L3NwYW4+YDtcbiAgICAgICAgICBjYXNlICcyJzpcbiAgICAgICAgICAgIHJldHVybiBgPHNwYW4gY2xhc3M9XCJsaWJzLXVpLWZvbnQtaDJyXCI+JHtpdGVtPy5sYWJlbH08L3NwYW4+YDtcbiAgICAgICAgICBjYXNlICczJzpcbiAgICAgICAgICAgIHJldHVybiBgPHNwYW4gY2xhc3M9XCJsaWJzLXVpLWZvbnQtaDNyXCI+JHtpdGVtPy5sYWJlbH08L3NwYW4+YDtcbiAgICAgICAgICBjYXNlICc0JzpcbiAgICAgICAgICAgIHJldHVybiBgPHNwYW4gY2xhc3M9XCJsaWJzLXVpLWZvbnQtaDRyXCI+JHtpdGVtPy5sYWJlbH08L3NwYW4+YDtcbiAgICAgICAgICBjYXNlICc1JzpcbiAgICAgICAgICAgIHJldHVybiBgPHNwYW4gY2xhc3M9XCJsaWJzLXVpLWZvbnQtaDVyXCI+JHtpdGVtPy5sYWJlbH08L3NwYW4+YDtcbiAgICAgICAgICBjYXNlICc2JzpcbiAgICAgICAgICAgIHJldHVybiBgPHNwYW4gY2xhc3M9XCJsaWJzLXVpLWZvbnQtaDZyXCI+JHtpdGVtPy5sYWJlbH08L3NwYW4+YDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXRlbT8ubGFiZWw7XG4gICAgICB9LFxuICAgICAgaWdub3JlSWNvblNlbGVjdGVkOiB0cnVlLFxuICAgIH0pLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHRvb2xCYXJPcHRpb25zID0gKG1vZGU6IFRZUEVfTU9ERV9CQVJfQ09ORklHX09QVElPTiwgaGFzSWNvbkltYWdlOiBib29sZWFuLCBoYXNJY29uUGVyc29uYWxpemU6IGJvb2xlYW4pOiBBcnJheTxJUXVpbGxUb29sYmFyQ29uZmlnPiA9PiB7XG4gIHJldHVybiAoXG4gICAgW1xuICAgICAge1xuICAgICAgICB0eXBlOiAndW5kbycsXG4gICAgICAgIGNsYXNzSW5jbHVkZTogJ21yLVs4cHhdJyxcbiAgICAgICAgbW9kZTogWydhbGwnLCAnZGVmYXVsdCcsICdiYXNpYyddLFxuICAgICAgICB3aWR0aDogMjQsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAncmVkbycsXG4gICAgICAgIG1vZGU6IFsnYWxsJywgJ2RlZmF1bHQnLCAnYmFzaWMnXSxcbiAgICAgICAgd2lkdGg6IDMyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2xpbmUnLFxuICAgICAgICBtb2RlOiBbJ2FsbCcsICdkZWZhdWx0JywgJ2Jhc2ljJ10sXG4gICAgICAgIHdpZHRoOiAxLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2hlYWRlcicsXG4gICAgICAgIGNsYXNzSW5jbHVkZTogJ21sLVs4cHhdJyxcbiAgICAgICAgbW9kZTogWydhbGwnXSxcbiAgICAgICAgd2lkdGg6IDE0NixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdmb250RmFtaWx5JyxcbiAgICAgICAgY2xhc3NJbmNsdWRlOiAnbWwtWzhweF0nLFxuICAgICAgICBtb2RlOiBbJ2FsbCcsICdkZWZhdWx0J10sXG4gICAgICAgIHdpZHRoOiAxMzYsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnZm9udFNpemUnLFxuICAgICAgICBjbGFzc0luY2x1ZGU6ICdtbC1bOHB4XSBtci1bOHB4XScsXG4gICAgICAgIG1vZGU6IFsnYWxsJywgJ2RlZmF1bHQnXSxcbiAgICAgICAgd2lkdGg6IDgyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2xpbmUnLFxuICAgICAgICBtb2RlOiBbJ2FsbCcsICdkZWZhdWx0J10sXG4gICAgICAgIHdpZHRoOiAxLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2NvbG9yJyxcbiAgICAgICAgbW9kZTogWydhbGwnLCAnZGVmYXVsdCcsICdiYXNpYyddLFxuICAgICAgICB3aWR0aDogMzIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnYmFja2dyb3VuZCcsXG4gICAgICAgIG1vZGU6IFsnYWxsJywgJ2RlZmF1bHQnXSxcbiAgICAgICAgd2lkdGg6IDMyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2xpbmUnLFxuICAgICAgICBtb2RlOiBbJ2FsbCcsICdkZWZhdWx0JywgJ2Jhc2ljJ10sXG4gICAgICAgIHdpZHRoOiAxLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2JvbGQnLFxuICAgICAgICBtb2RlOiBbJ2FsbCcsICdkZWZhdWx0JywgJ2Jhc2ljJ10sXG4gICAgICAgIHdpZHRoOiAzMixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdpdGFsaWMnLFxuICAgICAgICBtb2RlOiBbJ2FsbCcsICdkZWZhdWx0JywgJ2Jhc2ljJ10sXG4gICAgICAgIHdpZHRoOiAzMixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICd1bmRlcmxpbmUnLFxuICAgICAgICBtb2RlOiBbJ2FsbCcsICdkZWZhdWx0JywgJ2Jhc2ljJ10sXG4gICAgICAgIHdpZHRoOiAzMixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdzdHJpa2VUaHJvdWdoJyxcbiAgICAgICAgbW9kZTogWydhbGwnLCAnZGVmYXVsdCddLFxuICAgICAgICB3aWR0aDogMzIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnbGluZScsXG4gICAgICAgIG1vZGU6IFsnYWxsJywgJ2RlZmF1bHQnLCAnYmFzaWMnXSxcbiAgICAgICAgd2lkdGg6IDEsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnc2NyaXB0LnN1YicsXG4gICAgICAgIG1vZGU6IFsnYWxsJ10sXG4gICAgICAgIHdpZHRoOiAzMixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdzY3JpcHQuc3VwZXInLFxuICAgICAgICBtb2RlOiBbJ2FsbCddLFxuICAgICAgICB3aWR0aDogMzIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnbGluZScsXG4gICAgICAgIG1vZGU6IFsnYWxsJ10sXG4gICAgICAgIHdpZHRoOiAxLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2FkanVzdCcsXG4gICAgICAgIG1vZGU6IFsnYWxsJywgJ2RlZmF1bHQnXSxcbiAgICAgICAgd2lkdGg6IDUyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2xpbmUnLFxuICAgICAgICBtb2RlOiBbJ2FsbCcsICdkZWZhdWx0J10sXG4gICAgICAgIHdpZHRoOiAzMixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdpbmRlbnRJbmNyZWFzZScsXG4gICAgICAgIG1vZGU6IFsnYWxsJywgJ2RlZmF1bHQnXSxcbiAgICAgICAgd2lkdGg6IDMyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2luZGVudERlY3JlYXNlJyxcbiAgICAgICAgbW9kZTogWydhbGwnLCAnZGVmYXVsdCddLFxuICAgICAgICB3aWR0aDogMzIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnbGlzdEJ1bGxldGVkJyxcbiAgICAgICAgbW9kZTogWydhbGwnLCAnZGVmYXVsdCddLFxuICAgICAgICB3aWR0aDogMzIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnbGlzdE51bWJlcmVkJyxcbiAgICAgICAgbW9kZTogWydhbGwnLCAnZGVmYXVsdCddLFxuICAgICAgICB3aWR0aDogMzIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnbGlzdENoZWNrZWQnLFxuICAgICAgICBtb2RlOiBbJ2FsbCddLFxuICAgICAgICB3aWR0aDogMzIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnbGluZScsXG4gICAgICAgIG1vZGU6IFsnYWxsJywgJ2RlZmF1bHQnXSxcbiAgICAgICAgd2lkdGg6IDEsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAncGVyc29uYWxpemUnLFxuICAgICAgICBtb2RlOiBbJ2FsbCcsICdkZWZhdWx0J10sXG4gICAgICAgIHdpZHRoOiAzMixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdibG9ja3F1b3RlJyxcbiAgICAgICAgbW9kZTogWydhbGwnLCAnZGVmYXVsdCddLFxuICAgICAgICB3aWR0aDogMzIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnbGluaycsXG4gICAgICAgIG1vZGU6IFsnYWxsJywgJ2RlZmF1bHQnLCAnYmFzaWMnXSxcbiAgICAgICAgd2lkdGg6IDMyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ3VuTGluaycsXG4gICAgICAgIG1vZGU6IFsnYWxsJywgJ2RlZmF1bHQnLCAnYmFzaWMnXSxcbiAgICAgICAgd2lkdGg6IDMyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2ltYWdlJyxcbiAgICAgICAgbW9kZTogWydhbGwnLCAnZGVmYXVsdCddLFxuICAgICAgICB3aWR0aDogMzIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAndmlkZW8nLFxuICAgICAgICBtb2RlOiBbJ2FsbCddLFxuICAgICAgICB3aWR0aDogMzIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnZW1vamknLFxuICAgICAgICBjbGFzc0luY2x1ZGU6ICdtbC1bOHB4XScsXG4gICAgICAgIG1vZGU6IFsnYWxsJywgJ2RlZmF1bHQnXSxcbiAgICAgICAgd2lkdGg6IDI0LFxuICAgICAgfSxcbiAgICAgIHsgdHlwZTogJ3RhYmxlJywgd2lkdGg6IDMyLCBtb2RlOiBbJ2FsbCddIH0sXG4gICAgXSBhcyBBcnJheTxJUXVpbGxUb29sYmFyQ29uZmlnPlxuICApLmZpbHRlcigoaXRlbSkgPT4ge1xuICAgIGlmICghaXRlbS5tb2RlPy5pbmNsdWRlcyhtb2RlKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoaXRlbS50eXBlID09PSAnaW1hZ2UnKSB7XG4gICAgICByZXR1cm4gaGFzSWNvbkltYWdlO1xuICAgIH1cbiAgICBpZiAoaXRlbS50eXBlID09PSAncGVyc29uYWxpemUnKSB7XG4gICAgICByZXR1cm4gaGFzSWNvblBlcnNvbmFsaXplO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9KTtcbn07XG5leHBvcnQgY29uc3QgaWNvbkxpc3QgPSAoKTogQXJyYXk8eyBrZXk6IHN0cmluZzsgaWNvbjogc3RyaW5nIH0+ID0+IHtcbiAgcmV0dXJuIFtcbiAgICB7XG4gICAgICBrZXk6ICdib2xkJyxcbiAgICAgIGljb246ICdsaWJzLXVpLWljb24tZWRpdG9yLWJvbGQnLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnaXRhbGljJyxcbiAgICAgIGljb246ICdsaWJzLXVpLWljb24tZWRpdG9yLWl0YWxpYycsXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICd1bmRlcmxpbmUnLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi1lZGl0b3ItdW5kZXJsaW5lZCcsXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdpbWFnZScsXG4gICAgICBpY29uOiAnbGlicy11aS1pY29uLWltYWdlLXNvbGlkJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ2xpbmsnLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi1saW5rJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ3VuZG8nLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi11bmRvJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ3JlZG8nLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi1yZWRvJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ3N0cmlrZScsXG4gICAgICBpY29uOiAnbGlicy11aS1pY29uLWVkaXRvci1zdHJpa2UtdGhyb3VnaCcsXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdibG9ja3F1b3RlJyxcbiAgICAgIGljb246ICdsaWJzLXVpLWljb24tcXVvdGUnLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnb3JkZXJlZCcsXG4gICAgICBpY29uOiAnbGlicy11aS1pY29uLWxpc3QtbnVtYmVyZWQnLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnYnVsbGV0JyxcbiAgICAgIGljb246ICdsaWJzLXVpLWljb24tbGlzdC1idWxsZXRlZCcsXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdiYWNrZ3JvdW5kJyxcbiAgICAgIGljb246ICdsaWJzLXVpLWljb24tZWRpdG9yLWNvbG9yLWJhY2tncm91bmQnLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnY29sb3InLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi1lZGl0b3ItY29sb3ItdGV4dCcsXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdpbmRlbnQuLTEnLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi1pbmRlbnQtZGVjcmVhc2UnLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnaW5kZW50LisxJyxcbiAgICAgIGljb246ICdsaWJzLXVpLWljb24taW5kZW50LWluY3JlYXNlJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ2FsaWduLicsXG4gICAgICBpY29uOiAnYWxpZ24tcXVpbGwgbGlicy11aS1pY29uLWFsaWduLWxlZnQnLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnYWxpZ24uY2VudGVyJyxcbiAgICAgIGljb246ICdhbGlnbi1xdWlsbCBsaWJzLXVpLWljb24tYWxpZ24tY2VudGVyJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ2FsaWduLnJpZ2h0JyxcbiAgICAgIGljb246ICdhbGlnbi1xdWlsbCBsaWJzLXVpLWljb24tYWxpZ24tcmlnaHQnLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnYWxpZ24uanVzdGlmeScsXG4gICAgICBpY29uOiAnYWxpZ24tcXVpbGwgbGlicy11aS1pY29uLWFsaWduLWp1c3RpZnknLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAndW5MaW5rJyxcbiAgICAgIGljb246ICdsaWJzLXVpLWljb24tbGluay1icm9rZW4nLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnZW1vamknLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi1mYWNlLXNtaWxlJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ3RhYmxlJyxcbiAgICAgIGljb246ICdsaWJzLXVpLWljb24tdGFibGUnLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnY2hlY2snLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi10YXNrLWxpc3QnLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAndmlkZW8nLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi12aWRlby1vdXRsaW5lJyxcbiAgICB9LFxuICBdO1xufTtcblxuZXhwb3J0IGNvbnN0IHVwbG9hZEltYWdlQ29uZmlnRGVmYXVsdCA9ICgpOiBJUXVpbGxVcGxvYWRJbWFnZUNvbmZpZyA9PiB7XG4gIHJldHVybiB7XG4gICAgbW9kZUN1c3RvbTogZmFsc2UsXG4gICAgekluZGV4OiAxMjAyLFxuICAgIHNob3dJY29uOiB0cnVlLFxuICAgIG1heEltYWdlU2l6ZTogNSAqIDEwMjQgKiAxMDI0LFxuICAgIG9ubHlBY2NlcHRJbWFnZUh0dHBzTGluazogZmFsc2UsXG4gICAgZnVuY3Rpb25VcGxvYWRJbWFnZTogYXN5bmMgKGZpbGVzOiBBcnJheTxGaWxlPikgPT4ge1xuICAgICAgY29uc3QgZGF0YSA9IFtdO1xuICAgICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgICAgIGRhdGEucHVzaChhd2FpdCBjb252ZXJ0RmlsZVRvQmFzZTY0X09iamVjdFVybChmaWxlKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9LFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGxpbmtEZWZhdWx0ID0gKCk6IElRdWlsbExpbmsgPT4ge1xuICByZXR1cm4ge1xuICAgIHRpdGxlOiAnJyxcbiAgICB1cmw6ICcnLFxuICAgIHJhbmdlOiB7XG4gICAgICBpbmRleDogMCxcbiAgICAgIGxlbmd0aDogMCxcbiAgICB9LFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGZvbnRTaXplV2hpdGVMaXN0ID0gKCkgPT4gW1xuICAnOHB4JyxcbiAgJzlweCcsXG4gICcxMHB4JyxcbiAgJzExcHgnLFxuICAnMTJweCcsXG4gICcxM3B4JyxcbiAgJzE0cHgnLFxuICAnMTVweCcsXG4gICcxNnB4JyxcbiAgJzE3cHgnLFxuICAnMThweCcsXG4gICcxOXB4JyxcbiAgJzIwcHgnLFxuICAnMjFweCcsXG4gICcyMnB4JyxcbiAgJzIzcHgnLFxuICAnMjRweCcsXG4gICcyNXB4JyxcbiAgJzI2cHgnLFxuICAnMjdweCcsXG4gICcyOHB4JyxcbiAgJzI5cHgnLFxuICAnMzBweCcsXG4gICczMXB4JyxcbiAgJzMycHgnLFxuICAnMzNweCcsXG4gICczNHB4JyxcbiAgJzM1cHgnLFxuICAnMzZweCcsXG4gICczN3B4JyxcbiAgJzM4cHgnLFxuICAnMzlweCcsXG4gICc0MHB4JyxcbiAgJzQxcHgnLFxuICAnNDJweCcsXG4gICc0M3B4JyxcbiAgJzQ0cHgnLFxuICAnNDVweCcsXG4gICc0NnB4JyxcbiAgJzQ3cHgnLFxuICAnNDhweCcsXG4gICc0OXB4JyxcbiAgJzUwcHgnLFxuICAnNTFweCcsXG4gICc1MnB4JyxcbiAgJzUzcHgnLFxuICAnNTRweCcsXG4gICc1NXB4JyxcbiAgJzU2cHgnLFxuICAnNTdweCcsXG4gICc1OHB4JyxcbiAgJzU5cHgnLFxuICAnNjBweCcsXG4gICc2MXB4JyxcbiAgJzYycHgnLFxuICAnNjNweCcsXG4gICc2NHB4JyxcbiAgJzY1cHgnLFxuICAnNjZweCcsXG4gICc2N3B4JyxcbiAgJzY4cHgnLFxuICAnNjlweCcsXG4gICc3MHB4JyxcbiAgJzcxcHgnLFxuICAnNzJweCcsXG5dO1xuIl19
482
+ export const getHTMLFromDeltaOfQuill = (delta, options) => {
483
+ if (!quill) {
484
+ quill = new Quill(document.createElement('div'));
485
+ }
486
+ const { replaceNewLineTo = '<br>', replaceTagBRTo, replaceTags, replaceBrToDiv } = options || {};
487
+ if (options?.functionReplaceDelta) {
488
+ options.functionReplaceDelta(delta);
489
+ }
490
+ delta.ops.forEach((op) => {
491
+ if (op.insert) {
492
+ if (typeof op.insert === 'string') {
493
+ if (replaceNewLineTo) {
494
+ op.insert = op.insert.replace(/\n/g, replaceNewLineTo);
495
+ }
496
+ if (replaceTagBRTo) {
497
+ op.insert = op.insert.replace(/<br>/g, replaceTagBRTo);
498
+ }
499
+ if (replaceTags?.length) {
500
+ for (const tag of replaceTags) {
501
+ op.insert = op.insert.replace(new RegExp(`<${tag.tag}>`, 'g'), `<${tag.replaceTo}>`);
502
+ op.insert = op.insert.replace(new RegExp(`</${tag.tag}>`, 'g'), `</${tag.replaceTo}>`);
503
+ }
504
+ }
505
+ }
506
+ }
507
+ });
508
+ quill.setContents(delta);
509
+ let htmlText = options?.getRootHtml ? quill.root.innerHTML : quill.root.firstElementChild?.innerHTML;
510
+ if (replaceBrToDiv) {
511
+ htmlText = convertHtmlToDivBlocks(htmlText || '');
512
+ }
513
+ clearTimeout(timeout);
514
+ timeout = setTimeout(() => {
515
+ quill = null;
516
+ }, 10000);
517
+ return decodeEscapeHtml(htmlText || '');
518
+ };
519
+ export const convertHtmlToDivBlocks = (html) => {
520
+ const BREAK_TOKEN = '<<<BREAK>>>';
521
+ // Bước 1: thay <br> thành token tạm
522
+ const normalizedHtml = html.replace(/<br\s*\/?>/gi, BREAK_TOKEN);
523
+ // Bước 2: tách theo token
524
+ const parts = normalizedHtml.split(BREAK_TOKEN);
525
+ const parser = new DOMParser();
526
+ const divs = [];
527
+ for (const raw of parts) {
528
+ const trimmed = raw.trim();
529
+ if (!trimmed)
530
+ continue;
531
+ // parse mỗi phần nhỏ như một document riêng
532
+ const doc = parser.parseFromString(trimmed, 'text/html');
533
+ const body = doc.body;
534
+ // Lấy lại nội dung bên trong body
535
+ divs.push(`<div>${body.innerHTML}</div>`);
536
+ }
537
+ return divs.join('');
538
+ };
539
+ export const getDeltaOfQuillFromHTML = async (html) => {
540
+ if (!quill) {
541
+ quill = new Quill(document.createElement('div'));
542
+ }
543
+ quill.root.innerHTML = html;
544
+ await lastValueFrom(timer(1000));
545
+ clearTimeout(timeout2);
546
+ timeout2 = setTimeout(() => {
547
+ quill = null;
548
+ }, 10000);
549
+ return quill.getContents();
550
+ };
551
+ export const processPasteData = async (e, config) => {
552
+ const element = config.element;
553
+ const files = e.clipboardData?.files;
554
+ if (files?.length) {
555
+ e.preventDefault();
556
+ config.handlerPasteFile?.(files);
557
+ config.callBack?.('file');
558
+ return;
559
+ }
560
+ // Lưu selection TRƯỚC khi prevent default
561
+ const selection = window.getSelection();
562
+ let savedRange = null;
563
+ if (selection && selection.rangeCount > 0) {
564
+ const range = selection.getRangeAt(0);
565
+ // Chỉ lưu nếu range nằm trong contentText element
566
+ const container = range.commonAncestorContainer;
567
+ const isInContentElement = element.contains(container.nodeType === Node.TEXT_NODE ? container.parentNode : container);
568
+ if (isInContentElement) {
569
+ savedRange = range.cloneRange();
570
+ }
571
+ }
572
+ // Prevent default để tự xử lý paste
573
+ e.preventDefault();
574
+ // Sử dụng Quill để clean HTML content
575
+ const htmlContent = e.clipboardData?.getData('text/html') || '';
576
+ const plainText = e.clipboardData?.getData('text/plain') || '';
577
+ let contentToInsert = (plainText || '').replace(/\n/g, '<br>');
578
+ if (htmlContent) {
579
+ const delta = await getDeltaOfQuillFromHTML(htmlContent);
580
+ contentToInsert = getHTMLFromDeltaOfQuill(delta);
581
+ }
582
+ if (!contentToInsert) {
583
+ config.callBack?.('no-content');
584
+ return;
585
+ }
586
+ if (savedRange) {
587
+ insertContentWithRange(contentToInsert, savedRange, element);
588
+ config.callBack?.('range');
589
+ return;
590
+ }
591
+ element.innerHTML += contentToInsert;
592
+ config.callBack?.('content');
593
+ };
594
+ export const insertContentWithRange = (content, savedRange, element) => {
595
+ const selection = window.getSelection();
596
+ if (!selection) {
597
+ // Fallback: append vào cuối
598
+ element.innerHTML += content;
599
+ return;
600
+ }
601
+ // Restore selection
602
+ selection.removeAllRanges();
603
+ selection.addRange(savedRange);
604
+ // Xóa nội dung đã select (nếu có)
605
+ savedRange.deleteContents();
606
+ // Tạo document fragment từ HTML content
607
+ const tempDiv = document.createElement('div');
608
+ tempDiv.innerHTML = content;
609
+ const fragment = document.createDocumentFragment();
610
+ while (tempDiv.firstChild) {
611
+ fragment.appendChild(tempDiv.firstChild);
612
+ }
613
+ // Insert fragment tại vị trí range
614
+ savedRange.insertNode(fragment);
615
+ // Di chuyển cursor đến cuối nội dung vừa insert
616
+ if (fragment.lastChild) {
617
+ savedRange.setStartAfter(fragment.lastChild);
618
+ }
619
+ savedRange.collapse(true);
620
+ selection.removeAllRanges();
621
+ selection.addRange(savedRange);
622
+ };
623
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVpbGwuZGVmaW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL2lucHV0cy9xdWlsbC9zcmMvdXRpbHMvcXVpbGwuZGVmaW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkMsT0FBTyxFQUFzQixnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pGLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUUxQixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDNUQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXZELElBQUksS0FBSyxHQUFpQixJQUFJLENBQUM7QUFDL0IsSUFBSSxPQUFPLEdBQXVCLFNBQVMsQ0FBQztBQUM1QyxJQUFJLFFBQVEsR0FBdUIsU0FBUyxDQUFDO0FBRTdDLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxHQUFHLEVBQUU7SUFDaEMsT0FBTztRQUNMLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsOEZBQThGLEVBQUU7UUFDakgsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSwrRkFBK0YsRUFBRTtRQUN2SCxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLGdHQUFnRyxFQUFFO1FBQ3pILEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsaUdBQWlHLEVBQUU7S0FDNUgsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxHQUFHLEVBQUU7SUFDM0IsT0FBTztRQUNMLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxLQUFL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QUM7UUFDMUIsUUFBUSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUNELG1DQUFtQztJQUNuQyxVQUFVLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2hDLGdEQUFnRDtJQUNoRCxJQUFJLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUN2QixVQUFVLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBQ0QsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQixTQUFTLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDNUIsU0FBUyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNqQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElMaXN0Q29uZmlnSXRlbSB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtbGlzdCc7XG5pbXBvcnQgeyBJSHR0cFJlcXVlc3RDb25maWcsIHJldHVybkxpc3RPYmplY3QgfSBmcm9tICdAbGlicy11aS9zZXJ2aWNlcy1odHRwLXJlcXVlc3QnO1xuaW1wb3J0IHsgY29udmVydEZpbGVUb0Jhc2U2NF9PYmplY3RVcmwsIGRlY29kZUVzY2FwZUh0bWwgfSBmcm9tICdAbGlicy11aS91dGlscyc7XG5pbXBvcnQgUXVpbGwgZnJvbSAncXVpbGwnO1xuaW1wb3J0IERlbHRhIGZyb20gJ3F1aWxsLWRlbHRhJztcbmltcG9ydCB7IGxhc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzL2ludGVybmFsL2xhc3RWYWx1ZUZyb20nO1xuaW1wb3J0IHsgdGltZXIgfSBmcm9tICdyeGpzL2ludGVybmFsL29ic2VydmFibGUvdGltZXInO1xuaW1wb3J0IHsgSVF1aWxsTGluaywgSVF1aWxsVG9vbGJhckNvbmZpZywgSVF1aWxsVXBsb2FkSW1hZ2VDb25maWcsIFRZUEVfTU9ERV9CQVJfQ09ORklHX09QVElPTiB9IGZyb20gJy4uL2ludGVyZmFjZXMvcXVpbGwuaW50ZXJmYWNlJztcbmxldCBxdWlsbDogUXVpbGwgfCBudWxsID0gbnVsbDtcbmxldCB0aW1lb3V0OiBudW1iZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5sZXQgdGltZW91dDI6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuZXhwb3J0IGNvbnN0IGxpc3REYXRhQWxpZ24gPSAoKSA9PiB7XG4gIHJldHVybiBbXG4gICAgeyBrZXk6ICcnLCBpY29uOiAnbGlicy11aS1pY29uLWFsaWduLWxlZnQgdGV4dC1bIzZhNzM4M10gdGV4dC1bMTZweF0gaG92ZXI6dGV4dC1bdmFyKC0tbGlicy11aS1jb2xvci1saWdodC0xKV0nIH0sXG4gICAgeyBrZXk6ICdyaWdodCcsIGljb246ICdsaWJzLXVpLWljb24tYWxpZ24tcmlnaHQgdGV4dC1bIzZhNzM4M10gdGV4dC1bMTZweF0gaG92ZXI6dGV4dC1bdmFyKC0tbGlicy11aS1jb2xvci1saWdodC0xKV0nIH0sXG4gICAgeyBrZXk6ICdjZW50ZXInLCBpY29uOiAnbGlicy11aS1pY29uLWFsaWduLWNlbnRlciB0ZXh0LVsjNmE3MzgzXSB0ZXh0LVsxNnB4XSBob3Zlcjp0ZXh0LVt2YXIoLS1saWJzLXVpLWNvbG9yLWxpZ2h0LTEpXScgfSxcbiAgICB7IGtleTogJ2p1c3RpZnknLCBpY29uOiAnbGlicy11aS1pY29uLWFsaWduLWp1c3RpZnkgdGV4dC1bIzZhNzM4M10gdGV4dC1bMTZweF0gaG92ZXI6dGV4dC1bdmFyKC0tbGlicy11aS1jb2xvci1saWdodC0xKV0nIH0sXG4gIF07XG59O1xuXG5leHBvcnQgY29uc3QgbGlzdEZvbnQgPSAoKSA9PiB7XG4gIHJldHVybiBbXG4gICAgeyBrZXk6ICcnLCBsYWJlbDogJ1NhbnMgU2VyaWYnIH0sXG4gICAgeyBrZXk6ICdzZXJpZicsIGxhYmVsOiAnU2VyaWYnIH0sXG4gICAgeyBrZXk6ICdtb25vc3BhY2UnLCBsYWJlbDogJ01vbm9zcGFjZScgfSxcbiAgXTtcbn07XG5cbmV4cG9ydCBjb25zdCBsaXN0SGVhZGVyID0gKCkgPT4ge1xuICByZXR1cm4gW1xuICAgIHsga2V5OiAnJywgbGFiZWw6ICdOb3JtYWwnIH0sXG4gICAgeyBrZXk6ICcxJywgbGFiZWw6ICdIZWFkaW5nIDEnIH0sXG4gICAgeyBrZXk6ICcyJywgbGFiZWw6ICdIZWFkaW5nIDInIH0sXG4gICAgeyBrZXk6ICczJywgbGFiZWw6ICdIZWFkaW5nIDMnIH0sXG4gICAgeyBrZXk6ICc0JywgbGFiZWw6ICdIZWFkaW5nIDQnIH0sXG4gICAgeyBrZXk6ICc1JywgbGFiZWw6ICdIZWFkaW5nIDUnIH0sXG4gICAgeyBrZXk6ICc2JywgbGFiZWw6ICdIZWFkaW5nIDYnIH0sXG4gIF07XG59O1xuXG5leHBvcnQgY29uc3QgbGlzdENvbmZpZ0FsaWduID0gKCk6IElMaXN0Q29uZmlnSXRlbSA9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogJ3RleHQnLFxuICAgIGF1dG9TZWxlY3RGaXJzdEl0ZW06IHRydWUsXG4gICAgaHR0cFJlcXVlc3REYXRhOiBzaWduYWw8SUh0dHBSZXF1ZXN0Q29uZmlnPih7XG4gICAgICBvYmplY3RJbnN0YW5jZTogcmV0dXJuTGlzdE9iamVjdChsaXN0RGF0YUFsaWduKCkpLFxuICAgICAgZnVuY3Rpb25OYW1lOiAnbGlzdCcsXG4gICAgICBhcmd1bWVudHNWYWx1ZTogW10sXG4gICAgfSksXG4gICAgY29uZmlnVGVtcGxhdGVUZXh0OiBzaWduYWwoe1xuICAgICAgZmllbGRLZXk6ICdrZXknLFxuICAgICAgZ2V0Q2xhc3NJdGVtOiAoKSA9PiAnIXB4LVs4cHhdICFweS1bNHB4XScsXG4gICAgICBnZXRWYWx1ZTogKGl0ZW0pID0+IGA8aSBjbGFzcz0nZmxleCAke2l0ZW0uaWNvbn0nPjwvaT5gLFxuICAgICAgaWdub3JlSWNvblNlbGVjdGVkOiB0cnVlLFxuICAgIH0pLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGxpc3RDb25maWdGb250ID0gKCk6IElMaXN0Q29uZmlnSXRlbSA9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogJ3RleHQnLFxuICAgIGF1dG9TZWxlY3RGaXJzdEl0ZW06IHRydWUsXG4gICAgaHR0cFJlcXVlc3REYXRhOiBzaWduYWw8SUh0dHBSZXF1ZXN0Q29uZmlnPih7XG4gICAgICBvYmplY3RJbnN0YW5jZTogcmV0dXJuTGlzdE9iamVjdChsaXN0Rm9udCgpKSxcbiAgICAgIGZ1bmN0aW9uTmFtZTogJ2xpc3QnLFxuICAgICAgYXJndW1lbnRzVmFsdWU6IFtdLFxuICAgIH0pLFxuICAgIGNvbmZpZ1RlbXBsYXRlVGV4dDogc2lnbmFsKHtcbiAgICAgIGZpZWxkS2V5OiAna2V5JyxcbiAgICAgIGdldFZhbHVlOiAoaXRlbSkgPT4gaXRlbS5sYWJlbCxcbiAgICAgIGlnbm9yZUljb25TZWxlY3RlZDogdHJ1ZSxcbiAgICB9KSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBsaXN0Q29uZmlnSGVhZGVyID0gKCk6IElMaXN0Q29uZmlnSXRlbSA9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogJ3RleHQnLFxuICAgIGF1dG9TZWxlY3RGaXJzdEl0ZW06IHRydWUsXG4gICAgaHR0cFJlcXVlc3REYXRhOiBzaWduYWw8SUh0dHBSZXF1ZXN0Q29uZmlnPih7XG4gICAgICBvYmplY3RJbnN0YW5jZTogcmV0dXJuTGlzdE9iamVjdChsaXN0SGVhZGVyKCkpLFxuICAgICAgZnVuY3Rpb25OYW1lOiAnbGlzdCcsXG4gICAgICBhcmd1bWVudHNWYWx1ZTogW10sXG4gICAgfSksXG4gICAgY29uZmlnVGVtcGxhdGVUZXh0OiBzaWduYWwoe1xuICAgICAgZmllbGRLZXk6ICdrZXknLFxuICAgICAgZ2V0VmFsdWU6IChpdGVtKSA9PiB7XG4gICAgICAgIHN3aXRjaCAoaXRlbT8ua2V5KSB7XG4gICAgICAgICAgY2FzZSAnJzpcbiAgICAgICAgICAgIHJldHVybiBgPHNwYW4gY2xhc3M9XCJsaWJzLXVpLWZvbnQtaDVyXCI+JHtpdGVtPy5sYWJlbH08L3NwYW4+YDtcbiAgICAgICAgICBjYXNlICcxJzpcbiAgICAgICAgICAgIHJldHVybiBgPHNwYW4gY2xhc3M9XCJsaWJzLXVpLWZvbnQtaDFyXCI+JHtpdGVtPy5sYWJlbH08L3NwYW4+YDtcbiAgICAgICAgICBjYXNlICcyJzpcbiAgICAgICAgICAgIHJldHVybiBgPHNwYW4gY2xhc3M9XCJsaWJzLXVpLWZvbnQtaDJyXCI+JHtpdGVtPy5sYWJlbH08L3NwYW4+YDtcbiAgICAgICAgICBjYXNlICczJzpcbiAgICAgICAgICAgIHJldHVybiBgPHNwYW4gY2xhc3M9XCJsaWJzLXVpLWZvbnQtaDNyXCI+JHtpdGVtPy5sYWJlbH08L3NwYW4+YDtcbiAgICAgICAgICBjYXNlICc0JzpcbiAgICAgICAgICAgIHJldHVybiBgPHNwYW4gY2xhc3M9XCJsaWJzLXVpLWZvbnQtaDRyXCI+JHtpdGVtPy5sYWJlbH08L3NwYW4+YDtcbiAgICAgICAgICBjYXNlICc1JzpcbiAgICAgICAgICAgIHJldHVybiBgPHNwYW4gY2xhc3M9XCJsaWJzLXVpLWZvbnQtaDVyXCI+JHtpdGVtPy5sYWJlbH08L3NwYW4+YDtcbiAgICAgICAgICBjYXNlICc2JzpcbiAgICAgICAgICAgIHJldHVybiBgPHNwYW4gY2xhc3M9XCJsaWJzLXVpLWZvbnQtaDZyXCI+JHtpdGVtPy5sYWJlbH08L3NwYW4+YDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXRlbT8ubGFiZWw7XG4gICAgICB9LFxuICAgICAgaWdub3JlSWNvblNlbGVjdGVkOiB0cnVlLFxuICAgIH0pLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHRvb2xCYXJPcHRpb25zID0gKG1vZGU6IFRZUEVfTU9ERV9CQVJfQ09ORklHX09QVElPTiwgaGFzSWNvbkltYWdlOiBib29sZWFuLCBoYXNJY29uUGVyc29uYWxpemU6IGJvb2xlYW4pOiBBcnJheTxJUXVpbGxUb29sYmFyQ29uZmlnPiA9PiB7XG4gIHJldHVybiAoXG4gICAgW1xuICAgICAge1xuICAgICAgICB0eXBlOiAndW5kbycsXG4gICAgICAgIGNsYXNzSW5jbHVkZTogJ21yLVs4cHhdJyxcbiAgICAgICAgbW9kZTogWydhbGwnLCAnZGVmYXVsdCcsICdiYXNpYyddLFxuICAgICAgICB3aWR0aDogMjQsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAncmVkbycsXG4gICAgICAgIG1vZGU6IFsnYWxsJywgJ2RlZmF1bHQnLCAnYmFzaWMnXSxcbiAgICAgICAgd2lkdGg6IDMyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2xpbmUnLFxuICAgICAgICBtb2RlOiBbJ2FsbCcsICdkZWZhdWx0JywgJ2Jhc2ljJ10sXG4gICAgICAgIHdpZHRoOiAxLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2hlYWRlcicsXG4gICAgICAgIGNsYXNzSW5jbHVkZTogJ21sLVs4cHhdJyxcbiAgICAgICAgbW9kZTogWydhbGwnXSxcbiAgICAgICAgd2lkdGg6IDE0NixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdmb250RmFtaWx5JyxcbiAgICAgICAgY2xhc3NJbmNsdWRlOiAnbWwtWzhweF0nLFxuICAgICAgICBtb2RlOiBbJ2FsbCcsICdkZWZhdWx0J10sXG4gICAgICAgIHdpZHRoOiAxMzYsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnZm9udFNpemUnLFxuICAgICAgICBjbGFzc0luY2x1ZGU6ICdtbC1bOHB4XSBtci1bOHB4XScsXG4gICAgICAgIG1vZGU6IFsnYWxsJywgJ2RlZmF1bHQnXSxcbiAgICAgICAgd2lkdGg6IDgyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2xpbmUnLFxuICAgICAgICBtb2RlOiBbJ2FsbCcsICdkZWZhdWx0J10sXG4gICAgICAgIHdpZHRoOiAxLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2NvbG9yJyxcbiAgICAgICAgbW9kZTogWydhbGwnLCAnZGVmYXVsdCcsICdiYXNpYyddLFxuICAgICAgICB3aWR0aDogMzIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnYmFja2dyb3VuZCcsXG4gICAgICAgIG1vZGU6IFsnYWxsJywgJ2RlZmF1bHQnXSxcbiAgICAgICAgd2lkdGg6IDMyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2xpbmUnLFxuICAgICAgICBtb2RlOiBbJ2FsbCcsICdkZWZhdWx0JywgJ2Jhc2ljJ10sXG4gICAgICAgIHdpZHRoOiAxLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2JvbGQnLFxuICAgICAgICBtb2RlOiBbJ2FsbCcsICdkZWZhdWx0JywgJ2Jhc2ljJ10sXG4gICAgICAgIHdpZHRoOiAzMixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdpdGFsaWMnLFxuICAgICAgICBtb2RlOiBbJ2FsbCcsICdkZWZhdWx0JywgJ2Jhc2ljJ10sXG4gICAgICAgIHdpZHRoOiAzMixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICd1bmRlcmxpbmUnLFxuICAgICAgICBtb2RlOiBbJ2FsbCcsICdkZWZhdWx0JywgJ2Jhc2ljJ10sXG4gICAgICAgIHdpZHRoOiAzMixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdzdHJpa2VUaHJvdWdoJyxcbiAgICAgICAgbW9kZTogWydhbGwnLCAnZGVmYXVsdCddLFxuICAgICAgICB3aWR0aDogMzIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnbGluZScsXG4gICAgICAgIG1vZGU6IFsnYWxsJywgJ2RlZmF1bHQnLCAnYmFzaWMnXSxcbiAgICAgICAgd2lkdGg6IDEsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnc2NyaXB0LnN1YicsXG4gICAgICAgIG1vZGU6IFsnYWxsJ10sXG4gICAgICAgIHdpZHRoOiAzMixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdzY3JpcHQuc3VwZXInLFxuICAgICAgICBtb2RlOiBbJ2FsbCddLFxuICAgICAgICB3aWR0aDogMzIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnbGluZScsXG4gICAgICAgIG1vZGU6IFsnYWxsJ10sXG4gICAgICAgIHdpZHRoOiAxLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2FkanVzdCcsXG4gICAgICAgIG1vZGU6IFsnYWxsJywgJ2RlZmF1bHQnXSxcbiAgICAgICAgd2lkdGg6IDUyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2xpbmUnLFxuICAgICAgICBtb2RlOiBbJ2FsbCcsICdkZWZhdWx0J10sXG4gICAgICAgIHdpZHRoOiAzMixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdpbmRlbnRJbmNyZWFzZScsXG4gICAgICAgIG1vZGU6IFsnYWxsJywgJ2RlZmF1bHQnXSxcbiAgICAgICAgd2lkdGg6IDMyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2luZGVudERlY3JlYXNlJyxcbiAgICAgICAgbW9kZTogWydhbGwnLCAnZGVmYXVsdCddLFxuICAgICAgICB3aWR0aDogMzIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnbGlzdEJ1bGxldGVkJyxcbiAgICAgICAgbW9kZTogWydhbGwnLCAnZGVmYXVsdCddLFxuICAgICAgICB3aWR0aDogMzIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnbGlzdE51bWJlcmVkJyxcbiAgICAgICAgbW9kZTogWydhbGwnLCAnZGVmYXVsdCddLFxuICAgICAgICB3aWR0aDogMzIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnbGlzdENoZWNrZWQnLFxuICAgICAgICBtb2RlOiBbJ2FsbCddLFxuICAgICAgICB3aWR0aDogMzIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnbGluZScsXG4gICAgICAgIG1vZGU6IFsnYWxsJywgJ2RlZmF1bHQnXSxcbiAgICAgICAgd2lkdGg6IDEsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAncGVyc29uYWxpemUnLFxuICAgICAgICBtb2RlOiBbJ2FsbCcsICdkZWZhdWx0J10sXG4gICAgICAgIHdpZHRoOiAzMixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdibG9ja3F1b3RlJyxcbiAgICAgICAgbW9kZTogWydhbGwnLCAnZGVmYXVsdCddLFxuICAgICAgICB3aWR0aDogMzIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnbGluaycsXG4gICAgICAgIG1vZGU6IFsnYWxsJywgJ2RlZmF1bHQnLCAnYmFzaWMnXSxcbiAgICAgICAgd2lkdGg6IDMyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ3VuTGluaycsXG4gICAgICAgIG1vZGU6IFsnYWxsJywgJ2RlZmF1bHQnLCAnYmFzaWMnXSxcbiAgICAgICAgd2lkdGg6IDMyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2ltYWdlJyxcbiAgICAgICAgbW9kZTogWydhbGwnLCAnZGVmYXVsdCddLFxuICAgICAgICB3aWR0aDogMzIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAndmlkZW8nLFxuICAgICAgICBtb2RlOiBbJ2FsbCddLFxuICAgICAgICB3aWR0aDogMzIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnZW1vamknLFxuICAgICAgICBjbGFzc0luY2x1ZGU6ICdtbC1bOHB4XScsXG4gICAgICAgIG1vZGU6IFsnYWxsJywgJ2RlZmF1bHQnXSxcbiAgICAgICAgd2lkdGg6IDI0LFxuICAgICAgfSxcbiAgICAgIHsgdHlwZTogJ3RhYmxlJywgd2lkdGg6IDMyLCBtb2RlOiBbJ2FsbCddIH0sXG4gICAgXSBhcyBBcnJheTxJUXVpbGxUb29sYmFyQ29uZmlnPlxuICApLmZpbHRlcigoaXRlbSkgPT4ge1xuICAgIGlmICghaXRlbS5tb2RlPy5pbmNsdWRlcyhtb2RlKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoaXRlbS50eXBlID09PSAnaW1hZ2UnKSB7XG4gICAgICByZXR1cm4gaGFzSWNvbkltYWdlO1xuICAgIH1cbiAgICBpZiAoaXRlbS50eXBlID09PSAncGVyc29uYWxpemUnKSB7XG4gICAgICByZXR1cm4gaGFzSWNvblBlcnNvbmFsaXplO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9KTtcbn07XG5leHBvcnQgY29uc3QgaWNvbkxpc3QgPSAoKTogQXJyYXk8eyBrZXk6IHN0cmluZzsgaWNvbjogc3RyaW5nIH0+ID0+IHtcbiAgcmV0dXJuIFtcbiAgICB7XG4gICAgICBrZXk6ICdib2xkJyxcbiAgICAgIGljb246ICdsaWJzLXVpLWljb24tZWRpdG9yLWJvbGQnLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnaXRhbGljJyxcbiAgICAgIGljb246ICdsaWJzLXVpLWljb24tZWRpdG9yLWl0YWxpYycsXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICd1bmRlcmxpbmUnLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi1lZGl0b3ItdW5kZXJsaW5lZCcsXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdpbWFnZScsXG4gICAgICBpY29uOiAnbGlicy11aS1pY29uLWltYWdlLXNvbGlkJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ2xpbmsnLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi1saW5rJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ3VuZG8nLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi11bmRvJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ3JlZG8nLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi1yZWRvJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ3N0cmlrZScsXG4gICAgICBpY29uOiAnbGlicy11aS1pY29uLWVkaXRvci1zdHJpa2UtdGhyb3VnaCcsXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdibG9ja3F1b3RlJyxcbiAgICAgIGljb246ICdsaWJzLXVpLWljb24tcXVvdGUnLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnb3JkZXJlZCcsXG4gICAgICBpY29uOiAnbGlicy11aS1pY29uLWxpc3QtbnVtYmVyZWQnLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnYnVsbGV0JyxcbiAgICAgIGljb246ICdsaWJzLXVpLWljb24tbGlzdC1idWxsZXRlZCcsXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdiYWNrZ3JvdW5kJyxcbiAgICAgIGljb246ICdsaWJzLXVpLWljb24tZWRpdG9yLWNvbG9yLWJhY2tncm91bmQnLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnY29sb3InLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi1lZGl0b3ItY29sb3ItdGV4dCcsXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdpbmRlbnQuLTEnLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi1pbmRlbnQtZGVjcmVhc2UnLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnaW5kZW50LisxJyxcbiAgICAgIGljb246ICdsaWJzLXVpLWljb24taW5kZW50LWluY3JlYXNlJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ2FsaWduLicsXG4gICAgICBpY29uOiAnYWxpZ24tcXVpbGwgbGlicy11aS1pY29uLWFsaWduLWxlZnQnLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnYWxpZ24uY2VudGVyJyxcbiAgICAgIGljb246ICdhbGlnbi1xdWlsbCBsaWJzLXVpLWljb24tYWxpZ24tY2VudGVyJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ2FsaWduLnJpZ2h0JyxcbiAgICAgIGljb246ICdhbGlnbi1xdWlsbCBsaWJzLXVpLWljb24tYWxpZ24tcmlnaHQnLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnYWxpZ24uanVzdGlmeScsXG4gICAgICBpY29uOiAnYWxpZ24tcXVpbGwgbGlicy11aS1pY29uLWFsaWduLWp1c3RpZnknLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAndW5MaW5rJyxcbiAgICAgIGljb246ICdsaWJzLXVpLWljb24tbGluay1icm9rZW4nLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnZW1vamknLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi1mYWNlLXNtaWxlJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ3RhYmxlJyxcbiAgICAgIGljb246ICdsaWJzLXVpLWljb24tdGFibGUnLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnY2hlY2snLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi10YXNrLWxpc3QnLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAndmlkZW8nLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi12aWRlby1vdXRsaW5lJyxcbiAgICB9LFxuICBdO1xufTtcblxuZXhwb3J0IGNvbnN0IHVwbG9hZEltYWdlQ29uZmlnRGVmYXVsdCA9ICgpOiBJUXVpbGxVcGxvYWRJbWFnZUNvbmZpZyA9PiB7XG4gIHJldHVybiB7XG4gICAgbW9kZUN1c3RvbTogZmFsc2UsXG4gICAgekluZGV4OiAxMjAyLFxuICAgIHNob3dJY29uOiB0cnVlLFxuICAgIG1heEltYWdlU2l6ZTogNSAqIDEwMjQgKiAxMDI0LFxuICAgIG9ubHlBY2NlcHRJbWFnZUh0dHBzTGluazogZmFsc2UsXG4gICAgZnVuY3Rpb25VcGxvYWRJbWFnZTogYXN5bmMgKGZpbGVzOiBBcnJheTxGaWxlPikgPT4ge1xuICAgICAgY29uc3QgZGF0YSA9IFtdO1xuICAgICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgICAgIGRhdGEucHVzaChhd2FpdCBjb252ZXJ0RmlsZVRvQmFzZTY0X09iamVjdFVybChmaWxlKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9LFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGxpbmtEZWZhdWx0ID0gKCk6IElRdWlsbExpbmsgPT4ge1xuICByZXR1cm4ge1xuICAgIHRpdGxlOiAnJyxcbiAgICB1cmw6ICcnLFxuICAgIHJhbmdlOiB7XG4gICAgICBpbmRleDogMCxcbiAgICAgIGxlbmd0aDogMCxcbiAgICB9LFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGZvbnRTaXplV2hpdGVMaXN0ID0gKCkgPT4gW1xuICAnOHB4JyxcbiAgJzlweCcsXG4gICcxMHB4JyxcbiAgJzExcHgnLFxuICAnMTJweCcsXG4gICcxM3B4JyxcbiAgJzE0cHgnLFxuICAnMTVweCcsXG4gICcxNnB4JyxcbiAgJzE3cHgnLFxuICAnMThweCcsXG4gICcxOXB4JyxcbiAgJzIwcHgnLFxuICAnMjFweCcsXG4gICcyMnB4JyxcbiAgJzIzcHgnLFxuICAnMjRweCcsXG4gICcyNXB4JyxcbiAgJzI2cHgnLFxuICAnMjdweCcsXG4gICcyOHB4JyxcbiAgJzI5cHgnLFxuICAnMzBweCcsXG4gICczMXB4JyxcbiAgJzMycHgnLFxuICAnMzNweCcsXG4gICczNHB4JyxcbiAgJzM1cHgnLFxuICAnMzZweCcsXG4gICczN3B4JyxcbiAgJzM4cHgnLFxuICAnMzlweCcsXG4gICc0MHB4JyxcbiAgJzQxcHgnLFxuICAnNDJweCcsXG4gICc0M3B4JyxcbiAgJzQ0cHgnLFxuICAnNDVweCcsXG4gICc0NnB4JyxcbiAgJzQ3cHgnLFxuICAnNDhweCcsXG4gICc0OXB4JyxcbiAgJzUwcHgnLFxuICAnNTFweCcsXG4gICc1MnB4JyxcbiAgJzUzcHgnLFxuICAnNTRweCcsXG4gICc1NXB4JyxcbiAgJzU2cHgnLFxuICAnNTdweCcsXG4gICc1OHB4JyxcbiAgJzU5cHgnLFxuICAnNjBweCcsXG4gICc2MXB4JyxcbiAgJzYycHgnLFxuICAnNjNweCcsXG4gICc2NHB4JyxcbiAgJzY1cHgnLFxuICAnNjZweCcsXG4gICc2N3B4JyxcbiAgJzY4cHgnLFxuICAnNjlweCcsXG4gICc3MHB4JyxcbiAgJzcxcHgnLFxuICAnNzJweCcsXG5dO1xuXG5leHBvcnQgY29uc3QgZ2V0SFRNTEZyb21EZWx0YU9mUXVpbGwgPSAoXG4gIGRlbHRhOiBEZWx0YSxcbiAgb3B0aW9ucz86IHtcbiAgICBnZXRSb290SHRtbD86IGJvb2xlYW47XG4gICAgcmVwbGFjZU5ld0xpbmVUbz86IHN0cmluZztcbiAgICByZXBsYWNlVGFnQlJUbz86IHN0cmluZztcbiAgICByZXBsYWNlQnJUb0Rpdj86IGJvb2xlYW47XG4gICAgZnVuY3Rpb25SZXBsYWNlRGVsdGE/OiAob3A6IERlbHRhKSA9PiB2b2lkO1xuICAgIHJlcGxhY2VUYWdzPzoge1xuICAgICAgdGFnOiBzdHJpbmc7XG4gICAgICByZXBsYWNlVG86IHN0cmluZztcbiAgICB9W107XG4gIH1cbik6IHN0cmluZyA9PiB7XG4gIGlmICghcXVpbGwpIHtcbiAgICBxdWlsbCA9IG5ldyBRdWlsbChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7XG4gIH1cbiAgY29uc3QgeyByZXBsYWNlTmV3TGluZVRvID0gJzxicj4nLCByZXBsYWNlVGFnQlJUbywgcmVwbGFjZVRhZ3MsIHJlcGxhY2VCclRvRGl2IH0gPSBvcHRpb25zIHx8IHt9O1xuICBpZiAob3B0aW9ucz8uZnVuY3Rpb25SZXBsYWNlRGVsdGEpIHtcbiAgICBvcHRpb25zLmZ1bmN0aW9uUmVwbGFjZURlbHRhKGRlbHRhKTtcbiAgfVxuXG4gIGRlbHRhLm9wcy5mb3JFYWNoKChvcCkgPT4ge1xuICAgIGlmIChvcC5pbnNlcnQpIHtcbiAgICAgIGlmICh0eXBlb2Ygb3AuaW5zZXJ0ID09PSAnc3RyaW5nJykge1xuICAgICAgICBpZiAocmVwbGFjZU5ld0xpbmVUbykge1xuICAgICAgICAgIG9wLmluc2VydCA9IG9wLmluc2VydC5yZXBsYWNlKC9cXG4vZywgcmVwbGFjZU5ld0xpbmVUbyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlcGxhY2VUYWdCUlRvKSB7XG4gICAgICAgICAgb3AuaW5zZXJ0ID0gb3AuaW5zZXJ0LnJlcGxhY2UoLzxicj4vZywgcmVwbGFjZVRhZ0JSVG8pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlcGxhY2VUYWdzPy5sZW5ndGgpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHRhZyBvZiByZXBsYWNlVGFncykge1xuICAgICAgICAgICAgb3AuaW5zZXJ0ID0gb3AuaW5zZXJ0LnJlcGxhY2UobmV3IFJlZ0V4cChgPCR7dGFnLnRhZ30+YCwgJ2cnKSwgYDwke3RhZy5yZXBsYWNlVG99PmApIGFzIHN0cmluZztcbiAgICAgICAgICAgIG9wLmluc2VydCA9IG9wLmluc2VydC5yZXBsYWNlKG5ldyBSZWdFeHAoYDwvJHt0YWcudGFnfT5gLCAnZycpLCBgPC8ke3RhZy5yZXBsYWNlVG99PmApIGFzIHN0cmluZztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICBxdWlsbC5zZXRDb250ZW50cyhkZWx0YSk7XG4gIGxldCBodG1sVGV4dCA9IG9wdGlvbnM/LmdldFJvb3RIdG1sID8gcXVpbGwucm9vdC5pbm5lckhUTUwgOiBxdWlsbC5yb290LmZpcnN0RWxlbWVudENoaWxkPy5pbm5lckhUTUw7XG4gIGlmIChyZXBsYWNlQnJUb0Rpdikge1xuICAgIGh0bWxUZXh0ID0gY29udmVydEh0bWxUb0RpdkJsb2NrcyhodG1sVGV4dCB8fCAnJyk7XG4gIH1cbiAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgcXVpbGwgPSBudWxsO1xuICB9LCAxMDAwMCk7XG4gIHJldHVybiBkZWNvZGVFc2NhcGVIdG1sKGh0bWxUZXh0IHx8ICcnKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb252ZXJ0SHRtbFRvRGl2QmxvY2tzID0gKGh0bWw6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IEJSRUFLX1RPS0VOID0gJzw8PEJSRUFLPj4+JztcbiAgLy8gQsaw4bubYyAxOiB0aGF5IDxicj4gdGjDoG5oIHRva2VuIHThuqFtXG4gIGNvbnN0IG5vcm1hbGl6ZWRIdG1sID0gaHRtbC5yZXBsYWNlKC88YnJcXHMqXFwvPz4vZ2ksIEJSRUFLX1RPS0VOKTtcblxuICAvLyBCxrDhu5tjIDI6IHTDoWNoIHRoZW8gdG9rZW5cbiAgY29uc3QgcGFydHMgPSBub3JtYWxpemVkSHRtbC5zcGxpdChCUkVBS19UT0tFTik7XG5cbiAgY29uc3QgcGFyc2VyID0gbmV3IERPTVBhcnNlcigpO1xuICBjb25zdCBkaXZzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgcmF3IG9mIHBhcnRzKSB7XG4gICAgY29uc3QgdHJpbW1lZCA9IHJhdy50cmltKCk7XG4gICAgaWYgKCF0cmltbWVkKSBjb250aW51ZTtcblxuICAgIC8vIHBhcnNlIG3hu5dpIHBo4bqnbiBuaOG7jyBuaMawIG3hu5l0IGRvY3VtZW50IHJpw6puZ1xuICAgIGNvbnN0IGRvYyA9IHBhcnNlci5wYXJzZUZyb21TdHJpbmcodHJpbW1lZCwgJ3RleHQvaHRtbCcpO1xuICAgIGNvbnN0IGJvZHkgPSBkb2MuYm9keTtcblxuICAgIC8vIEzhuqV5IGzhuqFpIG7hu5lpIGR1bmcgYsOqbiB0cm9uZyBib2R5XG4gICAgZGl2cy5wdXNoKGA8ZGl2PiR7Ym9keS5pbm5lckhUTUx9PC9kaXY+YCk7XG4gIH1cblxuICByZXR1cm4gZGl2cy5qb2luKCcnKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXREZWx0YU9mUXVpbGxGcm9tSFRNTCA9IGFzeW5jIChodG1sOiBzdHJpbmcpOiBQcm9taXNlPERlbHRhPiA9PiB7XG4gIGlmICghcXVpbGwpIHtcbiAgICBxdWlsbCA9IG5ldyBRdWlsbChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7XG4gIH1cbiAgcXVpbGwucm9vdC5pbm5lckhUTUwgPSBodG1sO1xuXG4gIGF3YWl0IGxhc3RWYWx1ZUZyb20odGltZXIoMTAwMCkpO1xuICBjbGVhclRpbWVvdXQodGltZW91dDIpO1xuICB0aW1lb3V0MiA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgIHF1aWxsID0gbnVsbDtcbiAgfSwgMTAwMDApO1xuICByZXR1cm4gcXVpbGwuZ2V0Q29udGVudHMoKTtcbn07XG5cbmV4cG9ydCBjb25zdCBwcm9jZXNzUGFzdGVEYXRhID0gYXN5bmMgKFxuICBlOiBDbGlwYm9hcmRFdmVudCxcbiAgY29uZmlnOiB7XG4gICAgZWxlbWVudDogSFRNTEVsZW1lbnQ7XG4gICAgaGFuZGxlclBhc3RlRmlsZT86IChmaWxlczogRmlsZUxpc3QpID0+IHZvaWQ7XG4gICAgY2FsbEJhY2s/OiAocG9zaXRvblJldHVybjogJ2ZpbGUnIHwgJ3JhbmdlJyB8ICdjb250ZW50JyB8ICduby1jb250ZW50JykgPT4gdm9pZDtcbiAgfVxuKSA9PiB7XG4gIGNvbnN0IGVsZW1lbnQgPSBjb25maWcuZWxlbWVudDtcbiAgY29uc3QgZmlsZXMgPSBlLmNsaXBib2FyZERhdGE/LmZpbGVzO1xuICBpZiAoZmlsZXM/Lmxlbmd0aCkge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBjb25maWcuaGFuZGxlclBhc3RlRmlsZT8uKGZpbGVzKTtcbiAgICBjb25maWcuY2FsbEJhY2s/LignZmlsZScpO1xuICAgIHJldHVybjtcbiAgfVxuICAvLyBMxrB1IHNlbGVjdGlvbiBUUsav4buaQyBraGkgcHJldmVudCBkZWZhdWx0XG4gIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgbGV0IHNhdmVkUmFuZ2U6IFJhbmdlIHwgbnVsbCA9IG51bGw7XG4gIGlmIChzZWxlY3Rpb24gJiYgc2VsZWN0aW9uLnJhbmdlQ291bnQgPiAwKSB7XG4gICAgY29uc3QgcmFuZ2UgPSBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKTtcbiAgICAvLyBDaOG7iSBsxrB1IG7hur91IHJhbmdlIG7hurFtIHRyb25nIGNvbnRlbnRUZXh0IGVsZW1lbnRcbiAgICBjb25zdCBjb250YWluZXIgPSByYW5nZS5jb21tb25BbmNlc3RvckNvbnRhaW5lcjtcbiAgICBjb25zdCBpc0luQ29udGVudEVsZW1lbnQgPSBlbGVtZW50LmNvbnRhaW5zKGNvbnRhaW5lci5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUgPyBjb250YWluZXIucGFyZW50Tm9kZSA6IGNvbnRhaW5lcik7XG4gICAgaWYgKGlzSW5Db250ZW50RWxlbWVudCkge1xuICAgICAgc2F2ZWRSYW5nZSA9IHJhbmdlLmNsb25lUmFuZ2UoKTtcbiAgICB9XG4gIH1cbiAgLy8gUHJldmVudCBkZWZhdWx0IMSR4buDIHThu7EgeOG7rSBsw70gcGFzdGVcbiAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAvLyBT4butIGThu6VuZyBRdWlsbCDEkeG7gyBjbGVhbiBIVE1MIGNvbnRlbnRcbiAgY29uc3QgaHRtbENvbnRlbnQgPSBlLmNsaXBib2FyZERhdGE/LmdldERhdGEoJ3RleHQvaHRtbCcpIHx8ICcnO1xuICBjb25zdCBwbGFpblRleHQgPSBlLmNsaXBib2FyZERhdGE/LmdldERhdGEoJ3RleHQvcGxhaW4nKSB8fCAnJztcbiAgbGV0IGNvbnRlbnRUb0luc2VydCA9IChwbGFpblRleHQgfHwgJycpLnJlcGxhY2UoL1xcbi9nLCAnPGJyPicpO1xuICBpZiAoaHRtbENvbnRlbnQpIHtcbiAgICBjb25zdCBkZWx0YSA9IGF3YWl0IGdldERlbHRhT2ZRdWlsbEZyb21IVE1MKGh0bWxDb250ZW50KTtcbiAgICBjb250ZW50VG9JbnNlcnQgPSBnZXRIVE1MRnJvbURlbHRhT2ZRdWlsbChkZWx0YSk7XG4gIH1cblxuICBpZiAoIWNvbnRlbnRUb0luc2VydCkge1xuICAgIGNvbmZpZy5jYWxsQmFjaz8uKCduby1jb250ZW50Jyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKHNhdmVkUmFuZ2UpIHtcbiAgICBpbnNlcnRDb250ZW50V2l0aFJhbmdlKGNvbnRlbnRUb0luc2VydCwgc2F2ZWRSYW5nZSwgZWxlbWVudCk7XG4gICAgY29uZmlnLmNhbGxCYWNrPy4oJ3JhbmdlJyk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGVsZW1lbnQuaW5uZXJIVE1MICs9IGNvbnRlbnRUb0luc2VydDtcbiAgY29uZmlnLmNhbGxCYWNrPy4oJ2NvbnRlbnQnKTtcbn07XG5cbmV4cG9ydCBjb25zdCBpbnNlcnRDb250ZW50V2l0aFJhbmdlID0gKGNvbnRlbnQ6IHN0cmluZywgc2F2ZWRSYW5nZTogUmFuZ2UsIGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogdm9pZCA9PiB7XG4gIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgaWYgKCFzZWxlY3Rpb24pIHtcbiAgICAvLyBGYWxsYmFjazogYXBwZW5kIHbDoG8gY3Xhu5FpXG4gICAgZWxlbWVudC5pbm5lckhUTUwgKz0gY29udGVudDtcbiAgICByZXR1cm47XG4gIH1cbiAgLy8gUmVzdG9yZSBzZWxlY3Rpb25cbiAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpO1xuICBzZWxlY3Rpb24uYWRkUmFuZ2Uoc2F2ZWRSYW5nZSk7XG4gIC8vIFjDs2EgbuG7mWkgZHVuZyDEkcOjIHNlbGVjdCAobuG6v3UgY8OzKVxuICBzYXZlZFJhbmdlLmRlbGV0ZUNvbnRlbnRzKCk7XG4gIC8vIFThuqFvIGRvY3VtZW50IGZyYWdtZW50IHThu6sgSFRNTCBjb250ZW50XG4gIGNvbnN0IHRlbXBEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgdGVtcERpdi5pbm5lckhUTUwgPSBjb250ZW50O1xuICBjb25zdCBmcmFnbWVudCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtcbiAgd2hpbGUgKHRlbXBEaXYuZmlyc3RDaGlsZCkge1xuICAgIGZyYWdtZW50LmFwcGVuZENoaWxkKHRlbXBEaXYuZmlyc3RDaGlsZCk7XG4gIH1cbiAgLy8gSW5zZXJ0IGZyYWdtZW50IHThuqFpIHbhu4sgdHLDrSByYW5nZVxuICBzYXZlZFJhbmdlLmluc2VydE5vZGUoZnJhZ21lbnQpO1xuICAvLyBEaSBjaHV54buDbiBjdXJzb3IgxJHhur9uIGN14buRaSBu4buZaSBkdW5nIHbhu6thIGluc2VydFxuICBpZiAoZnJhZ21lbnQubGFzdENoaWxkKSB7XG4gICAgc2F2ZWRSYW5nZS5zZXRTdGFydEFmdGVyKGZyYWdtZW50Lmxhc3RDaGlsZCk7XG4gIH1cbiAgc2F2ZWRSYW5nZS5jb2xsYXBzZSh0cnVlKTtcbiAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpO1xuICBzZWxlY3Rpb24uYWRkUmFuZ2Uoc2F2ZWRSYW5nZSk7XG59O1xuIl19