@tuki-io/tuki-widgets 0.0.219-dev.60 → 0.0.219-dev.63

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 (107) hide show
  1. package/di2mt/widgets/site-upgrade/site-upgrade.module.d.ts +9 -8
  2. package/di2mt/widgets/user-upgrade/user-upgrade.module.d.ts +11 -10
  3. package/esm2020/di2mt/widgets/site-upgrade/site-upgrade-data-table/site-upgrade-data-table.component.mjs +12 -11
  4. package/esm2020/di2mt/widgets/site-upgrade/site-upgrade.module.mjs +7 -3
  5. package/esm2020/di2mt/widgets/user-upgrade/user-upgrade-data-table/user-upgrade-data-table.component.mjs +12 -11
  6. package/esm2020/di2mt/widgets/user-upgrade/user-upgrade.module.mjs +7 -3
  7. package/esm2020/locations/src/locations.component.mjs +11 -11
  8. package/esm2020/locations/src/locations.module.mjs +7 -6
  9. package/esm2020/meetings/src/components/meeting-spaces/meeting-space/meeting-space.component.mjs +9 -9
  10. package/esm2020/meetings/src/components/meeting-spaces/meeting-spaces.component.mjs +17 -9
  11. package/esm2020/meetings/src/meetings.module.mjs +7 -6
  12. package/esm2020/shared/public-api.mjs +2 -1
  13. package/esm2020/shared/src/ui/tk-loader/tk-loader.component.mjs +34 -0
  14. package/esm2020/user-creation/src/user-creation.module.mjs +7 -6
  15. package/esm2020/user-creation/src/widgets/user-creation-wizard/components/user-details-step/user-details-step.component.mjs +16 -16
  16. package/esm2020/user-creation/src/widgets/user-creation-wizard/components/user-template-step/user-template-step.component.mjs +27 -10
  17. package/esm2020/user-creation/src/widgets/user-creation-wizard/user-creation-wizard.component.mjs +11 -11
  18. package/esm2020/user-device-manage/src/associate-lines/associate-lines.component.mjs +10 -10
  19. package/esm2020/user-device-manage/src/device-manage-widget.component.mjs +11 -11
  20. package/esm2020/user-device-manage/src/device-settings/device-settings.component.mjs +9 -9
  21. package/esm2020/user-device-manage/src/line-key-config/line-key-config.component.mjs +9 -9
  22. package/esm2020/user-device-manage/src/user-device-manage.module.mjs +8 -7
  23. package/esm2020/user-manage/src/user-manage-widget.component.mjs +12 -12
  24. package/esm2020/user-manage/src/user-manage.module.mjs +8 -7
  25. package/esm2020/users-list/src/classes/site-option.mjs +2 -0
  26. package/esm2020/users-list/src/components/table-toolbar/table-toolbar.component.mjs +18 -4
  27. package/esm2020/users-list/src/move-user-wizard/move-user-stepper/move-user-stepper.component.mjs +15 -15
  28. package/esm2020/users-list/src/move-user-wizard/move-user-wizard.component.mjs +5 -5
  29. package/esm2020/users-list/src/users-list.component.mjs +104 -46
  30. package/esm2020/users-list/src/users-list.module.mjs +7 -6
  31. package/esm2020/workspaces/src/components/workspace-detail/workspace-detail.component.mjs +7 -7
  32. package/esm2020/workspaces/src/components/workspace-device-detail/workspace-device-detail.component.mjs +9 -9
  33. package/esm2020/workspaces/src/components/workspaces-filters/workspaces-filters.component.mjs +13 -3
  34. package/esm2020/workspaces/src/components/workspaces-table/workspaces-table.component.mjs +6 -6
  35. package/esm2020/workspaces/src/services/workspaces.service.mjs +3 -1
  36. package/esm2020/workspaces/src/types/workspace.mjs +6 -2
  37. package/esm2020/workspaces/src/workspaces.component.mjs +43 -9
  38. package/esm2020/workspaces/src/workspaces.module.mjs +7 -6
  39. package/fesm2015/tuki-io-tuki-widgets-di2mt.mjs +26 -18
  40. package/fesm2015/tuki-io-tuki-widgets-di2mt.mjs.map +1 -1
  41. package/fesm2015/tuki-io-tuki-widgets-locations.mjs +16 -24
  42. package/fesm2015/tuki-io-tuki-widgets-locations.mjs.map +1 -1
  43. package/fesm2015/tuki-io-tuki-widgets-meetings.mjs +31 -33
  44. package/fesm2015/tuki-io-tuki-widgets-meetings.mjs.map +1 -1
  45. package/fesm2015/tuki-io-tuki-widgets-shared.mjs +31 -1
  46. package/fesm2015/tuki-io-tuki-widgets-shared.mjs.map +1 -1
  47. package/fesm2015/tuki-io-tuki-widgets-user-creation.mjs +52 -43
  48. package/fesm2015/tuki-io-tuki-widgets-user-creation.mjs.map +1 -1
  49. package/fesm2015/tuki-io-tuki-widgets-user-device-manage.mjs +43 -51
  50. package/fesm2015/tuki-io-tuki-widgets-user-device-manage.mjs.map +1 -1
  51. package/fesm2015/tuki-io-tuki-widgets-user-manage.mjs +20 -29
  52. package/fesm2015/tuki-io-tuki-widgets-user-manage.mjs.map +1 -1
  53. package/fesm2015/tuki-io-tuki-widgets-users-list.mjs +136 -73
  54. package/fesm2015/tuki-io-tuki-widgets-users-list.mjs.map +1 -1
  55. package/fesm2015/tuki-io-tuki-widgets-workspaces.mjs +87 -43
  56. package/fesm2015/tuki-io-tuki-widgets-workspaces.mjs.map +1 -1
  57. package/fesm2020/tuki-io-tuki-widgets-di2mt.mjs +26 -18
  58. package/fesm2020/tuki-io-tuki-widgets-di2mt.mjs.map +1 -1
  59. package/fesm2020/tuki-io-tuki-widgets-locations.mjs +16 -24
  60. package/fesm2020/tuki-io-tuki-widgets-locations.mjs.map +1 -1
  61. package/fesm2020/tuki-io-tuki-widgets-meetings.mjs +31 -33
  62. package/fesm2020/tuki-io-tuki-widgets-meetings.mjs.map +1 -1
  63. package/fesm2020/tuki-io-tuki-widgets-shared.mjs +31 -1
  64. package/fesm2020/tuki-io-tuki-widgets-shared.mjs.map +1 -1
  65. package/fesm2020/tuki-io-tuki-widgets-user-creation.mjs +51 -43
  66. package/fesm2020/tuki-io-tuki-widgets-user-creation.mjs.map +1 -1
  67. package/fesm2020/tuki-io-tuki-widgets-user-device-manage.mjs +43 -51
  68. package/fesm2020/tuki-io-tuki-widgets-user-device-manage.mjs.map +1 -1
  69. package/fesm2020/tuki-io-tuki-widgets-user-manage.mjs +20 -29
  70. package/fesm2020/tuki-io-tuki-widgets-user-manage.mjs.map +1 -1
  71. package/fesm2020/tuki-io-tuki-widgets-users-list.mjs +134 -71
  72. package/fesm2020/tuki-io-tuki-widgets-users-list.mjs.map +1 -1
  73. package/fesm2020/tuki-io-tuki-widgets-workspaces.mjs +87 -42
  74. package/fesm2020/tuki-io-tuki-widgets-workspaces.mjs.map +1 -1
  75. package/locations/src/locations.module.d.ts +2 -2
  76. package/meetings/src/meetings.module.d.ts +2 -2
  77. package/package.json +1 -1
  78. package/shared/public-api.d.ts +1 -0
  79. package/shared/src/ui/tk-loader/tk-loader.component.d.ts +15 -0
  80. package/user-creation/src/user-creation.module.d.ts +3 -3
  81. package/user-creation/src/widgets/user-creation-wizard/components/user-template-step/user-template-step.component.d.ts +2 -0
  82. package/user-device-manage/src/user-device-manage.module.d.ts +16 -16
  83. package/user-manage/src/user-manage.module.d.ts +12 -13
  84. package/users-list/src/classes/site-option.d.ts +4 -0
  85. package/users-list/src/components/table-toolbar/table-toolbar.component.d.ts +6 -1
  86. package/users-list/src/users-list.component.d.ts +11 -1
  87. package/users-list/src/users-list.module.d.ts +9 -9
  88. package/workspaces/src/components/workspace-detail/workspace-detail.component.d.ts +1 -1
  89. package/workspaces/src/components/workspaces-filters/workspaces-filters.component.d.ts +9 -1
  90. package/workspaces/src/components/workspaces-table/workspaces-table.component.d.ts +2 -2
  91. package/workspaces/src/types/workspace.d.ts +5 -0
  92. package/workspaces/src/workspaces.component.d.ts +6 -2
  93. package/workspaces/src/workspaces.module.d.ts +2 -2
  94. package/esm2020/locations/src/utils/app-loader/app-loader.mjs +0 -14
  95. package/esm2020/meetings/src/utils/app-loader/app-loader.mjs +0 -14
  96. package/esm2020/user-creation/src/utils/app-loader/app-loader.mjs +0 -14
  97. package/esm2020/user-device-manage/src/utils/app-loader/app-loader.mjs +0 -14
  98. package/esm2020/user-manage/src/utils/app-loader/app-loader.mjs +0 -14
  99. package/esm2020/users-list/src/utils/app-loader/app-loader.mjs +0 -14
  100. package/esm2020/workspaces/src/utils/app-loader/app-loader.mjs +0 -14
  101. package/locations/src/utils/app-loader/app-loader.d.ts +0 -6
  102. package/meetings/src/utils/app-loader/app-loader.d.ts +0 -6
  103. package/user-creation/src/utils/app-loader/app-loader.d.ts +0 -6
  104. package/user-device-manage/src/utils/app-loader/app-loader.d.ts +0 -6
  105. package/user-manage/src/utils/app-loader/app-loader.d.ts +0 -6
  106. package/users-list/src/utils/app-loader/app-loader.d.ts +0 -6
  107. package/workspaces/src/utils/app-loader/app-loader.d.ts +0 -6
@@ -12,13 +12,13 @@ import * as i4 from "../services/device.service";
12
12
  import * as i5 from "../services/line.service";
13
13
  import * as i6 from "@angular/material/dialog";
14
14
  import * as i7 from "@angular/router";
15
- import * as i8 from "@angular/common";
16
- import * as i9 from "@angular/forms";
17
- import * as i10 from "@angular/cdk/drag-drop";
18
- import * as i11 from "@angular/material/divider";
19
- import * as i12 from "@angular/material/tooltip";
20
- import * as i13 from "@angular/material/slide-toggle";
21
- import * as i14 from "../utils/app-loader/app-loader";
15
+ import * as i8 from "@tuki-io/tuki-widgets/shared";
16
+ import * as i9 from "@angular/common";
17
+ import * as i10 from "@angular/forms";
18
+ import * as i11 from "@angular/cdk/drag-drop";
19
+ import * as i12 from "@angular/material/divider";
20
+ import * as i13 from "@angular/material/tooltip";
21
+ import * as i14 from "@angular/material/slide-toggle";
22
22
  export class AssociateLinesComponent {
23
23
  constructor(userService, apiService, siteSettingsService, deviceService, lineService, dialog, router) {
24
24
  this.userService = userService;
@@ -291,10 +291,10 @@ AssociateLinesComponent.BOOLEAN_FIELDS = new Set([
291
291
  'logMissedCalls', 'callerName', 'redirectedNumber', 'callerNumber', 'dialedNumber',
292
292
  ]);
293
293
  AssociateLinesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AssociateLinesComponent, deps: [{ token: i1.UserService }, { token: i2.APIService }, { token: i3.SiteSettingsService }, { token: i4.DeviceService }, { token: i5.LineService }, { token: i6.MatDialog }, { token: i7.Router }], target: i0.ɵɵFactoryTarget.Component });
