geonetwork-ui 2.4.0-dev.8118addf → 2.4.0-dev.825a487d

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 (129) hide show
  1. package/esm2022/libs/api/metadata-converter/src/index.mjs +1 -2
  2. package/esm2022/libs/api/metadata-converter/src/lib/xml-utils.mjs +5 -3
  3. package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +21 -4
  4. package/esm2022/libs/common/domain/src/lib/model/record/contact.model.mjs +28 -1
  5. package/esm2022/libs/common/domain/src/lib/repository/records-repository.interface.mjs +1 -1
  6. package/esm2022/libs/feature/editor/src/lib/components/contact-card/contact-card.component.mjs +29 -0
  7. package/esm2022/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.mjs +131 -0
  8. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.mjs +170 -0
  9. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.mjs +3 -3
  10. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.mjs +21 -0
  11. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.mjs +7 -6
  12. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.mjs +24 -9
  13. package/esm2022/libs/feature/editor/src/lib/components/record-form/record-form.component.mjs +3 -3
  14. package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +19 -3
  15. package/esm2022/libs/feature/map/src/lib/utils/map-utils.service.mjs +10 -4
  16. package/esm2022/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.mjs +3 -3
  17. package/esm2022/libs/feature/search/src/lib/results-table/results-table-container.component.mjs +40 -7
  18. package/esm2022/libs/feature/search/src/lib/state/search.facade.mjs +6 -2
  19. package/esm2022/libs/ui/elements/src/index.mjs +2 -1
  20. package/esm2022/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.mjs +27 -0
  21. package/esm2022/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.mjs +4 -3
  22. package/esm2022/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.mjs +2 -2
  23. package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +3 -3
  24. package/esm2022/libs/ui/elements/src/lib/sortable-list/sortable-list.component.mjs +7 -3
  25. package/esm2022/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.mjs +19 -5
  26. package/esm2022/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.mjs +3 -3
  27. package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table.component.mjs +3 -3
  28. package/esm2022/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.mjs +49 -11
  29. package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +18 -6
  30. package/esm2022/translations/de.json +40 -16
  31. package/esm2022/translations/en.json +33 -9
  32. package/esm2022/translations/es.json +33 -9
  33. package/esm2022/translations/fr.json +43 -19
  34. package/esm2022/translations/it.json +33 -9
  35. package/esm2022/translations/nl.json +33 -9
  36. package/esm2022/translations/pt.json +33 -9
  37. package/fesm2022/geonetwork-ui.mjs +984 -259
  38. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  39. package/libs/api/metadata-converter/src/index.d.ts +0 -1
  40. package/libs/api/metadata-converter/src/index.d.ts.map +1 -1
  41. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +6 -1
  42. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
  43. package/libs/common/domain/src/lib/model/record/contact.model.d.ts +1 -0
  44. package/libs/common/domain/src/lib/model/record/contact.model.d.ts.map +1 -1
  45. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts +8 -0
  46. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts.map +1 -1
  47. package/libs/feature/editor/src/lib/components/contact-card/contact-card.component.d.ts +12 -0
  48. package/libs/feature/editor/src/lib/components/contact-card/contact-card.component.d.ts.map +1 -0
  49. package/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.d.ts +27 -0
  50. package/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.d.ts.map +1 -0
  51. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.d.ts +47 -0
  52. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.d.ts.map +1 -0
  53. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.d.ts +11 -0
  54. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.d.ts.map +1 -0
  55. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.d.ts +3 -1
  56. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.d.ts.map +1 -1
  57. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts +6 -1
  58. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts.map +1 -1
  59. package/libs/feature/editor/src/lib/fields.config.d.ts +2 -0
  60. package/libs/feature/editor/src/lib/fields.config.d.ts.map +1 -1
  61. package/libs/feature/map/src/lib/utils/map-utils.service.d.ts.map +1 -1
  62. package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts +11 -3
  63. package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts.map +1 -1
  64. package/libs/feature/search/src/lib/state/search.facade.d.ts +1 -0
  65. package/libs/feature/search/src/lib/state/search.facade.d.ts.map +1 -1
  66. package/libs/ui/elements/src/index.d.ts +1 -0
  67. package/libs/ui/elements/src/index.d.ts.map +1 -1
  68. package/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.d.ts +18 -0
  69. package/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.d.ts.map +1 -0
  70. package/libs/ui/elements/src/lib/sortable-list/sortable-list.component.d.ts +4 -4
  71. package/libs/ui/elements/src/lib/sortable-list/sortable-list.component.d.ts.map +1 -1
  72. package/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.d.ts +9 -1
  73. package/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.d.ts.map +1 -1
  74. package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts +10 -1
  75. package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts.map +1 -1
  76. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts +6 -2
  77. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +1 -1
  78. package/package.json +1 -1
  79. package/src/libs/api/metadata-converter/src/index.ts +0 -1
  80. package/src/libs/api/metadata-converter/src/lib/xml-utils.ts +5 -5
  81. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +24 -4
  82. package/src/libs/common/domain/src/lib/model/record/contact.model.ts +28 -0
  83. package/src/libs/common/domain/src/lib/repository/records-repository.interface.ts +10 -0
  84. package/src/libs/feature/editor/src/lib/components/contact-card/contact-card.component.css +0 -0
  85. package/src/libs/feature/editor/src/lib/components/contact-card/contact-card.component.html +25 -0
  86. package/src/libs/feature/editor/src/lib/components/contact-card/contact-card.component.ts +30 -0
  87. package/src/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.html +2 -1
  88. package/src/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.ts +110 -19
  89. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.css +0 -0
  90. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.html +76 -0
  91. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.ts +271 -0
  92. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.html +1 -1
  93. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.css +0 -0
  94. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.html +5 -0
  95. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.ts +22 -0
  96. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.ts +8 -7
  97. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.html +11 -0
  98. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.ts +18 -1
  99. package/src/libs/feature/editor/src/lib/components/record-form/record-form.component.html +1 -1
  100. package/src/libs/feature/editor/src/lib/fields.config.ts +20 -2
  101. package/src/libs/feature/map/src/lib/utils/map-utils.service.ts +8 -3
  102. package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.html +1 -1
  103. package/src/libs/feature/search/src/lib/results-table/results-table-container.component.html +2 -1
  104. package/src/libs/feature/search/src/lib/results-table/results-table-container.component.ts +52 -3
  105. package/src/libs/feature/search/src/lib/state/search.facade.ts +6 -0
  106. package/src/libs/ui/elements/src/index.ts +1 -0
  107. package/src/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.css +0 -0
  108. package/src/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.html +12 -0
  109. package/src/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.ts +37 -0
  110. package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.html +4 -1
  111. package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.css +2 -1
  112. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +12 -8
  113. package/src/libs/ui/elements/src/lib/sortable-list/sortable-list.component.html +3 -1
  114. package/src/libs/ui/elements/src/lib/sortable-list/sortable-list.component.ts +8 -4
  115. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.ts +15 -3
  116. package/src/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.html +1 -1
  117. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.html +1 -0
  118. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.html +10 -1
  119. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.ts +55 -3
  120. package/src/libs/ui/search/src/lib/results-table/results-table.component.html +7 -2
  121. package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +9 -9
  122. package/translations/de.json +40 -16
  123. package/translations/en.json +33 -9
  124. package/translations/es.json +33 -9
  125. package/translations/fr.json +43 -19
  126. package/translations/it.json +33 -9
  127. package/translations/nl.json +33 -9
  128. package/translations/pt.json +33 -9
  129. package/translations/sk.json +33 -9
@@ -1,6 +1,5 @@
1
- export * from './lib/base.converter';
2
1
  export * from './lib/iso19139';
3
2
  export * from './lib/iso19115-3';
4
3
  export * from './lib/find-converter';
5
4
  export * from './lib/gn4';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9tZXRhZGF0YS1jb252ZXJ0ZXIvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsc0JBQXNCLENBQUE7QUFDcEMsY0FBYyxnQkFBZ0IsQ0FBQTtBQUM5QixjQUFjLGtCQUFrQixDQUFBO0FBQ2hDLGNBQWMsc0JBQXNCLENBQUE7QUFDcEMsY0FBYyxXQUFXLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYi9iYXNlLmNvbnZlcnRlcidcbmV4cG9ydCAqIGZyb20gJy4vbGliL2lzbzE5MTM5J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaXNvMTkxMTUtMydcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpbmQtY29udmVydGVyJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZ240J1xuIl19
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9tZXRhZGF0YS1jb252ZXJ0ZXIvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZ0JBQWdCLENBQUE7QUFDOUIsY0FBYyxrQkFBa0IsQ0FBQTtBQUNoQyxjQUFjLHNCQUFzQixDQUFBO0FBQ3BDLGNBQWMsV0FBVyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvaXNvMTkxMzknXG5leHBvcnQgKiBmcm9tICcuL2xpYi9pc28xOTExNS0zJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmluZC1jb252ZXJ0ZXInXG5leHBvcnQgKiBmcm9tICcuL2xpYi9nbjQnXG4iXX0=
@@ -145,10 +145,12 @@ export function findParent(parentName) {
145
145
  }
146
146
  export function readText() {
147
147
  return (el) => {
148
- const textNode = el && Array.isArray(el.children)
148
+ if (!el)
149
+ return null;
150
+ const textNode = Array.isArray(el.children)
149
151
  ? el.children.find((node) => node.type === 'text')
150
152
  : null;
151
- return textNode ? textNode.text : null;
153
+ return textNode ? textNode.text : '';
152
154
  };
153
155
  }
