@sarasanalytics-com/design-system 0.0.163 → 0.0.165

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.
Files changed (97) hide show
  1. package/README.md +24 -24
  2. package/esm2022/interfaces/avatar-interface.mjs +1 -1
  3. package/esm2022/interfaces/button-interface.mjs +1 -1
  4. package/esm2022/interfaces/card-carousel-interface.mjs +1 -1
  5. package/esm2022/interfaces/chip-interface.mjs +1 -1
  6. package/esm2022/interfaces/form-layout.interface.mjs +1 -1
  7. package/esm2022/interfaces/grid-interface.mjs +1 -1
  8. package/esm2022/interfaces/guide-card-interface.mjs +1 -1
  9. package/esm2022/interfaces/header-interface.mjs +1 -1
  10. package/esm2022/interfaces/icon-interface.mjs +1 -1
  11. package/esm2022/interfaces/layout-section-interface.mjs +1 -1
  12. package/esm2022/interfaces/left-nav-interface.mjs +1 -1
  13. package/esm2022/interfaces/menu.interface.mjs +1 -1
  14. package/esm2022/interfaces/message-banner.mjs +1 -1
  15. package/esm2022/interfaces/option-interface.mjs +1 -1
  16. package/esm2022/interfaces/scrolling-card-interface.mjs +1 -1
  17. package/esm2022/interfaces/select-interface.mjs +1 -1
  18. package/esm2022/interfaces/status-dot.interface.mjs +1 -1
  19. package/esm2022/interfaces/tab-interface.mjs +1 -1
  20. package/esm2022/interfaces/toast-interface.mjs +1 -1
  21. package/esm2022/interfaces/typography-animation-interface.mjs +1 -1
  22. package/esm2022/lib/accordion/accordion.component.mjs +3 -3
  23. package/esm2022/lib/avatar/avatar.component.mjs +3 -3
  24. package/esm2022/lib/button/button.component.mjs +3 -3
  25. package/esm2022/lib/calendar-header/calendar-header.component.mjs +3 -3
  26. package/esm2022/lib/card/card-body/card-body.component.mjs +1 -1
  27. package/esm2022/lib/card/card-custom-header/card-custom-header.component.mjs +1 -1
  28. package/esm2022/lib/card/card-footer-actions/card-footer-actions.component.mjs +3 -3
  29. package/esm2022/lib/card/card-icon/card-icon.component.mjs +1 -1
  30. package/esm2022/lib/card/card-title-actions/card-title-actions.component.mjs +1 -1
  31. package/esm2022/lib/card/card.component.mjs +3 -3
  32. package/esm2022/lib/card/checkbox-card/checkbox-card.component.mjs +3 -3
  33. package/esm2022/lib/card/guide-card/guide-card.component.mjs +3 -3
  34. package/esm2022/lib/card/menu-card/menu-card.component.mjs +3 -3
  35. package/esm2022/lib/card/thumbnail-card/thumbnail-card.component.mjs +3 -3
  36. package/esm2022/lib/card-carousel/card-carousel.component.mjs +3 -3
  37. package/esm2022/lib/categories-nav/categories-nav.component.mjs +3 -3
  38. package/esm2022/lib/checkbox/checkbox.component.mjs +3 -3
  39. package/esm2022/lib/chips/chips.component.mjs +3 -3
  40. package/esm2022/lib/component-library.component.mjs +9 -9
  41. package/esm2022/lib/component-library.service.mjs +1 -1
  42. package/esm2022/lib/dashboard-loader/dashboard-loader.component.mjs +1 -1
  43. package/esm2022/lib/data-grid/data-grid.component.mjs +3 -3
  44. package/esm2022/lib/datepicker/datepicker.component.mjs +3 -3
  45. package/esm2022/lib/dialog/dialog.component.mjs +3 -3
  46. package/esm2022/lib/dropdown/category-dropdown/category-dropdown.component.mjs +3 -3
  47. package/esm2022/lib/dropdown/ng-select/ng-select.component.mjs +3 -3
  48. package/esm2022/lib/filter/filter.component.mjs +3 -3
  49. package/esm2022/lib/form-input/form-input.component.mjs +3 -3
  50. package/esm2022/lib/form-select/form-select.component.mjs +3 -3
  51. package/esm2022/lib/grid-cell/grid-cell.component.mjs +10 -10
  52. package/esm2022/lib/header/header.component.mjs +3 -3
  53. package/esm2022/lib/icon/icon.component.mjs +9 -3
  54. package/esm2022/lib/icon/icon.service.mjs +1 -1
  55. package/esm2022/lib/layout-section/layout-section.component.mjs +3 -3
  56. package/esm2022/lib/left-nav/left-nav.component.mjs +3 -3
  57. package/esm2022/lib/list/list.component.mjs +3 -3
  58. package/esm2022/lib/menu/menu-list/menu-item.component.mjs +3 -3
  59. package/esm2022/lib/menu/menu.component.mjs +5 -3
  60. package/esm2022/lib/menu/menu.directive.mjs +1 -1
  61. package/esm2022/lib/message-banner/message-banner.component.mjs +3 -3
  62. package/esm2022/lib/message-banner-v2/message-banner-v2.component.mjs +3 -3
  63. package/esm2022/lib/mini-card/mini-card.component.mjs +3 -3
  64. package/esm2022/lib/page-layout/page-layout.component.mjs +3 -3
  65. package/esm2022/lib/progress-bar/progress-bar.component.mjs +3 -3
  66. package/esm2022/lib/query-builder/query-builder-demo.component.mjs +45 -45
  67. package/esm2022/lib/query-builder/query-builder.component.mjs +3 -3
  68. package/esm2022/lib/query-builder/query-builder.service.mjs +1 -1
  69. package/esm2022/lib/query-builder-formly/query-builder-formly.component.mjs +3 -3
  70. package/esm2022/lib/query-builder-textarea/query-builder-textarea-demo.component.mjs +39 -39
  71. package/esm2022/lib/query-builder-textarea/query-builder-textarea.component.mjs +3 -3
  72. package/esm2022/lib/radio-button/radio-button.component.mjs +3 -3
  73. package/esm2022/lib/scrolling-cards/scrolling-cards.component.mjs +3 -3
  74. package/esm2022/lib/skeleton/skeleton-base.component.mjs +10 -3
  75. package/esm2022/lib/skeleton/skeleton-container.component.mjs +9 -9
  76. package/esm2022/lib/skeleton/skeleton-loader.component.mjs +220 -194
  77. package/esm2022/lib/skeleton/skeleton-presets.mjs +1 -1
  78. package/esm2022/lib/skeleton/skeleton-shapes.component.mjs +17 -9
  79. package/esm2022/lib/spinner/spinner.component.mjs +1 -1
  80. package/esm2022/lib/status-dot/status-dot.component.mjs +17 -17
  81. package/esm2022/lib/stepper/stepper.component.mjs +3 -3
  82. package/esm2022/lib/tabs/tabs.component.mjs +3 -3
  83. package/esm2022/lib/toast/toast.component.mjs +3 -3
  84. package/esm2022/lib/tool-tip/tool-tip.component.mjs +3 -3
  85. package/esm2022/lib/typography-animation/typography-animation.component.mjs +3 -3
  86. package/esm2022/utils/validators.mjs +1 -1
  87. package/fesm2022/sarasanalytics-com-design-system.mjs +662 -614
  88. package/fesm2022/sarasanalytics-com-design-system.mjs.map +1 -1
  89. package/interfaces/menu.interface.d.ts +2 -0
  90. package/lib/icon/icon.component.d.ts +3 -1
  91. package/lib/skeleton/skeleton-base.component.d.ts +3 -1
  92. package/lib/skeleton/skeleton-container.component.d.ts +1 -1
  93. package/lib/skeleton/skeleton-loader.component.d.ts +2 -1
  94. package/lib/skeleton/skeleton-presets.d.ts +2 -0
  95. package/lib/skeleton/skeleton-shapes.component.d.ts +8 -4
  96. package/package.json +1 -1
  97. package/styles/styles.css +434 -432