294
- AssociateLinesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: AssociateLinesComponent, selector: "app-associate-lines", inputs: { token: "token", host: "host", siteId: "siteId", userId: "userId", deviceName: "deviceName" }, outputs: { goBack: "goBack" }, ngImport: i0, template: "<app-loader *ngIf=\"dataPending\"></app-loader>\r\n\r\n<div class=\"go-back-box\" (click)=\"onGoBack()\">\r\n <div class=\"go-back-box-container\">\r\n <span class=\"app-icon icon-webex-left-arrow\"></span>\r\n <span class=\"go-back-title\">Device General Info</span>\r\n </div>\r\n</div>\r\n\r\n<div class=\"associate-lines\" >\r\n <div class=\"panel-header\">\r\n <span class=\"panel-header__title\">Associate Lines</span>\r\n </div>\r\n\r\n <div class=\"panel-body\">\r\n <div class=\"panel-card\">\r\n\r\n <p class=\"step-description\">\r\n The users and workspaces that appear on this phone are displayed below in the order of appearance.\r\n Lines must be configured sequentially.\r\n </p>\r\n\r\n <div class=\"lines-list\" cdkDropList (cdkDropListDropped)=\"drop($event)\">\r\n <ng-container *ngFor=\"let row of rows\">\r\n\r\n <div class=\"line-row\" cdkDrag [class.expanded]=\"isExpanded(row)\">\r\n <div class=\"line-row__header\">\r\n <div class=\"line-row__main\">\r\n <i class=\"icon dragger-icon rem1\" cdkDragHandle></i>\r\n <span class=\"line-row__order\">{{ row.order }}</span>\r\n <span class=\"line-row__divider\">|</span>\r\n <span class=\"line-row__label\">{{ row.lineNumber ? 'Line ' + row.lineNumber : 'None' }}</span>\r\n </div>\r\n <div class=\"line-row__actions\">\r\n <i class=\"icon delete-icon rem1\" [class.disabled]=\"!isRowEditable(row)\" matTooltip=\"Disassociate line\" (click)=\"confirmDisassociate(row)\"></i>\r\n <i class=\"icon chevron-icon rem1_25\" [class.expanded]=\"isExpanded(row)\" [class.disabled]=\"!isRowEditable(row)\" (click)=\"toggleExpanded(row)\"></i>\r\n </div>\r\n </div>\r\n\r\n <div class=\"line-row__details\" *ngIf=\"isExpanded(row)\">\r\n\r\n <div class=\"details-section\">\r\n <div class=\"details-section__title\">Line setting on the device</div>\r\n <div class=\"details-section__body\">\r\n <div class=\"input-holder input-holder-bottom\">\r\n <div class=\"input-holder__name\">Display caller ID</div>\r\n <input type=\"text\" [(ngModel)]=\"row.displayCallerId\" (ngModelChange)=\"onFieldChange()\">\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Text label</div>\r\n <input type=\"text\" [(ngModel)]=\"row.textLabel\" (ngModelChange)=\"onFieldChange()\">\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top\">\r\n <div class=\"input-holder__name\">External phone number mask</div>\r\n <input type=\"text\" [(ngModel)]=\"row.e164Mask\" (ngModelChange)=\"onFieldChange()\">\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <mat-divider></mat-divider>\r\n\r\n <div class=\"details-section\">\r\n <div class=\"details-section__title\">Multiple Call/Call Waiting Settings</div>\r\n <div class=\"details-section__body\">\r\n <div class=\"input-holder input-holder-bottom\">\r\n <div class=\"input-holder__name\">Max calls</div>\r\n <input type=\"number\" [(ngModel)]=\"row.maxNumberOfCalls\" (ngModelChange)=\"onFieldChange()\">\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top\">\r\n <div class=\"input-holder__name\">Busy trigger</div>\r\n <input type=\"number\" [(ngModel)]=\"row.busyTrigger\" (ngModelChange)=\"onFieldChange()\">\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <mat-divider></mat-divider>\r\n\r\n <div class=\"details-section\">\r\n <div class=\"details-section__title\">Call Recording</div>\r\n <div class=\"details-section__body\">\r\n <div class=\"input-holder input-holder-bottom\">\r\n <div class=\"input-holder__name\">Recording option</div>\r\n <div class=\"input-holder__select-wrap\">\r\n <select class=\"input-holder__select\" [(ngModel)]=\"row.recordingOption\" (ngModelChange)=\"recordingOptionChanged(row)\">\r\n <option *ngFor=\"let option of recordingOptions | keyvalue\" [value]=\"option.value\">{{ option.value }}</option>\r\n </select>\r\n <img class=\"input-holder__select-icon\" src=\"assets/icons/arrow-down-bold.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Recording media source</div>\r\n <div class=\"input-holder__select-wrap\">\r\n <select class=\"input-holder__select\" [(ngModel)]=\"row.recordingMediaSource\" (ngModelChange)=\"onFieldChange()\">\r\n <option *ngFor=\"let source of recordingMediaSources\" [value]=\"source\">{{ source }}</option>\r\n </select>\r\n <img class=\"input-holder__select-icon\" src=\"assets/icons/arrow-down-bold.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top\">\r\n <div class=\"input-holder__name\">Recording profile</div>\r\n <div class=\"input-holder__select-wrap\">\r\n <select class=\"input-holder__select\" [(ngModel)]=\"row.recordingProfile\" (ngModelChange)=\"onFieldChange()\" [disabled]=\"isRecordingProfileDisabled(row)\">\r\n <option *ngFor=\"let profile of recordingProfiles\" [value]=\"profile\">{{ profile }}</option>\r\n </select>\r\n <img class=\"input-holder__select-icon\" src=\"assets/icons/arrow-down-bold.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <mat-divider></mat-divider>\r\n\r\n <div class=\"details-section\">\r\n <div class=\"details-section__title\">Additional Line Settings on the Device</div>\r\n <div class=\"details-section__body\">\r\n <div class=\"input-holder input-holder-bottom\">\r\n <div class=\"input-holder__name\">Visual Message Waiting Indicator Policy</div>\r\n <div class=\"input-holder__select-wrap\">\r\n <select class=\"input-holder__select\" [(ngModel)]=\"row.visualMWI\" (ngModelChange)=\"onFieldChange()\">\r\n <option *ngFor=\"let option of visualMwiOptions\" [value]=\"option\">{{ option }}</option>\r\n </select>\r\n <img class=\"input-holder__select-icon\" src=\"assets/icons/arrow-down-bold.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Ring Setting (Phone Idle)</div>\r\n <div class=\"input-holder__select-wrap\">\r\n <select class=\"input-holder__select\" [(ngModel)]=\"row.ringSettingIdle\" (ngModelChange)=\"onFieldChange()\">\r\n <option *ngFor=\"let option of ringSettingIdleOptions\" [value]=\"option\">{{ option }}</option>\r\n </select>\r\n <img class=\"input-holder__select-icon\" src=\"assets/icons/arrow-down-bold.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Call Pickup Group Audio Alert Setting (Phone Idle)</div>\r\n <div class=\"input-holder__select-wrap\">\r\n <select class=\"input-holder__select\" [(ngModel)]=\"row.pickupAASIdle\" (ngModelChange)=\"onFieldChange()\">\r\n <option *ngFor=\"let option of pickupAasIdleOptions\" [value]=\"option\">{{ option }}</option>\r\n </select>\r\n <img class=\"input-holder__select-icon\" src=\"assets/icons/arrow-down-bold.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Monitoring Calling Search Space</div>\r\n <input type=\"text\" [(ngModel)]=\"row.monitorCSS\" (ngModelChange)=\"onFieldChange()\">\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Audible Message Waiting Indicator Policy</div>\r\n <div class=\"input-holder__select-wrap\">\r\n <select class=\"input-holder__select\" [(ngModel)]=\"row.audibleMWI\" (ngModelChange)=\"onFieldChange()\">\r\n <option *ngFor=\"let option of audibleMwiOptions\" [value]=\"option\">{{ option }}</option>\r\n </select>\r\n <img class=\"input-holder__select-icon\" src=\"assets/icons/arrow-down-bold.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Ring Setting (Phone Active)</div>\r\n <div class=\"input-holder__select-wrap\">\r\n <select class=\"input-holder__select\" [(ngModel)]=\"row.ringSettingActive\" (ngModelChange)=\"onFieldChange()\">\r\n <option *ngFor=\"let option of ringSettingActiveOptions\" [value]=\"option\">{{ option }}</option>\r\n </select>\r\n <img class=\"input-holder__select-icon\" src=\"assets/icons/arrow-down-bold.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Call Pickup Group AudioAlert Setting (Phone Active)</div>\r\n <div class=\"input-holder__select-wrap\">\r\n <select class=\"input-holder__select\" [(ngModel)]=\"row.pickupAASActive\" (ngModelChange)=\"onFieldChange()\">\r\n <option *ngFor=\"let option of pickupAasActiveOptions\" [value]=\"option\">{{ option }}</option>\r\n </select>\r\n <img class=\"input-holder__select-icon\" src=\"assets/icons/arrow-down-bold.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top\">\r\n <div class=\"input-holder__name\">Log Missed Calls</div>\r\n <mat-slide-toggle class=\"custom-toggle\" [(ngModel)]=\"row.logMissedCalls\" (ngModelChange)=\"onFieldChange()\"></mat-slide-toggle>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <mat-divider></mat-divider>\r\n\r\n <div class=\"details-section\">\r\n <div class=\"details-section__title\">Forwarded Call Information Display</div>\r\n <div class=\"details-section__body\">\r\n <div class=\"input-holder input-holder-bottom\">\r\n <div class=\"input-holder__name\">Caller name</div>\r\n <mat-slide-toggle class=\"custom-toggle\" [(ngModel)]=\"row.callerName\" (ngModelChange)=\"onFieldChange()\"></mat-slide-toggle>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Redirected number</div>\r\n <mat-slide-toggle class=\"custom-toggle\" [(ngModel)]=\"row.redirectedNumber\" (ngModelChange)=\"onFieldChange()\"></mat-slide-toggle>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Caller number</div>\r\n <mat-slide-toggle class=\"custom-toggle\" [(ngModel)]=\"row.callerNumber\" (ngModelChange)=\"onFieldChange()\"></mat-slide-toggle>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top\">\r\n <div class=\"input-holder__name\">Dialed number</div>\r\n <mat-slide-toggle class=\"custom-toggle\" [(ngModel)]=\"row.dialedNumber\" (ngModelChange)=\"onFieldChange()\"></mat-slide-toggle>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"disassociate-row\">\r\n <span class=\"link disassociate-link\" (click)=\"confirmDisassociate(row)\">\r\n <i class=\"icon disassociate-icon rem1\"></i>\r\n Disassociate Line\r\n </span>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n </ng-container>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <div class=\"panel-footer\">\r\n <div class=\"panel-footer__actions panel-footer__actions--right\">\r\n <button type=\"button\" class=\"btn-outline\" (click)=\"onCancel()\">Cancel</button>\r\n <button type=\"button\" class=\"btn-filled\" [disabled]=\"!hasChanges\" (click)=\"onSave()\">Save</button>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n", styles: ["@charset \"UTF-8\";@import\"https://fonts.googleapis.com/css?family=Poppins:400,100,200,300,500,600,800,700,900\";*{margin:0}.app-icon{height:20px;width:20px;display:inline-block;cursor:pointer;background-repeat:no-repeat;background-position:center;transition:all .15s ease-out}.icon-webex-left-arrow{background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2216%22 height%3D%2216%22 viewBox%3D%220 0 16 16%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D%3Cg id%3D%22arrow-left%22%3E%0D%3Cpath id%3D%22Vector%22 d%3D%22M5.70746 7.99987L11.3539 2.35352C11.4453 2.25928 11.496 2.13287 11.495 2.00159C11.494 1.8703 11.4414 1.74467 11.3486 1.65183C11.2558 1.55899 11.1301 1.50639 10.9988 1.50539C10.8676 1.50438 10.7411 1.55506 10.6469 1.64647L4.64691 7.64647C4.55316 7.74023 4.50049 7.8674 4.50049 7.99999C4.50049 8.13259 4.55316 8.25975 4.64691 8.35352L10.6469 14.3535C10.6931 14.4011 10.7482 14.439 10.8092 14.4651C10.8702 14.4912 10.9357 14.5049 11.002 14.5054C11.0683 14.5059 11.134 14.4932 11.1954 14.468C11.2567 14.4429 11.3125 14.4058 11.3593 14.3589C11.4062 14.312 11.4433 14.2563 11.4685 14.1949C11.4936 14.1336 11.5063 14.0679 11.5058 14.0016C11.5053 13.9353 11.4916 13.8697 11.4655 13.8088C11.4394 13.7478 11.4015 13.6926 11.3539 13.6465L5.70746 7.99987Z%22 fill%3D%22black%22 fill-opacity%3D%220.95%22%2F%3E%0D%3C%2Fg%3E%0D%3C%2Fsvg%3E%0D\")}.go-back-box{background:white;border-bottom:rgba(0,0,0,.2) 1px solid;height:60px;width:100%;line-height:60px;cursor:pointer}.go-back-box-container{width:95%;margin:auto;margin-left:.5rem;display:flex;justify-content:flex-start}.go-back-box-container .icon-webex-left-arrow,.go-back-box-container .go-back-title{display:block;height:60px}.go-back-box-container .go-back-title{line-height:61px}.go-back-title{display:inline-block;margin:0 10px}.icon{background-repeat:no-repeat;background-position:center;display:inline-block;background-size:contain}.icon.disabled{opacity:.35;cursor:not-allowed;pointer-events:none}.dragger-icon{background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2220%22 height%3D%2220%22 viewBox%3D%220 0 20 20%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D%3Cpath d%3D%22M13.125 5C12.7935 5 12.4755 4.8683 12.2411 4.63388C12.0067 4.39946 11.875 4.08152 11.875 3.75C11.875 3.41848 12.0067 3.10054 12.2411 2.86612C12.4755 2.6317 12.7935 2.5 13.125 2.5C13.4565 2.5 13.7745 2.6317 14.0089 2.86612C14.2433 3.10054 14.375 3.41848 14.375 3.75C14.375 4.08152 14.2433 4.39946 14.0089 4.63388C13.7745 4.8683 13.4565 5 13.125 5ZM6.875 5C6.54348 5 6.22554 4.8683 5.99112 4.63388C5.7567 4.39946 5.625 4.08152 5.625 3.75C5.625 3.41848 5.7567 3.10054 5.99112 2.86612C6.22554 2.6317 6.54348 2.5 6.875 2.5C7.20652 2.5 7.52446 2.6317 7.75888 2.86612C7.9933 3.10054 8.125 3.41848 8.125 3.75C8.125 4.08152 7.9933 4.39946 7.75888 4.63388C7.52446 4.8683 7.20652 5 6.875 5ZM13.125 11.25C12.7935 11.25 12.4755 11.1183 12.2411 10.8839C12.0067 10.6495 11.875 10.3315 11.875 10C11.875 9.66848 12.0067 9.35054 12.2411 9.11612C12.4755 8.8817 12.7935 8.75 13.125 8.75C13.4565 8.75 13.7745 8.8817 14.0089 9.11612C14.2433 9.35054 14.375 9.66848 14.375 10C14.375 10.3315 14.2433 10.6495 14.0089 10.8839C13.7745 11.1183 13.4565 11.25 13.125 11.25ZM6.875 11.25C6.54348 11.25 6.22554 11.1183 5.99112 10.8839C5.7567 10.6495 5.625 10.3315 5.625 10C5.625 9.66848 5.7567 9.35054 5.99112 9.11612C6.22554 8.8817 6.54348 8.75 6.875 8.75C7.20652 8.75 7.52446 8.8817 7.75888 9.11612C7.9933 9.35054 8.125 9.66848 8.125 10C8.125 10.3315 7.9933 10.6495 7.75888 10.8839C7.52446 11.1183 7.20652 11.25 6.875 11.25ZM13.125 17.5C12.7935 17.5 12.4755 17.3683 12.2411 17.1339C12.0067 16.8995 11.875 16.5815 11.875 16.25C11.875 15.9185 12.0067 15.6005 12.2411 15.3661C12.4755 15.1317 12.7935 15 13.125 15C13.4565 15 13.7745 15.1317 14.0089 15.3661C14.2433 15.6005 14.375 15.9185 14.375 16.25C14.375 16.5815 14.2433 16.8995 14.0089 17.1339C13.7745 17.3683 13.4565 17.5 13.125 17.5ZM6.875 17.5C6.54348 17.5 6.22554 17.3683 5.99112 17.1339C5.7567 16.8995 5.625 16.5815 5.625 16.25C5.625 15.9185 5.7567 15.6005 5.99112 15.3661C6.22554 15.1317 6.54348 15 6.875 15C7.20652 15 7.52446 15.1317 7.75888 15.3661C7.9933 15.6005 8.125 15.9185 8.125 16.25C8.125 16.5815 7.9933 16.8995 7.75888 17.1339C7.52446 17.3683 7.20652 17.5 6.875 17.5Z%22 fill%3D%22black%22 fill-opacity%3D%220.95%22%2F%3E%0D%3C%2Fsvg%3E%0D\");cursor:grab}.delete-icon{background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2220%22 height%3D%2220%22 viewBox%3D%220 0 20 20%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D%3Cg id%3D%22Icon%2FDelete%22%3E%0D%3Cpath id%3D%22Remove all%22 d%3D%22M9.5835 1.96973C10.9439 1.96973 12.0528 3.09413 12.1036 4.50119L12.1054 4.60217H15.2853C15.588 4.60217 15.8335 4.85838 15.8335 5.17444C15.8335 5.47074 15.6178 5.71444 15.3413 5.74375L15.2853 5.7467H14.8067L14.0597 16.0795C13.9864 17.0944 13.176 17.8788 12.201 17.8788H6.966C5.99094 17.8788 5.18064 17.0944 5.10725 16.0795L4.35981 5.7467H3.88174C3.59788 5.7467 3.3644 5.52152 3.33633 5.23295L3.3335 5.17444C3.3335 4.87813 3.54923 4.63443 3.82569 4.60512L3.88174 4.60217H7.06157C7.06157 3.14831 8.19067 1.96973 9.5835 1.96973ZM13.7072 5.7467L5.45977 5.7467L6.20064 15.9934C6.23085 16.4113 6.56451 16.7343 6.966 16.7343H12.201C12.6025 16.7343 12.9361 16.4113 12.9664 15.9934L13.7072 5.7467ZM11.0089 8.15024C11.2928 8.15024 11.5263 8.37542 11.5543 8.66399L11.5572 8.72251V13.7585C11.5572 14.0745 11.3117 14.3307 11.0089 14.3307C10.7251 14.3307 10.4916 14.1056 10.4635 13.817L10.4607 13.7585L10.4607 8.72251C10.4607 8.40645 10.7061 8.15024 11.0089 8.15024ZM8.15806 8.15024C8.44192 8.15024 8.6754 8.37542 8.70347 8.66399L8.7063 8.72251L8.7063 13.7585C8.7063 14.0745 8.46084 14.3307 8.15806 14.3307C7.87419 14.3307 7.64072 14.1056 7.61264 13.817L7.60981 13.7585L7.60981 8.72251C7.60981 8.40645 7.85527 8.15024 8.15806 8.15024ZM9.5835 3.11427C8.82339 3.11427 8.20225 3.73527 8.16031 4.51773L8.15806 4.60217L11.0089 4.60217C11.0089 3.78042 10.3707 3.11427 9.5835 3.11427Z%22 fill%3D%22%23737480%22%2F%3E%0D%3C%2Fg%3E%0D%3C%2Fsvg%3E%0D\");cursor:pointer}.chevron-icon{background-image:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2232%22 height%3D%2232%22 viewBox%3D%220 0 32 32%22%3E%3Cpath d%3D%22m22.53 15.47-12-12a.75.75 0 1 0-1.06 1.06L20.94 16 9.47 27.47a.75.75 0 1 0 1.06 1.06l12-12a.75.75 0 0 0 0-1.06%22%2F%3E%3C%2Fsvg%3E\");cursor:pointer;transition:transform .15s ease-in-out}.chevron-icon.expanded{transform:rotate(-90deg)}.disassociate-icon{background-image:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 height%3D%2224px%22 viewBox%3D%220 0 24 24%22 width%3D%2224px%22 fill%3D%22%23000000%22%3E%3Cpath d%3D%22M0 0h24v24H0V0z%22 fill%3D%22none%22%2F%3E%3Cpath d%3D%22M17 7h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1 0 1.43-.98 2.63-2.31 2.98l1.46 1.46C20.88 15.61 22 13.95 22 12c0-2.76-2.24-5-5-5zm-1 4h-2.19l2 2H16zM2 4.27l3.11 3.11C3.29 8.12 2 9.91 2 12c0 2.76 2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1 0-1.59 1.21-2.9 2.76-3.07L8.73 11H8v2h2.73L13 15.27V17h1.73l4.01 4L20 19.74 3.27 3 2 4.27z%22%2F%3E%3Cpath d%3D%22M0 24V0%22 fill%3D%22none%22%2F%3E%3C%2Fsvg%3E\");cursor:pointer}.close-icon{background-image:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2232%22 height%3D%2232%22 viewBox%3D%220 0 32 32%22%3E%3Cpath d%3D%22m17.06 16 8.47-8.47a.75.75 0 0 0-.242-1.224.75.75 0 0 0-.819.163L16 14.94 7.53 6.47A.75.75 0 1 0 6.47 7.53L14.94 16l-8.47 8.47a.75.75 0 0 0 1.06 1.06L16 17.06l8.47 8.47a.75.75 0 1 0 1.06-1.06z%22%2F%3E%3C%2Fsvg%3E\");filter:brightness(0) invert(1);cursor:pointer}.rem1{height:1rem;width:1rem;vertical-align:middle}.rem1_25{height:1.25rem;width:1.25rem;vertical-align:middle}.text-description{font-size:.875rem;font-weight:400}.associate-lines{display:flex;flex-direction:column;min-height:100%;background:#F3F6F6;font-family:Poppins,Poppins,sans-serif}.breadcrumb-bar{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1.5rem;background:#ffffff}.breadcrumb-bar .breadcrumb-title{font-size:.875rem;font-weight:500;color:#0d56aa}.breadcrumb-bar .code-icon{font-family:Courier New,monospace;font-size:.875rem;font-weight:700;color:#0d56aa;cursor:pointer}.panel-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.5rem;background:linear-gradient(90deg,#0d56aa,#0d56ab)}.panel-header__title{font-size:1rem;font-weight:500;font-family:Poppins,Poppins,sans-serif;color:#fff}.panel-body{flex:1;padding:2rem 1.5rem}.panel-card{max-width:56rem;margin:0 auto;display:flex;flex-direction:column;gap:1rem;padding:2rem;border:1px solid rgba(0,0,0,.2);border-radius:.5rem;background:#ffffff}.step-description{font-size:.875rem;color:#333}.link{color:#0d56aa;cursor:pointer}.link:hover{text-decoration:underline}.lines-list{display:flex;flex-direction:column;border-radius:4px;overflow:hidden;gap:1rem}.line-row{display:flex;flex-direction:column;background:#ffffff;border:1px solid rgba(0,0,0,.2);border-radius:8px}.line-row.cdk-drag-preview{box-shadow:0 5px 10px #0003}.line-row.cdk-drag-placeholder{opacity:.4}.line-row__header{display:flex;align-items:center;justify-content:space-between;padding:.625rem 1rem}.line-row__header:hover{background:#fafafa;border-radius:8px}.line-row__main{display:flex;align-items:center;gap:.75rem}.line-row__order{font-size:.875rem;color:#000000f2;min-width:1rem;margin-right:100px}.line-row__divider{color:#333}.line-row__label{font-size:.875rem;color:#000000f2}.line-row__actions{display:flex;align-items:center;gap:1rem}.line-row__details{display:flex;flex-direction:column;gap:1rem;padding:0 1rem 1.5rem 3rem;border-top:1px solid #e8e8e8}.details-section{display:flex;gap:1.5rem;padding:1rem 0}.details-section__title{width:9.5rem;flex-shrink:0;font-size:.875rem;font-weight:600;color:#000000f2}.details-section__body{flex:1;min-width:0;display:flex;flex-direction:column}.details-section__body .mat-divider{border-top-color:#e8e8e8!important}.input-holder{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;min-height:2rem}.input-holder.input-holder-top{padding-top:.75rem}.input-holder.input-holder-bottom{padding-bottom:.75rem}.input-holder.input-holder-top-bottom{padding:.75rem 0}.input-holder__name{width:12rem;flex-shrink:0;font-size:.75rem;color:#333}.input-holder input{flex:1;min-width:0;height:21px;padding:4px 12px;box-sizing:content-box;background:#fff;border:solid .0625rem rgba(0,0,0,.5019607843);border-radius:8px;font-family:inherit;font-size:.875rem;color:#000000f2}.input-holder input:focus{outline:none;box-shadow:0 0 0 .12rem #fff,0 0 0 .25rem #1170cf,0 0 0 .3rem #1170cf59}.input-holder__select-wrap{position:relative;display:flex;align-items:center;flex:1;min-width:0}.input-holder__select-wrap .input-holder__select{width:100%;appearance:none;background:#fff;border:solid .0625rem rgba(0,0,0,.5019607843)!important;border-radius:6px;font-family:inherit;font-size:.8125rem;color:#000000f2;cursor:pointer;height:21px;padding:4px 28px 4px 12px;box-sizing:content-box}.input-holder__select-wrap .input-holder__select:hover{background-color:#0000001f!important}.input-holder__select-wrap .input-holder__select:focus{outline:none;color:#000000b3;box-shadow:0 0 0 .12rem #fff,0 0 0 .25rem #1170cf,0 0 0 .3rem #1170cf59}.input-holder__select-wrap .input-holder__select:disabled{background:#f5f5f5!important;color:#babcc5;cursor:not-allowed}.input-holder__select-wrap .input-holder__select-icon{position:absolute;right:.5rem;font-size:1.125rem;height:1.125rem;width:1.125rem;color:#0006;pointer-events:none}.disassociate-row{display:flex;justify-content:flex-end;padding-top:1rem}.disassociate-link{display:inline-flex;align-items:center;gap:.375rem;font-size:.875rem;font-weight:500}.btn-outline,.btn-filled{padding:.313rem .75rem;border-radius:50px;font-weight:500;font-size:.875rem;font-family:Poppins,Poppins,sans-serif;cursor:pointer;transition:background-color .1s ease-in-out;white-space:nowrap}.btn-outline{background:#ffffff;border:1px solid rgba(0,0,0,.2);color:#0006}.btn-outline:hover:not(:disabled){background:#f5f5f5}.btn-outline:disabled{color:#babcc5;border-color:#dfe3e7;cursor:not-allowed}.btn-filled{background:rgba(0,0,0,.9490196078);color:#fff;border:1px solid transparent}.btn-filled:hover:not(:disabled){background:#2a2a2a}.btn-filled:disabled{background:#DFE3E7;color:#babcc5;cursor:not-allowed}.panel-footer{position:sticky;bottom:0;background:#ffffff;border-top:1px solid rgba(0,0,0,.2);padding:1rem 1.5rem}.panel-footer__actions{display:flex;justify-content:flex-end;gap:.75rem;max-width:56rem;margin:0 auto}::ng-deep .associate-lines .custom-toggle .mat-slide-toggle-bar{position:relative!important;width:48px!important;height:25px!important;flex-shrink:0!important;border-radius:13px!important;background-color:#ccc!important}::ng-deep .associate-lines .custom-toggle .mat-slide-toggle-thumb{height:20px!important;width:20px!important;position:absolute!important;border-radius:50%!important;display:flex!important;align-items:center!important;justify-content:center!important;left:3px!important;top:5px!important;background-color:#fff!important}::ng-deep .associate-lines .custom-toggle .mat-slide-toggle-thumb:after{content:\"\\d7\";font-size:14px!important;color:#8e9fb7!important;line-height:1!important;display:block!important;pointer-events:none!important}::ng-deep .associate-lines .custom-toggle.mat-checked .mat-slide-toggle-thumb{left:calc(100% - 11px)!important}::ng-deep .associate-lines .custom-toggle.mat-checked .mat-slide-toggle-thumb:after{content:\"\\2713\";color:#0d56aa!important;font-weight:700!important;font-size:10px!important}::ng-deep .associate-lines .custom-toggle.mat-checked .mat-slide-toggle-bar{background:#1170cf!important}\n"], dependencies: [{ kind: "directive", type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i9.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i9.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i9.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i9.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i9.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i9.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i10.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i10.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i10.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "component", type: i11.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: i12.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i13.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matSlideToggle"] }, { kind: "component", type: i14.AppLoaderComponent, selector: "app-loader" }, { kind: "pipe", type: i8.KeyValuePipe, name: "keyvalue" }] });
294
+ AssociateLinesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: AssociateLinesComponent, selector: "app-associate-lines", inputs: { token: "token", host: "host", siteId: "siteId", userId: "userId", deviceName: "deviceName" }, outputs: { goBack: "goBack" }, ngImport: i0, template: "<tk-loader *ngIf=\"dataPending\"></tk-loader>\r\n\r\n<div class=\"go-back-box\" (click)=\"onGoBack()\">\r\n <div class=\"go-back-box-container\">\r\n <span class=\"app-icon icon-webex-left-arrow\"></span>\r\n <span class=\"go-back-title\">Device General Info</span>\r\n </div>\r\n</div>\r\n\r\n<div class=\"associate-lines\" >\r\n <div class=\"panel-header\">\r\n <span class=\"panel-header__title\">Associate Lines</span>\r\n </div>\r\n\r\n <div class=\"panel-body\">\r\n <div class=\"panel-card\">\r\n\r\n <p class=\"step-description\">\r\n The users and workspaces that appear on this phone are displayed below in the order of appearance.\r\n Lines must be configured sequentially.\r\n </p>\r\n\r\n <div class=\"lines-list\" cdkDropList (cdkDropListDropped)=\"drop($event)\">\r\n <ng-container *ngFor=\"let row of rows\">\r\n\r\n <div class=\"line-row\" cdkDrag [class.expanded]=\"isExpanded(row)\">\r\n <div class=\"line-row__header\">\r\n <div class=\"line-row__main\">\r\n <i class=\"icon dragger-icon rem1\" cdkDragHandle></i>\r\n <span class=\"line-row__order\">{{ row.order }}</span>\r\n <span class=\"line-row__divider\">|</span>\r\n <span class=\"line-row__label\">{{ row.lineNumber ? 'Line ' + row.lineNumber : 'None' }}</span>\r\n </div>\r\n <div class=\"line-row__actions\">\r\n <i class=\"icon delete-icon rem1\" [class.disabled]=\"!isRowEditable(row)\" matTooltip=\"Disassociate line\" (click)=\"confirmDisassociate(row)\"></i>\r\n <i class=\"icon chevron-icon rem1_25\" [class.expanded]=\"isExpanded(row)\" [class.disabled]=\"!isRowEditable(row)\" (click)=\"toggleExpanded(row)\"></i>\r\n </div>\r\n </div>\r\n\r\n <div class=\"line-row__details\" *ngIf=\"isExpanded(row)\">\r\n\r\n <div class=\"details-section\">\r\n <div class=\"details-section__title\">Line setting on the device</div>\r\n <div class=\"details-section__body\">\r\n <div class=\"input-holder input-holder-bottom\">\r\n <div class=\"input-holder__name\">Display caller ID</div>\r\n <input type=\"text\" [(ngModel)]=\"row.displayCallerId\" (ngModelChange)=\"onFieldChange()\">\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Text label</div>\r\n <input type=\"text\" [(ngModel)]=\"row.textLabel\" (ngModelChange)=\"onFieldChange()\">\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top\">\r\n <div class=\"input-holder__name\">External phone number mask</div>\r\n <input type=\"text\" [(ngModel)]=\"row.e164Mask\" (ngModelChange)=\"onFieldChange()\">\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <mat-divider></mat-divider>\r\n\r\n <div class=\"details-section\">\r\n <div class=\"details-section__title\">Multiple Call/Call Waiting Settings</div>\r\n <div class=\"details-section__body\">\r\n <div class=\"input-holder input-holder-bottom\">\r\n <div class=\"input-holder__name\">Max calls</div>\r\n <input type=\"number\" [(ngModel)]=\"row.maxNumberOfCalls\" (ngModelChange)=\"onFieldChange()\">\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top\">\r\n <div class=\"input-holder__name\">Busy trigger</div>\r\n <input type=\"number\" [(ngModel)]=\"row.busyTrigger\" (ngModelChange)=\"onFieldChange()\">\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <mat-divider></mat-divider>\r\n\r\n <div class=\"details-section\">\r\n <div class=\"details-section__title\">Call Recording</div>\r\n <div class=\"details-section__body\">\r\n <div class=\"input-holder input-holder-bottom\">\r\n <div class=\"input-holder__name\">Recording option</div>\r\n <div class=\"input-holder__select-wrap\">\r\n <select class=\"input-holder__select\" [(ngModel)]=\"row.recordingOption\" (ngModelChange)=\"recordingOptionChanged(row)\">\r\n <option *ngFor=\"let option of recordingOptions | keyvalue\" [value]=\"option.value\">{{ option.value }}</option>\r\n </select>\r\n <img class=\"input-holder__select-icon\" src=\"assets/icons/arrow-down-bold.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Recording media source</div>\r\n <div class=\"input-holder__select-wrap\">\r\n <select class=\"input-holder__select\" [(ngModel)]=\"row.recordingMediaSource\" (ngModelChange)=\"onFieldChange()\">\r\n <option *ngFor=\"let source of recordingMediaSources\" [value]=\"source\">{{ source }}</option>\r\n </select>\r\n <img class=\"input-holder__select-icon\" src=\"assets/icons/arrow-down-bold.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top\">\r\n <div class=\"input-holder__name\">Recording profile</div>\r\n <div class=\"input-holder__select-wrap\">\r\n <select class=\"input-holder__select\" [(ngModel)]=\"row.recordingProfile\" (ngModelChange)=\"onFieldChange()\" [disabled]=\"isRecordingProfileDisabled(row)\">\r\n <option *ngFor=\"let profile of recordingProfiles\" [value]=\"profile\">{{ profile }}</option>\r\n </select>\r\n <img class=\"input-holder__select-icon\" src=\"assets/icons/arrow-down-bold.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <mat-divider></mat-divider>\r\n\r\n <div class=\"details-section\">\r\n <div class=\"details-section__title\">Additional Line Settings on the Device</div>\r\n <div class=\"details-section__body\">\r\n <div class=\"input-holder input-holder-bottom\">\r\n <div class=\"input-holder__name\">Visual Message Waiting Indicator Policy</div>\r\n <div class=\"input-holder__select-wrap\">\r\n <select class=\"input-holder__select\" [(ngModel)]=\"row.visualMWI\" (ngModelChange)=\"onFieldChange()\">\r\n <option *ngFor=\"let option of visualMwiOptions\" [value]=\"option\">{{ option }}</option>\r\n </select>\r\n <img class=\"input-holder__select-icon\" src=\"assets/icons/arrow-down-bold.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Ring Setting (Phone Idle)</div>\r\n <div class=\"input-holder__select-wrap\">\r\n <select class=\"input-holder__select\" [(ngModel)]=\"row.ringSettingIdle\" (ngModelChange)=\"onFieldChange()\">\r\n <option *ngFor=\"let option of ringSettingIdleOptions\" [value]=\"option\">{{ option }}</option>\r\n </select>\r\n <img class=\"input-holder__select-icon\" src=\"assets/icons/arrow-down-bold.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Call Pickup Group Audio Alert Setting (Phone Idle)</div>\r\n <div class=\"input-holder__select-wrap\">\r\n <select class=\"input-holder__select\" [(ngModel)]=\"row.pickupAASIdle\" (ngModelChange)=\"onFieldChange()\">\r\n <option *ngFor=\"let option of pickupAasIdleOptions\" [value]=\"option\">{{ option }}</option>\r\n </select>\r\n <img class=\"input-holder__select-icon\" src=\"assets/icons/arrow-down-bold.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Monitoring Calling Search Space</div>\r\n <input type=\"text\" [(ngModel)]=\"row.monitorCSS\" (ngModelChange)=\"onFieldChange()\">\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Audible Message Waiting Indicator Policy</div>\r\n <div class=\"input-holder__select-wrap\">\r\n <select class=\"input-holder__select\" [(ngModel)]=\"row.audibleMWI\" (ngModelChange)=\"onFieldChange()\">\r\n <option *ngFor=\"let option of audibleMwiOptions\" [value]=\"option\">{{ option }}</option>\r\n </select>\r\n <img class=\"input-holder__select-icon\" src=\"assets/icons/arrow-down-bold.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Ring Setting (Phone Active)</div>\r\n <div class=\"input-holder__select-wrap\">\r\n <select class=\"input-holder__select\" [(ngModel)]=\"row.ringSettingActive\" (ngModelChange)=\"onFieldChange()\">\r\n <option *ngFor=\"let option of ringSettingActiveOptions\" [value]=\"option\">{{ option }}</option>\r\n </select>\r\n <img class=\"input-holder__select-icon\" src=\"assets/icons/arrow-down-bold.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Call Pickup Group AudioAlert Setting (Phone Active)</div>\r\n <div class=\"input-holder__select-wrap\">\r\n <select class=\"input-holder__select\" [(ngModel)]=\"row.pickupAASActive\" (ngModelChange)=\"onFieldChange()\">\r\n <option *ngFor=\"let option of pickupAasActiveOptions\" [value]=\"option\">{{ option }}</option>\r\n </select>\r\n <img class=\"input-holder__select-icon\" src=\"assets/icons/arrow-down-bold.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top\">\r\n <div class=\"input-holder__name\">Log Missed Calls</div>\r\n <mat-slide-toggle class=\"custom-toggle\" [(ngModel)]=\"row.logMissedCalls\" (ngModelChange)=\"onFieldChange()\"></mat-slide-toggle>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <mat-divider></mat-divider>\r\n\r\n <div class=\"details-section\">\r\n <div class=\"details-section__title\">Forwarded Call Information Display</div>\r\n <div class=\"details-section__body\">\r\n <div class=\"input-holder input-holder-bottom\">\r\n <div class=\"input-holder__name\">Caller name</div>\r\n <mat-slide-toggle class=\"custom-toggle\" [(ngModel)]=\"row.callerName\" (ngModelChange)=\"onFieldChange()\"></mat-slide-toggle>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Redirected number</div>\r\n <mat-slide-toggle class=\"custom-toggle\" [(ngModel)]=\"row.redirectedNumber\" (ngModelChange)=\"onFieldChange()\"></mat-slide-toggle>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Caller number</div>\r\n <mat-slide-toggle class=\"custom-toggle\" [(ngModel)]=\"row.callerNumber\" (ngModelChange)=\"onFieldChange()\"></mat-slide-toggle>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top\">\r\n <div class=\"input-holder__name\">Dialed number</div>\r\n <mat-slide-toggle class=\"custom-toggle\" [(ngModel)]=\"row.dialedNumber\" (ngModelChange)=\"onFieldChange()\"></mat-slide-toggle>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"disassociate-row\">\r\n <span class=\"link disassociate-link\" (click)=\"confirmDisassociate(row)\">\r\n <i class=\"icon disassociate-icon rem1\"></i>\r\n Disassociate Line\r\n </span>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n </ng-container>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <div class=\"panel-footer\">\r\n <div class=\"panel-footer__actions panel-footer__actions--right\">\r\n <button type=\"button\" class=\"btn-outline\" (click)=\"onCancel()\">Cancel</button>\r\n <button type=\"button\" class=\"btn-filled\" [disabled]=\"!hasChanges\" (click)=\"onSave()\">Save</button>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n", styles: ["@charset \"UTF-8\";@import\"https://fonts.googleapis.com/css?family=Poppins:400,100,200,300,500,600,800,700,900\";*{margin:0}.app-icon{height:20px;width:20px;display:inline-block;cursor:pointer;background-repeat:no-repeat;background-position:center;transition:all .15s ease-out}.icon-webex-left-arrow{background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2216%22 height%3D%2216%22 viewBox%3D%220 0 16 16%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D%3Cg id%3D%22arrow-left%22%3E%0D%3Cpath id%3D%22Vector%22 d%3D%22M5.70746 7.99987L11.3539 2.35352C11.4453 2.25928 11.496 2.13287 11.495 2.00159C11.494 1.8703 11.4414 1.74467 11.3486 1.65183C11.2558 1.55899 11.1301 1.50639 10.9988 1.50539C10.8676 1.50438 10.7411 1.55506 10.6469 1.64647L4.64691 7.64647C4.55316 7.74023 4.50049 7.8674 4.50049 7.99999C4.50049 8.13259 4.55316 8.25975 4.64691 8.35352L10.6469 14.3535C10.6931 14.4011 10.7482 14.439 10.8092 14.4651C10.8702 14.4912 10.9357 14.5049 11.002 14.5054C11.0683 14.5059 11.134 14.4932 11.1954 14.468C11.2567 14.4429 11.3125 14.4058 11.3593 14.3589C11.4062 14.312 11.4433 14.2563 11.4685 14.1949C11.4936 14.1336 11.5063 14.0679 11.5058 14.0016C11.5053 13.9353 11.4916 13.8697 11.4655 13.8088C11.4394 13.7478 11.4015 13.6926 11.3539 13.6465L5.70746 7.99987Z%22 fill%3D%22black%22 fill-opacity%3D%220.95%22%2F%3E%0D%3C%2Fg%3E%0D%3C%2Fsvg%3E%0D\")}.go-back-box{background:white;border-bottom:rgba(0,0,0,.2) 1px solid;height:60px;width:100%;line-height:60px;cursor:pointer}.go-back-box-container{width:95%;margin:auto;margin-left:.5rem;display:flex;justify-content:flex-start}.go-back-box-container .icon-webex-left-arrow,.go-back-box-container .go-back-title{display:block;height:60px}.go-back-box-container .go-back-title{line-height:61px}.go-back-title{display:inline-block;margin:0 10px}.icon{background-repeat:no-repeat;background-position:center;display:inline-block;background-size:contain}.icon.disabled{opacity:.35;cursor:not-allowed;pointer-events:none}.dragger-icon{background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2220%22 height%3D%2220%22 viewBox%3D%220 0 20 20%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D%3Cpath d%3D%22M13.125 5C12.7935 5 12.4755 4.8683 12.2411 4.63388C12.0067 4.39946 11.875 4.08152 11.875 3.75C11.875 3.41848 12.0067 3.10054 12.2411 2.86612C12.4755 2.6317 12.7935 2.5 13.125 2.5C13.4565 2.5 13.7745 2.6317 14.0089 2.86612C14.2433 3.10054 14.375 3.41848 14.375 3.75C14.375 4.08152 14.2433 4.39946 14.0089 4.63388C13.7745 4.8683 13.4565 5 13.125 5ZM6.875 5C6.54348 5 6.22554 4.8683 5.99112 4.63388C5.7567 4.39946 5.625 4.08152 5.625 3.75C5.625 3.41848 5.7567 3.10054 5.99112 2.86612C6.22554 2.6317 6.54348 2.5 6.875 2.5C7.20652 2.5 7.52446 2.6317 7.75888 2.86612C7.9933 3.10054 8.125 3.41848 8.125 3.75C8.125 4.08152 7.9933 4.39946 7.75888 4.63388C7.52446 4.8683 7.20652 5 6.875 5ZM13.125 11.25C12.7935 11.25 12.4755 11.1183 12.2411 10.8839C12.0067 10.6495 11.875 10.3315 11.875 10C11.875 9.66848 12.0067 9.35054 12.2411 9.11612C12.4755 8.8817 12.7935 8.75 13.125 8.75C13.4565 8.75 13.7745 8.8817 14.0089 9.11612C14.2433 9.35054 14.375 9.66848 14.375 10C14.375 10.3315 14.2433 10.6495 14.0089 10.8839C13.7745 11.1183 13.4565 11.25 13.125 11.25ZM6.875 11.25C6.54348 11.25 6.22554 11.1183 5.99112 10.8839C5.7567 10.6495 5.625 10.3315 5.625 10C5.625 9.66848 5.7567 9.35054 5.99112 9.11612C6.22554 8.8817 6.54348 8.75 6.875 8.75C7.20652 8.75 7.52446 8.8817 7.75888 9.11612C7.9933 9.35054 8.125 9.66848 8.125 10C8.125 10.3315 7.9933 10.6495 7.75888 10.8839C7.52446 11.1183 7.20652 11.25 6.875 11.25ZM13.125 17.5C12.7935 17.5 12.4755 17.3683 12.2411 17.1339C12.0067 16.8995 11.875 16.5815 11.875 16.25C11.875 15.9185 12.0067 15.6005 12.2411 15.3661C12.4755 15.1317 12.7935 15 13.125 15C13.4565 15 13.7745 15.1317 14.0089 15.3661C14.2433 15.6005 14.375 15.9185 14.375 16.25C14.375 16.5815 14.2433 16.8995 14.0089 17.1339C13.7745 17.3683 13.4565 17.5 13.125 17.5ZM6.875 17.5C6.54348 17.5 6.22554 17.3683 5.99112 17.1339C5.7567 16.8995 5.625 16.5815 5.625 16.25C5.625 15.9185 5.7567 15.6005 5.99112 15.3661C6.22554 15.1317 6.54348 15 6.875 15C7.20652 15 7.52446 15.1317 7.75888 15.3661C7.9933 15.6005 8.125 15.9185 8.125 16.25C8.125 16.5815 7.9933 16.8995 7.75888 17.1339C7.52446 17.3683 7.20652 17.5 6.875 17.5Z%22 fill%3D%22black%22 fill-opacity%3D%220.95%22%2F%3E%0D%3C%2Fsvg%3E%0D\");cursor:grab}.delete-icon{background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2220%22 height%3D%2220%22 viewBox%3D%220 0 20 20%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D%3Cg id%3D%22Icon%2FDelete%22%3E%0D%3Cpath id%3D%22Remove all%22 d%3D%22M9.5835 1.96973C10.9439 1.96973 12.0528 3.09413 12.1036 4.50119L12.1054 4.60217H15.2853C15.588 4.60217 15.8335 4.85838 15.8335 5.17444C15.8335 5.47074 15.6178 5.71444 15.3413 5.74375L15.2853 5.7467H14.8067L14.0597 16.0795C13.9864 17.0944 13.176 17.8788 12.201 17.8788H6.966C5.99094 17.8788 5.18064 17.0944 5.10725 16.0795L4.35981 5.7467H3.88174C3.59788 5.7467 3.3644 5.52152 3.33633 5.23295L3.3335 5.17444C3.3335 4.87813 3.54923 4.63443 3.82569 4.60512L3.88174 4.60217H7.06157C7.06157 3.14831 8.19067 1.96973 9.5835 1.96973ZM13.7072 5.7467L5.45977 5.7467L6.20064 15.9934C6.23085 16.4113 6.56451 16.7343 6.966 16.7343H12.201C12.6025 16.7343 12.9361 16.4113 12.9664 15.9934L13.7072 5.7467ZM11.0089 8.15024C11.2928 8.15024 11.5263 8.37542 11.5543 8.66399L11.5572 8.72251V13.7585C11.5572 14.0745 11.3117 14.3307 11.0089 14.3307C10.7251 14.3307 10.4916 14.1056 10.4635 13.817L10.4607 13.7585L10.4607 8.72251C10.4607 8.40645 10.7061 8.15024 11.0089 8.15024ZM8.15806 8.15024C8.44192 8.15024 8.6754 8.37542 8.70347 8.66399L8.7063 8.72251L8.7063 13.7585C8.7063 14.0745 8.46084 14.3307 8.15806 14.3307C7.87419 14.3307 7.64072 14.1056 7.61264 13.817L7.60981 13.7585L7.60981 8.72251C7.60981 8.40645 7.85527 8.15024 8.15806 8.15024ZM9.5835 3.11427C8.82339 3.11427 8.20225 3.73527 8.16031 4.51773L8.15806 4.60217L11.0089 4.60217C11.0089 3.78042 10.3707 3.11427 9.5835 3.11427Z%22 fill%3D%22%23737480%22%2F%3E%0D%3C%2Fg%3E%0D%3C%2Fsvg%3E%0D\");cursor:pointer}.chevron-icon{background-image:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2232%22 height%3D%2232%22 viewBox%3D%220 0 32 32%22%3E%3Cpath d%3D%22m22.53 15.47-12-12a.75.75 0 1 0-1.06 1.06L20.94 16 9.47 27.47a.75.75 0 1 0 1.06 1.06l12-12a.75.75 0 0 0 0-1.06%22%2F%3E%3C%2Fsvg%3E\");cursor:pointer;transition:transform .15s ease-in-out}.chevron-icon.expanded{transform:rotate(-90deg)}.disassociate-icon{background-image:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 height%3D%2224px%22 viewBox%3D%220 0 24 24%22 width%3D%2224px%22 fill%3D%22%23000000%22%3E%3Cpath d%3D%22M0 0h24v24H0V0z%22 fill%3D%22none%22%2F%3E%3Cpath d%3D%22M17 7h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1 0 1.43-.98 2.63-2.31 2.98l1.46 1.46C20.88 15.61 22 13.95 22 12c0-2.76-2.24-5-5-5zm-1 4h-2.19l2 2H16zM2 4.27l3.11 3.11C3.29 8.12 2 9.91 2 12c0 2.76 2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1 0-1.59 1.21-2.9 2.76-3.07L8.73 11H8v2h2.73L13 15.27V17h1.73l4.01 4L20 19.74 3.27 3 2 4.27z%22%2F%3E%3Cpath d%3D%22M0 24V0%22 fill%3D%22none%22%2F%3E%3C%2Fsvg%3E\");cursor:pointer}.close-icon{background-image:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2232%22 height%3D%2232%22 viewBox%3D%220 0 32 32%22%3E%3Cpath d%3D%22m17.06 16 8.47-8.47a.75.75 0 0 0-.242-1.224.75.75 0 0 0-.819.163L16 14.94 7.53 6.47A.75.75 0 1 0 6.47 7.53L14.94 16l-8.47 8.47a.75.75 0 0 0 1.06 1.06L16 17.06l8.47 8.47a.75.75 0 1 0 1.06-1.06z%22%2F%3E%3C%2Fsvg%3E\");filter:brightness(0) invert(1);cursor:pointer}.rem1{height:1rem;width:1rem;vertical-align:middle}.rem1_25{height:1.25rem;width:1.25rem;vertical-align:middle}.text-description{font-size:.875rem;font-weight:400}.associate-lines{display:flex;flex-direction:column;min-height:100%;background:#F3F6F6;font-family:Poppins,Poppins,sans-serif}.breadcrumb-bar{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1.5rem;background:#ffffff}.breadcrumb-bar .breadcrumb-title{font-size:.875rem;font-weight:500;color:#0d56aa}.breadcrumb-bar .code-icon{font-family:Courier New,monospace;font-size:.875rem;font-weight:700;color:#0d56aa;cursor:pointer}.panel-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.5rem;background:linear-gradient(90deg,#0d56aa,#0d56ab)}.panel-header__title{font-size:1rem;font-weight:500;font-family:Poppins,Poppins,sans-serif;color:#fff}.panel-body{flex:1;padding:2rem 1.5rem}.panel-card{max-width:56rem;margin:0 auto;display:flex;flex-direction:column;gap:1rem;padding:2rem;border:1px solid rgba(0,0,0,.2);border-radius:.5rem;background:#ffffff}.step-description{font-size:.875rem;color:#333}.link{color:#0d56aa;cursor:pointer}.link:hover{text-decoration:underline}.lines-list{display:flex;flex-direction:column;border-radius:4px;overflow:hidden;gap:1rem}.line-row{display:flex;flex-direction:column;background:#ffffff;border:1px solid rgba(0,0,0,.2);border-radius:8px}.line-row.cdk-drag-preview{box-shadow:0 5px 10px #0003}.line-row.cdk-drag-placeholder{opacity:.4}.line-row__header{display:flex;align-items:center;justify-content:space-between;padding:.625rem 1rem}.line-row__header:hover{background:#fafafa;border-radius:8px}.line-row__main{display:flex;align-items:center;gap:.75rem}.line-row__order{font-size:.875rem;color:#000000f2;min-width:1rem;margin-right:100px}.line-row__divider{color:#333}.line-row__label{font-size:.875rem;color:#000000f2}.line-row__actions{display:flex;align-items:center;gap:1rem}.line-row__details{display:flex;flex-direction:column;gap:1rem;padding:0 1rem 1.5rem 3rem;border-top:1px solid #e8e8e8}.details-section{display:flex;gap:1.5rem;padding:1rem 0}.details-section__title{width:9.5rem;flex-shrink:0;font-size:.875rem;font-weight:600;color:#000000f2}.details-section__body{flex:1;min-width:0;display:flex;flex-direction:column}.details-section__body .mat-divider{border-top-color:#e8e8e8!important}.input-holder{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;min-height:2rem}.input-holder.input-holder-top{padding-top:.75rem}.input-holder.input-holder-bottom{padding-bottom:.75rem}.input-holder.input-holder-top-bottom{padding:.75rem 0}.input-holder__name{width:12rem;flex-shrink:0;font-size:.75rem;color:#333}.input-holder input{flex:1;min-width:0;height:21px;padding:4px 12px;box-sizing:content-box;background:#fff;border:solid .0625rem rgba(0,0,0,.5019607843);border-radius:8px;font-family:inherit;font-size:.875rem;color:#000000f2}.input-holder input:focus{outline:none;box-shadow:0 0 0 .12rem #fff,0 0 0 .25rem #1170cf,0 0 0 .3rem #1170cf59}.input-holder__select-wrap{position:relative;display:flex;align-items:center;flex:1;min-width:0}.input-holder__select-wrap .input-holder__select{width:100%;appearance:none;background:#fff;border:solid .0625rem rgba(0,0,0,.5019607843)!important;border-radius:6px;font-family:inherit;font-size:.8125rem;color:#000000f2;cursor:pointer;height:21px;padding:4px 28px 4px 12px;box-sizing:content-box}.input-holder__select-wrap .input-holder__select:hover{background-color:#0000001f!important}.input-holder__select-wrap .input-holder__select:focus{outline:none;color:#000000b3;box-shadow:0 0 0 .12rem #fff,0 0 0 .25rem #1170cf,0 0 0 .3rem #1170cf59}.input-holder__select-wrap .input-holder__select:disabled{background:#f5f5f5!important;color:#babcc5;cursor:not-allowed}.input-holder__select-wrap .input-holder__select-icon{position:absolute;right:.5rem;font-size:1.125rem;height:1.125rem;width:1.125rem;color:#0006;pointer-events:none}.disassociate-row{display:flex;justify-content:flex-end;padding-top:1rem}.disassociate-link{display:inline-flex;align-items:center;gap:.375rem;font-size:.875rem;font-weight:500}.btn-outline,.btn-filled{padding:.313rem .75rem;border-radius:50px;font-weight:500;font-size:.875rem;font-family:Poppins,Poppins,sans-serif;cursor:pointer;transition:background-color .1s ease-in-out;white-space:nowrap}.btn-outline{background:#ffffff;border:1px solid rgba(0,0,0,.2);color:#0006}.btn-outline:hover:not(:disabled){background:#f5f5f5}.btn-outline:disabled{color:#babcc5;border-color:#dfe3e7;cursor:not-allowed}.btn-filled{background:rgba(0,0,0,.9490196078);color:#fff;border:1px solid transparent}.btn-filled:hover:not(:disabled){background:#2a2a2a}.btn-filled:disabled{background:#DFE3E7;color:#babcc5;cursor:not-allowed}.panel-footer{position:sticky;bottom:0;background:#ffffff;border-top:1px solid rgba(0,0,0,.2);padding:1rem 1.5rem}.panel-footer__actions{display:flex;justify-content:flex-end;gap:.75rem;max-width:56rem;margin:0 auto}::ng-deep .associate-lines .custom-toggle .mat-slide-toggle-bar{position:relative!important;width:48px!important;height:25px!important;flex-shrink:0!important;border-radius:13px!important;background-color:#ccc!important}::ng-deep .associate-lines .custom-toggle .mat-slide-toggle-thumb{height:20px!important;width:20px!important;position:absolute!important;border-radius:50%!important;display:flex!important;align-items:center!important;justify-content:center!important;left:3px!important;top:5px!important;background-color:#fff!important}::ng-deep .associate-lines .custom-toggle .mat-slide-toggle-thumb:after{content:\"\\d7\";font-size:14px!important;color:#8e9fb7!important;line-height:1!important;display:block!important;pointer-events:none!important}::ng-deep .associate-lines .custom-toggle.mat-checked .mat-slide-toggle-thumb{left:calc(100% - 11px)!important}::ng-deep .associate-lines .custom-toggle.mat-checked .mat-slide-toggle-thumb:after{content:\"\\2713\";color:#0d56aa!important;font-weight:700!important;font-size:10px!important}::ng-deep .associate-lines .custom-toggle.mat-checked .mat-slide-toggle-bar{background:#1170cf!important}\n"], dependencies: [{ kind: "component", type: i8.TkLoaderComponent, selector: "tk-loader", inputs: ["diameter", "strokeWidth", "backdrop", "color"] }, { kind: "directive", type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i10.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i10.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i10.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i10.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i10.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i10.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i11.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i11.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i11.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "component", type: i12.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: i13.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i14.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matSlideToggle"] }, { kind: "pipe", type: i9.KeyValuePipe, name: "keyvalue" }] });
295
295
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AssociateLinesComponent, decorators: [{
296
296
  type: Component,
297
- args: [{ selector: 'app-associate-lines', template: "<app-loader *ngIf=\"dataPending\"></app-loader>\r\n\r\n<div class=\"go-back-box\" (click)=\"onGoBack()\">\r\n <div class=\"go-back-box-container\">\r\n <span class=\"app-icon icon-webex-left-arrow\"></span>\r\n <span class=\"go-back-title\">Device General Info</span>\r\n </div>\r\n</div>\r\n\r\n<div class=\"associate-lines\" >\r\n <div class=\"panel-header\">\r\n <span class=\"panel-header__title\">Associate Lines</span>\r\n </div>\r\n\r\n <div class=\"panel-body\">\r\n <div class=\"panel-card\">\r\n\r\n <p class=\"step-description\">\r\n The users and workspaces that appear on this phone are displayed below in the order of appearance.\r\n Lines must be configured sequentially.\r\n </p>\r\n\r\n <div class=\"lines-list\" cdkDropList (cdkDropListDropped)=\"drop($event)\">\r\n <ng-container *ngFor=\"let row of rows\">\r\n\r\n <div class=\"line-row\" cdkDrag [class.expanded]=\"isExpanded(row)\">\r\n <div class=\"line-row__header\">\r\n <div class=\"line-row__main\">\r\n <i class=\"icon dragger-icon rem1\" cdkDragHandle></i>\r\n <span class=\"line-row__order\">{{ row.order }}</span>\r\n <span class=\"line-row__divider\">|</span>\r\n <span class=\"line-row__label\">{{ row.lineNumber ? 'Line ' + row.lineNumber : 'None' }}</span>\r\n </div>\r\n <div class=\"line-row__actions\">\r\n <i class=\"icon delete-icon rem1\" [class.disabled]=\"!isRowEditable(row)\" matTooltip=\"Disassociate line\" (click)=\"confirmDisassociate(row)\"></i>\r\n <i class=\"icon chevron-icon rem1_25\" [class.expanded]=\"isExpanded(row)\" [class.disabled]=\"!isRowEditable(row)\" (click)=\"toggleExpanded(row)\"></i>\r\n </div>\r\n </div>\r\n\r\n <div class=\"line-row__details\" *ngIf=\"isExpanded(row)\">\r\n\r\n <div class=\"details-section\">\r\n <div class=\"details-section__title\">Line setting on the device</div>\r\n <div class=\"details-section__body\">\r\n <div class=\"input-holder input-holder-bottom\">\r\n <div class=\"input-holder__name\">Display caller ID</div>\r\n <input type=\"text\" [(ngModel)]=\"row.displayCallerId\" (ngModelChange)=\"onFieldChange()\">\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Text label</div>\r\n <input type=\"text\" [(ngModel)]=\"row.textLabel\" (ngModelChange)=\"onFieldChange()\">\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top\">\r\n <div class=\"input-holder__name\">External phone number mask</div>\r\n <input type=\"text\" [(ngModel)]=\"row.e164Mask\" (ngModelChange)=\"onFieldChange()\">\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <mat-divider></mat-divider>\r\n\r\n <div class=\"details-section\">\r\n <div class=\"details-section__title\">Multiple Call/Call Waiting Settings</div>\r\n <div class=\"details-section__body\">\r\n <div class=\"input-holder input-holder-bottom\">\r\n <div class=\"input-holder__name\">Max calls</div>\r\n <input type=\"number\" [(ngModel)]=\"row.maxNumberOfCalls\" (ngModelChange)=\"onFieldChange()\">\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top\">\r\n <div class=\"input-holder__name\">Busy trigger</div>\r\n <input type=\"number\" [(ngModel)]=\"row.busyTrigger\" (ngModelChange)=\"onFieldChange()\">\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <mat-divider></mat-divider>\r\n\r\n <div class=\"details-section\">\r\n <div class=\"details-section__title\">Call Recording</div>\r\n <div class=\"details-section__body\">\r\n <div class=\"input-holder input-holder-bottom\">\r\n <div class=\"input-holder__name\">Recording option</div>\r\n <div class=\"input-holder__select-wrap\">\r\n <select class=\"input-holder__select\" [(ngModel)]=\"row.recordingOption\" (ngModelChange)=\"recordingOptionChanged(row)\">\r\n <option *ngFor=\"let option of recordingOptions | keyvalue\" [value]=\"option.value\">{{ option.value }}</option>\r\n </select>\r\n <img class=\"input-holder__select-icon\" src=\"assets/icons/arrow-down-bold.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Recording media source</div>\r\n <div class=\"input-holder__select-wrap\">\r\n <select class=\"input-holder__select\" [(ngModel)]=\"row.recordingMediaSource\" (ngModelChange)=\"onFieldChange()\">\r\n <option *ngFor=\"let source of recordingMediaSources\" [value]=\"source\">{{ source }}</option>\r\n </select>\r\n <img class=\"input-holder__select-icon\" src=\"assets/icons/arrow-down-bold.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top\">\r\n <div class=\"input-holder__name\">Recording profile</div>\r\n <div class=\"input-holder__select-wrap\">\r\n <select class=\"input-holder__select\" [(ngModel)]=\"row.recordingProfile\" (ngModelChange)=\"onFieldChange()\" [disabled]=\"isRecordingProfileDisabled(row)\">\r\n <option *ngFor=\"let profile of recordingProfiles\" [value]=\"profile\">{{ profile }}</option>\r\n </select>\r\n <img class=\"input-holder__select-icon\" src=\"assets/icons/arrow-down-bold.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <mat-divider></mat-divider>\r\n\r\n <div class=\"details-section\">\r\n <div class=\"details-section__title\">Additional Line Settings on the Device</div>\r\n <div class=\"details-section__body\">\r\n <div class=\"input-holder input-holder-bottom\">\r\n <div class=\"input-holder__name\">Visual Message Waiting Indicator Policy</div>\r\n <div class=\"input-holder__select-wrap\">\r\n <select class=\"input-holder__select\" [(ngModel)]=\"row.visualMWI\" (ngModelChange)=\"onFieldChange()\">\r\n <option *ngFor=\"let option of visualMwiOptions\" [value]=\"option\">{{ option }}</option>\r\n </select>\r\n <img class=\"input-holder__select-icon\" src=\"assets/icons/arrow-down-bold.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Ring Setting (Phone Idle)</div>\r\n <div class=\"input-holder__select-wrap\">\r\n <select class=\"input-holder__select\" [(ngModel)]=\"row.ringSettingIdle\" (ngModelChange)=\"onFieldChange()\">\r\n <option *ngFor=\"let option of ringSettingIdleOptions\" [value]=\"option\">{{ option }}</option>\r\n </select>\r\n <img class=\"input-holder__select-icon\" src=\"assets/icons/arrow-down-bold.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Call Pickup Group Audio Alert Setting (Phone Idle)</div>\r\n <div class=\"input-holder__select-wrap\">\r\n <select class=\"input-holder__select\" [(ngModel)]=\"row.pickupAASIdle\" (ngModelChange)=\"onFieldChange()\">\r\n <option *ngFor=\"let option of pickupAasIdleOptions\" [value]=\"option\">{{ option }}</option>\r\n </select>\r\n <img class=\"input-holder__select-icon\" src=\"assets/icons/arrow-down-bold.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Monitoring Calling Search Space</div>\r\n <input type=\"text\" [(ngModel)]=\"row.monitorCSS\" (ngModelChange)=\"onFieldChange()\">\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Audible Message Waiting Indicator Policy</div>\r\n <div class=\"input-holder__select-wrap\">\r\n <select class=\"input-holder__select\" [(ngModel)]=\"row.audibleMWI\" (ngModelChange)=\"onFieldChange()\">\r\n <option *ngFor=\"let option of audibleMwiOptions\" [value]=\"option\">{{ option }}</option>\r\n </select>\r\n <img class=\"input-holder__select-icon\" src=\"assets/icons/arrow-down-bold.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Ring Setting (Phone Active)</div>\r\n <div class=\"input-holder__select-wrap\">\r\n <select class=\"input-holder__select\" [(ngModel)]=\"row.ringSettingActive\" (ngModelChange)=\"onFieldChange()\">\r\n <option *ngFor=\"let option of ringSettingActiveOptions\" [value]=\"option\">{{ option }}</option>\r\n </select>\r\n <img class=\"input-holder__select-icon\" src=\"assets/icons/arrow-down-bold.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Call Pickup Group AudioAlert Setting (Phone Active)</div>\r\n <div class=\"input-holder__select-wrap\">\r\n <select class=\"input-holder__select\" [(ngModel)]=\"row.pickupAASActive\" (ngModelChange)=\"onFieldChange()\">\r\n <option *ngFor=\"let option of pickupAasActiveOptions\" [value]=\"option\">{{ option }}</option>\r\n </select>\r\n <img class=\"input-holder__select-icon\" src=\"assets/icons/arrow-down-bold.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top\">\r\n <div class=\"input-holder__name\">Log Missed Calls</div>\r\n <mat-slide-toggle class=\"custom-toggle\" [(ngModel)]=\"row.logMissedCalls\" (ngModelChange)=\"onFieldChange()\"></mat-slide-toggle>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <mat-divider></mat-divider>\r\n\r\n <div class=\"details-section\">\r\n <div class=\"details-section__title\">Forwarded Call Information Display</div>\r\n <div class=\"details-section__body\">\r\n <div class=\"input-holder input-holder-bottom\">\r\n <div class=\"input-holder__name\">Caller name</div>\r\n <mat-slide-toggle class=\"custom-toggle\" [(ngModel)]=\"row.callerName\" (ngModelChange)=\"onFieldChange()\"></mat-slide-toggle>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Redirected number</div>\r\n <mat-slide-toggle class=\"custom-toggle\" [(ngModel)]=\"row.redirectedNumber\" (ngModelChange)=\"onFieldChange()\"></mat-slide-toggle>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Caller number</div>\r\n <mat-slide-toggle class=\"custom-toggle\" [(ngModel)]=\"row.callerNumber\" (ngModelChange)=\"onFieldChange()\"></mat-slide-toggle>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top\">\r\n <div class=\"input-holder__name\">Dialed number</div>\r\n <mat-slide-toggle class=\"custom-toggle\" [(ngModel)]=\"row.dialedNumber\" (ngModelChange)=\"onFieldChange()\"></mat-slide-toggle>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"disassociate-row\">\r\n <span class=\"link disassociate-link\" (click)=\"confirmDisassociate(row)\">\r\n <i class=\"icon disassociate-icon rem1\"></i>\r\n Disassociate Line\r\n </span>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n </ng-container>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <div class=\"panel-footer\">\r\n <div class=\"panel-footer__actions panel-footer__actions--right\">\r\n <button type=\"button\" class=\"btn-outline\" (click)=\"onCancel()\">Cancel</button>\r\n <button type=\"button\" class=\"btn-filled\" [disabled]=\"!hasChanges\" (click)=\"onSave()\">Save</button>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n", styles: ["@charset \"UTF-8\";@import\"https://fonts.googleapis.com/css?family=Poppins:400,100,200,300,500,600,800,700,900\";*{margin:0}.app-icon{height:20px;width:20px;display:inline-block;cursor:pointer;background-repeat:no-repeat;background-position:center;transition:all .15s ease-out}.icon-webex-left-arrow{background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2216%22 height%3D%2216%22 viewBox%3D%220 0 16 16%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D%3Cg id%3D%22arrow-left%22%3E%0D%3Cpath id%3D%22Vector%22 d%3D%22M5.70746 7.99987L11.3539 2.35352C11.4453 2.25928 11.496 2.13287 11.495 2.00159C11.494 1.8703 11.4414 1.74467 11.3486 1.65183C11.2558 1.55899 11.1301 1.50639 10.9988 1.50539C10.8676 1.50438 10.7411 1.55506 10.6469 1.64647L4.64691 7.64647C4.55316 7.74023 4.50049 7.8674 4.50049 7.99999C4.50049 8.13259 4.55316 8.25975 4.64691 8.35352L10.6469 14.3535C10.6931 14.4011 10.7482 14.439 10.8092 14.4651C10.8702 14.4912 10.9357 14.5049 11.002 14.5054C11.0683 14.5059 11.134 14.4932 11.1954 14.468C11.2567 14.4429 11.3125 14.4058 11.3593 14.3589C11.4062 14.312 11.4433 14.2563 11.4685 14.1949C11.4936 14.1336 11.5063 14.0679 11.5058 14.0016C11.5053 13.9353 11.4916 13.8697 11.4655 13.8088C11.4394 13.7478 11.4015 13.6926 11.3539 13.6465L5.70746 7.99987Z%22 fill%3D%22black%22 fill-opacity%3D%220.95%22%2F%3E%0D%3C%2Fg%3E%0D%3C%2Fsvg%3E%0D\")}.go-back-box{background:white;border-bottom:rgba(0,0,0,.2) 1px solid;height:60px;width:100%;line-height:60px;cursor:pointer}.go-back-box-container{width:95%;margin:auto;margin-left:.5rem;display:flex;justify-content:flex-start}.go-back-box-container .icon-webex-left-arrow,.go-back-box-container .go-back-title{display:block;height:60px}.go-back-box-container .go-back-title{line-height:61px}.go-back-title{display:inline-block;margin:0 10px}.icon{background-repeat:no-repeat;background-position:center;display:inline-block;background-size:contain}.icon.disabled{opacity:.35;cursor:not-allowed;pointer-events:none}.dragger-icon{background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2220%22 height%3D%2220%22 viewBox%3D%220 0 20 20%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D%3Cpath d%3D%22M13.125 5C12.7935 5 12.4755 4.8683 12.2411 4.63388C12.0067 4.39946 11.875 4.08152 11.875 3.75C11.875 3.41848 12.0067 3.10054 12.2411 2.86612C12.4755 2.6317 12.7935 2.5 13.125 2.5C13.4565 2.5 13.7745 2.6317 14.0089 2.86612C14.2433 3.10054 14.375 3.41848 14.375 3.75C14.375 4.08152 14.2433 4.39946 14.0089 4.63388C13.7745 4.8683 13.4565 5 13.125 5ZM6.875 5C6.54348 5 6.22554 4.8683 5.99112 4.63388C5.7567 4.39946 5.625 4.08152 5.625 3.75C5.625 3.41848 5.7567 3.10054 5.99112 2.86612C6.22554 2.6317 6.54348 2.5 6.875 2.5C7.20652 2.5 7.52446 2.6317 7.75888 2.86612C7.9933 3.10054 8.125 3.41848 8.125 3.75C8.125 4.08152 7.9933 4.39946 7.75888 4.63388C7.52446 4.8683 7.20652 5 6.875 5ZM13.125 11.25C12.7935 11.25 12.4755 11.1183 12.2411 10.8839C12.0067 10.6495 11.875 10.3315 11.875 10C11.875 9.66848 12.0067 9.35054 12.2411 9.11612C12.4755 8.8817 12.7935 8.75 13.125 8.75C13.4565 8.75 13.7745 8.8817 14.0089 9.11612C14.2433 9.35054 14.375 9.66848 14.375 10C14.375 10.3315 14.2433 10.6495 14.0089 10.8839C13.7745 11.1183 13.4565 11.25 13.125 11.25ZM6.875 11.25C6.54348 11.25 6.22554 11.1183 5.99112 10.8839C5.7567 10.6495 5.625 10.3315 5.625 10C5.625 9.66848 5.7567 9.35054 5.99112 9.11612C6.22554 8.8817 6.54348 8.75 6.875 8.75C7.20652 8.75 7.52446 8.8817 7.75888 9.11612C7.9933 9.35054 8.125 9.66848 8.125 10C8.125 10.3315 7.9933 10.6495 7.75888 10.8839C7.52446 11.1183 7.20652 11.25 6.875 11.25ZM13.125 17.5C12.7935 17.5 12.4755 17.3683 12.2411 17.1339C12.0067 16.8995 11.875 16.5815 11.875 16.25C11.875 15.9185 12.0067 15.6005 12.2411 15.3661C12.4755 15.1317 12.7935 15 13.125 15C13.4565 15 13.7745 15.1317 14.0089 15.3661C14.2433 15.6005 14.375 15.9185 14.375 16.25C14.375 16.5815 14.2433 16.8995 14.0089 17.1339C13.7745 17.3683 13.4565 17.5 13.125 17.5ZM6.875 17.5C6.54348 17.5 6.22554 17.3683 5.99112 17.1339C5.7567 16.8995 5.625 16.5815 5.625 16.25C5.625 15.9185 5.7567 15.6005 5.99112 15.3661C6.22554 15.1317 6.54348 15 6.875 15C7.20652 15 7.52446 15.1317 7.75888 15.3661C7.9933 15.6005 8.125 15.9185 8.125 16.25C8.125 16.5815 7.9933 16.8995 7.75888 17.1339C7.52446 17.3683 7.20652 17.5 6.875 17.5Z%22 fill%3D%22black%22 fill-opacity%3D%220.95%22%2F%3E%0D%3C%2Fsvg%3E%0D\");cursor:grab}.delete-icon{background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2220%22 height%3D%2220%22 viewBox%3D%220 0 20 20%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D%3Cg id%3D%22Icon%2FDelete%22%3E%0D%3Cpath id%3D%22Remove all%22 d%3D%22M9.5835 1.96973C10.9439 1.96973 12.0528 3.09413 12.1036 4.50119L12.1054 4.60217H15.2853C15.588 4.60217 15.8335 4.85838 15.8335 5.17444C15.8335 5.47074 15.6178 5.71444 15.3413 5.74375L15.2853 5.7467H14.8067L14.0597 16.0795C13.9864 17.0944 13.176 17.8788 12.201 17.8788H6.966C5.99094 17.8788 5.18064 17.0944 5.10725 16.0795L4.35981 5.7467H3.88174C3.59788 5.7467 3.3644 5.52152 3.33633 5.23295L3.3335 5.17444C3.3335 4.87813 3.54923 4.63443 3.82569 4.60512L3.88174 4.60217H7.06157C7.06157 3.14831 8.19067 1.96973 9.5835 1.96973ZM13.7072 5.7467L5.45977 5.7467L6.20064 15.9934C6.23085 16.4113 6.56451 16.7343 6.966 16.7343H12.201C12.6025 16.7343 12.9361 16.4113 12.9664 15.9934L13.7072 5.7467ZM11.0089 8.15024C11.2928 8.15024 11.5263 8.37542 11.5543 8.66399L11.5572 8.72251V13.7585C11.5572 14.0745 11.3117 14.3307 11.0089 14.3307C10.7251 14.3307 10.4916 14.1056 10.4635 13.817L10.4607 13.7585L10.4607 8.72251C10.4607 8.40645 10.7061 8.15024 11.0089 8.15024ZM8.15806 8.15024C8.44192 8.15024 8.6754 8.37542 8.70347 8.66399L8.7063 8.72251L8.7063 13.7585C8.7063 14.0745 8.46084 14.3307 8.15806 14.3307C7.87419 14.3307 7.64072 14.1056 7.61264 13.817L7.60981 13.7585L7.60981 8.72251C7.60981 8.40645 7.85527 8.15024 8.15806 8.15024ZM9.5835 3.11427C8.82339 3.11427 8.20225 3.73527 8.16031 4.51773L8.15806 4.60217L11.0089 4.60217C11.0089 3.78042 10.3707 3.11427 9.5835 3.11427Z%22 fill%3D%22%23737480%22%2F%3E%0D%3C%2Fg%3E%0D%3C%2Fsvg%3E%0D\");cursor:pointer}.chevron-icon{background-image:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2232%22 height%3D%2232%22 viewBox%3D%220 0 32 32%22%3E%3Cpath d%3D%22m22.53 15.47-12-12a.75.75 0 1 0-1.06 1.06L20.94 16 9.47 27.47a.75.75 0 1 0 1.06 1.06l12-12a.75.75 0 0 0 0-1.06%22%2F%3E%3C%2Fsvg%3E\");cursor:pointer;transition:transform .15s ease-in-out}.chevron-icon.expanded{transform:rotate(-90deg)}.disassociate-icon{background-image:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 height%3D%2224px%22 viewBox%3D%220 0 24 24%22 width%3D%2224px%22 fill%3D%22%23000000%22%3E%3Cpath d%3D%22M0 0h24v24H0V0z%22 fill%3D%22none%22%2F%3E%3Cpath d%3D%22M17 7h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1 0 1.43-.98 2.63-2.31 2.98l1.46 1.46C20.88 15.61 22 13.95 22 12c0-2.76-2.24-5-5-5zm-1 4h-2.19l2 2H16zM2 4.27l3.11 3.11C3.29 8.12 2 9.91 2 12c0 2.76 2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1 0-1.59 1.21-2.9 2.76-3.07L8.73 11H8v2h2.73L13 15.27V17h1.73l4.01 4L20 19.74 3.27 3 2 4.27z%22%2F%3E%3Cpath d%3D%22M0 24V0%22 fill%3D%22none%22%2F%3E%3C%2Fsvg%3E\");cursor:pointer}.close-icon{background-image:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2232%22 height%3D%2232%22 viewBox%3D%220 0 32 32%22%3E%3Cpath d%3D%22m17.06 16 8.47-8.47a.75.75 0 0 0-.242-1.224.75.75 0 0 0-.819.163L16 14.94 7.53 6.47A.75.75 0 1 0 6.47 7.53L14.94 16l-8.47 8.47a.75.75 0 0 0 1.06 1.06L16 17.06l8.47 8.47a.75.75 0 1 0 1.06-1.06z%22%2F%3E%3C%2Fsvg%3E\");filter:brightness(0) invert(1);cursor:pointer}.rem1{height:1rem;width:1rem;vertical-align:middle}.rem1_25{height:1.25rem;width:1.25rem;vertical-align:middle}.text-description{font-size:.875rem;font-weight:400}.associate-lines{display:flex;flex-direction:column;min-height:100%;background:#F3F6F6;font-family:Poppins,Poppins,sans-serif}.breadcrumb-bar{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1.5rem;background:#ffffff}.breadcrumb-bar .breadcrumb-title{font-size:.875rem;font-weight:500;color:#0d56aa}.breadcrumb-bar .code-icon{font-family:Courier New,monospace;font-size:.875rem;font-weight:700;color:#0d56aa;cursor:pointer}.panel-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.5rem;background:linear-gradient(90deg,#0d56aa,#0d56ab)}.panel-header__title{font-size:1rem;font-weight:500;font-family:Poppins,Poppins,sans-serif;color:#fff}.panel-body{flex:1;padding:2rem 1.5rem}.panel-card{max-width:56rem;margin:0 auto;display:flex;flex-direction:column;gap:1rem;padding:2rem;border:1px solid rgba(0,0,0,.2);border-radius:.5rem;background:#ffffff}.step-description{font-size:.875rem;color:#333}.link{color:#0d56aa;cursor:pointer}.link:hover{text-decoration:underline}.lines-list{display:flex;flex-direction:column;border-radius:4px;overflow:hidden;gap:1rem}.line-row{display:flex;flex-direction:column;background:#ffffff;border:1px solid rgba(0,0,0,.2);border-radius:8px}.line-row.cdk-drag-preview{box-shadow:0 5px 10px #0003}.line-row.cdk-drag-placeholder{opacity:.4}.line-row__header{display:flex;align-items:center;justify-content:space-between;padding:.625rem 1rem}.line-row__header:hover{background:#fafafa;border-radius:8px}.line-row__main{display:flex;align-items:center;gap:.75rem}.line-row__order{font-size:.875rem;color:#000000f2;min-width:1rem;margin-right:100px}.line-row__divider{color:#333}.line-row__label{font-size:.875rem;color:#000000f2}.line-row__actions{display:flex;align-items:center;gap:1rem}.line-row__details{display:flex;flex-direction:column;gap:1rem;padding:0 1rem 1.5rem 3rem;border-top:1px solid #e8e8e8}.details-section{display:flex;gap:1.5rem;padding:1rem 0}.details-section__title{width:9.5rem;flex-shrink:0;font-size:.875rem;font-weight:600;color:#000000f2}.details-section__body{flex:1;min-width:0;display:flex;flex-direction:column}.details-section__body .mat-divider{border-top-color:#e8e8e8!important}.input-holder{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;min-height:2rem}.input-holder.input-holder-top{padding-top:.75rem}.input-holder.input-holder-bottom{padding-bottom:.75rem}.input-holder.input-holder-top-bottom{padding:.75rem 0}.input-holder__name{width:12rem;flex-shrink:0;font-size:.75rem;color:#333}.input-holder input{flex:1;min-width:0;height:21px;padding:4px 12px;box-sizing:content-box;background:#fff;border:solid .0625rem rgba(0,0,0,.5019607843);border-radius:8px;font-family:inherit;font-size:.875rem;color:#000000f2}.input-holder input:focus{outline:none;box-shadow:0 0 0 .12rem #fff,0 0 0 .25rem #1170cf,0 0 0 .3rem #1170cf59}.input-holder__select-wrap{position:relative;display:flex;align-items:center;flex:1;min-width:0}.input-holder__select-wrap .input-holder__select{width:100%;appearance:none;background:#fff;border:solid .0625rem rgba(0,0,0,.5019607843)!important;border-radius:6px;font-family:inherit;font-size:.8125rem;color:#000000f2;cursor:pointer;height:21px;padding:4px 28px 4px 12px;box-sizing:content-box}.input-holder__select-wrap .input-holder__select:hover{background-color:#0000001f!important}.input-holder__select-wrap .input-holder__select:focus{outline:none;color:#000000b3;box-shadow:0 0 0 .12rem #fff,0 0 0 .25rem #1170cf,0 0 0 .3rem #1170cf59}.input-holder__select-wrap .input-holder__select:disabled{background:#f5f5f5!important;color:#babcc5;cursor:not-allowed}.input-holder__select-wrap .input-holder__select-icon{position:absolute;right:.5rem;font-size:1.125rem;height:1.125rem;width:1.125rem;color:#0006;pointer-events:none}.disassociate-row{display:flex;justify-content:flex-end;padding-top:1rem}.disassociate-link{display:inline-flex;align-items:center;gap:.375rem;font-size:.875rem;font-weight:500}.btn-outline,.btn-filled{padding:.313rem .75rem;border-radius:50px;font-weight:500;font-size:.875rem;font-family:Poppins,Poppins,sans-serif;cursor:pointer;transition:background-color .1s ease-in-out;white-space:nowrap}.btn-outline{background:#ffffff;border:1px solid rgba(0,0,0,.2);color:#0006}.btn-outline:hover:not(:disabled){background:#f5f5f5}.btn-outline:disabled{color:#babcc5;border-color:#dfe3e7;cursor:not-allowed}.btn-filled{background:rgba(0,0,0,.9490196078);color:#fff;border:1px solid transparent}.btn-filled:hover:not(:disabled){background:#2a2a2a}.btn-filled:disabled{background:#DFE3E7;color:#babcc5;cursor:not-allowed}.panel-footer{position:sticky;bottom:0;background:#ffffff;border-top:1px solid rgba(0,0,0,.2);padding:1rem 1.5rem}.panel-footer__actions{display:flex;justify-content:flex-end;gap:.75rem;max-width:56rem;margin:0 auto}::ng-deep .associate-lines .custom-toggle .mat-slide-toggle-bar{position:relative!important;width:48px!important;height:25px!important;flex-shrink:0!important;border-radius:13px!important;background-color:#ccc!important}::ng-deep .associate-lines .custom-toggle .mat-slide-toggle-thumb{height:20px!important;width:20px!important;position:absolute!important;border-radius:50%!important;display:flex!important;align-items:center!important;justify-content:center!important;left:3px!important;top:5px!important;background-color:#fff!important}::ng-deep .associate-lines .custom-toggle .mat-slide-toggle-thumb:after{content:\"\\d7\";font-size:14px!important;color:#8e9fb7!important;line-height:1!important;display:block!important;pointer-events:none!important}::ng-deep .associate-lines .custom-toggle.mat-checked .mat-slide-toggle-thumb{left:calc(100% - 11px)!important}::ng-deep .associate-lines .custom-toggle.mat-checked .mat-slide-toggle-thumb:after{content:\"\\2713\";color:#0d56aa!important;font-weight:700!important;font-size:10px!important}::ng-deep .associate-lines .custom-toggle.mat-checked .mat-slide-toggle-bar{background:#1170cf!important}\n"] }]
297
+ args: [{ selector: 'app-associate-lines', template: "<tk-loader *ngIf=\"dataPending\"></tk-loader>\r\n\r\n<div class=\"go-back-box\" (click)=\"onGoBack()\">\r\n <div class=\"go-back-box-container\">\r\n <span class=\"app-icon icon-webex-left-arrow\"></span>\r\n <span class=\"go-back-title\">Device General Info</span>\r\n </div>\r\n</div>\r\n\r\n<div class=\"associate-lines\" >\r\n <div class=\"panel-header\">\r\n <span class=\"panel-header__title\">Associate Lines</span>\r\n </div>\r\n\r\n <div class=\"panel-body\">\r\n <div class=\"panel-card\">\r\n\r\n <p class=\"step-description\">\r\n The users and workspaces that appear on this phone are displayed below in the order of appearance.\r\n Lines must be configured sequentially.\r\n </p>\r\n\r\n <div class=\"lines-list\" cdkDropList (cdkDropListDropped)=\"drop($event)\">\r\n <ng-container *ngFor=\"let row of rows\">\r\n\r\n <div class=\"line-row\" cdkDrag [class.expanded]=\"isExpanded(row)\">\r\n <div class=\"line-row__header\">\r\n <div class=\"line-row__main\">\r\n <i class=\"icon dragger-icon rem1\" cdkDragHandle></i>\r\n <span class=\"line-row__order\">{{ row.order }}</span>\r\n <span class=\"line-row__divider\">|</span>\r\n <span class=\"line-row__label\">{{ row.lineNumber ? 'Line ' + row.lineNumber : 'None' }}</span>\r\n </div>\r\n <div class=\"line-row__actions\">\r\n <i class=\"icon delete-icon rem1\" [class.disabled]=\"!isRowEditable(row)\" matTooltip=\"Disassociate line\" (click)=\"confirmDisassociate(row)\"></i>\r\n <i class=\"icon chevron-icon rem1_25\" [class.expanded]=\"isExpanded(row)\" [class.disabled]=\"!isRowEditable(row)\" (click)=\"toggleExpanded(row)\"></i>\r\n </div>\r\n </div>\r\n\r\n <div class=\"line-row__details\" *ngIf=\"isExpanded(row)\">\r\n\r\n <div class=\"details-section\">\r\n <div class=\"details-section__title\">Line setting on the device</div>\r\n <div class=\"details-section__body\">\r\n <div class=\"input-holder input-holder-bottom\">\r\n <div class=\"input-holder__name\">Display caller ID</div>\r\n <input type=\"text\" [(ngModel)]=\"row.displayCallerId\" (ngModelChange)=\"onFieldChange()\">\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Text label</div>\r\n <input type=\"text\" [(ngModel)]=\"row.textLabel\" (ngModelChange)=\"onFieldChange()\">\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top\">\r\n <div class=\"input-holder__name\">External phone number mask</div>\r\n <input type=\"text\" [(ngModel)]=\"row.e164Mask\" (ngModelChange)=\"onFieldChange()\">\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <mat-divider></mat-divider>\r\n\r\n <div class=\"details-section\">\r\n <div class=\"details-section__title\">Multiple Call/Call Waiting Settings</div>\r\n <div class=\"details-section__body\">\r\n <div class=\"input-holder input-holder-bottom\">\r\n <div class=\"input-holder__name\">Max calls</div>\r\n <input type=\"number\" [(ngModel)]=\"row.maxNumberOfCalls\" (ngModelChange)=\"onFieldChange()\">\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top\">\r\n <div class=\"input-holder__name\">Busy trigger</div>\r\n <input type=\"number\" [(ngModel)]=\"row.busyTrigger\" (ngModelChange)=\"onFieldChange()\">\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <mat-divider></mat-divider>\r\n\r\n <div class=\"details-section\">\r\n <div class=\"details-section__title\">Call Recording</div>\r\n <div class=\"details-section__body\">\r\n <div class=\"input-holder input-holder-bottom\">\r\n <div class=\"input-holder__name\">Recording option</div>\r\n <div class=\"input-holder__select-wrap\">\r\n <select class=\"input-holder__select\" [(ngModel)]=\"row.recordingOption\" (ngModelChange)=\"recordingOptionChanged(row)\">\r\n <option *ngFor=\"let option of recordingOptions | keyvalue\" [value]=\"option.value\">{{ option.value }}</option>\r\n </select>\r\n <img class=\"input-holder__select-icon\" src=\"assets/icons/arrow-down-bold.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Recording media source</div>\r\n <div class=\"input-holder__select-wrap\">\r\n <select class=\"input-holder__select\" [(ngModel)]=\"row.recordingMediaSource\" (ngModelChange)=\"onFieldChange()\">\r\n <option *ngFor=\"let source of recordingMediaSources\" [value]=\"source\">{{ source }}</option>\r\n </select>\r\n <img class=\"input-holder__select-icon\" src=\"assets/icons/arrow-down-bold.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top\">\r\n <div class=\"input-holder__name\">Recording profile</div>\r\n <div class=\"input-holder__select-wrap\">\r\n <select class=\"input-holder__select\" [(ngModel)]=\"row.recordingProfile\" (ngModelChange)=\"onFieldChange()\" [disabled]=\"isRecordingProfileDisabled(row)\">\r\n <option *ngFor=\"let profile of recordingProfiles\" [value]=\"profile\">{{ profile }}</option>\r\n </select>\r\n <img class=\"input-holder__select-icon\" src=\"assets/icons/arrow-down-bold.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <mat-divider></mat-divider>\r\n\r\n <div class=\"details-section\">\r\n <div class=\"details-section__title\">Additional Line Settings on the Device</div>\r\n <div class=\"details-section__body\">\r\n <div class=\"input-holder input-holder-bottom\">\r\n <div class=\"input-holder__name\">Visual Message Waiting Indicator Policy</div>\r\n <div class=\"input-holder__select-wrap\">\r\n <select class=\"input-holder__select\" [(ngModel)]=\"row.visualMWI\" (ngModelChange)=\"onFieldChange()\">\r\n <option *ngFor=\"let option of visualMwiOptions\" [value]=\"option\">{{ option }}</option>\r\n </select>\r\n <img class=\"input-holder__select-icon\" src=\"assets/icons/arrow-down-bold.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Ring Setting (Phone Idle)</div>\r\n <div class=\"input-holder__select-wrap\">\r\n <select class=\"input-holder__select\" [(ngModel)]=\"row.ringSettingIdle\" (ngModelChange)=\"onFieldChange()\">\r\n <option *ngFor=\"let option of ringSettingIdleOptions\" [value]=\"option\">{{ option }}</option>\r\n </select>\r\n <img class=\"input-holder__select-icon\" src=\"assets/icons/arrow-down-bold.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Call Pickup Group Audio Alert Setting (Phone Idle)</div>\r\n <div class=\"input-holder__select-wrap\">\r\n <select class=\"input-holder__select\" [(ngModel)]=\"row.pickupAASIdle\" (ngModelChange)=\"onFieldChange()\">\r\n <option *ngFor=\"let option of pickupAasIdleOptions\" [value]=\"option\">{{ option }}</option>\r\n </select>\r\n <img class=\"input-holder__select-icon\" src=\"assets/icons/arrow-down-bold.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Monitoring Calling Search Space</div>\r\n <input type=\"text\" [(ngModel)]=\"row.monitorCSS\" (ngModelChange)=\"onFieldChange()\">\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Audible Message Waiting Indicator Policy</div>\r\n <div class=\"input-holder__select-wrap\">\r\n <select class=\"input-holder__select\" [(ngModel)]=\"row.audibleMWI\" (ngModelChange)=\"onFieldChange()\">\r\n <option *ngFor=\"let option of audibleMwiOptions\" [value]=\"option\">{{ option }}</option>\r\n </select>\r\n <img class=\"input-holder__select-icon\" src=\"assets/icons/arrow-down-bold.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Ring Setting (Phone Active)</div>\r\n <div class=\"input-holder__select-wrap\">\r\n <select class=\"input-holder__select\" [(ngModel)]=\"row.ringSettingActive\" (ngModelChange)=\"onFieldChange()\">\r\n <option *ngFor=\"let option of ringSettingActiveOptions\" [value]=\"option\">{{ option }}</option>\r\n </select>\r\n <img class=\"input-holder__select-icon\" src=\"assets/icons/arrow-down-bold.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Call Pickup Group AudioAlert Setting (Phone Active)</div>\r\n <div class=\"input-holder__select-wrap\">\r\n <select class=\"input-holder__select\" [(ngModel)]=\"row.pickupAASActive\" (ngModelChange)=\"onFieldChange()\">\r\n <option *ngFor=\"let option of pickupAasActiveOptions\" [value]=\"option\">{{ option }}</option>\r\n </select>\r\n <img class=\"input-holder__select-icon\" src=\"assets/icons/arrow-down-bold.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top\">\r\n <div class=\"input-holder__name\">Log Missed Calls</div>\r\n <mat-slide-toggle class=\"custom-toggle\" [(ngModel)]=\"row.logMissedCalls\" (ngModelChange)=\"onFieldChange()\"></mat-slide-toggle>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <mat-divider></mat-divider>\r\n\r\n <div class=\"details-section\">\r\n <div class=\"details-section__title\">Forwarded Call Information Display</div>\r\n <div class=\"details-section__body\">\r\n <div class=\"input-holder input-holder-bottom\">\r\n <div class=\"input-holder__name\">Caller name</div>\r\n <mat-slide-toggle class=\"custom-toggle\" [(ngModel)]=\"row.callerName\" (ngModelChange)=\"onFieldChange()\"></mat-slide-toggle>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Redirected number</div>\r\n <mat-slide-toggle class=\"custom-toggle\" [(ngModel)]=\"row.redirectedNumber\" (ngModelChange)=\"onFieldChange()\"></mat-slide-toggle>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Caller number</div>\r\n <mat-slide-toggle class=\"custom-toggle\" [(ngModel)]=\"row.callerNumber\" (ngModelChange)=\"onFieldChange()\"></mat-slide-toggle>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top\">\r\n <div class=\"input-holder__name\">Dialed number</div>\r\n <mat-slide-toggle class=\"custom-toggle\" [(ngModel)]=\"row.dialedNumber\" (ngModelChange)=\"onFieldChange()\"></mat-slide-toggle>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"disassociate-row\">\r\n <span class=\"link disassociate-link\" (click)=\"confirmDisassociate(row)\">\r\n <i class=\"icon disassociate-icon rem1\"></i>\r\n Disassociate Line\r\n </span>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n </ng-container>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <div class=\"panel-footer\">\r\n <div class=\"panel-footer__actions panel-footer__actions--right\">\r\n <button type=\"button\" class=\"btn-outline\" (click)=\"onCancel()\">Cancel</button>\r\n <button type=\"button\" class=\"btn-filled\" [disabled]=\"!hasChanges\" (click)=\"onSave()\">Save</button>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n", styles: ["@charset \"UTF-8\";@import\"https://fonts.googleapis.com/css?family=Poppins:400,100,200,300,500,600,800,700,900\";*{margin:0}.app-icon{height:20px;width:20px;display:inline-block;cursor:pointer;background-repeat:no-repeat;background-position:center;transition:all .15s ease-out}.icon-webex-left-arrow{background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2216%22 height%3D%2216%22 viewBox%3D%220 0 16 16%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D%3Cg id%3D%22arrow-left%22%3E%0D%3Cpath id%3D%22Vector%22 d%3D%22M5.70746 7.99987L11.3539 2.35352C11.4453 2.25928 11.496 2.13287 11.495 2.00159C11.494 1.8703 11.4414 1.74467 11.3486 1.65183C11.2558 1.55899 11.1301 1.50639 10.9988 1.50539C10.8676 1.50438 10.7411 1.55506 10.6469 1.64647L4.64691 7.64647C4.55316 7.74023 4.50049 7.8674 4.50049 7.99999C4.50049 8.13259 4.55316 8.25975 4.64691 8.35352L10.6469 14.3535C10.6931 14.4011 10.7482 14.439 10.8092 14.4651C10.8702 14.4912 10.9357 14.5049 11.002 14.5054C11.0683 14.5059 11.134 14.4932 11.1954 14.468C11.2567 14.4429 11.3125 14.4058 11.3593 14.3589C11.4062 14.312 11.4433 14.2563 11.4685 14.1949C11.4936 14.1336 11.5063 14.0679 11.5058 14.0016C11.5053 13.9353 11.4916 13.8697 11.4655 13.8088C11.4394 13.7478 11.4015 13.6926 11.3539 13.6465L5.70746 7.99987Z%22 fill%3D%22black%22 fill-opacity%3D%220.95%22%2F%3E%0D%3C%2Fg%3E%0D%3C%2Fsvg%3E%0D\")}.go-back-box{background:white;border-bottom:rgba(0,0,0,.2) 1px solid;height:60px;width:100%;line-height:60px;cursor:pointer}.go-back-box-container{width:95%;margin:auto;margin-left:.5rem;display:flex;justify-content:flex-start}.go-back-box-container .icon-webex-left-arrow,.go-back-box-container .go-back-title{display:block;height:60px}.go-back-box-container .go-back-title{line-height:61px}.go-back-title{display:inline-block;margin:0 10px}.icon{background-repeat:no-repeat;background-position:center;display:inline-block;background-size:contain}.icon.disabled{opacity:.35;cursor:not-allowed;pointer-events:none}.dragger-icon{background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2220%22 height%3D%2220%22 viewBox%3D%220 0 20 20%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D%3Cpath d%3D%22M13.125 5C12.7935 5 12.4755 4.8683 12.2411 4.63388C12.0067 4.39946 11.875 4.08152 11.875 3.75C11.875 3.41848 12.0067 3.10054 12.2411 2.86612C12.4755 2.6317 12.7935 2.5 13.125 2.5C13.4565 2.5 13.7745 2.6317 14.0089 2.86612C14.2433 3.10054 14.375 3.41848 14.375 3.75C14.375 4.08152 14.2433 4.39946 14.0089 4.63388C13.7745 4.8683 13.4565 5 13.125 5ZM6.875 5C6.54348 5 6.22554 4.8683 5.99112 4.63388C5.7567 4.39946 5.625 4.08152 5.625 3.75C5.625 3.41848 5.7567 3.10054 5.99112 2.86612C6.22554 2.6317 6.54348 2.5 6.875 2.5C7.20652 2.5 7.52446 2.6317 7.75888 2.86612C7.9933 3.10054 8.125 3.41848 8.125 3.75C8.125 4.08152 7.9933 4.39946 7.75888 4.63388C7.52446 4.8683 7.20652 5 6.875 5ZM13.125 11.25C12.7935 11.25 12.4755 11.1183 12.2411 10.8839C12.0067 10.6495 11.875 10.3315 11.875 10C11.875 9.66848 12.0067 9.35054 12.2411 9.11612C12.4755 8.8817 12.7935 8.75 13.125 8.75C13.4565 8.75 13.7745 8.8817 14.0089 9.11612C14.2433 9.35054 14.375 9.66848 14.375 10C14.375 10.3315 14.2433 10.6495 14.0089 10.8839C13.7745 11.1183 13.4565 11.25 13.125 11.25ZM6.875 11.25C6.54348 11.25 6.22554 11.1183 5.99112 10.8839C5.7567 10.6495 5.625 10.3315 5.625 10C5.625 9.66848 5.7567 9.35054 5.99112 9.11612C6.22554 8.8817 6.54348 8.75 6.875 8.75C7.20652 8.75 7.52446 8.8817 7.75888 9.11612C7.9933 9.35054 8.125 9.66848 8.125 10C8.125 10.3315 7.9933 10.6495 7.75888 10.8839C7.52446 11.1183 7.20652 11.25 6.875 11.25ZM13.125 17.5C12.7935 17.5 12.4755 17.3683 12.2411 17.1339C12.0067 16.8995 11.875 16.5815 11.875 16.25C11.875 15.9185 12.0067 15.6005 12.2411 15.3661C12.4755 15.1317 12.7935 15 13.125 15C13.4565 15 13.7745 15.1317 14.0089 15.3661C14.2433 15.6005 14.375 15.9185 14.375 16.25C14.375 16.5815 14.2433 16.8995 14.0089 17.1339C13.7745 17.3683 13.4565 17.5 13.125 17.5ZM6.875 17.5C6.54348 17.5 6.22554 17.3683 5.99112 17.1339C5.7567 16.8995 5.625 16.5815 5.625 16.25C5.625 15.9185 5.7567 15.6005 5.99112 15.3661C6.22554 15.1317 6.54348 15 6.875 15C7.20652 15 7.52446 15.1317 7.75888 15.3661C7.9933 15.6005 8.125 15.9185 8.125 16.25C8.125 16.5815 7.9933 16.8995 7.75888 17.1339C7.52446 17.3683 7.20652 17.5 6.875 17.5Z%22 fill%3D%22black%22 fill-opacity%3D%220.95%22%2F%3E%0D%3C%2Fsvg%3E%0D\");cursor:grab}.delete-icon{background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2220%22 height%3D%2220%22 viewBox%3D%220 0 20 20%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D%3Cg id%3D%22Icon%2FDelete%22%3E%0D%3Cpath id%3D%22Remove all%22 d%3D%22M9.5835 1.96973C10.9439 1.96973 12.0528 3.09413 12.1036 4.50119L12.1054 4.60217H15.2853C15.588 4.60217 15.8335 4.85838 15.8335 5.17444C15.8335 5.47074 15.6178 5.71444 15.3413 5.74375L15.2853 5.7467H14.8067L14.0597 16.0795C13.9864 17.0944 13.176 17.8788 12.201 17.8788H6.966C5.99094 17.8788 5.18064 17.0944 5.10725 16.0795L4.35981 5.7467H3.88174C3.59788 5.7467 3.3644 5.52152 3.33633 5.23295L3.3335 5.17444C3.3335 4.87813 3.54923 4.63443 3.82569 4.60512L3.88174 4.60217H7.06157C7.06157 3.14831 8.19067 1.96973 9.5835 1.96973ZM13.7072 5.7467L5.45977 5.7467L6.20064 15.9934C6.23085 16.4113 6.56451 16.7343 6.966 16.7343H12.201C12.6025 16.7343 12.9361 16.4113 12.9664 15.9934L13.7072 5.7467ZM11.0089 8.15024C11.2928 8.15024 11.5263 8.37542 11.5543 8.66399L11.5572 8.72251V13.7585C11.5572 14.0745 11.3117 14.3307 11.0089 14.3307C10.7251 14.3307 10.4916 14.1056 10.4635 13.817L10.4607 13.7585L10.4607 8.72251C10.4607 8.40645 10.7061 8.15024 11.0089 8.15024ZM8.15806 8.15024C8.44192 8.15024 8.6754 8.37542 8.70347 8.66399L8.7063 8.72251L8.7063 13.7585C8.7063 14.0745 8.46084 14.3307 8.15806 14.3307C7.87419 14.3307 7.64072 14.1056 7.61264 13.817L7.60981 13.7585L7.60981 8.72251C7.60981 8.40645 7.85527 8.15024 8.15806 8.15024ZM9.5835 3.11427C8.82339 3.11427 8.20225 3.73527 8.16031 4.51773L8.15806 4.60217L11.0089 4.60217C11.0089 3.78042 10.3707 3.11427 9.5835 3.11427Z%22 fill%3D%22%23737480%22%2F%3E%0D%3C%2Fg%3E%0D%3C%2Fsvg%3E%0D\");cursor:pointer}.chevron-icon{background-image:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2232%22 height%3D%2232%22 viewBox%3D%220 0 32 32%22%3E%3Cpath d%3D%22m22.53 15.47-12-12a.75.75 0 1 0-1.06 1.06L20.94 16 9.47 27.47a.75.75 0 1 0 1.06 1.06l12-12a.75.75 0 0 0 0-1.06%22%2F%3E%3C%2Fsvg%3E\");cursor:pointer;transition:transform .15s ease-in-out}.chevron-icon.expanded{transform:rotate(-90deg)}.disassociate-icon{background-image:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 height%3D%2224px%22 viewBox%3D%220 0 24 24%22 width%3D%2224px%22 fill%3D%22%23000000%22%3E%3Cpath d%3D%22M0 0h24v24H0V0z%22 fill%3D%22none%22%2F%3E%3Cpath d%3D%22M17 7h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1 0 1.43-.98 2.63-2.31 2.98l1.46 1.46C20.88 15.61 22 13.95 22 12c0-2.76-2.24-5-5-5zm-1 4h-2.19l2 2H16zM2 4.27l3.11 3.11C3.29 8.12 2 9.91 2 12c0 2.76 2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1 0-1.59 1.21-2.9 2.76-3.07L8.73 11H8v2h2.73L13 15.27V17h1.73l4.01 4L20 19.74 3.27 3 2 4.27z%22%2F%3E%3Cpath d%3D%22M0 24V0%22 fill%3D%22none%22%2F%3E%3C%2Fsvg%3E\");cursor:pointer}.close-icon{background-image:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2232%22 height%3D%2232%22 viewBox%3D%220 0 32 32%22%3E%3Cpath d%3D%22m17.06 16 8.47-8.47a.75.75 0 0 0-.242-1.224.75.75 0 0 0-.819.163L16 14.94 7.53 6.47A.75.75 0 1 0 6.47 7.53L14.94 16l-8.47 8.47a.75.75 0 0 0 1.06 1.06L16 17.06l8.47 8.47a.75.75 0 1 0 1.06-1.06z%22%2F%3E%3C%2Fsvg%3E\");filter:brightness(0) invert(1);cursor:pointer}.rem1{height:1rem;width:1rem;vertical-align:middle}.rem1_25{height:1.25rem;width:1.25rem;vertical-align:middle}.text-description{font-size:.875rem;font-weight:400}.associate-lines{display:flex;flex-direction:column;min-height:100%;background:#F3F6F6;font-family:Poppins,Poppins,sans-serif}.breadcrumb-bar{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1.5rem;background:#ffffff}.breadcrumb-bar .breadcrumb-title{font-size:.875rem;font-weight:500;color:#0d56aa}.breadcrumb-bar .code-icon{font-family:Courier New,monospace;font-size:.875rem;font-weight:700;color:#0d56aa;cursor:pointer}.panel-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.5rem;background:linear-gradient(90deg,#0d56aa,#0d56ab)}.panel-header__title{font-size:1rem;font-weight:500;font-family:Poppins,Poppins,sans-serif;color:#fff}.panel-body{flex:1;padding:2rem 1.5rem}.panel-card{max-width:56rem;margin:0 auto;display:flex;flex-direction:column;gap:1rem;padding:2rem;border:1px solid rgba(0,0,0,.2);border-radius:.5rem;background:#ffffff}.step-description{font-size:.875rem;color:#333}.link{color:#0d56aa;cursor:pointer}.link:hover{text-decoration:underline}.lines-list{display:flex;flex-direction:column;border-radius:4px;overflow:hidden;gap:1rem}.line-row{display:flex;flex-direction:column;background:#ffffff;border:1px solid rgba(0,0,0,.2);border-radius:8px}.line-row.cdk-drag-preview{box-shadow:0 5px 10px #0003}.line-row.cdk-drag-placeholder{opacity:.4}.line-row__header{display:flex;align-items:center;justify-content:space-between;padding:.625rem 1rem}.line-row__header:hover{background:#fafafa;border-radius:8px}.line-row__main{display:flex;align-items:center;gap:.75rem}.line-row__order{font-size:.875rem;color:#000000f2;min-width:1rem;margin-right:100px}.line-row__divider{color:#333}.line-row__label{font-size:.875rem;color:#000000f2}.line-row__actions{display:flex;align-items:center;gap:1rem}.line-row__details{display:flex;flex-direction:column;gap:1rem;padding:0 1rem 1.5rem 3rem;border-top:1px solid #e8e8e8}.details-section{display:flex;gap:1.5rem;padding:1rem 0}.details-section__title{width:9.5rem;flex-shrink:0;font-size:.875rem;font-weight:600;color:#000000f2}.details-section__body{flex:1;min-width:0;display:flex;flex-direction:column}.details-section__body .mat-divider{border-top-color:#e8e8e8!important}.input-holder{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;min-height:2rem}.input-holder.input-holder-top{padding-top:.75rem}.input-holder.input-holder-bottom{padding-bottom:.75rem}.input-holder.input-holder-top-bottom{padding:.75rem 0}.input-holder__name{width:12rem;flex-shrink:0;font-size:.75rem;color:#333}.input-holder input{flex:1;min-width:0;height:21px;padding:4px 12px;box-sizing:content-box;background:#fff;border:solid .0625rem rgba(0,0,0,.5019607843);border-radius:8px;font-family:inherit;font-size:.875rem;color:#000000f2}.input-holder input:focus{outline:none;box-shadow:0 0 0 .12rem #fff,0 0 0 .25rem #1170cf,0 0 0 .3rem #1170cf59}.input-holder__select-wrap{position:relative;display:flex;align-items:center;flex:1;min-width:0}.input-holder__select-wrap .input-holder__select{width:100%;appearance:none;background:#fff;border:solid .0625rem rgba(0,0,0,.5019607843)!important;border-radius:6px;font-family:inherit;font-size:.8125rem;color:#000000f2;cursor:pointer;height:21px;padding:4px 28px 4px 12px;box-sizing:content-box}.input-holder__select-wrap .input-holder__select:hover{background-color:#0000001f!important}.input-holder__select-wrap .input-holder__select:focus{outline:none;color:#000000b3;box-shadow:0 0 0 .12rem #fff,0 0 0 .25rem #1170cf,0 0 0 .3rem #1170cf59}.input-holder__select-wrap .input-holder__select:disabled{background:#f5f5f5!important;color:#babcc5;cursor:not-allowed}.input-holder__select-wrap .input-holder__select-icon{position:absolute;right:.5rem;font-size:1.125rem;height:1.125rem;width:1.125rem;color:#0006;pointer-events:none}.disassociate-row{display:flex;justify-content:flex-end;padding-top:1rem}.disassociate-link{display:inline-flex;align-items:center;gap:.375rem;font-size:.875rem;font-weight:500}.btn-outline,.btn-filled{padding:.313rem .75rem;border-radius:50px;font-weight:500;font-size:.875rem;font-family:Poppins,Poppins,sans-serif;cursor:pointer;transition:background-color .1s ease-in-out;white-space:nowrap}.btn-outline{background:#ffffff;border:1px solid rgba(0,0,0,.2);color:#0006}.btn-outline:hover:not(:disabled){background:#f5f5f5}.btn-outline:disabled{color:#babcc5;border-color:#dfe3e7;cursor:not-allowed}.btn-filled{background:rgba(0,0,0,.9490196078);color:#fff;border:1px solid transparent}.btn-filled:hover:not(:disabled){background:#2a2a2a}.btn-filled:disabled{background:#DFE3E7;color:#babcc5;cursor:not-allowed}.panel-footer{position:sticky;bottom:0;background:#ffffff;border-top:1px solid rgba(0,0,0,.2);padding:1rem 1.5rem}.panel-footer__actions{display:flex;justify-content:flex-end;gap:.75rem;max-width:56rem;margin:0 auto}::ng-deep .associate-lines .custom-toggle .mat-slide-toggle-bar{position:relative!important;width:48px!important;height:25px!important;flex-shrink:0!important;border-radius:13px!important;background-color:#ccc!important}::ng-deep .associate-lines .custom-toggle .mat-slide-toggle-thumb{height:20px!important;width:20px!important;position:absolute!important;border-radius:50%!important;display:flex!important;align-items:center!important;justify-content:center!important;left:3px!important;top:5px!important;background-color:#fff!important}::ng-deep .associate-lines .custom-toggle .mat-slide-toggle-thumb:after{content:\"\\d7\";font-size:14px!important;color:#8e9fb7!important;line-height:1!important;display:block!important;pointer-events:none!important}::ng-deep .associate-lines .custom-toggle.mat-checked .mat-slide-toggle-thumb{left:calc(100% - 11px)!important}::ng-deep .associate-lines .custom-toggle.mat-checked .mat-slide-toggle-thumb:after{content:\"\\2713\";color:#0d56aa!important;font-weight:700!important;font-size:10px!important}::ng-deep .associate-lines .custom-toggle.mat-checked .mat-slide-toggle-bar{background:#1170cf!important}\n"] }]
298
298
  }], ctorParameters: function () { return [{ type: i1.UserService }, { type: i2.APIService }, { type: i3.SiteSettingsService }, { type: i4.DeviceService }, { type: i5.LineService }, { type: i6.MatDialog }, { type: i7.Router }]; }, propDecorators: { goBack: [{
299
299
  type: Output
300
300
  }], token: [{
@@ -308,4 +308,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
308
308
  }], deviceName: [{
309
309
  type: Input
310
310
  }] } });
311
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzb2NpYXRlLWxpbmVzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1a2kvd2lkZ2V0cy91c2VyLWRldmljZS1tYW5hZ2Uvc3JjL2Fzc29jaWF0ZS1saW5lcy9hc3NvY2lhdGUtbGluZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVraS93aWRnZXRzL3VzZXItZGV2aWNlLW1hbmFnZS9zcmMvYXNzb2NpYXRlLWxpbmVzL2Fzc29jaWF0ZS1saW5lcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxRixPQUFPLEVBQWUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFdEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQU1wRixPQUFPLEVBQWtCLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDckUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBb0M5RSxNQUFNLE9BQU8sdUJBQXVCO0lBc0RsQyxZQUNTLFdBQXdCLEVBQ3ZCLFVBQXNCLEVBQ2IsbUJBQXdDLEVBQ3hDLGFBQTRCLEVBQzVCLFdBQXdCLEVBQ3hCLE1BQWlCLEVBQ2pCLE1BQWM7UUFOeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDdkIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUNiLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FB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WUFBWTtJQUN4QixVQUFVLEVBQUUsWUFBWTtJQUN4QixpQkFBaUIsRUFBRSxvQkFBb0I7SUFDdkMsZUFBZSxFQUFFLGtCQUFrQjtJQUNuQyxjQUFjLEVBQUUsZUFBZTtJQUMvQixVQUFVLEVBQUUsNEJBQTRCO0lBQ3hDLGdCQUFnQixFQUFFLGtDQUFrQztJQUNwRCxZQUFZLEVBQUUsOEJBQThCO0lBQzVDLFlBQVksRUFBRSw4QkFBOEI7Q0FDN0MsQ0FBQztBQUVzQixzQ0FBYyxHQUFnQixJQUFJLEdBQUcsQ0FBQztJQUM1RCxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLGNBQWM7Q0FDbkYsQ0FBQyxDQUFDO3FIQXBEUSx1QkFBdUI7eUdBQXZCLHVCQUF1QixrTUNoRHBDLHE1Y0FtUEE7NEZEbk1hLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSxxQkFBcUI7Z1FBS3JCLE1BQU07c0JBQWYsTUFBTTtnQkFDRSxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBDZGtEcmFnRHJvcCwgbW92ZUl0ZW1JbkFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpbmFsaXplLCBtYXAsIG9mLCBTdWJqZWN0LCBzd2l0Y2hNYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBVc2VyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3VzZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IEFQSVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9hcGkuc2VydmljZSc7XHJcbmltcG9ydCB7IFNpdGVTZXR0aW5nc1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9zaXRlLXNldHRpbmdzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEZXZpY2VTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZGV2aWNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMaW5lU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2xpbmUuc2VydmljZSc7XHJcbmltcG9ydCB7IEJ1dHRvbnRlbXBsYXRlLCBSZWNvcmRpbmdPcHRpb25zIH0gZnJvbSAnLi4vY2xhc3Nlcy9kZXZpY2UnO1xyXG5pbXBvcnQgeyBSRUNPUkRJTkdfTUVESUFfU09VUkNFLCBTVEFUSUNfT1BUSU9OUyB9IGZyb20gJy4uL2FwcC5jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBJbmZvRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vY29uZmlybS1kaWFsb2cvaW5mby1kaWFsb2cuY29tcG9uZW50JztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQXNzb2NpYXRlZExpbmVSb3cge1xyXG4gIGlkOiBudW1iZXI7XHJcbiAgcGtpZDogc3RyaW5nO1xyXG4gIGV4dGVuc2lvbjogc3RyaW5nO1xyXG4gIHJvdXRlUGFydGl0aW9uTmFtZTogc3RyaW5nO1xyXG4gIG9yZGVyOiBudW1iZXI7XHJcbiAgbGluZU51bWJlcjogc3RyaW5nO1xyXG4gIGRpc3BsYXlDYWxsZXJJZDogc3RyaW5nO1xyXG4gIHRleHRMYWJlbDogc3RyaW5nO1xyXG4gIGUxNjRNYXNrOiBzdHJpbmc7XHJcbiAgbWF4TnVtYmVyT2ZDYWxsczogbnVtYmVyO1xyXG4gIGJ1c3lUcmlnZ2VyOiBudW1iZXI7XHJcbiAgcmVjb3JkaW5nT3B0aW9uOiBSZWNvcmRpbmdPcHRpb25zO1xyXG4gIHJlY29yZGluZ01lZGlhU291cmNlOiBzdHJpbmc7XHJcbiAgcmVjb3JkaW5nUHJvZmlsZTogc3RyaW5nO1xyXG4gIHZpc3VhbE1XSTogc3RyaW5nO1xyXG4gIHJpbmdTZXR0aW5nSWRsZTogc3RyaW5nO1xyXG4gIHBpY2t1cEFBU0lkbGU6IHN0cmluZztcclxuICBtb25pdG9yQ1NTOiBzdHJpbmc7XHJcbiAgYXVkaWJsZU1XSTogc3RyaW5nO1xyXG4gIHJpbmdTZXR0aW5nQWN0aXZlOiBzdHJpbmc7XHJcbiAgcGlja3VwQUFTQWN0aXZlOiBzdHJpbmc7XHJcbiAgbG9nTWlzc2VkQ2FsbHM6IGJvb2xlYW47XHJcbiAgY2FsbGVyTmFtZTogYm9vbGVhbjtcclxuICByZWRpcmVjdGVkTnVtYmVyOiBib29sZWFuO1xyXG4gIGNhbGxlck51bWJlcjogYm9vbGVhbjtcclxuICBkaWFsZWROdW1iZXI6IGJvb2xlYW47XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWFzc29jaWF0ZS1saW5lcycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Fzc29jaWF0ZS1saW5lcy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYXNzb2NpYXRlLWxpbmVzLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBc3NvY2lhdGVMaW5lc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBAT3V0cHV0KCkgZ29CYWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBJbnB1dCgpIHRva2VuITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGhvc3QhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgc2l0ZUlkITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHVzZXJJZCE6IHN0cmluZztcclxuICBASW5wdXQoKSBkZXZpY2VOYW1lITogc3RyaW5nO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBwdWJsaWMgZGF0YVBlbmRpbmcgPSBmYWxzZTtcclxuICBwdWJsaWMgZGV2aWNlOiBhbnkgPSBudWxsO1xyXG4gIHB1YmxpYyBoYXNDaGFuZ2VzID0gZmFsc2U7XHJcbiAgcHVibGljIGV4cGFuZGVkT3JkZXI6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG5cclxuICBwdWJsaWMgcmVhZG9ubHkgcmVjb3JkaW5nT3B0aW9ucyA9IFJlY29yZGluZ09wdGlvbnM7XHJcbiAgcHVibGljIHJlYWRvbmx5IHJlY29yZGluZ01lZGlhU291cmNlczogc3RyaW5nW10gPSBSRUNPUkRJTkdfTUVESUFfU09VUkNFO1xyXG4gIHB1YmxpYyByZWNvcmRpbmdQcm9maWxlczogc3RyaW5nW10gPSBbJ05vbmUnXTtcclxuICBwdWJsaWMgcmVhZG9ubHkgdmlzdWFsTXdpT3B0aW9uczogc3RyaW5nW10gPSBTVEFUSUNfT1BUSU9OUy5WSVNVQUxfTVdJO1xyXG4gIHB1YmxpYyByZWFkb25seSBhdWRpYmxlTXdpT3B0aW9uczogc3RyaW5nW10gPSBTVEFUSUNfT1BUSU9OUy5BVURJQkxFX01XSTtcclxuICBwdWJsaWMgcmVhZG9ubHkgcmluZ1NldHRpbmdJZGxlT3B0aW9uczogc3RyaW5nW10gPSBTVEFUSUNfT1BUSU9OUy5SSU5HX1NFVFRJTkdfSURMRTtcclxuICBwdWJsaWMgcmVhZG9ubHkgcmluZ1NldHRpbmdBY3RpdmVPcHRpb25zOiBzdHJpbmdbXSA9IFNUQVRJQ19PUFRJT05TLlJJTkdfU0VUVElOR19BQ1RJVkU7XHJcbiAgcHVibGljIHJlYWRvbmx5IHBpY2t1cEFhc0lkbGVPcHRpb25zOiBzdHJpbmdbXSA9IFNUQVRJQ19PUFRJT05TLkNBTExfUElDS1VQX0dST1VQX0FVRElPX1NFVFRJTkdfUEhPTkVfSURMRTtcclxuICBwdWJsaWMgcmVhZG9ubHkgcGlja3VwQWFzQWN0aXZlT3B0aW9uczogc3RyaW5nW10gPSBTVEFUSUNfT1BUSU9OUy5DQUxMX1BJQ0tVUF9HUk9VUF9BVURJT19TRVRUSU5HX1BIT05FX0FDVElWRTtcclxuXHJcbiAgcHVibGljIHJvd3M6IEFzc29jaWF0ZWRMaW5lUm93W10gPSBbXTtcclxuICBwcml2YXRlIG9yaWdpblJvd3M6IEFzc29jaWF0ZWRMaW5lUm93W10gPSBbXTtcclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgRklFTERfTUFQOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge1xyXG4gICAgZGlzcGxheUNhbGxlcklkOiAnZGlzcGxheUxhYmVsJyxcclxuICAgIHRleHRMYWJlbDogJ3RleHRMYWJlbCcsXHJcbiAgICBlMTY0TWFzazogJ2UxNjRNYXNrJyxcclxuICAgIG1heE51bWJlck9mQ2FsbHM6ICdtYXhOdW1iZXJPZkNhbGxzJyxcclxuICAgIGJ1c3lUcmlnZ2VyOiAnYnVzeVRyaWdnZXInLFxyXG4gICAgcmVjb3JkaW5nT3B0aW9uOiAncmVjb3JkaW5nT3B0aW9uJyxcclxuICAgIHJlY29yZGluZ01lZGlhU291cmNlOiAncmVjb3JkaW5nTWVkaWFTb3VyY2UnLFxyXG4gICAgcmVjb3JkaW5nUHJvZmlsZTogJ3JlY29yZGluZ1Byb2ZpbGUnLFxyXG4gICAgdmlzdWFsTVdJOiAndmlzdWFsTVdJJyxcclxuICAgIHJpbmdTZXR0aW5nSWRsZTogJ3JpbmdTZXR0aW5nX2lkbGUnLFxyXG4gICAgcGlja3VwQUFTSWRsZTogJ3BpY2t1cEFBU19pZGxlJyxcclxuICAgIG1vbml0b3JDU1M6ICdtb25pdG9yQ1NTJyxcclxuICAgIGF1ZGlibGVNV0k6ICdhdWRpYmxlTVdJJyxcclxuICAgIHJpbmdTZXR0aW5nQWN0aXZlOiAncmluZ1NldHRpbmdfYWN0aXZlJyxcclxuICAgIHBpY2t1cEFBU0FjdGl2ZTogJ3BpY2t1cEFBU19hY3RpdmUnLFxyXG4gICAgbG9nTWlzc2VkQ2FsbHM6ICdsb2dNaXNzZWRDYWxsJyxcclxuICAgIGNhbGxlck5hbWU6ICdjYWxsSW5mb0Rpc3BsYXkuY2FsbGVyTmFtZScsXHJcbiAgICByZWRpcmVjdGVkTnVtYmVyOiAnY2FsbEluZm9EaXNwbGF5LnJlZGlyZWN0ZWROdW1iZXInLFxyXG4gICAgY2FsbGVyTnVtYmVyOiAnY2FsbEluZm9EaXNwbGF5LmNhbGxlck51bWJlcicsXHJcbiAgICBkaWFsZWROdW1iZXI6ICdjYWxsSW5mb0Rpc3BsYXkuZGlhbGVkTnVtYmVyJyxcclxuICB9O1xyXG5cclxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBCT09MRUFOX0ZJRUxEUzogU2V0PHN0cmluZz4gPSBuZXcgU2V0KFtcclxuICAgICdsb2dNaXNzZWRDYWxscycsICdjYWxsZXJOYW1lJywgJ3JlZGlyZWN0ZWROdW1iZXInLCAnY2FsbGVyTnVtYmVyJywgJ2RpYWxlZE51bWJlcicsXHJcbiAgXSk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcclxuICAgIHByaXZhdGUgYXBpU2VydmljZTogQVBJU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2l0ZVNldHRpbmdzU2VydmljZTogU2l0ZVNldHRpbmdzU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGV2aWNlU2VydmljZTogRGV2aWNlU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgbGluZVNlcnZpY2U6IExpbmVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBkaWFsb2c6IE1hdERpYWxvZyxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuYXBpU2VydmljZS50b2tlbiA9IHRoaXMudG9rZW47XHJcbiAgICB0aGlzLmFwaVNlcnZpY2UuYXBpVXJsID0gdGhpcy5ob3N0O1xyXG4gICAgdGhpcy5sb2FkRGV2aWNlKCk7XHJcbiAgICB0aGlzLmxvYWRSZWNvcmRpbmdQcm9maWxlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2FkRGV2aWNlKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMudXNlclNlcnZpY2UudXNlckRldmljZSkge1xyXG4gICAgICB0aGlzLmRldmljZSA9IHRoaXMudXNlclNlcnZpY2UudXNlckRldmljZTtcclxuICAgICAgdGhpcy5kYXRhUGVuZGluZyA9IHRydWU7XHJcbiAgICAgIHRoaXMuZmV0Y2hMaW5lU2xvdHMoKVxyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSwgZmluYWxpemUoKCkgPT4gdGhpcy5kYXRhUGVuZGluZyA9IGZhbHNlKSlcclxuICAgICAgICAuc3Vic2NyaWJlKChsaW5lU2xvdHM6IG51bWJlcltdIHwgdW5kZWZpbmVkKSA9PiB0aGlzLmluaXRSb3dzKGxpbmVTbG90cykpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5kYXRhUGVuZGluZyA9IHRydWU7XHJcbiAgICBjb25zdCBkZXZpY2VUeXBlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2RldmljZVR5cGUnKSB8fCAnJztcclxuICAgIHRoaXMudXNlclNlcnZpY2UuZmV0Y2hESVVzZXJEZXZpY2UoTnVtYmVyKHRoaXMuc2l0ZUlkKSwgdGhpcy51c2VySWQsIGRldmljZVR5cGUsIHRoaXMuZGV2aWNlTmFtZSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgc3dpdGNoTWFwKChkZXZpY2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5kZXZpY2UgPSBkZXZpY2U7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5mZXRjaExpbmVTbG90cygpO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcclxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB0aGlzLmRhdGFQZW5kaW5nID0gZmFsc2UpLFxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKGxpbmVTbG90czogbnVtYmVyW10gfCB1bmRlZmluZWQpID0+IHRoaXMuaW5pdFJvd3MobGluZVNsb3RzKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZldGNoTGluZVNsb3RzKCkge1xyXG4gICAgY29uc3QgYnV0dG9uVGVtcGxhdGUgPSB0aGlzLmRldmljZT8uYnV0dG9uVGVtcGxhdGU7XHJcbiAgICBpZiAoIWJ1dHRvblRlbXBsYXRlKSB7XHJcbiAgICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuZGV2aWNlU2VydmljZS5nZXRTbG90c0J5QnV0dG9uVGVtcGxhdGUoTnVtYmVyKHRoaXMuc2l0ZUlkKSwgYnV0dG9uVGVtcGxhdGUpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgodGVtcGxhdGU6IEJ1dHRvbnRlbXBsYXRlKSA9PiB0ZW1wbGF0ZT8ubGluZVNsb3RzKSxcclxuICAgICAgICBjYXRjaEVycm9yKCgpID0+IG9mKHVuZGVmaW5lZCkpLFxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2FkUmVjb3JkaW5nUHJvZmlsZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNpdGVTZXR0aW5nc1NlcnZpY2UuZ2V0UmVjb3JkaW5nUHJvZmlsZShOdW1iZXIodGhpcy5zaXRlSWQpKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHByb2ZpbGVzOiBzdHJpbmdbXSkgPT4ge1xyXG4gICAgICAgIHRoaXMucmVjb3JkaW5nUHJvZmlsZXMgPSBbJ05vbmUnLCAuLi4ocHJvZmlsZXMgfHwgW10pLmZpbHRlcihwcm9maWxlID0+IHByb2ZpbGUgIT09ICdOb25lJyldO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdFJvd3MobGluZVNsb3RzPzogbnVtYmVyW10pOiB2b2lkIHtcclxuICAgIGNvbnN0IGxpbmVzID0gdGhpcy5kZXZpY2U/LmxpbmVzIHx8IFtdO1xyXG4gICAgaWYgKGxpbmVTbG90cz8ubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMucm93cyA9IGxpbmVTbG90cy5tYXAoKHBvc2l0aW9uOiBudW1iZXIpID0+IHtcclxuICAgICAgICBjb25zdCBsaW5lID0gbGluZXMuZmluZCgoY3VycmVudDogYW55KSA9PiBOdW1iZXIoY3VycmVudD8ucG9zaXRpb24pID09PSBOdW1iZXIocG9zaXRpb24pKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVSb3cocG9zaXRpb24sIGxpbmUpO1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGZhbGxiYWNrTGluZXMgPSBsaW5lcy5sZW5ndGggPyBsaW5lcyA6IFt7fSwge30sIHt9XTtcclxuICAgICAgdGhpcy5yb3dzID0gZmFsbGJhY2tMaW5lcy5tYXAoKGxpbmU6IGFueSwgaW5kZXg6IG51bWJlcikgPT4gdGhpcy5jcmVhdGVSb3coaW5kZXggKyAxLCBsaW5lKSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLm9yaWdpblJvd3MgPSB0aGlzLnJvd3MubWFwKHJvdyA9PiAoeyAuLi5yb3cgfSkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVSb3cob3JkZXI6IG51bWJlciwgbGluZTogYW55KTogQXNzb2NpYXRlZExpbmVSb3cge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgaWQ6IG9yZGVyLFxyXG4gICAgICBwa2lkOiBsaW5lPy5wa2lkIHx8ICcnLFxyXG4gICAgICBleHRlbnNpb246IGxpbmU/LmV4dGVuc2lvbiB8fCAnJyxcclxuICAgICAgcm91dGVQYXJ0aXRpb25OYW1lOiBsaW5lPy5yb3V0ZVBhcnRpdGlvbk5hbWUgfHwgJycsXHJcbiAgICAgIG9yZGVyLFxyXG4gICAgICBsaW5lTnVtYmVyOiBsaW5lID8gKGxpbmU/Lm51bWJlciB8fCBsaW5lPy5leHRlbnNpb24gfHwgJycpIDogJycsXHJcbiAgICAgIGRpc3BsYXlDYWxsZXJJZDogbGluZT8uZGlzcGxheUxhYmVsIHx8ICcnLFxyXG4gICAgICB0ZXh0TGFiZWw6IGxpbmU/LnRleHRMYWJlbCB8fCAnJyxcclxuICAgICAgZTE2NE1hc2s6IGxpbmU/LmUxNjRNYXNrIHx8ICcnLFxyXG4gICAgICBtYXhOdW1iZXJPZkNhbGxzOiA2LFxyXG4gICAgICBidXN5VHJpZ2dlcjogMixcclxuICAgICAgcmVjb3JkaW5nT3B0aW9uOiBSZWNvcmRpbmdPcHRpb25zLmRpc2FibGVkLFxyXG4gICAgICByZWNvcmRpbmdNZWRpYVNvdXJjZTogdGhpcy5yZWNvcmRpbmdNZWRpYVNvdXJjZXNbMF0sXHJcbiAgICAgIHJlY29yZGluZ1Byb2ZpbGU6IHRoaXMucmVjb3JkaW5nUHJvZmlsZXNbMF0sXHJcbiAgICAgIHZpc3VhbE1XSTogdGhpcy52aXN1YWxNd2lPcHRpb25zWzBdLFxyXG4gICAgICByaW5nU2V0dGluZ0lkbGU6IHRoaXMucmluZ1NldHRpbmdJZGxlT3B0aW9uc1swXSxcclxuICAgICAgcGlja3VwQUFTSWRsZTogdGhpcy5waWNrdXBBYXNJZGxlT3B0aW9uc1swXSxcclxuICAgICAgbW9uaXRvckNTUzogJ05vbmUnLFxyXG4gICAgICBhdWRpYmxlTVdJOiB0aGlzLmF1ZGlibGVNd2lPcHRpb25zWzBdLFxyXG4gICAgICByaW5nU2V0dGluZ0FjdGl2ZTogdGhpcy5yaW5nU2V0dGluZ0FjdGl2ZU9wdGlvbnNbMF0sXHJcbiAgICAgIHBpY2t1cEFBU0FjdGl2ZTogdGhpcy5waWNrdXBBYXNBY3RpdmVPcHRpb25zWzBdLFxyXG4gICAgICBsb2dNaXNzZWRDYWxsczogbGluZT8ubG9nTWlzc2VkQ2FsbCA9PT0gJ3RydWUnLFxyXG4gICAgICBjYWxsZXJOYW1lOiBsaW5lPy5jYWxsSW5mb0Rpc3BsYXk/LmNhbGxlck5hbWUgPT09ICd0cnVlJyxcclxuICAgICAgcmVkaXJlY3RlZE51bWJlcjogbGluZT8uY2FsbEluZm9EaXNwbGF5Py5yZWRpcmVjdGVkTnVtYmVyID09PSAndHJ1ZScsXHJcbiAgICAgIGNhbGxlck51bWJlcjogbGluZT8uY2FsbEluZm9EaXNwbGF5Py5jYWxsZXJOdW1iZXIgPT09ICd0cnVlJyxcclxuICAgICAgZGlhbGVkTnVtYmVyOiBsaW5lPy5jYWxsSW5mb0Rpc3BsYXk/LmRpYWxlZE51bWJlciA9PT0gJ3RydWUnLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGlzUm93RWRpdGFibGUocm93OiBBc3NvY2lhdGVkTGluZVJvdyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICEhcm93LnBraWQ7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVFeHBhbmRlZChyb3c6IEFzc29jaWF0ZWRMaW5lUm93KTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNSb3dFZGl0YWJsZShyb3cpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuZXhwYW5kZWRPcmRlciA9IHRoaXMuZXhwYW5kZWRPcmRlciA9PT0gcm93Lm9yZGVyID8gbnVsbCA6IHJvdy5vcmRlcjtcclxuICB9XHJcblxyXG4gIGlzRXhwYW5kZWQocm93OiBBc3NvY2lhdGVkTGluZVJvdyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZXhwYW5kZWRPcmRlciA9PT0gcm93Lm9yZGVyO1xyXG4gIH1cclxuXHJcbiAgb25GaWVsZENoYW5nZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuaGFzQ2hhbmdlcyA9IHRydWU7XHJcbiAgfVxyXG5cclxuICByZWNvcmRpbmdPcHRpb25DaGFuZ2VkKHJvdzogQXNzb2NpYXRlZExpbmVSb3cpOiB2b2lkIHtcclxuICAgIGlmIChyb3cucmVjb3JkaW5nT3B0aW9uID09PSBSZWNvcmRpbmdPcHRpb25zLmRpc2FibGVkKSB7XHJcbiAgICAgIHJvdy5yZWNvcmRpbmdQcm9maWxlID0gdGhpcy5yZWNvcmRpbmdQcm9maWxlc1swXTtcclxuICAgIH1cclxuICAgIHRoaXMub25GaWVsZENoYW5nZSgpO1xyXG4gIH1cclxuXHJcbiAgaXNSZWNvcmRpbmdQcm9maWxlRGlzYWJsZWQocm93OiBBc3NvY2lhdGVkTGluZVJvdyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHJvdy5yZWNvcmRpbmdPcHRpb24gPT09IFJlY29yZGluZ09wdGlvbnMuZGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICBkcm9wKGV2ZW50OiBDZGtEcmFnRHJvcDxBc3NvY2lhdGVkTGluZVJvd1tdPik6IHZvaWQge1xyXG4gICAgaWYgKGV2ZW50LnByZXZpb3VzSW5kZXggPT09IGV2ZW50LmN1cnJlbnRJbmRleCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBvcmRlcnMgPSB0aGlzLnJvd3MubWFwKHJvdyA9PiByb3cub3JkZXIpO1xyXG4gICAgbW92ZUl0ZW1JbkFycmF5KHRoaXMucm93cywgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcclxuICAgIHRoaXMucm93cy5mb3JFYWNoKChyb3csIGluZGV4KSA9PiByb3cub3JkZXIgPSBvcmRlcnNbaW5kZXhdKTtcclxuICAgIHRoaXMuaGFzQ2hhbmdlcyA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBjb25maXJtRGlzYXNzb2NpYXRlKHJvdzogQXNzb2NpYXRlZExpbmVSb3cpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5pc1Jvd0VkaXRhYmxlKHJvdykpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihJbmZvRGlhbG9nQ29tcG9uZW50LCB7XHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICB0aXRsZTogJ0Rpc2Fzc29jaWF0ZSBMaW5lJyxcclxuICAgICAgICBtZXNzYWdlOiBgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRpc2Fzc29jaWF0ZSBsaW5lICR7cm93LmxpbmVOdW1iZXIgfHwgJ3RoaXMgbGluZSd9IGZyb20gZGV2aWNlICR7dGhpcy5kZXZpY2VOYW1lIHx8IHRoaXMuZGV2aWNlPy5uYW1lIHx8ICcnfT8gVGhlIGxpbmUgd2lsbCBhbHNvIGJlIHJlbW92ZWQgZnJvbSBpdCdzIFJlbW90ZSBkZXN0aW5hdGlvbiBwcm9maWxlLmAsXHJcbiAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6ICdEaXNhc3NvY2lhdGUnLFxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKVxyXG4gICAgICAuc3Vic2NyaWJlKChjb25maXJtZWQ6IGJvb2xlYW4pID0+IHtcclxuICAgICAgICBpZiAoY29uZmlybWVkKSB7XHJcbiAgICAgICAgICB0aGlzLmRpc2Fzc29jaWF0ZUxpbmUocm93KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkaXNhc3NvY2lhdGVMaW5lKHJvdzogQXNzb2NpYXRlZExpbmVSb3cpOiB2b2lkIHtcclxuICAgIHRoaXMuZGF0YVBlbmRpbmcgPSB0cnVlO1xyXG4gICAgY29uc3QgbGluZTogYW55ID0ge1xyXG4gICAgICBkaXJlY3RvcnlOdW1iZXI6IHtcclxuICAgICAgICBkaXJlY3RvcnlOdW1iZXI6IHJvdy5leHRlbnNpb24sXHJcbiAgICAgICAgcm91dGVQYXJ0aXRpb25OYW1lOiByb3cucm91dGVQYXJ0aXRpb25OYW1lLFxyXG4gICAgICB9LFxyXG4gICAgfTtcclxuICAgIHRoaXMubGluZVNlcnZpY2UuY2hlY2tMaW5lRGVsZXRpb24obGluZSwgTnVtYmVyKHRoaXMuc2l0ZUlkKSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMudXNlclNlcnZpY2UucGVyc2lzdFVzZXJDYWNoZSgpKSxcclxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXHJcbiAgICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy5kYXRhUGVuZGluZyA9IGZhbHNlKSxcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5leHBhbmRlZE9yZGVyID09PSByb3cub3JkZXIpIHtcclxuICAgICAgICAgIHRoaXMuZXhwYW5kZWRPcmRlciA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucm93cyA9IHRoaXMucm93cy5maWx0ZXIoY3VycmVudCA9PiBjdXJyZW50Lm9yZGVyICE9PSByb3cub3JkZXIpO1xyXG4gICAgICAgIHRoaXMucm93cy5mb3JFYWNoKChjdXJyZW50LCBpbmRleCkgPT4gY3VycmVudC5vcmRlciA9IGluZGV4ICsgMSk7XHJcbiAgICAgICAgdGhpcy5oYXNDaGFuZ2VzID0gdHJ1ZTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkdvQmFjaygpOiB2b2lkIHtcclxuICAgIGNvbnN0IFtwYXRoXSA9IHRoaXMucm91dGVyLnVybC5zcGxpdCgnPycpO1xyXG4gICAgY29uc3Qgc2VnbWVudHMgPSBwYXRoLnNwbGl0KCcvJykuZmlsdGVyKEJvb2xlYW4pO1xyXG4gICAgaWYgKHNlZ21lbnRzW3NlZ21lbnRzLmxlbmd0aCAtIDJdID09PSAnYXNzb2NpYXRlLWxpbmVzJykge1xyXG4gICAgICBzZWdtZW50cy5zcGxpY2Uoc2VnbWVudHMubGVuZ3RoIC0gMiwgMik7XHJcbiAgICB9IGVsc2UgaWYgKHNlZ21lbnRzW3NlZ21lbnRzLmxlbmd0aCAtIDFdID09PSAnYXNzb2NpYXRlLWxpbmVzJykge1xyXG4gICAgICBzZWdtZW50cy5wb3AoKTtcclxuICAgIH1cclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJy8nICsgc2VnbWVudHMuam9pbignLycpKTtcclxuICAgIHRoaXMuZ29CYWNrLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIG9uQ2FuY2VsKCk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkdvQmFjaygpO1xyXG4gIH1cclxuXHJcbiAgb25TYXZlKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmhhc0NoYW5nZXMpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGJvZHkgPSB0aGlzLmJ1aWxkVXBkYXRlQm9keSgpO1xyXG4gICAgaWYgKCFib2R5Lmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmhhc0NoYW5nZXMgPSBmYWxzZTtcclxuICAgICAgdGhpcy5vbkdvQmFjaygpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5kYXRhUGVuZGluZyA9IHRydWU7XHJcbiAgICBjb25zdCBkZXZpY2VOYW1lID0gdGhpcy5kZXZpY2VOYW1lIHx8IHRoaXMuZGV2aWNlPy5uYW1lIHx8ICcnO1xyXG4gICAgdGhpcy5kZXZpY2VTZXJ2aWNlLnB1dERldmljZUZpZWxkcyhOdW1iZXIodGhpcy5zaXRlSWQpLCBkZXZpY2VOYW1lLCB0aGlzLnVzZXJTZXJ2aWNlLnVzZXJUb2tlbiwgYm9keSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMudXNlclNlcnZpY2UucGVyc2lzdFVzZXJDYWNoZSgpKSxcclxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXHJcbiAgICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy5kYXRhUGVuZGluZyA9IGZhbHNlKSxcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLm9yaWdpblJvd3MgPSB0aGlzLnJvd3MubWFwKHJvdyA9PiAoeyAuLi5yb3cgfSkpO1xyXG4gICAgICAgIHRoaXMuaGFzQ2hhbmdlcyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMub25Hb0JhY2soKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJ1aWxkVXBkYXRlQm9keSgpOiBzdHJpbmdbXSB7XHJcbiAgICBjb25zdCBib2R5OiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgdGhpcy5yb3dzLmZvckVhY2gocm93ID0+IHtcclxuICAgICAgaWYgKCFyb3cucGtpZCkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBvcmlnaW5Sb3cgPSB0aGlzLm9yaWdpblJvd3MuZmluZChvcmlnID0+IG9yaWcuaWQgPT09IHJvdy5pZCk7XHJcbiAgICAgIGlmICghb3JpZ2luUm93KSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChyb3cub3JkZXIgIT09IG9yaWdpblJvdy5vcmRlcikge1xyXG4gICAgICAgIGJvZHkucHVzaChgZGV2aWNlLmxpbmVBc3NvY2lhdGlvbnMuJHtyb3cucGtpZH0ucG9zaXRpb249JHtyb3cub3JkZXJ9YCk7XHJcbiAgICAgIH1cclxuICAgICAgT2JqZWN0LmtleXMoQXNzb2NpYXRlTGluZXNDb21wb25lbnQuRklFTERfTUFQKS5mb3JFYWNoKHJvd0ZpZWxkID0+IHtcclxuICAgICAgICBjb25zdCBjdXJyZW50VmFsdWUgPSAocm93IGFzIGFueSlbcm93RmllbGRdO1xyXG4gICAgICAgIGNvbnN0IG9yaWdpblZhbHVlID0gKG9yaWdpblJvdyBhcyBhbnkpW3Jvd0ZpZWxkXTtcclxuICAgICAgICBpZiAoY3VycmVudFZhbHVlID09PSBvcmlnaW5WYWx1ZSkge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBjdWNtRmllbGQgPSBBc3NvY2lhdGVMaW5lc0NvbXBvbmVudC5GSUVMRF9NQVBbcm93RmllbGRdO1xyXG4gICAgICAgIGNvbnN0IHZhbHVlID0gQXNzb2NpYXRlTGluZXNDb21wb25lbnQuQk9PTEVBTl9GSUVMRFMuaGFzKHJvd0ZpZWxkKSA/IFN0cmluZyghIWN1cnJlbnRWYWx1ZSkgOiBjdXJyZW50VmFsdWU7XHJcbiAgICAgICAgYm9keS5wdXNoKGBkZXZpY2UubGluZUFzc29jaWF0aW9ucy4ke3Jvdy5wa2lkfS4ke2N1Y21GaWVsZH09JHt2YWx1ZX1gKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBib2R5O1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuIiwiPGFwcC1sb2FkZXIgKm5nSWY9XCJkYXRhUGVuZGluZ1wiPjwvYXBwLWxvYWRlcj5cclxuXHJcbjxkaXYgY2xhc3M9XCJnby1iYWNrLWJveFwiIChjbGljayk9XCJvbkdvQmFjaygpXCI+XHJcbiAgPGRpdiBjbGFzcz1cImdvLWJhY2stYm94LWNvbnRhaW5lclwiPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJhcHAtaWNvbiBpY29uLXdlYmV4LWxlZnQtYXJyb3dcIj48L3NwYW4+XHJcbiAgICA8c3BhbiBjbGFzcz1cImdvLWJhY2stdGl0bGVcIj5EZXZpY2UgR2VuZXJhbCBJbmZvPC9zcGFuPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgY2xhc3M9XCJhc3NvY2lhdGUtbGluZXNcIiA+XHJcbiAgPGRpdiBjbGFzcz1cInBhbmVsLWhlYWRlclwiPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJwYW5lbC1oZWFkZXJfX3RpdGxlXCI+QXNzb2NpYXRlIExpbmVzPC9zcGFuPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IGNsYXNzPVwicGFuZWwtYm9keVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInBhbmVsLWNhcmRcIj5cclxuXHJcbiAgICAgIDxwIGNsYXNzPVwic3RlcC1kZXNjcmlwdGlvblwiPlxyXG4gICAgICAgIFRoZSB1c2VycyBhbmQgd29ya3NwYWNlcyB0aGF0IGFwcGVhciBvbiB0aGlzIHBob25lIGFyZSBkaXNwbGF5ZWQgYmVsb3cgaW4gdGhlIG9yZGVyIG9mIGFwcGVhcmFuY2UuXHJcbiAgICAgICAgTGluZXMgbXVzdCBiZSBjb25maWd1cmVkIHNlcXVlbnRpYWxseS5cclxuICAgICAgPC9wPlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImxpbmVzLWxpc3RcIiBjZGtEcm9wTGlzdCAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3AoJGV2ZW50KVwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHJvdyBvZiByb3dzXCI+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxpbmUtcm93XCIgY2RrRHJhZyBbY2xhc3MuZXhwYW5kZWRdPVwiaXNFeHBhbmRlZChyb3cpXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaW5lLXJvd19faGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxpbmUtcm93X19tYWluXCI+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb24gZHJhZ2dlci1pY29uIHJlbTFcIiBjZGtEcmFnSGFuZGxlPjwvaT5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGluZS1yb3dfX29yZGVyXCI+e3sgcm93Lm9yZGVyIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsaW5lLXJvd19fZGl2aWRlclwiPnw8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxpbmUtcm93X19sYWJlbFwiPnt7IHJvdy5saW5lTnVtYmVyID8gJ0xpbmUgJyArIHJvdy5saW5lTnVtYmVyIDogJ05vbmUnIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaW5lLXJvd19fYWN0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uIGRlbGV0ZS1pY29uIHJlbTFcIiBbY2xhc3MuZGlzYWJsZWRdPVwiIWlzUm93RWRpdGFibGUocm93KVwiIG1hdFRvb2x0aXA9XCJEaXNhc3NvY2lhdGUgbGluZVwiIChjbGljayk9XCJjb25maXJtRGlzYXNzb2NpYXRlKHJvdylcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb24gY2hldnJvbi1pY29uIHJlbTFfMjVcIiBbY2xhc3MuZXhwYW5kZWRdPVwiaXNFeHBhbmRlZChyb3cpXCIgW2NsYXNzLmRpc2FibGVkXT1cIiFpc1Jvd0VkaXRhYmxlKHJvdylcIiAoY2xpY2spPVwidG9nZ2xlRXhwYW5kZWQocm93KVwiPjwvaT5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGluZS1yb3dfX2RldGFpbHNcIiAqbmdJZj1cImlzRXhwYW5kZWQocm93KVwiPlxyXG5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlscy1zZWN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlscy1zZWN0aW9uX190aXRsZVwiPkxpbmUgc2V0dGluZyBvbiB0aGUgZGV2aWNlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlscy1zZWN0aW9uX19ib2R5XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXIgaW5wdXQtaG9sZGVyLWJvdHRvbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX25hbWVcIj5EaXNwbGF5IGNhbGxlciBJRDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFsobmdNb2RlbCldPVwicm93LmRpc3BsYXlDYWxsZXJJZFwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uRmllbGRDaGFuZ2UoKVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXIgaW5wdXQtaG9sZGVyLXRvcC1ib3R0b21cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19uYW1lXCI+VGV4dCBsYWJlbDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFsobmdNb2RlbCldPVwicm93LnRleHRMYWJlbFwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uRmllbGRDaGFuZ2UoKVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXIgaW5wdXQtaG9sZGVyLXRvcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX25hbWVcIj5FeHRlcm5hbCBwaG9uZSBudW1iZXIgbWFzazwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFsobmdNb2RlbCldPVwicm93LmUxNjRNYXNrXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25GaWVsZENoYW5nZSgpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlscy1zZWN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlscy1zZWN0aW9uX190aXRsZVwiPk11bHRpcGxlIENhbGwvQ2FsbCBXYWl0aW5nIFNldHRpbmdzPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlscy1zZWN0aW9uX19ib2R5XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXIgaW5wdXQtaG9sZGVyLWJvdHRvbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX25hbWVcIj5NYXggY2FsbHM8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIFsobmdNb2RlbCldPVwicm93Lm1heE51bWJlck9mQ2FsbHNcIiAobmdNb2RlbENoYW5nZSk9XCJvbkZpZWxkQ2hhbmdlKClcIj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyIGlucHV0LWhvbGRlci10b3BcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19uYW1lXCI+QnVzeSB0cmlnZ2VyPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBbKG5nTW9kZWwpXT1cInJvdy5idXN5VHJpZ2dlclwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uRmllbGRDaGFuZ2UoKVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbHMtc2VjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbHMtc2VjdGlvbl9fdGl0bGVcIj5DYWxsIFJlY29yZGluZzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbHMtc2VjdGlvbl9fYm9keVwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyIGlucHV0LWhvbGRlci1ib3R0b21cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19uYW1lXCI+UmVjb3JkaW5nIG9wdGlvbjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX3NlbGVjdC13cmFwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19zZWxlY3RcIiBbKG5nTW9kZWwpXT1cInJvdy5yZWNvcmRpbmdPcHRpb25cIiAobmdNb2RlbENoYW5nZSk9XCJyZWNvcmRpbmdPcHRpb25DaGFuZ2VkKHJvdylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHJlY29yZGluZ09wdGlvbnMgfCBrZXl2YWx1ZVwiIFt2YWx1ZV09XCJvcHRpb24udmFsdWVcIj57eyBvcHRpb24udmFsdWUgfX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImlucHV0LWhvbGRlcl9fc2VsZWN0LWljb25cIiBzcmM9XCJhc3NldHMvaWNvbnMvYXJyb3ctZG93bi1ib2xkLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXIgaW5wdXQtaG9sZGVyLXRvcC1ib3R0b21cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19uYW1lXCI+UmVjb3JkaW5nIG1lZGlhIHNvdXJjZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX3NlbGVjdC13cmFwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19zZWxlY3RcIiBbKG5nTW9kZWwpXT1cInJvdy5yZWNvcmRpbmdNZWRpYVNvdXJjZVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uRmllbGRDaGFuZ2UoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBzb3VyY2Ugb2YgcmVjb3JkaW5nTWVkaWFTb3VyY2VzXCIgW3ZhbHVlXT1cInNvdXJjZVwiPnt7IHNvdXJjZSB9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW5wdXQtaG9sZGVyX19zZWxlY3QtaWNvblwiIHNyYz1cImFzc2V0cy9pY29ucy9hcnJvdy1kb3duLWJvbGQuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlciBpbnB1dC1ob2xkZXItdG9wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fbmFtZVwiPlJlY29yZGluZyBwcm9maWxlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fc2VsZWN0LXdyYXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX3NlbGVjdFwiIFsobmdNb2RlbCldPVwicm93LnJlY29yZGluZ1Byb2ZpbGVcIiAobmdNb2RlbENoYW5nZSk9XCJvbkZpZWxkQ2hhbmdlKClcIiBbZGlzYWJsZWRdPVwiaXNSZWNvcmRpbmdQcm9maWxlRGlzYWJsZWQocm93KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBwcm9maWxlIG9mIHJlY29yZGluZ1Byb2ZpbGVzXCIgW3ZhbHVlXT1cInByb2ZpbGVcIj57eyBwcm9maWxlIH19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX3NlbGVjdC1pY29uXCIgc3JjPVwiYXNzZXRzL2ljb25zL2Fycm93LWRvd24tYm9sZC5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcblxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWxzLXNlY3Rpb25cIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWxzLXNlY3Rpb25fX3RpdGxlXCI+QWRkaXRpb25hbCBMaW5lIFNldHRpbmdzIG9uIHRoZSBEZXZpY2U8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWxzLXNlY3Rpb25fX2JvZHlcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlciBpbnB1dC1ob2xkZXItYm90dG9tXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fbmFtZVwiPlZpc3VhbCBNZXNzYWdlIFdhaXRpbmcgSW5kaWNhdG9yIFBvbGljeTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX3NlbGVjdC13cmFwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19zZWxlY3RcIiBbKG5nTW9kZWwpXT1cInJvdy52aXN1YWxNV0lcIiAobmdNb2RlbENoYW5nZSk9XCJvbkZpZWxkQ2hhbmdlKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHZpc3VhbE13aU9wdGlvbnNcIiBbdmFsdWVdPVwib3B0aW9uXCI+e3sgb3B0aW9uIH19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX3NlbGVjdC1pY29uXCIgc3JjPVwiYXNzZXRzL2ljb25zL2Fycm93LWRvd24tYm9sZC5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyIGlucHV0LWhvbGRlci10b3AtYm90dG9tXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fbmFtZVwiPlJpbmcgU2V0dGluZyAoUGhvbmUgSWRsZSk8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19zZWxlY3Qtd3JhcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImlucHV0LWhvbGRlcl9fc2VsZWN0XCIgWyhuZ01vZGVsKV09XCJyb3cucmluZ1NldHRpbmdJZGxlXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25GaWVsZENoYW5nZSgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiByaW5nU2V0dGluZ0lkbGVPcHRpb25zXCIgW3ZhbHVlXT1cIm9wdGlvblwiPnt7IG9wdGlvbiB9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW5wdXQtaG9sZGVyX19zZWxlY3QtaWNvblwiIHNyYz1cImFzc2V0cy9pY29ucy9hcnJvdy1kb3duLWJvbGQuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlciBpbnB1dC1ob2xkZXItdG9wLWJvdHRvbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX25hbWVcIj5DYWxsIFBpY2t1cCBHcm91cCBBdWRpbyBBbGVydCBTZXR0aW5nIChQaG9uZSBJZGxlKTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX3NlbGVjdC13cmFwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19zZWxlY3RcIiBbKG5nTW9kZWwpXT1cInJvdy5waWNrdXBBQVNJZGxlXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25GaWVsZENoYW5nZSgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBwaWNrdXBBYXNJZGxlT3B0aW9uc1wiIFt2YWx1ZV09XCJvcHRpb25cIj57eyBvcHRpb24gfX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImlucHV0LWhvbGRlcl9fc2VsZWN0LWljb25cIiBzcmM9XCJhc3NldHMvaWNvbnMvYXJyb3ctZG93bi1ib2xkLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXIgaW5wdXQtaG9sZGVyLXRvcC1ib3R0b21cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19uYW1lXCI+TW9uaXRvcmluZyBDYWxsaW5nIFNlYXJjaCBTcGFjZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFsobmdNb2RlbCldPVwicm93Lm1vbml0b3JDU1NcIiAobmdNb2RlbENoYW5nZSk9XCJvbkZpZWxkQ2hhbmdlKClcIj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyIGlucHV0LWhvbGRlci10b3AtYm90dG9tXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fbmFtZVwiPkF1ZGlibGUgTWVzc2FnZSBXYWl0aW5nIEluZGljYXRvciBQb2xpY3k8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19zZWxlY3Qtd3JhcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImlucHV0LWhvbGRlcl9fc2VsZWN0XCIgWyhuZ01vZGVsKV09XCJyb3cuYXVkaWJsZU1XSVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uRmllbGRDaGFuZ2UoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgYXVkaWJsZU13aU9wdGlvbnNcIiBbdmFsdWVdPVwib3B0aW9uXCI+e3sgb3B0aW9uIH19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX3NlbGVjdC1pY29uXCIgc3JjPVwiYXNzZXRzL2ljb25zL2Fycm93LWRvd24tYm9sZC5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyIGlucHV0LWhvbGRlci10b3AtYm90dG9tXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fbmFtZVwiPlJpbmcgU2V0dGluZyAoUGhvbmUgQWN0aXZlKTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX3NlbGVjdC13cmFwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19zZWxlY3RcIiBbKG5nTW9kZWwpXT1cInJvdy5yaW5nU2V0dGluZ0FjdGl2ZVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uRmllbGRDaGFuZ2UoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgcmluZ1NldHRpbmdBY3RpdmVPcHRpb25zXCIgW3ZhbHVlXT1cIm9wdGlvblwiPnt7IG9wdGlvbiB9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW5wdXQtaG9sZGVyX19zZWxlY3QtaWNvblwiIHNyYz1cImFzc2V0cy9pY29ucy9hcnJvdy1kb3duLWJvbGQuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlciBpbnB1dC1ob2xkZXItdG9wLWJvdHRvbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX25hbWVcIj5DYWxsIFBpY2t1cCBHcm91cCBBdWRpb0FsZXJ0IFNldHRpbmcgKFBob25lIEFjdGl2ZSk8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19zZWxlY3Qtd3JhcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImlucHV0LWhvbGRlcl9fc2VsZWN0XCIgWyhuZ01vZGVsKV09XCJyb3cucGlja3VwQUFTQWN0aXZlXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25GaWVsZENoYW5nZSgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBwaWNrdXBBYXNBY3RpdmVPcHRpb25zXCIgW3ZhbHVlXT1cIm9wdGlvblwiPnt7IG9wdGlvbiB9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW5wdXQtaG9sZGVyX19zZWxlY3QtaWNvblwiIHNyYz1cImFzc2V0cy9pY29ucy9hcnJvdy1kb3duLWJvbGQuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlciBpbnB1dC1ob2xkZXItdG9wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fbmFtZVwiPkxvZyBNaXNzZWQgQ2FsbHM8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBjbGFzcz1cImN1c3RvbS10b2dnbGVcIiBbKG5nTW9kZWwpXT1cInJvdy5sb2dNaXNzZWRDYWxsc1wiIChuZ01vZGVsQ2hhbmdlKT1cIm9uRmllbGRDaGFuZ2UoKVwiPjwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcblxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWxzLXNlY3Rpb25cIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWxzLXNlY3Rpb25fX3RpdGxlXCI+Rm9yd2FyZGVkIENhbGwgSW5mb3JtYXRpb24gRGlzcGxheTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbHMtc2VjdGlvbl9fYm9keVwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyIGlucHV0LWhvbGRlci1ib3R0b21cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19uYW1lXCI+Q2FsbGVyIG5hbWU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBjbGFzcz1cImN1c3RvbS10b2dnbGVcIiBbKG5nTW9kZWwpXT1cInJvdy5jYWxsZXJOYW1lXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25GaWVsZENoYW5nZSgpXCI+PC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXIgaW5wdXQtaG9sZGVyLXRvcC1ib3R0b21cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19uYW1lXCI+UmVkaXJlY3RlZCBudW1iZXI8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBjbGFzcz1cImN1c3RvbS10b2dnbGVcIiBbKG5nTW9kZWwpXT1cInJvdy5yZWRpcmVjdGVkTnVtYmVyXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25GaWVsZENoYW5nZSgpXCI+PC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXIgaW5wdXQtaG9sZGVyLXRvcC1ib3R0b21cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19uYW1lXCI+Q2FsbGVyIG51bWJlcjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIGNsYXNzPVwiY3VzdG9tLXRvZ2dsZVwiIFsobmdNb2RlbCldPVwicm93LmNhbGxlck51bWJlclwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uRmllbGRDaGFuZ2UoKVwiPjwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyIGlucHV0LWhvbGRlci10b3BcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19uYW1lXCI+RGlhbGVkIG51bWJlcjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIGNsYXNzPVwiY3VzdG9tLXRvZ2dsZVwiIFsobmdNb2RlbCldPVwicm93LmRpYWxlZE51bWJlclwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uRmllbGRDaGFuZ2UoKVwiPjwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRpc2Fzc29jaWF0ZS1yb3dcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGluayBkaXNhc3NvY2lhdGUtbGlua1wiIChjbGljayk9XCJjb25maXJtRGlzYXNzb2NpYXRlKHJvdylcIj5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uIGRpc2Fzc29jaWF0ZS1pY29uIHJlbTFcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgIERpc2Fzc29jaWF0ZSBMaW5lXHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJwYW5lbC1mb290ZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJwYW5lbC1mb290ZXJfX2FjdGlvbnMgcGFuZWwtZm9vdGVyX19hY3Rpb25zLS1yaWdodFwiPlxyXG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1vdXRsaW5lXCIgKGNsaWNrKT1cIm9uQ2FuY2VsKClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tZmlsbGVkXCIgW2Rpc2FibGVkXT1cIiFoYXNDaGFuZ2VzXCIgKGNsaWNrKT1cIm9uU2F2ZSgpXCI+U2F2ZTwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG48L2Rpdj5cclxuIl19
311
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzb2NpYXRlLWxpbmVzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1a2kvd2lkZ2V0cy91c2VyLWRldmljZS1tYW5hZ2Uvc3JjL2Fzc29jaWF0ZS1saW5lcy9hc3NvY2lhdGUtbGluZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVraS93aWRnZXRzL3VzZXItZGV2aWNlLW1hbmFnZS9zcmMvYXNzb2NpYXRlLWxpbmVzL2Fzc29jaWF0ZS1saW5lcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxRixPQUFPLEVBQWUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFdEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQU1wRixPQUFPLEVBQWtCLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDckUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBb0M5RSxNQUFNLE9BQU8sdUJBQXVCO0lBc0RsQyxZQUNTLFdBQXdCLEVBQ3ZCLFVBQXNCLEVBQ2IsbUJBQXdDLEVBQ3hDLGFBQTRCLEVBQzVCLFdBQXdCLEVBQ3hCLE1BQWlCLEVBQ2pCLE1BQWM7UUFOeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDdkIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUNiLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FB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WUFBWTtJQUN4QixVQUFVLEVBQUUsWUFBWTtJQUN4QixpQkFBaUIsRUFBRSxvQkFBb0I7SUFDdkMsZUFBZSxFQUFFLGtCQUFrQjtJQUNuQyxjQUFjLEVBQUUsZUFBZTtJQUMvQixVQUFVLEVBQUUsNEJBQTRCO0lBQ3hDLGdCQUFnQixFQUFFLGtDQUFrQztJQUNwRCxZQUFZLEVBQUUsOEJBQThCO0lBQzVDLFlBQVksRUFBRSw4QkFBOEI7Q0FDN0MsQ0FBQztBQUVzQixzQ0FBYyxHQUFnQixJQUFJLEdBQUcsQ0FBQztJQUM1RCxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLGNBQWM7Q0FDbkYsQ0FBQyxDQUFDO3FIQXBEUSx1QkFBdUI7eUdBQXZCLHVCQUF1QixrTUNoRHBDLG01Y0FtUEE7NEZEbk1hLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSxxQkFBcUI7Z1FBS3JCLE1BQU07c0JBQWYsTUFBTTtnQkFDRSxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBDZGtEcmFnRHJvcCwgbW92ZUl0ZW1JbkFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpbmFsaXplLCBtYXAsIG9mLCBTdWJqZWN0LCBzd2l0Y2hNYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBVc2VyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3VzZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IEFQSVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9hcGkuc2VydmljZSc7XHJcbmltcG9ydCB7IFNpdGVTZXR0aW5nc1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9zaXRlLXNldHRpbmdzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEZXZpY2VTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZGV2aWNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMaW5lU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2xpbmUuc2VydmljZSc7XHJcbmltcG9ydCB7IEJ1dHRvbnRlbXBsYXRlLCBSZWNvcmRpbmdPcHRpb25zIH0gZnJvbSAnLi4vY2xhc3Nlcy9kZXZpY2UnO1xyXG5pbXBvcnQgeyBSRUNPUkRJTkdfTUVESUFfU09VUkNFLCBTVEFUSUNfT1BUSU9OUyB9IGZyb20gJy4uL2FwcC5jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBJbmZvRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vY29uZmlybS1kaWFsb2cvaW5mby1kaWFsb2cuY29tcG9uZW50JztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQXNzb2NpYXRlZExpbmVSb3cge1xyXG4gIGlkOiBudW1iZXI7XHJcbiAgcGtpZDogc3RyaW5nO1xyXG4gIGV4dGVuc2lvbjogc3RyaW5nO1xyXG4gIHJvdXRlUGFydGl0aW9uTmFtZTogc3RyaW5nO1xyXG4gIG9yZGVyOiBudW1iZXI7XHJcbiAgbGluZU51bWJlcjogc3RyaW5nO1xyXG4gIGRpc3BsYXlDYWxsZXJJZDogc3RyaW5nO1xyXG4gIHRleHRMYWJlbDogc3RyaW5nO1xyXG4gIGUxNjRNYXNrOiBzdHJpbmc7XHJcbiAgbWF4TnVtYmVyT2ZDYWxsczogbnVtYmVyO1xyXG4gIGJ1c3lUcmlnZ2VyOiBudW1iZXI7XHJcbiAgcmVjb3JkaW5nT3B0aW9uOiBSZWNvcmRpbmdPcHRpb25zO1xyXG4gIHJlY29yZGluZ01lZGlhU291cmNlOiBzdHJpbmc7XHJcbiAgcmVjb3JkaW5nUHJvZmlsZTogc3RyaW5nO1xyXG4gIHZpc3VhbE1XSTogc3RyaW5nO1xyXG4gIHJpbmdTZXR0aW5nSWRsZTogc3RyaW5nO1xyXG4gIHBpY2t1cEFBU0lkbGU6IHN0cmluZztcclxuICBtb25pdG9yQ1NTOiBzdHJpbmc7XHJcbiAgYXVkaWJsZU1XSTogc3RyaW5nO1xyXG4gIHJpbmdTZXR0aW5nQWN0aXZlOiBzdHJpbmc7XHJcbiAgcGlja3VwQUFTQWN0aXZlOiBzdHJpbmc7XHJcbiAgbG9nTWlzc2VkQ2FsbHM6IGJvb2xlYW47XHJcbiAgY2FsbGVyTmFtZTogYm9vbGVhbjtcclxuICByZWRpcmVjdGVkTnVtYmVyOiBib29sZWFuO1xyXG4gIGNhbGxlck51bWJlcjogYm9vbGVhbjtcclxuICBkaWFsZWROdW1iZXI6IGJvb2xlYW47XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWFzc29jaWF0ZS1saW5lcycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Fzc29jaWF0ZS1saW5lcy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYXNzb2NpYXRlLWxpbmVzLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBc3NvY2lhdGVMaW5lc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBAT3V0cHV0KCkgZ29CYWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBJbnB1dCgpIHRva2VuITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGhvc3QhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgc2l0ZUlkITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHVzZXJJZCE6IHN0cmluZztcclxuICBASW5wdXQoKSBkZXZpY2VOYW1lITogc3RyaW5nO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBwdWJsaWMgZGF0YVBlbmRpbmcgPSBmYWxzZTtcclxuICBwdWJsaWMgZGV2aWNlOiBhbnkgPSBudWxsO1xyXG4gIHB1YmxpYyBoYXNDaGFuZ2VzID0gZmFsc2U7XHJcbiAgcHVibGljIGV4cGFuZGVkT3JkZXI6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG5cclxuICBwdWJsaWMgcmVhZG9ubHkgcmVjb3JkaW5nT3B0aW9ucyA9IFJlY29yZGluZ09wdGlvbnM7XHJcbiAgcHVibGljIHJlYWRvbmx5IHJlY29yZGluZ01lZGlhU291cmNlczogc3RyaW5nW10gPSBSRUNPUkRJTkdfTUVESUFfU09VUkNFO1xyXG4gIHB1YmxpYyByZWNvcmRpbmdQcm9maWxlczogc3RyaW5nW10gPSBbJ05vbmUnXTtcclxuICBwdWJsaWMgcmVhZG9ubHkgdmlzdWFsTXdpT3B0aW9uczogc3RyaW5nW10gPSBTVEFUSUNfT1BUSU9OUy5WSVNVQUxfTVdJO1xyXG4gIHB1YmxpYyByZWFkb25seSBhdWRpYmxlTXdpT3B0aW9uczogc3RyaW5nW10gPSBTVEFUSUNfT1BUSU9OUy5BVURJQkxFX01XSTtcclxuICBwdWJsaWMgcmVhZG9ubHkgcmluZ1NldHRpbmdJZGxlT3B0aW9uczogc3RyaW5nW10gPSBTVEFUSUNfT1BUSU9OUy5SSU5HX1NFVFRJTkdfSURMRTtcclxuICBwdWJsaWMgcmVhZG9ubHkgcmluZ1NldHRpbmdBY3RpdmVPcHRpb25zOiBzdHJpbmdbXSA9IFNUQVRJQ19PUFRJT05TLlJJTkdfU0VUVElOR19BQ1RJVkU7XHJcbiAgcHVibGljIHJlYWRvbmx5IHBpY2t1cEFhc0lkbGVPcHRpb25zOiBzdHJpbmdbXSA9IFNUQVRJQ19PUFRJT05TLkNBTExfUElDS1VQX0dST1VQX0FVRElPX1NFVFRJTkdfUEhPTkVfSURMRTtcclxuICBwdWJsaWMgcmVhZG9ubHkgcGlja3VwQWFzQWN0aXZlT3B0aW9uczogc3RyaW5nW10gPSBTVEFUSUNfT1BUSU9OUy5DQUxMX1BJQ0tVUF9HUk9VUF9BVURJT19TRVRUSU5HX1BIT05FX0FDVElWRTtcclxuXHJcbiAgcHVibGljIHJvd3M6IEFzc29jaWF0ZWRMaW5lUm93W10gPSBbXTtcclxuICBwcml2YXRlIG9yaWdpblJvd3M6IEFzc29jaWF0ZWRMaW5lUm93W10gPSBbXTtcclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgRklFTERfTUFQOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge1xyXG4gICAgZGlzcGxheUNhbGxlcklkOiAnZGlzcGxheUxhYmVsJyxcclxuICAgIHRleHRMYWJlbDogJ3RleHRMYWJlbCcsXHJcbiAgICBlMTY0TWFzazogJ2UxNjRNYXNrJyxcclxuICAgIG1heE51bWJlck9mQ2FsbHM6ICdtYXhOdW1iZXJPZkNhbGxzJyxcclxuICAgIGJ1c3lUcmlnZ2VyOiAnYnVzeVRyaWdnZXInLFxyXG4gICAgcmVjb3JkaW5nT3B0aW9uOiAncmVjb3JkaW5nT3B0aW9uJyxcclxuICAgIHJlY29yZGluZ01lZGlhU291cmNlOiAncmVjb3JkaW5nTWVkaWFTb3VyY2UnLFxyXG4gICAgcmVjb3JkaW5nUHJvZmlsZTogJ3JlY29yZGluZ1Byb2ZpbGUnLFxyXG4gICAgdmlzdWFsTVdJOiAndmlzdWFsTVdJJyxcclxuICAgIHJpbmdTZXR0aW5nSWRsZTogJ3JpbmdTZXR0aW5nX2lkbGUnLFxyXG4gICAgcGlja3VwQUFTSWRsZTogJ3BpY2t1cEFBU19pZGxlJyxcclxuICAgIG1vbml0b3JDU1M6ICdtb25pdG9yQ1NTJyxcclxuICAgIGF1ZGlibGVNV0k6ICdhdWRpYmxlTVdJJyxcclxuICAgIHJpbmdTZXR0aW5nQWN0aXZlOiAncmluZ1NldHRpbmdfYWN0aXZlJyxcclxuICAgIHBpY2t1cEFBU0FjdGl2ZTogJ3BpY2t1cEFBU19hY3RpdmUnLFxyXG4gICAgbG9nTWlzc2VkQ2FsbHM6ICdsb2dNaXNzZWRDYWxsJyxcclxuICAgIGNhbGxlck5hbWU6ICdjYWxsSW5mb0Rpc3BsYXkuY2FsbGVyTmFtZScsXHJcbiAgICByZWRpcmVjdGVkTnVtYmVyOiAnY2FsbEluZm9EaXNwbGF5LnJlZGlyZWN0ZWROdW1iZXInLFxyXG4gICAgY2FsbGVyTnVtYmVyOiAnY2FsbEluZm9EaXNwbGF5LmNhbGxlck51bWJlcicsXHJcbiAgICBkaWFsZWROdW1iZXI6ICdjYWxsSW5mb0Rpc3BsYXkuZGlhbGVkTnVtYmVyJyxcclxuICB9O1xyXG5cclxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBCT09MRUFOX0ZJRUxEUzogU2V0PHN0cmluZz4gPSBuZXcgU2V0KFtcclxuICAgICdsb2dNaXNzZWRDYWxscycsICdjYWxsZXJOYW1lJywgJ3JlZGlyZWN0ZWROdW1iZXInLCAnY2FsbGVyTnVtYmVyJywgJ2RpYWxlZE51bWJlcicsXHJcbiAgXSk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcclxuICAgIHByaXZhdGUgYXBpU2VydmljZTogQVBJU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2l0ZVNldHRpbmdzU2VydmljZTogU2l0ZVNldHRpbmdzU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGV2aWNlU2VydmljZTogRGV2aWNlU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgbGluZVNlcnZpY2U6IExpbmVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBkaWFsb2c6IE1hdERpYWxvZyxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuYXBpU2VydmljZS50b2tlbiA9IHRoaXMudG9rZW47XHJcbiAgICB0aGlzLmFwaVNlcnZpY2UuYXBpVXJsID0gdGhpcy5ob3N0O1xyXG4gICAgdGhpcy5sb2FkRGV2aWNlKCk7XHJcbiAgICB0aGlzLmxvYWRSZWNvcmRpbmdQcm9maWxlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2FkRGV2aWNlKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMudXNlclNlcnZpY2UudXNlckRldmljZSkge1xyXG4gICAgICB0aGlzLmRldmljZSA9IHRoaXMudXNlclNlcnZpY2UudXNlckRldmljZTtcclxuICAgICAgdGhpcy5kYXRhUGVuZGluZyA9IHRydWU7XHJcbiAgICAgIHRoaXMuZmV0Y2hMaW5lU2xvdHMoKVxyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSwgZmluYWxpemUoKCkgPT4gdGhpcy5kYXRhUGVuZGluZyA9IGZhbHNlKSlcclxuICAgICAgICAuc3Vic2NyaWJlKChsaW5lU2xvdHM6IG51bWJlcltdIHwgdW5kZWZpbmVkKSA9PiB0aGlzLmluaXRSb3dzKGxpbmVTbG90cykpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5kYXRhUGVuZGluZyA9IHRydWU7XHJcbiAgICBjb25zdCBkZXZpY2VUeXBlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2RldmljZVR5cGUnKSB8fCAnJztcclxuICAgIHRoaXMudXNlclNlcnZpY2UuZmV0Y2hESVVzZXJEZXZpY2UoTnVtYmVyKHRoaXMuc2l0ZUlkKSwgdGhpcy51c2VySWQsIGRldmljZVR5cGUsIHRoaXMuZGV2aWNlTmFtZSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgc3dpdGNoTWFwKChkZXZpY2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5kZXZpY2UgPSBkZXZpY2U7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5mZXRjaExpbmVTbG90cygpO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcclxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB0aGlzLmRhdGFQZW5kaW5nID0gZmFsc2UpLFxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKGxpbmVTbG90czogbnVtYmVyW10gfCB1bmRlZmluZWQpID0+IHRoaXMuaW5pdFJvd3MobGluZVNsb3RzKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZldGNoTGluZVNsb3RzKCkge1xyXG4gICAgY29uc3QgYnV0dG9uVGVtcGxhdGUgPSB0aGlzLmRldmljZT8uYnV0dG9uVGVtcGxhdGU7XHJcbiAgICBpZiAoIWJ1dHRvblRlbXBsYXRlKSB7XHJcbiAgICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuZGV2aWNlU2VydmljZS5nZXRTbG90c0J5QnV0dG9uVGVtcGxhdGUoTnVtYmVyKHRoaXMuc2l0ZUlkKSwgYnV0dG9uVGVtcGxhdGUpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgodGVtcGxhdGU6IEJ1dHRvbnRlbXBsYXRlKSA9PiB0ZW1wbGF0ZT8ubGluZVNsb3RzKSxcclxuICAgICAgICBjYXRjaEVycm9yKCgpID0+IG9mKHVuZGVmaW5lZCkpLFxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2FkUmVjb3JkaW5nUHJvZmlsZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNpdGVTZXR0aW5nc1NlcnZpY2UuZ2V0UmVjb3JkaW5nUHJvZmlsZShOdW1iZXIodGhpcy5zaXRlSWQpKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHByb2ZpbGVzOiBzdHJpbmdbXSkgPT4ge1xyXG4gICAgICAgIHRoaXMucmVjb3JkaW5nUHJvZmlsZXMgPSBbJ05vbmUnLCAuLi4ocHJvZmlsZXMgfHwgW10pLmZpbHRlcihwcm9maWxlID0+IHByb2ZpbGUgIT09ICdOb25lJyldO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdFJvd3MobGluZVNsb3RzPzogbnVtYmVyW10pOiB2b2lkIHtcclxuICAgIGNvbnN0IGxpbmVzID0gdGhpcy5kZXZpY2U/LmxpbmVzIHx8IFtdO1xyXG4gICAgaWYgKGxpbmVTbG90cz8ubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMucm93cyA9IGxpbmVTbG90cy5tYXAoKHBvc2l0aW9uOiBudW1iZXIpID0+IHtcclxuICAgICAgICBjb25zdCBsaW5lID0gbGluZXMuZmluZCgoY3VycmVudDogYW55KSA9PiBOdW1iZXIoY3VycmVudD8ucG9zaXRpb24pID09PSBOdW1iZXIocG9zaXRpb24pKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVSb3cocG9zaXRpb24sIGxpbmUpO1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGZhbGxiYWNrTGluZXMgPSBsaW5lcy5sZW5ndGggPyBsaW5lcyA6IFt7fSwge30sIHt9XTtcclxuICAgICAgdGhpcy5yb3dzID0gZmFsbGJhY2tMaW5lcy5tYXAoKGxpbmU6IGFueSwgaW5kZXg6IG51bWJlcikgPT4gdGhpcy5jcmVhdGVSb3coaW5kZXggKyAxLCBsaW5lKSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLm9yaWdpblJvd3MgPSB0aGlzLnJvd3MubWFwKHJvdyA9PiAoeyAuLi5yb3cgfSkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVSb3cob3JkZXI6IG51bWJlciwgbGluZTogYW55KTogQXNzb2NpYXRlZExpbmVSb3cge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgaWQ6IG9yZGVyLFxyXG4gICAgICBwa2lkOiBsaW5lPy5wa2lkIHx8ICcnLFxyXG4gICAgICBleHRlbnNpb246IGxpbmU/LmV4dGVuc2lvbiB8fCAnJyxcclxuICAgICAgcm91dGVQYXJ0aXRpb25OYW1lOiBsaW5lPy5yb3V0ZVBhcnRpdGlvbk5hbWUgfHwgJycsXHJcbiAgICAgIG9yZGVyLFxyXG4gICAgICBsaW5lTnVtYmVyOiBsaW5lID8gKGxpbmU/Lm51bWJlciB8fCBsaW5lPy5leHRlbnNpb24gfHwgJycpIDogJycsXHJcbiAgICAgIGRpc3BsYXlDYWxsZXJJZDogbGluZT8uZGlzcGxheUxhYmVsIHx8ICcnLFxyXG4gICAgICB0ZXh0TGFiZWw6IGxpbmU/LnRleHRMYWJlbCB8fCAnJyxcclxuICAgICAgZTE2NE1hc2s6IGxpbmU/LmUxNjRNYXNrIHx8ICcnLFxyXG4gICAgICBtYXhOdW1iZXJPZkNhbGxzOiA2LFxyXG4gICAgICBidXN5VHJpZ2dlcjogMixcclxuICAgICAgcmVjb3JkaW5nT3B0aW9uOiBSZWNvcmRpbmdPcHRpb25zLmRpc2FibGVkLFxyXG4gICAgICByZWNvcmRpbmdNZWRpYVNvdXJjZTogdGhpcy5yZWNvcmRpbmdNZWRpYVNvdXJjZXNbMF0sXHJcbiAgICAgIHJlY29yZGluZ1Byb2ZpbGU6IHRoaXMucmVjb3JkaW5nUHJvZmlsZXNbMF0sXHJcbiAgICAgIHZpc3VhbE1XSTogdGhpcy52aXN1YWxNd2lPcHRpb25zWzBdLFxyXG4gICAgICByaW5nU2V0dGluZ0lkbGU6IHRoaXMucmluZ1NldHRpbmdJZGxlT3B0aW9uc1swXSxcclxuICAgICAgcGlja3VwQUFTSWRsZTogdGhpcy5waWNrdXBBYXNJZGxlT3B0aW9uc1swXSxcclxuICAgICAgbW9uaXRvckNTUzogJ05vbmUnLFxyXG4gICAgICBhdWRpYmxlTVdJOiB0aGlzLmF1ZGlibGVNd2lPcHRpb25zWzBdLFxyXG4gICAgICByaW5nU2V0dGluZ0FjdGl2ZTogdGhpcy5yaW5nU2V0dGluZ0FjdGl2ZU9wdGlvbnNbMF0sXHJcbiAgICAgIHBpY2t1cEFBU0FjdGl2ZTogdGhpcy5waWNrdXBBYXNBY3RpdmVPcHRpb25zWzBdLFxyXG4gICAgICBsb2dNaXNzZWRDYWxsczogbGluZT8ubG9nTWlzc2VkQ2FsbCA9PT0gJ3RydWUnLFxyXG4gICAgICBjYWxsZXJOYW1lOiBsaW5lPy5jYWxsSW5mb0Rpc3BsYXk/LmNhbGxlck5hbWUgPT09ICd0cnVlJyxcclxuICAgICAgcmVkaXJlY3RlZE51bWJlcjogbGluZT8uY2FsbEluZm9EaXNwbGF5Py5yZWRpcmVjdGVkTnVtYmVyID09PSAndHJ1ZScsXHJcbiAgICAgIGNhbGxlck51bWJlcjogbGluZT8uY2FsbEluZm9EaXNwbGF5Py5jYWxsZXJOdW1iZXIgPT09ICd0cnVlJyxcclxuICAgICAgZGlhbGVkTnVtYmVyOiBsaW5lPy5jYWxsSW5mb0Rpc3BsYXk/LmRpYWxlZE51bWJlciA9PT0gJ3RydWUnLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGlzUm93RWRpdGFibGUocm93OiBBc3NvY2lhdGVkTGluZVJvdyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICEhcm93LnBraWQ7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVFeHBhbmRlZChyb3c6IEFzc29jaWF0ZWRMaW5lUm93KTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNSb3dFZGl0YWJsZShyb3cpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuZXhwYW5kZWRPcmRlciA9IHRoaXMuZXhwYW5kZWRPcmRlciA9PT0gcm93Lm9yZGVyID8gbnVsbCA6IHJvdy5vcmRlcjtcclxuICB9XHJcblxyXG4gIGlzRXhwYW5kZWQocm93OiBBc3NvY2lhdGVkTGluZVJvdyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZXhwYW5kZWRPcmRlciA9PT0gcm93Lm9yZGVyO1xyXG4gIH1cclxuXHJcbiAgb25GaWVsZENoYW5nZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuaGFzQ2hhbmdlcyA9IHRydWU7XHJcbiAgfVxyXG5cclxuICByZWNvcmRpbmdPcHRpb25DaGFuZ2VkKHJvdzogQXNzb2NpYXRlZExpbmVSb3cpOiB2b2lkIHtcclxuICAgIGlmIChyb3cucmVjb3JkaW5nT3B0aW9uID09PSBSZWNvcmRpbmdPcHRpb25zLmRpc2FibGVkKSB7XHJcbiAgICAgIHJvdy5yZWNvcmRpbmdQcm9maWxlID0gdGhpcy5yZWNvcmRpbmdQcm9maWxlc1swXTtcclxuICAgIH1cclxuICAgIHRoaXMub25GaWVsZENoYW5nZSgpO1xyXG4gIH1cclxuXHJcbiAgaXNSZWNvcmRpbmdQcm9maWxlRGlzYWJsZWQocm93OiBBc3NvY2lhdGVkTGluZVJvdyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHJvdy5yZWNvcmRpbmdPcHRpb24gPT09IFJlY29yZGluZ09wdGlvbnMuZGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICBkcm9wKGV2ZW50OiBDZGtEcmFnRHJvcDxBc3NvY2lhdGVkTGluZVJvd1tdPik6IHZvaWQge1xyXG4gICAgaWYgKGV2ZW50LnByZXZpb3VzSW5kZXggPT09IGV2ZW50LmN1cnJlbnRJbmRleCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBvcmRlcnMgPSB0aGlzLnJvd3MubWFwKHJvdyA9PiByb3cub3JkZXIpO1xyXG4gICAgbW92ZUl0ZW1JbkFycmF5KHRoaXMucm93cywgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcclxuICAgIHRoaXMucm93cy5mb3JFYWNoKChyb3csIGluZGV4KSA9PiByb3cub3JkZXIgPSBvcmRlcnNbaW5kZXhdKTtcclxuICAgIHRoaXMuaGFzQ2hhbmdlcyA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBjb25maXJtRGlzYXNzb2NpYXRlKHJvdzogQXNzb2NpYXRlZExpbmVSb3cpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5pc1Jvd0VkaXRhYmxlKHJvdykpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihJbmZvRGlhbG9nQ29tcG9uZW50LCB7XHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICB0aXRsZTogJ0Rpc2Fzc29jaWF0ZSBMaW5lJyxcclxuICAgICAgICBtZXNzYWdlOiBgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRpc2Fzc29jaWF0ZSBsaW5lICR7cm93LmxpbmVOdW1iZXIgfHwgJ3RoaXMgbGluZSd9IGZyb20gZGV2aWNlICR7dGhpcy5kZXZpY2VOYW1lIHx8IHRoaXMuZGV2aWNlPy5uYW1lIHx8ICcnfT8gVGhlIGxpbmUgd2lsbCBhbHNvIGJlIHJlbW92ZWQgZnJvbSBpdCdzIFJlbW90ZSBkZXN0aW5hdGlvbiBwcm9maWxlLmAsXHJcbiAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6ICdEaXNhc3NvY2lhdGUnLFxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKVxyXG4gICAgICAuc3Vic2NyaWJlKChjb25maXJtZWQ6IGJvb2xlYW4pID0+IHtcclxuICAgICAgICBpZiAoY29uZmlybWVkKSB7XHJcbiAgICAgICAgICB0aGlzLmRpc2Fzc29jaWF0ZUxpbmUocm93KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkaXNhc3NvY2lhdGVMaW5lKHJvdzogQXNzb2NpYXRlZExpbmVSb3cpOiB2b2lkIHtcclxuICAgIHRoaXMuZGF0YVBlbmRpbmcgPSB0cnVlO1xyXG4gICAgY29uc3QgbGluZTogYW55ID0ge1xyXG4gICAgICBkaXJlY3RvcnlOdW1iZXI6IHtcclxuICAgICAgICBkaXJlY3RvcnlOdW1iZXI6IHJvdy5leHRlbnNpb24sXHJcbiAgICAgICAgcm91dGVQYXJ0aXRpb25OYW1lOiByb3cucm91dGVQYXJ0aXRpb25OYW1lLFxyXG4gICAgICB9LFxyXG4gICAgfTtcclxuICAgIHRoaXMubGluZVNlcnZpY2UuY2hlY2tMaW5lRGVsZXRpb24obGluZSwgTnVtYmVyKHRoaXMuc2l0ZUlkKSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMudXNlclNlcnZpY2UucGVyc2lzdFVzZXJDYWNoZSgpKSxcclxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXHJcbiAgICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy5kYXRhUGVuZGluZyA9IGZhbHNlKSxcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5leHBhbmRlZE9yZGVyID09PSByb3cub3JkZXIpIHtcclxuICAgICAgICAgIHRoaXMuZXhwYW5kZWRPcmRlciA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucm93cyA9IHRoaXMucm93cy5maWx0ZXIoY3VycmVudCA9PiBjdXJyZW50Lm9yZGVyICE9PSByb3cub3JkZXIpO1xyXG4gICAgICAgIHRoaXMucm93cy5mb3JFYWNoKChjdXJyZW50LCBpbmRleCkgPT4gY3VycmVudC5vcmRlciA9IGluZGV4ICsgMSk7XHJcbiAgICAgICAgdGhpcy5oYXNDaGFuZ2VzID0gdHJ1ZTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkdvQmFjaygpOiB2b2lkIHtcclxuICAgIGNvbnN0IFtwYXRoXSA9IHRoaXMucm91dGVyLnVybC5zcGxpdCgnPycpO1xyXG4gICAgY29uc3Qgc2VnbWVudHMgPSBwYXRoLnNwbGl0KCcvJykuZmlsdGVyKEJvb2xlYW4pO1xyXG4gICAgaWYgKHNlZ21lbnRzW3NlZ21lbnRzLmxlbmd0aCAtIDJdID09PSAnYXNzb2NpYXRlLWxpbmVzJykge1xyXG4gICAgICBzZWdtZW50cy5zcGxpY2Uoc2VnbWVudHMubGVuZ3RoIC0gMiwgMik7XHJcbiAgICB9IGVsc2UgaWYgKHNlZ21lbnRzW3NlZ21lbnRzLmxlbmd0aCAtIDFdID09PSAnYXNzb2NpYXRlLWxpbmVzJykge1xyXG4gICAgICBzZWdtZW50cy5wb3AoKTtcclxuICAgIH1cclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJy8nICsgc2VnbWVudHMuam9pbignLycpKTtcclxuICAgIHRoaXMuZ29CYWNrLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIG9uQ2FuY2VsKCk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkdvQmFjaygpO1xyXG4gIH1cclxuXHJcbiAgb25TYXZlKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmhhc0NoYW5nZXMpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGJvZHkgPSB0aGlzLmJ1aWxkVXBkYXRlQm9keSgpO1xyXG4gICAgaWYgKCFib2R5Lmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmhhc0NoYW5nZXMgPSBmYWxzZTtcclxuICAgICAgdGhpcy5vbkdvQmFjaygpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5kYXRhUGVuZGluZyA9IHRydWU7XHJcbiAgICBjb25zdCBkZXZpY2VOYW1lID0gdGhpcy5kZXZpY2VOYW1lIHx8IHRoaXMuZGV2aWNlPy5uYW1lIHx8ICcnO1xyXG4gICAgdGhpcy5kZXZpY2VTZXJ2aWNlLnB1dERldmljZUZpZWxkcyhOdW1iZXIodGhpcy5zaXRlSWQpLCBkZXZpY2VOYW1lLCB0aGlzLnVzZXJTZXJ2aWNlLnVzZXJUb2tlbiwgYm9keSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMudXNlclNlcnZpY2UucGVyc2lzdFVzZXJDYWNoZSgpKSxcclxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXHJcbiAgICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy5kYXRhUGVuZGluZyA9IGZhbHNlKSxcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLm9yaWdpblJvd3MgPSB0aGlzLnJvd3MubWFwKHJvdyA9PiAoeyAuLi5yb3cgfSkpO1xyXG4gICAgICAgIHRoaXMuaGFzQ2hhbmdlcyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMub25Hb0JhY2soKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJ1aWxkVXBkYXRlQm9keSgpOiBzdHJpbmdbXSB7XHJcbiAgICBjb25zdCBib2R5OiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgdGhpcy5yb3dzLmZvckVhY2gocm93ID0+IHtcclxuICAgICAgaWYgKCFyb3cucGtpZCkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBvcmlnaW5Sb3cgPSB0aGlzLm9yaWdpblJvd3MuZmluZChvcmlnID0+IG9yaWcuaWQgPT09IHJvdy5pZCk7XHJcbiAgICAgIGlmICghb3JpZ2luUm93KSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChyb3cub3JkZXIgIT09IG9yaWdpblJvdy5vcmRlcikge1xyXG4gICAgICAgIGJvZHkucHVzaChgZGV2aWNlLmxpbmVBc3NvY2lhdGlvbnMuJHtyb3cucGtpZH0ucG9zaXRpb249JHtyb3cub3JkZXJ9YCk7XHJcbiAgICAgIH1cclxuICAgICAgT2JqZWN0LmtleXMoQXNzb2NpYXRlTGluZXNDb21wb25lbnQuRklFTERfTUFQKS5mb3JFYWNoKHJvd0ZpZWxkID0+IHtcclxuICAgICAgICBjb25zdCBjdXJyZW50VmFsdWUgPSAocm93IGFzIGFueSlbcm93RmllbGRdO1xyXG4gICAgICAgIGNvbnN0IG9yaWdpblZhbHVlID0gKG9yaWdpblJvdyBhcyBhbnkpW3Jvd0ZpZWxkXTtcclxuICAgICAgICBpZiAoY3VycmVudFZhbHVlID09PSBvcmlnaW5WYWx1ZSkge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBjdWNtRmllbGQgPSBBc3NvY2lhdGVMaW5lc0NvbXBvbmVudC5GSUVMRF9NQVBbcm93RmllbGRdO1xyXG4gICAgICAgIGNvbnN0IHZhbHVlID0gQXNzb2NpYXRlTGluZXNDb21wb25lbnQuQk9PTEVBTl9GSUVMRFMuaGFzKHJvd0ZpZWxkKSA/IFN0cmluZyghIWN1cnJlbnRWYWx1ZSkgOiBjdXJyZW50VmFsdWU7XHJcbiAgICAgICAgYm9keS5wdXNoKGBkZXZpY2UubGluZUFzc29jaWF0aW9ucy4ke3Jvdy5wa2lkfS4ke2N1Y21GaWVsZH09JHt2YWx1ZX1gKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBib2R5O1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuIiwiPHRrLWxvYWRlciAqbmdJZj1cImRhdGFQZW5kaW5nXCI+PC90ay1sb2FkZXI+XHJcblxyXG48ZGl2IGNsYXNzPVwiZ28tYmFjay1ib3hcIiAoY2xpY2spPVwib25Hb0JhY2soKVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJnby1iYWNrLWJveC1jb250YWluZXJcIj5cclxuICAgIDxzcGFuIGNsYXNzPVwiYXBwLWljb24gaWNvbi13ZWJleC1sZWZ0LWFycm93XCI+PC9zcGFuPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJnby1iYWNrLXRpdGxlXCI+RGV2aWNlIEdlbmVyYWwgSW5mbzwvc3Bhbj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48ZGl2IGNsYXNzPVwiYXNzb2NpYXRlLWxpbmVzXCIgPlxyXG4gIDxkaXYgY2xhc3M9XCJwYW5lbC1oZWFkZXJcIj5cclxuICAgIDxzcGFuIGNsYXNzPVwicGFuZWwtaGVhZGVyX190aXRsZVwiPkFzc29jaWF0ZSBMaW5lczwvc3Bhbj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cInBhbmVsLWJvZHlcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJwYW5lbC1jYXJkXCI+XHJcblxyXG4gICAgICA8cCBjbGFzcz1cInN0ZXAtZGVzY3JpcHRpb25cIj5cclxuICAgICAgICBUaGUgdXNlcnMgYW5kIHdvcmtzcGFjZXMgdGhhdCBhcHBlYXIgb24gdGhpcyBwaG9uZSBhcmUgZGlzcGxheWVkIGJlbG93IGluIHRoZSBvcmRlciBvZiBhcHBlYXJhbmNlLlxyXG4gICAgICAgIExpbmVzIG11c3QgYmUgY29uZmlndXJlZCBzZXF1ZW50aWFsbHkuXHJcbiAgICAgIDwvcD5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJsaW5lcy1saXN0XCIgY2RrRHJvcExpc3QgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wKCRldmVudClcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCByb3cgb2Ygcm93c1wiPlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaW5lLXJvd1wiIGNka0RyYWcgW2NsYXNzLmV4cGFuZGVkXT1cImlzRXhwYW5kZWQocm93KVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGluZS1yb3dfX2hlYWRlclwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaW5lLXJvd19fbWFpblwiPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uIGRyYWdnZXItaWNvbiByZW0xXCIgY2RrRHJhZ0hhbmRsZT48L2k+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxpbmUtcm93X19vcmRlclwiPnt7IHJvdy5vcmRlciB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGluZS1yb3dfX2RpdmlkZXJcIj58PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsaW5lLXJvd19fbGFiZWxcIj57eyByb3cubGluZU51bWJlciA/ICdMaW5lICcgKyByb3cubGluZU51bWJlciA6ICdOb25lJyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGluZS1yb3dfX2FjdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbiBkZWxldGUtaWNvbiByZW0xXCIgW2NsYXNzLmRpc2FibGVkXT1cIiFpc1Jvd0VkaXRhYmxlKHJvdylcIiBtYXRUb29sdGlwPVwiRGlzYXNzb2NpYXRlIGxpbmVcIiAoY2xpY2spPVwiY29uZmlybURpc2Fzc29jaWF0ZShyb3cpXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uIGNoZXZyb24taWNvbiByZW0xXzI1XCIgW2NsYXNzLmV4cGFuZGVkXT1cImlzRXhwYW5kZWQocm93KVwiIFtjbGFzcy5kaXNhYmxlZF09XCIhaXNSb3dFZGl0YWJsZShyb3cpXCIgKGNsaWNrKT1cInRvZ2dsZUV4cGFuZGVkKHJvdylcIj48L2k+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxpbmUtcm93X19kZXRhaWxzXCIgKm5nSWY9XCJpc0V4cGFuZGVkKHJvdylcIj5cclxuXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbHMtc2VjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbHMtc2VjdGlvbl9fdGl0bGVcIj5MaW5lIHNldHRpbmcgb24gdGhlIGRldmljZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbHMtc2VjdGlvbl9fYm9keVwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyIGlucHV0LWhvbGRlci1ib3R0b21cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19uYW1lXCI+RGlzcGxheSBjYWxsZXIgSUQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cInJvdy5kaXNwbGF5Q2FsbGVySWRcIiAobmdNb2RlbENoYW5nZSk9XCJvbkZpZWxkQ2hhbmdlKClcIj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyIGlucHV0LWhvbGRlci10b3AtYm90dG9tXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fbmFtZVwiPlRleHQgbGFiZWw8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cInJvdy50ZXh0TGFiZWxcIiAobmdNb2RlbENoYW5nZSk9XCJvbkZpZWxkQ2hhbmdlKClcIj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyIGlucHV0LWhvbGRlci10b3BcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19uYW1lXCI+RXh0ZXJuYWwgcGhvbmUgbnVtYmVyIG1hc2s8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cInJvdy5lMTY0TWFza1wiIChuZ01vZGVsQ2hhbmdlKT1cIm9uRmllbGRDaGFuZ2UoKVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbHMtc2VjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbHMtc2VjdGlvbl9fdGl0bGVcIj5NdWx0aXBsZSBDYWxsL0NhbGwgV2FpdGluZyBTZXR0aW5nczwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbHMtc2VjdGlvbl9fYm9keVwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyIGlucHV0LWhvbGRlci1ib3R0b21cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19uYW1lXCI+TWF4IGNhbGxzPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBbKG5nTW9kZWwpXT1cInJvdy5tYXhOdW1iZXJPZkNhbGxzXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25GaWVsZENoYW5nZSgpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlciBpbnB1dC1ob2xkZXItdG9wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fbmFtZVwiPkJ1c3kgdHJpZ2dlcjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgWyhuZ01vZGVsKV09XCJyb3cuYnVzeVRyaWdnZXJcIiAobmdNb2RlbENoYW5nZSk9XCJvbkZpZWxkQ2hhbmdlKClcIj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcblxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWxzLXNlY3Rpb25cIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWxzLXNlY3Rpb25fX3RpdGxlXCI+Q2FsbCBSZWNvcmRpbmc8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWxzLXNlY3Rpb25fX2JvZHlcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlciBpbnB1dC1ob2xkZXItYm90dG9tXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fbmFtZVwiPlJlY29yZGluZyBvcHRpb248L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19zZWxlY3Qtd3JhcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImlucHV0LWhvbGRlcl9fc2VsZWN0XCIgWyhuZ01vZGVsKV09XCJyb3cucmVjb3JkaW5nT3B0aW9uXCIgKG5nTW9kZWxDaGFuZ2UpPVwicmVjb3JkaW5nT3B0aW9uQ2hhbmdlZChyb3cpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiByZWNvcmRpbmdPcHRpb25zIHwga2V5dmFsdWVcIiBbdmFsdWVdPVwib3B0aW9uLnZhbHVlXCI+e3sgb3B0aW9uLnZhbHVlIH19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX3NlbGVjdC1pY29uXCIgc3JjPVwiYXNzZXRzL2ljb25zL2Fycm93LWRvd24tYm9sZC5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyIGlucHV0LWhvbGRlci10b3AtYm90dG9tXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fbmFtZVwiPlJlY29yZGluZyBtZWRpYSBzb3VyY2U8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19zZWxlY3Qtd3JhcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImlucHV0LWhvbGRlcl9fc2VsZWN0XCIgWyhuZ01vZGVsKV09XCJyb3cucmVjb3JkaW5nTWVkaWFTb3VyY2VcIiAobmdNb2RlbENoYW5nZSk9XCJvbkZpZWxkQ2hhbmdlKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgc291cmNlIG9mIHJlY29yZGluZ01lZGlhU291cmNlc1wiIFt2YWx1ZV09XCJzb3VyY2VcIj57eyBzb3VyY2UgfX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImlucHV0LWhvbGRlcl9fc2VsZWN0LWljb25cIiBzcmM9XCJhc3NldHMvaWNvbnMvYXJyb3ctZG93bi1ib2xkLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXIgaW5wdXQtaG9sZGVyLXRvcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX25hbWVcIj5SZWNvcmRpbmcgcHJvZmlsZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX3NlbGVjdC13cmFwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19zZWxlY3RcIiBbKG5nTW9kZWwpXT1cInJvdy5yZWNvcmRpbmdQcm9maWxlXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25GaWVsZENoYW5nZSgpXCIgW2Rpc2FibGVkXT1cImlzUmVjb3JkaW5nUHJvZmlsZURpc2FibGVkKHJvdylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgcHJvZmlsZSBvZiByZWNvcmRpbmdQcm9maWxlc1wiIFt2YWx1ZV09XCJwcm9maWxlXCI+e3sgcHJvZmlsZSB9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW5wdXQtaG9sZGVyX19zZWxlY3QtaWNvblwiIHNyYz1cImFzc2V0cy9pY29ucy9hcnJvdy1kb3duLWJvbGQuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlscy1zZWN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlscy1zZWN0aW9uX190aXRsZVwiPkFkZGl0aW9uYWwgTGluZSBTZXR0aW5ncyBvbiB0aGUgRGV2aWNlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlscy1zZWN0aW9uX19ib2R5XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXIgaW5wdXQtaG9sZGVyLWJvdHRvbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX25hbWVcIj5WaXN1YWwgTWVzc2FnZSBXYWl0aW5nIEluZGljYXRvciBQb2xpY3k8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19zZWxlY3Qtd3JhcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImlucHV0LWhvbGRlcl9fc2VsZWN0XCIgWyhuZ01vZGVsKV09XCJyb3cudmlzdWFsTVdJXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25GaWVsZENoYW5nZSgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiB2aXN1YWxNd2lPcHRpb25zXCIgW3ZhbHVlXT1cIm9wdGlvblwiPnt7IG9wdGlvbiB9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW5wdXQtaG9sZGVyX19zZWxlY3QtaWNvblwiIHNyYz1cImFzc2V0cy9pY29ucy9hcnJvdy1kb3duLWJvbGQuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlciBpbnB1dC1ob2xkZXItdG9wLWJvdHRvbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX25hbWVcIj5SaW5nIFNldHRpbmcgKFBob25lIElkbGUpPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fc2VsZWN0LXdyYXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX3NlbGVjdFwiIFsobmdNb2RlbCldPVwicm93LnJpbmdTZXR0aW5nSWRsZVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uRmllbGRDaGFuZ2UoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgcmluZ1NldHRpbmdJZGxlT3B0aW9uc1wiIFt2YWx1ZV09XCJvcHRpb25cIj57eyBvcHRpb24gfX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImlucHV0LWhvbGRlcl9fc2VsZWN0LWljb25cIiBzcmM9XCJhc3NldHMvaWNvbnMvYXJyb3ctZG93bi1ib2xkLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXIgaW5wdXQtaG9sZGVyLXRvcC1ib3R0b21cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19uYW1lXCI+Q2FsbCBQaWNrdXAgR3JvdXAgQXVkaW8gQWxlcnQgU2V0dGluZyAoUGhvbmUgSWRsZSk8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19zZWxlY3Qtd3JhcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImlucHV0LWhvbGRlcl9fc2VsZWN0XCIgWyhuZ01vZGVsKV09XCJyb3cucGlja3VwQUFTSWRsZVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uRmllbGRDaGFuZ2UoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgcGlja3VwQWFzSWRsZU9wdGlvbnNcIiBbdmFsdWVdPVwib3B0aW9uXCI+e3sgb3B0aW9uIH19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX3NlbGVjdC1pY29uXCIgc3JjPVwiYXNzZXRzL2ljb25zL2Fycm93LWRvd24tYm9sZC5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyIGlucHV0LWhvbGRlci10b3AtYm90dG9tXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fbmFtZVwiPk1vbml0b3JpbmcgQ2FsbGluZyBTZWFyY2ggU3BhY2U8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cInJvdy5tb25pdG9yQ1NTXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25GaWVsZENoYW5nZSgpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlciBpbnB1dC1ob2xkZXItdG9wLWJvdHRvbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX25hbWVcIj5BdWRpYmxlIE1lc3NhZ2UgV2FpdGluZyBJbmRpY2F0b3IgUG9saWN5PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fc2VsZWN0LXdyYXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX3NlbGVjdFwiIFsobmdNb2RlbCldPVwicm93LmF1ZGlibGVNV0lcIiAobmdNb2RlbENoYW5nZSk9XCJvbkZpZWxkQ2hhbmdlKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGF1ZGlibGVNd2lPcHRpb25zXCIgW3ZhbHVlXT1cIm9wdGlvblwiPnt7IG9wdGlvbiB9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW5wdXQtaG9sZGVyX19zZWxlY3QtaWNvblwiIHNyYz1cImFzc2V0cy9pY29ucy9hcnJvdy1kb3duLWJvbGQuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlciBpbnB1dC1ob2xkZXItdG9wLWJvdHRvbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX25hbWVcIj5SaW5nIFNldHRpbmcgKFBob25lIEFjdGl2ZSk8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19zZWxlY3Qtd3JhcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImlucHV0LWhvbGRlcl9fc2VsZWN0XCIgWyhuZ01vZGVsKV09XCJyb3cucmluZ1NldHRpbmdBY3RpdmVcIiAobmdNb2RlbENoYW5nZSk9XCJvbkZpZWxkQ2hhbmdlKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHJpbmdTZXR0aW5nQWN0aXZlT3B0aW9uc1wiIFt2YWx1ZV09XCJvcHRpb25cIj57eyBvcHRpb24gfX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImlucHV0LWhvbGRlcl9fc2VsZWN0LWljb25cIiBzcmM9XCJhc3NldHMvaWNvbnMvYXJyb3ctZG93bi1ib2xkLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXIgaW5wdXQtaG9sZGVyLXRvcC1ib3R0b21cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19uYW1lXCI+Q2FsbCBQaWNrdXAgR3JvdXAgQXVkaW9BbGVydCBTZXR0aW5nIChQaG9uZSBBY3RpdmUpPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fc2VsZWN0LXdyYXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX3NlbGVjdFwiIFsobmdNb2RlbCldPVwicm93LnBpY2t1cEFBU0FjdGl2ZVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uRmllbGRDaGFuZ2UoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgcGlja3VwQWFzQWN0aXZlT3B0aW9uc1wiIFt2YWx1ZV09XCJvcHRpb25cIj57eyBvcHRpb24gfX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImlucHV0LWhvbGRlcl9fc2VsZWN0LWljb25cIiBzcmM9XCJhc3NldHMvaWNvbnMvYXJyb3ctZG93bi1ib2xkLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXIgaW5wdXQtaG9sZGVyLXRvcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX25hbWVcIj5Mb2cgTWlzc2VkIENhbGxzPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgY2xhc3M9XCJjdXN0b20tdG9nZ2xlXCIgWyhuZ01vZGVsKV09XCJyb3cubG9nTWlzc2VkQ2FsbHNcIiAobmdNb2RlbENoYW5nZSk9XCJvbkZpZWxkQ2hhbmdlKClcIj48L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlscy1zZWN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlscy1zZWN0aW9uX190aXRsZVwiPkZvcndhcmRlZCBDYWxsIEluZm9ybWF0aW9uIERpc3BsYXk8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWxzLXNlY3Rpb25fX2JvZHlcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlciBpbnB1dC1ob2xkZXItYm90dG9tXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fbmFtZVwiPkNhbGxlciBuYW1lPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgY2xhc3M9XCJjdXN0b20tdG9nZ2xlXCIgWyhuZ01vZGVsKV09XCJyb3cuY2FsbGVyTmFtZVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uRmllbGRDaGFuZ2UoKVwiPjwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyIGlucHV0LWhvbGRlci10b3AtYm90dG9tXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fbmFtZVwiPlJlZGlyZWN0ZWQgbnVtYmVyPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgY2xhc3M9XCJjdXN0b20tdG9nZ2xlXCIgWyhuZ01vZGVsKV09XCJyb3cucmVkaXJlY3RlZE51bWJlclwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uRmllbGRDaGFuZ2UoKVwiPjwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyIGlucHV0LWhvbGRlci10b3AtYm90dG9tXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fbmFtZVwiPkNhbGxlciBudW1iZXI8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBjbGFzcz1cImN1c3RvbS10b2dnbGVcIiBbKG5nTW9kZWwpXT1cInJvdy5jYWxsZXJOdW1iZXJcIiAobmdNb2RlbENoYW5nZSk9XCJvbkZpZWxkQ2hhbmdlKClcIj48L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlciBpbnB1dC1ob2xkZXItdG9wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fbmFtZVwiPkRpYWxlZCBudW1iZXI8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBjbGFzcz1cImN1c3RvbS10b2dnbGVcIiBbKG5nTW9kZWwpXT1cInJvdy5kaWFsZWROdW1iZXJcIiAobmdNb2RlbENoYW5nZSk9XCJvbkZpZWxkQ2hhbmdlKClcIj48L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaXNhc3NvY2lhdGUtcm93XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxpbmsgZGlzYXNzb2NpYXRlLWxpbmtcIiAoY2xpY2spPVwiY29uZmlybURpc2Fzc29jaWF0ZShyb3cpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbiBkaXNhc3NvY2lhdGUtaWNvbiByZW0xXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICBEaXNhc3NvY2lhdGUgTGluZVxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IGNsYXNzPVwicGFuZWwtZm9vdGVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicGFuZWwtZm9vdGVyX19hY3Rpb25zIHBhbmVsLWZvb3Rlcl9fYWN0aW9ucy0tcmlnaHRcIj5cclxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tb3V0bGluZVwiIChjbGljayk9XCJvbkNhbmNlbCgpXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWZpbGxlZFwiIFtkaXNhYmxlZF09XCIhaGFzQ2hhbmdlc1wiIChjbGljayk9XCJvblNhdmUoKVwiPlNhdmU8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuPC9kaXY+XHJcbiJdfQ==