154
156
  export function readAttribute(attrName) {
@@ -364,4 +366,4 @@ export function renameElements(rootElement, replaceMap) {
364
366
  doReplace(rootElement);
365
367
  return rootElement;
366
368
  }
367
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieG1sLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hcGkvbWV0YWRhdGEtY29udmVydGVyL3NyYy9saWIveG1sLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxRQUFRLEVBRVIsV0FBVyxFQUNYLFVBQVUsRUFDVixPQUFPLEdBQ1IsTUFBTSxtQkFBbUIsQ0FBQTtBQUMxQixPQUFPLEVBQXFCLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBRTlELE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFFM0QsTUFBTSxPQUFPLGFBQWMsU0FBUSxLQUFLO0lBQ3RDLFlBQVksT0FBTztRQUNqQixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDaEIsQ0FBQztDQUNGO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLFNBQWlCO0lBQzlDLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQTtJQUNkLElBQUk7UUFDRixHQUFHLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFBO0tBQzFCO0lBQUMsT0FBTyxDQUFDLEVBQUU7UUFDVixNQUFNLElBQUksYUFBYSxDQUFDLENBQUMsWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0tBQzVEO0lBQ0QsT0FBTyxHQUFHLENBQUE7QUFDWixDQUFDO0FBRUQsTUFBTSxVQUFVLGNBQWMsQ0FBQyxNQUFrQjtJQUMvQyxNQUFNLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFBO0lBRTNDLFNBQVMsd0JBQXdCLENBQUMsSUFBWTtRQUM1QyxNQUFNLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUN4QyxJQUFJLFNBQVMsS0FBSyxPQUFPLElBQUks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QU8sQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTtTQUN4QzthQUFNLElBQUksT0FBTyxDQUFDLElBQUksSUFBSSxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLFVBQVUsRUFBRTtZQUNuRSxPQUFPLENBQUMsSUFBSSxHQUFHLEdBQ2IsVUFBVSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQ3ZDLElBQUksY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFBO1NBQ25DO1FBQ0QsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFO1lBQ3BCLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFBO1NBQ3BDO0lBQ0gsQ0FBQztJQUNELFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQTtJQUN0QixPQUFPLFdBQVcsQ0FBQTtBQUNwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgcGFyc2VYbWwsXG4gIFhtbENvbW1lbnQsXG4gIFhtbERvY3VtZW50LFxuICBYbWxFbGVtZW50LFxuICBYbWxUZXh0LFxufSBmcm9tICdAcmdyb3ZlL3BhcnNlLXhtbCdcbmltcG9ydCB7IENoYWluYWJsZUZ1bmN0aW9uLCBmYWxsYmFjayB9IGZyb20gJy4vZnVuY3Rpb24tdXRpbHMnXG5cbmV4cG9ydCB7IFhtbERvY3VtZW50LCBYbWxFbGVtZW50IH0gZnJvbSAnQHJncm92ZS9wYXJzZS14bWwnXG5cbmV4cG9ydCBjbGFzcyBYbWxQYXJzZUVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlKSB7XG4gICAgc3VwZXIobWVzc2FnZSlcbiAgfVxufVxuXG4vKipcbiAqIFBhcnNlcyBhIFhNTCBkb2N1bWVudCBhcyBzdHJpbmcsIHJldHVybiBhIGRvY3VtZW50IG9iamVjdFxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VYbWxTdHJpbmcoeG1sU3RyaW5nOiBzdHJpbmcpOiBYbWxEb2N1bWVudCB7XG4gIGxldCBkb2MgPSBudWxsXG4gIHRyeSB7XG4gICAgZG9jID0gcGFyc2VYbWwoeG1sU3RyaW5nKVxuICB9IGNhdGNoIChlKSB7XG4gICAgdGhyb3cgbmV3IFhtbFBhcnNlRXJyb3IoZSBpbnN0YW5jZW9mIEVycm9yID8gZS5tZXNzYWdlIDogZSlcbiAgfVxuICByZXR1cm4gZG9jXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEb2N1bWVudChyb290RWw6IFhtbEVsZW1lbnQpOiBYbWxEb2N1bWVudCB7XG4gIHJvb3RFbC5hdHRyaWJ1dGVzID0gcm9vdEVsLmF0dHJpYnV0ZXMgfHwge31cblxuICBmdW5jdGlvbiBjb2xsZWN0TmFtZXNwYWNlRnJvbU5hbWUobmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgbmFtZXNwYWNlID0gZXh0cmFjdE5hbWVzcGFjZShuYW1lKVxuICAgIGlmIChuYW1lc3BhY2UgPT09ICd4bWxucycgfHwgbmFtZXNwYWNlID09PSBudWxsKSByZXR1cm5cbiAgICBpZiAocm9vdEVsLmF0dHJpYnV0ZXNbYHhtbG5zOiR7bmFtZXNwYWNlfWBdKSByZXR1cm5cbiAgICBpZiAoIU5BTUVTUEFDRVNbbmFtZXNwYWNlXSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBrbm93biBVUkkgZm9yIG5hbWVzcGFjZSAke25hbWVzcGFjZX1gKVxuICAgIH1cbiAgICByb290RWwuYXR0cmlidXRlc1tgeG1sbnM6JHtuYW1lc3BhY2V9YF0gPSBOQU1FU1BBQ0VTW25hbWVzcGFjZV1cbiAgfVxuXG4gIGZ1bmN0aW9uIGNvbGxlY3ROYW1lc3BhY2VzKGVsOiBYbWxFbGVtZW50KSB7XG4gICAgY29sbGVjdE5hbWVzcGFjZUZyb21OYW1lKGVsLm5hbWUpXG4gICAgZm9yIChjb25zdCBhdHRyIGluIGVsLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGNvbGxlY3ROYW1lc3BhY2VGcm9tTmFtZShhdHRyKVxuICAgIH1cbiAgICBjb25zdCBjaGlsZHJlbiA9IGFsbENoaWxkcmVuRWxlbWVudChlbClcbiAgICBjaGlsZHJlbi5mb3JFYWNoKGNvbGxlY3ROYW1lc3BhY2VzKVxuICB9XG5cbiAgY29sbGVjdE5hbWVzcGFjZXMocm9vdEVsKVxuICByZXR1cm4gbmV3IFhtbERvY3VtZW50KFtyb290RWxdKVxufVxuXG4vKipcbiAqIFdpbGwgZG8gbm90aGluZyBpZiBubyBuYW1lc3BhY2UgcHJlc2VudFxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RyaXBOYW1lc3BhY2UobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgY29sb24gPSBuYW1lLmluZGV4T2YoJzonKVxuICByZXR1cm4gY29sb24gPiAtMSA/IG5hbWUuc3Vic3RyaW5nKGNvbG9uICsgMSkgOiBuYW1lXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXROYW1lc3BhY2UobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgY29sb24gPSBuYW1lLmluZGV4T2YoJzonKVxuICByZXR1cm4gY29sb24gPiAtMSA/IG5hbWUuc3Vic3RyaW5nKDAsIGNvbG9uKSA6ICcnXG59XG5cbmZ1bmN0aW9uIGdldEVsZW1lbnROYW1lKGVsZW1lbnQ6IFhtbEVsZW1lbnQpOiBzdHJpbmcge1xuICByZXR1cm4gZWxlbWVudC5uYW1lIHx8ICcnXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSb290RWxlbWVudCh4bWxEb2M6IFhtbERvY3VtZW50KTogWG1sRWxlbWVudCB7XG4gIHJldHVybiB4bWxEb2MuY2hpbGRyZW4uZmluZCgoZWwpID0+IGVsIGluc3RhbmNlb2YgWG1sRWxlbWVudCkgYXMgWG1sRWxlbWVudFxufVxuXG4vKipcbiAqIFdpbGwgcmV0dXJuIGFsbCBtYXRjaGluZyBlbGVtZW50cyAobmFtZXNwYWNlIHdpbGwgYmUgaWdub3JlZClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRDaGlsZHJlbkVsZW1lbnQoXG4gIG5hbWU6IHN0cmluZyxcbiAgbmVzdGVkID0gdHJ1ZVxuKTogQ2hhaW5hYmxlRnVuY3Rpb248WG1sRWxlbWVudCwgQXJyYXk8WG1sRWxlbWVudD4+IHtcbiAgcmV0dXJuIChlbCkgPT4ge1xuICAgIGNvbnN0IHN0cmlwcGVkTmFtZSA9IHN0cmlwTmFtZXNwYWNlKG5hbWUpXG4gICAgZnVuY3Rpb24gcmVkdWNlcihwcmV2LCBjdXJyKSB7XG4gICAgICBpZiAoc3RyaXBOYW1lc3BhY2UoZ2V0RWxlbWVudE5hbWUoY3VycikpID09PSBzdHJpcHBlZE5hbWUpIHtcbiAgICAgICAgcHJldi5wdXNoKGN1cnIpXG4gICAgICB9XG5cbiAgICAgIGlmIChuZXN0ZWQgJiYgQXJyYXkuaXNBcnJheShjdXJyLmNoaWxkcmVuKSkge1xuICAgICAgICByZXR1cm4gWy4uLnByZXYsIC4uLmN1cnIuY2hpbGRyZW4ucmVkdWNlKHJlZHVjZXIsIFtdKV1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBwcmV2XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGVsICYmIEFycmF5LmlzQXJyYXkoZWwuY2hpbGRyZW4pXG4gICAgICA/IGVsLmNoaWxkcmVuLnJlZHVjZShyZWR1Y2VyLCBbXSlcbiAgICAgIDogW11cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZmluZENoaWxkRWxlbWVudChcbiAgbmFtZTogc3RyaW5nLFxuICBuZXN0ZWQgPSB0cnVlXG4pOiBDaGFpbmFibGVGdW5jdGlvbjxYbWxFbGVtZW50LCBYbWxFbGVtZW50PiB7XG4gIHJldHVybiAoZWwpID0+IGZpbmRDaGlsZHJlbkVsZW1lbnQobmFtZSwgbmVzdGVkKShlbClbMF0gfHwgbnVsbFxufVxuXG5leHBvcnQgZnVuY3Rpb24gYWxsQ2hpbGRyZW5FbGVtZW50KGVsZW1lbnQ6IFhtbEVsZW1lbnQpOiBBcnJheTxYbWxFbGVtZW50PiB7XG4gIGlmICghZWxlbWVudCB8fCAhQXJyYXkuaXNBcnJheShlbGVtZW50LmNoaWxkcmVuKSkgcmV0dXJuIFtdXG4gIHJldHVybiBbXG4gICAgLi4uZWxlbWVudC5jaGlsZHJlbi5maWx0ZXIoKGVsKSA9PiBlbCBpbnN0YW5jZW9mIFhtbEVsZW1lbnQpLFxuICBdIGFzIEFycmF5PFhtbEVsZW1lbnQ+XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaXJzdENoaWxkRWxlbWVudChlbGVtZW50OiBYbWxFbGVtZW50KTogWG1sRWxlbWVudCB7XG4gIHJldHVybiBhbGxDaGlsZHJlbkVsZW1lbnQoZWxlbWVudClbMF0gPz8gbnVsbFxufVxuXG4vKipcbiAqIFdpbGwgcmV0dXJuIGFsbCBtYXRjaGluZyBlbGVtZW50cyBuZXN0ZWQgYWNjb3JkaW5nIHRvIHRoZSBnaXZlblxuICogbmFtZXMgKHNpbWlsYXIgdG8gYSBwYXRoKSwgc3RhcnRpbmcgZm9ybSB0aGUgaW5wdXQgZWxlbWVudDtcbiAqIHJldHVybnMgYW4gZW1wdHkgYXJyYXkgaWYgbm8gbWF0Y2hpbmcgZWxlbWVudFxuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZE5lc3RlZEVsZW1lbnRzKFxuICAuLi5lbGVtZW50TmFtZXM6IHN0cmluZ1tdXG4pOiBDaGFpbmFibGVGdW5jdGlvbjxYbWxFbGVtZW50LCBBcnJheTxYbWxFbGVtZW50Pj4ge1xuICByZXR1cm4gKGVsKSA9PiB7XG4gICAgZnVuY3Rpb24gbG9va0ZvcihlbE5hbWVJbmRleDogbnVtYmVyKSB7XG4gICAgICBjb25zdCBzdHJpcHBlZE5hbWUgPSBzdHJpcE5hbWVzcGFjZShlbGVtZW50TmFtZXNbZWxOYW1lSW5kZXhdKVxuICAgICAgcmV0dXJuIChwcmV2LCBjdXJyKSA9PiB7XG4gICAgICAgIGlmIChzdHJpcE5hbWVzcGFjZShnZXRFbGVtZW50TmFtZShjdXJyKSkgIT09IHN0cmlwcGVkTmFtZSkge1xuICAgICAgICAgIHJldHVybiBwcmV2XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVsTmFtZUluZGV4ID09PSBlbGVtZW50TmFtZXMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgIHJldHVybiBbLi4ucHJldiwgY3Vycl1cbiAgICAgICAgfVxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjdXJyLmNoaWxkcmVuKSkge1xuICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgICAgLi4uY3Vyci5jaGlsZHJlbi5yZWR1Y2UobG9va0ZvcihlbE5hbWVJbmRleCArIDEpLCBbXSksXG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwcmV2XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGVsICYmIEFycmF5LmlzQXJyYXkoZWwuY2hpbGRyZW4pXG4gICAgICA/IGVsLmNoaWxkcmVuLnJlZHVjZShsb29rRm9yKDApLCBbXSlcbiAgICAgIDogW11cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZmluZE5lc3RlZEVsZW1lbnQoXG4gIC4uLmVsZW1lbnROYW1lczogc3RyaW5nW11cbik6IENoYWluYWJsZUZ1bmN0aW9uPFhtbEVsZW1lbnQsIFhtbEVsZW1lbnQ+IHtcbiAgcmV0dXJuIChlbCkgPT4ge1xuICAgIGNvbnN0IGZvdW5kID0gZmluZE5lc3RlZEVsZW1lbnRzKC4uLmVsZW1lbnROYW1lcykoZWwpXG4gICAgcmV0dXJuIGZvdW5kLmxlbmd0aCA/IGZvdW5kWzBdIDogbnVsbFxuICB9XG59XG5cbi8vIFdpbGwgbG9vayB0aHJvdWdoIGFsbCB0aGUgcGFyZW50czsgcmV0dXJucyBudWxsIGlmIG5vIG1hdGNoaW5nIHBhcmVudCBmb3VuZC5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kUGFyZW50KFxuICBwYXJlbnROYW1lOiBzdHJpbmdcbik6IENoYWluYWJsZUZ1bmN0aW9uPFhtbEVsZW1lbnQsIFhtbEVsZW1lbnQ+IHtcbiAgcmV0dXJuIChlbCkgPT4ge1xuICAgIGxldCBwYXJlbnQ6IFhtbEVsZW1lbnQgfCBYbWxEb2N1bWVudCA9IGVsLnBhcmVudCBhcyBYbWxFbGVtZW50XG4gICAgd2hpbGUgKHBhcmVudCAmJiBwYXJlbnQgaW5zdGFuY2VvZiBYbWxFbGVtZW50KSB7XG4gICAgICBpZiAoc3RyaXBOYW1lc3BhY2UoZ2V0RWxlbWVudE5hbWUocGFyZW50KSkgPT09IHN0cmlwTmFtZXNwYWNlKHBhcmVudE5hbWUpKVxuICAgICAgICByZXR1cm4gcGFyZW50XG4gICAgICBwYXJlbnQgPSBwYXJlbnQucGFyZW50XG4gICAgfVxuICAgIHJldHVybiBudWxsXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRUZXh0KCk6IENoYWluYWJsZUZ1bmN0aW9uPFhtbEVsZW1lbnQsIHN0cmluZz4ge1xuICByZXR1cm4gKGVsKSA9PiB7XG4gICAgY29uc3QgdGV4dE5vZGUgPVxuICAgICAgZWwgJiYgQXJyYXkuaXNBcnJheShlbC5jaGlsZHJlbilcbiAgICAgICAgPyAoZWwuY2hpbGRyZW4uZmluZCgobm9kZSkgPT4gbm9kZS50eXBlID09PSAndGV4dCcpIGFzIFhtbFRleHQpXG4gICAgICAgIDogbnVsbFxuICAgIHJldHVybiB0ZXh0Tm9kZSA/IHRleHROb2RlLnRleHQgOiBudWxsXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRBdHRyaWJ1dGUoXG4gIGF0dHJOYW1lOiBzdHJpbmdcbik6IENoYWluYWJsZUZ1bmN0aW9uPFhtbEVsZW1lbnQsIHN0cmluZz4ge1xuICByZXR1cm4gKGVsKSA9PiAoZWwgJiYgZWwuYXR0cmlidXRlc1thdHRyTmFtZV0pIHx8IG51bGxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHhtbFRvU3RyaW5nKFxuICBlbDogWG1sRWxlbWVudCB8IFhtbFRleHQgfCBYbWxDb21tZW50IHwgWG1sRG9jdW1lbnQsXG4gIGluZGVudGF0aW9uTGV2ZWwgPSAwXG4pIHtcbiAgaWYgKGVsIGluc3RhbmNlb2YgWG1sRG9jdW1lbnQpXG4gICAgcmV0dXJuIGA8P3htbCB2ZXJzaW9uPVwiMS4wXCIgZW5jb2Rpbmc9XCJVVEYtOFwiPz4ke3htbFRvU3RyaW5nKFxuICAgICAgZWwuY2hpbGRyZW5bMF1cbiAgICApfWBcbiAgaWYgKGVsIGluc3RhbmNlb2YgWG1sVGV4dCkge1xuICAgIGNvbnN0IHRleHQgPSBlbC50ZXh0XG4gICAgY29uc3QgaXNFbXB0eSA9ICF0ZXh0IHx8IHRleHQucmVwbGFjZSgvXlxccyt8XFxzKyQvZywgJycpID09PSAnJ1xuICAgIGlmIChpc0VtcHR5KSByZXR1cm4gJydcbiAgICByZXR1cm4gdGV4dFxuICAgICAgLnJlcGxhY2UoLyYvZywgJyZhbXA7JylcbiAgICAgIC5yZXBsYWNlKC88L2csICcmbHQ7JylcbiAgICAgIC5yZXBsYWNlKC8+L2csICcmZ3Q7JylcbiAgfVxuICBpZiAoIShlbCBpbnN0YW5jZW9mIFhtbEVsZW1lbnQpKSByZXR1cm4gYDwhLS0gdW5rbm93biAtLT5gXG5cbiAgY29uc3QgcGFkZGluZyA9ICcgICAgJy5yZXBlYXQoaW5kZW50YXRpb25MZXZlbClcbiAgY29uc3QgY2hpbGRyZW4gPSBBcnJheS5pc0FycmF5KGVsLmNoaWxkcmVuKVxuICAgID8gZWwuY2hpbGRyZW5cbiAgICAgICAgLm1hcCgoZWwpID0+IHhtbFRvU3RyaW5nKGVsLCBpbmRlbnRhdGlvbkxldmVsICsgMSkpXG4gICAgICAgIC5maWx0ZXIoKGVsKSA9PiBlbCAhPT0gJycpXG4gICAgICAgIC5tYXAoKGVsU3RyaW5nLCBpbmRleCwgYXJyYXkpID0+XG4gICAgICAgICAgaW5kZXggPCBhcnJheS5sZW5ndGggLSAxID8gZWxTdHJpbmcucmVwbGFjZSgvXFxuXFxzKiQvZywgJycpIDogZWxTdHJpbmdcbiAgICAgICAgKVxuICAgICAgICAuam9pbignJylcbiAgICA6ICcnXG4gIGNvbnN0IGF0dHJzID0gT2JqZWN0LmtleXMoZWwuYXR0cmlidXRlcykucmVkdWNlKFxuICAgIChwcmV2LCBjdXJyKSA9PiBwcmV2ICsgYCAke2N1cnJ9PVwiJHtlbC5hdHRyaWJ1dGVzW2N1cnJdfVwiYCxcbiAgICAnJ1xuICApXG4gIGNvbnN0IHBhcmVudFBhZGRpbmcgPSAnICAgICcucmVwZWF0KE1hdGgubWF4KDAsIGluZGVudGF0aW9uTGV2ZWwgLSAxKSlcbiAgaWYgKGNoaWxkcmVuID09PSAnJykge1xuICAgIHJldHVybiBgXG4ke3BhZGRpbmd9PCR7ZWwubmFtZX0ke2F0dHJzfS8+XG4ke3BhcmVudFBhZGRpbmd9YFxuICB9XG5cbiAgcmV0dXJuIGBcbiR7cGFkZGluZ308JHtlbC5uYW1lfSR7YXR0cnN9PiR7Y2hpbGRyZW59PC8ke2VsLm5hbWV9PlxuJHtwYXJlbnRQYWRkaW5nfWBcbn1cblxuLyoqXG4gKiBAcGFyYW0gbmFtZVxuICogQHJldHVybnMgbmFtZXNwYWNlLCBudWxsIGlmIG5vbmUgZm91bmRcbiAqL1xuZnVuY3Rpb24gZXh0cmFjdE5hbWVzcGFjZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgY29uc3QgY29sb24gPSBuYW1lLmluZGV4T2YoJzonKVxuICByZXR1cm4gY29sb24gPiAtMSA/IG5hbWUuc3Vic3RyaW5nKDAsIGNvbG9uKSA6IG51bGxcbn1cblxuY29uc3QgTkFNRVNQQUNFUyA9IHtcbiAgZ21kOiAnaHR0cDovL3d3dy5pc290YzIxMS5vcmcvMjAwNS9nbWQnLFxuICBnY286ICdodHRwOi8vd3d3Lmlzb3RjMjExLm9yZy8yMDA1L2djbycsXG4gIGdmYzogJ2h0dHA6Ly93d3cuaXNvdGMyMTEub3JnLzIwMDUvZ2ZjJyxcbiAgZ21sOiAnaHR0cDovL3d3dy5vcGVuZ2lzLm5ldC9nbWwvMy4yJyxcbiAgeHNpOiAnaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UnLFxuICBzcnY6ICdodHRwOi8vd3d3Lmlzb3RjMjExLm9yZy8yMDA1L3NydicsXG4gIGdteDogJ2h0dHA6Ly93d3cuaXNvdGMyMTEub3JnLzIwMDUvZ214JyxcbiAgZ3RzOiAnaHR0cDovL3d3dy5pc290YzIxMS5vcmcvMjAwNS9ndHMnLFxuICBnc3I6ICdodHRwOi8vd3d3Lmlzb3RjMjExLm9yZy8yMDA1L2dzcicsXG4gIGdtaTogJ2h0dHA6Ly93d3cuaXNvdGMyMTEub3JnLzIwMDUvZ21pJyxcbiAgeGxpbms6ICdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rJyxcbiAgbWRiOiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9tZGIvMi4wJyxcbiAgbWRxOiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTE1Ny8tMi9tZHEvMS4wJyxcbiAgbXNyOiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9tc3IvMi4wJyxcbiAgbXJzOiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9tcnMvMS4wJyxcbiAgbW1pOiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9tbWkvMS4wJyxcbiAgbXJsOiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9tcmwvMi4wJyxcbiAgbWR0OiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9tZHQvMi4wJyxcbiAgbXJkOiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9tcmQvMS4wJyxcbiAgbWRzOiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9tZHMvMi4wJyxcbiAgbXBjOiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9tcGMvMS4wJyxcbiAgbWNjOiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9tY2MvMS4wJyxcbiAgbWFjOiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9tYWMvMi4wJyxcbiAgbWNvOiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9tY28vMS4wJyxcbiAgbWRhOiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9tZGEvMS4wJyxcbiAgbWV4OiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9tZXgvMS4wJyxcbiAgZ2V4OiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9nZXgvMS4wJyxcbiAgZ2N4OiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9nY3gvMS4wJyxcbiAgbWFzOiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9tYXMvMS4wJyxcbiAgbXJpOiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9tcmkvMS4wJyxcbiAgY2l0OiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9jaXQvMi4wJyxcbiAgY2F0OiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9jYXQvMS4wJyxcbiAgbGFuOiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9sYW4vMS4wJyxcbiAgbXJjOiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9tcmMvMi4wJyxcbn1cblxuLyoqXG4gKiBAcGFyYW0gbmFtZSBGdWxsIG5hbWUgd2l0aCBuYW1lc3BhY2UsIGUuZy46IGdtZDpNRF9NZXRhZGF0YVxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRWxlbWVudChcbiAgbmFtZTogc3RyaW5nXG4pOiBDaGFpbmFibGVGdW5jdGlvbjx2b2lkLCBYbWxFbGVtZW50PiB7XG4gIHJldHVybiAoKSA9PiBuZXcgWG1sRWxlbWVudChuYW1lLCB7fSwgW10pXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhZGRBdHRyaWJ1dGUoXG4gIG5hbWU6IHN0cmluZyxcbiAgdmFsdWU6IHN0cmluZ1xuKTogQ2hhaW5hYmxlRnVuY3Rpb248WG1sRWxlbWVudCwgWG1sRWxlbWVudD4ge1xuICByZXR1cm4gKGVsZW1lbnQpID0+IHtcbiAgICBlbGVtZW50LmF0dHJpYnV0ZXNbbmFtZV0gPSB2YWx1ZVxuICAgIHJldHVybiBlbGVtZW50XG4gIH1cbn1cbmZ1bmN0aW9uIGdldFRyZWVSb290KGVsZW1lbnQ6IFhtbEVsZW1lbnQpOiBYbWxFbGVtZW50IHtcbiAgbGV0IHJvb3QgPSBlbGVtZW50XG4gIHdoaWxlIChyb290LnBhcmVudCBpbnN0YW5jZW9mIFhtbEVsZW1lbnQpIHtcbiAgICByb290ID0gcm9vdC5wYXJlbnRcbiAgfVxuICByZXR1cm4gcm9vdFxufVxuXG4vLyBzdGF5cyBvbiB0aGUgcGFyZW50IGVsZW1lbnRcbi8vIGlmIHRoZSBnaXZlbiBlbGVtZW50cyBhcmUgcGFydCBvZiBhIHN1YnRyZWUsIHdpbGwgYWRkIHRoZSByb290IG9mIHN1YnRyZWVcbi8vIHdpbGwgZmlsdGVyIG91dCBmYWxzeSBlbGVtZW50c1xuZXhwb3J0IGZ1bmN0aW9uIGFwcGVuZENoaWxkcmVuKFxuICAuLi5jaGlsZHJlbkZuczogQXJyYXk8Q2hhaW5hYmxlRnVuY3Rpb248dm9pZCwgWG1sRWxlbWVudD4+XG4pOiBDaGFpbmFibGVGdW5jdGlvbjxYbWxFbGVtZW50LCBYbWxFbGVtZW50PiB7XG4gIHJldHVybiAoZWxlbWVudCkgPT4ge1xuICAgIGlmICghZWxlbWVudCkgcmV0dXJuIG51bGxcbiAgICBjaGlsZHJlbkZucyA9IGNoaWxkcmVuRm5zLmZpbHRlcigoZm4pID0+IGZuKVxuICAgIGVsZW1lbnQuY2hpbGRyZW4ucHVzaCguLi5jaGlsZHJlbkZucy5tYXAoKGZuKSA9PiBmbigpKS5tYXAoZ2V0VHJlZVJvb3QpKVxuICAgIGVsZW1lbnQuY2hpbGRyZW4uZm9yRWFjaCgoZWwpID0+IChlbC5wYXJlbnQgPSBlbGVtZW50KSlcbiAgICByZXR1cm4gZWxlbWVudFxuICB9XG59XG5cbi8vIHN3aXRjaCB0byB0aGUgdGlwIG9mIHRoZSBzdWJ0cmVlXG5leHBvcnQgZnVuY3Rpb24gYXBwZW5kQ2hpbGRUcmVlKFxuICBjaGlsZHJlbkZuOiBDaGFpbmFibGVGdW5jdGlvbjx2b2lkLCBYbWxFbGVtZW50PlxuKTogQ2hhaW5hYmxlRnVuY3Rpb248WG1sRWxlbWVudCwgWG1sRWxlbWVudD4ge1xuICByZXR1cm4gKGVsZW1lbnQpID0+IHtcbiAgICBpZiAoIWVsZW1lbnQpIHJldHVybiBudWxsXG4gICAgY29uc3QgdHJlZVRpcCA9IGNoaWxkcmVuRm4oKVxuICAgIGNvbnN0IHRyZWVSb290ID0gZ2V0VHJlZVJvb3QodHJlZVRpcClcbiAgICBlbGVtZW50LmNoaWxkcmVuLnB1c2godHJlZVJvb3QpXG4gICAgdHJlZVJvb3QucGFyZW50ID0gZWxlbWVudFxuICAgIHJldHVybiB0cmVlVGlwXG4gIH1cbn1cblxuLy8gc3dpdGNoZXMgdG8gdGhlIGNoaWxkIGVsZW1lbnRcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDaGlsZChcbiAgY2hpbGROYW1lOiBzdHJpbmdcbik6IENoYWluYWJsZUZ1bmN0aW9uPFhtbEVsZW1lbnQsIFhtbEVsZW1lbnQ+IHtcbiAgcmV0dXJuIChlbGVtZW50KSA9PiB7XG4gICAgaWYgKCFlbGVtZW50KSByZXR1cm4gbnVsbFxuICAgIGNvbnN0IGNoaWxkID0gY3JlYXRlRWxlbWVudChjaGlsZE5hbWUpKClcbiAgICBlbGVtZW50LmNoaWxkcmVuLnB1c2goY2hpbGQpXG4gICAgY2hpbGQucGFyZW50ID0gZWxlbWVudFxuICAgIHJldHVybiBjaGlsZFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kQ2hpbGRPckNyZWF0ZShcbiAgbmFtZTogc3RyaW5nXG4pOiBDaGFpbmFibGVGdW5jdGlvbjxYbWxFbGVtZW50LCBYbWxFbGVtZW50PiB7XG4gIHJldHVybiBmYWxsYmFjayhmaW5kQ2hpbGRFbGVtZW50KG5hbWUsIGZhbHNlKSwgY3JlYXRlQ2hpbGQobmFtZSkpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kTmVzdGVkQ2hpbGRPckNyZWF0ZShcbiAgLi4uZWxlbWVudE5hbWVzOiBzdHJpbmdbXVxuKTogQ2hhaW5hYmxlRnVuY3Rpb248WG1sRWxlbWVudCwgWG1sRWxlbWVudD4ge1xuICByZXR1cm4gKGVsZW1lbnQpID0+IHtcbiAgICBsZXQgY3VycmVudCA9IGVsZW1lbnRcbiAgICBmb3IgKGNvbnN0IG5hbWUgb2YgZWxlbWVudE5hbWVzKSB7XG4gICAgICBjdXJyZW50ID0gZmluZENoaWxkT3JDcmVhdGUobmFtZSkoY3VycmVudClcbiAgICB9XG4gICAgcmV0dXJuIGN1cnJlbnRcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0VGV4dENvbnRlbnQoXG4gIHRleHQ6IHN0cmluZ1xuKTogQ2hhaW5hYmxlRnVuY3Rpb248WG1sRWxlbWVudCwgWG1sRWxlbWVudD4ge1xuICByZXR1cm4gKGVsZW1lbnQpID0+IHtcbiAgICBpZiAoIWVsZW1lbnQpIHJldHVybiBudWxsXG4gICAgY29uc3QgdGV4dEVsID0gZWxlbWVudC5jaGlsZHJlbi5maW5kKFxuICAgICAgKGVsKSA9PiBlbCBpbnN0YW5jZW9mIFhtbFRleHRcbiAgICApIGFzIFhtbFRleHRcbiAgICBpZiAoIXRleHRFbCkge1xuICAgICAgZWxlbWVudC5jaGlsZHJlbi5wdXNoKG5ldyBYbWxUZXh0KHRleHQpKVxuICAgIH0gZWxzZSB7XG4gICAgICB0ZXh0RWwudGV4dCA9IHRleHRcbiAgICB9XG4gICAgcmV0dXJuIGVsZW1lbnRcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlQWxsQ2hpbGRyZW4oKTogQ2hhaW5hYmxlRnVuY3Rpb248WG1sRWxlbWVudCwgWG1sRWxlbWVudD4ge1xuICByZXR1cm4gKGVsZW1lbnQpID0+IHtcbiAgICBpZiAoIWVsZW1lbnQpIHJldHVybiBudWxsXG4gICAgZWxlbWVudC5jaGlsZHJlbi5mb3JFYWNoKChlbCkgPT4gKGVsLnBhcmVudCA9IG51bGwpKVxuICAgIGVsZW1lbnQuY2hpbGRyZW4gPSBbXVxuICAgIHJldHVybiBlbGVtZW50XG4gIH1cbn1cblxuLy8gc3RheXMgb24gdGhlIHNhbWUgZWxlbWVudFxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUNoaWxkcmVuQnlOYW1lKFxuICBuYW1lOiBzdHJpbmdcbik6IENoYWluYWJsZUZ1bmN0aW9uPFhtbEVsZW1lbnQsIFhtbEVsZW1lbnQ+IHtcbiAgcmV0dXJuIChlbGVtZW50KSA9PiB7XG4gICAgaWYgKCFlbGVtZW50KSByZXR1cm4gbnVsbFxuICAgIGNvbnN0IHN0cmlwcGVkTmFtZSA9IHN0cmlwTmFtZXNwYWNlKG5hbWUpXG4gICAgY29uc3QgcmVtb3ZlZCA9IGVsZW1lbnQuY2hpbGRyZW4uZmlsdGVyKFxuICAgICAgKGNoaWxkKSA9PlxuICAgICAgICBjaGlsZCBpbnN0YW5jZW9mIFhtbEVsZW1lbnQgJiZcbiAgICAgICAgc3RyaXBOYW1lc3BhY2UoZ2V0RWxlbWVudE5hbWUoY2hpbGQpKSA9PT0gc3RyaXBwZWROYW1lXG4gICAgKVxuICAgIHJlbW92ZWQuZm9yRWFjaCgoZWwpID0+IChlbC5wYXJlbnQgPSBudWxsKSlcbiAgICBlbGVtZW50LmNoaWxkcmVuID0gZWxlbWVudC5jaGlsZHJlbi5maWx0ZXIoXG4gICAgICAoY2hpbGQpID0+IHJlbW92ZWQuaW5kZXhPZihjaGlsZCkgPT09IC0xXG4gICAgKVxuICAgIHJldHVybiBlbGVtZW50XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUNoaWxkcmVuKFxuICBjaGlsZHJlbkZuOiBDaGFpbmFibGVGdW5jdGlvbjxYbWxFbGVtZW50LCBBcnJheTxYbWxFbGVtZW50Pj5cbik6IENoYWluYWJsZUZ1bmN0aW9uPFhtbEVsZW1lbnQsIFhtbEVsZW1lbnQ+IHtcbiAgcmV0dXJuIChlbGVtZW50KSA9PiB7XG4gICAgY29uc3QgY2hpbGRyZW5Ub1JlbW92ZSA9IGNoaWxkcmVuRm4oZWxlbWVudClcbiAgICBjaGlsZHJlblRvUmVtb3ZlLmZvckVhY2goKGNoaWxkKSA9PiAoY2hpbGQucGFyZW50ID0gbnVsbCkpXG4gICAgZWxlbWVudC5jaGlsZHJlbiA9IGVsZW1lbnQuY2hpbGRyZW4uZmlsdGVyKFxuICAgICAgKGNoaWxkKSA9PlxuICAgICAgICBjaGlsZCBpbnN0YW5jZW9mIFhtbEVsZW1lbnQgJiYgY2hpbGRyZW5Ub1JlbW92ZS5pbmRleE9mKGNoaWxkKSA9PT0gLTFcbiAgICApXG4gICAgcmV0dXJuIGVsZW1lbnRcbiAgfVxufVxuXG4vKipcbiAqIFJlbmFtZXMgZWxlbWVudHMgaW4gdGhlIFhNTCB0cmVlIGFjY29yZGluZyB0byB0aGUgbWFwXG4gKiBFaXRoZXIgc3BlY2lmeSBhIGZ1bGwgZWxlbWVudCBuYW1lIGxpa2UgJ2dtZDpNRF9NZXRhZGF0YScgb3Igc2ltcGx5IGEgbmFtZXNwYWNlIGxpa2UgJ2dtZCdcbiAqIEBwYXJhbSByb290RWxlbWVudFxuICogQHBhcmFtIHJlcGxhY2VNYXBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbmFtZUVsZW1lbnRzKFxuICByb290RWxlbWVudDogWG1sRWxlbWVudCxcbiAgcmVwbGFjZU1hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxuKSB7XG4gIGZ1bmN0aW9uIGRvUmVwbGFjZShlbGVtZW50OiBYbWxFbGVtZW50KSB7XG4gICAgaWYgKGVsZW1lbnQubmFtZSBpbiByZXBsYWNlTWFwKSB7XG4gICAgICBlbGVtZW50Lm5hbWUgPSByZXBsYWNlTWFwW2VsZW1lbnQubmFtZV1cbiAgICB9IGVsc2UgaWYgKGVsZW1lbnQubmFtZSAmJiBnZXROYW1lc3BhY2UoZWxlbWVudC5uYW1lKSBpbiByZXBsYWNlTWFwKSB7XG4gICAgICBlbGVtZW50Lm5hbWUgPSBgJHtcbiAgICAgICAgcmVwbGFjZU1hcFtnZXROYW1lc3BhY2UoZWxlbWVudC5uYW1lKV1cbiAgICAgIH06JHtzdHJpcE5hbWVzcGFjZShlbGVtZW50Lm5hbWUpfWBcbiAgICB9XG4gICAgaWYgKGVsZW1lbnQuY2hpbGRyZW4pIHtcbiAgICAgIGVsZW1lbnQuY2hpbGRyZW4uZm9yRWFjaChkb1JlcGxhY2UpXG4gICAgfVxuICB9XG4gIGRvUmVwbGFjZShyb290RWxlbWVudClcbiAgcmV0dXJuIHJvb3RFbGVtZW50XG59XG4iXX0=
369
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieG1sLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hcGkvbWV0YWRhdGEtY29udmVydGVyL3NyYy9saWIveG1sLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxRQUFRLEVBRVIsV0FBVyxFQUNYLFVBQVUsRUFDVixPQUFPLEdBQ1IsTUFBTSxtQkFBbUIsQ0FBQTtBQUMxQixPQUFPLEVBQXFCLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBRTlELE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFFM0QsTUFBTSxPQUFPLGFBQWMsU0FBUSxLQUFLO0lBQ3RDLFlBQVksT0FBTztRQUNqQixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDaEIsQ0FBQztDQUNGO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLFNBQWlCO0lBQzlDLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQTtJQUNkLElBQUk7UUFDRixHQUFHLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFBO0tBQzFCO0lBQUMsT0FBTyxDQUFDLEVBQUU7UUFDVixNQUFNLElBQUksYUFBYSxDQUFDLENBQUMsWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0tBQzVEO0lBQ0QsT0FBTyxHQUFHLENBQUE7QUFDWixDQUFDO0FBRUQsTUFBTSxVQUFVLGNBQWMsQ0FBQyxNQUFrQjtJQUMvQyxNQUFNLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFBO0lBRTNDLFNBQVMsd0JBQXdCLENBQUMsSUFBWTtRQUM1QyxNQUFNLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUN4QyxJQUFJLFNBQVMsS0FBSyxPQUFPLElBQUks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QUMsSUFBSSxJQUFJLFVBQVUsRUFBRTtZQUM5QixPQUFPLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUE7U0FDeEM7YUFBTSxJQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxVQUFVLEVBQUU7WUFDbkUsT0FBTyxDQUFDLElBQUksR0FBRyxHQUNiLFVBQVUsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUN2QyxJQUFJLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQTtTQUNuQztRQUNELElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRTtZQUNwQixPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQTtTQUNwQztJQUNILENBQUM7SUFDRCxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDdEIsT0FBTyxXQUFXLENBQUE7QUFDcEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIHBhcnNlWG1sLFxuICBYbWxDb21tZW50LFxuICBYbWxEb2N1bWVudCxcbiAgWG1sRWxlbWVudCxcbiAgWG1sVGV4dCxcbn0gZnJvbSAnQHJncm92ZS9wYXJzZS14bWwnXG5pbXBvcnQgeyBDaGFpbmFibGVGdW5jdGlvbiwgZmFsbGJhY2sgfSBmcm9tICcuL2Z1bmN0aW9uLXV0aWxzJ1xuXG5leHBvcnQgeyBYbWxEb2N1bWVudCwgWG1sRWxlbWVudCB9IGZyb20gJ0ByZ3JvdmUvcGFyc2UteG1sJ1xuXG5leHBvcnQgY2xhc3MgWG1sUGFyc2VFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZSkge1xuICAgIHN1cGVyKG1lc3NhZ2UpXG4gIH1cbn1cblxuLyoqXG4gKiBQYXJzZXMgYSBYTUwgZG9jdW1lbnQgYXMgc3RyaW5nLCByZXR1cm4gYSBkb2N1bWVudCBvYmplY3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlWG1sU3RyaW5nKHhtbFN0cmluZzogc3RyaW5nKTogWG1sRG9jdW1lbnQge1xuICBsZXQgZG9jID0gbnVsbFxuICB0cnkge1xuICAgIGRvYyA9IHBhcnNlWG1sKHhtbFN0cmluZylcbiAgfSBjYXRjaCAoZSkge1xuICAgIHRocm93IG5ldyBYbWxQYXJzZUVycm9yKGUgaW5zdGFuY2VvZiBFcnJvciA/IGUubWVzc2FnZSA6IGUpXG4gIH1cbiAgcmV0dXJuIGRvY1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRG9jdW1lbnQocm9vdEVsOiBYbWxFbGVtZW50KTogWG1sRG9jdW1lbnQge1xuICByb290RWwuYXR0cmlidXRlcyA9IHJvb3RFbC5hdHRyaWJ1dGVzIHx8IHt9XG5cbiAgZnVuY3Rpb24gY29sbGVjdE5hbWVzcGFjZUZyb21OYW1lKG5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IG5hbWVzcGFjZSA9IGV4dHJhY3ROYW1lc3BhY2UobmFtZSlcbiAgICBpZiAobmFtZXNwYWNlID09PSAneG1sbnMnIHx8IG5hbWVzcGFjZSA9PT0gbnVsbCkgcmV0dXJuXG4gICAgaWYgKHJvb3RFbC5hdHRyaWJ1dGVzW2B4bWxuczoke25hbWVzcGFjZX1gXSkgcmV0dXJuXG4gICAgaWYgKCFOQU1FU1BBQ0VTW25hbWVzcGFjZV0pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTm8ga25vd24gVVJJIGZvciBuYW1lc3BhY2UgJHtuYW1lc3BhY2V9YClcbiAgICB9XG4gICAgcm9vdEVsLmF0dHJpYnV0ZXNbYHhtbG5zOiR7bmFtZXNwYWNlfWBdID0gTkFNRVNQQUNFU1tuYW1lc3BhY2VdXG4gIH1cblxuICBmdW5jdGlvbiBjb2xsZWN0TmFtZXNwYWNlcyhlbDogWG1sRWxlbWVudCkge1xuICAgIGNvbGxlY3ROYW1lc3BhY2VGcm9tTmFtZShlbC5uYW1lKVxuICAgIGZvciAoY29uc3QgYXR0ciBpbiBlbC5hdHRyaWJ1dGVzKSB7XG4gICAgICBjb2xsZWN0TmFtZXNwYWNlRnJvbU5hbWUoYXR0cilcbiAgICB9XG4gICAgY29uc3QgY2hpbGRyZW4gPSBhbGxDaGlsZHJlbkVsZW1lbnQoZWwpXG4gICAgY2hpbGRyZW4uZm9yRWFjaChjb2xsZWN0TmFtZXNwYWNlcylcbiAgfVxuXG4gIGNvbGxlY3ROYW1lc3BhY2VzKHJvb3RFbClcbiAgcmV0dXJuIG5ldyBYbWxEb2N1bWVudChbcm9vdEVsXSlcbn1cblxuLyoqXG4gKiBXaWxsIGRvIG5vdGhpbmcgaWYgbm8gbmFtZXNwYWNlIHByZXNlbnRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmlwTmFtZXNwYWNlKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGNvbG9uID0gbmFtZS5pbmRleE9mKCc6JylcbiAgcmV0dXJuIGNvbG9uID4gLTEgPyBuYW1lLnN1YnN0cmluZyhjb2xvbiArIDEpIDogbmFtZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TmFtZXNwYWNlKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGNvbG9uID0gbmFtZS5pbmRleE9mKCc6JylcbiAgcmV0dXJuIGNvbG9uID4gLTEgPyBuYW1lLnN1YnN0cmluZygwLCBjb2xvbikgOiAnJ1xufVxuXG5mdW5jdGlvbiBnZXRFbGVtZW50TmFtZShlbGVtZW50OiBYbWxFbGVtZW50KTogc3RyaW5nIHtcbiAgcmV0dXJuIGVsZW1lbnQubmFtZSB8fCAnJ1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Um9vdEVsZW1lbnQoeG1sRG9jOiBYbWxEb2N1bWVudCk6IFhtbEVsZW1lbnQge1xuICByZXR1cm4geG1sRG9jLmNoaWxkcmVuLmZpbmQoKGVsKSA9PiBlbCBpbnN0YW5jZW9mIFhtbEVsZW1lbnQpIGFzIFhtbEVsZW1lbnRcbn1cblxuLyoqXG4gKiBXaWxsIHJldHVybiBhbGwgbWF0Y2hpbmcgZWxlbWVudHMgKG5hbWVzcGFjZSB3aWxsIGJlIGlnbm9yZWQpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kQ2hpbGRyZW5FbGVtZW50KFxuICBuYW1lOiBzdHJpbmcsXG4gIG5lc3RlZCA9IHRydWVcbik6IENoYWluYWJsZUZ1bmN0aW9uPFhtbEVsZW1lbnQsIEFycmF5PFhtbEVsZW1lbnQ+PiB7XG4gIHJldHVybiAoZWwpID0+IHtcbiAgICBjb25zdCBzdHJpcHBlZE5hbWUgPSBzdHJpcE5hbWVzcGFjZShuYW1lKVxuICAgIGZ1bmN0aW9uIHJlZHVjZXIocHJldiwgY3Vycikge1xuICAgICAgaWYgKHN0cmlwTmFtZXNwYWNlKGdldEVsZW1lbnROYW1lKGN1cnIpKSA9PT0gc3RyaXBwZWROYW1lKSB7XG4gICAgICAgIHByZXYucHVzaChjdXJyKVxuICAgICAgfVxuXG4gICAgICBpZiAobmVzdGVkICYmIEFycmF5LmlzQXJyYXkoY3Vyci5jaGlsZHJlbikpIHtcbiAgICAgICAgcmV0dXJuIFsuLi5wcmV2LCAuLi5jdXJyLmNoaWxkcmVuLnJlZHVjZShyZWR1Y2VyLCBbXSldXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gcHJldlxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBlbCAmJiBBcnJheS5pc0FycmF5KGVsLmNoaWxkcmVuKVxuICAgICAgPyBlbC5jaGlsZHJlbi5yZWR1Y2UocmVkdWNlciwgW10pXG4gICAgICA6IFtdXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmRDaGlsZEVsZW1lbnQoXG4gIG5hbWU6IHN0cmluZyxcbiAgbmVzdGVkID0gdHJ1ZVxuKTogQ2hhaW5hYmxlRnVuY3Rpb248WG1sRWxlbWVudCwgWG1sRWxlbWVudD4ge1xuICByZXR1cm4gKGVsKSA9PiBmaW5kQ2hpbGRyZW5FbGVtZW50KG5hbWUsIG5lc3RlZCkoZWwpWzBdIHx8IG51bGxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFsbENoaWxkcmVuRWxlbWVudChlbGVtZW50OiBYbWxFbGVtZW50KTogQXJyYXk8WG1sRWxlbWVudD4ge1xuICBpZiAoIWVsZW1lbnQgfHwgIUFycmF5LmlzQXJyYXkoZWxlbWVudC5jaGlsZHJlbikpIHJldHVybiBbXVxuICByZXR1cm4gW1xuICAgIC4uLmVsZW1lbnQuY2hpbGRyZW4uZmlsdGVyKChlbCkgPT4gZWwgaW5zdGFuY2VvZiBYbWxFbGVtZW50KSxcbiAgXSBhcyBBcnJheTxYbWxFbGVtZW50PlxufVxuXG5leHBvcnQgZnVuY3Rpb24gZmlyc3RDaGlsZEVsZW1lbnQoZWxlbWVudDogWG1sRWxlbWVudCk6IFhtbEVsZW1lbnQge1xuICByZXR1cm4gYWxsQ2hpbGRyZW5FbGVtZW50KGVsZW1lbnQpWzBdID8/IG51bGxcbn1cblxuLyoqXG4gKiBXaWxsIHJldHVybiBhbGwgbWF0Y2hpbmcgZWxlbWVudHMgbmVzdGVkIGFjY29yZGluZyB0byB0aGUgZ2l2ZW5cbiAqIG5hbWVzIChzaW1pbGFyIHRvIGEgcGF0aCksIHN0YXJ0aW5nIGZvcm0gdGhlIGlucHV0IGVsZW1lbnQ7XG4gKiByZXR1cm5zIGFuIGVtcHR5IGFycmF5IGlmIG5vIG1hdGNoaW5nIGVsZW1lbnRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmROZXN0ZWRFbGVtZW50cyhcbiAgLi4uZWxlbWVudE5hbWVzOiBzdHJpbmdbXVxuKTogQ2hhaW5hYmxlRnVuY3Rpb248WG1sRWxlbWVudCwgQXJyYXk8WG1sRWxlbWVudD4+IHtcbiAgcmV0dXJuIChlbCkgPT4ge1xuICAgIGZ1bmN0aW9uIGxvb2tGb3IoZWxOYW1lSW5kZXg6IG51bWJlcikge1xuICAgICAgY29uc3Qgc3RyaXBwZWROYW1lID0gc3RyaXBOYW1lc3BhY2UoZWxlbWVudE5hbWVzW2VsTmFtZUluZGV4XSlcbiAgICAgIHJldHVybiAocHJldiwgY3VycikgPT4ge1xuICAgICAgICBpZiAoc3RyaXBOYW1lc3BhY2UoZ2V0RWxlbWVudE5hbWUoY3VycikpICE9PSBzdHJpcHBlZE5hbWUpIHtcbiAgICAgICAgICByZXR1cm4gcHJldlxuICAgICAgICB9XG4gICAgICAgIGlmIChlbE5hbWVJbmRleCA9PT0gZWxlbWVudE5hbWVzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICByZXR1cm4gWy4uLnByZXYsIGN1cnJdXG4gICAgICAgIH1cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY3Vyci5jaGlsZHJlbikpIHtcbiAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgLi4ucHJldixcbiAgICAgICAgICAgIC4uLmN1cnIuY2hpbGRyZW4ucmVkdWNlKGxvb2tGb3IoZWxOYW1lSW5kZXggKyAxKSwgW10pLFxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcHJldlxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBlbCAmJiBBcnJheS5pc0FycmF5KGVsLmNoaWxkcmVuKVxuICAgICAgPyBlbC5jaGlsZHJlbi5yZWR1Y2UobG9va0ZvcigwKSwgW10pXG4gICAgICA6IFtdXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmROZXN0ZWRFbGVtZW50KFxuICAuLi5lbGVtZW50TmFtZXM6IHN0cmluZ1tdXG4pOiBDaGFpbmFibGVGdW5jdGlvbjxYbWxFbGVtZW50LCBYbWxFbGVtZW50PiB7XG4gIHJldHVybiAoZWwpID0+IHtcbiAgICBjb25zdCBmb3VuZCA9IGZpbmROZXN0ZWRFbGVtZW50cyguLi5lbGVtZW50TmFtZXMpKGVsKVxuICAgIHJldHVybiBmb3VuZC5sZW5ndGggPyBmb3VuZFswXSA6IG51bGxcbiAgfVxufVxuXG4vLyBXaWxsIGxvb2sgdGhyb3VnaCBhbGwgdGhlIHBhcmVudHM7IHJldHVybnMgbnVsbCBpZiBubyBtYXRjaGluZyBwYXJlbnQgZm91bmQuXG5leHBvcnQgZnVuY3Rpb24gZmluZFBhcmVudChcbiAgcGFyZW50TmFtZTogc3RyaW5nXG4pOiBDaGFpbmFibGVGdW5jdGlvbjxYbWxFbGVtZW50LCBYbWxFbGVtZW50PiB7XG4gIHJldHVybiAoZWwpID0+IHtcbiAgICBsZXQgcGFyZW50OiBYbWxFbGVtZW50IHwgWG1sRG9jdW1lbnQgPSBlbC5wYXJlbnQgYXMgWG1sRWxlbWVudFxuICAgIHdoaWxlIChwYXJlbnQgJiYgcGFyZW50IGluc3RhbmNlb2YgWG1sRWxlbWVudCkge1xuICAgICAgaWYgKHN0cmlwTmFtZXNwYWNlKGdldEVsZW1lbnROYW1lKHBhcmVudCkpID09PSBzdHJpcE5hbWVzcGFjZShwYXJlbnROYW1lKSlcbiAgICAgICAgcmV0dXJuIHBhcmVudFxuICAgICAgcGFyZW50ID0gcGFyZW50LnBhcmVudFxuICAgIH1cbiAgICByZXR1cm4gbnVsbFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkVGV4dCgpOiBDaGFpbmFibGVGdW5jdGlvbjxYbWxFbGVtZW50LCBzdHJpbmc+IHtcbiAgcmV0dXJuIChlbCkgPT4ge1xuICAgIGlmICghZWwpIHJldHVybiBudWxsXG4gICAgY29uc3QgdGV4dE5vZGUgPSBBcnJheS5pc0FycmF5KGVsLmNoaWxkcmVuKVxuICAgICAgPyAoZWwuY2hpbGRyZW4uZmluZCgobm9kZSkgPT4gbm9kZS50eXBlID09PSAndGV4dCcpIGFzIFhtbFRleHQpXG4gICAgICA6IG51bGxcbiAgICByZXR1cm4gdGV4dE5vZGUgPyB0ZXh0Tm9kZS50ZXh0IDogJydcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZEF0dHJpYnV0ZShcbiAgYXR0ck5hbWU6IHN0cmluZ1xuKTogQ2hhaW5hYmxlRnVuY3Rpb248WG1sRWxlbWVudCwgc3RyaW5nPiB7XG4gIHJldHVybiAoZWwpID0+IChlbCAmJiBlbC5hdHRyaWJ1dGVzW2F0dHJOYW1lXSkgfHwgbnVsbFxufVxuXG5leHBvcnQgZnVuY3Rpb24geG1sVG9TdHJpbmcoXG4gIGVsOiBYbWxFbGVtZW50IHwgWG1sVGV4dCB8IFhtbENvbW1lbnQgfCBYbWxEb2N1bWVudCxcbiAgaW5kZW50YXRpb25MZXZlbCA9IDBcbikge1xuICBpZiAoZWwgaW5zdGFuY2VvZiBYbWxEb2N1bWVudClcbiAgICByZXR1cm4gYDw/eG1sIHZlcnNpb249XCIxLjBcIiBlbmNvZGluZz1cIlVURi04XCI/PiR7eG1sVG9TdHJpbmcoXG4gICAgICBlbC5jaGlsZHJlblswXVxuICAgICl9YFxuICBpZiAoZWwgaW5zdGFuY2VvZiBYbWxUZXh0KSB7XG4gICAgY29uc3QgdGV4dCA9IGVsLnRleHRcbiAgICBjb25zdCBpc0VtcHR5ID0gIXRleHQgfHwgdGV4dC5yZXBsYWNlKC9eXFxzK3xcXHMrJC9nLCAnJykgPT09ICcnXG4gICAgaWYgKGlzRW1wdHkpIHJldHVybiAnJ1xuICAgIHJldHVybiB0ZXh0XG4gICAgICAucmVwbGFjZSgvJi9nLCAnJmFtcDsnKVxuICAgICAgLnJlcGxhY2UoLzwvZywgJyZsdDsnKVxuICAgICAgLnJlcGxhY2UoLz4vZywgJyZndDsnKVxuICB9XG4gIGlmICghKGVsIGluc3RhbmNlb2YgWG1sRWxlbWVudCkpIHJldHVybiBgPCEtLSB1bmtub3duIC0tPmBcblxuICBjb25zdCBwYWRkaW5nID0gJyAgICAnLnJlcGVhdChpbmRlbnRhdGlvbkxldmVsKVxuICBjb25zdCBjaGlsZHJlbiA9IEFycmF5LmlzQXJyYXkoZWwuY2hpbGRyZW4pXG4gICAgPyBlbC5jaGlsZHJlblxuICAgICAgICAubWFwKChlbCkgPT4geG1sVG9TdHJpbmcoZWwsIGluZGVudGF0aW9uTGV2ZWwgKyAxKSlcbiAgICAgICAgLmZpbHRlcigoZWwpID0+IGVsICE9PSAnJylcbiAgICAgICAgLm1hcCgoZWxTdHJpbmcsIGluZGV4LCBhcnJheSkgPT5cbiAgICAgICAgICBpbmRleCA8IGFycmF5Lmxlbmd0aCAtIDEgPyBlbFN0cmluZy5yZXBsYWNlKC9cXG5cXHMqJC9nLCAnJykgOiBlbFN0cmluZ1xuICAgICAgICApXG4gICAgICAgIC5qb2luKCcnKVxuICAgIDogJydcbiAgY29uc3QgYXR0cnMgPSBPYmplY3Qua2V5cyhlbC5hdHRyaWJ1dGVzKS5yZWR1Y2UoXG4gICAgKHByZXYsIGN1cnIpID0+IHByZXYgKyBgICR7Y3Vycn09XCIke2VsLmF0dHJpYnV0ZXNbY3Vycl19XCJgLFxuICAgICcnXG4gIClcbiAgY29uc3QgcGFyZW50UGFkZGluZyA9ICcgICAgJy5yZXBlYXQoTWF0aC5tYXgoMCwgaW5kZW50YXRpb25MZXZlbCAtIDEpKVxuICBpZiAoY2hpbGRyZW4gPT09ICcnKSB7XG4gICAgcmV0dXJuIGBcbiR7cGFkZGluZ308JHtlbC5uYW1lfSR7YXR0cnN9Lz5cbiR7cGFyZW50UGFkZGluZ31gXG4gIH1cblxuICByZXR1cm4gYFxuJHtwYWRkaW5nfTwke2VsLm5hbWV9JHthdHRyc30+JHtjaGlsZHJlbn08LyR7ZWwubmFtZX0+XG4ke3BhcmVudFBhZGRpbmd9YFxufVxuXG4vKipcbiAqIEBwYXJhbSBuYW1lXG4gKiBAcmV0dXJucyBuYW1lc3BhY2UsIG51bGwgaWYgbm9uZSBmb3VuZFxuICovXG5mdW5jdGlvbiBleHRyYWN0TmFtZXNwYWNlKG5hbWU6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICBjb25zdCBjb2xvbiA9IG5hbWUuaW5kZXhPZignOicpXG4gIHJldHVybiBjb2xvbiA+IC0xID8gbmFtZS5zdWJzdHJpbmcoMCwgY29sb24pIDogbnVsbFxufVxuXG5jb25zdCBOQU1FU1BBQ0VTID0ge1xuICBnbWQ6ICdodHRwOi8vd3d3Lmlzb3RjMjExLm9yZy8yMDA1L2dtZCcsXG4gIGdjbzogJ2h0dHA6Ly93d3cuaXNvdGMyMTEub3JnLzIwMDUvZ2NvJyxcbiAgZ2ZjOiAnaHR0cDovL3d3dy5pc290YzIxMS5vcmcvMjAwNS9nZmMnLFxuICBnbWw6ICdodHRwOi8vd3d3Lm9wZW5naXMubmV0L2dtbC8zLjInLFxuICB4c2k6ICdodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZScsXG4gIHNydjogJ2h0dHA6Ly93d3cuaXNvdGMyMTEub3JnLzIwMDUvc3J2JyxcbiAgZ214OiAnaHR0cDovL3d3dy5pc290YzIxMS5vcmcvMjAwNS9nbXgnLFxuICBndHM6ICdodHRwOi8vd3d3Lmlzb3RjMjExLm9yZy8yMDA1L2d0cycsXG4gIGdzcjogJ2h0dHA6Ly93d3cuaXNvdGMyMTEub3JnLzIwMDUvZ3NyJyxcbiAgZ21pOiAnaHR0cDovL3d3dy5pc290YzIxMS5vcmcvMjAwNS9nbWknLFxuICB4bGluazogJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsnLFxuICBtZGI6ICdodHRwOi8vc3RhbmRhcmRzLmlzby5vcmcvaXNvLzE5MTE1Ly0zL21kYi8yLjAnLFxuICBtZHE6ICdodHRwOi8vc3RhbmRhcmRzLmlzby5vcmcvaXNvLzE5MTU3Ly0yL21kcS8xLjAnLFxuICBtc3I6ICdodHRwOi8vc3RhbmRhcmRzLmlzby5vcmcvaXNvLzE5MTE1Ly0zL21zci8yLjAnLFxuICBtcnM6ICdodHRwOi8vc3RhbmRhcmRzLmlzby5vcmcvaXNvLzE5MTE1Ly0zL21ycy8xLjAnLFxuICBtbWk6ICdodHRwOi8vc3RhbmRhcmRzLmlzby5vcmcvaXNvLzE5MTE1Ly0zL21taS8xLjAnLFxuICBtcmw6ICdodHRwOi8vc3RhbmRhcmRzLmlzby5vcmcvaXNvLzE5MTE1Ly0zL21ybC8yLjAnLFxuICBtZHQ6ICdodHRwOi8vc3RhbmRhcmRzLmlzby5vcmcvaXNvLzE5MTE1Ly0zL21kdC8yLjAnLFxuICBtcmQ6ICdodHRwOi8vc3RhbmRhcmRzLmlzby5vcmcvaXNvLzE5MTE1Ly0zL21yZC8xLjAnLFxuICBtZHM6ICdodHRwOi8vc3RhbmRhcmRzLmlzby5vcmcvaXNvLzE5MTE1Ly0zL21kcy8yLjAnLFxuICBtcGM6ICdodHRwOi8vc3RhbmRhcmRzLmlzby5vcmcvaXNvLzE5MTE1Ly0zL21wYy8xLjAnLFxuICBtY2M6ICdodHRwOi8vc3RhbmRhcmRzLmlzby5vcmcvaXNvLzE5MTE1Ly0zL21jYy8xLjAnLFxuICBtYWM6ICdodHRwOi8vc3RhbmRhcmRzLmlzby5vcmcvaXNvLzE5MTE1Ly0zL21hYy8yLjAnLFxuICBtY286ICdodHRwOi8vc3RhbmRhcmRzLmlzby5vcmcvaXNvLzE5MTE1Ly0zL21jby8xLjAnLFxuICBtZGE6ICdodHRwOi8vc3RhbmRhcmRzLmlzby5vcmcvaXNvLzE5MTE1Ly0zL21kYS8xLjAnLFxuICBtZXg6ICdodHRwOi8vc3RhbmRhcmRzLmlzby5vcmcvaXNvLzE5MTE1Ly0zL21leC8xLjAnLFxuICBnZXg6ICdodHRwOi8vc3RhbmRhcmRzLmlzby5vcmcvaXNvLzE5MTE1Ly0zL2dleC8xLjAnLFxuICBnY3g6ICdodHRwOi8vc3RhbmRhcmRzLmlzby5vcmcvaXNvLzE5MTE1Ly0zL2djeC8xLjAnLFxuICBtYXM6ICdodHRwOi8vc3RhbmRhcmRzLmlzby5vcmcvaXNvLzE5MTE1Ly0zL21hcy8xLjAnLFxuICBtcmk6ICdodHRwOi8vc3RhbmRhcmRzLmlzby5vcmcvaXNvLzE5MTE1Ly0zL21yaS8xLjAnLFxuICBjaXQ6ICdodHRwOi8vc3RhbmRhcmRzLmlzby5vcmcvaXNvLzE5MTE1Ly0zL2NpdC8yLjAnLFxuICBjYXQ6ICdodHRwOi8vc3RhbmRhcmRzLmlzby5vcmcvaXNvLzE5MTE1Ly0zL2NhdC8xLjAnLFxuICBsYW46ICdodHRwOi8vc3RhbmRhcmRzLmlzby5vcmcvaXNvLzE5MTE1Ly0zL2xhbi8xLjAnLFxuICBtcmM6ICdodHRwOi8vc3RhbmRhcmRzLmlzby5vcmcvaXNvLzE5MTE1Ly0zL21yYy8yLjAnLFxufVxuXG4vKipcbiAqIEBwYXJhbSBuYW1lIEZ1bGwgbmFtZSB3aXRoIG5hbWVzcGFjZSwgZS5nLjogZ21kOk1EX01ldGFkYXRhXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFbGVtZW50KFxuICBuYW1lOiBzdHJpbmdcbik6IENoYWluYWJsZUZ1bmN0aW9uPHZvaWQsIFhtbEVsZW1lbnQ+IHtcbiAgcmV0dXJuICgpID0+IG5ldyBYbWxFbGVtZW50KG5hbWUsIHt9LCBbXSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZEF0dHJpYnV0ZShcbiAgbmFtZTogc3RyaW5nLFxuICB2YWx1ZTogc3RyaW5nXG4pOiBDaGFpbmFibGVGdW5jdGlvbjxYbWxFbGVtZW50LCBYbWxFbGVtZW50PiB7XG4gIHJldHVybiAoZWxlbWVudCkgPT4ge1xuICAgIGVsZW1lbnQuYXR0cmlidXRlc1tuYW1lXSA9IHZhbHVlXG4gICAgcmV0dXJuIGVsZW1lbnRcbiAgfVxufVxuZnVuY3Rpb24gZ2V0VHJlZVJvb3QoZWxlbWVudDogWG1sRWxlbWVudCk6IFhtbEVsZW1lbnQge1xuICBsZXQgcm9vdCA9IGVsZW1lbnRcbiAgd2hpbGUgKHJvb3QucGFyZW50IGluc3RhbmNlb2YgWG1sRWxlbWVudCkge1xuICAgIHJvb3QgPSByb290LnBhcmVudFxuICB9XG4gIHJldHVybiByb290XG59XG5cbi8vIHN0YXlzIG9uIHRoZSBwYXJlbnQgZWxlbWVudFxuLy8gaWYgdGhlIGdpdmVuIGVsZW1lbnRzIGFyZSBwYXJ0IG9mIGEgc3VidHJlZSwgd2lsbCBhZGQgdGhlIHJvb3Qgb2Ygc3VidHJlZVxuLy8gd2lsbCBmaWx0ZXIgb3V0IGZhbHN5IGVsZW1lbnRzXG5leHBvcnQgZnVuY3Rpb24gYXBwZW5kQ2hpbGRyZW4oXG4gIC4uLmNoaWxkcmVuRm5zOiBBcnJheTxDaGFpbmFibGVGdW5jdGlvbjx2b2lkLCBYbWxFbGVtZW50Pj5cbik6IENoYWluYWJsZUZ1bmN0aW9uPFhtbEVsZW1lbnQsIFhtbEVsZW1lbnQ+IHtcbiAgcmV0dXJuIChlbGVtZW50KSA9PiB7XG4gICAgaWYgKCFlbGVtZW50KSByZXR1cm4gbnVsbFxuICAgIGNoaWxkcmVuRm5zID0gY2hpbGRyZW5GbnMuZmlsdGVyKChmbikgPT4gZm4pXG4gICAgZWxlbWVudC5jaGlsZHJlbi5wdXNoKC4uLmNoaWxkcmVuRm5zLm1hcCgoZm4pID0+IGZuKCkpLm1hcChnZXRUcmVlUm9vdCkpXG4gICAgZWxlbWVudC5jaGlsZHJlbi5mb3JFYWNoKChlbCkgPT4gKGVsLnBhcmVudCA9IGVsZW1lbnQpKVxuICAgIHJldHVybiBlbGVtZW50XG4gIH1cbn1cblxuLy8gc3dpdGNoIHRvIHRoZSB0aXAgb2YgdGhlIHN1YnRyZWVcbmV4cG9ydCBmdW5jdGlvbiBhcHBlbmRDaGlsZFRyZWUoXG4gIGNoaWxkcmVuRm46IENoYWluYWJsZUZ1bmN0aW9uPHZvaWQsIFhtbEVsZW1lbnQ+XG4pOiBDaGFpbmFibGVGdW5jdGlvbjxYbWxFbGVtZW50LCBYbWxFbGVtZW50PiB7XG4gIHJldHVybiAoZWxlbWVudCkgPT4ge1xuICAgIGlmICghZWxlbWVudCkgcmV0dXJuIG51bGxcbiAgICBjb25zdCB0cmVlVGlwID0gY2hpbGRyZW5GbigpXG4gICAgY29uc3QgdHJlZVJvb3QgPSBnZXRUcmVlUm9vdCh0cmVlVGlwKVxuICAgIGVsZW1lbnQuY2hpbGRyZW4ucHVzaCh0cmVlUm9vdClcbiAgICB0cmVlUm9vdC5wYXJlbnQgPSBlbGVtZW50XG4gICAgcmV0dXJuIHRyZWVUaXBcbiAgfVxufVxuXG4vLyBzd2l0Y2hlcyB0byB0aGUgY2hpbGQgZWxlbWVudFxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNoaWxkKFxuICBjaGlsZE5hbWU6IHN0cmluZ1xuKTogQ2hhaW5hYmxlRnVuY3Rpb248WG1sRWxlbWVudCwgWG1sRWxlbWVudD4ge1xuICByZXR1cm4gKGVsZW1lbnQpID0+IHtcbiAgICBpZiAoIWVsZW1lbnQpIHJldHVybiBudWxsXG4gICAgY29uc3QgY2hpbGQgPSBjcmVhdGVFbGVtZW50KGNoaWxkTmFtZSkoKVxuICAgIGVsZW1lbnQuY2hpbGRyZW4ucHVzaChjaGlsZClcbiAgICBjaGlsZC5wYXJlbnQgPSBlbGVtZW50XG4gICAgcmV0dXJuIGNoaWxkXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmRDaGlsZE9yQ3JlYXRlKFxuICBuYW1lOiBzdHJpbmdcbik6IENoYWluYWJsZUZ1bmN0aW9uPFhtbEVsZW1lbnQsIFhtbEVsZW1lbnQ+IHtcbiAgcmV0dXJuIGZhbGxiYWNrKGZpbmRDaGlsZEVsZW1lbnQobmFtZSwgZmFsc2UpLCBjcmVhdGVDaGlsZChuYW1lKSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmROZXN0ZWRDaGlsZE9yQ3JlYXRlKFxuICAuLi5lbGVtZW50TmFtZXM6IHN0cmluZ1tdXG4pOiBDaGFpbmFibGVGdW5jdGlvbjxYbWxFbGVtZW50LCBYbWxFbGVtZW50PiB7XG4gIHJldHVybiAoZWxlbWVudCkgPT4ge1xuICAgIGxldCBjdXJyZW50ID0gZWxlbWVudFxuICAgIGZvciAoY29uc3QgbmFtZSBvZiBlbGVtZW50TmFtZXMpIHtcbiAgICAgIGN1cnJlbnQgPSBmaW5kQ2hpbGRPckNyZWF0ZShuYW1lKShjdXJyZW50KVxuICAgIH1cbiAgICByZXR1cm4gY3VycmVudFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRUZXh0Q29udGVudChcbiAgdGV4dDogc3RyaW5nXG4pOiBDaGFpbmFibGVGdW5jdGlvbjxYbWxFbGVtZW50LCBYbWxFbGVtZW50PiB7XG4gIHJldHVybiAoZWxlbWVudCkgPT4ge1xuICAgIGlmICghZWxlbWVudCkgcmV0dXJuIG51bGxcbiAgICBjb25zdCB0ZXh0RWwgPSBlbGVtZW50LmNoaWxkcmVuLmZpbmQoXG4gICAgICAoZWwpID0+IGVsIGluc3RhbmNlb2YgWG1sVGV4dFxuICAgICkgYXMgWG1sVGV4dFxuICAgIGlmICghdGV4dEVsKSB7XG4gICAgICBlbGVtZW50LmNoaWxkcmVuLnB1c2gobmV3IFhtbFRleHQodGV4dCkpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRleHRFbC50ZXh0ID0gdGV4dFxuICAgIH1cbiAgICByZXR1cm4gZWxlbWVudFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVBbGxDaGlsZHJlbigpOiBDaGFpbmFibGVGdW5jdGlvbjxYbWxFbGVtZW50LCBYbWxFbGVtZW50PiB7XG4gIHJldHVybiAoZWxlbWVudCkgPT4ge1xuICAgIGlmICghZWxlbWVudCkgcmV0dXJuIG51bGxcbiAgICBlbGVtZW50LmNoaWxkcmVuLmZvckVhY2goKGVsKSA9PiAoZWwucGFyZW50ID0gbnVsbCkpXG4gICAgZWxlbWVudC5jaGlsZHJlbiA9IFtdXG4gICAgcmV0dXJuIGVsZW1lbnRcbiAgfVxufVxuXG4vLyBzdGF5cyBvbiB0aGUgc2FtZSBlbGVtZW50XG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlQ2hpbGRyZW5CeU5hbWUoXG4gIG5hbWU6IHN0cmluZ1xuKTogQ2hhaW5hYmxlRnVuY3Rpb248WG1sRWxlbWVudCwgWG1sRWxlbWVudD4ge1xuICByZXR1cm4gKGVsZW1lbnQpID0+IHtcbiAgICBpZiAoIWVsZW1lbnQpIHJldHVybiBudWxsXG4gICAgY29uc3Qgc3RyaXBwZWROYW1lID0gc3RyaXBOYW1lc3BhY2UobmFtZSlcbiAgICBjb25zdCByZW1vdmVkID0gZWxlbWVudC5jaGlsZHJlbi5maWx0ZXIoXG4gICAgICAoY2hpbGQpID0+XG4gICAgICAgIGNoaWxkIGluc3RhbmNlb2YgWG1sRWxlbWVudCAmJlxuICAgICAgICBzdHJpcE5hbWVzcGFjZShnZXRFbGVtZW50TmFtZShjaGlsZCkpID09PSBzdHJpcHBlZE5hbWVcbiAgICApXG4gICAgcmVtb3ZlZC5mb3JFYWNoKChlbCkgPT4gKGVsLnBhcmVudCA9IG51bGwpKVxuICAgIGVsZW1lbnQuY2hpbGRyZW4gPSBlbGVtZW50LmNoaWxkcmVuLmZpbHRlcihcbiAgICAgIChjaGlsZCkgPT4gcmVtb3ZlZC5pbmRleE9mKGNoaWxkKSA9PT0gLTFcbiAgICApXG4gICAgcmV0dXJuIGVsZW1lbnRcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlQ2hpbGRyZW4oXG4gIGNoaWxkcmVuRm46IENoYWluYWJsZUZ1bmN0aW9uPFhtbEVsZW1lbnQsIEFycmF5PFhtbEVsZW1lbnQ+PlxuKTogQ2hhaW5hYmxlRnVuY3Rpb248WG1sRWxlbWVudCwgWG1sRWxlbWVudD4ge1xuICByZXR1cm4gKGVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBjaGlsZHJlblRvUmVtb3ZlID0gY2hpbGRyZW5GbihlbGVtZW50KVxuICAgIGNoaWxkcmVuVG9SZW1vdmUuZm9yRWFjaCgoY2hpbGQpID0+IChjaGlsZC5wYXJlbnQgPSBudWxsKSlcbiAgICBlbGVtZW50LmNoaWxkcmVuID0gZWxlbWVudC5jaGlsZHJlbi5maWx0ZXIoXG4gICAgICAoY2hpbGQpID0+XG4gICAgICAgIGNoaWxkIGluc3RhbmNlb2YgWG1sRWxlbWVudCAmJiBjaGlsZHJlblRvUmVtb3ZlLmluZGV4T2YoY2hpbGQpID09PSAtMVxuICAgIClcbiAgICByZXR1cm4gZWxlbWVudFxuICB9XG59XG5cbi8qKlxuICogUmVuYW1lcyBlbGVtZW50cyBpbiB0aGUgWE1MIHRyZWUgYWNjb3JkaW5nIHRvIHRoZSBtYXBcbiAqIEVpdGhlciBzcGVjaWZ5IGEgZnVsbCBlbGVtZW50IG5hbWUgbGlrZSAnZ21kOk1EX01ldGFkYXRhJyBvciBzaW1wbHkgYSBuYW1lc3BhY2UgbGlrZSAnZ21kJ1xuICogQHBhcmFtIHJvb3RFbGVtZW50XG4gKiBAcGFyYW0gcmVwbGFjZU1hcFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVuYW1lRWxlbWVudHMoXG4gIHJvb3RFbGVtZW50OiBYbWxFbGVtZW50LFxuICByZXBsYWNlTWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XG4pIHtcbiAgZnVuY3Rpb24gZG9SZXBsYWNlKGVsZW1lbnQ6IFhtbEVsZW1lbnQpIHtcbiAgICBpZiAoZWxlbWVudC5uYW1lIGluIHJlcGxhY2VNYXApIHtcbiAgICAgIGVsZW1lbnQubmFtZSA9IHJlcGxhY2VNYXBbZWxlbWVudC5uYW1lXVxuICAgIH0gZWxzZSBpZiAoZWxlbWVudC5uYW1lICYmIGdldE5hbWVzcGFjZShlbGVtZW50Lm5hbWUpIGluIHJlcGxhY2VNYXApIHtcbiAgICAgIGVsZW1lbnQubmFtZSA9IGAke1xuICAgICAgICByZXBsYWNlTWFwW2dldE5hbWVzcGFjZShlbGVtZW50Lm5hbWUpXVxuICAgICAgfToke3N0cmlwTmFtZXNwYWNlKGVsZW1lbnQubmFtZSl9YFxuICAgIH1cbiAgICBpZiAoZWxlbWVudC5jaGlsZHJlbikge1xuICAgICAgZWxlbWVudC5jaGlsZHJlbi5mb3JFYWNoKGRvUmVwbGFjZSlcbiAgICB9XG4gIH1cbiAgZG9SZXBsYWNlKHJvb3RFbGVtZW50KVxuICByZXR1cm4gcm9vdEVsZW1lbnRcbn1cbiJdfQ==
@@ -1,19 +1,22 @@
1
1
  import { Injectable } from '@angular/core';
2
2
  import { RecordsApiService, SearchApiService, } from '../../../../../../libs/data-access/gn4/src';
3
3
  import { ElasticsearchService } from './elasticsearch';
4
- import { combineLatest, from, of, switchMap, throwError, } from 'rxjs';
4
+ import { combineLatest, from, of, Subject, switchMap, throwError, } from 'rxjs';
5
5
  import { catchError, map, tap } from 'rxjs/operators';
6
6
  import { findConverterForDocument, Gn4Converter, Iso19139Converter, } from '../../../../../../libs/api/metadata-converter/src';
7
7
  import * as i0 from "@angular/core";
8
8
  import * as i1 from "../../../../../../libs/data-access/gn4/src";
9
9
  import * as i2 from "./elasticsearch";
10
10
  import * as i3 from "../../../../../../libs/api/metadata-converter/src";
11
+ const TEMPORARY_ID_PREFIX = 'TEMP-ID-';
11
12
  export class Gn4Repository {
12
13
  constructor(gn4SearchApi, gn4SearchHelper, gn4Mapper, gn4RecordsApi) {
13
14
  this.gn4SearchApi = gn4SearchApi;
14
15
  this.gn4SearchHelper = gn4SearchHelper;
15
16
  this.gn4Mapper = gn4Mapper;
16
17
  this.gn4RecordsApi = gn4RecordsApi;
18
+ this._draftsChanged = new Subject();
19
+ this.draftsChanged$ = this._draftsChanged.asObservable();
17
20
  }
18
21
  search({ filters, fields, offset, limit, sort, filterIds, filterGeometry, }) {
19
22
  return this.gn4SearchApi
@@ -88,10 +91,11 @@ export class Gn4Repository {
88
91
  return this.loadRecordAsXml(uniqueIdentifier).pipe(switchMap(async (recordAsXml) => {
89
92
  const converter = findConverterForDocument(recordAsXml);
90
93
  const record = await converter.readRecord(recordAsXml);
91
- record.uniqueIdentifier = `TEMP-ID-${Date.now()}`;
94
+ record.uniqueIdentifier = `${TEMPORARY_ID_PREFIX}${Date.now()}`;
92
95
  record.title = `${record.title} (Copy)`;
93
96
  const xml = await converter.writeRecord(record, recordAsXml);
94
97
  window.localStorage.setItem(this.getLocalStorageKeyForRecord(record.uniqueIdentifier), xml);
98
+ this._draftsChanged.next();
95
99
  return [record, xml, false];
96
100
  }));
97
101
  }
@@ -110,15 +114,28 @@ export class Gn4Repository {
110
114
  return response.metadataInfos[metadataId][0].uuid;
111
115
  }))));
