@tuki-io/tuki-widgets 0.0.171 → 0.0.173

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 (98) hide show
  1. package/contact-center/cc-readiness/cc-readiness.service.d.ts +1 -0
  2. package/contact-center/cc-readiness/widgets/licences-requirement/licences-requirement.component.d.ts +2 -1
  3. package/contact-center/cc-readiness/widgets/summary-grid/summary-grid.component.d.ts +2 -1
  4. package/contact-center/shared/api.service.d.ts +1 -1
  5. package/di2mt/shared/services/api.service.d.ts +1 -1
  6. package/di2mt/widgets/site-upgrade/site-upgrade-data-table/site-upgrade-data-table.component.d.ts +2 -1
  7. package/di2mt/widgets/upgrade-overview/cards/already-upgraded-sites/already-upgraded-sites-card.component.d.ts +2 -1
  8. package/di2mt/widgets/upgrade-overview/cards/already-upgraded-users/already-upgraded-users-card.component.d.ts +2 -1
  9. package/di2mt/widgets/upgrade-overview/cards/pending-activation-users/pending-activation-users.component.d.ts +2 -1
  10. package/di2mt/widgets/upgrade-overview/cards/preconditions-status-list/preconditions-status-list-card.component.d.ts +2 -1
  11. package/di2mt/widgets/upgrade-overview/cards/ready-to-upgrade-sites/ready-to-upgrade-sites-card.component.d.ts +2 -1
  12. package/di2mt/widgets/upgrade-overview/cards/ready-to-upgrade-users/ready-to-upgrade-users-card.component.d.ts +2 -1
  13. package/di2mt/widgets/upgrade-overview/cards/site-infrastructure-status-list/site-infrastructure-status-list-card.component.d.ts +2 -1
  14. package/di2mt/widgets/upgrade-overview/cards/upgrade-state-comparison-chart/upgrade-state-comparison-chart-card.component.d.ts +2 -1
  15. package/di2mt/widgets/user-upgrade/user-upgrade-data-table/user-upgrade-data-table.component.d.ts +2 -1
  16. package/esm2020/contact-center/cc-readiness/cc-readiness.module.mjs +1 -1
  17. package/esm2020/contact-center/cc-readiness/cc-readiness.service.mjs +4 -1
  18. package/esm2020/contact-center/cc-readiness/widgets/licences-requirement/licences-requirement.component.mjs +6 -3
  19. package/esm2020/contact-center/cc-readiness/widgets/summary-grid/summary-grid.component.mjs +5 -2
  20. package/esm2020/contact-center/shared/api.service.mjs +1 -6
  21. package/esm2020/di2mt/shared/components/stat-card/stat-card.component.mjs +7 -1
  22. package/esm2020/di2mt/shared/services/api.service.mjs +1 -6
  23. package/esm2020/di2mt/widgets/site-upgrade/progress-bar/progress-bar.component.mjs +3 -3
  24. package/esm2020/di2mt/widgets/site-upgrade/site-upgrade-data-table/site-upgrade-data-table.component.mjs +7 -4
  25. package/esm2020/di2mt/widgets/upgrade-overview/cards/already-upgraded-sites/already-upgraded-sites-card.component.mjs +6 -3
  26. package/esm2020/di2mt/widgets/upgrade-overview/cards/already-upgraded-users/already-upgraded-users-card.component.mjs +6 -3
  27. package/esm2020/di2mt/widgets/upgrade-overview/cards/pending-activation-users/pending-activation-users.component.mjs +21 -18
  28. package/esm2020/di2mt/widgets/upgrade-overview/cards/preconditions-status-list/preconditions-status-list-card.component.mjs +8 -5
  29. package/esm2020/di2mt/widgets/upgrade-overview/cards/ready-to-upgrade-sites/ready-to-upgrade-sites-card.component.mjs +6 -3
  30. package/esm2020/di2mt/widgets/upgrade-overview/cards/ready-to-upgrade-users/ready-to-upgrade-users-card.component.mjs +6 -3
  31. package/esm2020/di2mt/widgets/upgrade-overview/cards/site-infrastructure-status-list/site-infrastructure-status-list-card.component.mjs +8 -5
  32. package/esm2020/di2mt/widgets/upgrade-overview/cards/upgrade-state-comparison-chart/upgrade-state-comparison-chart-card.component.mjs +6 -3
  33. package/esm2020/di2mt/widgets/upgrade-overview/upgrade-overview.service.mjs +3 -2
  34. package/esm2020/di2mt/widgets/user-upgrade/user-upgrade-data-table/user-upgrade-data-table.component.mjs +6 -3
  35. package/esm2020/user-creation/src/app.constants.mjs +1 -1
  36. package/esm2020/user-creation/src/classes/site.mjs +1 -1
  37. package/esm2020/user-creation/src/shared/api/api.service.mjs +1 -6
  38. package/esm2020/user-creation/src/shared/services/user-creation-api.service.mjs +1 -1
  39. package/esm2020/user-creation/src/shared/services/utils.mjs +1 -1
  40. package/esm2020/user-creation/src/widgets/user-creation-wizard/user-creation-wizard.component.mjs +6 -3
  41. package/esm2020/user-device-manage/src/app.constants.mjs +1 -1
  42. package/esm2020/user-device-manage/src/classes/deviceProfile.mjs +1 -1
  43. package/esm2020/user-device-manage/src/device-associated-line/device-associated-line-extension/device-associated-line-extension.component.mjs +3 -3
  44. package/esm2020/user-device-manage/src/device-info/device-info.component.mjs +3 -3
  45. package/esm2020/user-device-manage/src/lazy-loading-select/lazy-loading-select.component.mjs +3 -3
  46. package/esm2020/user-device-manage/src/pipes/mac-address.pipe.mjs +1 -1
  47. package/esm2020/user-device-manage/src/services/api.service.mjs +1 -1
  48. package/esm2020/user-device-manage/src/services/dns.service.mjs +1 -1
  49. package/esm2020/user-device-manage/src/services/line.service.mjs +1 -1
  50. package/esm2020/user-device-manage/src/services/user.service.mjs +1 -1
  51. package/esm2020/user-device-manage/src/shared/tk-page-section/page-section.component.mjs +1 -1
  52. package/esm2020/user-device-manage/src/utils/app-loader/app-loader.mjs +3 -3
  53. package/esm2020/user-manage/src/app.constants.mjs +1 -1
  54. package/esm2020/user-manage/src/classes/line-association-interface.mjs +1 -1
  55. package/esm2020/user-manage/src/classes/line-directory.mjs +1 -1
  56. package/esm2020/user-manage/src/classes/line.mjs +1 -1
  57. package/esm2020/user-manage/src/classes/pagination.mjs +1 -1
  58. package/esm2020/user-manage/src/classes/simplified-user.mjs +1 -1
  59. package/esm2020/user-manage/src/device-list/device-list.component.mjs +3 -3
  60. package/esm2020/user-manage/src/device-list/device-row/device-row.component.mjs +3 -3
  61. package/esm2020/user-manage/src/lazy-loading-select/lazy-loading-select.component.mjs +3 -3
  62. package/esm2020/user-manage/src/services/api.service.mjs +1 -1
  63. package/esm2020/user-manage/src/services/user.service.mjs +1 -1
  64. package/esm2020/user-manage/src/user-info/user-info.component.mjs +3 -3
  65. package/esm2020/user-manage/src/user-manage.module.mjs +1 -1
  66. package/esm2020/user-manage/src/utils/app-loader/app-loader.mjs +3 -3
  67. package/esm2020/users-list/src/app.constants.mjs +1 -1
  68. package/esm2020/users-list/src/classes/move-user.mjs +1 -1
  69. package/esm2020/users-list/src/services/dns.service.mjs +1 -1
  70. package/esm2020/users-list/src/services/user.service.mjs +1 -1
  71. package/esm2020/users-list/src/utils/app-loader/app-loader.mjs +3 -3
  72. package/fesm2015/tuki-io-tuki-widgets-contact-center.mjs +12 -8
  73. package/fesm2015/tuki-io-tuki-widgets-contact-center.mjs.map +1 -1
  74. package/fesm2015/tuki-io-tuki-widgets-di2mt.mjs +84 -52
  75. package/fesm2015/tuki-io-tuki-widgets-di2mt.mjs.map +1 -1
  76. package/fesm2015/tuki-io-tuki-widgets-user-creation.mjs +5 -7
  77. package/fesm2015/tuki-io-tuki-widgets-user-creation.mjs.map +1 -1
  78. package/fesm2015/tuki-io-tuki-widgets-user-device-manage.mjs +8 -8
  79. package/fesm2015/tuki-io-tuki-widgets-user-device-manage.mjs.map +1 -1
  80. package/fesm2015/tuki-io-tuki-widgets-user-manage.mjs +10 -10
  81. package/fesm2015/tuki-io-tuki-widgets-user-manage.mjs.map +1 -1
  82. package/fesm2015/tuki-io-tuki-widgets-users-list.mjs +2 -2
  83. package/fesm2015/tuki-io-tuki-widgets-users-list.mjs.map +1 -1
  84. package/fesm2020/tuki-io-tuki-widgets-contact-center.mjs +12 -8
  85. package/fesm2020/tuki-io-tuki-widgets-contact-center.mjs.map +1 -1
  86. package/fesm2020/tuki-io-tuki-widgets-di2mt.mjs +80 -48
  87. package/fesm2020/tuki-io-tuki-widgets-di2mt.mjs.map +1 -1
  88. package/fesm2020/tuki-io-tuki-widgets-user-creation.mjs +5 -7
  89. package/fesm2020/tuki-io-tuki-widgets-user-creation.mjs.map +1 -1
  90. package/fesm2020/tuki-io-tuki-widgets-user-device-manage.mjs +8 -8
  91. package/fesm2020/tuki-io-tuki-widgets-user-device-manage.mjs.map +1 -1
  92. package/fesm2020/tuki-io-tuki-widgets-user-manage.mjs +10 -10
  93. package/fesm2020/tuki-io-tuki-widgets-user-manage.mjs.map +1 -1
  94. package/fesm2020/tuki-io-tuki-widgets-users-list.mjs +2 -2
  95. package/fesm2020/tuki-io-tuki-widgets-users-list.mjs.map +1 -1
  96. package/package.json +1 -1
  97. package/user-creation/src/shared/api/api.service.d.ts +1 -1
  98. package/user-creation/src/widgets/user-creation-wizard/user-creation-wizard.component.d.ts +2 -1