@@ -176,4 +176,4 @@ export function numberRangeValidator(range, type = null) {
176
176
  export const requiredValidatorMessage = (error, field) => {
177
177
  return `${_startCase(_get(field, 'props.label'))} is required.`;
178
178
  };
179
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudC1saWJyYXJ5L3NyYy91dGlscy92YWxpZGF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxHQUFHLElBQUksSUFBSSxFQUFFLElBQUksSUFBSSxLQUFLLEVBQUUsR0FBRyxJQUFJLElBQUksRUFBRSxJQUFJLElBQUksS0FBSyxFQUFFLFNBQVMsSUFBSSxVQUFVLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFHekcsTUFBTSxVQUFVLG9CQUFvQixDQUFDLFNBQWtCO0lBQ25ELE9BQU8sQ0FBQyxPQUF3QixFQUEyQixFQUFFO1FBQ3pELE1BQU0sb0JBQW9CLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQy9FLElBQUksb0JBQW9CLElBQUksQ0FBQyxDQUFDLG9CQUFvQixDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUMvRCxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUVyRCxJQUFJLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3pDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQ25ELE9BQU8sRUFBRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsQ0FBQztnQkFDL0MsQ0FBQztZQUNMLENBQUM7UUFDTCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQyxDQUFBO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxTQUFrQjtJQUNsRCxPQUFPLENB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UUFDTixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQyxDQUFBO0FBQ0wsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLENBQUMsS0FBVSxFQUFFLEtBQXdCLEVBQUUsRUFBRTtJQUM3RSxPQUFPLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUMsZUFBZSxDQUFDO0FBQ3BFLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgQXN5bmNWYWxpZGF0b3JGbiwgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yRm4gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBkZWJvdW5jZVRpbWUsIGRlbGF5LCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBnZXQgYXMgX2dldCwgZmluZCBhcyBfZmluZCwgaGFzIGFzIF9oYXMsIGtleXMgYXMgX2tleXMsIHN0YXJ0Q2FzZSBhcyBfc3RhcnRDYXNlIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IEZvcm1seUZpZWxkQ29uZmlnIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBwaG9uZU51bWJlclZhbGlkYXRvcihkZXBlbmRlbnQ/OiBzdHJpbmcpOiBWYWxpZGF0b3JGbiB7XG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgICAgIGNvbnN0IGRlcGVuZGVudEZvcm1Db250cm9sID0gZGVwZW5kZW50ID8gY29udHJvbC5wYXJlbnQ/LmdldChkZXBlbmRlbnQpIDogbnVsbDtcbiAgICAgICAgaWYgKGRlcGVuZGVudEZvcm1Db250cm9sICYmICEhZGVwZW5kZW50Rm9ybUNvbnRyb2wudmFsdWU/Lmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ3ZhbGlkYXRvcicsIGRlcGVuZGVudEZvcm1Db250cm9sLnZhbHVlKTtcblxuICAgICAgICAgICAgaWYgKGRlcGVuZGVudEZvcm1Db250cm9sLnZhbHVlWzBdLmlkID09PSAwKSB7XG4gICAgICAgICAgICAgICAgaWYgKCEvXlxcKzFbMi05XVxcZHsyfVsyLTldXFxkezZ9JC8udGVzdChjb250cm9sLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBpbnZhbGlkOiAnaW52YWxpZCBwaG9uZSBudW1iZXInIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGN1c3RvbU5hbWVWYWxpZGF0b3IoZmllbGROYW1lPzogc3RyaW5nKTogVmFsaWRhdG9yRm4ge1xuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgICAgICBjb25zdCBuYW1lID0gY29udHJvbC52YWx1ZTtcbiAgICAgICAgY29uc3QgZmllbGRMYWJlbCA9IGZpZWxkTmFtZSB8fCAnTmFtZSc7XG4gICAgICAgIFxuICAgICAgICBpZiAoIW5hbWUgfHwgbmFtZS50cmltKCkgPT09ICcnKSB7XG4gICAgICAgICAgICByZXR1cm4geyBpbnZhbGlkOiBgJHtmaWVsZExhYmVsfSBpcyByZXF1aXJlZC5gIH07XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIC8vIENoZWNrIGlmIG5hbWUgc3RhcnRzIHdpdGggYSBudW1iZXJcbiAgICAgICAgaWYgKC9eXFxkLy50ZXN0KG5hbWUudHJpbSgpKSkge1xuICAgICAgICAgICAgcmV0dXJuIHsgaW52YWxpZDogYCR7ZmllbGRMYWJlbH0gY2Fubm90IHN0YXJ0IHdpdGggYSBudW1iZXIuYCB9O1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAvLyBDaGVjayBpZiBuYW1lIGNvbnRhaW5zIG9ubHkgYWxwaGFiZXRpYyBjaGFyYWN0ZXJzIChubyBzcGFjZXMgYWxsb3dlZClcbiAgICAgICAgaWYgKCEvXlthLXpBLVpdKyQvLnRlc3QobmFtZS50cmltKCkpKSB7XG4gICAgICAgICAgICByZXR1cm4geyBpbnZhbGlkOiBgJHtmaWVsZExhYmVsfSBjYW4gb25seSBjb250YWluIGxldHRlcnMuYCB9O1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAvLyBDaGVjayBtaW5pbXVtIGxlbmd0aCAoYXQgbGVhc3QgMiBjaGFyYWN0ZXJzKVxuICAgICAgICBpZiAobmFtZS50cmltKCkubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgcmV0dXJuIHsgaW52YWxpZDogYCR7ZmllbGRMYWJlbH0gbXVzdCBiZSBhdCBsZWFzdCAyIGNoYXJhY3RlcnMgbG9uZy5gIH07XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIC8vIENoZWNrIG1heGltdW0gbGVuZ3RoICg1MCBjaGFyYWN0ZXJzKVxuICAgICAgICBpZiAobmFtZS50cmltKCkubGVuZ3RoID4gNTApIHtcbiAgICAgICAgICAgIHJldHVybiB7IGludmFsaWQ6IGAke2ZpZWxkTGFiZWx9IGNhbm5vdCBleGNlZWQgNTAgY2hhcmFjdGVycy5gIH07XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIFxuICAgICAgICByZXR1cm4gbnVsbDsgLy8gVmFsaWQgbmFtZVxuICAgIH07XG59XG5cbmV4cG9ydCBjb25zdCBjdXN0b21FbWFpbFZhbGlkYXRvciA9IChcbiAgICBjb250cm9sOiBBYnN0cmFjdENvbnRyb2xcbik6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gfCBudWxsID0+IHtcbiAgICBjb25zdCBlbWFpbCA9IGNvbnRyb2wudmFsdWU7XG4gICAgLy8gUmVwbGFjZSB0aGUgcmVndWxhciBleHByZXNzaW9uIHdpdGggdGhlIHBhdHRlcm4geW91IHdhbnQgdG8gdXNlLlxuXG4gICAgY29uc3QgZW1haWxQYXR0ZXJuID0gL15bYS16QS1aMC05Ll8lKy1dK0BbYS16QS1aMC05Li1dK1xcLlthLXpBLVpdezIsNH0kLztcblxuICAgIGlmIChlbWFpbFBhdHRlcm4udGVzdChlbWFpbCkgJiYgaXNXb3JrRW1haWwoZW1haWwpKSB7XG4gICAgICAgIHJldHVybiBudWxsOyAvLyBWYWxpZCBlbWFpbFxuICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICghZW1haWxQYXR0ZXJuLnRlc3QoZW1haWwpKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGludmFsaWQ6XG4gICAgICAgICAgICAgICAgICAgICdQbGVhc2UgZW50ZXIgYSB2YWxpZCBlbWFpbCBhZGRyZXNzLicsXG4gICAgICAgICAgICB9OyAvLyBJbnZhbGlkIGVtYWlsXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGludmFsaWQ6XG4gICAgICAgICAgICAgICAgJ1BsZWFzZSB1c2UgYSB3b3JrIGVtYWlsOyBwZXJzb25hbCBlbWFpbHMgKGUuZy4sIEBnbWFpbCwgQHlhaG9vKSBhcmUgbm90IGFjY2VwdGVkLicsXG4gICAgICAgIH07IC8vIEludmFsaWQgZW1haWxcbiAgICB9XG59O1xuY29uc3QgaXNXb3JrRW1haWwgPSAoZW1haWw6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuICAgIGNvbnN0IGludmFsaWRFbWFpbEhvc3RzOiBzdHJpbmdbXSA9IFsnZ21haWwnLCAneWFob28nLCAnaG90bWFpbCddO1xuICAgIGlmIChlbWFpbCkge1xuICAgICAgICBsZXQgW3VzZXJOYW1lLCBkb21haW5OYW1lXSA9IGVtYWlsLnNwbGl0KCdAJyk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW52YWxpZEVtYWlsSG9zdHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCByZSA9IG5ldyBSZWdFeHAoYC4qJHtpbnZhbGlkRW1haWxIb3N0c1tpXX1cXC4uKmApO1xuICAgICAgICAgICAgaWYgKHJlLnRlc3QoZG9tYWluTmFtZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn1cbi8qXG5leHBvcnQgZnVuY3Rpb24gd29ya0VtYWlsVmFsaWRhdGlvbigpOiBBc3luY1ZhbGlkYXRvckZuIHtcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IE9ic2VydmFibGU8VmFsaWRhdGlvbkVycm9ycyB8IG51bGw+ID0+IHtcbiAgICAgICAgaWYgKCFjb250cm9sLnZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4gb2YobnVsbCk7IC8vIE5vIHZhbHVlIHRvIHZhbGlkYXRlXG4gICAgICAgIH1cblxuICAgICAgICAhY29udHJvbC5wZW5kaW5nICYmIGNvbnRyb2wubWFya0FzUGVuZGluZygpO1xuICAgICAgICAvLyAhY29udHJvbC50b3VjaGVkICYmIGNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgICAgICAvLyByZXR1cm4gb2YoeyBpbnZhbGlkOiAnRW50ZXIgeW91ciB3b3JrIGVtYWlsJyB9KTtcbiAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoKG9iKSA9PiB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoY29udHJvbC52YWx1ZSA9PT0gJ3NhaXJhakBnbWFpbC5jb20nKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2IubmV4dChudWxsKVxuICAgICAgICAgICAgICAgIHJldHVybiBvYi5uZXh0KHsgaW52YWxpZDogJ1RoaXMgaXMgbm90IGEgd29ya2VtYWlsJyB9KTtcbiAgICAgICAgICAgIH0sIDUwMClcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIG9mKGNvbnRyb2wudmFsdWUpLnBpcGUoXG4gICAgICAgICAgICBkZWxheSg1MDApLCAvLyBTaW11bGF0ZSBuZXR3b3JrIGRlbGF5XG5cbiAgICAgICAgICAgIG1hcCh2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKHsgaW52YWxpZDogJ1RoaXMgaXMgbm90IGEgd29ya2VtYWlsJyB9KS8vZXhpc3RpbmdVc2VybmFtZXMuaW5jbHVkZXModXNlcm5hbWUpID8geyB1c2VybmFtZVRha2VuOiB0cnVlIH0gOiBudWxsO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC8vIGNhdGNoRXJyb3IoKCkgPT4gb2YobnVsbCkpIC8vIEhhbmRsZSBhbnkgZXJyb3JzXG4gICAgICAgICk7XG4gICAgfTtcbn0qL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFZhbGlkYXRpb25NZXNzYWdlKGVycm9yczogYW55LCBwbGFjZWhvbGRlcjogc3RyaW5nID0gJ0lucHV0JywgYWRkaXRpb25hbFByb3BlcnRpZXM/OiBhbnkpOiBzdHJpbmcge1xuICAgIGNvbnN0IG1lc3NhZ2VzID0gX2dldChhZGRpdGlvbmFsUHJvcGVydGllcywgJ25hdGl2ZVZhbGlkYXRpb25PYmplY3QubWVzc2FnZXMnLCB7fSk7XG4gICAgY29uc3QgZmllbGQgPSBfZ2V0KGFkZGl0aW9uYWxQcm9wZXJ0aWVzLCAnZmllbGQnLCB7fSk7XG4gICAgXG4gICAgaWYgKGVycm9ycykge1xuICAgICAgICAvLyBDaGVjayBpZiBhbnkga2V5IGluIGVycm9ycyBtYXRjaGVzIHdpdGggbWVzc2FnZXMgdXNpbmcgbG9kYXNoXG4gICAgICAgIGNvbnN0IG1hdGNoaW5nS2V5ID0gX2ZpbmQoX2tleXMoZXJyb3JzKSwga2V5ID0+IF9oYXMobWVzc2FnZXMsIGtleSkpO1xuICAgICAgICBpZiAobWF0Y2hpbmdLZXkgJiYgbWVzc2FnZXNbbWF0Y2hpbmdLZXldKSB7XG4gICAgICAgICAgICAvLyBJZiBtZXNzYWdlIGlzIGEgZnVuY3Rpb24sIGV4ZWN1dGUgaXQgd2l0aCBlcnJvcnMgYW5kIG5hdGl2ZVZhbGlkYXRpb25PYmplY3RcbiAgICAgICAgICAgIGlmICh0eXBlb2YgbWVzc2FnZXNbbWF0Y2hpbmdLZXldID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1lc3NhZ2VzW21hdGNoaW5nS2V5XShlcnJvcnNbbWF0Y2hpbmdLZXldLCBmaWVsZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbWVzc2FnZXNbbWF0Y2hpbmdLZXldO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAvLyBGYWxsIGJhY2sgdG8gZGVmYXVsdCBtZXNzYWdlc1xuICAgICAgICBpZiAoZXJyb3JzWydtaW5sZW5ndGgnXSkge1xuICAgICAgICAgICAgcmV0dXJuIGBNaW5pbXVtICR7ZXJyb3JzWydtaW5sZW5ndGgnXVsncmVxdWlyZWRMZW5ndGgnXX0gY2hhcmFjdGVycyByZXF1aXJlZGA7XG4gICAgICAgIH0gZWxzZSBpZiAoZXJyb3JzWydtYXhsZW5ndGgnXSkge1xuICAgICAgICAgICAgcmV0dXJuIGBNYXhpbXVtIG9mICR7ZXJyb3JzWydtYXhsZW5ndGgnXVsncmVxdWlyZWRMZW5ndGgnXX0gY2hhcmFjdGVycyBhY2NlcHRlZGA7XG4gICAgICAgIH0gZWxzZSBpZiAoZXJyb3JzWydyZXF1aXJlZCddKSB7XG4gICAgICAgICAgICByZXR1cm4gYCR7cGxhY2Vob2xkZXJ9IGNhbm5vdCBiZSBlbXB0eWA7XG4gICAgICAgIH0gZWxzZSBpZiAoZXJyb3JzWydpbnZhbGlkJ10pIHtcbiAgICAgICAgICAgIHJldHVybiBlcnJvcnNbJ2ludmFsaWQnXTtcbiAgICAgICAgfSBlbHNlIGlmIChlcnJvcnNbJ2VtYWlsJ10pIHtcbiAgICAgICAgICAgIHJldHVybiAnRW50ZXIgYSB2YWxpZCBlbWFpbCc7XG4gICAgICAgIH0gZWxzZSBpZiAoZXJyb3JzWydwYXR0ZXJuJ10pIHtcbiAgICAgICAgICAgIC8vIENvbnRleHQtYXdhcmUgcGF0dGVybiB2YWxpZGF0aW9uIG1lc3NhZ2VzXG4gICAgICAgICAgICBjb25zdCBmaWVsZFR5cGUgPSBfZ2V0KGFkZGl0aW9uYWxQcm9wZXJ0aWVzLCAnZmllbGQucHJvcHMucGFyYW1zLnR5cGUnLCAnJyk7XG4gICAgICAgICAgICBjb25zdCBmaWVsZExhYmVsID0gX2dldChhZGRpdGlvbmFsUHJvcGVydGllcywgJ2ZpZWxkLnByb3BzLmxhYmVsJywgcGxhY2Vob2xkZXIpO1xuICAgICAgICAgICAgY29uc3QgZmllbGRQbGFjZWhvbGRlciA9IF9nZXQoYWRkaXRpb25hbFByb3BlcnRpZXMsICdmaWVsZC5wcm9wcy5wbGFjZWhvbGRlcicsIHBsYWNlaG9sZGVyKTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgaWYgKGZpZWxkTGFiZWwudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnbmFtZScpIHx8IGZpZWxkTGFiZWwudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnZmlyc3QnKSB8fCBmaWVsZExhYmVsLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ2xhc3QnKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnTmFtZXMgY2FuIG9ubHkgY29udGFpbiBsZXR0ZXJzIGFuZCBzcGFjZXMnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChmaWVsZFR5cGUgPT09ICd0ZWwnIHx8IHBsYWNlaG9sZGVyLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ3Bob25lJykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ0VudGVyIGEgdmFsaWQgcGhvbmUgbnVtYmVyJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZmllbGRUeXBlID09PSAnZW1haWwnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdFbnRlciBhIHZhbGlkIGVtYWlsIGFkZHJlc3MnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoZmllbGRMYWJlbClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBQbGVhc2UgZW50ZXIgYSB2YWxpZCAke2ZpZWxkTGFiZWwudG9Mb3dlckNhc2UoKX1gO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZpZWxkUGxhY2Vob2xkZXIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgUGxlYXNlIGVudGVyIGEgdmFsaWQgJHtmaWVsZFBsYWNlaG9sZGVyLnRvTG93ZXJDYXNlKCl9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBgSW52YWxpZCAke3BsYWNlaG9sZGVyfWA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGBJbnZhbGlkICR7cGxhY2Vob2xkZXJ9YDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG51bWJlclJhbmdlVmFsaWRhdG9yKHJhbmdlOiB7IG1pbjogbnVtYmVyOyBtYXg6IG51bWJlciB9LCB0eXBlID0gbnVsbCk6IFZhbGlkYXRvckZuIHtcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICAgICAgbGV0IHZhbHVlID0gY29udHJvbC52YWx1ZTtcblxuICAgICAgICBpZiAodHlwZSA9PT0gJ3BlcmNlbnRhZ2UnICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgnJScsICcnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENvbnZlcnQgdG8gYSBudW1iZXIgaWYgaXQncyBub3QgbnVsbCBvciB1bmRlZmluZWRcbiAgICAgICAgY29uc3QgbnVtZXJpY1ZhbHVlID0gdmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCA/IHBhcnNlRmxvYXQodmFsdWUpIDogTmFOO1xuXG4gICAgICAgIC8vIENoZWNrIGlmIHRoZSB2YWx1ZSBpcyBhIHZhbGlkIG51bWJlciBhbmQgd2l0aGluIHRoZSByYW5nZVxuICAgICAgICBpZiAoaXNOYU4obnVtZXJpY1ZhbHVlKSB8fCBudW1lcmljVmFsdWUgPCByYW5nZS5taW4gfHwgbnVtZXJpY1ZhbHVlID4gcmFuZ2UubWF4KSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGludmFsaWQ6IGBQbGVhc2UgZW50ZXIgYSB2YWxpZCBudW1iZXIgYmV0d2VlbiAke3JhbmdlLm1pbn0gYW5kICR7cmFuZ2UubWF4fWBcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG59XG5cbmV4cG9ydCBjb25zdCByZXF1aXJlZFZhbGlkYXRvck1lc3NhZ2UgPSAoZXJyb3I6IGFueSwgZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnKSA9PiB7XG4gICAgcmV0dXJuIGAke19zdGFydENhc2UoX2dldChmaWVsZCwgJ3Byb3BzLmxhYmVsJykpfSBpcyByZXF1aXJlZC5gO1xufSJdfQ==
179
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudC1saWJyYXJ5L3NyYy91dGlscy92YWxpZGF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxHQUFHLElBQUksSUFBSSxFQUFFLElBQUksSUFBSSxLQUFLLEVBQUUsR0FBRyxJQUFJLElBQUksRUFBRSxJQUFJLElBQUksS0FBSyxFQUFFLFNBQVMsSUFBSSxVQUFVLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFHekcsTUFBTSxVQUFVLG9CQUFvQixDQUFDLFNBQWtCO0lBQ25ELE9BQU8sQ0FBQyxPQUF3QixFQUEyQixFQUFFO1FBQ3pELE1BQU0sb0JBQW9CLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQy9FLElBQUksb0JBQW9CLElBQUksQ0FBQyxDQUFDLG9CQUFvQixDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUMvRCxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUVyRCxJQUFJLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3pDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQ25ELE9BQU8sRUFBRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsQ0FBQztnQkFDL0MsQ0FBQztZQUNMLENBQUM7UUFDTCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQyxDQUFBO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxTQUFrQjtJQUNsRCxPQUFPLENB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UUFDTixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQyxDQUFBO0FBQ0wsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLENBQUMsS0FBVSxFQUFFLEtBQXdCLEVBQUUsRUFBRTtJQUM3RSxPQUFPLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUMsZUFBZSxDQUFDO0FBQ3BFLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgQXN5bmNWYWxpZGF0b3JGbiwgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yRm4gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGRlYm91bmNlVGltZSwgZGVsYXksIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0LCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZ2V0IGFzIF9nZXQsIGZpbmQgYXMgX2ZpbmQsIGhhcyBhcyBfaGFzLCBrZXlzIGFzIF9rZXlzLCBzdGFydENhc2UgYXMgX3N0YXJ0Q2FzZSB9IGZyb20gJ2xvZGFzaCc7XHJcbmltcG9ydCB7IEZvcm1seUZpZWxkQ29uZmlnIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcGhvbmVOdW1iZXJWYWxpZGF0b3IoZGVwZW5kZW50Pzogc3RyaW5nKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XHJcbiAgICAgICAgY29uc3QgZGVwZW5kZW50Rm9ybUNvbnRyb2wgPSBkZXBlbmRlbnQgPyBjb250cm9sLnBhcmVudD8uZ2V0KGRlcGVuZGVudCkgOiBudWxsO1xyXG4gICAgICAgIGlmIChkZXBlbmRlbnRGb3JtQ29udHJvbCAmJiAhIWRlcGVuZGVudEZvcm1Db250cm9sLnZhbHVlPy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ3ZhbGlkYXRvcicsIGRlcGVuZGVudEZvcm1Db250cm9sLnZhbHVlKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChkZXBlbmRlbnRGb3JtQ29udHJvbC52YWx1ZVswXS5pZCA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCEvXlxcKzFbMi05XVxcZHsyfVsyLTldXFxkezZ9JC8udGVzdChjb250cm9sLnZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGludmFsaWQ6ICdpbnZhbGlkIHBob25lIG51bWJlcicgfTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGN1c3RvbU5hbWVWYWxpZGF0b3IoZmllbGROYW1lPzogc3RyaW5nKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XHJcbiAgICAgICAgY29uc3QgbmFtZSA9IGNvbnRyb2wudmFsdWU7XHJcbiAgICAgICAgY29uc3QgZmllbGRMYWJlbCA9IGZpZWxkTmFtZSB8fCAnTmFtZSc7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKCFuYW1lIHx8IG5hbWUudHJpbSgpID09PSAnJykge1xyXG4gICAgICAgICAgICByZXR1cm4geyBpbnZhbGlkOiBgJHtmaWVsZExhYmVsfSBpcyByZXF1aXJlZC5gIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIENoZWNrIGlmIG5hbWUgc3RhcnRzIHdpdGggYSBudW1iZXJcclxuICAgICAgICBpZiAoL15cXGQvLnRlc3QobmFtZS50cmltKCkpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7IGludmFsaWQ6IGAke2ZpZWxkTGFiZWx9IGNhbm5vdCBzdGFydCB3aXRoIGEgbnVtYmVyLmAgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8gQ2hlY2sgaWYgbmFtZSBjb250YWlucyBvbmx5IGFscGhhYmV0aWMgY2hhcmFjdGVycyAobm8gc3BhY2VzIGFsbG93ZWQpXHJcbiAgICAgICAgaWYgKCEvXlthLXpBLVpdKyQvLnRlc3QobmFtZS50cmltKCkpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7IGludmFsaWQ6IGAke2ZpZWxkTGFiZWx9IGNhbiBvbmx5IGNvbnRhaW4gbGV0dGVycy5gIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIENoZWNrIG1pbmltdW0gbGVuZ3RoIChhdCBsZWFzdCAyIGNoYXJhY3RlcnMpXHJcbiAgICAgICAgaWYgKG5hbWUudHJpbSgpLmxlbmd0aCA8IDIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHsgaW52YWxpZDogYCR7ZmllbGRMYWJlbH0gbXVzdCBiZSBhdCBsZWFzdCAyIGNoYXJhY3RlcnMgbG9uZy5gIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIENoZWNrIG1heGltdW0gbGVuZ3RoICg1MCBjaGFyYWN0ZXJzKVxyXG4gICAgICAgIGlmIChuYW1lLnRyaW0oKS5sZW5ndGggPiA1MCkge1xyXG4gICAgICAgICAgICByZXR1cm4geyBpbnZhbGlkOiBgJHtmaWVsZExhYmVsfSBjYW5ub3QgZXhjZWVkIDUwIGNoYXJhY3RlcnMuYCB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICByZXR1cm4gbnVsbDsgLy8gVmFsaWQgbmFtZVxyXG4gICAgfTtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGN1c3RvbUVtYWlsVmFsaWRhdG9yID0gKFxyXG4gICAgY29udHJvbDogQWJzdHJhY3RDb250cm9sXHJcbik6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gfCBudWxsID0+IHtcclxuICAgIGNvbnN0IGVtYWlsID0gY29udHJvbC52YWx1ZTtcclxuICAgIC8vIFJlcGxhY2UgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiB3aXRoIHRoZSBwYXR0ZXJuIHlvdSB3YW50IHRvIHVzZS5cclxuXHJcbiAgICBjb25zdCBlbWFpbFBhdHRlcm4gPSAvXlthLXpBLVowLTkuXyUrLV0rQFthLXpBLVowLTkuLV0rXFwuW2EtekEtWl17Miw0fSQvO1xyXG5cclxuICAgIGlmIChlbWFpbFBhdHRlcm4udGVzdChlbWFpbCkgJiYgaXNXb3JrRW1haWwoZW1haWwpKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7IC8vIFZhbGlkIGVtYWlsXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICghZW1haWxQYXR0ZXJuLnRlc3QoZW1haWwpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICBpbnZhbGlkOlxyXG4gICAgICAgICAgICAgICAgICAgICdQbGVhc2UgZW50ZXIgYSB2YWxpZCBlbWFpbCBhZGRyZXNzLicsXHJcbiAgICAgICAgICAgIH07IC8vIEludmFsaWQgZW1haWxcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaW52YWxpZDpcclxuICAgICAgICAgICAgICAgICdQbGVhc2UgdXNlIGEgd29yayBlbWFpbDsgcGVyc29uYWwgZW1haWxzIChlLmcuLCBAZ21haWwsIEB5YWhvbykgYXJlIG5vdCBhY2NlcHRlZC4nLFxyXG4gICAgICAgIH07IC8vIEludmFsaWQgZW1haWxcclxuICAgIH1cclxufTtcclxuY29uc3QgaXNXb3JrRW1haWwgPSAoZW1haWw6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xyXG4gICAgY29uc3QgaW52YWxpZEVtYWlsSG9zdHM6IHN0cmluZ1tdID0gWydnbWFpbCcsICd5YWhvbycsICdob3RtYWlsJ107XHJcbiAgICBpZiAoZW1haWwpIHtcclxuICAgICAgICBsZXQgW3VzZXJOYW1lLCBkb21haW5OYW1lXSA9IGVtYWlsLnNwbGl0KCdAJyk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbnZhbGlkRW1haWxIb3N0cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBsZXQgcmUgPSBuZXcgUmVnRXhwKGAuKiR7aW52YWxpZEVtYWlsSG9zdHNbaV19XFwuLipgKTtcclxuICAgICAgICAgICAgaWYgKHJlLnRlc3QoZG9tYWluTmFtZSkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxufVxyXG4vKlxyXG5leHBvcnQgZnVuY3Rpb24gd29ya0VtYWlsVmFsaWRhdGlvbigpOiBBc3luY1ZhbGlkYXRvckZuIHtcclxuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogT2JzZXJ2YWJsZTxWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbD4gPT4ge1xyXG4gICAgICAgIGlmICghY29udHJvbC52YWx1ZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gb2YobnVsbCk7IC8vIE5vIHZhbHVlIHRvIHZhbGlkYXRlXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAhY29udHJvbC5wZW5kaW5nICYmIGNvbnRyb2wubWFya0FzUGVuZGluZygpO1xyXG4gICAgICAgIC8vICFjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICAgICAgLy8gcmV0dXJuIG9mKHsgaW52YWxpZDogJ0VudGVyIHlvdXIgd29yayBlbWFpbCcgfSk7XHJcbiAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xyXG4gICAgICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgob2IpID0+IHtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoY29udHJvbC52YWx1ZSA9PT0gJ3NhaXJhakBnbWFpbC5jb20nKVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvYi5uZXh0KG51bGwpXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gb2IubmV4dCh7IGludmFsaWQ6ICdUaGlzIGlzIG5vdCBhIHdvcmtlbWFpbCcgfSk7XHJcbiAgICAgICAgICAgIH0sIDUwMClcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIG9mKGNvbnRyb2wudmFsdWUpLnBpcGUoXHJcbiAgICAgICAgICAgIGRlbGF5KDUwMCksIC8vIFNpbXVsYXRlIG5ldHdvcmsgZGVsYXlcclxuXHJcbiAgICAgICAgICAgIG1hcCh2YWx1ZSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gb2YoeyBpbnZhbGlkOiAnVGhpcyBpcyBub3QgYSB3b3JrZW1haWwnIH0pLy9leGlzdGluZ1VzZXJuYW1lcy5pbmNsdWRlcyh1c2VybmFtZSkgPyB7IHVzZXJuYW1lVGFrZW46IHRydWUgfSA6IG51bGw7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC8vIGNhdGNoRXJyb3IoKCkgPT4gb2YobnVsbCkpIC8vIEhhbmRsZSBhbnkgZXJyb3JzXHJcbiAgICAgICAgKTtcclxuICAgIH07XHJcbn0qL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmFsaWRhdGlvbk1lc3NhZ2UoZXJyb3JzOiBhbnksIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnSW5wdXQnLCBhZGRpdGlvbmFsUHJvcGVydGllcz86IGFueSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBtZXNzYWdlcyA9IF9nZXQoYWRkaXRpb25hbFByb3BlcnRpZXMsICduYXRpdmVWYWxpZGF0aW9uT2JqZWN0Lm1lc3NhZ2VzJywge30pO1xyXG4gICAgY29uc3QgZmllbGQgPSBfZ2V0KGFkZGl0aW9uYWxQcm9wZXJ0aWVzLCAnZmllbGQnLCB7fSk7XHJcbiAgICBcclxuICAgIGlmIChlcnJvcnMpIHtcclxuICAgICAgICAvLyBDaGVjayBpZiBhbnkga2V5IGluIGVycm9ycyBtYXRjaGVzIHdpdGggbWVzc2FnZXMgdXNpbmcgbG9kYXNoXHJcbiAgICAgICAgY29uc3QgbWF0Y2hpbmdLZXkgPSBfZmluZChfa2V5cyhlcnJvcnMpLCBrZXkgPT4gX2hhcyhtZXNzYWdlcywga2V5KSk7XHJcbiAgICAgICAgaWYgKG1hdGNoaW5nS2V5ICYmIG1lc3NhZ2VzW21hdGNoaW5nS2V5XSkge1xyXG4gICAgICAgICAgICAvLyBJZiBtZXNzYWdlIGlzIGEgZnVuY3Rpb24sIGV4ZWN1dGUgaXQgd2l0aCBlcnJvcnMgYW5kIG5hdGl2ZVZhbGlkYXRpb25PYmplY3RcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiBtZXNzYWdlc1ttYXRjaGluZ0tleV0gPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBtZXNzYWdlc1ttYXRjaGluZ0tleV0oZXJyb3JzW21hdGNoaW5nS2V5XSwgZmllbGQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBtZXNzYWdlc1ttYXRjaGluZ0tleV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIEZhbGwgYmFjayB0byBkZWZhdWx0IG1lc3NhZ2VzXHJcbiAgICAgICAgaWYgKGVycm9yc1snbWlubGVuZ3RoJ10pIHtcclxuICAgICAgICAgICAgcmV0dXJuIGBNaW5pbXVtICR7ZXJyb3JzWydtaW5sZW5ndGgnXVsncmVxdWlyZWRMZW5ndGgnXX0gY2hhcmFjdGVycyByZXF1aXJlZGA7XHJcbiAgICAgICAgfSBlbHNlIGlmIChlcnJvcnNbJ21heGxlbmd0aCddKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBgTWF4aW11bSBvZiAke2Vycm9yc1snbWF4bGVuZ3RoJ11bJ3JlcXVpcmVkTGVuZ3RoJ119IGNoYXJhY3RlcnMgYWNjZXB0ZWRgO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZXJyb3JzWydyZXF1aXJlZCddKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBgJHtwbGFjZWhvbGRlcn0gY2Fubm90IGJlIGVtcHR5YDtcclxuICAgICAgICB9IGVsc2UgaWYgKGVycm9yc1snaW52YWxpZCddKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBlcnJvcnNbJ2ludmFsaWQnXTtcclxuICAgICAgICB9IGVsc2UgaWYgKGVycm9yc1snZW1haWwnXSkge1xyXG4gICAgICAgICAgICByZXR1cm4gJ0VudGVyIGEgdmFsaWQgZW1haWwnO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZXJyb3JzWydwYXR0ZXJuJ10pIHtcclxuICAgICAgICAgICAgLy8gQ29udGV4dC1hd2FyZSBwYXR0ZXJuIHZhbGlkYXRpb24gbWVzc2FnZXNcclxuICAgICAgICAgICAgY29uc3QgZmllbGRUeXBlID0gX2dldChhZGRpdGlvbmFsUHJvcGVydGllcywgJ2ZpZWxkLnByb3BzLnBhcmFtcy50eXBlJywgJycpO1xyXG4gICAgICAgICAgICBjb25zdCBmaWVsZExhYmVsID0gX2dldChhZGRpdGlvbmFsUHJvcGVydGllcywgJ2ZpZWxkLnByb3BzLmxhYmVsJywgcGxhY2Vob2xkZXIpO1xyXG4gICAgICAgICAgICBjb25zdCBmaWVsZFBsYWNlaG9sZGVyID0gX2dldChhZGRpdGlvbmFsUHJvcGVydGllcywgJ2ZpZWxkLnByb3BzLnBsYWNlaG9sZGVyJywgcGxhY2Vob2xkZXIpO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgaWYgKGZpZWxkTGFiZWwudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnbmFtZScpIHx8IGZpZWxkTGFiZWwudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnZmlyc3QnKSB8fCBmaWVsZExhYmVsLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ2xhc3QnKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuICdOYW1lcyBjYW4gb25seSBjb250YWluIGxldHRlcnMgYW5kIHNwYWNlcyc7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZmllbGRUeXBlID09PSAndGVsJyB8fCBwbGFjZWhvbGRlci50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdwaG9uZScpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gJ0VudGVyIGEgdmFsaWQgcGhvbmUgbnVtYmVyJztcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChmaWVsZFR5cGUgPT09ICdlbWFpbCcpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAnRW50ZXIgYSB2YWxpZCBlbWFpbCBhZGRyZXNzJztcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmIChmaWVsZExhYmVsKVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgUGxlYXNlIGVudGVyIGEgdmFsaWQgJHtmaWVsZExhYmVsLnRvTG93ZXJDYXNlKCl9YDtcclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZpZWxkUGxhY2Vob2xkZXIpXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBQbGVhc2UgZW50ZXIgYSB2YWxpZCAke2ZpZWxkUGxhY2Vob2xkZXIudG9Mb3dlckNhc2UoKX1gO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIGBJbnZhbGlkICR7cGxhY2Vob2xkZXJ9YDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYEludmFsaWQgJHtwbGFjZWhvbGRlcn1gO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbnVtYmVyUmFuZ2VWYWxpZGF0b3IocmFuZ2U6IHsgbWluOiBudW1iZXI7IG1heDogbnVtYmVyIH0sIHR5cGUgPSBudWxsKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XHJcbiAgICAgICAgbGV0IHZhbHVlID0gY29udHJvbC52YWx1ZTtcclxuXHJcbiAgICAgICAgaWYgKHR5cGUgPT09ICdwZXJjZW50YWdlJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgnJScsICcnKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIENvbnZlcnQgdG8gYSBudW1iZXIgaWYgaXQncyBub3QgbnVsbCBvciB1bmRlZmluZWRcclxuICAgICAgICBjb25zdCBudW1lcmljVmFsdWUgPSB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkID8gcGFyc2VGbG9hdCh2YWx1ZSkgOiBOYU47XHJcblxyXG4gICAgICAgIC8vIENoZWNrIGlmIHRoZSB2YWx1ZSBpcyBhIHZhbGlkIG51bWJlciBhbmQgd2l0aGluIHRoZSByYW5nZVxyXG4gICAgICAgIGlmIChpc05hTihudW1lcmljVmFsdWUpIHx8IG51bWVyaWNWYWx1ZSA8IHJhbmdlLm1pbiB8fCBudW1lcmljVmFsdWUgPiByYW5nZS5tYXgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIGludmFsaWQ6IGBQbGVhc2UgZW50ZXIgYSB2YWxpZCBudW1iZXIgYmV0d2VlbiAke3JhbmdlLm1pbn0gYW5kICR7cmFuZ2UubWF4fWBcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY29uc3QgcmVxdWlyZWRWYWxpZGF0b3JNZXNzYWdlID0gKGVycm9yOiBhbnksIGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZykgPT4ge1xyXG4gICAgcmV0dXJuIGAke19zdGFydENhc2UoX2dldChmaWVsZCwgJ3Byb3BzLmxhYmVsJykpfSBpcyByZXF1aXJlZC5gO1xyXG59Il19