tnx-shared 5.2.28 → 5.2.29

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 (85) hide show
  1. package/assets/docker/docker-entrypoint.sh +1 -1
  2. package/classes/base/list-component-base.d.ts +19 -5
  3. package/classes/base/list-component-base.d.ts.map +1 -1
  4. package/classes/environment-schema.d.ts +23 -20
  5. package/classes/environment-schema.d.ts.map +1 -1
  6. package/classes/public-function.d.ts +1 -0
  7. package/classes/public-function.d.ts.map +1 -1
  8. package/components/chat/chat-box/chat-box.component.d.ts.map +1 -1
  9. package/components/common-app-component/common-app-component.d.ts +1 -3
  10. package/components/common-app-component/common-app-component.d.ts.map +1 -1
  11. package/components/crud/advance-search/advance-search.component.d.ts +6 -6
  12. package/components/crud/advance-search/advance-search.component.d.ts.map +1 -1
  13. package/components/crud/crud-form/crud-form.component.d.ts +6 -0
  14. package/components/crud/crud-form/crud-form.component.d.ts.map +1 -1
  15. package/components/dropdown/dropdown.component.d.ts +5 -3
  16. package/components/dropdown/dropdown.component.d.ts.map +1 -1
  17. package/components/file-explorer/file-manager/file-manager.component.d.ts.map +1 -1
  18. package/components/query-builders/query-builder-rule/query-builder-rule.component.d.ts +3 -0
  19. package/components/query-builders/query-builder-rule/query-builder-rule.component.d.ts.map +1 -1
  20. package/components/tn-custom-scrollbar/tn-custom-scrollbar.component.d.ts.map +1 -1
  21. package/components/tn-tinymce/tn-tinymce.component.d.ts +2 -0
  22. package/components/tn-tinymce/tn-tinymce.component.d.ts.map +1 -1
  23. package/congviec/congviec/congviec-form/congviec-form.component.d.ts +1 -0
  24. package/congviec/congviec/congviec-form/congviec-form.component.d.ts.map +1 -1
  25. package/directives/primeng/tn-table.directive.d.ts +7 -6
  26. package/directives/primeng/tn-table.directive.d.ts.map +1 -1
  27. package/esm2020/classes/base/list-component-base.mjs +56 -32
  28. package/esm2020/classes/environment-schema.mjs +10 -1
  29. package/esm2020/classes/public-function.mjs +3 -1
  30. package/esm2020/components/add-news/add-news.component.mjs +3 -3
  31. package/esm2020/components/autocomplete-picker/autocomplete-picker.component.mjs +2 -2
  32. package/esm2020/components/chat/chat-box/chat-box.component.mjs +3 -4
  33. package/esm2020/components/chat/chat-send-message-box/chat-send-message-box.component.mjs +2 -2
  34. package/esm2020/components/common-app-component/common-app-component.mjs +57 -57
  35. package/esm2020/components/common-dashboard/common-dashboard.component.mjs +3 -3
  36. package/esm2020/components/crud/advance-search/advance-search.component.mjs +28 -19
  37. package/esm2020/components/crud/crud-form/crud-form.component.mjs +12 -4
  38. package/esm2020/components/crud/crud-list/crud-list.component.mjs +3 -3
  39. package/esm2020/components/crud/tree-table/tree-table.component.mjs +3 -3
  40. package/esm2020/components/dropdown/dropdown.component.mjs +29 -24
  41. package/esm2020/components/entity-permission/entity-permission.component.mjs +3 -3
  42. package/esm2020/components/entity-picker/entity-picker-box/entity-picker-box.component.mjs +3 -3
  43. package/esm2020/components/entity-picker/entity-picker-dialog/entity-picker-dialog.component.mjs +3 -3
  44. package/esm2020/components/file-explorer/file-manager/file-manager.component.mjs +3 -3
  45. package/esm2020/components/main-list/main-list.component.mjs +3 -3
  46. package/esm2020/components/query-builders/query-builder-rule/query-builder-rule.component.mjs +8 -3
  47. package/esm2020/components/radio-button-list/radio-button-list.component.mjs +3 -3
  48. package/esm2020/components/report-queue/report-queue.component.mjs +2 -2
  49. package/esm2020/components/settings/settings.component.mjs +3 -3
  50. package/esm2020/components/tn-app-help/tn-app-help.component.mjs +3 -3
  51. package/esm2020/components/tn-app-notification/tn-app-notification.component.mjs +3 -3
  52. package/esm2020/components/tn-custom-scrollbar/tn-custom-scrollbar.component.mjs +5 -4
  53. package/esm2020/components/tn-tinymce/tn-tinymce.component.mjs +7 -3
  54. package/esm2020/components/user-picker/user-picker-box/user-picker-box.component.mjs +3 -3
  55. package/esm2020/components/user-picker/user-picker.component.mjs +2 -2
  56. package/esm2020/components/workflow/workflow-picker/workflow-picker.component.mjs +3 -3
  57. package/esm2020/congviec/congviec/congviec-dinhkem/congviec-dinhkem.component.mjs +3 -3
  58. package/esm2020/congviec/congviec/congviec-form/congviec-form.component.mjs +6 -3
  59. package/esm2020/congviec/congviec/congviec.component.mjs +3 -3
  60. package/esm2020/directives/primeng/tn-table.directive.mjs +28 -13
  61. package/esm2020/services/common.service.mjs +11 -3
  62. package/esm2020/services/environment.service.mjs +48 -7
  63. package/esm2020/services/permission.service.mjs +12 -15
  64. package/esm2020/services/position.service.mjs +2 -2
  65. package/esm2020/services/signalr.service.mjs +3 -3
  66. package/esm2020/services/tn-client.service.mjs +30 -25
  67. package/esm2020/tnx-shared.module.mjs +14 -8
  68. package/fesm2015/tnx-shared.mjs +587 -445
  69. package/fesm2015/tnx-shared.mjs.map +1 -1
  70. package/fesm2020/tnx-shared.mjs +587 -445
  71. package/fesm2020/tnx-shared.mjs.map +1 -1
  72. package/package.json +2 -2
  73. package/services/common.service.d.ts +6 -0
  74. package/services/common.service.d.ts.map +1 -1
  75. package/services/environment.service.d.ts +32 -23
  76. package/services/environment.service.d.ts.map +1 -1
  77. package/services/permission.service.d.ts +5 -0
  78. package/services/permission.service.d.ts.map +1 -1
  79. package/services/position.service.d.ts.map +1 -1
  80. package/services/signalr.service.d.ts +1 -1
  81. package/services/signalr.service.d.ts.map +1 -1
  82. package/services/tn-client.service.d.ts +3 -1
  83. package/services/tn-client.service.d.ts.map +1 -1
  84. package/tnx-shared.module.d.ts +12 -11
  85. package/tnx-shared.module.d.ts.map +1 -1
@@ -57,9 +57,9 @@ export class TnAppHelpComponent extends ComponentBase {
57
57
  }
58
58
  }
59
59
  TnAppHelpComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: TnAppHelpComponent, deps: [{ token: i1.PathNameService }, { token: i2.DomService }, { token: i0.Injector }, { token: i3.EnvironmentService }], target: i0.ɵɵFactoryTarget.Component });
