@alauda-fe/common 1.4.28 → 1.4.29-beta.1

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 (143) hide show
  1. package/array-form-table/form/component.d.ts +1 -1
  2. package/core/abstract/base-nested-form-control.d.ts +1 -1
  3. package/esm2022/abnormal-page/abnormal-page.component.mjs +1 -1
  4. package/esm2022/array-form-table/form/component.mjs +1 -1
  5. package/esm2022/array-form-table/key-value-form/component.mjs +1 -1
  6. package/esm2022/array-form-table/key-value-table/component.mjs +1 -1
  7. package/esm2022/array-form-table/string-array-form/component.mjs +1 -1
  8. package/esm2022/async-data/error-page/component.mjs +1 -1
  9. package/esm2022/async-data/page-state/component.mjs +1 -1
  10. package/esm2022/business/notification-disabled-container/component.mjs +1 -1
  11. package/esm2022/business/resource-select/exports/cluster-list/component.mjs +1 -1
  12. package/esm2022/business/resource-select/exports/cluster-selector/component.mjs +1 -1
  13. package/esm2022/business/resource-select/exports/icon/component.mjs +1 -1
  14. package/esm2022/business/resource-select/exports/mesh-group-selector/component.mjs +1 -1
  15. package/esm2022/business/resource-select/exports/namespace-list/component.mjs +1 -1
  16. package/esm2022/business/resource-select/exports/namespace-page/component.mjs +1 -1
  17. package/esm2022/business/resource-select/exports/namespace-selector/component.mjs +1 -1
  18. package/esm2022/business/resource-select/exports/project-list/component.mjs +1 -1
  19. package/esm2022/business/resource-select/exports/project-page/component.mjs +1 -1
  20. package/esm2022/business/resource-select/exports/project-selector/component.mjs +1 -1
  21. package/esm2022/business/resource-select/internals/data-grid/component.mjs +1 -1
  22. package/esm2022/business/resource-select/internals/meshgroup-list/component.mjs +1 -1
  23. package/esm2022/business/resource-select/internals/no-data/component.mjs +1 -1
  24. package/esm2022/business/resource-select/internals/resource-dashboard/component.mjs +1 -1
  25. package/esm2022/business/resource-select/internals/selector-popup/component.mjs +1 -1
  26. package/esm2022/chart/common/axis/axis-label.component.mjs +1 -1
  27. package/esm2022/chart/common/axis/x-axis-ticks.component.mjs +1 -1
  28. package/esm2022/chart/common/axis/x-axis.component.mjs +1 -1
  29. package/esm2022/chart/common/axis/x-plot-lines.component.mjs +1 -1
  30. package/esm2022/chart/common/axis/y-axis-ticks.component.mjs +1 -1
  31. package/esm2022/chart/common/axis/y-axis.component.mjs +1 -1
  32. package/esm2022/chart/common/axis/y-plot-lines.component.mjs +1 -1
  33. package/esm2022/chart/common/chart/chart.component.mjs +1 -1
  34. package/esm2022/chart/common/legend/legend.component.mjs +1 -1
  35. package/esm2022/chart/common/range-area/range-area.component.mjs +1 -1
  36. package/esm2022/chart/common/reference-area/reference-area.component.mjs +1 -1
  37. package/esm2022/chart/common/series/area-series.component.mjs +1 -1
  38. package/esm2022/chart/common/series/bar-path.component.mjs +1 -1
  39. package/esm2022/chart/common/series/bar-series.component.mjs +1 -1
  40. package/esm2022/chart/common/series/line-series.component.mjs +1 -1
  41. package/esm2022/chart/common/tooltip/tooltip.component.mjs +1 -1
  42. package/esm2022/chart/custom-template/dropdown-legend.mjs +1 -1
  43. package/esm2022/code/code-display-dialog/component.mjs +1 -1
  44. package/esm2022/code/k8s-yaml-display-dialog/component.mjs +1 -1
  45. package/esm2022/code/resource-yaml-display/component.mjs +1 -1
  46. package/esm2022/code/resource-yaml-editor/component.mjs +1 -1
  47. package/esm2022/code/yaml-sidebar/component.mjs +1 -1
  48. package/esm2022/core/components/tree/node/component.mjs +1 -1
  49. package/esm2022/core/components/tree/tree/component.mjs +1 -1
  50. package/esm2022/core/directives/readonly-field.directive.mjs +1 -1
  51. package/esm2022/custom-columns-setting/component.mjs +1 -1
  52. package/esm2022/disabled-container/disabled-container.component.mjs +1 -1
  53. package/esm2022/editable/editable.component.mjs +1 -1
  54. package/esm2022/editable-text/component.mjs +1 -1
  55. package/esm2022/exec/placeholder/component.mjs +1 -1
  56. package/esm2022/exec/terminal/component.mjs +1 -1
  57. package/esm2022/exec/terminal-group/component.mjs +1 -1
  58. package/esm2022/feature-gate-forbidden/component/component.mjs +1 -1
  59. package/esm2022/form/errors-mapper/errors-mapper-component/component.mjs +1 -1
  60. package/esm2022/form/errors-mapper/errors-mapper.directive.mjs +1 -1
  61. package/esm2022/form/labels-editor/component.mjs +1 -1
  62. package/esm2022/form/taints-editor/component.mjs +1 -1
  63. package/esm2022/form/upload-file/component.mjs +1 -1
  64. package/esm2022/form/validators/strong-password/strong-password-tooltip/component.mjs +1 -1
  65. package/esm2022/graph-canvas/components/graph-actions.component.mjs +1 -1
  66. package/esm2022/graph-canvas/components/graph-canvas.component.mjs +1 -1
  67. package/esm2022/graph-canvas/components/graph-link.component.mjs +1 -1
  68. package/esm2022/graph-canvas/components/graph-links.component.mjs +1 -1
  69. package/esm2022/grid-layout/components/grid/component.mjs +1 -1
  70. package/esm2022/grid-layout/components/grid-items/component.mjs +1 -1
  71. package/esm2022/help-document/component.mjs +1 -1
  72. package/esm2022/k8s-resource-list/footer/component.mjs +1 -1
  73. package/esm2022/k8s-shared/resource-mark/k8s-resource-mark.component.mjs +1 -1
  74. package/esm2022/k8s-shared/update-description-dialog/component.mjs +1 -1
  75. package/esm2022/k8s-shared/update-display-name-dialog/component.mjs +1 -1
  76. package/esm2022/k8s-shared/update-key-value-dialog/component.mjs +1 -1
  77. package/esm2022/lazy-component/lazy-load-component.mjs +1 -1
  78. package/esm2022/license/license-error/component.mjs +1 -1
  79. package/esm2022/list-display/component.mjs +1 -1
  80. package/esm2022/metric-chart/metric-chart.component.mjs +1 -1
  81. package/esm2022/metric-chart/metric-time-pick.mjs +1 -1
  82. package/esm2022/multi-search/action-input/component.mjs +1 -1
  83. package/esm2022/multi-search/form/component.mjs +1 -1
  84. package/esm2022/multi-search/multi-search-tags/component.mjs +1 -1
  85. package/esm2022/mutable/mosaic/mosaic.component.mjs +1 -1
  86. package/esm2022/notification/feedback-notification/component.mjs +1 -1
  87. package/esm2022/overview-banner/overview-banner.component.mjs +1 -1
  88. package/esm2022/page-guard/component/component.mjs +1 -1
  89. package/esm2022/page-scaffold/navigation/breadcrumb/breadcrumb.component.mjs +1 -1
  90. package/esm2022/page-scaffold/navigation/nav-menu/nav-item-li/nav-item-li.component.mjs +1 -1
  91. package/esm2022/page-scaffold/navigation/nav-menu/nav-item-ul/nav-item-ul.component.mjs +1 -1
  92. package/esm2022/page-scaffold/navigation/nav-menu/nav-menu.component.mjs +1 -1
  93. package/esm2022/page-scaffold/page/notices/maintenance.component.mjs +1 -1
  94. package/esm2022/page-scaffold/page/notices/notice.component.mjs +1 -1
  95. package/esm2022/page-scaffold/page/page.component.mjs +1 -1
  96. package/esm2022/page-scaffold/page-header/account-menu/component/component.mjs +1 -1
  97. package/esm2022/page-scaffold/page-header/common-layout/namespace-select/component.mjs +1 -1
  98. package/esm2022/page-scaffold/page-header/common-layout/product-select/component.mjs +1 -1
  99. package/esm2022/page-scaffold/page-header/component.mjs +1 -1
  100. package/esm2022/page-scaffold/page-header/enterprise-support-status/component.mjs +1 -1
  101. package/esm2022/page-scaffold/page-header/header-notify/component/header-notify.component.mjs +1 -1
  102. package/esm2022/page-scaffold/page-header/header-notify/component/notification-list/notification-list.component.mjs +1 -1
  103. package/esm2022/page-scaffold/page-header/help-menu/component/component.mjs +1 -1
  104. package/esm2022/pie-derivative-chart/donut-status/component.mjs +1 -1
  105. package/esm2022/pie-derivative-chart/radial-bar/radial-bar-chart.component.mjs +1 -1
  106. package/esm2022/pod-status/component.mjs +1 -1
  107. package/esm2022/searchable-selector/component.mjs +1 -1
  108. package/esm2022/skeleton/item/component.mjs +1 -1
  109. package/esm2022/skeleton/nav-skeleton/component.mjs +1 -1
  110. package/esm2022/table/component.mjs +1 -1
  111. package/esm2022/translate/translate.service.mjs +2 -2
  112. package/esm2022/view-chart/custom-template/dropdown-legend.mjs +1 -1
  113. package/esm2022/view-chart/legend/legend.component.mjs +1 -1
  114. package/esm2022/view-chart/view-chart.component.mjs +1 -1
  115. package/esm2022/view-zchart/custom-template/dropdown-legend.mjs +1 -1
  116. package/esm2022/view-zchart/legend/legend.component.mjs +1 -1
  117. package/esm2022/view-zchart/view-zchart.component.mjs +1 -1
  118. package/esm2022/widget/card-section/card-section.component.mjs +1 -1
  119. package/esm2022/widget/confirm-delete/confirm-delete.component.mjs +1 -1
  120. package/esm2022/widget/current-time/component.mjs +1 -1
  121. package/esm2022/widget/date-range-picker/component.mjs +1 -1
  122. package/esm2022/widget/field-set/column/component.mjs +2 -2
  123. package/esm2022/widget/field-set/group/component.mjs +1 -1
  124. package/esm2022/widget/field-set/item/component.mjs +1 -1
  125. package/esm2022/widget/foldable-block/component.mjs +1 -1
  126. package/esm2022/widget/foldable-item-in-table/component.mjs +1 -1
  127. package/esm2022/widget/loading-mask/loading-mask.component.mjs +1 -1
  128. package/esm2022/widget/password-input/component.mjs +1 -1
  129. package/esm2022/widget/relative-time/component.mjs +1 -1
  130. package/esm2022/widget/resource-label/component.mjs +1 -1
  131. package/esm2022/widget/resource-multi-select/component.mjs +1 -1
  132. package/esm2022/widget/search-panel/component.mjs +1 -1
  133. package/esm2022/widget/search-panel/search-item/component.mjs +1 -1
  134. package/esm2022/widget/status-icon/status-icon.component.mjs +1 -1
  135. package/esm2022/widget/tags-label/component.mjs +1 -1
  136. package/esm2022/widget/terminating-tag/component.mjs +1 -1
  137. package/esm2022/widget/text-ellipsis/component.mjs +1 -1
  138. package/esm2022/widget/text-with-url/component.mjs +1 -1
  139. package/esm2022/widget/zero-state/zero-state.component.mjs +1 -1
  140. package/esm2022/workload-status-icon/component.mjs +1 -1
  141. package/esm2022/xterm/xterm-terminal/xterm-terminal.component.mjs +1 -1
  142. package/esm2022/xterm/xterm.component.mjs +1 -1
  143. package/package.json +25 -24
@@ -338,7 +338,7 @@ export class TranslateService {
338
338
  */
339
339
  formatIcuMessage(message, icuData) {
340
340
  try {
341
- const messageFormat = new IntlMessageFormat(message, this.locale);
341
+ const messageFormat = new IntlMessageFormat(message, this.locale, undefined, { ignoreTag: true });
342
342
  return messageFormat.format(icuData);
343
343
  }
344
344
  catch (error) {
@@ -866,4 +866,4 @@ __decorate([
866
866
  type: Inject,
867
867
  args: [TRANSLATIONS]
868
868
  }] }], { locale$: [] }); })();