112
116
  }
117
+ deleteRecord(uniqueIdentifier) {
118
+ return this.gn4RecordsApi.deleteRecord(uniqueIdentifier);
119
+ }
120
+ generateTemporaryId() {
121
+ return `${TEMPORARY_ID_PREFIX}${Date.now()}`;
122
+ }
113
123
  saveRecordAsDraft(record, referenceRecordSource) {
114
- return this.serializeRecordToXml(record, referenceRecordSource).pipe(tap((recordXml) => window.localStorage.setItem(this.getLocalStorageKeyForRecord(record.uniqueIdentifier), recordXml)));
124
+ return this.serializeRecordToXml(record, referenceRecordSource).pipe(tap((recordXml) => {
125
+ window.localStorage.setItem(this.getLocalStorageKeyForRecord(record.uniqueIdentifier), recordXml);
126
+ this._draftsChanged.next();
127
+ }));
115
128
  }
116
129
  clearRecordDraft(uniqueIdentifier) {
117
130
  window.localStorage.removeItem(this.getLocalStorageKeyForRecord(uniqueIdentifier));
131
+ this._draftsChanged.next();
118
132
  }
119
133
  recordHasDraft(uniqueIdentifier) {
120
134
  return (window.localStorage.getItem(this.getLocalStorageKeyForRecord(uniqueIdentifier)) !== null);
121
135
  }