60
- TnAppHelpComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: TnAppHelpComponent, selector: "li[tn-app-help]", providers: [ComponentContextService], usesInheritance: true, ngImport: i0, template: "<a href=\"javascript:;\" tabindex=\"9\" (click)=\"showHelper()\" style=\"height: 30px;\" pTooltip=\"Tr\u1EE3 gi\u00FAp\"\r\n tooltipPosition=\"bottom\">\r\n <span class=\"topbar-icon-left\">\r\n <!-- <svg focusable=\"false\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\r\n class=\"topbar-icon animated swing svgmodule\">\r\n <path fill=\"currentColor\"\r\n d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 448c-110.532 0-200-89.431-200-200 0-110.495 89.472-200 200-200 110.491 0 200 89.471 200 200 0 110.53-89.431 200-200 200zm107.244-255.2c0 67.052-72.421 68.084-72.421 92.863V300c0 6.627-5.373 12-12 12h-45.647c-6.627 0-12-5.373-12-12v-8.659c0-35.745 27.1-50.034 47.579-61.516 17.561-9.845 28.324-16.541 28.324-29.579 0-17.246-21.999-28.693-39.784-28.693-23.189 0-33.894 10.977-48.942 29.969-4.057 5.12-11.46 6.071-16.666 2.124l-27.824-21.098c-5.107-3.872-6.251-11.066-2.644-16.363C184.846 131.491 214.94 112 261.794 112c49.071 0 101.45 38.304 101.45 88.8zM298 368c0 23.159-18.841 42-42 42s-42-18.841-42-42 18.841-42 42-42 42 18.841 42 42z\"\r\n class=\"\"></path>\r\n </svg> -->\r\n <i class=\"topbar-icon animated swing pi pi-question-circle\"></i>\r\n </span>\r\n <span class=\"topbar-item-name\">{{ \"Tr\u1EE3 gi\u00FAp\" | translate }}</span>\r\n</a>\r\n\r\n<p-sidebar [styleClass]=\"'HelperSlideBar tn-l-sidebar-wrapper'\" [(visible)]=\"display\" position=\"right\"\r\n [appendTo]=\"'body'\" [style]=\"{ width: '30em', border: 0, 'max-width': '100vw' }\">\r\n <div style=\"background-color: #fff; box-shadow: 0 1px 5px 0 rgba(0, 0, 0, 0.35);\">\r\n <h1 style=\"font-size: 16px; color: #212529;\">Trung t\u00E2m tr\u1EE3 gi\u00FAp</h1>\r\n </div>\r\n\r\n <div class=\"tn-l-help-wrapper\">\r\n <tn-custom-scrollbar #scrollbar [style]=\"{'max-height':'calc(100vh - 50px)'}\">\r\n <div class=\"HelpCenter\">\r\n <div class=\"p-grid\" style=\"margin-top:10px; margin-bottom: 25px;\">\r\n <div class=\"p-col-8\">\r\n <p style=\"font-weight:bold;font-size: 16px;margin-bottom: 8px; margin-top:20px\">\r\n {{config.expertName}}\r\n </p>\r\n <p style=\"margin: 0px;\">\r\n <a [href]=\"config.hrefTelephone\"><i class=\"fas fa-phone\"\r\n style=\"margin-right: 8px; width: 15px\"></i>{{config.phoneNumber}}</a>\r\n </p>\r\n <p style=\"margin-top: 8px;\">\r\n <a [href]=\"config.hrefMail\"><i class=\"fas fa-envelope\"\r\n style=\"margin-right: 8px; width: 15px\"></i>{{config.mail}}</a>\r\n </p>\r\n </div>\r\n <div class=\"p-col-4\">\r\n <img [src]=\"config.logoCompany\" style=\"width: 100%; float: right; opacity: 0.7;\" />\r\n </div>\r\n </div>\r\n <div class=\"p-grid p-m-0 HelpCenter-download\" style=\"margin-top: 0px; margin-bottom: 40px;\">\r\n <div class=\"p-col-12 help-title\">\r\n <span class=\"tit-name\">T\u00E0i li\u1EC7u - H\u01B0\u1EDBng d\u1EABn s\u1EED d\u1EE5ng c\u00E1c ph\u00E2n h\u1EC7 </span>\r\n </div>\r\n <div class=\"tn-l-pmti p-grid\"\r\n style=\"border: 1px solid #ccc; width: 100%;margin:0;margin-bottom:20px;\">\r\n <div *ngFor=\"let item of helps\" class=\"p-col-4 help-content\">\r\n <p style=\"margin-top: 18px; text-align: center;\">\r\n <a target=\"_blank\" [href]=\"item.href\"\r\n style=\"display: inline-block; text-align: center;\">\r\n <i class=\"{{item.icon}} app-switcher-item-icon\"\r\n style=\"color: rgb(44 126 210);font-size: 3.5em;padding-bottom: 10px;\"></i>\r\n <br />{{item.label}}\r\n </a>\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"p-grid p-m-0 HelpCenter-video\" style=\"margin-top: 0px\">\r\n <div class=\"p-col-12 help-title\">\r\n <span class=\"tit-name\">Xem h\u01B0\u1EDBng d\u1EABn</span>\r\n </div>\r\n <div class=\"p-col-12 help-content\">\r\n <h2 *ngIf=\"showHelperCurrentPageState\" style=\"margin-top: 0px\">\r\n <a href=\"javascript:;\" (click)=\"showHelperCurrentPage(null)\"\r\n style=\"display:inline-block; position: relative; border-top: 1px solid #52abf5;\">\r\n <img src=\"/assets/images/bgvideo.png\" alt=\"screen shot\"\r\n style=\"width:100%; filter: brightness(0.88);\" />\r\n <i class=\"fab fa-youtube fa-2x\"></i>\r\n </a>\r\n </h2>\r\n </div>\r\n </div>\r\n\r\n <div class=\"p-grid p-m-0 HelpCenter-download\" style=\"margin-top: 0px; margin-bottom: 40px;\">\r\n <div class=\"p-col-12 help-title\">\r\n <span class=\"tit-name\">Ph\u1EA7n m\u1EC1m ti\u1EC7n \u00EDch</span>\r\n </div>\r\n <div class=\"tn-l-pmti\" style=\"border: 1px solid #ccc; width: 100%\">\r\n <div class=\"p-col-4 help-content\">\r\n <p style=\"margin-top: 18px; text-align: center;\">\r\n <a target=\"_blank\" [href]=\"config.linkDownloadClientApp\"\r\n style=\"display: inline-block; text-align: center;\">\r\n <img src=\"/assets/images/icon-appTN64x64.png\" />\r\n <br />TN Client\r\n </a>\r\n </p>\r\n </div>\r\n <div class=\"p-col-4 help-content\">\r\n <p style=\"margin-top: 18px; text-align: center;\">\r\n <a target=\"_blank\" href=\"https://ultraviewer.net/vi/UltraViewer_setup_6.2_vi.exe\"\r\n style=\"display: inline-block; text-align: center;\">\r\n <img src=\"/assets/images/ultraviewer.ico\" />\r\n <br />Ultraviewer\r\n </a>\r\n </p>\r\n </div>\r\n <div class=\"p-col-4 help-content\">\r\n <p style=\"margin-top: 18px; text-align: center;\">\r\n <a target=\"_blank\" href=\"https://www.teamviewer.com/vi/tai-xuong-tu-dong-teamviewer/\"\r\n style=\"display: inline-block; text-align: center;\">\r\n <img src=\"/assets/images/icon-teamviewer.png\" />\r\n <br />Teamviewer\r\n </a>\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </tn-custom-scrollbar>\r\n </div>\r\n</p-sidebar>", styles: [".HelpCenter{color:#555;padding:0 20px}::ng-deep .tn-l-sidebar-wrapper{padding:0}.tn-l-pmti{display:flex}.HelpCenter p:first-child img{margin-bottom:10px}::ng-deep .HelperSlideBar .p-sidebar-content>button{margin-top:10px;margin-right:14px;font-size:20px;color:#212529;cursor:pointer}::ng-deep .ui-sidebar{padding:0}::ng-deep .HelperSlideBar h1{margin:0;height:50px;line-height:50px;text-transform:uppercase;padding-left:20px}.HelpCenter-video{position:relative}.HelpCenter-video i{color:#454545;position:absolute;top:calc(50% - 10px);left:50%;transform:translate(-50%) translateY(-50%);cursor:pointer;transition:.5s;opacity:.5}.HelpCenter-video video{opacity:1}.HelpCenter-video:hover video{opacity:.5;cursor:pointer}.HelpCenter-video:hover i{opacity:1}.HelpCenter-download img{width:45px;height:45px}.HelpCenter .help-title{background-color:#3192e1e0;color:#fff}.HelpCenter .help-title .tit-name{font-size:14px;font-weight:700}.HelpCenter .help-content{padding:0}.HelpCenter .HelpCenter-comment .help-content{padding:0;text-align:center}.HelpCenter-video,.HelpCenter-download,.HelpCenter-comment{margin-bottom:15px}.tn-l-help-wrapper{display:flex;overflow:auto;max-height:calc(100vh - 60px)}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "fitContent", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: i6.Sidebar, selector: "p-sidebar", inputs: ["appendTo", "blockScroll", "style", "styleClass", "ariaCloseLabel", "autoZIndex", "baseZIndex", "modal", "dismissible", "showCloseIcon", "closeOnEscape", "transitionOptions", "visible", "position", "fullScreen"], outputs: ["onShow", "onHide", "visibleChange"] }, { kind: "component", type: i7.TnCustomScrollbarComponent, selector: "tn-custom-scrollbar", inputs: ["style", "useDefaultScrollBar", "autoMode", "class", "config", "whiteBackGround", "showScrollHorizontal"], outputs: ["scrollY", "scrollUp", "scrollDown", "scrollLeft", "scrollRight", "scrollYReachEnd", "scrollYReachStart", "scrollXReachEnd", "scrollXReachStart"] }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }] });
60
+ TnAppHelpComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: TnAppHelpComponent, selector: "li[tn-app-help]", providers: [ComponentContextService], usesInheritance: true, ngImport: i0, template: "<a href=\"javascript:;\" tabindex=\"9\" (click)=\"showHelper()\" style=\"height: 30px;\" pTooltip=\"Tr\u1EE3 gi\u00FAp\"\r\n tooltipPosition=\"bottom\">\r\n <span class=\"topbar-icon-left\">\r\n <!-- <svg focusable=\"false\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\r\n class=\"topbar-icon animated swing svgmodule\">\r\n <path fill=\"currentColor\"\r\n d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 448c-110.532 0-200-89.431-200-200 0-110.495 89.472-200 200-200 110.491 0 200 89.471 200 200 0 110.53-89.431 200-200 200zm107.244-255.2c0 67.052-72.421 68.084-72.421 92.863V300c0 6.627-5.373 12-12 12h-45.647c-6.627 0-12-5.373-12-12v-8.659c0-35.745 27.1-50.034 47.579-61.516 17.561-9.845 28.324-16.541 28.324-29.579 0-17.246-21.999-28.693-39.784-28.693-23.189 0-33.894 10.977-48.942 29.969-4.057 5.12-11.46 6.071-16.666 2.124l-27.824-21.098c-5.107-3.872-6.251-11.066-2.644-16.363C184.846 131.491 214.94 112 261.794 112c49.071 0 101.45 38.304 101.45 88.8zM298 368c0 23.159-18.841 42-42 42s-42-18.841-42-42 18.841-42 42-42 42 18.841 42 42z\"\r\n class=\"\"></path>\r\n </svg> -->\r\n <i class=\"topbar-icon animated swing pi pi-question-circle\"></i>\r\n </span>\r\n <span class=\"topbar-item-name\">{{ \"Tr\u1EE3 gi\u00FAp\" | translate }}</span>\r\n</a>\r\n\r\n<p-sidebar [styleClass]=\"'HelperSlideBar tn-l-sidebar-wrapper'\" [(visible)]=\"display\" position=\"right\"\r\n [appendTo]=\"'body'\" [style]=\"{ width: '30em', border: 0, 'max-width': '100vw' }\">\r\n <div style=\"background-color: #fff; box-shadow: 0 1px 5px 0 rgba(0, 0, 0, 0.35);\">\r\n <h1 style=\"font-size: 16px; color: #212529;\">Trung t\u00E2m tr\u1EE3 gi\u00FAp</h1>\r\n </div>\r\n\r\n <div class=\"tn-l-help-wrapper\">\r\n <tn-custom-scrollbar #scrollbar [style]=\"{'max-height':'calc(100vh - 50px)'}\">\r\n <div class=\"HelpCenter\">\r\n <div class=\"grid\" style=\"margin-top:10px; margin-bottom: 25px;\">\r\n <div class=\"col-8\">\r\n <p style=\"font-weight:bold;font-size: 16px;margin-bottom: 8px; margin-top:20px\">\r\n {{config.expertName}}\r\n </p>\r\n <p style=\"margin: 0px;\">\r\n <a [href]=\"config.hrefTelephone\"><i class=\"fas fa-phone\"\r\n style=\"margin-right: 8px; width: 15px\"></i>{{config.phoneNumber}}</a>\r\n </p>\r\n <p style=\"margin-top: 8px;\">\r\n <a [href]=\"config.hrefMail\"><i class=\"fas fa-envelope\"\r\n style=\"margin-right: 8px; width: 15px\"></i>{{config.mail}}</a>\r\n </p>\r\n </div>\r\n <div class=\"col-4\">\r\n <img [src]=\"config.logoCompany\" style=\"width: 100%; float: right; opacity: 0.7;\" />\r\n </div>\r\n </div>\r\n <div class=\"grid p-m-0 HelpCenter-download\" style=\"margin-top: 0px; margin-bottom: 40px;\">\r\n <div class=\"col-12 help-title\">\r\n <span class=\"tit-name\">T\u00E0i li\u1EC7u - H\u01B0\u1EDBng d\u1EABn s\u1EED d\u1EE5ng c\u00E1c ph\u00E2n h\u1EC7 </span>\r\n </div>\r\n <div class=\"tn-l-pmti grid\"\r\n style=\"border: 1px solid #ccc; width: 100%;margin:0;margin-bottom:20px;\">\r\n <div *ngFor=\"let item of helps\" class=\"col-4 help-content\">\r\n <p style=\"margin-top: 18px; text-align: center;\">\r\n <a target=\"_blank\" [href]=\"item.href\"\r\n style=\"display: inline-block; text-align: center;\">\r\n <i class=\"{{item.icon}} app-switcher-item-icon\"\r\n style=\"color: rgb(44 126 210);font-size: 3.5em;padding-bottom: 10px;\"></i>\r\n <br />{{item.label}}\r\n </a>\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid p-m-0 HelpCenter-video\" style=\"margin-top: 0px\">\r\n <div class=\"col-12 help-title\">\r\n <span class=\"tit-name\">Xem h\u01B0\u1EDBng d\u1EABn</span>\r\n </div>\r\n <div class=\"col-12 help-content\">\r\n <h2 *ngIf=\"showHelperCurrentPageState\" style=\"margin-top: 0px\">\r\n <a href=\"javascript:;\" (click)=\"showHelperCurrentPage(null)\"\r\n style=\"display:inline-block; position: relative; border-top: 1px solid #52abf5;\">\r\n <img src=\"/assets/images/bgvideo.png\" alt=\"screen shot\"\r\n style=\"width:100%; filter: brightness(0.88);\" />\r\n <i class=\"fab fa-youtube fa-2x\"></i>\r\n </a>\r\n </h2>\r\n </div>\r\n </div>\r\n\r\n <div class=\"grid p-m-0 HelpCenter-download\" style=\"margin-top: 0px; margin-bottom: 40px;\">\r\n <div class=\"col-12 help-title\">\r\n <span class=\"tit-name\">Ph\u1EA7n m\u1EC1m ti\u1EC7n \u00EDch</span>\r\n </div>\r\n <div class=\"tn-l-pmti\" style=\"border: 1px solid #ccc; width: 100%\">\r\n <div class=\"col-4 help-content\">\r\n <p style=\"margin-top: 18px; text-align: center;\">\r\n <a target=\"_blank\" [href]=\"config.linkDownloadClientApp\"\r\n style=\"display: inline-block; text-align: center;\">\r\n <img src=\"/assets/images/icon-appTN64x64.png\" />\r\n <br />TN Client\r\n </a>\r\n </p>\r\n </div>\r\n <div class=\"col-4 help-content\">\r\n <p style=\"margin-top: 18px; text-align: center;\">\r\n <a target=\"_blank\" href=\"https://ultraviewer.net/vi/UltraViewer_setup_6.2_vi.exe\"\r\n style=\"display: inline-block; text-align: center;\">\r\n <img src=\"/assets/images/ultraviewer.ico\" />\r\n <br />Ultraviewer\r\n </a>\r\n </p>\r\n </div>\r\n <div class=\"col-4 help-content\">\r\n <p style=\"margin-top: 18px; text-align: center;\">\r\n <a target=\"_blank\" href=\"https://www.teamviewer.com/vi/tai-xuong-tu-dong-teamviewer/\"\r\n style=\"display: inline-block; text-align: center;\">\r\n <img src=\"/assets/images/icon-teamviewer.png\" />\r\n <br />Teamviewer\r\n </a>\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </tn-custom-scrollbar>\r\n </div>\r\n</p-sidebar>", styles: [".HelpCenter{color:#555;padding:0 20px}::ng-deep .tn-l-sidebar-wrapper{padding:0}.tn-l-pmti{display:flex}.HelpCenter p:first-child img{margin-bottom:10px}::ng-deep .HelperSlideBar .p-sidebar-content>button{margin-top:10px;margin-right:14px;font-size:20px;color:#212529;cursor:pointer}::ng-deep .ui-sidebar{padding:0}::ng-deep .HelperSlideBar h1{margin:0;height:50px;line-height:50px;text-transform:uppercase;padding-left:20px}.HelpCenter-video{position:relative}.HelpCenter-video i{color:#454545;position:absolute;top:calc(50% - 10px);left:50%;transform:translate(-50%) translateY(-50%);cursor:pointer;transition:.5s;opacity:.5}.HelpCenter-video video{opacity:1}.HelpCenter-video:hover video{opacity:.5;cursor:pointer}.HelpCenter-video:hover i{opacity:1}.HelpCenter-download img{width:45px;height:45px}.HelpCenter .help-title{background-color:#3192e1e0;color:#fff}.HelpCenter .help-title .tit-name{font-size:14px;font-weight:700}.HelpCenter .help-content{padding:0}.HelpCenter .HelpCenter-comment .help-content{padding:0;text-align:center}.HelpCenter-video,.HelpCenter-download,.HelpCenter-comment{margin-bottom:15px}.tn-l-help-wrapper{display:flex;overflow:auto;max-height:calc(100vh - 60px)}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "fitContent", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: i6.Sidebar, selector: "p-sidebar", inputs: ["appendTo", "blockScroll", "style", "styleClass", "ariaCloseLabel", "autoZIndex", "baseZIndex", "modal", "dismissible", "showCloseIcon", "closeOnEscape", "transitionOptions", "visible", "position", "fullScreen"], outputs: ["onShow", "onHide", "visibleChange"] }, { kind: "component", type: i7.TnCustomScrollbarComponent, selector: "tn-custom-scrollbar", inputs: ["style", "useDefaultScrollBar", "autoMode", "class", "config", "whiteBackGround", "showScrollHorizontal"], outputs: ["scrollY", "scrollUp", "scrollDown", "scrollLeft", "scrollRight", "scrollYReachEnd", "scrollYReachStart", "scrollXReachEnd", "scrollXReachStart"] }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }] });
61
61
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: TnAppHelpComponent, decorators: [{
62
62
  type: Component,
63
- args: [{ selector: 'li[tn-app-help]', providers: [ComponentContextService], template: "<a href=\"javascript:;\" tabindex=\"9\" (click)=\"showHelper()\" style=\"height: 30px;\" pTooltip=\"Tr\u1EE3 gi\u00FAp\"\r\n tooltipPosition=\"bottom\">\r\n <span class=\"topbar-icon-left\">\r\n <!-- <svg focusable=\"false\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\r\n class=\"topbar-icon animated swing svgmodule\">\r\n <path fill=\"currentColor\"\r\n d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 448c-110.532 0-200-89.431-200-200 0-110.495 89.472-200 200-200 110.491 0 200 89.471 200 200 0 110.53-89.431 200-200 200zm107.244-255.2c0 67.052-72.421 68.084-72.421 92.863V300c0 6.627-5.373 12-12 12h-45.647c-6.627 0-12-5.373-12-12v-8.659c0-35.745 27.1-50.034 47.579-61.516 17.561-9.845 28.324-16.541 28.324-29.579 0-17.246-21.999-28.693-39.784-28.693-23.189 0-33.894 10.977-48.942 29.969-4.057 5.12-11.46 6.071-16.666 2.124l-27.824-21.098c-5.107-3.872-6.251-11.066-2.644-16.363C184.846 131.491 214.94 112 261.794 112c49.071 0 101.45 38.304 101.45 88.8zM298 368c0 23.159-18.841 42-42 42s-42-18.841-42-42 18.841-42 42-42 42 18.841 42 42z\"\r\n class=\"\"></path>\r\n </svg> -->\r\n <i class=\"topbar-icon animated swing pi pi-question-circle\"></i>\r\n </span>\r\n <span class=\"topbar-item-name\">{{ \"Tr\u1EE3 gi\u00FAp\" | translate }}</span>\r\n</a>\r\n\r\n<p-sidebar [styleClass]=\"'HelperSlideBar tn-l-sidebar-wrapper'\" [(visible)]=\"display\" position=\"right\"\r\n [appendTo]=\"'body'\" [style]=\"{ width: '30em', border: 0, 'max-width': '100vw' }\">\r\n <div style=\"background-color: #fff; box-shadow: 0 1px 5px 0 rgba(0, 0, 0, 0.35);\">\r\n <h1 style=\"font-size: 16px; color: #212529;\">Trung t\u00E2m tr\u1EE3 gi\u00FAp</h1>\r\n </div>\r\n\r\n <div class=\"tn-l-help-wrapper\">\r\n <tn-custom-scrollbar #scrollbar [style]=\"{'max-height':'calc(100vh - 50px)'}\">\r\n <div class=\"HelpCenter\">\r\n <div class=\"p-grid\" style=\"margin-top:10px; margin-bottom: 25px;\">\r\n <div class=\"p-col-8\">\r\n <p style=\"font-weight:bold;font-size: 16px;margin-bottom: 8px; margin-top:20px\">\r\n {{config.expertName}}\r\n </p>\r\n <p style=\"margin: 0px;\">\r\n <a [href]=\"config.hrefTelephone\"><i class=\"fas fa-phone\"\r\n style=\"margin-right: 8px; width: 15px\"></i>{{config.phoneNumber}}</a>\r\n </p>\r\n <p style=\"margin-top: 8px;\">\r\n <a [href]=\"config.hrefMail\"><i class=\"fas fa-envelope\"\r\n style=\"margin-right: 8px; width: 15px\"></i>{{config.mail}}</a>\r\n </p>\r\n </div>\r\n <div class=\"p-col-4\">\r\n <img [src]=\"config.logoCompany\" style=\"width: 100%; float: right; opacity: 0.7;\" />\r\n </div>\r\n </div>\r\n <div class=\"p-grid p-m-0 HelpCenter-download\" style=\"margin-top: 0px; margin-bottom: 40px;\">\r\n <div class=\"p-col-12 help-title\">\r\n <span class=\"tit-name\">T\u00E0i li\u1EC7u - H\u01B0\u1EDBng d\u1EABn s\u1EED d\u1EE5ng c\u00E1c ph\u00E2n h\u1EC7 </span>\r\n </div>\r\n <div class=\"tn-l-pmti p-grid\"\r\n style=\"border: 1px solid #ccc; width: 100%;margin:0;margin-bottom:20px;\">\r\n <div *ngFor=\"let item of helps\" class=\"p-col-4 help-content\">\r\n <p style=\"margin-top: 18px; text-align: center;\">\r\n <a target=\"_blank\" [href]=\"item.href\"\r\n style=\"display: inline-block; text-align: center;\">\r\n <i class=\"{{item.icon}} app-switcher-item-icon\"\r\n style=\"color: rgb(44 126 210);font-size: 3.5em;padding-bottom: 10px;\"></i>\r\n <br />{{item.label}}\r\n </a>\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"p-grid p-m-0 HelpCenter-video\" style=\"margin-top: 0px\">\r\n <div class=\"p-col-12 help-title\">\r\n <span class=\"tit-name\">Xem h\u01B0\u1EDBng d\u1EABn</span>\r\n </div>\r\n <div class=\"p-col-12 help-content\">\r\n <h2 *ngIf=\"showHelperCurrentPageState\" style=\"margin-top: 0px\">\r\n <a href=\"javascript:;\" (click)=\"showHelperCurrentPage(null)\"\r\n style=\"display:inline-block; position: relative; border-top: 1px solid #52abf5;\">\r\n <img src=\"/assets/images/bgvideo.png\" alt=\"screen shot\"\r\n style=\"width:100%; filter: brightness(0.88);\" />\r\n <i class=\"fab fa-youtube fa-2x\"></i>\r\n </a>\r\n </h2>\r\n </div>\r\n </div>\r\n\r\n <div class=\"p-grid p-m-0 HelpCenter-download\" style=\"margin-top: 0px; margin-bottom: 40px;\">\r\n <div class=\"p-col-12 help-title\">\r\n <span class=\"tit-name\">Ph\u1EA7n m\u1EC1m ti\u1EC7n \u00EDch</span>\r\n </div>\r\n <div class=\"tn-l-pmti\" style=\"border: 1px solid #ccc; width: 100%\">\r\n <div class=\"p-col-4 help-content\">\r\n <p style=\"margin-top: 18px; text-align: center;\">\r\n <a target=\"_blank\" [href]=\"config.linkDownloadClientApp\"\r\n style=\"display: inline-block; text-align: center;\">\r\n <img src=\"/assets/images/icon-appTN64x64.png\" />\r\n <br />TN Client\r\n </a>\r\n </p>\r\n </div>\r\n <div class=\"p-col-4 help-content\">\r\n <p style=\"margin-top: 18px; text-align: center;\">\r\n <a target=\"_blank\" href=\"https://ultraviewer.net/vi/UltraViewer_setup_6.2_vi.exe\"\r\n style=\"display: inline-block; text-align: center;\">\r\n <img src=\"/assets/images/ultraviewer.ico\" />\r\n <br />Ultraviewer\r\n </a>\r\n </p>\r\n </div>\r\n <div class=\"p-col-4 help-content\">\r\n <p style=\"margin-top: 18px; text-align: center;\">\r\n <a target=\"_blank\" href=\"https://www.teamviewer.com/vi/tai-xuong-tu-dong-teamviewer/\"\r\n style=\"display: inline-block; text-align: center;\">\r\n <img src=\"/assets/images/icon-teamviewer.png\" />\r\n <br />Teamviewer\r\n </a>\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </tn-custom-scrollbar>\r\n </div>\r\n</p-sidebar>", styles: [".HelpCenter{color:#555;padding:0 20px}::ng-deep .tn-l-sidebar-wrapper{padding:0}.tn-l-pmti{display:flex}.HelpCenter p:first-child img{margin-bottom:10px}::ng-deep .HelperSlideBar .p-sidebar-content>button{margin-top:10px;margin-right:14px;font-size:20px;color:#212529;cursor:pointer}::ng-deep .ui-sidebar{padding:0}::ng-deep .HelperSlideBar h1{margin:0;height:50px;line-height:50px;text-transform:uppercase;padding-left:20px}.HelpCenter-video{position:relative}.HelpCenter-video i{color:#454545;position:absolute;top:calc(50% - 10px);left:50%;transform:translate(-50%) translateY(-50%);cursor:pointer;transition:.5s;opacity:.5}.HelpCenter-video video{opacity:1}.HelpCenter-video:hover video{opacity:.5;cursor:pointer}.HelpCenter-video:hover i{opacity:1}.HelpCenter-download img{width:45px;height:45px}.HelpCenter .help-title{background-color:#3192e1e0;color:#fff}.HelpCenter .help-title .tit-name{font-size:14px;font-weight:700}.HelpCenter .help-content{padding:0}.HelpCenter .HelpCenter-comment .help-content{padding:0;text-align:center}.HelpCenter-video,.HelpCenter-download,.HelpCenter-comment{margin-bottom:15px}.tn-l-help-wrapper{display:flex;overflow:auto;max-height:calc(100vh - 60px)}\n"] }]
63
+ args: [{ selector: 'li[tn-app-help]', providers: [ComponentContextService], template: "<a href=\"javascript:;\" tabindex=\"9\" (click)=\"showHelper()\" style=\"height: 30px;\" pTooltip=\"Tr\u1EE3 gi\u00FAp\"\r\n tooltipPosition=\"bottom\">\r\n <span class=\"topbar-icon-left\">\r\n <!-- <svg focusable=\"false\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\r\n class=\"topbar-icon animated swing svgmodule\">\r\n <path fill=\"currentColor\"\r\n d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 448c-110.532 0-200-89.431-200-200 0-110.495 89.472-200 200-200 110.491 0 200 89.471 200 200 0 110.53-89.431 200-200 200zm107.244-255.2c0 67.052-72.421 68.084-72.421 92.863V300c0 6.627-5.373 12-12 12h-45.647c-6.627 0-12-5.373-12-12v-8.659c0-35.745 27.1-50.034 47.579-61.516 17.561-9.845 28.324-16.541 28.324-29.579 0-17.246-21.999-28.693-39.784-28.693-23.189 0-33.894 10.977-48.942 29.969-4.057 5.12-11.46 6.071-16.666 2.124l-27.824-21.098c-5.107-3.872-6.251-11.066-2.644-16.363C184.846 131.491 214.94 112 261.794 112c49.071 0 101.45 38.304 101.45 88.8zM298 368c0 23.159-18.841 42-42 42s-42-18.841-42-42 18.841-42 42-42 42 18.841 42 42z\"\r\n class=\"\"></path>\r\n </svg> -->\r\n <i class=\"topbar-icon animated swing pi pi-question-circle\"></i>\r\n </span>\r\n <span class=\"topbar-item-name\">{{ \"Tr\u1EE3 gi\u00FAp\" | translate }}</span>\r\n</a>\r\n\r\n<p-sidebar [styleClass]=\"'HelperSlideBar tn-l-sidebar-wrapper'\" [(visible)]=\"display\" position=\"right\"\r\n [appendTo]=\"'body'\" [style]=\"{ width: '30em', border: 0, 'max-width': '100vw' }\">\r\n <div style=\"background-color: #fff; box-shadow: 0 1px 5px 0 rgba(0, 0, 0, 0.35);\">\r\n <h1 style=\"font-size: 16px; color: #212529;\">Trung t\u00E2m tr\u1EE3 gi\u00FAp</h1>\r\n </div>\r\n\r\n <div class=\"tn-l-help-wrapper\">\r\n <tn-custom-scrollbar #scrollbar [style]=\"{'max-height':'calc(100vh - 50px)'}\">\r\n <div class=\"HelpCenter\">\r\n <div class=\"grid\" style=\"margin-top:10px; margin-bottom: 25px;\">\r\n <div class=\"col-8\">\r\n <p style=\"font-weight:bold;font-size: 16px;margin-bottom: 8px; margin-top:20px\">\r\n {{config.expertName}}\r\n </p>\r\n <p style=\"margin: 0px;\">\r\n <a [href]=\"config.hrefTelephone\"><i class=\"fas fa-phone\"\r\n style=\"margin-right: 8px; width: 15px\"></i>{{config.phoneNumber}}</a>\r\n </p>\r\n <p style=\"margin-top: 8px;\">\r\n <a [href]=\"config.hrefMail\"><i class=\"fas fa-envelope\"\r\n style=\"margin-right: 8px; width: 15px\"></i>{{config.mail}}</a>\r\n </p>\r\n </div>\r\n <div class=\"col-4\">\r\n <img [src]=\"config.logoCompany\" style=\"width: 100%; float: right; opacity: 0.7;\" />\r\n </div>\r\n </div>\r\n <div class=\"grid p-m-0 HelpCenter-download\" style=\"margin-top: 0px; margin-bottom: 40px;\">\r\n <div class=\"col-12 help-title\">\r\n <span class=\"tit-name\">T\u00E0i li\u1EC7u - H\u01B0\u1EDBng d\u1EABn s\u1EED d\u1EE5ng c\u00E1c ph\u00E2n h\u1EC7 </span>\r\n </div>\r\n <div class=\"tn-l-pmti grid\"\r\n style=\"border: 1px solid #ccc; width: 100%;margin:0;margin-bottom:20px;\">\r\n <div *ngFor=\"let item of helps\" class=\"col-4 help-content\">\r\n <p style=\"margin-top: 18px; text-align: center;\">\r\n <a target=\"_blank\" [href]=\"item.href\"\r\n style=\"display: inline-block; text-align: center;\">\r\n <i class=\"{{item.icon}} app-switcher-item-icon\"\r\n style=\"color: rgb(44 126 210);font-size: 3.5em;padding-bottom: 10px;\"></i>\r\n <br />{{item.label}}\r\n </a>\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid p-m-0 HelpCenter-video\" style=\"margin-top: 0px\">\r\n <div class=\"col-12 help-title\">\r\n <span class=\"tit-name\">Xem h\u01B0\u1EDBng d\u1EABn</span>\r\n </div>\r\n <div class=\"col-12 help-content\">\r\n <h2 *ngIf=\"showHelperCurrentPageState\" style=\"margin-top: 0px\">\r\n <a href=\"javascript:;\" (click)=\"showHelperCurrentPage(null)\"\r\n style=\"display:inline-block; position: relative; border-top: 1px solid #52abf5;\">\r\n <img src=\"/assets/images/bgvideo.png\" alt=\"screen shot\"\r\n style=\"width:100%; filter: brightness(0.88);\" />\r\n <i class=\"fab fa-youtube fa-2x\"></i>\r\n </a>\r\n </h2>\r\n </div>\r\n </div>\r\n\r\n <div class=\"grid p-m-0 HelpCenter-download\" style=\"margin-top: 0px; margin-bottom: 40px;\">\r\n <div class=\"col-12 help-title\">\r\n <span class=\"tit-name\">Ph\u1EA7n m\u1EC1m ti\u1EC7n \u00EDch</span>\r\n </div>\r\n <div class=\"tn-l-pmti\" style=\"border: 1px solid #ccc; width: 100%\">\r\n <div class=\"col-4 help-content\">\r\n <p style=\"margin-top: 18px; text-align: center;\">\r\n <a target=\"_blank\" [href]=\"config.linkDownloadClientApp\"\r\n style=\"display: inline-block; text-align: center;\">\r\n <img src=\"/assets/images/icon-appTN64x64.png\" />\r\n <br />TN Client\r\n </a>\r\n </p>\r\n </div>\r\n <div class=\"col-4 help-content\">\r\n <p style=\"margin-top: 18px; text-align: center;\">\r\n <a target=\"_blank\" href=\"https://ultraviewer.net/vi/UltraViewer_setup_6.2_vi.exe\"\r\n style=\"display: inline-block; text-align: center;\">\r\n <img src=\"/assets/images/ultraviewer.ico\" />\r\n <br />Ultraviewer\r\n </a>\r\n </p>\r\n </div>\r\n <div class=\"col-4 help-content\">\r\n <p style=\"margin-top: 18px; text-align: center;\">\r\n <a target=\"_blank\" href=\"https://www.teamviewer.com/vi/tai-xuong-tu-dong-teamviewer/\"\r\n style=\"display: inline-block; text-align: center;\">\r\n <img src=\"/assets/images/icon-teamviewer.png\" />\r\n <br />Teamviewer\r\n </a>\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </tn-custom-scrollbar>\r\n </div>\r\n</p-sidebar>", styles: [".HelpCenter{color:#555;padding:0 20px}::ng-deep .tn-l-sidebar-wrapper{padding:0}.tn-l-pmti{display:flex}.HelpCenter p:first-child img{margin-bottom:10px}::ng-deep .HelperSlideBar .p-sidebar-content>button{margin-top:10px;margin-right:14px;font-size:20px;color:#212529;cursor:pointer}::ng-deep .ui-sidebar{padding:0}::ng-deep .HelperSlideBar h1{margin:0;height:50px;line-height:50px;text-transform:uppercase;padding-left:20px}.HelpCenter-video{position:relative}.HelpCenter-video i{color:#454545;position:absolute;top:calc(50% - 10px);left:50%;transform:translate(-50%) translateY(-50%);cursor:pointer;transition:.5s;opacity:.5}.HelpCenter-video video{opacity:1}.HelpCenter-video:hover video{opacity:.5;cursor:pointer}.HelpCenter-video:hover i{opacity:1}.HelpCenter-download img{width:45px;height:45px}.HelpCenter .help-title{background-color:#3192e1e0;color:#fff}.HelpCenter .help-title .tit-name{font-size:14px;font-weight:700}.HelpCenter .help-content{padding:0}.HelpCenter .HelpCenter-comment .help-content{padding:0;text-align:center}.HelpCenter-video,.HelpCenter-download,.HelpCenter-comment{margin-bottom:15px}.tn-l-help-wrapper{display:flex;overflow:auto;max-height:calc(100vh - 60px)}\n"] }]
64
64
  }], ctorParameters: function () { return [{ type: i1.PathNameService }, { type: i2.DomService }, { type: i0.Injector }, { type: i3.EnvironmentService }]; } });
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG4tYXBwLWhlbHAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkL3NyYy9saWIvY29tcG9uZW50cy90bi1hcHAtaGVscC90bi1hcHAtaGVscC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL3RuLWFwcC1oZWxwL3RuLWFwcC1oZWxwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUdsRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQzs7Ozs7Ozs7OztBQVNqRyxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsYUFBYTtJQU1qRCxZQUNZLGdCQUFpQyxFQUNqQyxXQUF1QixFQUNyQixTQUFtQixFQUNuQixtQkFBdUM7UUFFakQsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBTFQscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFpQjtRQUNqQyxnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUNyQixjQUFTLEdBQVQsU0FBUyxDQUFVO1FBQ25CLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBb0I7UUFUckQsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNoQiwrQkFBMEIsR0FBRyxJQUFJLENBQUM7UUFDbEMsV0FBTSxHQUFRLEVBQUUsQ0FBQztRQUNqQixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBU1AsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGdDQUFnQyxFQUFFLENBQUM7UUFDckYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGdDQUFnQyxFQUFFLENBQUM7UUFDdEYsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRTtZQUN6QixJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsR0FBRyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDaEU7YUFDSTtZQUNELElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxHQUFHLG9CQUFvQixDQUFDO1NBQ3BEO1FBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLHlCQUF5QixFQUFFLENBQUM7UUFDeEUsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRTtZQUNsQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsR0FBRyxVQUFVLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDdkQ7YUFDSTtZQUNELElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLG9CQUFvQixDQUFDO1NBQy9DO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLHlCQUF5QixFQUFFLENBQUM7UUFDL0UsSUFBSSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUN4RixNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQy9FLElBQUksbUJBQW1CLEVBQUU7WUFDckIsSUFBSSxDQUFDLEtBQUssR0FBRyxtQkFBbUIsQ0FBQztTQUNwQztJQUNMLENBQUM7SUFFRCxRQUFRO0lBQ1IsQ0FBQztJQUVELFVBQVU7UUFDTixJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUNqQyxDQUFDO0lBRUQscUJBQXFCLENBQUMsT0FBbUM7UUFDckQsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDckIsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksQ0FBQyxXQUFXLENBQUMscUJBQXFCLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUN2RSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDWixDQUFDOzsrR0FqRFEsa0JBQWtCO21HQUFsQixrQkFBa0IsMENBRmhCLENBQUMsdUJBQXVCLENBQUMsaURDWnhDLGtzUEFnSFk7MkZEbEdDLGtCQUFrQjtrQkFOOUIsU0FBUzsrQkFDSSxpQkFBaUIsYUFHaEIsQ0FBQyx1QkFBdUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0b3IsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRDb250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uL2FwcC1jb250ZXh0L2NvbXBvbmVudC1jb250ZXh0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRCYXNlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9iYXNlL2NvbXBvbmVudC1iYXNlJztcclxuaW1wb3J0IHsgRG9tU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RvbS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRW52aXJvbm1lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZW52aXJvbm1lbnQuc2VydmljZSc7XHJcbmltcG9ydCB7IEhlbHBlckN1cnJlbnRQYWdlQ29tcG9uZW50IH0gZnJvbSAnLi9oZWxwZXItY3VycmVudC1wYWdlL2hlbHBlci1jdXJyZW50LXBhZ2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUGF0aE5hbWVTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9wYXRoLW5hbWUuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnbGlbdG4tYXBwLWhlbHBdJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi90bi1hcHAtaGVscC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi90bi1hcHAtaGVscC5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgcHJvdmlkZXJzOiBbQ29tcG9uZW50Q29udGV4dFNlcnZpY2VdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUbkFwcEhlbHBDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRCYXNlIGltcGxlbWVudHMgT25Jbml0IHtcclxuICAgIGRpc3BsYXkgPSBmYWxzZTtcclxuICAgIHNob3dIZWxwZXJDdXJyZW50UGFnZVN0YXRlID0gdHJ1ZTtcclxuICAgIGNvbmZpZzogYW55ID0ge307XHJcbiAgICBoZWxwcyA9IFtdO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgX3BhdGhOYW1lU2VydmljZTogUGF0aE5hbWVTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX2RvbVNlcnZpY2U6IERvbVNlcnZpY2UsXHJcbiAgICAgICAgcHJvdGVjdGVkIF9pbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICAgICAgcHJvdGVjdGVkIF9lbnZpcm9ubWVudFNlcnZpY2U6IEVudmlyb25tZW50U2VydmljZVxyXG4gICAgKSB7XHJcbiAgICAgICAgc3VwZXIoX2luamVjdG9yKTtcclxuICAgICAgICB0aGlzLmNvbmZpZy5leHBlcnROYW1lID0gdGhpcy5fZW52aXJvbm1lbnRTZXJ2aWNlLmdldEhlbHBDb25maWdfRXhwZXJ0UGhvbmVOdW1tYmVyKCk7XHJcbiAgICAgICAgdGhpcy5jb25maWcucGhvbmVOdW1iZXIgPSB0aGlzLl9lbnZpcm9ubWVudFNlcnZpY2UuZ2V0SGVscENvbmZpZ19FeHBlcnRQaG9uZU51bW1iZXIoKTtcclxuICAgICAgICBpZiAodGhpcy5jb25maWcucGhvbmVOdW1iZXIpIHtcclxuICAgICAgICAgICAgdGhpcy5jb25maWcuaHJlZlRlbGVwaG9uZSA9IGB0ZWw6JHt0aGlzLmNvbmZpZy5waG9uZU51bWJlcn1gO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5jb25maWcuaHJlZlRlbGVwaG9uZSA9IGBqYXZhc2NyaXB0OnZvaWQoMClgO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5jb25maWcubWFpbCA9IHRoaXMuX2Vudmlyb25tZW50U2VydmljZS5nZXRIZWxwQ29uZmlnX0V4cGVydEVtYWlsKCk7XHJcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLm1haWwpIHtcclxuICAgICAgICAgICAgdGhpcy5jb25maWcuaHJlZk1haWwgPSBgbWFpbHRvOiR7dGhpcy5jb25maWcubWFpbH1gO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5jb25maWcuaHJlZk1haWwgPSBgamF2YXNjcmlwdDp2b2lkKDApYDtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb25maWcubG9nb0NvbXBhbnkgPSB0aGlzLl9lbnZpcm9ubWVudFNlcnZpY2UuZ2V0SGVscENvbmZpZ19Mb2dvQ29tcGFueSgpO1xyXG4gICAgICAgIHRoaXMuY29uZmlnLmxpbmtEb3dubG9hZENsaWVudEFwcCA9IHRoaXMuX2Vudmlyb25tZW50U2VydmljZS5nZXRMaW5rRG93bmxvYWRDbGllbnRBcHAoKTtcclxuICAgICAgICBjb25zdCBoZWxwQ29uZmlnRG9jdW1lbnRzID0gdGhpcy5fZW52aXJvbm1lbnRTZXJ2aWNlLmdldEhlbHBDb25maWdfRG9jdW1lbnRzKCk7XHJcbiAgICAgICAgaWYgKGhlbHBDb25maWdEb2N1bWVudHMpIHtcclxuICAgICAgICAgICAgdGhpcy5oZWxwcyA9IGhlbHBDb25maWdEb2N1bWVudHM7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgfVxyXG5cclxuICAgIHNob3dIZWxwZXIoKSB7XHJcbiAgICAgICAgdGhpcy5kaXNwbGF5ID0gIXRoaXMuZGlzcGxheTtcclxuICAgIH1cclxuXHJcbiAgICBzaG93SGVscGVyQ3VycmVudFBhZ2UoY29udHJvbDogSGVscGVyQ3VycmVudFBhZ2VDb21wb25lbnQpIHtcclxuICAgICAgICB0aGlzLmRpc3BsYXkgPSBmYWxzZTtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5fZG9tU2VydmljZS5hcHBlbmRDb21wb25lbnRUb0JvZHkoSGVscGVyQ3VycmVudFBhZ2VDb21wb25lbnQpO1xyXG4gICAgICAgIH0sIDUwMCk7XHJcbiAgICB9XHJcbn1cclxuIiwiPGEgaHJlZj1cImphdmFzY3JpcHQ6O1wiIHRhYmluZGV4PVwiOVwiIChjbGljayk9XCJzaG93SGVscGVyKClcIiBzdHlsZT1cImhlaWdodDogMzBweDtcIiBwVG9vbHRpcD1cIlRy4bujIGdpw7pwXCJcclxuICAgIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJ0b3BiYXItaWNvbi1sZWZ0XCI+XHJcbiAgICAgICAgPCEtLSA8c3ZnIGZvY3VzYWJsZT1cImZhbHNlXCIgcm9sZT1cImltZ1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDUxMiA1MTJcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInRvcGJhci1pY29uIGFuaW1hdGVkIHN3aW5nIHN2Z21vZHVsZVwiPlxyXG4gICAgICAgICAgICA8cGF0aCBmaWxsPVwiY3VycmVudENvbG9yXCJcclxuICAgICAgICAgICAgICAgIGQ9XCJNMjU2IDhDMTE5LjA0MyA4IDggMTE5LjA4MyA4IDI1NmMwIDEzNi45OTcgMTExLjA0MyAyNDggMjQ4IDI0OHMyNDgtMTExLjAwMyAyNDgtMjQ4QzUwNCAxMTkuMDgzIDM5Mi45NTcgOCAyNTYgOHptMCA0NDhjLTExMC41MzIgMC0yMDAtODkuNDMxLTIwMC0yMDAgMC0xMTAuNDk1IDg5LjQ3Mi0yMDAgMjAwLTIwMCAxMTAuNDkxIDAgMjAwIDg5LjQ3MSAyMDAgMjAwIDAgMTEwLjUzLTg5LjQzMSAyMDAtMjAwIDIwMHptMTA3LjI0NC0yNTUuMmMwIDY3LjA1Mi03Mi40MjEgNjguMDg0LTcyLjQyMSA5Mi44NjNWMzAwYzAgNi42MjctNS4zNzMgMTItMTIgMTJoLTQ1LjY0N2MtNi42MjcgMC0xMi01LjM3My0xMi0xMnYtOC42NTljMC0zNS43NDUgMjcuMS01MC4wMzQgNDcuNTc5LTYxLjUxNiAxNy41NjEtOS44NDUgMjguMzI0LTE2LjU0MSAyOC4zMjQtMjkuNTc5IDAtMTcuMjQ2LTIxLjk5OS0yOC42OTMtMzkuNzg0LTI4LjY5My0yMy4xODkgMC0zMy44OTQgMTAuOTc3LTQ4Ljk0MiAyOS45NjktNC4wNTcgNS4xMi0xMS40NiA2LjA3MS0xNi42NjYgMi4xMjRsLTI3LjgyNC0yMS4wOThjLTUuMTA3LTMuODcyLTYuMjUxLTExLjA2Ni0yLjY0NC0xNi4zNjNDMTg0Ljg0NiAxMzEuNDkxIDIxNC45NCAxMTIgMjYxLjc5NCAxMTJjNDkuMDcxIDAgMTAxLjQ1IDM4LjMwNCAxMDEuNDUgODguOHpNMjk4IDM2OGMwIDIzLjE1OS0xOC44NDEgNDItNDIgNDJzLTQyLTE4Ljg0MS00Mi00MiAxOC44NDEtNDIgNDItNDIgNDIgMTguODQxIDQyIDQyelwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIlwiPjwvcGF0aD5cclxuICAgICAgICA8L3N2Zz4gLS0+XHJcbiAgICAgICAgPGkgY2xhc3M9XCJ0b3BiYXItaWNvbiBhbmltYXRlZCBzd2luZyBwaSBwaS1xdWVzdGlvbi1jaXJjbGVcIj48L2k+XHJcbiAgICA8L3NwYW4+XHJcbiAgICA8c3BhbiBjbGFzcz1cInRvcGJhci1pdGVtLW5hbWVcIj57eyBcIlRy4bujIGdpw7pwXCIgfCB0cmFuc2xhdGUgfX08L3NwYW4+XHJcbjwvYT5cclxuXHJcbjxwLXNpZGViYXIgW3N0eWxlQ2xhc3NdPVwiJ0hlbHBlclNsaWRlQmFyIHRuLWwtc2lkZWJhci13cmFwcGVyJ1wiIFsodmlzaWJsZSldPVwiZGlzcGxheVwiIHBvc2l0aW9uPVwicmlnaHRcIlxyXG4gICAgW2FwcGVuZFRvXT1cIidib2R5J1wiIFtzdHlsZV09XCJ7IHdpZHRoOiAnMzBlbScsIGJvcmRlcjogMCwgJ21heC13aWR0aCc6ICcxMDB2dycgfVwiPlxyXG4gICAgPGRpdiBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJveC1zaGFkb3c6IDAgMXB4IDVweCAwIHJnYmEoMCwgMCwgMCwgMC4zNSk7XCI+XHJcbiAgICAgICAgPGgxIHN0eWxlPVwiZm9udC1zaXplOiAxNnB4OyBjb2xvcjogIzIxMjUyOTtcIj5UcnVuZyB0w6JtIHRy4bujIGdpw7pwPC9oMT5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJ0bi1sLWhlbHAtd3JhcHBlclwiPlxyXG4gICAgICAgIDx0bi1jdXN0b20tc2Nyb2xsYmFyICNzY3JvbGxiYXIgW3N0eWxlXT1cInsnbWF4LWhlaWdodCc6J2NhbGMoMTAwdmggLSA1MHB4KSd9XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJIZWxwQ2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1ncmlkXCIgc3R5bGU9XCJtYXJnaW4tdG9wOjEwcHg7IG1hcmdpbi1ib3R0b206IDI1cHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtY29sLThcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgc3R5bGU9XCJmb250LXdlaWdodDpib2xkO2ZvbnQtc2l6ZTogMTZweDttYXJnaW4tYm90dG9tOiA4cHg7IG1hcmdpbi10b3A6MjBweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb25maWcuZXhwZXJ0TmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgc3R5bGU9XCJtYXJnaW46IDBweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIFtocmVmXT1cImNvbmZpZy5ocmVmVGVsZXBob25lXCI+PGkgY2xhc3M9XCJmYXMgZmEtcGhvbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIm1hcmdpbi1yaWdodDogOHB4OyB3aWR0aDogMTVweFwiPjwvaT57e2NvbmZpZy5waG9uZU51bWJlcn19PC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIHN0eWxlPVwibWFyZ2luLXRvcDogOHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgW2hyZWZdPVwiY29uZmlnLmhyZWZNYWlsXCI+PGkgY2xhc3M9XCJmYXMgZmEtZW52ZWxvcGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIm1hcmdpbi1yaWdodDogOHB4OyB3aWR0aDogMTVweFwiPjwvaT57e2NvbmZpZy5tYWlsfX08L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1jb2wtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiY29uZmlnLmxvZ29Db21wYW55XCIgc3R5bGU9XCJ3aWR0aDogMTAwJTsgZmxvYXQ6IHJpZ2h0OyBvcGFjaXR5OiAwLjc7XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZ3JpZCBwLW0tMCBIZWxwQ2VudGVyLWRvd25sb2FkXCIgc3R5bGU9XCJtYXJnaW4tdG9wOiAwcHg7IG1hcmdpbi1ib3R0b206IDQwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtY29sLTEyIGhlbHAtdGl0bGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXQtbmFtZVwiPlTDoGkgbGnhu4d1IC0gSMaw4bubbmcgZOG6q24gc+G7rSBk4bulbmcgY8OhYyBwaMOibiBo4buHIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG4tbC1wbXRpIHAtZ3JpZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiYm9yZGVyOiAxcHggc29saWQgI2NjYzsgd2lkdGg6IDEwMCU7bWFyZ2luOjA7bWFyZ2luLWJvdHRvbToyMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtIG9mIGhlbHBzXCIgY2xhc3M9XCJwLWNvbC00IGhlbHAtY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgc3R5bGU9XCJtYXJnaW4tdG9wOiAxOHB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgW2hyZWZdPVwiaXRlbS5ocmVmXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHRleHQtYWxpZ246IGNlbnRlcjtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJ7e2l0ZW0uaWNvbn19IGFwcC1zd2l0Y2hlci1pdGVtLWljb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJjb2xvcjogcmdiKDQ0IDEyNiAyMTApO2ZvbnQtc2l6ZTogMy41ZW07cGFkZGluZy1ib3R0b206IDEwcHg7XCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnIgLz57e2l0ZW0ubGFiZWx9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWdyaWQgcC1tLTAgSGVscENlbnRlci12aWRlb1wiIHN0eWxlPVwibWFyZ2luLXRvcDogMHB4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtY29sLTEyIGhlbHAtdGl0bGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXQtbmFtZVwiPlhlbSBoxrDhu5tuZyBk4bqrbjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1jb2wtMTIgaGVscC1jb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoMiAqbmdJZj1cInNob3dIZWxwZXJDdXJyZW50UGFnZVN0YXRlXCIgc3R5bGU9XCJtYXJnaW4tdG9wOiAwcHhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OjtcIiAoY2xpY2spPVwic2hvd0hlbHBlckN1cnJlbnRQYWdlKG51bGwpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImRpc3BsYXk6aW5saW5lLWJsb2NrOyBwb3NpdGlvbjogcmVsYXRpdmU7IGJvcmRlci10b3A6IDFweCBzb2xpZCAjNTJhYmY1O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiL2Fzc2V0cy9pbWFnZXMvYmd2aWRlby5wbmdcIiBhbHQ9XCJzY3JlZW4gc2hvdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6MTAwJTsgZmlsdGVyOiBicmlnaHRuZXNzKDAuODgpO1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYWIgZmEteW91dHViZSBmYS0yeFwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9oMj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWdyaWQgcC1tLTAgSGVscENlbnRlci1kb3dubG9hZFwiIHN0eWxlPVwibWFyZ2luLXRvcDogMHB4OyBtYXJnaW4tYm90dG9tOiA0MHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWNvbC0xMiBoZWxwLXRpdGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0LW5hbWVcIj5QaOG6p24gbeG7gW0gdGnhu4duIMOtY2g8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRuLWwtcG10aVwiIHN0eWxlPVwiYm9yZGVyOiAxcHggc29saWQgI2NjYzsgd2lkdGg6IDEwMCVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtY29sLTQgaGVscC1jb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBzdHlsZT1cIm1hcmdpbi10b3A6IDE4cHg7IHRleHQtYWxpZ246IGNlbnRlcjtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSB0YXJnZXQ9XCJfYmxhbmtcIiBbaHJlZl09XCJjb25maWcubGlua0Rvd25sb2FkQ2xpZW50QXBwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHRleHQtYWxpZ246IGNlbnRlcjtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCIvYXNzZXRzL2ltYWdlcy9pY29uLWFwcFRONjR4NjQucG5nXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyIC8+VE4gQ2xpZW50XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtY29sLTQgaGVscC1jb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBzdHlsZT1cIm1hcmdpbi10b3A6IDE4cHg7IHRleHQtYWxpZ246IGNlbnRlcjtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cHM6Ly91bHRyYXZpZXdlci5uZXQvdmkvVWx0cmFWaWV3ZXJfc2V0dXBfNi4yX3ZpLmV4ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiZGlzcGxheTogaW5saW5lLWJsb2NrOyB0ZXh0LWFsaWduOiBjZW50ZXI7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiL2Fzc2V0cy9pbWFnZXMvdWx0cmF2aWV3ZXIuaWNvXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyIC8+VWx0cmF2aWV3ZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1jb2wtNCBoZWxwLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIHN0eWxlPVwibWFyZ2luLXRvcDogMThweDsgdGV4dC1hbGlnbjogY2VudGVyO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwczovL3d3dy50ZWFtdmlld2VyLmNvbS92aS90YWkteHVvbmctdHUtZG9uZy10ZWFtdmlld2VyL1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiZGlzcGxheTogaW5saW5lLWJsb2NrOyB0ZXh0LWFsaWduOiBjZW50ZXI7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiL2Fzc2V0cy9pbWFnZXMvaWNvbi10ZWFtdmlld2VyLnBuZ1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiciAvPlRlYW12aWV3ZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvdG4tY3VzdG9tLXNjcm9sbGJhcj5cclxuICAgIDwvZGl2PlxyXG48L3Atc2lkZWJhcj4iXX0=
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG4tYXBwLWhlbHAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkL3NyYy9saWIvY29tcG9uZW50cy90bi1hcHAtaGVscC90bi1hcHAtaGVscC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL3RuLWFwcC1oZWxwL3RuLWFwcC1oZWxwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUdsRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQzs7Ozs7Ozs7OztBQVNqRyxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsYUFBYTtJQU1qRCxZQUNZLGdCQUFpQyxFQUNqQyxXQUF1QixFQUNyQixTQUFtQixFQUNuQixtQkFBdUM7UUFFakQsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBTFQscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFpQjtRQUNqQyxnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUNyQixjQUFTLEdBQVQsU0FBUyxDQUFVO1FBQ25CLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBb0I7UUFUckQsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNoQiwrQkFBMEIsR0FBRyxJQUFJLENBQUM7UUFDbEMsV0FBTSxHQUFRLEVBQUUsQ0FBQztRQUNqQixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBU1AsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGdDQUFnQyxFQUFFLENBQUM7UUFDckYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGdDQUFnQyxFQUFFLENBQUM7UUFDdEYsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRTtZQUN6QixJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsR0FBRyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDaEU7YUFDSTtZQUNELElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxHQUFHLG9CQUFvQixDQUFDO1NBQ3BEO1FBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLHlCQUF5QixFQUFFLENBQUM7UUFDeEUsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRTtZQUNsQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsR0FBRyxVQUFVLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDdkQ7YUFDSTtZQUNELElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLG9CQUFvQixDQUFDO1NBQy9DO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLHlCQUF5QixFQUFFLENBQUM7UUFDL0UsSUFBSSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUN4RixNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQy9FLElBQUksbUJBQW1CLEVBQUU7WUFDckIsSUFBSSxDQUFDLEtBQUssR0FBRyxtQkFBbUIsQ0FBQztTQUNwQztJQUNMLENBQUM7SUFFRCxRQUFRO0lBQ1IsQ0FBQztJQUVELFVBQVU7UUFDTixJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUNqQyxDQUFDO0lBRUQscUJBQXFCLENBQUMsT0FBbUM7UUFDckQsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDckIsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksQ0FBQyxXQUFXLENBQUMscUJBQXFCLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUN2RSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDWixDQUFDOzsrR0FqRFEsa0JBQWtCO21HQUFsQixrQkFBa0IsMENBRmhCLENBQUMsdUJBQXVCLENBQUMsaURDWnhDLG9xUEFnSFk7MkZEbEdDLGtCQUFrQjtrQkFOOUIsU0FBUzsrQkFDSSxpQkFBaUIsYUFHaEIsQ0FBQyx1QkFBdUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0b3IsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRDb250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uL2FwcC1jb250ZXh0L2NvbXBvbmVudC1jb250ZXh0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRCYXNlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9iYXNlL2NvbXBvbmVudC1iYXNlJztcclxuaW1wb3J0IHsgRG9tU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RvbS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRW52aXJvbm1lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZW52aXJvbm1lbnQuc2VydmljZSc7XHJcbmltcG9ydCB7IEhlbHBlckN1cnJlbnRQYWdlQ29tcG9uZW50IH0gZnJvbSAnLi9oZWxwZXItY3VycmVudC1wYWdlL2hlbHBlci1jdXJyZW50LXBhZ2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUGF0aE5hbWVTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9wYXRoLW5hbWUuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnbGlbdG4tYXBwLWhlbHBdJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi90bi1hcHAtaGVscC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi90bi1hcHAtaGVscC5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgcHJvdmlkZXJzOiBbQ29tcG9uZW50Q29udGV4dFNlcnZpY2VdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUbkFwcEhlbHBDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRCYXNlIGltcGxlbWVudHMgT25Jbml0IHtcclxuICAgIGRpc3BsYXkgPSBmYWxzZTtcclxuICAgIHNob3dIZWxwZXJDdXJyZW50UGFnZVN0YXRlID0gdHJ1ZTtcclxuICAgIGNvbmZpZzogYW55ID0ge307XHJcbiAgICBoZWxwcyA9IFtdO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgX3BhdGhOYW1lU2VydmljZTogUGF0aE5hbWVTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX2RvbVNlcnZpY2U6IERvbVNlcnZpY2UsXHJcbiAgICAgICAgcHJvdGVjdGVkIF9pbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICAgICAgcHJvdGVjdGVkIF9lbnZpcm9ubWVudFNlcnZpY2U6IEVudmlyb25tZW50U2VydmljZVxyXG4gICAgKSB7XHJcbiAgICAgICAgc3VwZXIoX2luamVjdG9yKTtcclxuICAgICAgICB0aGlzLmNvbmZpZy5leHBlcnROYW1lID0gdGhpcy5fZW52aXJvbm1lbnRTZXJ2aWNlLmdldEhlbHBDb25maWdfRXhwZXJ0UGhvbmVOdW1tYmVyKCk7XHJcbiAgICAgICAgdGhpcy5jb25maWcucGhvbmVOdW1iZXIgPSB0aGlzLl9lbnZpcm9ubWVudFNlcnZpY2UuZ2V0SGVscENvbmZpZ19FeHBlcnRQaG9uZU51bW1iZXIoKTtcclxuICAgICAgICBpZiAodGhpcy5jb25maWcucGhvbmVOdW1iZXIpIHtcclxuICAgICAgICAgICAgdGhpcy5jb25maWcuaHJlZlRlbGVwaG9uZSA9IGB0ZWw6JHt0aGlzLmNvbmZpZy5waG9uZU51bWJlcn1gO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5jb25maWcuaHJlZlRlbGVwaG9uZSA9IGBqYXZhc2NyaXB0OnZvaWQoMClgO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5jb25maWcubWFpbCA9IHRoaXMuX2Vudmlyb25tZW50U2VydmljZS5nZXRIZWxwQ29uZmlnX0V4cGVydEVtYWlsKCk7XHJcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLm1haWwpIHtcclxuICAgICAgICAgICAgdGhpcy5jb25maWcuaHJlZk1haWwgPSBgbWFpbHRvOiR7dGhpcy5jb25maWcubWFpbH1gO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5jb25maWcuaHJlZk1haWwgPSBgamF2YXNjcmlwdDp2b2lkKDApYDtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb25maWcubG9nb0NvbXBhbnkgPSB0aGlzLl9lbnZpcm9ubWVudFNlcnZpY2UuZ2V0SGVscENvbmZpZ19Mb2dvQ29tcGFueSgpO1xyXG4gICAgICAgIHRoaXMuY29uZmlnLmxpbmtEb3dubG9hZENsaWVudEFwcCA9IHRoaXMuX2Vudmlyb25tZW50U2VydmljZS5nZXRMaW5rRG93bmxvYWRDbGllbnRBcHAoKTtcclxuICAgICAgICBjb25zdCBoZWxwQ29uZmlnRG9jdW1lbnRzID0gdGhpcy5fZW52aXJvbm1lbnRTZXJ2aWNlLmdldEhlbHBDb25maWdfRG9jdW1lbnRzKCk7XHJcbiAgICAgICAgaWYgKGhlbHBDb25maWdEb2N1bWVudHMpIHtcclxuICAgICAgICAgICAgdGhpcy5oZWxwcyA9IGhlbHBDb25maWdEb2N1bWVudHM7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgfVxyXG5cclxuICAgIHNob3dIZWxwZXIoKSB7XHJcbiAgICAgICAgdGhpcy5kaXNwbGF5ID0gIXRoaXMuZGlzcGxheTtcclxuICAgIH1cclxuXHJcbiAgICBzaG93SGVscGVyQ3VycmVudFBhZ2UoY29udHJvbDogSGVscGVyQ3VycmVudFBhZ2VDb21wb25lbnQpIHtcclxuICAgICAgICB0aGlzLmRpc3BsYXkgPSBmYWxzZTtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5fZG9tU2VydmljZS5hcHBlbmRDb21wb25lbnRUb0JvZHkoSGVscGVyQ3VycmVudFBhZ2VDb21wb25lbnQpO1xyXG4gICAgICAgIH0sIDUwMCk7XHJcbiAgICB9XHJcbn1cclxuIiwiPGEgaHJlZj1cImphdmFzY3JpcHQ6O1wiIHRhYmluZGV4PVwiOVwiIChjbGljayk9XCJzaG93SGVscGVyKClcIiBzdHlsZT1cImhlaWdodDogMzBweDtcIiBwVG9vbHRpcD1cIlRy4bujIGdpw7pwXCJcclxuICAgIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJ0b3BiYXItaWNvbi1sZWZ0XCI+XHJcbiAgICAgICAgPCEtLSA8c3ZnIGZvY3VzYWJsZT1cImZhbHNlXCIgcm9sZT1cImltZ1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDUxMiA1MTJcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInRvcGJhci1pY29uIGFuaW1hdGVkIHN3aW5nIHN2Z21vZHVsZVwiPlxyXG4gICAgICAgICAgICA8cGF0aCBmaWxsPVwiY3VycmVudENvbG9yXCJcclxuICAgICAgICAgICAgICAgIGQ9XCJNMjU2IDhDMTE5LjA0MyA4IDggMTE5LjA4MyA4IDI1NmMwIDEzNi45OTcgMTExLjA0MyAyNDggMjQ4IDI0OHMyNDgtMTExLjAwMyAyNDgtMjQ4QzUwNCAxMTkuMDgzIDM5Mi45NTcgOCAyNTYgOHptMCA0NDhjLTExMC41MzIgMC0yMDAtODkuNDMxLTIwMC0yMDAgMC0xMTAuNDk1IDg5LjQ3Mi0yMDAgMjAwLTIwMCAxMTAuNDkxIDAgMjAwIDg5LjQ3MSAyMDAgMjAwIDAgMTEwLjUzLTg5LjQzMSAyMDAtMjAwIDIwMHptMTA3LjI0NC0yNTUuMmMwIDY3LjA1Mi03Mi40MjEgNjguMDg0LTcyLjQyMSA5Mi44NjNWMzAwYzAgNi42MjctNS4zNzMgMTItMTIgMTJoLTQ1LjY0N2MtNi42MjcgMC0xMi01LjM3My0xMi0xMnYtOC42NTljMC0zNS43NDUgMjcuMS01MC4wMzQgNDcuNTc5LTYxLjUxNiAxNy41NjEtOS44NDUgMjguMzI0LTE2LjU0MSAyOC4zMjQtMjkuNTc5IDAtMTcuMjQ2LTIxLjk5OS0yOC42OTMtMzkuNzg0LTI4LjY5My0yMy4xODkgMC0zMy44OTQgMTAuOTc3LTQ4Ljk0MiAyOS45NjktNC4wNTcgNS4xMi0xMS40NiA2LjA3MS0xNi42NjYgMi4xMjRsLTI3LjgyNC0yMS4wOThjLTUuMTA3LTMuODcyLTYuMjUxLTExLjA2Ni0yLjY0NC0xNi4zNjNDMTg0Ljg0NiAxMzEuNDkxIDIxNC45NCAxMTIgMjYxLjc5NCAxMTJjNDkuMDcxIDAgMTAxLjQ1IDM4LjMwNCAxMDEuNDUgODguOHpNMjk4IDM2OGMwIDIzLjE1OS0xOC44NDEgNDItNDIgNDJzLTQyLTE4Ljg0MS00Mi00MiAxOC44NDEtNDIgNDItNDIgNDIgMTguODQxIDQyIDQyelwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIlwiPjwvcGF0aD5cclxuICAgICAgICA8L3N2Zz4gLS0+XHJcbiAgICAgICAgPGkgY2xhc3M9XCJ0b3BiYXItaWNvbiBhbmltYXRlZCBzd2luZyBwaSBwaS1xdWVzdGlvbi1jaXJjbGVcIj48L2k+XHJcbiAgICA8L3NwYW4+XHJcbiAgICA8c3BhbiBjbGFzcz1cInRvcGJhci1pdGVtLW5hbWVcIj57eyBcIlRy4bujIGdpw7pwXCIgfCB0cmFuc2xhdGUgfX08L3NwYW4+XHJcbjwvYT5cclxuXHJcbjxwLXNpZGViYXIgW3N0eWxlQ2xhc3NdPVwiJ0hlbHBlclNsaWRlQmFyIHRuLWwtc2lkZWJhci13cmFwcGVyJ1wiIFsodmlzaWJsZSldPVwiZGlzcGxheVwiIHBvc2l0aW9uPVwicmlnaHRcIlxyXG4gICAgW2FwcGVuZFRvXT1cIidib2R5J1wiIFtzdHlsZV09XCJ7IHdpZHRoOiAnMzBlbScsIGJvcmRlcjogMCwgJ21heC13aWR0aCc6ICcxMDB2dycgfVwiPlxyXG4gICAgPGRpdiBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJveC1zaGFkb3c6IDAgMXB4IDVweCAwIHJnYmEoMCwgMCwgMCwgMC4zNSk7XCI+XHJcbiAgICAgICAgPGgxIHN0eWxlPVwiZm9udC1zaXplOiAxNnB4OyBjb2xvcjogIzIxMjUyOTtcIj5UcnVuZyB0w6JtIHRy4bujIGdpw7pwPC9oMT5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJ0bi1sLWhlbHAtd3JhcHBlclwiPlxyXG4gICAgICAgIDx0bi1jdXN0b20tc2Nyb2xsYmFyICNzY3JvbGxiYXIgW3N0eWxlXT1cInsnbWF4LWhlaWdodCc6J2NhbGMoMTAwdmggLSA1MHB4KSd9XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJIZWxwQ2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZFwiIHN0eWxlPVwibWFyZ2luLXRvcDoxMHB4OyBtYXJnaW4tYm90dG9tOiAyNXB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBzdHlsZT1cImZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1zaXplOiAxNnB4O21hcmdpbi1ib3R0b206IDhweDsgbWFyZ2luLXRvcDoyMHB4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbmZpZy5leHBlcnROYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBzdHlsZT1cIm1hcmdpbjogMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgW2hyZWZdPVwiY29uZmlnLmhyZWZUZWxlcGhvbmVcIj48aSBjbGFzcz1cImZhcyBmYS1waG9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiA4cHg7IHdpZHRoOiAxNXB4XCI+PC9pPnt7Y29uZmlnLnBob25lTnVtYmVyfX08L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgc3R5bGU9XCJtYXJnaW4tdG9wOiA4cHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBbaHJlZl09XCJjb25maWcuaHJlZk1haWxcIj48aSBjbGFzcz1cImZhcyBmYS1lbnZlbG9wZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiA4cHg7IHdpZHRoOiAxNXB4XCI+PC9pPnt7Y29uZmlnLm1haWx9fTwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiY29uZmlnLmxvZ29Db21wYW55XCIgc3R5bGU9XCJ3aWR0aDogMTAwJTsgZmxvYXQ6IHJpZ2h0OyBvcGFjaXR5OiAwLjc7XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgcC1tLTAgSGVscENlbnRlci1kb3dubG9hZFwiIHN0eWxlPVwibWFyZ2luLXRvcDogMHB4OyBtYXJnaW4tYm90dG9tOiA0MHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgaGVscC10aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpdC1uYW1lXCI+VMOgaSBsaeG7h3UgLSBIxrDhu5tuZyBk4bqrbiBz4butIGThu6VuZyBjw6FjIHBow6JuIGjhu4cgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0bi1sLXBtdGkgZ3JpZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiYm9yZGVyOiAxcHggc29saWQgI2NjYzsgd2lkdGg6IDEwMCU7bWFyZ2luOjA7bWFyZ2luLWJvdHRvbToyMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtIG9mIGhlbHBzXCIgY2xhc3M9XCJjb2wtNCBoZWxwLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIHN0eWxlPVwibWFyZ2luLXRvcDogMThweDsgdGV4dC1hbGlnbjogY2VudGVyO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIHRhcmdldD1cIl9ibGFua1wiIFtocmVmXT1cIml0ZW0uaHJlZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiZGlzcGxheTogaW5saW5lLWJsb2NrOyB0ZXh0LWFsaWduOiBjZW50ZXI7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwie3tpdGVtLmljb259fSBhcHAtc3dpdGNoZXItaXRlbS1pY29uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiY29sb3I6IHJnYig0NCAxMjYgMjEwKTtmb250LXNpemU6IDMuNWVtO3BhZGRpbmctYm90dG9tOiAxMHB4O1wiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyIC8+e3tpdGVtLmxhYmVsfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBwLW0tMCBIZWxwQ2VudGVyLXZpZGVvXCIgc3R5bGU9XCJtYXJnaW4tdG9wOiAwcHhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGhlbHAtdGl0bGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXQtbmFtZVwiPlhlbSBoxrDhu5tuZyBk4bqrbjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGhlbHAtY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDIgKm5nSWY9XCJzaG93SGVscGVyQ3VycmVudFBhZ2VTdGF0ZVwiIHN0eWxlPVwibWFyZ2luLXRvcDogMHB4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDo7XCIgKGNsaWNrKT1cInNob3dIZWxwZXJDdXJyZW50UGFnZShudWxsKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJkaXNwbGF5OmlubGluZS1ibG9jazsgcG9zaXRpb246IHJlbGF0aXZlOyBib3JkZXItdG9wOiAxcHggc29saWQgIzUyYWJmNTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cIi9hc3NldHMvaW1hZ2VzL2JndmlkZW8ucG5nXCIgYWx0PVwic2NyZWVuIHNob3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIndpZHRoOjEwMCU7IGZpbHRlcjogYnJpZ2h0bmVzcygwLjg4KTtcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFiIGZhLXlvdXR1YmUgZmEtMnhcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaDI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBwLW0tMCBIZWxwQ2VudGVyLWRvd25sb2FkXCIgc3R5bGU9XCJtYXJnaW4tdG9wOiAwcHg7IG1hcmdpbi1ib3R0b206IDQwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBoZWxwLXRpdGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0LW5hbWVcIj5QaOG6p24gbeG7gW0gdGnhu4duIMOtY2g8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRuLWwtcG10aVwiIHN0eWxlPVwiYm9yZGVyOiAxcHggc29saWQgI2NjYzsgd2lkdGg6IDEwMCVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00IGhlbHAtY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgc3R5bGU9XCJtYXJnaW4tdG9wOiAxOHB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgW2hyZWZdPVwiY29uZmlnLmxpbmtEb3dubG9hZENsaWVudEFwcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiZGlzcGxheTogaW5saW5lLWJsb2NrOyB0ZXh0LWFsaWduOiBjZW50ZXI7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiL2Fzc2V0cy9pbWFnZXMvaWNvbi1hcHBUTjY0eDY0LnBuZ1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiciAvPlROIENsaWVudFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNCBoZWxwLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIHN0eWxlPVwibWFyZ2luLXRvcDogMThweDsgdGV4dC1hbGlnbjogY2VudGVyO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwczovL3VsdHJhdmlld2VyLm5ldC92aS9VbHRyYVZpZXdlcl9zZXR1cF82LjJfdmkuZXhlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHRleHQtYWxpZ246IGNlbnRlcjtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCIvYXNzZXRzL2ltYWdlcy91bHRyYXZpZXdlci5pY29cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnIgLz5VbHRyYXZpZXdlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNCBoZWxwLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIHN0eWxlPVwibWFyZ2luLXRvcDogMThweDsgdGV4dC1hbGlnbjogY2VudGVyO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwczovL3d3dy50ZWFtdmlld2VyLmNvbS92aS90YWkteHVvbmctdHUtZG9uZy10ZWFtdmlld2VyL1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiZGlzcGxheTogaW5saW5lLWJsb2NrOyB0ZXh0LWFsaWduOiBjZW50ZXI7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiL2Fzc2V0cy9pbWFnZXMvaWNvbi10ZWFtdmlld2VyLnBuZ1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiciAvPlRlYW12aWV3ZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvdG4tY3VzdG9tLXNjcm9sbGJhcj5cclxuICAgIDwvZGl2PlxyXG48L3Atc2lkZWJhcj4iXX0=
@@ -222,10 +222,10 @@ export class TnAppNotificationComponent extends ComponentBase {
222
222
  }