869
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvdHJhbnNsYXRlL3RyYW5zbGF0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7O0dBR0c7QUFFSCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUNMLE1BQU0sRUFDTixVQUFVLEVBRVYsUUFBUSxFQUNSLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDckQsT0FBTyxFQUNMLFVBQVUsRUFDVixPQUFPLEVBQ1AsUUFBUSxFQUNSLFVBQVUsRUFDVixLQUFLLEVBQ0wsVUFBVSxFQUNWLE1BQU0sRUFDTixRQUFRLEVBQ1IsR0FBRyxFQUNILFNBQVMsR0FDVixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFakMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzFELE9BQU8sRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUUzQyxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLHdCQUF3QixFQUN4QixjQUFjLEdBQ2YsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLE1BQU0sVUFBVSxD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IjpbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKiBAbW9kdWxlIHRyYW5zbGF0ZVxuICovXG5cbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge1xuICBJbmplY3QsXG4gIEluamVjdGFibGUsXG4gIE9uRGVzdHJveSxcbiAgT3B0aW9uYWwsXG4gIGlzRGV2TW9kZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJbnRsTWVzc2FnZUZvcm1hdCB9IGZyb20gJ2ludGwtbWVzc2FnZWZvcm1hdCc7XG5pbXBvcnQgeyBnZXQsIGhlYWQsIGlzUGxhaW5PYmplY3QgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHtcbiAgT2JzZXJ2YWJsZSxcbiAgU3ViamVjdCxcbiAgZm9ya0pvaW4sXG4gIHRocm93RXJyb3IsXG4gIEVNUFRZLFxuICBjYXRjaEVycm9yLFxuICBmaWx0ZXIsXG4gIGZpbmFsaXplLFxuICBtYXAsXG4gIHRha2VVbnRpbCxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBhamF4IH0gZnJvbSAncnhqcy9hamF4JztcblxuaW1wb3J0IHsgQVBJX0dBVEVXQVkgfSBmcm9tICcuLi9jb3JlL2NvbnN0YW50cy9jb25zdGFudHMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZUlucHV0LCBUT0tFTl9CQVNFX0hSRUYgfSBmcm9tICcuLi9jb3JlL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgaXNBYnNvbHV0ZVVybCB9IGZyb20gJy4uL2NvcmUvdXRpbHMvY29tbW9uJztcbmltcG9ydCB7IHBhcnNlIH0gZnJvbSAnLi4vY29yZS91dGlscy95YW1sJztcblxuaW1wb3J0IHtcbiAgRkFMTEJBQ0tfTEFOR1VBR0UsXG4gIExPQ0FMRV9QTEFDRUhPTERFUl9SRUdFWCxcbiAgTE9DQUxFX1NUT1JBR0UsXG59IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IGdldFVzZXJMYW5ndWFnZSB9IGZyb20gJy4vaTE4bi1jb25maWcnO1xuaW1wb3J0IHsgVFJBTlNMQVRFX09QVElPTlMsIFRSQU5TTEFUSU9OUyB9IGZyb20gJy4vdG9rZW5zJztcbmltcG9ydCB7XG4gIFRyYW5zbGF0ZUtleSxcbiAgVHJhbnNsYXRlT3B0aW9ucyxcbiAgVHJhbnNsYXRpb24sXG4gIFRyYW5zbGF0aW9uVmFsdWUsXG4gIFRyYW5zbGF0aW9ucyxcbiAgVGVtcGxhdGVEYXRhLFxuICBJY3VEYXRhLFxufSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiDlm73pmYXljJbnv7vor5HmnI3liqFcbiAqXG4gKiDnibnmgKfvvJpcbiAqIC0g5pSv5oyB5aSa5bGC57qn57+76K+R5LyY5YWI57qn77yI6L+c56iL57+76K+RID4g5omL5Yqo5re75Yqg57+76K+RID4g6YWN572u57+76K+R77yJXG4gKiAtIOaUr+aMgeWKqOaAgeivreiogOWIh+aNolxuICogLSDmlK/mjIEgSUNVIE1lc3NhZ2UgRm9ybWF0IOaooeadv+aPkuWAvFxuICogLSDmlK/mjIHlrr3mnb7mqKHlvI/or63oqIDljLnphY1cbiAqIC0g5pSv5oyB5byC5q2l6L+c56iL57+76K+R5Yqg6L29XG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgVHJhbnNsYXRlU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIC8qKiDnv7vor5Hmt7vliqDpgJrnn6XmtYEgKi9cbiAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGlvbnNBZGRlZCQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICByZWFkb25seSB0cmFuc2xhdGlvbnNBZGRlZCQgPSB0aGlzLnRyYW5zbGF0aW9uc0FkZGVkJCQuYXNPYnNlcnZhYmxlKCk7XG5cbiAgLyoqIOe7hOS7tumUgOavgemAmuefpea1gSAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgLyoqIOacrOWcsOe/u+ivkeWIl+ihqO+8iOS8mOWFiOe6p++8muWQjuWKoOWFpeeahOS8mOWFiOe6p+abtOmrmO+8iSAqL1xuICByZWFkb25seSB0cmFuc2xhdGlvbnNMaXN0OiBBcnJheTxSZWFkb25seTxUcmFuc2xhdGlvbnM+PiA9IFtdO1xuXG4gIC8qKiDov5znqIvnv7vor5HliJfooajvvIjkvJjlhYjnuqfmnIDpq5jvvIkgKi9cbiAgcmVhZG9ubHkgcmVtb3RlVHJhbnNsYXRpb25zTGlzdDogQXJyYXk8UmVhZG9ubHk8VHJhbnNsYXRpb25zPj4gPSBbXTtcblxuICAvKiog57+76K+R6YWN572u6YCJ6aG5ICovXG4gIHJlYWRvbmx5IG9wdGlvbnM6IFRyYW5zbGF0ZU9wdGlvbnM7XG5cbiAgLyoqIOW9k+WJjeivreiogOeOr+WigyAqL1xuICBsb2NhbGU6IHN0cmluZztcblxuICAvKiog5b2T5YmN6K+t6KiA546v5aKD77yI5ZON5bqU5byP77yJICovXG4gIEBPYnNlcnZhYmxlSW5wdXQoKVxuICByZWFkb25seSBsb2NhbGUkOiBPYnNlcnZhYmxlPHN0cmluZz47XG5cbiAgLyoqIOiOt+WPluaUr+aMgeeahOivreiogOWIl+ihqCAqL1xuICBnZXQgbG9jYWxlcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sb2NhbGVzO1xuICB9XG5cbiAgLyoqIOiOt+WPluWbnumAgOivreiogCAqL1xuICBnZXQgZmFsbGJhY2tMb2NhbGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmZhbGxiYWNrTG9jYWxlO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIEBJbmplY3QoVE9LRU5fQkFTRV9IUkVGKSBwcml2YXRlIHJlYWRvbmx5IGJhc2VIcmVmOiBzdHJpbmcsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChUUkFOU0xBVEVfT1BUSU9OUykgb3B0aW9uczogVHJhbnNsYXRlT3B0aW9ucyxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFRSQU5TTEFUSU9OUykgdHJhbnNsYXRpb25MaXN0OiBUcmFuc2xhdGlvbnNbXSxcbiAgKSB7XG4gICAgLy8g5Yid5aeL5YyW6K+t6KiA546v5aKDXG4gICAgdGhpcy5sb2NhbGUgPSB0aGlzLmdldEluaXRpYWxMb2NhbGUob3B0aW9ucyk7XG5cbiAgICAvLyDliJ3lp4vljJbphY3nva7pgInpoblcbiAgICB0aGlzLm9wdGlvbnMgPSB7XG4gICAgICBsb2NhbGVzOiBbdGhpcy5sb2NhbGVdLFxuICAgICAgZmFsbGJhY2tMb2NhbGU6IEZBTExCQUNLX0xBTkdVQUdFLFxuICAgICAgbG9vc2U6IGZhbHNlLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9O1xuXG4gICAgLy8g5Yid5aeL5YyW57+76K+R5YiX6KGoXG4gICAgdGhpcy50cmFuc2xhdGlvbnNMaXN0ID0gdGhpcy5nZXRJbml0aWFsaXplVHJhbnNsYXRpb25zKFxuICAgICAgb3B0aW9ucyxcbiAgICAgIHRyYW5zbGF0aW9uTGlzdCxcbiAgICApO1xuXG4gICAgLy8g5Yqg6L296L+c56iL57+76K+RXG4gICAgdGhpcy5sb2FkUmVtb3RlVHJhbnNsYXRpb25zKG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIOe7hOS7tumUgOavgea4heeQhlxuICAgKi9cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95JCQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQkLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKipcbiAgICog6I635Y+W57+76K+R5paH5pys5bm26L+b6KGM5qih5p2/5o+S5YC8XG4gICAqIOiHquWKqOWwhuS8oOe7nyB7eyBrZXkgfX0g6K+t5rOV6L2s5o2i5Li6IElDVSB7a2V5fSDmoLzlvI/ov5vooYzop6PmnpBcbiAgICog5ZCM5pe25pSv5oyB5Y6f55SfIElDVSBNZXNzYWdlIEZvcm1hdCDor63ms5VcbiAgICogQHBhcmFtIGtleSAtIOe/u+ivkemUruaIlue/u+ivkeWvueixoVxuICAgKiBAcGFyYW0gZGF0YSAtIOaooeadv+aVsOaNru+8iOaUr+aMgeWfuuacrOexu+Wei+OAgURhdGXjgIHlr7nosaHlkozmlbDnu4TvvIlcbiAgICogQHJldHVybnMg57+76K+R5ZCO55qE5paH5pysXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogLy8g5a+56LGh5Y+C5pWw77yI5o6o6I2Q77yJXG4gICAqIHRyYW5zbGF0ZS5nZXQoJ2hlbGxvJywgeyBuYW1lOiAnV29ybGQnIH0pIC8vIOaooeadvzogXCJIZWxsbyB7bmFtZX1cIlxuICAgKlxuICAgKiAvLyDln7rmnKznsbvlnovlj4LmlbDvvIjoh6rliqjovazmjaLkuLoge3ZhbHVlfe+8iVxuICAgKiB0cmFuc2xhdGUuZ2V0KCd3ZWxjb21lJywgJ0pvaG4nKSAvLyDmqKHmnb86IFwiV2VsY29tZSB7dmFsdWV9XCJcbiAgICpcbiAgICogLy8gSUNVIOagvOW8j++8iOaVsOWtl++8iVxuICAgKiB0cmFuc2xhdGUuZ2V0KCdpdGVtQ291bnQnLCB7IGNvdW50OiA1IH0pXG4gICAqXG4gICAqIC8vIElDVSDmoLzlvI/vvIjml6XmnJ/vvIzpu5jorqTmnKzlnLDljJbvvIlcbiAgICogdHJhbnNsYXRlLmdldCgnY3JlYXRlZEF0JywgeyBkYXRlOiBuZXcgRGF0ZSgpIH0pXG4gICAqIGBgYFxuICAgKi9cbiAgZ2V0KGtleTogVHJhbnNsYXRlS2V5LCBkYXRhPzogVGVtcGxhdGVEYXRhKTogc3RyaW5nIHtcbiAgICBjb25zdCB0cmFuc2xhdGlvbiA9IHRoaXMuZ2V0UmF3KGtleSk7XG5cbiAgICBpZiAoZGF0YSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gdHJhbnNsYXRpb247XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIC8vIOWwhuS8oOe7n+eahCB7eyBrZXkgfX0g6K+t5rOV6L2s5o2i5Li6IElDVSB7a2V5fSDmoLzlvI9cbiAgICAgIGNvbnN0IGljdU1lc3NhZ2UgPSB0aGlzLmNvbnZlcnRUb0ljdUZvcm1hdCh0cmFuc2xhdGlvbik7XG4gICAgICAvLyDlsIbmlbDmja7ovazmjaLkuLogSUNVIOWFvOWuueeahOagvOW8j1xuICAgICAgY29uc3QgaWN1RGF0YSA9IHRoaXMubm9ybWFsaXplQW5kQ29udmVydFRvSWN1RGF0YShkYXRhKTtcbiAgICAgIHJldHVybiB0aGlzLmZvcm1hdEljdU1lc3NhZ2UoaWN1TWVzc2FnZSwgaWN1RGF0YSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMuaGFuZGxlVGVtcGxhdGVFcnJvcihrZXksIGVycm9yKTtcbiAgICAgIHJldHVybiB0cmFuc2xhdGlvbjtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICog6I635Y+W5Y6f5aeL57+76K+R5paH5pys5qih5p2/77yI5LiN6L+b6KGM5o+S5YC85aSE55CG77yJXG4gICAqIEBwYXJhbSBrZXkgLSDnv7vor5HplK7miJbnv7vor5Hlr7nosaFcbiAgICogQHJldHVybnMg5Y6f5aeL57+76K+R5qih5p2/5paH5pysXG4gICAqL1xuICBnZXRSYXcoa2V5OiBUcmFuc2xhdGVLZXkpOiBzdHJpbmcge1xuICAgIGlmICh0eXBlb2Yga2V5ID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0VHJhbnNsYXRpb25CeUtleShrZXkpO1xuICAgIH1cblxuICAgIC8vIOW9k2tleeaYr1RyYW5zbGF0aW9u5a+56LGh5pe277yM6I635Y+W5b2T5YmN6K+t6KiA55qE57+76K+R5YC8XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldFRyYW5zbGF0aW9uQnlPYmplY3Qoa2V5KTtcblxuICAgIC8vIOWmguaenOaJvuWIsOWAvOWImei/lOWbnuWtl+espuS4suW9ouW8j++8jOWQpuWImei/lOWbnkpTT07lrZfnrKbkuLLooajnpLpcbiAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHZhbHVlID09PSBudWxsID8gJ251bGwnIDogU3RyaW5nKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvLyDlpoLmnpzmsqHmnInmib7liLDnv7vor5HvvIzov5Tlm55KU09O5a2X56ym5Liy5b2i5byPXG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGtleSk7XG4gIH1cblxuICAvKipcbiAgICog5YiH5o2i5Yiw5LiL5LiA5Liq5pSv5oyB55qE6K+t6KiA546v5aKDXG4gICAqL1xuICB0b2dnbGVMb2NhbGUoKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudEluZGV4ID0gdGhpcy5vcHRpb25zLmxvY2FsZXMuaW5kZXhPZih0aGlzLmxvY2FsZSk7XG5cbiAgICBpZiAoY3VycmVudEluZGV4ID09PSAtMSkge1xuICAgICAgdGhpcy5oYW5kbGVJbnZhbGlkTG9jYWxlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbmV4dEluZGV4ID0gKGN1cnJlbnRJbmRleCArIDEpICUgdGhpcy5vcHRpb25zLmxvY2FsZXMubGVuZ3RoO1xuICAgIGNvbnN0IG5leHRMb2NhbGUgPSB0aGlzLm9wdGlvbnMubG9jYWxlc1tuZXh0SW5kZXhdO1xuXG4gICAgaWYgKG5leHRMb2NhbGUgJiYgbmV4dExvY2FsZSAhPT0gdGhpcy5sb2NhbGUpIHtcbiAgICAgIHRoaXMuc2V0TG9jYWxlKG5leHRMb2NhbGUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiDorr7nva7lvZPliY3or63oqIDnjq/looNcbiAgICogQHBhcmFtIGxvY2FsZSAtIOimgeiuvue9rueahOivreiogOeOr+Wig1xuICAgKi9cbiAgc2V0TG9jYWxlKGxvY2FsZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWRMb2NhbGUobG9jYWxlKSkge1xuICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICBgSW52YWxpZCBsb2NhbGU6ICR7bG9jYWxlfS4gU3VwcG9ydGVkIGxvY2FsZXM6ICR7dGhpcy5vcHRpb25zLmxvY2FsZXMuam9pbignLCAnKX1gLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKExPQ0FMRV9TVE9SQUdFLCBsb2NhbGUpO1xuICAgIHRoaXMubG9jYWxlID0gbG9jYWxlO1xuICB9XG5cbiAgLyoqXG4gICAqIOaJi+WKqOa3u+WKoOe/u+ivkeWMhVxuICAgKiBAcGFyYW0gdHJhbnNsYXRpb25zIC0g6KaB5re75Yqg55qE57+76K+R5YyFXG4gICAqL1xuICBhZGRUcmFuc2xhdGlvbnModHJhbnNsYXRpb25zOiBUcmFuc2xhdGlvbnMpOiB2b2lkIHtcbiAgICBpZiAoIXRyYW5zbGF0aW9ucyB8fCB0eXBlb2YgdHJhbnNsYXRpb25zICE9PSAnb2JqZWN0Jykge1xuICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignSW52YWxpZCB0cmFuc2xhdGlvbnMgb2JqZWN0IHByb3ZpZGVkJyk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8g5byA5Y+R5qih5byP5LiL5qOA5p+l6YeN5aSN57+76K+RXG4gICAgaWYgKGlzRGV2TW9kZSgpICYmIHRoaXMudHJhbnNsYXRpb25zTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmNoZWNrRm9yRHVwbGljYXRlVHJhbnNsYXRpb25zKHRyYW5zbGF0aW9ucyk7XG4gICAgfVxuXG4gICAgdGhpcy50cmFuc2xhdGlvbnNMaXN0LnB1c2godHJhbnNsYXRpb25zKTtcbiAgICB0aGlzLnRyYW5zbGF0aW9uc0FkZGVkJCQubmV4dCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIOa3u+WKoOi/nOeoi+e/u+ivkeWMhVxuICAgKiBAcGFyYW0gcmVtb3RlVXJsIC0g6L+c56iL57+76K+R5paH5Lu2VVJMXG4gICAqL1xuICBhZGRSZW1vdGVUcmFuc2xhdGlvbnMocmVtb3RlVXJsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXJlbW90ZVVybCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG5vcm1hbGl6ZWRVcmwgPSB0aGlzLm5vcm1hbGl6ZVJlbW90ZVVybChyZW1vdGVVcmwpO1xuICAgIGNvbnN0IHJlcXVlc3QkID0gdGhpcy5jcmVhdGVSZW1vdGVUcmFuc2xhdGlvblJlcXVlc3Qobm9ybWFsaXplZFVybCk7XG5cbiAgICByZXF1ZXN0JFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkJCksXG4gICAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0aW9uc0FkZGVkJCQubmV4dCgpO1xuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiByZW1vdGVUcmFuc2xhdGlvbnMgPT4ge1xuICAgICAgICAgIGlmIChyZW1vdGVUcmFuc2xhdGlvbnMpIHtcbiAgICAgICAgICAgIHRoaXMucmVtb3RlVHJhbnNsYXRpb25zTGlzdC5wdXNoKHJlbW90ZVRyYW5zbGF0aW9ucyk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogZXJyb3IgPT4ge1xuICAgICAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgYEZhaWxlZCB0byBsb2FkIHJlbW90ZSB0cmFuc2xhdGlvbnMgZnJvbSAke3JlbW90ZVVybH06YCxcbiAgICAgICAgICAgICAgZXJyb3IsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIOS7jui/nOeoi1VSTOiOt+WPlue/u+ivkeaVsOaNrlxuICAgKiBAcGFyYW0gcmVtb3RlVXJsIC0g6L+c56iLVVJMXG4gICAqIEBwYXJhbSBsb2NhbGUgLSDlj6/pgInnmoTor63oqIDnjq/looPvvIjnlKjkuo5VUkzmqKHmnb/mm7/mjaLvvIlcbiAgICogQHJldHVybnMg57+76K+R5pWw5o2u55qET2JzZXJ2YWJsZVxuICAgKi9cbiAgZmV0Y2hUcmFuc2xhdGlvbihyZW1vdGVVcmw6IHN0cmluZyk6IE9ic2VydmFibGU8VHJhbnNsYXRpb25zPjtcbiAgZmV0Y2hUcmFuc2xhdGlvbihyZW1vdGVVcmw6IHN0cmluZywgbG9jYWxlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFRyYW5zbGF0aW9uPjtcbiAgZmV0Y2hUcmFuc2xhdGlvbihcbiAgICByZW1vdGVVcmw6IHN0cmluZyxcbiAgICBsb2NhbGU/OiBzdHJpbmcsXG4gICk6IE9ic2VydmFibGU8VHJhbnNsYXRpb25zIHwgVHJhbnNsYXRpb24+IHtcbiAgICB0aGlzLnZhbGlkYXRlRmV0Y2hUcmFuc2xhdGlvblBhcmFtcyhyZW1vdGVVcmwsIGxvY2FsZSk7XG5cbiAgICBjb25zdCB0YXJnZXRVcmwgPSBsb2NhbGVcbiAgICAgID8gcmVtb3RlVXJsLnJlcGxhY2UoTE9DQUxFX1BMQUNFSE9MREVSX1JFR0VYLCBsb2NhbGUpXG4gICAgICA6IHJlbW90ZVVybDtcblxuICAgIHJldHVybiB0aGlzLnBlcmZvcm1UcmFuc2xhdGlvblJlcXVlc3QodGFyZ2V0VXJsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDojrflj5bliJ3lp4vor63oqIDnjq/looNcbiAgICovXG4gIHByaXZhdGUgZ2V0SW5pdGlhbExvY2FsZShvcHRpb25zOiBUcmFuc2xhdGVPcHRpb25zKTogc3RyaW5nIHtcbiAgICByZXR1cm4gb3B0aW9ucz8ubG9jYWxlIHx8IGdldFVzZXJMYW5ndWFnZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIOiOt+WPluWIneWni+e/u+ivkeWIl+ihqFxuICAgKi9cbiAgcHJpdmF0ZSBnZXRJbml0aWFsaXplVHJhbnNsYXRpb25zKFxuICAgIG9wdGlvbnM6IFRyYW5zbGF0ZU9wdGlvbnMsXG4gICAgdHJhbnNsYXRpb25MaXN0OiBUcmFuc2xhdGlvbnNbXSxcbiAgKTogVHJhbnNsYXRpb25zW10ge1xuICAgIHJldHVybiBbb3B0aW9ucz8udHJhbnNsYXRpb25zLCAuLi4odHJhbnNsYXRpb25MaXN0IHx8IFtdKV0uZmlsdGVyKEJvb2xlYW4pO1xuICB9XG5cbiAgLyoqXG4gICAqIOWKoOi9vei/nOeoi+e/u+ivkVxuICAgKi9cbiAgcHJpdmF0ZSBsb2FkUmVtb3RlVHJhbnNsYXRpb25zKG9wdGlvbnM6IFRyYW5zbGF0ZU9wdGlvbnMpOiB2b2lkIHtcbiAgICBpZiAoIW9wdGlvbnM/LnJlbW90ZVVybCkgcmV0dXJuO1xuXG4gICAgY29uc3QgdXJscyA9IEFycmF5LmlzQXJyYXkob3B0aW9ucy5yZW1vdGVVcmwpXG4gICAgICA/IG9wdGlvbnMucmVtb3RlVXJsXG4gICAgICA6IFtvcHRpb25zLnJlbW90ZVVybF07XG5cbiAgICB1cmxzLmZvckVhY2godXJsID0+IHRoaXMuYWRkUmVtb3RlVHJhbnNsYXRpb25zKHVybCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIOi9rOaNouaooeadv+aVsOaNruS4uiBJQ1Ug5YW85a655qC85byPXG4gICAqIEBwYXJhbSBkYXRhIC0g5qih5p2/5pWw5o2uXG4gICAqIEByZXR1cm5zIElDVSDlhbzlrrnnmoTmlbDmja7lr7nosaFcbiAgICovXG4gIHByaXZhdGUgbm9ybWFsaXplQW5kQ29udmVydFRvSWN1RGF0YShkYXRhOiBUZW1wbGF0ZURhdGEpOiBJY3VEYXRhIHtcbiAgICBpZiAoZGF0YSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuXG4gICAgLy8g5aaC5p6c5piv57qv5a+56LGh77yM55u05o6l6L2s5o2i5YW25bGe5oCnXG4gICAgaWYgKHRoaXMuaXNQbGFpblRlbXBsYXRlT2JqZWN0KGRhdGEpKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0T2JqZWN0VG9JY3VEYXRhKGRhdGEpO1xuICAgIH1cblxuICAgIC8vIOWfuuacrOexu+Wei+OAgeaVsOe7hOOAgURhdGXnrYnljIXoo4XkuLogeyB2YWx1ZTogZGF0YSB9XG4gICAgcmV0dXJuIHsgdmFsdWU6IHRoaXMuY29udmVydFZhbHVlVG9JY3VWYWx1ZShkYXRhKSB9O1xuICB9XG5cbiAgLyoqXG4gICAqIOajgOafpeaYr+WQpuS4uue6r+aooeadv+Wvueixoe+8iOS4jeaYr+aVsOe7hOOAgURhdGXnrYnnibnmrorlr7nosaHvvIlcbiAgICovXG4gIHByaXZhdGUgaXNQbGFpblRlbXBsYXRlT2JqZWN0KFxuICAgIGRhdGE6IFRlbXBsYXRlRGF0YSxcbiAgKTogZGF0YSBpcyBSZWNvcmQ8c3RyaW5nLCBUZW1wbGF0ZURhdGE+IHtcbiAgICByZXR1cm4gKFxuICAgICAgdHlwZW9mIGRhdGEgPT09ICdvYmplY3QnICYmXG4gICAgICBkYXRhICE9PSBudWxsICYmXG4gICAgICAhQXJyYXkuaXNBcnJheShkYXRhKSAmJlxuICAgICAgIShkYXRhIGluc3RhbmNlb2YgRGF0ZSkgJiZcbiAgICAgIGRhdGEuY29uc3RydWN0b3IgPT09IE9iamVjdFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICog6L2s5o2i5a+56LGh55qE5omA5pyJ5bGe5oCn5Li6IElDVSDlhbzlrrnlgLxcbiAgICovXG4gIHByaXZhdGUgY29udmVydE9iamVjdFRvSWN1RGF0YShvYmo6IFJlY29yZDxzdHJpbmcsIFRlbXBsYXRlRGF0YT4pOiBJY3VEYXRhIHtcbiAgICBjb25zdCByZXN1bHQ6IEljdURhdGEgPSB7fTtcblxuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG9iaikpIHtcbiAgICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICAgIHJlc3VsdFtrZXldID0gdGhpcy5jb252ZXJ0VmFsdWVUb0ljdVZhbHVlKHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIOWwhuWNleS4quWAvOi9rOaNouS4uiBJQ1Ug5YW85a6557G75Z6LXG4gICAqIOaMieeFpyBJQ1UgTWVzc2FnZUZvcm1hdCDop4TojIPvvIzlj6rmlK/mjIEgc3RyaW5nIHwgbnVtYmVyIHwgRGF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBjb252ZXJ0VmFsdWVUb0ljdVZhbHVlKHZhbHVlOiBUZW1wbGF0ZURhdGEpOiBzdHJpbmcgfCBudW1iZXIgfCBEYXRlIHtcbiAgICAvLyBJQ1Ug5Y6f55Sf5pSv5oyB55qE57G75Z6L55u05o6l6L+U5ZueXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICAvLyDlhbbku5bnsbvlnovovazkuLrlrZfnrKbkuLJcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpIHtcbiAgICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICAgIH1cblxuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgLy8g566A5Y2V5pWw57uE6L2s5Li66YCX5Y+35YiG6ZqU55qE5a2X56ym5LiyXG4gICAgICByZXR1cm4gdmFsdWUubWFwKGl0ZW0gPT4gU3RyaW5nKGl0ZW0gPz8gJycpKS5qb2luKCcsICcpO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuICdudWxsJztcbiAgICB9XG5cbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIC8vIOWvueixoei9rOS4uiBKU09OIOWtl+espuS4slxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIOWkhOeQhuaooeadv+mUmeivr1xuICAgKi9cbiAgcHJpdmF0ZSBoYW5kbGVUZW1wbGF0ZUVycm9yKGtleTogVHJhbnNsYXRlS2V5LCBlcnJvcjogYW55KTogdm9pZCB7XG4gICAgY29uc3Qga2V5U3RyID0gdHlwZW9mIGtleSA9PT0gJ3N0cmluZycgPyBrZXkgOiAnW29iamVjdF0nO1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBgVGhlIHRyYW5zbGF0aW9uIGtleSAnJHtrZXlTdHJ9JyBpcyBtaXNzaW5nIHRoZSBuZWNlc3NhcnkgcGFyYW1ldGVycy5gO1xuICAgIGlmIChpc0Rldk1vZGUoKSkge1xuICAgICAgY29uc29sZS5lcnJvcihtZXNzYWdlLCBlcnJvcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUud2FybihtZXNzYWdlLCBlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIOWwhuS8oOe7n+eahCB7eyBrZXkgfX0g6K+t5rOV6L2s5o2i5Li6IElDVSB7a2V5fSDmoLzlvI9cbiAgICog5ZCM5pe25L+d5oyB5bey5pyJ55qEIElDVSDmoLzlvI/kuI3lj5hcbiAgICogQHBhcmFtIG1lc3NhZ2UgLSDljp/lp4vmtojmga/mqKHmnb9cbiAgICogQHJldHVybnMg6L2s5o2i5ZCO55qEIElDVSDmoLzlvI/mtojmga9cbiAgICovXG4gIHByaXZhdGUgY29udmVydFRvSWN1Rm9ybWF0KG1lc3NhZ2U6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgLy8g5bCGIHt7IGtleSB9fSDovazmjaLkuLoge2tleX1cbiAgICAvLyDmlK/mjIHnqbrmoLzvvJp7eyBrZXkgfX0gLT4ge2tleX3vvIzkvYbljrvmjonlhoXpg6jnmoTnqbrmoLxcbiAgICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKC9cXHtcXHsoW159XSspXFx9XFx9L2csIChfLCBjb250ZW50KSA9PiB7XG4gICAgICByZXR1cm4gYHske2NvbnRlbnQudHJpbSgpfX1gO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIOS9v+eUqCBJQ1UgbWVzc2FnZSBmb3JtYXQg5qC85byP5YyW5paH5pysXG4gICAqL1xuICBwcml2YXRlIGZvcm1hdEljdU1lc3NhZ2UobWVzc2FnZTogc3RyaW5nLCBpY3VEYXRhOiBJY3VEYXRhKTogc3RyaW5nIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgbWVzc2FnZUZvcm1hdCA9IG5ldyBJbnRsTWVzc2FnZUZvcm1hdChtZXNzYWdlLCB0aGlzLmxvY2FsZSk7XG4gICAgICByZXR1cm4gbWVzc2FnZUZvcm1hdC5mb3JtYXQoaWN1RGF0YSkgYXMgc3RyaW5nO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcbiAgICAgICAgY29uc29sZS53YXJuKGBJQ1UgbWVzc2FnZSBmb3JtYXR0aW5nIGZhaWxlZCBmb3IgXCIke21lc3NhZ2V9XCI6YCwgZXJyb3IpO1xuICAgICAgfVxuICAgICAgLy8g6ZmN57qn5aSE55CG77ya6L+U5Zue5Y6f5aeL5raI5oGvXG4gICAgICByZXR1cm4gbWVzc2FnZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICog5qC85byP5YyW5pWw5a2XXG4gICAqIEBwYXJhbSB2YWx1ZSAtIOimgeagvOW8j+WMlueahOaVsOWtl1xuICAgKiBAcGFyYW0gb3B0aW9ucyAtIOagvOW8j+WMlumAiemhuVxuICAgKiBAcmV0dXJucyDmoLzlvI/ljJblkI7nmoTmlbDlrZflrZfnrKbkuLJcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogZm9ybWF0TnVtYmVyKDEyMzQuNTYpIC8vIFwiMSwyMzQuNTZcIlxuICAgKiBmb3JtYXROdW1iZXIoMC44NSwgeyBzdHlsZTogJ3BlcmNlbnQnIH0pIC8vIFwiODUlXCJcbiAgICogZm9ybWF0TnVtYmVyKDEyMzQuNTYsIHsgc3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnQ05ZJyB9KSAvLyBcIsKlMSwyMzQuNTZcIlxuICAgKi9cbiAgZm9ybWF0TnVtYmVyKHZhbHVlOiBudW1iZXIsIG9wdGlvbnM6IEludGwuTnVtYmVyRm9ybWF0T3B0aW9ucyA9IHt9KTogc3RyaW5nIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIG5ldyBJbnRsLk51bWJlckZvcm1hdCh0aGlzLmxvY2FsZSwgb3B0aW9ucykuZm9ybWF0KHZhbHVlKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgTnVtYmVyIGZvcm1hdHRpbmcgZmFpbGVkIGZvciB2YWx1ZSAke3ZhbHVlfTpgLCBlcnJvcik7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICog5qC85byP5YyW6LSn5biBXG4gICAqIEBwYXJhbSB2YWx1ZSAtIOimgeagvOW8j+WMlueahOmHkeminVxuICAgKiBAcGFyYW0gY3VycmVuY3kgLSDotKfluIHku6PnoIHvvIzpu5jorqTkuLogQ05ZXG4gICAqIEBwYXJhbSBvcHRpb25zIC0g5YW25LuW5qC85byP5YyW6YCJ6aG5XG4gICAqIEByZXR1cm5zIOagvOW8j+WMluWQjueahOi0p+W4geWtl+espuS4slxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBmb3JtYXRDdXJyZW5jeSgxMjM0LjU2KSAvLyBlbi1VUzogXCJDTsKlMSwyMzQuNTZcIiwgemgtQ046IFwiwqUxLDIzNC41NlwiXG4gICAqIGZvcm1hdEN1cnJlbmN5KDEyMzQuNTYsICdVU0QnKSAvLyBlbi1VUzogXCIkMSwyMzQuNTZcIiwgemgtQ046IFwiVVMkMSwyMzQuNTZcIlxuICAgKi9cbiAgZm9ybWF0Q3VycmVuY3koXG4gICAgdmFsdWU6IG51bWJlcixcbiAgICBjdXJyZW5jeTogc3RyaW5nID0gJ0NOWScsXG4gICAgb3B0aW9uczogT21pdDxJbnRsLk51bWJlckZvcm1hdE9wdGlvbnMsICdzdHlsZScgfCAnY3VycmVuY3knPiA9IHt9LFxuICApOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZvcm1hdE51bWJlcih2YWx1ZSwge1xuICAgICAgc3R5bGU6ICdjdXJyZW5jeScsXG4gICAgICBjdXJyZW5jeSxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICog5qC85byP5YyW55m+5YiG5q+UXG4gICAqIEBwYXJhbSB2YWx1ZSAtIOimgeagvOW8j+WMlueahOWAvO+8iDAuODUg6KGo56S6IDg1Je+8iVxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIOagvOW8j+WMlumAiemhuVxuICAgKiBAcmV0dXJucyDmoLzlvI/ljJblkI7nmoTnmb7liIbmr5TlrZfnrKbkuLJcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogZm9ybWF0UGVyY2VudCgwLjg1KSAvLyBcIjg1JVwiXG4gICAqIGZvcm1hdFBlcmNlbnQoMC44NTY3LCB7IG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMiB9KSAvLyBcIjg1LjY3JVwiXG4gICAqL1xuICBmb3JtYXRQZXJjZW50KFxuICAgIHZhbHVlOiBudW1iZXIsXG4gICAgb3B0aW9uczogT21pdDxJbnRsLk51bWJlckZvcm1hdE9wdGlvbnMsICdzdHlsZSc+ID0ge30sXG4gICk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybWF0TnVtYmVyKHZhbHVlLCB7XG4gICAgICBzdHlsZTogJ3BlcmNlbnQnLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiDmoLzlvI/ljJbml6XmnJ9cbiAgICogQHBhcmFtIGRhdGUgLSDopoHmoLzlvI/ljJbnmoTml6XmnJ9cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBJbnRsLkRhdGVUaW1lRm9ybWF0T3B0aW9ucyDmoLzlvI/phY3nva5cbiAgICogQHJldHVybnMg5qC85byP5YyW5ZCO55qE5pel5pyf5a2X56ym5LiyXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGZvcm1hdERhdGUobmV3IERhdGUoKSkgLy8gZW4tVVM6IFwiMDEvMDEvMjAyNVwiLCB6aC1DTjogXCIyMDI1LzAxLzAxXCJcbiAgICogZm9ybWF0RGF0ZShuZXcgRGF0ZSgpLCB7IGRhdGVTdHlsZTogJ2Z1bGwnIH0pIC8vIFwiMjAyNOW5tDjmnIgyMOaXpeaYn+acn+S6jFwiXG4gICAqIGZvcm1hdERhdGUobmV3IERhdGUoKSwgeyB5ZWFyOiAnbnVtZXJpYycsIG1vbnRoOiAnMi1kaWdpdCcsIGRheTogJzItZGlnaXQnIH0pIC8vIOagueaNrmxvY2FsZeagvOW8j+WMllxuICAgKiBmb3JtYXREYXRlKG5ldyBEYXRlKCksIHsgeWVhcjogJ251bWVyaWMnLCBtb250aDogJ2xvbmcnIH0pIC8vIFwiMjAyNOW5tDjmnIhcIlxuICAgKi9cbiAgZm9ybWF0RGF0ZShcbiAgICBkYXRlOiBEYXRlIHwgc3RyaW5nIHwgbnVtYmVyLFxuICAgIG9wdGlvbnM6IEludGwuRGF0ZVRpbWVGb3JtYXRPcHRpb25zID0ge1xuICAgICAgeWVhcjogJ251bWVyaWMnLFxuICAgICAgbW9udGg6ICcyLWRpZ2l0JyxcbiAgICAgIGRheTogJzItZGlnaXQnLFxuICAgIH0sXG4gICk6IHN0cmluZyB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRhdGVPYmogPSBuZXcgRGF0ZShkYXRlKTtcbiAgICAgIGlmIChpc05hTihkYXRlT2JqLmdldFRpbWUoKSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGRhdGUnKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLmZvcm1hdERhdGVCeU9wdGlvbnMoZGF0ZU9iaiwgb3B0aW9ucyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xuICAgICAgICBjb25zb2xlLndhcm4oYERhdGUgZm9ybWF0dGluZyBmYWlsZWQgZm9yIGRhdGUgJHtkYXRlfTpgLCBlcnJvcik7XG4gICAgICB9XG4gICAgICByZXR1cm4gU3RyaW5nKGRhdGUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiDmoLzlvI/ljJbml6XmnJ/lkozml7bpl7RcbiAgICogQHBhcmFtIGRhdGUgLSDopoHmoLzlvI/ljJbnmoTml6XmnJ/ml7bpl7RcbiAgICogQHBhcmFtIG9wdGlvbnMgLSBJbnRsLkRhdGVUaW1lRm9ybWF0T3B0aW9ucyDmoLzlvI/phY3nva5cbiAgICogQHJldHVybnMg5qC85byP5YyW5ZCO55qE5pel5pyf5pe26Ze05a2X56ym5LiyXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGZvcm1hdERhdGVUaW1lKG5ldyBEYXRlKCkpIC8vIGVuLVVTOiBcIjAxLzAxLzIwMjUsIDE0OjMwOjAwXCIsIHpoLUNOOiBcIjIwMjUvMDEvMDEgMTQ6MzA6MDBcIlxuICAgKiBmb3JtYXREYXRlVGltZShuZXcgRGF0ZSgpLCB7IGRhdGVTdHlsZTogJ21lZGl1bScsIHRpbWVTdHlsZTogJ3Nob3J0JyB9KSAvLyBcIjIwMjTlubQ45pyIMjDml6UgMTQ6MzBcIlxuICAgKiBmb3JtYXREYXRlVGltZShuZXcgRGF0ZSgpLCB7IHllYXI6ICdudW1lcmljJywgbW9udGg6ICcyLWRpZ2l0JywgZGF5OiAnMi1kaWdpdCcsIGhvdXI6ICcyLWRpZ2l0JywgbWludXRlOiAnMi1kaWdpdCcsIHNlY29uZDogJzItZGlnaXQnLCBob3VyMTI6IGZhbHNlIH0pIC8vIOagueaNrmxvY2FsZeagvOW8j+WMllxuICAgKi9cbiAgZm9ybWF0RGF0ZVRpbWUoXG4gICAgZGF0ZTogRGF0ZSB8IHN0cmluZyB8IG51bWJlcixcbiAgICBvcHRpb25zOiBJbnRsLkRhdGVUaW1lRm9ybWF0T3B0aW9ucyA9IHtcbiAgICAgIHllYXI6ICdudW1lcmljJyxcbiAgICAgIG1vbnRoOiAnMi1kaWdpdCcsXG4gICAgICBkYXk6ICcyLWRpZ2l0JyxcbiAgICAgIGhvdXI6ICcyLWRpZ2l0JyxcbiAgICAgIG1pbnV0ZTogJzItZGlnaXQnLFxuICAgICAgc2Vjb25kOiAnMi1kaWdpdCcsXG4gICAgICBob3VyMTI6IGZhbHNlLFxuICAgIH0sXG4gICk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybWF0RGF0ZShkYXRlLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDmoLzlvI/ljJbnm7jlr7nml7bpl7RcbiAgICogQHBhcmFtIHZhbHVlIC0g5pe26Ze05beu5YC877yI5pWw5a2X77yJ5oiW5pel5pyf5a+56LGhXG4gICAqIEBwYXJhbSB1bml0IC0g5pe26Ze05Y2V5L2N77yI5b2TdmFsdWXkuLrmlbDlrZfml7blv4Xpobvmj5DkvpvvvIlcbiAgICogQHBhcmFtIG9wdGlvbnMgLSDmoLzlvI/ljJbpgInpoblcbiAgICogQHJldHVybnMg5qC85byP5YyW5ZCO55qE55u45a+55pe26Ze05a2X56ym5LiyXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIC8vIOaJi+WKqOaMh+WumuWNleS9jVxuICAgKiBmb3JtYXRSZWxhdGl2ZVRpbWUoLTEsICdkYXknKSAvLyBlbi1VUzogXCJ5ZXN0ZXJkYXlcIiwgemgtQ046IFwi5pio5aSpXCJcbiAgICogZm9ybWF0UmVsYXRpdmVUaW1lKDIsICdob3VyJykgLy8gZW4tVVM6IFwiaW4gMiBob3Vyc1wiLCB6aC1DTjogXCIy5bCP5pe25ZCOXCJcbiAgICogZm9ybWF0UmVsYXRpdmVUaW1lKC0zMCwgJ21pbnV0ZScpIC8vIGVuLVVTOiBcIjMwIG1pbnV0ZXMgYWdvXCIsIHpoLUNOOiBcIjMw5YiG6ZKf5YmNXCJcbiAgICpcbiAgICogLy8g6Ieq5Yqo6K6h566X5Y2V5L2NXG4gICAqIGZvcm1hdFJlbGF0aXZlVGltZShuZXcgRGF0ZShEYXRlLm5vdygpIC0gNjAwMDApKSAvLyBcIjEgbWludXRlIGFnb1wiXG4gICAqIGZvcm1hdFJlbGF0aXZlVGltZShuZXcgRGF0ZShEYXRlLm5vdygpICsgNzIwMDAwMCkpIC8vIFwiaW4gMiBob3Vyc1wiXG4gICAqIGZvcm1hdFJlbGF0aXZlVGltZShuZXcgRGF0ZShEYXRlLm5vdygpIC0gODY0MDAwMDApKSAvLyBcInllc3RlcmRheVwiXG4gICAqL1xuICBmb3JtYXRSZWxhdGl2ZVRpbWUoXG4gICAgdmFsdWU6IERhdGUsXG4gICAgb3B0aW9ucz86IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0T3B0aW9ucyxcbiAgKTogc3RyaW5nO1xuXG4gIGZvcm1hdFJlbGF0aXZlVGltZShcbiAgICB2YWx1ZTogbnVtYmVyLFxuICAgIHVuaXQ6IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0VW5pdCxcbiAgICBvcHRpb25zPzogSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXRPcHRpb25zLFxuICApOiBzdHJpbmc7XG5cbiAgZm9ybWF0UmVsYXRpdmVUaW1lKFxuICAgIHZhbHVlOiBudW1iZXIgfCBEYXRlLFxuICAgIHVuaXRPck9wdGlvbnM/OlxuICAgICAgfCBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdFVuaXRcbiAgICAgIHwgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXRPcHRpb25zLFxuICAgIG9wdGlvbnM6IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0T3B0aW9ucyA9IHsgbnVtZXJpYzogJ2F1dG8nIH0sXG4gICk6IHN0cmluZyB7XG4gICAgdHJ5IHtcbiAgICAgIGxldCBmaW5hbFZhbHVlOiBudW1iZXI7XG4gICAgICBsZXQgZmluYWxVbml0OiBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdFVuaXQ7XG4gICAgICBsZXQgZmluYWxPcHRpb25zOiBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdE9wdGlvbnM7XG5cbiAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgLy8g6Ieq5Yqo6K6h566X5pe26Ze05beu5ZKM5Y2V5L2NXG4gICAgICAgIGNvbnN0IHsgdmFsdWU6IGNhbGN1bGF0ZWRWYWx1ZSwgdW5pdDogY2FsY3VsYXRlZFVuaXQgfSA9XG4gICAgICAgICAgdGhpcy5jYWxjdWxhdGVSZWxhdGl2ZVRpbWUodmFsdWUpO1xuICAgICAgICBmaW5hbFZhbHVlID0gY2FsY3VsYXRlZFZhbHVlO1xuICAgICAgICBmaW5hbFVuaXQgPSBjYWxjdWxhdGVkVW5pdDtcbiAgICAgICAgZmluYWxPcHRpb25zID1cbiAgICAgICAgICAodW5pdE9yT3B0aW9ucyBhcyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdE9wdGlvbnMpIHx8IG9wdGlvbnM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyDkvb/nlKjmj5DkvpvnmoTmlbDlgLzlkozljZXkvY1cbiAgICAgICAgZmluYWxWYWx1ZSA9IHZhbHVlO1xuICAgICAgICBmaW5hbFVuaXQgPSB1bml0T3JPcHRpb25zIGFzIEludGwuUmVsYXRpdmVUaW1lRm9ybWF0VW5pdDtcbiAgICAgICAgZmluYWxPcHRpb25zID0gb3B0aW9ucztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCh0aGlzLmxvY2FsZSwgZmluYWxPcHRpb25zKS5mb3JtYXQoXG4gICAgICAgIGZpbmFsVmFsdWUsXG4gICAgICAgIGZpbmFsVW5pdCxcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xuICAgICAgICBjb25zb2xlLndhcm4oYFJlbGF0aXZlIHRpbWUgZm9ybWF0dGluZyBmYWlsZWQgZm9yICR7dmFsdWV9OmAsIGVycm9yKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIERhdGVcbiAgICAgICAgPyB2YWx1ZS50b0xvY2FsZVN0cmluZyh0aGlzLmxvY2FsZSlcbiAgICAgICAgOiBgJHt2YWx1ZX1gO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiDmoLnmja7ml6XmnJ/orqHnrpfnm7jlr7nml7bpl7Tlt67lgLzlkozmnIDlkIjpgILnmoTljZXkvY1cbiAgICogQHBhcmFtIGRhdGUgLSDnm67moIfml6XmnJ9cbiAgICogQHJldHVybnMg5YyF5ZCr5pe26Ze05beu5YC85ZKM5Y2V5L2N55qE5a+56LGhXG4gICAqL1xuICBwcml2YXRlIGNhbGN1bGF0ZVJlbGF0aXZlVGltZShkYXRlOiBEYXRlKToge1xuICAgIHZhbHVlOiBudW1iZXI7XG4gICAgdW5pdDogSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXRVbml0O1xuICB9IHtcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IGRpZmZNcyA9IGRhdGUuZ2V0VGltZSgpIC0gbm93LmdldFRpbWUoKTtcbiAgICBjb25zdCBhYnNEaWZmTXMgPSBNYXRoLmFicyhkaWZmTXMpO1xuXG4gICAgLy8g5pe26Ze05Y2V5L2N6ZiI5YC877yI5q+r56eS77yJXG4gICAgY29uc3QgTUlOVVRFX01TID0gNjAgKiAxMDAwO1xuICAgIGNvbnN0IEhPVVJfTVMgPSA2MCAqIE1JTlVURV9NUztcbiAgICBjb25zdCBEQVlfTVMgPSAyNCAqIEhPVVJfTVM7XG5cbiAgICAvLyDmoLnmja7ml7bpl7Tlt67pgInmi6nlkIjpgILnmoTljZXkvY3vvIzmnIDlpKfljZXkvY3kuLpkYXlcbiAgICBpZiAoYWJzRGlmZk1zID49IERBWV9NUykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsdWU6IE1hdGgucm91bmQoZGlmZk1zIC8gREFZX01TKSxcbiAgICAgICAgdW5pdDogJ2RheScsXG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAoYWJzRGlmZk1zID49IEhPVVJfTVMpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZhbHVlOiBNYXRoLnJvdW5kKGRpZmZNcyAvIEhPVVJfTVMpLFxuICAgICAgICB1bml0OiAnaG91cicsXG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAoYWJzRGlmZk1zID49IE1JTlVURV9NUykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsdWU6IE1hdGgucm91bmQoZGlmZk1zIC8gTUlOVVRFX01TKSxcbiAgICAgICAgdW5pdDogJ21pbnV0ZScsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgdmFsdWU6IE1hdGgucm91bmQoZGlmZk1zIC8gMTAwMCksXG4gICAgICB1bml0OiAnc2Vjb25kJyxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIOagueaNruaXpeacn+agvOW8j+mFjee9ruagvOW8j+WMluaXpeacn1xuICAgKiDkvb/nlKjmoIflh4YgSW50bC5EYXRlVGltZUZvcm1hdE9wdGlvbnMg56Gu5L+d5qC85byP5Y+v6aKE5rWL5oCnXG4gICAqL1xuICBwcml2YXRlIGZvcm1hdERhdGVCeU9wdGlvbnMoXG4gICAgZGF0ZTogRGF0ZSxcbiAgICBvcHRpb25zOiBJbnRsLkRhdGVUaW1lRm9ybWF0T3B0aW9ucyxcbiAgKTogc3RyaW5nIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHRoaXMubG9jYWxlLCBvcHRpb25zKS5mb3JtYXQoZGF0ZSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xuICAgICAgICBjb25zb2xlLndhcm4oYERhdGUgZm9ybWF0dGluZyBmYWlsZWQ6YCwgZXJyb3IpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGRhdGUudG9JU09TdHJpbmcoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICog6YCa6L+H5a2X56ym5Liy6ZSu6I635Y+W57+76K+RXG4gICAqL1xuICBwcml2YXRlIGdldFRyYW5zbGF0aW9uQnlLZXkoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnJlc29sdmVUcmFuc2xhdGlvbihrZXkpO1xuICB9XG5cbiAgLyoqXG4gICAqIOmAmui/h+e/u+ivkeWvueixoeiOt+WPlue/u+ivkeWAvFxuICAgKi9cbiAgcHJpdmF0ZSBnZXRUcmFuc2xhdGlvbkJ5T2JqZWN0KFxuICAgIHRyYW5zbGF0aW9uT2JqOiBUcmFuc2xhdGlvbixcbiAgKTogVHJhbnNsYXRpb25WYWx1ZSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0VHJhbnNsYXRpb25WYWx1ZSh0cmFuc2xhdGlvbk9iaiwgdGhpcy5sb2NhbGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIOWkhOeQhuaXoOaViOivreiogOeOr+Wig1xuICAgKi9cbiAgcHJpdmF0ZSBoYW5kbGVJbnZhbGlkTG9jYWxlKCk6IHZvaWQge1xuICAgIGlmIChpc0Rldk1vZGUoKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignYGxvY2FsZXNgIGhhcyBub3QgYmVlbiBpbml0aWFsaXplZCBjb3JyZWN0bHknKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICog6aqM6K+B6K+t6KiA546v5aKD5piv5ZCm5pyJ5pWIXG4gICAqL1xuICBwcml2YXRlIGlzVmFsaWRMb2NhbGUobG9jYWxlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxvY2FsZXMuaW5jbHVkZXMobG9jYWxlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDmo4Dmn6Xph43lpI3nv7vor5HvvIjlvIDlj5HmqKHlvI/vvIlcbiAgICovXG4gIHByaXZhdGUgY2hlY2tGb3JEdXBsaWNhdGVUcmFuc2xhdGlvbnMobmV3VHJhbnNsYXRpb25zOiBUcmFuc2xhdGlvbnMpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IGV4aXN0aW5nVHJhbnNsYXRpb25zIG9mIHRoaXMudHJhbnNsYXRpb25zTGlzdCkge1xuICAgICAgT2JqZWN0LmtleXMobmV3VHJhbnNsYXRpb25zKS5mb3JFYWNoKGxvY2FsZSA9PiB7XG4gICAgICAgIGlmIChleGlzdGluZ1RyYW5zbGF0aW9uc1tsb2NhbGVdKSB7XG4gICAgICAgICAgdGhpcy5jb21wYXJlVHJhbnNsYXRpb25LZXlzKFxuICAgICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgICAgbmV3VHJhbnNsYXRpb25zW2xvY2FsZV0sXG4gICAgICAgICAgICBleGlzdGluZ1RyYW5zbGF0aW9uc1tsb2NhbGVdLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiDmoIflh4bljJbov5znqItVUkxcbiAgICovXG4gIHByaXZhdGUgbm9ybWFsaXplUmVtb3RlVXJsKHJlbW90ZVVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZW1vdGVVcmwgPSB0aGlzLmNsZWFuVXJsKHJlbW90ZVVybCk7XG4gICAgY29uc3QgaXNBYnNvbHV0ZSA9IGlzQWJzb2x1dGVVcmwocmVtb3RlVXJsKTtcbiAgICBjb25zdCBpc0FwaUdhdGVXYXlSZXF1ZXN0ID0gcmVtb3RlVXJsLnN0YXJ0c1dpdGgoQVBJX0dBVEVXQVkpO1xuXG4gICAgLy8g5byA5Y+R5qih5byP5LiL6L+b6KGMVVJM6aqM6K+BXG4gICAgaWYgKGlzRGV2TW9kZSgpKSB7XG4gICAgICB0aGlzLnZhbGlkYXRlUmVtb3RlVXJsKHJlbW90ZVVybCwgaXNBYnNvbHV0ZSk7XG4gICAgfVxuXG4gICAgLy8g55u45a+5VVJM6L2s5o2i5Li657ud5a+5VVJMXG4gICAgaWYgKCFpc0Fic29sdXRlICYmICFpc0FwaUdhdGVXYXlSZXF1ZXN0KSB7XG4gICAgICBjb25zdCBiYXNlVXJsID0gdGhpcy5iYXNlSHJlZi5lbmRzV2l0aCgnLycpXG4gICAgICAgID8gdGhpcy5iYXNlSHJlZlxuICAgICAgICA6IGAke3RoaXMuYmFzZUhyZWZ9L2A7XG4gICAgICByZXR1cm4gYCR7YmFzZVVybH0ke3JlbW90ZVVybH1gO1xuICAgIH1cblxuICAgIHJldHVybiByZW1vdGVVcmw7XG4gIH1cblxuICAvKipcbiAgICog5riF55CGVVJM77yI56e76ZmkaGFzaOeJh+aute+8iVxuICAgKi9cbiAgcHJpdmF0ZSBjbGVhblVybCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGhlYWQodXJsLnNwbGl0KC8jLykpIHx8IHVybDtcbiAgfVxuXG4gIC8qKlxuICAgKiDpqozor4Hov5znqItVUkzvvIjlvIDlj5HmqKHlvI/vvIlcbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVSZW1vdGVVcmwocmVtb3RlVXJsOiBzdHJpbmcsIGlzQWJzb2x1dGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoIWlzQWJzb2x1dGUgJiYgKCF0aGlzLmJhc2VIcmVmIHx8ICFpc0Fic29sdXRlVXJsKHRoaXMuYmFzZUhyZWYpKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgJ2Fic29sdXRlIGJhc2UgaHJlZiBpcyByZXF1aXJlZCBmb3IgcmVsYXRpdmUgcmVtb3RlIHVybCcsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChyZW1vdGVVcmwuc3BsaXQoJz8nKVswXS5pbmNsdWRlcygnLi8nKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgJ2RvIG5vdCB1c2UgYW55IGRvdCB3aXRoIHNsYXNoIGZvciByZWxhdGl2ZSB1cmwgd2hpY2ggc2hvdWxkIGFsd2F5cyBiYXNlIGZyb20gYmFzZSBocmVmJyxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIOWIm+W7uui/nOeoi+e/u+ivkeivt+axglxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVSZW1vdGVUcmFuc2xhdGlvblJlcXVlc3QoXG4gICAgbm9ybWFsaXplZFVybDogc3RyaW5nLFxuICApOiBPYnNlcnZhYmxlPFRyYW5zbGF0aW9ucz4ge1xuICAgIGlmIChMT0NBTEVfUExBQ0VIT0xERVJfUkVHRVgudGVzdChub3JtYWxpemVkVXJsKSkge1xuICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlTXVsdGlMb2NhbGVSZXF1ZXN0KG5vcm1hbGl6ZWRVcmwpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jcmVhdGVTaW5nbGVMb2NhbGVSZXF1ZXN0KG5vcm1hbGl6ZWRVcmwpO1xuICB9XG5cbiAgLyoqXG4gICAqIOWIm+W7uuWkmuivreiogOivt+axglxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVNdWx0aUxvY2FsZVJlcXVlc3QoXG4gICAgdXJsVGVtcGxhdGU6IHN0cmluZyxcbiAgKTogT2JzZXJ2YWJsZTxUcmFuc2xhdGlvbnM+IHtcbiAgICBjb25zdCByZXF1ZXN0cyA9IHRoaXMub3B0aW9ucy5sb2NhbGVzLm1hcChsb2NhbGUgPT5cbiAgICAgIHRoaXMuZmV0Y2hUcmFuc2xhdGlvbih1cmxUZW1wbGF0ZSwgbG9jYWxlKS5waXBlKFxuICAgICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLmxvb3NlKSB7XG4gICAgICAgICAgICBjb25zdCBsb29zZUxvY2FsZSA9IHRoaXMuZXh0cmFjdExvb3NlTG9jYWxlKGxvY2FsZSk7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIGxvY2FsZSAhPT0gbG9vc2VMb2NhbGUgJiZcbiAgICAgICAgICAgICAgIXRoaXMub3B0aW9ucy5sb2NhbGVzLmluY2x1ZGVzKGxvb3NlTG9jYWxlKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLmZldGNoVHJhbnNsYXRpb24odXJsVGVtcGxhdGUsIGxvb3NlTG9jYWxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGlzRGV2TW9kZSgpID8gdGhyb3dFcnJvcigoKSA9PiBlcnJvcikgOiBFTVBUWTtcbiAgICAgICAgfSksXG4gICAgICAgIGZpbHRlcihpc1BsYWluT2JqZWN0KSxcbiAgICAgICAgbWFwKFxuICAgICAgICAgICh0cmFuc2xhdGlvbjogVHJhbnNsYXRpb24pID0+XG4gICAgICAgICAgICAoeyBbbG9jYWxlXTogdHJhbnNsYXRpb24gfSkgYXMgVHJhbnNsYXRpb25zLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICApO1xuXG4gICAgcmV0dXJuIGZvcmtKb2luKHJlcXVlc3RzKS5waXBlKFxuICAgICAgbWFwKHJlc3VsdHMgPT5cbiAgICAgICAgcmVzdWx0cy5yZWR1Y2UoKGFjYywgY3VycikgPT4gT2JqZWN0LmFzc2lnbihhY2MsIGN1cnIpLCB7fSksXG4gICAgICApLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICog5Yib5bu65Y2V6K+t6KiA6K+35rGCXG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZVNpbmdsZUxvY2FsZVJlcXVlc3QodXJsOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFRyYW5zbGF0aW9ucz4ge1xuICAgIHJldHVybiB0aGlzLnBlcmZvcm1UcmFuc2xhdGlvblJlcXVlc3QodXJsKS5waXBlKFxuICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiAoaXNEZXZNb2RlKCkgPyB0aHJvd0Vycm9yKCgpID0+IGVycm9yKSA6IEVNUFRZKSksXG4gICAgKSBhcyBPYnNlcnZhYmxlPFRyYW5zbGF0aW9ucz47XG4gIH1cblxuICAvKipcbiAgICog5omn6KGM57+76K+R6K+35rGCXG4gICAqL1xuICBwcml2YXRlIHBlcmZvcm1UcmFuc2xhdGlvblJlcXVlc3QodXJsOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IGlzSlNPTiA9IHVybC5lbmRzV2l0aCgnLmpzb24nKTtcbiAgICBjb25zdCBpc0FwaUdhdGVXYXlSZXF1ZXN0ID0gdXJsLnN0YXJ0c1dpdGgoQVBJX0dBVEVXQVkpO1xuICAgIGNvbnN0IHJlc3BvbnNlVHlwZSA9IGlzSlNPTiA/ICdqc29uJyA6ICd0ZXh0JztcblxuICAgIGlmIChpc0FwaUdhdGVXYXlSZXF1ZXN0KSB7XG4gICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgIC5yZXF1ZXN0KCdHRVQnLCB1cmwsIHsgcmVzcG9uc2VUeXBlIH0pXG4gICAgICAgIC5waXBlKG1hcChib2R5ID0+IChpc0pTT04gPyBib2R5IDogcGFyc2UoYm9keSkpKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFqYXgoeyB1cmwsIHJlc3BvbnNlVHlwZSB9KS5waXBlKFxuICAgICAgbWFwKCh7IHJlc3BvbnNlIH0pID0+IChpc0pTT04gPyByZXNwb25zZSA6IHBhcnNlKHJlc3BvbnNlIGFzIHN0cmluZykpKSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIOmqjOivgWZldGNoVHJhbnNsYXRpb27lj4LmlbBcbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVGZXRjaFRyYW5zbGF0aW9uUGFyYW1zKFxuICAgIHJlbW90ZVVybDogc3RyaW5nLFxuICAgIGxvY2FsZT86IHN0cmluZyxcbiAgKTogdm9pZCB7XG4gICAgaWYgKGlzRGV2TW9kZSgpICYmIExPQ0FMRV9QTEFDRUhPTERFUl9SRUdFWC50ZXN0KHJlbW90ZVVybCkgJiYgIWxvY2FsZSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgJ2Bsb2NhbGVgIGlzIHJlcXVpcmVkIHNpbmNlIHRoZSBwcm92aWRlZCByZW1vdGUgdXJsIGNvbnRhaW5zIGxvY2FsZSBwbGFjZWhvbGRlcicsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiDop6PmnpDnv7vor5HmlofmnKxcbiAgICovXG4gIHByaXZhdGUgcmVzb2x2ZVRyYW5zbGF0aW9uKGtleTogc3RyaW5nLCBsb2NhbGUgPSB0aGlzLmxvY2FsZSk6IHN0cmluZyB7XG4gICAgLy8g5LyY5YWI5LuO6L+c56iL57+76K+R5Lit5p+l5om+XG4gICAgbGV0IHZhbHVlID0gdGhpcy5zZWFyY2hJblRyYW5zbGF0aW9uc0xpc3QoXG4gICAgICBrZXksXG4gICAgICBsb2NhbGUsXG4gICAgICB0aGlzLnJlbW90ZVRyYW5zbGF0aW9uc0xpc3QsXG4gICAgKTtcblxuICAgIC8vIOWmguaenOi/nOeoi+e/u+ivkeS4reayoeacieaJvuWIsO+8iHVuZGVmaW5lZO+8ie+8jOWImeS7juacrOWcsOe/u+ivkeS4reafpeaJvlxuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB2YWx1ZSA9IHRoaXMuc2VhcmNoSW5UcmFuc2xhdGlvbnNMaXN0KGtleSwgbG9jYWxlLCB0aGlzLnRyYW5zbGF0aW9uc0xpc3QpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZSA/PyBrZXk7XG4gIH1cblxuICAvKipcbiAgICog5Zyo57+76K+R5YiX6KGo5Lit5pCc57SiXG4gICAqL1xuICBwcml2YXRlIHNlYXJjaEluVHJhbnNsYXRpb25zTGlzdChcbiAgICBrZXk6IHN0cmluZyxcbiAgICBsb2NhbGU6IHN0cmluZyxcbiAgICB0cmFuc2xhdGlvbnNMaXN0OiBUcmFuc2xhdGlvbnNbXSxcbiAgKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIXRyYW5zbGF0aW9uc0xpc3QgfHwgdHJhbnNsYXRpb25zTGlzdC5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLy8g5LuO5ZCO5b6A5YmN6YGN5Y6G77yI5ZCO5Yqg5YWl55qE5LyY5YWI57qn5pu06auY77yJXG4gICAgZm9yIChsZXQgaSA9IHRyYW5zbGF0aW9uc0xpc3QubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5zZWFyY2hJblRyYW5zbGF0aW9ucyhrZXksIGxvY2FsZSwgdHJhbnNsYXRpb25zTGlzdFtpXSk7XG4gICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiDlnKjljZXkuKrnv7vor5Hlr7nosaHkuK3mkJzntKJcbiAgICovXG4gIHByaXZhdGUgc2VhcmNoSW5UcmFuc2xhdGlvbnMoXG4gICAga2V5OiBzdHJpbmcsXG4gICAgbG9jYWxlOiBzdHJpbmcsXG4gICAgdHJhbnNsYXRpb25zOiBUcmFuc2xhdGlvbnMsXG4gICk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgdHJhbnNsYXRpb25WYWx1ZSA9IHRoaXMuZ2V0VHJhbnNsYXRpb25WYWx1ZSh0cmFuc2xhdGlvbnMsIGxvY2FsZSk7XG5cbiAgICAvLyDlpoLmnpzmsqHmnInojrflj5bliLDnv7vor5HlgLzlr7nosaHvvIhnZXRUcmFuc2xhdGlvblZhbHVl5bey57uP5aSE55CG5LqGbG9vc2XlkoxmYWxsYmFja++8ie+8jOebtOaOpei/lOWbnlxuICAgIGlmICh0cmFuc2xhdGlvblZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLy8g6I635Y+W57+76K+R5YC877yM5pSv5oyB5omB5bmz5ZKM5bWM5aWX5Lik56eN57uT5p6EXG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldFRyYW5zbGF0aW9uRnJvbVNvdXJjZSh0cmFuc2xhdGlvblZhbHVlLCBrZXkpO1xuXG4gICAgLy8g5aaC5p6c5om+5Yiw5YC877yI5YyF5ousbnVsbOWAvO+8ie+8jOWImeWkhOeQhuW5tui/lOWbnlxuICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnZhbGlkYXRlVHJhbnNsYXRpb25WYWx1ZSh2YWx1ZSwgbG9jYWxlLCBrZXkpO1xuICAgICAgLy8gbnVsbOWAvOi9rOaNouS4uuWtl+espuS4sidudWxsJ++8jOWFtuS7luWAvOato+W4uOi9rOaNolxuICAgICAgcmV0dXJuIHZhbHVlID09PSBudWxsID8gJ251bGwnIDogU3RyaW5nKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvLyDlpoLmnpzlnKjlvZPliY3or63oqIDnmoTnv7vor5HlgLzkuK3mib7kuI3liLBrZXnvvIzkvYbov5nkuI3mmK9mYWxsYmFja+ivreiogO+8jOWwneivlWZhbGxiYWNrXG4gICAgaWYgKGxvY2FsZSAhPT0gdGhpcy5vcHRpb25zLmZhbGxiYWNrTG9jYWxlKSB7XG4gICAgICBjb25zdCBmYWxsYmFja1RyYW5zbGF0aW9uVmFsdWUgPSB0aGlzLmdldFRyYW5zbGF0aW9uVmFsdWUoXG4gICAgICAgIHRyYW5zbGF0aW9ucyxcbiAgICAgICAgdGhpcy5vcHRpb25zLmZhbGxiYWNrTG9jYWxlLFxuICAgICAgKTtcblxuICAgICAgaWYgKGZhbGxiYWNrVHJhbnNsYXRpb25WYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IGZhbGxiYWNrVmFsdWUgPSB0aGlzLmdldFRyYW5zbGF0aW9uRnJvbVNvdXJjZShcbiAgICAgICAgICBmYWxsYmFja1RyYW5zbGF0aW9uVmFsdWUsXG4gICAgICAgICAga2V5LFxuICAgICAgICApO1xuICAgICAgICBpZiAoZmFsbGJhY2tWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGhpcy52YWxpZGF0ZVRyYW5zbGF0aW9uVmFsdWUoXG4gICAgICAgICAgICBmYWxsYmFja1ZhbHVlLFxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLmZhbGxiYWNrTG9jYWxlLFxuICAgICAgICAgICAga2V5LFxuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuIGZhbGxiYWNrVmFsdWUgPT09IG51bGwgPyAnbnVsbCcgOiBTdHJpbmcoZmFsbGJhY2tWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIOS7jue/u+ivkea6kOiOt+WPlue/u+ivkeWAvO+8jOaUr+aMgeaJgeW5s+WSjOW1jOWll+S4pOenjee7k+aehFxuICAgKiBAcGFyYW0gc291cmNlIC0g57+76K+R5rqQ5a+56LGhXG4gICAqIEBwYXJhbSBrZXkgLSDnv7vor5HplK7vvIjlpoIgJ2EuYi5jJ++8iVxuICAgKiBAcmV0dXJucyDnv7vor5HlgLzmiJZ1bmRlZmluZWRcbiAgICovXG4gIHByaXZhdGUgZ2V0VHJhbnNsYXRpb25Gcm9tU291cmNlKHNvdXJjZTogYW55LCBrZXk6IHN0cmluZyk6IGFueSB7XG4gICAgaWYgKCFzb3VyY2UgfHwgdHlwZW9mIHNvdXJjZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLy8gMS4g5LyY5YWI5bCd6K+V5omB5bmz57uT5p6E77ya55u05o6l5p+l5om+5a6M5pW055qE6ZSuICdhLmIuYydcbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkge1xuICAgICAgcmV0dXJuIHNvdXJjZVtrZXldO1xuICAgIH1cblxuICAgIC8vIDIuIOWGjeWwneivleW1jOWll+e7k+aehO+8muS9v+eUqGxvZGFzaC5nZXTmjInot6/lvoTmn6Xmib4gYS5iLmNcbiAgICBjb25zdCBuZXN0ZWRWYWx1ZSA9IGdldChzb3VyY2UsIGtleSk7XG4gICAgaWYgKG5lc3RlZFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBuZXN0ZWRWYWx1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIOiOt+WPluaMh+WumuivreiogOeahOe/u+ivkeWAvO+8iOWkhOeQhmxvb3Nl5qih5byP5ZKMZmFsbGJhY2vpgLvovpHvvIlcbiAgICovXG4gIHByaXZhdGUgZ2V0VHJhbnNsYXRpb25WYWx1ZShcbiAgICBzb3VyY2U6IFRyYW5zbGF0aW9uLFxuICAgIGxvY2FsZSA9IHRoaXMubG9jYWxlLFxuICApOiBUcmFuc2xhdGlvblZhbHVlIHtcbiAgICBpZiAoIXNvdXJjZSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyAxLiDpppblhYjmo4Dmn6Xnsr7noa7ljLnphY3nmoTplK7mmK/lkKblrZjlnKhcbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwgbG9jYWxlKSkge1xuICAgICAgcmV0dXJuIHNvdXJjZVtsb2NhbGVdOyAvLyDov5Tlm57lrp7pmYXlgLzvvIzlj6/og73mmK9udWxs44CBdW5kZWZpbmVk5oiW5YW25LuW5YC8XG4gICAgfVxuXG4gICAgLy8gMi4g5aaC5p6c5ZCv55So5LqG5a695p2+5qih5byP77yM5bCd6K+V5a695p2+5Yy56YWNXG4gICAgaWYgKHRoaXMub3B0aW9ucy5sb29zZSkge1xuICAgICAgY29uc3QgbG9vc2VWYWx1ZSA9IHRoaXMuZ2V0TG9vc2VUcmFuc2xhdGlvblZhbHVlKHNvdXJjZSwgbG9jYWxlKTtcbiAgICAgIGlmIChsb29zZVZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGxvb3NlVmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gMy4g5aaC5p6c5b2T5YmN6K+t6KiA5LiN5pivZmFsbGJhY2vor63oqIDvvIzlsJ3or5VmYWxsYmFja+ivreiogFxuICAgIGlmIChsb2NhbGUgIT09IHRoaXMub3B0aW9ucy5mYWxsYmFja0xvY2FsZSkge1xuICAgICAgLy8g6aaW5YWI5qOA5p+lZmFsbGJhY2vor63oqIDnmoTnsr7noa7ljLnphY1cbiAgICAgIGlmIChcbiAgICAgICAgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKFxuICAgICAgICAgIHNvdXJjZSxcbiAgICAgICAgICB0aGlzLm9wdGlvbnMuZmFsbGJhY2tMb2NhbGUsXG4gICAgICAgIClcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gc291cmNlW3RoaXMub3B0aW9ucy5mYWxsYmFja0xvY2FsZV07XG4gICAgICB9XG5cbiAgICAgIC8vIOWmguaenOWQr+eUqOS6huWuveadvuaooeW8j++8jOS5n+WvuWZhbGxiYWNr6K+t6KiA6L+b6KGM5a695p2+5Yy56YWNXG4gICAgICBpZiAodGhpcy5vcHRpb25zLmxvb3NlKSB7XG4gICAgICAgIGNvbnN0IGZhbGxiYWNrTG9vc2VWYWx1ZSA9IHRoaXMuZ2V0TG9vc2VUcmFuc2xhdGlvblZhbHVlKFxuICAgICAgICAgIHNvdXJjZSxcbiAgICAgICAgICB0aGlzLm9wdGlvbnMuZmFsbGJhY2tMb2NhbGUsXG4gICAgICAgICk7XG4gICAgICAgIGlmIChmYWxsYmFja0xvb3NlVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldHVybiBmYWxsYmFja0xvb3NlVmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIOWuveadvuaooeW8j+S4i+iOt+WPlue/u+ivkeWAvFxuICAgKi9cbiAgcHJpdmF0ZSBnZXRMb29zZVRyYW5zbGF0aW9uVmFsdWUoXG4gICAgc291cmNlOiBUcmFuc2xhdGlvbixcbiAgICBsb2NhbGU6IHN0cmluZyxcbiAgKTogVHJhbnNsYXRpb25WYWx1ZSB7XG4gICAgY29uc3QgbG9vc2VMb2NhbGUgPSB0aGlzLmV4dHJhY3RMb29zZUxvY2FsZShsb2NhbGUpO1xuXG4gICAgaWYgKGxvY2FsZSA9PT0gbG9vc2VMb2NhbGUpIHtcbiAgICAgIC8vIOWvu+aJvuWMuemFjeeahOWuveadvuivreiogFxuICAgICAgY29uc3QgbWF0Y2hlZEVudHJ5ID0gT2JqZWN0LmVudHJpZXMoc291cmNlKS5maW5kKFxuICAgICAgICAoW2tleV0pID0+IGxvb3NlTG9jYWxlID09PSB0aGlzLmV4dHJhY3RMb29zZUxvY2FsZShrZXkpLFxuICAgICAgKTtcbiAgICAgIHJldHVybiBtYXRjaGVkRW50cnk/LlsxXTtcbiAgICB9XG5cbiAgICAvLyDmo4Dmn6Xlrr3mnb7or63oqIDplK7mmK/lkKblrZjlnKhcbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwgbG9vc2VMb2NhbGUpKSB7XG4gICAgICByZXR1cm4gc291cmNlW2xvb3NlTG9jYWxlXTtcbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIOaPkOWPluWuveadvuivreiogOS7o+egge+8iOWmgu+8mnpoLUNOIC0+IHpo77yJXG4gICAqL1xuICBwcml2YXRlIGV4dHJhY3RMb29zZUxvY2FsZShsb2NhbGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGhlYWQobG9jYWxlLnNwbGl0KC9bXy1dLykpIHx8IGxvY2FsZTtcbiAgfVxuXG4gIC8qKlxuICAgKiDpqozor4Hnv7vor5HlgLzvvIjlvIDlj5HmqKHlvI/vvIlcbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVUcmFuc2xhdGlvblZhbHVlKFxuICAgIHZhbHVlOiBhbnksXG4gICAgbG9jYWxlOiBzdHJpbmcsXG4gICAga2V5OiBzdHJpbmcsXG4gICk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIGlzRGV2TW9kZSgpICYmXG4gICAgICB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmXG4gICAgICB0eXBlb2YgZ2V0KHZhbHVlLCBTeW1ib2wudG9QcmltaXRpdmUpICE9PSAnZnVuY3Rpb24nXG4gICAgKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBUaGUgdHJhbnNsYXRpb24gZm9yIGxvY2FsZTogXFxgJHtsb2NhbGV9XFxgIGFuZCBrZXk6XFxgJHtrZXl9XFxgIGlzIGFuIG9iamVjdCwgd2hpY2ggY291bGQgYmUgdW5leHBlY3RlZGAsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiDmr5TovoPnv7vor5HplK7vvIjlvIDlj5HmqKHlvI/kuIvmo4Dmn6Xph43lpI3vvIlcbiAgICovXG4gIHByaXZhdGUgY29tcGFyZVRyYW5zbGF0aW9uS2V5cyhcbiAgICBsb2NhbGU6IHN0cmluZyxcbiAgICB0cmFuc2xhdGlvbjogVHJhbnNsYXRpb24sXG4gICAgcHJldlRyYW5zbGF0aW9uOiBUcmFuc2xhdGlvbixcbiAgICBwYXRoOiBzdHJpbmdbXSA9IFtdLFxuICApOiB2b2lkIHtcbiAgICBpZiAodHJhbnNsYXRpb24gPT0gbnVsbCB8fCBwcmV2VHJhbnNsYXRpb24gPT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIE9iamVjdC5lbnRyaWVzKHRyYW5zbGF0aW9uKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHByZXZUcmFuc2xhdGlvbiwga2V5KSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHByZXZWYWx1ZSA9IHByZXZUcmFuc2xhdGlvbltrZXldO1xuICAgICAgY29uc3QgdmFsdWVJc1BsYWluT2JqZWN0ID0gaXNQbGFpbk9iamVjdCh2YWx1ZSk7XG4gICAgICBjb25zdCBwcmV2VmFsdWVJc1BsYWluT2JqZWN0ID0gaXNQbGFpbk9iamVjdChwcmV2VmFsdWUpO1xuXG4gICAgICBpZiAodmFsdWVJc1BsYWluT2JqZWN0ICYmIHByZXZWYWx1ZUlzUGxhaW5PYmplY3QpIHtcbiAgICAgICAgdGhpcy5jb21wYXJlVHJhbnNsYXRpb25LZXlzKFxuICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICB2YWx1ZSBhcyBUcmFuc2xhdGlvbixcbiAgICAgICAgICBwcmV2VmFsdWUgYXMgVHJhbnNsYXRpb24sXG4gICAgICAgICAgWy4uLnBhdGgsIGtleV0sXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKCF2YWx1ZUlzUGxhaW5PYmplY3QgJiYgIXByZXZWYWx1ZUlzUGxhaW5PYmplY3QpIHtcbiAgICAgICAgY29uc3Qgb3V0cHV0UGF0aCA9IFsuLi5wYXRoLCBrZXldLmpvaW4oJyAtPiAnKTtcbiAgICAgICAgaWYgKHZhbHVlID09PSBwcmV2VmFsdWUpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICBgVGhlIGN1c3RvbWl6ZWQgdHJhbnNsYXRpb24gZm9yIGxvY2FsZTogXFxgJHtsb2NhbGV9XFxgIGFuZCBwYXRoOiBcXGAke291dHB1dFBhdGh9XFxgIGlzIGR1cGxpY2F0ZWQgd2l0aCB0aGUgb3RoZXIgdHJhbnNsYXRpb24sIHBsZWFzZSByZW1vdmUgaXQgaW4geW91ciB0cmFuc2xhdGlvbiBmaWxlLmAsXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICBgVHdvIGtleXMgdGhhdCB0aGUgbG9jYWxlIGlzIFxcYCR7bG9jYWxlfVxcYCBhbmQgdGhlIHBhdGggaXMgXFxgJHtvdXRwdXRQYXRofVxcYCBhcmUgc2FtZSwgYnV0IHRoZWlyIHZhbHVlcyBhcmUgbm90IGVxdWFsLCBwbGVhc2UgcmVtb3ZlIG9uZSBvZiB0aGVtIG9yIGNoYW5nZSBvbmUgb2YgdGhlIGtleXMuYCxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
869
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvdHJhbnNsYXRlL3RyYW5zbGF0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7O0dBR0c7QUFFSCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUNMLE1BQU0sRUFDTixVQUFVLEVBRVYsUUFBUSxFQUNSLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDckQsT0FBTyxFQUNMLFVBQVUsRUFDVixPQUFPLEVBQ1AsUUFBUSxFQUNSLFVBQVUsRUFDVixLQUFLLEVBQ0wsVUFBVSxFQUNWLE1BQU0sRUFDTixRQUFRLEVBQ1IsR0FBRyxFQUNILFNBQVMsR0FDVixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFakMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzFELE9BQU8sRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUUzQyxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLHdCQUF3QixFQUN4QixjQUFjLEdBQ2YsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLE1BQU0sVUFBVSxDQUFDOzs7QUFXM0Q7Ozs7Ozs7OztHQVNHO0FBRUgsTUFBTSxPQUFPLGdCQUFnQjtJQXlCM0IsZ0JBQWdCO0lBQ2hCLElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7SUFDOUIsQ0FBQztJQUVELGFBQWE7SUFDYixJQUFJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsWUFDbUIsSUFBZ0IsRUFDUyxRQUFnQixFQUNuQixPQUF5QixFQUM5QixlQUErQjtRQUhoRCxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ1MsYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQXBDNUQsY0FBYztRQUNHLHdCQUFtQixHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFFbEQsdUJBQWtCLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBRXRFLGNBQWM7UUFDRyxjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUVqRCw0QkFBNEI7UUFDbkIscUJBQWdCLEdBQWtDLEVBQUUsQ0FBQztRQUU5RCxvQkFBb0I7UUFDWCwyQkFBc0IsR0FBa0MsRUFBRSxDQUFDO1FBNEJsRSxVQUFVO1FBQ1YsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFN0MsVUFBVTtRQUNWLElBQUksQ0FBQyxPQUFPLEdBQUc7WUFDYixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ3RCLGNBQWMsRUFBRSxpQkFBaUI7WUFDakMsS0FBSyxFQUFFLEtBQUs7WUFDWixHQUFHLE9BQU87U0FDWCxDQUFDO1FBRUYsVUFBVTtRQUNWLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQ3BELE9BQU8sRUFDUCxlQUFlLENBQ2hCLENBQUM7UUFFRixTQUFTO1FBQ1QsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVc7UUFDVCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09Bc0JHO0lBQ0gsR0FBRyxDQUFDLEdBQWlCLEVBQUUsSUFBbUI7UUFDeEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVyQyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNqQixPQUFPLFdBQVcsQ0FBQztRQUNyQixDQUFDO1FBRUQsSUFBSSxDQUFDO1lBQ0gsb0NBQW9DO1lBQ3BDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN4RCxtQkFBbUI7WUFDbkIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLDRCQUE0QixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3hELE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNwRCxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDckMsT0FBTyxXQUFXLENBQUM7UUFDckIsQ0FBQztJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLEdBQWlCO1FBQ3RCLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDNUIsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkMsQ0FBQztRQUVELGlDQUFpQztRQUNqQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFL0MsOEJBQThCO1FBQzlCLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3hCLE9BQU8sS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakQsQ0FBQztRQUVELHVCQUF1QjtRQUN2QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsWUFBWTtRQUNWLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFL0QsSUFBSSxZQUFZLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUMzQixPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sU0FBUyxHQUFHLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztRQUNuRSxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVuRCxJQUFJLFVBQVUsSUFBSSxVQUFVLEtBQUssSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzdDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSCxTQUFTLENBQUMsTUFBYztRQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ2hDLElBQUksU0FBUyxFQUFFLEVBQUUsQ0FBQztnQkFDaEIsT0FBTyxDQUFDLElBQUksQ0FDVixtQkFBbUIsTUFBTSx3QkFBd0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQ25GLENBQUM7WUFDSixDQUFDO1lBQ0QsT0FBTztRQUNULENBQUM7UUFFRCxZQUFZLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsZUFBZSxDQUFDLFlBQTBCO1FBQ3hDLElBQUksQ0FBQyxZQUFZLElBQUksT0FBTyxZQUFZLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDdEQsSUFBSSxTQUFTLEVBQUUsRUFBRSxDQUFDO2dCQUNoQixPQUFPLENBQUMsSUFBSSxDQUFDLHNDQUFzQyxDQUFDLENBQUM7WUFDdkQsQ0FBQztZQUNELE9BQU87UUFDVCxDQUFDO1FBRUQsY0FBYztRQUNkLElBQUksU0FBUyxFQUFFLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNwRCxJQUFJLENBQUMsNkJBQTZCLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbkQsQ0FBQztRQUVELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxxQkFBcUIsQ0FBQyxTQUFpQjtRQUNyQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDZixPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN6RCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsOEJBQThCLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFcEUsUUFBUTthQUNMLElBQUksQ0FDSCxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUN6QixRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2xDLENBQUMsQ0FBQyxDQUNIO2FBQ0EsU0FBUyxDQUFDO1lBQ1QsSUFBSSxFQUFFLGtCQUFrQixDQUFDLEVBQUU7Z0JBQ3pCLElBQUksa0JBQWtCLEVBQUUsQ0FBQztvQkFDdkIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO2dCQUN2RCxDQUFDO1lBQ0gsQ0FBQztZQUNELEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRTtnQkFDYixJQUFJLFNBQVMsRUFBRSxFQUFFLENBQUM7b0JBQ2hCLE9BQU8sQ0FBQyxLQUFLLENBQ1gsMkNBQTJDLFNBQVMsR0FBRyxFQUN2RCxLQUFLLENBQ04sQ0FBQztnQkFDSixDQUFDO1lBQ0gsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNQLENBQUM7SUFVRCxnQkFBZ0IsQ0FDZCxTQUFpQixFQUNqQixNQUFlO1FBRWYsSUFBSSxDQUFDLDhCQUE4QixDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUV2RCxNQUFNLFNBQVMsR0FBRyxNQUFNO1lBQ3RCLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLHdCQUF3QixFQUFFLE1BQU0sQ0FBQztZQUNyRCxDQUFDLENBQUMsU0FBUyxDQUFDO1FBRWQsT0FBTyxJQUFJLENBQUMseUJBQXlCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVEOztPQUVHO0lBQ0ssZ0JBQWdCLENBQUMsT0FBeUI7UUFDaEQsT0FBTyxPQUFPLEVBQUUsTUFBTSxJQUFJLGVBQWUsRUFBRSxDQUFDO0lBQzlDLENBQUM7SUFFRDs7T0FFRztJQUNLLHlCQUF5QixDQUMvQixPQUF5QixFQUN6QixlQUErQjtRQUUvQixPQUFPLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxHQUFHLENBQUMsZUFBZSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRDs7T0FFRztJQUNLLHNCQUFzQixDQUFDLE9BQXlCO1FBQ3RELElBQUksQ0FBQyxPQUFPLEVBQUUsU0FBUztZQUFFLE9BQU87UUFFaEMsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDO1lBQzNDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUztZQUNuQixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFeEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssNEJBQTRCLENBQUMsSUFBa0I7UUFDckQsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLENBQUM7WUFDakIsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBRUQsaUJBQWlCO1FBQ2pCLElBQUksSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDckMsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0MsQ0FBQztRQUVELG1DQUFtQztRQUNuQyxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO0lBQ3RELENBQUM7SUFFRDs7T0FFRztJQUNLLHFCQUFxQixDQUMzQixJQUFrQjtRQUVsQixPQUFPLENBQ0wsT0FBTyxJQUFJLEtBQUssUUFBUTtZQUN4QixJQUFJLEtBQUssSUFBSTtZQUNiLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7WUFDcEIsQ0FBQyxDQUFDLElBQUksWUFBWSxJQUFJLENBQUM7WUFDdkIsSUFBSSxDQUFDLFdBQVcsS0FBSyxNQUFNLENBQzVCLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSyxzQkFBc0IsQ0FBQyxHQUFpQztRQUM5RCxNQUFNLE1BQU0sR0FBWSxFQUFFLENBQUM7UUFFM0IsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMvQyxJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDbEIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNuRCxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7O09BR0c7SUFDSyxzQkFBc0IsQ0FBQyxLQUFtQjtRQUNoRCxrQkFBa0I7UUFDbEIsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDM0QsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsSUFBSSxLQUFLLFlBQVksSUFBSSxFQUFFLENBQUM7WUFDMUIsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsWUFBWTtRQUNaLElBQUksT0FBTyxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDL0IsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkIsQ0FBQztRQUVELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3pCLGlCQUFpQjtZQUNqQixPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFELENBQUM7UUFFRCxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUNuQixPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDO1FBRUQsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDeEIsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBRUQsZ0JBQWdCO1FBQ2hCLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDO2dCQUNILE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMvQixDQUFDO1lBQUMsTUFBTSxDQUFDO2dCQUNQLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3ZCLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVEOztPQUVHO0lBQ0ssbUJBQW1CLENBQUMsR0FBaUIsRUFBRSxLQUFVO1FBQ3ZELE1BQU0sTUFBTSxHQUFHLE9BQU8sR0FBRyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7UUFDMUQsTUFBTSxPQUFPLEdBQUcsd0JBQXdCLE1BQU0sd0NBQXdDLENBQUM7UUFDdkYsSUFBSSxTQUFTLEVBQUUsRUFBRSxDQUFDO1lBQ2hCLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDL0IsQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLGtCQUFrQixDQUFDLE9BQWU7UUFDeEMsd0JBQXdCO1FBQ3hCLG1DQUFtQztRQUNuQyxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUU7WUFDeEQsT0FBTyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDO1FBQy9CLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ssZ0JBQWdCLENBQUMsT0FBZSxFQUFFLE9BQWdCO1FBQ3hELElBQUksQ0FBQztZQUNILE1BQU0sYUFBYSxHQUFHLElBQUksaUJBQWlCLENBQ3pDLE9BQU8sRUFDUCxJQUFJLENBQUMsTUFBTSxFQUNYLFNBQVMsRUFDVCxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FDcEIsQ0FBQztZQUNGLE9BQU8sYUFBYSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQVcsQ0FBQztRQUNqRCxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLElBQUksU0FBUyxFQUFFLEVBQUUsQ0FBQztnQkFDaEIsT0FBTyxDQUFDLElBQUksQ0FBQyxzQ0FBc0MsT0FBTyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDekUsQ0FBQztZQUNELGNBQWM7WUFDZCxPQUFPLE9BQU8sQ0FBQztRQUNqQixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSCxZQUFZLENBQUMsS0FBYSxFQUFFLFVBQW9DLEVBQUU7UUFDaEUsSUFBSSxDQUFDO1lBQ0gsT0FBTyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkUsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixJQUFJLFNBQVMsRUFBRSxFQUFFLENBQUM7Z0JBQ2hCLE9BQU8sQ0FBQyxJQUFJLENBQUMsc0NBQXNDLEtBQUssR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3RFLENBQUM7WUFDRCxPQUFPLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMxQixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSCxjQUFjLENBQ1osS0FBYSxFQUNiLFdBQW1CLEtBQUssRUFDeEIsVUFBZ0UsRUFBRTtRQUVsRSxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFO1lBQzlCLEtBQUssRUFBRSxVQUFVO1lBQ2pCLFFBQVE7WUFDUixHQUFHLE9BQU87U0FDWCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0gsYUFBYSxDQUNYLEtBQWEsRUFDYixVQUFtRCxFQUFFO1FBRXJELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUU7WUFDOUIsS0FBSyxFQUFFLFNBQVM7WUFDaEIsR0FBRyxPQUFPO1NBQ1gsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7Ozs7Ozs7OztPQVdHO0lBQ0gsVUFBVSxDQUNSLElBQTRCLEVBQzVCLFVBQXNDO1FBQ3BDLElBQUksRUFBRSxTQUFTO1FBQ2YsS0FBSyxFQUFFLFNBQVM7UUFDaEIsR0FBRyxFQUFFLFNBQVM7S0FDZjtRQUVELElBQUksQ0FBQztZQUNILE1BQU0sT0FBTyxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQy9CLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQzdCLE1BQU0sSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDbEMsQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNwRCxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLElBQUksU0FBUyxFQUFFLEVBQUUsQ0FBQztnQkFDaEIsT0FBTyxDQUFDLElBQUksQ0FBQyxtQ0FBbUMsSUFBSSxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDbEUsQ0FBQztZQUNELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RCLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNILGNBQWMsQ0FDWixJQUE0QixFQUM1QixVQUFzQztRQUNwQyxJQUFJLEVBQUUsU0FBUztRQUNmLEtBQUssRUFBRSxTQUFTO1FBQ2hCLEdBQUcsRUFBRSxTQUFTO1FBQ2QsSUFBSSxFQUFFLFNBQVM7UUFDZixNQUFNLEVBQUUsU0FBUztRQUNqQixNQUFNLEVBQUUsU0FBUztRQUNqQixNQUFNLEVBQUUsS0FBSztLQUNkO1FBRUQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBK0JELGtCQUFrQixDQUNoQixLQUFvQixFQUNwQixhQUVrQyxFQUNsQyxVQUEwQyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUU7UUFFN0QsSUFBSSxDQUFDO1lBQ0gsSUFBSSxVQUFrQixDQUFDO1lBQ3ZCLElBQUksU0FBc0MsQ0FBQztZQUMzQyxJQUFJLFlBQTRDLENBQUM7WUFFakQsSUFBSSxLQUFLLFlBQVksSUFBSSxFQUFFLENBQUM7Z0JBQzFCLGFBQWE7Z0JBQ2IsTUFBTSxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxHQUNwRCxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3BDLFVBQVUsR0FBRyxlQUFlLENBQUM7Z0JBQzdCLFNBQVMsR0FBRyxjQUFjLENBQUM7Z0JBQzNCLFlBQVk7b0JBQ1QsYUFBZ0QsSUFBSSxPQUFPLENBQUM7WUFDakUsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLGFBQWE7Z0JBQ2IsVUFBVSxHQUFHLEtBQUssQ0FBQztnQkFDbkIsU0FBUyxHQUFHLGFBQTRDLENBQUM7Z0JBQ3pELFlBQVksR0FBRyxPQUFPLENBQUM7WUFDekIsQ0FBQztZQUVELE9BQU8sSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQ2xFLFVBQVUsRUFDVixTQUFTLENBQ1YsQ0FBQztRQUNKLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsSUFBSSxTQUFTLEVBQUUsRUFBRSxDQUFDO2dCQUNoQixPQUFPLENBQUMsSUFBSSxDQUFDLHVDQUF1QyxLQUFLLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN2RSxDQUFDO1lBQ0QsT0FBTyxLQUFLLFlBQVksSUFBSTtnQkFDMUIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztnQkFDbkMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUM7UUFDakIsQ0FBQztJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0sscUJBQXFCLENBQUMsSUFBVTtRQUl0QyxNQUFNLEdBQUcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDOUMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVuQyxhQUFhO1FBQ2IsTUFBTSxTQUFTLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztRQUM1QixNQUFNLE9BQU8sR0FBRyxFQUFFLEdBQUcsU0FBUyxDQUFDO1FBQy9CLE1BQU0sTUFBTSxHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUM7UUFFNUIsd0JBQXdCO1FBQ3hCLElBQUksU0FBUyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ3hCLE9BQU87Z0JBQ0wsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztnQkFDbEMsSUFBSSxFQUFFLEtBQUs7YUFDWixDQUFDO1FBQ0osQ0FBQztRQUNELElBQUksU0FBUyxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ3pCLE9BQU87Z0JBQ0wsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQztnQkFDbkMsSUFBSSxFQUFFLE1BQU07YUFDYixDQUFDO1FBQ0osQ0FBQztRQUNELElBQUksU0FBUyxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQzNCLE9BQU87Z0JBQ0wsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQztnQkFDckMsSUFBSSxFQUFFLFFBQVE7YUFDZixDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU87WUFDTCxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1lBQ2hDLElBQUksRUFBRSxRQUFRO1NBQ2YsQ0FBQztJQUNKLENBQUM7SUFFRDs7O09BR0c7SUFDSyxtQkFBbUIsQ0FDekIsSUFBVSxFQUNWLE9BQW1DO1FBRW5DLElBQUksQ0FBQztZQUNILE9BQU8sSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BFLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsSUFBSSxTQUFTLEVBQUUsRUFBRSxDQUFDO2dCQUNoQixPQUFPLENBQUMsSUFBSSxDQUFDLHlCQUF5QixFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ2pELENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUM1QixDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ssbUJBQW1CLENBQUMsR0FBVztRQUNyQyxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7O09BRUc7SUFDSyxzQkFBc0IsQ0FDNUIsY0FBMkI7UUFFM0IsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxtQkFBbUI7UUFDekIsSUFBSSxTQUFTLEVBQUUsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sSUFBSSxTQUFTLENBQUMsOENBQThDLENBQUMsQ0FBQztRQUN0RSxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ssYUFBYSxDQUFDLE1BQWM7UUFDbEMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVEOztPQUVHO0lBQ0ssNkJBQTZCLENBQUMsZUFBNkI7UUFDakUsS0FBSyxNQUFNLG9CQUFvQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3pELE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUM1QyxJQUFJLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7b0JBQ2pDLElBQUksQ0FBQyxzQkFBc0IsQ0FDekIsTUFBTSxFQUNOLGVBQWUsQ0FBQyxNQUFNLENBQUMsRUFDdkIsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQzdCLENBQUM7Z0JBQ0osQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNLLGtCQUFrQixDQUFDLFNBQWlCO1FBQzFDLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3JDLE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM1QyxNQUFNLG1CQUFtQixHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFOUQsZUFBZTtRQUNmLElBQUksU0FBUyxFQUFFLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ2hELENBQUM7UUFFRCxnQkFBZ0I7UUFDaEIsSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDeEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO2dCQUN6QyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVE7Z0JBQ2YsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDO1lBQ3hCLE9BQU8sR0FBRyxPQUFPLEdBQUcsU0FBUyxFQUFFLENBQUM7UUFDbEMsQ0FBQztRQUVELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRDs7T0FFRztJQUNLLFFBQVEsQ0FBQyxHQUFXO1FBQzFCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUM7SUFDckMsQ0FBQztJQUVEOztPQUVHO0lBQ0ssaUJBQWlCLENBQUMsU0FBaUIsRUFBRSxVQUFtQjtRQUM5RCxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDckUsTUFBTSxJQUFJLFNBQVMsQ0FDakIsd0RBQXdELENBQ3pELENBQUM7UUFDSixDQUFDO1FBRUQsSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzNDLE1BQU0sSUFBSSxTQUFTLENBQ2pCLHdGQUF3RixDQUN6RixDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNLLDhCQUE4QixDQUNwQyxhQUFxQjtRQUVyQixJQUFJLHdCQUF3QixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1lBQ2pELE9BQU8sSUFBSSxDQUFDLHdCQUF3QixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3RELENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQ7O09BRUc7SUFDSyx3QkFBd0IsQ0FDOUIsV0FBbUI7UUFFbkIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQ2pELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUM3QyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDakIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUN2QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3BELElBQ0UsTUFBTSxLQUFLLFdBQVc7b0JBQ3RCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUMzQyxDQUFDO29CQUNELE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQztnQkFDekQsQ0FBQztZQUNILENBQUM7WUFDRCxPQUFPLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUN2RCxDQUFDLENBQUMsRUFDRixNQUFNLENBQUMsYUFBYSxDQUFDLEVBQ3JCLEdBQUcsQ0FDRCxDQUFDLFdBQXdCLEVBQUUsRUFBRSxDQUMzQixDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBaUIsQ0FDOUMsQ0FDRixDQUNGLENBQUM7UUFFRixPQUFPLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQzVCLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUNaLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FDNUQsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0sseUJBQXlCLENBQUMsR0FBVztRQUMzQyxPQUFPLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQzdDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FDekMsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7O09BRUc7SUFDSyx5QkFBeUIsQ0FBQyxHQUFXO1FBQzNDLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckMsTUFBTSxtQkFBbUIsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3hELE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFFOUMsSUFBSSxtQkFBbUIsRUFBRSxDQUFDO1lBQ3hCLE9BQU8sSUFBSSxDQUFDLElBQUk7aUJBQ2IsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRSxZQUFZLEVBQUUsQ0FBQztpQkFDckMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0RCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQ3JDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFrQixDQUFDLENBQUMsQ0FBQyxDQUN2RSxDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0ssOEJBQThCLENBQ3BDLFNBQWlCLEVBQ2pCLE1BQWU7UUFFZixJQUFJLFNBQVMsRUFBRSxJQUFJLHdCQUF3QixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3ZFLE1BQU0sSUFBSSxTQUFTLENBQ2pCLGdGQUFnRixDQUNqRixDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNLLGtCQUFrQixDQUFDLEdBQVcsRUFBRSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU07UUFDMUQsYUFBYTtRQUNiLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FDdkMsR0FBRyxFQUNILE1BQU0sRUFDTixJQUFJLENBQUMsc0JBQXNCLENBQzVCLENBQUM7UUFFRixtQ0FBbUM7UUFDbkMsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDeEIsS0FBSyxHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzVFLENBQUM7UUFFRCxPQUFPLEtBQUssSUFBSSxHQUFHLENBQUM7SUFDdEIsQ0FBQztJQUVEOztPQUVHO0lBQ0ssd0JBQXdCLENBQzlCLEdBQVcsRUFDWCxNQUFjLEVBQ2QsZ0JBQWdDO1FBRWhDLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdkQsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUVELG9CQUFvQjtRQUNwQixLQUFLLElBQUksQ0FBQyxHQUFHLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3RELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDMUUsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQ3hCLE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQ7O09BRUc7SUFDSyxvQkFBb0IsQ0FDMUIsR0FBVyxFQUNYLE1BQWMsRUFDZCxZQUEwQjtRQUUxQixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFeEUsNERBQTREO1FBQzVELElBQUksZ0JBQWdCLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDbkMsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUVELG9CQUFvQjtRQUNwQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFFbkUsd0JBQXdCO1FBQ3hCLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ2xELDRCQUE0QjtZQUM1QixPQUFPLEtBQUssS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pELENBQUM7UUFFRCwrQ0FBK0M7UUFDL0MsSUFBSSxNQUFNLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUMzQyxNQUFNLHdCQUF3QixHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FDdkQsWUFBWSxFQUNaLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUM1QixDQUFDO1lBRUYsSUFBSSx3QkFBd0IsS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDM0MsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUNqRCx3QkFBd0IsRUFDeEIsR0FBRyxDQUNKLENBQUM7Z0JBQ0YsSUFBSSxhQUFhLEtBQUssU0FBUyxFQUFFLENBQUM7b0JBQ2hDLElBQUksQ0FBQyx3QkFBd0IsQ0FDM0IsYUFBYSxFQUNiLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUMzQixHQUFHLENBQ0osQ0FBQztvQkFDRixPQUFPLGFBQWEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUNqRSxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyx3QkFBd0IsQ0FBQyxNQUFXLEVBQUUsR0FBVztRQUN2RCxJQUFJLENBQUMsTUFBTSxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzFDLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFFRCwrQkFBK0I7UUFDL0IsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdEQsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckIsQ0FBQztRQUVELHFDQUFxQztRQUNyQyxNQUFNLFdBQVcsR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3JDLElBQUksV0FBVyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzlCLE9BQU8sV0FBVyxDQUFDO1FBQ3JCLENBQUM7UUFFRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQ7O09BRUc7SUFDSyxtQkFBbUIsQ0FDekIsTUFBbUIsRUFDbkIsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNO1FBRXBCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFFRCxvQkFBb0I7UUFDcEIsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDekQsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyw4QkFBOEI7UUFDdkQsQ0FBQztRQUVELHNCQUFzQjtRQUN0QixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdkIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztZQUNqRSxJQUFJLFVBQVUsS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDN0IsT0FBTyxVQUFVLENBQUM7WUFDcEIsQ0FBQztRQUNILENBQUM7UUFFRCxxQ0FBcUM7UUFDckMsSUFBSSxNQUFNLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUMzQyxzQkFBc0I7WUFDdEIsSUFDRSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQ2xDLE1BQU0sRUFDTixJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FDNUIsRUFDRCxDQUFDO2dCQUNELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDN0MsQ0FBQztZQUVELCtCQUErQjtZQUMvQixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ3ZCLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUN0RCxNQUFNLEVBQ04sSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQzVCLENBQUM7Z0JBQ0YsSUFBSSxrQkFBa0IsS0FBSyxTQUFTLEVBQUUsQ0FBQztvQkFDckMsT0FBTyxrQkFBa0IsQ0FBQztnQkFDNUIsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVEOztPQUVHO0lBQ0ssd0JBQXdCLENBQzlCLE1BQW1CLEVBQ25CLE1BQWM7UUFFZCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFcEQsSUFBSSxNQUFNLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDM0IsWUFBWTtZQUNaLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUM5QyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLFdBQVcsS0FBSyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQ3hELENBQUM7WUFDRixPQUFPLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNCLENBQUM7UUFFRCxjQUFjO1FBQ2QsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDOUQsT0FBTyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDN0IsQ0FBQztRQUVELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRDs7T0FFRztJQUNLLGtCQUFrQixDQUFDLE1BQWM7UUFDdkMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQztJQUM5QyxDQUFDO0lBRUQ7O09BRUc7SUFDSyx3QkFBd0IsQ0FDOUIsS0FBVSxFQUNWLE1BQWMsRUFDZCxHQUFXO1FBRVgsSUFDRSxTQUFTLEVBQUU7WUFDWCxPQUFPLEtBQUssS0FBSyxRQUFRO1lBQ3pCLE9BQU8sR0FBRyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssVUFBVSxFQUNwRCxDQUFDO1lBQ0QsT0FBTyxDQUFDLElBQUksQ0FDVixpQ0FBaUMsTUFBTSxnQkFBZ0IsR0FBRyw0Q0FBNEMsQ0FDdkcsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxzQkFBc0IsQ0FDNUIsTUFBYyxFQUNkLFdBQXdCLEVBQ3hCLGVBQTRCLEVBQzVCLE9BQWlCLEVBQUU7UUFFbkIsSUFBSSxXQUFXLElBQUksSUFBSSxJQUFJLGVBQWUsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNuRCxPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtZQUNuRCxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNoRSxPQUFPO1lBQ1QsQ0FBQztZQUVELE1BQU0sU0FBUyxHQUFHLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN2QyxNQUFNLGtCQUFrQixHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNoRCxNQUFNLHNCQUFzQixHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUV4RCxJQUFJLGtCQUFrQixJQUFJLHNCQUFzQixFQUFFLENBQUM7Z0JBQ2pELElBQUksQ0FBQyxzQkFBc0IsQ0FDekIsTUFBTSxFQUNOLEtBQW9CLEVBQ3BCLFNBQXdCLEVBQ3hCLENBQUMsR0FBRyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQ2YsQ0FBQztnQkFDRixPQUFPO1lBQ1QsQ0FBQztZQUVELElBQUksQ0FBQyxrQkFBa0IsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7Z0JBQ25ELE1BQU0sVUFBVSxHQUFHLENBQUMsR0FBRyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUMvQyxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztvQkFDeEIsT0FBTyxDQUFDLElBQUksQ0FDViw0Q0FBNEMsTUFBTSxrQkFBa0IsVUFBVSx5RkFBeUYsQ0FDeEssQ0FBQztnQkFDSixDQUFDO3FCQUFNLENBQUM7b0JBQ04sT0FBTyxDQUFDLElBQUksQ0FDVixpQ0FBaUMsTUFBTSx3QkFBd0IsVUFBVSxtR0FBbUcsQ0FDN0ssQ0FBQztnQkFDSixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztpRkF2bUNVLGdCQUFnQiwwQ0FxQ2pCLGVBQWUsZUFDSCxpQkFBaUIsa0JBQ2pCLFlBQVk7dUVBdkN2QixnQkFBZ0IsV0FBaEIsZ0JBQWdCLG1CQURILE1BQU07O0FBd0JyQjtJQURSLGVBQWUsRUFBRTs4QkFDQSxVQUFVO2lEQUFTO2lGQXZCMUIsZ0JBQWdCO2NBRDVCLFVBQVU7ZUFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7O3NCQXNDN0IsTUFBTTt1QkFBQyxlQUFlOztzQkFDdEIsUUFBUTs7c0JBQUksTUFBTTt1QkFBQyxpQkFBaUI7O3NCQUNwQyxRQUFROztzQkFBSSxNQUFNO3VCQUFDLFlBQVk7cUJBaEJ6QixPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqIEBtb2R1bGUgdHJhbnNsYXRlXG4gKi9cblxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7XG4gIEluamVjdCxcbiAgSW5qZWN0YWJsZSxcbiAgT25EZXN0cm95LFxuICBPcHRpb25hbCxcbiAgaXNEZXZNb2RlLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEludGxNZXNzYWdlRm9ybWF0IH0gZnJvbSAnaW50bC1tZXNzYWdlZm9ybWF0JztcbmltcG9ydCB7IGdldCwgaGVhZCwgaXNQbGFpbk9iamVjdCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQge1xuICBPYnNlcnZhYmxlLFxuICBTdWJqZWN0LFxuICBmb3JrSm9pbixcbiAgdGhyb3dFcnJvcixcbiAgRU1QVFksXG4gIGNhdGNoRXJyb3IsXG4gIGZpbHRlcixcbiAgZmluYWxpemUsXG4gIG1hcCxcbiAgdGFrZVVudGlsLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGFqYXggfSBmcm9tICdyeGpzL2FqYXgnO1xuXG5pbXBvcnQgeyBBUElfR0FURVdBWSB9IGZyb20gJy4uL2NvcmUvY29uc3RhbnRzL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlSW5wdXQsIFRPS0VOX0JBU0VfSFJFRiB9IGZyb20gJy4uL2NvcmUvcHVibGljLWFwaSc7XG5pbXBvcnQgeyBpc0Fic29sdXRlVXJsIH0gZnJvbSAnLi4vY29yZS91dGlscy9jb21tb24nO1xuaW1wb3J0IHsgcGFyc2UgfSBmcm9tICcuLi9jb3JlL3V0aWxzL3lhbWwnO1xuXG5pbXBvcnQge1xuICBGQUxMQkFDS19MQU5HVUFHRSxcbiAgTE9DQUxFX1BMQUNFSE9MREVSX1JFR0VYLFxuICBMT0NBTEVfU1RPUkFHRSxcbn0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgZ2V0VXNlckxhbmd1YWdlIH0gZnJvbSAnLi9pMThuLWNvbmZpZyc7XG5pbXBvcnQgeyBUUkFOU0xBVEVfT1BUSU9OUywgVFJBTlNMQVRJT05TIH0gZnJvbSAnLi90b2tlbnMnO1xuaW1wb3J0IHtcbiAgVHJhbnNsYXRlS2V5LFxuICBUcmFuc2xhdGVPcHRpb25zLFxuICBUcmFuc2xhdGlvbixcbiAgVHJhbnNsYXRpb25WYWx1ZSxcbiAgVHJhbnNsYXRpb25zLFxuICBUZW1wbGF0ZURhdGEsXG4gIEljdURhdGEsXG59IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIOWbvemZheWMlue/u+ivkeacjeWKoVxuICpcbiAqIOeJueaAp++8mlxuICogLSDmlK/mjIHlpJrlsYLnuqfnv7vor5HkvJjlhYjnuqfvvIjov5znqIvnv7vor5EgPiDmiYvliqjmt7vliqDnv7vor5EgPiDphY3nva7nv7vor5HvvIlcbiAqIC0g5pSv5oyB5Yqo5oCB6K+t6KiA5YiH5o2iXG4gKiAtIOaUr+aMgSBJQ1UgTWVzc2FnZSBGb3JtYXQg5qih5p2/5o+S5YC8XG4gKiAtIOaUr+aMgeWuveadvuaooeW8j+ivreiogOWMuemFjVxuICogLSDmlK/mjIHlvILmraXov5znqIvnv7vor5HliqDovb1cbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBUcmFuc2xhdGVTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgLyoqIOe/u+ivkea3u+WKoOmAmuefpea1gSAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0aW9uc0FkZGVkJCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHJlYWRvbmx5IHRyYW5zbGF0aW9uc0FkZGVkJCA9IHRoaXMudHJhbnNsYXRpb25zQWRkZWQkJC5hc09ic2VydmFibGUoKTtcblxuICAvKiog57uE5Lu26ZSA5q+B6YCa55+l5rWBICovXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAvKiog5pys5Zyw57+76K+R5YiX6KGo77yI5LyY5YWI57qn77ya5ZCO5Yqg5YWl55qE5LyY5YWI57qn5pu06auY77yJICovXG4gIHJlYWRvbmx5IHRyYW5zbGF0aW9uc0xpc3Q6IEFycmF5PFJlYWRvbmx5PFRyYW5zbGF0aW9ucz4+ID0gW107XG5cbiAgLyoqIOi/nOeoi+e/u+ivkeWIl+ihqO+8iOS8mOWFiOe6p+acgOmrmO+8iSAqL1xuICByZWFkb25seSByZW1vdGVUcmFuc2xhdGlvbnNMaXN0OiBBcnJheTxSZWFkb25seTxUcmFuc2xhdGlvbnM+PiA9IFtdO1xuXG4gIC8qKiDnv7vor5HphY3nva7pgInpobkgKi9cbiAgcmVhZG9ubHkgb3B0aW9uczogVHJhbnNsYXRlT3B0aW9ucztcblxuICAvKiog5b2T5YmN6K+t6KiA546v5aKDICovXG4gIGxvY2FsZTogc3RyaW5nO1xuXG4gIC8qKiDlvZPliY3or63oqIDnjq/looPvvIjlk43lupTlvI/vvIkgKi9cbiAgQE9ic2VydmFibGVJbnB1dCgpXG4gIHJlYWRvbmx5IGxvY2FsZSQ6IE9ic2VydmFibGU8c3RyaW5nPjtcblxuICAvKiog6I635Y+W5pSv5oyB55qE6K+t6KiA5YiX6KGoICovXG4gIGdldCBsb2NhbGVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxvY2FsZXM7XG4gIH1cblxuICAvKiog6I635Y+W5Zue6YCA6K+t6KiAICovXG4gIGdldCBmYWxsYmFja0xvY2FsZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZmFsbGJhY2tMb2NhbGU7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGh0dHA6IEh0dHBDbGllbnQsXG4gICAgQEluamVjdChUT0tFTl9CQVNFX0hSRUYpIHByaXZhdGUgcmVhZG9ubHkgYmFzZUhyZWY6IHN0cmluZyxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFRSQU5TTEFURV9PUFRJT05TKSBvcHRpb25zOiBUcmFuc2xhdGVPcHRpb25zLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoVFJBTlNMQVRJT05TKSB0cmFuc2xhdGlvbkxpc3Q6IFRyYW5zbGF0aW9uc1tdLFxuICApIHtcbiAgICAvLyDliJ3lp4vljJbor63oqIDnjq/looNcbiAgICB0aGlzLmxvY2FsZSA9IHRoaXMuZ2V0SW5pdGlhbExvY2FsZShvcHRpb25zKTtcblxuICAgIC8vIOWIneWni+WMlumFjee9rumAiemhuVxuICAgIHRoaXMub3B0aW9ucyA9IHtcbiAgICAgIGxvY2FsZXM6IFt0aGlzLmxvY2FsZV0sXG4gICAgICBmYWxsYmFja0xvY2FsZTogRkFMTEJBQ0tfTEFOR1VBR0UsXG4gICAgICBsb29zZTogZmFsc2UsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH07XG5cbiAgICAvLyDliJ3lp4vljJbnv7vor5HliJfooahcbiAgICB0aGlzLnRyYW5zbGF0aW9uc0xpc3QgPSB0aGlzLmdldEluaXRpYWxpemVUcmFuc2xhdGlvbnMoXG4gICAgICBvcHRpb25zLFxuICAgICAgdHJhbnNsYXRpb25MaXN0LFxuICAgICk7XG5cbiAgICAvLyDliqDovb3ov5znqIvnv7vor5FcbiAgICB0aGlzLmxvYWRSZW1vdGVUcmFuc2xhdGlvbnMob3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICog57uE5Lu26ZSA5q+B5riF55CGXG4gICAqL1xuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkJC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JCQuY29tcGxldGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDojrflj5bnv7vor5HmlofmnKzlubbov5vooYzmqKHmnb/mj5LlgLxcbiAgICog6Ieq5Yqo5bCG5Lyg57ufIHt7IGtleSB9fSDor63ms5XovazmjaLkuLogSUNVIHtrZXl9IOagvOW8j+i/m+ihjOino+aekFxuICAgKiDlkIzml7bmlK/mjIHljp/nlJ8gSUNVIE1lc3NhZ2UgRm9ybWF0IOivreazlVxuICAgKiBAcGFyYW0ga2V5IC0g57+76K+R6ZSu5oiW57+76K+R5a+56LGhXG4gICAqIEBwYXJhbSBkYXRhIC0g5qih5p2/5pWw5o2u77yI5pSv5oyB5Z+65pys57G75Z6L44CBRGF0ZeOAgeWvueixoeWSjOaVsOe7hO+8iVxuICAgKiBAcmV0dXJucyDnv7vor5HlkI7nmoTmlofmnKxcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiAvLyDlr7nosaHlj4LmlbDvvIjmjqjojZDvvIlcbiAgICogdHJhbnNsYXRlLmdldCgnaGVsbG8nLCB7IG5hbWU6ICdXb3JsZCcgfSkgLy8g5qih5p2/OiBcIkhlbGxvIHtuYW1lfVwiXG4gICAqXG4gICAqIC8vIOWfuuacrOexu+Wei+WPguaVsO+8iOiHquWKqOi9rOaNouS4uiB7dmFsdWV977yJXG4gICAqIHRyYW5zbGF0ZS5nZXQoJ3dlbGNvbWUnLCAnSm9obicpIC8vIOaooeadvzogXCJXZWxjb21lIHt2YWx1ZX1cIlxuICAgKlxuICAgKiAvLyBJQ1Ug5qC85byP77yI5pWw5a2X77yJXG4gICAqIHRyYW5zbGF0ZS5nZXQoJ2l0ZW1Db3VudCcsIHsgY291bnQ6IDUgfSlcbiAgICpcbiAgICogLy8gSUNVIOagvOW8j++8iOaXpeacn++8jOm7mOiupOacrOWcsOWMlu+8iVxuICAgKiB0cmFuc2xhdGUuZ2V0KCdjcmVhdGVkQXQnLCB7IGRhdGU6IG5ldyBEYXRlKCkgfSlcbiAgICogYGBgXG4gICAqL1xuICBnZXQoa2V5OiBUcmFuc2xhdGVLZXksIGRhdGE/OiBUZW1wbGF0ZURhdGEpOiBzdHJpbmcge1xuICAgIGNvbnN0IHRyYW5zbGF0aW9uID0gdGhpcy5nZXRSYXcoa2V5KTtcblxuICAgIGlmIChkYXRhID09IG51bGwpIHtcbiAgICAgIHJldHVybiB0cmFuc2xhdGlvbjtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgLy8g5bCG5Lyg57uf55qEIHt7IGtleSB9fSDor63ms5XovazmjaLkuLogSUNVIHtrZXl9IOagvOW8j1xuICAgICAgY29uc3QgaWN1TWVzc2FnZSA9IHRoaXMuY29udmVydFRvSWN1Rm9ybWF0KHRyYW5zbGF0aW9uKTtcbiAgICAgIC8vIOWwhuaVsOaNrui9rOaNouS4uiBJQ1Ug5YW85a6555qE5qC85byPXG4gICAgICBjb25zdCBpY3VEYXRhID0gdGhpcy5ub3JtYWxpemVBbmRDb252ZXJ0VG9JY3VEYXRhKGRhdGEpO1xuICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0SWN1TWVzc2FnZShpY3VNZXNzYWdlLCBpY3VEYXRhKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5oYW5kbGVUZW1wbGF0ZUVycm9yKGtleSwgZXJyb3IpO1xuICAgICAgcmV0dXJuIHRyYW5zbGF0aW9uO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiDojrflj5bljp/lp4vnv7vor5HmlofmnKzmqKHmnb/vvIjkuI3ov5vooYzmj5LlgLzlpITnkIbvvIlcbiAgICogQHBhcmFtIGtleSAtIOe/u+ivkemUruaIlue/u+ivkeWvueixoVxuICAgKiBAcmV0dXJucyDljp/lp4vnv7vor5HmqKHmnb/mlofmnKxcbiAgICovXG4gIGdldFJhdyhrZXk6IFRyYW5zbGF0ZUtleSk6IHN0cmluZyB7XG4gICAgaWYgKHR5cGVvZiBrZXkgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGlvbkJ5S2V5KGtleSk7XG4gICAgfVxuXG4gICAgLy8g5b2Ta2V55pivVHJhbnNsYXRpb27lr7nosaHml7bvvIzojrflj5blvZPliY3or63oqIDnmoTnv7vor5HlgLxcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZ2V0VHJhbnNsYXRpb25CeU9iamVjdChrZXkpO1xuXG4gICAgLy8g5aaC5p6c5om+5Yiw5YC85YiZ6L+U5Zue5a2X56ym5Liy5b2i5byP77yM5ZCm5YiZ6L+U5ZueSlNPTuWtl+espuS4suihqOekulxuICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPT09IG51bGwgPyAnbnVsbCcgOiBTdHJpbmcodmFsdWUpO1xuICAgIH1cblxuICAgIC8vIOWmguaenOayoeacieaJvuWIsOe/u+ivke+8jOi/lOWbnkpTT07lrZfnrKbkuLLlvaLlvI9cbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoa2V5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiDliIfmjaLliLDkuIvkuIDkuKrmlK/mjIHnmoTor63oqIDnjq/looNcbiAgICovXG4gIHRvZ2dsZUxvY2FsZSgpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50SW5kZXggPSB0aGlzLm9wdGlvbnMubG9jYWxlcy5pbmRleE9mKHRoaXMubG9jYWxlKTtcblxuICAgIGlmIChjdXJyZW50SW5kZXggPT09IC0xKSB7XG4gICAgICB0aGlzLmhhbmRsZUludmFsaWRMb2NhbGUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBuZXh0SW5kZXggPSAoY3VycmVudEluZGV4ICsgMSkgJSB0aGlzLm9wdGlvbnMubG9jYWxlcy5sZW5ndGg7XG4gICAgY29uc3QgbmV4dExvY2FsZSA9IHRoaXMub3B0aW9ucy5sb2NhbGVzW25leHRJbmRleF07XG5cbiAgICBpZiAobmV4dExvY2FsZSAmJiBuZXh0TG9jYWxlICE9PSB0aGlzLmxvY2FsZSkge1xuICAgICAgdGhpcy5zZXRMb2NhbGUobmV4dExvY2FsZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIOiuvue9ruW9k+WJjeivreiogOeOr+Wig1xuICAgKiBAcGFyYW0gbG9jYWxlIC0g6KaB6K6+572u55qE6K+t6KiA546v5aKDXG4gICAqL1xuICBzZXRMb2NhbGUobG9jYWxlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZExvY2FsZShsb2NhbGUpKSB7XG4gICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgIGBJbnZhbGlkIGxvY2FsZTogJHtsb2NhbGV9LiBTdXBwb3J0ZWQgbG9jYWxlczogJHt0aGlzLm9wdGlvbnMubG9jYWxlcy5qb2luKCcsICcpfWAsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oTE9DQUxFX1NUT1JBR0UsIGxvY2FsZSk7XG4gICAgdGhpcy5sb2NhbGUgPSBsb2NhbGU7XG4gIH1cblxuICAvKipcbiAgICog5omL5Yqo5re75Yqg57+76K+R5YyFXG4gICAqIEBwYXJhbSB0cmFuc2xhdGlvbnMgLSDopoHmt7vliqDnmoTnv7vor5HljIVcbiAgICovXG4gIGFkZFRyYW5zbGF0aW9ucyh0cmFuc2xhdGlvbnM6IFRyYW5zbGF0aW9ucyk6IHZvaWQge1xuICAgIGlmICghdHJhbnNsYXRpb25zIHx8IHR5cGVvZiB0cmFuc2xhdGlvbnMgIT09ICdvYmplY3QnKSB7XG4gICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdJbnZhbGlkIHRyYW5zbGF0aW9ucyBvYmplY3QgcHJvdmlkZWQnKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyDlvIDlj5HmqKHlvI/kuIvmo4Dmn6Xph43lpI3nv7vor5FcbiAgICBpZiAoaXNEZXZNb2RlKCkgJiYgdGhpcy50cmFuc2xhdGlvbnNMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuY2hlY2tGb3JEdXBsaWNhdGVUcmFuc2xhdGlvbnModHJhbnNsYXRpb25zKTtcbiAgICB9XG5cbiAgICB0aGlzLnRyYW5zbGF0aW9uc0xpc3QucHVzaCh0cmFuc2xhdGlvbnMpO1xuICAgIHRoaXMudHJhbnNsYXRpb25zQWRkZWQkJC5uZXh0KCk7XG4gIH1cblxuICAvKipcbiAgICog5re75Yqg6L+c56iL57+76K+R5YyFXG4gICAqIEBwYXJhbSByZW1vdGVVcmwgLSDov5znqIvnv7vor5Hmlofku7ZVUkxcbiAgICovXG4gIGFkZFJlbW90ZVRyYW5zbGF0aW9ucyhyZW1vdGVVcmw6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghcmVtb3RlVXJsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgbm9ybWFsaXplZFVybCA9IHRoaXMubm9ybWFsaXplUmVtb3RlVXJsKHJlbW90ZVVybCk7XG4gICAgY29uc3QgcmVxdWVzdCQgPSB0aGlzLmNyZWF0ZVJlbW90ZVRyYW5zbGF0aW9uUmVxdWVzdChub3JtYWxpemVkVXJsKTtcblxuICAgIHJlcXVlc3QkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQkKSxcbiAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMudHJhbnNsYXRpb25zQWRkZWQkJC5uZXh0KCk7XG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IHJlbW90ZVRyYW5zbGF0aW9ucyA9PiB7XG4gICAgICAgICAgaWYgKHJlbW90ZVRyYW5zbGF0aW9ucykge1xuICAgICAgICAgICAgdGhpcy5yZW1vdGVUcmFuc2xhdGlvbnNMaXN0LnB1c2gocmVtb3RlVHJhbnNsYXRpb25zKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiBlcnJvciA9PiB7XG4gICAgICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICBgRmFpbGVkIHRvIGxvYWQgcmVtb3RlIHRyYW5zbGF0aW9ucyBmcm9tICR7cmVtb3RlVXJsfTpgLFxuICAgICAgICAgICAgICBlcnJvcixcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICog5LuO6L+c56iLVVJM6I635Y+W57+76K+R5pWw5o2uXG4gICAqIEBwYXJhbSByZW1vdGVVcmwgLSDov5znqItVUkxcbiAgICogQHBhcmFtIGxvY2FsZSAtIOWPr+mAieeahOivreiogOeOr+Wig++8iOeUqOS6jlVSTOaooeadv+abv+aNou+8iVxuICAgKiBAcmV0dXJucyDnv7vor5HmlbDmja7nmoRPYnNlcnZhYmxlXG4gICAqL1xuICBmZXRjaFRyYW5zbGF0aW9uKHJlbW90ZVVybDogc3RyaW5nKTogT2JzZXJ2YWJsZTxUcmFuc2xhdGlvbnM+O1xuICBmZXRjaFRyYW5zbGF0aW9uKHJlbW90ZVVybDogc3RyaW5nLCBsb2NhbGU6IHN0cmluZyk6IE9ic2VydmFibGU8VHJhbnNsYXRpb24+O1xuICBmZXRjaFRyYW5zbGF0aW9uKFxuICAgIHJlbW90ZVVybDogc3RyaW5nLFxuICAgIGxvY2FsZT86IHN0cmluZyxcbiAgKTogT2JzZXJ2YWJsZTxUcmFuc2xhdGlvbnMgfCBUcmFuc2xhdGlvbj4ge1xuICAgIHRoaXMudmFsaWRhdGVGZXRjaFRyYW5zbGF0aW9uUGFyYW1zKHJlbW90ZVVybCwgbG9jYWxlKTtcblxuICAgIGNvbnN0IHRhcmdldFVybCA9IGxvY2FsZVxuICAgICAgPyByZW1vdGVVcmwucmVwbGFjZShMT0NBTEVfUExBQ0VIT0xERVJfUkVHRVgsIGxvY2FsZSlcbiAgICAgIDogcmVtb3RlVXJsO1xuXG4gICAgcmV0dXJuIHRoaXMucGVyZm9ybVRyYW5zbGF0aW9uUmVxdWVzdCh0YXJnZXRVcmwpO1xuICB9XG5cbiAgLyoqXG4gICAqIOiOt+WPluWIneWni+ivreiogOeOr+Wig1xuICAgKi9cbiAgcHJpdmF0ZSBnZXRJbml0aWFsTG9jYWxlKG9wdGlvbnM6IFRyYW5zbGF0ZU9wdGlvbnMpOiBzdHJpbmcge1xuICAgIHJldHVybiBvcHRpb25zPy5sb2NhbGUgfHwgZ2V0VXNlckxhbmd1YWdlKCk7XG4gIH1cblxuICAvKipcbiAgICog6I635Y+W5Yid5aeL57+76K+R5YiX6KGoXG4gICAqL1xuICBwcml2YXRlIGdldEluaXRpYWxpemVUcmFuc2xhdGlvbnMoXG4gICAgb3B0aW9uczogVHJhbnNsYXRlT3B0aW9ucyxcbiAgICB0cmFuc2xhdGlvbkxpc3Q6IFRyYW5zbGF0aW9uc1tdLFxuICApOiBUcmFuc2xhdGlvbnNbXSB7XG4gICAgcmV0dXJuIFtvcHRpb25zPy50cmFuc2xhdGlvbnMsIC4uLih0cmFuc2xhdGlvbkxpc3QgfHwgW10pXS5maWx0ZXIoQm9vbGVhbik7XG4gIH1cblxuICAvKipcbiAgICog5Yqg6L296L+c56iL57+76K+RXG4gICAqL1xuICBwcml2YXRlIGxvYWRSZW1vdGVUcmFuc2xhdGlvbnMob3B0aW9uczogVHJhbnNsYXRlT3B0aW9ucyk6IHZvaWQge1xuICAgIGlmICghb3B0aW9ucz8ucmVtb3RlVXJsKSByZXR1cm47XG5cbiAgICBjb25zdCB1cmxzID0gQXJyYXkuaXNBcnJheShvcHRpb25zLnJlbW90ZVVybClcbiAgICAgID8gb3B0aW9ucy5yZW1vdGVVcmxcbiAgICAgIDogW29wdGlvbnMucmVtb3RlVXJsXTtcblxuICAgIHVybHMuZm9yRWFjaCh1cmwgPT4gdGhpcy5hZGRSZW1vdGVUcmFuc2xhdGlvbnModXJsKSk7XG4gIH1cblxuICAvKipcbiAgICog6L2s5o2i5qih5p2/5pWw5o2u5Li6IElDVSDlhbzlrrnmoLzlvI9cbiAgICogQHBhcmFtIGRhdGEgLSDmqKHmnb/mlbDmja5cbiAgICogQHJldHVybnMgSUNVIOWFvOWuueeahOaVsOaNruWvueixoVxuICAgKi9cbiAgcHJpdmF0ZSBub3JtYWxpemVBbmRDb252ZXJ0VG9JY3VEYXRhKGRhdGE6IFRlbXBsYXRlRGF0YSk6IEljdURhdGEge1xuICAgIGlmIChkYXRhID09IG51bGwpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG5cbiAgICAvLyDlpoLmnpzmmK/nuq/lr7nosaHvvIznm7TmjqXovazmjaLlhbblsZ7mgKdcbiAgICBpZiAodGhpcy5pc1BsYWluVGVtcGxhdGVPYmplY3QoZGF0YSkpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRPYmplY3RUb0ljdURhdGEoZGF0YSk7XG4gICAgfVxuXG4gICAgLy8g5Z+65pys57G75Z6L44CB5pWw57uE44CBRGF0ZeetieWMheijheS4uiB7IHZhbHVlOiBkYXRhIH1cbiAgICByZXR1cm4geyB2YWx1ZTogdGhpcy5jb252ZXJ0VmFsdWVUb0ljdVZhbHVlKGRhdGEpIH07XG4gIH1cblxuICAvKipcbiAgICog5qOA5p+l5piv5ZCm5Li657qv5qih5p2/5a+56LGh77yI5LiN5piv5pWw57uE44CBRGF0ZeetieeJueauiuWvueixoe+8iVxuICAgKi9cbiAgcHJpdmF0ZSBpc1BsYWluVGVtcGxhdGVPYmplY3QoXG4gICAgZGF0YTogVGVtcGxhdGVEYXRhLFxuICApOiBkYXRhIGlzIFJlY29yZDxzdHJpbmcsIFRlbXBsYXRlRGF0YT4ge1xuICAgIHJldHVybiAoXG4gICAgICB0eXBlb2YgZGF0YSA9PT0gJ29iamVjdCcgJiZcbiAgICAgIGRhdGEgIT09IG51bGwgJiZcbiAgICAgICFBcnJheS5pc0FycmF5KGRhdGEpICYmXG4gICAgICAhKGRhdGEgaW5zdGFuY2VvZiBEYXRlKSAmJlxuICAgICAgZGF0YS5jb25zdHJ1Y3RvciA9PT0gT2JqZWN0XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDovazmjaLlr7nosaHnmoTmiYDmnInlsZ7mgKfkuLogSUNVIOWFvOWuueWAvFxuICAgKi9cbiAgcHJpdmF0ZSBjb252ZXJ0T2JqZWN0VG9JY3VEYXRhKG9iajogUmVjb3JkPHN0cmluZywgVGVtcGxhdGVEYXRhPik6IEljdURhdGEge1xuICAgIGNvbnN0IHJlc3VsdDogSWN1RGF0YSA9IHt9O1xuXG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMob2JqKSkge1xuICAgICAgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgcmVzdWx0W2tleV0gPSB0aGlzLmNvbnZlcnRWYWx1ZVRvSWN1VmFsdWUodmFsdWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICog5bCG5Y2V5Liq5YC86L2s5o2i5Li6IElDVSDlhbzlrrnnsbvlnotcbiAgICog5oyJ54WnIElDVSBNZXNzYWdlRm9ybWF0IOinhOiMg++8jOWPquaUr+aMgSBzdHJpbmcgfCBudW1iZXIgfCBEYXRlXG4gICAqL1xuICBwcml2YXRlIGNvbnZlcnRWYWx1ZVRvSWN1VmFsdWUodmFsdWU6IFRlbXBsYXRlRGF0YSk6IHN0cmluZyB8IG51bWJlciB8IERhdGUge1xuICAgIC8vIElDVSDljp/nlJ/mlK/mjIHnmoTnsbvlnovnm7TmjqXov5Tlm55cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIC8vIOWFtuS7luexu+Wei+i9rOS4uuWtl+espuS4slxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJykge1xuICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAvLyDnroDljZXmlbDnu4TovazkuLrpgJflj7fliIbpmpTnmoTlrZfnrKbkuLJcbiAgICAgIHJldHVybiB2YWx1ZS5tYXAoaXRlbSA9PiBTdHJpbmcoaXRlbSA/PyAnJykpLmpvaW4oJywgJyk7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gJ251bGwnO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgLy8g5a+56LGh6L2s5Li6IEpTT04g5a2X56ym5LiyXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICog5aSE55CG5qih5p2/6ZSZ6K+vXG4gICAqL1xuICBwcml2YXRlIGhhbmRsZVRlbXBsYXRlRXJyb3Ioa2V5OiBUcmFuc2xhdGVLZXksIGVycm9yOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBrZXlTdHIgPSB0eXBlb2Yga2V5ID09PSAnc3RyaW5nJyA/IGtleSA6ICdbb2JqZWN0XSc7XG4gICAgY29uc3QgbWVzc2FnZSA9IGBUaGUgdHJhbnNsYXRpb24ga2V5ICcke2tleVN0cn0nIGlzIG1pc3NpbmcgdGhlIG5lY2Vzc2FyeSBwYXJhbWV0ZXJzLmA7XG4gICAgaWYgKGlzRGV2TW9kZSgpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UsIGVycm9yKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS53YXJuKG1lc3NhZ2UsIGVycm9yKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICog5bCG5Lyg57uf55qEIHt7IGtleSB9fSDor63ms5XovazmjaLkuLogSUNVIHtrZXl9IOagvOW8j1xuICAgKiDlkIzml7bkv53mjIHlt7LmnInnmoQgSUNVIOagvOW8j+S4jeWPmFxuICAgKiBAcGFyYW0gbWVzc2FnZSAtIOWOn+Wni+a2iOaBr+aooeadv1xuICAgKiBAcmV0dXJucyDovazmjaLlkI7nmoQgSUNVIOagvOW8j+a2iOaBr1xuICAgKi9cbiAgcHJpdmF0ZSBjb252ZXJ0VG9JY3VGb3JtYXQobWVzc2FnZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAvLyDlsIYge3sga2V5IH19IOi9rOaNouS4uiB7a2V5fVxuICAgIC8vIOaUr+aMgeepuuagvO+8mnt7IGtleSB9fSAtPiB7a2V5fe+8jOS9huWOu+aOieWGhemDqOeahOepuuagvFxuICAgIHJldHVybiBtZXNzYWdlLnJlcGxhY2UoL1xce1xceyhbXn1dKylcXH1cXH0vZywgKF8sIGNvbnRlbnQpID0+IHtcbiAgICAgIHJldHVybiBgeyR7Y29udGVudC50cmltKCl9fWA7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICog5L2/55SoIElDVSBtZXNzYWdlIGZvcm1hdCDmoLzlvI/ljJbmlofmnKxcbiAgICovXG4gIHByaXZhdGUgZm9ybWF0SWN1TWVzc2FnZShtZXNzYWdlOiBzdHJpbmcsIGljdURhdGE6IEljdURhdGEpOiBzdHJpbmcge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBtZXNzYWdlRm9ybWF0ID0gbmV3IEludGxNZXNzYWdlRm9ybWF0KFxuICAgICAgICBtZXNzYWdlLFxuICAgICAgICB0aGlzLmxvY2FsZSxcbiAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICB7IGlnbm9yZVRhZzogdHJ1ZSB9LFxuICAgICAgKTtcbiAgICAgIHJldHVybiBtZXNzYWdlRm9ybWF0LmZvcm1hdChpY3VEYXRhKSBhcyBzdHJpbmc7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xuICAgICAgICBjb25zb2xlLndhcm4oYElDVSBtZXNzYWdlIGZvcm1hdHRpbmcgZmFpbGVkIGZvciBcIiR7bWVzc2FnZX1cIjpgLCBlcnJvcik7XG4gICAgICB9XG4gICAgICAvLyDpmY3nuqflpITnkIbvvJrov5Tlm57ljp/lp4vmtojmga9cbiAgICAgIHJldHVybiBtZXNzYWdlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiDmoLzlvI/ljJbmlbDlrZdcbiAgICogQHBhcmFtIHZhbHVlIC0g6KaB5qC85byP5YyW55qE5pWw5a2XXG4gICAqIEBwYXJhbSBvcHRpb25zIC0g5qC85byP5YyW6YCJ6aG5XG4gICAqIEByZXR1cm5zIOagvOW8j+WMluWQjueahOaVsOWtl+Wtl+espuS4slxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBmb3JtYXROdW1iZXIoMTIzNC41NikgLy8gXCIxLDIzNC41NlwiXG4gICAqIGZvcm1hdE51bWJlcigwLjg1LCB7IHN0eWxlOiAncGVyY2VudCcgfSkgLy8gXCI4NSVcIlxuICAgKiBmb3JtYXROdW1iZXIoMTIzNC41NiwgeyBzdHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdDTlknIH0pIC8vIFwiwqUxLDIzNC41NlwiXG4gICAqL1xuICBmb3JtYXROdW1iZXIodmFsdWU6IG51bWJlciwgb3B0aW9uczogSW50bC5OdW1iZXJGb3JtYXRPcHRpb25zID0ge30pOiBzdHJpbmcge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gbmV3IEludGwuTnVtYmVyRm9ybWF0KHRoaXMubG9jYWxlLCBvcHRpb25zKS5mb3JtYXQodmFsdWUpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcbiAgICAgICAgY29uc29sZS53YXJuKGBOdW1iZXIgZm9ybWF0dGluZyBmYWlsZWQgZm9yIHZhbHVlICR7dmFsdWV9OmAsIGVycm9yKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiDmoLzlvI/ljJbotKfluIFcbiAgICogQHBhcmFtIHZhbHVlIC0g6KaB5qC85byP5YyW55qE6YeR6aKdXG4gICAqIEBwYXJhbSBjdXJyZW5jeSAtIOi0p+W4geS7o+egge+8jOm7mOiupOS4uiBDTllcbiAgICogQHBhcmFtIG9wdGlvbnMgLSDlhbbku5bmoLzlvI/ljJbpgInpoblcbiAgICogQHJldHVybnMg5qC85byP5YyW5ZCO55qE6LSn5biB5a2X56ym5LiyXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGZvcm1hdEN1cnJlbmN5KDEyMzQuNTYpIC8vIGVuLVVTOiBcIkNOwqUxLDIzNC41NlwiLCB6aC1DTjogXCLCpTEsMjM0LjU2XCJcbiAgICogZm9ybWF0Q3VycmVuY3koMTIzNC41NiwgJ1VTRCcpIC8vIGVuLVVTOiBcIiQxLDIzNC41NlwiLCB6aC1DTjogXCJVUyQxLDIzNC41NlwiXG4gICAqL1xuICBmb3JtYXRDdXJyZW5jeShcbiAgICB2YWx1ZTogbnVtYmVyLFxuICAgIGN1cnJlbmN5OiBzdHJpbmcgPSAnQ05ZJyxcbiAgICBvcHRpb25zOiBPbWl0PEludGwuTnVtYmVyRm9ybWF0T3B0aW9ucywgJ3N0eWxlJyB8ICdjdXJyZW5jeSc+ID0ge30sXG4gICk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybWF0TnVtYmVyKHZhbHVlLCB7XG4gICAgICBzdHlsZTogJ2N1cnJlbmN5JyxcbiAgICAgIGN1cnJlbmN5LFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiDmoLzlvI/ljJbnmb7liIbmr5RcbiAgICogQHBhcmFtIHZhbHVlIC0g6KaB5qC85byP5YyW55qE5YC877yIMC44NSDooajnpLogODUl77yJXG4gICAqIEBwYXJhbSBvcHRpb25zIC0g5qC85byP5YyW6YCJ6aG5XG4gICAqIEByZXR1cm5zIOagvOW8j+WMluWQjueahOeZvuWIhuavlOWtl+espuS4slxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBmb3JtYXRQZXJjZW50KDAuODUpIC8vIFwiODUlXCJcbiAgICogZm9ybWF0UGVyY2VudCgwLjg1NjcsIHsgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyIH0pIC8vIFwiODUuNjclXCJcbiAgICovXG4gIGZvcm1hdFBlcmNlbnQoXG4gICAgdmFsdWU6IG51bWJlcixcbiAgICBvcHRpb25zOiBPbWl0PEludGwuTnVtYmVyRm9ybWF0T3B0aW9ucywgJ3N0eWxlJz4gPSB7fSxcbiAgKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtYXROdW1iZXIodmFsdWUsIHtcbiAgICAgIHN0eWxlOiAncGVyY2VudCcsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIOagvOW8j+WMluaXpeacn1xuICAgKiBAcGFyYW0gZGF0ZSAtIOimgeagvOW8j+WMlueahOaXpeacn1xuICAgKiBAcGFyYW0gb3B0aW9ucyAtIEludGwuRGF0ZVRpbWVGb3JtYXRPcHRpb25zIOagvOW8j+mFjee9rlxuICAgKiBAcmV0dXJucyDmoLzlvI/ljJblkI7nmoTml6XmnJ/lrZfnrKbkuLJcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogZm9ybWF0RGF0ZShuZXcgRGF0ZSgpKSAvLyBlbi1VUzogXCIwMS8wMS8yMDI1XCIsIHpoLUNOOiBcIjIwMjUvMDEvMDFcIlxuICAgKiBmb3JtYXREYXRlKG5ldyBEYXRlKCksIHsgZGF0ZVN0eWxlOiAnZnVsbCcgfSkgLy8gXCIyMDI05bm0OOaciDIw5pel5pif5pyf5LqMXCJcbiAgICogZm9ybWF0RGF0ZShuZXcgRGF0ZSgpLCB7IHllYXI6ICdudW1lcmljJywgbW9udGg6ICcyLWRpZ2l0JywgZGF5OiAnMi1kaWdpdCcgfSkgLy8g5qC55o2ubG9jYWxl5qC85byP5YyWXG4gICAqIGZvcm1hdERhdGUobmV3IERhdGUoKSwgeyB5ZWFyOiAnbnVtZXJpYycsIG1vbnRoOiAnbG9uZycgfSkgLy8gXCIyMDI05bm0OOaciFwiXG4gICAqL1xuICBmb3JtYXREYXRlKFxuICAgIGRhdGU6IERhdGUgfCBzdHJpbmcgfCBudW1iZXIsXG4gICAgb3B0aW9uczogSW50bC5EYXRlVGltZUZvcm1hdE9wdGlvbnMgPSB7XG4gICAgICB5ZWFyOiAnbnVtZXJpYycsXG4gICAgICBtb250aDogJzItZGlnaXQnLFxuICAgICAgZGF5OiAnMi1kaWdpdCcsXG4gICAgfSxcbiAgKTogc3RyaW5nIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZGF0ZU9iaiA9IG5ldyBEYXRlKGRhdGUpO1xuICAgICAgaWYgKGlzTmFOKGRhdGVPYmouZ2V0VGltZSgpKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgZGF0ZScpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0RGF0ZUJ5T3B0aW9ucyhkYXRlT2JqLCBvcHRpb25zKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgRGF0ZSBmb3JtYXR0aW5nIGZhaWxlZCBmb3IgZGF0ZSAke2RhdGV9OmAsIGVycm9yKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBTdHJpbmcoZGF0ZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIOagvOW8j+WMluaXpeacn+WSjOaXtumXtFxuICAgKiBAcGFyYW0gZGF0ZSAtIOimgeagvOW8j+WMlueahOaXpeacn+aXtumXtFxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIEludGwuRGF0ZVRpbWVGb3JtYXRPcHRpb25zIOagvOW8j+mFjee9rlxuICAgKiBAcmV0dXJucyDmoLzlvI/ljJblkI7nmoTml6XmnJ/ml7bpl7TlrZfnrKbkuLJcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogZm9ybWF0RGF0ZVRpbWUobmV3IERhdGUoKSkgLy8gZW4tVVM6IFwiMDEvMDEvMjAyNSwgMTQ6MzA6MDBcIiwgemgtQ046IFwiMjAyNS8wMS8wMSAxNDozMDowMFwiXG4gICAqIGZvcm1hdERhdGVUaW1lKG5ldyBEYXRlKCksIHsgZGF0ZVN0eWxlOiAnbWVkaXVtJywgdGltZVN0eWxlOiAnc2hvcnQnIH0pIC8vIFwiMjAyNOW5tDjmnIgyMOaXpSAxNDozMFwiXG4gICAqIGZvcm1hdERhdGVUaW1lKG5ldyBEYXRlKCksIHsgeWVhcjogJ251bWVyaWMnLCBtb250aDogJzItZGlnaXQnLCBkYXk6ICcyLWRpZ2l0JywgaG91cjogJzItZGlnaXQnLCBtaW51dGU6ICcyLWRpZ2l0Jywgc2Vjb25kOiAnMi1kaWdpdCcsIGhvdXIxMjogZmFsc2UgfSkgLy8g5qC55o2ubG9jYWxl5qC85byP5YyWXG4gICAqL1xuICBmb3JtYXREYXRlVGltZShcbiAgICBkYXRlOiBEYXRlIHwgc3RyaW5nIHwgbnVtYmVyLFxuICAgIG9wdGlvbnM6IEludGwuRGF0ZVRpbWVGb3JtYXRPcHRpb25zID0ge1xuICAgICAgeWVhcjogJ251bWVyaWMnLFxuICAgICAgbW9udGg6ICcyLWRpZ2l0JyxcbiAgICAgIGRheTogJzItZGlnaXQnLFxuICAgICAgaG91cjogJzItZGlnaXQnLFxuICAgICAgbWludXRlOiAnMi1kaWdpdCcsXG4gICAgICBzZWNvbmQ6ICcyLWRpZ2l0JyxcbiAgICAgIGhvdXIxMjogZmFsc2UsXG4gICAgfSxcbiAgKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtYXREYXRlKGRhdGUsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIOagvOW8j+WMluebuOWvueaXtumXtFxuICAgKiBAcGFyYW0gdmFsdWUgLSDml7bpl7Tlt67lgLzvvIjmlbDlrZfvvInmiJbml6XmnJ/lr7nosaFcbiAgICogQHBhcmFtIHVuaXQgLSDml7bpl7TljZXkvY3vvIjlvZN2YWx1ZeS4uuaVsOWtl+aXtuW/hemhu+aPkOS+m++8iVxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIOagvOW8j+WMlumAiemhuVxuICAgKiBAcmV0dXJucyDmoLzlvI/ljJblkI7nmoTnm7jlr7nml7bpl7TlrZfnrKbkuLJcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogLy8g5omL5Yqo5oyH5a6a5Y2V5L2NXG4gICAqIGZvcm1hdFJlbGF0aXZlVGltZSgtMSwgJ2RheScpIC8vIGVuLVVTOiBcInllc3RlcmRheVwiLCB6aC1DTjogXCLmmKjlpKlcIlxuICAgKiBmb3JtYXRSZWxhdGl2ZVRpbWUoMiwgJ2hvdXInKSAvLyBlbi1VUzogXCJpbiAyIGhvdXJzXCIsIHpoLUNOOiBcIjLlsI/ml7blkI5cIlxuICAgKiBmb3JtYXRSZWxhdGl2ZVRpbWUoLTMwLCAnbWludXRlJykgLy8gZW4tVVM6IFwiMzAgbWludXRlcyBhZ29cIiwgemgtQ046IFwiMzDliIbpkp/liY1cIlxuICAgKlxuICAgKiAvLyDoh6rliqjorqHnrpfljZXkvY1cbiAgICogZm9ybWF0UmVsYXRpdmVUaW1lKG5ldyBEYXRlKERhdGUubm93KCkgLSA2MDAwMCkpIC8vIFwiMSBtaW51dGUgYWdvXCJcbiAgICogZm9ybWF0UmVsYXRpdmVUaW1lKG5ldyBEYXRlKERhdGUubm93KCkgKyA3MjAwMDAwKSkgLy8gXCJpbiAyIGhvdXJzXCJcbiAgICogZm9ybWF0UmVsYXRpdmVUaW1lKG5ldyBEYXRlKERhdGUubm93KCkgLSA4NjQwMDAwMCkpIC8vIFwieWVzdGVyZGF5XCJcbiAgICovXG4gIGZvcm1hdFJlbGF0aXZlVGltZShcbiAgICB2YWx1ZTogRGF0ZSxcbiAgICBvcHRpb25zPzogSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXRPcHRpb25zLFxuICApOiBzdHJpbmc7XG5cbiAgZm9ybWF0UmVsYXRpdmVUaW1lKFxuICAgIHZhbHVlOiBudW1iZXIsXG4gICAgdW5pdDogSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXRVbml0LFxuICAgIG9wdGlvbnM/OiBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdE9wdGlvbnMsXG4gICk6IHN0cmluZztcblxuICBmb3JtYXRSZWxhdGl2ZVRpbWUoXG4gICAgdmFsdWU6IG51bWJlciB8IERhdGUsXG4gICAgdW5pdE9yT3B0aW9ucz86XG4gICAgICB8IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0VW5pdFxuICAgICAgfCBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdE9wdGlvbnMsXG4gICAgb3B0aW9uczogSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXRPcHRpb25zID0geyBudW1lcmljOiAnYXV0bycgfSxcbiAgKTogc3RyaW5nIHtcbiAgICB0cnkge1xuICAgICAgbGV0IGZpbmFsVmFsdWU6IG51bWJlcjtcbiAgICAgIGxldCBmaW5hbFVuaXQ6IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0VW5pdDtcbiAgICAgIGxldCBmaW5hbE9wdGlvbnM6IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0T3B0aW9ucztcblxuICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICAvLyDoh6rliqjorqHnrpfml7bpl7Tlt67lkozljZXkvY1cbiAgICAgICAgY29uc3QgeyB2YWx1ZTogY2FsY3VsYXRlZFZhbHVlLCB1bml0OiBjYWxjdWxhdGVkVW5pdCB9ID1cbiAgICAgICAgICB0aGlzLmNhbGN1bGF0ZVJlbGF0aXZlVGltZSh2YWx1ZSk7XG4gICAgICAgIGZpbmFsVmFsdWUgPSBjYWxjdWxhdGVkVmFsdWU7XG4gICAgICAgIGZpbmFsVW5pdCA9IGNhbGN1bGF0ZWRVbml0O1xuICAgICAgICBmaW5hbE9wdGlvbnMgPVxuICAgICAgICAgICh1bml0T3JPcHRpb25zIGFzIEludGwuUmVsYXRpdmVUaW1lRm9ybWF0T3B0aW9ucykgfHwgb3B0aW9ucztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIOS9v+eUqOaPkOS+m+eahOaVsOWAvOWSjOWNleS9jVxuICAgICAgICBmaW5hbFZhbHVlID0gdmFsdWU7XG4gICAgICAgIGZpbmFsVW5pdCA9IHVuaXRPck9wdGlvbnMgYXMgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXRVbml0O1xuICAgICAgICBmaW5hbE9wdGlvbnMgPSBvcHRpb25zO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbmV3IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KHRoaXMubG9jYWxlLCBmaW5hbE9wdGlvbnMpLmZvcm1hdChcbiAgICAgICAgZmluYWxWYWx1ZSxcbiAgICAgICAgZmluYWxVbml0LFxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgUmVsYXRpdmUgdGltZSBmb3JtYXR0aW5nIGZhaWxlZCBmb3IgJHt2YWx1ZX06YCwgZXJyb3IpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgRGF0ZVxuICAgICAgICA/IHZhbHVlLnRvTG9jYWxlU3RyaW5nKHRoaXMubG9jYWxlKVxuICAgICAgICA6IGAke3ZhbHVlfWA7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIOagueaNruaXpeacn+iuoeeul+ebuOWvueaXtumXtOW3ruWAvOWSjOacgOWQiOmAgueahOWNleS9jVxuICAgKiBAcGFyYW0gZGF0ZSAtIOebruagh+aXpeacn1xuICAgKiBAcmV0dXJucyDljIXlkKvml7bpl7Tlt67lgLzlkozljZXkvY3nmoTlr7nosaFcbiAgICovXG4gIHByaXZhdGUgY2FsY3VsYXRlUmVsYXRpdmVUaW1lKGRhdGU6IERhdGUpOiB7XG4gICAgdmFsdWU6IG51bWJlcjtcbiAgICB1bml0OiBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdFVuaXQ7XG4gIH0ge1xuICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gICAgY29uc3QgZGlmZk1zID0gZGF0ZS5nZXRUaW1lKCkgLSBub3cuZ2V0VGltZSgpO1xuICAgIGNvbnN0IGFic0RpZmZNcyA9IE1hdGguYWJzKGRpZmZNcyk7XG5cbiAgICAvLyDml7bpl7TljZXkvY3pmIjlgLzvvIjmr6vnp5LvvIlcbiAgICBjb25zdCBNSU5VVEVfTVMgPSA2MCAqIDEwMDA7XG4gICAgY29uc3QgSE9VUl9NUyA9IDYwICogTUlOVVRFX01TO1xuICAgIGNvbnN0IERBWV9NUyA9IDI0ICogSE9VUl9NUztcblxuICAgIC8vIOagueaNruaXtumXtOW3rumAieaLqeWQiOmAgueahOWNleS9je+8jOacgOWkp+WNleS9jeS4umRheVxuICAgIGlmIChhYnNEaWZmTXMgPj0gREFZX01TKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB2YWx1ZTogTWF0aC5yb3VuZChkaWZmTXMgLyBEQVlfTVMpLFxuICAgICAgICB1bml0OiAnZGF5JyxcbiAgICAgIH07XG4gICAgfVxuICAgIGlmIChhYnNEaWZmTXMgPj0gSE9VUl9NUykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsdWU6IE1hdGgucm91bmQoZGlmZk1zIC8gSE9VUl9NUyksXG4gICAgICAgIHVuaXQ6ICdob3VyJyxcbiAgICAgIH07XG4gICAgfVxuICAgIGlmIChhYnNEaWZmTXMgPj0gTUlOVVRFX01TKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB2YWx1ZTogTWF0aC5yb3VuZChkaWZmTXMgLyBNSU5VVEVfTVMpLFxuICAgICAgICB1bml0OiAnbWludXRlJyxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICB2YWx1ZTogTWF0aC5yb3VuZChkaWZmTXMgLyAxMDAwKSxcbiAgICAgIHVuaXQ6ICdzZWNvbmQnLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICog5qC55o2u5pel5pyf5qC85byP6YWN572u5qC85byP5YyW5pel5pyfXG4gICAqIOS9v+eUqOagh+WHhiBJbnRsLkRhdGVUaW1lRm9ybWF0T3B0aW9ucyDnoa7kv53moLzlvI/lj6/pooTmtYvmgKdcbiAgICovXG4gIHByaXZhdGUgZm9ybWF0RGF0ZUJ5T3B0aW9ucyhcbiAgICBkYXRlOiBEYXRlLFxuICAgIG9wdGlvbnM6IEludGwuRGF0ZVRpbWVGb3JtYXRPcHRpb25zLFxuICApOiBzdHJpbmcge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQodGhpcy5sb2NhbGUsIG9wdGlvbnMpLmZvcm1hdChkYXRlKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgRGF0ZSBmb3JtYXR0aW5nIGZhaWxlZDpgLCBlcnJvcik7XG4gICAgICB9XG4gICAgICByZXR1cm4gZGF0ZS50b0lTT1N0cmluZygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiDpgJrov4flrZfnrKbkuLLplK7ojrflj5bnv7vor5FcbiAgICovXG4gIHByaXZhdGUgZ2V0VHJhbnNsYXRpb25CeUtleShrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZVRyYW5zbGF0aW9uKGtleSk7XG4gIH1cblxuICAvKipcbiAgICog6YCa6L+H57+76K+R5a+56LGh6I635Y+W57+76K+R5YC8XG4gICAqL1xuICBwcml2YXRlIGdldFRyYW5zbGF0aW9uQnlPYmplY3QoXG4gICAgdHJhbnNsYXRpb25PYmo6IFRyYW5zbGF0aW9uLFxuICApOiBUcmFuc2xhdGlvblZhbHVlIHtcbiAgICByZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGlvblZhbHVlKHRyYW5zbGF0aW9uT2JqLCB0aGlzLmxvY2FsZSk7XG4gIH1cblxuICAvKipcbiAgICog5aSE55CG5peg5pWI6K+t6KiA546v5aKDXG4gICAqL1xuICBwcml2YXRlIGhhbmRsZUludmFsaWRMb2NhbGUoKTogdm9pZCB7XG4gICAgaWYgKGlzRGV2TW9kZSgpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdgbG9jYWxlc2AgaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkIGNvcnJlY3RseScpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiDpqozor4Hor63oqIDnjq/looPmmK/lkKbmnInmlYhcbiAgICovXG4gIHByaXZhdGUgaXNWYWxpZExvY2FsZShsb2NhbGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubG9jYWxlcy5pbmNsdWRlcyhsb2NhbGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIOajgOafpemHjeWkjee/u+ivke+8iOW8gOWPkeaooeW8j++8iVxuICAgKi9cbiAgcHJpdmF0ZSBjaGVja0ZvckR1cGxpY2F0ZVRyYW5zbGF0aW9ucyhuZXdUcmFuc2xhdGlvbnM6IFRyYW5zbGF0aW9ucyk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgZXhpc3RpbmdUcmFuc2xhdGlvbnMgb2YgdGhpcy50cmFuc2xhdGlvbnNMaXN0KSB7XG4gICAgICBPYmplY3Qua2V5cyhuZXdUcmFuc2xhdGlvbnMpLmZvckVhY2gobG9jYWxlID0+IHtcbiAgICAgICAgaWYgKGV4aXN0aW5nVHJhbnNsYXRpb25zW2xvY2FsZV0pIHtcbiAgICAgICAgICB0aGlzLmNvbXBhcmVUcmFuc2xhdGlvbktleXMoXG4gICAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgICBuZXdUcmFuc2xhdGlvbnNbbG9jYWxlXSxcbiAgICAgICAgICAgIGV4aXN0aW5nVHJhbnNsYXRpb25zW2xvY2FsZV0sXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIOagh+WHhuWMlui/nOeoi1VSTFxuICAgKi9cbiAgcHJpdmF0ZSBub3JtYWxpemVSZW1vdGVVcmwocmVtb3RlVXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJlbW90ZVVybCA9IHRoaXMuY2xlYW5VcmwocmVtb3RlVXJsKTtcbiAgICBjb25zdCBpc0Fic29sdXRlID0gaXNBYnNvbHV0ZVVybChyZW1vdGVVcmwpO1xuICAgIGNvbnN0IGlzQXBpR2F0ZVdheVJlcXVlc3QgPSByZW1vdGVVcmwuc3RhcnRzV2l0aChBUElfR0FURVdBWSk7XG5cbiAgICAvLyDlvIDlj5HmqKHlvI/kuIvov5vooYxVUkzpqozor4FcbiAgICBpZiAoaXNEZXZNb2RlKCkpIHtcbiAgICAgIHRoaXMudmFsaWRhdGVSZW1vdGVVcmwocmVtb3RlVXJsLCBpc0Fic29sdXRlKTtcbiAgICB9XG5cbiAgICAvLyDnm7jlr7lVUkzovazmjaLkuLrnu53lr7lVUkxcbiAgICBpZiAoIWlzQWJzb2x1dGUgJiYgIWlzQXBpR2F0ZVdheVJlcXVlc3QpIHtcbiAgICAgIGNvbnN0IGJhc2VVcmwgPSB0aGlzLmJhc2VIcmVmLmVuZHNXaXRoKCcvJylcbiAgICAgICAgPyB0aGlzLmJhc2VIcmVmXG4gICAgICAgIDogYCR7dGhpcy5iYXNlSHJlZn0vYDtcbiAgICAgIHJldHVybiBgJHtiYXNlVXJsfSR7cmVtb3RlVXJsfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlbW90ZVVybDtcbiAgfVxuXG4gIC8qKlxuICAgKiDmuIXnkIZVUkzvvIjnp7vpmaRoYXNo54mH5q6177yJXG4gICAqL1xuICBwcml2YXRlIGNsZWFuVXJsKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gaGVhZCh1cmwuc3BsaXQoLyMvKSkgfHwgdXJsO1xuICB9XG5cbiAgLyoqXG4gICAqIOmqjOivgei/nOeoi1VSTO+8iOW8gOWPkeaooeW8j++8iVxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZVJlbW90ZVVybChyZW1vdGVVcmw6IHN0cmluZywgaXNBYnNvbHV0ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICghaXNBYnNvbHV0ZSAmJiAoIXRoaXMuYmFzZUhyZWYgfHwgIWlzQWJzb2x1dGVVcmwodGhpcy5iYXNlSHJlZikpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgICAnYWJzb2x1dGUgYmFzZSBocmVmIGlzIHJlcXVpcmVkIGZvciByZWxhdGl2ZSByZW1vdGUgdXJsJyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHJlbW90ZVVybC5zcGxpdCgnPycpWzBdLmluY2x1ZGVzKCcuLycpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgICAnZG8gbm90IHVzZSBhbnkgZG90IHdpdGggc2xhc2ggZm9yIHJlbGF0aXZlIHVybCB3aGljaCBzaG91bGQgYWx3YXlzIGJhc2UgZnJvbSBiYXNlIGhyZWYnLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICog5Yib5bu66L+c56iL57+76K+R6K+35rGCXG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZVJlbW90ZVRyYW5zbGF0aW9uUmVxdWVzdChcbiAgICBub3JtYWxpemVkVXJsOiBzdHJpbmcsXG4gICk6IE9ic2VydmFibGU8VHJhbnNsYXRpb25zPiB7XG4gICAgaWYgKExPQ0FMRV9QTEFDRUhPTERFUl9SRUdFWC50ZXN0KG5vcm1hbGl6ZWRVcmwpKSB7XG4gICAgICByZXR1cm4gdGhpcy5jcmVhdGVNdWx0aUxvY2FsZVJlcXVlc3Qobm9ybWFsaXplZFVybCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNyZWF0ZVNpbmdsZUxvY2FsZVJlcXVlc3Qobm9ybWFsaXplZFVybCk7XG4gIH1cblxuICAvKipcbiAgICog5Yib5bu65aSa6K+t6KiA6K+35rGCXG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZU11bHRpTG9jYWxlUmVxdWVzdChcbiAgICB1cmxUZW1wbGF0ZTogc3RyaW5nLFxuICApOiBPYnNlcnZhYmxlPFRyYW5zbGF0aW9ucz4ge1xuICAgIGNvbnN0IHJlcXVlc3RzID0gdGhpcy5vcHRpb25zLmxvY2FsZXMubWFwKGxvY2FsZSA9PlxuICAgICAgdGhpcy5mZXRjaFRyYW5zbGF0aW9uKHVybFRlbXBsYXRlLCBsb2NhbGUpLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMubG9vc2UpIHtcbiAgICAgICAgICAgIGNvbnN0IGxvb3NlTG9jYWxlID0gdGhpcy5leHRyYWN0TG9vc2VMb2NhbGUobG9jYWxlKTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgbG9jYWxlICE9PSBsb29zZUxvY2FsZSAmJlxuICAgICAgICAgICAgICAhdGhpcy5vcHRpb25zLmxvY2FsZXMuaW5jbHVkZXMobG9vc2VMb2NhbGUpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmV0Y2hUcmFuc2xhdGlvbih1cmxUZW1wbGF0ZSwgbG9vc2VMb2NhbGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gaXNEZXZNb2RlKCkgPyB0aHJvd0Vycm9yKCgpID0+IGVycm9yKSA6IEVNUFRZO1xuICAgICAgICB9KSxcbiAgICAgICAgZmlsdGVyKGlzUGxhaW5PYmplY3QpLFxuICAgICAgICBtYXAoXG4gICAgICAgICAgKHRyYW5zbGF0aW9uOiBUcmFuc2xhdGlvbikgPT5cbiAgICAgICAgICAgICh7IFtsb2NhbGVdOiB0cmFuc2xhdGlvbiB9KSBhcyBUcmFuc2xhdGlvbnMsXG4gICAgICAgICksXG4gICAgICApLFxuICAgICk7XG5cbiAgICByZXR1cm4gZm9ya0pvaW4ocmVxdWVzdHMpLnBpcGUoXG4gICAgICBtYXAocmVzdWx0cyA9PlxuICAgICAgICByZXN1bHRzLnJlZHVjZSgoYWNjLCBjdXJyKSA9PiBPYmplY3QuYXNzaWduKGFjYywgY3VyciksIHt9KSxcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDliJvlu7rljZXor63oqIDor7fmsYJcbiAgICovXG4gIHByaXZhdGUgY3JlYXRlU2luZ2xlTG9jYWxlUmVxdWVzdCh1cmw6IHN0cmluZyk6IE9ic2VydmFibGU8VHJhbnNsYXRpb25zPiB7XG4gICAgcmV0dXJuIHRoaXMucGVyZm9ybVRyYW5zbGF0aW9uUmVxdWVzdCh1cmwpLnBpcGUoXG4gICAgICBjYXRjaEVycm9yKGVycm9yID0+IChpc0Rldk1vZGUoKSA/IHRocm93RXJyb3IoKCkgPT4gZXJyb3IpIDogRU1QVFkpKSxcbiAgICApIGFzIE9ic2VydmFibGU8VHJhbnNsYXRpb25zPjtcbiAgfVxuXG4gIC8qKlxuICAgKiDmiafooYznv7vor5Hor7fmsYJcbiAgICovXG4gIHByaXZhdGUgcGVyZm9ybVRyYW5zbGF0aW9uUmVxdWVzdCh1cmw6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgaXNKU09OID0gdXJsLmVuZHNXaXRoKCcuanNvbicpO1xuICAgIGNvbnN0IGlzQXBpR2F0ZVdheVJlcXVlc3QgPSB1cmwuc3RhcnRzV2l0aChBUElfR0FURVdBWSk7XG4gICAgY29uc3QgcmVzcG9uc2VUeXBlID0gaXNKU09OID8gJ2pzb24nIDogJ3RleHQnO1xuXG4gICAgaWYgKGlzQXBpR2F0ZVdheVJlcXVlc3QpIHtcbiAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgLnJlcXVlc3QoJ0dFVCcsIHVybCwgeyByZXNwb25zZVR5cGUgfSlcbiAgICAgICAgLnBpcGUobWFwKGJvZHkgPT4gKGlzSlNPTiA/IGJvZHkgOiBwYXJzZShib2R5KSkpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWpheCh7IHVybCwgcmVzcG9uc2VUeXBlIH0pLnBpcGUoXG4gICAgICBtYXAoKHsgcmVzcG9uc2UgfSkgPT4gKGlzSlNPTiA/IHJlc3BvbnNlIDogcGFyc2UocmVzcG9uc2UgYXMgc3RyaW5nKSkpLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICog6aqM6K+BZmV0Y2hUcmFuc2xhdGlvbuWPguaVsFxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZUZldGNoVHJhbnNsYXRpb25QYXJhbXMoXG4gICAgcmVtb3RlVXJsOiBzdHJpbmcsXG4gICAgbG9jYWxlPzogc3RyaW5nLFxuICApOiB2b2lkIHtcbiAgICBpZiAoaXNEZXZNb2RlKCkgJiYgTE9DQUxFX1BMQUNFSE9MREVSX1JFR0VYLnRlc3QocmVtb3RlVXJsKSAmJiAhbG9jYWxlKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgICAnYGxvY2FsZWAgaXMgcmVxdWlyZWQgc2luY2UgdGhlIHByb3ZpZGVkIHJlbW90ZSB1cmwgY29udGFpbnMgbG9jYWxlIHBsYWNlaG9sZGVyJyxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIOino+aekOe/u+ivkeaWh+acrFxuICAgKi9cbiAgcHJpdmF0ZSByZXNvbHZlVHJhbnNsYXRpb24oa2V5OiBzdHJpbmcsIGxvY2FsZSA9IHRoaXMubG9jYWxlKTogc3RyaW5nIHtcbiAgICAvLyDkvJjlhYjku47ov5znqIvnv7vor5HkuK3mn6Xmib5cbiAgICBsZXQgdmFsdWUgPSB0aGlzLnNlYXJjaEluVHJhbnNsYXRpb25zTGlzdChcbiAgICAgIGtleSxcbiAgICAgIGxvY2FsZSxcbiAgICAgIHRoaXMucmVtb3RlVHJhbnNsYXRpb25zTGlzdCxcbiAgICApO1xuXG4gICAgLy8g5aaC5p6c6L+c56iL57+76K+R5Lit5rKh5pyJ5om+5Yiw77yIdW5kZWZpbmVk77yJ77yM5YiZ5LuO5pys5Zyw57+76K+R5Lit5p+l5om+XG4gICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHZhbHVlID0gdGhpcy5zZWFyY2hJblRyYW5zbGF0aW9uc0xpc3Qoa2V5LCBsb2NhbGUsIHRoaXMudHJhbnNsYXRpb25zTGlzdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlID8/IGtleTtcbiAgfVxuXG4gIC8qKlxuICAgKiDlnKjnv7vor5HliJfooajkuK3mkJzntKJcbiAgICovXG4gIHByaXZhdGUgc2VhcmNoSW5UcmFuc2xhdGlvbnNMaXN0KFxuICAgIGtleTogc3RyaW5nLFxuICAgIGxvY2FsZTogc3RyaW5nLFxuICAgIHRyYW5zbGF0aW9uc0xpc3Q6IFRyYW5zbGF0aW9uc1tdLFxuICApOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGlmICghdHJhbnNsYXRpb25zTGlzdCB8fCB0cmFuc2xhdGlvbnNMaXN0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyDku47lkI7lvoDliY3pgY3ljobvvIjlkI7liqDlhaXnmoTkvJjlhYjnuqfmm7Tpq5jvvIlcbiAgICBmb3IgKGxldCBpID0gdHJhbnNsYXRpb25zTGlzdC5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLnNlYXJjaEluVHJhbnNsYXRpb25zKGtleSwgbG9jYWxlLCB0cmFuc2xhdGlvbnNMaXN0W2ldKTtcbiAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIOWcqOWNleS4que/u+ivkeWvueixoeS4reaQnOe0olxuICAgKi9cbiAgcHJpdmF0ZSBzZWFyY2hJblRyYW5zbGF0aW9ucyhcbiAgICBrZXk6IHN0cmluZyxcbiAgICBsb2NhbGU6IHN0cmluZyxcbiAgICB0cmFuc2xhdGlvbnM6IFRyYW5zbGF0aW9ucyxcbiAgKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCB0cmFuc2xhdGlvblZhbHVlID0gdGhpcy5nZXRUcmFuc2xhdGlvblZhbHVlKHRyYW5zbGF0aW9ucywgbG9jYWxlKTtcblxuICAgIC8vIOWmguaenOayoeacieiOt+WPluWIsOe/u+ivkeWAvOWvueixoe+8iGdldFRyYW5zbGF0aW9uVmFsdWXlt7Lnu4/lpITnkIbkuoZsb29zZeWSjGZhbGxiYWNr77yJ77yM55u05o6l6L+U5ZueXG4gICAgaWYgKHRyYW5zbGF0aW9uVmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyDojrflj5bnv7vor5HlgLzvvIzmlK/mjIHmiYHlubPlkozltYzlpZfkuKTnp43nu5PmnoRcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZ2V0VHJhbnNsYXRpb25Gcm9tU291cmNlKHRyYW5zbGF0aW9uVmFsdWUsIGtleSk7XG5cbiAgICAvLyDlpoLmnpzmib7liLDlgLzvvIjljIXmi6xudWxs5YC877yJ77yM5YiZ5aSE55CG5bm26L+U5ZueXG4gICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMudmFsaWRhdGVUcmFuc2xhdGlvblZhbHVlKHZhbHVlLCBsb2NhbGUsIGtleSk7XG4gICAgICAvLyBudWxs5YC86L2s5o2i5Li65a2X56ym5LiyJ251bGwn77yM5YW25LuW5YC85q2j5bi46L2s5o2iXG4gICAgICByZXR1cm4gdmFsdWUgPT09IG51bGwgPyAnbnVsbCcgOiBTdHJpbmcodmFsdWUpO1xuICAgIH1cblxuICAgIC8vIOWmguaenOWcqOW9k+WJjeivreiogOeahOe/u+ivkeWAvOS4reaJvuS4jeWIsGtlee+8jOS9hui/meS4jeaYr2ZhbGxiYWNr6K+t6KiA77yM5bCd6K+VZmFsbGJhY2tcbiAgICBpZiAobG9jYWxlICE9PSB0aGlzLm9wdGlvbnMuZmFsbGJhY2tMb2NhbGUpIHtcbiAgICAgIGNvbnN0IGZhbGxiYWNrVHJhbnNsYXRpb25WYWx1ZSA9IHRoaXMuZ2V0VHJhbnNsYXRpb25WYWx1ZShcbiAgICAgICAgdHJhbnNsYXRpb25zLFxuICAgICAgICB0aGlzLm9wdGlvbnMuZmFsbGJhY2tMb2NhbGUsXG4gICAgICApO1xuXG4gICAgICBpZiAoZmFsbGJhY2tUcmFuc2xhdGlvblZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgZmFsbGJhY2tWYWx1ZSA9IHRoaXMuZ2V0VHJhbnNsYXRpb25Gcm9tU291cmNlKFxuICAgICAgICAgIGZhbGxiYWNrVHJhbnNsYXRpb25WYWx1ZSxcbiAgICAgICAgICBrZXksXG4gICAgICAgICk7XG4gICAgICAgIGlmIChmYWxsYmFja1ZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aGlzLnZhbGlkYXRlVHJhbnNsYXRpb25WYWx1ZShcbiAgICAgICAgICAgIGZhbGxiYWNrVmFsdWUsXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMuZmFsbGJhY2tMb2NhbGUsXG4gICAgICAgICAgICBrZXksXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gZmFsbGJhY2tWYWx1ZSA9PT0gbnVsbCA/ICdudWxsJyA6IFN0cmluZyhmYWxsYmFja1ZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICog5LuO57+76K+R5rqQ6I635Y+W57+76K+R5YC877yM5pSv5oyB5omB5bmz5ZKM5bWM5aWX5Lik56eN57uT5p6EXG4gICAqIEBwYXJhbSBzb3VyY2UgLSDnv7vor5HmupDlr7nosaFcbiAgICogQHBhcmFtIGtleSAtIOe/u+ivkemUru+8iOWmgiAnYS5iLmMn77yJXG4gICAqIEByZXR1cm5zIOe/u+ivkeWAvOaIlnVuZGVmaW5lZFxuICAgKi9cbiAgcHJpdmF0ZSBnZXRUcmFuc2xhdGlvbkZyb21Tb3VyY2Uoc291cmNlOiBhbnksIGtleTogc3RyaW5nKTogYW55IHtcbiAgICBpZiAoIXNvdXJjZSB8fCB0eXBlb2Ygc291cmNlICE9PSAnb2JqZWN0Jykge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyAxLiDkvJjlhYjlsJ3or5XmiYHlubPnu5PmnoTvvJrnm7TmjqXmn6Xmib7lrozmlbTnmoTplK4gJ2EuYi5jJ1xuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7XG4gICAgICByZXR1cm4gc291cmNlW2tleV07XG4gICAgfVxuXG4gICAgLy8gMi4g5YaN5bCd6K+V5bWM5aWX57uT5p6E77ya5L2/55SobG9kYXNoLmdldOaMiei3r+W+hOafpeaJviBhLmIuY1xuICAgIGNvbnN0IG5lc3RlZFZhbHVlID0gZ2V0KHNvdXJjZSwga2V5KTtcbiAgICBpZiAobmVzdGVkVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIG5lc3RlZFZhbHVlO1xuICAgIH1cblxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICog6I635Y+W5oyH5a6a6K+t6KiA55qE57+76K+R5YC877yI5aSE55CGbG9vc2XmqKHlvI/lkoxmYWxsYmFja+mAu+i+ke+8iVxuICAgKi9cbiAgcHJpdmF0ZSBnZXRUcmFuc2xhdGlvblZhbHVlKFxuICAgIHNvdXJjZTogVHJhbnNsYXRpb24sXG4gICAgbG9jYWxlID0gdGhpcy5sb2NhbGUsXG4gICk6IFRyYW5zbGF0aW9uVmFsdWUge1xuICAgIGlmICghc291cmNlKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8vIDEuIOmmluWFiOajgOafpeeyvuehruWMuemFjeeahOmUruaYr+WQpuWtmOWcqFxuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBsb2NhbGUpKSB7XG4gICAgICByZXR1cm4gc291cmNlW2xvY2FsZV07IC8vIOi/lOWbnuWunumZheWAvO+8jOWPr+iDveaYr251bGzjgIF1bmRlZmluZWTmiJblhbbku5blgLxcbiAgICB9XG5cbiAgICAvLyAyLiDlpoLmnpzlkK/nlKjkuoblrr3mnb7mqKHlvI/vvIzlsJ3or5Xlrr3mnb7ljLnphY1cbiAgICBpZiAodGhpcy5vcHRpb25zLmxvb3NlKSB7XG4gICAgICBjb25zdCBsb29zZVZhbHVlID0gdGhpcy5nZXRMb29zZVRyYW5zbGF0aW9uVmFsdWUoc291cmNlLCBsb2NhbGUpO1xuICAgICAgaWYgKGxvb3NlVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gbG9vc2VWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyAzLiDlpoLmnpzlvZPliY3or63oqIDkuI3mmK9mYWxsYmFja+ivreiogO+8jOWwneivlWZhbGxiYWNr6K+t6KiAXG4gICAgaWYgKGxvY2FsZSAhPT0gdGhpcy5vcHRpb25zLmZhbGxiYWNrTG9jYWxlKSB7XG4gICAgICAvLyDpppblhYjmo4Dmn6VmYWxsYmFja+ivreiogOeahOeyvuehruWMuemFjVxuICAgICAgaWYgKFxuICAgICAgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoXG4gICAgICAgICAgc291cmNlLFxuICAgICAgICAgIHRoaXMub3B0aW9ucy5mYWxsYmFja0xvY2FsZSxcbiAgICAgICAgKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiBzb3VyY2VbdGhpcy5vcHRpb25zLmZhbGxiYWNrTG9jYWxlXTtcbiAgICAgIH1cblxuICAgICAgLy8g5aaC5p6c5ZCv55So5LqG5a695p2+5qih5byP77yM5Lmf5a+5ZmFsbGJhY2vor63oqIDov5vooYzlrr3mnb7ljLnphY1cbiAgICAgIGlmICh0aGlzLm9wdGlvbnMubG9vc2UpIHtcbiAgICAgICAgY29uc3QgZmFsbGJhY2tMb29zZVZhbHVlID0gdGhpcy5nZXRMb29zZVRyYW5zbGF0aW9uVmFsdWUoXG4gICAgICAgICAgc291cmNlLFxuICAgICAgICAgIHRoaXMub3B0aW9ucy5mYWxsYmFja0xvY2FsZSxcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGZhbGxiYWNrTG9vc2VWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbGxiYWNrTG9vc2VWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICog5a695p2+5qih5byP5LiL6I635Y+W57+76K+R5YC8XG4gICAqL1xuICBwcml2YXRlIGdldExvb3NlVHJhbnNsYXRpb25WYWx1ZShcbiAgICBzb3VyY2U6IFRyYW5zbGF0aW9uLFxuICAgIGxvY2FsZTogc3RyaW5nLFxuICApOiBUcmFuc2xhdGlvblZhbHVlIHtcbiAgICBjb25zdCBsb29zZUxvY2FsZSA9IHRoaXMuZXh0cmFjdExvb3NlTG9jYWxlKGxvY2FsZSk7XG5cbiAgICBpZiAobG9jYWxlID09PSBsb29zZUxvY2FsZSkge1xuICAgICAgLy8g5a+75om+5Yy56YWN55qE5a695p2+6K+t6KiAXG4gICAgICBjb25zdCBtYXRjaGVkRW50cnkgPSBPYmplY3QuZW50cmllcyhzb3VyY2UpLmZpbmQoXG4gICAgICAgIChba2V5XSkgPT4gbG9vc2VMb2NhbGUgPT09IHRoaXMuZXh0cmFjdExvb3NlTG9jYWxlKGtleSksXG4gICAgICApO1xuICAgICAgcmV0dXJuIG1hdGNoZWRFbnRyeT8uWzFdO1xuICAgIH1cblxuICAgIC8vIOajgOafpeWuveadvuivreiogOmUruaYr+WQpuWtmOWcqFxuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBsb29zZUxvY2FsZSkpIHtcbiAgICAgIHJldHVybiBzb3VyY2VbbG9vc2VMb2NhbGVdO1xuICAgIH1cblxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICog5o+Q5Y+W5a695p2+6K+t6KiA5Luj56CB77yI5aaC77yaemgtQ04gLT4gemjvvIlcbiAgICovXG4gIHByaXZhdGUgZXh0cmFjdExvb3NlTG9jYWxlKGxvY2FsZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gaGVhZChsb2NhbGUuc3BsaXQoL1tfLV0vKSkgfHwgbG9jYWxlO1xuICB9XG5cbiAgLyoqXG4gICAqIOmqjOivgee/u+ivkeWAvO+8iOW8gOWPkeaooeW8j++8iVxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZVRyYW5zbGF0aW9uVmFsdWUoXG4gICAgdmFsdWU6IGFueSxcbiAgICBsb2NhbGU6IHN0cmluZyxcbiAgICBrZXk6IHN0cmluZyxcbiAgKTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgaXNEZXZNb2RlKCkgJiZcbiAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiZcbiAgICAgIHR5cGVvZiBnZXQodmFsdWUsIFN5bWJvbC50b1ByaW1pdGl2ZSkgIT09ICdmdW5jdGlvbidcbiAgICApIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYFRoZSB0cmFuc2xhdGlvbiBmb3IgbG9jYWxlOiBcXGAke2xvY2FsZX1cXGAgYW5kIGtleTpcXGAke2tleX1cXGAgaXMgYW4gb2JqZWN0LCB3aGljaCBjb3VsZCBiZSB1bmV4cGVjdGVkYCxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIOavlOi+g+e/u+ivkemUru+8iOW8gOWPkeaooeW8j+S4i+ajgOafpemHjeWkje+8iVxuICAgKi9cbiAgcHJpdmF0ZSBjb21wYXJlVHJhbnNsYXRpb25LZXlzKFxuICAgIGxvY2FsZTogc3RyaW5nLFxuICAgIHRyYW5zbGF0aW9uOiBUcmFuc2xhdGlvbixcbiAgICBwcmV2VHJhbnNsYXRpb246IFRyYW5zbGF0aW9uLFxuICAgIHBhdGg6IHN0cmluZ1tdID0gW10sXG4gICk6IHZvaWQge1xuICAgIGlmICh0cmFuc2xhdGlvbiA9PSBudWxsIHx8IHByZXZUcmFuc2xhdGlvbiA9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgT2JqZWN0LmVudHJpZXModHJhbnNsYXRpb24pLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocHJldlRyYW5zbGF0aW9uLCBrZXkpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcHJldlZhbHVlID0gcHJldlRyYW5zbGF0aW9uW2tleV07XG4gICAgICBjb25zdCB2YWx1ZUlzUGxhaW5PYmplY3QgPSBpc1BsYWluT2JqZWN0KHZhbHVlKTtcbiAgICAgIGNvbnN0IHByZXZWYWx1ZUlzUGxhaW5PYmplY3QgPSBpc1BsYWluT2JqZWN0KHByZXZWYWx1ZSk7XG5cbiAgICAgIGlmICh2YWx1ZUlzUGxhaW5PYmplY3QgJiYgcHJldlZhbHVlSXNQbGFpbk9iamVjdCkge1xuICAgICAgICB0aGlzLmNvbXBhcmVUcmFuc2xhdGlvbktleXMoXG4gICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgIHZhbHVlIGFzIFRyYW5zbGF0aW9uLFxuICAgICAgICAgIHByZXZWYWx1ZSBhcyBUcmFuc2xhdGlvbixcbiAgICAgICAgICBbLi4ucGF0aCwga2V5XSxcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXZhbHVlSXNQbGFpbk9iamVjdCAmJiAhcHJldlZhbHVlSXNQbGFpbk9iamVjdCkge1xuICAgICAgICBjb25zdCBvdXRwdXRQYXRoID0gWy4uLnBhdGgsIGtleV0uam9pbignIC0+ICcpO1xuICAgICAgICBpZiAodmFsdWUgPT09IHByZXZWYWx1ZSkge1xuICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIGBUaGUgY3VzdG9taXplZCB0cmFuc2xhdGlvbiBmb3IgbG9jYWxlOiBcXGAke2xvY2FsZX1cXGAgYW5kIHBhdGg6IFxcYCR7b3V0cHV0UGF0aH1cXGAgaXMgZHVwbGljYXRlZCB3aXRoIHRoZSBvdGhlciB0cmFuc2xhdGlvbiwgcGxlYXNlIHJlbW92ZSBpdCBpbiB5b3VyIHRyYW5zbGF0aW9uIGZpbGUuYCxcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIGBUd28ga2V5cyB0aGF0IHRoZSBsb2NhbGUgaXMgXFxgJHtsb2NhbGV9XFxgIGFuZCB0aGUgcGF0aCBpcyBcXGAke291dHB1dFBhdGh9XFxgIGFyZSBzYW1lLCBidXQgdGhlaXIgdmFsdWVzIGFyZSBub3QgZXF1YWwsIHBsZWFzZSByZW1vdmUgb25lIG9mIHRoZW0gb3IgY2hhbmdlIG9uZSBvZiB0aGUga2V5cy5gLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -109,5 +109,5 @@ export class LegendDropdownComponent {
109
109
  }], isCard: [{
110
110
  type: Input
111
111
  }] }); })();
