@libs-ui/components-inputs-quill 0.2.158 → 0.2.160

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,6 @@
1
1
  import { signal } from '@angular/core';
2
2
  import { returnListObject } from '@libs-ui/services-http-request';
3
- import { convertFileToBase64 } from '@libs-ui/utils';
3
+ import { convertFileToBase64_ObjectUrl } from '@libs-ui/utils';
4
4
  export const listDataAlign = () => {
5
5
  return [
6
6
  { key: '', icon: 'libs-ui-icon-align-left text-[#6a7383] text-[16px] hover:text-[var(--libs-ui-color-light-1)]' },
@@ -301,7 +301,7 @@ export const uploadImageConfigDefault = () => {
301
301
  functionUploadImage: async (files) => {
302
302
  const data = [];
303
303
  for (const file of files) {
304
- data.push(await convertFileToBase64(file));
304
+ data.push(await convertFileToBase64_ObjectUrl(file));
305
305
  }
306
306
  return data;
307
307
  }
@@ -317,4 +317,4 @@ export const linkDefault = () => {
317
317
  }
318
318
  };
319
319
  };
320
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVpbGwuZGVmaW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL2lucHV0cy9xdWlsbC9zcmMvdXRpbHMvcXVpbGwuZGVmaW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLEdBQUcsRUFBRTtJQUNoQyxPQUFPO1FBQ0wsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSw4RkFBOEYsRUFBRTtRQUNqSCxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLCtGQUErRixFQUFFO1FBQ3ZILEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsZ0dBQWdHLEVBQUU7UUFDekgsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxpR0FBaUcsRUFBRTtLQUM1SCxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLEdBQUcsRUFBRTtJQUMzQixPQUFPO1FBQ0wsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUU7UUFDaEMsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7UUFDaEMsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUU7S0FDekMsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxHQUFvQixFQUFFO0lBQ25ELE9BQU87UUFDTCxJQUFJLEVBQUUsTUFBTTtRQUNaLG1CQUFt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O1xuaW1wb3J0IHsgSUxpc3RDb25maWdJdGVtIH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1saXN0JztcbmltcG9ydCB7IHJldHVybkxpc3RPYmplY3QgfSBmcm9tICdAbGlicy11aS9zZXJ2aWNlcy1odHRwLXJlcXVlc3QnO1xuaW1wb3J0IHsgSVF1aWxsTGluaywgSVF1aWxsVG9vbGJhckNvbmZpZywgSVF1aWxsVXBsb2FkSW1hZ2VDb25maWcsIFRZUEVfTU9ERV9CQVJfQ09ORklHX09QVElPTiB9IGZyb20gJy4uL2ludGVyZmFjZXMvcXVpbGwuaW50ZXJmYWNlJztcbmltcG9ydCB7IGNvbnZlcnRGaWxlVG9CYXNlNjQgfSBmcm9tICdAbGlicy11aS91dGlscyc7XG5cbmV4cG9ydCBjb25zdCBsaXN0RGF0YUFsaWduID0gKCkgPT4ge1xuICByZXR1cm4gW1xuICAgIHsga2V5OiAnJywgaWNvbjogJ2xpYnMtdWktaWNvbi1hbGlnbi1sZWZ0IHRleHQtWyM2YTczODNdIHRleHQtWzE2cHhdIGhvdmVyOnRleHQtW3ZhcigtLWxpYnMtdWktY29sb3ItbGlnaHQtMSldJyB9LFxuICAgIHsga2V5OiAncmlnaHQnLCBpY29uOiAnbGlicy11aS1pY29uLWFsaWduLXJpZ2h0IHRleHQtWyM2YTczODNdIHRleHQtWzE2cHhdIGhvdmVyOnRleHQtW3ZhcigtLWxpYnMtdWktY29sb3ItbGlnaHQtMSldJyB9LFxuICAgIHsga2V5OiAnY2VudGVyJywgaWNvbjogJ2xpYnMtdWktaWNvbi1hbGlnbi1jZW50ZXIgdGV4dC1bIzZhNzM4M10gdGV4dC1bMTZweF0gaG92ZXI6dGV4dC1bdmFyKC0tbGlicy11aS1jb2xvci1saWdodC0xKV0nIH0sXG4gICAgeyBrZXk6ICdqdXN0aWZ5JywgaWNvbjogJ2xpYnMtdWktaWNvbi1hbGlnbi1qdXN0aWZ5IHRleHQtWyM2YTczODNdIHRleHQtWzE2cHhdIGhvdmVyOnRleHQtW3ZhcigtLWxpYnMtdWktY29sb3ItbGlnaHQtMSldJyB9LFxuICBdO1xufTtcblxuZXhwb3J0IGNvbnN0IGxpc3RGb250ID0gKCkgPT4ge1xuICByZXR1cm4gW1xuICAgIHsga2V5OiAnJywgbGFiZWw6ICdTYW5zIFNlcmlmJyB9LFxuICAgIHsga2V5OiAnc2VyaWYnLCBsYWJlbDogJ1NlcmlmJyB9LFxuICAgIHsga2V5OiAnbW9ub3NwYWNlJywgbGFiZWw6ICdNb25vc3BhY2UnIH0sXG4gIF07XG59O1xuXG5leHBvcnQgY29uc3QgbGlzdENvbmZpZ0FsaWduID0gKCk6IElMaXN0Q29uZmlnSXRlbSA9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogJ3RleHQnLFxuICAgIGF1dG9TZWxlY3RGaXJzdEl0ZW06IHRydWUsXG4gICAgaHR0cFJlcXVlc3REYXRhOiBzaWduYWwoe1xuICAgICAgc2VydmljZU90aGVyOiByZXR1cm5MaXN0T2JqZWN0KGxpc3REYXRhQWxpZ24oKSksXG4gICAgICBmdW5jdGlvbk5hbWU6ICdsaXN0JyxcbiAgICAgIGFyZ3VtZW50c1ZhbHVlOiBbXVxuICAgIH0pLFxuICAgIGNvbmZpZ1RlbXBsYXRlVGV4dDogc2lnbmFsKHtcbiAgICAgIGZpZWxkS2V5OiAna2V5JyxcbiAgICAgIGdldENsYXNzSXRlbTogKCkgPT4gJyFweC1bOHB4XSAhcHktWzRweF0nLFxuICAgICAgZ2V0VmFsdWU6IGl0ZW0gPT4gYDxpIGNsYXNzPSdmbGV4ICR7aXRlbS5pY29ufSc+PC9pPmAsXG4gICAgICBpZ25vcmVJY29uU2VsZWN0ZWQ6IHRydWVcbiAgICB9KVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGxpc3RDb25maWdGb250ID0gKCk6IElMaXN0Q29uZmlnSXRlbSA9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogJ3RleHQnLFxuICAgIGF1dG9TZWxlY3RGaXJzdEl0ZW06IHRydWUsXG4gICAgaHR0cFJlcXVlc3REYXRhOiBzaWduYWwoe1xuICAgICAgc2VydmljZU90aGVyOiByZXR1cm5MaXN0T2JqZWN0KGxpc3RGb250KCkpLFxuICAgICAgZnVuY3Rpb25OYW1lOiAnbGlzdCcsXG4gICAgICBhcmd1bWVudHNWYWx1ZTogW11cbiAgICB9KSxcbiAgICBjb25maWdUZW1wbGF0ZVRleHQ6IHNpZ25hbCh7XG4gICAgICBmaWVsZEtleTogJ2tleScsXG4gICAgICBnZXRWYWx1ZTogaXRlbSA9PiBpdGVtLmxhYmVsLFxuICAgICAgaWdub3JlSWNvblNlbGVjdGVkOiB0cnVlXG4gICAgfSlcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCB0b29sQmFyT3B0aW9ucyA9IChtb2RlOiBUWVBFX01PREVfQkFSX0NPTkZJR19PUFRJT04sIGhhc0ljb25JbWFnZTogYm9vbGVhbiwgaGFzSWNvblBlcnNvbmFsaXplOiBib29sZWFuKTogQXJyYXk8SVF1aWxsVG9vbGJhckNvbmZpZz4gPT4ge1xuICByZXR1cm4gKFtcbiAgICB7XG4gICAgICB0eXBlOiAndW5kbycsXG4gICAgICBjbGFzc0luY2x1ZGU6ICdtci1bOHB4XScsXG4gICAgICBtb2RlOiBbJ2RlZmF1bHQnLCAnYmFzaWMnXSxcbiAgICAgIHdpZHRoOiAyNFxuICAgIH0sXG4gICAge1xuICAgICAgdHlwZTogJ3JlZG8nLFxuICAgICAgbW9kZTogWydkZWZhdWx0JywgJ2Jhc2ljJ10sXG4gICAgICB3aWR0aDogMzJcbiAgICB9LFxuICAgIHtcbiAgICAgIHR5cGU6ICdsaW5lJyxcbiAgICAgIG1vZGU6IFsnZGVmYXVsdCcsICdiYXNpYyddLFxuICAgICAgd2lkdGg6IDFcbiAgICB9LFxuICAgIHtcbiAgICAgIHR5cGU6ICdmb250RmFtaWx5JyxcbiAgICAgIGNsYXNzSW5jbHVkZTogJ21sLVs4cHhdIG1yLVsycHhdJyxcbiAgICAgIG1vZGU6IFsnZGVmYXVsdCddLFxuICAgICAgd2lkdGg6IDEzOFxuICAgIH0sXG4gICAge1xuICAgICAgdHlwZTogJ2ZvbnRTaXplJyxcbiAgICAgIGNsYXNzSW5jbHVkZTogJ21sLVsycHhdIG1yLVs4cHhdJyxcbiAgICAgIG1vZGU6IFsnZGVmYXVsdCddLFxuICAgICAgd2lkdGg6IDgyXG4gICAgfSxcbiAgICB7XG4gICAgICB0eXBlOiAnbGluZScsXG4gICAgICBtb2RlOiBbJ2RlZmF1bHQnXSxcbiAgICAgIHdpZHRoOiAxXG4gICAgfSxcbiAgICB7XG4gICAgICB0eXBlOiAnY29sb3InLFxuICAgICAgbW9kZTogWydkZWZhdWx0JywgJ2Jhc2ljJ10sXG4gICAgICB3aWR0aDogMzJcbiAgICB9LFxuICAgIHtcbiAgICAgIHR5cGU6ICdiYWNrZ3JvdW5kJyxcbiAgICAgIG1vZGU6IFsnZGVmYXVsdCddLFxuICAgICAgd2lkdGg6IDMyXG4gICAgfSxcbiAgICB7XG4gICAgICB0eXBlOiAnbGluZScsXG4gICAgICBtb2RlOiBbJ2RlZmF1bHQnLCAnYmFzaWMnXSxcbiAgICAgIHdpZHRoOiAxXG4gICAgfSxcbiAgICB7XG4gICAgICB0eXBlOiAnYm9sZCcsXG4gICAgICBtb2RlOiBbJ2RlZmF1bHQnLCAnYmFzaWMnXSxcbiAgICAgIHdpZHRoOiAzMlxuICAgIH0sXG4gICAge1xuICAgICAgdHlwZTogJ2l0YWxpYycsXG4gICAgICBtb2RlOiBbJ2RlZmF1bHQnLCAnYmFzaWMnXSxcbiAgICAgIHdpZHRoOiAzMlxuICAgIH0sXG4gICAge1xuICAgICAgdHlwZTogJ3VuZGVybGluZScsXG4gICAgICBtb2RlOiBbJ2RlZmF1bHQnLCAnYmFzaWMnXSxcbiAgICAgIHdpZHRoOiAzMlxuICAgIH0sXG4gICAge1xuICAgICAgdHlwZTogJ3N0cmlrZVRocm91Z2gnLFxuICAgICAgbW9kZTogWydkZWZhdWx0J10sXG4gICAgICB3aWR0aDogMzJcbiAgICB9LFxuICAgIHtcbiAgICAgIHR5cGU6ICdsaW5lJyxcbiAgICAgIG1vZGU6IFsnZGVmYXVsdCcsICdiYXNpYyddLFxuICAgICAgd2lkdGg6IDFcbiAgICB9LFxuICAgIHtcbiAgICAgIHR5cGU6ICdhZGp1c3QnLFxuICAgICAgbW9kZTogWydkZWZhdWx0J10sXG4gICAgICB3aWR0aDogNTJcbiAgICB9LFxuICAgIHtcbiAgICAgIHR5cGU6ICdsaW5lJyxcbiAgICAgIG1vZGU6IFsnZGVmYXVsdCddLFxuICAgICAgd2lkdGg6IDMyXG4gICAgfSxcbiAgICB7XG4gICAgICB0eXBlOiAnaW5kZW50SW5jcmVhc2UnLFxuICAgICAgbW9kZTogWydkZWZhdWx0J10sXG4gICAgICB3aWR0aDogMzJcbiAgICB9LFxuICAgIHtcbiAgICAgIHR5cGU6ICdpbmRlbnREZWNyZWFzZScsXG4gICAgICBtb2RlOiBbJ2RlZmF1bHQnXSxcbiAgICAgIHdpZHRoOiAzMlxuICAgIH0sXG4gICAge1xuICAgICAgdHlwZTogJ2xpc3RCdWxsZXRlZCcsXG4gICAgICBtb2RlOiBbJ2RlZmF1bHQnXSxcbiAgICAgIHdpZHRoOiAzMlxuICAgIH0sXG4gICAge1xuICAgICAgdHlwZTogJ2xpc3ROdW1iZXJlZCcsXG4gICAgICBtb2RlOiBbJ2RlZmF1bHQnXSxcbiAgICAgIHdpZHRoOiAzMlxuICAgIH0sXG4gICAge1xuICAgICAgdHlwZTogJ2xpbmUnLFxuICAgICAgbW9kZTogWydkZWZhdWx0J10sXG4gICAgICB3aWR0aDogMVxuICAgIH0sXG4gICAge1xuICAgICAgdHlwZTogJ3BlcnNvbmFsaXplJyxcbiAgICAgIG1vZGU6IFsnZGVmYXVsdCddLFxuICAgICAgd2lkdGg6IDMyXG4gICAgfSxcbiAgICB7XG4gICAgICB0eXBlOiAnYmxvY2txdW90ZScsXG4gICAgICBtb2RlOiBbJ2RlZmF1bHQnXSxcbiAgICAgIHdpZHRoOiAzMlxuICAgIH0sXG4gICAge1xuICAgICAgdHlwZTogJ2xpbmsnLFxuICAgICAgbW9kZTogWydkZWZhdWx0JywgJ2Jhc2ljJ10sXG4gICAgICB3aWR0aDogMzJcbiAgICB9LFxuICAgIHtcbiAgICAgIHR5cGU6ICd1bkxpbmsnLFxuICAgICAgbW9kZTogWydkZWZhdWx0JywgJ2Jhc2ljJ10sXG4gICAgICB3aWR0aDogMzJcbiAgICB9LFxuICAgIHtcbiAgICAgIHR5cGU6ICdpbWFnZScsXG4gICAgICBtb2RlOiBbJ2RlZmF1bHQnXSxcbiAgICAgIHdpZHRoOiAzMlxuICAgIH0sXG4gICAge1xuICAgICAgdHlwZTogJ2Vtb2ppJyxcbiAgICAgIGNsYXNzSW5jbHVkZTogJ21sLVs4cHhdJyxcbiAgICAgIG1vZGU6IFsnZGVmYXVsdCddLFxuICAgICAgd2lkdGg6IDI0XG4gICAgfVxuICBdIGFzIEFycmF5PElRdWlsbFRvb2xiYXJDb25maWc+KS5maWx0ZXIoaXRlbSA9PiB7XG4gICAgaWYgKCFpdGVtLm1vZGU/LmluY2x1ZGVzKG1vZGUpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChpdGVtLnR5cGUgPT09ICdpbWFnZScpIHtcbiAgICAgIHJldHVybiBoYXNJY29uSW1hZ2U7XG4gICAgfVxuICAgIGlmIChpdGVtLnR5cGUgPT09ICdwZXJzb25hbGl6ZScpIHtcbiAgICAgIHJldHVybiBoYXNJY29uUGVyc29uYWxpemU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG5cbiAgfSk7XG59XG5leHBvcnQgY29uc3QgaWNvbkxpc3QgPSAoKTogQXJyYXk8eyBrZXk6IHN0cmluZywgaWNvbjogc3RyaW5nIH0+ID0+IHtcbiAgcmV0dXJuIFtcbiAgICB7XG4gICAgICBrZXk6ICdib2xkJyxcbiAgICAgIGljb246ICdsaWJzLXVpLWljb24tZWRpdG9yLWJvbGQnLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnaXRhbGljJyxcbiAgICAgIGljb246ICdsaWJzLXVpLWljb24tZWRpdG9yLWl0YWxpYycsXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICd1bmRlcmxpbmUnLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi1lZGl0b3ItdW5kZXJsaW5lZCcsXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdpbWFnZScsXG4gICAgICBpY29uOiAnbGlicy11aS1pY29uLWltYWdlLXNvbGlkJ1xuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnbGluaycsXG4gICAgICBpY29uOiAnbGlicy11aS1pY29uLWxpbmsnXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICd1bmRvJyxcbiAgICAgIGljb246ICdsaWJzLXVpLWljb24tdW5kbydcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ3JlZG8nLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi11bmRvIHNjYWxlLXgtWy0xXSdcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ3N0cmlrZScsXG4gICAgICBpY29uOiAnbGlicy11aS1pY29uLWVkaXRvci1zdHJpa2UtdGhyb3VnaCdcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ2Jsb2NrcXVvdGUnLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi1xdW90ZSdcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ29yZGVyZWQnLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi1saXN0LW51bWJlcmVkJ1xuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnYnVsbGV0JyxcbiAgICAgIGljb246ICdsaWJzLXVpLWljb24tbGlzdC1idWxsZXRlZCdcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ2JhY2tncm91bmQnLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi1lZGl0b3ItY29sb3ItYmFja2dyb3VuZCdcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ2NvbG9yJyxcbiAgICAgIGljb246ICdsaWJzLXVpLWljb24tZWRpdG9yLWNvbG9yLXRleHQnXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6IFwiaW5kZW50Li0xXCIsXG4gICAgICBpY29uOiAnbGlicy11aS1pY29uLWluZGVudC1kZWNyZWFzZSdcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogXCJpbmRlbnQuKzFcIixcbiAgICAgIGljb246ICdsaWJzLXVpLWljb24taW5kZW50LWluY3JlYXNlJ1xuICAgIH0sXG4gICAge1xuICAgICAga2V5OiBcImFsaWduLlwiLFxuICAgICAgaWNvbjogJ2FsaWduLXF1aWxsIGxpYnMtdWktaWNvbi1hbGlnbi1sZWZ0J1xuICAgIH0sXG4gICAge1xuICAgICAga2V5OiBcImFsaWduLmNlbnRlclwiLFxuICAgICAgaWNvbjogJ2FsaWduLXF1aWxsIGxpYnMtdWktaWNvbi1hbGlnbi1jZW50ZXInXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6IFwiYWxpZ24ucmlnaHRcIixcbiAgICAgIGljb246ICdhbGlnbi1xdWlsbCBsaWJzLXVpLWljb24tYWxpZ24tcmlnaHQnXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6IFwiYWxpZ24uanVzdGlmeVwiLFxuICAgICAgaWNvbjogJ2FsaWduLXF1aWxsIGxpYnMtdWktaWNvbi1hbGlnbi1qdXN0aWZ5J1xuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAndW5MaW5rJyxcbiAgICAgIGljb246ICdsaWJzLXVpLWljb24tbGluay1icm9rZW4nXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdlbW9qaScsXG4gICAgICBpY29uOiAnbGlicy11aS1pY29uLWZhY2Utc21pbGUnXG4gICAgfVxuICBdO1xufVxuXG5leHBvcnQgY29uc3QgdXBsb2FkSW1hZ2VDb25maWdEZWZhdWx0ID0gKCk6IElRdWlsbFVwbG9hZEltYWdlQ29uZmlnID0+IHtcbiAgcmV0dXJuIHtcbiAgICBtb2RlQ3VzdG9tOiBmYWxzZSxcbiAgICB6SW5kZXg6IDEyMDIsXG4gICAgc2hvd0ljb246IHRydWUsXG4gICAgbWF4SW1hZ2VTaXplOiA1ICogMTAyNCAqIDEwMjQsXG4gICAgb25seUFjY2VwdEltYWdlSHR0cHNMaW5rOiBmYWxzZSxcbiAgICBmdW5jdGlvblVwbG9hZEltYWdlOiBhc3luYyAoZmlsZXM6IEFycmF5PEZpbGU+KSA9PiB7XG4gICAgICBjb25zdCBkYXRhID0gW107XG4gICAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICAgICAgZGF0YS5wdXNoKGF3YWl0IGNvbnZlcnRGaWxlVG9CYXNlNjQoZmlsZSkpXG4gICAgICB9XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGxpbmtEZWZhdWx0ID0gKCk6IElRdWlsbExpbmsgPT4ge1xuICByZXR1cm4ge1xuICAgIHRpdGxlOiAnJyxcbiAgICB1cmw6ICcnLFxuICAgIHJhbmdlOiB7XG4gICAgICBpbmRleDogMCxcbiAgICAgIGxlbmd0aDogMFxuICAgIH1cbiAgfTtcbn1cbiJdfQ==
320
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVpbGwuZGVmaW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL2lucHV0cy9xdWlsbC9zcmMvdXRpbHMvcXVpbGwuZGVmaW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFbEUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFL0QsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLEdBQUcsRUFBRTtJQUNoQyxPQUFPO1FBQ0wsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSw4RkFBOEYsRUFBRTtRQUNqSCxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLCtGQUErRixFQUFFO1FBQ3ZILEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsZ0dBQWdHLEVBQUU7UUFDekgsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxpR0FBaUcsRUFBRTtLQUM1SCxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLEdBQUcsRUFBRTtJQUMzQixPQUFPO1FBQ0wsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUU7UUFDaEMsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7UUFDaEMsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUU7S0FDekMsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxHQUFvQixFQUFFO0lBQ25ELE9BQU87UUFDTCxJQUFJLEVBQUUsTUFBTTtRQUNaLG1CQUFt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O1xuaW1wb3J0IHsgSUxpc3RDb25maWdJdGVtIH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1saXN0JztcbmltcG9ydCB7IHJldHVybkxpc3RPYmplY3QgfSBmcm9tICdAbGlicy11aS9zZXJ2aWNlcy1odHRwLXJlcXVlc3QnO1xuaW1wb3J0IHsgSVF1aWxsTGluaywgSVF1aWxsVG9vbGJhckNvbmZpZywgSVF1aWxsVXBsb2FkSW1hZ2VDb25maWcsIFRZUEVfTU9ERV9CQVJfQ09ORklHX09QVElPTiB9IGZyb20gJy4uL2ludGVyZmFjZXMvcXVpbGwuaW50ZXJmYWNlJztcbmltcG9ydCB7IGNvbnZlcnRGaWxlVG9CYXNlNjRfT2JqZWN0VXJsIH0gZnJvbSAnQGxpYnMtdWkvdXRpbHMnO1xuXG5leHBvcnQgY29uc3QgbGlzdERhdGFBbGlnbiA9ICgpID0+IHtcbiAgcmV0dXJuIFtcbiAgICB7IGtleTogJycsIGljb246ICdsaWJzLXVpLWljb24tYWxpZ24tbGVmdCB0ZXh0LVsjNmE3MzgzXSB0ZXh0LVsxNnB4XSBob3Zlcjp0ZXh0LVt2YXIoLS1saWJzLXVpLWNvbG9yLWxpZ2h0LTEpXScgfSxcbiAgICB7IGtleTogJ3JpZ2h0JywgaWNvbjogJ2xpYnMtdWktaWNvbi1hbGlnbi1yaWdodCB0ZXh0LVsjNmE3MzgzXSB0ZXh0LVsxNnB4XSBob3Zlcjp0ZXh0LVt2YXIoLS1saWJzLXVpLWNvbG9yLWxpZ2h0LTEpXScgfSxcbiAgICB7IGtleTogJ2NlbnRlcicsIGljb246ICdsaWJzLXVpLWljb24tYWxpZ24tY2VudGVyIHRleHQtWyM2YTczODNdIHRleHQtWzE2cHhdIGhvdmVyOnRleHQtW3ZhcigtLWxpYnMtdWktY29sb3ItbGlnaHQtMSldJyB9LFxuICAgIHsga2V5OiAnanVzdGlmeScsIGljb246ICdsaWJzLXVpLWljb24tYWxpZ24tanVzdGlmeSB0ZXh0LVsjNmE3MzgzXSB0ZXh0LVsxNnB4XSBob3Zlcjp0ZXh0LVt2YXIoLS1saWJzLXVpLWNvbG9yLWxpZ2h0LTEpXScgfSxcbiAgXTtcbn07XG5cbmV4cG9ydCBjb25zdCBsaXN0Rm9udCA9ICgpID0+IHtcbiAgcmV0dXJuIFtcbiAgICB7IGtleTogJycsIGxhYmVsOiAnU2FucyBTZXJpZicgfSxcbiAgICB7IGtleTogJ3NlcmlmJywgbGFiZWw6ICdTZXJpZicgfSxcbiAgICB7IGtleTogJ21vbm9zcGFjZScsIGxhYmVsOiAnTW9ub3NwYWNlJyB9LFxuICBdO1xufTtcblxuZXhwb3J0IGNvbnN0IGxpc3RDb25maWdBbGlnbiA9ICgpOiBJTGlzdENvbmZpZ0l0ZW0gPT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6ICd0ZXh0JyxcbiAgICBhdXRvU2VsZWN0Rmlyc3RJdGVtOiB0cnVlLFxuICAgIGh0dHBSZXF1ZXN0RGF0YTogc2lnbmFsKHtcbiAgICAgIHNlcnZpY2VPdGhlcjogcmV0dXJuTGlzdE9iamVjdChsaXN0RGF0YUFsaWduKCkpLFxuICAgICAgZnVuY3Rpb25OYW1lOiAnbGlzdCcsXG4gICAgICBhcmd1bWVudHNWYWx1ZTogW11cbiAgICB9KSxcbiAgICBjb25maWdUZW1wbGF0ZVRleHQ6IHNpZ25hbCh7XG4gICAgICBmaWVsZEtleTogJ2tleScsXG4gICAgICBnZXRDbGFzc0l0ZW06ICgpID0+ICchcHgtWzhweF0gIXB5LVs0cHhdJyxcbiAgICAgIGdldFZhbHVlOiBpdGVtID0+IGA8aSBjbGFzcz0nZmxleCAke2l0ZW0uaWNvbn0nPjwvaT5gLFxuICAgICAgaWdub3JlSWNvblNlbGVjdGVkOiB0cnVlXG4gICAgfSlcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBsaXN0Q29uZmlnRm9udCA9ICgpOiBJTGlzdENvbmZpZ0l0ZW0gPT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6ICd0ZXh0JyxcbiAgICBhdXRvU2VsZWN0Rmlyc3RJdGVtOiB0cnVlLFxuICAgIGh0dHBSZXF1ZXN0RGF0YTogc2lnbmFsKHtcbiAgICAgIHNlcnZpY2VPdGhlcjogcmV0dXJuTGlzdE9iamVjdChsaXN0Rm9udCgpKSxcbiAgICAgIGZ1bmN0aW9uTmFtZTogJ2xpc3QnLFxuICAgICAgYXJndW1lbnRzVmFsdWU6IFtdXG4gICAgfSksXG4gICAgY29uZmlnVGVtcGxhdGVUZXh0OiBzaWduYWwoe1xuICAgICAgZmllbGRLZXk6ICdrZXknLFxuICAgICAgZ2V0VmFsdWU6IGl0ZW0gPT4gaXRlbS5sYWJlbCxcbiAgICAgIGlnbm9yZUljb25TZWxlY3RlZDogdHJ1ZVxuICAgIH0pXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdG9vbEJhck9wdGlvbnMgPSAobW9kZTogVFlQRV9NT0RFX0JBUl9DT05GSUdfT1BUSU9OLCBoYXNJY29uSW1hZ2U6IGJvb2xlYW4sIGhhc0ljb25QZXJzb25hbGl6ZTogYm9vbGVhbik6IEFycmF5PElRdWlsbFRvb2xiYXJDb25maWc+ID0+IHtcbiAgcmV0dXJuIChbXG4gICAge1xuICAgICAgdHlwZTogJ3VuZG8nLFxuICAgICAgY2xhc3NJbmNsdWRlOiAnbXItWzhweF0nLFxuICAgICAgbW9kZTogWydkZWZhdWx0JywgJ2Jhc2ljJ10sXG4gICAgICB3aWR0aDogMjRcbiAgICB9LFxuICAgIHtcbiAgICAgIHR5cGU6ICdyZWRvJyxcbiAgICAgIG1vZGU6IFsnZGVmYXVsdCcsICdiYXNpYyddLFxuICAgICAgd2lkdGg6IDMyXG4gICAgfSxcbiAgICB7XG4gICAgICB0eXBlOiAnbGluZScsXG4gICAgICBtb2RlOiBbJ2RlZmF1bHQnLCAnYmFzaWMnXSxcbiAgICAgIHdpZHRoOiAxXG4gICAgfSxcbiAgICB7XG4gICAgICB0eXBlOiAnZm9udEZhbWlseScsXG4gICAgICBjbGFzc0luY2x1ZGU6ICdtbC1bOHB4XSBtci1bMnB4XScsXG4gICAgICBtb2RlOiBbJ2RlZmF1bHQnXSxcbiAgICAgIHdpZHRoOiAxMzhcbiAgICB9LFxuICAgIHtcbiAgICAgIHR5cGU6ICdmb250U2l6ZScsXG4gICAgICBjbGFzc0luY2x1ZGU6ICdtbC1bMnB4XSBtci1bOHB4XScsXG4gICAgICBtb2RlOiBbJ2RlZmF1bHQnXSxcbiAgICAgIHdpZHRoOiA4MlxuICAgIH0sXG4gICAge1xuICAgICAgdHlwZTogJ2xpbmUnLFxuICAgICAgbW9kZTogWydkZWZhdWx0J10sXG4gICAgICB3aWR0aDogMVxuICAgIH0sXG4gICAge1xuICAgICAgdHlwZTogJ2NvbG9yJyxcbiAgICAgIG1vZGU6IFsnZGVmYXVsdCcsICdiYXNpYyddLFxuICAgICAgd2lkdGg6IDMyXG4gICAgfSxcbiAgICB7XG4gICAgICB0eXBlOiAnYmFja2dyb3VuZCcsXG4gICAgICBtb2RlOiBbJ2RlZmF1bHQnXSxcbiAgICAgIHdpZHRoOiAzMlxuICAgIH0sXG4gICAge1xuICAgICAgdHlwZTogJ2xpbmUnLFxuICAgICAgbW9kZTogWydkZWZhdWx0JywgJ2Jhc2ljJ10sXG4gICAgICB3aWR0aDogMVxuICAgIH0sXG4gICAge1xuICAgICAgdHlwZTogJ2JvbGQnLFxuICAgICAgbW9kZTogWydkZWZhdWx0JywgJ2Jhc2ljJ10sXG4gICAgICB3aWR0aDogMzJcbiAgICB9LFxuICAgIHtcbiAgICAgIHR5cGU6ICdpdGFsaWMnLFxuICAgICAgbW9kZTogWydkZWZhdWx0JywgJ2Jhc2ljJ10sXG4gICAgICB3aWR0aDogMzJcbiAgICB9LFxuICAgIHtcbiAgICAgIHR5cGU6ICd1bmRlcmxpbmUnLFxuICAgICAgbW9kZTogWydkZWZhdWx0JywgJ2Jhc2ljJ10sXG4gICAgICB3aWR0aDogMzJcbiAgICB9LFxuICAgIHtcbiAgICAgIHR5cGU6ICdzdHJpa2VUaHJvdWdoJyxcbiAgICAgIG1vZGU6IFsnZGVmYXVsdCddLFxuICAgICAgd2lkdGg6IDMyXG4gICAgfSxcbiAgICB7XG4gICAgICB0eXBlOiAnbGluZScsXG4gICAgICBtb2RlOiBbJ2RlZmF1bHQnLCAnYmFzaWMnXSxcbiAgICAgIHdpZHRoOiAxXG4gICAgfSxcbiAgICB7XG4gICAgICB0eXBlOiAnYWRqdXN0JyxcbiAgICAgIG1vZGU6IFsnZGVmYXVsdCddLFxuICAgICAgd2lkdGg6IDUyXG4gICAgfSxcbiAgICB7XG4gICAgICB0eXBlOiAnbGluZScsXG4gICAgICBtb2RlOiBbJ2RlZmF1bHQnXSxcbiAgICAgIHdpZHRoOiAzMlxuICAgIH0sXG4gICAge1xuICAgICAgdHlwZTogJ2luZGVudEluY3JlYXNlJyxcbiAgICAgIG1vZGU6IFsnZGVmYXVsdCddLFxuICAgICAgd2lkdGg6IDMyXG4gICAgfSxcbiAgICB7XG4gICAgICB0eXBlOiAnaW5kZW50RGVjcmVhc2UnLFxuICAgICAgbW9kZTogWydkZWZhdWx0J10sXG4gICAgICB3aWR0aDogMzJcbiAgICB9LFxuICAgIHtcbiAgICAgIHR5cGU6ICdsaXN0QnVsbGV0ZWQnLFxuICAgICAgbW9kZTogWydkZWZhdWx0J10sXG4gICAgICB3aWR0aDogMzJcbiAgICB9LFxuICAgIHtcbiAgICAgIHR5cGU6ICdsaXN0TnVtYmVyZWQnLFxuICAgICAgbW9kZTogWydkZWZhdWx0J10sXG4gICAgICB3aWR0aDogMzJcbiAgICB9LFxuICAgIHtcbiAgICAgIHR5cGU6ICdsaW5lJyxcbiAgICAgIG1vZGU6IFsnZGVmYXVsdCddLFxuICAgICAgd2lkdGg6IDFcbiAgICB9LFxuICAgIHtcbiAgICAgIHR5cGU6ICdwZXJzb25hbGl6ZScsXG4gICAgICBtb2RlOiBbJ2RlZmF1bHQnXSxcbiAgICAgIHdpZHRoOiAzMlxuICAgIH0sXG4gICAge1xuICAgICAgdHlwZTogJ2Jsb2NrcXVvdGUnLFxuICAgICAgbW9kZTogWydkZWZhdWx0J10sXG4gICAgICB3aWR0aDogMzJcbiAgICB9LFxuICAgIHtcbiAgICAgIHR5cGU6ICdsaW5rJyxcbiAgICAgIG1vZGU6IFsnZGVmYXVsdCcsICdiYXNpYyddLFxuICAgICAgd2lkdGg6IDMyXG4gICAgfSxcbiAgICB7XG4gICAgICB0eXBlOiAndW5MaW5rJyxcbiAgICAgIG1vZGU6IFsnZGVmYXVsdCcsICdiYXNpYyddLFxuICAgICAgd2lkdGg6IDMyXG4gICAgfSxcbiAgICB7XG4gICAgICB0eXBlOiAnaW1hZ2UnLFxuICAgICAgbW9kZTogWydkZWZhdWx0J10sXG4gICAgICB3aWR0aDogMzJcbiAgICB9LFxuICAgIHtcbiAgICAgIHR5cGU6ICdlbW9qaScsXG4gICAgICBjbGFzc0luY2x1ZGU6ICdtbC1bOHB4XScsXG4gICAgICBtb2RlOiBbJ2RlZmF1bHQnXSxcbiAgICAgIHdpZHRoOiAyNFxuICAgIH1cbiAgXSBhcyBBcnJheTxJUXVpbGxUb29sYmFyQ29uZmlnPikuZmlsdGVyKGl0ZW0gPT4ge1xuICAgIGlmICghaXRlbS5tb2RlPy5pbmNsdWRlcyhtb2RlKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoaXRlbS50eXBlID09PSAnaW1hZ2UnKSB7XG4gICAgICByZXR1cm4gaGFzSWNvbkltYWdlO1xuICAgIH1cbiAgICBpZiAoaXRlbS50eXBlID09PSAncGVyc29uYWxpemUnKSB7XG4gICAgICByZXR1cm4gaGFzSWNvblBlcnNvbmFsaXplO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuXG4gIH0pO1xufVxuZXhwb3J0IGNvbnN0IGljb25MaXN0ID0gKCk6IEFycmF5PHsga2V5OiBzdHJpbmcsIGljb246IHN0cmluZyB9PiA9PiB7XG4gIHJldHVybiBbXG4gICAge1xuICAgICAga2V5OiAnYm9sZCcsXG4gICAgICBpY29uOiAnbGlicy11aS1pY29uLWVkaXRvci1ib2xkJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ2l0YWxpYycsXG4gICAgICBpY29uOiAnbGlicy11aS1pY29uLWVkaXRvci1pdGFsaWMnLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAndW5kZXJsaW5lJyxcbiAgICAgIGljb246ICdsaWJzLXVpLWljb24tZWRpdG9yLXVuZGVybGluZWQnLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnaW1hZ2UnLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi1pbWFnZS1zb2xpZCdcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ2xpbmsnLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi1saW5rJ1xuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAndW5kbycsXG4gICAgICBpY29uOiAnbGlicy11aS1pY29uLXVuZG8nXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdyZWRvJyxcbiAgICAgIGljb246ICdsaWJzLXVpLWljb24tdW5kbyBzY2FsZS14LVstMV0nXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdzdHJpa2UnLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi1lZGl0b3Itc3RyaWtlLXRocm91Z2gnXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdibG9ja3F1b3RlJyxcbiAgICAgIGljb246ICdsaWJzLXVpLWljb24tcXVvdGUnXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdvcmRlcmVkJyxcbiAgICAgIGljb246ICdsaWJzLXVpLWljb24tbGlzdC1udW1iZXJlZCdcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ2J1bGxldCcsXG4gICAgICBpY29uOiAnbGlicy11aS1pY29uLWxpc3QtYnVsbGV0ZWQnXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdiYWNrZ3JvdW5kJyxcbiAgICAgIGljb246ICdsaWJzLXVpLWljb24tZWRpdG9yLWNvbG9yLWJhY2tncm91bmQnXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdjb2xvcicsXG4gICAgICBpY29uOiAnbGlicy11aS1pY29uLWVkaXRvci1jb2xvci10ZXh0J1xuICAgIH0sXG4gICAge1xuICAgICAga2V5OiBcImluZGVudC4tMVwiLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi1pbmRlbnQtZGVjcmVhc2UnXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6IFwiaW5kZW50LisxXCIsXG4gICAgICBpY29uOiAnbGlicy11aS1pY29uLWluZGVudC1pbmNyZWFzZSdcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogXCJhbGlnbi5cIixcbiAgICAgIGljb246ICdhbGlnbi1xdWlsbCBsaWJzLXVpLWljb24tYWxpZ24tbGVmdCdcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogXCJhbGlnbi5jZW50ZXJcIixcbiAgICAgIGljb246ICdhbGlnbi1xdWlsbCBsaWJzLXVpLWljb24tYWxpZ24tY2VudGVyJ1xuICAgIH0sXG4gICAge1xuICAgICAga2V5OiBcImFsaWduLnJpZ2h0XCIsXG4gICAgICBpY29uOiAnYWxpZ24tcXVpbGwgbGlicy11aS1pY29uLWFsaWduLXJpZ2h0J1xuICAgIH0sXG4gICAge1xuICAgICAga2V5OiBcImFsaWduLmp1c3RpZnlcIixcbiAgICAgIGljb246ICdhbGlnbi1xdWlsbCBsaWJzLXVpLWljb24tYWxpZ24tanVzdGlmeSdcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ3VuTGluaycsXG4gICAgICBpY29uOiAnbGlicy11aS1pY29uLWxpbmstYnJva2VuJ1xuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnZW1vamknLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi1mYWNlLXNtaWxlJ1xuICAgIH1cbiAgXTtcbn1cblxuZXhwb3J0IGNvbnN0IHVwbG9hZEltYWdlQ29uZmlnRGVmYXVsdCA9ICgpOiBJUXVpbGxVcGxvYWRJbWFnZUNvbmZpZyA9PiB7XG4gIHJldHVybiB7XG4gICAgbW9kZUN1c3RvbTogZmFsc2UsXG4gICAgekluZGV4OiAxMjAyLFxuICAgIHNob3dJY29uOiB0cnVlLFxuICAgIG1heEltYWdlU2l6ZTogNSAqIDEwMjQgKiAxMDI0LFxuICAgIG9ubHlBY2NlcHRJbWFnZUh0dHBzTGluazogZmFsc2UsXG4gICAgZnVuY3Rpb25VcGxvYWRJbWFnZTogYXN5bmMgKGZpbGVzOiBBcnJheTxGaWxlPikgPT4ge1xuICAgICAgY29uc3QgZGF0YSA9IFtdO1xuICAgICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgICAgIGRhdGEucHVzaChhd2FpdCBjb252ZXJ0RmlsZVRvQmFzZTY0X09iamVjdFVybChmaWxlKSlcbiAgICAgIH1cbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY29uc3QgbGlua0RlZmF1bHQgPSAoKTogSVF1aWxsTGluayA9PiB7XG4gIHJldHVybiB7XG4gICAgdGl0bGU6ICcnLFxuICAgIHVybDogJycsXG4gICAgcmFuZ2U6IHtcbiAgICAgIGluZGV4OiAwLFxuICAgICAgbGVuZ3RoOiAwXG4gICAgfVxuICB9O1xufVxuIl19
@@ -1,6 +1,6 @@
1
1
  import { NgTemplateOutlet } from '@angular/common';
2
2
  import * as i0 from '@angular/core';
3
- import { signal, input, output, Component, ChangeDetectionStrategy, computed, inject, model, viewChild, viewChildren, effect, untracked } from '@angular/core';
3
+ import { signal, input, output, ChangeDetectionStrategy, Component, computed, inject, model, viewChild, viewChildren, effect, untracked } from '@angular/core';
4
4
  import { LibsUiComponentsButtonsButtonComponent } from '@libs-ui/components-buttons-button';
5
5
  import { LibsUiComponentsButtonsSelectColorComponent } from '@libs-ui/components-buttons-select-color';
6
6
  import { LibsUiComponentsDropdownComponent } from '@libs-ui/components-dropdown';
@@ -10,7 +10,7 @@ import { LibsUiComponentsInputsValidComponent } from '@libs-ui/components-inputs
10
10
  import { LibsUiComponentsLabelComponent } from '@libs-ui/components-label';
11
11
  import { LibsUiComponentsPopoverComponent } from '@libs-ui/components-popover';
12
12
  import { LibsUiDynamicComponentService } from '@libs-ui/services-dynamic-component';
13
- import { patternUrl, convertFileToBase64, get, set, isNil, xssFilter, ERROR_MESSAGE_EMPTY_VALID, ERROR_MESSAGE_MIN_LENGTH, ERROR_MESSAGE_MAX_LENGTH, getLabelBySizeFile } from '@libs-ui/utils';
13
+ import { patternUrl, convertFileToBase64_ObjectUrl, get, set, isNil, xssFilter, ERROR_MESSAGE_EMPTY_VALID, ERROR_MESSAGE_MIN_LENGTH, ERROR_MESSAGE_MAX_LENGTH, getLabelBySizeFile } from '@libs-ui/utils';
14
14
  import * as i1 from '@ngx-translate/core';
15
15
  import { TranslateService, TranslateModule } from '@ngx-translate/core';
16
16
  import Quill from 'quill';
@@ -503,7 +503,7 @@ const uploadImageConfigDefault = () => {
503
503
  functionUploadImage: async (files) => {
504
504
  const data = [];
505
505
  for (const file of files) {
506
- data.push(await convertFileToBase64(file));
506
+ data.push(await convertFileToBase64_ObjectUrl(file));
507
507
  }
508
508
  return data;
509
509
  }
@@ -1 +1 @@
1
- {"version":3,"file":"libs-ui-components-inputs-quill.mjs","sources":["../../../../../../libs-ui/components/inputs/quill/src/blots-custom/div.component.ts","../../../../../../libs-ui/components/inputs/quill/src/blots-custom/image.component.ts","../../../../../../libs-ui/components/inputs/quill/src/blots-custom/mention.component.ts","../../../../../../libs-ui/components/inputs/quill/src/indent-attributor/indent-attributor.component.ts","../../../../../../libs-ui/components/inputs/quill/src/link/link.component.ts","../../../../../../libs-ui/components/inputs/quill/src/link/link.component.html","../../../../../../libs-ui/components/inputs/quill/src/upload-image/upload-image.component.ts","../../../../../../libs-ui/components/inputs/quill/src/upload-image/upload-image.component.html","../../../../../../libs-ui/components/inputs/quill/src/utils/quill.define.ts","../../../../../../libs-ui/components/inputs/quill/src/quill.component.ts","../../../../../../libs-ui/components/inputs/quill/src/quill.component.html","../../../../../../libs-ui/components/inputs/quill/src/libs-ui-components-inputs-quill.ts"],"sourcesContent":["import Quill from \"quill\";\n\nconst Block = Quill.import(\"blots/block\");\n\nexport class QuillDivBlot extends Block {\n static tagName = \"div\";\n}","import Quill from \"quill\";\n\nconst ImageFormat = Quill.import('formats/image');\n\nexport class CustomImageBlot extends ImageFormat {\n static create(value: string) {\n const node = super.create(value);\n node.classList.add('libs-ui-quill-format-image');\n return node;\n }\n\n formats() {\n return {}; // Tránh Quill tự động thêm thẻ `<span>`\n }\n}","import Quill from \"quill\";\n\nconst Embed = Quill.import(\"blots/embed\");\n\nexport class QuillMentionBlot extends Embed {\n static blotName = \"mention\";\n static tagName = \"span\";\n static className = \"libs-ui-quill-mention\";\n static create(data: { id: string, feId: string, value: string }) {\n const node = super.create();\n node.innerText += data.value;\n node.setAttribute('id', data.id);\n node.setAttribute('feId', data.feId);\n node.setAttribute('value', data.value);\n return node;\n }\n\n static value(domNode: HTMLElement) {\n return {\n id: domNode.getAttribute('id'),\n feId: domNode.getAttribute('feId'),\n value: domNode.getAttribute('value')\n };\n }\n\n attach() {\n super.attach();\n if (!this.mounted) {\n this.mounted = true;\n this.clickHandler = this.getClickHandler;\n this.domNode.addEventListener(\"click\", this.clickHandler, false);\n }\n }\n\n getClickHandler(event: Event) {\n event.stopPropagation();\n }\n}","import Quill from \"quill\";\n\nconst parchment = Quill.import('parchment');\nconst pixelLevels = [1, 2, 3, 4, 5, 6, 7, 8];\nconst tabMultiplier = 3;\n\nclass IndentAttributor extends (parchment.Attributor.Style as {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n new(formatName: string, styleProperty: string, attributorOptions: unknown): any;\n}) {\n constructor(formatName: string, styleProperty: string, attributorOptions: unknown) {\n super(formatName, styleProperty, attributorOptions);\n }\n\n public add(node: HTMLElement, value: string): boolean {\n return super.add(node, `${+value * tabMultiplier}em`);\n }\n\n public value(node: HTMLElement): number | undefined {\n return parseFloat(super.value(node)) / tabMultiplier || undefined; // Don't return NaN\n }\n}\n\nexport const indentStyle = new IndentAttributor('indent', 'margin-left', {\n scope: parchment.Scope.BLOCK,\n whitelist: pixelLevels.map(value => `${value * tabMultiplier}em`),\n});","import { ChangeDetectionStrategy, Component, input, OnInit, output, signal } from '@angular/core';\nimport { IInputValidFunctionControlEvent, LibsUiComponentsInputsValidComponent } from '@libs-ui/components-inputs-valid';\nimport { LibsUiComponentsModalComponent, TYPE_MODAL_EVENT } from '@libs-ui/components-modal';\nimport { patternUrl } from '@libs-ui/utils';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-inputs-quill-link',\n templateUrl: './link.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n LibsUiComponentsModalComponent,\n LibsUiComponentsInputsValidComponent\n ]\n})\nexport class LibsUiComponentsInputsQuillLinkComponent implements OnInit {\n\n protected dataLink = signal<{ title: string, link: string }>({ title: '', link: '' });\n protected patternLink = signal<RegExp>(patternUrl());\n\n private inputValidFunctionControl = signal<Array<IInputValidFunctionControlEvent>>([]);\n\n readonly zIndex = input<number>(1200);\n readonly title = input<string>();\n readonly link = input<string>();\n\n readonly outClose = output<void>();\n readonly outSaveLink = output<{ title: string, link: string }>();\n\n ngOnInit() {\n const title = this.title();\n const link = this.link();\n if (title || link) {\n this.dataLink.update(item => ({ ...item, title: title || '', link: link || '' }));\n }\n }\n\n protected async handlerFunctionsControl(event: IInputValidFunctionControlEvent) {\n this.inputValidFunctionControl.update(items => [...items, event]);\n }\n\n private async validate() {\n let valid = true;\n for (const control of this.inputValidFunctionControl()) {\n if (!(await control.checkIsValid())) {\n valid = false;\n }\n }\n return valid;\n }\n\n protected async handlerEvent(event: TYPE_MODAL_EVENT) {\n if (event !== 'agree') {\n this.outClose.emit();\n return;\n }\n if (await this.validate()) {\n this.outSaveLink.emit(this.dataLink());\n this.outClose.emit();\n }\n }\n\n}\n","<libs_ui-components-modal [title]=\"'i18n_insert_link'\"\n [mode]=\"'center'\"\n [height]=\"'auto'\"\n [width]=\"'598px'\"\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 [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 [labelConfig]=\"{labelLeft: 'Link', required: true}\"\n [(item)]=\"dataLink\"\n [fieldNameBind]=\"'link'\"\n [placeholder]=\"'https:/…'\"\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","import { ChangeDetectionStrategy, Component, input, output, signal } from '@angular/core';\nimport { IButton } from '@libs-ui/components-buttons-button';\nimport { LibsUiComponentsModalComponent, TYPE_MODAL_EVENT } from '@libs-ui/components-modal';\nimport { IQuillUploadImageConfig } from '../interfaces/quill.interface';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-inputs-quill-upload_image',\n templateUrl: './upload-image.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n LibsUiComponentsModalComponent\n ]\n})\nexport class LibsUiComponentsInputsQuillUploadImageComponent {\n\n protected buttonFooter = signal<Array<IButton>>([\n {\n type: 'button-third',\n label: 'i18n_cancel',\n action: async () => this.outClose.emit()\n },\n {\n label: 'i18n_save',\n action: () => this.handlerSaveImage()\n }]);\n protected disable = signal<boolean>(false);\n\n // private mediaFile =signal<IMediaFile | undefined>(undefined);\n // private mediaUploadFunctionControl =signal<IMediaUploadBaseFunctionControlEvent | undefined>(undefined);\n\n readonly uploadImageConfig = input.required<IQuillUploadImageConfig>();\n\n readonly outClose = output<string | void>();\n\n // protected handlerFunctionsControl(event: IMediaUploadBaseFunctionControlEvent) {\n // this.mediaUploadFunctionControl.set(event);\n // }\n\n // protected handlerChangeFile(event: IChangeFile) {\n // this.mediaFile.set(event.files[0]);\n // }\n\n private async handlerSaveImage() {\n // if (!await this.mediaUploadFunctionControl()?.checkIsValid()) {\n // return;\n // }\n // if (this.mediaFile?.origin_url) {\n // this.moClose.emit(this.mediaFile.origin_url);\n\n // return;\n // }\n // const body: IOptionsUploadMedia = {\n // do_not_delete: true,\n // file: this.mediaFile?.file,\n // option: 'thumb',\n // size: [{ 'width': '200', 'height': '200' }]\n // };\n\n // this.disable = true;\n // try {\n // const params = new HttpParamsRequest({ fromObject: { pem: BUILD_PEM_OBJECT({ isCheck: 0, action: DefineConstants.PERMISSION_ACTION_VIEW, pathCheck: '/other' }) } });\n // const res = await this.mediaService.uploadImage(params, body);\n\n // this.moClose.emit(res.data?.url);\n // } catch (error) {\n // console.log(error);\n\n // this.pushMessageService.showCompTypeText('i18n_notification_manipulation_not_success', undefined, undefined, { timeRemove: 2000, type: 'error' });\n // this.moClose.emit();\n // } finally {\n // this.disable = false;\n // }\n }\n\n protected handlerEventModal(event: TYPE_MODAL_EVENT) {\n if (event === 'close') {\n this.outClose.emit();\n }\n }\n}\n","<libs_ui-components-modal [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 ư\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 (moFunctionsControl)=\"handlerFunctionsControl($event)\">\n </libs-uicomponents-media-upload> -->\n </div>\n</libs_ui-components-modal>\n","import { signal } from '@angular/core';\nimport { IListConfigItem } from '@libs-ui/components-list';\nimport { returnListObject } from '@libs-ui/services-http-request';\nimport { IQuillLink, IQuillToolbarConfig, IQuillUploadImageConfig, TYPE_MODE_BAR_CONFIG_OPTION } from '../interfaces/quill.interface';\nimport { convertFileToBase64 } from '@libs-ui/utils';\n\nexport const listDataAlign = () => {\n return [\n { key: '', icon: 'libs-ui-icon-align-left text-[#6a7383] text-[16px] hover:text-[var(--libs-ui-color-light-1)]' },\n { key: 'right', icon: 'libs-ui-icon-align-right text-[#6a7383] text-[16px] hover:text-[var(--libs-ui-color-light-1)]' },\n { key: 'center', icon: 'libs-ui-icon-align-center text-[#6a7383] text-[16px] hover:text-[var(--libs-ui-color-light-1)]' },\n { key: 'justify', icon: 'libs-ui-icon-align-justify text-[#6a7383] text-[16px] hover:text-[var(--libs-ui-color-light-1)]' },\n ];\n};\n\nexport const listFont = () => {\n return [\n { key: '', label: 'Sans Serif' },\n { key: 'serif', label: 'Serif' },\n { key: 'monospace', label: 'Monospace' },\n ];\n};\n\nexport const listConfigAlign = (): IListConfigItem => {\n return {\n type: 'text',\n autoSelectFirstItem: true,\n httpRequestData: signal({\n serviceOther: returnListObject(listDataAlign()),\n functionName: 'list',\n argumentsValue: []\n }),\n configTemplateText: signal({\n fieldKey: 'key',\n getClassItem: () => '!px-[8px] !py-[4px]',\n getValue: item => `<i class='flex ${item.icon}'></i>`,\n ignoreIconSelected: true\n })\n };\n};\n\nexport const listConfigFont = (): IListConfigItem => {\n return {\n type: 'text',\n autoSelectFirstItem: true,\n httpRequestData: signal({\n serviceOther: returnListObject(listFont()),\n functionName: 'list',\n argumentsValue: []\n }),\n configTemplateText: signal({\n fieldKey: 'key',\n getValue: item => item.label,\n ignoreIconSelected: true\n })\n };\n};\n\nexport const toolBarOptions = (mode: TYPE_MODE_BAR_CONFIG_OPTION, hasIconImage: boolean, hasIconPersonalize: boolean): Array<IQuillToolbarConfig> => {\n return ([\n {\n type: 'undo',\n classInclude: 'mr-[8px]',\n mode: ['default', 'basic'],\n width: 24\n },\n {\n type: 'redo',\n mode: ['default', 'basic'],\n width: 32\n },\n {\n type: 'line',\n mode: ['default', 'basic'],\n width: 1\n },\n {\n type: 'fontFamily',\n classInclude: 'ml-[8px] mr-[2px]',\n mode: ['default'],\n width: 138\n },\n {\n type: 'fontSize',\n classInclude: 'ml-[2px] mr-[8px]',\n mode: ['default'],\n width: 82\n },\n {\n type: 'line',\n mode: ['default'],\n width: 1\n },\n {\n type: 'color',\n mode: ['default', 'basic'],\n width: 32\n },\n {\n type: 'background',\n mode: ['default'],\n width: 32\n },\n {\n type: 'line',\n mode: ['default', 'basic'],\n width: 1\n },\n {\n type: 'bold',\n mode: ['default', 'basic'],\n width: 32\n },\n {\n type: 'italic',\n mode: ['default', 'basic'],\n width: 32\n },\n {\n type: 'underline',\n mode: ['default', 'basic'],\n width: 32\n },\n {\n type: 'strikeThrough',\n mode: ['default'],\n width: 32\n },\n {\n type: 'line',\n mode: ['default', 'basic'],\n width: 1\n },\n {\n type: 'adjust',\n mode: ['default'],\n width: 52\n },\n {\n type: 'line',\n mode: ['default'],\n width: 32\n },\n {\n type: 'indentIncrease',\n mode: ['default'],\n width: 32\n },\n {\n type: 'indentDecrease',\n mode: ['default'],\n width: 32\n },\n {\n type: 'listBulleted',\n mode: ['default'],\n width: 32\n },\n {\n type: 'listNumbered',\n mode: ['default'],\n width: 32\n },\n {\n type: 'line',\n mode: ['default'],\n width: 1\n },\n {\n type: 'personalize',\n mode: ['default'],\n width: 32\n },\n {\n type: 'blockquote',\n mode: ['default'],\n width: 32\n },\n {\n type: 'link',\n mode: ['default', 'basic'],\n width: 32\n },\n {\n type: 'unLink',\n mode: ['default', 'basic'],\n width: 32\n },\n {\n type: 'image',\n mode: ['default'],\n width: 32\n },\n {\n type: 'emoji',\n classInclude: 'ml-[8px]',\n mode: ['default'],\n width: 24\n }\n ] as Array<IQuillToolbarConfig>).filter(item => {\n if (!item.mode?.includes(mode)) {\n return false;\n }\n if (item.type === 'image') {\n return hasIconImage;\n }\n if (item.type === 'personalize') {\n return hasIconPersonalize;\n }\n\n return true;\n\n });\n}\nexport const iconList = (): Array<{ key: string, icon: string }> => {\n return [\n {\n key: 'bold',\n icon: 'libs-ui-icon-editor-bold',\n },\n {\n key: 'italic',\n icon: 'libs-ui-icon-editor-italic',\n },\n {\n key: 'underline',\n icon: 'libs-ui-icon-editor-underlined',\n },\n {\n key: 'image',\n icon: 'libs-ui-icon-image-solid'\n },\n {\n key: 'link',\n icon: 'libs-ui-icon-link'\n },\n {\n key: 'undo',\n icon: 'libs-ui-icon-undo'\n },\n {\n key: 'redo',\n icon: 'libs-ui-icon-undo scale-x-[-1]'\n },\n {\n key: 'strike',\n icon: 'libs-ui-icon-editor-strike-through'\n },\n {\n key: 'blockquote',\n icon: 'libs-ui-icon-quote'\n },\n {\n key: 'ordered',\n icon: 'libs-ui-icon-list-numbered'\n },\n {\n key: 'bullet',\n icon: 'libs-ui-icon-list-bulleted'\n },\n {\n key: 'background',\n icon: 'libs-ui-icon-editor-color-background'\n },\n {\n key: 'color',\n icon: 'libs-ui-icon-editor-color-text'\n },\n {\n key: \"indent.-1\",\n icon: 'libs-ui-icon-indent-decrease'\n },\n {\n key: \"indent.+1\",\n icon: 'libs-ui-icon-indent-increase'\n },\n {\n key: \"align.\",\n icon: 'align-quill libs-ui-icon-align-left'\n },\n {\n key: \"align.center\",\n icon: 'align-quill libs-ui-icon-align-center'\n },\n {\n key: \"align.right\",\n icon: 'align-quill libs-ui-icon-align-right'\n },\n {\n key: \"align.justify\",\n icon: 'align-quill libs-ui-icon-align-justify'\n },\n {\n key: 'unLink',\n icon: 'libs-ui-icon-link-broken'\n },\n {\n key: 'emoji',\n icon: 'libs-ui-icon-face-smile'\n }\n ];\n}\n\nexport const uploadImageConfigDefault = (): IQuillUploadImageConfig => {\n return {\n modeCustom: false,\n zIndex: 1202,\n showIcon: true,\n maxImageSize: 5 * 1024 * 1024,\n onlyAcceptImageHttpsLink: false,\n functionUploadImage: async (files: Array<File>) => {\n const data = [];\n for (const file of files) {\n data.push(await convertFileToBase64(file))\n }\n return data;\n }\n }\n}\n\nexport const linkDefault = (): IQuillLink => {\n return {\n title: '',\n url: '',\n range: {\n index: 0,\n length: 0\n }\n };\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { AfterViewInit, ChangeDetectionStrategy, Component, ComponentRef, computed, effect, ElementRef, inject, input, model, OnDestroy, OnInit, output, signal, TemplateRef, untracked, viewChild, viewChildren } from '@angular/core';\nimport { LibsUiComponentsButtonsButtonComponent } from '@libs-ui/components-buttons-button';\nimport { LibsUiComponentsButtonsSelectColorComponent } from '@libs-ui/components-buttons-select-color';\nimport { IEmitSelectKey, LibsUiComponentsDropdownComponent } from '@libs-ui/components-dropdown';\nimport { LibsUiComponentsEmojiComponent } from '@libs-ui/components-inputs-emoji';\nimport { IMentionConfig, IMentionInsert, LibsUiComponentsInputsMentionDirective } from '@libs-ui/components-inputs-mention';\nimport { IValidLength, IValidRequired, LibsUiComponentsInputsValidComponent } from '@libs-ui/components-inputs-valid';\nimport { ILabel, LibsUiComponentsLabelComponent } from '@libs-ui/components-label';\nimport { IListConfigItem } from '@libs-ui/components-list';\nimport { IPopoverFunctionControlEvent, LibsUiComponentsPopoverComponent, TYPE_POPOVER_EVENT } from '@libs-ui/components-popover';\nimport { TYPE_OBJECT, TYPE_TEMPLATE_REF } from '@libs-ui/interfaces-types';\nimport { LibsUiDynamicComponentService } from '@libs-ui/services-dynamic-component';\nimport { ERROR_MESSAGE_EMPTY_VALID, ERROR_MESSAGE_MAX_LENGTH, ERROR_MESSAGE_MIN_LENGTH, get, getLabelBySizeFile, isNil, patternUrl, set, xssFilter } from '@libs-ui/utils';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport Quill, { RangeStatic, Sources, StringMap } from 'quill';\nimport { fromEvent, lastValueFrom, Subject, takeUntil, timer } from 'rxjs';\nimport { QuillDivBlot } from './blots-custom/div.component';\nimport { CustomImageBlot } from './blots-custom/image.component';\nimport { QuillMentionBlot } from './blots-custom/mention.component';\nimport { indentStyle } from './indent-attributor/indent-attributor.component';\nimport { IQuillBlotRegister, IQuillFunctionControlEvent, IQuillLink, IQuillSelectionChange, IQuillTextChange, IQuillToolbarConfig, IQuillUploadImageConfig, TYPE_MODE_BAR_CONFIG_OPTION } from './interfaces/quill.interface';\nimport { LibsUiComponentsInputsQuillLinkComponent } from './link/link.component';\nimport { LibsUiComponentsInputsQuillUploadImageComponent } from './upload-image/upload-image.component';\nimport { iconList, linkDefault, listConfigAlign, listConfigFont, listFont, toolBarOptions, uploadImageConfigDefault } from './utils/quill.define';\nimport { LibsUiComponentsSpinnerComponent } from '@libs-ui/components-spinner';\nimport { LibsUiNotificationService } from '@libs-ui/services-notification';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-inputs-quill',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './quill.component.html',\n styleUrl: './quill.component.scss',\n imports: [\n TranslateModule, NgTemplateOutlet, LibsUiComponentsInputsMentionDirective,\n LibsUiComponentsLabelComponent, LibsUiComponentsDropdownComponent,\n LibsUiComponentsPopoverComponent, LibsUiComponentsButtonsSelectColorComponent,\n LibsUiComponentsInputsValidComponent, LibsUiComponentsEmojiComponent,\n LibsUiComponentsButtonsButtonComponent, LibsUiComponentsSpinnerComponent\n ]\n})\nexport class LibsUiComponentsInputsQuillComponent implements OnInit, AfterViewInit, OnDestroy {\n protected loadingUploadImage = signal<boolean>(false);\n protected readonly timeDelayInit = signal<number>(20);\n protected messageError = signal<string>('');\n protected display = signal<boolean>(false);\n protected listConfigAlign = signal<IListConfigItem>(listConfigAlign());\n protected alignSelected = signal<IEmitSelectKey | undefined>(undefined);\n protected iconAlignSelectedComputed = computed(() => get(this.alignSelected(), 'item.icon'));\n protected listConfigFont = signal<IListConfigItem>(listConfigFont());\n protected fontSelected = signal<IEmitSelectKey | undefined>(undefined);\n protected labelFontSelectedComputed = computed(() => get(this.fontSelected(), 'item.label') || 'Sans Serif');\n protected size = signal<{ value: number }>({ value: 14 });\n protected itemHiddenExpand = signal<Array<number>>([]);\n protected itemHidden = signal<Array<number>>([]);\n protected showMoreAction = signal<boolean>(false);\n protected link = signal<IQuillLink>(linkDefault());\n protected toolbarOptionsConfig = computed(() => {\n const type = this.toolbarConfig()?.type || 'default';\n const hasIconImage = this.uploadImageConfig().showIcon ?? false;\n const hasIconPersonalize = !!this.templateToolBarPersonalize();\n\n return this.toolbarConfig()?.config || toolBarOptions(type, hasIconImage, hasIconPersonalize);\n });\n\n private timeCalculationToolBar = signal<number | undefined>(undefined);\n private popoverFunctionControl = signal<IPopoverFunctionControlEvent | undefined>(undefined);\n private quill = signal<Quill | undefined>(undefined);\n private handlers = signal<Record<string, (...params: Array<unknown>) => void>>({ undo: this.handleUndo.bind(this), redo: this.handleRedo.bind(this) });\n private showMention = signal<boolean>(false);\n private addEditLinkComponentRef = signal<ComponentRef<LibsUiComponentsInputsQuillLinkComponent> | undefined>(undefined);\n private uploadImageComponentRef = signal<ComponentRef<LibsUiComponentsInputsQuillUploadImageComponent> | undefined>(undefined);\n private onDestroy = new Subject<void>();\n private dynamicComponentService = inject(LibsUiDynamicComponentService);\n private translate = inject(TranslateService);\n\n readonly isShowToolBar = input<boolean, boolean | undefined>(true, { transform: val => val ?? true });\n readonly isToolbarPositionFixed = input<boolean, boolean | undefined>(false, { transform: val => val ?? false });\n readonly classIncludeToolbar = input<string>('');\n readonly stylesIncludeToolbar = input<TYPE_OBJECT>();\n readonly toolbarConfig = input<{\n type: TYPE_MODE_BAR_CONFIG_OPTION;\n config?: Array<IQuillToolbarConfig>;\n }>();\n readonly placeholder = input<string, string | undefined>('i18n_import_content', { transform: (value) => value || 'i18n_import_content' });\n readonly label = input<ILabel | undefined>();\n readonly item = model<Record<string, unknown>>();\n readonly fieldNameBind = input<string>('value');\n readonly readonly = input<boolean>();\n readonly showErrorLabel = input<boolean>(true);\n readonly showErrorBorder = input<boolean>(false);\n readonly onlyShowErrorBorderInContent = input<boolean>(false);\n readonly classIncludeTemplate = input<string>();\n readonly classInclude = input<string>();\n readonly handlersExpand = input<Array<{ title: string, action: () => void }>>();\n readonly validRequired = input<IValidRequired>();\n readonly validMinLength = input<IValidLength>();\n readonly validMaxLength = input<IValidLength>();\n readonly zIndex = input<number, number | undefined>(1201, { transform: (value) => value || 1201 });\n readonly dataConfigMention = input<IMentionConfig>();\n readonly blotsRegister = input<Array<IQuillBlotRegister>>();\n readonly heightAuto = input<boolean>();\n readonly autoFocus = input<boolean>();\n readonly focusBottom = input<boolean>();\n readonly blockUndoRedoKeyboard = input<boolean>();\n readonly templateToolBarPersonalize = input<TemplateRef<TYPE_TEMPLATE_REF>>();\n readonly template = input<TemplateRef<TYPE_TEMPLATE_REF>>();\n readonly uploadImageConfig = input<IQuillUploadImageConfig, IQuillUploadImageConfig | undefined>(uploadImageConfigDefault(), { transform: (value) => value || uploadImageConfigDefault() });\n\n readonly outMessageError = output<string>();\n readonly outBlur = output<void>();\n readonly outFocus = output<void>();\n readonly outChange = output<string>();\n readonly outFunctionsControl = output<IQuillFunctionControlEvent>();\n readonly outSelectionChange = output<IQuillSelectionChange>();\n readonly outTextChange = output<IQuillTextChange>();\n readonly outContextMenu = output<MouseEvent>();\n\n readonly wrapperEditorEl = viewChild<ElementRef>('wrapperEditor');\n readonly editorEl = viewChild<ElementRef>('editor');\n readonly quillOptionEl = viewChild<ElementRef>('quillOption');\n readonly quillEditorEl = viewChild<ElementRef>('quillEditor');\n readonly toolbarItemsEl = viewChild<ElementRef>('toolbarItems');\n readonly itemsEl = viewChildren<ElementRef>('item');\n\n private notificationService = inject(LibsUiNotificationService);\n\n constructor() {\n effect(() => {\n if (this.toolbarItemsEl()?.nativeElement) {\n untracked(() => {\n this.calculatorToolbar();\n });\n }\n });\n }\n\n ngOnInit() {\n this.outFunctionsControl.emit({\n checkIsValid: this.validate.bind(this),\n setContent: this.setContent.bind(this),\n insertText: this.insertText.bind(this),\n insertLink: this.insertLink.bind(this),\n insertImage: this.insertImage.bind(this),\n setFontSize: this.setFontSize.bind(this),\n setColor: async (color: string) => this.setStyle('color', color),\n setBackground: async (color: string) => this.setStyle('background', color),\n quill: () => this.quill() as Quill\n });\n }\n\n async ngAfterViewInit() {\n this.setHandlerFunction();\n await lastValueFrom(timer(this.timeDelayInit()));\n this.initQuill();\n this.display.set(true);\n\n this.setContent(get(this.item(), this.fieldNameBind(), ''));\n this.handlerTextChange();\n this.handlerSelectionChange();\n this.handlerPaste();\n if (!this.autoFocus()) {\n // gọi hàm này để quill đánh dấu là đã focus trong khi quill chưa khởi tạo xong để không bị scroll xuống dưới.sau khi quill khởi tạo xong và check nếu đang focus đang được bật thì nó không gọi lại hàm focus nữa\n this.quill()?.focus();\n }\n fromEvent(window, 'resize').pipe(takeUntil(this.onDestroy)).subscribe(this.calculatorToolbar.bind(this));\n await lastValueFrom(timer(400));\n const cursorSpan = this.quill()?.root.querySelector('.ql-cursor');\n if (cursorSpan) {\n cursorSpan.remove();\n }\n }\n\n private initQuill() {\n const size = Quill.import('attributors/style/size');\n const alignStyle = Quill.import('attributors/style/align');\n const icons = Quill.import('ui/icons');\n const italic = Quill.import('formats/italic');\n const bold = Quill.import('formats/bold');\n size.whitelist = ['8px', '9px', '10px', '11px', '12px', '13px', '14px', '15px', '16px', '17px', '18px', '19px', '20px', '21px', '22px', '23px', '24px', '25px', '26px', '27px', '28px', '29px', '30px', '31px', '32px', '33px', '34px', '35px', '36px', '37px', '38px', '39px', '40px', '41px', '42px', '43px', '44px', '45px', '46px', '47px', '48px', '49px', '50px', '51px', '52px', '53px', '54px', '55px', '56px', '57px', '58px', '59px', '60px', '61px', '62px', '63px', '64px', '65px', '66px', '67px', '68px', '69px', '70px', '71px', '72px'];\n\n italic.tagName = 'i';\n bold.tagName = 'b';\n Quill.register(bold, true);\n Quill.register(italic, true);\n Quill.register(size, true);\n Quill.register(CustomImageBlot, true);\n Quill.register(QuillDivBlot, true);\n Quill.register(alignStyle, true);\n Quill.register(QuillMentionBlot, true);\n this.blotsRegister()?.forEach(item => {\n Quill.register(item.component, true);\n });\n Quill.register({ 'formats/indent': indentStyle }, true);\n fromEvent<MouseEvent>(this.quillEditorEl()?.nativeElement, 'contextmenu').pipe(takeUntil(this.onDestroy)).subscribe(e => this.outContextMenu.emit(e));\n iconList().forEach(element => set(icons, element.key, `<span class=\"${element.icon} hover:text-[var(--libs-ui-color-light-1)] text-[16px] text-[#6a7383]\"></span>`));\n this.quill.set(new Quill(this.quillEditorEl()?.nativeElement, {\n modules: {\n toolbar: {\n container: this.quillOptionEl()?.nativeElement,\n handlers: this.handlers()\n },\n clipboard: {\n matchVisual: false\n },\n history: {\n delay: 1000,\n maxStack: 100,\n userOnly: false\n },\n keyboard: {\n bindings: {\n enter: {\n key: 13,\n handler: () => this.showMention() ? false : true\n }\n }\n }\n },\n readOnly: this.readonly(),\n placeholder: this.translate.instant(this.placeholder()),\n theme: 'snow',\n bounds: this.heightAuto() ? this.wrapperEditorEl()?.nativeElement : this.quillEditorEl()?.nativeElement,\n scrollingContainer: this.heightAuto() ? this.wrapperEditorEl()?.nativeElement : null\n }));\n\n this.quill()?.keyboard.addBinding({ key: 'Backspace' }, this.noPreventEmbedDeletion.bind(this));\n this.quill()?.keyboard.addBinding({ key: 'Delete' }, this.noPreventEmbedDeletion.bind(this));\n this.setupUndoRedoBlocking();\n }\n\n private setupUndoRedoBlocking(): void {\n const editorRoot = this.quill()?.root;\n if (editorRoot && this.blockUndoRedoKeyboard()) {\n const keydownHandler = (e: KeyboardEvent) => {\n const isUndo = (e.key === 'z' || e.key === 'Z') && (e.ctrlKey || e.metaKey) && !e.shiftKey;\n const isRedo = ((e.key === 'z' || e.key === 'Z') && (e.ctrlKey || e.metaKey) && e.shiftKey) ||\n ((e.key === 'y' || e.key === 'Y') && e.ctrlKey);\n\n if (isUndo || isRedo) {\n e.preventDefault();\n e.stopPropagation();\n console.log(`Blocking ${isUndo ? 'undo' : 'redo'} keyboard shortcut`);\n }\n };\n\n editorRoot.addEventListener('keydown', keydownHandler, true);\n\n this.onDestroy.subscribe(() => {\n editorRoot.removeEventListener('keydown', keydownHandler, true);\n });\n }\n }\n\n\n private noPreventEmbedDeletion(range: RangeStatic): boolean {\n if (!this.quill()) return false;\n const delta = this.quill()?.getContents(range.index, 1);\n\n if (delta?.ops.some(option => this.blotsRegister()?.find(item => get(option.insert, item.component['blotName']) && item.ignoreDelete))) {\n return false; // Ngăn không cho Quill xử lý xóa\n }\n\n return true;\n\n }\n\n private setHandlerFunction() {\n this.handlers.update(item => ({ ...item, image: this.handlerShowUploadImage.bind(this), emoji: () => { return } }))\n let link = false;\n const handlersExpand = this.handlersExpand();\n if (handlersExpand && handlersExpand.length) {\n handlersExpand.forEach(element => {\n if (element.title && element.action) {\n if (element.title === 'link') {\n link = true;\n }\n this.handlers.update(item => ({ ...item, [element.title]: element.action }));\n }\n });\n }\n if (!link) {\n this.handlers.update(item => ({ ...item, link: this.handleShowUploadLink.bind(this), unLink: this.handlerUnInsertLink.bind(this) }));\n }\n }\n\n private adjustIndexForImages(index: number) {\n const content = this.quill()?.root;\n let imageCount = 0;\n let adjustedIndex = 0;\n const adjustTextIndex = (node: Node) => {\n if (adjustedIndex > index) {\n return;\n }\n if (node.nodeType === Node.TEXT_NODE) {\n adjustedIndex += node.textContent?.length || 0;\n return;\n }\n if (node.nodeType === Node.ELEMENT_NODE && node.nodeName === 'IMG') {\n if (adjustedIndex <= index) {\n imageCount++;\n }\n return;\n }\n if (node.nodeType === Node.ELEMENT_NODE) {\n Array.from(node.childNodes).forEach(adjustTextIndex);\n }\n };\n adjustTextIndex(content as Node);\n return imageCount;\n };\n\n\n private handlerSelectionChange() {\n this.quill()?.on('selection-change', (range: RangeStatic, oldRange: RangeStatic, source: Sources) => {\n if (this.readonly()) {\n return;\n }\n if (range === null && oldRange !== null) {\n this.outBlur.emit();\n return;\n }\n if (range !== null && oldRange === null) {\n this.outFocus.emit();\n return;\n }\n const format = this.quill()?.getFormat();\n if (format) {\n this.getFont(format);\n this.getFontSize(format);\n }\n this.outSelectionChange.emit({\n quill: this.quill() as Quill,\n range,\n oldRange,\n source\n });\n if (range.length === 0 && format?.link && source === 'user') {\n const selection = document.getSelection();\n const anchorNode = selection?.anchorNode;\n let linkNode = anchorNode as HTMLAnchorElement;\n while (linkNode && linkNode.tagName !== 'A') {\n linkNode = linkNode.parentNode as HTMLAnchorElement;\n }\n if (linkNode && linkNode.tagName === 'A') {\n const linkText = linkNode.innerText;\n const linksIndices: Array<number> = [];\n let indexReturn: number | undefined = -1;\n while (!isNil(indexReturn) && indexReturn < range.index) {\n const textContent = this.quill()?.getText();\n const linkIndex = textContent?.indexOf(linkText, linksIndices.length > 0 ? linksIndices[linksIndices.length - 1] + linkText.length : 0);\n if (!isNil(linkIndex)) {\n if (linkIndex !== -1) {\n linksIndices.push(linkIndex);\n indexReturn = linkIndex + linkText.length;\n }\n if (linkIndex === -1) {\n indexReturn = undefined;\n }\n }\n }\n if (linksIndices && linksIndices.length) {\n const rangeIndex = linksIndices[linksIndices.length - 1];\n const countImage = this.adjustIndexForImages(rangeIndex)\n setTimeout(() => {\n this.link.set({\n title: linkText,\n url: linkNode.href,\n range: {\n index: rangeIndex + countImage,\n length: linkText.length\n }\n })\n this.popoverFunctionControl()?.showPopover(linkNode)\n }, 250);\n }\n }\n }\n });\n }\n\n private handlerPaste() {\n set(this.quill, 'root.onpaste', async (event: ClipboardEvent) => {\n if (!event || !event.clipboardData) {\n return;\n }\n const files = event.clipboardData.files;\n if (!files.length) {\n return;\n }\n event.preventDefault();\n await this.uploadImagesAndInsert(files);\n });\n }\n\n private handlerTextChange() {\n this.quill()?.on('text-change', (event) => {\n this.outTextChange.emit({\n quill: this.quill() as Quill,\n delta: event\n });\n const html = this.quill()?.root.innerHTML;\n setTimeout(() => {\n if (event?.ops[1]?.insert === '\\n') {\n const range = { index: event?.ops[0].retain as number };\n const currentLeaf = this.quill()?.getLeaf(range.index)[0];\n const nextLeaf = this.quill()?.getLeaf(range.index + 1)[0];\n this.quill()?.insertEmbed(range.index, 'break', true, 'user');\n if (nextLeaf === null || currentLeaf.parent !== nextLeaf.parent) {\n this.quill()?.insertEmbed(range.index, 'break', true, 'user');\n }\n this.quill()?.setSelection((range.index || 0) + 1, 0, Quill.sources.SILENT);\n }\n });\n if (html === '<div><br></div>' || html === '<div style=\"text-align: justify;\"><br></div>' || !this.quill()?.getText()) {\n set(this.item(), this.fieldNameBind(), '');\n this.validate();\n this.outChange.emit(get(this.item(), this.fieldNameBind()));\n return;\n }\n this.convertInnerHTML();\n this.validate();\n this.outChange.emit(get(this.item(), this.fieldNameBind()));\n });\n }\n\n protected handlerPopoverFunctionControl(event: IPopoverFunctionControlEvent) {\n this.popoverFunctionControl.set(event);\n }\n\n protected handlerPopoverEvent(event: TYPE_POPOVER_EVENT) {\n if (event === 'remove') {\n this.link.set(linkDefault());\n }\n }\n\n protected handlerUnlink(event: Event) {\n event.stopPropagation();\n const link = this.link();\n this.quill()?.formatText(link.range.index, link.range.length, { link: false });\n this.popoverFunctionControl()?.removePopoverOverlay();\n }\n\n protected handlerEdit(event: Event) {\n event.stopPropagation();\n const link = this.link();\n this.handleShowUploadLink(link);\n this.popoverFunctionControl()?.removePopoverOverlay();\n }\n\n private calculatorToolbar() {\n this.timeCalculationToolBar.set(setTimeout(() => {\n const toolbarWidth = this.toolbarItemsEl()?.nativeElement.offsetWidth || 0;\n\n let totalWidth = 28;\n const hiddenItems: Array<number> = [];\n const hiddenItemsExpand: Array<number> = [];\n\n this.toolbarOptionsConfig().forEach((item, index) => {\n totalWidth += item.width;\n if (item.type === 'line') {\n const nextItemWidth = totalWidth + this.toolbarOptionsConfig()[+index + 1].width;\n if (nextItemWidth > toolbarWidth) {\n hiddenItemsExpand.push(+index);\n return;\n }\n }\n if (totalWidth > toolbarWidth) {\n hiddenItems.push(+index);\n\n return;\n }\n });\n this.itemHidden.set(hiddenItems);\n this.itemHiddenExpand.set(hiddenItemsExpand);\n }, 500));\n }\n\n protected setStyle(type: string, data: string | number) {\n this.quill()?.format(type, data);\n }\n\n private getFontSize(format: StringMap) {\n const fontSize = format?.size?.toString()?.replace('px', '');\n if (isNaN(parseFloat(fontSize))) {\n this.size.set({ value: 14 });\n return;\n }\n this.size.set({ value: parseFloat(fontSize) });\n }\n\n private getFont(format: StringMap) {\n const font = listFont().find((item) => item.key === format.font);\n if (!font) {\n this.fontSelected.set({ key: '', item: listFont().find((item) => item.key === '') });\n return;\n }\n this.fontSelected.set({ key: format.font, item: font });\n }\n\n protected handleUndo() {\n this.quill()?.history?.undo();\n }\n\n protected handleRedo() {\n this.quill()?.history?.redo();\n }\n\n protected async setContent(content: string) {\n const contentXssFilter = (await xssFilter(content || '')).replace(/^\\s*<p><br><\\/p>/, '').replace(/[\\u200B-\\u200D\\uFEFF]/g, '');\n await lastValueFrom(timer(1));\n set(this.quill, 'root.innerHTML', contentXssFilter);\n if (!this.autoFocus()) {\n return;\n }\n await lastValueFrom(timer(100));\n const target = this.quillEditorEl()?.nativeElement.querySelector('[contenteditable=\"true\"]');\n const contentScroll = this.heightAuto() ? this.wrapperEditorEl()?.nativeElement : target;\n contentScroll.scrollTop = contentScroll.scrollHeight;\n if (this.focusBottom()) {\n this.quill()?.setSelection(contentXssFilter.length, 0, Quill.sources.SILENT);\n return;\n }\n this.quill()?.setSelection(0, 0, Quill.sources.SILENT);\n }\n\n protected handlerAddEmoji(emoji: unknown) {\n this.insertText(emoji as string, undefined, true);\n }\n\n protected handleShowUploadLink(event: unknown) {\n this.addEditLinkComponentRef.set(this.dynamicComponentService.resolveComponentFactory(LibsUiComponentsInputsQuillLinkComponent));\n const instance = this.addEditLinkComponentRef()?.instance;\n const selection = this.quill()?.getSelection();\n const textSelected = selection?.length ? this.quill()?.getText(selection?.index, selection?.length) : '';\n const data = event as IQuillLink | undefined;\n this.addEditLinkComponentRef()?.setInput('zIndex', this.zIndex());\n this.addEditLinkComponentRef()?.setInput('title', data?.title || textSelected);\n this.addEditLinkComponentRef()?.setInput('link', data?.url || '');\n instance?.outSaveLink.subscribe((item: { title: string, link: string }) => {\n if (data instanceof Object && data.url) {\n this.quill()?.deleteText(data.range.index, data.range.length, Quill.sources.USER);\n this.quill()?.insertText(data.range.index, item.title, 'link', item.link);\n return;\n }\n this.insertLink(item.title, item.link);\n });\n instance?.outClose.subscribe(() => this.dynamicComponentService.remove(this.addEditLinkComponentRef()));\n this.dynamicComponentService.addToBody(this.addEditLinkComponentRef());\n }\n\n protected handlerUnInsertLink() {\n const selection = this.quill()?.getSelection(true);\n if (!isNil(selection)) {\n this.quill()?.formatText(selection, 'link', false);\n }\n }\n\n protected async validate() {\n this.messageError.set('');\n const validRequired = this.validRequired();\n const item = this.item();\n const fieldNameBind = this.fieldNameBind();\n const value = get(item, fieldNameBind);\n if (validRequired && validRequired.isRequired && (!fieldNameBind || !value || !value.trim())) {\n this.messageError.set(validRequired.message || ERROR_MESSAGE_EMPTY_VALID);\n this.outMessageError.emit(this.messageError());\n return false;\n }\n const validMinLength = this.validMinLength();\n if (validMinLength && fieldNameBind && value && value.trim().length < validMinLength.length) {\n this.messageError.set(validMinLength.message || ERROR_MESSAGE_MIN_LENGTH);\n this.outMessageError.emit(this.messageError());\n return false;\n }\n const validMaxLength = this.validMaxLength();\n if (validMaxLength && fieldNameBind && value && value.trim().length > this.validMaxLength.length) {\n this.messageError.set(validMaxLength.message || ERROR_MESSAGE_MAX_LENGTH);\n this.outMessageError.emit(this.messageError());\n return false;\n }\n this.outMessageError.emit(this.messageError());\n return true;\n }\n\n protected async insertImage(content: string, index?: number) {\n const selection = index ?? this.quill()?.getSelection(true).index;\n if (!isNil(selection)) {\n this.quill()?.insertEmbed(selection, 'image', content);\n this.quill()?.setSelection(selection + 1, 0);\n }\n }\n\n private async insertText(content: string, index?: number, focusLast?: boolean) {\n index = index ?? this.quill()?.getSelection(true).index;\n if (!isNil(index)) {\n this.quill()?.insertText(index, content, Quill.sources.USER);\n if (focusLast) {\n await lastValueFrom(timer(0));\n this.quill()?.setSelection(index + content.length, 0, Quill.sources.USER);\n }\n }\n }\n\n private async insertLink(text: string, url: string, index?: number) {\n const selection = this.quill()?.getSelection(true);\n const indexInsert = index ?? selection?.index;\n if (selection?.length) {\n this.quill()?.deleteText(selection.index, selection.length, Quill.sources.USER);\n }\n if (!isNil(indexInsert)) {\n this.quill()?.insertText(indexInsert, text, 'link', url);\n }\n }\n\n private convertInnerHTML() {\n this.setStyleForContent();\n set(this.item(), this.fieldNameBind(), this.quill()?.root.innerHTML);\n }\n\n private setStyleForContent() {\n const styleArray = [\n { selector: '.ql-font-Arial', style: 'font-family: Arial' },\n { selector: '.ql-font-sans-serif', style: 'font-family: sans-serif' },\n { selector: '.ql-font-serif', style: 'font-family: serif' },\n { selector: '.ql-font-monospace', style: 'font-family: monospace' },\n { selector: '.ql-font-Helvetica', style: 'font-family: Helvetica' },\n { selector: '.libs-ui-quill-format-image', style: 'max-width: 100%; height: auto', overrideStyle: true },\n { selector: '.libs-ui-quill-mention', style: 'font-weight: 600;-moz-osx-font-smoothing: grayscale;-webkit-font-smoothing: antialiased; color: #7239EA', overrideStyle: true },\n { selector: 'blockquote', style: 'border-left: 4px solid #ccc; margin-bottom: 5px; margin-top: 5px; padding-left: 16px', overrideStyle: true }\n ];\n this.blotsRegister()?.forEach(item => {\n styleArray.push({ selector: `.${item.className}`, style: item.style, overrideStyle: true });\n });\n styleArray.forEach((item) => {\n const elements = this.quill()?.root.querySelectorAll(item.selector);\n elements?.forEach((element) => {\n if (item.overrideStyle) {\n element.setAttribute('style', item.style);\n return;\n }\n // Fixbug issue: https://admin-cv.mobio.vn/issues/49092\n let styleExist = element.getAttribute('style');\n if (styleExist) {\n ['font-family: Arial', 'font-family: sans-serif', 'font-family: serif', 'font-family: monospace', 'font-family: Helvetica'].forEach(font => {\n styleExist = (styleExist?.includes(`${font};`) ? styleExist?.replace(`${font};`, '') : styleExist?.replace(font, '')) as string;\n });\n }\n element.setAttribute('style', styleExist ? `${styleExist}${styleExist[styleExist.length - 1] === ';' ? '' : ';'}${item.style};` : item.style);\n });\n });\n }\n\n protected handleToggleMention(show: boolean) {\n this.showMention.set(show);\n }\n\n private handlerShowUploadImage() {\n if (this.uploadImageConfig().modeCustom) {\n this.uploadImageComponentRef.set(this.dynamicComponentService.resolveComponentFactory(LibsUiComponentsInputsQuillUploadImageComponent));\n const instance = this.uploadImageComponentRef()?.instance;\n this.uploadImageComponentRef()?.setInput('uploadImageConfig', this.uploadImageConfig());\n instance?.outClose.subscribe((link: string | void) => {\n this.dynamicComponentService.remove(this.uploadImageComponentRef());\n if (link) {\n this.insertImage(link);\n }\n });\n this.dynamicComponentService.addToBody(this.uploadImageComponentRef());\n\n return;\n }\n\n const input = document.createElement('input');\n input.setAttribute('type', 'file');\n input.setAttribute('accept', 'image/*');\n input.click();\n input.onchange = async () => {\n await this.uploadImagesAndInsert(input?.files);\n }\n }\n\n private async uploadImagesAndInsert(files?: FileList | null) {\n if (!files) {\n return;\n }\n const maxImageSize = this.uploadImageConfig()?.maxImageSize || 5 * 1024 * 1024;\n const images = Array.from(files).filter((file) => file && file.type.split('/')[0] === 'image' && (!this.uploadImageConfig().maxImageSize || file.size <= maxImageSize));\n if (!images.length) {\n this.notificationService.showCompTypeTextWarning(this.translate.instant('i18n_note_upload_image_volume', getLabelBySizeFile(maxImageSize)), { timeRemove: 8000 });\n return;\n }\n try {\n this.loadingUploadImage.set(true);\n const indexInsert = this.quill()?.getSelection(true).index;\n const links = await this.uploadImageConfig().functionUploadImage?.(images);\n if (!links?.length) {\n return;\n }\n links.forEach(link => {\n if (!link || (this.uploadImageConfig().onlyAcceptImageHttpsLink && (link instanceof ArrayBuffer || !new RegExp(patternUrl()).test(link)))) {\n return;\n }\n this.insertImage(link as string, indexInsert);\n });\n } catch (error) {\n console.error(error);\n } finally {\n this.loadingUploadImage.set(false);\n }\n return;\n }\n\n private insertMention(event: IMentionInsert) {\n const range = this.quill()?.getSelection();\n if (!range) {\n return;\n }\n const cursorPos = range.index;\n const startPosInsert = cursorPos - event.lengthKey;\n this.quill()?.deleteText(startPosInsert, event.lengthKey, Quill.sources.USER);\n this.quill()?.insertEmbed(startPosInsert, 'mention', event.data, Quill.sources.USER);\n this.insertText(' ', startPosInsert + 1);\n this.quill()?.setSelection(startPosInsert + 2, 0, Quill.sources.USER);\n }\n\n protected handlerInsertMention(data: IMentionInsert) {\n this.insertMention(data);\n }\n\n protected async setFontSize(size: number) {\n this.quill()?.format('size', `${size}px`);\n }\n\n protected handlerValueChange(value: number | string) {\n this.size.update(item => ({ ...item, value: value as number }));\n this.quill()?.format('size', `${this.size().value}px`);\n }\n\n protected handleSelectAlign(event: IEmitSelectKey | undefined) {\n this.alignSelected.set(event);\n this.setStyle('align', event?.key as string);\n }\n\n protected handleSelectFont(event: IEmitSelectKey | undefined) {\n this.fontSelected.set(event);\n this.setStyle('font', event?.key as string);\n }\n\n protected handlerChangeShowMoreAction(event: Event) {\n event.stopPropagation();\n this.showMoreAction.update(item => !item);\n }\n\n ngOnDestroy(): void {\n this.onDestroy.next();\n this.onDestroy.complete();\n this.dynamicComponentService.remove(this.addEditLinkComponentRef());\n this.dynamicComponentService.remove(this.uploadImageComponentRef());\n clearTimeout(this.timeCalculationToolBar());\n }\n}\n\n","<div class=\"flex flex-col w-full h-full\">\n @if (label(); as label) {\n <libs_ui-components-label [classInclude]=\"label.classInclude\"\n [required]=\"label.required\"\n [labelLeft]=\"label.labelLeft\" />\n }\n <div #wrapperEditor\n [attr.heightAuto]=\"heightAuto()\"\n [attr.isToolbarPositionFixed]=\"isToolbarPositionFixed()\"\n class=\"libs-ui-quill-wrapper w-full h-full relative flex flex-col\"\n [class.libs-ui-border-error-general]=\"messageError() && showErrorBorder() && !onlyShowErrorBorderInContent()\"\n [class.rounded-[4px]]=\"messageError() && showErrorBorder() && !onlyShowErrorBorderInContent()\">\n <div #editor\n class=\"libs-ui-quill\"\n [attr.showError]=\"messageError() && showErrorBorder() && onlyShowErrorBorderInContent()\"\n [class.!hidden]=\"!display()\">\n <div #quillOption\n [class.!hidden]=\"!isShowToolBar()\"\n [style]=\"stylesIncludeToolbar()\"\n [class.pointer-events-none]=\"readonly() || loadingUploadImage()\"\n class=\"{{ isToolbarPositionFixed() ? 'fixed !z-10 px-[8px] py-[4px] p-0 w-[500px] rounded-[4px] bg-[#ffffff] libs-ui-quill-toolbar-animation':'' }} {{ classIncludeToolbar() }}\"\n [class.bg-[#f8f9fa]]=\"!readonly() && !loadingUploadImage()\"\n [class.libs-ui-readonly-background]=\"readonly() || loadingUploadImage()\">\n <ng-container *ngTemplateOutlet=\"toolbar\"></ng-container>\n </div>\n <div #quillEditor\n LibsUiComponentsInputsMentionDirective\n [timeDelayInit]=\"timeDelayInit()+50\"\n [mentionConfig]=\"dataConfigMention()\"\n [class.libs-ui-readonly-background]=\"readonly() || loadingUploadImage()\"\n [class.pointer-events-none]=\"loadingUploadImage()\"\n (outToggle)=\"handleToggleMention($event)\"\n (outInsertMention)=\"handlerInsertMention($event)\"></div>\n </div>\n @if (template(); as template) {\n <div [class]=\"classIncludeTemplate()\">\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n </div>\n }\n @if (loadingUploadImage()) {\n <libs_ui-components-spinner [size]=\"'medium'\" />\n }\n </div>\n @if (messageError() && showErrorLabel()) {\n <div class=\"flex items-center leading-normal mt-[8px]\">\n <span class=\"text-[#ff5454] libs-ui-font-h7r\"> {{ messageError() | translate }}</span>\n </div>\n }\n</div>\n\n<ng-template #toolbar>\n <div class=\"toolbar\"\n #toolbarItems>\n <div class=\"ql-formats items-center\">\n @for (option of toolbarOptionsConfig(); track option) {\n <div #item\n [id]=\"option.type+'_'+$index\"\n class=\"items-center\"\n [class.hidden]=\"itemHidden().includes($index) || itemHiddenExpand().includes($index)\"\n [class.flex]=\"!itemHidden().includes($index)\">\n <ng-container *ngTemplateOutlet=\"itemTemplate;context:{option, $index, $last}\"></ng-container>\n </div>\n }\n <div class=\"relative\">\n @if (itemHidden().length) {\n <libs_ui-components-buttons-button [type]=\"showMoreAction() ? 'button-secondary' : 'button-third'\"\n [iconOnlyType]=\"true\"\n [classInclude]=\"'!p-[1px] !h-[20px] ml-[8px]'\"\n [classIconLeft]=\"'libs-ui-icon-move-right rotate-90'\"\n (outClick)=\"handlerChangeShowMoreAction($event)\" />\n }\n <!-- Build toolbar khi click xem thêm-->\n <div [class.hidden]=\"!showMoreAction() || !itemHidden().length\"\n class=\"absolute bg-[#ffffff] shadow-md z-[1] flex items-center pl-[8px] pr-[16px] py-[4px] rounded-[8px] top-[31px] right-[0px]\">\n @for (option of toolbarOptionsConfig(); track option) {\n <div class=\"items-center\"\n [class.hidden]=\"!itemHidden().includes($index)\"\n [class.flex]=\"itemHidden().includes($index)\">\n <ng-container *ngTemplateOutlet=\"itemTemplate;context:{option, $index, $last}\"></ng-container>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n</ng-template>\n\n\n<ng-template #itemTemplate\n let-$index=\"$index\"\n let-$last=\"$last\"\n let-option=\"option\">\n @if (option.type === 'undo') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button LibsUiComponentsPopoverDirective\n [config]=\"{content: 'i18n_undo', zIndex: 1250}\"\n class=\"ql-undo\"></button>\n </div>\n }\n @if (option.type === 'redo') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button LibsUiComponentsPopoverDirective\n [config]=\"{content: 'i18n_redo', zIndex: 1250}\"\n class=\"ql-redo\"></button>\n </div>\n }\n @if (option.type === 'fontFamily') {\n <div class=\"relative w-[128px] h-full rounded-[4px] libs-ui-border-general {{ option.classInclude || 'mx-[8px]' }}\"\n [class.bg-white]=\"!readonly() && !loadingUploadImage()\">\n <libs_ui-components-dropdown [isNgContent]=\"true\"\n [labelPopoverFullWidth]=\"true\"\n [listConfig]=\"listConfigFont()\"\n [listHasButtonUnSelectOption]=\"false\"\n [listHiddenInputSearch]=\"true\"\n [listMaxItemShow]=\"8\"\n [zIndex]=\"1250\"\n (outSelectKey)=\"handleSelectFont($event)\">\n @if (fontSelected(); as fontSelected) {\n <div\n class=\"flex items-center cursor-pointer py-[8px] libs-ui-font-h5r pl-[16px] pr-[40px] {{ option.classInclude || 'mx-[8px]' }}\">\n <libs_ui-components-popover [type]=\"'text'\"\n [ignoreStopPropagationEvent]=\"true\"\n [config]=\"{zIndex:1250}\">\n {{ labelFontSelectedComputed() }}\n </libs_ui-components-popover>\n <i class=\"libs-ui-icon-move-right rotate-90 absolute right-[12px] text-[#6a7383] text-[16px]\"></i>\n </div>\n }\n </libs_ui-components-dropdown>\n </div>\n }\n @if (option.type === 'fontSize') {\n <div class=\"ql-picker {{ option.classInclude || 'mx-[8px]' }}\">\n <libs_ui-components-inputs-valid [dataType]=\"'int'\"\n [(item)]=\"size\"\n [fieldNameBind]=\"'value'\"\n [valueUpDownNumber]=\"1\"\n [maxValueNumber]=\"72\"\n [minValueNumber]=\"8\"\n [readonly]=\"readonly() || loadingUploadImage()\"\n [classContainerInput]=\"'w-[72px] h-[32px]'\"\n (outValueChange)=\"handlerValueChange($event)\" />\n </div>\n }\n @if (option.type === 'color') {\n <div class=\"ql-color ql-picker ql-color-picker !flex items-center {{ option.classInclude || 'mx-[8px]' }}\">\n <libs_ui-components-popover [config]=\"{content:'i18n_text_color', zIndex:1250}\">\n <libs_ui-components-buttons-select_color [zIndex]=\"zIndex()\"\n [direction]=\"'top'\"\n [externalContent]=\"true\"\n [applyNow]=\"true\"\n (outColorChange)=\"setStyle('color', $event)\">\n <div\n class=\"libs-ui-icon-editor-color-text libs-ui-buttons-select-color text-[#6a7383] text-[16px] hover:text-[var(--libs-ui-color-light-1)]\">\n </div>\n </libs_ui-components-buttons-select_color>\n </libs_ui-components-popover>\n </div>\n }\n @if (option.type === 'background') {\n <div class=\"ql-background ql-picker ql-color-picker !flex items-center {{ option.classInclude || 'mx-[8px]' }}\">\n <libs_ui-components-popover [config]=\"{content:'i18n_background_color', zIndex:1250}\">\n <libs_ui-components-buttons-select_color [zIndex]=\"zIndex()\"\n [direction]=\"'top'\"\n [externalContent]=\"true\"\n [applyNow]=\"true\"\n (outColorChange)=\"setStyle('background', $event)\">\n <div\n class=\"libs-ui-icon-editor-color-background libs-ui-buttons-select-color text-[#6a7383] text-[16px] hover:text-[var(--libs-ui-color-light-1)]\">\n </div>\n </libs_ui-components-buttons-select_color>\n </libs_ui-components-popover>\n </div>\n }\n @if (option.type === 'bold') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button LibsUiComponentsPopoverDirective\n [config]=\"{content:'i18n_font_weight_bold', zIndex:1250}\"\n class=\"ql-bold\"></button>\n </div>\n }\n @if (option.type === 'italic') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button LibsUiComponentsPopoverDirective\n [config]=\"{content:'i18n_font_style_italic', zIndex:1250}\"\n class=\"ql-italic\"></button>\n </div>\n }\n @if (option.type === 'underline') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button LibsUiComponentsPopoverDirective\n [config]=\"{content:'i18n_text_decoration_underline', zIndex:1250}\"\n class=\"ql-underline\"></button>\n </div>\n }\n @if (option.type === 'strikeThrough') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button LibsUiComponentsPopoverDirective\n [config]=\"{content:'i18n_text_line_through', zIndex:1250}\"\n class=\"ql-strike\"></button>\n </div>\n }\n @if (option.type === 'adjust') {\n <div\n class=\"relative !flex items-center ql-align ql-picker ql-icon-picker !w-max {{ option.classInclude || 'mx-[8px]' }}\">\n <libs_ui-components-popover [config]=\"{content:'i18n_adjust', zIndex:1250}\">\n <libs_ui-components-dropdown [isNgContent]=\"true\"\n [ignoreStopPropagationEvent]=\"true\"\n [labelPopoverFullWidth]=\"true\"\n [listConfig]=\"listConfigAlign()\"\n [listHiddenInputSearch]=\"true\"\n [popoverCustomConfig]=\"{ignoreArrow: true, classInclude: '!w-[32px] overflow-hidden !py-[4px]', position: {mode: 'start', distance: 0}, paddingLeftItem: false}\"\n [listHasButtonUnSelectOption]=\"false\"\n [listMaxItemShow]=\"8\"\n [zIndex]=\"1250\"\n (outSelectKey)=\"handleSelectAlign($event)\">\n @if (alignSelected(); as alignSelected) {\n <div class=\"flex items-center cursor-pointer\">\n <i [class]=\"iconAlignSelectedComputed()\"></i>\n <i class=\"libs-ui-icon-move-right rotate-90 text-[#6a7383] text-[16px] ml-[4px]\"></i>\n </div>\n }\n </libs_ui-components-dropdown>\n </libs_ui-components-popover>\n </div>\n }\n @if (option.type === 'indentIncrease') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button LibsUiComponentsPopoverDirective\n [config]=\"{content:'i18n_indent_increase', zIndex:1250}\"\n class=\"ql-indent\"\n value=\"+1\"></button>\n </div>\n }\n @if (option.type === 'indentDecrease') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button LibsUiComponentsPopoverDirective\n [config]=\"{content:'i18n_indent_decrease', zIndex:1250}\"\n class=\"ql-indent\"\n value=\"-1\"></button>\n </div>\n }\n @if (option.type === 'listBulleted') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button LibsUiComponentsPopoverDirective\n [config]=\"{content:'i18n_list_bulleted', zIndex:1250}\"\n class=\"ql-list ql-bullet\"\n value=\"bullet\"></button>\n </div>\n }\n @if (option.type === 'listNumbered') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button LibsUiComponentsPopoverDirective\n [config]=\"{content:'i18n_list_numbered', zIndex:1250}\"\n class=\"ql-list ql-ordered\"\n value=\"ordered\"></button>\n </div>\n }\n @if (option.type === 'personalize' && templateToolBarPersonalize(); as templateToolBarPersonalize) {\n <div class=\"flex items-center {{ option.classInclude || 'mx-[8px]' }}\">\n <ng-container *ngTemplateOutlet=\"templateToolBarPersonalize\"></ng-container>\n </div>\n }\n @if (option.type === 'blockquote') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button LibsUiComponentsPopoverDirective\n [config]=\"{content:'i18n_quote', zIndex:1250}\"\n class=\"ql-blockquote\"></button>\n </div>\n }\n @if (option.type === 'link') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button LibsUiComponentsPopoverDirective\n [config]=\"{content:'i18n_insert_link', zIndex:1250}\"\n class=\"ql-link\"></button>\n </div>\n }\n @if (option.type === 'unLink') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button LibsUiComponentsPopoverDirective\n [config]=\"{content:'i18n_unlink', zIndex:1250}\"\n class=\"ql-unLink\"></button>\n </div>\n }\n @if (option.type === 'image') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button LibsUiComponentsPopoverDirective\n [config]=\"{content:'i18n_image', zIndex:1250}\"\n class=\"ql-image\"></button>\n </div>\n }\n @if (option.type === 'emoji') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <libs_ui-components-emoji [zIndex]=\"1250\"\n [isNgContent]=\"true\"\n (outEventEmoji)=\"handlerAddEmoji($event)\">\n <button class=\"ql-emoji\"></button>\n </libs_ui-components-emoji>\n </div>\n }\n @if (option.type === 'line') {\n <div class=\"w-[1px] h-[16px] libs-ui-border-right-general\"></div>\n }\n</ng-template>\n\n<libs_ui-components-popover [mode]=\"'click'\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"true\"\n [config]=\"{template: viewLink, whiteTheme: true, ignoreArrow: true}\"\n (outEvent)=\"handlerPopoverEvent($event)\"\n (outFunctionsControl)=\"handlerPopoverFunctionControl($event)\" />\n\n<ng-template #viewLink>\n <div class=\"flex justify-between items-center px-[16px] py-[8px] rounded-[8px]\">\n <div class=\"w-full min-w-0 libs-ui-font-h5r\"\n [type]=\"'text'\"\n LibsUiComponentsPopoverDirective>{{ link().url }}</div>\n <div class=\"flex items-center ml-[16px]\">\n <libs_ui-components-buttons-button [type]=\"'button-link-primary'\"\n [iconOnlyType]=\"true\"\n [classIconLeft]=\"'libs-ui-icon-edit-line'\"\n [classInclude]=\"'!p-0'\"\n (outClick)=\"handlerEdit($event)\" />\n <libs_ui-components-buttons-button [type]=\"'button-link-custom'\"\n [buttonCustom]=\"{\n configStepColor: {\n text: '#071631',\n text_hover: '#ee2d41',\n text_active: '#ee2d41',\n text_disable: '071631'\n },\n rootColor: '#071631'\n }\"\n [classInclude]=\"'!p-0 ml-[12px]'\"\n [iconOnlyType]=\"true\"\n [classIconLeft]=\"'libs-ui-icon-link-broken'\"\n (outClick)=\"handlerUnlink($event)\" />\n </div>\n </div>\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"libs-ui-components-inputs-quill.mjs","sources":["../../../../../../libs-ui/components/inputs/quill/src/blots-custom/div.component.ts","../../../../../../libs-ui/components/inputs/quill/src/blots-custom/image.component.ts","../../../../../../libs-ui/components/inputs/quill/src/blots-custom/mention.component.ts","../../../../../../libs-ui/components/inputs/quill/src/indent-attributor/indent-attributor.component.ts","../../../../../../libs-ui/components/inputs/quill/src/link/link.component.ts","../../../../../../libs-ui/components/inputs/quill/src/link/link.component.html","../../../../../../libs-ui/components/inputs/quill/src/upload-image/upload-image.component.ts","../../../../../../libs-ui/components/inputs/quill/src/upload-image/upload-image.component.html","../../../../../../libs-ui/components/inputs/quill/src/utils/quill.define.ts","../../../../../../libs-ui/components/inputs/quill/src/quill.component.ts","../../../../../../libs-ui/components/inputs/quill/src/quill.component.html","../../../../../../libs-ui/components/inputs/quill/src/libs-ui-components-inputs-quill.ts"],"sourcesContent":["import Quill from \"quill\";\n\nconst Block = Quill.import(\"blots/block\");\n\nexport class QuillDivBlot extends Block {\n static tagName = \"div\";\n}","import Quill from \"quill\";\n\nconst ImageFormat = Quill.import('formats/image');\n\nexport class CustomImageBlot extends ImageFormat {\n static create(value: string) {\n const node = super.create(value);\n node.classList.add('libs-ui-quill-format-image');\n return node;\n }\n\n formats() {\n return {}; // Tránh Quill tự động thêm thẻ `<span>`\n }\n}","import Quill from \"quill\";\n\nconst Embed = Quill.import(\"blots/embed\");\n\nexport class QuillMentionBlot extends Embed {\n static blotName = \"mention\";\n static tagName = \"span\";\n static className = \"libs-ui-quill-mention\";\n static create(data: { id: string, feId: string, value: string }) {\n const node = super.create();\n node.innerText += data.value;\n node.setAttribute('id', data.id);\n node.setAttribute('feId', data.feId);\n node.setAttribute('value', data.value);\n return node;\n }\n\n static value(domNode: HTMLElement) {\n return {\n id: domNode.getAttribute('id'),\n feId: domNode.getAttribute('feId'),\n value: domNode.getAttribute('value')\n };\n }\n\n attach() {\n super.attach();\n if (!this.mounted) {\n this.mounted = true;\n this.clickHandler = this.getClickHandler;\n this.domNode.addEventListener(\"click\", this.clickHandler, false);\n }\n }\n\n getClickHandler(event: Event) {\n event.stopPropagation();\n }\n}","import Quill from \"quill\";\n\nconst parchment = Quill.import('parchment');\nconst pixelLevels = [1, 2, 3, 4, 5, 6, 7, 8];\nconst tabMultiplier = 3;\n\nclass IndentAttributor extends (parchment.Attributor.Style as {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n new(formatName: string, styleProperty: string, attributorOptions: unknown): any;\n}) {\n constructor(formatName: string, styleProperty: string, attributorOptions: unknown) {\n super(formatName, styleProperty, attributorOptions);\n }\n\n public add(node: HTMLElement, value: string): boolean {\n return super.add(node, `${+value * tabMultiplier}em`);\n }\n\n public value(node: HTMLElement): number | undefined {\n return parseFloat(super.value(node)) / tabMultiplier || undefined; // Don't return NaN\n }\n}\n\nexport const indentStyle = new IndentAttributor('indent', 'margin-left', {\n scope: parchment.Scope.BLOCK,\n whitelist: pixelLevels.map(value => `${value * tabMultiplier}em`),\n});","import { ChangeDetectionStrategy, Component, input, OnInit, output, signal } from '@angular/core';\nimport { IInputValidFunctionControlEvent, LibsUiComponentsInputsValidComponent } from '@libs-ui/components-inputs-valid';\nimport { LibsUiComponentsModalComponent, TYPE_MODAL_EVENT } from '@libs-ui/components-modal';\nimport { patternUrl } from '@libs-ui/utils';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-inputs-quill-link',\n templateUrl: './link.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n LibsUiComponentsModalComponent,\n LibsUiComponentsInputsValidComponent\n ]\n})\nexport class LibsUiComponentsInputsQuillLinkComponent implements OnInit {\n\n protected dataLink = signal<{ title: string, link: string }>({ title: '', link: '' });\n protected patternLink = signal<RegExp>(patternUrl());\n\n private inputValidFunctionControl = signal<Array<IInputValidFunctionControlEvent>>([]);\n\n readonly zIndex = input<number>(1200);\n readonly title = input<string>();\n readonly link = input<string>();\n\n readonly outClose = output<void>();\n readonly outSaveLink = output<{ title: string, link: string }>();\n\n ngOnInit() {\n const title = this.title();\n const link = this.link();\n if (title || link) {\n this.dataLink.update(item => ({ ...item, title: title || '', link: link || '' }));\n }\n }\n\n protected async handlerFunctionsControl(event: IInputValidFunctionControlEvent) {\n this.inputValidFunctionControl.update(items => [...items, event]);\n }\n\n private async validate() {\n let valid = true;\n for (const control of this.inputValidFunctionControl()) {\n if (!(await control.checkIsValid())) {\n valid = false;\n }\n }\n return valid;\n }\n\n protected async handlerEvent(event: TYPE_MODAL_EVENT) {\n if (event !== 'agree') {\n this.outClose.emit();\n return;\n }\n if (await this.validate()) {\n this.outSaveLink.emit(this.dataLink());\n this.outClose.emit();\n }\n }\n\n}\n","<libs_ui-components-modal [title]=\"'i18n_insert_link'\"\n [mode]=\"'center'\"\n [height]=\"'auto'\"\n [width]=\"'598px'\"\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 [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 [labelConfig]=\"{labelLeft: 'Link', required: true}\"\n [(item)]=\"dataLink\"\n [fieldNameBind]=\"'link'\"\n [placeholder]=\"'https:/…'\"\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","import { ChangeDetectionStrategy, Component, input, output, signal } from '@angular/core';\nimport { IButton } from '@libs-ui/components-buttons-button';\nimport { LibsUiComponentsModalComponent, TYPE_MODAL_EVENT } from '@libs-ui/components-modal';\nimport { IQuillUploadImageConfig } from '../interfaces/quill.interface';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-inputs-quill-upload_image',\n templateUrl: './upload-image.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n LibsUiComponentsModalComponent\n ]\n})\nexport class LibsUiComponentsInputsQuillUploadImageComponent {\n\n protected buttonFooter = signal<Array<IButton>>([\n {\n type: 'button-third',\n label: 'i18n_cancel',\n action: async () => this.outClose.emit()\n },\n {\n label: 'i18n_save',\n action: () => this.handlerSaveImage()\n }]);\n protected disable = signal<boolean>(false);\n\n // private mediaFile =signal<IMediaFile | undefined>(undefined);\n // private mediaUploadFunctionControl =signal<IMediaUploadBaseFunctionControlEvent | undefined>(undefined);\n\n readonly uploadImageConfig = input.required<IQuillUploadImageConfig>();\n\n readonly outClose = output<string | void>();\n\n // protected handlerFunctionsControl(event: IMediaUploadBaseFunctionControlEvent) {\n // this.mediaUploadFunctionControl.set(event);\n // }\n\n // protected handlerChangeFile(event: IChangeFile) {\n // this.mediaFile.set(event.files[0]);\n // }\n\n private async handlerSaveImage() {\n // if (!await this.mediaUploadFunctionControl()?.checkIsValid()) {\n // return;\n // }\n // if (this.mediaFile?.origin_url) {\n // this.moClose.emit(this.mediaFile.origin_url);\n\n // return;\n // }\n // const body: IOptionsUploadMedia = {\n // do_not_delete: true,\n // file: this.mediaFile?.file,\n // option: 'thumb',\n // size: [{ 'width': '200', 'height': '200' }]\n // };\n\n // this.disable = true;\n // try {\n // const params = new HttpParamsRequest({ fromObject: { pem: BUILD_PEM_OBJECT({ isCheck: 0, action: DefineConstants.PERMISSION_ACTION_VIEW, pathCheck: '/other' }) } });\n // const res = await this.mediaService.uploadImage(params, body);\n\n // this.moClose.emit(res.data?.url);\n // } catch (error) {\n // console.log(error);\n\n // this.pushMessageService.showCompTypeText('i18n_notification_manipulation_not_success', undefined, undefined, { timeRemove: 2000, type: 'error' });\n // this.moClose.emit();\n // } finally {\n // this.disable = false;\n // }\n }\n\n protected handlerEventModal(event: TYPE_MODAL_EVENT) {\n if (event === 'close') {\n this.outClose.emit();\n }\n }\n}\n","<libs_ui-components-modal [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 ư\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 (moFunctionsControl)=\"handlerFunctionsControl($event)\">\n </libs-uicomponents-media-upload> -->\n </div>\n</libs_ui-components-modal>\n","import { signal } from '@angular/core';\nimport { IListConfigItem } from '@libs-ui/components-list';\nimport { returnListObject } from '@libs-ui/services-http-request';\nimport { IQuillLink, IQuillToolbarConfig, IQuillUploadImageConfig, TYPE_MODE_BAR_CONFIG_OPTION } from '../interfaces/quill.interface';\nimport { convertFileToBase64_ObjectUrl } from '@libs-ui/utils';\n\nexport const listDataAlign = () => {\n return [\n { key: '', icon: 'libs-ui-icon-align-left text-[#6a7383] text-[16px] hover:text-[var(--libs-ui-color-light-1)]' },\n { key: 'right', icon: 'libs-ui-icon-align-right text-[#6a7383] text-[16px] hover:text-[var(--libs-ui-color-light-1)]' },\n { key: 'center', icon: 'libs-ui-icon-align-center text-[#6a7383] text-[16px] hover:text-[var(--libs-ui-color-light-1)]' },\n { key: 'justify', icon: 'libs-ui-icon-align-justify text-[#6a7383] text-[16px] hover:text-[var(--libs-ui-color-light-1)]' },\n ];\n};\n\nexport const listFont = () => {\n return [\n { key: '', label: 'Sans Serif' },\n { key: 'serif', label: 'Serif' },\n { key: 'monospace', label: 'Monospace' },\n ];\n};\n\nexport const listConfigAlign = (): IListConfigItem => {\n return {\n type: 'text',\n autoSelectFirstItem: true,\n httpRequestData: signal({\n serviceOther: returnListObject(listDataAlign()),\n functionName: 'list',\n argumentsValue: []\n }),\n configTemplateText: signal({\n fieldKey: 'key',\n getClassItem: () => '!px-[8px] !py-[4px]',\n getValue: item => `<i class='flex ${item.icon}'></i>`,\n ignoreIconSelected: true\n })\n };\n};\n\nexport const listConfigFont = (): IListConfigItem => {\n return {\n type: 'text',\n autoSelectFirstItem: true,\n httpRequestData: signal({\n serviceOther: returnListObject(listFont()),\n functionName: 'list',\n argumentsValue: []\n }),\n configTemplateText: signal({\n fieldKey: 'key',\n getValue: item => item.label,\n ignoreIconSelected: true\n })\n };\n};\n\nexport const toolBarOptions = (mode: TYPE_MODE_BAR_CONFIG_OPTION, hasIconImage: boolean, hasIconPersonalize: boolean): Array<IQuillToolbarConfig> => {\n return ([\n {\n type: 'undo',\n classInclude: 'mr-[8px]',\n mode: ['default', 'basic'],\n width: 24\n },\n {\n type: 'redo',\n mode: ['default', 'basic'],\n width: 32\n },\n {\n type: 'line',\n mode: ['default', 'basic'],\n width: 1\n },\n {\n type: 'fontFamily',\n classInclude: 'ml-[8px] mr-[2px]',\n mode: ['default'],\n width: 138\n },\n {\n type: 'fontSize',\n classInclude: 'ml-[2px] mr-[8px]',\n mode: ['default'],\n width: 82\n },\n {\n type: 'line',\n mode: ['default'],\n width: 1\n },\n {\n type: 'color',\n mode: ['default', 'basic'],\n width: 32\n },\n {\n type: 'background',\n mode: ['default'],\n width: 32\n },\n {\n type: 'line',\n mode: ['default', 'basic'],\n width: 1\n },\n {\n type: 'bold',\n mode: ['default', 'basic'],\n width: 32\n },\n {\n type: 'italic',\n mode: ['default', 'basic'],\n width: 32\n },\n {\n type: 'underline',\n mode: ['default', 'basic'],\n width: 32\n },\n {\n type: 'strikeThrough',\n mode: ['default'],\n width: 32\n },\n {\n type: 'line',\n mode: ['default', 'basic'],\n width: 1\n },\n {\n type: 'adjust',\n mode: ['default'],\n width: 52\n },\n {\n type: 'line',\n mode: ['default'],\n width: 32\n },\n {\n type: 'indentIncrease',\n mode: ['default'],\n width: 32\n },\n {\n type: 'indentDecrease',\n mode: ['default'],\n width: 32\n },\n {\n type: 'listBulleted',\n mode: ['default'],\n width: 32\n },\n {\n type: 'listNumbered',\n mode: ['default'],\n width: 32\n },\n {\n type: 'line',\n mode: ['default'],\n width: 1\n },\n {\n type: 'personalize',\n mode: ['default'],\n width: 32\n },\n {\n type: 'blockquote',\n mode: ['default'],\n width: 32\n },\n {\n type: 'link',\n mode: ['default', 'basic'],\n width: 32\n },\n {\n type: 'unLink',\n mode: ['default', 'basic'],\n width: 32\n },\n {\n type: 'image',\n mode: ['default'],\n width: 32\n },\n {\n type: 'emoji',\n classInclude: 'ml-[8px]',\n mode: ['default'],\n width: 24\n }\n ] as Array<IQuillToolbarConfig>).filter(item => {\n if (!item.mode?.includes(mode)) {\n return false;\n }\n if (item.type === 'image') {\n return hasIconImage;\n }\n if (item.type === 'personalize') {\n return hasIconPersonalize;\n }\n\n return true;\n\n });\n}\nexport const iconList = (): Array<{ key: string, icon: string }> => {\n return [\n {\n key: 'bold',\n icon: 'libs-ui-icon-editor-bold',\n },\n {\n key: 'italic',\n icon: 'libs-ui-icon-editor-italic',\n },\n {\n key: 'underline',\n icon: 'libs-ui-icon-editor-underlined',\n },\n {\n key: 'image',\n icon: 'libs-ui-icon-image-solid'\n },\n {\n key: 'link',\n icon: 'libs-ui-icon-link'\n },\n {\n key: 'undo',\n icon: 'libs-ui-icon-undo'\n },\n {\n key: 'redo',\n icon: 'libs-ui-icon-undo scale-x-[-1]'\n },\n {\n key: 'strike',\n icon: 'libs-ui-icon-editor-strike-through'\n },\n {\n key: 'blockquote',\n icon: 'libs-ui-icon-quote'\n },\n {\n key: 'ordered',\n icon: 'libs-ui-icon-list-numbered'\n },\n {\n key: 'bullet',\n icon: 'libs-ui-icon-list-bulleted'\n },\n {\n key: 'background',\n icon: 'libs-ui-icon-editor-color-background'\n },\n {\n key: 'color',\n icon: 'libs-ui-icon-editor-color-text'\n },\n {\n key: \"indent.-1\",\n icon: 'libs-ui-icon-indent-decrease'\n },\n {\n key: \"indent.+1\",\n icon: 'libs-ui-icon-indent-increase'\n },\n {\n key: \"align.\",\n icon: 'align-quill libs-ui-icon-align-left'\n },\n {\n key: \"align.center\",\n icon: 'align-quill libs-ui-icon-align-center'\n },\n {\n key: \"align.right\",\n icon: 'align-quill libs-ui-icon-align-right'\n },\n {\n key: \"align.justify\",\n icon: 'align-quill libs-ui-icon-align-justify'\n },\n {\n key: 'unLink',\n icon: 'libs-ui-icon-link-broken'\n },\n {\n key: 'emoji',\n icon: 'libs-ui-icon-face-smile'\n }\n ];\n}\n\nexport const uploadImageConfigDefault = (): IQuillUploadImageConfig => {\n return {\n modeCustom: false,\n zIndex: 1202,\n showIcon: true,\n maxImageSize: 5 * 1024 * 1024,\n onlyAcceptImageHttpsLink: false,\n functionUploadImage: async (files: Array<File>) => {\n const data = [];\n for (const file of files) {\n data.push(await convertFileToBase64_ObjectUrl(file))\n }\n return data;\n }\n }\n}\n\nexport const linkDefault = (): IQuillLink => {\n return {\n title: '',\n url: '',\n range: {\n index: 0,\n length: 0\n }\n };\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { AfterViewInit, ChangeDetectionStrategy, Component, ComponentRef, computed, effect, ElementRef, inject, input, model, OnDestroy, OnInit, output, signal, TemplateRef, untracked, viewChild, viewChildren } from '@angular/core';\nimport { LibsUiComponentsButtonsButtonComponent } from '@libs-ui/components-buttons-button';\nimport { LibsUiComponentsButtonsSelectColorComponent } from '@libs-ui/components-buttons-select-color';\nimport { IEmitSelectKey, LibsUiComponentsDropdownComponent } from '@libs-ui/components-dropdown';\nimport { LibsUiComponentsEmojiComponent } from '@libs-ui/components-inputs-emoji';\nimport { IMentionConfig, IMentionInsert, LibsUiComponentsInputsMentionDirective } from '@libs-ui/components-inputs-mention';\nimport { IValidLength, IValidRequired, LibsUiComponentsInputsValidComponent } from '@libs-ui/components-inputs-valid';\nimport { ILabel, LibsUiComponentsLabelComponent } from '@libs-ui/components-label';\nimport { IListConfigItem } from '@libs-ui/components-list';\nimport { IPopoverFunctionControlEvent, LibsUiComponentsPopoverComponent, TYPE_POPOVER_EVENT } from '@libs-ui/components-popover';\nimport { TYPE_OBJECT, TYPE_TEMPLATE_REF } from '@libs-ui/interfaces-types';\nimport { LibsUiDynamicComponentService } from '@libs-ui/services-dynamic-component';\nimport { ERROR_MESSAGE_EMPTY_VALID, ERROR_MESSAGE_MAX_LENGTH, ERROR_MESSAGE_MIN_LENGTH, get, getLabelBySizeFile, isNil, patternUrl, set, xssFilter } from '@libs-ui/utils';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport Quill, { RangeStatic, Sources, StringMap } from 'quill';\nimport { fromEvent, lastValueFrom, Subject, takeUntil, timer } from 'rxjs';\nimport { QuillDivBlot } from './blots-custom/div.component';\nimport { CustomImageBlot } from './blots-custom/image.component';\nimport { QuillMentionBlot } from './blots-custom/mention.component';\nimport { indentStyle } from './indent-attributor/indent-attributor.component';\nimport { IQuillBlotRegister, IQuillFunctionControlEvent, IQuillLink, IQuillSelectionChange, IQuillTextChange, IQuillToolbarConfig, IQuillUploadImageConfig, TYPE_MODE_BAR_CONFIG_OPTION } from './interfaces/quill.interface';\nimport { LibsUiComponentsInputsQuillLinkComponent } from './link/link.component';\nimport { LibsUiComponentsInputsQuillUploadImageComponent } from './upload-image/upload-image.component';\nimport { iconList, linkDefault, listConfigAlign, listConfigFont, listFont, toolBarOptions, uploadImageConfigDefault } from './utils/quill.define';\nimport { LibsUiComponentsSpinnerComponent } from '@libs-ui/components-spinner';\nimport { LibsUiNotificationService } from '@libs-ui/services-notification';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-inputs-quill',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './quill.component.html',\n styleUrl: './quill.component.scss',\n imports: [\n TranslateModule, NgTemplateOutlet, LibsUiComponentsInputsMentionDirective,\n LibsUiComponentsLabelComponent, LibsUiComponentsDropdownComponent,\n LibsUiComponentsPopoverComponent, LibsUiComponentsButtonsSelectColorComponent,\n LibsUiComponentsInputsValidComponent, LibsUiComponentsEmojiComponent,\n LibsUiComponentsButtonsButtonComponent, LibsUiComponentsSpinnerComponent\n ]\n})\nexport class LibsUiComponentsInputsQuillComponent implements OnInit, AfterViewInit, OnDestroy {\n protected loadingUploadImage = signal<boolean>(false);\n protected readonly timeDelayInit = signal<number>(20);\n protected messageError = signal<string>('');\n protected display = signal<boolean>(false);\n protected listConfigAlign = signal<IListConfigItem>(listConfigAlign());\n protected alignSelected = signal<IEmitSelectKey | undefined>(undefined);\n protected iconAlignSelectedComputed = computed(() => get(this.alignSelected(), 'item.icon'));\n protected listConfigFont = signal<IListConfigItem>(listConfigFont());\n protected fontSelected = signal<IEmitSelectKey | undefined>(undefined);\n protected labelFontSelectedComputed = computed(() => get(this.fontSelected(), 'item.label') || 'Sans Serif');\n protected size = signal<{ value: number }>({ value: 14 });\n protected itemHiddenExpand = signal<Array<number>>([]);\n protected itemHidden = signal<Array<number>>([]);\n protected showMoreAction = signal<boolean>(false);\n protected link = signal<IQuillLink>(linkDefault());\n protected toolbarOptionsConfig = computed(() => {\n const type = this.toolbarConfig()?.type || 'default';\n const hasIconImage = this.uploadImageConfig().showIcon ?? false;\n const hasIconPersonalize = !!this.templateToolBarPersonalize();\n\n return this.toolbarConfig()?.config || toolBarOptions(type, hasIconImage, hasIconPersonalize);\n });\n\n private timeCalculationToolBar = signal<number | undefined>(undefined);\n private popoverFunctionControl = signal<IPopoverFunctionControlEvent | undefined>(undefined);\n private quill = signal<Quill | undefined>(undefined);\n private handlers = signal<Record<string, (...params: Array<unknown>) => void>>({ undo: this.handleUndo.bind(this), redo: this.handleRedo.bind(this) });\n private showMention = signal<boolean>(false);\n private addEditLinkComponentRef = signal<ComponentRef<LibsUiComponentsInputsQuillLinkComponent> | undefined>(undefined);\n private uploadImageComponentRef = signal<ComponentRef<LibsUiComponentsInputsQuillUploadImageComponent> | undefined>(undefined);\n private onDestroy = new Subject<void>();\n private dynamicComponentService = inject(LibsUiDynamicComponentService);\n private translate = inject(TranslateService);\n\n readonly isShowToolBar = input<boolean, boolean | undefined>(true, { transform: val => val ?? true });\n readonly isToolbarPositionFixed = input<boolean, boolean | undefined>(false, { transform: val => val ?? false });\n readonly classIncludeToolbar = input<string>('');\n readonly stylesIncludeToolbar = input<TYPE_OBJECT>();\n readonly toolbarConfig = input<{\n type: TYPE_MODE_BAR_CONFIG_OPTION;\n config?: Array<IQuillToolbarConfig>;\n }>();\n readonly placeholder = input<string, string | undefined>('i18n_import_content', { transform: (value) => value || 'i18n_import_content' });\n readonly label = input<ILabel | undefined>();\n readonly item = model<Record<string, unknown>>();\n readonly fieldNameBind = input<string>('value');\n readonly readonly = input<boolean>();\n readonly showErrorLabel = input<boolean>(true);\n readonly showErrorBorder = input<boolean>(false);\n readonly onlyShowErrorBorderInContent = input<boolean>(false);\n readonly classIncludeTemplate = input<string>();\n readonly classInclude = input<string>();\n readonly handlersExpand = input<Array<{ title: string, action: () => void }>>();\n readonly validRequired = input<IValidRequired>();\n readonly validMinLength = input<IValidLength>();\n readonly validMaxLength = input<IValidLength>();\n readonly zIndex = input<number, number | undefined>(1201, { transform: (value) => value || 1201 });\n readonly dataConfigMention = input<IMentionConfig>();\n readonly blotsRegister = input<Array<IQuillBlotRegister>>();\n readonly heightAuto = input<boolean>();\n readonly autoFocus = input<boolean>();\n readonly focusBottom = input<boolean>();\n readonly blockUndoRedoKeyboard = input<boolean>();\n readonly templateToolBarPersonalize = input<TemplateRef<TYPE_TEMPLATE_REF>>();\n readonly template = input<TemplateRef<TYPE_TEMPLATE_REF>>();\n readonly uploadImageConfig = input<IQuillUploadImageConfig, IQuillUploadImageConfig | undefined>(uploadImageConfigDefault(), { transform: (value) => value || uploadImageConfigDefault() });\n\n readonly outMessageError = output<string>();\n readonly outBlur = output<void>();\n readonly outFocus = output<void>();\n readonly outChange = output<string>();\n readonly outFunctionsControl = output<IQuillFunctionControlEvent>();\n readonly outSelectionChange = output<IQuillSelectionChange>();\n readonly outTextChange = output<IQuillTextChange>();\n readonly outContextMenu = output<MouseEvent>();\n\n readonly wrapperEditorEl = viewChild<ElementRef>('wrapperEditor');\n readonly editorEl = viewChild<ElementRef>('editor');\n readonly quillOptionEl = viewChild<ElementRef>('quillOption');\n readonly quillEditorEl = viewChild<ElementRef>('quillEditor');\n readonly toolbarItemsEl = viewChild<ElementRef>('toolbarItems');\n readonly itemsEl = viewChildren<ElementRef>('item');\n\n private notificationService = inject(LibsUiNotificationService);\n\n constructor() {\n effect(() => {\n if (this.toolbarItemsEl()?.nativeElement) {\n untracked(() => {\n this.calculatorToolbar();\n });\n }\n });\n }\n\n ngOnInit() {\n this.outFunctionsControl.emit({\n checkIsValid: this.validate.bind(this),\n setContent: this.setContent.bind(this),\n insertText: this.insertText.bind(this),\n insertLink: this.insertLink.bind(this),\n insertImage: this.insertImage.bind(this),\n setFontSize: this.setFontSize.bind(this),\n setColor: async (color: string) => this.setStyle('color', color),\n setBackground: async (color: string) => this.setStyle('background', color),\n quill: () => this.quill() as Quill\n });\n }\n\n async ngAfterViewInit() {\n this.setHandlerFunction();\n await lastValueFrom(timer(this.timeDelayInit()));\n this.initQuill();\n this.display.set(true);\n\n this.setContent(get(this.item(), this.fieldNameBind(), ''));\n this.handlerTextChange();\n this.handlerSelectionChange();\n this.handlerPaste();\n if (!this.autoFocus()) {\n // gọi hàm này để quill đánh dấu là đã focus trong khi quill chưa khởi tạo xong để không bị scroll xuống dưới.sau khi quill khởi tạo xong và check nếu đang focus đang được bật thì nó không gọi lại hàm focus nữa\n this.quill()?.focus();\n }\n fromEvent(window, 'resize').pipe(takeUntil(this.onDestroy)).subscribe(this.calculatorToolbar.bind(this));\n await lastValueFrom(timer(400));\n const cursorSpan = this.quill()?.root.querySelector('.ql-cursor');\n if (cursorSpan) {\n cursorSpan.remove();\n }\n }\n\n private initQuill() {\n const size = Quill.import('attributors/style/size');\n const alignStyle = Quill.import('attributors/style/align');\n const icons = Quill.import('ui/icons');\n const italic = Quill.import('formats/italic');\n const bold = Quill.import('formats/bold');\n size.whitelist = ['8px', '9px', '10px', '11px', '12px', '13px', '14px', '15px', '16px', '17px', '18px', '19px', '20px', '21px', '22px', '23px', '24px', '25px', '26px', '27px', '28px', '29px', '30px', '31px', '32px', '33px', '34px', '35px', '36px', '37px', '38px', '39px', '40px', '41px', '42px', '43px', '44px', '45px', '46px', '47px', '48px', '49px', '50px', '51px', '52px', '53px', '54px', '55px', '56px', '57px', '58px', '59px', '60px', '61px', '62px', '63px', '64px', '65px', '66px', '67px', '68px', '69px', '70px', '71px', '72px'];\n\n italic.tagName = 'i';\n bold.tagName = 'b';\n Quill.register(bold, true);\n Quill.register(italic, true);\n Quill.register(size, true);\n Quill.register(CustomImageBlot, true);\n Quill.register(QuillDivBlot, true);\n Quill.register(alignStyle, true);\n Quill.register(QuillMentionBlot, true);\n this.blotsRegister()?.forEach(item => {\n Quill.register(item.component, true);\n });\n Quill.register({ 'formats/indent': indentStyle }, true);\n fromEvent<MouseEvent>(this.quillEditorEl()?.nativeElement, 'contextmenu').pipe(takeUntil(this.onDestroy)).subscribe(e => this.outContextMenu.emit(e));\n iconList().forEach(element => set(icons, element.key, `<span class=\"${element.icon} hover:text-[var(--libs-ui-color-light-1)] text-[16px] text-[#6a7383]\"></span>`));\n this.quill.set(new Quill(this.quillEditorEl()?.nativeElement, {\n modules: {\n toolbar: {\n container: this.quillOptionEl()?.nativeElement,\n handlers: this.handlers()\n },\n clipboard: {\n matchVisual: false\n },\n history: {\n delay: 1000,\n maxStack: 100,\n userOnly: false\n },\n keyboard: {\n bindings: {\n enter: {\n key: 13,\n handler: () => this.showMention() ? false : true\n }\n }\n }\n },\n readOnly: this.readonly(),\n placeholder: this.translate.instant(this.placeholder()),\n theme: 'snow',\n bounds: this.heightAuto() ? this.wrapperEditorEl()?.nativeElement : this.quillEditorEl()?.nativeElement,\n scrollingContainer: this.heightAuto() ? this.wrapperEditorEl()?.nativeElement : null\n }));\n\n this.quill()?.keyboard.addBinding({ key: 'Backspace' }, this.noPreventEmbedDeletion.bind(this));\n this.quill()?.keyboard.addBinding({ key: 'Delete' }, this.noPreventEmbedDeletion.bind(this));\n this.setupUndoRedoBlocking();\n }\n\n private setupUndoRedoBlocking(): void {\n const editorRoot = this.quill()?.root;\n if (editorRoot && this.blockUndoRedoKeyboard()) {\n const keydownHandler = (e: KeyboardEvent) => {\n const isUndo = (e.key === 'z' || e.key === 'Z') && (e.ctrlKey || e.metaKey) && !e.shiftKey;\n const isRedo = ((e.key === 'z' || e.key === 'Z') && (e.ctrlKey || e.metaKey) && e.shiftKey) ||\n ((e.key === 'y' || e.key === 'Y') && e.ctrlKey);\n\n if (isUndo || isRedo) {\n e.preventDefault();\n e.stopPropagation();\n console.log(`Blocking ${isUndo ? 'undo' : 'redo'} keyboard shortcut`);\n }\n };\n\n editorRoot.addEventListener('keydown', keydownHandler, true);\n\n this.onDestroy.subscribe(() => {\n editorRoot.removeEventListener('keydown', keydownHandler, true);\n });\n }\n }\n\n\n private noPreventEmbedDeletion(range: RangeStatic): boolean {\n if (!this.quill()) return false;\n const delta = this.quill()?.getContents(range.index, 1);\n\n if (delta?.ops.some(option => this.blotsRegister()?.find(item => get(option.insert, item.component['blotName']) && item.ignoreDelete))) {\n return false; // Ngăn không cho Quill xử lý xóa\n }\n\n return true;\n\n }\n\n private setHandlerFunction() {\n this.handlers.update(item => ({ ...item, image: this.handlerShowUploadImage.bind(this), emoji: () => { return } }))\n let link = false;\n const handlersExpand = this.handlersExpand();\n if (handlersExpand && handlersExpand.length) {\n handlersExpand.forEach(element => {\n if (element.title && element.action) {\n if (element.title === 'link') {\n link = true;\n }\n this.handlers.update(item => ({ ...item, [element.title]: element.action }));\n }\n });\n }\n if (!link) {\n this.handlers.update(item => ({ ...item, link: this.handleShowUploadLink.bind(this), unLink: this.handlerUnInsertLink.bind(this) }));\n }\n }\n\n private adjustIndexForImages(index: number) {\n const content = this.quill()?.root;\n let imageCount = 0;\n let adjustedIndex = 0;\n const adjustTextIndex = (node: Node) => {\n if (adjustedIndex > index) {\n return;\n }\n if (node.nodeType === Node.TEXT_NODE) {\n adjustedIndex += node.textContent?.length || 0;\n return;\n }\n if (node.nodeType === Node.ELEMENT_NODE && node.nodeName === 'IMG') {\n if (adjustedIndex <= index) {\n imageCount++;\n }\n return;\n }\n if (node.nodeType === Node.ELEMENT_NODE) {\n Array.from(node.childNodes).forEach(adjustTextIndex);\n }\n };\n adjustTextIndex(content as Node);\n return imageCount;\n };\n\n\n private handlerSelectionChange() {\n this.quill()?.on('selection-change', (range: RangeStatic, oldRange: RangeStatic, source: Sources) => {\n if (this.readonly()) {\n return;\n }\n if (range === null && oldRange !== null) {\n this.outBlur.emit();\n return;\n }\n if (range !== null && oldRange === null) {\n this.outFocus.emit();\n return;\n }\n const format = this.quill()?.getFormat();\n if (format) {\n this.getFont(format);\n this.getFontSize(format);\n }\n this.outSelectionChange.emit({\n quill: this.quill() as Quill,\n range,\n oldRange,\n source\n });\n if (range.length === 0 && format?.link && source === 'user') {\n const selection = document.getSelection();\n const anchorNode = selection?.anchorNode;\n let linkNode = anchorNode as HTMLAnchorElement;\n while (linkNode && linkNode.tagName !== 'A') {\n linkNode = linkNode.parentNode as HTMLAnchorElement;\n }\n if (linkNode && linkNode.tagName === 'A') {\n const linkText = linkNode.innerText;\n const linksIndices: Array<number> = [];\n let indexReturn: number | undefined = -1;\n while (!isNil(indexReturn) && indexReturn < range.index) {\n const textContent = this.quill()?.getText();\n const linkIndex = textContent?.indexOf(linkText, linksIndices.length > 0 ? linksIndices[linksIndices.length - 1] + linkText.length : 0);\n if (!isNil(linkIndex)) {\n if (linkIndex !== -1) {\n linksIndices.push(linkIndex);\n indexReturn = linkIndex + linkText.length;\n }\n if (linkIndex === -1) {\n indexReturn = undefined;\n }\n }\n }\n if (linksIndices && linksIndices.length) {\n const rangeIndex = linksIndices[linksIndices.length - 1];\n const countImage = this.adjustIndexForImages(rangeIndex)\n setTimeout(() => {\n this.link.set({\n title: linkText,\n url: linkNode.href,\n range: {\n index: rangeIndex + countImage,\n length: linkText.length\n }\n })\n this.popoverFunctionControl()?.showPopover(linkNode)\n }, 250);\n }\n }\n }\n });\n }\n\n private handlerPaste() {\n set(this.quill, 'root.onpaste', async (event: ClipboardEvent) => {\n if (!event || !event.clipboardData) {\n return;\n }\n const files = event.clipboardData.files;\n if (!files.length) {\n return;\n }\n event.preventDefault();\n await this.uploadImagesAndInsert(files);\n });\n }\n\n private handlerTextChange() {\n this.quill()?.on('text-change', (event) => {\n this.outTextChange.emit({\n quill: this.quill() as Quill,\n delta: event\n });\n const html = this.quill()?.root.innerHTML;\n setTimeout(() => {\n if (event?.ops[1]?.insert === '\\n') {\n const range = { index: event?.ops[0].retain as number };\n const currentLeaf = this.quill()?.getLeaf(range.index)[0];\n const nextLeaf = this.quill()?.getLeaf(range.index + 1)[0];\n this.quill()?.insertEmbed(range.index, 'break', true, 'user');\n if (nextLeaf === null || currentLeaf.parent !== nextLeaf.parent) {\n this.quill()?.insertEmbed(range.index, 'break', true, 'user');\n }\n this.quill()?.setSelection((range.index || 0) + 1, 0, Quill.sources.SILENT);\n }\n });\n if (html === '<div><br></div>' || html === '<div style=\"text-align: justify;\"><br></div>' || !this.quill()?.getText()) {\n set(this.item(), this.fieldNameBind(), '');\n this.validate();\n this.outChange.emit(get(this.item(), this.fieldNameBind()));\n return;\n }\n this.convertInnerHTML();\n this.validate();\n this.outChange.emit(get(this.item(), this.fieldNameBind()));\n });\n }\n\n protected handlerPopoverFunctionControl(event: IPopoverFunctionControlEvent) {\n this.popoverFunctionControl.set(event);\n }\n\n protected handlerPopoverEvent(event: TYPE_POPOVER_EVENT) {\n if (event === 'remove') {\n this.link.set(linkDefault());\n }\n }\n\n protected handlerUnlink(event: Event) {\n event.stopPropagation();\n const link = this.link();\n this.quill()?.formatText(link.range.index, link.range.length, { link: false });\n this.popoverFunctionControl()?.removePopoverOverlay();\n }\n\n protected handlerEdit(event: Event) {\n event.stopPropagation();\n const link = this.link();\n this.handleShowUploadLink(link);\n this.popoverFunctionControl()?.removePopoverOverlay();\n }\n\n private calculatorToolbar() {\n this.timeCalculationToolBar.set(setTimeout(() => {\n const toolbarWidth = this.toolbarItemsEl()?.nativeElement.offsetWidth || 0;\n\n let totalWidth = 28;\n const hiddenItems: Array<number> = [];\n const hiddenItemsExpand: Array<number> = [];\n\n this.toolbarOptionsConfig().forEach((item, index) => {\n totalWidth += item.width;\n if (item.type === 'line') {\n const nextItemWidth = totalWidth + this.toolbarOptionsConfig()[+index + 1].width;\n if (nextItemWidth > toolbarWidth) {\n hiddenItemsExpand.push(+index);\n return;\n }\n }\n if (totalWidth > toolbarWidth) {\n hiddenItems.push(+index);\n\n return;\n }\n });\n this.itemHidden.set(hiddenItems);\n this.itemHiddenExpand.set(hiddenItemsExpand);\n }, 500));\n }\n\n protected setStyle(type: string, data: string | number) {\n this.quill()?.format(type, data);\n }\n\n private getFontSize(format: StringMap) {\n const fontSize = format?.size?.toString()?.replace('px', '');\n if (isNaN(parseFloat(fontSize))) {\n this.size.set({ value: 14 });\n return;\n }\n this.size.set({ value: parseFloat(fontSize) });\n }\n\n private getFont(format: StringMap) {\n const font = listFont().find((item) => item.key === format.font);\n if (!font) {\n this.fontSelected.set({ key: '', item: listFont().find((item) => item.key === '') });\n return;\n }\n this.fontSelected.set({ key: format.font, item: font });\n }\n\n protected handleUndo() {\n this.quill()?.history?.undo();\n }\n\n protected handleRedo() {\n this.quill()?.history?.redo();\n }\n\n protected async setContent(content: string) {\n const contentXssFilter = (await xssFilter(content || '')).replace(/^\\s*<p><br><\\/p>/, '').replace(/[\\u200B-\\u200D\\uFEFF]/g, '');\n await lastValueFrom(timer(1));\n set(this.quill, 'root.innerHTML', contentXssFilter);\n if (!this.autoFocus()) {\n return;\n }\n await lastValueFrom(timer(100));\n const target = this.quillEditorEl()?.nativeElement.querySelector('[contenteditable=\"true\"]');\n const contentScroll = this.heightAuto() ? this.wrapperEditorEl()?.nativeElement : target;\n contentScroll.scrollTop = contentScroll.scrollHeight;\n if (this.focusBottom()) {\n this.quill()?.setSelection(contentXssFilter.length, 0, Quill.sources.SILENT);\n return;\n }\n this.quill()?.setSelection(0, 0, Quill.sources.SILENT);\n }\n\n protected handlerAddEmoji(emoji: unknown) {\n this.insertText(emoji as string, undefined, true);\n }\n\n protected handleShowUploadLink(event: unknown) {\n this.addEditLinkComponentRef.set(this.dynamicComponentService.resolveComponentFactory(LibsUiComponentsInputsQuillLinkComponent));\n const instance = this.addEditLinkComponentRef()?.instance;\n const selection = this.quill()?.getSelection();\n const textSelected = selection?.length ? this.quill()?.getText(selection?.index, selection?.length) : '';\n const data = event as IQuillLink | undefined;\n this.addEditLinkComponentRef()?.setInput('zIndex', this.zIndex());\n this.addEditLinkComponentRef()?.setInput('title', data?.title || textSelected);\n this.addEditLinkComponentRef()?.setInput('link', data?.url || '');\n instance?.outSaveLink.subscribe((item: { title: string, link: string }) => {\n if (data instanceof Object && data.url) {\n this.quill()?.deleteText(data.range.index, data.range.length, Quill.sources.USER);\n this.quill()?.insertText(data.range.index, item.title, 'link', item.link);\n return;\n }\n this.insertLink(item.title, item.link);\n });\n instance?.outClose.subscribe(() => this.dynamicComponentService.remove(this.addEditLinkComponentRef()));\n this.dynamicComponentService.addToBody(this.addEditLinkComponentRef());\n }\n\n protected handlerUnInsertLink() {\n const selection = this.quill()?.getSelection(true);\n if (!isNil(selection)) {\n this.quill()?.formatText(selection, 'link', false);\n }\n }\n\n protected async validate() {\n this.messageError.set('');\n const validRequired = this.validRequired();\n const item = this.item();\n const fieldNameBind = this.fieldNameBind();\n const value = get(item, fieldNameBind);\n if (validRequired && validRequired.isRequired && (!fieldNameBind || !value || !value.trim())) {\n this.messageError.set(validRequired.message || ERROR_MESSAGE_EMPTY_VALID);\n this.outMessageError.emit(this.messageError());\n return false;\n }\n const validMinLength = this.validMinLength();\n if (validMinLength && fieldNameBind && value && value.trim().length < validMinLength.length) {\n this.messageError.set(validMinLength.message || ERROR_MESSAGE_MIN_LENGTH);\n this.outMessageError.emit(this.messageError());\n return false;\n }\n const validMaxLength = this.validMaxLength();\n if (validMaxLength && fieldNameBind && value && value.trim().length > this.validMaxLength.length) {\n this.messageError.set(validMaxLength.message || ERROR_MESSAGE_MAX_LENGTH);\n this.outMessageError.emit(this.messageError());\n return false;\n }\n this.outMessageError.emit(this.messageError());\n return true;\n }\n\n protected async insertImage(content: string, index?: number) {\n const selection = index ?? this.quill()?.getSelection(true).index;\n if (!isNil(selection)) {\n this.quill()?.insertEmbed(selection, 'image', content);\n this.quill()?.setSelection(selection + 1, 0);\n }\n }\n\n private async insertText(content: string, index?: number, focusLast?: boolean) {\n index = index ?? this.quill()?.getSelection(true).index;\n if (!isNil(index)) {\n this.quill()?.insertText(index, content, Quill.sources.USER);\n if (focusLast) {\n await lastValueFrom(timer(0));\n this.quill()?.setSelection(index + content.length, 0, Quill.sources.USER);\n }\n }\n }\n\n private async insertLink(text: string, url: string, index?: number) {\n const selection = this.quill()?.getSelection(true);\n const indexInsert = index ?? selection?.index;\n if (selection?.length) {\n this.quill()?.deleteText(selection.index, selection.length, Quill.sources.USER);\n }\n if (!isNil(indexInsert)) {\n this.quill()?.insertText(indexInsert, text, 'link', url);\n }\n }\n\n private convertInnerHTML() {\n this.setStyleForContent();\n set(this.item(), this.fieldNameBind(), this.quill()?.root.innerHTML);\n }\n\n private setStyleForContent() {\n const styleArray = [\n { selector: '.ql-font-Arial', style: 'font-family: Arial' },\n { selector: '.ql-font-sans-serif', style: 'font-family: sans-serif' },\n { selector: '.ql-font-serif', style: 'font-family: serif' },\n { selector: '.ql-font-monospace', style: 'font-family: monospace' },\n { selector: '.ql-font-Helvetica', style: 'font-family: Helvetica' },\n { selector: '.libs-ui-quill-format-image', style: 'max-width: 100%; height: auto', overrideStyle: true },\n { selector: '.libs-ui-quill-mention', style: 'font-weight: 600;-moz-osx-font-smoothing: grayscale;-webkit-font-smoothing: antialiased; color: #7239EA', overrideStyle: true },\n { selector: 'blockquote', style: 'border-left: 4px solid #ccc; margin-bottom: 5px; margin-top: 5px; padding-left: 16px', overrideStyle: true }\n ];\n this.blotsRegister()?.forEach(item => {\n styleArray.push({ selector: `.${item.className}`, style: item.style, overrideStyle: true });\n });\n styleArray.forEach((item) => {\n const elements = this.quill()?.root.querySelectorAll(item.selector);\n elements?.forEach((element) => {\n if (item.overrideStyle) {\n element.setAttribute('style', item.style);\n return;\n }\n // Fixbug issue: https://admin-cv.mobio.vn/issues/49092\n let styleExist = element.getAttribute('style');\n if (styleExist) {\n ['font-family: Arial', 'font-family: sans-serif', 'font-family: serif', 'font-family: monospace', 'font-family: Helvetica'].forEach(font => {\n styleExist = (styleExist?.includes(`${font};`) ? styleExist?.replace(`${font};`, '') : styleExist?.replace(font, '')) as string;\n });\n }\n element.setAttribute('style', styleExist ? `${styleExist}${styleExist[styleExist.length - 1] === ';' ? '' : ';'}${item.style};` : item.style);\n });\n });\n }\n\n protected handleToggleMention(show: boolean) {\n this.showMention.set(show);\n }\n\n private handlerShowUploadImage() {\n if (this.uploadImageConfig().modeCustom) {\n this.uploadImageComponentRef.set(this.dynamicComponentService.resolveComponentFactory(LibsUiComponentsInputsQuillUploadImageComponent));\n const instance = this.uploadImageComponentRef()?.instance;\n this.uploadImageComponentRef()?.setInput('uploadImageConfig', this.uploadImageConfig());\n instance?.outClose.subscribe((link: string | void) => {\n this.dynamicComponentService.remove(this.uploadImageComponentRef());\n if (link) {\n this.insertImage(link);\n }\n });\n this.dynamicComponentService.addToBody(this.uploadImageComponentRef());\n\n return;\n }\n\n const input = document.createElement('input');\n input.setAttribute('type', 'file');\n input.setAttribute('accept', 'image/*');\n input.click();\n input.onchange = async () => {\n await this.uploadImagesAndInsert(input?.files);\n }\n }\n\n private async uploadImagesAndInsert(files?: FileList | null) {\n if (!files) {\n return;\n }\n const maxImageSize = this.uploadImageConfig()?.maxImageSize || 5 * 1024 * 1024;\n const images = Array.from(files).filter((file) => file && file.type.split('/')[0] === 'image' && (!this.uploadImageConfig().maxImageSize || file.size <= maxImageSize));\n if (!images.length) {\n this.notificationService.showCompTypeTextWarning(this.translate.instant('i18n_note_upload_image_volume', getLabelBySizeFile(maxImageSize)), { timeRemove: 8000 });\n return;\n }\n try {\n this.loadingUploadImage.set(true);\n const indexInsert = this.quill()?.getSelection(true).index;\n const links = await this.uploadImageConfig().functionUploadImage?.(images);\n if (!links?.length) {\n return;\n }\n links.forEach(link => {\n if (!link || (this.uploadImageConfig().onlyAcceptImageHttpsLink && (link instanceof ArrayBuffer || !new RegExp(patternUrl()).test(link)))) {\n return;\n }\n this.insertImage(link as string, indexInsert);\n });\n } catch (error) {\n console.error(error);\n } finally {\n this.loadingUploadImage.set(false);\n }\n return;\n }\n\n private insertMention(event: IMentionInsert) {\n const range = this.quill()?.getSelection();\n if (!range) {\n return;\n }\n const cursorPos = range.index;\n const startPosInsert = cursorPos - event.lengthKey;\n this.quill()?.deleteText(startPosInsert, event.lengthKey, Quill.sources.USER);\n this.quill()?.insertEmbed(startPosInsert, 'mention', event.data, Quill.sources.USER);\n this.insertText(' ', startPosInsert + 1);\n this.quill()?.setSelection(startPosInsert + 2, 0, Quill.sources.USER);\n }\n\n protected handlerInsertMention(data: IMentionInsert) {\n this.insertMention(data);\n }\n\n protected async setFontSize(size: number) {\n this.quill()?.format('size', `${size}px`);\n }\n\n protected handlerValueChange(value: number | string) {\n this.size.update(item => ({ ...item, value: value as number }));\n this.quill()?.format('size', `${this.size().value}px`);\n }\n\n protected handleSelectAlign(event: IEmitSelectKey | undefined) {\n this.alignSelected.set(event);\n this.setStyle('align', event?.key as string);\n }\n\n protected handleSelectFont(event: IEmitSelectKey | undefined) {\n this.fontSelected.set(event);\n this.setStyle('font', event?.key as string);\n }\n\n protected handlerChangeShowMoreAction(event: Event) {\n event.stopPropagation();\n this.showMoreAction.update(item => !item);\n }\n\n ngOnDestroy(): void {\n this.onDestroy.next();\n this.onDestroy.complete();\n this.dynamicComponentService.remove(this.addEditLinkComponentRef());\n this.dynamicComponentService.remove(this.uploadImageComponentRef());\n clearTimeout(this.timeCalculationToolBar());\n }\n}\n\n","<div class=\"flex flex-col w-full h-full\">\n @if (label(); as label) {\n <libs_ui-components-label [classInclude]=\"label.classInclude\"\n [required]=\"label.required\"\n [labelLeft]=\"label.labelLeft\" />\n }\n <div #wrapperEditor\n [attr.heightAuto]=\"heightAuto()\"\n [attr.isToolbarPositionFixed]=\"isToolbarPositionFixed()\"\n class=\"libs-ui-quill-wrapper w-full h-full relative flex flex-col\"\n [class.libs-ui-border-error-general]=\"messageError() && showErrorBorder() && !onlyShowErrorBorderInContent()\"\n [class.rounded-[4px]]=\"messageError() && showErrorBorder() && !onlyShowErrorBorderInContent()\">\n <div #editor\n class=\"libs-ui-quill\"\n [attr.showError]=\"messageError() && showErrorBorder() && onlyShowErrorBorderInContent()\"\n [class.!hidden]=\"!display()\">\n <div #quillOption\n [class.!hidden]=\"!isShowToolBar()\"\n [style]=\"stylesIncludeToolbar()\"\n [class.pointer-events-none]=\"readonly() || loadingUploadImage()\"\n class=\"{{ isToolbarPositionFixed() ? 'fixed !z-10 px-[8px] py-[4px] p-0 w-[500px] rounded-[4px] bg-[#ffffff] libs-ui-quill-toolbar-animation':'' }} {{ classIncludeToolbar() }}\"\n [class.bg-[#f8f9fa]]=\"!readonly() && !loadingUploadImage()\"\n [class.libs-ui-readonly-background]=\"readonly() || loadingUploadImage()\">\n <ng-container *ngTemplateOutlet=\"toolbar\"></ng-container>\n </div>\n <div #quillEditor\n LibsUiComponentsInputsMentionDirective\n [timeDelayInit]=\"timeDelayInit()+50\"\n [mentionConfig]=\"dataConfigMention()\"\n [class.libs-ui-readonly-background]=\"readonly() || loadingUploadImage()\"\n [class.pointer-events-none]=\"loadingUploadImage()\"\n (outToggle)=\"handleToggleMention($event)\"\n (outInsertMention)=\"handlerInsertMention($event)\"></div>\n </div>\n @if (template(); as template) {\n <div [class]=\"classIncludeTemplate()\">\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n </div>\n }\n @if (loadingUploadImage()) {\n <libs_ui-components-spinner [size]=\"'medium'\" />\n }\n </div>\n @if (messageError() && showErrorLabel()) {\n <div class=\"flex items-center leading-normal mt-[8px]\">\n <span class=\"text-[#ff5454] libs-ui-font-h7r\"> {{ messageError() | translate }}</span>\n </div>\n }\n</div>\n\n<ng-template #toolbar>\n <div class=\"toolbar\"\n #toolbarItems>\n <div class=\"ql-formats items-center\">\n @for (option of toolbarOptionsConfig(); track option) {\n <div #item\n [id]=\"option.type+'_'+$index\"\n class=\"items-center\"\n [class.hidden]=\"itemHidden().includes($index) || itemHiddenExpand().includes($index)\"\n [class.flex]=\"!itemHidden().includes($index)\">\n <ng-container *ngTemplateOutlet=\"itemTemplate;context:{option, $index, $last}\"></ng-container>\n </div>\n }\n <div class=\"relative\">\n @if (itemHidden().length) {\n <libs_ui-components-buttons-button [type]=\"showMoreAction() ? 'button-secondary' : 'button-third'\"\n [iconOnlyType]=\"true\"\n [classInclude]=\"'!p-[1px] !h-[20px] ml-[8px]'\"\n [classIconLeft]=\"'libs-ui-icon-move-right rotate-90'\"\n (outClick)=\"handlerChangeShowMoreAction($event)\" />\n }\n <!-- Build toolbar khi click xem thêm-->\n <div [class.hidden]=\"!showMoreAction() || !itemHidden().length\"\n class=\"absolute bg-[#ffffff] shadow-md z-[1] flex items-center pl-[8px] pr-[16px] py-[4px] rounded-[8px] top-[31px] right-[0px]\">\n @for (option of toolbarOptionsConfig(); track option) {\n <div class=\"items-center\"\n [class.hidden]=\"!itemHidden().includes($index)\"\n [class.flex]=\"itemHidden().includes($index)\">\n <ng-container *ngTemplateOutlet=\"itemTemplate;context:{option, $index, $last}\"></ng-container>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n</ng-template>\n\n\n<ng-template #itemTemplate\n let-$index=\"$index\"\n let-$last=\"$last\"\n let-option=\"option\">\n @if (option.type === 'undo') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button LibsUiComponentsPopoverDirective\n [config]=\"{content: 'i18n_undo', zIndex: 1250}\"\n class=\"ql-undo\"></button>\n </div>\n }\n @if (option.type === 'redo') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button LibsUiComponentsPopoverDirective\n [config]=\"{content: 'i18n_redo', zIndex: 1250}\"\n class=\"ql-redo\"></button>\n </div>\n }\n @if (option.type === 'fontFamily') {\n <div class=\"relative w-[128px] h-full rounded-[4px] libs-ui-border-general {{ option.classInclude || 'mx-[8px]' }}\"\n [class.bg-white]=\"!readonly() && !loadingUploadImage()\">\n <libs_ui-components-dropdown [isNgContent]=\"true\"\n [labelPopoverFullWidth]=\"true\"\n [listConfig]=\"listConfigFont()\"\n [listHasButtonUnSelectOption]=\"false\"\n [listHiddenInputSearch]=\"true\"\n [listMaxItemShow]=\"8\"\n [zIndex]=\"1250\"\n (outSelectKey)=\"handleSelectFont($event)\">\n @if (fontSelected(); as fontSelected) {\n <div\n class=\"flex items-center cursor-pointer py-[8px] libs-ui-font-h5r pl-[16px] pr-[40px] {{ option.classInclude || 'mx-[8px]' }}\">\n <libs_ui-components-popover [type]=\"'text'\"\n [ignoreStopPropagationEvent]=\"true\"\n [config]=\"{zIndex:1250}\">\n {{ labelFontSelectedComputed() }}\n </libs_ui-components-popover>\n <i class=\"libs-ui-icon-move-right rotate-90 absolute right-[12px] text-[#6a7383] text-[16px]\"></i>\n </div>\n }\n </libs_ui-components-dropdown>\n </div>\n }\n @if (option.type === 'fontSize') {\n <div class=\"ql-picker {{ option.classInclude || 'mx-[8px]' }}\">\n <libs_ui-components-inputs-valid [dataType]=\"'int'\"\n [(item)]=\"size\"\n [fieldNameBind]=\"'value'\"\n [valueUpDownNumber]=\"1\"\n [maxValueNumber]=\"72\"\n [minValueNumber]=\"8\"\n [readonly]=\"readonly() || loadingUploadImage()\"\n [classContainerInput]=\"'w-[72px] h-[32px]'\"\n (outValueChange)=\"handlerValueChange($event)\" />\n </div>\n }\n @if (option.type === 'color') {\n <div class=\"ql-color ql-picker ql-color-picker !flex items-center {{ option.classInclude || 'mx-[8px]' }}\">\n <libs_ui-components-popover [config]=\"{content:'i18n_text_color', zIndex:1250}\">\n <libs_ui-components-buttons-select_color [zIndex]=\"zIndex()\"\n [direction]=\"'top'\"\n [externalContent]=\"true\"\n [applyNow]=\"true\"\n (outColorChange)=\"setStyle('color', $event)\">\n <div\n class=\"libs-ui-icon-editor-color-text libs-ui-buttons-select-color text-[#6a7383] text-[16px] hover:text-[var(--libs-ui-color-light-1)]\">\n </div>\n </libs_ui-components-buttons-select_color>\n </libs_ui-components-popover>\n </div>\n }\n @if (option.type === 'background') {\n <div class=\"ql-background ql-picker ql-color-picker !flex items-center {{ option.classInclude || 'mx-[8px]' }}\">\n <libs_ui-components-popover [config]=\"{content:'i18n_background_color', zIndex:1250}\">\n <libs_ui-components-buttons-select_color [zIndex]=\"zIndex()\"\n [direction]=\"'top'\"\n [externalContent]=\"true\"\n [applyNow]=\"true\"\n (outColorChange)=\"setStyle('background', $event)\">\n <div\n class=\"libs-ui-icon-editor-color-background libs-ui-buttons-select-color text-[#6a7383] text-[16px] hover:text-[var(--libs-ui-color-light-1)]\">\n </div>\n </libs_ui-components-buttons-select_color>\n </libs_ui-components-popover>\n </div>\n }\n @if (option.type === 'bold') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button LibsUiComponentsPopoverDirective\n [config]=\"{content:'i18n_font_weight_bold', zIndex:1250}\"\n class=\"ql-bold\"></button>\n </div>\n }\n @if (option.type === 'italic') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button LibsUiComponentsPopoverDirective\n [config]=\"{content:'i18n_font_style_italic', zIndex:1250}\"\n class=\"ql-italic\"></button>\n </div>\n }\n @if (option.type === 'underline') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button LibsUiComponentsPopoverDirective\n [config]=\"{content:'i18n_text_decoration_underline', zIndex:1250}\"\n class=\"ql-underline\"></button>\n </div>\n }\n @if (option.type === 'strikeThrough') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button LibsUiComponentsPopoverDirective\n [config]=\"{content:'i18n_text_line_through', zIndex:1250}\"\n class=\"ql-strike\"></button>\n </div>\n }\n @if (option.type === 'adjust') {\n <div\n class=\"relative !flex items-center ql-align ql-picker ql-icon-picker !w-max {{ option.classInclude || 'mx-[8px]' }}\">\n <libs_ui-components-popover [config]=\"{content:'i18n_adjust', zIndex:1250}\">\n <libs_ui-components-dropdown [isNgContent]=\"true\"\n [ignoreStopPropagationEvent]=\"true\"\n [labelPopoverFullWidth]=\"true\"\n [listConfig]=\"listConfigAlign()\"\n [listHiddenInputSearch]=\"true\"\n [popoverCustomConfig]=\"{ignoreArrow: true, classInclude: '!w-[32px] overflow-hidden !py-[4px]', position: {mode: 'start', distance: 0}, paddingLeftItem: false}\"\n [listHasButtonUnSelectOption]=\"false\"\n [listMaxItemShow]=\"8\"\n [zIndex]=\"1250\"\n (outSelectKey)=\"handleSelectAlign($event)\">\n @if (alignSelected(); as alignSelected) {\n <div class=\"flex items-center cursor-pointer\">\n <i [class]=\"iconAlignSelectedComputed()\"></i>\n <i class=\"libs-ui-icon-move-right rotate-90 text-[#6a7383] text-[16px] ml-[4px]\"></i>\n </div>\n }\n </libs_ui-components-dropdown>\n </libs_ui-components-popover>\n </div>\n }\n @if (option.type === 'indentIncrease') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button LibsUiComponentsPopoverDirective\n [config]=\"{content:'i18n_indent_increase', zIndex:1250}\"\n class=\"ql-indent\"\n value=\"+1\"></button>\n </div>\n }\n @if (option.type === 'indentDecrease') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button LibsUiComponentsPopoverDirective\n [config]=\"{content:'i18n_indent_decrease', zIndex:1250}\"\n class=\"ql-indent\"\n value=\"-1\"></button>\n </div>\n }\n @if (option.type === 'listBulleted') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button LibsUiComponentsPopoverDirective\n [config]=\"{content:'i18n_list_bulleted', zIndex:1250}\"\n class=\"ql-list ql-bullet\"\n value=\"bullet\"></button>\n </div>\n }\n @if (option.type === 'listNumbered') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button LibsUiComponentsPopoverDirective\n [config]=\"{content:'i18n_list_numbered', zIndex:1250}\"\n class=\"ql-list ql-ordered\"\n value=\"ordered\"></button>\n </div>\n }\n @if (option.type === 'personalize' && templateToolBarPersonalize(); as templateToolBarPersonalize) {\n <div class=\"flex items-center {{ option.classInclude || 'mx-[8px]' }}\">\n <ng-container *ngTemplateOutlet=\"templateToolBarPersonalize\"></ng-container>\n </div>\n }\n @if (option.type === 'blockquote') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button LibsUiComponentsPopoverDirective\n [config]=\"{content:'i18n_quote', zIndex:1250}\"\n class=\"ql-blockquote\"></button>\n </div>\n }\n @if (option.type === 'link') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button LibsUiComponentsPopoverDirective\n [config]=\"{content:'i18n_insert_link', zIndex:1250}\"\n class=\"ql-link\"></button>\n </div>\n }\n @if (option.type === 'unLink') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button LibsUiComponentsPopoverDirective\n [config]=\"{content:'i18n_unlink', zIndex:1250}\"\n class=\"ql-unLink\"></button>\n </div>\n }\n @if (option.type === 'image') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button LibsUiComponentsPopoverDirective\n [config]=\"{content:'i18n_image', zIndex:1250}\"\n class=\"ql-image\"></button>\n </div>\n }\n @if (option.type === 'emoji') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <libs_ui-components-emoji [zIndex]=\"1250\"\n [isNgContent]=\"true\"\n (outEventEmoji)=\"handlerAddEmoji($event)\">\n <button class=\"ql-emoji\"></button>\n </libs_ui-components-emoji>\n </div>\n }\n @if (option.type === 'line') {\n <div class=\"w-[1px] h-[16px] libs-ui-border-right-general\"></div>\n }\n</ng-template>\n\n<libs_ui-components-popover [mode]=\"'click'\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"true\"\n [config]=\"{template: viewLink, whiteTheme: true, ignoreArrow: true}\"\n (outEvent)=\"handlerPopoverEvent($event)\"\n (outFunctionsControl)=\"handlerPopoverFunctionControl($event)\" />\n\n<ng-template #viewLink>\n <div class=\"flex justify-between items-center px-[16px] py-[8px] rounded-[8px]\">\n <div class=\"w-full min-w-0 libs-ui-font-h5r\"\n [type]=\"'text'\"\n LibsUiComponentsPopoverDirective>{{ link().url }}</div>\n <div class=\"flex items-center ml-[16px]\">\n <libs_ui-components-buttons-button [type]=\"'button-link-primary'\"\n [iconOnlyType]=\"true\"\n [classIconLeft]=\"'libs-ui-icon-edit-line'\"\n [classInclude]=\"'!p-0'\"\n (outClick)=\"handlerEdit($event)\" />\n <libs_ui-components-buttons-button [type]=\"'button-link-custom'\"\n [buttonCustom]=\"{\n configStepColor: {\n text: '#071631',\n text_hover: '#ee2d41',\n text_active: '#ee2d41',\n text_disable: '071631'\n },\n rootColor: '#071631'\n }\"\n [classInclude]=\"'!p-0 ml-[12px]'\"\n [iconOnlyType]=\"true\"\n [classIconLeft]=\"'libs-ui-icon-link-broken'\"\n (outClick)=\"handlerUnlink($event)\" />\n </div>\n </div>\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAEA,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC;AAEnC,MAAO,YAAa,SAAQ,KAAK,CAAA;AACrC,IAAA,OAAO,OAAO,GAAG,KAAK;;;ACHxB,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC;AAE3C,MAAO,eAAgB,SAAQ,WAAW,CAAA;IAC9C,OAAO,MAAM,CAAC,KAAa,EAAA;QACzB,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;AAChC,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,4BAA4B,CAAC;AAChD,QAAA,OAAO,IAAI;;IAGb,OAAO,GAAA;QACL,OAAO,EAAE,CAAC;;AAEb;;ACZD,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC;AAEnC,MAAO,gBAAiB,SAAQ,KAAK,CAAA;AACzC,IAAA,OAAO,QAAQ,GAAG,SAAS;AAC3B,IAAA,OAAO,OAAO,GAAG,MAAM;AACvB,IAAA,OAAO,SAAS,GAAG,uBAAuB;IAC1C,OAAO,MAAM,CAAC,IAAiD,EAAA;AAC7D,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE;AAC3B,QAAA,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK;QAC5B,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;QAChC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC;QACpC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC;AACtC,QAAA,OAAO,IAAI;;IAGb,OAAO,KAAK,CAAC,OAAoB,EAAA;QAC/B,OAAO;AACL,YAAA,EAAE,EAAE,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC;AAC9B,YAAA,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC;AAClC,YAAA,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,OAAO;SACpC;;IAGH,MAAM,GAAA;QACJ,KAAK,CAAC,MAAM,EAAE;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe;AACxC,YAAA,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC;;;AAIpE,IAAA,eAAe,CAAC,KAAY,EAAA;QAC1B,KAAK,CAAC,eAAe,EAAE;;;;ACjC3B,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC;AAC3C,MAAM,WAAW,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC5C,MAAM,aAAa,GAAG,CAAC;AAEvB,MAAM,gBAAiB,SAAS,SAAS,CAAC,UAAU,CAAC,KAGnD,CAAA;AACA,IAAA,WAAA,CAAY,UAAkB,EAAE,aAAqB,EAAE,iBAA0B,EAAA;AAC/E,QAAA,KAAK,CAAC,UAAU,EAAE,aAAa,EAAE,iBAAiB,CAAC;;IAG9C,GAAG,CAAC,IAAiB,EAAE,KAAa,EAAA;AACzC,QAAA,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAG,EAAA,CAAC,KAAK,GAAG,aAAa,CAAA,EAAA,CAAI,CAAC;;AAGhD,IAAA,KAAK,CAAC,IAAiB,EAAA;AAC5B,QAAA,OAAO,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,aAAa,IAAI,SAAS,CAAC;;AAErE;AAEM,MAAM,WAAW,GAAG,IAAI,gBAAgB,CAAC,QAAQ,EAAE,aAAa,EAAE;AACvE,IAAA,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,KAAK;AAC5B,IAAA,SAAS,EAAE,WAAW,CAAC,GAAG,CAAC,KAAK,IAAI,CAAG,EAAA,KAAK,GAAG,aAAa,IAAI,CAAC;AAClE,CAAA,CAAC;;MCVW,wCAAwC,CAAA;AAEzC,IAAA,QAAQ,GAAG,MAAM,CAAkC,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AAC3E,IAAA,WAAW,GAAG,MAAM,CAAS,UAAU,EAAE,CAAC;AAE5C,IAAA,yBAAyB,GAAG,MAAM,CAAyC,EAAE,CAAC;AAE7E,IAAA,MAAM,GAAG,KAAK,CAAS,IAAI,CAAC;IAC5B,KAAK,GAAG,KAAK,EAAU;IACvB,IAAI,GAAG,KAAK,EAAU;IAEtB,QAAQ,GAAG,MAAM,EAAQ;IACzB,WAAW,GAAG,MAAM,EAAmC;IAEhE,QAAQ,GAAA;AACN,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AACxB,QAAA,IAAI,KAAK,IAAI,IAAI,EAAE;AACjB,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;;;IAI3E,MAAM,uBAAuB,CAAC,KAAsC,EAAA;AAC5E,QAAA,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,KAAK,CAAC,CAAC;;AAG3D,IAAA,MAAM,QAAQ,GAAA;QACpB,IAAI,KAAK,GAAG,IAAI;QAChB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,yBAAyB,EAAE,EAAE;YACtD,IAAI,EAAE,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC,EAAE;gBACnC,KAAK,GAAG,KAAK;;;AAGjB,QAAA,OAAO,KAAK;;IAGJ,MAAM,YAAY,CAAC,KAAuB,EAAA;AAClD,QAAA,IAAI,KAAK,KAAK,OAAO,EAAE;AACrB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;YACpB;;AAEF,QAAA,IAAI,MAAM,IAAI,CAAC,QAAQ,EAAE,EAAE;YACzB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AACtC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;;;wGA3Cb,wCAAwC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAxC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wCAAwC,EChBrD,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,oqCA2BA,EDfI,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,8BAA8B,mtBAC9B,oCAAoC,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,aAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,eAAA,EAAA,WAAA,EAAA,yBAAA,EAAA,0BAAA,EAAA,4BAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,WAAA,EAAA,2BAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,SAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,2BAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,wBAAA,EAAA,gBAAA,EAAA,yBAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,qBAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,WAAA,EAAA,gCAAA,EAAA,cAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,0BAAA,EAAA,yBAAA,EAAA,gCAAA,EAAA,sBAAA,EAAA,0BAAA,EAAA,4BAAA,EAAA,8BAAA,EAAA,4BAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,8BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAG3B,wCAAwC,EAAA,UAAA,EAAA,CAAA;kBAXpD,SAAS;AAEE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sCAAsC,cAEpC,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EACtC,OAAA,EAAA;wBACP,8BAA8B;wBAC9B;AACD,qBAAA,EAAA,QAAA,EAAA,oqCAAA,EAAA;;;MECU,+CAA+C,CAAA;IAEhD,YAAY,GAAG,MAAM,CAAiB;AAC9C,QAAA;AACE,YAAA,IAAI,EAAE,cAAc;AACpB,YAAA,KAAK,EAAE,aAAa;YACpB,MAAM,EAAE,YAAY,IAAI,CAAC,QAAQ,CAAC,IAAI;AACvC,SAAA;AACD,QAAA;AACE,YAAA,KAAK,EAAE,WAAW;AAClB,YAAA,MAAM,EAAE,MAAM,IAAI,CAAC,gBAAgB;AACpC;AAAC,KAAA,CAAC;AACK,IAAA,OAAO,GAAG,MAAM,CAAU,KAAK,CAAC;;;AAKjC,IAAA,iBAAiB,GAAG,KAAK,CAAC,QAAQ,EAA2B;IAE7D,QAAQ,GAAG,MAAM,EAAiB;;;;;;;AAUnC,IAAA,MAAM,gBAAgB,GAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCpB,IAAA,iBAAiB,CAAC,KAAuB,EAAA;AACjD,QAAA,IAAI,KAAK,KAAK,OAAO,EAAE;AACrB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;;;wGA/Db,+CAA+C,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAA/C,+CAA+C,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECf5D,+6BAyBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDbI,8BAA8B,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,uBAAA,EAAA,8BAAA,EAAA,kCAAA,EAAA,2CAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,UAAA,EAAA,cAAA,EAAA,SAAA,EAAA,6BAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,EAAA,eAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAGrB,+CAA+C,EAAA,UAAA,EAAA,CAAA;kBAV3D,SAAS;AAEE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,8CAA8C,cAE5C,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EACtC,OAAA,EAAA;wBACP;AACD,qBAAA,EAAA,QAAA,EAAA,+6BAAA,EAAA;;;AEPI,MAAM,aAAa,GAAG,MAAK;IAChC,OAAO;AACL,QAAA,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,8FAA8F,EAAE;AACjH,QAAA,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,+FAA+F,EAAE;AACvH,QAAA,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,gGAAgG,EAAE;AACzH,QAAA,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,iGAAiG,EAAE;KAC5H;AACH,CAAC;AAEM,MAAM,QAAQ,GAAG,MAAK;IAC3B,OAAO;AACL,QAAA,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE;AAChC,QAAA,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;AAChC,QAAA,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;KACzC;AACH,CAAC;AAEM,MAAM,eAAe,GAAG,MAAsB;IACnD,OAAO;AACL,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,mBAAmB,EAAE,IAAI;QACzB,eAAe,EAAE,MAAM,CAAC;AACtB,YAAA,YAAY,EAAE,gBAAgB,CAAC,aAAa,EAAE,CAAC;AAC/C,YAAA,YAAY,EAAE,MAAM;AACpB,YAAA,cAAc,EAAE;SACjB,CAAC;QACF,kBAAkB,EAAE,MAAM,CAAC;AACzB,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,YAAY,EAAE,MAAM,qBAAqB;YACzC,QAAQ,EAAE,IAAI,IAAI,CAAkB,eAAA,EAAA,IAAI,CAAC,IAAI,CAAQ,MAAA,CAAA;AACrD,YAAA,kBAAkB,EAAE;SACrB;KACF;AACH,CAAC;AAEM,MAAM,cAAc,GAAG,MAAsB;IAClD,OAAO;AACL,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,mBAAmB,EAAE,IAAI;QACzB,eAAe,EAAE,MAAM,CAAC;AACtB,YAAA,YAAY,EAAE,gBAAgB,CAAC,QAAQ,EAAE,CAAC;AAC1C,YAAA,YAAY,EAAE,MAAM;AACpB,YAAA,cAAc,EAAE;SACjB,CAAC;QACF,kBAAkB,EAAE,MAAM,CAAC;AACzB,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,QAAQ,EAAE,IAAI,IAAI,IAAI,CAAC,KAAK;AAC5B,YAAA,kBAAkB,EAAE;SACrB;KACF;AACH,CAAC;AAEM,MAAM,cAAc,GAAG,CAAC,IAAiC,EAAE,YAAqB,EAAE,kBAA2B,KAAgC;IAClJ,OAAQ;AACN,QAAA;AACE,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,YAAY,EAAE,UAAU;AACxB,YAAA,IAAI,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC;AAC1B,YAAA,KAAK,EAAE;AACR,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,IAAI,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC;AAC1B,YAAA,KAAK,EAAE;AACR,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,IAAI,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC;AAC1B,YAAA,KAAK,EAAE;AACR,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,YAAY,EAAE,mBAAmB;YACjC,IAAI,EAAE,CAAC,SAAS,CAAC;AACjB,YAAA,KAAK,EAAE;AACR,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,UAAU;AAChB,YAAA,YAAY,EAAE,mBAAmB;YACjC,IAAI,EAAE,CAAC,SAAS,CAAC;AACjB,YAAA,KAAK,EAAE;AACR,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,CAAC,SAAS,CAAC;AACjB,YAAA,KAAK,EAAE;AACR,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,IAAI,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC;AAC1B,YAAA,KAAK,EAAE;AACR,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,CAAC,SAAS,CAAC;AACjB,YAAA,KAAK,EAAE;AACR,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,IAAI,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC;AAC1B,YAAA,KAAK,EAAE;AACR,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,IAAI,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC;AAC1B,YAAA,KAAK,EAAE;AACR,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,IAAI,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC;AAC1B,YAAA,KAAK,EAAE;AACR,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,WAAW;AACjB,YAAA,IAAI,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC;AAC1B,YAAA,KAAK,EAAE;AACR,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,eAAe;YACrB,IAAI,EAAE,CAAC,SAAS,CAAC;AACjB,YAAA,KAAK,EAAE;AACR,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,IAAI,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC;AAC1B,YAAA,KAAK,EAAE;AACR,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,CAAC,SAAS,CAAC;AACjB,YAAA,KAAK,EAAE;AACR,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,CAAC,SAAS,CAAC;AACjB,YAAA,KAAK,EAAE;AACR,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,gBAAgB;YACtB,IAAI,EAAE,CAAC,SAAS,CAAC;AACjB,YAAA,KAAK,EAAE;AACR,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,gBAAgB;YACtB,IAAI,EAAE,CAAC,SAAS,CAAC;AACjB,YAAA,KAAK,EAAE;AACR,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,CAAC,SAAS,CAAC;AACjB,YAAA,KAAK,EAAE;AACR,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,CAAC,SAAS,CAAC;AACjB,YAAA,KAAK,EAAE;AACR,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,CAAC,SAAS,CAAC;AACjB,YAAA,KAAK,EAAE;AACR,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,CAAC,SAAS,CAAC;AACjB,YAAA,KAAK,EAAE;AACR,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,CAAC,SAAS,CAAC;AACjB,YAAA,KAAK,EAAE;AACR,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,IAAI,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC;AAC1B,YAAA,KAAK,EAAE;AACR,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,IAAI,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC;AAC1B,YAAA,KAAK,EAAE;AACR,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,CAAC,SAAS,CAAC;AACjB,YAAA,KAAK,EAAE;AACR,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,YAAY,EAAE,UAAU;YACxB,IAAI,EAAE,CAAC,SAAS,CAAC;AACjB,YAAA,KAAK,EAAE;AACR;AAC6B,KAAA,CAAC,MAAM,CAAC,IAAI,IAAG;QAC7C,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE;AAC9B,YAAA,OAAO,KAAK;;AAEd,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;AACzB,YAAA,OAAO,YAAY;;AAErB,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE;AAC/B,YAAA,OAAO,kBAAkB;;AAG3B,QAAA,OAAO,IAAI;AAEb,KAAC,CAAC;AACJ,CAAC;AACM,MAAM,QAAQ,GAAG,MAA2C;IACjE,OAAO;AACL,QAAA;AACE,YAAA,GAAG,EAAE,MAAM;AACX,YAAA,IAAI,EAAE,0BAA0B;AACjC,SAAA;AACD,QAAA;AACE,YAAA,GAAG,EAAE,QAAQ;AACb,YAAA,IAAI,EAAE,4BAA4B;AACnC,SAAA;AACD,QAAA;AACE,YAAA,GAAG,EAAE,WAAW;AAChB,YAAA,IAAI,EAAE,gCAAgC;AACvC,SAAA;AACD,QAAA;AACE,YAAA,GAAG,EAAE,OAAO;AACZ,YAAA,IAAI,EAAE;AACP,SAAA;AACD,QAAA;AACE,YAAA,GAAG,EAAE,MAAM;AACX,YAAA,IAAI,EAAE;AACP,SAAA;AACD,QAAA;AACE,YAAA,GAAG,EAAE,MAAM;AACX,YAAA,IAAI,EAAE;AACP,SAAA;AACD,QAAA;AACE,YAAA,GAAG,EAAE,MAAM;AACX,YAAA,IAAI,EAAE;AACP,SAAA;AACD,QAAA;AACE,YAAA,GAAG,EAAE,QAAQ;AACb,YAAA,IAAI,EAAE;AACP,SAAA;AACD,QAAA;AACE,YAAA,GAAG,EAAE,YAAY;AACjB,YAAA,IAAI,EAAE;AACP,SAAA;AACD,QAAA;AACE,YAAA,GAAG,EAAE,SAAS;AACd,YAAA,IAAI,EAAE;AACP,SAAA;AACD,QAAA;AACE,YAAA,GAAG,EAAE,QAAQ;AACb,YAAA,IAAI,EAAE;AACP,SAAA;AACD,QAAA;AACE,YAAA,GAAG,EAAE,YAAY;AACjB,YAAA,IAAI,EAAE;AACP,SAAA;AACD,QAAA;AACE,YAAA,GAAG,EAAE,OAAO;AACZ,YAAA,IAAI,EAAE;AACP,SAAA;AACD,QAAA;AACE,YAAA,GAAG,EAAE,WAAW;AAChB,YAAA,IAAI,EAAE;AACP,SAAA;AACD,QAAA;AACE,YAAA,GAAG,EAAE,WAAW;AAChB,YAAA,IAAI,EAAE;AACP,SAAA;AACD,QAAA;AACE,YAAA,GAAG,EAAE,QAAQ;AACb,YAAA,IAAI,EAAE;AACP,SAAA;AACD,QAAA;AACE,YAAA,GAAG,EAAE,cAAc;AACnB,YAAA,IAAI,EAAE;AACP,SAAA;AACD,QAAA;AACE,YAAA,GAAG,EAAE,aAAa;AAClB,YAAA,IAAI,EAAE;AACP,SAAA;AACD,QAAA;AACE,YAAA,GAAG,EAAE,eAAe;AACpB,YAAA,IAAI,EAAE;AACP,SAAA;AACD,QAAA;AACE,YAAA,GAAG,EAAE,QAAQ;AACb,YAAA,IAAI,EAAE;AACP,SAAA;AACD,QAAA;AACE,YAAA,GAAG,EAAE,OAAO;AACZ,YAAA,IAAI,EAAE;AACP;KACF;AACH,CAAC;AAEM,MAAM,wBAAwB,GAAG,MAA8B;IACpE,OAAO;AACL,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,MAAM,EAAE,IAAI;AACZ,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,YAAY,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI;AAC7B,QAAA,wBAAwB,EAAE,KAAK;AAC/B,QAAA,mBAAmB,EAAE,OAAO,KAAkB,KAAI;YAChD,MAAM,IAAI,GAAG,EAAE;AACf,YAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;gBACxB,IAAI,CAAC,IAAI,CAAC,MAAM,6BAA6B,CAAC,IAAI,CAAC,CAAC;;AAEtD,YAAA,OAAO,IAAI;;KAEd;AACH,CAAC;AAEM,MAAM,WAAW,GAAG,MAAiB;IAC1C,OAAO;AACL,QAAA,KAAK,EAAE,EAAE;AACT,QAAA,GAAG,EAAE,EAAE;AACP,QAAA,KAAK,EAAE;AACL,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,MAAM,EAAE;AACT;KACF;AACH,CAAC;;MC9RY,oCAAoC,CAAA;AACrC,IAAA,kBAAkB,GAAG,MAAM,CAAU,KAAK,CAAC;AAClC,IAAA,aAAa,GAAG,MAAM,CAAS,EAAE,CAAC;AAC3C,IAAA,YAAY,GAAG,MAAM,CAAS,EAAE,CAAC;AACjC,IAAA,OAAO,GAAG,MAAM,CAAU,KAAK,CAAC;AAChC,IAAA,eAAe,GAAG,MAAM,CAAkB,eAAe,EAAE,CAAC;AAC5D,IAAA,aAAa,GAAG,MAAM,CAA6B,SAAS,CAAC;AAC7D,IAAA,yBAAyB,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,WAAW,CAAC,CAAC;AAClF,IAAA,cAAc,GAAG,MAAM,CAAkB,cAAc,EAAE,CAAC;AAC1D,IAAA,YAAY,GAAG,MAAM,CAA6B,SAAS,CAAC;AAC5D,IAAA,yBAAyB,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,YAAY,CAAC,IAAI,YAAY,CAAC;IAClG,IAAI,GAAG,MAAM,CAAoB,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;AAC/C,IAAA,gBAAgB,GAAG,MAAM,CAAgB,EAAE,CAAC;AAC5C,IAAA,UAAU,GAAG,MAAM,CAAgB,EAAE,CAAC;AACtC,IAAA,cAAc,GAAG,MAAM,CAAU,KAAK,CAAC;AACvC,IAAA,IAAI,GAAG,MAAM,CAAa,WAAW,EAAE,CAAC;AACxC,IAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAK;QAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,IAAI,SAAS;QACpD,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC,QAAQ,IAAI,KAAK;QAC/D,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,CAAC,0BAA0B,EAAE;AAE9D,QAAA,OAAO,IAAI,CAAC,aAAa,EAAE,EAAE,MAAM,IAAI,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE,kBAAkB,CAAC;AAC/F,KAAC,CAAC;AAEM,IAAA,sBAAsB,GAAG,MAAM,CAAqB,SAAS,CAAC;AAC9D,IAAA,sBAAsB,GAAG,MAAM,CAA2C,SAAS,CAAC;AACpF,IAAA,KAAK,GAAG,MAAM,CAAoB,SAAS,CAAC;IAC5C,QAAQ,GAAG,MAAM,CAAsD,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAC9I,IAAA,WAAW,GAAG,MAAM,CAAU,KAAK,CAAC;AACpC,IAAA,uBAAuB,GAAG,MAAM,CAAqE,SAAS,CAAC;AAC/G,IAAA,uBAAuB,GAAG,MAAM,CAA4E,SAAS,CAAC;AACtH,IAAA,SAAS,GAAG,IAAI,OAAO,EAAQ;AAC/B,IAAA,uBAAuB,GAAG,MAAM,CAAC,6BAA6B,CAAC;AAC/D,IAAA,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAEnC,IAAA,aAAa,GAAG,KAAK,CAA+B,IAAI,EAAE,EAAE,SAAS,EAAE,GAAG,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;AAC5F,IAAA,sBAAsB,GAAG,KAAK,CAA+B,KAAK,EAAE,EAAE,SAAS,EAAE,GAAG,IAAI,GAAG,IAAI,KAAK,EAAE,CAAC;AACvG,IAAA,mBAAmB,GAAG,KAAK,CAAS,EAAE,CAAC;IACvC,oBAAoB,GAAG,KAAK,EAAe;IAC3C,aAAa,GAAG,KAAK,EAG1B;AACK,IAAA,WAAW,GAAG,KAAK,CAA6B,qBAAqB,EAAE,EAAE,SAAS,EAAE,CAAC,KAAK,KAAK,KAAK,IAAI,qBAAqB,EAAE,CAAC;IAChI,KAAK,GAAG,KAAK,EAAsB;IACnC,IAAI,GAAG,KAAK,EAA2B;AACvC,IAAA,aAAa,GAAG,KAAK,CAAS,OAAO,CAAC;IACtC,QAAQ,GAAG,KAAK,EAAW;AAC3B,IAAA,cAAc,GAAG,KAAK,CAAU,IAAI,CAAC;AACrC,IAAA,eAAe,GAAG,KAAK,CAAU,KAAK,CAAC;AACvC,IAAA,4BAA4B,GAAG,KAAK,CAAU,KAAK,CAAC;IACpD,oBAAoB,GAAG,KAAK,EAAU;IACtC,YAAY,GAAG,KAAK,EAAU;IAC9B,cAAc,GAAG,KAAK,EAAgD;IACtE,aAAa,GAAG,KAAK,EAAkB;IACvC,cAAc,GAAG,KAAK,EAAgB;IACtC,cAAc,GAAG,KAAK,EAAgB;AACtC,IAAA,MAAM,GAAG,KAAK,CAA6B,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,KAAK,KAAK,KAAK,IAAI,IAAI,EAAE,CAAC;IACzF,iBAAiB,GAAG,KAAK,EAAkB;IAC3C,aAAa,GAAG,KAAK,EAA6B;IAClD,UAAU,GAAG,KAAK,EAAW;IAC7B,SAAS,GAAG,KAAK,EAAW;IAC5B,WAAW,GAAG,KAAK,EAAW;IAC9B,qBAAqB,GAAG,KAAK,EAAW;IACxC,0BAA0B,GAAG,KAAK,EAAkC;IACpE,QAAQ,GAAG,KAAK,EAAkC;IAClD,iBAAiB,GAAG,KAAK,CAA+D,wBAAwB,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,KAAK,KAAK,KAAK,IAAI,wBAAwB,EAAE,EAAE,CAAC;IAElL,eAAe,GAAG,MAAM,EAAU;IAClC,OAAO,GAAG,MAAM,EAAQ;IACxB,QAAQ,GAAG,MAAM,EAAQ;IACzB,SAAS,GAAG,MAAM,EAAU;IAC5B,mBAAmB,GAAG,MAAM,EAA8B;IAC1D,kBAAkB,GAAG,MAAM,EAAyB;IACpD,aAAa,GAAG,MAAM,EAAoB;IAC1C,cAAc,GAAG,MAAM,EAAc;AAErC,IAAA,eAAe,GAAG,SAAS,CAAa,eAAe,CAAC;AACxD,IAAA,QAAQ,GAAG,SAAS,CAAa,QAAQ,CAAC;AAC1C,IAAA,aAAa,GAAG,SAAS,CAAa,aAAa,CAAC;AACpD,IAAA,aAAa,GAAG,SAAS,CAAa,aAAa,CAAC;AACpD,IAAA,cAAc,GAAG,SAAS,CAAa,cAAc,CAAC;AACtD,IAAA,OAAO,GAAG,YAAY,CAAa,MAAM,CAAC;AAE3C,IAAA,mBAAmB,GAAG,MAAM,CAAC,yBAAyB,CAAC;AAE/D,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,aAAa,EAAE;gBACxC,SAAS,CAAC,MAAK;oBACb,IAAI,CAAC,iBAAiB,EAAE;AAC1B,iBAAC,CAAC;;AAEN,SAAC,CAAC;;IAGJ,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;YAC5B,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;YACtC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;YACtC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;YACtC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;YACtC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;YACxC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;AACxC,YAAA,QAAQ,EAAE,OAAO,KAAa,KAAK,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;AAChE,YAAA,aAAa,EAAE,OAAO,KAAa,KAAK,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAC;AAC1E,YAAA,KAAK,EAAE,MAAM,IAAI,CAAC,KAAK;AACxB,SAAA,CAAC;;AAGJ,IAAA,MAAM,eAAe,GAAA;QACnB,IAAI,CAAC,kBAAkB,EAAE;QACzB,MAAM,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QAChD,IAAI,CAAC,SAAS,EAAE;AAChB,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AAEtB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,iBAAiB,EAAE;QACxB,IAAI,CAAC,sBAAsB,EAAE;QAC7B,IAAI,CAAC,YAAY,EAAE;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;;AAErB,YAAA,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE;;QAEvB,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxG,QAAA,MAAM,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC/B,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC;QACjE,IAAI,UAAU,EAAE;YACd,UAAU,CAAC,MAAM,EAAE;;;IAIf,SAAS,GAAA;QACf,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC;QACnD,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,yBAAyB,CAAC;QAC1D,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC;QACtC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC;QAC7C,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC;AACzC,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;AAEvhB,QAAA,MAAM,CAAC,OAAO,GAAG,GAAG;AACpB,QAAA,IAAI,CAAC,OAAO,GAAG,GAAG;AAClB,QAAA,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;AAC1B,QAAA,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;AAC5B,QAAA,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;AAC1B,QAAA,KAAK,CAAC,QAAQ,CAAC,eAAe,EAAE,IAAI,CAAC;AACrC,QAAA,KAAK,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC;AAClC,QAAA,KAAK,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC;AAChC,QAAA,KAAK,CAAC,QAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAC;QACtC,IAAI,CAAC,aAAa,EAAE,EAAE,OAAO,CAAC,IAAI,IAAG;YACnC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC;AACtC,SAAC,CAAC;QACF,KAAK,CAAC,QAAQ,CAAC,EAAE,gBAAgB,EAAE,WAAW,EAAE,EAAE,IAAI,CAAC;AACvD,QAAA,SAAS,CAAa,IAAI,CAAC,aAAa,EAAE,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACrJ,QAAQ,EAAE,CAAC,OAAO,CAAC,OAAO,IAAI,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,EAAE,CAAgB,aAAA,EAAA,OAAO,CAAC,IAAI,CAAA,8EAAA,CAAgF,CAAC,CAAC;AACpK,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,aAAa,EAAE;AAC5D,YAAA,OAAO,EAAE;AACP,gBAAA,OAAO,EAAE;AACP,oBAAA,SAAS,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,aAAa;AAC9C,oBAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACxB,iBAAA;AACD,gBAAA,SAAS,EAAE;AACT,oBAAA,WAAW,EAAE;AACd,iBAAA;AACD,gBAAA,OAAO,EAAE;AACP,oBAAA,KAAK,EAAE,IAAI;AACX,oBAAA,QAAQ,EAAE,GAAG;AACb,oBAAA,QAAQ,EAAE;AACX,iBAAA;AACD,gBAAA,QAAQ,EAAE;AACR,oBAAA,QAAQ,EAAE;AACR,wBAAA,KAAK,EAAE;AACL,4BAAA,GAAG,EAAE,EAAE;AACP,4BAAA,OAAO,EAAE,MAAM,IAAI,CAAC,WAAW,EAAE,GAAG,KAAK,GAAG;AAC7C;AACF;AACF;AACF,aAAA;AACD,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;YACzB,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;AACvD,YAAA,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,eAAe,EAAE,EAAE,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE,EAAE,aAAa;AACvG,YAAA,kBAAkB,EAAE,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,eAAe,EAAE,EAAE,aAAa,GAAG;AACjF,SAAA,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,EAAE,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/F,IAAI,CAAC,KAAK,EAAE,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5F,IAAI,CAAC,qBAAqB,EAAE;;IAGtB,qBAAqB,GAAA;QAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI;AACrC,QAAA,IAAI,UAAU,IAAI,IAAI,CAAC,qBAAqB,EAAE,EAAE;AAC9C,YAAA,MAAM,cAAc,GAAG,CAAC,CAAgB,KAAI;AAC1C,gBAAA,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,MAAM,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ;AAC1F,gBAAA,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,MAAM,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ;AACxF,qBAAC,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC;AAEjD,gBAAA,IAAI,MAAM,IAAI,MAAM,EAAE;oBACpB,CAAC,CAAC,cAAc,EAAE;oBAClB,CAAC,CAAC,eAAe,EAAE;AACnB,oBAAA,OAAO,CAAC,GAAG,CAAC,CAAA,SAAA,EAAY,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA,kBAAA,CAAoB,CAAC;;AAEzE,aAAC;YAED,UAAU,CAAC,gBAAgB,CAAC,SAAS,EAAE,cAAc,EAAE,IAAI,CAAC;AAE5D,YAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAK;gBAC5B,UAAU,CAAC,mBAAmB,CAAC,SAAS,EAAE,cAAc,EAAE,IAAI,CAAC;AACjE,aAAC,CAAC;;;AAKE,IAAA,sBAAsB,CAAC,KAAkB,EAAA;AAC/C,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AAAE,YAAA,OAAO,KAAK;AAC/B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;AAEvD,QAAA,IAAI,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE;YACtI,OAAO,KAAK,CAAC;;AAGf,QAAA,OAAO,IAAI;;IAIL,kBAAkB,GAAA;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAK,EAAG,OAAM,EAAE,EAAE,CAAC,CAAC;QACnH,IAAI,IAAI,GAAG,KAAK;AAChB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE;AAC5C,QAAA,IAAI,cAAc,IAAI,cAAc,CAAC,MAAM,EAAE;AAC3C,YAAA,cAAc,CAAC,OAAO,CAAC,OAAO,IAAG;gBAC/B,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE;AACnC,oBAAA,IAAI,OAAO,CAAC,KAAK,KAAK,MAAM,EAAE;wBAC5B,IAAI,GAAG,IAAI;;oBAEb,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,EAAE,GAAG,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;;AAEhF,aAAC,CAAC;;QAEJ,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;;;AAIhI,IAAA,oBAAoB,CAAC,KAAa,EAAA;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI;QAClC,IAAI,UAAU,GAAG,CAAC;QAClB,IAAI,aAAa,GAAG,CAAC;AACrB,QAAA,MAAM,eAAe,GAAG,CAAC,IAAU,KAAI;AACrC,YAAA,IAAI,aAAa,GAAG,KAAK,EAAE;gBACzB;;YAEF,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,EAAE;gBACpC,aAAa,IAAI,IAAI,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC;gBAC9C;;AAEF,YAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE;AAClE,gBAAA,IAAI,aAAa,IAAI,KAAK,EAAE;AAC1B,oBAAA,UAAU,EAAE;;gBAEd;;YAEF,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,YAAY,EAAE;AACvC,gBAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC;;AAExD,SAAC;QACD,eAAe,CAAC,OAAe,CAAC;AAChC,QAAA,OAAO,UAAU;;;IAIX,sBAAsB,GAAA;AAC5B,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,kBAAkB,EAAE,CAAC,KAAkB,EAAE,QAAqB,EAAE,MAAe,KAAI;AAClG,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;gBACnB;;YAEF,IAAI,KAAK,KAAK,IAAI,IAAI,QAAQ,KAAK,IAAI,EAAE;AACvC,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;gBACnB;;YAEF,IAAI,KAAK,KAAK,IAAI,IAAI,QAAQ,KAAK,IAAI,EAAE;AACvC,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;gBACpB;;YAEF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE;YACxC,IAAI,MAAM,EAAE;AACV,gBAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;AACpB,gBAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;;AAE1B,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;AAC3B,gBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAW;gBAC5B,KAAK;gBACL,QAAQ;gBACR;AACD,aAAA,CAAC;AACF,YAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,EAAE,IAAI,IAAI,MAAM,KAAK,MAAM,EAAE;AAC3D,gBAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,EAAE;AACzC,gBAAA,MAAM,UAAU,GAAG,SAAS,EAAE,UAAU;gBACxC,IAAI,QAAQ,GAAG,UAA+B;gBAC9C,OAAO,QAAQ,IAAI,QAAQ,CAAC,OAAO,KAAK,GAAG,EAAE;AAC3C,oBAAA,QAAQ,GAAG,QAAQ,CAAC,UAA+B;;gBAErD,IAAI,QAAQ,IAAI,QAAQ,CAAC,OAAO,KAAK,GAAG,EAAE;AACxC,oBAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS;oBACnC,MAAM,YAAY,GAAkB,EAAE;AACtC,oBAAA,IAAI,WAAW,GAAuB,CAAC,CAAC;AACxC,oBAAA,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,WAAW,GAAG,KAAK,CAAC,KAAK,EAAE;wBACvD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE;AAC3C,wBAAA,MAAM,SAAS,GAAG,WAAW,EAAE,OAAO,CAAC,QAAQ,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC,GAAG,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;AACvI,wBAAA,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;AACrB,4BAAA,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE;AACpB,gCAAA,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC;AAC5B,gCAAA,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAC,MAAM;;AAE3C,4BAAA,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE;gCACpB,WAAW,GAAG,SAAS;;;;AAI7B,oBAAA,IAAI,YAAY,IAAI,YAAY,CAAC,MAAM,EAAE;wBACvC,MAAM,UAAU,GAAG,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;wBACxD,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC;wBACxD,UAAU,CAAC,MAAK;AACd,4BAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AACZ,gCAAA,KAAK,EAAE,QAAQ;gCACf,GAAG,EAAE,QAAQ,CAAC,IAAI;AAClB,gCAAA,KAAK,EAAE;oCACL,KAAK,EAAE,UAAU,GAAG,UAAU;oCAC9B,MAAM,EAAE,QAAQ,CAAC;AAClB;AACF,6BAAA,CAAC;4BACF,IAAI,CAAC,sBAAsB,EAAE,EAAE,WAAW,CAAC,QAAQ,CAAC;yBACrD,EAAE,GAAG,CAAC;;;;AAIf,SAAC,CAAC;;IAGI,YAAY,GAAA;QAClB,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,KAAqB,KAAI;YAC9D,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;gBAClC;;AAEF,YAAA,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,KAAK;AACvC,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;gBACjB;;YAEF,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,MAAM,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC;AACzC,SAAC,CAAC;;IAGI,iBAAiB,GAAA;QACvB,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,aAAa,EAAE,CAAC,KAAK,KAAI;AACxC,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;AACtB,gBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAW;AAC5B,gBAAA,KAAK,EAAE;AACR,aAAA,CAAC;YACF,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,SAAS;YACzC,UAAU,CAAC,MAAK;gBACd,IAAI,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,EAAE;AAClC,oBAAA,MAAM,KAAK,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,MAAgB,EAAE;AACvD,oBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACzD,oBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,oBAAA,IAAI,CAAC,KAAK,EAAE,EAAE,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC;AAC7D,oBAAA,IAAI,QAAQ,KAAK,IAAI,IAAI,WAAW,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,EAAE;AAC/D,wBAAA,IAAI,CAAC,KAAK,EAAE,EAAE,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC;;oBAE/D,IAAI,CAAC,KAAK,EAAE,EAAE,YAAY,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;;AAE/E,aAAC,CAAC;AACF,YAAA,IAAI,IAAI,KAAK,iBAAiB,IAAI,IAAI,KAAK,8CAA8C,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE;AACrH,gBAAA,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,EAAE,CAAC;gBAC1C,IAAI,CAAC,QAAQ,EAAE;AACf,gBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;gBAC3D;;YAEF,IAAI,CAAC,gBAAgB,EAAE;YACvB,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;AAC7D,SAAC,CAAC;;AAGM,IAAA,6BAA6B,CAAC,KAAmC,EAAA;AACzE,QAAA,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,KAAK,CAAC;;AAG9B,IAAA,mBAAmB,CAAC,KAAyB,EAAA;AACrD,QAAA,IAAI,KAAK,KAAK,QAAQ,EAAE;YACtB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;;;AAItB,IAAA,aAAa,CAAC,KAAY,EAAA;QAClC,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;QACxB,IAAI,CAAC,KAAK,EAAE,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAC9E,QAAA,IAAI,CAAC,sBAAsB,EAAE,EAAE,oBAAoB,EAAE;;AAG7C,IAAA,WAAW,CAAC,KAAY,EAAA;QAChC,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AACxB,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,sBAAsB,EAAE,EAAE,oBAAoB,EAAE;;IAG/C,iBAAiB,GAAA;QACvB,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,UAAU,CAAC,MAAK;AAC9C,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,EAAE,EAAE,aAAa,CAAC,WAAW,IAAI,CAAC;YAE1E,IAAI,UAAU,GAAG,EAAE;YACnB,MAAM,WAAW,GAAkB,EAAE;YACrC,MAAM,iBAAiB,GAAkB,EAAE;YAE3C,IAAI,CAAC,oBAAoB,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;AAClD,gBAAA,UAAU,IAAI,IAAI,CAAC,KAAK;AACxB,gBAAA,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;AACxB,oBAAA,MAAM,aAAa,GAAG,UAAU,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK;AAChF,oBAAA,IAAI,aAAa,GAAG,YAAY,EAAE;AAChC,wBAAA,iBAAiB,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;wBAC9B;;;AAGJ,gBAAA,IAAI,UAAU,GAAG,YAAY,EAAE;AAC7B,oBAAA,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;oBAExB;;AAEJ,aAAC,CAAC;AACF,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC;AAChC,YAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,iBAAiB,CAAC;AAC9C,SAAC,EAAE,GAAG,CAAC,CAAC;;IAGA,QAAQ,CAAC,IAAY,EAAE,IAAqB,EAAA;QACpD,IAAI,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC;;AAG1B,IAAA,WAAW,CAAC,MAAiB,EAAA;AACnC,QAAA,MAAM,QAAQ,GAAG,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;QAC5D,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE;YAC/B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;YAC5B;;AAEF,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;;AAGxC,IAAA,OAAO,CAAC,MAAiB,EAAA;QAC/B,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,MAAM,CAAC,IAAI,CAAC;QAChE,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC;YACpF;;AAEF,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;;IAG/C,UAAU,GAAA;QAClB,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;;IAGrB,UAAU,GAAA;QAClB,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;;IAGrB,MAAM,UAAU,CAAC,OAAe,EAAA;QACxC,MAAM,gBAAgB,GAAG,CAAC,MAAM,SAAS,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC;AAC/H,QAAA,MAAM,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC7B,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,CAAC;AACnD,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;YACrB;;AAEF,QAAA,MAAM,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC/B,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,EAAE,aAAa,CAAC,aAAa,CAAC,0BAA0B,CAAC;AAC5F,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,eAAe,EAAE,EAAE,aAAa,GAAG,MAAM;AACxF,QAAA,aAAa,CAAC,SAAS,GAAG,aAAa,CAAC,YAAY;AACpD,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,YAAA,IAAI,CAAC,KAAK,EAAE,EAAE,YAAY,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAC5E;;AAEF,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;;AAG9C,IAAA,eAAe,CAAC,KAAc,EAAA;QACtC,IAAI,CAAC,UAAU,CAAC,KAAe,EAAE,SAAS,EAAE,IAAI,CAAC;;AAGzC,IAAA,oBAAoB,CAAC,KAAc,EAAA;AAC3C,QAAA,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,uBAAuB,CAAC,wCAAwC,CAAC,CAAC;QAChI,MAAM,QAAQ,GAAG,IAAI,CAAC,uBAAuB,EAAE,EAAE,QAAQ;QACzD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE;QAC9C,MAAM,YAAY,GAAG,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,GAAG,EAAE;QACxG,MAAM,IAAI,GAAG,KAA+B;AAC5C,QAAA,IAAI,CAAC,uBAAuB,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;AACjE,QAAA,IAAI,CAAC,uBAAuB,EAAE,EAAE,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,IAAI,YAAY,CAAC;AAC9E,QAAA,IAAI,CAAC,uBAAuB,EAAE,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC;QACjE,QAAQ,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC,IAAqC,KAAI;YACxE,IAAI,IAAI,YAAY,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE;gBACtC,IAAI,CAAC,KAAK,EAAE,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;gBACjF,IAAI,CAAC,KAAK,EAAE,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC;gBACzE;;YAEF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC;AACxC,SAAC,CAAC;QACF,QAAQ,EAAE,QAAQ,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC;QACvG,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC;;IAG9D,mBAAmB,GAAA;QAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,YAAY,CAAC,IAAI,CAAC;AAClD,QAAA,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;AACrB,YAAA,IAAI,CAAC,KAAK,EAAE,EAAE,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC;;;AAI5C,IAAA,MAAM,QAAQ,GAAA;AACtB,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;AACzB,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE;AAC1C,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AACxB,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE;QAC1C,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,aAAa,CAAC;QACtC,IAAI,aAAa,IAAI,aAAa,CAAC,UAAU,KAAK,CAAC,aAAa,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE;YAC5F,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,IAAI,yBAAyB,CAAC;YACzE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;AAC9C,YAAA,OAAO,KAAK;;AAEd,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE;AAC5C,QAAA,IAAI,cAAc,IAAI,aAAa,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM,EAAE;YAC3F,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC,OAAO,IAAI,wBAAwB,CAAC;YACzE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;AAC9C,YAAA,OAAO,KAAK;;AAEd,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE;AAC5C,QAAA,IAAI,cAAc,IAAI,aAAa,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;YAChG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC,OAAO,IAAI,wBAAwB,CAAC;YACzE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;AAC9C,YAAA,OAAO,KAAK;;QAEd,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;AAC9C,QAAA,OAAO,IAAI;;AAGH,IAAA,MAAM,WAAW,CAAC,OAAe,EAAE,KAAc,EAAA;AACzD,QAAA,MAAM,SAAS,GAAG,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK;AACjE,QAAA,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;AACrB,YAAA,IAAI,CAAC,KAAK,EAAE,EAAE,WAAW,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC;AACtD,YAAA,IAAI,CAAC,KAAK,EAAE,EAAE,YAAY,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC,CAAC;;;AAIxC,IAAA,MAAM,UAAU,CAAC,OAAe,EAAE,KAAc,EAAE,SAAmB,EAAA;AAC3E,QAAA,KAAK,GAAG,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK;AACvD,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;AACjB,YAAA,IAAI,CAAC,KAAK,EAAE,EAAE,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YAC5D,IAAI,SAAS,EAAE;AACb,gBAAA,MAAM,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC7B,IAAI,CAAC,KAAK,EAAE,EAAE,YAAY,CAAC,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;;;;AAKvE,IAAA,MAAM,UAAU,CAAC,IAAY,EAAE,GAAW,EAAE,KAAc,EAAA;QAChE,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,YAAY,CAAC,IAAI,CAAC;AAClD,QAAA,MAAM,WAAW,GAAG,KAAK,IAAI,SAAS,EAAE,KAAK;AAC7C,QAAA,IAAI,SAAS,EAAE,MAAM,EAAE;YACrB,IAAI,CAAC,KAAK,EAAE,EAAE,UAAU,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;;AAEjF,QAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE;AACvB,YAAA,IAAI,CAAC,KAAK,EAAE,EAAE,UAAU,CAAC,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC;;;IAIpD,gBAAgB,GAAA;QACtB,IAAI,CAAC,kBAAkB,EAAE;QACzB,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC;;IAG9D,kBAAkB,GAAA;AACxB,QAAA,MAAM,UAAU,GAAG;AACjB,YAAA,EAAE,QAAQ,EAAE,gBAAgB,EAAE,KAAK,EAAE,oBAAoB,EAAE;AAC3D,YAAA,EAAE,QAAQ,EAAE,qBAAqB,EAAE,KAAK,EAAE,yBAAyB,EAAE;AACrE,YAAA,EAAE,QAAQ,EAAE,gBAAgB,EAAE,KAAK,EAAE,oBAAoB,EAAE;AAC3D,YAAA,EAAE,QAAQ,EAAE,oBAAoB,EAAE,KAAK,EAAE,wBAAwB,EAAE;AACnE,YAAA,EAAE,QAAQ,EAAE,oBAAoB,EAAE,KAAK,EAAE,wBAAwB,EAAE;YACnE,EAAE,QAAQ,EAAE,6BAA6B,EAAE,KAAK,EAAE,+BAA+B,EAAE,aAAa,EAAE,IAAI,EAAE;YACxG,EAAE,QAAQ,EAAE,wBAAwB,EAAE,KAAK,EAAE,yGAAyG,EAAE,aAAa,EAAE,IAAI,EAAE;YAC7K,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,sFAAsF,EAAE,aAAa,EAAE,IAAI;SAC7I;QACD,IAAI,CAAC,aAAa,EAAE,EAAE,OAAO,CAAC,IAAI,IAAG;YACnC,UAAU,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAA,CAAA,EAAI,IAAI,CAAC,SAAS,CAAA,CAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;AAC7F,SAAC,CAAC;AACF,QAAA,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AAC1B,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC;AACnE,YAAA,QAAQ,EAAE,OAAO,CAAC,CAAC,OAAO,KAAI;AAC5B,gBAAA,IAAI,IAAI,CAAC,aAAa,EAAE;oBACtB,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC;oBACzC;;;gBAGF,IAAI,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC;gBAC9C,IAAI,UAAU,EAAE;AACd,oBAAA,CAAC,oBAAoB,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,wBAAwB,CAAC,CAAC,OAAO,CAAC,IAAI,IAAG;AACzI,wBAAA,UAAU,IAAI,UAAU,EAAE,QAAQ,CAAC,CAAA,EAAG,IAAI,CAAA,CAAA,CAAG,CAAC,GAAG,UAAU,EAAE,OAAO,CAAC,CAAG,EAAA,IAAI,GAAG,EAAE,EAAE,CAAC,GAAG,UAAU,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAW;AACjI,qBAAC,CAAC;;AAEJ,gBAAA,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,UAAU,GAAG,GAAG,UAAU,CAAA,EAAG,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,GAAG,EAAE,GAAG,GAAG,CAAG,EAAA,IAAI,CAAC,KAAK,CAAA,CAAA,CAAG,GAAG,IAAI,CAAC,KAAK,CAAC;AAC/I,aAAC,CAAC;AACJ,SAAC,CAAC;;AAGM,IAAA,mBAAmB,CAAC,IAAa,EAAA;AACzC,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;;IAGpB,sBAAsB,GAAA;AAC5B,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC,UAAU,EAAE;AACvC,YAAA,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,uBAAuB,CAAC,+CAA+C,CAAC,CAAC;YACvI,MAAM,QAAQ,GAAG,IAAI,CAAC,uBAAuB,EAAE,EAAE,QAAQ;AACzD,YAAA,IAAI,CAAC,uBAAuB,EAAE,EAAE,QAAQ,CAAC,mBAAmB,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvF,QAAQ,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAmB,KAAI;gBACnD,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC;gBACnE,IAAI,IAAI,EAAE;AACR,oBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;;AAE1B,aAAC,CAAC;YACF,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAEtE;;QAGF,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;AAC7C,QAAA,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC;AAClC,QAAA,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,SAAS,CAAC;QACvC,KAAK,CAAC,KAAK,EAAE;AACb,QAAA,KAAK,CAAC,QAAQ,GAAG,YAAW;YAC1B,MAAM,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,KAAK,CAAC;AAChD,SAAC;;IAGK,MAAM,qBAAqB,CAAC,KAAuB,EAAA;QACzD,IAAI,CAAC,KAAK,EAAE;YACV;;AAEF,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,EAAE,EAAE,YAAY,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI;QAC9E,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,KAAK,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,IAAI,YAAY,CAAC,CAAC;AACvK,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YAClB,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,+BAA+B,EAAE,kBAAkB,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;YACjK;;AAEF,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC;AACjC,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK;AAC1D,YAAA,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC,mBAAmB,GAAG,MAAM,CAAC;AAC1E,YAAA,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE;gBAClB;;AAEF,YAAA,KAAK,CAAC,OAAO,CAAC,IAAI,IAAG;AACnB,gBAAA,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,iBAAiB,EAAE,CAAC,wBAAwB,KAAK,IAAI,YAAY,WAAW,IAAI,CAAC,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;oBACzI;;AAEF,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAc,EAAE,WAAW,CAAC;AAC/C,aAAC,CAAC;;QACF,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;;gBACZ;AACR,YAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC;;QAEpC;;AAGM,IAAA,aAAa,CAAC,KAAqB,EAAA;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE;QAC1C,IAAI,CAAC,KAAK,EAAE;YACV;;AAEF,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK;AAC7B,QAAA,MAAM,cAAc,GAAG,SAAS,GAAG,KAAK,CAAC,SAAS;AAClD,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE,UAAU,CAAC,cAAc,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAC7E,IAAI,CAAC,KAAK,EAAE,EAAE,WAAW,CAAC,cAAc,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QACpF,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,cAAc,GAAG,CAAC,CAAC;AACxC,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE,YAAY,CAAC,cAAc,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;;AAG7D,IAAA,oBAAoB,CAAC,IAAoB,EAAA;AACjD,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;;IAGhB,MAAM,WAAW,CAAC,IAAY,EAAA;AACtC,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,CAAG,EAAA,IAAI,CAAI,EAAA,CAAA,CAAC;;AAGjC,IAAA,kBAAkB,CAAC,KAAsB,EAAA;QACjD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,KAAe,EAAE,CAAC,CAAC;AAC/D,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,CAAG,EAAA,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAA,EAAA,CAAI,CAAC;;AAG9C,IAAA,iBAAiB,CAAC,KAAiC,EAAA;AAC3D,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;QAC7B,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,GAAa,CAAC;;AAGpC,IAAA,gBAAgB,CAAC,KAAiC,EAAA;AAC1D,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;QAC5B,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,GAAa,CAAC;;AAGnC,IAAA,2BAA2B,CAAC,KAAY,EAAA;QAChD,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC;;IAG3C,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;AACrB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;QACzB,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC;QACnE,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC;AACnE,QAAA,YAAY,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;;wGA9sBlC,oCAAoC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAApC,oCAAoC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,sBAAA,EAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,oBAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,4BAAA,EAAA,EAAA,iBAAA,EAAA,8BAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,oBAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,0BAAA,EAAA,EAAA,iBAAA,EAAA,4BAAA,EAAA,UAAA,EAAA,4BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,YAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,MAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3CjD,06cAmVA,ED/SI,MAAA,EAAA,CAAA,4xLAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,4FAAE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,sCAAsC,EAAA,QAAA,EAAA,0CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,eAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACzE,8BAA8B,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,cAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,6BAAA,EAAA,SAAA,EAAA,UAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,cAAA,EAAA,eAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,2BAAA,EAAA,kCAAA,EAAA,eAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,iCAAiC,EACjE,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,yBAAA,EAAA,cAAA,EAAA,4BAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,wBAAA,EAAA,2BAAA,EAAA,YAAA,EAAA,yBAAA,EAAA,4BAAA,EAAA,qCAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,uBAAA,EAAA,qBAAA,EAAA,6BAAA,EAAA,eAAA,EAAA,WAAA,EAAA,WAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,uBAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,aAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,uBAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,6BAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,sBAAA,EAAA,gCAAA,EAAA,yBAAA,EAAA,kBAAA,EAAA,uBAAA,EAAA,0BAAA,EAAA,sBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,qDAAA,EAAA,cAAA,EAAA,YAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,wBAAA,EAAA,kBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,eAAA,EAAA,wBAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,gCAAgC,EAAE,QAAA,EAAA,+DAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,0CAAA,EAAA,4BAAA,EAAA,kCAAA,EAAA,8BAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,wBAAA,EAAA,wBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,2CAA2C,EAC7E,QAAA,EAAA,yCAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,oCAAoC,8zDAAE,8BAA8B,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,aAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpE,sCAAsC,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,MAAA,EAAA,cAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,cAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAAA,4BAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,aAAA,EAAA,yBAAA,EAAA,+BAAA,EAAA,oBAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,iBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gCAAgC,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAG/D,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBAfhD,SAAS;AAEE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iCAAiC,cAC/B,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAGtC,OAAA,EAAA;wBACP,eAAe,EAAE,gBAAgB,EAAE,sCAAsC;AACzE,wBAAA,8BAA8B,EAAE,iCAAiC;AACjE,wBAAA,gCAAgC,EAAE,2CAA2C;AAC7E,wBAAA,oCAAoC,EAAE,8BAA8B;AACpE,wBAAA,sCAAsC,EAAE;AACzC,qBAAA,EAAA,QAAA,EAAA,06cAAA,EAAA,MAAA,EAAA,CAAA,4xLAAA,CAAA,EAAA;;;AEzCH;;AAEG;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@libs-ui/components-inputs-quill",
3
- "version": "0.2.158",
3
+ "version": "0.2.160",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^18.2.0",
6
6
  "@angular/core": "^18.2.0"