223
223
  }
224
224
  TnAppNotificationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: TnAppNotificationComponent, deps: [{ token: i1.SignalRService }, { token: i2.UserV5Service }, { token: i3.NotificationService }, { token: i4.Router }, { token: i5.EnvironmentService }, { token: i6.CrudService }, { token: i7.NotifierService }, { token: i8.CustomRouterService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
225
- TnAppNotificationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: TnAppNotificationComponent, selector: "li[tn-app-notification]", outputs: { openMenu: "openMenu" }, providers: [ComponentContextService], viewQueries: [{ propertyName: "notificationDetail", first: true, predicate: ["notificationdetail"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<a href=\"#\" tabindex=\"8\" (click)=\"openMenuEvent($event)\" pTooltip=\"Th\u00F4ng b\u00E1o\" tooltipPosition=\"bottom\"\r\n style=\"height: 30px;\">\r\n <span class=\"topbar-icon-left\">\r\n <i class=\"topbar-icon animated swing pi pi-bell\"></i>\r\n </span>\r\n <span class=\"topbar-badge animated rubberBand\" *ngIf=\"totalUnRead > 0\"\r\n [ngClass]=\"{'topbar-badge-bounce': bounceNoti}\">{{totalUnRead}}</span>\r\n <span class=\"topbar-item-name\">Th\u00F4ng b\u00E1o</span>\r\n</a>\r\n<ul class=\"fadeInDown custom-notification\">\r\n <div class=\"noti-header\" (click)=\"headerClick($event)\">\r\n <div class=\"ui-toolbar-group-center button-group master-title-notification\">\r\n <span style=\"float: left; color: #666;\">Th\u00F4ng b\u00E1o</span>\r\n <div class=\"circleButton\" pTooltip=\"\u0110\u00E1nh d\u1EA5u t\u1EA5t c\u1EA3 l\u00E0 \u0111\u00E3 \u0111\u1ECDc\" tooltipPosition=\"top\">\r\n <a href=\"javascript:\" (click)=\"readAll($event)\"><i class=\"fas fa-flag-checkered\"></i></a>\r\n </div>\r\n <div class=\"circleButton\" pTooltip=\"C\u1EA5u h\u00ECnh th\u00F4ng b\u00E1o\" tooltipPosition=\"top\">\r\n <a href=\"javascript:\"><i class=\"fas fa-cog\"></i></a>\r\n </div>\r\n </div>\r\n </div>\r\n <tn-custom-scrollbar #scrollbar [style]=\"{'width': '100%', 'height': '350px'}\" [class]=\"'notification-box-detail'\">\r\n <div role=\"menuitem\" *ngFor=\"let item of notifications\" class=\"noti-item\" [class.un-read]=\"!item.readedTime\">\r\n <a href=\"javascript:\" (click)=\"goToLink(item)\" class=\"topbar-message\">\r\n <div class=\"p-grid\">\r\n <div class=\"noti-avatar p-md-2\">\r\n <i *ngIf=\"!isHasAvatar(item)\" class=\"fas fa-globe-asia\"></i>\r\n <img *ngIf=\"isHasAvatar(item)\" src=\"{{getCurrentUserAvatar(item.avatarId)}}\" />\r\n </div>\r\n <div class=\"noti-content p-md-10\">\r\n <div class=\"noti-title\" [innerHTML]=\"item.messageTitle | summary : 40\"></div>\r\n <div class=\"noti-message\" [innerHTML]=\"item.messageContent | summary : 40\"></div>\r\n <div class=\"noti-time\">\r\n <span pTooltip=\"{{item.created | date:'dd/MM/yyyy HH:mm'}}\" tooltipPosition=\"top\">\r\n <i style=\"font-size: 1em;\" class=\"pi pi-clock\"></i>\r\n {{_crudService.renderDateTime(item.created)}}\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n </div>\r\n </tn-custom-scrollbar>\r\n <div class=\"noti-footer\">\r\n <a href=\"javascript:;\" style=\"font-size: 14px\" (click)=\"handleClicked()\">\r\n <span>\r\n <i class=\"pi pi-chevron-down\" style=\"font-size: 0.9em; margin-right: 3px\"></i>\r\n Xem t\u1EA5t c\u1EA3\r\n </span>\r\n </a>\r\n </div>\r\n</ul>", styles: [".noti-item{border-bottom:1px solid #eee;box-sizing:border-box}.noti-item .noti-message{color:#aaa}.noti-item .noti-message b,.noti-item .noti-message strong{color:#888}.noti-item.un-read{background:#e6f6e6;border-top:1px solid #e1e1e1;border-bottom:1px solid #e1e1e1;margin-top:-1px}.noti-item.un-read .noti-message{color:#777}.noti-item.un-read .noti-message b,.noti-item.un-read .noti-message strong{color:#555}.noti-item.un-read .noti-avatar i{color:#888!important}.noti-item.un-read img{filter:grayscale(0)}.noti-item a:hover{background-color:#ffffeb!important}.noti-item img{filter:grayscale(.6)}.noti-item.un-read .noti-content .noti-time{color:#444}.layout-wrapper .topbar-items>li>ul.custom-notification{width:350px;top:47px;right:-7px}.layout-wrapper .topbar-items>li>ul.custom-notification:before{right:15px}.noti-content{font-size:.95em}.noti-content .noti-title{font-weight:700;margin-bottom:.25em}.noti-content .noti-message{margin-bottom:0;font-size:.9em;line-height:18px;text-align:left;margin-top:0;-webkit-box-orient:vertical;-webkit-line-clamp:3;display:-webkit-box;overflow:hidden}.noti-content .noti-message p{margin:0}.noti-content .noti-time{margin-top:2px;font-size:.8em;font-weight:700}.noti-header{font-size:.9em;box-sizing:border-box;border-bottom:1px solid #ddd}.noti-header a{font-weight:700}.noti-header a:hover{background:none}.layout-wrapper .layout-menu li div.noti-time i:first-child{margin-right:0;width:15px;line-height:15px}.noti-avatar img{width:50px;margin-top:-2px;border:0;height:50px;border-radius:50%;box-shadow:0 1px 2px #00000030}.noti-avatar i{font-size:50px!important;color:#d4d4d4!important;margin-top:-2px;text-shadow:0 1px 2px rgba(0,0,0,.19)}.custom-notification{width:360px!important}.notifications{min-width:390px;padding-top:0;padding-bottom:0;top:43px!important;position:absolute;right:0;border:1px solid #d5d5d5!important;box-shadow:0 1px 3px #0000004d;border-radius:3px}.notifications .notifications-wrapper{display:block;margin:0;outline:none;position:relative;text-decoration:none}.notifications .notifications-wrapper .notifications-header{background-clip:padding-box;background-color:#fff;border-bottom:solid 1px #dddfe2;border-top-left-radius:3px;border-top-right-radius:3px;padding:0 12px;position:relative;z-index:100;float:left;width:100%;font-size:11.5px}.notifications .notifications-wrapper .notifications-header span{color:#333!important;font-weight:700}.notifications .notifications-wrapper .notifications-header .notifications-title{float:left;width:30%;margin-top:6px}.notifications .notifications-wrapper .notifications-body{display:block;position:relative;float:left;width:100%;background-color:#fff}.notifications .notifications-wrapper .notifications-body img{float:left;margin:0 5px;border-radius:50%;overflow:hidden;width:38px;height:38px}.notifications .notifications-wrapper .notifications-body a:hover{background-color:#edf2fa;background-image:linear-gradient(rgba(29,33,41,.04),rgba(29,33,41,.04))!important}.notifications .notifications-wrapper .notifications-footer{background-color:#fff;border-bottom-left-radius:3px;border-bottom-right-radius:3px;border-top:1px solid #dddfe2;display:block;font-weight:600;position:relative;text-align:center;z-index:100;float:left;width:100%;font-size:11.5px;background-color:#337ab7}.notifications .notifications-wrapper .notifications-footer a{font-weight:700;text-align:center;color:#fff;border:0px solid;padding-top:3px;padding-bottom:3px}.notifications .notifications-wrapper .notifications-footer a:hover{background:inherit}.notifications .notifications-wrapper .notifications-footer:hover{background-color:#2d6da3}.notifications a{position:relative;width:100%;float:left;border-bottom:1px solid #ccc;text-decoration:none;padding:5px;color:#1d2129;background:#fff}.notifications .un-read{background-color:#edf2fa}.notifications .title{font-weight:700;display:block;font-size:10.5px}.notifications .time{font-size:9.5px;display:block}.navbar-nav .badge{position:absolute;border-radius:50%;min-height:20px;min-width:20px;top:9px;left:10px;cursor:pointer}.badge-danger{color:#fff;background-color:#d50000;position:absolute;right:-14px;top:10px;cursor:pointer}.notifications-setting{display:flex;display:-webkit-flex;float:right;width:60%}.notifications-setting span{font-weight:400!important}.notifications-setting a{border-bottom:none}.notifications-setting a:hover{color:#3992e6;background-color:#fff!important}.notifications-body{height:300px;overflow:hidden;overflow-y:scroll}::-webkit-scrollbar{width:7px}::-webkit-scrollbar-track{background:#f1f1f1}::-webkit-scrollbar-thumb{background:#888}::-webkit-scrollbar-thumb:hover{background:#555}.notifications-body a{white-space:normal}.notifications-content{float:left;width:80%;margin-left:10px}.content{font-size:10px}:host ::ng-deep .notification-box-detail{border:none}:host ::ng-deep .notification-box-detail .ui-scrollpanel-content{padding:0 1px 0 0}.custom-notification{list-style:none;padding:0}.custom-notification li a i:first-child{color:#777}.custom-notification .master-title-notification{height:40px;line-height:40px;padding-right:10px;padding-left:10px;display:flex;align-items:center}.custom-notification .master-title-notification>span{flex:1 1;text-align:left}.custom-notification .master-title-notification>div.circleButton{flex:0 0 32px;display:inline-flex;align-items:center;justify-content:center}.custom-notification .master-title-notification>div.circleButton a{color:gray}.custom-notification .noti-item{padding:1rem 1rem .5rem}.custom-notification .noti-item .noti-content .noti-time{color:#777}.custom-notification .noti-item.un-read .noti-content .noti-time{color:#318bff}.custom-notification .noti-footer>a{padding:0;height:30px;display:flex;align-items:center;justify-content:center;color:#fff;background:#397ac3}.noti-avatar{width:auto}.noti-content{flex:1 1}@media (max-width: 1024px){.topbar-icon.fa-bell{position:relative;left:5px}}\n"], dependencies: [{ kind: "directive", type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i10.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "fitContent", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: i11.TnCustomScrollbarComponent, selector: "tn-custom-scrollbar", inputs: ["style", "useDefaultScrollBar", "autoMode", "class", "config", "whiteBackGround", "showScrollHorizontal"], outputs: ["scrollY", "scrollUp", "scrollDown", "scrollLeft", "scrollRight", "scrollYReachEnd", "scrollYReachStart", "scrollXReachEnd", "scrollXReachStart"] }, { kind: "pipe", type: i9.DatePipe, name: "date" }, { kind: "pipe", type: i12.SummaryPipe, name: "summary" }] });
225
+ TnAppNotificationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: TnAppNotificationComponent, selector: "li[tn-app-notification]", outputs: { openMenu: "openMenu" }, providers: [ComponentContextService], viewQueries: [{ propertyName: "notificationDetail", first: true, predicate: ["notificationdetail"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<a href=\"#\" tabindex=\"8\" (click)=\"openMenuEvent($event)\" pTooltip=\"Th\u00F4ng b\u00E1o\" tooltipPosition=\"bottom\"\r\n style=\"height: 30px;\">\r\n <span class=\"topbar-icon-left\">\r\n <i class=\"topbar-icon animated swing pi pi-bell\"></i>\r\n </span>\r\n <span class=\"topbar-badge animated rubberBand\" *ngIf=\"totalUnRead > 0\"\r\n [ngClass]=\"{'topbar-badge-bounce': bounceNoti}\">{{totalUnRead}}</span>\r\n <span class=\"topbar-item-name\">Th\u00F4ng b\u00E1o</span>\r\n</a>\r\n<ul class=\"fadeInDown custom-notification\">\r\n <div class=\"noti-header\" (click)=\"headerClick($event)\">\r\n <div class=\"ui-toolbar-group-center button-group master-title-notification\">\r\n <span style=\"float: left; color: #666;\">Th\u00F4ng b\u00E1o</span>\r\n <div class=\"circleButton\" pTooltip=\"\u0110\u00E1nh d\u1EA5u t\u1EA5t c\u1EA3 l\u00E0 \u0111\u00E3 \u0111\u1ECDc\" tooltipPosition=\"top\">\r\n <a href=\"javascript:\" (click)=\"readAll($event)\"><i class=\"fas fa-flag-checkered\"></i></a>\r\n </div>\r\n <div class=\"circleButton\" pTooltip=\"C\u1EA5u h\u00ECnh th\u00F4ng b\u00E1o\" tooltipPosition=\"top\">\r\n <a href=\"javascript:\"><i class=\"fas fa-cog\"></i></a>\r\n </div>\r\n </div>\r\n </div>\r\n <tn-custom-scrollbar #scrollbar [style]=\"{'width': '100%', 'height': '350px'}\" [class]=\"'notification-box-detail'\">\r\n <div role=\"menuitem\" *ngFor=\"let item of notifications\" class=\"noti-item\" [class.un-read]=\"!item.readedTime\">\r\n <a href=\"javascript:\" (click)=\"goToLink(item)\" class=\"topbar-message\">\r\n <div class=\"grid\">\r\n <div class=\"noti-avatar md:col-2\">\r\n <i *ngIf=\"!isHasAvatar(item)\" class=\"fas fa-globe-asia\"></i>\r\n <img *ngIf=\"isHasAvatar(item)\" src=\"{{getCurrentUserAvatar(item.avatarId)}}\" />\r\n </div>\r\n <div class=\"noti-content md:col-10\">\r\n <div class=\"noti-title\" [innerHTML]=\"item.messageTitle | summary : 40\"></div>\r\n <div class=\"noti-message\" [innerHTML]=\"item.messageContent | summary : 40\"></div>\r\n <div class=\"noti-time\">\r\n <span pTooltip=\"{{item.created | date:'dd/MM/yyyy HH:mm'}}\" tooltipPosition=\"top\">\r\n <i style=\"font-size: 1em;\" class=\"pi pi-clock\"></i>\r\n {{_crudService.renderDateTime(item.created)}}\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n </div>\r\n </tn-custom-scrollbar>\r\n <div class=\"noti-footer\">\r\n <a href=\"javascript:;\" style=\"font-size: 14px\" (click)=\"handleClicked()\">\r\n <span>\r\n <i class=\"pi pi-chevron-down\" style=\"font-size: 0.9em; margin-right: 3px\"></i>\r\n Xem t\u1EA5t c\u1EA3\r\n </span>\r\n </a>\r\n </div>\r\n</ul>", styles: [".noti-item{border-bottom:1px solid #eee;box-sizing:border-box}.noti-item .noti-message{color:#aaa}.noti-item .noti-message b,.noti-item .noti-message strong{color:#888}.noti-item.un-read{background:#e6f6e6;border-top:1px solid #e1e1e1;border-bottom:1px solid #e1e1e1;margin-top:-1px}.noti-item.un-read .noti-message{color:#777}.noti-item.un-read .noti-message b,.noti-item.un-read .noti-message strong{color:#555}.noti-item.un-read .noti-avatar i{color:#888!important}.noti-item.un-read img{filter:grayscale(0)}.noti-item a:hover{background-color:#ffffeb!important}.noti-item img{filter:grayscale(.6)}.noti-item.un-read .noti-content .noti-time{color:#444}.layout-wrapper .topbar-items>li>ul.custom-notification{width:350px;top:47px;right:-7px}.layout-wrapper .topbar-items>li>ul.custom-notification:before{right:15px}.noti-content{font-size:.95em}.noti-content .noti-title{font-weight:700;margin-bottom:.25em}.noti-content .noti-message{margin-bottom:0;font-size:.9em;line-height:18px;text-align:left;margin-top:0;-webkit-box-orient:vertical;-webkit-line-clamp:3;display:-webkit-box;overflow:hidden}.noti-content .noti-message p{margin:0}.noti-content .noti-time{margin-top:2px;font-size:.8em;font-weight:700}.noti-header{font-size:.9em;box-sizing:border-box;border-bottom:1px solid #ddd}.noti-header a{font-weight:700}.noti-header a:hover{background:none}.layout-wrapper .layout-menu li div.noti-time i:first-child{margin-right:0;width:15px;line-height:15px}.noti-avatar img{width:50px;margin-top:-2px;border:0;height:50px;border-radius:50%;box-shadow:0 1px 2px #00000030}.noti-avatar i{font-size:50px!important;color:#d4d4d4!important;margin-top:-2px;text-shadow:0 1px 2px rgba(0,0,0,.19)}.custom-notification{width:360px!important}.notifications{min-width:390px;padding-top:0;padding-bottom:0;top:43px!important;position:absolute;right:0;border:1px solid #d5d5d5!important;box-shadow:0 1px 3px #0000004d;border-radius:3px}.notifications .notifications-wrapper{display:block;margin:0;outline:none;position:relative;text-decoration:none}.notifications .notifications-wrapper .notifications-header{background-clip:padding-box;background-color:#fff;border-bottom:solid 1px #dddfe2;border-top-left-radius:3px;border-top-right-radius:3px;padding:0 12px;position:relative;z-index:100;float:left;width:100%;font-size:11.5px}.notifications .notifications-wrapper .notifications-header span{color:#333!important;font-weight:700}.notifications .notifications-wrapper .notifications-header .notifications-title{float:left;width:30%;margin-top:6px}.notifications .notifications-wrapper .notifications-body{display:block;position:relative;float:left;width:100%;background-color:#fff}.notifications .notifications-wrapper .notifications-body img{float:left;margin:0 5px;border-radius:50%;overflow:hidden;width:38px;height:38px}.notifications .notifications-wrapper .notifications-body a:hover{background-color:#edf2fa;background-image:linear-gradient(rgba(29,33,41,.04),rgba(29,33,41,.04))!important}.notifications .notifications-wrapper .notifications-footer{background-color:#fff;border-bottom-left-radius:3px;border-bottom-right-radius:3px;border-top:1px solid #dddfe2;display:block;font-weight:600;position:relative;text-align:center;z-index:100;float:left;width:100%;font-size:11.5px;background-color:#337ab7}.notifications .notifications-wrapper .notifications-footer a{font-weight:700;text-align:center;color:#fff;border:0px solid;padding-top:3px;padding-bottom:3px}.notifications .notifications-wrapper .notifications-footer a:hover{background:inherit}.notifications .notifications-wrapper .notifications-footer:hover{background-color:#2d6da3}.notifications a{position:relative;width:100%;float:left;border-bottom:1px solid #ccc;text-decoration:none;padding:5px;color:#1d2129;background:#fff}.notifications .un-read{background-color:#edf2fa}.notifications .title{font-weight:700;display:block;font-size:10.5px}.notifications .time{font-size:9.5px;display:block}.navbar-nav .badge{position:absolute;border-radius:50%;min-height:20px;min-width:20px;top:9px;left:10px;cursor:pointer}.badge-danger{color:#fff;background-color:#d50000;position:absolute;right:-14px;top:10px;cursor:pointer}.notifications-setting{display:flex;display:-webkit-flex;float:right;width:60%}.notifications-setting span{font-weight:400!important}.notifications-setting a{border-bottom:none}.notifications-setting a:hover{color:#3992e6;background-color:#fff!important}.notifications-body{height:300px;overflow:hidden;overflow-y:scroll}::-webkit-scrollbar{width:7px}::-webkit-scrollbar-track{background:#f1f1f1}::-webkit-scrollbar-thumb{background:#888}::-webkit-scrollbar-thumb:hover{background:#555}.notifications-body a{white-space:normal}.notifications-content{float:left;width:80%;margin-left:10px}.content{font-size:10px}:host ::ng-deep .notification-box-detail{border:none}:host ::ng-deep .notification-box-detail .ui-scrollpanel-content{padding:0 1px 0 0}.custom-notification{list-style:none;padding:0}.custom-notification li a i:first-child{color:#777}.custom-notification .master-title-notification{height:40px;line-height:40px;padding-right:10px;padding-left:10px;display:flex;align-items:center}.custom-notification .master-title-notification>span{flex:1 1;text-align:left}.custom-notification .master-title-notification>div.circleButton{flex:0 0 32px;display:inline-flex;align-items:center;justify-content:center}.custom-notification .master-title-notification>div.circleButton a{color:gray}.custom-notification .noti-item{padding:1rem 1rem .5rem}.custom-notification .noti-item .noti-content .noti-time{color:#777}.custom-notification .noti-item.un-read .noti-content .noti-time{color:#318bff}.custom-notification .noti-footer>a{padding:0;height:30px;display:flex;align-items:center;justify-content:center;color:#fff;background:#397ac3}.noti-avatar{width:auto}.noti-content{flex:1 1}@media (max-width: 1024px){.topbar-icon.fa-bell{position:relative;left:5px}}\n"], dependencies: [{ kind: "directive", type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i10.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "fitContent", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: i11.TnCustomScrollbarComponent, selector: "tn-custom-scrollbar", inputs: ["style", "useDefaultScrollBar", "autoMode", "class", "config", "whiteBackGround", "showScrollHorizontal"], outputs: ["scrollY", "scrollUp", "scrollDown", "scrollLeft", "scrollRight", "scrollYReachEnd", "scrollYReachStart", "scrollXReachEnd", "scrollXReachStart"] }, { kind: "pipe", type: i9.DatePipe, name: "date" }, { kind: "pipe", type: i12.SummaryPipe, name: "summary" }] });
226
226
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: TnAppNotificationComponent, decorators: [{
227
227
  type: Component,
228
- args: [{ selector: 'li[tn-app-notification]', providers: [ComponentContextService], template: "<a href=\"#\" tabindex=\"8\" (click)=\"openMenuEvent($event)\" pTooltip=\"Th\u00F4ng b\u00E1o\" tooltipPosition=\"bottom\"\r\n style=\"height: 30px;\">\r\n <span class=\"topbar-icon-left\">\r\n <i class=\"topbar-icon animated swing pi pi-bell\"></i>\r\n </span>\r\n <span class=\"topbar-badge animated rubberBand\" *ngIf=\"totalUnRead > 0\"\r\n [ngClass]=\"{'topbar-badge-bounce': bounceNoti}\">{{totalUnRead}}</span>\r\n <span class=\"topbar-item-name\">Th\u00F4ng b\u00E1o</span>\r\n</a>\r\n<ul class=\"fadeInDown custom-notification\">\r\n <div class=\"noti-header\" (click)=\"headerClick($event)\">\r\n <div class=\"ui-toolbar-group-center button-group master-title-notification\">\r\n <span style=\"float: left; color: #666;\">Th\u00F4ng b\u00E1o</span>\r\n <div class=\"circleButton\" pTooltip=\"\u0110\u00E1nh d\u1EA5u t\u1EA5t c\u1EA3 l\u00E0 \u0111\u00E3 \u0111\u1ECDc\" tooltipPosition=\"top\">\r\n <a href=\"javascript:\" (click)=\"readAll($event)\"><i class=\"fas fa-flag-checkered\"></i></a>\r\n </div>\r\n <div class=\"circleButton\" pTooltip=\"C\u1EA5u h\u00ECnh th\u00F4ng b\u00E1o\" tooltipPosition=\"top\">\r\n <a href=\"javascript:\"><i class=\"fas fa-cog\"></i></a>\r\n </div>\r\n </div>\r\n </div>\r\n <tn-custom-scrollbar #scrollbar [style]=\"{'width': '100%', 'height': '350px'}\" [class]=\"'notification-box-detail'\">\r\n <div role=\"menuitem\" *ngFor=\"let item of notifications\" class=\"noti-item\" [class.un-read]=\"!item.readedTime\">\r\n <a href=\"javascript:\" (click)=\"goToLink(item)\" class=\"topbar-message\">\r\n <div class=\"p-grid\">\r\n <div class=\"noti-avatar p-md-2\">\r\n <i *ngIf=\"!isHasAvatar(item)\" class=\"fas fa-globe-asia\"></i>\r\n <img *ngIf=\"isHasAvatar(item)\" src=\"{{getCurrentUserAvatar(item.avatarId)}}\" />\r\n </div>\r\n <div class=\"noti-content p-md-10\">\r\n <div class=\"noti-title\" [innerHTML]=\"item.messageTitle | summary : 40\"></div>\r\n <div class=\"noti-message\" [innerHTML]=\"item.messageContent | summary : 40\"></div>\r\n <div class=\"noti-time\">\r\n <span pTooltip=\"{{item.created | date:'dd/MM/yyyy HH:mm'}}\" tooltipPosition=\"top\">\r\n <i style=\"font-size: 1em;\" class=\"pi pi-clock\"></i>\r\n {{_crudService.renderDateTime(item.created)}}\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n </div>\r\n </tn-custom-scrollbar>\r\n <div class=\"noti-footer\">\r\n <a href=\"javascript:;\" style=\"font-size: 14px\" (click)=\"handleClicked()\">\r\n <span>\r\n <i class=\"pi pi-chevron-down\" style=\"font-size: 0.9em; margin-right: 3px\"></i>\r\n Xem t\u1EA5t c\u1EA3\r\n </span>\r\n </a>\r\n </div>\r\n</ul>", styles: [".noti-item{border-bottom:1px solid #eee;box-sizing:border-box}.noti-item .noti-message{color:#aaa}.noti-item .noti-message b,.noti-item .noti-message strong{color:#888}.noti-item.un-read{background:#e6f6e6;border-top:1px solid #e1e1e1;border-bottom:1px solid #e1e1e1;margin-top:-1px}.noti-item.un-read .noti-message{color:#777}.noti-item.un-read .noti-message b,.noti-item.un-read .noti-message strong{color:#555}.noti-item.un-read .noti-avatar i{color:#888!important}.noti-item.un-read img{filter:grayscale(0)}.noti-item a:hover{background-color:#ffffeb!important}.noti-item img{filter:grayscale(.6)}.noti-item.un-read .noti-content .noti-time{color:#444}.layout-wrapper .topbar-items>li>ul.custom-notification{width:350px;top:47px;right:-7px}.layout-wrapper .topbar-items>li>ul.custom-notification:before{right:15px}.noti-content{font-size:.95em}.noti-content .noti-title{font-weight:700;margin-bottom:.25em}.noti-content .noti-message{margin-bottom:0;font-size:.9em;line-height:18px;text-align:left;margin-top:0;-webkit-box-orient:vertical;-webkit-line-clamp:3;display:-webkit-box;overflow:hidden}.noti-content .noti-message p{margin:0}.noti-content .noti-time{margin-top:2px;font-size:.8em;font-weight:700}.noti-header{font-size:.9em;box-sizing:border-box;border-bottom:1px solid #ddd}.noti-header a{font-weight:700}.noti-header a:hover{background:none}.layout-wrapper .layout-menu li div.noti-time i:first-child{margin-right:0;width:15px;line-height:15px}.noti-avatar img{width:50px;margin-top:-2px;border:0;height:50px;border-radius:50%;box-shadow:0 1px 2px #00000030}.noti-avatar i{font-size:50px!important;color:#d4d4d4!important;margin-top:-2px;text-shadow:0 1px 2px rgba(0,0,0,.19)}.custom-notification{width:360px!important}.notifications{min-width:390px;padding-top:0;padding-bottom:0;top:43px!important;position:absolute;right:0;border:1px solid #d5d5d5!important;box-shadow:0 1px 3px #0000004d;border-radius:3px}.notifications .notifications-wrapper{display:block;margin:0;outline:none;position:relative;text-decoration:none}.notifications .notifications-wrapper .notifications-header{background-clip:padding-box;background-color:#fff;border-bottom:solid 1px #dddfe2;border-top-left-radius:3px;border-top-right-radius:3px;padding:0 12px;position:relative;z-index:100;float:left;width:100%;font-size:11.5px}.notifications .notifications-wrapper .notifications-header span{color:#333!important;font-weight:700}.notifications .notifications-wrapper .notifications-header .notifications-title{float:left;width:30%;margin-top:6px}.notifications .notifications-wrapper .notifications-body{display:block;position:relative;float:left;width:100%;background-color:#fff}.notifications .notifications-wrapper .notifications-body img{float:left;margin:0 5px;border-radius:50%;overflow:hidden;width:38px;height:38px}.notifications .notifications-wrapper .notifications-body a:hover{background-color:#edf2fa;background-image:linear-gradient(rgba(29,33,41,.04),rgba(29,33,41,.04))!important}.notifications .notifications-wrapper .notifications-footer{background-color:#fff;border-bottom-left-radius:3px;border-bottom-right-radius:3px;border-top:1px solid #dddfe2;display:block;font-weight:600;position:relative;text-align:center;z-index:100;float:left;width:100%;font-size:11.5px;background-color:#337ab7}.notifications .notifications-wrapper .notifications-footer a{font-weight:700;text-align:center;color:#fff;border:0px solid;padding-top:3px;padding-bottom:3px}.notifications .notifications-wrapper .notifications-footer a:hover{background:inherit}.notifications .notifications-wrapper .notifications-footer:hover{background-color:#2d6da3}.notifications a{position:relative;width:100%;float:left;border-bottom:1px solid #ccc;text-decoration:none;padding:5px;color:#1d2129;background:#fff}.notifications .un-read{background-color:#edf2fa}.notifications .title{font-weight:700;display:block;font-size:10.5px}.notifications .time{font-size:9.5px;display:block}.navbar-nav .badge{position:absolute;border-radius:50%;min-height:20px;min-width:20px;top:9px;left:10px;cursor:pointer}.badge-danger{color:#fff;background-color:#d50000;position:absolute;right:-14px;top:10px;cursor:pointer}.notifications-setting{display:flex;display:-webkit-flex;float:right;width:60%}.notifications-setting span{font-weight:400!important}.notifications-setting a{border-bottom:none}.notifications-setting a:hover{color:#3992e6;background-color:#fff!important}.notifications-body{height:300px;overflow:hidden;overflow-y:scroll}::-webkit-scrollbar{width:7px}::-webkit-scrollbar-track{background:#f1f1f1}::-webkit-scrollbar-thumb{background:#888}::-webkit-scrollbar-thumb:hover{background:#555}.notifications-body a{white-space:normal}.notifications-content{float:left;width:80%;margin-left:10px}.content{font-size:10px}:host ::ng-deep .notification-box-detail{border:none}:host ::ng-deep .notification-box-detail .ui-scrollpanel-content{padding:0 1px 0 0}.custom-notification{list-style:none;padding:0}.custom-notification li a i:first-child{color:#777}.custom-notification .master-title-notification{height:40px;line-height:40px;padding-right:10px;padding-left:10px;display:flex;align-items:center}.custom-notification .master-title-notification>span{flex:1 1;text-align:left}.custom-notification .master-title-notification>div.circleButton{flex:0 0 32px;display:inline-flex;align-items:center;justify-content:center}.custom-notification .master-title-notification>div.circleButton a{color:gray}.custom-notification .noti-item{padding:1rem 1rem .5rem}.custom-notification .noti-item .noti-content .noti-time{color:#777}.custom-notification .noti-item.un-read .noti-content .noti-time{color:#318bff}.custom-notification .noti-footer>a{padding:0;height:30px;display:flex;align-items:center;justify-content:center;color:#fff;background:#397ac3}.noti-avatar{width:auto}.noti-content{flex:1 1}@media (max-width: 1024px){.topbar-icon.fa-bell{position:relative;left:5px}}\n"] }]
228
+ args: [{ selector: 'li[tn-app-notification]', providers: [ComponentContextService], template: "<a href=\"#\" tabindex=\"8\" (click)=\"openMenuEvent($event)\" pTooltip=\"Th\u00F4ng b\u00E1o\" tooltipPosition=\"bottom\"\r\n style=\"height: 30px;\">\r\n <span class=\"topbar-icon-left\">\r\n <i class=\"topbar-icon animated swing pi pi-bell\"></i>\r\n </span>\r\n <span class=\"topbar-badge animated rubberBand\" *ngIf=\"totalUnRead > 0\"\r\n [ngClass]=\"{'topbar-badge-bounce': bounceNoti}\">{{totalUnRead}}</span>\r\n <span class=\"topbar-item-name\">Th\u00F4ng b\u00E1o</span>\r\n</a>\r\n<ul class=\"fadeInDown custom-notification\">\r\n <div class=\"noti-header\" (click)=\"headerClick($event)\">\r\n <div class=\"ui-toolbar-group-center button-group master-title-notification\">\r\n <span style=\"float: left; color: #666;\">Th\u00F4ng b\u00E1o</span>\r\n <div class=\"circleButton\" pTooltip=\"\u0110\u00E1nh d\u1EA5u t\u1EA5t c\u1EA3 l\u00E0 \u0111\u00E3 \u0111\u1ECDc\" tooltipPosition=\"top\">\r\n <a href=\"javascript:\" (click)=\"readAll($event)\"><i class=\"fas fa-flag-checkered\"></i></a>\r\n </div>\r\n <div class=\"circleButton\" pTooltip=\"C\u1EA5u h\u00ECnh th\u00F4ng b\u00E1o\" tooltipPosition=\"top\">\r\n <a href=\"javascript:\"><i class=\"fas fa-cog\"></i></a>\r\n </div>\r\n </div>\r\n </div>\r\n <tn-custom-scrollbar #scrollbar [style]=\"{'width': '100%', 'height': '350px'}\" [class]=\"'notification-box-detail'\">\r\n <div role=\"menuitem\" *ngFor=\"let item of notifications\" class=\"noti-item\" [class.un-read]=\"!item.readedTime\">\r\n <a href=\"javascript:\" (click)=\"goToLink(item)\" class=\"topbar-message\">\r\n <div class=\"grid\">\r\n <div class=\"noti-avatar md:col-2\">\r\n <i *ngIf=\"!isHasAvatar(item)\" class=\"fas fa-globe-asia\"></i>\r\n <img *ngIf=\"isHasAvatar(item)\" src=\"{{getCurrentUserAvatar(item.avatarId)}}\" />\r\n </div>\r\n <div class=\"noti-content md:col-10\">\r\n <div class=\"noti-title\" [innerHTML]=\"item.messageTitle | summary : 40\"></div>\r\n <div class=\"noti-message\" [innerHTML]=\"item.messageContent | summary : 40\"></div>\r\n <div class=\"noti-time\">\r\n <span pTooltip=\"{{item.created | date:'dd/MM/yyyy HH:mm'}}\" tooltipPosition=\"top\">\r\n <i style=\"font-size: 1em;\" class=\"pi pi-clock\"></i>\r\n {{_crudService.renderDateTime(item.created)}}\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n </div>\r\n </tn-custom-scrollbar>\r\n <div class=\"noti-footer\">\r\n <a href=\"javascript:;\" style=\"font-size: 14px\" (click)=\"handleClicked()\">\r\n <span>\r\n <i class=\"pi pi-chevron-down\" style=\"font-size: 0.9em; margin-right: 3px\"></i>\r\n Xem t\u1EA5t c\u1EA3\r\n </span>\r\n </a>\r\n </div>\r\n</ul>", styles: [".noti-item{border-bottom:1px solid #eee;box-sizing:border-box}.noti-item .noti-message{color:#aaa}.noti-item .noti-message b,.noti-item .noti-message strong{color:#888}.noti-item.un-read{background:#e6f6e6;border-top:1px solid #e1e1e1;border-bottom:1px solid #e1e1e1;margin-top:-1px}.noti-item.un-read .noti-message{color:#777}.noti-item.un-read .noti-message b,.noti-item.un-read .noti-message strong{color:#555}.noti-item.un-read .noti-avatar i{color:#888!important}.noti-item.un-read img{filter:grayscale(0)}.noti-item a:hover{background-color:#ffffeb!important}.noti-item img{filter:grayscale(.6)}.noti-item.un-read .noti-content .noti-time{color:#444}.layout-wrapper .topbar-items>li>ul.custom-notification{width:350px;top:47px;right:-7px}.layout-wrapper .topbar-items>li>ul.custom-notification:before{right:15px}.noti-content{font-size:.95em}.noti-content .noti-title{font-weight:700;margin-bottom:.25em}.noti-content .noti-message{margin-bottom:0;font-size:.9em;line-height:18px;text-align:left;margin-top:0;-webkit-box-orient:vertical;-webkit-line-clamp:3;display:-webkit-box;overflow:hidden}.noti-content .noti-message p{margin:0}.noti-content .noti-time{margin-top:2px;font-size:.8em;font-weight:700}.noti-header{font-size:.9em;box-sizing:border-box;border-bottom:1px solid #ddd}.noti-header a{font-weight:700}.noti-header a:hover{background:none}.layout-wrapper .layout-menu li div.noti-time i:first-child{margin-right:0;width:15px;line-height:15px}.noti-avatar img{width:50px;margin-top:-2px;border:0;height:50px;border-radius:50%;box-shadow:0 1px 2px #00000030}.noti-avatar i{font-size:50px!important;color:#d4d4d4!important;margin-top:-2px;text-shadow:0 1px 2px rgba(0,0,0,.19)}.custom-notification{width:360px!important}.notifications{min-width:390px;padding-top:0;padding-bottom:0;top:43px!important;position:absolute;right:0;border:1px solid #d5d5d5!important;box-shadow:0 1px 3px #0000004d;border-radius:3px}.notifications .notifications-wrapper{display:block;margin:0;outline:none;position:relative;text-decoration:none}.notifications .notifications-wrapper .notifications-header{background-clip:padding-box;background-color:#fff;border-bottom:solid 1px #dddfe2;border-top-left-radius:3px;border-top-right-radius:3px;padding:0 12px;position:relative;z-index:100;float:left;width:100%;font-size:11.5px}.notifications .notifications-wrapper .notifications-header span{color:#333!important;font-weight:700}.notifications .notifications-wrapper .notifications-header .notifications-title{float:left;width:30%;margin-top:6px}.notifications .notifications-wrapper .notifications-body{display:block;position:relative;float:left;width:100%;background-color:#fff}.notifications .notifications-wrapper .notifications-body img{float:left;margin:0 5px;border-radius:50%;overflow:hidden;width:38px;height:38px}.notifications .notifications-wrapper .notifications-body a:hover{background-color:#edf2fa;background-image:linear-gradient(rgba(29,33,41,.04),rgba(29,33,41,.04))!important}.notifications .notifications-wrapper .notifications-footer{background-color:#fff;border-bottom-left-radius:3px;border-bottom-right-radius:3px;border-top:1px solid #dddfe2;display:block;font-weight:600;position:relative;text-align:center;z-index:100;float:left;width:100%;font-size:11.5px;background-color:#337ab7}.notifications .notifications-wrapper .notifications-footer a{font-weight:700;text-align:center;color:#fff;border:0px solid;padding-top:3px;padding-bottom:3px}.notifications .notifications-wrapper .notifications-footer a:hover{background:inherit}.notifications .notifications-wrapper .notifications-footer:hover{background-color:#2d6da3}.notifications a{position:relative;width:100%;float:left;border-bottom:1px solid #ccc;text-decoration:none;padding:5px;color:#1d2129;background:#fff}.notifications .un-read{background-color:#edf2fa}.notifications .title{font-weight:700;display:block;font-size:10.5px}.notifications .time{font-size:9.5px;display:block}.navbar-nav .badge{position:absolute;border-radius:50%;min-height:20px;min-width:20px;top:9px;left:10px;cursor:pointer}.badge-danger{color:#fff;background-color:#d50000;position:absolute;right:-14px;top:10px;cursor:pointer}.notifications-setting{display:flex;display:-webkit-flex;float:right;width:60%}.notifications-setting span{font-weight:400!important}.notifications-setting a{border-bottom:none}.notifications-setting a:hover{color:#3992e6;background-color:#fff!important}.notifications-body{height:300px;overflow:hidden;overflow-y:scroll}::-webkit-scrollbar{width:7px}::-webkit-scrollbar-track{background:#f1f1f1}::-webkit-scrollbar-thumb{background:#888}::-webkit-scrollbar-thumb:hover{background:#555}.notifications-body a{white-space:normal}.notifications-content{float:left;width:80%;margin-left:10px}.content{font-size:10px}:host ::ng-deep .notification-box-detail{border:none}:host ::ng-deep .notification-box-detail .ui-scrollpanel-content{padding:0 1px 0 0}.custom-notification{list-style:none;padding:0}.custom-notification li a i:first-child{color:#777}.custom-notification .master-title-notification{height:40px;line-height:40px;padding-right:10px;padding-left:10px;display:flex;align-items:center}.custom-notification .master-title-notification>span{flex:1 1;text-align:left}.custom-notification .master-title-notification>div.circleButton{flex:0 0 32px;display:inline-flex;align-items:center;justify-content:center}.custom-notification .master-title-notification>div.circleButton a{color:gray}.custom-notification .noti-item{padding:1rem 1rem .5rem}.custom-notification .noti-item .noti-content .noti-time{color:#777}.custom-notification .noti-item.un-read .noti-content .noti-time{color:#318bff}.custom-notification .noti-footer>a{padding:0;height:30px;display:flex;align-items:center;justify-content:center;color:#fff;background:#397ac3}.noti-avatar{width:auto}.noti-content{flex:1 1}@media (max-width: 1024px){.topbar-icon.fa-bell{position:relative;left:5px}}\n"] }]
229
229
  }], ctorParameters: function () { return [{ type: i1.SignalRService }, { type: i2.UserV5Service }, { type: i3.NotificationService }, { type: i4.Router }, { type: i5.EnvironmentService }, { type: i6.CrudService }, { type: i7.NotifierService }, { type: i8.CustomRouterService }, { type: i0.Injector }]; }, propDecorators: { notificationDetail: [{
230
230
  type: ViewChild,
231
231
  args: ['notificationdetail']
@@ -233,4 +233,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImpor
233
233
  type: Output,
234
234
  args: ['openMenu']
235
235
  }] } });
236
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG4tYXBwLW5vdGlmaWNhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL3RuLWFwcC1ub3RpZmljYXRpb24vdG4tYXBwLW5vdGlmaWNhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL3RuLWFwcC1ub3RpZmljYXRpb24vdG4tYXBwLW5vdGlmaWNhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBb0IsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUN0RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzdELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBZWxELE1BQU0sT0FBTywwQkFBMkIsU0FBUSxhQUFhO0lBb0J6RCxZQUNZLGVBQStCLEVBQy9CLGNBQTZCLEVBQzdCLG9CQUF5QyxFQUN6QyxPQUFlLEVBQ2YsbUJBQXVDLEVBQ3hDLFlBQXlCLEVBQ3RCLGdCQUFpQyxFQUNuQyxvQkFBeUMsRUFDakQsUUFBa0I7UUFFbEIsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBVlIsb0JBQWUsR0FBZixlQUFlLENBQWdCO1FBQy9CLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FB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LHdDQUF3QztZQUN4QyxJQUFJO1NBQ1A7SUFDTCxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQUs7UUFDYixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxhQUFhLENBQUMsTUFBTTtRQUNoQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUM1QixDQUFDO0lBRUQsYUFBYTtRQUNULE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNsRixJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ2pCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1NBQy9FO1FBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNoQyxDQUFDOzt1SEF0T1EsMEJBQTBCOzJHQUExQiwwQkFBMEIscUZBRnhCLENBQUMsdUJBQXVCLENBQUMsMktDcEJ4Qyx5b0dBbURLOzJGRDdCUSwwQkFBMEI7a0JBTnRDLFNBQVM7K0JBQ0kseUJBQXlCLGFBR3hCLENBQUMsdUJBQXVCLENBQUM7MFVBR0gsa0JBQWtCO3NCQUFsRCxTQUFTO3VCQUFDLG9CQUFvQjtnQkFDWCxRQUFRO3NCQUEzQixNQUFNO3VCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5qZWN0b3IsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgQ29tcG9uZW50Q29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9hcHAtY29udGV4dC9jb21wb25lbnQtY29udGV4dC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29tcG9uZW50QmFzZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvYmFzZS9jb21wb25lbnQtYmFzZSc7XHJcbmltcG9ydCB7IENvbUN0eENvbnN0YW50cyB9IGZyb20gJy4uLy4uL2NvbmZpZ3MvY29tcG9uZW50LWNvbnRleHQuY29uc3RhbnQnO1xyXG5pbXBvcnQgeyBUb3BpY1JlbG9hZE5vdGlmaWNhdGlvbiB9IGZyb20gJy4uLy4uL2NvbnN0L2NvbW1vbic7XHJcbmltcG9ydCB7IE9wZXJhdG9yIH0gZnJvbSAnLi4vLi4vZW51bXMvY29tbW9uJztcclxuaW1wb3J0IHsgR3JpZEluZm8gfSBmcm9tICcuLi8uLi9tb2RlbHMvZ3JpZC1pbmZvJztcclxuaW1wb3J0IHsgQ3J1ZFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jcnVkLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDdXN0b21Sb3V0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY3VzdG9tLXJvdXRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRW52aXJvbm1lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZW52aXJvbm1lbnQuc2VydmljZSc7XHJcbmltcG9ydCB7IE5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ub3RpZmljYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IE5vdGlmaWVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL25vdGlmaWVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTaWduYWxSU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3NpZ25hbHIuc2VydmljZSc7XHJcbmltcG9ydCB7IFVzZXJWNVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy91c2VyLXY1LnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2xpW3RuLWFwcC1ub3RpZmljYXRpb25dJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi90bi1hcHAtbm90aWZpY2F0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3RuLWFwcC1ub3RpZmljYXRpb24uY29tcG9uZW50LnNjc3MnXSxcclxuICAgIHByb3ZpZGVyczogW0NvbXBvbmVudENvbnRleHRTZXJ2aWNlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVG5BcHBOb3RpZmljYXRpb25Db21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRCYXNlIGltcGxlbWVudHMgT25Jbml0IHtcclxuICAgIEBWaWV3Q2hpbGQoJ25vdGlmaWNhdGlvbmRldGFpbCcpIG5vdGlmaWNhdGlvbkRldGFpbDogYW55O1xyXG4gICAgQE91dHB1dCgnb3Blbk1lbnUnKSBvcGVuTWVudTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgICBtYXhOb3RpZmljYXRpb24gPSAxMDtcclxuICAgIHRvdGFsVW5SZWFkID0gMDtcclxuICAgIGJvdW5jZU5vdGkgPSB0cnVlO1xyXG4gICAgZmlsZUFwaSA9ICcnO1xyXG4gICAgYXBpVXBsb2FkVXJsID0gJyc7XHJcblxyXG4gICAgZGF0YSA9IFtdO1xyXG4gICAgZWxWaWV3Tm90aWZpY2F0aW9uTmF2SW5zaWRlOiBIVE1MRWxlbWVudDtcclxuXHJcbiAgICB1cmwgPSAnJztcclxuICAgIHVybGRldGFpbCA9ICcnO1xyXG4gICAgbm90aWZpY2F0aW9ucyA9IFtdO1xyXG5cclxuICAgIHVzZXJJZDogc3RyaW5nO1xyXG4gICAgY3VycmVudEl0ZW06IGFueTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIF9zaWduYWxSU2VydmljZTogU2lnbmFsUlNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBfdXNlclY1U2VydmljZTogVXNlclY1U2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9ub3RpZmljYXRpb25TZXJ2aWNlOiBOb3RpZmljYXRpb25TZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX3JvdXRlcjogUm91dGVyLFxyXG4gICAgICAgIHByaXZhdGUgX2Vudmlyb25tZW50U2VydmljZTogRW52aXJvbm1lbnRTZXJ2aWNlLFxyXG4gICAgICAgIHB1YmxpYyBfY3J1ZFNlcnZpY2U6IENydWRTZXJ2aWNlLFxyXG4gICAgICAgIHByb3RlY3RlZCBfbm90aWZpZXJTZXJ2aWNlOiBOb3RpZmllclNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBfY3VzdG9tUm91dGVyU2VydmljZTogQ3VzdG9tUm91dGVyU2VydmljZSxcclxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3JcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKGluamVjdG9yKTtcclxuXHJcbiAgICAgICAgdGhpcy5yb290Q29udGV4dC5zdWJzY3JpYmUoJ05PVElGSUNBVElPTl9DSEFOR0UnLCBycyA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaE5vdGlmaWNhdGlvbigpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuX3NpZ25hbFJTZXJ2aWNlLnN0YXJ0KCdOb3RpZmljYXRpb25IdWInLCBUb3BpY1JlbG9hZE5vdGlmaWNhdGlvbiwgZGF0YSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaE5vdGlmaWNhdGlvbigpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMucm9vdENvbnRleHQuc3Vic2NyaWJlKENvbUN0eENvbnN0YW50cy5OT1RJRklDQVRJT04uTk9USUZJQ0FUSU9OX1JFTE9BRCwgcmVzID0+IHtcclxuICAgICAgICAgICAgdGhpcy5yZWZyZXNoTm90aWZpY2F0aW9uKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLl9lbnZpcm9ubWVudFNlcnZpY2UuZ2V0RGlzYWJsZU5vdGlmaWNhdGlvbigpKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl91c2VyVjVTZXJ2aWNlLmdldElkKCkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0VXNlcklkKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmluaXROb3RpZmljYXRpb24oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucm9vdENvbnRleHQucmVwbGF5U3Vic2NyaWJlKENvbUN0eENvbnN0YW50cy5ST09ULlVTRVJfTE9BREVELCBycyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRVc2VySWQoKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmluaXROb3RpZmljYXRpb24oKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdldFVzZXJJZCgpIHtcclxuICAgICAgICAvLyBjb25zdCByYXdVc2VySWQgPSB0aGlzLl91c2VyVjVTZXJ2aWNlLmdldElkKCk7XHJcbiAgICAgICAgLy8gbGV0IHVzZXJJZCA9IE51bWJlcihyYXdVc2VySWQpO1xyXG4gICAgICAgIC8vIGxldCB1c2VySWRSZXN1bHQgPSAnJztcclxuICAgICAgICAvLyBpZiAoIWlzTmFOKHVzZXJJZCkpIHtcclxuICAgICAgICAvLyAgICB1c2VySWRSZXN1bHQgPSB0aGlzLl91c2VyVjVTZXJ2aWNlLmdldEluc3RhbmNlSWQoKTtcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgLy8gZWxzZXtcclxuICAgICAgICAvLyAgICB1c2VySWRSZXN1bHQgPSByYXdVc2VySWQ7XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIC8vIHRoaXMudXNlcklkID0gdXNlcklkUmVzdWx0LnRvU3RyaW5nKCk7XHJcbiAgICAgICAgdGhpcy51c2VySWQgPSB0aGlzLl91c2VyVjVTZXJ2aWNlLmdldElkKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaW5pdE5vdGlmaWNhdGlvbigpIHtcclxuICAgICAgICAvLyB0aGlzLl9zaWduYWxSU2VydmljZS5zdGFydChcclxuICAgICAgICAvLyAgICAgdGhpcy5fbW9kdWxlQ29uZmlnU2VydmljZS5nZXRDb25maWcoKS5lbnZpcm9ubWVudC5zaWduYWxSQ29uZmlnLnRvcGljLm5vdGlmaWNhdGlvbkNyZWF0ZWQsXHJcbiAgICAgICAgLy8gICAgIHRoaXMudXNlcklkLFxyXG4gICAgICAgIC8vICAgICB0aGlzLm5vdGlmeVRyaWdnZXIuYmluZCh0aGlzKVxyXG4gICAgICAgIC8vICk7XHJcblxyXG4gICAgICAgIC8vIHRoaXMucmVmcmVzaE5vdGlmaWNhdGlvbigpO1xyXG4gICAgfVxyXG5cclxuICAgIG5vdGlmeVRyaWdnZXIoZGF0YTogYW55KSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBkYXRhID09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIGRhdGEgPSBKU09OLnBhcnNlKGRhdGEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnMudW5zaGlmdChkYXRhKTtcclxuICAgICAgICBpZiAoZGF0YS5jcmVhdGVkQnkpIHtcclxuICAgICAgICAgICAgdGhpcy5fdXNlclY1U2VydmljZS5nZXRCYXNpY1VzZXJJbmZvKGRhdGEuY3JlYXRlZEJ5KS50aGVuKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICAgICAgICBkYXRhLmF2YXRhcklkID0gcmVzdWx0LmF2YXRhcjtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5ub3RpZmljYXRpb25zLmxlbmd0aCA+IHRoaXMubWF4Tm90aWZpY2F0aW9uKSB7XHJcbiAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9ucy5wb3AoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5yb290Q29udGV4dC5maXJlRXZlbnQoJ05PVElGSUNBVElPTl9VU0VSX0NIQU5HRScsIHRydWUpO1xyXG5cclxuICAgICAgICB0aGlzLnRvdGFsVW5SZWFkKys7XHJcbiAgICAgICAgdGhpcy5ib3VuY2VOb3RpID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZWZyZXNoTm90aWZpY2F0aW9uKCkge1xyXG4gICAgICAgIGlmICh0aGlzLl9lbnZpcm9ubWVudFNlcnZpY2UuZ2V0RGlzYWJsZU5vdGlmaWNhdGlvbigpKSByZXR1cm47XHJcbiAgICAgICAgY29uc3QgZ3JpZEluZm8gPSBuZXcgR3JpZEluZm8oe1xyXG4gICAgICAgICAgICBmaWx0ZXJzOiBbXHJcbiAgICAgICAgICAgICAgICB0aGlzLm5ld0ZpbHRlcigndXNlcklkJywgT3BlcmF0b3IuZXF1YWwsIHRoaXMudXNlcklkKVxyXG4gICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICBwYWdlSW5mbzoge1xyXG4gICAgICAgICAgICAgICAgcGFnZTogMSxcclxuICAgICAgICAgICAgICAgIHBhZ2VTaXplOiB0aGlzLm1heE5vdGlmaWNhdGlvblxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzb3J0czogW1xyXG4gICAgICAgICAgICAgICAgeyBmaWVsZDogJ2NyZWF0ZWQnLCBkaXI6IC0xIH1cclxuICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgZmllbGRzOiAnJ1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGNvbnN0IHJlYWRlZEZpbHRlcnMgPSBbXHJcbiAgICAgICAgICAgIHRoaXMubmV3RmlsdGVyKCd1c2VySWQnLCBPcGVyYXRvci5lcXVhbCwgdGhpcy51c2VySWQpLFxyXG4gICAgICAgICAgICB0aGlzLm5ld0ZpbHRlcigncmVhZGVkVGltZScsIE9wZXJhdG9yLmlzTnVsbCwgJzEnKVxyXG4gICAgICAgIF07XHJcbiAgICAgICAgUHJvbWlzZS5hbGwoW1xyXG4gICAgICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25TZXJ2aWNlLmdldEJ5R3JpZFJlcXVlc3QoZ3JpZEluZm8pLnRoZW4ocmVzID0+IHRoaXMuaGFuZGxlUmVzcG9uc2UocmVzLCAnJywgZiA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnMgPSByZXMuZGF0YTtcclxuICAgICAgICAgICAgICAgIGlmICghcmVzLnN1Y2Nlc3MgfHwgcmVzLmRhdGEgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX25vdGlmaWVyU2VydmljZS5zaG93V2FybmluZ0J5UmVzcG9uc2UocmVzKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJvdW5jZU5vdGkgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hZnRlckdldE5vdGljYXRpb24oKTtcclxuICAgICAgICAgICAgfSkpLFxyXG4gICAgICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25TZXJ2aWNlLmdldEFsbChyZWFkZWRGaWx0ZXJzLCAnaWQnKS50aGVuKHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzLmRhdGEgPT0gbnVsbCB8fCAhcmVzLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9ub3RpZmllclNlcnZpY2Uuc2hvd1dhcm5pbmdCeVJlc3BvbnNlKHJlcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy50b3RhbFVuUmVhZCA9ICg8YW55W10+cmVzLmRhdGEpLmxlbmd0aDtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICBdKTtcclxuICAgIH1cclxuXHJcbiAgICBhZnRlckdldE5vdGljYXRpb24oKSB7XHJcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50LmNyZWF0ZWRVc2VySWQgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuX3VzZXJWNVNlcnZpY2UuZ2V0QmFzaWNVc2VySW5mbyhlbGVtZW50LmNyZWF0ZWRVc2VySWQpLnRoZW4ocmVzdWx0ID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuYXZhdGFyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5hdmF0YXJJZCA9IHJlc3VsdC5hdmF0YXI7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJlYWRBbGwoZXZlbnQpIHtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIHRoaXMuX25vdGlmaWVyU2VydmljZS5zaG93Q29uZmlybSgnxJDDoW5oIGThuqV1IHThuqV0IGPhuqMgdGjDtG5nIGLDoW8gbMOgIMSRw6MgxJHhu41jPycsICfEkMOhbmggZOG6pXUgxJHDoyDEkeG7jWMgdGjDtG5nIGLDoW8nKS50aGVuKHJzID0+IHtcclxuICAgICAgICAgICAgaWYgKCFycykgcmV0dXJuO1xyXG4gICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnMuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnQucmVhZGVkVGltZSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25TZXJ2aWNlLm1hcmtSZWFkQWxsQnlVc2VyQ3VycmVudCgpLmNhdGNoKGVyciA9PiB0aGlzLl9jb21tb25TZXJ2aWNlLmhhbmRsZUVycm9yKGVyciwgdGhpcy5faW5qZWN0b3IpKTtcclxuICAgICAgICAgICAgdGhpcy50b3RhbFVuUmVhZCA9IDA7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVhZEJ5SWQoZGF0YTogYW55KSB7XHJcbiAgICAgICAgZGF0YS5yZWFkZWRUaW1lID0gbmV3IERhdGUoKTtcclxuICAgICAgICB0aGlzLnRvdGFsVW5SZWFkIC09IDE7XHJcbiAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9uU2VydmljZS5tYXJrUmVhZEJ5SWQoZGF0YS5pZCkuY2F0Y2goZXJyID0+IHRoaXMuX2NvbW1vblNlcnZpY2UuaGFuZGxlRXJyb3IoZXJyLCB0aGlzLl9pbmplY3RvcikpO1xyXG4gICAgfVxyXG5cclxuICAgIGlzSGFzQXZhdGFyKGl0ZW0pIHtcclxuICAgICAgICByZXR1cm4gISFpdGVtLmF2YXRhcklkO1xyXG4gICAgfVxyXG5cclxuICAgIGlzUmVhZGVkKGl0ZW06IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAhIWl0ZW0ucmVhZGVkVGltZTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRDdXJyZW50VXNlckF2YXRhcihpdGVtKSB7XHJcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuYXBpVXBsb2FkVXJsfS9wdWJsaWMvJHtpdGVtfS9Eb3dubG9hZGA7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ29Ub0xpbmsoaXRlbTogYW55KSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmlzUmVhZGVkKGl0ZW0pKSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucmVhZEJ5SWQoaXRlbSk7XHJcbiAgICAgICAgICAgIHRoaXMudG90YWxVblJlYWQtLTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIFNhdmUgY3VycmVudCBwYXRoIHRvIGdvIGJhY2tcclxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnY3VycmVudFVybCcsIHRvcC5sb2NhdGlvbi5ocmVmKTtcclxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnY3VycmVudFBhdGhOYW1lJywgdG9wLmxvY2F0aW9uLnBhdGhuYW1lKTtcclxuICAgICAgICBpZiAoaXRlbS5tZXNzYWdlTGluaykge1xyXG4gICAgICAgICAgICBjb25zdCBsaW5rID0gaXRlbS5tZXNzYWdlTGluaztcclxuICAgICAgICAgICAgLy8gTmFtTkggLSDEkOG7gyB0b3AgbG9jYXRpb24gaHJlZiB2w6wgY8OzIHRo4buDIGNsaWNrIHhlbSB0aMO0bmcgYsOhbyB04burIHBow6JuIGjhu4cga2jDoWMsIHNhdSB04buRaSDGsHUgbuG6v3UgY8O5bmcgcGjDom4gaOG7hyB0aMOsIHJvdXRlciBuYXZpZ2F0ZSwgY8OybiBraMOhYyBwaMOibiBo4buHIHRow6wgbG9jYXRpb24gaHJlZlxyXG4gICAgICAgICAgICB0b3AubG9jYXRpb24uaHJlZiA9IGxpbms7XHJcbiAgICAgICAgICAgIC8vIGlmICh0aGlzLl9yb3V0ZXIuaXNBY3RpdmUobGluaywgZmFsc2UpKSB7XHJcbiAgICAgICAgICAgIC8vICAgICB0aGlzLnJvb3RDb250ZXh0LmZpcmVFdmVudChDb21DdHhDb25zdGFudHMuUk9PVC5OT1RJX0NMSUNLLCBsaW5rKTtcclxuICAgICAgICAgICAgLy8gfSBlbHNlIHtcclxuICAgICAgICAgICAgLy8gICAgIGlmICh0aGlzLnJvb3RNb2RlbC5mcmFnbWVudHMpIHtcclxuICAgICAgICAgICAgLy8gICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5yb290TW9kZWwuZnJhZ21lbnRzKSB7XHJcbiAgICAgICAgICAgIC8vICAgICAgICAgICAgIGlmICghaXRlbS5jbG9zZWQpIHtcclxuICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgIGl0ZW0udW5zdWJzY3JpYmUoKTtcclxuICAgICAgICAgICAgLy8gICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gICAgIH1cclxuICAgICAgICAgICAgLy8gICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKGxpbmspO1xyXG4gICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGhlYWRlckNsaWNrKGV2ZW50KSB7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIH1cclxuXHJcbiAgICBvcGVuTWVudUV2ZW50KCRldmVudCkge1xyXG4gICAgICAgIHRoaXMub3Blbk1lbnUubmV4dCgkZXZlbnQpO1xyXG4gICAgICAgIHRoaXMuYm91bmNlTm90aSA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGhhbmRsZUNsaWNrZWQoKSB7XHJcbiAgICAgICAgY29uc3QgdGhvbmdCYW9Eb21haW4gPSB0aGlzLl9lbnZpcm9ubWVudFNlcnZpY2UuZ2V0SHR0cENsaWVudEVuZHBvaW50KCd0aG9uZ2JhbycpO1xyXG4gICAgICAgIGlmICghdGhvbmdCYW9Eb21haW4pIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX25vdGlmaWVyU2VydmljZS5zaG93V2FybmluZygnVGhp4bq/dSBj4bqldSBow6xuaCBkb21haW4gdGjDtG5nIGLDoW8nKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgd2luZG93Lm9wZW4odGhvbmdCYW9Eb21haW4pO1xyXG4gICAgfVxyXG59XHJcbiIsIjxhIGhyZWY9XCIjXCIgdGFiaW5kZXg9XCI4XCIgKGNsaWNrKT1cIm9wZW5NZW51RXZlbnQoJGV2ZW50KVwiIHBUb29sdGlwPVwiVGjDtG5nIGLDoW9cIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIlxyXG4gICAgc3R5bGU9XCJoZWlnaHQ6IDMwcHg7XCI+XHJcbiAgICA8c3BhbiBjbGFzcz1cInRvcGJhci1pY29uLWxlZnRcIj5cclxuICAgICAgICA8aSBjbGFzcz1cInRvcGJhci1pY29uIGFuaW1hdGVkIHN3aW5nIHBpIHBpLWJlbGxcIj48L2k+XHJcbiAgICA8L3NwYW4+XHJcbiAgICA8c3BhbiBjbGFzcz1cInRvcGJhci1iYWRnZSBhbmltYXRlZCBydWJiZXJCYW5kXCIgKm5nSWY9XCJ0b3RhbFVuUmVhZCA+IDBcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cInsndG9wYmFyLWJhZGdlLWJvdW5jZSc6IGJvdW5jZU5vdGl9XCI+e3t0b3RhbFVuUmVhZH19PC9zcGFuPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJ0b3BiYXItaXRlbS1uYW1lXCI+VGjDtG5nIGLDoW88L3NwYW4+XHJcbjwvYT5cclxuPHVsIGNsYXNzPVwiZmFkZUluRG93biBjdXN0b20tbm90aWZpY2F0aW9uXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibm90aS1oZWFkZXJcIiAoY2xpY2spPVwiaGVhZGVyQ2xpY2soJGV2ZW50KVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ1aS10b29sYmFyLWdyb3VwLWNlbnRlciBidXR0b24tZ3JvdXAgbWFzdGVyLXRpdGxlLW5vdGlmaWNhdGlvblwiPlxyXG4gICAgICAgICAgICA8c3BhbiBzdHlsZT1cImZsb2F0OiBsZWZ0OyBjb2xvcjogIzY2NjtcIj5UaMO0bmcgYsOhbzwvc3Bhbj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNpcmNsZUJ1dHRvblwiIHBUb29sdGlwPVwixJDDoW5oIGThuqV1IHThuqV0IGPhuqMgbMOgIMSRw6MgxJHhu41jXCIgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCI+XHJcbiAgICAgICAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDpcIiAoY2xpY2spPVwicmVhZEFsbCgkZXZlbnQpXCI+PGkgY2xhc3M9XCJmYXMgZmEtZmxhZy1jaGVja2VyZWRcIj48L2k+PC9hPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNpcmNsZUJ1dHRvblwiIHBUb29sdGlwPVwiQ+G6pXUgaMOsbmggdGjDtG5nIGLDoW9cIiB0b29sdGlwUG9zaXRpb249XCJ0b3BcIj5cclxuICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OlwiPjxpIGNsYXNzPVwiZmFzIGZhLWNvZ1wiPjwvaT48L2E+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8dG4tY3VzdG9tLXNjcm9sbGJhciAjc2Nyb2xsYmFyIFtzdHlsZV09XCJ7J3dpZHRoJzogJzEwMCUnLCAnaGVpZ2h0JzogJzM1MHB4J31cIiBbY2xhc3NdPVwiJ25vdGlmaWNhdGlvbi1ib3gtZGV0YWlsJ1wiPlxyXG4gICAgICAgIDxkaXYgcm9sZT1cIm1lbnVpdGVtXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygbm90aWZpY2F0aW9uc1wiIGNsYXNzPVwibm90aS1pdGVtXCIgW2NsYXNzLnVuLXJlYWRdPVwiIWl0ZW0ucmVhZGVkVGltZVwiPlxyXG4gICAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDpcIiAoY2xpY2spPVwiZ29Ub0xpbmsoaXRlbSlcIiBjbGFzcz1cInRvcGJhci1tZXNzYWdlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1ncmlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vdGktYXZhdGFyIHAtbWQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cIiFpc0hhc0F2YXRhcihpdGVtKVwiIGNsYXNzPVwiZmFzIGZhLWdsb2JlLWFzaWFcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJpc0hhc0F2YXRhcihpdGVtKVwiIHNyYz1cInt7Z2V0Q3VycmVudFVzZXJBdmF0YXIoaXRlbS5hdmF0YXJJZCl9fVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vdGktY29udGVudCBwLW1kLTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub3RpLXRpdGxlXCIgW2lubmVySFRNTF09XCJpdGVtLm1lc3NhZ2VUaXRsZSB8IHN1bW1hcnkgOiA0MFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm90aS1tZXNzYWdlXCIgW2lubmVySFRNTF09XCJpdGVtLm1lc3NhZ2VDb250ZW50IHwgc3VtbWFyeSA6IDQwXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub3RpLXRpbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHBUb29sdGlwPVwie3tpdGVtLmNyZWF0ZWQgfCBkYXRlOidkZC9NTS95eXl5IEhIOm1tJ319XCIgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgc3R5bGU9XCJmb250LXNpemU6IDFlbTtcIiBjbGFzcz1cInBpIHBpLWNsb2NrXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7X2NydWRTZXJ2aWNlLnJlbmRlckRhdGVUaW1lKGl0ZW0uY3JlYXRlZCl9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L3RuLWN1c3RvbS1zY3JvbGxiYXI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibm90aS1mb290ZXJcIj5cclxuICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDo7XCIgc3R5bGU9XCJmb250LXNpemU6IDE0cHhcIiAoY2xpY2spPVwiaGFuZGxlQ2xpY2tlZCgpXCI+XHJcbiAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1jaGV2cm9uLWRvd25cIiBzdHlsZT1cImZvbnQtc2l6ZTogMC45ZW07IG1hcmdpbi1yaWdodDogM3B4XCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgWGVtIHThuqV0IGPhuqNcclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvYT5cclxuICAgIDwvZGl2PlxyXG48L3VsPiJdfQ==
236
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG4tYXBwLW5vdGlmaWNhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL3RuLWFwcC1ub3RpZmljYXRpb24vdG4tYXBwLW5vdGlmaWNhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL3RuLWFwcC1ub3RpZmljYXRpb24vdG4tYXBwLW5vdGlmaWNhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBb0IsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUN0RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzdELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBZWxELE1BQU0sT0FBTywwQkFBMkIsU0FBUSxhQUFhO0lBb0J6RCxZQUNZLGVBQStCLEVBQy9CLGNBQTZCLEVBQzdCLG9CQUF5QyxFQUN6QyxPQUFlLEVBQ2YsbUJBQXVDLEVBQ3hDLFlBQXlCLEVBQ3RCLGdCQUFpQyxFQUNuQyxvQkFBeUMsRUFDakQsUUFBa0I7UUFFbEIsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBVlIsb0JBQWUsR0FBZixlQUFlLENBQWdCO1FBQy9CLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FB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LHdDQUF3QztZQUN4QyxJQUFJO1NBQ1A7SUFDTCxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQUs7UUFDYixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxhQUFhLENBQUMsTUFBTTtRQUNoQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUM1QixDQUFDO0lBRUQsYUFBYTtRQUNULE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNsRixJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ2pCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1NBQy9FO1FBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNoQyxDQUFDOzt1SEF0T1EsMEJBQTBCOzJHQUExQiwwQkFBMEIscUZBRnhCLENBQUMsdUJBQXVCLENBQUMsMktDcEJ4Qywyb0dBbURLOzJGRDdCUSwwQkFBMEI7a0JBTnRDLFNBQVM7K0JBQ0kseUJBQXlCLGFBR3hCLENBQUMsdUJBQXVCLENBQUM7MFVBR0gsa0JBQWtCO3NCQUFsRCxTQUFTO3VCQUFDLG9CQUFvQjtnQkFDWCxRQUFRO3NCQUEzQixNQUFNO3VCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5qZWN0b3IsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgQ29tcG9uZW50Q29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9hcHAtY29udGV4dC9jb21wb25lbnQtY29udGV4dC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29tcG9uZW50QmFzZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvYmFzZS9jb21wb25lbnQtYmFzZSc7XHJcbmltcG9ydCB7IENvbUN0eENvbnN0YW50cyB9IGZyb20gJy4uLy4uL2NvbmZpZ3MvY29tcG9uZW50LWNvbnRleHQuY29uc3RhbnQnO1xyXG5pbXBvcnQgeyBUb3BpY1JlbG9hZE5vdGlmaWNhdGlvbiB9IGZyb20gJy4uLy4uL2NvbnN0L2NvbW1vbic7XHJcbmltcG9ydCB7IE9wZXJhdG9yIH0gZnJvbSAnLi4vLi4vZW51bXMvY29tbW9uJztcclxuaW1wb3J0IHsgR3JpZEluZm8gfSBmcm9tICcuLi8uLi9tb2RlbHMvZ3JpZC1pbmZvJztcclxuaW1wb3J0IHsgQ3J1ZFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jcnVkLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDdXN0b21Sb3V0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY3VzdG9tLXJvdXRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRW52aXJvbm1lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZW52aXJvbm1lbnQuc2VydmljZSc7XHJcbmltcG9ydCB7IE5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ub3RpZmljYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IE5vdGlmaWVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL25vdGlmaWVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTaWduYWxSU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3NpZ25hbHIuc2VydmljZSc7XHJcbmltcG9ydCB7IFVzZXJWNVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy91c2VyLXY1LnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2xpW3RuLWFwcC1ub3RpZmljYXRpb25dJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi90bi1hcHAtbm90aWZpY2F0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3RuLWFwcC1ub3RpZmljYXRpb24uY29tcG9uZW50LnNjc3MnXSxcclxuICAgIHByb3ZpZGVyczogW0NvbXBvbmVudENvbnRleHRTZXJ2aWNlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVG5BcHBOb3RpZmljYXRpb25Db21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRCYXNlIGltcGxlbWVudHMgT25Jbml0IHtcclxuICAgIEBWaWV3Q2hpbGQoJ25vdGlmaWNhdGlvbmRldGFpbCcpIG5vdGlmaWNhdGlvbkRldGFpbDogYW55O1xyXG4gICAgQE91dHB1dCgnb3Blbk1lbnUnKSBvcGVuTWVudTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgICBtYXhOb3RpZmljYXRpb24gPSAxMDtcclxuICAgIHRvdGFsVW5SZWFkID0gMDtcclxuICAgIGJvdW5jZU5vdGkgPSB0cnVlO1xyXG4gICAgZmlsZUFwaSA9ICcnO1xyXG4gICAgYXBpVXBsb2FkVXJsID0gJyc7XHJcblxyXG4gICAgZGF0YSA9IFtdO1xyXG4gICAgZWxWaWV3Tm90aWZpY2F0aW9uTmF2SW5zaWRlOiBIVE1MRWxlbWVudDtcclxuXHJcbiAgICB1cmwgPSAnJztcclxuICAgIHVybGRldGFpbCA9ICcnO1xyXG4gICAgbm90aWZpY2F0aW9ucyA9IFtdO1xyXG5cclxuICAgIHVzZXJJZDogc3RyaW5nO1xyXG4gICAgY3VycmVudEl0ZW06IGFueTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIF9zaWduYWxSU2VydmljZTogU2lnbmFsUlNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBfdXNlclY1U2VydmljZTogVXNlclY1U2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9ub3RpZmljYXRpb25TZXJ2aWNlOiBOb3RpZmljYXRpb25TZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX3JvdXRlcjogUm91dGVyLFxyXG4gICAgICAgIHByaXZhdGUgX2Vudmlyb25tZW50U2VydmljZTogRW52aXJvbm1lbnRTZXJ2aWNlLFxyXG4gICAgICAgIHB1YmxpYyBfY3J1ZFNlcnZpY2U6IENydWRTZXJ2aWNlLFxyXG4gICAgICAgIHByb3RlY3RlZCBfbm90aWZpZXJTZXJ2aWNlOiBOb3RpZmllclNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBfY3VzdG9tUm91dGVyU2VydmljZTogQ3VzdG9tUm91dGVyU2VydmljZSxcclxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3JcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKGluamVjdG9yKTtcclxuXHJcbiAgICAgICAgdGhpcy5yb290Q29udGV4dC5zdWJzY3JpYmUoJ05PVElGSUNBVElPTl9DSEFOR0UnLCBycyA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaE5vdGlmaWNhdGlvbigpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuX3NpZ25hbFJTZXJ2aWNlLnN0YXJ0KCdOb3RpZmljYXRpb25IdWInLCBUb3BpY1JlbG9hZE5vdGlmaWNhdGlvbiwgZGF0YSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaE5vdGlmaWNhdGlvbigpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMucm9vdENvbnRleHQuc3Vic2NyaWJlKENvbUN0eENvbnN0YW50cy5OT1RJRklDQVRJT04uTk9USUZJQ0FUSU9OX1JFTE9BRCwgcmVzID0+IHtcclxuICAgICAgICAgICAgdGhpcy5yZWZyZXNoTm90aWZpY2F0aW9uKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLl9lbnZpcm9ubWVudFNlcnZpY2UuZ2V0RGlzYWJsZU5vdGlmaWNhdGlvbigpKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl91c2VyVjVTZXJ2aWNlLmdldElkKCkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0VXNlcklkKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmluaXROb3RpZmljYXRpb24oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucm9vdENvbnRleHQucmVwbGF5U3Vic2NyaWJlKENvbUN0eENvbnN0YW50cy5ST09ULlVTRVJfTE9BREVELCBycyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRVc2VySWQoKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmluaXROb3RpZmljYXRpb24oKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdldFVzZXJJZCgpIHtcclxuICAgICAgICAvLyBjb25zdCByYXdVc2VySWQgPSB0aGlzLl91c2VyVjVTZXJ2aWNlLmdldElkKCk7XHJcbiAgICAgICAgLy8gbGV0IHVzZXJJZCA9IE51bWJlcihyYXdVc2VySWQpO1xyXG4gICAgICAgIC8vIGxldCB1c2VySWRSZXN1bHQgPSAnJztcclxuICAgICAgICAvLyBpZiAoIWlzTmFOKHVzZXJJZCkpIHtcclxuICAgICAgICAvLyAgICB1c2VySWRSZXN1bHQgPSB0aGlzLl91c2VyVjVTZXJ2aWNlLmdldEluc3RhbmNlSWQoKTtcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgLy8gZWxzZXtcclxuICAgICAgICAvLyAgICB1c2VySWRSZXN1bHQgPSByYXdVc2VySWQ7XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIC8vIHRoaXMudXNlcklkID0gdXNlcklkUmVzdWx0LnRvU3RyaW5nKCk7XHJcbiAgICAgICAgdGhpcy51c2VySWQgPSB0aGlzLl91c2VyVjVTZXJ2aWNlLmdldElkKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaW5pdE5vdGlmaWNhdGlvbigpIHtcclxuICAgICAgICAvLyB0aGlzLl9zaWduYWxSU2VydmljZS5zdGFydChcclxuICAgICAgICAvLyAgICAgdGhpcy5fbW9kdWxlQ29uZmlnU2VydmljZS5nZXRDb25maWcoKS5lbnZpcm9ubWVudC5zaWduYWxSQ29uZmlnLnRvcGljLm5vdGlmaWNhdGlvbkNyZWF0ZWQsXHJcbiAgICAgICAgLy8gICAgIHRoaXMudXNlcklkLFxyXG4gICAgICAgIC8vICAgICB0aGlzLm5vdGlmeVRyaWdnZXIuYmluZCh0aGlzKVxyXG4gICAgICAgIC8vICk7XHJcblxyXG4gICAgICAgIC8vIHRoaXMucmVmcmVzaE5vdGlmaWNhdGlvbigpO1xyXG4gICAgfVxyXG5cclxuICAgIG5vdGlmeVRyaWdnZXIoZGF0YTogYW55KSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBkYXRhID09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIGRhdGEgPSBKU09OLnBhcnNlKGRhdGEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnMudW5zaGlmdChkYXRhKTtcclxuICAgICAgICBpZiAoZGF0YS5jcmVhdGVkQnkpIHtcclxuICAgICAgICAgICAgdGhpcy5fdXNlclY1U2VydmljZS5nZXRCYXNpY1VzZXJJbmZvKGRhdGEuY3JlYXRlZEJ5KS50aGVuKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICAgICAgICBkYXRhLmF2YXRhcklkID0gcmVzdWx0LmF2YXRhcjtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5ub3RpZmljYXRpb25zLmxlbmd0aCA+IHRoaXMubWF4Tm90aWZpY2F0aW9uKSB7XHJcbiAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9ucy5wb3AoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5yb290Q29udGV4dC5maXJlRXZlbnQoJ05PVElGSUNBVElPTl9VU0VSX0NIQU5HRScsIHRydWUpO1xyXG5cclxuICAgICAgICB0aGlzLnRvdGFsVW5SZWFkKys7XHJcbiAgICAgICAgdGhpcy5ib3VuY2VOb3RpID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZWZyZXNoTm90aWZpY2F0aW9uKCkge1xyXG4gICAgICAgIGlmICh0aGlzLl9lbnZpcm9ubWVudFNlcnZpY2UuZ2V0RGlzYWJsZU5vdGlmaWNhdGlvbigpKSByZXR1cm47XHJcbiAgICAgICAgY29uc3QgZ3JpZEluZm8gPSBuZXcgR3JpZEluZm8oe1xyXG4gICAgICAgICAgICBmaWx0ZXJzOiBbXHJcbiAgICAgICAgICAgICAgICB0aGlzLm5ld0ZpbHRlcigndXNlcklkJywgT3BlcmF0b3IuZXF1YWwsIHRoaXMudXNlcklkKVxyXG4gICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICBwYWdlSW5mbzoge1xyXG4gICAgICAgICAgICAgICAgcGFnZTogMSxcclxuICAgICAgICAgICAgICAgIHBhZ2VTaXplOiB0aGlzLm1heE5vdGlmaWNhdGlvblxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzb3J0czogW1xyXG4gICAgICAgICAgICAgICAgeyBmaWVsZDogJ2NyZWF0ZWQnLCBkaXI6IC0xIH1cclxuICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgZmllbGRzOiAnJ1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGNvbnN0IHJlYWRlZEZpbHRlcnMgPSBbXHJcbiAgICAgICAgICAgIHRoaXMubmV3RmlsdGVyKCd1c2VySWQnLCBPcGVyYXRvci5lcXVhbCwgdGhpcy51c2VySWQpLFxyXG4gICAgICAgICAgICB0aGlzLm5ld0ZpbHRlcigncmVhZGVkVGltZScsIE9wZXJhdG9yLmlzTnVsbCwgJzEnKVxyXG4gICAgICAgIF07XHJcbiAgICAgICAgUHJvbWlzZS5hbGwoW1xyXG4gICAgICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25TZXJ2aWNlLmdldEJ5R3JpZFJlcXVlc3QoZ3JpZEluZm8pLnRoZW4ocmVzID0+IHRoaXMuaGFuZGxlUmVzcG9uc2UocmVzLCAnJywgZiA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnMgPSByZXMuZGF0YTtcclxuICAgICAgICAgICAgICAgIGlmICghcmVzLnN1Y2Nlc3MgfHwgcmVzLmRhdGEgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX25vdGlmaWVyU2VydmljZS5zaG93V2FybmluZ0J5UmVzcG9uc2UocmVzKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJvdW5jZU5vdGkgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hZnRlckdldE5vdGljYXRpb24oKTtcclxuICAgICAgICAgICAgfSkpLFxyXG4gICAgICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25TZXJ2aWNlLmdldEFsbChyZWFkZWRGaWx0ZXJzLCAnaWQnKS50aGVuKHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzLmRhdGEgPT0gbnVsbCB8fCAhcmVzLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9ub3RpZmllclNlcnZpY2Uuc2hvd1dhcm5pbmdCeVJlc3BvbnNlKHJlcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy50b3RhbFVuUmVhZCA9ICg8YW55W10+cmVzLmRhdGEpLmxlbmd0aDtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICBdKTtcclxuICAgIH1cclxuXHJcbiAgICBhZnRlckdldE5vdGljYXRpb24oKSB7XHJcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50LmNyZWF0ZWRVc2VySWQgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuX3VzZXJWNVNlcnZpY2UuZ2V0QmFzaWNVc2VySW5mbyhlbGVtZW50LmNyZWF0ZWRVc2VySWQpLnRoZW4ocmVzdWx0ID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuYXZhdGFyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5hdmF0YXJJZCA9IHJlc3VsdC5hdmF0YXI7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJlYWRBbGwoZXZlbnQpIHtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIHRoaXMuX25vdGlmaWVyU2VydmljZS5zaG93Q29uZmlybSgnxJDDoW5oIGThuqV1IHThuqV0IGPhuqMgdGjDtG5nIGLDoW8gbMOgIMSRw6MgxJHhu41jPycsICfEkMOhbmggZOG6pXUgxJHDoyDEkeG7jWMgdGjDtG5nIGLDoW8nKS50aGVuKHJzID0+IHtcclxuICAgICAgICAgICAgaWYgKCFycykgcmV0dXJuO1xyXG4gICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnMuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnQucmVhZGVkVGltZSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25TZXJ2aWNlLm1hcmtSZWFkQWxsQnlVc2VyQ3VycmVudCgpLmNhdGNoKGVyciA9PiB0aGlzLl9jb21tb25TZXJ2aWNlLmhhbmRsZUVycm9yKGVyciwgdGhpcy5faW5qZWN0b3IpKTtcclxuICAgICAgICAgICAgdGhpcy50b3RhbFVuUmVhZCA9IDA7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVhZEJ5SWQoZGF0YTogYW55KSB7XHJcbiAgICAgICAgZGF0YS5yZWFkZWRUaW1lID0gbmV3IERhdGUoKTtcclxuICAgICAgICB0aGlzLnRvdGFsVW5SZWFkIC09IDE7XHJcbiAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9uU2VydmljZS5tYXJrUmVhZEJ5SWQoZGF0YS5pZCkuY2F0Y2goZXJyID0+IHRoaXMuX2NvbW1vblNlcnZpY2UuaGFuZGxlRXJyb3IoZXJyLCB0aGlzLl9pbmplY3RvcikpO1xyXG4gICAgfVxyXG5cclxuICAgIGlzSGFzQXZhdGFyKGl0ZW0pIHtcclxuICAgICAgICByZXR1cm4gISFpdGVtLmF2YXRhcklkO1xyXG4gICAgfVxyXG5cclxuICAgIGlzUmVhZGVkKGl0ZW06IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAhIWl0ZW0ucmVhZGVkVGltZTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRDdXJyZW50VXNlckF2YXRhcihpdGVtKSB7XHJcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuYXBpVXBsb2FkVXJsfS9wdWJsaWMvJHtpdGVtfS9Eb3dubG9hZGA7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ29Ub0xpbmsoaXRlbTogYW55KSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmlzUmVhZGVkKGl0ZW0pKSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucmVhZEJ5SWQoaXRlbSk7XHJcbiAgICAgICAgICAgIHRoaXMudG90YWxVblJlYWQtLTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIFNhdmUgY3VycmVudCBwYXRoIHRvIGdvIGJhY2tcclxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnY3VycmVudFVybCcsIHRvcC5sb2NhdGlvbi5ocmVmKTtcclxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnY3VycmVudFBhdGhOYW1lJywgdG9wLmxvY2F0aW9uLnBhdGhuYW1lKTtcclxuICAgICAgICBpZiAoaXRlbS5tZXNzYWdlTGluaykge1xyXG4gICAgICAgICAgICBjb25zdCBsaW5rID0gaXRlbS5tZXNzYWdlTGluaztcclxuICAgICAgICAgICAgLy8gTmFtTkggLSDEkOG7gyB0b3AgbG9jYXRpb24gaHJlZiB2w6wgY8OzIHRo4buDIGNsaWNrIHhlbSB0aMO0bmcgYsOhbyB04burIHBow6JuIGjhu4cga2jDoWMsIHNhdSB04buRaSDGsHUgbuG6v3UgY8O5bmcgcGjDom4gaOG7hyB0aMOsIHJvdXRlciBuYXZpZ2F0ZSwgY8OybiBraMOhYyBwaMOibiBo4buHIHRow6wgbG9jYXRpb24gaHJlZlxyXG4gICAgICAgICAgICB0b3AubG9jYXRpb24uaHJlZiA9IGxpbms7XHJcbiAgICAgICAgICAgIC8vIGlmICh0aGlzLl9yb3V0ZXIuaXNBY3RpdmUobGluaywgZmFsc2UpKSB7XHJcbiAgICAgICAgICAgIC8vICAgICB0aGlzLnJvb3RDb250ZXh0LmZpcmVFdmVudChDb21DdHhDb25zdGFudHMuUk9PVC5OT1RJX0NMSUNLLCBsaW5rKTtcclxuICAgICAgICAgICAgLy8gfSBlbHNlIHtcclxuICAgICAgICAgICAgLy8gICAgIGlmICh0aGlzLnJvb3RNb2RlbC5mcmFnbWVudHMpIHtcclxuICAgICAgICAgICAgLy8gICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5yb290TW9kZWwuZnJhZ21lbnRzKSB7XHJcbiAgICAgICAgICAgIC8vICAgICAgICAgICAgIGlmICghaXRlbS5jbG9zZWQpIHtcclxuICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgIGl0ZW0udW5zdWJzY3JpYmUoKTtcclxuICAgICAgICAgICAgLy8gICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gICAgIH1cclxuICAgICAgICAgICAgLy8gICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKGxpbmspO1xyXG4gICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGhlYWRlckNsaWNrKGV2ZW50KSB7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIH1cclxuXHJcbiAgICBvcGVuTWVudUV2ZW50KCRldmVudCkge1xyXG4gICAgICAgIHRoaXMub3Blbk1lbnUubmV4dCgkZXZlbnQpO1xyXG4gICAgICAgIHRoaXMuYm91bmNlTm90aSA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGhhbmRsZUNsaWNrZWQoKSB7XHJcbiAgICAgICAgY29uc3QgdGhvbmdCYW9Eb21haW4gPSB0aGlzLl9lbnZpcm9ubWVudFNlcnZpY2UuZ2V0SHR0cENsaWVudEVuZHBvaW50KCd0aG9uZ2JhbycpO1xyXG4gICAgICAgIGlmICghdGhvbmdCYW9Eb21haW4pIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX25vdGlmaWVyU2VydmljZS5zaG93V2FybmluZygnVGhp4bq/dSBj4bqldSBow6xuaCBkb21haW4gdGjDtG5nIGLDoW8nKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgd2luZG93Lm9wZW4odGhvbmdCYW9Eb21haW4pO1xyXG4gICAgfVxyXG59XHJcbiIsIjxhIGhyZWY9XCIjXCIgdGFiaW5kZXg9XCI4XCIgKGNsaWNrKT1cIm9wZW5NZW51RXZlbnQoJGV2ZW50KVwiIHBUb29sdGlwPVwiVGjDtG5nIGLDoW9cIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIlxyXG4gICAgc3R5bGU9XCJoZWlnaHQ6IDMwcHg7XCI+XHJcbiAgICA8c3BhbiBjbGFzcz1cInRvcGJhci1pY29uLWxlZnRcIj5cclxuICAgICAgICA8aSBjbGFzcz1cInRvcGJhci1pY29uIGFuaW1hdGVkIHN3aW5nIHBpIHBpLWJlbGxcIj48L2k+XHJcbiAgICA8L3NwYW4+XHJcbiAgICA8c3BhbiBjbGFzcz1cInRvcGJhci1iYWRnZSBhbmltYXRlZCBydWJiZXJCYW5kXCIgKm5nSWY9XCJ0b3RhbFVuUmVhZCA+IDBcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cInsndG9wYmFyLWJhZGdlLWJvdW5jZSc6IGJvdW5jZU5vdGl9XCI+e3t0b3RhbFVuUmVhZH19PC9zcGFuPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJ0b3BiYXItaXRlbS1uYW1lXCI+VGjDtG5nIGLDoW88L3NwYW4+XHJcbjwvYT5cclxuPHVsIGNsYXNzPVwiZmFkZUluRG93biBjdXN0b20tbm90aWZpY2F0aW9uXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibm90aS1oZWFkZXJcIiAoY2xpY2spPVwiaGVhZGVyQ2xpY2soJGV2ZW50KVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ1aS10b29sYmFyLWdyb3VwLWNlbnRlciBidXR0b24tZ3JvdXAgbWFzdGVyLXRpdGxlLW5vdGlmaWNhdGlvblwiPlxyXG4gICAgICAgICAgICA8c3BhbiBzdHlsZT1cImZsb2F0OiBsZWZ0OyBjb2xvcjogIzY2NjtcIj5UaMO0bmcgYsOhbzwvc3Bhbj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNpcmNsZUJ1dHRvblwiIHBUb29sdGlwPVwixJDDoW5oIGThuqV1IHThuqV0IGPhuqMgbMOgIMSRw6MgxJHhu41jXCIgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCI+XHJcbiAgICAgICAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDpcIiAoY2xpY2spPVwicmVhZEFsbCgkZXZlbnQpXCI+PGkgY2xhc3M9XCJmYXMgZmEtZmxhZy1jaGVja2VyZWRcIj48L2k+PC9hPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNpcmNsZUJ1dHRvblwiIHBUb29sdGlwPVwiQ+G6pXUgaMOsbmggdGjDtG5nIGLDoW9cIiB0b29sdGlwUG9zaXRpb249XCJ0b3BcIj5cclxuICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OlwiPjxpIGNsYXNzPVwiZmFzIGZhLWNvZ1wiPjwvaT48L2E+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8dG4tY3VzdG9tLXNjcm9sbGJhciAjc2Nyb2xsYmFyIFtzdHlsZV09XCJ7J3dpZHRoJzogJzEwMCUnLCAnaGVpZ2h0JzogJzM1MHB4J31cIiBbY2xhc3NdPVwiJ25vdGlmaWNhdGlvbi1ib3gtZGV0YWlsJ1wiPlxyXG4gICAgICAgIDxkaXYgcm9sZT1cIm1lbnVpdGVtXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygbm90aWZpY2F0aW9uc1wiIGNsYXNzPVwibm90aS1pdGVtXCIgW2NsYXNzLnVuLXJlYWRdPVwiIWl0ZW0ucmVhZGVkVGltZVwiPlxyXG4gICAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDpcIiAoY2xpY2spPVwiZ29Ub0xpbmsoaXRlbSlcIiBjbGFzcz1cInRvcGJhci1tZXNzYWdlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub3RpLWF2YXRhciBtZDpjb2wtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cIiFpc0hhc0F2YXRhcihpdGVtKVwiIGNsYXNzPVwiZmFzIGZhLWdsb2JlLWFzaWFcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJpc0hhc0F2YXRhcihpdGVtKVwiIHNyYz1cInt7Z2V0Q3VycmVudFVzZXJBdmF0YXIoaXRlbS5hdmF0YXJJZCl9fVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vdGktY29udGVudCBtZDpjb2wtMTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vdGktdGl0bGVcIiBbaW5uZXJIVE1MXT1cIml0ZW0ubWVzc2FnZVRpdGxlIHwgc3VtbWFyeSA6IDQwXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub3RpLW1lc3NhZ2VcIiBbaW5uZXJIVE1MXT1cIml0ZW0ubWVzc2FnZUNvbnRlbnQgfCBzdW1tYXJ5IDogNDBcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vdGktdGltZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gcFRvb2x0aXA9XCJ7e2l0ZW0uY3JlYXRlZCB8IGRhdGU6J2RkL01NL3l5eXkgSEg6bW0nfX1cIiB0b29sdGlwUG9zaXRpb249XCJ0b3BcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBzdHlsZT1cImZvbnQtc2l6ZTogMWVtO1wiIGNsYXNzPVwicGkgcGktY2xvY2tcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tfY3J1ZFNlcnZpY2UucmVuZGVyRGF0ZVRpbWUoaXRlbS5jcmVhdGVkKX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvYT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvdG4tY3VzdG9tLXNjcm9sbGJhcj5cclxuICAgIDxkaXYgY2xhc3M9XCJub3RpLWZvb3RlclwiPlxyXG4gICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OjtcIiBzdHlsZT1cImZvbnQtc2l6ZTogMTRweFwiIChjbGljayk9XCJoYW5kbGVDbGlja2VkKClcIj5cclxuICAgICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLWNoZXZyb24tZG93blwiIHN0eWxlPVwiZm9udC1zaXplOiAwLjllbTsgbWFyZ2luLXJpZ2h0OiAzcHhcIj48L2k+XHJcbiAgICAgICAgICAgICAgICBYZW0gdOG6pXQgY+G6o1xyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9hPlxyXG4gICAgPC9kaXY+XHJcbjwvdWw+Il19