112
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(LegendDropdownComponent, { className: "LegendDropdownComponent", filePath: "view-chart/custom-template/dropdown-legend.ts", lineNumber: 56 }); })();
112
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(LegendDropdownComponent, { className: "LegendDropdownComponent" }); })();
113
113
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tbGVnZW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL3ZpZXctY2hhcnQvY3VzdG9tLXRlbXBsYXRlL2Ryb3Bkb3duLWxlZ2VuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxLQUFLLEVBQ0wsV0FBVyxHQUNaLE1BQU0sZUFBZSxDQUFDOzs7OztJQU9uQiw2QkFBaUQ7SUFDL0MsOEJBU1k7Ozs7O0lBTlYsY0FBbUM7SUFDbkMsQUFEQSxvREFBbUMsNkVBQ0Q7OztJQVFwQyxpQ0FXQztJQUNDLDhCQUE4QztJQUNoRCxpQkFBUzs7OztJQVBQLEFBREEsQUFIQSw2QkFBZSx1Q0FHb0IsNkVBQ0Q7OztJQVdwQyw2QkFBa0U7SUFDaEUsOEJBQTZCO0lBQzNCLDJCQUFpRTtJQUNuRSxpQkFBTTs7OztJQURVLGVBQW1DO0lBQW5DLHdEQUFtQzs7O0lBSW5ELCtCQUFzQjtJQUFBLFlBQTJCOztJQUFBLGlCQUFPOztJQUFsQyxjQUEyQjtJQUEzQixxREFBMkI7OztJQURuRCxBQUxBLHdHQUFrRSwwSEFLckM7Ozs7SUFMZ0IsQUFBOUIsMkRBQThCLCtCQUFtQjs7QUFhdEUsTUFBTSxPQUFPLHVCQUF1Qjt3RkFBdkIsdUJBQXVCO29FQUF2Qix1QkFBdUI7WUFkaEMsQUFqQkEsQUFaQSwwRkFBaUQsNEdBWXRCLDRHQWlCUTs7O1lBN0JMLEFBQWYsa0NBQWUsNkJBQWlCOzs7aUZBMkN0Qyx1QkFBdUI7Y0E5Q25DLFNBQVM7MkJBQ0UscUJBQXFCLFlBQ3JCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0NULG1CQUVnQix1QkFBdUIsQ0FBQyxNQUFNO2dCQUd0QyxJQUFJO2tCQUFaLEtBQUs7WUFDRyxjQUFjO2tCQUF0QixLQUFLO1lBQ0csTUFBTTtrQkFBZCxLQUFLO1lBQ0csTUFBTTtrQkFBZCxLQUFLOztrRkFKSyx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgVGVtcGxhdGVSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBMZWdlbmRJdGVtIH0gZnJvbSAnLi4vLi4vY2hhcnQvY29tbW9uL3B1YmxpYy1hcGknO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhY2wtbGVnZW5kLWRyb3Bkb3duJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzQ2FyZDsgZWxzZSBlbHNlVGVtcGxhdGVcIj5cbiAgICAgIDxhdWktaWNvblxuICAgICAgICBjbGFzcz1cImJ0blwiXG4gICAgICAgIGljb249XCJwcm9kOmNoYXJ0X2xlZ2VuZFwiXG4gICAgICAgIFthdWlUb29sdGlwXT1cImRyb3Bkb3duSXRlbVRlbXBsYXRlXCJcbiAgICAgICAgW2F1aVRvb2x0aXBDb250ZXh0XT1cInsgZGF0YTogW10gfVwiXG4gICAgICAgIGF1aVRvb2x0aXBUeXBlPVwiaW5mb1wiXG4gICAgICAgIGF1aVRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbSBlbmRcIlxuICAgICAgICBhdWlUb29sdGlwVHJpZ2dlcj1cImNsaWNrXCJcbiAgICAgICAgYXVpVG9vbHRpcEFjdGl2ZT1cImxlZ2VuZEFjdGl2ZVwiXG4gICAgICA+PC9hdWktaWNvbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI2Vsc2VUZW1wbGF0ZT5cbiAgICAgIDxidXR0b25cbiAgICAgICAgYXVpLWJ1dHRvblxuICAgICAgICBbc3F1YXJlXT1cInRydWVcIlxuICAgICAgICBjbGFzcz1cImJ0blwiXG4gICAgICAgIGljb249XCJwcm9kOmNoYXJ0X2xlZ2VuZFwiXG4gICAgICAgIFthdWlUb29sdGlwXT1cImRyb3Bkb3duSXRlbVRlbXBsYXRlXCJcbiAgICAgICAgW2F1aVRvb2x0aXBDb250ZXh0XT1cInsgZGF0YTogW10gfVwiXG4gICAgICAgIGF1aVRvb2x0aXBUeXBlPVwiaW5mb1wiXG4gICAgICAgIGF1aVRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbSBlbmRcIlxuICAgICAgICBhdWlUb29sdGlwVHJpZ2dlcj1cImNsaWNrXCJcbiAgICAgICAgYXVpVG9vbHRpcEFjdGl2ZT1cImxlZ2VuZEFjdGl2ZVwiXG4gICAgICA+XG4gICAgICAgIDxhdWktaWNvbiBpY29uPVwicHJvZDpjaGFydF9sZWdlbmRcIj48L2F1aS1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxuZy10ZW1wbGF0ZSAjZHJvcGRvd25JdGVtVGVtcGxhdGU+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YS5sZW5ndGggJiYgIW5vRGF0YTsgZWxzZSBub0RhdGFUZW1wbGF0ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibGVnZW5kLXZlcnRpY2FsXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJsZWdlbmRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICNub0RhdGFUZW1wbGF0ZT5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJuby1kYXRhXCI+e3sgJ25vX2RhdGEnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLXRlbXBsYXRlPlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9kcm9wZG93bi1sZWdlbmQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTGVnZW5kRHJvcGRvd25Db21wb25lbnQge1xuICBASW5wdXQoKSBkYXRhOiBMZWdlbmRJdGVtW107XG4gIEBJbnB1dCgpIGxlZ2VuZFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcbiAgQElucHV0KCkgbm9EYXRhOiBib29sZWFuO1xuICBASW5wdXQoKSBpc0NhcmQ6IGJvb2xlYW47XG59XG4iXX0=
@@ -254,5 +254,5 @@ export class LegendComponent {
254
254
  }], changeLegend: [{
255
255
  type: Output
256
256
  }] }); })();