@@ -37,6 +37,7 @@ export class UserUpgradeDataTableComponent {
37
37
  ngOnInit() {
38
38
  this.dataPending = true;
39
39
  this.apiService.token = this.token;
40
+ this.apiService.apiUrl = this.host;
40
41
  this.userUpgradeService.customerId = this.customerId;
41
42
  const subsc1 = this.userUpgradeService.getUserUpgradeRecords(this.pagination.pageSize, this.pagination.pageIndex, this.activeFilters)
42
43
  .pipe(takeUntil(this.destroy$))
@@ -351,11 +352,13 @@ export class UserUpgradeDataTableComponent {
351
352
  }
352
353
  }
353
354
  UserUpgradeDataTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UserUpgradeDataTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
354
- UserUpgradeDataTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: UserUpgradeDataTableComponent, selector: "tk-user-upgrade-data-table", inputs: { token: "token", customerId: "customerId" }, ngImport: i0, template: "<div *ngIf=\"dataPending\" class=\"overlay\">\r\n <mat-progress-spinner\r\n class=\"page-spinner\"\r\n mode=\"indeterminate\"\r\n [diameter]=\"70\"\r\n strokeWidth=\"3\"\r\n ></mat-progress-spinner>\r\n</div>\r\n\r\n<div id=\"userUpgradeDataTable\" class=\"wrapper\">\r\n <div class=\"user-upgrade-status-wrapper\">\r\n <tk-summary-card [description]=\"'Users are ready to upgrade'\" [value]=\"statusCounts['Ready']\"></tk-summary-card>\r\n <tk-summary-card [description]=\"'Users are not ready'\" [value]=\"statusCounts['Not Ready']\" [status]=\"'Not Ready'\"></tk-summary-card>\r\n <tk-summary-card [description]=\"'Users failed to upgrade'\" [value]=\"statusCounts['Failed']\" [status]=\"'Failed'\"></tk-summary-card>\r\n <tk-summary-card [description]=\"'Successfully upgraded'\" [value]=\"statusCounts['Completed']\" [status]=\"'Completed'\"></tk-summary-card>\r\n </div>\r\n <div class=\"table-action-panel\">\r\n <tk-table-filters *ngIf=\"filters.length > 0\" [filters]=\"filters\" (filter)=\"onFilter($event)\"></tk-table-filters>\r\n <div class=\"action-wrapper\">\r\n <span>{{filteredDataCount}} Users</span>\r\n <button\r\n mat-button\r\n color=\"primary\"\r\n class=\"upgrade-bulk-button\"\r\n [disabled]=\"selection.selected.length === 0\"\r\n (click)=\"upgradeSelectedUsers()\">\r\n Upgrade {{ selection.selected.length === 0 ? '' : '(' + selection.selected.length + ')' }}\r\n </button>\r\n </div>\r\n </div>\r\n <table mat-table [dataSource]=\"data\" class=\"user-upgrade-table\">\r\n\r\n <!-- Checkbox Column -->\r\n <ng-container matColumnDef=\"select\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n <mat-checkbox\r\n (change)=\"$event ? masterToggle() : null\"\r\n [checked]=\"selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\"\r\n class=\"custom-checkbox\">\r\n </mat-checkbox>\r\n </th>\r\n <td mat-cell *matCellDef=\"let row\">\r\n <mat-checkbox\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? selection.toggle(row) : null\"\r\n [checked]=\"selection.isSelected(row)\"\r\n [disabled]=\"STATUS_ENTRIES[row.upgradeStatus] !== 'Ready' || row.pending\"\r\n class=\"custom-checkbox\">\r\n </mat-checkbox>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- User Column -->\r\n <ng-container matColumnDef=\"user\">\r\n <th mat-header-cell *matHeaderCellDef>User</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <div class=\"user-info\">\r\n <div class=\"user-name\">{{element.userName}}</div>\r\n <div class=\"user-email\">{{element.userName}}</div>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- Site Column -->\r\n <ng-container matColumnDef=\"site\">\r\n <th mat-header-cell *matHeaderCellDef>Site</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <div class=\"site-info\">\r\n <span class=\"status-indicator\" [ngClass]=\"getSiteUpgradeStatusClass(element.upgradeStatus)\"></span>\r\n <span>{{element.siteName}}</span>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- Device Column -->\r\n <ng-container matColumnDef=\"device\">\r\n <th class=\"device-td\" mat-header-cell *matHeaderCellDef>Device</th>\r\n <td mat-cell *matCellDef=\"let element\" class=\"multi-dev-box\">\r\n <div *ngIf=\"element.showDevices\" class=\"device-list show-dev-list\">\r\n <div *ngFor=\"let device of element.devicesWithExtensions; let last = last\"\r\n class=\"device-item\"\r\n [class.no-border]=\"last\">\r\n <span class=\"device-indicator\" [ngClass]=\"{'device-indicator-ready': element.deviceStatus === 'READY'}\"></span>\r\n <span class=\"device-name\">{{ device.deviceName || device }}</span>\r\n <span class=\"device-model\">\r\n {{ device.extensions?.length ? 'Ext: ' + device.extensions.join(\", \") : 'No Extension' }}\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"device-info\">\r\n <div class=\"multiple-dev-link\" *ngIf=\"element.devicesWithExtensions?.length > 1; else oneDevice\">\r\n <div class=\"device-name-wrapper clickable\"\r\n (mouseenter)=\"onMultipleDevices(element)\"\r\n (mouseleave)=\"onMultipleDevices(element)\">\r\n\r\n <span class=\"device-name\">Multiple devices ></span>\r\n </div>\r\n </div>\r\n <ng-template #oneDevice>\r\n <div class=\"device-name-wrapper\">\r\n <span class=\"device-indicator\"></span>\r\n <span class=\"device-name\">{{element.devicesWithExtensions[0].deviceName}}</span>\r\n </div>\r\n <div class=\"device-model one-dev-extensions\">\r\n {{ element.devicesWithExtensions[0].extensions?.length ?\r\n 'Ext: ' + element.devicesWithExtensions[0].extensions?.join(\", \") : 'No Extension' }}\r\n </div>\r\n </ng-template>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- Dial Plan Status Column -->\r\n <ng-container matColumnDef=\"dialPlanStatus\">\r\n <th mat-header-cell *matHeaderCellDef>Dial Plan Status</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <div class=\"status-info\">\r\n <span class=\"status-indicator\" [ngClass]=\"getStatusClass(element.dialPlanStatus)\"></span>\r\n <span [ngClass]=\"{'status-ready': element.dialPlanStatus === 'READY'}\">{{STATUS_ENTRIES[element.dialPlanStatus]}}</span>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- Dependencies Column -->\r\n <ng-container matColumnDef=\"dependencies\">\r\n <th mat-header-cell *matHeaderCellDef>Dependencies</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <span *ngIf=\"DEPENDENCIES_STATUS[element.dependenciesStatus] === 'Dependencies found'\" class=\"dependencies-text\">{{DEPENDENCIES_STATUS[element.dependenciesStatus]}}</span>\r\n <span *ngIf=\"DEPENDENCIES_STATUS[element.dependenciesStatus] === 'No dependencies'\">\u2014</span>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- User Upgrade Status Column -->\r\n <ng-container matColumnDef=\"userUpgradeStatus\">\r\n <th mat-header-cell *matHeaderCellDef>User Upgrade Status</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <div class=\"upgrade-status-cell\">\r\n <ng-container *ngIf=\"STATUS_ENTRIES[element.upgradeStatus] === 'Ready'; else statusBlock\">\r\n <button mat-button color=\"primary\" class=\"upgrade-button\" (click)=\"upgradeUser(element)\">Upgrade</button>\r\n </ng-container>\r\n <ng-template #statusBlock>\r\n <div class=\"status-info\">\r\n <span class=\"status-indicator\" [ngClass]=\"getStatusClass(element.upgradeStatus)\"></span>\r\n <span>{{STATUS_ENTRIES[element.upgradeStatus]}}</span>\r\n </div>\r\n </ng-template>\r\n </div>\r\n\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"userUpgradeLoader\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td class=\"mat-progress-spinner-td\" mat-cell *matCellDef=\"let element\">\r\n\r\n <mat-progress-spinner\r\n *ngIf=\"element.pending\"\r\n class=\"field-spinner\"\r\n [diameter]=\"20\"\r\n mode=\"indeterminate\">\r\n </mat-progress-spinner>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"\r\n [class.selected-row]=\"selection.isSelected(row)\"></tr>\r\n </table>\r\n</div>\r\n\r\n<div class=\"app-pagination\">\r\n <mat-paginator\r\n [length]=\"pagination.total\"\r\n [pageSize]=\"pagination.pageSize\"\r\n [pageSizeOptions]=\"pagination.pageSizeOptions\"\r\n [pageIndex]=\"pagination.pageIndex\"\r\n (page)=\"pageEvent($event)\"\r\n showFirstLastButtons>\r\n </mat-paginator>\r\n\r\n <!--<div class=\"page-indexes-box\">\r\n <mat-paginator\r\n [id]=\"'commonPagination'\"\r\n [hidePageSize]=\"true\"\r\n [length]=\"pagination.total\"\r\n [pageIndex]=\"pagination.pageIndex\"\r\n [pageSize]=\"pagination.pageSize\"\r\n [pageSizeOptions]=\"pagination.pageSizeOptions\"\r\n (page)=\"pageEvent($event)\">\r\n </mat-paginator>\r\n </div>\r\n\r\n <div class=\"per-page-block\">\r\n <div class=\"item_per_page\">Items per page:</div>\r\n <div class=\"select-box select-page-size\">\r\n <mat-select (selectionChange)=\"changePerPageNumber($event)\" #page\r\n [id]=\"'commonPaginationSelect'\">\r\n <mat-option *ngFor=\"let option of pageSizeOptions; let i = index;\" [id]=\"'paginationSelectOpt_' + i\" [value]=\"option\">{{option}}</mat-option>\r\n </mat-select>\r\n </div>\r\n\r\n </div>-->\r\n</div>\r\n", styles: ["@import\"https://fonts.googleapis.com/css?family=Poppins:400,100,200,300,500,600,800,700,900\";@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap\";.app-pagination{display:flex;flex-direction:column;align-items:stretch}.app-pagination .page-indexes-box,.app-pagination .per-page-block{justify-self:center}.app-pagination mat-select{width:100px}.overlay{position:fixed;width:100%;height:100%;inset:0;background-color:#fff6;z-index:200}.mat-progress-spinner{position:absolute;top:50%;left:50%;margin-top:-20px;margin-left:-25px;width:50px;height:40px;text-align:center;font-size:10px}.mat-progress-spinner-td{position:relative}#userUpgradeDataTable .flex-container{padding:0!important}.multiple-dev-link{margin:0 0 0 13px}:host ::ng-deep .mat-cell{border-bottom:1px solid #d6d6d6;font-family:Inter,sans-serif!important}:host ::ng-deep .mat-header-cell{border-bottom:1px solid #afafaf;font-family:Inter,sans-serif!important}:host ::ng-deep .progress-spinner-td{position:relative}:host ::ng-deep #userUpgradeDataTable .mat-progress-spinner-td .mat-progress-spinner{top:28%;left:0;margin:0}.wrapper{display:flex;flex-direction:column;gap:1rem}.user-upgrade-status-wrapper{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;margin-bottom:1rem;align-items:stretch}.user-upgrade-table{width:100%;background:white;border-radius:8px;overflow:hidden;font-size:14px}.user-upgrade-table .mat-header-row{font-size:12px;height:35px}.user-upgrade-table .mat-cell{border-bottom:1px solid #d6d6d6}.user-upgrade-table .mat-header-cell{border-bottom:1px solid #afafaf}.user-upgrade-table .mat-row{transition:background-color .2s ease}.user-upgrade-table .mat-row:hover{background-color:#f8f9fa}.user-upgrade-table .mat-row.selected-row{background-color:#08599c1a}.user-upgrade-table .user-info .user-name{font-weight:500;color:#212121}.user-upgrade-table .user-info .user-email{font-size:12px;color:#757575}.user-upgrade-table .site-info{display:flex;align-items:center;gap:8px}.user-upgrade-table .site-info .site-indicator{width:8px;height:8px;border-radius:50%;background-color:#737480}.user-upgrade-table .device-info .device-name-wrapper{display:flex;align-items:center;gap:5px}.user-upgrade-table .device-info .device-name-wrapper .device-name{font-weight:500;color:#212121}.user-upgrade-table .device-model{font-size:12px;color:#757575;display:block}.user-upgrade-table .one-dev-extensions{margin:0 0 0 13px}.user-upgrade-table .device-indicator{width:8px;height:8px;border-radius:50%;background-color:#f8cd00}.user-upgrade-table .device-indicator-ready{background-color:#1d805f}.user-upgrade-table .device-td{padding:0 0 0 13px}.user-upgrade-table .status-info{display:flex;align-items:center;gap:8px}.user-upgrade-table .status-info .status-indicator{width:8px;height:8px;border-radius:50%}.user-upgrade-table .status-info .status-indicator.ready{background-color:#1170cf}.user-upgrade-table .status-info .status-indicator.partial-ready{background-color:#f8cd00}.user-upgrade-table .status-info .status-indicator.not-ready{background-color:#9e9e9e}.user-upgrade-table .status-info .status-indicator.completed{background-color:#1d805f}.user-upgrade-table .status-info .status-indicator.failed{background-color:#f23933}.user-upgrade-table .dependencies-text{font-size:12px;background-color:#ffe9e9;padding:.25rem .5rem;border-radius:3px;color:#000}.user-upgrade-table .upgrade-status-cell{display:flex;align-items:center;justify-content:flex-start}.user-upgrade-table .upgrade-button{border-radius:20px!important;font-size:14px!important;font-style:normal!important;font-weight:400!important;height:32px!important;display:flex!important;align-items:center!important;justify-content:center!important;background-color:#fff!important;border:2px solid black!important;border-radius:1rem!important;color:#000!important}.user-upgrade-table .upgrade-button:hover{background-color:#000000ce!important;color:#fff!important}.user-upgrade-table .custom-checkbox .mdc-checkbox{padding:8px}.mat-checkbox-disabled{opacity:.5}.multi-dev-box{position:relative}.device-list{position:absolute;top:65%;left:0;min-width:200px;background:white;box-shadow:0 2px 8px #0000001a;padding:8px 0;margin-top:4px;border-radius:2px;opacity:0;transform:translateY(-10px);visibility:hidden;transition:all .3s ease;z-index:1000}.device-list.show-dev-list{opacity:1;transform:translateY(0);visibility:visible;pointer-events:auto}.clickable{cursor:pointer}.device-item{padding:12px 16px;border-bottom:1px solid #f5f5f5;cursor:pointer;transition:background-color .2s ease}.device-item:hover{background-color:#f9f9f9}.device-item.no-border{border-bottom:none}.device-item .device-name{font-size:14px;color:#333}.table-action-panel{width:100%;display:flex;justify-content:flex-start;gap:1rem}:host ::ng-deep .action-wrapper{display:flex;flex:1;align-items:center;justify-content:space-between;gap:1rem;color:#555}:host ::ng-deep .action-wrapper .mat-button .mat-button-wrapper{margin:0}.upgrade-bulk-button{border:1px solid #000!important;color:#fff!important;background:#000!important;border-radius:20px!important;padding:0 1rem!important;font-size:14px!important;font-style:normal!important;font-weight:400!important;height:36px!important;display:flex!important;align-items:center!important;justify-content:center!important}.upgrade-bulk-button:hover{background-color:#212121!important}.upgrade-bulk-button:disabled{background-color:#888!important;color:#fff!important;cursor:not-allowed!important;border-color:#888!important;opacity:.25!important}:host ::ng-deep .user-upgrade-table .mat-accent:not(.mat-checkbox-disabled).mat-checkbox-checked .mat-checkbox-background{background-color:#1170cf!important;border-color:#00000080!important}:host ::ng-deep .user-upgrade-table .mat-accent:not(.mat-checkbox-disabled):hover:not(.mat-checkbox-checked) .mat-checkbox-background{background-color:#0000004d!important}:host ::ng-deep .user-upgrade-table .mat-accent:not(.mat-checkbox-disabled).mat-checkbox-indeterminate .mat-checkbox-background{background-color:#1170cf!important;border-color:#00000080!important}:host ::ng-deep .user-upgrade-table .mat-accent:not(.mat-checkbox-disabled).mat-checkbox-indeterminate .mat-checkbox-background .mat-checkbox-checkmark{transform:scale(.75)}:host ::ng-deep .user-upgrade-table .mat-accent:not(.mat-checkbox-disabled).mat-checkbox-indeterminate .mat-checkbox-background .mat-checkbox-mixedmark{transform:scale(.75)}:host ::ng-deep .user-upgrade-table .mat-accent:not(.mat-checkbox-disabled).mat-checkbox .mat-checkbox-background{border-color:#00000080!important;transition:background-color .2s,border-color .2s,box-shadow .2s}:host ::ng-deep .user-upgrade-table .mat-accent:not(.mat-checkbox-disabled).mat-checkbox .mat-checkbox-background .mat-checkbox-checkmark{transform:scale(.75)}:host ::ng-deep .user-upgrade-table .mat-accent:not(.mat-checkbox-disabled) .mat-checkbox-ripple .mat-ripple-element{background-color:#1170cf40}:host ::ng-deep .user-upgrade-table .mat-accent:not(.mat-checkbox-disabled).cdk-focused .mat-checkbox-ripple .mat-ripple-element{background-color:#1170cf59}.user-upgrade-table .mat-checkbox.mat-accent .mat-checkbox-background{border-color:#00000080!important;transition:background-color .2s,border-color .2s,box-shadow .2s;background-color:#1170cf!important}.user-upgrade-table .mat-checkbox.mat-accent .mat-checkbox-background .mat-checkbox-checkmark{transform:scale(.75)}.user-upgrade-table .mat-checkbox.mat-accent .mat-ripple-element{background-color:#08599c1a!important}.user-upgrade-table .mat-checkbox.mat-accent:focus .mat-checkbox-background{background-color:#08599c1a!important}.user-upgrade-table .mat-checkbox.mat-accent .mat-checkbox-frame{border-color:#00000080!important}.user-upgrade-table .mat-checkbox-checkmark{color:#fff!important;transform:scale(.75)}.user-upgrade-table .mat-checkbox-checkmark-path{stroke:#fff!important}.user-upgrade-table .mat-checkbox-mixedmark{border-color:#fff!important}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i2.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i2.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i2.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i2.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i2.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i2.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i2.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i2.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i2.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i3.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5.SummaryCardComponent, selector: "tk-summary-card", inputs: ["value", "status", "description"] }, { kind: "component", type: i6.TableFiltersComponent, selector: "tk-table-filters", inputs: ["filters"], outputs: ["filter"] }, { kind: "component", type: i7.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i8.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }] });
355
+ UserUpgradeDataTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: UserUpgradeDataTableComponent, selector: "tk-user-upgrade-data-table", inputs: { host: "host", token: "token", customerId: "customerId" }, ngImport: i0, template: "<div *ngIf=\"dataPending\" class=\"overlay\">\r\n <mat-progress-spinner\r\n class=\"page-spinner\"\r\n mode=\"indeterminate\"\r\n [diameter]=\"70\"\r\n strokeWidth=\"3\"\r\n ></mat-progress-spinner>\r\n</div>\r\n\r\n<div id=\"userUpgradeDataTable\" class=\"wrapper\">\r\n <div class=\"user-upgrade-status-wrapper\">\r\n <tk-summary-card [description]=\"'Users are ready to upgrade'\" [value]=\"statusCounts['Ready']\"></tk-summary-card>\r\n <tk-summary-card [description]=\"'Users are not ready'\" [value]=\"statusCounts['Not Ready']\" [status]=\"'Not Ready'\"></tk-summary-card>\r\n <tk-summary-card [description]=\"'Users failed to upgrade'\" [value]=\"statusCounts['Failed']\" [status]=\"'Failed'\"></tk-summary-card>\r\n <tk-summary-card [description]=\"'Successfully upgraded'\" [value]=\"statusCounts['Completed']\" [status]=\"'Completed'\"></tk-summary-card>\r\n </div>\r\n <div class=\"table-action-panel\">\r\n <tk-table-filters *ngIf=\"filters.length > 0\" [filters]=\"filters\" (filter)=\"onFilter($event)\"></tk-table-filters>\r\n <div class=\"action-wrapper\">\r\n <span>{{filteredDataCount}} Users</span>\r\n <button\r\n mat-button\r\n color=\"primary\"\r\n class=\"upgrade-bulk-button\"\r\n [disabled]=\"selection.selected.length === 0\"\r\n (click)=\"upgradeSelectedUsers()\">\r\n Upgrade {{ selection.selected.length === 0 ? '' : '(' + selection.selected.length + ')' }}\r\n </button>\r\n </div>\r\n </div>\r\n <table mat-table [dataSource]=\"data\" class=\"user-upgrade-table\">\r\n\r\n <!-- Checkbox Column -->\r\n <ng-container matColumnDef=\"select\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n <mat-checkbox\r\n (change)=\"$event ? masterToggle() : null\"\r\n [checked]=\"selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\"\r\n class=\"custom-checkbox\">\r\n </mat-checkbox>\r\n </th>\r\n <td mat-cell *matCellDef=\"let row\">\r\n <mat-checkbox\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? selection.toggle(row) : null\"\r\n [checked]=\"selection.isSelected(row)\"\r\n [disabled]=\"STATUS_ENTRIES[row.upgradeStatus] !== 'Ready' || row.pending\"\r\n class=\"custom-checkbox\">\r\n </mat-checkbox>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- User Column -->\r\n <ng-container matColumnDef=\"user\">\r\n <th mat-header-cell *matHeaderCellDef>User</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <div class=\"user-info\">\r\n <div class=\"user-name\">{{element.userName}}</div>\r\n <div class=\"user-email\">{{element.userName}}</div>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- Site Column -->\r\n <ng-container matColumnDef=\"site\">\r\n <th mat-header-cell *matHeaderCellDef>Site</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <div class=\"site-info\">\r\n <span class=\"status-indicator\" [ngClass]=\"getSiteUpgradeStatusClass(element.upgradeStatus)\"></span>\r\n <span>{{element.siteName}}</span>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- Device Column -->\r\n <ng-container matColumnDef=\"device\">\r\n <th class=\"device-td\" mat-header-cell *matHeaderCellDef>Device</th>\r\n <td mat-cell *matCellDef=\"let element\" class=\"multi-dev-box\">\r\n <div *ngIf=\"element.showDevices\" class=\"device-list show-dev-list\">\r\n <div *ngFor=\"let device of element.devicesWithExtensions; let last = last\"\r\n class=\"device-item\"\r\n [class.no-border]=\"last\">\r\n <span class=\"device-indicator\" [ngClass]=\"{'device-indicator-ready': element.deviceStatus === 'READY'}\"></span>\r\n <span class=\"device-name\">{{ device.deviceName || device }}</span>\r\n <span class=\"device-model\">\r\n {{ device.extensions?.length ? 'Ext: ' + device.extensions.join(\", \") : 'No Extension' }}\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"device-info\">\r\n <div class=\"multiple-dev-link\" *ngIf=\"element.devicesWithExtensions?.length > 1; else oneDevice\">\r\n <div class=\"device-name-wrapper clickable\"\r\n (mouseenter)=\"onMultipleDevices(element)\"\r\n (mouseleave)=\"onMultipleDevices(element)\">\r\n\r\n <span class=\"device-name\">Multiple devices ></span>\r\n </div>\r\n </div>\r\n <ng-template #oneDevice>\r\n <div class=\"device-name-wrapper\">\r\n <span class=\"device-indicator\"></span>\r\n <span class=\"device-name\">{{element.devicesWithExtensions[0].deviceName}}</span>\r\n </div>\r\n <div class=\"device-model one-dev-extensions\">\r\n {{ element.devicesWithExtensions[0].extensions?.length ?\r\n 'Ext: ' + element.devicesWithExtensions[0].extensions?.join(\", \") : 'No Extension' }}\r\n </div>\r\n </ng-template>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- Dial Plan Status Column -->\r\n <ng-container matColumnDef=\"dialPlanStatus\">\r\n <th mat-header-cell *matHeaderCellDef>Dial Plan Status</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <div class=\"status-info\">\r\n <span class=\"status-indicator\" [ngClass]=\"getStatusClass(element.dialPlanStatus)\"></span>\r\n <span [ngClass]=\"{'status-ready': element.dialPlanStatus === 'READY'}\">{{STATUS_ENTRIES[element.dialPlanStatus]}}</span>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- Dependencies Column -->\r\n <ng-container matColumnDef=\"dependencies\">\r\n <th mat-header-cell *matHeaderCellDef>Dependencies</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <span *ngIf=\"DEPENDENCIES_STATUS[element.dependenciesStatus] === 'Dependencies found'\" class=\"dependencies-text\">{{DEPENDENCIES_STATUS[element.dependenciesStatus]}}</span>\r\n <span *ngIf=\"DEPENDENCIES_STATUS[element.dependenciesStatus] === 'No dependencies'\">\u2014</span>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- User Upgrade Status Column -->\r\n <ng-container matColumnDef=\"userUpgradeStatus\">\r\n <th mat-header-cell *matHeaderCellDef>User Upgrade Status</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <div class=\"upgrade-status-cell\">\r\n <ng-container *ngIf=\"STATUS_ENTRIES[element.upgradeStatus] === 'Ready'; else statusBlock\">\r\n <button mat-button color=\"primary\" class=\"upgrade-button\" (click)=\"upgradeUser(element)\">Upgrade</button>\r\n </ng-container>\r\n <ng-template #statusBlock>\r\n <div class=\"status-info\">\r\n <span class=\"status-indicator\" [ngClass]=\"getStatusClass(element.upgradeStatus)\"></span>\r\n <span>{{STATUS_ENTRIES[element.upgradeStatus]}}</span>\r\n </div>\r\n </ng-template>\r\n </div>\r\n\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"userUpgradeLoader\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td class=\"mat-progress-spinner-td\" mat-cell *matCellDef=\"let element\">\r\n\r\n <mat-progress-spinner\r\n *ngIf=\"element.pending\"\r\n class=\"field-spinner\"\r\n [diameter]=\"20\"\r\n mode=\"indeterminate\">\r\n </mat-progress-spinner>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"\r\n [class.selected-row]=\"selection.isSelected(row)\"></tr>\r\n </table>\r\n</div>\r\n\r\n<div class=\"app-pagination\">\r\n <mat-paginator\r\n [length]=\"pagination.total\"\r\n [pageSize]=\"pagination.pageSize\"\r\n [pageSizeOptions]=\"pagination.pageSizeOptions\"\r\n [pageIndex]=\"pagination.pageIndex\"\r\n (page)=\"pageEvent($event)\"\r\n showFirstLastButtons>\r\n </mat-paginator>\r\n\r\n <!--<div class=\"page-indexes-box\">\r\n <mat-paginator\r\n [id]=\"'commonPagination'\"\r\n [hidePageSize]=\"true\"\r\n [length]=\"pagination.total\"\r\n [pageIndex]=\"pagination.pageIndex\"\r\n [pageSize]=\"pagination.pageSize\"\r\n [pageSizeOptions]=\"pagination.pageSizeOptions\"\r\n (page)=\"pageEvent($event)\">\r\n </mat-paginator>\r\n </div>\r\n\r\n <div class=\"per-page-block\">\r\n <div class=\"item_per_page\">Items per page:</div>\r\n <div class=\"select-box select-page-size\">\r\n <mat-select (selectionChange)=\"changePerPageNumber($event)\" #page\r\n [id]=\"'commonPaginationSelect'\">\r\n <mat-option *ngFor=\"let option of pageSizeOptions; let i = index;\" [id]=\"'paginationSelectOpt_' + i\" [value]=\"option\">{{option}}</mat-option>\r\n </mat-select>\r\n </div>\r\n\r\n </div>-->\r\n</div>\r\n", styles: ["@import\"https://fonts.googleapis.com/css?family=Poppins:400,100,200,300,500,600,800,700,900\";@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap\";.app-pagination{display:flex;flex-direction:column;align-items:stretch}.app-pagination .page-indexes-box,.app-pagination .per-page-block{justify-self:center}.app-pagination mat-select{width:100px}.overlay{position:fixed;width:100%;height:100%;inset:0;background-color:#fff6;z-index:200}.mat-progress-spinner{position:absolute;top:50%;left:50%;margin-top:-20px;margin-left:-25px;width:50px;height:40px;text-align:center;font-size:10px}.mat-progress-spinner-td{position:relative}#userUpgradeDataTable .flex-container{padding:0!important}.multiple-dev-link{margin:0 0 0 13px}:host ::ng-deep .mat-cell{border-bottom:1px solid #d6d6d6;font-family:Inter,sans-serif!important}:host ::ng-deep .mat-header-cell{border-bottom:1px solid #afafaf;font-family:Inter,sans-serif!important}:host ::ng-deep .progress-spinner-td{position:relative}:host ::ng-deep #userUpgradeDataTable .mat-progress-spinner-td .mat-progress-spinner{top:28%;left:0;margin:0}.wrapper{display:flex;flex-direction:column;gap:1rem}.user-upgrade-status-wrapper{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;margin-bottom:1rem;align-items:stretch}.user-upgrade-table{width:100%;background:white;border-radius:8px;overflow:hidden;font-size:14px}.user-upgrade-table .mat-header-row{font-size:12px;height:35px}.user-upgrade-table .mat-cell{border-bottom:1px solid #d6d6d6}.user-upgrade-table .mat-header-cell{border-bottom:1px solid #afafaf}.user-upgrade-table .mat-row{transition:background-color .2s ease}.user-upgrade-table .mat-row:hover{background-color:#f8f9fa}.user-upgrade-table .mat-row.selected-row{background-color:#08599c1a}.user-upgrade-table .user-info .user-name{font-weight:500;color:#212121}.user-upgrade-table .user-info .user-email{font-size:12px;color:#757575}.user-upgrade-table .site-info{display:flex;align-items:center;gap:8px}.user-upgrade-table .site-info .site-indicator{width:8px;height:8px;border-radius:50%;background-color:#737480}.user-upgrade-table .device-info .device-name-wrapper{display:flex;align-items:center;gap:5px}.user-upgrade-table .device-info .device-name-wrapper .device-name{font-weight:500;color:#212121}.user-upgrade-table .device-model{font-size:12px;color:#757575;display:block}.user-upgrade-table .one-dev-extensions{margin:0 0 0 13px}.user-upgrade-table .device-indicator{width:8px;height:8px;border-radius:50%;background-color:#f8cd00}.user-upgrade-table .device-indicator-ready{background-color:#1d805f}.user-upgrade-table .device-td{padding:0 0 0 13px}.user-upgrade-table .status-info{display:flex;align-items:center;gap:8px}.user-upgrade-table .status-info .status-indicator{width:8px;height:8px;border-radius:50%}.user-upgrade-table .status-info .status-indicator.ready{background-color:#1170cf}.user-upgrade-table .status-info .status-indicator.partial-ready{background-color:#f8cd00}.user-upgrade-table .status-info .status-indicator.not-ready{background-color:#9e9e9e}.user-upgrade-table .status-info .status-indicator.completed{background-color:#1d805f}.user-upgrade-table .status-info .status-indicator.failed{background-color:#f23933}.user-upgrade-table .dependencies-text{font-size:12px;background-color:#ffe9e9;padding:.25rem .5rem;border-radius:3px;color:#000}.user-upgrade-table .upgrade-status-cell{display:flex;align-items:center;justify-content:flex-start}.user-upgrade-table .upgrade-button{border-radius:20px!important;font-size:14px!important;font-style:normal!important;font-weight:400!important;height:32px!important;display:flex!important;align-items:center!important;justify-content:center!important;background-color:#fff!important;border:2px solid black!important;border-radius:1rem!important;color:#000!important}.user-upgrade-table .upgrade-button:hover{background-color:#000000ce!important;color:#fff!important}.user-upgrade-table .custom-checkbox .mdc-checkbox{padding:8px}.mat-checkbox-disabled{opacity:.5}.multi-dev-box{position:relative}.device-list{position:absolute;top:65%;left:0;min-width:200px;background:white;box-shadow:0 2px 8px #0000001a;padding:8px 0;margin-top:4px;border-radius:2px;opacity:0;transform:translateY(-10px);visibility:hidden;transition:all .3s ease;z-index:1000}.device-list.show-dev-list{opacity:1;transform:translateY(0);visibility:visible;pointer-events:auto}.clickable{cursor:pointer}.device-item{padding:12px 16px;border-bottom:1px solid #f5f5f5;cursor:pointer;transition:background-color .2s ease}.device-item:hover{background-color:#f9f9f9}.device-item.no-border{border-bottom:none}.device-item .device-name{font-size:14px;color:#333}.table-action-panel{width:100%;display:flex;justify-content:flex-start;gap:1rem}:host ::ng-deep .action-wrapper{display:flex;flex:1;align-items:center;justify-content:space-between;gap:1rem;color:#555}:host ::ng-deep .action-wrapper .mat-button .mat-button-wrapper{margin:0}.upgrade-bulk-button{border:1px solid #000!important;color:#fff!important;background:#000!important;border-radius:20px!important;padding:0 1rem!important;font-size:14px!important;font-style:normal!important;font-weight:400!important;height:36px!important;display:flex!important;align-items:center!important;justify-content:center!important}.upgrade-bulk-button:hover{background-color:#212121!important}.upgrade-bulk-button:disabled{background-color:#888!important;color:#fff!important;cursor:not-allowed!important;border-color:#888!important;opacity:.25!important}:host ::ng-deep .user-upgrade-table .mat-accent:not(.mat-checkbox-disabled).mat-checkbox-checked .mat-checkbox-background{background-color:#1170cf!important;border-color:#00000080!important}:host ::ng-deep .user-upgrade-table .mat-accent:not(.mat-checkbox-disabled):hover:not(.mat-checkbox-checked) .mat-checkbox-background{background-color:#0000004d!important}:host ::ng-deep .user-upgrade-table .mat-accent:not(.mat-checkbox-disabled).mat-checkbox-indeterminate .mat-checkbox-background{background-color:#1170cf!important;border-color:#00000080!important}:host ::ng-deep .user-upgrade-table .mat-accent:not(.mat-checkbox-disabled).mat-checkbox-indeterminate .mat-checkbox-background .mat-checkbox-checkmark{transform:scale(.75)}:host ::ng-deep .user-upgrade-table .mat-accent:not(.mat-checkbox-disabled).mat-checkbox-indeterminate .mat-checkbox-background .mat-checkbox-mixedmark{transform:scale(.75)}:host ::ng-deep .user-upgrade-table .mat-accent:not(.mat-checkbox-disabled).mat-checkbox .mat-checkbox-background{border-color:#00000080!important;transition:background-color .2s,border-color .2s,box-shadow .2s}:host ::ng-deep .user-upgrade-table .mat-accent:not(.mat-checkbox-disabled).mat-checkbox .mat-checkbox-background .mat-checkbox-checkmark{transform:scale(.75)}:host ::ng-deep .user-upgrade-table .mat-accent:not(.mat-checkbox-disabled) .mat-checkbox-ripple .mat-ripple-element{background-color:#1170cf40}:host ::ng-deep .user-upgrade-table .mat-accent:not(.mat-checkbox-disabled).cdk-focused .mat-checkbox-ripple .mat-ripple-element{background-color:#1170cf59}.user-upgrade-table .mat-checkbox.mat-accent .mat-checkbox-background{border-color:#00000080!important;transition:background-color .2s,border-color .2s,box-shadow .2s;background-color:#1170cf!important}.user-upgrade-table .mat-checkbox.mat-accent .mat-checkbox-background .mat-checkbox-checkmark{transform:scale(.75)}.user-upgrade-table .mat-checkbox.mat-accent .mat-ripple-element{background-color:#08599c1a!important}.user-upgrade-table .mat-checkbox.mat-accent:focus .mat-checkbox-background{background-color:#08599c1a!important}.user-upgrade-table .mat-checkbox.mat-accent .mat-checkbox-frame{border-color:#00000080!important}.user-upgrade-table .mat-checkbox-checkmark{color:#fff!important;transform:scale(.75)}.user-upgrade-table .mat-checkbox-checkmark-path{stroke:#fff!important}.user-upgrade-table .mat-checkbox-mixedmark{border-color:#fff!important}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i2.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i2.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i2.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i2.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i2.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i2.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i2.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i2.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i2.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i3.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5.SummaryCardComponent, selector: "tk-summary-card", inputs: ["value", "status", "description"] }, { kind: "component", type: i6.TableFiltersComponent, selector: "tk-table-filters", inputs: ["filters"], outputs: ["filter"] }, { kind: "component", type: i7.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i8.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }] });
355
356
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UserUpgradeDataTableComponent, decorators: [{
356
357
  type: Component,
357
358
  args: [{ selector: 'tk-user-upgrade-data-table', template: "<div *ngIf=\"dataPending\" class=\"overlay\">\r\n <mat-progress-spinner\r\n class=\"page-spinner\"\r\n mode=\"indeterminate\"\r\n [diameter]=\"70\"\r\n strokeWidth=\"3\"\r\n ></mat-progress-spinner>\r\n</div>\r\n\r\n<div id=\"userUpgradeDataTable\" class=\"wrapper\">\r\n <div class=\"user-upgrade-status-wrapper\">\r\n <tk-summary-card [description]=\"'Users are ready to upgrade'\" [value]=\"statusCounts['Ready']\"></tk-summary-card>\r\n <tk-summary-card [description]=\"'Users are not ready'\" [value]=\"statusCounts['Not Ready']\" [status]=\"'Not Ready'\"></tk-summary-card>\r\n <tk-summary-card [description]=\"'Users failed to upgrade'\" [value]=\"statusCounts['Failed']\" [status]=\"'Failed'\"></tk-summary-card>\r\n <tk-summary-card [description]=\"'Successfully upgraded'\" [value]=\"statusCounts['Completed']\" [status]=\"'Completed'\"></tk-summary-card>\r\n </div>\r\n <div class=\"table-action-panel\">\r\n <tk-table-filters *ngIf=\"filters.length > 0\" [filters]=\"filters\" (filter)=\"onFilter($event)\"></tk-table-filters>\r\n <div class=\"action-wrapper\">\r\n <span>{{filteredDataCount}} Users</span>\r\n <button\r\n mat-button\r\n color=\"primary\"\r\n class=\"upgrade-bulk-button\"\r\n [disabled]=\"selection.selected.length === 0\"\r\n (click)=\"upgradeSelectedUsers()\">\r\n Upgrade {{ selection.selected.length === 0 ? '' : '(' + selection.selected.length + ')' }}\r\n </button>\r\n </div>\r\n </div>\r\n <table mat-table [dataSource]=\"data\" class=\"user-upgrade-table\">\r\n\r\n <!-- Checkbox Column -->\r\n <ng-container matColumnDef=\"select\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n <mat-checkbox\r\n (change)=\"$event ? masterToggle() : null\"\r\n [checked]=\"selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\"\r\n class=\"custom-checkbox\">\r\n </mat-checkbox>\r\n </th>\r\n <td mat-cell *matCellDef=\"let row\">\r\n <mat-checkbox\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? selection.toggle(row) : null\"\r\n [checked]=\"selection.isSelected(row)\"\r\n [disabled]=\"STATUS_ENTRIES[row.upgradeStatus] !== 'Ready' || row.pending\"\r\n class=\"custom-checkbox\">\r\n </mat-checkbox>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- User Column -->\r\n <ng-container matColumnDef=\"user\">\r\n <th mat-header-cell *matHeaderCellDef>User</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <div class=\"user-info\">\r\n <div class=\"user-name\">{{element.userName}}</div>\r\n <div class=\"user-email\">{{element.userName}}</div>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- Site Column -->\r\n <ng-container matColumnDef=\"site\">\r\n <th mat-header-cell *matHeaderCellDef>Site</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <div class=\"site-info\">\r\n <span class=\"status-indicator\" [ngClass]=\"getSiteUpgradeStatusClass(element.upgradeStatus)\"></span>\r\n <span>{{element.siteName}}</span>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- Device Column -->\r\n <ng-container matColumnDef=\"device\">\r\n <th class=\"device-td\" mat-header-cell *matHeaderCellDef>Device</th>\r\n <td mat-cell *matCellDef=\"let element\" class=\"multi-dev-box\">\r\n <div *ngIf=\"element.showDevices\" class=\"device-list show-dev-list\">\r\n <div *ngFor=\"let device of element.devicesWithExtensions; let last = last\"\r\n class=\"device-item\"\r\n [class.no-border]=\"last\">\r\n <span class=\"device-indicator\" [ngClass]=\"{'device-indicator-ready': element.deviceStatus === 'READY'}\"></span>\r\n <span class=\"device-name\">{{ device.deviceName || device }}</span>\r\n <span class=\"device-model\">\r\n {{ device.extensions?.length ? 'Ext: ' + device.extensions.join(\", \") : 'No Extension' }}\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"device-info\">\r\n <div class=\"multiple-dev-link\" *ngIf=\"element.devicesWithExtensions?.length > 1; else oneDevice\">\r\n <div class=\"device-name-wrapper clickable\"\r\n (mouseenter)=\"onMultipleDevices(element)\"\r\n (mouseleave)=\"onMultipleDevices(element)\">\r\n\r\n <span class=\"device-name\">Multiple devices ></span>\r\n </div>\r\n </div>\r\n <ng-template #oneDevice>\r\n <div class=\"device-name-wrapper\">\r\n <span class=\"device-indicator\"></span>\r\n <span class=\"device-name\">{{element.devicesWithExtensions[0].deviceName}}</span>\r\n </div>\r\n <div class=\"device-model one-dev-extensions\">\r\n {{ element.devicesWithExtensions[0].extensions?.length ?\r\n 'Ext: ' + element.devicesWithExtensions[0].extensions?.join(\", \") : 'No Extension' }}\r\n </div>\r\n </ng-template>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- Dial Plan Status Column -->\r\n <ng-container matColumnDef=\"dialPlanStatus\">\r\n <th mat-header-cell *matHeaderCellDef>Dial Plan Status</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <div class=\"status-info\">\r\n <span class=\"status-indicator\" [ngClass]=\"getStatusClass(element.dialPlanStatus)\"></span>\r\n <span [ngClass]=\"{'status-ready': element.dialPlanStatus === 'READY'}\">{{STATUS_ENTRIES[element.dialPlanStatus]}}</span>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- Dependencies Column -->\r\n <ng-container matColumnDef=\"dependencies\">\r\n <th mat-header-cell *matHeaderCellDef>Dependencies</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <span *ngIf=\"DEPENDENCIES_STATUS[element.dependenciesStatus] === 'Dependencies found'\" class=\"dependencies-text\">{{DEPENDENCIES_STATUS[element.dependenciesStatus]}}</span>\r\n <span *ngIf=\"DEPENDENCIES_STATUS[element.dependenciesStatus] === 'No dependencies'\">\u2014</span>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- User Upgrade Status Column -->\r\n <ng-container matColumnDef=\"userUpgradeStatus\">\r\n <th mat-header-cell *matHeaderCellDef>User Upgrade Status</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <div class=\"upgrade-status-cell\">\r\n <ng-container *ngIf=\"STATUS_ENTRIES[element.upgradeStatus] === 'Ready'; else statusBlock\">\r\n <button mat-button color=\"primary\" class=\"upgrade-button\" (click)=\"upgradeUser(element)\">Upgrade</button>\r\n </ng-container>\r\n <ng-template #statusBlock>\r\n <div class=\"status-info\">\r\n <span class=\"status-indicator\" [ngClass]=\"getStatusClass(element.upgradeStatus)\"></span>\r\n <span>{{STATUS_ENTRIES[element.upgradeStatus]}}</span>\r\n </div>\r\n </ng-template>\r\n </div>\r\n\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"userUpgradeLoader\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td class=\"mat-progress-spinner-td\" mat-cell *matCellDef=\"let element\">\r\n\r\n <mat-progress-spinner\r\n *ngIf=\"element.pending\"\r\n class=\"field-spinner\"\r\n [diameter]=\"20\"\r\n mode=\"indeterminate\">\r\n </mat-progress-spinner>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"\r\n [class.selected-row]=\"selection.isSelected(row)\"></tr>\r\n </table>\r\n</div>\r\n\r\n<div class=\"app-pagination\">\r\n <mat-paginator\r\n [length]=\"pagination.total\"\r\n [pageSize]=\"pagination.pageSize\"\r\n [pageSizeOptions]=\"pagination.pageSizeOptions\"\r\n [pageIndex]=\"pagination.pageIndex\"\r\n (page)=\"pageEvent($event)\"\r\n showFirstLastButtons>\r\n </mat-paginator>\r\n\r\n <!--<div class=\"page-indexes-box\">\r\n <mat-paginator\r\n [id]=\"'commonPagination'\"\r\n [hidePageSize]=\"true\"\r\n [length]=\"pagination.total\"\r\n [pageIndex]=\"pagination.pageIndex\"\r\n [pageSize]=\"pagination.pageSize\"\r\n [pageSizeOptions]=\"pagination.pageSizeOptions\"\r\n (page)=\"pageEvent($event)\">\r\n </mat-paginator>\r\n </div>\r\n\r\n <div class=\"per-page-block\">\r\n <div class=\"item_per_page\">Items per page:</div>\r\n <div class=\"select-box select-page-size\">\r\n <mat-select (selectionChange)=\"changePerPageNumber($event)\" #page\r\n [id]=\"'commonPaginationSelect'\">\r\n <mat-option *ngFor=\"let option of pageSizeOptions; let i = index;\" [id]=\"'paginationSelectOpt_' + i\" [value]=\"option\">{{option}}</mat-option>\r\n </mat-select>\r\n </div>\r\n\r\n </div>-->\r\n</div>\r\n", styles: ["@import\"https://fonts.googleapis.com/css?family=Poppins:400,100,200,300,500,600,800,700,900\";@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap\";.app-pagination{display:flex;flex-direction:column;align-items:stretch}.app-pagination .page-indexes-box,.app-pagination .per-page-block{justify-self:center}.app-pagination mat-select{width:100px}.overlay{position:fixed;width:100%;height:100%;inset:0;background-color:#fff6;z-index:200}.mat-progress-spinner{position:absolute;top:50%;left:50%;margin-top:-20px;margin-left:-25px;width:50px;height:40px;text-align:center;font-size:10px}.mat-progress-spinner-td{position:relative}#userUpgradeDataTable .flex-container{padding:0!important}.multiple-dev-link{margin:0 0 0 13px}:host ::ng-deep .mat-cell{border-bottom:1px solid #d6d6d6;font-family:Inter,sans-serif!important}:host ::ng-deep .mat-header-cell{border-bottom:1px solid #afafaf;font-family:Inter,sans-serif!important}:host ::ng-deep .progress-spinner-td{position:relative}:host ::ng-deep #userUpgradeDataTable .mat-progress-spinner-td .mat-progress-spinner{top:28%;left:0;margin:0}.wrapper{display:flex;flex-direction:column;gap:1rem}.user-upgrade-status-wrapper{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;margin-bottom:1rem;align-items:stretch}.user-upgrade-table{width:100%;background:white;border-radius:8px;overflow:hidden;font-size:14px}.user-upgrade-table .mat-header-row{font-size:12px;height:35px}.user-upgrade-table .mat-cell{border-bottom:1px solid #d6d6d6}.user-upgrade-table .mat-header-cell{border-bottom:1px solid #afafaf}.user-upgrade-table .mat-row{transition:background-color .2s ease}.user-upgrade-table .mat-row:hover{background-color:#f8f9fa}.user-upgrade-table .mat-row.selected-row{background-color:#08599c1a}.user-upgrade-table .user-info .user-name{font-weight:500;color:#212121}.user-upgrade-table .user-info .user-email{font-size:12px;color:#757575}.user-upgrade-table .site-info{display:flex;align-items:center;gap:8px}.user-upgrade-table .site-info .site-indicator{width:8px;height:8px;border-radius:50%;background-color:#737480}.user-upgrade-table .device-info .device-name-wrapper{display:flex;align-items:center;gap:5px}.user-upgrade-table .device-info .device-name-wrapper .device-name{font-weight:500;color:#212121}.user-upgrade-table .device-model{font-size:12px;color:#757575;display:block}.user-upgrade-table .one-dev-extensions{margin:0 0 0 13px}.user-upgrade-table .device-indicator{width:8px;height:8px;border-radius:50%;background-color:#f8cd00}.user-upgrade-table .device-indicator-ready{background-color:#1d805f}.user-upgrade-table .device-td{padding:0 0 0 13px}.user-upgrade-table .status-info{display:flex;align-items:center;gap:8px}.user-upgrade-table .status-info .status-indicator{width:8px;height:8px;border-radius:50%}.user-upgrade-table .status-info .status-indicator.ready{background-color:#1170cf}.user-upgrade-table .status-info .status-indicator.partial-ready{background-color:#f8cd00}.user-upgrade-table .status-info .status-indicator.not-ready{background-color:#9e9e9e}.user-upgrade-table .status-info .status-indicator.completed{background-color:#1d805f}.user-upgrade-table .status-info .status-indicator.failed{background-color:#f23933}.user-upgrade-table .dependencies-text{font-size:12px;background-color:#ffe9e9;padding:.25rem .5rem;border-radius:3px;color:#000}.user-upgrade-table .upgrade-status-cell{display:flex;align-items:center;justify-content:flex-start}.user-upgrade-table .upgrade-button{border-radius:20px!important;font-size:14px!important;font-style:normal!important;font-weight:400!important;height:32px!important;display:flex!important;align-items:center!important;justify-content:center!important;background-color:#fff!important;border:2px solid black!important;border-radius:1rem!important;color:#000!important}.user-upgrade-table .upgrade-button:hover{background-color:#000000ce!important;color:#fff!important}.user-upgrade-table .custom-checkbox .mdc-checkbox{padding:8px}.mat-checkbox-disabled{opacity:.5}.multi-dev-box{position:relative}.device-list{position:absolute;top:65%;left:0;min-width:200px;background:white;box-shadow:0 2px 8px #0000001a;padding:8px 0;margin-top:4px;border-radius:2px;opacity:0;transform:translateY(-10px);visibility:hidden;transition:all .3s ease;z-index:1000}.device-list.show-dev-list{opacity:1;transform:translateY(0);visibility:visible;pointer-events:auto}.clickable{cursor:pointer}.device-item{padding:12px 16px;border-bottom:1px solid #f5f5f5;cursor:pointer;transition:background-color .2s ease}.device-item:hover{background-color:#f9f9f9}.device-item.no-border{border-bottom:none}.device-item .device-name{font-size:14px;color:#333}.table-action-panel{width:100%;display:flex;justify-content:flex-start;gap:1rem}:host ::ng-deep .action-wrapper{display:flex;flex:1;align-items:center;justify-content:space-between;gap:1rem;color:#555}:host ::ng-deep .action-wrapper .mat-button .mat-button-wrapper{margin:0}.upgrade-bulk-button{border:1px solid #000!important;color:#fff!important;background:#000!important;border-radius:20px!important;padding:0 1rem!important;font-size:14px!important;font-style:normal!important;font-weight:400!important;height:36px!important;display:flex!important;align-items:center!important;justify-content:center!important}.upgrade-bulk-button:hover{background-color:#212121!important}.upgrade-bulk-button:disabled{background-color:#888!important;color:#fff!important;cursor:not-allowed!important;border-color:#888!important;opacity:.25!important}:host ::ng-deep .user-upgrade-table .mat-accent:not(.mat-checkbox-disabled).mat-checkbox-checked .mat-checkbox-background{background-color:#1170cf!important;border-color:#00000080!important}:host ::ng-deep .user-upgrade-table .mat-accent:not(.mat-checkbox-disabled):hover:not(.mat-checkbox-checked) .mat-checkbox-background{background-color:#0000004d!important}:host ::ng-deep .user-upgrade-table .mat-accent:not(.mat-checkbox-disabled).mat-checkbox-indeterminate .mat-checkbox-background{background-color:#1170cf!important;border-color:#00000080!important}:host ::ng-deep .user-upgrade-table .mat-accent:not(.mat-checkbox-disabled).mat-checkbox-indeterminate .mat-checkbox-background .mat-checkbox-checkmark{transform:scale(.75)}:host ::ng-deep .user-upgrade-table .mat-accent:not(.mat-checkbox-disabled).mat-checkbox-indeterminate .mat-checkbox-background .mat-checkbox-mixedmark{transform:scale(.75)}:host ::ng-deep .user-upgrade-table .mat-accent:not(.mat-checkbox-disabled).mat-checkbox .mat-checkbox-background{border-color:#00000080!important;transition:background-color .2s,border-color .2s,box-shadow .2s}:host ::ng-deep .user-upgrade-table .mat-accent:not(.mat-checkbox-disabled).mat-checkbox .mat-checkbox-background .mat-checkbox-checkmark{transform:scale(.75)}:host ::ng-deep .user-upgrade-table .mat-accent:not(.mat-checkbox-disabled) .mat-checkbox-ripple .mat-ripple-element{background-color:#1170cf40}:host ::ng-deep .user-upgrade-table .mat-accent:not(.mat-checkbox-disabled).cdk-focused .mat-checkbox-ripple .mat-ripple-element{background-color:#1170cf59}.user-upgrade-table .mat-checkbox.mat-accent .mat-checkbox-background{border-color:#00000080!important;transition:background-color .2s,border-color .2s,box-shadow .2s;background-color:#1170cf!important}.user-upgrade-table .mat-checkbox.mat-accent .mat-checkbox-background .mat-checkbox-checkmark{transform:scale(.75)}.user-upgrade-table .mat-checkbox.mat-accent .mat-ripple-element{background-color:#08599c1a!important}.user-upgrade-table .mat-checkbox.mat-accent:focus .mat-checkbox-background{background-color:#08599c1a!important}.user-upgrade-table .mat-checkbox.mat-accent .mat-checkbox-frame{border-color:#00000080!important}.user-upgrade-table .mat-checkbox-checkmark{color:#fff!important;transform:scale(.75)}.user-upgrade-table .mat-checkbox-checkmark-path{stroke:#fff!important}.user-upgrade-table .mat-checkbox-mixedmark{border-color:#fff!important}\n"] }]
358
- }], propDecorators: { token: [{
359
+ }], propDecorators: { host: [{
360
+ type: Input
361
+ }], token: [{
359
362
  type: Input
360
363
  }], customerId: [{
361
364
  type: Input
@@ -373,4 +376,4 @@ const PAGINATION_DATA_DEFAULTS = {
373
376
  SIZE: 10,
374
377
  PAGE_INDEX: 0
375
378
  };
376
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci11cGdyYWRlLWRhdGEtdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVraS93aWRnZXRzL2RpMm10L3dpZGdldHMvdXNlci11cGdyYWRlL3VzZXItdXBncmFkZS1kYXRhLXRhYmxlL3VzZXItdXBncmFkZS1kYXRhLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1a2kvd2lkZ2V0cy9kaTJtdC93aWRnZXRzL3VzZXItdXBncmFkZS91c2VyLXVwZ3JhZGUtZGF0YS10YWJsZS91c2VyLXVwZ3JhZGUtZGF0YS10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFNBQVMsRUFBcUIsTUFBTSxFQUFFLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDL0YsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHN0QsT0FBTyxFQUFrQixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakMsT0FBTyxFQUNMLGNBQWMsRUFJZCxrQkFBa0IsRUFDbkIsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUUsbUJBQW1CLEVBQVUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFOUYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOzs7Ozs7Ozs7O0FBU2xGLE1BQU0sT0FBTyw2QkFBNkI7SUFOMUM7UUFPVSxhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztR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QUFFRCxNQUFNLHdCQUF3QixHQUFHO0lBQy9CLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUMxQixJQUFJLEVBQUUsRUFBRTtJQUNSLFVBQVUsRUFBRSxDQUFDO0NBQ2QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlbGVjdGlvbk1vZGVsIH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9jb2xsZWN0aW9uc1wiO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgT25EZXN0cm95LCBpbmplY3QsIElucHV0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IE1hdFRhYmxlRGF0YVNvdXJjZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC90YWJsZVwiO1xyXG5pbXBvcnQgeyBUYWJsZUNvbHVtbiB9IGZyb20gXCIuLi8uLi8uLi9zaGFyZWQvdHlwZXMvZGF0YS10YWJsZVwiO1xyXG5pbXBvcnQgeyBUYWJsZUZpbHRlciB9IGZyb20gXCIuLi8uLi8uLi9zaGFyZWQvdHlwZXMvdGFibGUvZmlsdGVyXCI7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG9mLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQge1xyXG4gIEZJTFRFUl9LRVlfTUFQLFxyXG4gIFVpRmlsdGVyS2V5LFxyXG4gIFVzZXIyVXBncmFkZVN0YXR1c0RUTyxcclxuICBVc2VyU2VhcmNoUGFyYW1zLFxyXG4gIFVzZXJVcGdyYWRlU2VydmljZVxyXG59IGZyb20gXCIuLi91c2VyLXVwZ3JhZGUuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBERVBFTkRFTkNJRVNfU1RBVFVTLCBTdGF0dXMsIFNUQVRVU19FTlRSSUVTIH0gZnJvbSBcIi4uLy4uLy4uL3NoYXJlZC90eXBlcy9jb25zdGFudHNcIjtcclxuaW1wb3J0IHsgVXNlclVwZ3JhZGVSZWNvcmQgfSBmcm9tIFwiLi4vdHlwZXMvdXNlci11cGdyYWRlXCI7XHJcbmltcG9ydCB7IEFQSVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vc2hhcmVkL3NlcnZpY2VzL2FwaS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFBBR0lOQVRJT05fU0laRV9PUFRJT05TIH0gZnJvbSBcIi4uLy4uLy4uL3NoYXJlZC9jb25zdGFudHMvYXBwLmNvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBQYWdlRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd0ay11c2VyLXVwZ3JhZGUtZGF0YS10YWJsZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3VzZXItdXBncmFkZS1kYXRhLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi91c2VyLXVwZ3JhZGUtZGF0YS10YWJsZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIC8vIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLlNoYWRvd0RvbVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVXNlclVwZ3JhZGVEYXRhVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgcHJpdmF0ZSB1c2VyVXBncmFkZVNlcnZpY2UgPSBpbmplY3QoVXNlclVwZ3JhZGVTZXJ2aWNlKTtcclxuICBwcml2YXRlIGFwaVNlcnZpY2UgPSBpbmplY3QoQVBJU2VydmljZSk7XHJcbiAgcmVhZG9ubHkgU1RBVFVTX0VOVFJJRVMgPSBTVEFUVVNfRU5UUklFUztcclxuICByZWFkb25seSBERVBFTkRFTkNJRVNfU1RBVFVTID0gREVQRU5ERU5DSUVTX1NUQVRVUztcclxuXHJcbiAgQElucHV0KCkgdG9rZW4hOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgY3VzdG9tZXJJZCE6IHN0cmluZztcclxuXHJcbiAgY29sdW1ucyE6IFRhYmxlQ29sdW1uW107XHJcbiAgZGF0YVBlbmRpbmcgPSBmYWxzZTtcclxuICBkYXRhITogTWF0VGFibGVEYXRhU291cmNlPFVzZXJVcGdyYWRlUmVjb3JkPjtcclxuICBkaXNwbGF5ZWRDb2x1bW5zOiBzdHJpbmdbXSA9IFsnc2VsZWN0JywgJ3VzZXInLCAnc2l0ZScsICdkZXZpY2UnLCAnZGlhbFBsYW5TdGF0dXMnLCAnZGVwZW5kZW5jaWVzJywgJ3VzZXJVcGdyYWRlU3RhdHVzJywgJ3VzZXJVcGdyYWRlTG9hZGVyJ107XHJcbiAgc2VsZWN0aW9uID0gbmV3IFNlbGVjdGlvbk1vZGVsPFVzZXJVcGdyYWRlUmVjb3JkPih0cnVlLCBbXSk7XHJcbiAgZmlsdGVyczogVGFibGVGaWx0ZXJbXSA9IFtdO1xyXG4gIHBhZ2luYXRpb24gPSBuZXcgUGFnaW5hdGlvbkRhdGFEdG8oKTtcclxuICB1c2VyczogVXNlclVwZ3JhZGVSZWNvcmRbXSA9IFtdO1xyXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuXHJcbiAgc3RhdHVzQ291bnRzOiBhbnkgPSB7fTtcclxuXHJcbiAgcHJpdmF0ZSBhY3RpdmVGaWx0ZXJzOiBQYXJ0aWFsPFVzZXJTZWFyY2hQYXJhbXM+ID0ge307XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kYXRhUGVuZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLmFwaVNlcnZpY2UudG9rZW4gPSB0aGlzLnRva2VuO1xyXG4gICAgdGhpcy51c2VyVXBncmFkZVNlcnZpY2UuY3VzdG9tZXJJZCA9IHRoaXMuY3VzdG9tZXJJZDtcclxuXHJcbiAgICBjb25zdCBzdWJzYzEgPSB0aGlzLnVzZXJVcGdyYWRlU2VydmljZS5nZXRVc2VyVXBncmFkZVJlY29yZHModGhpcy5wYWdpbmF0aW9uLnBhZ2VTaXplLCB0aGlzLnBhZ2luYXRpb24ucGFnZUluZGV4LCB0aGlzLmFjdGl2ZUZpbHRlcnMpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0czogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgcmVjb3JkcyA9IHJlc3VsdHMuY29udGVudCBhcyBVc2VyVXBncmFkZVJlY29yZFtdXHJcbiAgICAgICAgcmVjb3Jkcy5mb3JFYWNoKHJlY29yZCA9PiB7XHJcbiAgICAgICAgICByZWNvcmQuZGV2aWNlc1dpdGhFeHRlbnNpb25zID0gdGhpcy51c2VyVXBncmFkZVNlcnZpY2UubWFwRGV2aWNlc1dpdGhFeHRlbnNpb25zKHJlY29yZC5kZXZpY2VzLCByZWNvcmQuZGV2aWNlRGV0YWlscyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5kYXRhID0gbmV3IE1hdFRhYmxlRGF0YVNvdXJjZShyZWNvcmRzKTtcclxuICAgICAgICB0aGlzLnBhZ2luYXRpb24udG90YWwgPSByZXN1bHRzLnRvdGFsRWxlbWVudHM7XHJcbiAgICAgICAgdGhpcy5kYXRhUGVuZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2V0dXBDdXN0b21GaWx0ZXIoKTtcclxuICAgICAgICB0aGlzLmluaXRpYWxpemVGaWx0ZXJzKHJlY29yZHMpO1xyXG4gICAgICB9KTtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoc3Vic2MxKTtcclxuXHJcbiAgICBjb25zdCBzdWJzYzIgPSB0aGlzLnVzZXJVcGdyYWRlU2VydmljZS5nZXRVc2VyVXBncmFkZVN0YXR1c0NvdW50cygpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgoc3RhdHVzQ291bnRzKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zdGF0dXNDb3VudHNbJ1JlYWR5J10gPSBzdGF0dXNDb3VudHNbJ1JFQURZJ10gfHwgMDtcclxuICAgICAgICB0aGlzLnN0YXR1c0NvdW50c1snTm90IFJlYWR5J10gPSBzdGF0dXNDb3VudHNbJ05PVF9SRUFEWSddIHx8IDA7XHJcbiAgICAgICAgdGhpcy5zdGF0dXNDb3VudHNbJ0NvbXBsZXRlZCddID0gc3RhdHVzQ291bnRzWydDT01QTEVURUQnXSB8fCAwO1xyXG4gICAgICAgIHRoaXMuc3RhdHVzQ291bnRzWydGYWlsZWQnXSA9IHN0YXR1c0NvdW50c1snRkFJTEVEJ10gfHwgMDtcclxuICAgICAgfSk7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHN1YnNjMik7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gICAgdGhpcy5kYXRhUGVuZGluZyA9IGZhbHNlO1xyXG5cclxuICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbnMpIHtcclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbk11bHRpcGxlRGV2aWNlcyh1c2VyOiBVc2VyVXBncmFkZVJlY29yZCk6IHZvaWQge1xyXG4gICAgdXNlci5zaG93RGV2aWNlcyA9ICF1c2VyLnNob3dEZXZpY2VzO1xyXG4gIH1cclxuXHJcbiAgcGFnZUV2ZW50IChldmVudDogUGFnZUV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLnBhZ2luYXRpb24ucGFnZUluZGV4ID0gZXZlbnQucGFnZUluZGV4O1xyXG4gICAgdGhpcy5wYWdpbmF0aW9uLnBhZ2VTaXplID0gZXZlbnQucGFnZVNpemU7XHJcbiAgICB0aGlzLmdldERhdGEoKTtcclxuICB9XHJcblxyXG4gIGdldFNpdGVVcGdyYWRlU3RhdHVzQ2xhc3Moc3RhdHVzOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgc3dpdGNoIChzdGF0dXMudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICBjYXNlICdyZWFkeSc6XHJcbiAgICAgICAgcmV0dXJuICdzdGF0dXMtcmVhZHknO1xyXG4gICAgICBjYXNlICdwYXJ0aWFsIHJlYWR5JzpcclxuICAgICAgICByZXR1cm4gJ3BhcnRpYWwtcmVhZHknO1xyXG4gICAgICBjYXNlICdjb21wbGV0ZWQnOlxyXG4gICAgICAgIHJldHVybiAnY29tcGxldGVkJztcclxuICAgICAgY2FzZSAnZmFpbGVkJzpcclxuICAgICAgICByZXR1cm4gJ2ZhaWxlZCc7XHJcbiAgICAgIGNhc2UgJ25vdCByZWFkeSc6XHJcbiAgICAgICAgcmV0dXJuICdub3QtcmVhZHknO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiAnbm90LXJlYWR5JztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoYW5nZVBlclBhZ2VOdW1iZXIocGFnZVNpemVFdmVudDogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnBhZ2luYXRpb24ucGFnZVNpemUgPSBwYWdlU2l6ZUV2ZW50LnZhbHVlO1xyXG4gICAgdGhpcy5wYWdpbmF0aW9uLnBhZ2VJbmRleCA9IDA7XHJcbiAgICB0aGlzLmdldERhdGEoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RGF0YShwYXJhbXM/OiBVc2VyU2VhcmNoUGFyYW1zKTogdm9pZCB7XHJcbiAgICB0aGlzLmRhdGFQZW5kaW5nID0gdHJ1ZTtcclxuICAgIGNvbnN0IHN1YnNjMSA9IHRoaXMudXNlclVwZ3JhZGVTZXJ2aWNlLmdldFVzZXJVcGdyYWRlUmVjb3Jkcyh0aGlzLnBhZ2luYXRpb24ucGFnZVNpemUsIHRoaXMucGFnaW5hdGlvbi5wYWdlSW5kZXgsIHBhcmFtcyB8fCB7fSlcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgICBjb25zdCByZWNvcmRzID0gcmVzdWx0LmNvbnRlbnQgYXMgVXNlclVwZ3JhZGVSZWNvcmRbXVxyXG4gICAgICAgIHJlY29yZHMuZm9yRWFjaChyZWNvcmQgPT4ge1xyXG4gICAgICAgICAgcmVjb3JkLmRldmljZXNXaXRoRXh0ZW5zaW9ucyA9IHRoaXMudXNlclVwZ3JhZGVTZXJ2aWNlLm1hcERldmljZXNXaXRoRXh0ZW5zaW9ucyhyZWNvcmQuZGV2aWNlcywgcmVjb3JkLmRldmljZURldGFpbHMpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmRhdGEgPSBuZXcgTWF0VGFibGVEYXRhU291cmNlKHJlY29yZHMpO1xyXG4gICAgICAgIHRoaXMucGFnaW5hdGlvbi50b3RhbCA9IHJlc3VsdC50b3RhbEVsZW1lbnRzO1xyXG4gICAgICAgIHRoaXMuZGF0YVBlbmRpbmcgPSBmYWxzZTtcclxuICAgICAgfSk7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHN1YnNjMSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRpYWxpemVGaWx0ZXJzKHJlY29yZHM6IFVzZXJVcGdyYWRlUmVjb3JkW10pOiB2b2lkIHtcclxuICAgIGlmICghcmVjb3Jkcz8ubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuZmlsdGVycyA9IFtdO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8gRXh0cmFjdCB1bmlxdWUgc2l0ZXMgKHNraXAgZW1wdHkvbnVsbClcclxuICAgIGNvbnN0IHVuaXF1ZVNpdGVzID0gW1xyXG4gICAgICAuLi5uZXcgU2V0KFxyXG4gICAgICAgIHJlY29yZHNcclxuICAgICAgICAgIC5tYXAocmVjb3JkID0+IHJlY29yZC5zaXRlTmFtZT8udHJpbSgpKVxyXG4gICAgICAgICAgLmZpbHRlcigoc2l0ZSk6IHNpdGUgaXMgc3RyaW5nID0+ICEhc2l0ZSlcclxuICAgICAgKVxyXG4gICAgXTtcclxuXHJcbiAgICBjb25zdCBzaXRlT3B0aW9ucyA9IHVuaXF1ZVNpdGVzLm1hcChzaXRlID0+ICh7XHJcbiAgICAgIGxhYmVsOiBzaXRlLFxyXG4gICAgICB2YWx1ZTogc2l0ZS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1xccysvZywgJy0nKVxyXG4gICAgfSkpO1xyXG5cclxuICAgIC8vIEV4dHJhY3QgdW5pcXVlIHN0YXR1c2VzIChza2lwIGVtcHR5L251bGwpXHJcbiAgICBjb25zdCB1bmlxdWVTdGF0dXNlcyA9IFtcclxuICAgICAgLi4ubmV3IFNldChcclxuICAgICAgICByZWNvcmRzXHJcbiAgICAgICAgICAubWFwKHJlY29yZCA9PiByZWNvcmQudXBncmFkZVN0YXR1cz8udHJpbSgpKVxyXG4gICAgICAgICAgLmZpbHRlcigoc3RhdHVzKTogc3RhdHVzIGlzIHN0cmluZyA9PiAhIXN0YXR1cylcclxuICAgICAgKVxyXG4gICAgXTtcclxuXHJcbiAgICBjb25zdCBzdGF0dXNPcHRpb25zID0gdW5pcXVlU3RhdHVzZXMubWFwKHN0YXR1cyA9PiAoe1xyXG4gICAgICBsYWJlbDogU1RBVFVTX0VOVFJJRVNbc3RhdHVzXSxcclxuICAgICAgdmFsdWU6IHN0YXR1cy50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1xccysvZywgJy0nKVxyXG4gICAgfSkpO1xyXG5cclxuICAgIHRoaXMuZmlsdGVycyA9IFtcclxuICAgICAge1xyXG4gICAgICAgIGlkOiAndXNlck5hbWUnLFxyXG4gICAgICAgIHR5cGU6ICdzZWFyY2gnLFxyXG4gICAgICAgIGNvbHVtbktleTogJ1VzZXInLFxyXG4gICAgICAgIHBsYWNlaG9sZGVyOiAnU2VhcmNoIHVzZXJzLi4uJyxcclxuICAgICAgICBvcHRpb25zOiBbXVxyXG4gICAgICB9XHJcbiAgICBdO1xyXG5cclxuICAgIGlmIChzaXRlT3B0aW9ucy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5maWx0ZXJzLnB1c2goe1xyXG4gICAgICAgIGlkOiAnc2l0ZXMnLFxyXG4gICAgICAgIHR5cGU6ICdzZWxlY3QnLFxyXG4gICAgICAgIGNvbHVtbktleTogJ1NpdGUnLFxyXG4gICAgICAgIHBsYWNlaG9sZGVyOiAnU2l0ZXMnLFxyXG4gICAgICAgIG9wdGlvbnM6IHNpdGVPcHRpb25zXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzdGF0dXNPcHRpb25zLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmZpbHRlcnMucHVzaCh7XHJcbiAgICAgICAgaWQ6ICdzdGF0dXMnLFxyXG4gICAgICAgIHR5cGU6ICdzZWxlY3QnLFxyXG4gICAgICAgIGNvbHVtbktleTogJ1VzZXIgVXBncmFkZSBTdGF0dXMnLFxyXG4gICAgICAgIHBsYWNlaG9sZGVyOiAnVXBncmFkZSBTdGF0dXMnLFxyXG4gICAgICAgIG9wdGlvbnM6IHN0YXR1c09wdGlvbnNcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiogV2hldGhlciB0aGUgbnVtYmVyIG9mIHNlbGVjdGVkIGVsZW1lbnRzIG1hdGNoZXMgdGhlIHRvdGFsIG51bWJlciBvZiByb3dzLiAqL1xyXG4gIGlzQWxsU2VsZWN0ZWQoKSB7XHJcbiAgICBjb25zdCBudW1TZWxlY3RlZCA9IHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkLmxlbmd0aDtcclxuICAgIGNvbnN0IG51bVJvd3MgPSB0aGlzLmRhdGE/LmRhdGEubGVuZ3RoID8/IDA7XHJcbiAgICByZXR1cm4gbnVtU2VsZWN0ZWQgPT09IG51bVJvd3M7XHJcbiAgfVxyXG5cclxuICAvKiogU2VsZWN0cyBhbGwgcm93cyBpZiB0aGV5IGFyZSBub3QgYWxsIHNlbGVjdGVkOyBvdGhlcndpc2UgY2xlYXIgc2VsZWN0aW9uLiAqL1xyXG4gIG1hc3RlclRvZ2dsZSgpIHtcclxuICAgIC8vIHRoaXMuaXNBbGxTZWxlY3RlZCgpID9cclxuICAgIC8vICAgdGhpcy5zZWxlY3Rpb24uY2xlYXIoKSA6XHJcbiAgICAvLyAgIHRoaXMuZGF0YT8uZGF0YS5mb3JFYWNoKHJvdyA9PiB0aGlzLnNlbGVjdGlvbi5zZWxlY3Qocm93KSk7XHJcbiAgICBpZiAodGhpcy5pc0FsbFNlbGVjdGVkKCkpIHtcclxuICAgICAgdGhpcy5zZWxlY3Rpb24uY2xlYXIoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZGF0YT8uZGF0YS5mb3JFYWNoKHJvdyA9PiB7XHJcbiAgICAgICAgaWYgKHJvdy51cGdyYWRlU3RhdHVzID09PSAnUkVBRFknKSB7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGlvbi5zZWxlY3Qocm93KVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB1cGdyYWRlVXNlcih1c2VyOiBVc2VyVXBncmFkZVJlY29yZCk6IHZvaWQge1xyXG4gICAgaWYgKHVzZXI/LnVwZ3JhZGVTdGF0dXMgPT09ICdSRUFEWScpXHJcbiAgICAgIHVzZXIucGVuZGluZyA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLnVzZXJVcGdyYWRlU2VydmljZS5jb2xsZWN0VXNlcnMoW3VzZXJdKVxyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMudXNlclVwZ3JhZGVTZXJ2aWNlLmJ1bGtVcGdyYWRlKFt1c2VyXSlcclxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVVzZXJzU3RhdHVzQWZ0ZXJVcGdyYWRlKFt1c2VyXSk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVVc2Vyc1N0YXR1c0FmdGVyVXBncmFkZSh1c2VyczogVXNlclVwZ3JhZGVSZWNvcmRbXSk6IHZvaWQge1xyXG4gICAgdGhpcy51c2VyVXBncmFkZVNlcnZpY2UuZ2V0VXNlcnNVcGdyYWRlU3RhdHVzZXModXNlcnMpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgodXBncmFkZWRTdGF0dXNlczogVXNlcjJVcGdyYWRlU3RhdHVzRFRPW10pID0+IHtcclxuICAgICAgICB1cGdyYWRlZFN0YXR1c2VzLmZvckVhY2goc3RhdHVzSXRlbSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBpbmQgPSB0aGlzLmdldFVzZXJJbmRleChzdGF0dXNJdGVtLnVzZXJJZCk7XHJcbiAgICAgICAgICBpZiAoaW5kID4gLTEpIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRhLmRhdGFbaW5kXS51cGdyYWRlU3RhdHVzID0gc3RhdHVzSXRlbS51cGdyYWRlU3RhdHVzO1xyXG4gICAgICAgICAgICB0aGlzLmRhdGEuZGF0YVtpbmRdLnBlbmRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmRhdGFQZW5kaW5nID0gZmFsc2U7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0VXNlckluZGV4KHVzZXJJZDogc3RyaW5nKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLmRhdGEuZGF0YS5maW5kSW5kZXgoKHJlY29yZDogVXNlclVwZ3JhZGVSZWNvcmQpID0+IHJlY29yZC51c2VySWQgPT09IHVzZXJJZCk7XHJcbiAgfVxyXG5cclxuICB1cGdyYWRlU2VsZWN0ZWRVc2VycygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZCAmJiB0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZC5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5kYXRhUGVuZGluZyA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLnVzZXJVcGdyYWRlU2VydmljZS5jb2xsZWN0VXNlcnModGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWQpXHJcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy51c2VyVXBncmFkZVNlcnZpY2UuYnVsa1VwZ3JhZGUodGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWQpXHJcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy51cGRhdGVVc2Vyc1N0YXR1c0FmdGVyVXBncmFkZSh0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZCk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgfVxyXG4gICAgdGhpcy51c2VyVXBncmFkZVNlcnZpY2UuYnVsa1VwZ3JhZGUodGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRGaWx0ZXJWYWx1ZShpbnB1dDogYW55KTogYW55IHtcclxuICAgIGlmIChpbnB1dCAmJiBpbnB1dC52YWx1ZSAhPT0gdW5kZWZpbmVkKSByZXR1cm4gaW5wdXQudmFsdWU7ICAgICAgLy8gZS5nLiB7dmFsdWUsbGFiZWx9XHJcbiAgICBpZiAoaW5wdXQgJiYgaW5wdXQudGFyZ2V0KSByZXR1cm4gaW5wdXQudGFyZ2V0LnZhbHVlOyAgICAgICAgICAgIC8vIERPTSBldmVudFxyXG4gICAgcmV0dXJuIGlucHV0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwbGFpbiB2YWx1ZVxyXG4gIH1cclxuICBwcml2YXRlIGlzRW1wdHlGaWx0ZXIodjogYW55KTogYm9vbGVhbiB7XHJcbiAgICBpZiAodiA9PT0gdW5kZWZpbmVkIHx8IHYgPT09IG51bGwpIHJldHVybiB0cnVlO1xyXG4gICAgaWYgKHR5cGVvZiB2ID09PSAnc3RyaW5nJykge1xyXG4gICAgICBjb25zdCBzID0gdi50cmltKCkudG9Mb3dlckNhc2UoKTtcclxuICAgICAgcmV0dXJuIHMgPT09ICcnIHx8IHMgPT09ICdhbGwnO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgb25GaWx0ZXIoZmlsdGVyRXZlbnQ6IHsga2V5OiBVaUZpbHRlcktleTsgdmFsdWU6IGFueSB9KSB7XHJcbiAgICBjb25zdCByYXdLZXkgPSBmaWx0ZXJFdmVudC5rZXk7ICAgICAgICBcclxuICAgIGNvbnN0IHNlcnZlcktleSA9IEZJTFRFUl9LRVlfTUFQW3Jhd0tleV07XHJcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZ2V0RmlsdGVyVmFsdWUoZmlsdGVyRXZlbnQudmFsdWUpO1xyXG5cclxuICAgIGNvbnN0IG5leHQ6IFBhcnRpYWw8VXNlclNlYXJjaFBhcmFtcz4gPSB7IC4uLnRoaXMuYWN0aXZlRmlsdGVycyB9OyAgICBcclxuXHJcbiAgICBpZiAodGhpcy5pc0VtcHR5RmlsdGVyKHZhbHVlKSkge1xyXG4gICAgICBkZWxldGUgbmV4dFtzZXJ2ZXJLZXldO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gbm9ybWFsaXplIHRvIHN0cmluZyBmb3IgQVBJICh0cmltKVxyXG4gICAgICBuZXh0W3NlcnZlcktleV0gPSB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gdmFsdWUudHJpbSgpIDogU3RyaW5nKHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmFjdGl2ZUZpbHRlcnMgPSBuZXh0O1xyXG4gICAgdGhpcy5wYWdpbmF0aW9uLnBhZ2VJbmRleCA9IDA7XHJcblxyXG4gICAgLy8gcXVpY2sgZml4IGZvciBkZW1vXHJcbiAgICBpZiAodGhpcy5hY3RpdmVGaWx0ZXJzWyd1cGdyYWRlU3RhdHVzJ10pIHtcclxuICAgICAgdGhpcy5hY3RpdmVGaWx0ZXJzWyd1cGdyYWRlU3RhdHVzJ10gPSB0aGlzLmFjdGl2ZUZpbHRlcnNbJ3VwZ3JhZGVTdGF0dXMnXT8udG9VcHBlckNhc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmdldERhdGEodGhpcy5hY3RpdmVGaWx0ZXJzIGFzIFVzZXJTZWFyY2hQYXJhbXMpO1xyXG4gIH1cclxuXHJcbiAgLypvbkZpbHRlcihmaWx0ZXJFdmVudDogeyBrZXk6IHN0cmluZywgdmFsdWU6IGFueSB9KSB7XHJcbiAgICBjb25zdCB7a2V5LCB2YWx1ZX0gPSBmaWx0ZXJFdmVudDtcclxuXHJcbiAgICBsZXQgZmlsdGVyVmFsdWU6IGFueTtcclxuICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS52YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGZpbHRlclZhbHVlID0gdmFsdWUudmFsdWU7XHJcbiAgICB9IGVsc2UgaWYgKHZhbHVlICYmIHZhbHVlLnRhcmdldCkge1xyXG4gICAgICBmaWx0ZXJWYWx1ZSA9IHZhbHVlLnRhcmdldC52YWx1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGZpbHRlclZhbHVlID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSGFuZGxlIFwiQWxsXCIgb3B0aW9uIG9yIGVtcHR5IHZhbHVlcyAtIHJlbW92ZSB0aGUgZmlsdGVyXHJcbiAgICBpZiAoZmlsdGVyVmFsdWUgPT09ICdhbGwnIHx8ICFmaWx0ZXJWYWx1ZSB8fCBmaWx0ZXJWYWx1ZSA9PT0gJycpIHtcclxuICAgICAgZGVsZXRlIHRoaXMuYWN0aXZlRmlsdGVyc1trZXldO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5hY3RpdmVGaWx0ZXJzW2tleV0gPSBmaWx0ZXJWYWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmFwcGx5RmlsdGVycygpO1xyXG4gIH0qL1xyXG5cclxuICBwcml2YXRlIHNldHVwQ3VzdG9tRmlsdGVyKCkge1xyXG4gICAgdGhpcy5kYXRhLmZpbHRlclByZWRpY2F0ZSA9IChkYXRhOiBhbnksIGZpbHRlcjogc3RyaW5nKSA9PiB7XHJcbiAgICAgIGNvbnN0IGZpbHRlcnMgPSBKU09OLnBhcnNlKGZpbHRlciB8fCAne30nKTtcclxuXHJcbiAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGZpbHRlcnMpKSB7XHJcbiAgICAgICAgaWYgKCF2YWx1ZSkgY29udGludWU7XHJcblxyXG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XHJcbiAgICAgICAgICBjYXNlICdVc2VyJzpcclxuICAgICAgICAgICAgY29uc3Qgc2VhcmNoVGVybSA9ICh2YWx1ZSBhcyBzdHJpbmcpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgICAgIGlmICghZGF0YS51c2VyTmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFRlcm0pKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAnU2l0ZSc6XHJcbiAgICAgICAgICAgIGlmIChkYXRhLnNpdGVOYW1lICE9PSB0aGlzLmdldFNpdGVOYW1lRnJvbVZhbHVlKHZhbHVlIGFzIHN0cmluZykpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlICdVc2VyIFVwZ3JhZGUgU3RhdHVzJzpcclxuICAgICAgICAgICAgaWYgKCF0aGlzLm1hdGNoZXNVcGdyYWRlU3RhdHVzKGRhdGEudXBncmFkZVN0YXR1cywgdmFsdWUgYXMgc3RyaW5nKSkge1xyXG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXBwbHlGaWx0ZXJzKCkge1xyXG4gICAgdGhpcy5kYXRhLmZpbHRlciA9IEpTT04uc3RyaW5naWZ5KHRoaXMuYWN0aXZlRmlsdGVycyk7XHJcbiAgfVxyXG5cclxuICBnZXQgZmlsdGVyZWREYXRhQ291bnQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLmRhdGE/LmZpbHRlcmVkRGF0YT8ubGVuZ3RoIHx8IDA7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFNpdGVOYW1lRnJvbVZhbHVlKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgLy8gU2luY2Ugd2UncmUgbm93IHVzaW5nIGFjdHVhbCBzaXRlIG5hbWVzLCBqdXN0IGNvbnZlcnQgYmFjayBmcm9tIHNsdWcgZm9ybWF0XHJcbiAgICByZXR1cm4gdmFsdWUuc3BsaXQoJy0nKS5tYXAod29yZCA9PlxyXG4gICAgICB3b3JkLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKVxyXG4gICAgKS5qb2luKCcgJyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG1hdGNoZXNVcGdyYWRlU3RhdHVzKHN0YXR1czogc3RyaW5nLCBmaWx0ZXJWYWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAvLyBIYW5kbGUgZGlyZWN0IHN0YXR1cyBtYXRjaGluZyBmb3IgY2xlYW5lciBpbXBsZW1lbnRhdGlvblxyXG4gICAgcmV0dXJuIHN0YXR1cy50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1xccysvZywgJy0nKSA9PT0gZmlsdGVyVmFsdWUudG9Mb3dlckNhc2UoKTtcclxuICB9XHJcblxyXG4gIGdldFN0YXR1c0NsYXNzKHN0YXR1czogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHN3aXRjaCAoc3RhdHVzLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgY2FzZSAncmVhZHknOlxyXG4gICAgICAgIHJldHVybiAncmVhZHknO1xyXG4gICAgICBjYXNlICdub3QgcmVhZHknOlxyXG4gICAgICAgIHJldHVybiAnbm90LXJlYWR5JztcclxuICAgICAgY2FzZSAncGFydGlhbCByZWFkeSc6XHJcbiAgICAgICAgcmV0dXJuICdwYXJ0aWFsLXJlYWR5JztcclxuICAgICAgY2FzZSAnY29tcGxldGVkJzpcclxuICAgICAgICByZXR1cm4gJ2NvbXBsZXRlZCc7XHJcbiAgICAgIGNhc2UgJ2ZhaWxlZCc6XHJcbiAgICAgICAgcmV0dXJuICdmYWlsZWQnO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiAnbm90LXJlYWR5JztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCByZWFkb25seSBwYWdlU2l6ZU9wdGlvbnMgPSBQQUdJTkFUSU9OX1NJWkVfT1BUSU9OUztcclxufVxyXG5cclxuaW50ZXJmYWNlIFBhZ2luYXRpb25EYXRhRHRvSW50ZXJmYWNlIHtcclxuICB0b3RhbDogbnVtYmVyO1xyXG4gIHBhZ2VTaXplT3B0aW9uczogbnVtYmVyW107XHJcbiAgcGFnZVNpemU6IG51bWJlcjtcclxuICBwYWdlSW5kZXg6IG51bWJlcjtcclxufVxyXG5jbGFzcyBQYWdpbmF0aW9uRGF0YUR0byB7XHJcbiAgdG90YWwhOiBudW1iZXI7XHJcbiAgcGFnZVNpemVPcHRpb25zITogbnVtYmVyW107XHJcbiAgcGFnZVNpemUhOiBudW1iZXI7XHJcbiAgcGFnZUluZGV4ITogbnVtYmVyO1xyXG5cclxuICBjb25zdHJ1Y3RvcihkYXRhPzogUGFnaW5hdGlvbkRhdGFEdG9JbnRlcmZhY2UpIHtcclxuICAgIHRoaXMucGFnZVNpemVPcHRpb25zID0gZGF0YT8ucGFnZVNpemVPcHRpb25zIHx8IFBBR0lOQVRJT05fREFUQV9ERUZBVUxUUy5PUFRJT05TO1xyXG4gICAgdGhpcy5wYWdlU2l6ZSA9IGRhdGE/LnBhZ2VTaXplIHx8IFBBR0lOQVRJT05fREFUQV9ERUZBVUxUUy5TSVpFO1xyXG4gICAgdGhpcy5wYWdlSW5kZXggPSBkYXRhPy5wYWdlSW5kZXggfHwgUEFHSU5BVElPTl9EQVRBX0RFRkFVTFRTLlBBR0VfSU5ERVg7XHJcbiAgICB0aGlzLnRvdGFsID0gZGF0YT8udG90YWwgfHwgMDtcclxuICB9XHJcbn1cclxuXHJcbmNvbnN0IFBBR0lOQVRJT05fREFUQV9ERUZBVUxUUyA9IHtcclxuICBPUFRJT05TOiBbMTAsIDIwLCA1MCwgMTAwXSxcclxuICBTSVpFOiAxMCxcclxuICBQQUdFX0lOREVYOiAwXHJcbn07XHJcbiIsIjxkaXYgKm5nSWY9XCJkYXRhUGVuZGluZ1wiIGNsYXNzPVwib3ZlcmxheVwiPlxyXG4gIDxtYXQtcHJvZ3Jlc3Mtc3Bpbm5lclxyXG4gICAgY2xhc3M9XCJwYWdlLXNwaW5uZXJcIlxyXG4gICAgbW9kZT1cImluZGV0ZXJtaW5hdGVcIlxyXG4gICAgW2RpYW1ldGVyXT1cIjcwXCJcclxuICAgIHN0cm9rZVdpZHRoPVwiM1wiXHJcbiAgICA+PC9tYXQtcHJvZ3Jlc3Mtc3Bpbm5lcj5cclxuPC9kaXY+XHJcblxyXG48ZGl2IGlkPVwidXNlclVwZ3JhZGVEYXRhVGFibGVcIiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ1c2VyLXVwZ3JhZGUtc3RhdHVzLXdyYXBwZXJcIj5cclxuICAgICAgICA8dGstc3VtbWFyeS1jYXJkIFtkZXNjcmlwdGlvbl09XCInVXNlcnMgYXJlIHJlYWR5IHRvIHVwZ3JhZGUnXCIgW3ZhbHVlXT1cInN0YXR1c0NvdW50c1snUmVhZHknXVwiPjwvdGstc3VtbWFyeS1jYXJkPlxyXG4gICAgICAgIDx0ay1zdW1tYXJ5LWNhcmQgW2Rlc2NyaXB0aW9uXT1cIidVc2VycyBhcmUgbm90IHJlYWR5J1wiIFt2YWx1ZV09XCJzdGF0dXNDb3VudHNbJ05vdCBSZWFkeSddXCIgW3N0YXR1c109XCInTm90IFJlYWR5J1wiPjwvdGstc3VtbWFyeS1jYXJkPlxyXG4gICAgICAgIDx0ay1zdW1tYXJ5LWNhcmQgW2Rlc2NyaXB0aW9uXT1cIidVc2VycyBmYWlsZWQgdG8gdXBncmFkZSdcIiBbdmFsdWVdPVwic3RhdHVzQ291bnRzWydGYWlsZWQnXVwiIFtzdGF0dXNdPVwiJ0ZhaWxlZCdcIj48L3RrLXN1bW1hcnktY2FyZD5cclxuICAgICAgICA8dGstc3VtbWFyeS1jYXJkIFtkZXNjcmlwdGlvbl09XCInU3VjY2Vzc2Z1bGx5IHVwZ3JhZGVkJ1wiIFt2YWx1ZV09XCJzdGF0dXNDb3VudHNbJ0NvbXBsZXRlZCddXCIgW3N0YXR1c109XCInQ29tcGxldGVkJ1wiPjwvdGstc3VtbWFyeS1jYXJkPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwidGFibGUtYWN0aW9uLXBhbmVsXCI+XHJcbiAgICAgICAgPHRrLXRhYmxlLWZpbHRlcnMgKm5nSWY9XCJmaWx0ZXJzLmxlbmd0aCA+IDBcIiBbZmlsdGVyc109XCJmaWx0ZXJzXCIgKGZpbHRlcik9XCJvbkZpbHRlcigkZXZlbnQpXCI+PC90ay10YWJsZS1maWx0ZXJzPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24td3JhcHBlclwiPlxyXG4gICAgICAgICAgICA8c3Bhbj57e2ZpbHRlcmVkRGF0YUNvdW50fX0gVXNlcnM8L3NwYW4+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgIG1hdC1idXR0b25cclxuICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInVwZ3JhZGUtYnVsay1idXR0b25cIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInNlbGVjdGlvbi5zZWxlY3RlZC5sZW5ndGggPT09IDBcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInVwZ3JhZGVTZWxlY3RlZFVzZXJzKClcIj5cclxuICAgICAgICAgICAgICAgIFVwZ3JhZGUge3sgc2VsZWN0aW9uLnNlbGVjdGVkLmxlbmd0aCA9PT0gMCA/ICcnIDogJygnICsgc2VsZWN0aW9uLnNlbGVjdGVkLmxlbmd0aCArICcpJyB9fVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPHRhYmxlIG1hdC10YWJsZSBbZGF0YVNvdXJjZV09XCJkYXRhXCIgY2xhc3M9XCJ1c2VyLXVwZ3JhZGUtdGFibGVcIj5cclxuXHJcbiAgICAgICAgPCEtLSBDaGVja2JveCBDb2x1bW4gLS0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJzZWxlY3RcIj5cclxuICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5cclxuICAgICAgICAgICAgICAgIDxtYXQtY2hlY2tib3hcclxuICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIiRldmVudCA/IG1hc3RlclRvZ2dsZSgpIDogbnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0aW9uLmhhc1ZhbHVlKCkgJiYgaXNBbGxTZWxlY3RlZCgpXCJcclxuICAgICAgICAgICAgICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCJzZWxlY3Rpb24uaGFzVmFsdWUoKSAmJiAhaXNBbGxTZWxlY3RlZCgpXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImN1c3RvbS1jaGVja2JveFwiPlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3dcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtY2hlY2tib3hcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIiRldmVudCA/IHNlbGVjdGlvbi50b2dnbGUocm93KSA6IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGlvbi5pc1NlbGVjdGVkKHJvdylcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJTVEFUVVNfRU5UUklFU1tyb3cudXBncmFkZVN0YXR1c10gIT09ICdSZWFkeScgfHwgcm93LnBlbmRpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY3VzdG9tLWNoZWNrYm94XCI+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1jaGVja2JveD5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPCEtLSBVc2VyIENvbHVtbiAtLT5cclxuICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInVzZXJcIj5cclxuICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5Vc2VyPC90aD5cclxuICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1c2VyLWluZm9cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXNlci1uYW1lXCI+e3tlbGVtZW50LnVzZXJOYW1lfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXNlci1lbWFpbFwiPnt7ZWxlbWVudC51c2VyTmFtZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPCEtLSBTaXRlIENvbHVtbiAtLT5cclxuICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInNpdGVcIj5cclxuICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5TaXRlPC90aD5cclxuICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaXRlLWluZm9cIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdGF0dXMtaW5kaWNhdG9yXCIgW25nQ2xhc3NdPVwiZ2V0U2l0ZVVwZ3JhZGVTdGF0dXNDbGFzcyhlbGVtZW50LnVwZ3JhZGVTdGF0dXMpXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7ZWxlbWVudC5zaXRlTmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDwhLS0gRGV2aWNlIENvbHVtbiAtLT5cclxuICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImRldmljZVwiPlxyXG4gICAgICAgICAgICA8dGggY2xhc3M9XCJkZXZpY2UtdGRcIiBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+RGV2aWNlPC90aD5cclxuICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIiBjbGFzcz1cIm11bHRpLWRldi1ib3hcIj5cclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZWxlbWVudC5zaG93RGV2aWNlc1wiIGNsYXNzPVwiZGV2aWNlLWxpc3Qgc2hvdy1kZXYtbGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZGV2aWNlIG9mIGVsZW1lbnQuZGV2aWNlc1dpdGhFeHRlbnNpb25zOyBsZXQgbGFzdCA9IGxhc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRldmljZS1pdGVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLm5vLWJvcmRlcl09XCJsYXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV2aWNlLWluZGljYXRvclwiIFtuZ0NsYXNzXT1cInsnZGV2aWNlLWluZGljYXRvci1yZWFkeSc6IGVsZW1lbnQuZGV2aWNlU3RhdHVzID09PSAnUkVBRFknfVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXZpY2UtbmFtZVwiPnt7IGRldmljZS5kZXZpY2VOYW1lIHx8IGRldmljZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXZpY2UtbW9kZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyBkZXZpY2UuZXh0ZW5zaW9ucz8ubGVuZ3RoID8gJ0V4dDogJyArIGRldmljZS5leHRlbnNpb25zLmpvaW4oXCIsIFwiKSA6ICdObyBFeHRlbnNpb24nIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldmljZS1pbmZvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm11bHRpcGxlLWRldi1saW5rXCIgKm5nSWY9XCJlbGVtZW50LmRldmljZXNXaXRoRXh0ZW5zaW9ucz8ubGVuZ3RoID4gMTsgZWxzZSBvbmVEZXZpY2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldmljZS1uYW1lLXdyYXBwZXIgY2xpY2thYmxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJvbk11bHRpcGxlRGV2aWNlcyhlbGVtZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlbGVhdmUpPVwib25NdWx0aXBsZURldmljZXMoZWxlbWVudClcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldmljZS1uYW1lXCI+TXVsdGlwbGUgZGV2aWNlcyA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNvbmVEZXZpY2U+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldmljZS1uYW1lLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV2aWNlLWluZGljYXRvclwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV2aWNlLW5hbWVcIj57e2VsZW1lbnQuZGV2aWNlc1dpdGhFeHRlbnNpb25zWzBdLmRldmljZU5hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV2aWNlLW1vZGVsIG9uZS1kZXYtZXh0ZW5zaW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3sgZWxlbWVudC5kZXZpY2VzV2l0aEV4dGVuc2lvbnNbMF0uZXh0ZW5zaW9ucz8ubGVuZ3RoID9cclxuICAgICAgICAgICAgICAgICAgICAgICdFeHQ6ICcgKyBlbGVtZW50LmRldmljZXNXaXRoRXh0ZW5zaW9uc1swXS5leHRlbnNpb25zPy5qb2luKFwiLCBcIikgOiAnTm8gRXh0ZW5zaW9uJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDwhLS0gRGlhbCBQbGFuIFN0YXR1cyBDb2x1bW4gLS0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJkaWFsUGxhblN0YXR1c1wiPlxyXG4gICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPkRpYWwgUGxhbiBTdGF0dXM8L3RoPlxyXG4gICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0YXR1cy1pbmZvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdGF0dXMtaW5kaWNhdG9yXCIgW25nQ2xhc3NdPVwiZ2V0U3RhdHVzQ2xhc3MoZWxlbWVudC5kaWFsUGxhblN0YXR1cylcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIFtuZ0NsYXNzXT1cInsnc3RhdHVzLXJlYWR5JzogZWxlbWVudC5kaWFsUGxhblN0YXR1cyA9PT0gJ1JFQURZJ31cIj57e1NUQVRVU19FTlRSSUVTW2VsZW1lbnQuZGlhbFBsYW5TdGF0dXNdfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPCEtLSBEZXBlbmRlbmNpZXMgQ29sdW1uIC0tPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiZGVwZW5kZW5jaWVzXCI+XHJcbiAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+RGVwZW5kZW5jaWVzPC90aD5cclxuICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiREVQRU5ERU5DSUVTX1NUQVRVU1tlbGVtZW50LmRlcGVuZGVuY2llc1N0YXR1c10gPT09ICdEZXBlbmRlbmNpZXMgZm91bmQnXCIgY2xhc3M9XCJkZXBlbmRlbmNpZXMtdGV4dFwiPnt7REVQRU5ERU5DSUVTX1NUQVRVU1tlbGVtZW50LmRlcGVuZGVuY2llc1N0YXR1c119fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiREVQRU5ERU5DSUVTX1NUQVRVU1tlbGVtZW50LmRlcGVuZGVuY2llc1N0YXR1c10gPT09ICdObyBkZXBlbmRlbmNpZXMnXCI+4oCUPC9zcGFuPlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8IS0tIFVzZXIgVXBncmFkZSBTdGF0dXMgQ29sdW1uIC0tPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwidXNlclVwZ3JhZGVTdGF0dXNcIj5cclxuICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5Vc2VyIFVwZ3JhZGUgU3RhdHVzPC90aD5cclxuICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1cGdyYWRlLXN0YXR1cy1jZWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIlNUQVRVU19FTlRSSUVTW2VsZW1lbnQudXBncmFkZVN0YXR1c10gPT09ICdSZWFkeSc7IGVsc2Ugc3RhdHVzQmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIGNsYXNzPVwidXBncmFkZS1idXR0b25cIiAoY2xpY2spPVwidXBncmFkZVVzZXIoZWxlbWVudClcIj5VcGdyYWRlPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNzdGF0dXNCbG9jaz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0YXR1cy1pbmZvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0YXR1cy1pbmRpY2F0b3JcIiBbbmdDbGFzc109XCJnZXRTdGF0dXNDbGFzcyhlbGVtZW50LnVwZ3JhZGVTdGF0dXMpXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tTVEFUVVNfRU5UUklFU1tlbGVtZW50LnVwZ3JhZGVTdGF0dXNdfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInVzZXJVcGdyYWRlTG9hZGVyXCI+XHJcbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj48L3RoPlxyXG4gICAgICAgIDx0ZCBjbGFzcz1cIm1hdC1wcm9ncmVzcy1zcGlubmVyLXRkXCIgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPlxyXG5cclxuICAgICAgICAgIDxtYXQtcHJvZ3Jlc3Mtc3Bpbm5lclxyXG4gICAgICAgICAgICAqbmdJZj1cImVsZW1lbnQucGVuZGluZ1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZmllbGQtc3Bpbm5lclwiXHJcbiAgICAgICAgICAgIFtkaWFtZXRlcl09XCIyMFwiXHJcbiAgICAgICAgICAgIG1vZGU9XCJpbmRldGVybWluYXRlXCI+XHJcbiAgICAgICAgICA8L21hdC1wcm9ncmVzcy1zcGlubmVyPlxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8dHIgbWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImRpc3BsYXllZENvbHVtbnNcIj48L3RyPlxyXG4gICAgICAgIDx0ciBtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBkaXNwbGF5ZWRDb2x1bW5zO1wiXHJcbiAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZC1yb3ddPVwic2VsZWN0aW9uLmlzU2VsZWN0ZWQocm93KVwiPjwvdHI+XHJcbiAgICA8L3RhYmxlPlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgY2xhc3M9XCJhcHAtcGFnaW5hdGlvblwiPlxyXG4gIDxtYXQtcGFnaW5hdG9yXHJcbiAgICBbbGVuZ3RoXT1cInBhZ2luYXRpb24udG90YWxcIlxyXG4gICAgW3BhZ2VTaXplXT1cInBhZ2luYXRpb24ucGFnZVNpemVcIlxyXG4gICAgW3BhZ2VTaXplT3B0aW9uc109XCJwYWdpbmF0aW9uLnBhZ2VTaXplT3B0aW9uc1wiXHJcbiAgICBbcGFnZUluZGV4XT1cInBhZ2luYXRpb24ucGFnZUluZGV4XCJcclxuICAgIChwYWdlKT1cInBhZ2VFdmVudCgkZXZlbnQpXCJcclxuICAgIHNob3dGaXJzdExhc3RCdXR0b25zPlxyXG4gIDwvbWF0LXBhZ2luYXRvcj5cclxuXHJcbiAgPCEtLTxkaXYgY2xhc3M9XCJwYWdlLWluZGV4ZXMtYm94XCI+XHJcbiAgICA8bWF0LXBhZ2luYXRvclxyXG4gICAgICBbaWRdPVwiJ2NvbW1vblBhZ2luYXRpb24nXCJcclxuICAgICAgW2hpZGVQYWdlU2l6ZV09XCJ0cnVlXCJcclxuICAgICAgW2xlbmd0aF09XCJwYWdpbmF0aW9uLnRvdGFsXCJcclxuICAgICAgW3BhZ2VJbmRleF09XCJwYWdpbmF0aW9uLnBhZ2VJbmRleFwiXHJcbiAgICAgIFtwYWdlU2l6ZV09XCJwYWdpbmF0aW9uLnBhZ2VTaXplXCJcclxuICAgICAgW3BhZ2VTaXplT3B0aW9uc109XCJwYWdpbmF0aW9uLnBhZ2VTaXplT3B0aW9uc1wiXHJcbiAgICAgIChwYWdlKT1cInBhZ2VFdmVudCgkZXZlbnQpXCI+XHJcbiAgICA8L21hdC1wYWdpbmF0b3I+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJwZXItcGFnZS1ibG9ja1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cIml0ZW1fcGVyX3BhZ2VcIj5JdGVtcyBwZXIgcGFnZTo8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJzZWxlY3QtYm94IHNlbGVjdC1wYWdlLXNpemVcIj5cclxuICAgICAgPG1hdC1zZWxlY3QgKHNlbGVjdGlvbkNoYW5nZSk9XCJjaGFuZ2VQZXJQYWdlTnVtYmVyKCRldmVudClcIiAjcGFnZVxyXG4gICAgICAgICAgICAgICAgICBbaWRdPVwiJ2NvbW1vblBhZ2luYXRpb25TZWxlY3QnXCI+XHJcbiAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBwYWdlU2l6ZU9wdGlvbnM7IGxldCBpID0gaW5kZXg7XCIgW2lkXT1cIidwYWdpbmF0aW9uU2VsZWN0T3B0XycgKyBpXCIgW3ZhbHVlXT1cIm9wdGlvblwiPnt7b3B0aW9ufX08L21hdC1vcHRpb24+XHJcbiAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgIDwvZGl2PlxyXG5cclxuICA8L2Rpdj4tLT5cclxuPC9kaXY+XHJcbiJdfQ==
379
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci11cGdyYWRlLWRhdGEtdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVraS93aWRnZXRzL2RpMm10L3dpZGdldHMvdXNlci11cGdyYWRlL3VzZXItdXBncmFkZS1kYXRhLXRhYmxlL3VzZXItdXBncmFkZS1kYXRhLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1a2kvd2lkZ2V0cy9kaTJtdC93aWRnZXRzL3VzZXItdXBncmFkZS91c2VyLXVwZ3JhZGUtZGF0YS10YWJsZS91c2VyLXVwZ3JhZGUtZGF0YS10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFNBQVMsRUFBcUIsTUFBTSxFQUFFLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDL0YsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHN0QsT0FBTyxFQUFrQixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakMsT0FBTyxFQUNMLGNBQWMsRUFJZCxrQkFBa0IsRUFDbkIsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUUsbUJBQW1CLEVBQVUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFOUYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOzs7Ozs7Ozs7O0FBU2xGLE1BQU0sT0FBTyw2QkFBNkI7SUFOMUM7UUFPVSxhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztR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LENBQUM7UUFDeEUsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLEVBQUUsS0FBSyxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDO0NBQ0Y7QUFFRCxNQUFNLHdCQUF3QixHQUFHO0lBQy9CLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUMxQixJQUFJLEVBQUUsRUFBRTtJQUNSLFVBQVUsRUFBRSxDQUFDO0NBQ2QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlbGVjdGlvbk1vZGVsIH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9jb2xsZWN0aW9uc1wiO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgT25EZXN0cm95LCBpbmplY3QsIElucHV0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IE1hdFRhYmxlRGF0YVNvdXJjZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC90YWJsZVwiO1xyXG5pbXBvcnQgeyBUYWJsZUNvbHVtbiB9IGZyb20gXCIuLi8uLi8uLi9zaGFyZWQvdHlwZXMvZGF0YS10YWJsZVwiO1xyXG5pbXBvcnQgeyBUYWJsZUZpbHRlciB9IGZyb20gXCIuLi8uLi8uLi9zaGFyZWQvdHlwZXMvdGFibGUvZmlsdGVyXCI7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG9mLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQge1xyXG4gIEZJTFRFUl9LRVlfTUFQLFxyXG4gIFVpRmlsdGVyS2V5LFxyXG4gIFVzZXIyVXBncmFkZVN0YXR1c0RUTyxcclxuICBVc2VyU2VhcmNoUGFyYW1zLFxyXG4gIFVzZXJVcGdyYWRlU2VydmljZVxyXG59IGZyb20gXCIuLi91c2VyLXVwZ3JhZGUuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBERVBFTkRFTkNJRVNfU1RBVFVTLCBTdGF0dXMsIFNUQVRVU19FTlRSSUVTIH0gZnJvbSBcIi4uLy4uLy4uL3NoYXJlZC90eXBlcy9jb25zdGFudHNcIjtcclxuaW1wb3J0IHsgVXNlclVwZ3JhZGVSZWNvcmQgfSBmcm9tIFwiLi4vdHlwZXMvdXNlci11cGdyYWRlXCI7XHJcbmltcG9ydCB7IEFQSVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vc2hhcmVkL3NlcnZpY2VzL2FwaS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFBBR0lOQVRJT05fU0laRV9PUFRJT05TIH0gZnJvbSBcIi4uLy4uLy4uL3NoYXJlZC9jb25zdGFudHMvYXBwLmNvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBQYWdlRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd0ay11c2VyLXVwZ3JhZGUtZGF0YS10YWJsZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3VzZXItdXBncmFkZS1kYXRhLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi91c2VyLXVwZ3JhZGUtZGF0YS10YWJsZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIC8vIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLlNoYWRvd0RvbVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVXNlclVwZ3JhZGVEYXRhVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgcHJpdmF0ZSB1c2VyVXBncmFkZVNlcnZpY2UgPSBpbmplY3QoVXNlclVwZ3JhZGVTZXJ2aWNlKTtcclxuICBwcml2YXRlIGFwaVNlcnZpY2UgPSBpbmplY3QoQVBJU2VydmljZSk7XHJcbiAgcmVhZG9ubHkgU1RBVFVTX0VOVFJJRVMgPSBTVEFUVVNfRU5UUklFUztcclxuICByZWFkb25seSBERVBFTkRFTkNJRVNfU1RBVFVTID0gREVQRU5ERU5DSUVTX1NUQVRVUztcclxuXHJcbiAgQElucHV0KCkgaG9zdCE6IHN0cmluZztcclxuICBASW5wdXQoKSB0b2tlbiE6IHN0cmluZztcclxuICBASW5wdXQoKSBjdXN0b21lcklkITogc3RyaW5nO1xyXG5cclxuICBjb2x1bW5zITogVGFibGVDb2x1bW5bXTtcclxuICBkYXRhUGVuZGluZyA9IGZhbHNlO1xyXG4gIGRhdGEhOiBNYXRUYWJsZURhdGFTb3VyY2U8VXNlclVwZ3JhZGVSZWNvcmQ+O1xyXG4gIGRpc3BsYXllZENvbHVtbnM6IHN0cmluZ1tdID0gWydzZWxlY3QnLCAndXNlcicsICdzaXRlJywgJ2RldmljZScsICdkaWFsUGxhblN0YXR1cycsICdkZXBlbmRlbmNpZXMnLCAndXNlclVwZ3JhZGVTdGF0dXMnLCAndXNlclVwZ3JhZGVMb2FkZXInXTtcclxuICBzZWxlY3Rpb24gPSBuZXcgU2VsZWN0aW9uTW9kZWw8VXNlclVwZ3JhZGVSZWNvcmQ+KHRydWUsIFtdKTtcclxuICBmaWx0ZXJzOiBUYWJsZUZpbHRlcltdID0gW107XHJcbiAgcGFnaW5hdGlvbiA9IG5ldyBQYWdpbmF0aW9uRGF0YUR0bygpO1xyXG4gIHVzZXJzOiBVc2VyVXBncmFkZVJlY29yZFtdID0gW107XHJcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG5cclxuICBzdGF0dXNDb3VudHM6IGFueSA9IHt9O1xyXG5cclxuICBwcml2YXRlIGFjdGl2ZUZpbHRlcnM6IFBhcnRpYWw8VXNlclNlYXJjaFBhcmFtcz4gPSB7fTtcclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRhdGFQZW5kaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuYXBpU2VydmljZS50b2tlbiA9IHRoaXMudG9rZW47XHJcbiAgICB0aGlzLmFwaVNlcnZpY2UuYXBpVXJsID0gdGhpcy5ob3N0O1xyXG5cclxuICAgIHRoaXMudXNlclVwZ3JhZGVTZXJ2aWNlLmN1c3RvbWVySWQgPSB0aGlzLmN1c3RvbWVySWQ7XHJcblxyXG4gICAgY29uc3Qgc3Vic2MxID0gdGhpcy51c2VyVXBncmFkZVNlcnZpY2UuZ2V0VXNlclVwZ3JhZGVSZWNvcmRzKHRoaXMucGFnaW5hdGlvbi5wYWdlU2l6ZSwgdGhpcy5wYWdpbmF0aW9uLnBhZ2VJbmRleCwgdGhpcy5hY3RpdmVGaWx0ZXJzKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdHM6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHJlY29yZHMgPSByZXN1bHRzLmNvbnRlbnQgYXMgVXNlclVwZ3JhZGVSZWNvcmRbXVxyXG4gICAgICAgIHJlY29yZHMuZm9yRWFjaChyZWNvcmQgPT4ge1xyXG4gICAgICAgICAgcmVjb3JkLmRldmljZXNXaXRoRXh0ZW5zaW9ucyA9IHRoaXMudXNlclVwZ3JhZGVTZXJ2aWNlLm1hcERldmljZXNXaXRoRXh0ZW5zaW9ucyhyZWNvcmQuZGV2aWNlcywgcmVjb3JkLmRldmljZURldGFpbHMpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuZGF0YSA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2UocmVjb3Jkcyk7XHJcbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uLnRvdGFsID0gcmVzdWx0cy50b3RhbEVsZW1lbnRzO1xyXG4gICAgICAgIHRoaXMuZGF0YVBlbmRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNldHVwQ3VzdG9tRmlsdGVyKCk7XHJcbiAgICAgICAgdGhpcy5pbml0aWFsaXplRmlsdGVycyhyZWNvcmRzKTtcclxuICAgICAgfSk7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHN1YnNjMSk7XHJcblxyXG4gICAgY29uc3Qgc3Vic2MyID0gdGhpcy51c2VyVXBncmFkZVNlcnZpY2UuZ2V0VXNlclVwZ3JhZGVTdGF0dXNDb3VudHMoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHN0YXR1c0NvdW50cykgPT4ge1xyXG4gICAgICAgIHRoaXMuc3RhdHVzQ291bnRzWydSZWFkeSddID0gc3RhdHVzQ291bnRzWydSRUFEWSddIHx8IDA7XHJcbiAgICAgICAgdGhpcy5zdGF0dXNDb3VudHNbJ05vdCBSZWFkeSddID0gc3RhdHVzQ291bnRzWydOT1RfUkVBRFknXSB8fCAwO1xyXG4gICAgICAgIHRoaXMuc3RhdHVzQ291bnRzWydDb21wbGV0ZWQnXSA9IHN0YXR1c0NvdW50c1snQ09NUExFVEVEJ10gfHwgMDtcclxuICAgICAgICB0aGlzLnN0YXR1c0NvdW50c1snRmFpbGVkJ10gPSBzdGF0dXNDb3VudHNbJ0ZBSUxFRCddIHx8IDA7XHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChzdWJzYzIpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICAgIHRoaXMuZGF0YVBlbmRpbmcgPSBmYWxzZTtcclxuXHJcbiAgICBpZiAodGhpcy5zdWJzY3JpcHRpb25zKSB7XHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25NdWx0aXBsZURldmljZXModXNlcjogVXNlclVwZ3JhZGVSZWNvcmQpOiB2b2lkIHtcclxuICAgIHVzZXIuc2hvd0RldmljZXMgPSAhdXNlci5zaG93RGV2aWNlcztcclxuICB9XHJcblxyXG4gIHBhZ2VFdmVudChldmVudDogUGFnZUV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLnBhZ2luYXRpb24ucGFnZUluZGV4ID0gZXZlbnQucGFnZUluZGV4O1xyXG4gICAgdGhpcy5wYWdpbmF0aW9uLnBhZ2VTaXplID0gZXZlbnQucGFnZVNpemU7XHJcbiAgICB0aGlzLmdldERhdGEoKTtcclxuICB9XHJcblxyXG4gIGdldFNpdGVVcGdyYWRlU3RhdHVzQ2xhc3Moc3RhdHVzOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgc3dpdGNoIChzdGF0dXMudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICBjYXNlICdyZWFkeSc6XHJcbiAgICAgICAgcmV0dXJuICdzdGF0dXMtcmVhZHknO1xyXG4gICAgICBjYXNlICdwYXJ0aWFsIHJlYWR5JzpcclxuICAgICAgICByZXR1cm4gJ3BhcnRpYWwtcmVhZHknO1xyXG4gICAgICBjYXNlICdjb21wbGV0ZWQnOlxyXG4gICAgICAgIHJldHVybiAnY29tcGxldGVkJztcclxuICAgICAgY2FzZSAnZmFpbGVkJzpcclxuICAgICAgICByZXR1cm4gJ2ZhaWxlZCc7XHJcbiAgICAgIGNhc2UgJ25vdCByZWFkeSc6XHJcbiAgICAgICAgcmV0dXJuICdub3QtcmVhZHknO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiAnbm90LXJlYWR5JztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoYW5nZVBlclBhZ2VOdW1iZXIocGFnZVNpemVFdmVudDogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnBhZ2luYXRpb24ucGFnZVNpemUgPSBwYWdlU2l6ZUV2ZW50LnZhbHVlO1xyXG4gICAgdGhpcy5wYWdpbmF0aW9uLnBhZ2VJbmRleCA9IDA7XHJcbiAgICB0aGlzLmdldERhdGEoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RGF0YShwYXJhbXM/OiBVc2VyU2VhcmNoUGFyYW1zKTogdm9pZCB7XHJcbiAgICB0aGlzLmRhdGFQZW5kaW5nID0gdHJ1ZTtcclxuICAgIGNvbnN0IHN1YnNjMSA9IHRoaXMudXNlclVwZ3JhZGVTZXJ2aWNlLmdldFVzZXJVcGdyYWRlUmVjb3Jkcyh0aGlzLnBhZ2luYXRpb24ucGFnZVNpemUsIHRoaXMucGFnaW5hdGlvbi5wYWdlSW5kZXgsIHBhcmFtcyB8fCB7fSlcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgICBjb25zdCByZWNvcmRzID0gcmVzdWx0LmNvbnRlbnQgYXMgVXNlclVwZ3JhZGVSZWNvcmRbXVxyXG4gICAgICAgIHJlY29yZHMuZm9yRWFjaChyZWNvcmQgPT4ge1xyXG4gICAgICAgICAgcmVjb3JkLmRldmljZXNXaXRoRXh0ZW5zaW9ucyA9IHRoaXMudXNlclVwZ3JhZGVTZXJ2aWNlLm1hcERldmljZXNXaXRoRXh0ZW5zaW9ucyhyZWNvcmQuZGV2aWNlcywgcmVjb3JkLmRldmljZURldGFpbHMpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmRhdGEgPSBuZXcgTWF0VGFibGVEYXRhU291cmNlKHJlY29yZHMpO1xyXG4gICAgICAgIHRoaXMucGFnaW5hdGlvbi50b3RhbCA9IHJlc3VsdC50b3RhbEVsZW1lbnRzO1xyXG4gICAgICAgIHRoaXMuZGF0YVBlbmRpbmcgPSBmYWxzZTtcclxuICAgICAgfSk7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHN1YnNjMSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRpYWxpemVGaWx0ZXJzKHJlY29yZHM6IFVzZXJVcGdyYWRlUmVjb3JkW10pOiB2b2lkIHtcclxuICAgIGlmICghcmVjb3Jkcz8ubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuZmlsdGVycyA9IFtdO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8gRXh0cmFjdCB1bmlxdWUgc2l0ZXMgKHNraXAgZW1wdHkvbnVsbClcclxuICAgIGNvbnN0IHVuaXF1ZVNpdGVzID0gW1xyXG4gICAgICAuLi5uZXcgU2V0KFxyXG4gICAgICAgIHJlY29yZHNcclxuICAgICAgICAgIC5tYXAocmVjb3JkID0+IHJlY29yZC5zaXRlTmFtZT8udHJpbSgpKVxyXG4gICAgICAgICAgLmZpbHRlcigoc2l0ZSk6IHNpdGUgaXMgc3RyaW5nID0+ICEhc2l0ZSlcclxuICAgICAgKVxyXG4gICAgXTtcclxuXHJcbiAgICBjb25zdCBzaXRlT3B0aW9ucyA9IHVuaXF1ZVNpdGVzLm1hcChzaXRlID0+ICh7XHJcbiAgICAgIGxhYmVsOiBzaXRlLFxyXG4gICAgICB2YWx1ZTogc2l0ZS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1xccysvZywgJy0nKVxyXG4gICAgfSkpO1xyXG5cclxuICAgIC8vIEV4dHJhY3QgdW5pcXVlIHN0YXR1c2VzIChza2lwIGVtcHR5L251bGwpXHJcbiAgICBjb25zdCB1bmlxdWVTdGF0dXNlcyA9IFtcclxuICAgICAgLi4ubmV3IFNldChcclxuICAgICAgICByZWNvcmRzXHJcbiAgICAgICAgICAubWFwKHJlY29yZCA9PiByZWNvcmQudXBncmFkZVN0YXR1cz8udHJpbSgpKVxyXG4gICAgICAgICAgLmZpbHRlcigoc3RhdHVzKTogc3RhdHVzIGlzIHN0cmluZyA9PiAhIXN0YXR1cylcclxuICAgICAgKVxyXG4gICAgXTtcclxuXHJcbiAgICBjb25zdCBzdGF0dXNPcHRpb25zID0gdW5pcXVlU3RhdHVzZXMubWFwKHN0YXR1cyA9PiAoe1xyXG4gICAgICBsYWJlbDogU1RBVFVTX0VOVFJJRVNbc3RhdHVzXSxcclxuICAgICAgdmFsdWU6IHN0YXR1cy50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1xccysvZywgJy0nKVxyXG4gICAgfSkpO1xyXG5cclxuICAgIHRoaXMuZmlsdGVycyA9IFtcclxuICAgICAge1xyXG4gICAgICAgIGlkOiAndXNlck5hbWUnLFxyXG4gICAgICAgIHR5cGU6ICdzZWFyY2gnLFxyXG4gICAgICAgIGNvbHVtbktleTogJ1VzZXInLFxyXG4gICAgICAgIHBsYWNlaG9sZGVyOiAnU2VhcmNoIHVzZXJzLi4uJyxcclxuICAgICAgICBvcHRpb25zOiBbXVxyXG4gICAgICB9XHJcbiAgICBdO1xyXG5cclxuICAgIGlmIChzaXRlT3B0aW9ucy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5maWx0ZXJzLnB1c2goe1xyXG4gICAgICAgIGlkOiAnc2l0ZXMnLFxyXG4gICAgICAgIHR5cGU6ICdzZWxlY3QnLFxyXG4gICAgICAgIGNvbHVtbktleTogJ1NpdGUnLFxyXG4gICAgICAgIHBsYWNlaG9sZGVyOiAnU2l0ZXMnLFxyXG4gICAgICAgIG9wdGlvbnM6IHNpdGVPcHRpb25zXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzdGF0dXNPcHRpb25zLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmZpbHRlcnMucHVzaCh7XHJcbiAgICAgICAgaWQ6ICdzdGF0dXMnLFxyXG4gICAgICAgIHR5cGU6ICdzZWxlY3QnLFxyXG4gICAgICAgIGNvbHVtbktleTogJ1VzZXIgVXBncmFkZSBTdGF0dXMnLFxyXG4gICAgICAgIHBsYWNlaG9sZGVyOiAnVXBncmFkZSBTdGF0dXMnLFxyXG4gICAgICAgIG9wdGlvbnM6IHN0YXR1c09wdGlvbnNcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiogV2hldGhlciB0aGUgbnVtYmVyIG9mIHNlbGVjdGVkIGVsZW1lbnRzIG1hdGNoZXMgdGhlIHRvdGFsIG51bWJlciBvZiByb3dzLiAqL1xyXG4gIGlzQWxsU2VsZWN0ZWQoKSB7XHJcbiAgICBjb25zdCBudW1TZWxlY3RlZCA9IHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkLmxlbmd0aDtcclxuICAgIGNvbnN0IG51bVJvd3MgPSB0aGlzLmRhdGE/LmRhdGEubGVuZ3RoID8/IDA7XHJcbiAgICByZXR1cm4gbnVtU2VsZWN0ZWQgPT09IG51bVJvd3M7XHJcbiAgfVxyXG5cclxuICAvKiogU2VsZWN0cyBhbGwgcm93cyBpZiB0aGV5IGFyZSBub3QgYWxsIHNlbGVjdGVkOyBvdGhlcndpc2UgY2xlYXIgc2VsZWN0aW9uLiAqL1xyXG4gIG1hc3RlclRvZ2dsZSgpIHtcclxuICAgIC8vIHRoaXMuaXNBbGxTZWxlY3RlZCgpID9cclxuICAgIC8vICAgdGhpcy5zZWxlY3Rpb24uY2xlYXIoKSA6XHJcbiAgICAvLyAgIHRoaXMuZGF0YT8uZGF0YS5mb3JFYWNoKHJvdyA9PiB0aGlzLnNlbGVjdGlvbi5zZWxlY3Qocm93KSk7XHJcbiAgICBpZiAodGhpcy5pc0FsbFNlbGVjdGVkKCkpIHtcclxuICAgICAgdGhpcy5zZWxlY3Rpb24uY2xlYXIoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZGF0YT8uZGF0YS5mb3JFYWNoKHJvdyA9PiB7XHJcbiAgICAgICAgaWYgKHJvdy51cGdyYWRlU3RhdHVzID09PSAnUkVBRFknKSB7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGlvbi5zZWxlY3Qocm93KVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB1cGdyYWRlVXNlcih1c2VyOiBVc2VyVXBncmFkZVJlY29yZCk6IHZvaWQge1xyXG4gICAgaWYgKHVzZXI/LnVwZ3JhZGVTdGF0dXMgPT09ICdSRUFEWScpXHJcbiAgICAgIHVzZXIucGVuZGluZyA9IHRydWU7XHJcblxyXG4gICAgdGhpcy51c2VyVXBncmFkZVNlcnZpY2UuY29sbGVjdFVzZXJzKFt1c2VyXSlcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLnVzZXJVcGdyYWRlU2VydmljZS5idWxrVXBncmFkZShbdXNlcl0pXHJcbiAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVVc2Vyc1N0YXR1c0FmdGVyVXBncmFkZShbdXNlcl0pO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVVc2Vyc1N0YXR1c0FmdGVyVXBncmFkZSh1c2VyczogVXNlclVwZ3JhZGVSZWNvcmRbXSk6IHZvaWQge1xyXG4gICAgdGhpcy51c2VyVXBncmFkZVNlcnZpY2UuZ2V0VXNlcnNVcGdyYWRlU3RhdHVzZXModXNlcnMpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgodXBncmFkZWRTdGF0dXNlczogVXNlcjJVcGdyYWRlU3RhdHVzRFRPW10pID0+IHtcclxuICAgICAgICB1cGdyYWRlZFN0YXR1c2VzLmZvckVhY2goc3RhdHVzSXRlbSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBpbmQgPSB0aGlzLmdldFVzZXJJbmRleChzdGF0dXNJdGVtLnVzZXJJZCk7XHJcbiAgICAgICAgICBpZiAoaW5kID4gLTEpIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRhLmRhdGFbaW5kXS51cGdyYWRlU3RhdHVzID0gc3RhdHVzSXRlbS51cGdyYWRlU3RhdHVzO1xyXG4gICAgICAgICAgICB0aGlzLmRhdGEuZGF0YVtpbmRdLnBlbmRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmRhdGFQZW5kaW5nID0gZmFsc2U7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0VXNlckluZGV4KHVzZXJJZDogc3RyaW5nKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLmRhdGEuZGF0YS5maW5kSW5kZXgoKHJlY29yZDogVXNlclVwZ3JhZGVSZWNvcmQpID0+IHJlY29yZC51c2VySWQgPT09IHVzZXJJZCk7XHJcbiAgfVxyXG5cclxuICB1cGdyYWRlU2VsZWN0ZWRVc2VycygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZCAmJiB0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZC5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5kYXRhUGVuZGluZyA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLnVzZXJVcGdyYWRlU2VydmljZS5jb2xsZWN0VXNlcnModGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWQpXHJcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy51c2VyVXBncmFkZVNlcnZpY2UuYnVsa1VwZ3JhZGUodGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWQpXHJcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy51cGRhdGVVc2Vyc1N0YXR1c0FmdGVyVXBncmFkZSh0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZCk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgfVxyXG4gICAgdGhpcy51c2VyVXBncmFkZVNlcnZpY2UuYnVsa1VwZ3JhZGUodGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRGaWx0ZXJWYWx1ZShpbnB1dDogYW55KTogYW55IHtcclxuICAgIGlmIChpbnB1dCAmJiBpbnB1dC52YWx1ZSAhPT0gdW5kZWZpbmVkKSByZXR1cm4gaW5wdXQudmFsdWU7ICAgICAgLy8gZS5nLiB7dmFsdWUsbGFiZWx9XHJcbiAgICBpZiAoaW5wdXQgJiYgaW5wdXQudGFyZ2V0KSByZXR1cm4gaW5wdXQudGFyZ2V0LnZhbHVlOyAgICAgICAgICAgIC8vIERPTSBldmVudFxyXG4gICAgcmV0dXJuIGlucHV0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwbGFpbiB2YWx1ZVxyXG4gIH1cclxuICBwcml2YXRlIGlzRW1wdHlGaWx0ZXIodjogYW55KTogYm9vbGVhbiB7XHJcbiAgICBpZiAodiA9PT0gdW5kZWZpbmVkIHx8IHYgPT09IG51bGwpIHJldHVybiB0cnVlO1xyXG4gICAgaWYgKHR5cGVvZiB2ID09PSAnc3RyaW5nJykge1xyXG4gICAgICBjb25zdCBzID0gdi50cmltKCkudG9Mb3dlckNhc2UoKTtcclxuICAgICAgcmV0dXJuIHMgPT09ICcnIHx8IHMgPT09ICdhbGwnO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgb25GaWx0ZXIoZmlsdGVyRXZlbnQ6IHsga2V5OiBVaUZpbHRlcktleTsgdmFsdWU6IGFueSB9KSB7XHJcbiAgICBjb25zdCByYXdLZXkgPSBmaWx0ZXJFdmVudC5rZXk7XHJcbiAgICBjb25zdCBzZXJ2ZXJLZXkgPSBGSUxURVJfS0VZX01BUFtyYXdLZXldO1xyXG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldEZpbHRlclZhbHVlKGZpbHRlckV2ZW50LnZhbHVlKTtcclxuXHJcbiAgICBjb25zdCBuZXh0OiBQYXJ0aWFsPFVzZXJTZWFyY2hQYXJhbXM+ID0geyAuLi50aGlzLmFjdGl2ZUZpbHRlcnMgfTtcclxuXHJcbiAgICBpZiAodGhpcy5pc0VtcHR5RmlsdGVyKHZhbHVlKSkge1xyXG4gICAgICBkZWxldGUgbmV4dFtzZXJ2ZXJLZXldO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gbm9ybWFsaXplIHRvIHN0cmluZyBmb3IgQVBJICh0cmltKVxyXG4gICAgICBuZXh0W3NlcnZlcktleV0gPSB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gdmFsdWUudHJpbSgpIDogU3RyaW5nKHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmFjdGl2ZUZpbHRlcnMgPSBuZXh0O1xyXG4gICAgdGhpcy5wYWdpbmF0aW9uLnBhZ2VJbmRleCA9IDA7XHJcblxyXG4gICAgLy8gcXVpY2sgZml4IGZvciBkZW1vXHJcbiAgICBpZiAodGhpcy5hY3RpdmVGaWx0ZXJzWyd1cGdyYWRlU3RhdHVzJ10pIHtcclxuICAgICAgdGhpcy5hY3RpdmVGaWx0ZXJzWyd1cGdyYWRlU3RhdHVzJ10gPSB0aGlzLmFjdGl2ZUZpbHRlcnNbJ3VwZ3JhZGVTdGF0dXMnXT8udG9VcHBlckNhc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmdldERhdGEodGhpcy5hY3RpdmVGaWx0ZXJzIGFzIFVzZXJTZWFyY2hQYXJhbXMpO1xyXG4gIH1cclxuXHJcbiAgLypvbkZpbHRlcihmaWx0ZXJFdmVudDogeyBrZXk6IHN0cmluZywgdmFsdWU6IGFueSB9KSB7XHJcbiAgICBjb25zdCB7a2V5LCB2YWx1ZX0gPSBmaWx0ZXJFdmVudDtcclxuXHJcbiAgICBsZXQgZmlsdGVyVmFsdWU6IGFueTtcclxuICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS52YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGZpbHRlclZhbHVlID0gdmFsdWUudmFsdWU7XHJcbiAgICB9IGVsc2UgaWYgKHZhbHVlICYmIHZhbHVlLnRhcmdldCkge1xyXG4gICAgICBmaWx0ZXJWYWx1ZSA9IHZhbHVlLnRhcmdldC52YWx1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGZpbHRlclZhbHVlID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSGFuZGxlIFwiQWxsXCIgb3B0aW9uIG9yIGVtcHR5IHZhbHVlcyAtIHJlbW92ZSB0aGUgZmlsdGVyXHJcbiAgICBpZiAoZmlsdGVyVmFsdWUgPT09ICdhbGwnIHx8ICFmaWx0ZXJWYWx1ZSB8fCBmaWx0ZXJWYWx1ZSA9PT0gJycpIHtcclxuICAgICAgZGVsZXRlIHRoaXMuYWN0aXZlRmlsdGVyc1trZXldO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5hY3RpdmVGaWx0ZXJzW2tleV0gPSBmaWx0ZXJWYWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmFwcGx5RmlsdGVycygpO1xyXG4gIH0qL1xyXG5cclxuICBwcml2YXRlIHNldHVwQ3VzdG9tRmlsdGVyKCkge1xyXG4gICAgdGhpcy5kYXRhLmZpbHRlclByZWRpY2F0ZSA9IChkYXRhOiBhbnksIGZpbHRlcjogc3RyaW5nKSA9PiB7XHJcbiAgICAgIGNvbnN0IGZpbHRlcnMgPSBKU09OLnBhcnNlKGZpbHRlciB8fCAne30nKTtcclxuXHJcbiAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGZpbHRlcnMpKSB7XHJcbiAgICAgICAgaWYgKCF2YWx1ZSkgY29udGludWU7XHJcblxyXG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XHJcbiAgICAgICAgICBjYXNlICdVc2VyJzpcclxuICAgICAgICAgICAgY29uc3Qgc2VhcmNoVGVybSA9ICh2YWx1ZSBhcyBzdHJpbmcpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgICAgIGlmICghZGF0YS51c2VyTmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFRlcm0pKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAnU2l0ZSc6XHJcbiAgICAgICAgICAgIGlmIChkYXRhLnNpdGVOYW1lICE9PSB0aGlzLmdldFNpdGVOYW1lRnJvbVZhbHVlKHZhbHVlIGFzIHN0cmluZykpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlICdVc2VyIFVwZ3JhZGUgU3RhdHVzJzpcclxuICAgICAgICAgICAgaWYgKCF0aGlzLm1hdGNoZXNVcGdyYWRlU3RhdHVzKGRhdGEudXBncmFkZVN0YXR1cywgdmFsdWUgYXMgc3RyaW5nKSkge1xyXG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXBwbHlGaWx0ZXJzKCkge1xyXG4gICAgdGhpcy5kYXRhLmZpbHRlciA9IEpTT04uc3RyaW5naWZ5KHRoaXMuYWN0aXZlRmlsdGVycyk7XHJcbiAgfVxyXG5cclxuICBnZXQgZmlsdGVyZWREYXRhQ291bnQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLmRhdGE/LmZpbHRlcmVkRGF0YT8ubGVuZ3RoIHx8IDA7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFNpdGVOYW1lRnJvbVZhbHVlKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgLy8gU2luY2Ugd2UncmUgbm93IHVzaW5nIGFjdHVhbCBzaXRlIG5hbWVzLCBqdXN0IGNvbnZlcnQgYmFjayBmcm9tIHNsdWcgZm9ybWF0XHJcbiAgICByZXR1cm4gdmFsdWUuc3BsaXQoJy0nKS5tYXAod29yZCA9PlxyXG4gICAgICB3b3JkLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKVxyXG4gICAgKS5qb2luKCcgJyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG1hdGNoZXNVcGdyYWRlU3RhdHVzKHN0YXR1czogc3RyaW5nLCBmaWx0ZXJWYWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAvLyBIYW5kbGUgZGlyZWN0IHN0YXR1cyBtYXRjaGluZyBmb3IgY2xlYW5lciBpbXBsZW1lbnRhdGlvblxyXG4gICAgcmV0dXJuIHN0YXR1cy50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1xccysvZywgJy0nKSA9PT0gZmlsdGVyVmFsdWUudG9Mb3dlckNhc2UoKTtcclxuICB9XHJcblxyXG4gIGdldFN0YXR1c0NsYXNzKHN0YXR1czogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHN3aXRjaCAoc3RhdHVzLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgY2FzZSAncmVhZHknOlxyXG4gICAgICAgIHJldHVybiAncmVhZHknO1xyXG4gICAgICBjYXNlICdub3QgcmVhZHknOlxyXG4gICAgICAgIHJldHVybiAnbm90LXJlYWR5JztcclxuICAgICAgY2FzZSAncGFydGlhbCByZWFkeSc6XHJcbiAgICAgICAgcmV0dXJuICdwYXJ0aWFsLXJlYWR5JztcclxuICAgICAgY2FzZSAnY29tcGxldGVkJzpcclxuICAgICAgICByZXR1cm4gJ2NvbXBsZXRlZCc7XHJcbiAgICAgIGNhc2UgJ2ZhaWxlZCc6XHJcbiAgICAgICAgcmV0dXJuICdmYWlsZWQnO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiAnbm90LXJlYWR5JztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCByZWFkb25seSBwYWdlU2l6ZU9wdGlvbnMgPSBQQUdJTkFUSU9OX1NJWkVfT1BUSU9OUztcclxufVxyXG5cclxuaW50ZXJmYWNlIFBhZ2luYXRpb25EYXRhRHRvSW50ZXJmYWNlIHtcclxuICB0b3RhbDogbnVtYmVyO1xyXG4gIHBhZ2VTaXplT3B0aW9uczogbnVtYmVyW107XHJcbiAgcGFnZVNpemU6IG51bWJlcjtcclxuICBwYWdlSW5kZXg6IG51bWJlcjtcclxufVxyXG5jbGFzcyBQYWdpbmF0aW9uRGF0YUR0byB7XHJcbiAgdG90YWwhOiBudW1iZXI7XHJcbiAgcGFnZVNpemVPcHRpb25zITogbnVtYmVyW107XHJcbiAgcGFnZVNpemUhOiBudW1iZXI7XHJcbiAgcGFnZUluZGV4ITogbnVtYmVyO1xyXG5cclxuICBjb25zdHJ1Y3RvcihkYXRhPzogUGFnaW5hdGlvbkRhdGFEdG9JbnRlcmZhY2UpIHtcclxuICAgIHRoaXMucGFnZVNpemVPcHRpb25zID0gZGF0YT8ucGFnZVNpemVPcHRpb25zIHx8IFBBR0lOQVRJT05fREFUQV9ERUZBVUxUUy5PUFRJT05TO1xyXG4gICAgdGhpcy5wYWdlU2l6ZSA9IGRhdGE/LnBhZ2VTaXplIHx8IFBBR0lOQVRJT05fREFUQV9ERUZBVUxUUy5TSVpFO1xyXG4gICAgdGhpcy5wYWdlSW5kZXggPSBkYXRhPy5wYWdlSW5kZXggfHwgUEFHSU5BVElPTl9EQVRBX0RFRkFVTFRTLlBBR0VfSU5ERVg7XHJcbiAgICB0aGlzLnRvdGFsID0gZGF0YT8udG90YWwgfHwgMDtcclxuICB9XHJcbn1cclxuXHJcbmNvbnN0IFBBR0lOQVRJT05fREFUQV9ERUZBVUxUUyA9IHtcclxuICBPUFRJT05TOiBbMTAsIDIwLCA1MCwgMTAwXSxcclxuICBTSVpFOiAxMCxcclxuICBQQUdFX0lOREVYOiAwXHJcbn07XHJcbiIsIjxkaXYgKm5nSWY9XCJkYXRhUGVuZGluZ1wiIGNsYXNzPVwib3ZlcmxheVwiPlxyXG4gIDxtYXQtcHJvZ3Jlc3Mtc3Bpbm5lclxyXG4gICAgY2xhc3M9XCJwYWdlLXNwaW5uZXJcIlxyXG4gICAgbW9kZT1cImluZGV0ZXJtaW5hdGVcIlxyXG4gICAgW2RpYW1ldGVyXT1cIjcwXCJcclxuICAgIHN0cm9rZVdpZHRoPVwiM1wiXHJcbiAgICA+PC9tYXQtcHJvZ3Jlc3Mtc3Bpbm5lcj5cclxuPC9kaXY+XHJcblxyXG48ZGl2IGlkPVwidXNlclVwZ3JhZGVEYXRhVGFibGVcIiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ1c2VyLXVwZ3JhZGUtc3RhdHVzLXdyYXBwZXJcIj5cclxuICAgICAgICA8dGstc3VtbWFyeS1jYXJkIFtkZXNjcmlwdGlvbl09XCInVXNlcnMgYXJlIHJlYWR5IHRvIHVwZ3JhZGUnXCIgW3ZhbHVlXT1cInN0YXR1c0NvdW50c1snUmVhZHknXVwiPjwvdGstc3VtbWFyeS1jYXJkPlxyXG4gICAgICAgIDx0ay1zdW1tYXJ5LWNhcmQgW2Rlc2NyaXB0aW9uXT1cIidVc2VycyBhcmUgbm90IHJlYWR5J1wiIFt2YWx1ZV09XCJzdGF0dXNDb3VudHNbJ05vdCBSZWFkeSddXCIgW3N0YXR1c109XCInTm90IFJlYWR5J1wiPjwvdGstc3VtbWFyeS1jYXJkPlxyXG4gICAgICAgIDx0ay1zdW1tYXJ5LWNhcmQgW2Rlc2NyaXB0aW9uXT1cIidVc2VycyBmYWlsZWQgdG8gdXBncmFkZSdcIiBbdmFsdWVdPVwic3RhdHVzQ291bnRzWydGYWlsZWQnXVwiIFtzdGF0dXNdPVwiJ0ZhaWxlZCdcIj48L3RrLXN1bW1hcnktY2FyZD5cclxuICAgICAgICA8dGstc3VtbWFyeS1jYXJkIFtkZXNjcmlwdGlvbl09XCInU3VjY2Vzc2Z1bGx5IHVwZ3JhZGVkJ1wiIFt2YWx1ZV09XCJzdGF0dXNDb3VudHNbJ0NvbXBsZXRlZCddXCIgW3N0YXR1c109XCInQ29tcGxldGVkJ1wiPjwvdGstc3VtbWFyeS1jYXJkPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwidGFibGUtYWN0aW9uLXBhbmVsXCI+XHJcbiAgICAgICAgPHRrLXRhYmxlLWZpbHRlcnMgKm5nSWY9XCJmaWx0ZXJzLmxlbmd0aCA+IDBcIiBbZmlsdGVyc109XCJmaWx0ZXJzXCIgKGZpbHRlcik9XCJvbkZpbHRlcigkZXZlbnQpXCI+PC90ay10YWJsZS1maWx0ZXJzPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24td3JhcHBlclwiPlxyXG4gICAgICAgICAgICA8c3Bhbj57e2ZpbHRlcmVkRGF0YUNvdW50fX0gVXNlcnM8L3NwYW4+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgIG1hdC1idXR0b25cclxuICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInVwZ3JhZGUtYnVsay1idXR0b25cIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInNlbGVjdGlvbi5zZWxlY3RlZC5sZW5ndGggPT09IDBcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInVwZ3JhZGVTZWxlY3RlZFVzZXJzKClcIj5cclxuICAgICAgICAgICAgICAgIFVwZ3JhZGUge3sgc2VsZWN0aW9uLnNlbGVjdGVkLmxlbmd0aCA9PT0gMCA/ICcnIDogJygnICsgc2VsZWN0aW9uLnNlbGVjdGVkLmxlbmd0aCArICcpJyB9fVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPHRhYmxlIG1hdC10YWJsZSBbZGF0YVNvdXJjZV09XCJkYXRhXCIgY2xhc3M9XCJ1c2VyLXVwZ3JhZGUtdGFibGVcIj5cclxuXHJcbiAgICAgICAgPCEtLSBDaGVja2JveCBDb2x1bW4gLS0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJzZWxlY3RcIj5cclxuICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5cclxuICAgICAgICAgICAgICAgIDxtYXQtY2hlY2tib3hcclxuICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIiRldmVudCA/IG1hc3RlclRvZ2dsZSgpIDogbnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0aW9uLmhhc1ZhbHVlKCkgJiYgaXNBbGxTZWxlY3RlZCgpXCJcclxuICAgICAgICAgICAgICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCJzZWxlY3Rpb24uaGFzVmFsdWUoKSAmJiAhaXNBbGxTZWxlY3RlZCgpXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImN1c3RvbS1jaGVja2JveFwiPlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3dcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtY2hlY2tib3hcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIiRldmVudCA/IHNlbGVjdGlvbi50b2dnbGUocm93KSA6IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGlvbi5pc1NlbGVjdGVkKHJvdylcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJTVEFUVVNfRU5UUklFU1tyb3cudXBncmFkZVN0YXR1c10gIT09ICdSZWFkeScgfHwgcm93LnBlbmRpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY3VzdG9tLWNoZWNrYm94XCI+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1jaGVja2JveD5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPCEtLSBVc2VyIENvbHVtbiAtLT5cclxuICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInVzZXJcIj5cclxuICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5Vc2VyPC90aD5cclxuICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1c2VyLWluZm9cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXNlci1uYW1lXCI+e3tlbGVtZW50LnVzZXJOYW1lfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXNlci1lbWFpbFwiPnt7ZWxlbWVudC51c2VyTmFtZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPCEtLSBTaXRlIENvbHVtbiAtLT5cclxuICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInNpdGVcIj5cclxuICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5TaXRlPC90aD5cclxuICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaXRlLWluZm9cIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdGF0dXMtaW5kaWNhdG9yXCIgW25nQ2xhc3NdPVwiZ2V0U2l0ZVVwZ3JhZGVTdGF0dXNDbGFzcyhlbGVtZW50LnVwZ3JhZGVTdGF0dXMpXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7ZWxlbWVudC5zaXRlTmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDwhLS0gRGV2aWNlIENvbHVtbiAtLT5cclxuICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImRldmljZVwiPlxyXG4gICAgICAgICAgICA8dGggY2xhc3M9XCJkZXZpY2UtdGRcIiBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+RGV2aWNlPC90aD5cclxuICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIiBjbGFzcz1cIm11bHRpLWRldi1ib3hcIj5cclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZWxlbWVudC5zaG93RGV2aWNlc1wiIGNsYXNzPVwiZGV2aWNlLWxpc3Qgc2hvdy1kZXYtbGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZGV2aWNlIG9mIGVsZW1lbnQuZGV2aWNlc1dpdGhFeHRlbnNpb25zOyBsZXQgbGFzdCA9IGxhc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRldmljZS1pdGVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLm5vLWJvcmRlcl09XCJsYXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV2aWNlLWluZGljYXRvclwiIFtuZ0NsYXNzXT1cInsnZGV2aWNlLWluZGljYXRvci1yZWFkeSc6IGVsZW1lbnQuZGV2aWNlU3RhdHVzID09PSAnUkVBRFknfVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXZpY2UtbmFtZVwiPnt7IGRldmljZS5kZXZpY2VOYW1lIHx8IGRldmljZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXZpY2UtbW9kZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyBkZXZpY2UuZXh0ZW5zaW9ucz8ubGVuZ3RoID8gJ0V4dDogJyArIGRldmljZS5leHRlbnNpb25zLmpvaW4oXCIsIFwiKSA6ICdObyBFeHRlbnNpb24nIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldmljZS1pbmZvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm11bHRpcGxlLWRldi1saW5rXCIgKm5nSWY9XCJlbGVtZW50LmRldmljZXNXaXRoRXh0ZW5zaW9ucz8ubGVuZ3RoID4gMTsgZWxzZSBvbmVEZXZpY2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldmljZS1uYW1lLXdyYXBwZXIgY2xpY2thYmxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJvbk11bHRpcGxlRGV2aWNlcyhlbGVtZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlbGVhdmUpPVwib25NdWx0aXBsZURldmljZXMoZWxlbWVudClcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldmljZS1uYW1lXCI+TXVsdGlwbGUgZGV2aWNlcyA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNvbmVEZXZpY2U+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldmljZS1uYW1lLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV2aWNlLWluZGljYXRvclwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV2aWNlLW5hbWVcIj57e2VsZW1lbnQuZGV2aWNlc1dpdGhFeHRlbnNpb25zWzBdLmRldmljZU5hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV2aWNlLW1vZGVsIG9uZS1kZXYtZXh0ZW5zaW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3sgZWxlbWVudC5kZXZpY2VzV2l0aEV4dGVuc2lvbnNbMF0uZXh0ZW5zaW9ucz8ubGVuZ3RoID9cclxuICAgICAgICAgICAgICAgICAgICAgICdFeHQ6ICcgKyBlbGVtZW50LmRldmljZXNXaXRoRXh0ZW5zaW9uc1swXS5leHRlbnNpb25zPy5qb2luKFwiLCBcIikgOiAnTm8gRXh0ZW5zaW9uJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDwhLS0gRGlhbCBQbGFuIFN0YXR1cyBDb2x1bW4gLS0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJkaWFsUGxhblN0YXR1c1wiPlxyXG4gICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPkRpYWwgUGxhbiBTdGF0dXM8L3RoPlxyXG4gICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0YXR1cy1pbmZvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdGF0dXMtaW5kaWNhdG9yXCIgW25nQ2xhc3NdPVwiZ2V0U3RhdHVzQ2xhc3MoZWxlbWVudC5kaWFsUGxhblN0YXR1cylcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIFtuZ0NsYXNzXT1cInsnc3RhdHVzLXJlYWR5JzogZWxlbWVudC5kaWFsUGxhblN0YXR1cyA9PT0gJ1JFQURZJ31cIj57e1NUQVRVU19FTlRSSUVTW2VsZW1lbnQuZGlhbFBsYW5TdGF0dXNdfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPCEtLSBEZXBlbmRlbmNpZXMgQ29sdW1uIC0tPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiZGVwZW5kZW5jaWVzXCI+XHJcbiAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+RGVwZW5kZW5jaWVzPC90aD5cclxuICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiREVQRU5ERU5DSUVTX1NUQVRVU1tlbGVtZW50LmRlcGVuZGVuY2llc1N0YXR1c10gPT09ICdEZXBlbmRlbmNpZXMgZm91bmQnXCIgY2xhc3M9XCJkZXBlbmRlbmNpZXMtdGV4dFwiPnt7REVQRU5ERU5DSUVTX1NUQVRVU1tlbGVtZW50LmRlcGVuZGVuY2llc1N0YXR1c119fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiREVQRU5ERU5DSUVTX1NUQVRVU1tlbGVtZW50LmRlcGVuZGVuY2llc1N0YXR1c10gPT09ICdObyBkZXBlbmRlbmNpZXMnXCI+4oCUPC9zcGFuPlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8IS0tIFVzZXIgVXBncmFkZSBTdGF0dXMgQ29sdW1uIC0tPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwidXNlclVwZ3JhZGVTdGF0dXNcIj5cclxuICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5Vc2VyIFVwZ3JhZGUgU3RhdHVzPC90aD5cclxuICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1cGdyYWRlLXN0YXR1cy1jZWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIlNUQVRVU19FTlRSSUVTW2VsZW1lbnQudXBncmFkZVN0YXR1c10gPT09ICdSZWFkeSc7IGVsc2Ugc3RhdHVzQmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIGNsYXNzPVwidXBncmFkZS1idXR0b25cIiAoY2xpY2spPVwidXBncmFkZVVzZXIoZWxlbWVudClcIj5VcGdyYWRlPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNzdGF0dXNCbG9jaz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0YXR1cy1pbmZvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0YXR1cy1pbmRpY2F0b3JcIiBbbmdDbGFzc109XCJnZXRTdGF0dXNDbGFzcyhlbGVtZW50LnVwZ3JhZGVTdGF0dXMpXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tTVEFUVVNfRU5UUklFU1tlbGVtZW50LnVwZ3JhZGVTdGF0dXNdfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInVzZXJVcGdyYWRlTG9hZGVyXCI+XHJcbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj48L3RoPlxyXG4gICAgICAgIDx0ZCBjbGFzcz1cIm1hdC1wcm9ncmVzcy1zcGlubmVyLXRkXCIgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPlxyXG5cclxuICAgICAgICAgIDxtYXQtcHJvZ3Jlc3Mtc3Bpbm5lclxyXG4gICAgICAgICAgICAqbmdJZj1cImVsZW1lbnQucGVuZGluZ1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZmllbGQtc3Bpbm5lclwiXHJcbiAgICAgICAgICAgIFtkaWFtZXRlcl09XCIyMFwiXHJcbiAgICAgICAgICAgIG1vZGU9XCJpbmRldGVybWluYXRlXCI+XHJcbiAgICAgICAgICA8L21hdC1wcm9ncmVzcy1zcGlubmVyPlxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8dHIgbWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImRpc3BsYXllZENvbHVtbnNcIj48L3RyPlxyXG4gICAgICAgIDx0ciBtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBkaXNwbGF5ZWRDb2x1bW5zO1wiXHJcbiAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZC1yb3ddPVwic2VsZWN0aW9uLmlzU2VsZWN0ZWQocm93KVwiPjwvdHI+XHJcbiAgICA8L3RhYmxlPlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgY2xhc3M9XCJhcHAtcGFnaW5hdGlvblwiPlxyXG4gIDxtYXQtcGFnaW5hdG9yXHJcbiAgICBbbGVuZ3RoXT1cInBhZ2luYXRpb24udG90YWxcIlxyXG4gICAgW3BhZ2VTaXplXT1cInBhZ2luYXRpb24ucGFnZVNpemVcIlxyXG4gICAgW3BhZ2VTaXplT3B0aW9uc109XCJwYWdpbmF0aW9uLnBhZ2VTaXplT3B0aW9uc1wiXHJcbiAgICBbcGFnZUluZGV4XT1cInBhZ2luYXRpb24ucGFnZUluZGV4XCJcclxuICAgIChwYWdlKT1cInBhZ2VFdmVudCgkZXZlbnQpXCJcclxuICAgIHNob3dGaXJzdExhc3RCdXR0b25zPlxyXG4gIDwvbWF0LXBhZ2luYXRvcj5cclxuXHJcbiAgPCEtLTxkaXYgY2xhc3M9XCJwYWdlLWluZGV4ZXMtYm94XCI+XHJcbiAgICA8bWF0LXBhZ2luYXRvclxyXG4gICAgICBbaWRdPVwiJ2NvbW1vblBhZ2luYXRpb24nXCJcclxuICAgICAgW2hpZGVQYWdlU2l6ZV09XCJ0cnVlXCJcclxuICAgICAgW2xlbmd0aF09XCJwYWdpbmF0aW9uLnRvdGFsXCJcclxuICAgICAgW3BhZ2VJbmRleF09XCJwYWdpbmF0aW9uLnBhZ2VJbmRleFwiXHJcbiAgICAgIFtwYWdlU2l6ZV09XCJwYWdpbmF0aW9uLnBhZ2VTaXplXCJcclxuICAgICAgW3BhZ2VTaXplT3B0aW9uc109XCJwYWdpbmF0aW9uLnBhZ2VTaXplT3B0aW9uc1wiXHJcbiAgICAgIChwYWdlKT1cInBhZ2VFdmVudCgkZXZlbnQpXCI+XHJcbiAgICA8L21hdC1wYWdpbmF0b3I+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJwZXItcGFnZS1ibG9ja1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cIml0ZW1fcGVyX3BhZ2VcIj5JdGVtcyBwZXIgcGFnZTo8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJzZWxlY3QtYm94IHNlbGVjdC1wYWdlLXNpemVcIj5cclxuICAgICAgPG1hdC1zZWxlY3QgKHNlbGVjdGlvbkNoYW5nZSk9XCJjaGFuZ2VQZXJQYWdlTnVtYmVyKCRldmVudClcIiAjcGFnZVxyXG4gICAgICAgICAgICAgICAgICBbaWRdPVwiJ2NvbW1vblBhZ2luYXRpb25TZWxlY3QnXCI+XHJcbiAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBwYWdlU2l6ZU9wdGlvbnM7IGxldCBpID0gaW5kZXg7XCIgW2lkXT1cIidwYWdpbmF0aW9uU2VsZWN0T3B0XycgKyBpXCIgW3ZhbHVlXT1cIm9wdGlvblwiPnt7b3B0aW9ufX08L21hdC1vcHRpb24+XHJcbiAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgIDwvZGl2PlxyXG5cclxuICA8L2Rpdj4tLT5cclxuPC9kaXY+XHJcbiJdfQ==
@@ -13,4 +13,4 @@ export const USER_CREATION_TYPES = {
13
13
  MT: 'MT'
14
14
  };
15
15
  export const MAX_INTEGER = 2147483647;
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmNvbnN0YW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1a2kvd2lkZ2V0cy91c2VyLWNyZWF0aW9uL3NyYy9hcHAuY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRztJQUNmLG1DQUFtQyxFQUFFLGdFQUFnRTtJQUNyRyxLQUFLLEVBQUUsa0NBQWtDO0lBQ3pDLElBQUksRUFBRSx3QkFBd0I7SUFDOUIsWUFBWSxFQUFFLGdEQUFnRDtJQUM5RCxhQUFhLEVBQUUsaUNBQWlDO0lBQ2hELGlCQUFpQixFQUFFLG9EQUFvRDtJQUN2RSwwQkFBMEIsRUFBRSxvREFBb0Q7SUFDaEYsbUJBQW1CLEVBQUUsd0RBQXdEO0NBQ2hGLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRztJQUNqQyxJQUFJLEVBQUUsTUFBTTtJQUNaLEVBQUUsRUFBRSxJQUFJO0NBQ1QsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxVQUFVLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgQVBJID0ge1xyXG4gICAgV0VCRVhfQ0hFQ0tfQ09OVFJPTF9IVUJfSU5URUdSQVRJT046IFwiL3dlYmV4L2FwaS9zZWFyY2gvd2ViZXgvY3VzdG9tZXJzLzpjdXN0b21lcklkL2NvbnRyb2xodWJleGlzdHNcIixcclxuICAgIFNJVEVTOiBcIi9hcGkvY3VzdG9tZXJzLzpjdXN0b21lcklkL3NpdGVzXCIsXHJcbiAgICBTSVRFOiBcIi9kY3AvYXBpL3NpdGVzLzpzaXRlSWRcIixcclxuICAgIERFVklDRV9UWVBFUzogXCIvZGNwL2FwaS9wcm92aXNpb24vb3B0aW9ucy86c2l0ZUlkL2RldmljZXR5cGVzXCIsXHJcbiAgICBTSVRFX1NFVFRJTkdTOiBcIi9kY3AvYXBpL3NpdGVzLzpzaXRlSWQvc2V0dGluZ3NcIixcclxuICAgIFZNX1VTRVJfVEVNUExBVEVTOiBcIi9kY3AvYXBpL3Byb3Zpc2lvbi9vcHRpb25zLzpzaXRlSWQvdm11c2VydGVtcGxhdGVzXCIsXHJcbiAgICBVU0VSX1RFTVBMQVRFU19VUExPQURfTElTVDogXCIvZGNwL2FwaS9zZWFyY2hidWxrdXBkYXRlL3VwbG9hZGVkdXNlcnRlbXBsYXRlbGlzdFwiLFxyXG4gICAgVVNFUl9URU1QTEFURV9UT0tFTjogXCIvZGNwL2FwaS9idWxrdXBkYXRlLzpjdXN0b21lcklkL3VzZXJ0ZW1wbGF0ZS86aWQvdG9rZW5cIixcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IFVTRVJfQ1JFQVRJT05fVFlQRVMgPSB7XHJcbiAgQ1VDTTogJ0NVQ00nLFxyXG4gIE1UOiAnTVQnXHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgTUFYX0lOVEVHRVIgPSAyMTQ3NDgzNjQ3OyJdfQ==
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmNvbnN0YW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1a2kvd2lkZ2V0cy91c2VyLWNyZWF0aW9uL3NyYy9hcHAuY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRztJQUNmLG1DQUFtQyxFQUFFLGdFQUFnRTtJQUNyRyxLQUFLLEVBQUUsa0NBQWtDO0lBQ3pDLElBQUksRUFBRSx3QkFBd0I7SUFDOUIsWUFBWSxFQUFFLGdEQUFnRDtJQUM5RCxhQUFhLEVBQUUsaUNBQWlDO0lBQ2hELGlCQUFpQixFQUFFLG9EQUFvRDtJQUN2RSwwQkFBMEIsRUFBRSxvREFBb0Q7SUFDaEYsbUJBQW1CLEVBQUUsd0RBQXdEO0NBQ2hGLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRztJQUNqQyxJQUFJLEVBQUUsTUFBTTtJQUNaLEVBQUUsRUFBRSxJQUFJO0NBQ1QsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxVQUFVLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgQVBJID0ge1xuICAgIFdFQkVYX0NIRUNLX0NPTlRST0xfSFVCX0lOVEVHUkFUSU9OOiBcIi93ZWJleC9hcGkvc2VhcmNoL3dlYmV4L2N1c3RvbWVycy86Y3VzdG9tZXJJZC9jb250cm9saHViZXhpc3RzXCIsXG4gICAgU0lURVM6IFwiL2FwaS9jdXN0b21lcnMvOmN1c3RvbWVySWQvc2l0ZXNcIixcbiAgICBTSVRFOiBcIi9kY3AvYXBpL3NpdGVzLzpzaXRlSWRcIixcbiAgICBERVZJQ0VfVFlQRVM6IFwiL2RjcC9hcGkvcHJvdmlzaW9uL29wdGlvbnMvOnNpdGVJZC9kZXZpY2V0eXBlc1wiLFxuICAgIFNJVEVfU0VUVElOR1M6IFwiL2RjcC9hcGkvc2l0ZXMvOnNpdGVJZC9zZXR0aW5nc1wiLFxuICAgIFZNX1VTRVJfVEVNUExBVEVTOiBcIi9kY3AvYXBpL3Byb3Zpc2lvbi9vcHRpb25zLzpzaXRlSWQvdm11c2VydGVtcGxhdGVzXCIsXG4gICAgVVNFUl9URU1QTEFURVNfVVBMT0FEX0xJU1Q6IFwiL2RjcC9hcGkvc2VhcmNoYnVsa3VwZGF0ZS91cGxvYWRlZHVzZXJ0ZW1wbGF0ZWxpc3RcIixcbiAgICBVU0VSX1RFTVBMQVRFX1RPS0VOOiBcIi9kY3AvYXBpL2J1bGt1cGRhdGUvOmN1c3RvbWVySWQvdXNlcnRlbXBsYXRlLzppZC90b2tlblwiLFxufVxuXG5leHBvcnQgY29uc3QgVVNFUl9DUkVBVElPTl9UWVBFUyA9IHtcbiAgQ1VDTTogJ0NVQ00nLFxuICBNVDogJ01UJ1xufTtcblxuZXhwb3J0IGNvbnN0IE1BWF9JTlRFR0VSID0gMjE0NzQ4MzY0NzsiXX0=
@@ -50,4 +50,4 @@ export class SiteDefaults {
50
50
  }
51
51
  }
52
52
  }
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2l0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1a2kvd2lkZ2V0cy91c2VyLWNyZWF0aW9uL3NyYy9jbGFzc2VzL3NpdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBYSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUF3QjFELE1BQU0sT0FBTyxJQUFJO0lBb0JmLFlBQVksSUFBb0I7UUFDOUIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxRQUFRO1FBQ04sTUFBTSxXQUFXLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUN0QyxNQUFNLFlBQVksR0FBRztZQUNuQixJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM5QyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN4RCxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN2QixHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQztZQUNyQixRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQztZQUMvQixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztZQUM3QixJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN2QixLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUN6QixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNwRCxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQztZQUNuQyxhQUFhLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQztTQUMxQyxDQUFDO1FBRUYsSUFBSSxDQUFDLElBQUksR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxjQUFjO1FBQ1osTUFBTSxjQUFjLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNoQyxPQUFPLGNBQWMsQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELEtBQUs7UUFDSCxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDakIsQ0FBQztDQUNGO0FBNkVELE1BQU0sT0FBTyxZQUFZO0lBdUV2QixZQUFZLFlBQW9DLEVBQUUsZ0JBQTBCO1FBQzFFLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsc0JBQXNCLEdBQUcsRUFBRSxDQUFDO1FBQ2pDLElBQUksWUFBWSxFQUFFO1lBQ2hCLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDO1lBQ2xDLElBQUksQ0FBQyxRQUFRLEdBQUcsWUFBWSxDQUFDLFFBQVEsS0FBSyxNQUFNLENBQUM7WUFDakQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNwQztRQUNELElBQUksZ0JBQWdCLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxZQUFZLEVBQUUsb0JBQW9CLElBQUksRUFBRSxDQUFDO1lBQzFELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxZQUFZLEVBQUUsbUJBQW1CLElBQUksRUFBRSxDQUFDO1NBQ3JFO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBnZXRTYXZhYmxlRGF0YSB9IGZyb20gJy4uL3NoYXJlZC9zZXJ2aWNlcy91dGlscyc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNpdGVJbnRlcmZhY2Uge1xyXG4gIGlkOiBudW1iZXI7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIGNvdW50cnk6IGFueTtcclxuICBsb2NhdGlvbk5hbWU6IHN0cmluZztcclxuICBpc0FmdGVyVHR1OiBib29sZWFuO1xyXG4gIHNob3J0TmFtZTogc3RyaW5nO1xyXG4gIHR0dUVuYWJsZURhdGU/OiBzdHJpbmc7XHJcbiAgY3VjbTogYW55O1xyXG4gIGN1YzogYW55O1xyXG4gIGhhc0FjdGl2YXRlZD86IGJvb2xlYW47XHJcbiAgLy8gaHFTdGF0dXM6IGJvb2xlYW47XHJcbiAgZGVhY3RpdmF0ZURhdGU/OiBzdHJpbmc7XHJcbiAgc2l0ZVVuaXF1ZUlkPzogbnVtYmVyO1xyXG4gIGZvcm06IEZvcm1Hcm91cDtcclxuXHJcbiAgaW5pdEZvcm06ICgpID0+IHZvaWQ7XHJcbiAgZ2V0U2F2YWJsZURhdGE6ICgpID0+IHZvaWQ7XHJcbiAgZ2V0SWQ6ICgpID0+IHZvaWQ7XHJcbn1cclxuXHJcblxyXG5leHBvcnQgY2xhc3MgU2l0ZSBpbXBsZW1lbnRzIFNpdGVJbnRlcmZhY2Uge1xyXG4gIGlkITogbnVtYmVyO1xyXG4gIG5hbWUhOiBzdHJpbmc7XHJcbiAgY291bnRyeTogYW55O1xyXG4gIGxvY2F0aW9uTmFtZSE6IHN0cmluZztcclxuICBpc0FmdGVyVHR1ITogYm9vbGVhbjtcclxuICBzaG9ydE5hbWUhOiBzdHJpbmc7XHJcbiAgdHR1RW5hYmxlRGF0ZT86IHN0cmluZztcclxuICBjdWNtOiBhbnk7XHJcbiAgY3VjOiBhbnk7XHJcbiAgaGFzQWN0aXZhdGVkPzogYm9vbGVhbjtcclxuICAvLyBocVN0YXR1czogYm9vbGVhbjtcclxuICBkZWFjdGl2YXRlRGF0ZT86IHN0cmluZztcclxuICBhZGRyZXNzMT86IHN0cmluZztcclxuICBhZGRyZXNzMj86IHN0cmluZztcclxuICBjaXR5Pzogc3RyaW5nO1xyXG4gIHN0YXRlPzogc3RyaW5nO1xyXG4gIHppcENvZGU/OiBzdHJpbmc7XHJcbiAgZm9ybSE6IEZvcm1Hcm91cDtcclxuXHJcbiAgY29uc3RydWN0b3Ioc2l0ZT86IFNpdGVJbnRlcmZhY2UpIHtcclxuICAgIE9iamVjdC5hc3NpZ24odGhpcywgc2l0ZSk7XHJcbiAgICB0aGlzLmluaXRGb3JtKCk7XHJcbiAgfVxyXG5cclxuICBpbml0Rm9ybSgpIHtcclxuICAgIGNvbnN0IGZvcm1CdWlsZGVyID0gbmV3IEZvcm1CdWlsZGVyKCk7XHJcbiAgICBjb25zdCBmb3JtU2V0dGluZ3MgPSB7XHJcbiAgICAgIG5hbWU6IFt0aGlzLm5hbWUgfHwgJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgIHNob3J0TmFtZTogW3RoaXMuc2hvcnROYW1lIHx8ICcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICBjdWNtOiBbdGhpcy5jdWNtIHx8ICcnXSxcclxuICAgICAgY3VjOiBbdGhpcy5jdWMgfHwgJyddLFxyXG4gICAgICBhZGRyZXNzMTogW3RoaXMuYWRkcmVzczEgfHwgJyddLFxyXG4gICAgICB6aXBDb2RlOiBbdGhpcy5jb3VudHJ5IHx8ICcnXSxcclxuICAgICAgY2l0eTogW3RoaXMuY2l0eSB8fCAnJ10sXHJcbiAgICAgIHN0YXRlOiBbdGhpcy5zdGF0ZSB8fCAnJ10sXHJcbiAgICAgIGNvdW50cnk6IFt0aGlzLmNvdW50cnkgfHwgJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgIGlzQWZ0ZXJUdHU6IFt0aGlzLmlzQWZ0ZXJUdHUgfHwgJyddLFxyXG4gICAgICB0dHVFbmFibGVEYXRlOiBbdGhpcy50dHVFbmFibGVEYXRlIHx8ICcnXVxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLmZvcm0gPSBmb3JtQnVpbGRlci5ncm91cChmb3JtU2V0dGluZ3MpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2F2YWJsZURhdGEoKSB7XHJcbiAgICBjb25zdCBub25TYXZhYmxlRGF0YSA9IFsnZm9ybSddO1xyXG4gICAgcmV0dXJuIGdldFNhdmFibGVEYXRhKHRoaXMsIG5vblNhdmFibGVEYXRhKTtcclxuICB9XHJcblxyXG4gIGdldElkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaWQ7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNpdGVUZW1wbGF0ZUludGVyZmFjZSB7XHJcbiAgaWQ6IG51bWJlcjtcclxuICByb3V0ZVBhcnRpdGlvbkZpbHRlcjogc3RyaW5nIHwgc3RyaW5nW107XHJcbiAgZGV2aWNlUG9vbEZpbHRlcjogc3RyaW5nIHwgc3RyaW5nW107XHJcbiAgY3NzRmlsdGVyOiBzdHJpbmcgfCBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcclxuICB2b2ljZW1haWxQcm9maWxlRmlsdGVyOiBzdHJpbmcgfCBzdHJpbmdbXTtcclxuICBsaW5lQ3NzOiBzdHJpbmc7XHJcbiAgZGV2aWNlQ3NzOiBzdHJpbmc7XHJcbiAgY2FsbEZvcndhcmRBbGxDc3M6IHN0cmluZztcclxuICBsb2NhdGlvbjogc3RyaW5nO1xyXG4gIHZvaWNlbWFpbFVzZXJUZW1wbGF0ZTogc3RyaW5nO1xyXG4gIHJvdXRlUGFydGl0aW9uOiBzdHJpbmc7XHJcbiAgZGV2aWNlUG9vbDogc3RyaW5nO1xyXG4gIHZvaWNlbWFpbFByb2ZpbGU6IHN0cmluZztcclxuICBleHRlcm5hbENhbGxlcklkOiBzdHJpbmc7XHJcbiAgaHVudFBpbG90UGFydGl0aW9uOiBzdHJpbmc7XHJcbiAgY2FsbFBpY2t1cEdyb3VwUGFydGl0aW9uOiBzdHJpbmc7XHJcbiAgbWVldE1lQ29uZmVyZW5jZVBhcnRpdGlvbjogc3RyaW5nO1xyXG4gIGNhbGxQYXJrUGFydGl0aW9uOiBzdHJpbmc7XHJcbiAgdXNlckxvY2FsZTogc3RyaW5nO1xyXG4gIG5ldHdvcmtMb2NhbGU6IHN0cmluZztcclxuICBjdWNtR3JvdXA6IHN0cmluZztcclxuICBzb2Z0a2V5VGVtcGxhdGVzOiBzdHJpbmc7XHJcbiAgcGhvbmVCdXR0b25UZW1wbGF0ZTogc3RyaW5nO1xyXG4gIHBob25lU2VjdXJpdHlQcm9maWxlOiBzdHJpbmc7XHJcbiAgc2lwUHJvZmlsZTogc3RyaW5nO1xyXG4gIHJkcENzczogc3RyaW5nO1xyXG4gIHJkcFJlcm91dGVDc3M6IHN0cmluZztcclxuICBjb21tb25QaG9uZVByb2ZpbGU6IHN0cmluZztcclxuICBzdWJzY3JpYmVDc3M6IHN0cmluZztcclxuICBlbmFibGVFbTogYm9vbGVhbiB8IHN0cmluZztcclxuICBmb3J3YXJkSHVudEJ1c3lDU1M6IHN0cmluZztcclxuICBmb3J3YXJkSHVudE5vQW5zd2VyQ1NTOiBzdHJpbmc7XHJcbiAgZm9yd2FyZEJ1c3lJbnRlcm5hbENzczogc3RyaW5nO1xyXG4gIGZvcndhcmRCdXN5RXh0ZXJuYWxDc3M6IHN0cmluZztcclxuICBmb3J3YXJkTm9BbnN3ZXJJbnRlcm5hbENzczogc3RyaW5nO1xyXG4gIGZvcndhcmROb0Fuc3dlckV4dGVybmFsQ3NzOiBzdHJpbmc7XHJcbiAgZm9yd2FyZE5vQ292ZXJhZ2VJbnRlcm5hbENzczogc3RyaW5nO1xyXG4gIGZvcndhcmROb0NvdmVyYWdlRXh0ZXJuYWxDc3M6IHN0cmluZztcclxuICBmb3J3YXJkT25DdGlGYWlsdXJlQ3NzOiBzdHJpbmc7XHJcbiAgZm9yd2FyZFVucmVnaXN0ZXJlZEludGVybmFsQ3NzOiBzdHJpbmc7XHJcbiAgZm9yd2FyZFVucmVnaXN0ZXJlZEV4dGVybmFsQ3NzOiBzdHJpbmc7XHJcbiAgcmRwRXh0ZXJuYWxDYWxsZXJJZDogc3RyaW5nO1xyXG4gIG5vQW5zd2VyUmluZ0R1cmF0aW9uOiBzdHJpbmc7XHJcbiAgdWNTZXJ2aWNlUHJvZmlsZTogc3RyaW5nO1xyXG4gIHBob25lU3lzdGVtOiBzdHJpbmc7XHJcbiAgbWF4TnVtYmVyT2ZDYWxsczogc3RyaW5nO1xyXG4gIGJ1c3lUcmlnZ2VyOiBzdHJpbmc7XHJcbiAgZGlkUGFydGl0aW9uOiBzdHJpbmc7XHJcbiAgZGlkQ3NzOiBzdHJpbmc7XHJcbiAgdm9zc0NvbXBhdGliaWxpdHlTaXRlQ29kZTogc3RyaW5nO1xyXG4gIHZvc3NDb21wYXRpYmlsaXR5UmlkQ29kZTogc3RyaW5nO1xyXG4gIGRpYWxQbGFuVHlwZTogc3RyaW5nO1xyXG4gIGVtU2VydmljZTogc3RyaW5nO1xyXG4gIGVtZXJnZW5jeVBhcnRpdGlvbj86IHN0cmluZztcclxuICBjdWNQYXJ0aXRpb246IHN0cmluZztcclxuICBhbGVydGluZ05hbWU/OiBzdHJpbmc7XHJcbiAgZGlzcGxheUNhbGxlcklkPzogc3RyaW5nO1xyXG4gIGxpbmVUZXh0TGFiZWw/OiBzdHJpbmc7XHJcbiAgdGV4dExhYmVsPzogc3RyaW5nO1xyXG4gIGludGVybmFsVHJhbnNsYXRpb25QYXJ0aXRpb24/OiBzdHJpbmc7XHJcbiAgaW50ZXJuYWxUcmFuc2xhdGlvbkNzcz86IHN0cmluZztcclxuICBwbGFyQ3NzPzogc3RyaW5nO1xyXG4gIGxpbmVEZXNjcmlwdGlvbj86IHN0cmluZztcclxuICBkZXZpY2VEZXNjcmlwdGlvbj86IHN0cmluZztcclxuICBzaGFyZWRTaXRlc0Nzc0ZpbHRlcj86IHN0cmluZ1tdO1xyXG4gIHNoYXJlZFNpdGVzUlBGaWx0ZXI/OiBzdHJpbmdbXTtcclxuICByZXJvdXRpbmdDc3M/OiBzdHJpbmc7XHJcbiAgdWRwRGV2aWNlVHlwZTogc3RyaW5nO1xyXG4gIHVkcERldmljZVByb3RvY29sOiBzdHJpbmc7XHJcbiAgdWRwQnV0dG9uVGVtcGxhdGU6IHN0cmluZztcclxuICB1c2VyVXNlckxvY2FsZTogc3RyaW5nO1xyXG4gIHVzZXJBY2Nlc3NDb250cm9sR3JvdXBzPzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgU2l0ZURlZmF1bHRzIGltcGxlbWVudHMgU2l0ZVRlbXBsYXRlSW50ZXJmYWNlIHtcclxuICBpZCE6IG51bWJlcjtcclxuICByb3V0ZVBhcnRpdGlvbkZpbHRlcjogc3RyaW5nW107XHJcbiAgZGV2aWNlUG9vbEZpbHRlcjogc3RyaW5nW107XHJcbiAgY3NzRmlsdGVyOiBzdHJpbmdbXTtcclxuICB2b2ljZW1haWxQcm9maWxlRmlsdGVyOiBzdHJpbmdbXTtcclxuICBsaW5lQ3NzITogc3RyaW5nO1xyXG4gIGRldmljZUNzcyE6IHN0cmluZztcclxuICBjYWxsRm9yd2FyZEFsbENzcyE6IHN0cmluZztcclxuICBsb2NhdGlvbiE6IHN0cmluZztcclxuICB2b2ljZW1haWxVc2VyVGVtcGxhdGUhOiBzdHJpbmc7XHJcbiAgcm91dGVQYXJ0aXRpb24hOiBzdHJpbmc7XHJcbiAgZGV2aWNlUG9vbCE6IHN0cmluZztcclxuICB2b2ljZW1haWxQcm9maWxlITogc3RyaW5nO1xyXG4gIGV4dGVybmFsQ2FsbGVySWQhOiBzdHJpbmc7XHJcbiAgaHVudFBpbG90UGFydGl0aW9uITogc3RyaW5nO1xyXG4gIGNhbGxQaWNrdXBHcm91cFBhcnRpdGlvbiE6IHN0cmluZztcclxuICBtZWV0TWVDb25mZXJlbmNlUGFydGl0aW9uITogc3RyaW5nO1xyXG4gIGNhbGxQYXJrUGFydGl0aW9uITogc3RyaW5nO1xyXG4gIHVzZXJMb2NhbGUhOiBzdHJpbmc7XHJcbiAgbmV0d29ya0xvY2FsZSE6IHN0cmluZztcclxuICBjdWNtR3JvdXAhOiBzdHJpbmc7XHJcbiAgc29mdGtleVRlbXBsYXRlcyE6IHN0cmluZztcclxuICBwaG9uZUJ1dHRvblRlbXBsYXRlITogc3RyaW5nO1xyXG4gIHBob25lU2VjdXJpdHlQcm9maWxlITogc3RyaW5nO1xyXG4gIHNpcFByb2ZpbGUhOiBzdHJpbmc7XHJcbiAgcmRwQ3NzITogc3RyaW5nO1xyXG4gIHJkcFJlcm91dGVDc3MhOiBzdHJpbmc7XHJcbiAgY29tbW9uUGhvbmVQcm9maWxlITogc3RyaW5nO1xyXG4gIHN1YnNjcmliZUNzcyE6IHN0cmluZztcclxuICBlbmFibGVFbSE6IGJvb2xlYW47XHJcbiAgZm9yd2FyZEh1bnRCdXN5Q1NTITogc3RyaW5nO1xyXG4gIGZvcndhcmRIdW50Tm9BbnN3ZXJDU1MhOiBzdHJpbmc7XHJcbiAgZm9yd2FyZEJ1c3lJbnRlcm5hbENzcyE6IHN0cmluZztcclxuICBmb3J3YXJkQnVzeUV4dGVybmFsQ3NzITogc3RyaW5nO1xyXG4gIGZvcndhcmROb0Fuc3dlckludGVybmFsQ3NzITogc3RyaW5nO1xyXG4gIGZvcndhcmROb0Fuc3dlckV4dGVybmFsQ3NzITogc3RyaW5nO1xyXG4gIGZvcndhcmROb0NvdmVyYWdlSW50ZXJuYWxDc3MhOiBzdHJpbmc7XHJcbiAgZm9yd2FyZE5vQ292ZXJhZ2VFeHRlcm5hbENzcyE6IHN0cmluZztcclxuICBmb3J3YXJkT25DdGlGYWlsdXJlQ3NzITogc3RyaW5nO1xyXG4gIGZvcndhcmRVbnJlZ2lzdGVyZWRJbnRlcm5hbENzcyE6IHN0cmluZztcclxuICBmb3J3YXJkVW5yZWdpc3RlcmVkRXh0ZXJuYWxDc3MhOiBzdHJpbmc7XHJcbiAgcmRwRXh0ZXJuYWxDYWxsZXJJZCE6IHN0cmluZztcclxuICBub0Fuc3dlclJpbmdEdXJhdGlvbiE6IHN0cmluZztcclxuICB1Y1NlcnZpY2VQcm9maWxlITogc3RyaW5nO1xyXG4gIHBob25lU3lzdGVtITogc3RyaW5nO1xyXG4gIG1heE51bWJlck9mQ2FsbHMhOiBzdHJpbmc7XHJcbiAgYnVzeVRyaWdnZXIhOiBzdHJpbmc7XHJcbiAgZGlkUGFydGl0aW9uITogc3RyaW5nO1xyXG4gIGRpZENzcyE6IHN0cmluZztcclxuICB2b3NzQ29tcGF0aWJpbGl0eVNpdGVDb2RlITogc3RyaW5nO1xyXG4gIHZvc3NDb21wYXRpYmlsaXR5UmlkQ29kZSE6IHN0cmluZztcclxuICBkaWFsUGxhblR5cGUhOiBzdHJpbmc7XHJcbiAgZW1TZXJ2aWNlITogc3RyaW5nO1xyXG4gIGN1Y1BhcnRpdGlvbiE6IHN0cmluZztcclxuICBhbGVydGluZ05hbWU/OiBzdHJpbmc7XHJcbiAgZGlzcGxheUNhbGxlcklkPzogc3RyaW5nO1xyXG4gIHRleHRMYWJlbD86IHN0cmluZztcclxuICBpbnRlcm5hbFRyYW5zbGF0aW9uUGFydGl0aW9uPzogc3RyaW5nO1xyXG4gIGludGVybmFsVHJhbnNsYXRpb25Dc3M/OiBzdHJpbmc7XHJcbiAgcGxhckNzcz86IHN0cmluZztcclxuICBsaW5lRGVzY3JpcHRpb24/OiBzdHJpbmc7XHJcbiAgZGV2aWNlRGVzY3JpcHRpb24/OiBzdHJpbmc7XHJcbiAgc2hhcmVkU2l0ZXNDc3NGaWx0ZXIhOiBzdHJpbmdbXTtcclxuICBzaGFyZWRTaXRlc1JQRmlsdGVyITogc3RyaW5nW107XHJcbiAgdWRwRGV2aWNlVHlwZSE6IHN0cmluZztcclxuICB1ZHBEZXZpY2VQcm90b2NvbCE6IHN0cmluZztcclxuICB1ZHBCdXR0b25UZW1wbGF0ZSE6IHN0cmluZztcclxuICB1c2VyVXNlckxvY2FsZSE6IHN0cmluZztcclxuICB1c2VyQWNjZXNzQ29udHJvbEdyb3Vwcz86IHN0cmluZztcclxuXHJcbiAgY29uc3RydWN0b3Ioc2l0ZURlZmF1bHRzPzogU2l0ZVRlbXBsYXRlSW50ZXJmYWNlLCBpc1NoYXJlZExpbmVTaXRlPzogYm9vbGVhbikge1xyXG4gICAgdGhpcy5yb3V0ZVBhcnRpdGlvbkZpbHRlciA9IFtdO1xyXG4gICAgdGhpcy5kZXZpY2VQb29sRmlsdGVyID0gW107XHJcbiAgICB0aGlzLmNzc0ZpbHRlciA9IFtdO1xyXG4gICAgdGhpcy52b2ljZW1haWxQcm9maWxlRmlsdGVyID0gW107XHJcbiAgICBpZiAoc2l0ZURlZmF1bHRzKSB7XHJcbiAgICAgIE9iamVjdC5hc3NpZ24odGhpcywgc2l0ZURlZmF1bHRzKTtcclxuICAgICAgdGhpcy5lbmFibGVFbSA9IHNpdGVEZWZhdWx0cy5lbmFibGVFbSA9PT0gJ3RydWUnO1xyXG4gICAgICB0aGlzLnJvdXRlUGFydGl0aW9uRmlsdGVyLnNvcnQoKTtcclxuICAgICAgdGhpcy5kZXZpY2VQb29sRmlsdGVyLnNvcnQoKTtcclxuICAgICAgdGhpcy5jc3NGaWx0ZXIuc29ydCgpO1xyXG4gICAgICB0aGlzLnZvaWNlbWFpbFByb2ZpbGVGaWx0ZXIuc29ydCgpO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzU2hhcmVkTGluZVNpdGUpIHtcclxuICAgICAgdGhpcy5jc3NGaWx0ZXIgPSBzaXRlRGVmYXVsdHM/LnNoYXJlZFNpdGVzQ3NzRmlsdGVyIHx8IFtdO1xyXG4gICAgICB0aGlzLnJvdXRlUGFydGl0aW9uRmlsdGVyID0gc2l0ZURlZmF1bHRzPy5zaGFyZWRTaXRlc1JQRmlsdGVyIHx8IFtdO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBVc2VyVGVtcGxhdGVJbnRlcmZhY2Uge1xyXG4gIGlkOiBudW1iZXI7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XHJcbiAgY3VzdG9tZXJJZDogbnVtYmVyO1xyXG4gIGVuZFVzZXI6IGFueTtcclxuICB1c2VyUmVxdWlyZWRGaWVsZHM/OiBzdHJpbmdbXTtcclxuICBkZXZpY2VSZXF1aXJlZEZpZWxkcz86IHN0cmluZ1tdO1xyXG4gIGxpbmVSZXF1aXJlZEZpZWxkcz86IHN0cmluZ1tdO1xyXG4gIGVkaXRNb2RlPzogYm9vbGVhbjtcclxuICBpc0NoYW5nZWQ/OiBib29sZWFuO1xyXG4gIHR5cGU/OiBzdHJpbmc7XHJcbiAgb3duZXJUeXBlPzogc3RyaW5nO1xyXG4gIGdsb2JhbFRlbXBsYXRlPzogYm9vbGVhbjtcclxufVxyXG4iXX0=
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2l0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1a2kvd2lkZ2V0cy91c2VyLWNyZWF0aW9uL3NyYy9jbGFzc2VzL3NpdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBYSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUF3QjFELE1BQU0sT0FBTyxJQUFJO0lBb0JmLFlBQVksSUFBb0I7UUFDOUIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxRQUFRO1FBQ04sTUFBTSxXQUFXLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUN0QyxNQUFNLFlBQVksR0FBRztZQUNuQixJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM5QyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN4RCxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN2QixHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQztZQUNyQixRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQztZQUMvQixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztZQUM3QixJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN2QixLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUN6QixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNwRCxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQztZQUNuQyxhQUFhLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQztTQUMxQyxDQUFDO1FBRUYsSUFBSSxDQUFDLElBQUksR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxjQUFjO1FBQ1osTUFBTSxjQUFjLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNoQyxPQUFPLGNBQWMsQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELEtBQUs7UUFDSCxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDakIsQ0FBQztDQUNGO0FBNkVELE1BQU0sT0FBTyxZQUFZO0lBdUV2QixZQUFZLFlBQW9DLEVBQUUsZ0JBQTBCO1FBQzFFLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsc0JBQXNCLEdBQUcsRUFBRSxDQUFDO1FBQ2pDLElBQUksWUFBWSxFQUFFO1lBQ2hCLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDO1lBQ2xDLElBQUksQ0FBQyxRQUFRLEdBQUcsWUFBWSxDQUFDLFFBQVEsS0FBSyxNQUFNLENBQUM7WUFDakQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNwQztRQUNELElBQUksZ0JBQWdCLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxZQUFZLEVBQUUsb0JBQW9CLElBQUksRUFBRSxDQUFDO1lBQzFELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxZQUFZLEVBQUUsbUJBQW1CLElBQUksRUFBRSxDQUFDO1NBQ3JFO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgZ2V0U2F2YWJsZURhdGEgfSBmcm9tICcuLi9zaGFyZWQvc2VydmljZXMvdXRpbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNpdGVJbnRlcmZhY2Uge1xuICBpZDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIGNvdW50cnk6IGFueTtcbiAgbG9jYXRpb25OYW1lOiBzdHJpbmc7XG4gIGlzQWZ0ZXJUdHU6IGJvb2xlYW47XG4gIHNob3J0TmFtZTogc3RyaW5nO1xuICB0dHVFbmFibGVEYXRlPzogc3RyaW5nO1xuICBjdWNtOiBhbnk7XG4gIGN1YzogYW55O1xuICBoYXNBY3RpdmF0ZWQ/OiBib29sZWFuO1xuICAvLyBocVN0YXR1czogYm9vbGVhbjtcbiAgZGVhY3RpdmF0ZURhdGU/OiBzdHJpbmc7XG4gIHNpdGVVbmlxdWVJZD86IG51bWJlcjtcbiAgZm9ybTogRm9ybUdyb3VwO1xuXG4gIGluaXRGb3JtOiAoKSA9PiB2b2lkO1xuICBnZXRTYXZhYmxlRGF0YTogKCkgPT4gdm9pZDtcbiAgZ2V0SWQ6ICgpID0+IHZvaWQ7XG59XG5cblxuZXhwb3J0IGNsYXNzIFNpdGUgaW1wbGVtZW50cyBTaXRlSW50ZXJmYWNlIHtcbiAgaWQhOiBudW1iZXI7XG4gIG5hbWUhOiBzdHJpbmc7XG4gIGNvdW50cnk6IGFueTtcbiAgbG9jYXRpb25OYW1lITogc3RyaW5nO1xuICBpc0FmdGVyVHR1ITogYm9vbGVhbjtcbiAgc2hvcnROYW1lITogc3RyaW5nO1xuICB0dHVFbmFibGVEYXRlPzogc3RyaW5nO1xuICBjdWNtOiBhbnk7XG4gIGN1YzogYW55O1xuICBoYXNBY3RpdmF0ZWQ/OiBib29sZWFuO1xuICAvLyBocVN0YXR1czogYm9vbGVhbjtcbiAgZGVhY3RpdmF0ZURhdGU/OiBzdHJpbmc7XG4gIGFkZHJlc3MxPzogc3RyaW5nO1xuICBhZGRyZXNzMj86IHN0cmluZztcbiAgY2l0eT86IHN0cmluZztcbiAgc3RhdGU/OiBzdHJpbmc7XG4gIHppcENvZGU/OiBzdHJpbmc7XG4gIGZvcm0hOiBGb3JtR3JvdXA7XG5cbiAgY29uc3RydWN0b3Ioc2l0ZT86IFNpdGVJbnRlcmZhY2UpIHtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMsIHNpdGUpO1xuICAgIHRoaXMuaW5pdEZvcm0oKTtcbiAgfVxuXG4gIGluaXRGb3JtKCkge1xuICAgIGNvbnN0IGZvcm1CdWlsZGVyID0gbmV3IEZvcm1CdWlsZGVyKCk7XG4gICAgY29uc3QgZm9ybVNldHRpbmdzID0ge1xuICAgICAgbmFtZTogW3RoaXMubmFtZSB8fCAnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIHNob3J0TmFtZTogW3RoaXMuc2hvcnROYW1lIHx8ICcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgY3VjbTogW3RoaXMuY3VjbSB8fCAnJ10sXG4gICAgICBjdWM6IFt0aGlzLmN1YyB8fCAnJ10sXG4gICAgICBhZGRyZXNzMTogW3RoaXMuYWRkcmVzczEgfHwgJyddLFxuICAgICAgemlwQ29kZTogW3RoaXMuY291bnRyeSB8fCAnJ10sXG4gICAgICBjaXR5OiBbdGhpcy5jaXR5IHx8ICcnXSxcbiAgICAgIHN0YXRlOiBbdGhpcy5zdGF0ZSB8fCAnJ10sXG4gICAgICBjb3VudHJ5OiBbdGhpcy5jb3VudHJ5IHx8ICcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgaXNBZnRlclR0dTogW3RoaXMuaXNBZnRlclR0dSB8fCAnJ10sXG4gICAgICB0dHVFbmFibGVEYXRlOiBbdGhpcy50dHVFbmFibGVEYXRlIHx8ICcnXVxuICAgIH07XG5cbiAgICB0aGlzLmZvcm0gPSBmb3JtQnVpbGRlci5ncm91cChmb3JtU2V0dGluZ3MpO1xuICB9XG5cbiAgZ2V0U2F2YWJsZURhdGEoKSB7XG4gICAgY29uc3Qgbm9uU2F2YWJsZURhdGEgPSBbJ2Zvcm0nXTtcbiAgICByZXR1cm4gZ2V0U2F2YWJsZURhdGEodGhpcywgbm9uU2F2YWJsZURhdGEpO1xuICB9XG5cbiAgZ2V0SWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaWQ7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaXRlVGVtcGxhdGVJbnRlcmZhY2Uge1xuICBpZDogbnVtYmVyO1xuICByb3V0ZVBhcnRpdGlvbkZpbHRlcjogc3RyaW5nIHwgc3RyaW5nW107XG4gIGRldmljZVBvb2xGaWx0ZXI6IHN0cmluZyB8IHN0cmluZ1tdO1xuICBjc3NGaWx0ZXI6IHN0cmluZyB8IHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuICB2b2ljZW1haWxQcm9maWxlRmlsdGVyOiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgbGluZUNzczogc3RyaW5nO1xuICBkZXZpY2VDc3M6IHN0cmluZztcbiAgY2FsbEZvcndhcmRBbGxDc3M6IHN0cmluZztcbiAgbG9jYXRpb246IHN0cmluZztcbiAgdm9pY2VtYWlsVXNlclRlbXBsYXRlOiBzdHJpbmc7XG4gIHJvdXRlUGFydGl0aW9uOiBzdHJpbmc7XG4gIGRldmljZVBvb2w6IHN0cmluZztcbiAgdm9pY2VtYWlsUHJvZmlsZTogc3RyaW5nO1xuICBleHRlcm5hbENhbGxlcklkOiBzdHJpbmc7XG4gIGh1bnRQaWxvdFBhcnRpdGlvbjogc3RyaW5nO1xuICBjYWxsUGlja3VwR3JvdXBQYXJ0aXRpb246IHN0cmluZztcbiAgbWVldE1lQ29uZmVyZW5jZVBhcnRpdGlvbjogc3RyaW5nO1xuICBjYWxsUGFya1BhcnRpdGlvbjogc3RyaW5nO1xuICB1c2VyTG9jYWxlOiBzdHJpbmc7XG4gIG5ldHdvcmtMb2NhbGU6IHN0cmluZztcbiAgY3VjbUdyb3VwOiBzdHJpbmc7XG4gIHNvZnRrZXlUZW1wbGF0ZXM6IHN0cmluZztcbiAgcGhvbmVCdXR0b25UZW1wbGF0ZTogc3RyaW5nO1xuICBwaG9uZVNlY3VyaXR5UHJvZmlsZTogc3RyaW5nO1xuICBzaXBQcm9maWxlOiBzdHJpbmc7XG4gIHJkcENzczogc3RyaW5nO1xuICByZHBSZXJvdXRlQ3NzOiBzdHJpbmc7XG4gIGNvbW1vblBob25lUHJvZmlsZTogc3RyaW5nO1xuICBzdWJzY3JpYmVDc3M6IHN0cmluZztcbiAgZW5hYmxlRW06IGJvb2xlYW4gfCBzdHJpbmc7XG4gIGZvcndhcmRIdW50QnVzeUNTUzogc3RyaW5nO1xuICBmb3J3YXJkSHVudE5vQW5zd2VyQ1NTOiBzdHJpbmc7XG4gIGZvcndhcmRCdXN5SW50ZXJuYWxDc3M6IHN0cmluZztcbiAgZm9yd2FyZEJ1c3lFeHRlcm5hbENzczogc3RyaW5nO1xuICBmb3J3YXJkTm9BbnN3ZXJJbnRlcm5hbENzczogc3RyaW5nO1xuICBmb3J3YXJkTm9BbnN3ZXJFeHRlcm5hbENzczogc3RyaW5nO1xuICBmb3J3YXJkTm9Db3ZlcmFnZUludGVybmFsQ3NzOiBzdHJpbmc7XG4gIGZvcndhcmROb0NvdmVyYWdlRXh0ZXJuYWxDc3M6IHN0cmluZztcbiAgZm9yd2FyZE9uQ3RpRmFpbHVyZUNzczogc3RyaW5nO1xuICBmb3J3YXJkVW5yZWdpc3RlcmVkSW50ZXJuYWxDc3M6IHN0cmluZztcbiAgZm9yd2FyZFVucmVnaXN0ZXJlZEV4dGVybmFsQ3NzOiBzdHJpbmc7XG4gIHJkcEV4dGVybmFsQ2FsbGVySWQ6IHN0cmluZztcbiAgbm9BbnN3ZXJSaW5nRHVyYXRpb246IHN0cmluZztcbiAgdWNTZXJ2aWNlUHJvZmlsZTogc3RyaW5nO1xuICBwaG9uZVN5c3RlbTogc3RyaW5nO1xuICBtYXhOdW1iZXJPZkNhbGxzOiBzdHJpbmc7XG4gIGJ1c3lUcmlnZ2VyOiBzdHJpbmc7XG4gIGRpZFBhcnRpdGlvbjogc3RyaW5nO1xuICBkaWRDc3M6IHN0cmluZztcbiAgdm9zc0NvbXBhdGliaWxpdHlTaXRlQ29kZTogc3RyaW5nO1xuICB2b3NzQ29tcGF0aWJpbGl0eVJpZENvZGU6IHN0cmluZztcbiAgZGlhbFBsYW5UeXBlOiBzdHJpbmc7XG4gIGVtU2VydmljZTogc3RyaW5nO1xuICBlbWVyZ2VuY3lQYXJ0aXRpb24/OiBzdHJpbmc7XG4gIGN1Y1BhcnRpdGlvbjogc3RyaW5nO1xuICBhbGVydGluZ05hbWU/OiBzdHJpbmc7XG4gIGRpc3BsYXlDYWxsZXJJZD86IHN0cmluZztcbiAgbGluZVRleHRMYWJlbD86IHN0cmluZztcbiAgdGV4dExhYmVsPzogc3RyaW5nO1xuICBpbnRlcm5hbFRyYW5zbGF0aW9uUGFydGl0aW9uPzogc3RyaW5nO1xuICBpbnRlcm5hbFRyYW5zbGF0aW9uQ3NzPzogc3RyaW5nO1xuICBwbGFyQ3NzPzogc3RyaW5nO1xuICBsaW5lRGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIGRldmljZURlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBzaGFyZWRTaXRlc0Nzc0ZpbHRlcj86IHN0cmluZ1tdO1xuICBzaGFyZWRTaXRlc1JQRmlsdGVyPzogc3RyaW5nW107XG4gIHJlcm91dGluZ0Nzcz86IHN0cmluZztcbiAgdWRwRGV2aWNlVHlwZTogc3RyaW5nO1xuICB1ZHBEZXZpY2VQcm90b2NvbDogc3RyaW5nO1xuICB1ZHBCdXR0b25UZW1wbGF0ZTogc3RyaW5nO1xuICB1c2VyVXNlckxvY2FsZTogc3RyaW5nO1xuICB1c2VyQWNjZXNzQ29udHJvbEdyb3Vwcz86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFNpdGVEZWZhdWx0cyBpbXBsZW1lbnRzIFNpdGVUZW1wbGF0ZUludGVyZmFjZSB7XG4gIGlkITogbnVtYmVyO1xuICByb3V0ZVBhcnRpdGlvbkZpbHRlcjogc3RyaW5nW107XG4gIGRldmljZVBvb2xGaWx0ZXI6IHN0cmluZ1tdO1xuICBjc3NGaWx0ZXI6IHN0cmluZ1tdO1xuICB2b2ljZW1haWxQcm9maWxlRmlsdGVyOiBzdHJpbmdbXTtcbiAgbGluZUNzcyE6IHN0cmluZztcbiAgZGV2aWNlQ3NzITogc3RyaW5nO1xuICBjYWxsRm9yd2FyZEFsbENzcyE6IHN0cmluZztcbiAgbG9jYXRpb24hOiBzdHJpbmc7XG4gIHZvaWNlbWFpbFVzZXJUZW1wbGF0ZSE6IHN0cmluZztcbiAgcm91dGVQYXJ0aXRpb24hOiBzdHJpbmc7XG4gIGRldmljZVBvb2whOiBzdHJpbmc7XG4gIHZvaWNlbWFpbFByb2ZpbGUhOiBzdHJpbmc7XG4gIGV4dGVybmFsQ2FsbGVySWQhOiBzdHJpbmc7XG4gIGh1bnRQaWxvdFBhcnRpdGlvbiE6IHN0cmluZztcbiAgY2FsbFBpY2t1cEdyb3VwUGFydGl0aW9uITogc3RyaW5nO1xuICBtZWV0TWVDb25mZXJlbmNlUGFydGl0aW9uITogc3RyaW5nO1xuICBjYWxsUGFya1BhcnRpdGlvbiE6IHN0cmluZztcbiAgdXNlckxvY2FsZSE6IHN0cmluZztcbiAgbmV0d29ya0xvY2FsZSE6IHN0cmluZztcbiAgY3VjbUdyb3VwITogc3RyaW5nO1xuICBzb2Z0a2V5VGVtcGxhdGVzITogc3RyaW5nO1xuICBwaG9uZUJ1dHRvblRlbXBsYXRlITogc3RyaW5nO1xuICBwaG9uZVNlY3VyaXR5UHJvZmlsZSE6IHN0cmluZztcbiAgc2lwUHJvZmlsZSE6IHN0cmluZztcbiAgcmRwQ3NzITogc3RyaW5nO1xuICByZHBSZXJvdXRlQ3NzITogc3RyaW5nO1xuICBjb21tb25QaG9uZVByb2ZpbGUhOiBzdHJpbmc7XG4gIHN1YnNjcmliZUNzcyE6IHN0cmluZztcbiAgZW5hYmxlRW0hOiBib29sZWFuO1xuICBmb3J3YXJkSHVudEJ1c3lDU1MhOiBzdHJpbmc7XG4gIGZvcndhcmRIdW50Tm9BbnN3ZXJDU1MhOiBzdHJpbmc7XG4gIGZvcndhcmRCdXN5SW50ZXJuYWxDc3MhOiBzdHJpbmc7XG4gIGZvcndhcmRCdXN5RXh0ZXJuYWxDc3MhOiBzdHJpbmc7XG4gIGZvcndhcmROb0Fuc3dlckludGVybmFsQ3NzITogc3RyaW5nO1xuICBmb3J3YXJkTm9BbnN3ZXJFeHRlcm5hbENzcyE6IHN0cmluZztcbiAgZm9yd2FyZE5vQ292ZXJhZ2VJbnRlcm5hbENzcyE6IHN0cmluZztcbiAgZm9yd2FyZE5vQ292ZXJhZ2VFeHRlcm5hbENzcyE6IHN0cmluZztcbiAgZm9yd2FyZE9uQ3RpRmFpbHVyZUNzcyE6IHN0cmluZztcbiAgZm9yd2FyZFVucmVnaXN0ZXJlZEludGVybmFsQ3NzITogc3RyaW5nO1xuICBmb3J3YXJkVW5yZWdpc3RlcmVkRXh0ZXJuYWxDc3MhOiBzdHJpbmc7XG4gIHJkcEV4dGVybmFsQ2FsbGVySWQhOiBzdHJpbmc7XG4gIG5vQW5zd2VyUmluZ0R1cmF0aW9uITogc3RyaW5nO1xuICB1Y1NlcnZpY2VQcm9maWxlITogc3RyaW5nO1xuICBwaG9uZVN5c3RlbSE6IHN0cmluZztcbiAgbWF4TnVtYmVyT2ZDYWxscyE6IHN0cmluZztcbiAgYnVzeVRyaWdnZXIhOiBzdHJpbmc7XG4gIGRpZFBhcnRpdGlvbiE6IHN0cmluZztcbiAgZGlkQ3NzITogc3RyaW5nO1xuICB2b3NzQ29tcGF0aWJpbGl0eVNpdGVDb2RlITogc3RyaW5nO1xuICB2b3NzQ29tcGF0aWJpbGl0eVJpZENvZGUhOiBzdHJpbmc7XG4gIGRpYWxQbGFuVHlwZSE6IHN0cmluZztcbiAgZW1TZXJ2aWNlITogc3RyaW5nO1xuICBjdWNQYXJ0aXRpb24hOiBzdHJpbmc7XG4gIGFsZXJ0aW5nTmFtZT86IHN0cmluZztcbiAgZGlzcGxheUNhbGxlcklkPzogc3RyaW5nO1xuICB0ZXh0TGFiZWw/OiBzdHJpbmc7XG4gIGludGVybmFsVHJhbnNsYXRpb25QYXJ0aXRpb24/OiBzdHJpbmc7XG4gIGludGVybmFsVHJhbnNsYXRpb25Dc3M/OiBzdHJpbmc7XG4gIHBsYXJDc3M/OiBzdHJpbmc7XG4gIGxpbmVEZXNjcmlwdGlvbj86IHN0cmluZztcbiAgZGV2aWNlRGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIHNoYXJlZFNpdGVzQ3NzRmlsdGVyITogc3RyaW5nW107XG4gIHNoYXJlZFNpdGVzUlBGaWx0ZXIhOiBzdHJpbmdbXTtcbiAgdWRwRGV2aWNlVHlwZSE6IHN0cmluZztcbiAgdWRwRGV2aWNlUHJvdG9jb2whOiBzdHJpbmc7XG4gIHVkcEJ1dHRvblRlbXBsYXRlITogc3RyaW5nO1xuICB1c2VyVXNlckxvY2FsZSE6IHN0cmluZztcbiAgdXNlckFjY2Vzc0NvbnRyb2xHcm91cHM/OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Ioc2l0ZURlZmF1bHRzPzogU2l0ZVRlbXBsYXRlSW50ZXJmYWNlLCBpc1NoYXJlZExpbmVTaXRlPzogYm9vbGVhbikge1xuICAgIHRoaXMucm91dGVQYXJ0aXRpb25GaWx0ZXIgPSBbXTtcbiAgICB0aGlzLmRldmljZVBvb2xGaWx0ZXIgPSBbXTtcbiAgICB0aGlzLmNzc0ZpbHRlciA9IFtdO1xuICAgIHRoaXMudm9pY2VtYWlsUHJvZmlsZUZpbHRlciA9IFtdO1xuICAgIGlmIChzaXRlRGVmYXVsdHMpIHtcbiAgICAgIE9iamVjdC5hc3NpZ24odGhpcywgc2l0ZURlZmF1bHRzKTtcbiAgICAgIHRoaXMuZW5hYmxlRW0gPSBzaXRlRGVmYXVsdHMuZW5hYmxlRW0gPT09ICd0cnVlJztcbiAgICAgIHRoaXMucm91dGVQYXJ0aXRpb25GaWx0ZXIuc29ydCgpO1xuICAgICAgdGhpcy5kZXZpY2VQb29sRmlsdGVyLnNvcnQoKTtcbiAgICAgIHRoaXMuY3NzRmlsdGVyLnNvcnQoKTtcbiAgICAgIHRoaXMudm9pY2VtYWlsUHJvZmlsZUZpbHRlci5zb3J0KCk7XG4gICAgfVxuICAgIGlmIChpc1NoYXJlZExpbmVTaXRlKSB7XG4gICAgICB0aGlzLmNzc0ZpbHRlciA9IHNpdGVEZWZhdWx0cz8uc2hhcmVkU2l0ZXNDc3NGaWx0ZXIgfHwgW107XG4gICAgICB0aGlzLnJvdXRlUGFydGl0aW9uRmlsdGVyID0gc2l0ZURlZmF1bHRzPy5zaGFyZWRTaXRlc1JQRmlsdGVyIHx8IFtdO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVzZXJUZW1wbGF0ZUludGVyZmFjZSB7XG4gIGlkOiBudW1iZXI7XG4gIG5hbWU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgY3VzdG9tZXJJZDogbnVtYmVyO1xuICBlbmRVc2VyOiBhbnk7XG4gIHVzZXJSZXF1aXJlZEZpZWxkcz86IHN0cmluZ1tdO1xuICBkZXZpY2VSZXF1aXJlZEZpZWxkcz86IHN0cmluZ1tdO1xuICBsaW5lUmVxdWlyZWRGaWVsZHM/OiBzdHJpbmdbXTtcbiAgZWRpdE1vZGU/OiBib29sZWFuO1xuICBpc0NoYW5nZWQ/OiBib29sZWFuO1xuICB0eXBlPzogc3RyaW5nO1xuICBvd25lclR5cGU/OiBzdHJpbmc7XG4gIGdsb2JhbFRlbXBsYXRlPzogYm9vbGVhbjtcbn1cbiJdfQ==
@@ -5,11 +5,6 @@ import * as i1 from "@angular/common/http";
5
5
  export class APIService {
6
6
  constructor(httpClient) {
7
7
  this.httpClient = httpClient;
8
- this.apiUrl = window.location.protocol + '//' + window.location.hostname + '/dcp';
9
- this.token = 'eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhZG1pbkBjb3JyZW5ldC5jb20iLCJyb2xlcyI6IlNVUEVSX1VTRVIiLCJpYXQiOjE3NzQxOTExODAsImV4cCI6MTc3NDIwOTE4MH0.dH5UHZTcJ82_XAU0BKY9UFCR4RRHjbmWYtvPOnN5XEo';
10
- // this.apiUrl = window.location.protocol + '//' + window.location.host + '/dcp';
11
- this.apiUrl = 'https://dev.tuki.io';
12
- // this.apiUrl = 'http://localhost:8088/dcp';
13
8
  }
14
9
  fetch(url, params, cache) {
15
10
  const headers = this.getHeaders(cache);
@@ -83,4 +78,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
83
78
  providedIn: 'root'
84
79
  }]
85
80
  }], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWtpL3dpZGdldHMvdXNlci1jcmVhdGlvbi9zcmMvc2hhcmVkL2FwaS9hcGkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBYyxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7O0FBTS9ELE1BQU0sT0FBTyxVQUFVO0lBR3JCLFlBQ1UsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUZoQyxXQUFNLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQztRQUkzRSxJQUFJLENBQUMsS0FBSyxHQUFHLGtMQUFrTCxDQUFBO1FBQy9MLGlGQUFpRjtRQUNqRixJQUFJLENBQUMsTUFBTSxHQUFHLHFCQUFxQixDQUFDO1FBQ3BDLDZDQUE2QztJQUMvQyxDQUFDO0lBRUQsS0FBSyxDQUFDLEdBQVcsRUFBRSxNQUFZLEVBQUUsS0FBZTtRQUM5QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sR0FBRyxNQUFNLElBQUksRUFBRSxDQUFDO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBQyxDQUFDLENBQUM7SUFDdEcsQ0FBQztJQUVELElBQUksQ0FBQyxHQUFXLEVBQUUsSUFBUyxFQUFFLE1BQU0sR0FBRyxFQUFFO1FBQ3RDLElBQUksR0FBRyxJQUFJLElBQUks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VSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBUElTZXJ2aWNlIHtcclxuICBwdWJsaWMgdG9rZW46IGFueTtcclxuICBhcGlVcmwgPSB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wgKyAnLy8nICsgd2luZG93LmxvY2F0aW9uLmhvc3RuYW1lICsgJy9kY3AnO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50XHJcbiAgKSB7XHJcbiAgICB0aGlzLnRva2VuID0gJ2V5SmhiR2NpT2lKSVV6STFOaUo5LmV5SnpkV0lpT2lKaFpHMXBia0JqYjNKeVpXNWxkQzVqYjIwaUxDSnliMnhsY3lJNklsTlZVRVZTWDFWVFJWSWlMQ0pwWVhRaU9qRTNOelF4T1RFeE9EQXNJbVY0Y0NJNk1UYzNOREl3T1RFNE1IMC5kSDVVSFpUY0o4Ml9YQVUwQktZOVVGQ1I0UlJIamJtV1l0dlBPbk41WEVvJ1xyXG4gICAgLy8gdGhpcy5hcGlVcmwgPSB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wgKyAnLy8nICsgd2luZG93LmxvY2F0aW9uLmhvc3QgKyAnL2RjcCc7XHJcbiAgICB0aGlzLmFwaVVybCA9ICdodHRwczovL2Rldi50dWtpLmlvJztcclxuICAgIC8vIHRoaXMuYXBpVXJsID0gJ2h0dHA6Ly9sb2NhbGhvc3Q6ODA4OC9kY3AnO1xyXG4gIH1cclxuXHJcbiAgZmV0Y2godXJsOiBzdHJpbmcsIHBhcmFtcz86IGFueSwgY2FjaGU/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSB0aGlzLmdldEhlYWRlcnMoY2FjaGUpO1xyXG4gICAgcGFyYW1zID0gcGFyYW1zIHx8IHt9O1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQodGhpcy5hcGlVcmwgKyB1cmwsIHtwYXJhbXM6IHRoaXMucHJlcGFyZUVuY29kZWRQYXJhbXMocGFyYW1zKSwgaGVhZGVyc30pO1xyXG4gIH1cclxuXHJcbiAgcG9zdCh1cmw6IHN0cmluZywgYm9keTogYW55LCBwYXJhbXMgPSB7fSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBib2R5ID0gYm9keSB8fCBudWxsO1xyXG4gICAgY29uc3QgaGVhZGVycyA9IHRoaXMuZ2V0SGVhZGVycygpO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0KHRoaXMuYXBpVXJsICsgdXJsLCBib2R5LCB7cGFyYW1zOiB0aGlzLnByZXBhcmVFbmNvZGVkUGFyYW1zKHBhcmFtcyksIGhlYWRlcnN9KTtcclxuICB9XHJcblxyXG4gIC8vIHVzZSB3aGVuIHJlc3BvbnNlIGV4dGVuZGVkIGRhdGEgaXMgbmVjZXNzYXJ5OlxyXG4gIHBvc3RFeHRlbmRlZCh1cmw6IHN0cmluZywgYm9keSA9IG51bGwsIHBhcmFtcyA9IHt9LCBoZWFkZXJzID0ge30pIHtcclxuICAgIGhlYWRlcnMgPSBoZWFkZXJzIHx8IHRoaXMuZ2V0SGVhZGVycygpO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0KHRoaXMuYXBpVXJsICsgdXJsLCBib2R5LCB7XHJcbiAgICAgIGhlYWRlcnMsXHJcbiAgICAgIG9ic2VydmU6ICdyZXNwb25zZScsXHJcbiAgICAgIHBhcmFtczogdGhpcy5wcmVwYXJlRW5jb2RlZFBhcmFtcyhwYXJhbXMpXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1dCh1cmw6IHN0cmluZywgYm9keSA9IG51bGwsIHBhcmFtcyA9IHt9KSB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gdGhpcy5nZXRIZWFkZXJzKCk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnB1dCh0aGlzLmFwaVVybCArIHVybCwgYm9keSwge2hlYWRlcnMsIHBhcmFtczogdGhpcy5wcmVwYXJlRW5jb2RlZFBhcmFtcyhwYXJhbXMpfSk7XHJcbiAgfVxyXG5cclxuICBkZWxldGUodXJsOiBzdHJpbmcsIHBhcmFtcyA9IHt9KSB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gdGhpcy5nZXRIZWFkZXJzKCk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmRlbGV0ZSh0aGlzLmFwaVVybCArIHVybCwge2hlYWRlcnMsIHBhcmFtczogdGhpcy5wcmVwYXJlRW5jb2RlZFBhcmFtcyhwYXJhbXMpfSk7XHJcbiAgfVxyXG5cclxuICBmZXRjaFBhZ2luYXRpb24odXJsOiBzdHJpbmcsIHBhZ2VTaXplOiBudW1iZXIsIHBhZ2VOdW1iZXI6IG51bWJlciwgYWRkaXRpb25hbFBhcmFtcyA9IHt9LCBjYWNoZT86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgY29weUFkZGl0aW9uYWxQYXJhbXMgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGFkZGl0aW9uYWxQYXJhbXMpKTtcclxuICAgIGNvbnN0IHBhcmFtcyA9IE9iamVjdC5hc3NpZ24oY29weUFkZGl0aW9uYWxQYXJhbXMsIHtzaXplOiBwYWdlU2l6ZS50b1N0cmluZygpLCBwYWdlOiBwYWdlTnVtYmVyLnRvU3RyaW5nKCl9KTtcclxuICAgIHJldHVybiB0aGlzLmZldGNoKHVybCwgcGFyYW1zLCBjYWNoZSkgYXMgT2JzZXJ2YWJsZTxhbnk+O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwcmVwYXJlRW5jb2RlZFBhcmFtcyhwYXJhbXM6IGFueSkge1xyXG4gICAgY29uc3QgcmVzdWx0OiBhbnkgPSB7fTtcclxuXHJcbiAgICBpZiAoIXBhcmFtcykge1xyXG4gICAgICByZXR1cm4ge307XHJcbiAgICB9XHJcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhwYXJhbXMpKSB7XHJcbiAgICAgIGlmIChwYXJhbXNba2V5XSkge1xyXG4gICAgICAgIGNvbnN0IHN0cmluZ1BhcmFtID0gcGFyYW1zW2tleV0udG9TdHJpbmcoKTtcclxuICAgICAgICByZXN1bHRba2V5XSA9IHN0cmluZ1BhcmFtLmluY2x1ZGVzKCcrJykgPyBlbmNvZGVVUklDb21wb25lbnQoc3RyaW5nUGFyYW0pIDogc3RyaW5nUGFyYW07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEhlYWRlcnMoY2FjaGU/OiBib29sZWFuKTogSHR0cEhlYWRlcnMge1xyXG4gICAgbGV0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKTtcclxuICAgIGlmIChjYWNoZSkge1xyXG4gICAgICBoZWFkZXJzID0gaGVhZGVycy5hcHBlbmQoJ19DYWNoZScsICd0cnVlICcpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdG9rZW4gPSB0aGlzLnRva2VuIHx8IHRoaXMuZ2V0UGFyYW1ldGVyQnlOYW1lKCd0b2tlbicpO1xyXG4gICAgaGVhZGVycyA9IGhlYWRlcnMuYXBwZW5kKCdBdXRob3JpemF0aW9uJywgJ0JlYXJlciAnKyB0b2tlbik7XHJcbiAgICByZXR1cm4gaGVhZGVycztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0UGFyYW1ldGVyQnlOYW1lKG5hbWU6IGFueSwgdXJsID0gd2luZG93LmxvY2F0aW9uLmhyZWYpIHtcclxuICAgIG5hbWUgPSBuYW1lLnJlcGxhY2UoL1tcXFtcXF1dL2csICdcXFxcJCYnKTtcclxuICAgIHZhciByZWdleCA9IG5ldyBSZWdFeHAoJ1s/Jl0nICsgbmFtZSArICcoPShbXiYjXSopfCZ8I3wkKScpLFxyXG4gICAgICByZXN1bHRzID0gcmVnZXguZXhlYyh1cmwpO1xyXG4gICAgaWYgKCFyZXN1bHRzKSByZXR1cm4gbnVsbDtcclxuICAgIGlmICghcmVzdWx0c1syXSkgcmV0dXJuICcnO1xyXG4gICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChyZXN1bHRzWzJdLnJlcGxhY2UoL1xcKy9nLCAnICcpKTtcclxuICB9XHJcbn0iXX0=
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWtpL3dpZGdldHMvdXNlci1jcmVhdGlvbi9zcmMvc2hhcmVkL2FwaS9hcGkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBYyxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7O0FBTS9ELE1BQU0sT0FBTyxVQUFVO0lBSXJCLFlBQ1UsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtJQUM1QixDQUFDO0lBRUwsS0FBSyxDQUFDLEdBQVcsRUFBRSxNQUFZLEVBQUUsS0FBZTtRQUM5QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sR0FBRyxNQUFNLElBQUksRUFBRSxDQUFDO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDeEcsQ0FBQztJQUVELElBQUksQ0FBQyxHQUFXLEVBQUUsSUFBUyxFQUFFLE1BQU0sR0FBRyxFQUFFO1FBQ3RDLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxDQUFDO1FBQ3BCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUMvRyxDQUFDO0lBRUQsZ0RBQWdEO0lBQ2hELFlBQVksQ0FBQyxHQUFXLEVBQUUsSUFBSSxHQUFHLElBQUksRUFBRSxNQUFNLEdBQUcsRUFBRSxFQUFFLE9BQU8sR0FBRyxFQUFFO1FBQzlELE9BQU8sR0FBRyxPQUFPLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUUsSUFBSSxFQUFFO1lBQ25ELE9BQU87WUFDUCxPQUFPLEVBQUUsVUFBVTtZQUNuQixNQUFNLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQztTQUMxQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsR0FBRyxDQUFDLEdBQVcsRUFBRSxJQUFJLEdBQUcsSUFBSSxFQUFFLE1BQU0sR0FBRyxFQUFFO1FBQ3ZDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM5RyxDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQVcsRUFBRSxNQUFNLEdBQUcsRUFBRTtRQUM3QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzRyxDQUFDO0lBRUQsZUFBZSxDQUFDLEdBQVcsRUFBRSxRQUFnQixFQUFFLFVBQWtCLEVBQUUsZ0JBQWdCLEdBQUcsRUFBRSxFQUFFLEtBQWU7UUFDdkcsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1FBQzFFLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQy9HLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBb0IsQ0FBQztJQUMzRCxDQUFDO0lBRU8sb0JBQW9CLENBQUMsTUFBVztRQUN0QyxNQUFNLE1BQU0sR0FBUSxFQUFFLENBQUM7UUFFdkIsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNYLE9BQU8sRUFBRSxDQUFDO1NBQ1g7UUFDRCxLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDckMsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ2YsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUMzQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQzthQUN6RjtTQUNGO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVPLFVBQVUsQ0FBQyxLQUFlO1FBQ2hDLElBQUksT0FBTyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7UUFDaEMsSUFBSSxLQUFLLEVBQUU7WUFDVCxPQUFPLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7U0FDN0M7UUFDRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM3RCxPQUFPLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUUsU0FBUyxHQUFHLEtBQUssQ0FBQyxDQUFDO1FBQzdELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxJQUFTLEVBQUUsR0FBRyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSTtRQUM5RCxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDdkMsSUFBSSxLQUFLLEdBQUcsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLElBQUksR0FBRyxtQkFBbUIsQ0FBQyxFQUN6RCxPQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsT0FBTztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQzFCLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDM0IsT0FBTyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzVELENBQUM7O3dHQTlFVSxVQUFVOzRHQUFWLFVBQVUsY0FGVCxNQUFNOzRGQUVQLFVBQVU7a0JBSHRCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQVBJU2VydmljZSB7XHJcbiAgdG9rZW4hOiBzdHJpbmc7XHJcbiAgYXBpVXJsITogc3RyaW5nO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgaHR0cENsaWVudDogSHR0cENsaWVudFxyXG4gICkgeyB9XHJcblxyXG4gIGZldGNoKHVybDogc3RyaW5nLCBwYXJhbXM/OiBhbnksIGNhY2hlPzogYm9vbGVhbik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gdGhpcy5nZXRIZWFkZXJzKGNhY2hlKTtcclxuICAgIHBhcmFtcyA9IHBhcmFtcyB8fCB7fTtcclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KHRoaXMuYXBpVXJsICsgdXJsLCB7IHBhcmFtczogdGhpcy5wcmVwYXJlRW5jb2RlZFBhcmFtcyhwYXJhbXMpLCBoZWFkZXJzIH0pO1xyXG4gIH1cclxuXHJcbiAgcG9zdCh1cmw6IHN0cmluZywgYm9keTogYW55LCBwYXJhbXMgPSB7fSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBib2R5ID0gYm9keSB8fCBudWxsO1xyXG4gICAgY29uc3QgaGVhZGVycyA9IHRoaXMuZ2V0SGVhZGVycygpO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0KHRoaXMuYXBpVXJsICsgdXJsLCBib2R5LCB7IHBhcmFtczogdGhpcy5wcmVwYXJlRW5jb2RlZFBhcmFtcyhwYXJhbXMpLCBoZWFkZXJzIH0pO1xyXG4gIH1cclxuXHJcbiAgLy8gdXNlIHdoZW4gcmVzcG9uc2UgZXh0ZW5kZWQgZGF0YSBpcyBuZWNlc3Nhcnk6XHJcbiAgcG9zdEV4dGVuZGVkKHVybDogc3RyaW5nLCBib2R5ID0gbnVsbCwgcGFyYW1zID0ge30sIGhlYWRlcnMgPSB7fSkge1xyXG4gICAgaGVhZGVycyA9IGhlYWRlcnMgfHwgdGhpcy5nZXRIZWFkZXJzKCk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3QodGhpcy5hcGlVcmwgKyB1cmwsIGJvZHksIHtcclxuICAgICAgaGVhZGVycyxcclxuICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJyxcclxuICAgICAgcGFyYW1zOiB0aGlzLnByZXBhcmVFbmNvZGVkUGFyYW1zKHBhcmFtcylcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHV0KHVybDogc3RyaW5nLCBib2R5ID0gbnVsbCwgcGFyYW1zID0ge30pIHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSB0aGlzLmdldEhlYWRlcnMoKTtcclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucHV0KHRoaXMuYXBpVXJsICsgdXJsLCBib2R5LCB7IGhlYWRlcnMsIHBhcmFtczogdGhpcy5wcmVwYXJlRW5jb2RlZFBhcmFtcyhwYXJhbXMpIH0pO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlKHVybDogc3RyaW5nLCBwYXJhbXMgPSB7fSkge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IHRoaXMuZ2V0SGVhZGVycygpO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5kZWxldGUodGhpcy5hcGlVcmwgKyB1cmwsIHsgaGVhZGVycywgcGFyYW1zOiB0aGlzLnByZXBhcmVFbmNvZGVkUGFyYW1zKHBhcmFtcykgfSk7XHJcbiAgfVxyXG5cclxuICBmZXRjaFBhZ2luYXRpb24odXJsOiBzdHJpbmcsIHBhZ2VTaXplOiBudW1iZXIsIHBhZ2VOdW1iZXI6IG51bWJlciwgYWRkaXRpb25hbFBhcmFtcyA9IHt9LCBjYWNoZT86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgY29weUFkZGl0aW9uYWxQYXJhbXMgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGFkZGl0aW9uYWxQYXJhbXMpKTtcclxuICAgIGNvbnN0IHBhcmFtcyA9IE9iamVjdC5hc3NpZ24oY29weUFkZGl0aW9uYWxQYXJhbXMsIHsgc2l6ZTogcGFnZVNpemUudG9TdHJpbmcoKSwgcGFnZTogcGFnZU51bWJlci50b1N0cmluZygpIH0pO1xyXG4gICAgcmV0dXJuIHRoaXMuZmV0Y2godXJsLCBwYXJhbXMsIGNhY2hlKSBhcyBPYnNlcnZhYmxlPGFueT47XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHByZXBhcmVFbmNvZGVkUGFyYW1zKHBhcmFtczogYW55KSB7XHJcbiAgICBjb25zdCByZXN1bHQ6IGFueSA9IHt9O1xyXG5cclxuICAgIGlmICghcGFyYW1zKSB7XHJcbiAgICAgIHJldHVybiB7fTtcclxuICAgIH1cclxuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHBhcmFtcykpIHtcclxuICAgICAgaWYgKHBhcmFtc1trZXldKSB7XHJcbiAgICAgICAgY29uc3Qgc3RyaW5nUGFyYW0gPSBwYXJhbXNba2V5XS50b1N0cmluZygpO1xyXG4gICAgICAgIHJlc3VsdFtrZXldID0gc3RyaW5nUGFyYW0uaW5jbHVkZXMoJysnKSA/IGVuY29kZVVSSUNvbXBvbmVudChzdHJpbmdQYXJhbSkgOiBzdHJpbmdQYXJhbTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0SGVhZGVycyhjYWNoZT86IGJvb2xlYW4pOiBIdHRwSGVhZGVycyB7XHJcbiAgICBsZXQgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpO1xyXG4gICAgaWYgKGNhY2hlKSB7XHJcbiAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLmFwcGVuZCgnX0NhY2hlJywgJ3RydWUgJyk7XHJcbiAgICB9XHJcbiAgICBjb25zdCB0b2tlbiA9IHRoaXMudG9rZW4gfHwgdGhpcy5nZXRQYXJhbWV0ZXJCeU5hbWUoJ3Rva2VuJyk7XHJcbiAgICBoZWFkZXJzID0gaGVhZGVycy5hcHBlbmQoJ0F1dGhvcml6YXRpb24nLCAnQmVhcmVyICcgKyB0b2tlbik7XHJcbiAgICByZXR1cm4gaGVhZGVycztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0UGFyYW1ldGVyQnlOYW1lKG5hbWU6IGFueSwgdXJsID0gd2luZG93LmxvY2F0aW9uLmhyZWYpIHtcclxuICAgIG5hbWUgPSBuYW1lLnJlcGxhY2UoL1tcXFtcXF1dL2csICdcXFxcJCYnKTtcclxuICAgIHZhciByZWdleCA9IG5ldyBSZWdFeHAoJ1s/Jl0nICsgbmFtZSArICcoPShbXiYjXSopfCZ8I3wkKScpLFxyXG4gICAgICByZXN1bHRzID0gcmVnZXguZXhlYyh1cmwpO1xyXG4gICAgaWYgKCFyZXN1bHRzKSByZXR1cm4gbnVsbDtcclxuICAgIGlmICghcmVzdWx0c1syXSkgcmV0dXJuICcnO1xyXG4gICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChyZXN1bHRzWzJdLnJlcGxhY2UoL1xcKy9nLCAnICcpKTtcclxuICB9XHJcbn0iXX0=