136
+ isRecordNotYetSaved(uniqueIdentifier) {
137
+ return uniqueIdentifier.startsWith(TEMPORARY_ID_PREFIX);
138
+ }
122
139
  // generated by copilot
123
140
  getAllDrafts() {
124
141
  const items = { ...window.localStorage };
@@ -134,4 +151,4 @@ export class Gn4Repository {
134
151
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: Gn4Repository, decorators: [{
135
152
  type: Injectable
136
153
  }], ctorParameters: function () { return [{ type: i1.SearchApiService }, { type: i2.ElasticsearchService }, { type: i3.Gn4Converter }, { type: i1.RecordsApiService }]; } });
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ240LXJlcG9zaXRvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9yZXBvc2l0b3J5L3NyYy9saWIvZ240L2duNC1yZXBvc2l0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDMUMsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixnQkFBZ0IsR0FDakIsTUFBTSw0Q0FBNEMsQ0FBQTtBQUNuRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUN0RCxPQUFPLEVBQ0wsYUFBYSxFQUNiLElBQUksRUFFSixFQUFFLEVBQ0YsU0FBUyxFQUNULFVBQVUsR0FDWCxNQUFNLE1BQU0sQ0FBQTtBQVdiLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQ3JELE9BQU8sRUFFTCx3QkFBd0IsRUFDeEIsWUFBWSxFQUVaLGlCQUFpQixHQUNsQixNQUFNLG1EQUFtRCxDQUFBOzs7OztBQUsxRCxNQUFNLE9BQU8sYUFBYTtJQUN4QixZQUNVLFlBQThCLEVBQzlCLGVBQXFDLEVBQ3JDLFNBQXVCLEVBQ3ZCLGFBQWdDO1FBSGhDLGlCQUFZLEdBQVosWUFBWSxDQUFrQjtRQUM5QixvQkFBZSxHQUFmLGVBQWUsQ0FBc0I7UUFDckMsY0FBUyxHQUFULFNBQVMsQ0FBYztRQUN2QixrQkFBYSxHQUFiLGFBQWEsQ0FBbUI7SUFDdkMsQ0FBQztJQUVKLE1BQU0sQ0FBQyxFQUNMLE9BQU8sRUFDUCxNQUFNLEVBQ04sTUFBTSxFQUNOLEtBQUssRUFDTCxJQUFJLEVBQ0osU0FBUyxFQUNULGNBQWMsR0FDRDtRQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVk7YUFDckIsTUFBTSxDQUNMLFFBQVEsRUFDUixJQUFJLEVBQ0osSUFBSSxDQUFDLFNBQVMsQ0FDWixJQUFJLENB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LENBQUMsZ0JBQXdCO1FBQ3ZDLE1BQU0sQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUM1QixJQUFJLENBQUMsMkJBQTJCLENBQUMsZ0JBQWdCLENBQUMsQ0FDbkQsQ0FBQTtJQUNILENBQUM7SUFFRCxjQUFjLENBQUMsZ0JBQXdCO1FBQ3JDLE9BQU8sQ0FDTCxNQUFNLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FDekIsSUFBSSxDQUFDLDJCQUEyQixDQUFDLGdCQUFnQixDQUFDLENBQ25ELEtBQUssSUFBSSxDQUNYLENBQUE7SUFDSCxDQUFDO0lBRUQsdUJBQXVCO0lBQ3ZCLFlBQVk7UUFDVixNQUFNLEtBQUssR0FBRyxFQUFFLEdBQUcsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFBO1FBQ3hDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO2FBQzlCLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO2FBQ3ZELEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDOUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLENBQUE7UUFDcEMsT0FBTyxJQUFJLENBQ1QsT0FBTyxDQUFDLEdBQUcsQ0FDVCxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FDekUsQ0FDRixDQUFBO0lBQ0gsQ0FBQzsrR0E3U1UsYUFBYTttSEFBYixhQUFhOzs0RkFBYixhQUFhO2tCQUR6QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQge1xuICBSZWNvcmRzQXBpU2VydmljZSxcbiAgU2VhcmNoQXBpU2VydmljZSxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9nbjQvc3JjJ1xuaW1wb3J0IHsgRWxhc3RpY3NlYXJjaFNlcnZpY2UgfSBmcm9tICcuL2VsYXN0aWNzZWFyY2gnXG5pbXBvcnQge1xuICBjb21iaW5lTGF0ZXN0LFxuICBmcm9tLFxuICBPYnNlcnZhYmxlLFxuICBvZixcbiAgc3dpdGNoTWFwLFxuICB0aHJvd0Vycm9yLFxufSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgUmVjb3Jkc1JlcG9zaXRvcnlJbnRlcmZhY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9yZXBvc2l0b3J5L3JlY29yZHMtcmVwb3NpdG9yeS5pbnRlcmZhY2UnXG5pbXBvcnQge1xuICBTZWFyY2hQYXJhbXMsXG4gIFNlYXJjaFJlc3VsdHMsXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL3NlYXJjaC9zZWFyY2gubW9kZWwnXG5pbXBvcnQge1xuICBBZ2dyZWdhdGlvbnMsXG4gIEFnZ3JlZ2F0aW9uc1BhcmFtcyxcbiAgRmllbGRGaWx0ZXJzLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9zZWFyY2gnXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuaW1wb3J0IHtcbiAgQmFzZUNvbnZlcnRlcixcbiAgZmluZENvbnZlcnRlckZvckRvY3VtZW50LFxuICBHbjRDb252ZXJ0ZXIsXG4gIEduNFNlYXJjaFJlc3VsdHMsXG4gIElzbzE5MTM5Q29udmVydGVyLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9tZXRhZGF0YS1jb252ZXJ0ZXIvc3JjJ1xuaW1wb3J0IHsgQ2F0YWxvZ1JlY29yZCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL3JlY29yZCdcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBHbjRSZXBvc2l0b3J5IGltcGxlbWVudHMgUmVjb3Jkc1JlcG9zaXRvcnlJbnRlcmZhY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGduNFNlYXJjaEFwaTogU2VhcmNoQXBpU2VydmljZSxcbiAgICBwcml2YXRlIGduNFNlYXJjaEhlbHBlcjogRWxhc3RpY3NlYXJjaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBnbjRNYXBwZXI6IEduNENvbnZlcnRlcixcbiAgICBwcml2YXRlIGduNFJlY29yZHNBcGk6IFJlY29yZHNBcGlTZXJ2aWNlXG4gICkge31cblxuICBzZWFyY2goe1xuICAgIGZpbHRlcnMsXG4gICAgZmllbGRzLFxuICAgIG9mZnNldCxcbiAgICBsaW1pdCxcbiAgICBzb3J0LFxuICAgIGZpbHRlcklkcyxcbiAgICBmaWx0ZXJHZW9tZXRyeSxcbiAgfTogU2VhcmNoUGFyYW1zKTogT2JzZXJ2YWJsZTxTZWFyY2hSZXN1bHRzPiB7XG4gICAgcmV0dXJuIHRoaXMuZ240U2VhcmNoQXBpXG4gICAgICAuc2VhcmNoKFxuICAgICAgICAnYnVja2V0JyxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgdGhpcy5nbjRTZWFyY2hIZWxwZXIuZ2V0U2VhcmNoUmVxdWVzdEJvZHkoXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgICAgIGxpbWl0LFxuICAgICAgICAgICAgb2Zmc2V0LFxuICAgICAgICAgICAgc29ydCxcbiAgICAgICAgICAgIGZpZWxkcyxcbiAgICAgICAgICAgIGZpbHRlcnMsXG4gICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICBmaWx0ZXJJZHMsXG4gICAgICAgICAgICBmaWx0ZXJHZW9tZXRyeVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgocmVzdWx0czogR240U2VhcmNoUmVzdWx0cykgPT5cbiAgICAgICAgICB0aGlzLmduNE1hcHBlci5yZWFkUmVjb3JkcyhyZXN1bHRzLmhpdHMuaGl0cykudGhlbigocmVjb3JkcykgPT4gKHtcbiAgICAgICAgICAgIGNvdW50OiByZXN1bHRzLmhpdHMudG90YWw/LnZhbHVlIHx8IDAsXG4gICAgICAgICAgICByZWNvcmRzLFxuICAgICAgICAgIH0pKVxuICAgICAgICApXG4gICAgICApXG4gIH1cblxuICBnZXRNYXRjaGVzQ291bnQoZmlsdGVyczogRmllbGRGaWx0ZXJzKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5nbjRTZWFyY2hBcGlcbiAgICAgIC5zZWFyY2goXG4gICAgICAgICdyZWNvcmRzLWNvdW50JyxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIC4uLnRoaXMuZ240U2VhcmNoSGVscGVyLmdldFNlYXJjaFJlcXVlc3RCb2R5KFxuICAgICAgICAgICAge30sXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGZpbHRlcnNcbiAgICAgICAgICApLFxuICAgICAgICAgIHRyYWNrX3RvdGFsX2hpdHM6IHRydWUsXG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAucGlwZShtYXAoKHJlc3VsdHM6IEduNFNlYXJjaFJlc3VsdHMpID0+IHJlc3VsdHMuaGl0cy50b3RhbD8udmFsdWUgfHwgMCkpXG4gIH1cblxuICBnZXRSZWNvcmQodW5pcXVlSWRlbnRpZmllcjogc3RyaW5nKTogT2JzZXJ2YWJsZTxDYXRhbG9nUmVjb3JkIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLmduNFNlYXJjaEFwaVxuICAgICAgLnNlYXJjaChcbiAgICAgICAgJ2J1Y2tldCcsXG4gICAgICAgIG51bGwsXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KFxuICAgICAgICAgIHRoaXMuZ240U2VhcmNoSGVscGVyLmdldE1ldGFkYXRhQnlJZFBheWxvYWQodW5pcXVlSWRlbnRpZmllcilcbiAgICAgICAgKVxuICAgICAgKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzdWx0czogR240U2VhcmNoUmVzdWx0cykgPT4gcmVzdWx0cy5oaXRzLmhpdHNbMF0pLFxuICAgICAgICBzd2l0Y2hNYXAoKHJlY29yZCkgPT5cbiAgICAgICAgICByZWNvcmQgPyB0aGlzLmduNE1hcHBlci5yZWFkUmVjb3JkKHJlY29yZCkgOiBvZihudWxsKVxuICAgICAgICApXG4gICAgICApXG4gIH1cblxuICBnZXRTaW1pbGFyUmVjb3JkcyhzaW1pbGFyVG86IENhdGFsb2dSZWNvcmQpOiBPYnNlcnZhYmxlPENhdGFsb2dSZWNvcmRbXT4ge1xuICAgIHJldHVybiB0aGlzLmduNFNlYXJjaEFwaVxuICAgICAgLnNlYXJjaChcbiAgICAgICAgJ2J1Y2tldCcsXG4gICAgICAgIG51bGwsXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KFxuICAgICAgICAgIHRoaXMuZ240U2VhcmNoSGVscGVyLmdldFJlbGF0ZWRSZWNvcmRQYXlsb2FkKFxuICAgICAgICAgICAgc2ltaWxhclRvLnRpdGxlLFxuICAgICAgICAgICAgc2ltaWxhclRvLnVuaXF1ZUlkZW50aWZpZXIsXG4gICAgICAgICAgICAzXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKChyZXN1bHRzOiBHbjRTZWFyY2hSZXN1bHRzKSA9PlxuICAgICAgICAgIHRoaXMuZ240TWFwcGVyLnJlYWRSZWNvcmRzKHJlc3VsdHMuaGl0cy5oaXRzKVxuICAgICAgICApXG4gICAgICApXG4gIH1cbiAgYWdncmVnYXRlKHBhcmFtczogQWdncmVnYXRpb25zUGFyYW1zKTogT2JzZXJ2YWJsZTxBZ2dyZWdhdGlvbnM+IHtcbiAgICAvLyBpZiBhZ2dyZWdhdGlvbnMgYXJlIGVtcHR5LCByZXR1cm4gYW4gZW1wdHkgb2JqZWN0IHJpZ2h0IGF3YXlcbiAgICBpZiAoT2JqZWN0LmtleXMocGFyYW1zKS5sZW5ndGggPT09IDApIHJldHVybiBvZih7fSlcblxuICAgIGNvbnN0IGFnZ3JlZ2F0aW9ucyA9IHRoaXMuZ240U2VhcmNoSGVscGVyLmJ1aWxkQWdncmVnYXRpb25zUGF5bG9hZChwYXJhbXMpXG4gICAgcmV0dXJuIHRoaXMuZ240U2VhcmNoQXBpXG4gICAgICAuc2VhcmNoKFxuICAgICAgICAnYnVja2V0JyxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkodGhpcy5nbjRTZWFyY2hIZWxwZXIuZ2V0U2VhcmNoUmVxdWVzdEJvZHkoYWdncmVnYXRpb25zKSlcbiAgICAgIClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlc3BvbnNlOiBHbjRTZWFyY2hSZXN1bHRzKSA9PlxuICAgICAgICAgIE9iamVjdC5rZXlzKHJlc3BvbnNlLmFnZ3JlZ2F0aW9ucykucmVkdWNlKFxuICAgICAgICAgICAgKHByZXYsIGN1cnIpID0+ICh7XG4gICAgICAgICAgICAgIC4uLnByZXYsXG4gICAgICAgICAgICAgIFtjdXJyXTogdGhpcy5nbjRTZWFyY2hIZWxwZXIucGFyc2VBZ2dyZWdhdGlvblJlc3VsdChcbiAgICAgICAgICAgICAgICByZXNwb25zZS5hZ2dyZWdhdGlvbnNbY3Vycl0sXG4gICAgICAgICAgICAgICAgcGFyYW1zW2N1cnJdXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHt9XG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApXG4gIH1cblxuICBmdXp6eVNlYXJjaChxdWVyeTogc3RyaW5nKTogT2JzZXJ2YWJsZTxTZWFyY2hSZXN1bHRzPiB7XG4gICAgcmV0dXJuIHRoaXMuZ240U2VhcmNoQXBpXG4gICAgICAuc2VhcmNoKFxuICAgICAgICAnYnVja2V0JyxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkodGhpcy5nbjRTZWFyY2hIZWxwZXIuYnVpbGRBdXRvY29tcGxldGVQYXlsb2FkKHF1ZXJ5KSlcbiAgICAgIClcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKHJlc3VsdHM6IEduNFNlYXJjaFJlc3VsdHMpID0+XG4gICAgICAgICAgdGhpcy5nbjRNYXBwZXIucmVhZFJlY29yZHMocmVzdWx0cy5oaXRzLmhpdHMpLnRoZW4oKHJlY29yZHMpID0+ICh7XG4gICAgICAgICAgICBjb3VudDogcmVzdWx0cy5oaXRzLnRvdGFsPy52YWx1ZSB8fCAwLFxuICAgICAgICAgICAgcmVjb3JkcyxcbiAgICAgICAgICB9KSlcbiAgICAgICAgKVxuICAgICAgKVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgbnVsbCBpZiB0aGUgcmVjb3JkIGlzIG5vdCBmb3VuZFxuICAgKi9cbiAgcHJpdmF0ZSBsb2FkUmVjb3JkQXNYbWwodW5pcXVlSWRlbnRpZmllcjogc3RyaW5nKTogT2JzZXJ2YWJsZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuZ240UmVjb3Jkc0FwaVxuICAgICAgLmdldFJlY29yZEFzKFxuICAgICAgICB1bmlxdWVJZGVudGlmaWVyLFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIGZhbHNlLFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAnYXBwbGljYXRpb24veG1sJyxcbiAgICAgICAgJ3Jlc3BvbnNlJyxcbiAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICB7IGh0dHBIZWFkZXJBY2NlcHQ6ICd0ZXh0L3htbCxhcHBsaWNhdGlvbi94bWwnIGFzICdhcHBsaWNhdGlvbi94bWwnIH0gLy8gdGhpcyBpcyB0byBtYWtlIHN1cmUgdGhhdCB0aGUgcmVzcG9uc2UgaXMgcGFyc2VkIGFzIHRleHRcbiAgICAgIClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiByZXNwb25zZS5ib2R5KSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PlxuICAgICAgICAgIGVycm9yLnN0YXR1cyA9PT0gNDA0ID8gb2YobnVsbCkgOiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKVxuICAgICAgICApXG4gICAgICApXG4gIH1cblxuICBwcml2YXRlIGdldExvY2FsU3RvcmFnZUtleUZvclJlY29yZCh1bmlxdWVJZGVudGlmaWVyOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gYGdlb25ldHdvcmstdWktZHJhZnQtJHt1bmlxdWVJZGVudGlmaWVyfWBcbiAgfVxuXG4gIG9wZW5SZWNvcmRGb3JFZGl0aW9uKFxuICAgIHVuaXF1ZUlkZW50aWZpZXI6IHN0cmluZ1xuICApOiBPYnNlcnZhYmxlPFtDYXRhbG9nUmVjb3JkLCBzdHJpbmcsIGJvb2xlYW5dIHwgbnVsbD4ge1xuICAgIGNvbnN0IGRyYWZ0JCA9IG9mKFxuICAgICAgd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKFxuICAgICAgICB0aGlzLmdldExvY2FsU3RvcmFnZUtleUZvclJlY29yZCh1bmlxdWVJZGVudGlmaWVyKVxuICAgICAgKVxuICAgIClcbiAgICBjb25zdCByZWNvcmRBc1htbCQgPSB0aGlzLmxvYWRSZWNvcmRBc1htbCh1bmlxdWVJZGVudGlmaWVyKVxuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFtkcmFmdCQsIHJlY29yZEFzWG1sJF0pLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKFtkcmFmdCwgcmVjb3JkQXNYbWxdKSA9PiB7XG4gICAgICAgIGNvbnN0IHhtbCA9IGRyYWZ0ID8/IHJlY29yZEFzWG1sXG4gICAgICAgIGNvbnN0IGlzU2F2ZWRBbHJlYWR5ID0gcmVjb3JkQXNYbWwgIT09IG51bGxcbiAgICAgICAgcmV0dXJuIGZpbmRDb252ZXJ0ZXJGb3JEb2N1bWVudCh4bWwpXG4gICAgICAgICAgLnJlYWRSZWNvcmQoeG1sKVxuICAgICAgICAgIC50aGVuKFxuICAgICAgICAgICAgKHJlY29yZCkgPT5cbiAgICAgICAgICAgICAgW3JlY29yZCwgeG1sLCBpc1NhdmVkQWxyZWFkeV0gYXMgW0NhdGFsb2dSZWNvcmQsIHN0cmluZywgYm9vbGVhbl1cbiAgICAgICAgICApXG4gICAgICB9KVxuICAgIClcbiAgfVxuXG4gIG9wZW5SZWNvcmRGb3JEdXBsaWNhdGlvbihcbiAgICB1bmlxdWVJZGVudGlmaWVyOiBzdHJpbmdcbiAgKTogT2JzZXJ2YWJsZTxbQ2F0YWxvZ1JlY29yZCwgc3RyaW5nLCBmYWxzZV0gfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMubG9hZFJlY29yZEFzWG1sKHVuaXF1ZUlkZW50aWZpZXIpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoYXN5bmMgKHJlY29yZEFzWG1sKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbnZlcnRlciA9IGZpbmRDb252ZXJ0ZXJGb3JEb2N1bWVudChyZWNvcmRBc1htbClcbiAgICAgICAgY29uc3QgcmVjb3JkID0gYXdhaXQgY29udmVydGVyLnJlYWRSZWNvcmQocmVjb3JkQXNYbWwpXG4gICAgICAgIHJlY29yZC51bmlxdWVJZGVudGlmaWVyID0gYFRFTVAtSUQtJHtEYXRlLm5vdygpfWBcbiAgICAgICAgcmVjb3JkLnRpdGxlID0gYCR7cmVjb3JkLnRpdGxlfSAoQ29weSlgXG4gICAgICAgIGNvbnN0IHhtbCA9IGF3YWl0IGNvbnZlcnRlci53cml0ZVJlY29yZChyZWNvcmQsIHJlY29yZEFzWG1sKVxuICAgICAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oXG4gICAgICAgICAgdGhpcy5nZXRMb2NhbFN0b3JhZ2VLZXlGb3JSZWNvcmQocmVjb3JkLnVuaXF1ZUlkZW50aWZpZXIpLFxuICAgICAgICAgIHhtbFxuICAgICAgICApXG4gICAgICAgIHJldHVybiBbcmVjb3JkLCB4bWwsIGZhbHNlXSBhcyBbQ2F0YWxvZ1JlY29yZCwgc3RyaW5nLCBmYWxzZV1cbiAgICAgIH0pXG4gICAgKVxuICB9XG5cbiAgcHJpdmF0ZSBzZXJpYWxpemVSZWNvcmRUb1htbChcbiAgICByZWNvcmQ6IENhdGFsb2dSZWNvcmQsXG4gICAgcmVmZXJlbmNlUmVjb3JkU291cmNlPzogc3RyaW5nXG4gICk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgLy8gaWYgdGhlcmUncyBhIHJlZmVyZW5jZSByZWNvcmQsIHVzZSB0aGF0IHN0YW5kYXJkOyBvdGhlcndpc2UsIHVzZSBpc28xOTEzOVxuICAgIGNvbnN0IGNvbnZlcnRlciA9IHJlZmVyZW5jZVJlY29yZFNvdXJjZVxuICAgICAgPyBmaW5kQ29udmVydGVyRm9yRG9jdW1lbnQocmVmZXJlbmNlUmVjb3JkU291cmNlKVxuICAgICAgOiBuZXcgSXNvMTkxMzlDb252ZXJ0ZXIoKVxuICAgIHJldHVybiBmcm9tKGNvbnZlcnRlci53cml0ZVJlY29yZChyZWNvcmQsIHJlZmVyZW5jZVJlY29yZFNvdXJjZSkpXG4gIH1cblxuICBzYXZlUmVjb3JkKFxuICAgIHJlY29yZDogQ2F0YWxvZ1JlY29yZCxcbiAgICByZWZlcmVuY2VSZWNvcmRTb3VyY2U/OiBzdHJpbmdcbiAgKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5zZXJpYWxpemVSZWNvcmRUb1htbChyZWNvcmQsIHJlZmVyZW5jZVJlY29yZFNvdXJjZSkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgocmVjb3JkWG1sKSA9PlxuICAgICAgICB0aGlzLmduNFJlY29yZHNBcGlcbiAgICAgICAgICAuaW5zZXJ0KFxuICAgICAgICAgICAgJ01FVEFEQVRBJyxcbiAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHRydWUsXG4gICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICAnT1ZFUldSSVRFJyxcbiAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICdfbm9uZV8nLFxuICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgcmVjb3JkWG1sXG4gICAgICAgICAgKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBtZXRhZGF0YUlkID0gT2JqZWN0LmtleXMocmVzcG9uc2UubWV0YWRhdGFJbmZvcylbMF1cbiAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLm1ldGFkYXRhSW5mb3NbbWV0YWRhdGFJZF1bMF0udXVpZFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICB9XG5cbiAgc2F2ZVJlY29yZEFzRHJhZnQoXG4gICAgcmVjb3JkOiBDYXRhbG9nUmVjb3JkLFxuICAgIHJlZmVyZW5jZVJlY29yZFNvdXJjZT86IHN0cmluZ1xuICApOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLnNlcmlhbGl6ZVJlY29yZFRvWG1sKHJlY29yZCwgcmVmZXJlbmNlUmVjb3JkU291cmNlKS5waXBlKFxuICAgICAgdGFwKChyZWNvcmRYbWwpID0+XG4gICAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShcbiAgICAgICAgICB0aGlzLmdldExvY2FsU3RvcmFnZUtleUZvclJlY29yZChyZWNvcmQudW5pcXVlSWRlbnRpZmllciksXG4gICAgICAgICAgcmVjb3JkWG1sXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gIH1cblxuICBjbGVhclJlY29yZERyYWZ0KHVuaXF1ZUlkZW50aWZpZXI6IHN0cmluZyk6IHZvaWQge1xuICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShcbiAgICAgIHRoaXMuZ2V0TG9jYWxTdG9yYWdlS2V5Rm9yUmVjb3JkKHVuaXF1ZUlkZW50aWZpZXIpXG4gICAgKVxuICB9XG5cbiAgcmVjb3JkSGFzRHJhZnQodW5pcXVlSWRlbnRpZmllcjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShcbiAgICAgICAgdGhpcy5nZXRMb2NhbFN0b3JhZ2VLZXlGb3JSZWNvcmQodW5pcXVlSWRlbnRpZmllcilcbiAgICAgICkgIT09IG51bGxcbiAgICApXG4gIH1cblxuICAvLyBnZW5lcmF0ZWQgYnkgY29waWxvdFxuICBnZXRBbGxEcmFmdHMoKTogT2JzZXJ2YWJsZTxDYXRhbG9nUmVjb3JkW10+IHtcbiAgICBjb25zdCBpdGVtcyA9IHsgLi4ud2luZG93LmxvY2FsU3RvcmFnZSB9XG4gICAgY29uc3QgZHJhZnRzID0gT2JqZWN0LmtleXMoaXRlbXMpXG4gICAgICAuZmlsdGVyKChrZXkpID0+IGtleS5zdGFydHNXaXRoKCdnZW9uZXR3b3JrLXVpLWRyYWZ0LScpKVxuICAgICAgLm1hcCgoa2V5KSA9PiB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KSlcbiAgICAgIC5maWx0ZXIoKGRyYWZ0KSA9PiBkcmFmdCAhPT0gbnVsbClcbiAgICByZXR1cm4gZnJvbShcbiAgICAgIFByb21pc2UuYWxsKFxuICAgICAgICBkcmFmdHMubWFwKChkcmFmdCkgPT4gZmluZENvbnZlcnRlckZvckRvY3VtZW50KGRyYWZ0KS5yZWFkUmVjb3JkKGRyYWZ0KSlcbiAgICAgIClcbiAgICApXG4gIH1cbn1cbiJdfQ==
154
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ240LXJlcG9zaXRvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9yZXBvc2l0b3J5L3NyYy9saWIvZ240L2duNC1yZXBvc2l0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDMUMsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixnQkFBZ0IsR0FDakIsTUFBTSw0Q0FBNEMsQ0FBQTtBQUNuRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUN0RCxPQUFPLEVBQ0wsYUFBYSxFQUNiLElBQUksRUFFSixFQUFFLEVBQ0YsT0FBTyxFQUNQLFNBQVMsRUFDVCxVQUFVLEdBQ1gsTUFBTSxNQUFNLENBQUE7QUFXYixPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUNyRCxPQUFPLEVBQ0wsd0JBQXdCLEVBQ3hCLFlBQVksRUFFWixpQkFBaUIsR0FDbEIsTUFBTSxtREFBbUQsQ0FBQTs7Ozs7QUFJMUQsTUFBTSxtQkFBbUIsR0FBRyxVQUFVLENBQUE7QUFHdEMsTUFBTSxPQUFPLGFBQWE7SUFJeEIsWUFDVSxZQUE4QixFQUM5QixlQUFxQyxFQUNyQyxTQUF1QixFQUN2QixhQUFnQztRQUhoQyxpQkFBWSxHQUFaLFlBQVksQ0FBa0I7UUFDOUIsb0JBQWUsR0FBZixlQUFlLENBQXNCO1FBQ3JDLGNBQVMsR0FBVCxTQUFTLENBQWM7UUFDdkIsa0JBQWEsR0FBYixhQUFhLENBQW1CO1FBUDFDLG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQTtRQUNwQyxtQkFBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUE7SUFPaEQsQ0FBQztJQUVKLE1BQU0sQ0FBQyxFQUNMLE9BQU8sRUFDUCxNQUFNLEVBQ04sTUFBTSxF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QyxLQUFLLENBQUM7YUFDOUIsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLHNCQUFzQixDQUFDLENBQUM7YUFDdkQsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUM5QyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsQ0FBQTtRQUNwQyxPQUFPLElBQUksQ0FDVCxPQUFPLENBQUMsR0FBRyxDQUNULE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLHdCQUF3QixDQUFDLEtBQUssQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUN6RSxDQUNGLENBQUE7SUFDSCxDQUFDOytHQS9UVSxhQUFhO21IQUFiLGFBQWE7OzRGQUFiLGFBQWE7a0JBRHpCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7XG4gIFJlY29yZHNBcGlTZXJ2aWNlLFxuICBTZWFyY2hBcGlTZXJ2aWNlLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL2duNC9zcmMnXG5pbXBvcnQgeyBFbGFzdGljc2VhcmNoU2VydmljZSB9IGZyb20gJy4vZWxhc3RpY3NlYXJjaCdcbmltcG9ydCB7XG4gIGNvbWJpbmVMYXRlc3QsXG4gIGZyb20sXG4gIE9ic2VydmFibGUsXG4gIG9mLFxuICBTdWJqZWN0LFxuICBzd2l0Y2hNYXAsXG4gIHRocm93RXJyb3IsXG59IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBSZWNvcmRzUmVwb3NpdG9yeUludGVyZmFjZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL3JlcG9zaXRvcnkvcmVjb3Jkcy1yZXBvc2l0b3J5LmludGVyZmFjZSdcbmltcG9ydCB7XG4gIFNlYXJjaFBhcmFtcyxcbiAgU2VhcmNoUmVzdWx0cyxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvc2VhcmNoL3NlYXJjaC5tb2RlbCdcbmltcG9ydCB7XG4gIEFnZ3JlZ2F0aW9ucyxcbiAgQWdncmVnYXRpb25zUGFyYW1zLFxuICBGaWVsZEZpbHRlcnMsXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL3NlYXJjaCdcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5pbXBvcnQge1xuICBmaW5kQ29udmVydGVyRm9yRG9jdW1lbnQsXG4gIEduNENvbnZlcnRlcixcbiAgR240U2VhcmNoUmVzdWx0cyxcbiAgSXNvMTkxMzlDb252ZXJ0ZXIsXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXBpL21ldGFkYXRhLWNvbnZlcnRlci9zcmMnXG5pbXBvcnQgeyBDYXRhbG9nUmVjb3JkIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvcmVjb3JkJ1xuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCdcblxuY29uc3QgVEVNUE9SQVJZX0lEX1BSRUZJWCA9ICdURU1QLUlELSdcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEduNFJlcG9zaXRvcnkgaW1wbGVtZW50cyBSZWNvcmRzUmVwb3NpdG9yeUludGVyZmFjZSB7XG4gIF9kcmFmdHNDaGFuZ2VkID0gbmV3IFN1YmplY3Q8dm9pZD4oKVxuICBkcmFmdHNDaGFuZ2VkJCA9IHRoaXMuX2RyYWZ0c0NoYW5nZWQuYXNPYnNlcnZhYmxlKClcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGduNFNlYXJjaEFwaTogU2VhcmNoQXBpU2VydmljZSxcbiAgICBwcml2YXRlIGduNFNlYXJjaEhlbHBlcjogRWxhc3RpY3NlYXJjaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBnbjRNYXBwZXI6IEduNENvbnZlcnRlcixcbiAgICBwcml2YXRlIGduNFJlY29yZHNBcGk6IFJlY29yZHNBcGlTZXJ2aWNlXG4gICkge31cblxuICBzZWFyY2goe1xuICAgIGZpbHRlcnMsXG4gICAgZmllbGRzLFxuICAgIG9mZnNldCxcbiAgICBsaW1pdCxcbiAgICBzb3J0LFxuICAgIGZpbHRlcklkcyxcbiAgICBmaWx0ZXJHZW9tZXRyeSxcbiAgfTogU2VhcmNoUGFyYW1zKTogT2JzZXJ2YWJsZTxTZWFyY2hSZXN1bHRzPiB7XG4gICAgcmV0dXJuIHRoaXMuZ240U2VhcmNoQXBpXG4gICAgICAuc2VhcmNoKFxuICAgICAgICAnYnVja2V0JyxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgdGhpcy5nbjRTZWFyY2hIZWxwZXIuZ2V0U2VhcmNoUmVxdWVzdEJvZHkoXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgICAgIGxpbWl0LFxuICAgICAgICAgICAgb2Zmc2V0LFxuICAgICAgICAgICAgc29ydCxcbiAgICAgICAgICAgIGZpZWxkcyxcbiAgICAgICAgICAgIGZpbHRlcnMsXG4gICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICBmaWx0ZXJJZHMsXG4gICAgICAgICAgICBmaWx0ZXJHZW9tZXRyeVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgocmVzdWx0czogR240U2VhcmNoUmVzdWx0cykgPT5cbiAgICAgICAgICB0aGlzLmduNE1hcHBlci5yZWFkUmVjb3JkcyhyZXN1bHRzLmhpdHMuaGl0cykudGhlbigocmVjb3JkcykgPT4gKHtcbiAgICAgICAgICAgIGNvdW50OiByZXN1bHRzLmhpdHMudG90YWw/LnZhbHVlIHx8IDAsXG4gICAgICAgICAgICByZWNvcmRzLFxuICAgICAgICAgIH0pKVxuICAgICAgICApXG4gICAgICApXG4gIH1cblxuICBnZXRNYXRjaGVzQ291bnQoZmlsdGVyczogRmllbGRGaWx0ZXJzKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5nbjRTZWFyY2hBcGlcbiAgICAgIC5zZWFyY2goXG4gICAgICAgICdyZWNvcmRzLWNvdW50JyxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIC4uLnRoaXMuZ240U2VhcmNoSGVscGVyLmdldFNlYXJjaFJlcXVlc3RCb2R5KFxuICAgICAgICAgICAge30sXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGZpbHRlcnNcbiAgICAgICAgICApLFxuICAgICAgICAgIHRyYWNrX3RvdGFsX2hpdHM6IHRydWUsXG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAucGlwZShtYXAoKHJlc3VsdHM6IEduNFNlYXJjaFJlc3VsdHMpID0+IHJlc3VsdHMuaGl0cy50b3RhbD8udmFsdWUgfHwgMCkpXG4gIH1cblxuICBnZXRSZWNvcmQodW5pcXVlSWRlbnRpZmllcjogc3RyaW5nKTogT2JzZXJ2YWJsZTxDYXRhbG9nUmVjb3JkIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLmduNFNlYXJjaEFwaVxuICAgICAgLnNlYXJjaChcbiAgICAgICAgJ2J1Y2tldCcsXG4gICAgICAgIG51bGwsXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KFxuICAgICAgICAgIHRoaXMuZ240U2VhcmNoSGVscGVyLmdldE1ldGFkYXRhQnlJZFBheWxvYWQodW5pcXVlSWRlbnRpZmllcilcbiAgICAgICAgKVxuICAgICAgKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzdWx0czogR240U2VhcmNoUmVzdWx0cykgPT4gcmVzdWx0cy5oaXRzLmhpdHNbMF0pLFxuICAgICAgICBzd2l0Y2hNYXAoKHJlY29yZCkgPT5cbiAgICAgICAgICByZWNvcmQgPyB0aGlzLmduNE1hcHBlci5yZWFkUmVjb3JkKHJlY29yZCkgOiBvZihudWxsKVxuICAgICAgICApXG4gICAgICApXG4gIH1cblxuICBnZXRTaW1pbGFyUmVjb3JkcyhzaW1pbGFyVG86IENhdGFsb2dSZWNvcmQpOiBPYnNlcnZhYmxlPENhdGFsb2dSZWNvcmRbXT4ge1xuICAgIHJldHVybiB0aGlzLmduNFNlYXJjaEFwaVxuICAgICAgLnNlYXJjaChcbiAgICAgICAgJ2J1Y2tldCcsXG4gICAgICAgIG51bGwsXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KFxuICAgICAgICAgIHRoaXMuZ240U2VhcmNoSGVscGVyLmdldFJlbGF0ZWRSZWNvcmRQYXlsb2FkKFxuICAgICAgICAgICAgc2ltaWxhclRvLnRpdGxlLFxuICAgICAgICAgICAgc2ltaWxhclRvLnVuaXF1ZUlkZW50aWZpZXIsXG4gICAgICAgICAgICAzXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKChyZXN1bHRzOiBHbjRTZWFyY2hSZXN1bHRzKSA9PlxuICAgICAgICAgIHRoaXMuZ240TWFwcGVyLnJlYWRSZWNvcmRzKHJlc3VsdHMuaGl0cy5oaXRzKVxuICAgICAgICApXG4gICAgICApXG4gIH1cbiAgYWdncmVnYXRlKHBhcmFtczogQWdncmVnYXRpb25zUGFyYW1zKTogT2JzZXJ2YWJsZTxBZ2dyZWdhdGlvbnM+IHtcbiAgICAvLyBpZiBhZ2dyZWdhdGlvbnMgYXJlIGVtcHR5LCByZXR1cm4gYW4gZW1wdHkgb2JqZWN0IHJpZ2h0IGF3YXlcbiAgICBpZiAoT2JqZWN0LmtleXMocGFyYW1zKS5sZW5ndGggPT09IDApIHJldHVybiBvZih7fSlcblxuICAgIGNvbnN0IGFnZ3JlZ2F0aW9ucyA9IHRoaXMuZ240U2VhcmNoSGVscGVyLmJ1aWxkQWdncmVnYXRpb25zUGF5bG9hZChwYXJhbXMpXG4gICAgcmV0dXJuIHRoaXMuZ240U2VhcmNoQXBpXG4gICAgICAuc2VhcmNoKFxuICAgICAgICAnYnVja2V0JyxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkodGhpcy5nbjRTZWFyY2hIZWxwZXIuZ2V0U2VhcmNoUmVxdWVzdEJvZHkoYWdncmVnYXRpb25zKSlcbiAgICAgIClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlc3BvbnNlOiBHbjRTZWFyY2hSZXN1bHRzKSA9PlxuICAgICAgICAgIE9iamVjdC5rZXlzKHJlc3BvbnNlLmFnZ3JlZ2F0aW9ucykucmVkdWNlKFxuICAgICAgICAgICAgKHByZXYsIGN1cnIpID0+ICh7XG4gICAgICAgICAgICAgIC4uLnByZXYsXG4gICAgICAgICAgICAgIFtjdXJyXTogdGhpcy5nbjRTZWFyY2hIZWxwZXIucGFyc2VBZ2dyZWdhdGlvblJlc3VsdChcbiAgICAgICAgICAgICAgICByZXNwb25zZS5hZ2dyZWdhdGlvbnNbY3Vycl0sXG4gICAgICAgICAgICAgICAgcGFyYW1zW2N1cnJdXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHt9XG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApXG4gIH1cblxuICBmdXp6eVNlYXJjaChxdWVyeTogc3RyaW5nKTogT2JzZXJ2YWJsZTxTZWFyY2hSZXN1bHRzPiB7XG4gICAgcmV0dXJuIHRoaXMuZ240U2VhcmNoQXBpXG4gICAgICAuc2VhcmNoKFxuICAgICAgICAnYnVja2V0JyxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkodGhpcy5nbjRTZWFyY2hIZWxwZXIuYnVpbGRBdXRvY29tcGxldGVQYXlsb2FkKHF1ZXJ5KSlcbiAgICAgIClcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKHJlc3VsdHM6IEduNFNlYXJjaFJlc3VsdHMpID0+XG4gICAgICAgICAgdGhpcy5nbjRNYXBwZXIucmVhZFJlY29yZHMocmVzdWx0cy5oaXRzLmhpdHMpLnRoZW4oKHJlY29yZHMpID0+ICh7XG4gICAgICAgICAgICBjb3VudDogcmVzdWx0cy5oaXRzLnRvdGFsPy52YWx1ZSB8fCAwLFxuICAgICAgICAgICAgcmVjb3JkcyxcbiAgICAgICAgICB9KSlcbiAgICAgICAgKVxuICAgICAgKVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgbnVsbCBpZiB0aGUgcmVjb3JkIGlzIG5vdCBmb3VuZFxuICAgKi9cbiAgcHJpdmF0ZSBsb2FkUmVjb3JkQXNYbWwodW5pcXVlSWRlbnRpZmllcjogc3RyaW5nKTogT2JzZXJ2YWJsZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuZ240UmVjb3Jkc0FwaVxuICAgICAgLmdldFJlY29yZEFzKFxuICAgICAgICB1bmlxdWVJZGVudGlmaWVyLFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIGZhbHNlLFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAnYXBwbGljYXRpb24veG1sJyxcbiAgICAgICAgJ3Jlc3BvbnNlJyxcbiAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICB7IGh0dHBIZWFkZXJBY2NlcHQ6ICd0ZXh0L3htbCxhcHBsaWNhdGlvbi94bWwnIGFzICdhcHBsaWNhdGlvbi94bWwnIH0gLy8gdGhpcyBpcyB0byBtYWtlIHN1cmUgdGhhdCB0aGUgcmVzcG9uc2UgaXMgcGFyc2VkIGFzIHRleHRcbiAgICAgIClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiByZXNwb25zZS5ib2R5KSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PlxuICAgICAgICAgIGVycm9yLnN0YXR1cyA9PT0gNDA0ID8gb2YobnVsbCkgOiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKVxuICAgICAgICApXG4gICAgICApXG4gIH1cblxuICBwcml2YXRlIGdldExvY2FsU3RvcmFnZUtleUZvclJlY29yZCh1bmlxdWVJZGVudGlmaWVyOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gYGdlb25ldHdvcmstdWktZHJhZnQtJHt1bmlxdWVJZGVudGlmaWVyfWBcbiAgfVxuXG4gIG9wZW5SZWNvcmRGb3JFZGl0aW9uKFxuICAgIHVuaXF1ZUlkZW50aWZpZXI6IHN0cmluZ1xuICApOiBPYnNlcnZhYmxlPFtDYXRhbG9nUmVjb3JkLCBzdHJpbmcsIGJvb2xlYW5dIHwgbnVsbD4ge1xuICAgIGNvbnN0IGRyYWZ0JCA9IG9mKFxuICAgICAgd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKFxuICAgICAgICB0aGlzLmdldExvY2FsU3RvcmFnZUtleUZvclJlY29yZCh1bmlxdWVJZGVudGlmaWVyKVxuICAgICAgKVxuICAgIClcbiAgICBjb25zdCByZWNvcmRBc1htbCQgPSB0aGlzLmxvYWRSZWNvcmRBc1htbCh1bmlxdWVJZGVudGlmaWVyKVxuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFtkcmFmdCQsIHJlY29yZEFzWG1sJF0pLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKFtkcmFmdCwgcmVjb3JkQXNYbWxdKSA9PiB7XG4gICAgICAgIGNvbnN0IHhtbCA9IGRyYWZ0ID8/IHJlY29yZEFzWG1sXG4gICAgICAgIGNvbnN0IGlzU2F2ZWRBbHJlYWR5ID0gcmVjb3JkQXNYbWwgIT09IG51bGxcbiAgICAgICAgcmV0dXJuIGZpbmRDb252ZXJ0ZXJGb3JEb2N1bWVudCh4bWwpXG4gICAgICAgICAgLnJlYWRSZWNvcmQoeG1sKVxuICAgICAgICAgIC50aGVuKFxuICAgICAgICAgICAgKHJlY29yZCkgPT5cbiAgICAgICAgICAgICAgW3JlY29yZCwgeG1sLCBpc1NhdmVkQWxyZWFkeV0gYXMgW0NhdGFsb2dSZWNvcmQsIHN0cmluZywgYm9vbGVhbl1cbiAgICAgICAgICApXG4gICAgICB9KVxuICAgIClcbiAgfVxuXG4gIG9wZW5SZWNvcmRGb3JEdXBsaWNhdGlvbihcbiAgICB1bmlxdWVJZGVudGlmaWVyOiBzdHJpbmdcbiAgKTogT2JzZXJ2YWJsZTxbQ2F0YWxvZ1JlY29yZCwgc3RyaW5nLCBmYWxzZV0gfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMubG9hZFJlY29yZEFzWG1sKHVuaXF1ZUlkZW50aWZpZXIpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoYXN5bmMgKHJlY29yZEFzWG1sKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbnZlcnRlciA9IGZpbmRDb252ZXJ0ZXJGb3JEb2N1bWVudChyZWNvcmRBc1htbClcbiAgICAgICAgY29uc3QgcmVjb3JkID0gYXdhaXQgY29udmVydGVyLnJlYWRSZWNvcmQocmVjb3JkQXNYbWwpXG4gICAgICAgIHJlY29yZC51bmlxdWVJZGVudGlmaWVyID0gYCR7VEVNUE9SQVJZX0lEX1BSRUZJWH0ke0RhdGUubm93KCl9YFxuICAgICAgICByZWNvcmQudGl0bGUgPSBgJHtyZWNvcmQudGl0bGV9IChDb3B5KWBcbiAgICAgICAgY29uc3QgeG1sID0gYXdhaXQgY29udmVydGVyLndyaXRlUmVjb3JkKHJlY29yZCwgcmVjb3JkQXNYbWwpXG4gICAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShcbiAgICAgICAgICB0aGlzLmdldExvY2FsU3RvcmFnZUtleUZvclJlY29yZChyZWNvcmQudW5pcXVlSWRlbnRpZmllciksXG4gICAgICAgICAgeG1sXG4gICAgICAgIClcbiAgICAgICAgdGhpcy5fZHJhZnRzQ2hhbmdlZC5uZXh0KClcbiAgICAgICAgcmV0dXJuIFtyZWNvcmQsIHhtbCwgZmFsc2VdIGFzIFtDYXRhbG9nUmVjb3JkLCBzdHJpbmcsIGZhbHNlXVxuICAgICAgfSlcbiAgICApXG4gIH1cblxuICBwcml2YXRlIHNlcmlhbGl6ZVJlY29yZFRvWG1sKFxuICAgIHJlY29yZDogQ2F0YWxvZ1JlY29yZCxcbiAgICByZWZlcmVuY2VSZWNvcmRTb3VyY2U/OiBzdHJpbmdcbiAgKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICAvLyBpZiB0aGVyZSdzIGEgcmVmZXJlbmNlIHJlY29yZCwgdXNlIHRoYXQgc3RhbmRhcmQ7IG90aGVyd2lzZSwgdXNlIGlzbzE5MTM5XG4gICAgY29uc3QgY29udmVydGVyID0gcmVmZXJlbmNlUmVjb3JkU291cmNlXG4gICAgICA/IGZpbmRDb252ZXJ0ZXJGb3JEb2N1bWVudChyZWZlcmVuY2VSZWNvcmRTb3VyY2UpXG4gICAgICA6IG5ldyBJc28xOTEzOUNvbnZlcnRlcigpXG4gICAgcmV0dXJuIGZyb20oY29udmVydGVyLndyaXRlUmVjb3JkKHJlY29yZCwgcmVmZXJlbmNlUmVjb3JkU291cmNlKSlcbiAgfVxuXG4gIHNhdmVSZWNvcmQoXG4gICAgcmVjb3JkOiBDYXRhbG9nUmVjb3JkLFxuICAgIHJlZmVyZW5jZVJlY29yZFNvdXJjZT86IHN0cmluZ1xuICApOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLnNlcmlhbGl6ZVJlY29yZFRvWG1sKHJlY29yZCwgcmVmZXJlbmNlUmVjb3JkU291cmNlKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKChyZWNvcmRYbWwpID0+XG4gICAgICAgIHRoaXMuZ240UmVjb3Jkc0FwaVxuICAgICAgICAgIC5pbnNlcnQoXG4gICAgICAgICAgICAnTUVUQURBVEEnLFxuICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgdHJ1ZSxcbiAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICdPVkVSV1JJVEUnLFxuICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgJ19ub25lXycsXG4gICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICByZWNvcmRYbWxcbiAgICAgICAgICApXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IG1ldGFkYXRhSWQgPSBPYmplY3Qua2V5cyhyZXNwb25zZS5tZXRhZGF0YUluZm9zKVswXVxuICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UubWV0YWRhdGFJbmZvc1ttZXRhZGF0YUlkXVswXS51dWlkXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApXG4gIH1cblxuICBkZWxldGVSZWNvcmQodW5pcXVlSWRlbnRpZmllcjogc3RyaW5nKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuZ240UmVjb3Jkc0FwaS5kZWxldGVSZWNvcmQodW5pcXVlSWRlbnRpZmllcilcbiAgfVxuXG4gIGdlbmVyYXRlVGVtcG9yYXJ5SWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7VEVNUE9SQVJZX0lEX1BSRUZJWH0ke0RhdGUubm93KCl9YFxuICB9XG5cbiAgc2F2ZVJlY29yZEFzRHJhZnQoXG4gICAgcmVjb3JkOiBDYXRhbG9nUmVjb3JkLFxuICAgIHJlZmVyZW5jZVJlY29yZFNvdXJjZT86IHN0cmluZ1xuICApOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLnNlcmlhbGl6ZVJlY29yZFRvWG1sKHJlY29yZCwgcmVmZXJlbmNlUmVjb3JkU291cmNlKS5waXBlKFxuICAgICAgdGFwKChyZWNvcmRYbWwpID0+IHtcbiAgICAgICAgd2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKFxuICAgICAgICAgIHRoaXMuZ2V0TG9jYWxTdG9yYWdlS2V5Rm9yUmVjb3JkKHJlY29yZC51bmlxdWVJZGVudGlmaWVyKSxcbiAgICAgICAgICByZWNvcmRYbWxcbiAgICAgICAgKVxuICAgICAgICB0aGlzLl9kcmFmdHNDaGFuZ2VkLm5leHQoKVxuICAgICAgfSlcbiAgICApXG4gIH1cblxuICBjbGVhclJlY29yZERyYWZ0KHVuaXF1ZUlkZW50aWZpZXI6IHN0cmluZyk6IHZvaWQge1xuICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShcbiAgICAgIHRoaXMuZ2V0TG9jYWxTdG9yYWdlS2V5Rm9yUmVjb3JkKHVuaXF1ZUlkZW50aWZpZXIpXG4gICAgKVxuICAgIHRoaXMuX2RyYWZ0c0NoYW5nZWQubmV4dCgpXG4gIH1cblxuICByZWNvcmRIYXNEcmFmdCh1bmlxdWVJZGVudGlmaWVyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKFxuICAgICAgICB0aGlzLmdldExvY2FsU3RvcmFnZUtleUZvclJlY29yZCh1bmlxdWVJZGVudGlmaWVyKVxuICAgICAgKSAhPT0gbnVsbFxuICAgIClcbiAgfVxuXG4gIGlzUmVjb3JkTm90WWV0U2F2ZWQodW5pcXVlSWRlbnRpZmllcjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHVuaXF1ZUlkZW50aWZpZXIuc3RhcnRzV2l0aChURU1QT1JBUllfSURfUFJFRklYKVxuICB9XG5cbiAgLy8gZ2VuZXJhdGVkIGJ5IGNvcGlsb3RcbiAgZ2V0QWxsRHJhZnRzKCk6IE9ic2VydmFibGU8Q2F0YWxvZ1JlY29yZFtdPiB7XG4gICAgY29uc3QgaXRlbXMgPSB7IC4uLndpbmRvdy5sb2NhbFN0b3JhZ2UgfVxuICAgIGNvbnN0IGRyYWZ0cyA9IE9iamVjdC5rZXlzKGl0ZW1zKVxuICAgICAgLmZpbHRlcigoa2V5KSA9PiBrZXkuc3RhcnRzV2l0aCgnZ2VvbmV0d29yay11aS1kcmFmdC0nKSlcbiAgICAgIC5tYXAoKGtleSkgPT4gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKGtleSkpXG4gICAgICAuZmlsdGVyKChkcmFmdCkgPT4gZHJhZnQgIT09IG51bGwpXG4gICAgcmV0dXJuIGZyb20oXG4gICAgICBQcm9taXNlLmFsbChcbiAgICAgICAgZHJhZnRzLm1hcCgoZHJhZnQpID0+IGZpbmRDb252ZXJ0ZXJGb3JEb2N1bWVudChkcmFmdCkucmVhZFJlY29yZChkcmFmdCkpXG4gICAgICApXG4gICAgKVxuICB9XG59XG4iXX0=
@@ -1,3 +1,4 @@
1
+ import { marker } from '@biesbjerg/ngx-translate-extract-marker';
1
2
  export const RoleValues = [
2
3
  'unspecified',
3
4
  'other',
@@ -21,4 +22,30 @@ export const RoleValues = [
21
22
  'stakeholder',
22
23
  'user', // Party who uses the resource
23
24
  ];
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL3JlY29yZC9jb250YWN0Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRztJQUN4QixhQUFhO0lBQ2IsT0FBTztJQUNQLFFBQVE7SUFDUixjQUFjO0lBQ2QsYUFBYTtJQUNiLFdBQVc7SUFDWCxhQUFhO0lBQ2IsUUFBUTtJQUNSLFFBQVE7SUFDUixVQUFVO0lBQ1YsWUFBWTtJQUNaLE9BQU87SUFDUCxrQkFBa0I7SUFDbEIsd0JBQXdCO0lBQ3hCLFdBQVc7SUFDWCxXQUFXO0lBQ1gsbUJBQW1CO0lBQ25CLGVBQWU7SUFDZixTQUFTO0lBQ1QsYUFBYTtJQUNiLE1BQU0sRUFBRSw4QkFBOEI7Q0FDdkMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9yZ2FuaXphdGlvbiB9IGZyb20gJy4vb3JnYW5pemF0aW9uLm1vZGVsJ1xuXG5leHBvcnQgY29uc3QgUm9sZVZhbHVlcyA9IFtcbiAgJ3Vuc3BlY2lmaWVkJyxcbiAgJ290aGVyJyxcbiAgJ2F1dGhvcicsIC8vIFBhcnR5IHdobyBhdXRob3JlZCB0aGUgcmVzb3VyY2VcbiAgJ2NvbGxhYm9yYXRvcicsIC8vIHBhcnR5IHdobyBhc3Npc3RzIHdpdGggdGhlIGdlbmVyYXRpb24gb2YgdGhlIHJlc291cmNlIG90aGVyIHRoYW4gdGhlIHByaW5jaXBhbCBpbnZlc3RpZ2F0b3JcbiAgJ2NvbnRyaWJ1dG9yJywgLy8gcGFydHkgY29udHJpYnV0aW5nIHRvIHRoZSByZXNvdXJjZVxuICAnY3VzdG9kaWFuJywgLy8gUGFydHkgdGhhdCBhY2NlcHRzIGFjY291bnRhYmlsaXR5IGFuZCByZXNwb25zaWJpbGl0eSBmb3IgdGhlIGRhdGEgYW5kIGVuc3VyZXMgYXBwcm9wcmlhdGUgY2FyZSBhbmQgbWFpbnRlbmFuY2Ugb2YgdGhlIHJlc291cmNlXG4gICdkaXN0cmlidXRvcicsIC8vIFBhcnR5IHdobyBkaXN0cmlidXRlcyB0aGUgcmVzb3VyY2VcbiAgJ2VkaXRvcicsIC8vIHBhcnR5IHdobyByZXZpZXdlZCBvciBtb2RpZmllZCB0aGUgcmVzb3VyY2UgdG8gaW1wcm92ZSB0aGUgY29udGVudFxuICAnZnVuZGVyJywgLy8gcGFydHkgcHJvdmlkaW5nIG1vbmV0YXJ5IHN1cHBvcnQgZm9yIHRoZSByZXNvdXJjZVxuICAnbWVkaWF0b3InLCAvLyBhIGNsYXNzIG9mIGVudGl0eSB0aGF0IG1lZGlhdGVzIGFjY2VzcyB0byB0aGUgcmVzb3VyY2UgYW5kIGZvciB3aG9tIHRoZSByZXNvdXJjZSBpcyBpbnRlbmRlZCBvciB1c2VmdWxcbiAgJ29yaWdpbmF0b3InLCAvLyBQYXJ0eSB3aG8gY3JlYXRlZCB0aGUgcmVzb3VyY2VcbiAgJ293bmVyJywgLy8gUGFydHkgdGhhdCBvd25zIHRoZSByZXNvdXJjZVxuICAncG9pbnRfb2ZfY29udGFjdCcsIC8vIFBhcnR5IHdobyBjYW4gYmUgY29udGFjdGVkIGZvciBhY3F1aXJpbmcga25vd2xlZGdlIGFib3V0IG9yIGFjcXVpc2l0aW9uIG9mIHRoZSByZXNvdXJjZVxuICAncHJpbmNpcGFsX2ludmVzdGlnYXRvcicsIC8vIEtleSBwYXJ0eSByZXNwb25zaWJsZSBmb3IgZ2F0aGVyaW5nIGluZm9ybWF0aW9uIGFuZCBjb25kdWN0aW5nIHJlc2VhcmNoXG4gICdwcm9jZXNzb3InLCAvLyBQYXJ0eSB3aG8gaGFzIHByb2Nlc3NlZCB0aGUgZGF0YSBpbiBhIG1hbm5lciBzdWNoIHRoYXQgdGhlIHJlc291cmNlIGhhcyBiZWVuIG1vZGlmaWVkXG4gICdwdWJsaXNoZXInLCAvLyBQYXJ0eSB3aG8gcHVibGlzaGVkIHRoZSByZXNvdXJjZVxuICAncmVzb3VyY2VfcHJvdmlkZXInLCAvLyBQYXJ0eSB0aGF0IHN1cHBsaWVzIHRoZSByZXNvdXJjZVxuICAncmlnaHRzX2hvbGRlcicsIC8vIHBhcnR5IG93bmluZyBvciBtYW5hZ2luZyByaWdodHMgb3ZlciB0aGUgcmVzb3VyY2VcbiAgJ3Nwb25zb3InLCAvLyBwYXJ0eSB0aGF0IHNwb25zb3JzIHRoZSByZXNvdXJjZVxuICAnc3Rha2Vob2xkZXInLCAvLyBwYXJ0eSB3aG8gaGFzIGFuIGludGVyZXN0IGluIHRoZSByZXNvdXJjZSBvciB0aGUgdXNlIG9mIHRoZSByZXNvdXJjZVxuICAndXNlcicsIC8vIFBhcnR5IHdobyB1c2VzIHRoZSByZXNvdXJjZVxuXVxuXG5leHBvcnQgdHlwZSBSb2xlID0gdHlwZW9mIFJvbGVWYWx1ZXNbbnVtYmVyXVxuXG5leHBvcnQgaW50ZXJmYWNlIEluZGl2aWR1YWwge1xuICBmaXJzdE5hbWU/OiBzdHJpbmdcbiAgbGFzdE5hbWU/OiBzdHJpbmdcbiAgZW1haWw6IHN0cmluZ1xuICByb2xlOiBSb2xlXG4gIHBvc2l0aW9uPzogc3RyaW5nXG4gIG9yZ2FuaXphdGlvbjogT3JnYW5pemF0aW9uXG4gIGFkZHJlc3M/OiBzdHJpbmdcbiAgcGhvbmU/OiBzdHJpbmdcbn1cbiJdfQ==
25
+ export const RoleLabels = new Map([
26
+ ['unspecified', marker('domain.contact.role.unspecified')],
27
+ ['other', marker('domain.contact.role.other')],
28
+ ['author', marker('domain.contact.role.author')],
29
+ ['collaborator', marker('domain.contact.role.collaborator')],
30
+ ['contributor', marker('domain.contact.role.contributor')],
31
+ ['custodian', marker('domain.contact.role.custodian')],
32
+ ['distributor', marker('domain.contact.role.distributor')],
33
+ ['editor', marker('domain.contact.role.editor')],
34
+ ['funder', marker('domain.contact.role.funder')],
35
+ ['mediator', marker('domain.contact.role.mediator')],
36
+ ['originator', marker('domain.contact.role.originator')],
37
+ ['owner', marker('domain.contact.role.owner')],
38
+ ['point_of_contact', marker('domain.contact.role.point_of_contact')],
39
+ [
40
+ 'principal_investigator',
41
+ marker('domain.contact.role.principal_investigator'),
42
+ ],
43
+ ['processor', marker('domain.contact.role.processor')],
44
+ ['publisher', marker('domain.contact.role.publisher')],
45
+ ['resource_provider', marker('domain.contact.role.resource_provider')],
46
+ ['rights_holder', marker('domain.contact.role.rights_holder')],
47
+ ['sponsor', marker('domain.contact.role.sponsor')],
48
+ ['stakeholder', marker('domain.contact.role.stakeholder')],
49
+ ['user', marker('domain.contact.role.user')],
50
+ ]);
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL3JlY29yZC9jb250YWN0Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQTtBQUVoRSxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUc7SUFDeEIsYUFBYTtJQUNiLE9BQU87SUFDUCxRQUFRO0lBQ1IsY0FBYztJQUNkLGFBQWE7SUFDYixXQUFXO0lBQ1gsYUFBYTtJQUNiLFFBQVE7SUFDUixRQUFRO0lBQ1IsVUFBVTtJQUNWLFlBQVk7SUFDWixPQUFPO0lBQ1Asa0JBQWtCO0lBQ2xCLHdCQUF3QjtJQUN4QixXQUFXO0lBQ1gsV0FBVztJQUNYLG1CQUFtQjtJQUNuQixlQUFlO0lBQ2YsU0FBUztJQUNULGFBQWE7SUFDYixNQUFNLEVBQUUsOEJBQThCO0NBQ3ZDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsSUFBSSxHQUFHLENBQWU7SUFDOUMsQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLGlDQUFpQyxDQUFDLENBQUM7SUFDMUQsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLDJCQUEyQixDQUFDLENBQUM7SUFDOUMsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFDaEQsQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDLGtDQUFrQyxDQUFDLENBQUM7SUFDNUQsQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLGlDQUFpQyxDQUFDLENBQUM7SUFDMUQsQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLCtCQUErQixDQUFDLENBQUM7SUFDdEQsQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLGlDQUFpQyxDQUFDLENBQUM7SUFDMUQsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFDaEQsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFDaEQsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLDhCQUE4QixDQUFDLENBQUM7SUFDcEQsQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLGdDQUFnQyxDQUFDLENBQUM7SUFDeEQsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLDJCQUEyQixDQUFDLENBQUM7SUFDOUMsQ0FBQyxrQkFBa0IsRUFBRSxNQUFNLENBQUMsc0NBQXNDLENBQUMsQ0FBQztJQUNwRTtRQUNFLHdCQUF3QjtRQUN4QixNQUFNLENBQUMsNENBQTRDLENBQUM7S0FDckQ7SUFDRCxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsK0JBQStCLENBQUMsQ0FBQztJQUN0RCxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsK0JBQStCLENBQUMsQ0FBQztJQUN0RCxDQUFDLG1CQUFtQixFQUFFLE1BQU0sQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO0lBQ3RFLENBQUMsZUFBZSxFQUFFLE1BQU0sQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO0lBQzlELENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0lBQ2xELENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO0lBQzFELENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0NBQzdDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9yZ2FuaXphdGlvbiB9IGZyb20gJy4vb3JnYW5pemF0aW9uLm1vZGVsJ1xuaW1wb3J0IHsgbWFya2VyIH0gZnJvbSAnQGJpZXNiamVyZy9uZ3gtdHJhbnNsYXRlLWV4dHJhY3QtbWFya2VyJ1xuXG5leHBvcnQgY29uc3QgUm9sZVZhbHVlcyA9IFtcbiAgJ3Vuc3BlY2lmaWVkJyxcbiAgJ290aGVyJyxcbiAgJ2F1dGhvcicsIC8vIFBhcnR5IHdobyBhdXRob3JlZCB0aGUgcmVzb3VyY2VcbiAgJ2NvbGxhYm9yYXRvcicsIC8vIHBhcnR5IHdobyBhc3Npc3RzIHdpdGggdGhlIGdlbmVyYXRpb24gb2YgdGhlIHJlc291cmNlIG90aGVyIHRoYW4gdGhlIHByaW5jaXBhbCBpbnZlc3RpZ2F0b3JcbiAgJ2NvbnRyaWJ1dG9yJywgLy8gcGFydHkgY29udHJpYnV0aW5nIHRvIHRoZSByZXNvdXJjZVxuICAnY3VzdG9kaWFuJywgLy8gUGFydHkgdGhhdCBhY2NlcHRzIGFjY291bnRhYmlsaXR5IGFuZCByZXNwb25zaWJpbGl0eSBmb3IgdGhlIGRhdGEgYW5kIGVuc3VyZXMgYXBwcm9wcmlhdGUgY2FyZSBhbmQgbWFpbnRlbmFuY2Ugb2YgdGhlIHJlc291cmNlXG4gICdkaXN0cmlidXRvcicsIC8vIFBhcnR5IHdobyBkaXN0cmlidXRlcyB0aGUgcmVzb3VyY2VcbiAgJ2VkaXRvcicsIC8vIHBhcnR5IHdobyByZXZpZXdlZCBvciBtb2RpZmllZCB0aGUgcmVzb3VyY2UgdG8gaW1wcm92ZSB0aGUgY29udGVudFxuICAnZnVuZGVyJywgLy8gcGFydHkgcHJvdmlkaW5nIG1vbmV0YXJ5IHN1cHBvcnQgZm9yIHRoZSByZXNvdXJjZVxuICAnbWVkaWF0b3InLCAvLyBhIGNsYXNzIG9mIGVudGl0eSB0aGF0IG1lZGlhdGVzIGFjY2VzcyB0byB0aGUgcmVzb3VyY2UgYW5kIGZvciB3aG9tIHRoZSByZXNvdXJjZSBpcyBpbnRlbmRlZCBvciB1c2VmdWxcbiAgJ29yaWdpbmF0b3InLCAvLyBQYXJ0eSB3aG8gY3JlYXRlZCB0aGUgcmVzb3VyY2VcbiAgJ293bmVyJywgLy8gUGFydHkgdGhhdCBvd25zIHRoZSByZXNvdXJjZVxuICAncG9pbnRfb2ZfY29udGFjdCcsIC8vIFBhcnR5IHdobyBjYW4gYmUgY29udGFjdGVkIGZvciBhY3F1aXJpbmcga25vd2xlZGdlIGFib3V0IG9yIGFjcXVpc2l0aW9uIG9mIHRoZSByZXNvdXJjZVxuICAncHJpbmNpcGFsX2ludmVzdGlnYXRvcicsIC8vIEtleSBwYXJ0eSByZXNwb25zaWJsZSBmb3IgZ2F0aGVyaW5nIGluZm9ybWF0aW9uIGFuZCBjb25kdWN0aW5nIHJlc2VhcmNoXG4gICdwcm9jZXNzb3InLCAvLyBQYXJ0eSB3aG8gaGFzIHByb2Nlc3NlZCB0aGUgZGF0YSBpbiBhIG1hbm5lciBzdWNoIHRoYXQgdGhlIHJlc291cmNlIGhhcyBiZWVuIG1vZGlmaWVkXG4gICdwdWJsaXNoZXInLCAvLyBQYXJ0eSB3aG8gcHVibGlzaGVkIHRoZSByZXNvdXJjZVxuICAncmVzb3VyY2VfcHJvdmlkZXInLCAvLyBQYXJ0eSB0aGF0IHN1cHBsaWVzIHRoZSByZXNvdXJjZVxuICAncmlnaHRzX2hvbGRlcicsIC8vIHBhcnR5IG93bmluZyBvciBtYW5hZ2luZyByaWdodHMgb3ZlciB0aGUgcmVzb3VyY2VcbiAgJ3Nwb25zb3InLCAvLyBwYXJ0eSB0aGF0IHNwb25zb3JzIHRoZSByZXNvdXJjZVxuICAnc3Rha2Vob2xkZXInLCAvLyBwYXJ0eSB3aG8gaGFzIGFuIGludGVyZXN0IGluIHRoZSByZXNvdXJjZSBvciB0aGUgdXNlIG9mIHRoZSByZXNvdXJjZVxuICAndXNlcicsIC8vIFBhcnR5IHdobyB1c2VzIHRoZSByZXNvdXJjZVxuXVxuXG5leHBvcnQgY29uc3QgUm9sZUxhYmVscyA9IG5ldyBNYXA8Um9sZSwgc3RyaW5nPihbXG4gIFsndW5zcGVjaWZpZWQnLCBtYXJrZXIoJ2RvbWFpbi5jb250YWN0LnJvbGUudW5zcGVjaWZpZWQnKV0sXG4gIFsnb3RoZXInLCBtYXJrZXIoJ2RvbWFpbi5jb250YWN0LnJvbGUub3RoZXInKV0sXG4gIFsnYXV0aG9yJywgbWFya2VyKCdkb21haW4uY29udGFjdC5yb2xlLmF1dGhvcicpXSxcbiAgWydjb2xsYWJvcmF0b3InLCBtYXJrZXIoJ2RvbWFpbi5jb250YWN0LnJvbGUuY29sbGFib3JhdG9yJyldLFxuICBbJ2NvbnRyaWJ1dG9yJywgbWFya2VyKCdkb21haW4uY29udGFjdC5yb2xlLmNvbnRyaWJ1dG9yJyldLFxuICBbJ2N1c3RvZGlhbicsIG1hcmtlcignZG9tYWluLmNvbnRhY3Qucm9sZS5jdXN0b2RpYW4nKV0sXG4gIFsnZGlzdHJpYnV0b3InLCBtYXJrZXIoJ2RvbWFpbi5jb250YWN0LnJvbGUuZGlzdHJpYnV0b3InKV0sXG4gIFsnZWRpdG9yJywgbWFya2VyKCdkb21haW4uY29udGFjdC5yb2xlLmVkaXRvcicpXSxcbiAgWydmdW5kZXInLCBtYXJrZXIoJ2RvbWFpbi5jb250YWN0LnJvbGUuZnVuZGVyJyldLFxuICBbJ21lZGlhdG9yJywgbWFya2VyKCdkb21haW4uY29udGFjdC5yb2xlLm1lZGlhdG9yJyldLFxuICBbJ29yaWdpbmF0b3InLCBtYXJrZXIoJ2RvbWFpbi5jb250YWN0LnJvbGUub3JpZ2luYXRvcicpXSxcbiAgWydvd25lcicsIG1hcmtlcignZG9tYWluLmNvbnRhY3Qucm9sZS5vd25lcicpXSxcbiAgWydwb2ludF9vZl9jb250YWN0JywgbWFya2VyKCdkb21haW4uY29udGFjdC5yb2xlLnBvaW50X29mX2NvbnRhY3QnKV0sXG4gIFtcbiAgICAncHJpbmNpcGFsX2ludmVzdGlnYXRvcicsXG4gICAgbWFya2VyKCdkb21haW4uY29udGFjdC5yb2xlLnByaW5jaXBhbF9pbnZlc3RpZ2F0b3InKSxcbiAgXSxcbiAgWydwcm9jZXNzb3InLCBtYXJrZXIoJ2RvbWFpbi5jb250YWN0LnJvbGUucHJvY2Vzc29yJyldLFxuICBbJ3B1Ymxpc2hlcicsIG1hcmtlcignZG9tYWluLmNvbnRhY3Qucm9sZS5wdWJsaXNoZXInKV0sXG4gIFsncmVzb3VyY2VfcHJvdmlkZXInLCBtYXJrZXIoJ2RvbWFpbi5jb250YWN0LnJvbGUucmVzb3VyY2VfcHJvdmlkZXInKV0sXG4gIFsncmlnaHRzX2hvbGRlcicsIG1hcmtlcignZG9tYWluLmNvbnRhY3Qucm9sZS5yaWdodHNfaG9sZGVyJyldLFxuICBbJ3Nwb25zb3InLCBtYXJrZXIoJ2RvbWFpbi5jb250YWN0LnJvbGUuc3BvbnNvcicpXSxcbiAgWydzdGFrZWhvbGRlcicsIG1hcmtlcignZG9tYWluLmNvbnRhY3Qucm9sZS5zdGFrZWhvbGRlcicpXSxcbiAgWyd1c2VyJywgbWFya2VyKCdkb21haW4uY29udGFjdC5yb2xlLnVzZXInKV0sXG5dKVxuXG5leHBvcnQgdHlwZSBSb2xlID0gdHlwZW9mIFJvbGVWYWx1ZXNbbnVtYmVyXVxuXG5leHBvcnQgaW50ZXJmYWNlIEluZGl2aWR1YWwge1xuICBmaXJzdE5hbWU/OiBzdHJpbmdcbiAgbGFzdE5hbWU/OiBzdHJpbmdcbiAgZW1haWw6IHN0cmluZ1xuICByb2xlOiBSb2xlXG4gIHBvc2l0aW9uPzogc3RyaW5nXG4gIG9yZ2FuaXphdGlvbjogT3JnYW5pemF0aW9uXG4gIGFkZHJlc3M/OiBzdHJpbmdcbiAgcGhvbmU/OiBzdHJpbmdcbn1cbiJdfQ==
@@ -1,3 +1,3 @@
1
1
  export class RecordsRepositoryInterface {
2
2
  }
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3Jkcy1yZXBvc2l0b3J5LmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL3JlcG9zaXRvcnkvcmVjb3Jkcy1yZXBvc2l0b3J5LmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVQSxNQUFNLE9BQWdCLDBCQUEwQjtDQTJEL0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcydcbmltcG9ydCB7XG4gIEFnZ3JlZ2F0aW9ucyxcbiAgQWdncmVnYXRpb25zUGFyYW1zLFxuICBGaWVsZEZpbHRlcnMsXG4gIFNlYXJjaFBhcmFtcyxcbiAgU2VhcmNoUmVzdWx0cyxcbn0gZnJvbSAnLi4vbW9kZWwvc2VhcmNoJ1xuaW1wb3J0IHsgQ2F0YWxvZ1JlY29yZCB9IGZyb20gJy4uL21vZGVsL3JlY29yZCdcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFJlY29yZHNSZXBvc2l0b3J5SW50ZXJmYWNlIHtcbiAgYWJzdHJhY3Qgc2VhcmNoKHBhcmFtczogU2VhcmNoUGFyYW1zKTogT2JzZXJ2YWJsZTxTZWFyY2hSZXN1bHRzPlxuICBhYnN0cmFjdCBnZXRNYXRjaGVzQ291bnQoZmlsdGVyczogRmllbGRGaWx0ZXJzKTogT2JzZXJ2YWJsZTxudW1iZXI+XG4gIGFic3RyYWN0IGdldFJlY29yZCh1bmlxdWVJZGVudGlmaWVyOiBzdHJpbmcpOiBPYnNlcnZhYmxlPENhdGFsb2dSZWNvcmQgfCBudWxsPlxuICBhYnN0cmFjdCBhZ2dyZWdhdGUocGFyYW1zOiBBZ2dyZWdhdGlvbnNQYXJhbXMpOiBPYnNlcnZhYmxlPEFnZ3JlZ2F0aW9ucz5cbiAgYWJzdHJhY3QgZ2V0U2ltaWxhclJlY29yZHMoXG4gICAgc2ltaWxhclRvOiBDYXRhbG9nUmVjb3JkXG4gICk6IE9ic2VydmFibGU8Q2F0YWxvZ1JlY29yZFtdPlxuICBhYnN0cmFjdCBmdXp6eVNlYXJjaChxdWVyeTogc3RyaW5nKTogT2JzZXJ2YWJsZTxTZWFyY2hSZXN1bHRzPlxuXG4gIC8qKlxuICAgKiBUaGlzIGVtaXRzIG9uY2U6XG4gICAqIC0gcmVjb3JkIG9iamVjdDsgaWYgYSBkcmFmdCBleGlzdHMsIHRoaXMgd2lsbCByZXR1cm4gaXRcbiAgICogLSBzZXJpYWxpemVkIHJlcHJlc2VudGF0aW9uIG9mIHRoZSByZWNvcmQgYXMgdGV4dFxuICAgKiAtIGJvb2xlYW4gaW5kaWNhdGluZyBpZiB0aGUgcmVjb3JkIGhhcyBiZWVuIHNhdmVkIGF0IGxlYXN0IG9uY2UgaW4gYSBmaW5hbCB2ZXJzaW9uIChpLmUuIG5vdCBvbmx5IGFzIGRyYWZ0KVxuICAgKiBAcGFyYW0gdW5pcXVlSWRlbnRpZmllclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPFtDYXRhbG9nUmVjb3JkLCBzdHJpbmcsIGJvb2xlYW5dIHwgbnVsbD5cbiAgICovXG4gIGFic3RyYWN0IG9wZW5SZWNvcmRGb3JFZGl0aW9uKFxuICAgIHVuaXF1ZUlkZW50aWZpZXI6IHN0cmluZ1xuICApOiBPYnNlcnZhYmxlPFtDYXRhbG9nUmVjb3JkLCBzdHJpbmcsIGJvb2xlYW5dIHwgbnVsbD5cblxuICAvKipcbiAgICogVGhpcyBlbWl0cyBvbmNlOlxuICAgKiAtIHJlY29yZCBvYmplY3Qgd2l0aCBhIG5ldyB1bmlxdWUgaWRlbnRpZmllciBhbmQgc3VmZml4ZWQgdGl0bGVcbiAgICogLSBzZXJpYWxpemVkIHJlcHJlc2VudGF0aW9uIG9mIHRoZSByZWNvcmQgYXMgdGV4dFxuICAgKiAtIGZhbHNlLCBhcyB0aGUgZHVwbGljYXRlZCByZWNvcmQgaXMgYWx3YXlzIGEgZHJhZnRcbiAgICogQHBhcmFtIHVuaXF1ZUlkZW50aWZpZXJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxbQ2F0YWxvZ1JlY29yZCwgc3RyaW5nLCBmYWxzZV0gfCBudWxsPlxuICAgKi9cbiAgYWJzdHJhY3Qgb3BlblJlY29yZEZvckR1cGxpY2F0aW9uKFxuICAgIHVuaXF1ZUlkZW50aWZpZXI6IHN0cmluZ1xuICApOiBPYnNlcnZhYmxlPFtDYXRhbG9nUmVjb3JkLCBzdHJpbmcsIGZhbHNlXSB8IG51bGw+XG5cbiAgLyoqXG4gICAqIEBwYXJhbSByZWNvcmRcbiAgICogQHBhcmFtIHJlZmVyZW5jZVJlY29yZFNvdXJjZVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPHN0cmluZz4gUmV0dXJucyB0aGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIHJlY29yZCBhcyBpdCB3YXMgd2hlbiBzYXZlZFxuICAgKi9cbiAgYWJzdHJhY3Qgc2F2ZVJlY29yZChcbiAgICByZWNvcmQ6IENhdGFsb2dSZWNvcmQsXG4gICAgcmVmZXJlbmNlUmVjb3JkU291cmNlPzogc3RyaW5nXG4gICk6IE9ic2VydmFibGU8c3RyaW5nPlxuXG4gIC8qKlxuICAgKiBAcGFyYW0gcmVjb3JkXG4gICAqIEBwYXJhbSByZWZlcmVuY2VSZWNvcmRTb3VyY2VcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxzdHJpbmc+IFJldHVybnMgdGhlIHNvdXJjZSBvZiB0aGUgcmVjb3JkIGFzIGl0IHdhcyBzZXJpYWxpemVkIHdoZW4gc2F2ZWRcbiAgICovXG4gIGFic3RyYWN0IHNhdmVSZWNvcmRBc0RyYWZ0KFxuICAgIHJlY29yZDogQ2F0YWxvZ1JlY29yZCxcbiAgICByZWZlcmVuY2VSZWNvcmRTb3VyY2U/OiBzdHJpbmdcbiAgKTogT2JzZXJ2YWJsZTxzdHJpbmc+XG5cbiAgYWJzdHJhY3QgY2xlYXJSZWNvcmREcmFmdCh1bmlxdWVJZGVudGlmaWVyOiBzdHJpbmcpOiB2b2lkXG4gIGFic3RyYWN0IHJlY29yZEhhc0RyYWZ0KHVuaXF1ZUlkZW50aWZpZXI6IHN0cmluZyk6IGJvb2xlYW5cblxuICAvKiogd2lsbCByZXR1cm4gYWxsIHBlbmRpbmcgZHJhZnRzLCBib3RoIHB1Ymxpc2hlZCBhbmQgbm90IHB1Ymxpc2hlZCAqL1xuICBhYnN0cmFjdCBnZXRBbGxEcmFmdHMoKTogT2JzZXJ2YWJsZTxDYXRhbG9nUmVjb3JkW10+XG59XG4iXX0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3Jkcy1yZXBvc2l0b3J5LmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL3JlcG9zaXRvcnkvcmVjb3Jkcy1yZXBvc2l0b3J5LmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVQSxNQUFNLE9BQWdCLDBCQUEwQjtDQXFFL0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcydcbmltcG9ydCB7XG4gIEFnZ3JlZ2F0aW9ucyxcbiAgQWdncmVnYXRpb25zUGFyYW1zLFxuICBGaWVsZEZpbHRlcnMsXG4gIFNlYXJjaFBhcmFtcyxcbiAgU2VhcmNoUmVzdWx0cyxcbn0gZnJvbSAnLi4vbW9kZWwvc2VhcmNoJ1xuaW1wb3J0IHsgQ2F0YWxvZ1JlY29yZCB9IGZyb20gJy4uL21vZGVsL3JlY29yZCdcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFJlY29yZHNSZXBvc2l0b3J5SW50ZXJmYWNlIHtcbiAgYWJzdHJhY3Qgc2VhcmNoKHBhcmFtczogU2VhcmNoUGFyYW1zKTogT2JzZXJ2YWJsZTxTZWFyY2hSZXN1bHRzPlxuICBhYnN0cmFjdCBnZXRNYXRjaGVzQ291bnQoZmlsdGVyczogRmllbGRGaWx0ZXJzKTogT2JzZXJ2YWJsZTxudW1iZXI+XG4gIGFic3RyYWN0IGdldFJlY29yZCh1bmlxdWVJZGVudGlmaWVyOiBzdHJpbmcpOiBPYnNlcnZhYmxlPENhdGFsb2dSZWNvcmQgfCBudWxsPlxuICBhYnN0cmFjdCBhZ2dyZWdhdGUocGFyYW1zOiBBZ2dyZWdhdGlvbnNQYXJhbXMpOiBPYnNlcnZhYmxlPEFnZ3JlZ2F0aW9ucz5cbiAgYWJzdHJhY3QgZ2V0U2ltaWxhclJlY29yZHMoXG4gICAgc2ltaWxhclRvOiBDYXRhbG9nUmVjb3JkXG4gICk6IE9ic2VydmFibGU8Q2F0YWxvZ1JlY29yZFtdPlxuICBhYnN0cmFjdCBmdXp6eVNlYXJjaChxdWVyeTogc3RyaW5nKTogT2JzZXJ2YWJsZTxTZWFyY2hSZXN1bHRzPlxuXG4gIC8qKlxuICAgKiBUaGlzIGVtaXRzIG9uY2U6XG4gICAqIC0gcmVjb3JkIG9iamVjdDsgaWYgYSBkcmFmdCBleGlzdHMsIHRoaXMgd2lsbCByZXR1cm4gaXRcbiAgICogLSBzZXJpYWxpemVkIHJlcHJlc2VudGF0aW9uIG9mIHRoZSByZWNvcmQgYXMgdGV4dFxuICAgKiAtIGJvb2xlYW4gaW5kaWNhdGluZyBpZiB0aGUgcmVjb3JkIGhhcyBiZWVuIHNhdmVkIGF0IGxlYXN0IG9uY2UgaW4gYSBmaW5hbCB2ZXJzaW9uIChpLmUuIG5vdCBvbmx5IGFzIGRyYWZ0KVxuICAgKiBAcGFyYW0gdW5pcXVlSWRlbnRpZmllclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPFtDYXRhbG9nUmVjb3JkLCBzdHJpbmcsIGJvb2xlYW5dIHwgbnVsbD5cbiAgICovXG4gIGFic3RyYWN0IG9wZW5SZWNvcmRGb3JFZGl0aW9uKFxuICAgIHVuaXF1ZUlkZW50aWZpZXI6IHN0cmluZ1xuICApOiBPYnNlcnZhYmxlPFtDYXRhbG9nUmVjb3JkLCBzdHJpbmcsIGJvb2xlYW5dIHwgbnVsbD5cblxuICAvKipcbiAgICogVGhpcyBlbWl0cyBvbmNlOlxuICAgKiAtIHJlY29yZCBvYmplY3Qgd2l0aCBhIG5ldyB1bmlxdWUgaWRlbnRpZmllciBhbmQgc3VmZml4ZWQgdGl0bGVcbiAgICogLSBzZXJpYWxpemVkIHJlcHJlc2VudGF0aW9uIG9mIHRoZSByZWNvcmQgYXMgdGV4dFxuICAgKiAtIGZhbHNlLCBhcyB0aGUgZHVwbGljYXRlZCByZWNvcmQgaXMgYWx3YXlzIGEgZHJhZnRcbiAgICogQHBhcmFtIHVuaXF1ZUlkZW50aWZpZXJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxbQ2F0YWxvZ1JlY29yZCwgc3RyaW5nLCBmYWxzZV0gfCBudWxsPlxuICAgKi9cbiAgYWJzdHJhY3Qgb3BlblJlY29yZEZvckR1cGxpY2F0aW9uKFxuICAgIHVuaXF1ZUlkZW50aWZpZXI6IHN0cmluZ1xuICApOiBPYnNlcnZhYmxlPFtDYXRhbG9nUmVjb3JkLCBzdHJpbmcsIGZhbHNlXSB8IG51bGw+XG5cbiAgLyoqXG4gICAqIEBwYXJhbSByZWNvcmRcbiAgICogQHBhcmFtIHJlZmVyZW5jZVJlY29yZFNvdXJjZVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPHN0cmluZz4gUmV0dXJucyB0aGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIHJlY29yZCBhcyBpdCB3YXMgd2hlbiBzYXZlZFxuICAgKi9cbiAgYWJzdHJhY3Qgc2F2ZVJlY29yZChcbiAgICByZWNvcmQ6IENhdGFsb2dSZWNvcmQsXG4gICAgcmVmZXJlbmNlUmVjb3JkU291cmNlPzogc3RyaW5nXG4gICk6IE9ic2VydmFibGU8c3RyaW5nPlxuXG4gIC8qKlxuICAgKiBAcGFyYW0gdW5pcXVlSWRlbnRpZmllclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPHZvaWQ+IFJldHVybnMgd2hlbiByZWNvcmQgaXMgZGVsZXRlZFxuICAgKi9cbiAgYWJzdHJhY3QgZGVsZXRlUmVjb3JkKHVuaXF1ZUlkZW50aWZpZXI6IHN0cmluZyk6IE9ic2VydmFibGU8dm9pZD5cblxuICBhYnN0cmFjdCBnZW5lcmF0ZVRlbXBvcmFyeUlkKCk6IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gcmVjb3JkXG4gICAqIEBwYXJhbSByZWZlcmVuY2VSZWNvcmRTb3VyY2VcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxzdHJpbmc+IFJldHVybnMgdGhlIHNvdXJjZSBvZiB0aGUgcmVjb3JkIGFzIGl0IHdhcyBzZXJpYWxpemVkIHdoZW4gc2F2ZWRcbiAgICovXG4gIGFic3RyYWN0IHNhdmVSZWNvcmRBc0RyYWZ0KFxuICAgIHJlY29yZDogQ2F0YWxvZ1JlY29yZCxcbiAgICByZWZlcmVuY2VSZWNvcmRTb3VyY2U/OiBzdHJpbmdcbiAgKTogT2JzZXJ2YWJsZTxzdHJpbmc+XG5cbiAgYWJzdHJhY3QgY2xlYXJSZWNvcmREcmFmdCh1bmlxdWVJZGVudGlmaWVyOiBzdHJpbmcpOiB2b2lkXG4gIGFic3RyYWN0IHJlY29yZEhhc0RyYWZ0KHVuaXF1ZUlkZW50aWZpZXI6IHN0cmluZyk6IGJvb2xlYW5cbiAgYWJzdHJhY3QgaXNSZWNvcmROb3RZZXRTYXZlZCh1bmlxdWVJZGVudGlmaWVyOiBzdHJpbmcpOiBib29sZWFuXG5cbiAgLyoqIHdpbGwgcmV0dXJuIGFsbCBwZW5kaW5nIGRyYWZ0cywgYm90aCBwdWJsaXNoZWQgYW5kIG5vdCBwdWJsaXNoZWQgKi9cbiAgYWJzdHJhY3QgZ2V0QWxsRHJhZnRzKCk6IE9ic2VydmFibGU8Q2F0YWxvZ1JlY29yZFtdPlxuICBhYnN0cmFjdCBkcmFmdHNDaGFuZ2VkJDogT2JzZXJ2YWJsZTx2b2lkPlxufVxuIl19
@@ -0,0 +1,29 @@
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, } from '@angular/core';
2
+ import { MatIconModule } from '@angular/material/icon';
3
+ import { CommonModule } from '@angular/common';
4
+ import { ButtonComponent } from '../../../../../../../libs/ui/inputs/src';
5
+ import { ThumbnailComponent } from '../../../../../../../libs/ui/elements/src';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/common";
8
+ export class ContactCardComponent {
9
+ constructor() {
10
+ this.removable = true;
11
+ this.contactRemoved = new EventEmitter();
12
+ }
13
+ removeContact(contact) {
14
+ this.contactRemoved.emit(contact);
15
+ }
16
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ContactCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
17
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ContactCardComponent, isStandalone: true, selector: "gn-ui-contact-card", inputs: { contact: "contact", removable: "removable" }, outputs: { contactRemoved: "contactRemoved" }, ngImport: i0, template: "<div class=\"flex flex-row gap-4 items-center\">\n <div class=\"flex flex-row border border-gray-200 rounded-xl p-4 gap-4 w-full\">\n <gn-ui-thumbnail\n class=\"w-[56px] h-[56px] rounded-[4px]\"\n [thumbnailUrl]=\"contact.organization.logoUrl?.href\"\n [fit]=\"'contain'\"\n ></gn-ui-thumbnail>\n <div class=\"flex flex-col w-full\">\n <div class=\"flex flex-row justify-between\">\n <span class=\"flex flex-wrap font-bold w-full\"\n >{{ contact.firstName }} {{ contact.lastName }}</span\n >\n </div>\n <div>{{ contact.email }}</div>\n </div>\n </div>\n <gn-ui-button\n *ngIf=\"removable\"\n data-test=\"removeContactButton\"\n type=\"light\"\n extraClass=\"w-[20px] h-[20px] flex items-center justify-center\"\n (buttonClick)=\"removeContact(contact)\"\n ><span class=\"material-symbols-outlined\"> close </span>\n </gn-ui-button>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
18
+ }
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ContactCardComponent, decorators: [{
20
+ type: Component,
21
+ args: [{ selector: 'gn-ui-contact-card', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, MatIconModule, ButtonComponent, ThumbnailComponent], template: "<div class=\"flex flex-row gap-4 items-center\">\n <div class=\"flex flex-row border border-gray-200 rounded-xl p-4 gap-4 w-full\">\n <gn-ui-thumbnail\n class=\"w-[56px] h-[56px] rounded-[4px]\"\n [thumbnailUrl]=\"contact.organization.logoUrl?.href\"\n [fit]=\"'contain'\"\n ></gn-ui-thumbnail>\n <div class=\"flex flex-col w-full\">\n <div class=\"flex flex-row justify-between\">\n <span class=\"flex flex-wrap font-bold w-full\"\n >{{ contact.firstName }} {{ contact.lastName }}</span\n >\n </div>\n <div>{{ contact.email }}</div>\n </div>\n </div>\n <gn-ui-button\n *ngIf=\"removable\"\n data-test=\"removeContactButton\"\n type=\"light\"\n extraClass=\"w-[20px] h-[20px] flex items-center justify-center\"\n (buttonClick)=\"removeContact(contact)\"\n ><span class=\"material-symbols-outlined\"> close </span>\n </gn-ui-button>\n</div>\n" }]
22
+ }], propDecorators: { contact: [{
23
+ type: Input
24
+ }], removable: [{
25
+ type: Input
26
+ }], contactRemoved: [{
27
+ type: Output
28
+ }] } });
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9lZGl0b3Ivc3JjL2xpYi9jb21wb25lbnRzL2NvbnRhY3QtY2FyZC9jb250YWN0LWNhcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9mZWF0dXJlL2VkaXRvci9zcmMvbGliL2NvbXBvbmVudHMvY29udGFjdC1jYXJkL2NvbnRhY3QtY2FyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQTtBQUV0QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFDdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzlDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQTtBQUN6RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQTs7O0FBVTlFLE1BQU0sT0FBTyxvQkFBb0I7SUFSakM7UUFVVyxjQUFTLEdBQUcsSUFBSSxDQUFBO1FBQ2YsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBYyxDQUFBO0tBSzFEO0lBSEMsYUFBYSxDQUFDLE9BQW1CO1FBQy9CLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ25DLENBQUM7K0dBUFUsb0JBQW9CO21HQUFwQixvQkFBb0IscUxDckJqQyxrNkJBeUJBLHlERE5ZLFlBQVksa0lBQUUsYUFBYSwrQkFBRSxlQUFlLCtIQUFFLGtCQUFrQjs7NEZBRS9ELG9CQUFvQjtrQkFSaEMsU0FBUzsrQkFDRSxvQkFBb0IsbUJBR2IsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxrQkFBa0IsQ0FBQzs4QkFHbEUsT0FBTztzQkFBZixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0ksY0FBYztzQkFBdkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IEluZGl2aWR1YWwgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQnXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbidcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvaW5wdXRzL3NyYydcbmltcG9ydCB7IFRodW1ibmFpbENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvZWxlbWVudHMvc3JjJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnbi11aS1jb250YWN0LWNhcmQnLFxuICB0ZW1wbGF0ZVVybDogJy4vY29udGFjdC1jYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY29udGFjdC1jYXJkLmNvbXBvbmVudC5jc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE1hdEljb25Nb2R1bGUsIEJ1dHRvbkNvbXBvbmVudCwgVGh1bWJuYWlsQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgQ29udGFjdENhcmRDb21wb25lbnQge1xuICBASW5wdXQoKSBjb250YWN0OiBJbmRpdmlkdWFsXG4gIEBJbnB1dCgpIHJlbW92YWJsZSA9IHRydWVcbiAgQE91dHB1dCgpIGNvbnRhY3RSZW1vdmVkID0gbmV3IEV2ZW50RW1pdHRlcjxJbmRpdmlkdWFsPigpXG5cbiAgcmVtb3ZlQ29udGFjdChjb250YWN0OiBJbmRpdmlkdWFsKSB7XG4gICAgdGhpcy5jb250YWN0UmVtb3ZlZC5lbWl0KGNvbnRhY3QpXG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGdhcC00IGl0ZW1zLWNlbnRlclwiPlxuICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBib3JkZXIgYm9yZGVyLWdyYXktMjAwIHJvdW5kZWQteGwgcC00IGdhcC00IHctZnVsbFwiPlxuICAgIDxnbi11aS10aHVtYm5haWxcbiAgICAgIGNsYXNzPVwidy1bNTZweF0gaC1bNTZweF0gcm91bmRlZC1bNHB4XVwiXG4gICAgICBbdGh1bWJuYWlsVXJsXT1cImNvbnRhY3Qub3JnYW5pemF0aW9uLmxvZ29Vcmw/LmhyZWZcIlxuICAgICAgW2ZpdF09XCInY29udGFpbidcIlxuICAgID48L2duLXVpLXRodW1ibmFpbD5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCB3LWZ1bGxcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImZsZXggZmxleC13cmFwIGZvbnQtYm9sZCB3LWZ1bGxcIlxuICAgICAgICAgID57eyBjb250YWN0LmZpcnN0TmFtZSB9fSB7eyBjb250YWN0Lmxhc3ROYW1lIH19PC9zcGFuXG4gICAgICAgID5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdj57eyBjb250YWN0LmVtYWlsIH19PC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8Z24tdWktYnV0dG9uXG4gICAgKm5nSWY9XCJyZW1vdmFibGVcIlxuICAgIGRhdGEtdGVzdD1cInJlbW92ZUNvbnRhY3RCdXR0b25cIlxuICAgIHR5cGU9XCJsaWdodFwiXG4gICAgZXh0cmFDbGFzcz1cInctWzIwcHhdIGgtWzIwcHhdIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCJcbiAgICAoYnV0dG9uQ2xpY2spPVwicmVtb3ZlQ29udGFjdChjb250YWN0KVwiXG4gICAgPjxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiPiBjbG9zZSA8L3NwYW4+XG4gIDwvZ24tdWktYnV0dG9uPlxuPC9kaXY+XG4iXX0=