257
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(LegendComponent, { className: "LegendComponent", filePath: "view-chart/legend/legend.component.ts", lineNumber: 37 }); })();
257
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(LegendComponent, { className: "LegendComponent" }); })();
258
258
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVnZW5kLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy92aWV3LWNoYXJ0L2xlZ2VuZC9sZWdlbmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL3ZpZXctY2hhcnQvbGVnZW5kL2xlZ2VuZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsSUFBSSxFQUdKLGFBQWEsRUFDYixVQUFVLEdBR1gsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMzQyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBRU4sV0FBVyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7Ozs7O0lDdEJoQyw4QkFHQztJQUNDLDJCQUdnQjtJQUNsQixpQkFBTTs7O0lBSEYsY0FBa0M7SUFDbEMsQUFEQSx1REFBa0Msd0RBQ2M7OztJQVFsRCw2QkFBNkM7SUFDM0MsMkJBQWlFOzs7OztJQUFuRCxjQUFtQztJQUFuQyxvREFBbUM7OztJQUdqRCw2QkFBb0U7SUFDbEUsMkJBR2dCOzs7O0lBRmQsY0FBbUM7SUFDbkMsQUFEQSxrREFBbUMsNkVBQ21COzs7SUFLdEQsMENBUXNCOzs7O0lBRnBCLEFBREEsQUFEQSxBQURBLDJDQUFzQix5QkFDTCxxQ0FDZ0Isa0NBQ1A7OztJQVA5QixpQ0FBb0M7SUFDbEMsbUlBT0M7Ozs7SUFSVywwQ0FBcUI7SUFHOUIsY0FBd0I7SUFBeEIseUNBQXdCOzs7SUFKL0IsQUFOQSxzR0FBb0Usd0hBTXRDOzs7O0lBTmdCLEFBQS9CLDREQUErQixnQ0FBb0I7OztJQVJ0RSw4QkFHQztJQUlD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QUE5QkEsQUFWQSxnRUFHQyxtREFVQSxtREE4QkEsb0dBSTRCOztZQTdDMUIsMkRBQWtDO1lBVWxDLGNBQWlCO1lBQWpCLHNDQUFpQjtZQThCakIsY0FBbUM7WUFBbkMsNERBQW1DOzs7aUZETnpCLGVBQWU7Y0FOM0IsU0FBUzsyQkFDRSxpQkFBaUIsbUJBR1YsdUJBQXVCLENBQUMsTUFBTTtrREFHdEMsTUFBTTtrQkFBZCxLQUFLO1lBRUcsUUFBUTtrQkFBaEIsS0FBSztZQUVHLElBQUk7a0JBQVosS0FBSztZQUVHLFdBQVc7a0JBQW5CLEtBQUs7WUFFRyxhQUFhO2tCQUFyQixLQUFLO1lBRUcsb0JBQW9CO2tCQUE1QixLQUFLO1lBRUcsY0FBYztrQkFBdEIsS0FBSztZQUVHLFVBQVU7a0JBQWxCLEtBQUs7WUFFRyxrQkFBa0I7a0JBQTFCLEtBQUs7WUFFRyxhQUFhO2tCQUFyQixLQUFLO1lBRUcsS0FBSztrQkFBYixLQUFLO1lBRUksWUFBWTtrQkFBckIsTUFBTTs7a0ZBdkJJLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBWaWV3LFxuICBMZWdlbmQgYXMgQ2hhcnRMZWdlbmQsXG4gIExlZ2VuZEl0ZW0sXG4gIExFR0VORF9FVkVOVFMsXG4gIFZJRVdfSE9PS1MsXG4gIENoYXJ0RGF0YSxcbiAgRGF0YSxcbn0gZnJvbSAnQGFsYXVkYS9jaGFydCc7XG5pbXBvcnQgeyBpc1RlbXBsYXRlUmVmIH0gZnJvbSAnQGFsYXVkYS91aSc7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZ2V0IH0gZnJvbSAnbG9kYXNoLWVzJztcblxuaW1wb3J0IHsgU3RyaW5nTWFwIH0gZnJvbSAnLi4vLi4vY29yZS9wdWJsaWMtYXBpJztcblxuZXhwb3J0IGNsYXNzIExlZ2VuZFBheWxvYWQge1xuICBsZWdlbmQ6IExlZ2VuZEl0ZW07XG4gIHNvdXJjZTogTGVnZW5kSXRlbVtdO1xufVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWNsLWJhc2UtbGVnZW5kJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xlZ2VuZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2xlZ2VuZC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTGVnZW5kQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBzeW1ib2w6ICdjaXJjbGUnIHwgJ3NxdWFyZScgfCAnbGluZScgPSAnbGluZSc7XG5cbiAgQElucHV0KCkgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+IHwgc3RyaW5nIHwgJ2Ryb3Bkb3duJztcblxuICBASW5wdXQoKSBtb2RlOiAnY2FyZCcgfCAnZGVmYXVsdCcgPSAnZGVmYXVsdCc7XG5cbiAgQElucHV0KCkgdHJhbnNsYXRpb24gPSB0cnVlO1xuXG4gIEBJbnB1dCgpIGxlZnRPcGVyYXRpb246IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIEBJbnB1dCgpIGxlZnRPcGVyYXRpb25Db250ZXh0OiBTdHJpbmdNYXA7XG5cbiAgQElucHV0KCkgcmlnaHRPcGVyYXRpb246IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIEBJbnB1dCgpIGhpZGVMZWdlbmQ6IGJvb2xlYW47XG5cbiAgQElucHV0KCkgc2VsZWN0QWxsT3BlcmF0aW9uID0gZmFsc2U7XG5cbiAgQElucHV0KCkgc2VsZWN0QWxsTmFtZTogc3RyaW5nO1xuXG4gIEBJbnB1dCgpIGNoYXJ0OiBWaWV3O1xuXG4gIEBPdXRwdXQoKSBjaGFuZ2VMZWdlbmQgPSBuZXcgRXZlbnRFbWl0dGVyPExlZ2VuZEl0ZW1bXT4oKTtcblxuICBnZXQgbm9EYXRhKCkge1xuICAgIHJldHVybiB0aGlzLmxlZ2VuZEVudHJpZXM/Lmxlbmd0aCA9PT0gMCB8fCAhdGhpcy5sZWdlbmRFbnRyaWVzO1xuICB9XG5cbiAgZ2V0IGxlZ2VuZEluc3RhbmNlKCk6IENoYXJ0TGVnZW5kIHtcbiAgICByZXR1cm4gdGhpcy5jaGFydD8uZ2V0Q29udHJvbGxlcignbGVnZW5kJyk7XG4gIH1cblxuICBsZWdlbmRFbnRyaWVzOiBMZWdlbmRJdGVtW10gPSBbXTtcblxuICBpc1RlbXBsYXRlUmVmID0gaXNUZW1wbGF0ZVJlZjtcblxuICBhbGxTZWxlY3RlZCA9IHRydWU7XG5cbiAgZ2V0IHN5bWJvbE5hbWUoKSB7XG4gICAgcmV0dXJuIGBzeW1ib2wtJHt0aGlzLnN5bWJvbH1gO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIG5nT25DaGFuZ2VzKHsgY2hhcnQgfTogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFydC5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMubGVnZW5kRW50cmllcyA9IHRoaXMubGVnZW5kSW5zdGFuY2U/LmxlZ2VuZEl0ZW1zO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubGVnZW5kRW50cmllcyA9IHRoaXMubGVnZW5kSW5zdGFuY2U/LmxlZ2VuZEl0ZW1zO1xuICAgIHRoaXMuY2hhcnQ/Lm9uKFZJRVdfSE9PS1MuU0VUX0RBVEEsIChkYXRhOiBDaGFydERhdGFbXSkgPT4ge1xuICAgICAgY29uc3QgaXNCYXIgPSB0aGlzLmNoYXJ0Lm9wdGlvbnMudHlwZSA9PT0gJ2Jhcic7XG4gICAgICBjb25zdCB2YWx1ZXMgPSBkYXRhLmZsYXRNYXAoaXRlbSA9PiBpdGVtLnZhbHVlcykgYXMgQXJyYXk8XG4gICAgICAgIERhdGE8eyB4OiBzdHJpbmc7IGNvbG9yOiBzdHJpbmc7IG5hbWU6IHN0cmluZzsgeTogbnVtYmVyIH0+XG4gICAgICA+O1xuICAgICAgdGhpcy5sZWdlbmRFbnRyaWVzID0gaXNCYXJcbiAgICAgICAgPyB2YWx1ZXMucmVkdWNlPEFycmF5PERhdGE8TGVnZW5kSXRlbT4+PihcbiAgICAgICAgICAgIChwcmUsIGN1cikgPT4gW1xuICAgICAgICAgICAgICAuLi5wcmUsXG4gICAgICAgICAgICAgIC4uLihwcmUuc29tZShkID0+IGQubmFtZSA9PT0gY3VyLngpXG4gICAgICAgICAgICAgICAgPyBbXVxuICAgICAgICAgICAgICAgIDogW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgbmFtZTogY3VyLngsXG4gICAgICAgICAgICAgICAgICAgICAgY29sb3I6IGN1ci5jb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICBhY3RpdmF0ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICBob3ZlcjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGN1ci55LFxuICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZTogY3VyLFxuICAgICAgICAgICAgICAgICAgICAgIHVuaXQ6IGdldChjdXIsICd1bml0JyksXG4gICAgICAgICAgICAgICAgICAgICAgLi4uY3VyLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW10sXG4gICAgICAgICAgKVxuICAgICAgICA6IGRhdGEucmVkdWNlKFxuICAgICAgICAgICAgKGFjYywgZCkgPT4gW1xuICAgICAgICAgICAgICAuLi5hY2MsXG4gICAgICAgICAgICAgIC4uLihkLm5hbWVcbiAgICAgICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGQubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogZC5jb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICBhY3RpdmF0ZTogIXRoaXMubGVnZW5kSW5zdGFuY2U/LmRpc2FibGVkTGVnZW5kLmhhcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGQubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgIGhvdmVyOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZC52YWx1ZXM/LltkLnZhbHVlcz8ubGVuZ3RoIC0gMV0/LnksXG4gICAgICAgICAgICAgICAgICAgICAgc291cmNlOiBkLFxuICAgICAgICAgICAgICAgICAgICAgIHVuaXQ6IGdldChkLCAndW5pdCcpLFxuICAgICAgICAgICAgICAgICAgICAgIC4uLmQsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgOiBbXSksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW10sXG4gICAgICAgICAgKTtcbiAgICAgIGlmICh0aGlzLmxlZ2VuZEluc3RhbmNlPy5kaXNhYmxlZExlZ2VuZC5zaXplKSB7XG4gICAgICAgIHRoaXMuY2hhbmdlTGVnZW5kLm5leHQodGhpcy5sZWdlbmRFbnRyaWVzKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5jaGFydD8ub24oTEVHRU5EX0VWRU5UUy5DTElDSywgKGRhdGE6IExlZ2VuZFBheWxvYWQpID0+IHtcbiAgICAgIGNvbnN0IHsgbGVnZW5kLCBzb3VyY2UgfSA9IGRhdGE7XG4gICAgICBjb25zdCBsZWdlbmRJdGVtID0gdGhpcy5sZWdlbmRFbnRyaWVzLmZpbmQoXG4gICAgICAgIGl0ZW0gPT4gaXRlbS5uYW1lID09PSBsZWdlbmQubmFtZSxcbiAgICAgICk7XG4gICAgICBsZWdlbmRJdGVtLmFjdGl2YXRlID0gIWxlZ2VuZC5hY3RpdmF0ZTtcbiAgICAgIHRoaXMuY2hhbmdlTGVnZW5kLm5leHQoc291cmNlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHNlbGVjdGVkKGxlZ2VuZDogTGVnZW5kSXRlbSkge1xuICAgIHRoaXMubGVnZW5kSW5zdGFuY2UuY2hhbmdlTGVnZW5kKGxlZ2VuZCk7XG4gIH1cblxuICBhbGxTZWxlY3Qoc2VsZWN0OiBib29sZWFuKSB7XG4gICAgaWYgKHNlbGVjdCkge1xuICAgICAgdGhpcy5sZWdlbmRJbnN0YW5jZS5sZWdlbmRTZWxlY3RBbGwoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sZWdlbmRJbnN0YW5jZS5sZWdlbmRVbnNlbGVjdEFsbCgpO1xuICAgIH1cbiAgICB0aGlzLmxlZ2VuZEluc3RhbmNlLmNoYW5nZUxlZ2VuZCh0aGlzLmxlZ2VuZEVudHJpZXNbMF0pO1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwib3BlcmF0aW9uXCJcbiAgKm5nSWY9XCJpc1RlbXBsYXRlUmVmKGxlZnRPcGVyYXRpb24pXCJcbj5cbiAgPG5nLWNvbnRhaW5lclxuICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxlZnRPcGVyYXRpb25cIlxuICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJsZWZ0T3BlcmF0aW9uQ29udGV4dFwiXG4gID48L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48ZGl2XG4gIGNsYXNzPVwibGVnZW5kLXdyYXAgb3BlcmF0aW9uXCJcbiAgKm5nSWY9XCIhaGlkZUxlZ2VuZFwiXG4+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhdGVtcGxhdGU7IGVsc2UgY3VzdG9tXCI+XG4gICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJsZWdlbmRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLXRlbXBsYXRlICNjdXN0b20+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzVGVtcGxhdGVSZWYodGVtcGxhdGUpOyBlbHNlIGJ1aWx0aW5UZW1wbGF0ZVwiPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCIkYW55KHRlbXBsYXRlKVwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGNvbnRleHQ6IGxlZ2VuZEVudHJpZXMgfVwiXG4gICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNidWlsdGluVGVtcGxhdGU+XG4gICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJ0ZW1wbGF0ZVwiPlxuICAgICAgICA8YWNsLWxlZ2VuZC1kcm9wZG93blxuICAgICAgICAgIGNsYXNzPVwibGVnZW5kLXZlcnRpY2FsXCJcbiAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ2Ryb3Bkb3duJ1wiXG4gICAgICAgICAgW2RhdGFdPVwibGVnZW5kRW50cmllc1wiXG4gICAgICAgICAgW25vRGF0YV09XCJub0RhdGFcIlxuICAgICAgICAgIFtsZWdlbmRUZW1wbGF0ZV09XCJsZWdlbmRUZW1wbGF0ZVwiXG4gICAgICAgICAgW2lzQ2FyZF09XCJtb2RlID09PSAnY2FyZCdcIlxuICAgICAgICA+XG4gICAgICAgIDwvYWNsLWxlZ2VuZC1kcm9wZG93bj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cblxuPGRpdlxuICBjbGFzcz1cIm9wZXJhdGlvblwiXG4gICpuZ0lmPVwiaXNUZW1wbGF0ZVJlZihyaWdodE9wZXJhdGlvbilcIlxuPlxuICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInJpZ2h0T3BlcmF0aW9uXCI+PC9uZy1jb250YWluZXI+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNsZWdlbmRUZW1wbGF0ZT5cbiAgPHVsIGNsYXNzPVwibGVnZW5kLWxhYmVsc1wiPlxuICAgIDxsaVxuICAgICAgY2xhc3M9XCJzZWxlY3QtYWxsXCJcbiAgICAgICpuZ0lmPVwiIW5vRGF0YSAmJiBzZWxlY3RBbGxPcGVyYXRpb24gJiYgdGVtcGxhdGUgPT09ICdkcm9wZG93bidcIlxuICAgID5cbiAgICAgIDxhdWktY2hlY2tib3hcbiAgICAgICAgWyhuZ01vZGVsKV09XCJhbGxTZWxlY3RlZFwiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImFsbFNlbGVjdCgkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAge3sgc2VsZWN0QWxsTmFtZSB8fCAoJ3NlbGVjdF9hbGwnIHwgdHJhbnNsYXRlKSB9fVxuICAgICAgPC9hdWktY2hlY2tib3g+XG4gICAgPC9saT5cbiAgICA8bGlcbiAgICAgIGNsYXNzPVwibGVnZW5kLWxhYmVsXCJcbiAgICAgIFtjbGFzcy5kaXNhYmxlXT1cIiFsZWdlbmQuYWN0aXZhdGUgfHwgbm9EYXRhXCJcbiAgICAgIFtjbGFzcy5mb3JiaWRdPVwibm9EYXRhXCJcbiAgICAgIFt0aXRsZV09XCIobGVnZW5kLmFjdGl2YXRlID8gJ2NsaWNrX2hpZGUnIDogJ2NsaWNrX3Nob3cnKSB8IHRyYW5zbGF0ZVwiXG4gICAgICAqbmdGb3I9XCJsZXQgbGVnZW5kIG9mIGxlZ2VuZEVudHJpZXNcIlxuICAgICAgKGNsaWNrKT1cInNlbGVjdGVkKGxlZ2VuZClcIlxuICAgID5cbiAgICAgIDxzcGFuXG4gICAgICAgIFtuZ0NsYXNzXT1cIltzeW1ib2xOYW1lLCAnbGFiZWwtc3ltYm9sJ11cIlxuICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJsZWdlbmQuY29sb3JcIlxuICAgICAgPlxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbC1uYW1lXCI+e3tcbiAgICAgICAgdHJhbnNsYXRpb24gPyAobGVnZW5kLm5hbWUgfCB0cmFuc2xhdGUpIDogbGVnZW5kLm5hbWVcbiAgICAgIH19PC9zcGFuPlxuICAgIDwvbGk+XG4gIDwvdWw+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -828,5 +828,5 @@ __decorate([
828
828
  }], refreshEvent: [{
829
829
  type: Output
830
830
  }] }); })();
831
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ViewChartComponent, { className: "ViewChartComponent", filePath: "view-chart/view-chart.component.ts", lineNumber: 86 }); })();
831
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ViewChartComponent, { className: "ViewChartComponent" }); })();
832
832
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy1jaGFydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvdmlldy1jaGFydC92aWV3LWNoYXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy92aWV3LWNoYXJ0L3ZpZXctY2hhcnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFLTCxLQUFLLEVBTUwsV0FBVyxFQUNYLFNBQVMsR0FJVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzNDLE9BQU8sRUFDTCxlQUFlLEVBQ2YsZUFBZSxFQUNmLGNBQWMsR0FDZixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFFTCxjQUFjLEVBQ2QsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1Qsd0JBQXdCLEVBRXhCLFVBQVUsRUFFVixZQUFZLEVBQ1osUUFBUSxFQUNSLEtBQUssRUFHTCxNQUFNLEVBRU4sV0FBVyxFQUNYLFNBQVMsRUFDVCxnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFzQyxVQUFVLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDcEUsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFDTCxlQUFlLEVBQ2YsR0FBRyxFQUNILFVBQVUsRUFDVixPQUFPLEVBQ1AsU0FBUyxFQUNULEdBQUcsRUFDSCxhQUFhLEVBQ2IsU0FBUyxHQUNWLE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxFQUtMLGdCQUFnQixFQUNoQixlQUFlLEVBQ2YsV0FBVyxFQUNYLFVBQVUsRUFFVixnQkFBZ0IsRUFDaEIsU0FBUyxHQUVWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7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QUs7WUFDRyxnQkFBZ0I7a0JBQXhCLEtBQUs7WUFNTixXQUFXLE1BRUYsVUFBVTtrQkFBbEIsS0FBSztZQUdOLFdBQVcsTUFHWCxZQUFZLE1BRUYsWUFBWTtrQkFBckIsTUFBTTtZQUVHLGNBQWM7a0JBQXZCLE1BQU07WUFFRyxZQUFZO2tCQUFyQixNQUFNOztrRkF0Tkksa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQUNoYXJ0LFxuICBBcmVhU2VyaWVzT3B0aW9uLFxuICBCYXJDb2x1bW5QYXJhbXMsXG4gIEJhclNlcmllc09wdGlvbixcbiAgQ2hhcnQsXG4gIENoYXJ0RGF0YSxcbiAgTGluZVNlcmllc09wdGlvbixcbiAgVmlld09wdGlvbnMsXG4gIFBlcmNlbnRhZ2UsXG4gIFBpZVNlcmllc09wdGlvbixcbiAgUkVDVF9FVkVOVFMsXG4gIFNjYWxlVHlwZSxcbiAgVG9vbHRpcENvbnRleHQsXG4gIFRvb2x0aXBDb250ZXh0SXRlbSxcbiAgVmlldyxcbn0gZnJvbSAnQGFsYXVkYS9jaGFydCc7XG5pbXBvcnQgeyBpc1RlbXBsYXRlUmVmIH0gZnJvbSAnQGFsYXVkYS91aSc7XG5pbXBvcnQge1xuICBDb21wb25lbnRQb3J0YWwsXG4gIERvbVBvcnRhbE91dGxldCxcbiAgVGVtcGxhdGVQb3J0YWwsXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQXBwbGljYXRpb25SZWYsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gIENvbXBvbmVudFJlZixcbiAgRWxlbWVudFJlZixcbiAgRW1iZWRkZWRWaWV3UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDdXJ2ZUZhY3RvcnksIEN1cnZlRmFjdG9yeUxpbmVPbmx5LCB0aW1lRm9ybWF0IH0gZnJvbSAnZDMnO1xuaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgbWFwLFxuICBPYnNlcnZhYmxlLFxuICBTdWJqZWN0LFxuICB0YWtlVW50aWwsXG4gIHRhcCxcbiAgY29tYmluZUxhdGVzdCxcbiAgc3RhcnRXaXRoLFxufSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgQXJlYVBvc2l0aW9uLFxuICBDaGFydERhdGFJdGVtLFxuICBDaGFydFN0YXR1cyxcbiAgQ29udGV4dEl0ZW0sXG4gIGhhbmRsZURhdGVGb3JtYXQsXG4gIE9ic2VydmFibGVJbnB1dCxcbiAgcG9pbnRGb3JtYXQsXG4gIHB1Ymxpc2hSZWYsXG4gIFN0cmluZ01hcCxcbiAgVHJhbnNsYXRlU2VydmljZSxcbiAgVmFsdWVIb29rLFxuICBYUGxvdExpbmVzLFxufSBmcm9tICcuLi9wdWJsaWMtYXBpJztcblxuaW1wb3J0IHsgTGVnZW5kQ29tcG9uZW50IH0gZnJvbSAnLi9sZWdlbmQvbGVnZW5kLmNvbXBvbmVudCc7XG5cbmludGVyZmFjZSBab29tUGFyYW1zIHtcbiAgeDogbnVtYmVyO1xuICB2YWx1ZTogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9O1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhY2wtdmlldy1jaGFydCcsXG4gIHRlbXBsYXRlVXJsOiAnLi92aWV3LWNoYXJ0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdmlldy1jaGFydC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgVmlld0NoYXJ0Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBiYWNrZ3JvdW5kQ29sb3I6IHN0cmluZztcblxuICBASW5wdXQoKSBoaWRlSGVhZGVyOiBib29sZWFuO1xuXG4gIEBWaWV3Q2hpbGQoJ2NoYXJ0Q29udGFpbmVyJykgY2hhcnRDb250YWluZXI6IEVsZW1lbnRSZWY7XG5cbiAgQFZpZXdDaGlsZCgndGl0bGVDb250YWluZXInKSB0aXRsZUNvbnRhaW5lcjogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgQFZpZXdDaGlsZCgndG9vbHRpcEl0ZW1WaXJ0dWFsJykgdG9vbHRpcEl0ZW1WaXJ0dWFsOiBFbGVtZW50UmVmO1xuXG4gIEBWaWV3Q2hpbGQoJ3Rvb2x0aXBUaXRsZVZpcnR1YWwnKSB0b29sdGlwVGl0bGVWaXJ0dWFsOiBFbGVtZW50UmVmO1xuXG4gIEBWaWV3Q2hpbGQoJ3Rvb2x0aXBOYW1lVmlydHVhbCcpIHRvb2x0aXBOYW1lVmlydHVhbDogRWxlbWVudFJlZjtcblxuICBAVmlld0NoaWxkKCdwaWVMYWJlbENvbnRhaW5lcicpIHBpZUxhYmVsQ29udGFpbmVyOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICBASW5wdXQoKSBtb2RlOiAnY2FyZCcgfCAnZGVmYXVsdCcgPSAnZGVmYXVsdCc7XG5cbiAgQElucHV0KCkgY3VzdG9tTm9EYXRhVGl0bGU6IFRlbXBsYXRlUmVmPHVua25vd24+IHwgc3RyaW5nO1xuXG4gIEBJbnB1dCgpIGN1c3RvbUVycm9yQ29udGFpbmVyOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICBASW5wdXQoKSBtYXJnaW5MZWZ0OiBudW1iZXI7XG5cbiAgQElucHV0KCkgZ3JpZE9mZnNldFRvcCA9IDA7XG5cbiAgQElucHV0KCkgcm90YXRlZDogYm9vbGVhbjtcblxuICAvLyBiYXNlXG4gIEBJbnB1dCgpIGNoYXJ0VHlwZTogJ2xpbmUnIHwgJ2FyZWEnIHwgJ2JhcicgfCAncGllJyB8ICdzY2F0dGVyJyA9ICdhcmVhJztcblxuICBASW5wdXQoKSBzZXJpZXM6IENoYXJ0RGF0YVtdO1xuICBAT2JzZXJ2YWJsZUlucHV0KClcbiAgc2VyaWVzJCE6IE9ic2VydmFibGU8Q2hhcnREYXRhW10+O1xuXG4gIEBJbnB1dCgpIHhBY2Nlc3NvciA9IChkOiBDaGFydERhdGFJdGVtKSA9PiBkLng7XG5cbiAgQElucHV0KCkgeUFjY2Vzc29yID0gKGQ6IENoYXJ0RGF0YUl0ZW0pID0+IGQueTtcblxuICBASW5wdXQoKSB1bml0OiBzdHJpbmc7XG4gIEBPYnNlcnZhYmxlSW5wdXQoKVxuICB1bml0JCE6IE9ic2VydmFibGU8c3RyaW5nPjtcblxuICBAVmFsdWVIb29rKGZ1bmN0aW9uIChcbiAgICB0aGlzOiBWaWV3Q2hhcnRDb21wb25lbnQsXG4gICAgY29udGV4dENhbGxiYWNrRnVuY3Rpb246IChjb250ZXh0OiBWaWV3KSA9PiB2b2lkLFxuICApIHtcbiAgICBpZiAoY29udGV4dENhbGxiYWNrRnVuY3Rpb24gJiYgIXRoaXMub3B0aW9ucz8uY29udGV4dENhbGxiYWNrRnVuY3Rpb24pIHtcbiAgICAgIHRoaXMuY2hhcnQ/LnNldE9wdGlvbnMoeyBjb250ZXh0Q2FsbGJhY2tGdW5jdGlvbiB9KTtcbiAgICB9XG4gIH0pXG4gIEBJbnB1dCgpXG4gIGNvbnRleHRDYWxsYmFja0Z1bmN0aW9uOiAoY29udGV4dDogVmlldykgPT4gdm9pZDtcblxuICAvLyB0aXRsZVxuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nIHwgVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgQElucHV0KCkgaGlkZVRpdGxlOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpIHRpdGxlRGVzY3JpcHRpb246IHN0cmluZyB8IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIEBJbnB1dCgpIHRpdGxlRGVzY3JpcHRpb25Db250ZXh0OiBTdHJpbmdNYXA7XG5cbiAgQElucHV0KCkgdGl0bGVPZmZzZXRYOiBudW1iZXI7XG5cbiAgLy8gbGVnZW5kXG4gIEBJbnB1dCgpIGhpZGVMZWdlbmQgPSBmYWxzZTtcblxuICBASW5wdXQoKSBsZWdlbmRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj4gfCBzdHJpbmc7XG5cbiAgLy8gY3VzdG9tIGxlZ2VuZFxuICBASW5wdXQoKSBsZWZ0T3BlcmF0aW9uOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICBASW5wdXQoKSBsZWZ0T3BlcmF0aW9uQ29udGV4dDogU3RyaW5nTWFwO1xuXG4gIEBPYnNlcnZhYmxlSW5wdXQoKVxuICBsZWZ0T3BlcmF0aW9uJCE6IE9ic2VydmFibGU8VGVtcGxhdGVSZWY8dW5rbm93bj4+O1xuXG4gIEBJbnB1dCgpIHJpZ2h0T3BlcmF0aW9uOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICBAT2JzZXJ2YWJsZUlucHV0KClcbiAgcmlnaHRPcGVyYXRpb24kITogT2JzZXJ2YWJsZTxUZW1wbGF0ZVJlZjx1bmtub3duPj47XG5cbiAgQElucHV0KCkgbGVnZW5kU2VsZWN0QWxsT3BlcmF0aW9uID0gZmFsc2U7XG5cbiAgQElucHV0KCkgbGVnZW5kU2VsZWN0QWxsTmFtZTogc3RyaW5nO1xuXG4gIC8vIGF4aXNcblxuICBASW5wdXQoKSB5QXhpc1RpY2tTdWZmaXg6IHN0cmluZztcblxuICBASW5wdXQoKSBkYXRlQXhpc0xhYmVsRm9ybWF0czogc3RyaW5nO1xuXG4gIEBJbnB1dCgpIHhBeGlzTGFiZWxUcmFuc2xhdGlvbjogYm9vbGVhbjtcblxuICBASW5wdXQoKSB4U2NhbGVUeXBlOiBTY2FsZVR5cGU7XG5cbiAgQElucHV0KCkgeEF4aXNUaWNrRm9ybWF0dGVyOiBzdHJpbmcgfCAoKHZhbHVlOiBzdHJpbmcpID0+IHN0cmluZyk7XG5cbiAgQElucHV0KCkgdGlja3M6IHVua25vd247XG5cbiAgQElucHV0KCkgeUF4aXNUaWNrRm9ybWF0dGVyOiBzdHJpbmcgfCAoKHZhbHVlOiBudW1iZXIpID0+IHN0cmluZyk7XG5cbiAgQElucHV0KCkgeUF4aXNNaW5TdGVwPzogbnVtYmVyO1xuXG4gIC8vIHRvb2x0aXBcbiAgQElucHV0KCkgdG9vbHRpcFRyaWdnZXI6ICdheGlzJyB8ICdpdGVtJyB8ICdub25lJztcblxuICBASW5wdXQoKSB0b29sdGlwQXV0b1NvcnQgPSBmYWxzZTtcblxuICBASW5wdXQoKSB0b29sdGlwSGlkZVRpdGxlOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpIHRvb2x0aXBDb2x1bW5MYXlvdXQ6IGJvb2xlYW47XG5cbiAgQElucHV0KCkgdG9vbHRpcFRpdGxlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIEBJbnB1dCgpIHRvb2x0aXBQb2ludE5hbWVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgQElucHV0KCkgdG9vbHRpcFRyYW5zbGF0aW9uOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpIHRvb2x0aXBUaXRsZVRyYW5zbGF0aW9uOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpIGhpZGVUb29sdGlwVW5pdDogYm9vbGVhbjtcblxuICBASW5wdXQoKSB0b29sdGlwUG9pbnRGb3JtYXQ6IChkOiBDb250ZXh0SXRlbSkgPT4gbnVtYmVyIHwgc3RyaW5nO1xuXG4gIEBJbnB1dCgpIHRvb2x0aXBQb2ludFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICBASW5wdXQoKSB0b29sdGlwUG9pbnRUZW1wbGF0ZUNvbnRleHQ6IHVua25vd247XG5cbiAgLy8gc2VyaWVzXG4gIEBJbnB1dCgpIGJhbmRXaWR0aCA9IDEwO1xuXG4gIEBJbnB1dCgpIG1pbkhlaWdodDogbnVtYmVyO1xuXG4gIEBJbnB1dCgpIHN0ZXBMaW5lOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpIGN1cnZlVHlwZTogQ3VydmVGYWN0b3J5IHwgQ3VydmVGYWN0b3J5TGluZU9ubHk7XG5cbiAgQElucHV0KCkgYmFyVHlwZTogJ3N0YW5kYXJkJyB8ICdzdGFja2VkJyA9ICdzdGFuZGFyZCc7XG5cbiAgQElucHV0KCkgc3RhcnRPcGFjaXR5OiBudW1iZXI7XG5cbiAgQElucHV0KCkgZW5kT3BhY2l0eTogbnVtYmVyO1xuXG4gIEBJbnB1dCgpIGxpbmVXaWR0aD86IG51bWJlcjtcblxuICAvLyBiYXIgc2VyaWVzXG4gIEBJbnB1dCgpIGlzR3JvdXA6IGJvb2xlYW47XG5cbiAgQElucHV0KCkgYmFyUmFkaXVzOiBudW1iZXI7XG5cbiAgQElucHV0KCkgY2xvc2VSYWRpdXNMYWRkZXI6IGJvb2xlYW47XG5cbiAgQElucHV0KCkgY29sdW1uQ2xpY2s6IChkYXRhOiBCYXJDb2x1bW5QYXJhbXMpID0+IHZvaWQ7XG5cbiAgLy8gem9vbVxuICBASW5wdXQoKSBlbmFibGVab29tOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpIGNoYXJ0U3RhdHVzOiBDaGFydFN0YXR1cztcblxuICAvLyBwbG90IGxpbmVcbiAgQElucHV0KCkgeVBsb3RMaW5lc0hpZGUgPSBmYWxzZTtcblxuICBASW5wdXQoKSB5UGxvdExpbmVzOiBUb29sdGlwQ29udGV4dDtcblxuICAvLyBwaWVcbiAgQElucHV0KCkgcGllSW5uZXJSYWRpdXM6IG51bWJlciB8IFBlcmNlbnRhZ2U7XG5cbiAgQElucHV0KCkgcGllT3V0ZXJSYWRpdXM6IG51bWJlciB8IFBlcmNlbnRhZ2U7XG5cbiAgQElucHV0KCkgcGllU3RhcnRBbmdsZTogbnVtYmVyO1xuXG4gIEBJbnB1dCgpIHBpZUVuZEFuZ2xlOiBudW1iZXI7XG5cbiAgQElucHV0KCkgcGllQmFja2dyb3VuZENvbG9yOiBzdHJpbmc7XG5cbiAgQElucHV0KCkgcGllVG90YWw6IG51bWJlcjtcblxuICBASW5wdXQoKSBwaWVJbm5lckRpc2M6IGJvb2xlYW47XG5cbiAgQElucHV0KCkgcGllTGFiZWxUZXh0OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICBASW5wdXQoKSBwaWVMYWJlbFBvc2l0aW9uOiB7IHg6IHN0cmluZzsgeTogc3RyaW5nIH07XG5cbiAgQElucHV0KCkgcGllSXRlbVN0eWxlPzoge1xuICAgIGJvcmRlclJhZGl1cz86IG51bWJlcjtcbiAgfTtcblxuICAvLyBzY2F0dGVyXG4gIEBJbnB1dCgpIHNjYXR0ZXJUeXBlOiAnYnViYmxlJztcbiAgQElucHV0KCkgc2NhdHRlck9wYWNpdHk6IG51bWJlcjtcbiAgQElucHV0KCkgc2NhdHRlclNpemU6IG51bWJlcjtcbiAgQElucHV0KCkgc2NhdHRlclRocmVzaG9sZDoge1xuICAgIG1pblNpemU6IG51bWJlcjtcbiAgICBtYXhTaXplOiBudW1iZXI7XG4gIH07XG5cbiAgQE9ic2VydmFibGVJbnB1dCgpXG4gIHlQbG90TGluZXMkITogT2JzZXJ2YWJsZTxUb29sdGlwQ29udGV4dD47XG5cbiAgQElucHV0KCkgeFBsb3RMaW5lczogWFBsb3RMaW5lcztcblxuICBAT2JzZXJ2YWJsZUlucHV0KClcbiAgeFBsb3RMaW5lcyQhOiBPYnNlcnZhYmxlPFhQbG90TGluZXM+O1xuXG4gIEBPYnNlcnZhYmxlSW5wdXQoKVxuICBjaGFydFN0YXR1cyQhOiBPYnNlcnZhYmxlPENoYXJ0U3RhdHVzPjtcblxuICBAT3V0cHV0KCkgbW91c2VVcEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxBcmVhUG9zaXRpb24+KCk7XG5cbiAgQE91dHB1dCgpIG1hcmtDbGlja0V2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxUb29sdGlwQ29udGV4dD4oKTtcblxuICBAT3V0cHV0KCkgcmVmcmVzaEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgb25EZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgX2NoYXJ0U3RhdHVzJCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENoYXJ0U3RhdHVzPih7XG4gICAgbG9hZGluZzogdHJ1ZSxcbiAgICBub0RhdGE6IGZhbHNlLFxuICAgIGZhaWxlZDogZmFsc2UsXG4gICAgbm9MZWdlbmQ6IGZhbHNlLFxuICB9KTtcblxuICBfc3RhdHVzOiBDaGFydFN0YXR1cyA9IHt9O1xuXG4gIGNoYXJ0OiBBQ2hhcnQ7XG5cbiAgYXJlYVBvc2l0aW9uOiBBcmVhUG9zaXRpb24gPSB7XG4gICAgeDE6IDAsXG4gICAgeDI6IDAsXG4gICAgc3RhcnRYOiAwLFxuICAgIGVuZFg6IDAsXG4gIH07XG5cbiAgc3RhdHVzJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuY2hhcnRTdGF0dXMkLCB0aGlzLl9jaGFydFN0YXR1cyQkXSkucGlwZShcbiAgICBtYXAoKFtzdGF0dXMsIF9zdGF0dXNdKSA9PiAoe1xuICAgICAgLi4uX3N0YXR1cyxcbiAgICAgIC4uLnN0YXR1cyxcbiAgICB9KSksXG4gICAgdGFwKHN0YXR1cyA9PiAodGhpcy5fc3RhdHVzID0gc3RhdHVzKSksXG4gICAgcHVibGlzaFJlZigpLFxuICApO1xuXG4gIGdldCBiYWNrZ3JvdW5kKCkge1xuICAgIHJldHVybiB0aGlzLmJhY2tncm91bmRDb2xvcjtcbiAgfVxuXG4gIGlzVGVtcGxhdGVSZWYgPSBpc1RlbXBsYXRlUmVmO1xuXG4gIGN1c3RvbUxlZ2VuZFJlZjogQ29tcG9uZW50UmVmPExlZ2VuZENvbXBvbmVudD47XG5cbiAgY3VzdG9tVGl0bGVSZWY6IEVtYmVkZGVkVmlld1JlZjx1bmtub3duPjtcblxuICBjdXN0b21QaWVMYWJlbFRleHRSZWY6IEVtYmVkZGVkVmlld1JlZjx1bmtub3duPjtcblxuICB0b29sdGlwSXRlbUNvbnRleHQ6IHsgY29udGV4dDogVG9vbHRpcENvbnRleHRJdGVtW10gfSA9IHsgY29udGV4dDogW10gfTtcblxuICB0b29sdGlwVGl0bGVDb250ZXh0OiB7IGNvbnRleHQ6IFRvb2x0aXBDb250ZXh0IH0gPSB7IGNvbnRleHQ6IG51bGwgfTtcblxuICBnZXQgc2VyaWVzT3B0aW9ucygpIHtcbiAgICBjb25zdCBiYXJTZXJpZXMgPSB7XG4gICAgICBzdGFjazogdGhpcy5iYXJUeXBlID09PSAnc3RhY2tlZCcsXG4gICAgICBiYW5kd2lkdGg6IHRoaXMuYmFuZFdpZHRoLFxuICAgICAgaXNHcm91cDogdGhpcy5pc0dyb3VwLFxuICAgICAgcmFkaXVzOiB0aGlzLmJhclJhZGl1cyxcbiAgICAgIGNsb3NlUmFkaXVzTGFkZGVyOiB0aGlzLmNsb3NlUmFkaXVzTGFkZGVyLFxuICAgICAgY29sdW1uQ2xpY2s6IHRoaXMuY29sdW1uQ2xpY2sgfHwgbnVsbCxcbiAgICAgIG1pbkhlaWdodDogdGhpcy5taW5IZWlnaHQsXG4gICAgfTtcbiAgICBjb25zdCBsaW5lU2VyaWVzID0ge1xuICAgICAgc3RlcDogdGhpcy5zdGVwTGluZSxcbiAgICAgIGN1cnZlVHlwZTogdGhpcy5jdXJ2ZVR5cGUsXG4gICAgICBsaW5lV2lkdGg6IHRoaXMubGluZVdpZHRoLFxuICAgIH07XG4gICAgY29uc3QgYXJlYVNlcmllcyA9IHtcbiAgICAgIGN1cnZlVHlwZTogdGhpcy5jdXJ2ZVR5cGUsXG4gICAgICBzdGFydE9wYWNpdHk6IHRoaXMuc3RhcnRPcGFjaXR5LFxuICAgICAgZW5kT3BhY2l0eTogdGhpcy5lbmRPcGFjaXR5LFxuICAgICAgbGluZVdpZHRoOiB0aGlzLmxpbmVXaWR0aCxcbiAgICB9O1xuXG4gICAgc3dpdGNoICh0aGlzLmNoYXJ0VHlwZSkge1xuICAgICAgY2FzZSAnYmFyJzoge1xuICAgICAgICByZXR1cm4gYmFyU2VyaWVzIGFzIEJhclNlcmllc09wdGlvbjtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2xpbmUnOiB7XG4gICAgICAgIHJldHVybiBsaW5lU2VyaWVzIGFzIExpbmVTZXJpZXNPcHRpb247XG4gICAgICB9XG4gICAgICBjYXNlICdhcmVhJzoge1xuICAgICAgICByZXR1cm4gYXJlYVNlcmllcyBhcyBBcmVhU2VyaWVzT3B0aW9uO1xuICAgICAgfVxuICAgICAgY2FzZSAncGllJzoge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGlubmVyUmFkaXVzOiB0aGlzLnBpZUlubmVyUmFkaXVzLFxuICAgICAgICAgIG91dGVyUmFkaXVzOiB0aGlzLnBpZU91dGVyUmFkaXVzLFxuICAgICAgICAgIHN0YXJ0QW5nbGU6IHRoaXMucGllU3RhcnRBbmdsZSxcbiAgICAgICAgICBlbmRBbmdsZTogdGhpcy5waWVFbmRBbmdsZSxcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoaXMucGllQmFja2dyb3VuZENvbG9yIHx8ICd0cmFuc3BhcmVudCcsXG4gICAgICAgICAgdG90YWw6IHRoaXMucGllVG90YWwsXG4gICAgICAgICAgbGFiZWw6IHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiB7XG4gICAgICAgICAgICAgIHg6IHRoaXMucGllTGFiZWxQb3NpdGlvbj8ueCB8fCAnNTAlJyxcbiAgICAgICAgICAgICAgeTogdGhpcy5waWVMYWJlbFBvc2l0aW9uPy55IHx8ICc1MCUnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGlubmVyRGlzYzogdGhpcy5waWVJbm5lckRpc2MsXG4gICAgICAgICAgaXRlbVN0eWxlOiB0aGlzLnBpZUl0ZW1TdHlsZSB8fCB7IGJvcmRlclJhZGl1czogdGhpcy5iYW5kV2lkdGggLyAyIH0sXG4gICAgICAgIH0gYXMgUGllU2VyaWVzT3B0aW9uO1xuICAgICAgfVxuICAgICAgY2FzZSAnc2NhdHRlcic6IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzaXplOiB0aGlzLnNjYXR0ZXJTaXplLFxuICAgICAgICAgIC4uLnRoaXMuc2NhdHRlclRocmVzaG9sZCxcbiAgICAgICAgICB0eXBlOiB0aGlzLnNjYXR0ZXJUeXBlLFxuICAgICAgICAgIG9wYWNpdHk6IHRoaXMuc2NhdHRlck9wYWNpdHksXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXQgaXNDYXJkTW9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlID09PSAnY2FyZCc7XG4gIH1cblxuICBnZXQgc2NhbGVUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLnhTY2FsZVR5cGUgfHwgU2NhbGVUeXBlLlRJTUU7XG4gIH1cblxuICBnZXQgaXNTY2FsZVRpbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2NhbGVUeXBlID09PSBTY2FsZVR5cGUuVElNRTtcbiAgfVxuXG4gIGdldCBvcHRpb25zKCk6IFZpZXdPcHRpb25zIHtcbiAgICBjb25zdCBkZWZhdWx0WEF4aXNUaWNrRm9ybWF0dGVyID0gdGhpcy5pc1NjYWxlVGltZVxuICAgICAgPyAoKSA9PiB0aW1lRm9ybWF0KHRoaXMuZGF0ZUF4aXNMYWJlbEZvcm1hdHMgfHwgJyVIOiVNJylcbiAgICAgIDogbnVsbDtcbiAgICBjb25zdCB4QXhpc1RpY2tGb3JtYXR0ZXIgPVxuICAgICAgdGhpcy54QXhpc1RpY2tGb3JtYXR0ZXIgfHwgZGVmYXVsdFhBeGlzVGlja0Zvcm1hdHRlcjtcbiAgICByZXR1cm4ge1xuICAgICAgY3VzdG9tSGVhZGVyOiB0aGlzLmNoYXJ0VHlwZSAhPT0gJ3BpZScsXG4gICAgICB0eXBlOiB0aGlzLnN0ZXBMaW5lID8gJ2xpbmUnIDogdGhpcy5jaGFydFR5cGUsXG4gICAgICBvZmZzZXQ6IHtcbiAgICAgICAgeDogdGhpcy5tYXJnaW5MZWZ0LFxuICAgICAgICB5OiB0aGlzLmlzQ2FyZE1vZGUgPyA1IDogMCxcbiAgICAgIH0sXG4gICAgICByb3RhdGVkOiB0aGlzLnJvdGF0ZWQsXG4gICAgICB0aXRsZToge1xuICAgICAgICB0ZXh0OiB0aGlzLnRpdGxlIGFzIHN0cmluZyxcbiAgICAgICAgb2Zmc2V0WDogdGhpcy50aXRsZU9mZnNldFgsXG4gICAgICAgIGhpZGU6IHRoaXMuaGlkZVRpdGxlIHx8IHRoaXMuaGlkZUhlYWRlcixcbiAgICAgICAgZm9ybWF0dGVyOiAoKSA9PiAnJyxcbiAgICAgIH0sXG4gICAgICBsZWdlbmQ6IHtcbiAgICAgICAgaGlkZTogdGhpcy5oaWRlSGVhZGVyLFxuICAgICAgICBmb3JtYXR0ZXI6ICgpID0+ICcnLFxuICAgICAgICBvZmZzZXRZOiB0aGlzLmlzQ2FyZE1vZGUgPyAtOCA6IDAsXG4gICAgICAgIGlzTW91bnQ6IHRydWUsXG4gICAgICB9LFxuICAgICAgZ3JpZDogeyB0b3A6IHRoaXMuZ3JpZE9mZnNldFRvcCB8fCAwIH0sXG4gICAgICB5QXhpczoge1xuICAgICAgICB0aWNrRm9ybWF0dGVyOlxuICAgICAgICAgIHRoaXMueUF4aXNUaWNrRm9ybWF0dGVyIHx8XG4gICAgICAgICAgKCh2YWx1ZTogbnVtYmVyKSA9PlxuICAgICAgICAgICAgYCR7dGhpcy5jb252ZXJzaW9uTWF4aW11bSh2YWx1ZSl9JHt0aGlzLnlBeGlzVGlja1N1ZmZpeCB8fCAnJ31gKSxcbiAgICAgICAgbWluU3RlcDogdGhpcy55QXhpc01pblN0ZXAsXG4gICAgICB9LFxuICAgICAgeEF4aXM6IHtcbiAgICAgICAgdHlwZTogdGhpcy54U2NhbGVUeXBlIHx8IFNjYWxlVHlwZS5USU1FLFxuICAgICAgICB0aWNrRm9ybWF0dGVyOiB4QXhpc1RpY2tGb3JtYXR0ZXIsXG4gICAgICAgIHRpY2tzOiB0aGlzLnRpY2tzLFxuICAgICAgfSxcbiAgICAgIHRvb2x0aXA6IHtcbiAgICAgICAgaGlkZVRpdGxlOiB0aGlzLnRvb2x0aXBIaWRlVGl0bGUsXG4gICAgICAgIHRyaWdnZXI6IHRoaXMudG9vbHRpcFRyaWdnZXJUeXBlLFxuICAgICAgICB0aXRsZUZvcm1hdHRlcjogdGhpcy50aXRsZUZvcm1hdHRlcixcbiAgICAgICAgaXRlbUZvcm1hdHRlcjogKGNvbnRleHQ6IFRvb2x0aXBDb250ZXh0SXRlbVtdKSA9PiB7XG4gICAgICAgICAgdGhpcy50b29sdGlwSXRlbUNvbnRleHQgPSB0aGlzLm1lcmdlUG9pbnRDb250ZXh0KGNvbnRleHQpO1xuICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICByZXR1cm4gdGhpcy50b29sdGlwUG9pbnRUZW1wbGF0ZVxuICAgICAgICAgICAgPyB0aGlzLnRvb2x0aXBJdGVtVmlydHVhbC5uYXRpdmVFbGVtZW50LmlubmVySFRNTFxuICAgICAgICAgICAgOiB0aGlzLnRvb2x0aXBJdGVtQ29udGV4dC5jb250ZXh0O1xuICAgICAgICB9LFxuICAgICAgICBuYW1lRm9ybWF0dGVyOiAoeyBuYW1lIH0pID0+XG4gICAgICAgICAgdGhpcy50b29sdGlwVHJhbnNsYXRpb24gPyB0aGlzLnRyYW5zbGF0ZS5nZXQobmFtZSkgOiBuYW1lLFxuICAgICAgICB2YWx1ZUZvcm1hdHRlcjogdGhpcy52YWx1ZUZvcm1hdHRlcixcbiAgICAgICAgc29ydDogdGhpcy50b29sdGlwQXV0b1NvcnQgPyAoYSwgYikgPT4gYi55IC0gYS55IDogbnVsbCxcbiAgICAgIH0sXG4gICAgICBzZXJpZXNPcHRpb246IHRoaXMuc2VyaWVzT3B0aW9ucyxcbiAgICAgIHpvb206IHtcbiAgICAgICAgZW5hYmxlZDogdGhpcy5lbmFibGVab29tLFxuICAgICAgICBvbnpvb21TdGFydDogKGQ6IFpvb21QYXJhbXMpID0+IHtcbiAgICAgICAgICB0aGlzLmFyZWFQb3NpdGlvbi54MSA9IGQueDtcbiAgICAgICAgICB0aGlzLmFyZWFQb3NpdGlvbi5zdGFydFggPSBkLnZhbHVlLng7XG4gICAgICAgIH0sXG4gICAgICAgIG9uem9vbUVuZDogKGQ6IFpvb21QYXJhbXMpID0+IHtcbiAgICAgICAgICB0aGlzLmFyZWFQb3NpdGlvbi54MiA9IGQueDtcbiAgICAgICAgICB0aGlzLmFyZWFQb3NpdGlvbi5lbmRYID0gZC52YWx1ZS54O1xuICAgICAgICAgIGNvbnN0IHsgc3RhcnRYLCBlbmRYIH0gPSB0aGlzLmFyZWFQb3NpdGlvbjtcbiAgICAgICAgICBpZiAoc3RhcnRYICE9PSBlbmRYKSB7XG4gICAgICAgICAgICB0aGlzLm1vdXNlVXBFdmVudC5uZXh0KHRoaXMuYXJlYVBvc2l0aW9uKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgeFBsb3RMaW5lOiB7XG4gICAgICAgIGNvbG9yOiAncmVkJyxcbiAgICAgIH0sXG4gICAgICBjb250ZXh0Q2FsbGJhY2tGdW5jdGlvbjogdGhpcy5jb250ZXh0Q2FsbGJhY2tGdW5jdGlvbixcbiAgICB9O1xuICB9XG5cbiAgZ2V0IHRvb2x0aXBUcmlnZ2VyVHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy50b29sdGlwVHJpZ2dlciB8fCB0aGlzLmdldFRyaWdnZXJUeXBlKCk7XG4gIH1cblxuICBnZXRUcmlnZ2VyVHlwZSgpIHtcbiAgICBzd2l0Y2ggKHRoaXMuY2hhcnRUeXBlKSB7XG4gICAgICBjYXNlICdsaW5lJzpcbiAgICAgIGNhc2UgJ2FyZWEnOlxuICAgICAgY2FzZSAnYmFyJzoge1xuICAgICAgICByZXR1cm4gJ2F4aXMnO1xuICAgICAgfVxuICAgICAgY2FzZSAnc2NhdHRlcic6IHtcbiAgICAgICAgcmV0dXJuICdpdGVtJztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3BpZSc6IHtcbiAgICAgICAgcmV0dXJuICdub25lJztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYXBwUmVmOiBBcHBsaWNhdGlvblJlZixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSByZWFkb25seSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICApIHt9XG5cbiAgbmdPbkNoYW5nZXMoeyBlbmFibGVab29tIH06IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoZW5hYmxlWm9vbT8uY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLmNoYXJ0Py5zZXRPcHRpb25zKHsgem9vbTogeyBlbmFibGVkOiB0cnVlIH0gfSk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY2hhcnQgPSBDaGFydCh7XG4gICAgICBjb250YWluZXI6IHRoaXMuY2hhcnRDb250YWluZXIubmF0aXZlRWxlbWVudCxcbiAgICAgIC4uLnRoaXMub3B0aW9ucyxcbiAgICAgIGRhdGE6IFtdLFxuICAgIH0pO1xuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuc2VyaWVzJCwgdGhpcy54UGxvdExpbmVzJC5waXBlKHN0YXJ0V2l0aChudWxsKSldKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKFtkYXRhLCByZXNdKSA9PiB7XG4gICAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICAgIHRoaXMuY2hhcnQuc2V0T3B0aW9ucyh7XG4gICAgICAgICAgICAgIHR5cGU6XG4gICAgICAgICAgICAgICAgZGF0YS5sZW5ndGggPiAzICYmIHRoaXMuY2hhcnRUeXBlID09PSAnYXJlYSdcbiAgICAgICAgICAgICAgICAgID8gJ2xpbmUnXG4gICAgICAgICAgICAgICAgICA6IHRoaXMuY2hhcnRUeXBlLFxuICAgICAgICAgICAgICBzZXJpZXNPcHRpb246IHtcbiAgICAgICAgICAgICAgICBsaW5lV2lkdGg6IGRhdGEubGVuZ3RoID4gMyA/IDEgOiB0aGlzLmxpbmVXaWR0aCxcbiAgICAgICAgICAgICAgICBhY3RpdmVMaW5lV2lkdGg6IGRhdGEubGVuZ3RoID4gMyA/IDIgOiAzLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB5QXhpczoge1xuICAgICAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucy55QXhpcyxcbiAgICAgICAgICAgICAgICBtYXg6IHJlcz8udmFsdWUgfHwgdGhpcy5vcHRpb25zLnlBeGlzLm1heCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgdmFsdWVzID0gdGhpcy5oYW5kZWxEYXRhKGRhdGEpO1xuICAgICAgICAgICAgdGhpcy5jaGFydC5kYXRhKHZhbHVlcyk7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5hZGRDdXN0b21MZWdlbmQodGhpcy5jaGFydC5jaGFydFVJZCk7XG4gICAgICAgICAgICAgIHRoaXMuYWRkQ3VzdG9tVGl0bGUodGhpcy5jaGFydC5jaGFydFVJZCk7XG4gICAgICAgICAgICAgIHRoaXMuYWRkUGllTGFiZWxUZXh0KHRoaXMuY2hhcnQuY2hhcnRVSWQpO1xuICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgICAgICBjb25zdCBsZWdlbmRJdGVtcyA9IHRoaXMuY2hhcnQuZ2V0Q29udHJvbGxlcignbGVnZW5kJykubGVnZW5kSXRlbXM7XG4gICAgICAgICAgICB0aGlzLmhhbmRlbENoYXJ0U3RhdHVzKHtcbiAgICAgICAgICAgICAgbG9hZGluZzogZmFsc2UsXG4gICAgICAgICAgICAgIG5vTGVnZW5kOlxuICAgICAgICAgICAgICAgIGxlZ2VuZEl0ZW1zLmxlbmd0aCAmJiBsZWdlbmRJdGVtcy5ldmVyeShpdGVtID0+ICFpdGVtLmFjdGl2YXRlKSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAocmVzKSB7XG4gICAgICAgICAgICB0aGlzLmNoYXJ0Py51cGRhdGVYUGxvdExpbmUocmVzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB0aGlzLmNoYXJ0Lm9uKFJFQ1RfRVZFTlRTLkNMSUNLLCAodmFsdWU6IFRvb2x0aXBDb250ZXh0KSA9PiB7XG4gICAgICB0aGlzLm1hcmtDbGlja0V2ZW50Lm5leHQodmFsdWUpO1xuICAgICAgaWYgKCF0aGlzLnlQbG90TGluZXNIaWRlICYmIHRoaXMueVBsb3RMaW5lcykge1xuICAgICAgICB0aGlzLmNoYXJ0LnVwZGF0ZVlQbG90TGluZSh7XG4gICAgICAgICAgLi4udmFsdWUsXG4gICAgICAgICAgdGl0bGU6IGRheWpzKHZhbHVlLnRpdGxlKS5mb3JtYXQoJ1lZWVktTU0tREQgSEg6bW06c3MnKSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy55UGxvdExpbmVzJC5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSQpKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgdGhpcy5jaGFydC51cGRhdGVZUGxvdExpbmUoe1xuICAgICAgICAgIC4uLnJlcyxcbiAgICAgICAgICB0aXRsZTogZGF5anMocmVzLnRpdGxlKS5mb3JtYXQoJ1lZWVktTU0tREQgSEg6bW06c3MnKSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBoYW5kZWxEYXRhKGRhdGE6IENoYXJ0RGF0YVtdKSB7XG4gICAgcmV0dXJuIGRhdGEubWFwKGQgPT4gKHtcbiAgICAgIC4uLmQsXG4gICAgICB2YWx1ZXM6IGQudmFsdWVzPy5tYXAodiA9PiAoe1xuICAgICAgICAuLi52LFxuICAgICAgICB4OiB0aGlzLnhBY2Nlc3Nvcih2KSxcbiAgICAgICAgeTogdGhpcy55QWNjZXNzb3IodiksXG4gICAgICB9KSksXG4gICAgfSkpO1xuICB9XG5cbiAgYWRkQ3VzdG9tTGVnZW5kKGNoYXJ0VUlkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBkb20gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAuJHtjaGFydFVJZH0gLmFjLWxlZ2VuZGApO1xuICAgIGlmICghdGhpcy5jdXN0b21MZWdlbmRSZWYgJiYgZG9tICYmICF0aGlzLmhpZGVIZWFkZXIpIHtcbiAgICAgIGNvbnN0IHAgPSBuZXcgQ29tcG9uZW50UG9ydGFsKExlZ2VuZENvbXBvbmVudCk7XG4gICAgICBjb25zdCBvID0gbmV3IERvbVBvcnRhbE91dGxldChcbiAgICAgICAgZG9tLFxuICAgICAgICB0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICAgICAgdGhpcy5hcHBSZWYsXG4gICAgICAgIHRoaXMuaW5qZWN0b3IsXG4gICAgICApO1xuICAgICAgdGhpcy5jdXN0b21MZWdlbmRSZWYgPSBwLmF0dGFjaChvKTtcbiAgICAgIHRoaXMuY3VzdG9tTGVnZW5kUmVmLmluc3RhbmNlLmNoYXJ0ID0gdGhpcy5jaGFydDtcbiAgICAgIHRoaXMuY3VzdG9tTGVnZW5kUmVmLmluc3RhbmNlLnN5bWJvbCA9IFsnYmFyJywgJ3BpZScsICdzY2F0dGVyJ10uaW5jbHVkZXMoXG4gICAgICAgIHRoaXMuY2hhcnRUeXBlLFxuICAgICAgKVxuICAgICAgICA/ICdjaXJjbGUnXG4gICAgICAgIDogJ2xpbmUnO1xuICAgICAgdGhpcy5sZWZ0T3BlcmF0aW9uJC5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmN1c3RvbUxlZ2VuZFJlZi5pbnN0YW5jZS5sZWZ0T3BlcmF0aW9uID0gdGhpcy5sZWZ0T3BlcmF0aW9uO1xuICAgICAgICB0aGlzLmN1c3RvbUxlZ2VuZFJlZi5pbnN0YW5jZS5sZWZ0T3BlcmF0aW9uQ29udGV4dCA9XG4gICAgICAgICAgdGhpcy5sZWZ0T3BlcmF0aW9uQ29udGV4dDtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnJpZ2h0T3BlcmF0aW9uJC5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmN1c3RvbUxlZ2VuZFJlZi5pbnN0YW5jZS5yaWdodE9wZXJhdGlvbiA9IHRoaXMucmlnaHRPcGVyYXRpb247XG4gICAgICB9KTtcbiAgICAgIHRoaXMuY3VzdG9tTGVnZW5kUmVmLmluc3RhbmNlLm1vZGUgPSB0aGlzLm1vZGU7XG4gICAgICB0aGlzLmN1c3RvbUxlZ2VuZFJlZi5pbnN0YW5jZS5oaWRlTGVnZW5kID0gdGhpcy5oaWRlTGVnZW5kO1xuICAgICAgdGhpcy5jdXN0b21MZWdlbmRSZWYuaW5zdGFuY2Uuc2VsZWN0QWxsTmFtZSA9IHRoaXMubGVnZW5kU2VsZWN0QWxsTmFtZTtcbiAgICAgIHRoaXMuY3VzdG9tTGVnZW5kUmVmLmluc3RhbmNlLnNlbGVjdEFsbE9wZXJhdGlvbiA9XG4gICAgICAgIHRoaXMubGVnZW5kU2VsZWN0QWxsT3BlcmF0aW9uO1xuICAgICAgdGhpcy5jdXN0b21MZWdlbmRSZWYuaW5zdGFuY2UudGVtcGxhdGUgPSB0aGlzLmxlZ2VuZFRlbXBsYXRlO1xuICAgICAgdGhpcy5jdXN0b21MZWdlbmRSZWYuaW5zdGFuY2UuY2hhbmdlTGVnZW5kXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSQpKVxuICAgICAgICAuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgdGhpcy5oYW5kZWxDaGFydFN0YXR1cyh7XG4gICAgICAgICAgICBub0xlZ2VuZDogcmVzLmV2ZXJ5KGl0ZW0gPT4gIWl0ZW0uYWN0aXZhdGUpLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBhZGRDdXN0b21UaXRsZShjaGFydFVJZDogc3RyaW5nKSB7XG4gICAgY29uc3QgZG9tID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgLiR7Y2hhcnRVSWR9IC5hYy10aXRsZWApO1xuICAgIGlmICghdGhpcy5jdXN0b21UaXRsZVJlZiAmJiBkb20gJiYgIXRoaXMuaGlkZUhlYWRlcikge1xuICAgICAgY29uc3QgcCA9IG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLnRpdGxlQ29udGFpbmVyLCB0aGlzLnZpZXdDb250YWluZXJSZWYpO1xuICAgICAgY29uc3QgbyA9IG5ldyBEb21Qb3J0YWxPdXRsZXQoXG4gICAgICAgIGRvbSxcbiAgICAgICAgdGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgICAgIHRoaXMuYXBwUmVmLFxuICAgICAgICB0aGlzLmluamVjdG9yLFxuICAgICAgKTtcbiAgICAgIHRoaXMuY3VzdG9tVGl0bGVSZWYgPSBwLmF0dGFjaChvKTtcbiAgICB9XG4gIH1cblxuICBhZGRQaWVMYWJlbFRleHQoY2hhcnRVSWQ6IHN0cmluZykge1xuICAgIGNvbnN0IGRvbSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYC4ke2NoYXJ0VUlkfSAuYWMtcGllLWd1aWRlYCk7XG4gICAgaWYgKCF0aGlzLmN1c3RvbVBpZUxhYmVsVGV4dFJlZiAmJiBkb20gJiYgdGhpcy5waWVMYWJlbFRleHQpIHtcbiAgICAgIGNvbnN0IHAgPSBuZXcgVGVtcGxhdGVQb3J0YWwoXG4gICAgICAgIHRoaXMucGllTGFiZWxDb250YWluZXIsXG4gICAgICAgIHRoaXMudmlld0NvbnRhaW5lclJlZixcbiAgICAgICk7XG4gICAgICBjb25zdCBvID0gbmV3IERvbVBvcnRhbE91dGxldChcbiAgICAgICAgZG9tLFxuICAgICAgICB0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICAgICAgdGhpcy5hcHBSZWYsXG4gICAgICAgIHRoaXMuaW5qZWN0b3IsXG4gICAgICApO1xuICAgICAgdGhpcy5jdXN0b21QaWVMYWJlbFRleHRSZWYgPSBwLmF0dGFjaChvKTtcbiAgICB9XG4gIH1cblxuICByZWZyZXNoKCkge1xuICAgIHRoaXMucmVmcmVzaEV2ZW50Lm5leHQobnVsbCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLm9uRGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuY3VzdG9tTGVnZW5kUmVmPy5kZXN0cm95KCk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IG1lcmdlUG9pbnRDb250ZXh0ID0gKGNvbnRleHQ6IFRvb2x0aXBDb250ZXh0SXRlbVtdKSA9PiAoe1xuICAgIGNvbnRleHQ6IHRoaXMubGltaXRNYXhDb250ZXh0KGNvbnRleHQpLFxuICAgIC4uLih0aGlzLnRvb2x0aXBQb2ludFRlbXBsYXRlQ29udGV4dCBhcyBTdHJpbmdNYXApLFxuICB9KTtcblxuICBwcml2YXRlIGhhbmRlbENoYXJ0U3RhdHVzKHN0YXR1czogQ2hhcnRTdGF0dXMpIHtcbiAgICB0aGlzLl9jaGFydFN0YXR1cyQkLm5leHQoe1xuICAgICAgLi4uc3RhdHVzLFxuICAgIH0pO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgbGltaXRNYXhDb250ZXh0KGNvbnRleHQ6IFRvb2x0aXBDb250ZXh0SXRlbVtdLCBsaW1pdCA9IDE1KSB7XG4gICAgY29uc3QgdmFsdWVzID0gY29udGV4dC5zbGljZSgwLCBsaW1pdCk7XG4gICAgY29uc3QgZXhpc3RBY3RpdmUgPVxuICAgICAgY29udGV4dC5zb21lKGl0ZW0gPT4gaXRlbS5hY3RpdmF0ZWQpICYmIHZhbHVlcy5zb21lKGQgPT4gIWQuYWN0aXZhdGVkKTtcbiAgICBpZiAoIWV4aXN0QWN0aXZlICYmIGNvbnRleHQubGVuZ3RoID4gbGltaXQpIHtcbiAgICAgIGNvbnN0IGRhdGEgPSBjb250ZXh0LmZpbmQoaXRlbSA9PiBpdGVtLmFjdGl2YXRlZCk7XG4gICAgICByZXR1cm4gZGF0YSA/IFsuLi52YWx1ZXMuc2xpY2UoMCwgbGltaXQgLSAxKSwgZGF0YV0gOiB2YWx1ZXM7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZXM7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRQb2ludEZvcm1hdCA9IHBvaW50Rm9ybWF0O1xuXG4gIHByaXZhdGUgY29udmVyc2lvbk1heGltdW0odmFsdWU6IG51bWJlcikge1xuICAgIGNvbnN0IHVuaXQgPSAnayc7XG4gICAgaWYgKHZhbHVlID49IDEwMDApIHtcbiAgICAgIGNvbnN0IG51bSA9ICsodmFsdWUgLyAxMDAwKS50b0ZpeGVkKDIpO1xuICAgICAgcmV0dXJuIGAke251bX0ke3VuaXR9YDtcbiAgICB9XG4gICAgcmV0dXJuICcnICsgdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IHRpdGxlRm9ybWF0dGVyID0gKGNvbnRleHQ6IFRvb2x0aXBDb250ZXh0KSA9PiB7XG4gICAgdGhpcy50b29sdGlwVGl0bGVDb250ZXh0ID0geyBjb250ZXh0IH07XG4gICAgY29uc3QgdGl0bGUgPVxuICAgICAgdGhpcy50b29sdGlwVHJhbnNsYXRpb24gJiYgIXRoaXMudG9vbHRpcFRpdGxlVGVtcGxhdGVcbiAgICAgICAgPyB0aGlzLnRyYW5zbGF0ZS5nZXQoY29udGV4dC50aXRsZSBhcyBzdHJpbmcpIHx8IGNvbnRleHQudGl0bGVcbiAgICAgICAgOiBjb250ZXh0LnRpdGxlO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIHJldHVybiB0aGlzLnRvb2x0aXBUaXRsZVRlbXBsYXRlXG4gICAgICA/IHRoaXMudG9vbHRpcFRpdGxlVmlydHVhbC5uYXRpdmVFbGVtZW50LmlubmVySFRNTFxuICAgICAgOiBoYW5kbGVEYXRlRm9ybWF0KHRpdGxlKTtcbiAgfTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHZhbHVlRm9ybWF0dGVyID0gKHZhbHVlOiBUb29sdGlwQ29udGV4dEl0ZW0pID0+IHtcbiAgICBjb25zdCByZXMgPSB0aGlzLnRvb2x0aXBQb2ludEZvcm1hdFxuICAgICAgPyB0aGlzLnRvb2x0aXBQb2ludEZvcm1hdCh2YWx1ZSlcbiAgICAgIDogdGhpcy5kZWZhdWx0UG9pbnRGb3JtYXQodmFsdWUueSk7XG4gICAgcmV0dXJuIHRoaXMuaGlkZVRvb2x0aXBVbml0ICYmICF0aGlzLnVuaXRcbiAgICAgID8gKHJlcyBhcyBzdHJpbmcpXG4gICAgICA6IGAke3Jlc30gJHt0aGlzLnRyYW5zbGF0ZS5nZXQodGhpcy51bml0KX1gO1xuICB9O1xufVxuIiwiPGRpdlxuICBjbGFzcz1cImFjLWNoYXJ0XCJcbiAgW2NsYXNzLmFjLW5vbi1jaGFydF09XCJjaGFydFR5cGUgPT09ICdwaWUnXCJcbiAgW2NsYXNzLmFjLWJhcl09XCJjaGFydFR5cGUgPT09ICdiYXInXCJcbiAgW3N0eWxlLmJhY2tncm91bmRdPVwiYmFja2dyb3VuZFwiXG4+XG4gIDxkaXZcbiAgICAjY2hhcnRDb250YWluZXJcbiAgICBjbGFzcz1cImFjLWNoYXJ0LWNvbnRhaW5lciB0dy13LWZ1bGwgdHctaC1mdWxsXCJcbiAgPjwvZGl2PlxuXG4gIDxkaXZcbiAgICBjbGFzcz1cImFjLWNoYXJ0LXN0YXR1c1wiXG4gICAgKm5nSWY9XCJzdGF0dXMkIHwgYXN5bmMgYXMgc3RhdHVzXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgICpuZ0lmPVwic3RhdHVzLmZhaWxlZCAmJiAhc3RhdHVzLmxvYWRpbmdcIlxuICAgICAgY2xhc3M9XCJzdGF0dXMgZmFpbGVkXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VzdG9tRXJyb3JDb250YWluZXI7IGVsc2Ugbm9DdXN0b21FcnJvckNvbnRhaW5lclwiPlxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImN1c3RvbUVycm9yQ29udGFpbmVyXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjbm9DdXN0b21FcnJvckNvbnRhaW5lcj5cbiAgICAgICAgPGF1aS1pY29uXG4gICAgICAgICAgaWNvbj1cImV4Y2xhbWF0aW9uX3RyaWFuZ2xlX3NcIlxuICAgICAgICAgIGJhY2tncm91bmQ9XCJ0cmlhbmdsZVwiXG4gICAgICAgID48L2F1aS1pY29uPlxuICAgICAgICB7eyAnZmFpbGVkX2xvYWRfcGxlYXNlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgYXVpLWJ1dHRvbj1cInRleHRcIlxuICAgICAgICAgIChjbGljayk9XCJyZWZyZXNoKClcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgKCdyZWZyZXNoJyB8IHRyYW5zbGF0ZSkudG9Mb3dlckNhc2UoKSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCJzdGF0dXMubG9hZGluZ1wiXG4gICAgICBjbGFzcz1cInN0YXR1cyBsb2FkaW5nXCJcbiAgICA+XG4gICAgICA8YXVpLWljb24gaWNvbj1cInNwaW5uZXJcIj48L2F1aS1pY29uPiB7eyAnbG9hZGluZycgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICAqbmdJZj1cInN0YXR1cy5ub0xlZ2VuZCAmJiAhc3RhdHVzLmxvYWRpbmdcIlxuICAgICAgY2xhc3M9XCJzdGF0dXMgbm8tbGVnZW5kXCJcbiAgICA+XG4gICAgICB7eyAnbm9faW5kaWNhdG9yX3NlbGVjdGVkJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCJzdGF0dXMubm9EYXRhICYmICFzdGF0dXMubG9hZGluZyAmJiAhc3RhdHVzLmZhaWxlZFwiXG4gICAgICBjbGFzcz1cInN0YXR1cyBuby1kYXRhXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgY3VzdG9tTm9EYXRhVGl0bGUgJiYgaXNUZW1wbGF0ZVJlZihjdXN0b21Ob0RhdGFUaXRsZSk7XG4gICAgICAgICAgZWxzZSBub0RhdGFUaXRsZVRlbXBsYXRlXG4gICAgICAgIFwiXG4gICAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY3VzdG9tTm9EYXRhVGl0bGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICNub0RhdGFUaXRsZVRlbXBsYXRlPlxuICAgICAgICB7eyBjdXN0b21Ob0RhdGFUaXRsZSB8fCAoJ25vX2RhdGEnIHwgdHJhbnNsYXRlKSB9fVxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPCEtLSB0aXRsZSBUZW1wbGF0ZSAtLT5cbjxuZy10ZW1wbGF0ZSAjdGl0bGVDb250YWluZXI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1RlbXBsYXRlUmVmKHRpdGxlKTsgZWxzZSBUaXRsZVRlbXBsYXRlXCI+XG4gICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJ0aXRsZVwiPjwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNUZW1wbGF0ZVJlZih0aXRsZURlc2NyaXB0aW9uKTsgZWxzZSBUaXRsZURlc1RlbXBsYXRlXCI+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidGl0bGVEZXNjcmlwdGlvblwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwidGl0bGVEZXNjcmlwdGlvbkNvbnRleHRcIlxuICAgID48L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI1RpdGxlVGVtcGxhdGU+XG4gIHt7IHRpdGxlIH19XG4gIHt7IHVuaXQgPyAnKCcgKyAodW5pdCB8IHRyYW5zbGF0ZSkgKyAnKScgOiAnJyB9fVxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNUaXRsZURlc1RlbXBsYXRlPlxuICB7eyB0aXRsZURlc2NyaXB0aW9uIH19XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIHRvb2x0aXAgdGVtcGxhdGUgLS0+XG48ZGl2XG4gICN0b29sdGlwSXRlbVZpcnR1YWxcbiAgY2xhc3M9XCJoaWRlXCJcbj5cbiAgPG5nLWNvbnRhaW5lclxuICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRvb2x0aXBQb2ludFRlbXBsYXRlXCJcbiAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwidG9vbHRpcEl0ZW1Db250ZXh0XCJcbiAgPjwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxkaXZcbiAgI3Rvb2x0aXBUaXRsZVZpcnR1YWxcbiAgY2xhc3M9XCJoaWRlXCJcbj5cbiAgPG5nLWNvbnRhaW5lclxuICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRvb2x0aXBUaXRsZVRlbXBsYXRlXCJcbiAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwidG9vbHRpcFRpdGxlQ29udGV4dFwiXG4gID48L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48ZGl2XG4gICN0b29sdGlwTmFtZVZpcnR1YWxcbiAgY2xhc3M9XCJoaWRlXCJcbj5cbiAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJ0b29sdGlwUG9pbnROYW1lVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI3BpZUxhYmVsQ29udGFpbmVyPlxuICA8bmctY29udGFpbmVyXG4gICAgKm5nSWY9XCJwaWVMYWJlbFRleHQgJiYgaXNUZW1wbGF0ZVJlZihwaWVMYWJlbFRleHQpOyBlbHNlIHN0cmluZ1BpZUxhYmVsVGV4dFwiXG4gID5cbiAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInBpZUxhYmVsVGV4dFwiPjwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLXRlbXBsYXRlICNzdHJpbmdQaWVMYWJlbFRleHQ+XG4gICAge3sgcGllTGFiZWxUZXh0IH19XG4gIDwvbmctdGVtcGxhdGU+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -109,5 +109,5 @@ export class LegendDropdownComponent {
109
109
  }], isCard: [{
110
110
  type: Input
111
111
  }] }); })();
112
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(LegendDropdownComponent, { className: "LegendDropdownComponent", filePath: "view-zchart/custom-template/dropdown-legend.ts", lineNumber: 56 }); })();
112
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(LegendDropdownComponent, { className: "LegendDropdownComponent" }); })();
113
113
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tbGVnZW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL3ZpZXctemNoYXJ0L2N1c3RvbS10ZW1wbGF0ZS9kcm9wZG93bi1sZWdlbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxFQUNMLFdBQVcsR0FDWixNQUFNLGVBQWUsQ0FBQzs7Ozs7SUFPbkIsNkJBQWlEO0lBQy9DLDhCQVNZOzs7OztJQU5WLGNBQW1DO0lBQ25DLEFBREEsb0RBQW1DLDZFQUNEOzs7SUFRcEMsaUNBV0M7SUFDQyw4QkFBOEM7SUFDaEQsaUJBQVM7Ozs7SUFQUCxBQURBLEFBSEEsNkJBQWUsdUNBR29CLDZFQUNEOzs7SUFXcEMsNkJBQWtFO0lBQ2hFLDhCQUE2QjtJQUMzQiwyQkFBaUU7SUFDbkUsaUJBQU07Ozs7SUFEVSxlQUFtQztJQUFuQyx3REFBbUM7OztJQUluRCwrQkFBc0I7SUFBQSxZQUEyQjs7SUFBQSxpQkFBTzs7SUFBbEMsY0FBMkI7SUFBM0IscURBQTJCOzs7SUFEbkQsQUFMQSx3R0FBa0UsMEhBS3JDOzs7O0lBTGdCLEFBQTlCLDJEQUE4QiwrQkFBbUI7O0FBYXRFLE1BQU0sT0FBTyx1QkFBdUI7d0ZBQXZCLHVCQUF1QjtvRUFBdkIsdUJBQXVCO1lBZGhDLEFBakJBLEFBWkEsMEZBQWlELDRHQVl0Qiw0R0FpQlE7OztZQTdCTCxBQUFmLGtDQUFlLDZCQUFpQjs7O2lGQTJDdEMsdUJBQXVCO2NBOUNuQyxTQUFTOzJCQUNFLDBCQUEwQixZQUMxQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdDVCxtQkFFZ0IsdUJBQXVCLENBQUMsTUFBTTtnQkFHdEMsSUFBSTtrQkFBWixLQUFLO1lBQ0csY0FBYztrQkFBdEIsS0FBSztZQUNHLE1BQU07a0JBQWQsS0FBSztZQUNHLE1BQU07a0JBQWQsS0FBSzs7a0ZBSkssdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIFRlbXBsYXRlUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgTGVnZW5kSXRlbSB9IGZyb20gJy4uLy4uL2NoYXJ0L2NvbW1vbi9wdWJsaWMtYXBpJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWNsLXZpZXctbGVnZW5kLWRyb3Bkb3duJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzQ2FyZDsgZWxzZSBlbHNlVGVtcGxhdGVcIj5cbiAgICAgIDxhdWktaWNvblxuICAgICAgICBjbGFzcz1cImJ0blwiXG4gICAgICAgIGljb249XCJwcm9kOmNoYXJ0X2xlZ2VuZFwiXG4gICAgICAgIFthdWlUb29sdGlwXT1cImRyb3Bkb3duSXRlbVRlbXBsYXRlXCJcbiAgICAgICAgW2F1aVRvb2x0aXBDb250ZXh0XT1cInsgZGF0YTogW10gfVwiXG4gICAgICAgIGF1aVRvb2x0aXBUeXBlPVwiaW5mb1wiXG4gICAgICAgIGF1aVRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbSBlbmRcIlxuICAgICAgICBhdWlUb29sdGlwVHJpZ2dlcj1cImNsaWNrXCJcbiAgICAgICAgYXVpVG9vbHRpcEFjdGl2ZT1cImxlZ2VuZEFjdGl2ZVwiXG4gICAgICA+PC9hdWktaWNvbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI2Vsc2VUZW1wbGF0ZT5cbiAgICAgIDxidXR0b25cbiAgICAgICAgYXVpLWJ1dHRvblxuICAgICAgICBbc3F1YXJlXT1cInRydWVcIlxuICAgICAgICBjbGFzcz1cImJ0blwiXG4gICAgICAgIGljb249XCJwcm9kOmNoYXJ0X2xlZ2VuZFwiXG4gICAgICAgIFthdWlUb29sdGlwXT1cImRyb3Bkb3duSXRlbVRlbXBsYXRlXCJcbiAgICAgICAgW2F1aVRvb2x0aXBDb250ZXh0XT1cInsgZGF0YTogW10gfVwiXG4gICAgICAgIGF1aVRvb2x0aXBUeXBlPVwiaW5mb1wiXG4gICAgICAgIGF1aVRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbSBlbmRcIlxuICAgICAgICBhdWlUb29sdGlwVHJpZ2dlcj1cImNsaWNrXCJcbiAgICAgICAgYXVpVG9vbHRpcEFjdGl2ZT1cImxlZ2VuZEFjdGl2ZVwiXG4gICAgICA+XG4gICAgICAgIDxhdWktaWNvbiBpY29uPVwicHJvZDpjaGFydF9sZWdlbmRcIj48L2F1aS1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxuZy10ZW1wbGF0ZSAjZHJvcGRvd25JdGVtVGVtcGxhdGU+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YS5sZW5ndGggJiYgIW5vRGF0YTsgZWxzZSBub0RhdGFUZW1wbGF0ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibGVnZW5kLXZlcnRpY2FsXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJsZWdlbmRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICNub0RhdGFUZW1wbGF0ZT5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJuby1kYXRhXCI+e3sgJ25vX2RhdGEnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLXRlbXBsYXRlPlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9kcm9wZG93bi1sZWdlbmQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTGVnZW5kRHJvcGRvd25Db21wb25lbnQge1xuICBASW5wdXQoKSBkYXRhOiBMZWdlbmRJdGVtW107XG4gIEBJbnB1dCgpIGxlZ2VuZFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcbiAgQElucHV0KCkgbm9EYXRhOiBib29sZWFuO1xuICBASW5wdXQoKSBpc0NhcmQ6IGJvb2xlYW47XG59XG4iXX0=