tas-uell-sdk 0.2.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/esm2020/lib/components/tas-btn/tas-btn.component.mjs +2 -13
- package/esm2020/lib/components/tas-feedback-modal/tas-feedback-modal.component.mjs +229 -0
- package/esm2020/lib/components/tas-floating-call/tas-floating-call.component.mjs +38 -3
- package/esm2020/lib/components/tas-incoming-appointment/tas-incoming-appointment.component.mjs +46 -8
- package/esm2020/lib/components/tas-videocall/tas-videocall.component.mjs +41 -6
- package/esm2020/lib/components/tas-waiting-room/tas-waiting-room.component.mjs +18 -3
- package/esm2020/lib/interfaces/tas.interfaces.mjs +6 -1
- package/esm2020/lib/services/tas.service.mjs +40 -1
- package/esm2020/lib/tas-uell-sdk.module.mjs +8 -3
- package/esm2020/public-api.mjs +2 -1
- package/fesm2015/tas-uell-sdk.mjs +421 -36
- package/fesm2015/tas-uell-sdk.mjs.map +1 -1
- package/fesm2020/tas-uell-sdk.mjs +416 -36
- package/fesm2020/tas-uell-sdk.mjs.map +1 -1
- package/lib/components/tas-btn/tas-btn.component.d.ts +1 -2
- package/lib/components/tas-feedback-modal/tas-feedback-modal.component.d.ts +101 -0
- package/lib/components/tas-floating-call/tas-floating-call.component.d.ts +5 -0
- package/lib/components/tas-incoming-appointment/tas-incoming-appointment.component.d.ts +12 -1
- package/lib/components/tas-videocall/tas-videocall.component.d.ts +8 -2
- package/lib/components/tas-waiting-room/tas-waiting-room.component.d.ts +9 -0
- package/lib/interfaces/tas.interfaces.d.ts +17 -0
- package/lib/services/tas.service.d.ts +15 -1
- package/lib/tas-uell-sdk.module.d.ts +5 -4
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
- package/src/lib/styles/tas-global.scss +17 -0
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Component } from '@angular/core';
|
|
2
2
|
import { CallState, ViewMode } from '../../interfaces/tas.interfaces';
|
|
3
3
|
import { TasVideocallComponent } from '../tas-videocall/tas-videocall.component';
|
|
4
|
+
import { TasFeedbackModalComponent } from '../tas-feedback-modal/tas-feedback-modal.component';
|
|
4
5
|
import { Subscription } from 'rxjs';
|
|
5
6
|
import interact from 'interactjs';
|
|
6
7
|
import * as i0 from "@angular/core";
|
|
@@ -14,6 +15,7 @@ export class TasFloatingCallComponent {
|
|
|
14
15
|
this.isMuted = false;
|
|
15
16
|
this.subscriptions = new Subscription();
|
|
16
17
|
this.videoCallModalRef = null;
|
|
18
|
+
this.feedbackShown = false; // Track if feedback modal has been shown
|
|
17
19
|
// Margin from screen edges (in pixels)
|
|
18
20
|
this.PIP_MARGIN = 20;
|
|
19
21
|
}
|
|
@@ -35,12 +37,45 @@ export class TasFloatingCallComponent {
|
|
|
35
37
|
toggleMute() {
|
|
36
38
|
this.tasService.toggleMute();
|
|
37
39
|
}
|
|
40
|
+
/**
|
|
41
|
+
* Open feedback modal when call ends from PiP mode
|
|
42
|
+
*/
|
|
43
|
+
openFeedbackModal() {
|
|
44
|
+
// Prevent opening feedback modal multiple times
|
|
45
|
+
if (this.feedbackShown) {
|
|
46
|
+
this.isVisible = false;
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
// Get videoCallId from service
|
|
50
|
+
const videoCallId = this.tasService.videoCallId;
|
|
51
|
+
// If no videoCallId, skip feedback and hide directly
|
|
52
|
+
if (!videoCallId) {
|
|
53
|
+
this.isVisible = false;
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
this.feedbackShown = true;
|
|
57
|
+
const modalRef = this.modalService.open(TasFeedbackModalComponent, {
|
|
58
|
+
centered: true,
|
|
59
|
+
backdrop: true,
|
|
60
|
+
keyboard: true,
|
|
61
|
+
windowClass: 'tas-feedback-modal-wrapper',
|
|
62
|
+
});
|
|
63
|
+
modalRef.componentInstance.videoCallId = videoCallId;
|
|
64
|
+
modalRef.componentInstance.tenant = this.tasService.tenant ?? '';
|
|
65
|
+
modalRef.componentInstance.businessRole = this.tasService.businessRole;
|
|
66
|
+
// Hide floating call after feedback modal is closed/dismissed
|
|
67
|
+
modalRef.result.finally(() => {
|
|
68
|
+
this.isVisible = false;
|
|
69
|
+
this.feedbackShown = false; // Reset for potential future calls
|
|
70
|
+
});
|
|
71
|
+
}
|
|
38
72
|
// Private Methods
|
|
39
73
|
setupSubscriptions() {
|
|
40
74
|
// Call state subscription
|
|
41
75
|
this.subscriptions.add(this.tasService.callState$.subscribe((state) => {
|
|
42
|
-
if
|
|
43
|
-
|
|
76
|
+
// Only handle disconnect feedback if we're in PiP mode (isVisible)
|
|
77
|
+
if (state === CallState.DISCONNECTED && this.isVisible) {
|
|
78
|
+
this.openFeedbackModal();
|
|
44
79
|
}
|
|
45
80
|
}));
|
|
46
81
|
// View mode subscription
|
|
@@ -151,4 +186,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
151
186
|
type: Component,
|
|
152
187
|
args: [{ selector: 'tas-floating-call', template: "<div class=\"tas-floating-container\" [class.visible]=\"isVisible\">\n <!-- Video content area - shows main video only -->\n <div class=\"floating-content\">\n <!-- Main video container (subscriber if available, otherwise publisher) -->\n <div id=\"pip-main-video\" class=\"pip-main-video\"></div>\n\n <!-- Bottom controls -->\n <div class=\"floating-controls\">\n <button\n class=\"action-btn expand-btn\"\n (click)=\"onExpand()\"\n title=\"Expand to fullscreen\"\n >\n <i class=\"fa fa-expand\"></i>\n </button>\n <button\n class=\"action-btn mute-btn\"\n [class.muted]=\"isMuted\"\n (click)=\"toggleMute()\"\n [title]=\"isMuted ? 'Unmute microphone' : 'Mute microphone'\"\n >\n <i\n class=\"fa\"\n [class.fa-microphone]=\"!isMuted\"\n [class.fa-microphone-slash]=\"isMuted\"\n ></i>\n </button>\n <button class=\"action-btn hangup-btn\" (click)=\"onHangUp()\" title=\"Hang up call\">\n <i class=\"fa fa-phone\" style=\"transform: rotate(135deg)\"></i>\n </button>\n </div>\n </div>\n</div>\n", styles: [".tas-floating-container{position:fixed;bottom:20px;right:20px;width:280px;height:180px;background:#000;border-radius:12px;box-shadow:0 8px 32px #00000080;z-index:9999;overflow:hidden;touch-action:none;-webkit-user-select:none;user-select:none;transition:opacity .3s ease,visibility .3s ease,box-shadow .2s ease;opacity:0;visibility:hidden;pointer-events:none}.tas-floating-container.visible{opacity:1;visibility:visible;pointer-events:auto}.tas-floating-container:hover{box-shadow:0 8px 32px #00000080,0 0 0 2px #ffffff4d}.floating-content{position:relative;width:100%;height:100%;overflow:hidden}.pip-main-video{position:absolute;top:0;left:0;width:100%;height:100%;background:#000}.pip-main-video ::ng-deep video{width:100%;height:100%;object-fit:cover}.pip-main-video ::ng-deep .OT_subscriber,.pip-main-video ::ng-deep .OT_publisher{width:100%!important;height:100%!important}.pip-main-video ::ng-deep .OT_edge-bar-item,.pip-main-video ::ng-deep .OT_mute,.pip-main-video ::ng-deep .OT_audio-level-meter,.pip-main-video ::ng-deep .OT_bar,.pip-main-video ::ng-deep .OT_name{display:none!important}.floating-controls{position:absolute;bottom:10px;left:50%;transform:translate(-50%);display:flex;gap:12px;padding:6px 14px;background:rgba(0,0,0,.7);border-radius:24px;backdrop-filter:blur(8px);opacity:0;visibility:hidden;transition:opacity .3s ease,visibility .3s ease}.tas-floating-container:hover .floating-controls{opacity:1;visibility:visible}.action-btn{width:32px;height:32px;border:none;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:13px;transition:all .2s ease}.action-btn.expand-btn{background:rgba(255,255,255,.2);color:#fff}.action-btn.expand-btn:hover{background:rgba(255,255,255,.35);transform:scale(1.1)}.action-btn.mute-btn{background:rgba(255,255,255,.2);color:#fff}.action-btn.mute-btn:hover{background:rgba(255,255,255,.35);transform:scale(1.1)}.action-btn.mute-btn.muted{background:#f39c12;color:#fff}.action-btn.mute-btn.muted:hover{background:#e67e22}.action-btn.hangup-btn{background:#dc3545;color:#fff}.action-btn.hangup-btn:hover{background:#c82333;transform:scale(1.1)}\n"] }]
|
|
153
188
|
}], ctorParameters: function () { return [{ type: i1.TasService }, { type: i2.NgbModal }]; } });
|
|
154
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzLWZsb2F0aW5nLWNhbGwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFzLXVlbGwtc2RrL3NyYy9saWIvY29tcG9uZW50cy90YXMtZmxvYXRpbmctY2FsbC90YXMtZmxvYXRpbmctY2FsbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YXMtdWVsbC1zZGsvc3JjL2xpYi9jb21wb25lbnRzL3Rhcy1mbG9hdGluZy1jYWxsL3Rhcy1mbG9hdGluZy1jYWxsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRzdELE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDakYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLFFBQVEsTUFBTSxZQUFZLENBQUM7Ozs7QUFPbEMsTUFBTSxPQUFPLHdCQUF3QjtJQU9uQyxZQUNVLFVBQXNCLEVBQ3RCLFlBQXNCO1FBRHRCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsaUJBQVksR0FBWixZQUFZLENBQVU7UUFSekIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBRWYsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ25DLHNCQUFpQixHQUF1QixJQUFJLENBQUM7UUF3RnJELHVDQUF1QztRQUN0QixlQUFVLEdBQUcsRUFBRSxDQUFDO0lBcEY5QixDQUFDO0lBRUosUUFBUTtRQUNOLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FB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b3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nYk1vZGFsLCBOZ2JNb2RhbFJlZiB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcbmltcG9ydCB7IFRhc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90YXMuc2VydmljZSc7XG5pbXBvcnQgeyBDYWxsU3RhdGUsIFZpZXdNb2RlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy90YXMuaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBUYXNWaWRlb2NhbGxDb21wb25lbnQgfSBmcm9tICcuLi90YXMtdmlkZW9jYWxsL3Rhcy12aWRlb2NhbGwuY29tcG9uZW50JztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IGludGVyYWN0IGZyb20gJ2ludGVyYWN0anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0YXMtZmxvYXRpbmctY2FsbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi90YXMtZmxvYXRpbmctY2FsbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Rhcy1mbG9hdGluZy1jYWxsLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFRhc0Zsb2F0aW5nQ2FsbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHVibGljIGlzVmlzaWJsZSA9IGZhbHNlO1xuICBwdWJsaWMgaXNNdXRlZCA9IGZhbHNlO1xuXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgcHJpdmF0ZSB2aWRlb0NhbGxNb2RhbFJlZjogTmdiTW9kYWxSZWYgfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHRhc1NlcnZpY2U6IFRhc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldHVwU3Vic2NyaXB0aW9ucygpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gICAgaW50ZXJhY3QoJy50YXMtZmxvYXRpbmctY29udGFpbmVyJykudW5zZXQoKTtcbiAgfVxuXG4gIC8vIFB1YmxpYyBNZXRob2RzXG4gIG9uRXhwYW5kKCk6IHZvaWQge1xuICAgIHRoaXMub3BlblZpZGVvQ2FsbE1vZGFsKHRydWUpO1xuICAgIHRoaXMudGFzU2VydmljZS5leGl0UGlwTW9kZSgpO1xuICB9XG5cbiAgb25IYW5nVXAoKTogdm9pZCB7XG4gICAgdGhpcy50YXNTZXJ2aWNlLmRpc2Nvbm5lY3RTZXNzaW9uKCk7XG4gIH1cblxuICB0b2dnbGVNdXRlKCk6IHZvaWQge1xuICAgIHRoaXMudGFzU2VydmljZS50b2dnbGVNdXRlKCk7XG4gIH1cblxuICAvLyBQcml2YXRlIE1ldGhvZHNcbiAgcHJpdmF0ZSBzZXR1cFN1YnNjcmlwdGlvbnMoKTogdm9pZCB7XG4gICAgLy8gQ2FsbCBzdGF0ZSBzdWJzY3JpcHRpb25cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy50YXNTZXJ2aWNlLmNhbGxTdGF0ZSQuc3Vic2NyaWJlKChzdGF0ZSkgPT4ge1xuICAgICAgICBpZiAoc3RhdGUgPT09IENhbGxTdGF0ZS5ESVNDT05ORUNURUQpIHtcbiAgICAgICAgICB0aGlzLmlzVmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG5cbiAgICAvLyBWaWV3IG1vZGUgc3Vic2NyaXB0aW9uXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMudGFzU2VydmljZS52aWV3TW9kZSQuc3Vic2NyaWJlKChtb2RlKSA9PiB7XG4gICAgICAgIHRoaXMuaXNWaXNpYmxlID0gbW9kZSA9PT0gVmlld01vZGUuUElQICYmIHRoaXMudGFzU2VydmljZS5pc0NhbGxBY3RpdmUoKTtcbiAgICAgICAgaWYgKHRoaXMuaXNWaXNpYmxlKSB7XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmluaXRJbnRlcmFjdCgpLCAxMDApO1xuICAgICAgICAgIC8vIENsZWFyIG1vZGFsIHJlZiBpZiB3ZSBlbnRlciBQaVAgbW9kZSAobW9kYWwgY2xvc2VzIGl0c2VsZilcbiAgICAgICAgICB0aGlzLnZpZGVvQ2FsbE1vZGFsUmVmID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuXG4gICAgLy8gTXV0ZSBzdGF0ZSBzdWJzY3JpcHRpb25cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy50YXNTZXJ2aWNlLmlzTXV0ZWQkLnN1YnNjcmliZSgobXV0ZWQpID0+IHtcbiAgICAgICAgdGhpcy5pc011dGVkID0gbXV0ZWQ7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIG9wZW5WaWRlb0NhbGxNb2RhbChpc1JldHVybmluZ0Zyb21QaXA6IGJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLnZpZGVvQ2FsbE1vZGFsUmVmKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy52aWRlb0NhbGxNb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oVGFzVmlkZW9jYWxsQ29tcG9uZW50LCB7XG4gICAgICBzaXplOiAneGwnLFxuICAgICAgd2luZG93Q2xhc3M6ICd0YXMtdmlkZW8tbW9kYWwnLFxuICAgICAgYmFja2Ryb3A6ICdzdGF0aWMnLFxuICAgICAga2V5Ym9hcmQ6IGZhbHNlLFxuICAgIH0pO1xuXG4gICAgdGhpcy52aWRlb0NhbGxNb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5zZXNzaW9uSWQgPSB0aGlzLnRhc1NlcnZpY2Uuc2Vzc2lvbklkO1xuICAgIHRoaXMudmlkZW9DYWxsTW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UudG9rZW4gPSB0aGlzLnRhc1NlcnZpY2UudG9rZW47XG4gICAgdGhpcy52aWRlb0NhbGxNb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5idXNpbmVzc1JvbGUgPSB0aGlzLnRhc1NlcnZpY2UuYnVzaW5lc3NSb2xlO1xuICAgIHRoaXMudmlkZW9DYWxsTW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UuaXNSZXR1cm5pbmdGcm9tUGlwID0gaXNSZXR1cm5pbmdGcm9tUGlwO1xuXG4gICAgdGhpcy52aWRlb0NhbGxNb2RhbFJlZi5yZXN1bHQudGhlbihcbiAgICAgICgpID0+IHtcbiAgICAgICAgdGhpcy52aWRlb0NhbGxNb2RhbFJlZiA9IG51bGw7XG4gICAgICB9LFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aGlzLnZpZGVvQ2FsbE1vZGFsUmVmID0gbnVsbDtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgLy8gTWFyZ2luIGZyb20gc2NyZWVuIGVkZ2VzIChpbiBwaXhlbHMpXG4gIHByaXZhdGUgcmVhZG9ubHkgUElQX01BUkdJTiA9IDIwO1xuXG4gIHByaXZhdGUgaW5pdEludGVyYWN0KCk6IHZvaWQge1xuICAgIGludGVyYWN0KCcudGFzLWZsb2F0aW5nLWNvbnRhaW5lcicpLnVuc2V0KCk7XG5cbiAgICAvLyBDcmVhdGUgcmVzdHJpY3Rpb24gYXJlYSB3aXRoIG1hcmdpblxuICAgIGNvbnN0IG1hcmdpbiA9IHRoaXMuUElQX01BUkdJTjtcbiAgICBjb25zdCByZXN0cmljdFRvQm9keVdpdGhNYXJnaW4gPSB7XG4gICAgICByZXN0cmljdGlvbjogKCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGxlZnQ6IG1hcmdpbixcbiAgICAgICAgICB0b3A6IG1hcmdpbixcbiAgICAgICAgICByaWdodDogd2luZG93LmlubmVyV2lkdGggLSBtYXJnaW4sXG4gICAgICAgICAgYm90dG9tOiB3aW5kb3cuaW5uZXJIZWlnaHQgLSBtYXJnaW4sXG4gICAgICAgIH07XG4gICAgICB9LFxuICAgICAgZWxlbWVudFJlY3Q6IHsgbGVmdDogMCwgcmlnaHQ6IDEsIHRvcDogMCwgYm90dG9tOiAxIH0sXG4gICAgfTtcblxuICAgIGludGVyYWN0KCcudGFzLWZsb2F0aW5nLWNvbnRhaW5lcicpXG4gICAgICAuZHJhZ2dhYmxlKHtcbiAgICAgICAgaW5lcnRpYTogdHJ1ZSxcbiAgICAgICAgbW9kaWZpZXJzOiBbaW50ZXJhY3QubW9kaWZpZXJzLnJlc3RyaWN0KHJlc3RyaWN0VG9Cb2R5V2l0aE1hcmdpbildLFxuICAgICAgICBhdXRvU2Nyb2xsOiBmYWxzZSxcbiAgICAgICAgbGlzdGVuZXJzOiB7XG4gICAgICAgICAgbW92ZTogKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG4gICAgICAgICAgICBjb25zdCB4ID0gKHBhcnNlRmxvYXQodGFyZ2V0LmdldEF0dHJpYnV0ZSgnZGF0YS14JykpIHx8IDApICsgZXZlbnQuZHg7XG4gICAgICAgICAgICBjb25zdCB5ID0gKHBhcnNlRmxvYXQodGFyZ2V0LmdldEF0dHJpYnV0ZSgnZGF0YS15JykpIHx8IDApICsgZXZlbnQuZHk7XG5cbiAgICAgICAgICAgIHRhcmdldC5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlKCR7eH1weCwgJHt5fXB4KWA7XG4gICAgICAgICAgICB0YXJnZXQuc2V0QXR0cmlidXRlKCdkYXRhLXgnLCBTdHJpbmcoeCkpO1xuICAgICAgICAgICAgdGFyZ2V0LnNldEF0dHJpYnV0ZSgnZGF0YS15JywgU3RyaW5nKHkpKTtcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICAgIC5yZXNpemFibGUoe1xuICAgICAgICBlZGdlczogeyBsZWZ0OiBmYWxzZSwgcmlnaHQ6IHRydWUsIGJvdHRvbTogdHJ1ZSwgdG9wOiBmYWxzZSB9LFxuICAgICAgICBsaXN0ZW5lcnM6IHtcbiAgICAgICAgICBtb3ZlOiAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldDtcbiAgICAgICAgICAgIGxldCB4ID0gcGFyc2VGbG9hdCh0YXJnZXQuZ2V0QXR0cmlidXRlKCdkYXRhLXgnKSkgfHwgMDtcbiAgICAgICAgICAgIGxldCB5ID0gcGFyc2VGbG9hdCh0YXJnZXQuZ2V0QXR0cmlidXRlKCdkYXRhLXknKSkgfHwgMDtcblxuICAgICAgICAgICAgLy8gVXBkYXRlIGVsZW1lbnQgc2l6ZVxuICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLndpZHRoID0gYCR7ZXZlbnQucmVjdC53aWR0aH1weGA7XG4gICAgICAgICAgICB0YXJnZXQuc3R5bGUuaGVpZ2h0ID0gYCR7ZXZlbnQucmVjdC5oZWlnaHR9cHhgO1xuXG4gICAgICAgICAgICAvLyBUcmFuc2xhdGUgd2hlbiByZXNpemluZyBmcm9tIHRvcCBvciBsZWZ0IGVkZ2VzXG4gICAgICAgICAgICB4ICs9IGV2ZW50LmRlbHRhUmVjdC5sZWZ0O1xuICAgICAgICAgICAgeSArPSBldmVudC5kZWx0YVJlY3QudG9wO1xuXG4gICAgICAgICAgICB0YXJnZXQuc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZSgke3h9cHgsICR7eX1weClgO1xuICAgICAgICAgICAgdGFyZ2V0LnNldEF0dHJpYnV0ZSgnZGF0YS14JywgU3RyaW5nKHgpKTtcbiAgICAgICAgICAgIHRhcmdldC5zZXRBdHRyaWJ1dGUoJ2RhdGEteScsIFN0cmluZyh5KSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgbW9kaWZpZXJzOiBbXG4gICAgICAgICAgaW50ZXJhY3QubW9kaWZpZXJzLnJlc3RyaWN0RWRnZXMoe1xuICAgICAgICAgICAgb3V0ZXI6IHtcbiAgICAgICAgICAgICAgbGVmdDogbWFyZ2luLFxuICAgICAgICAgICAgICB0b3A6IG1hcmdpbixcbiAgICAgICAgICAgICAgcmlnaHQ6IHdpbmRvdy5pbm5lcldpZHRoIC0gbWFyZ2luLFxuICAgICAgICAgICAgICBib3R0b206IHdpbmRvdy5pbm5lckhlaWdodCAtIG1hcmdpbixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSksXG4gICAgICAgICAgaW50ZXJhY3QubW9kaWZpZXJzLnJlc3RyaWN0U2l6ZSh7XG4gICAgICAgICAgICBtaW46IHsgd2lkdGg6IDIwMCwgaGVpZ2h0OiAxMzAgfSxcbiAgICAgICAgICAgIG1heDogeyB3aWR0aDogNTAwLCBoZWlnaHQ6IDM1MCB9LFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIGludGVyYWN0Lm1vZGlmaWVycy5hc3BlY3RSYXRpbyh7IHJhdGlvOiAncHJlc2VydmUnIH0pLFxuICAgICAgICBdLFxuICAgICAgICBpbmVydGlhOiB0cnVlLFxuICAgICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ0YXMtZmxvYXRpbmctY29udGFpbmVyXCIgW2NsYXNzLnZpc2libGVdPVwiaXNWaXNpYmxlXCI+XG4gIDwhLS0gVmlkZW8gY29udGVudCBhcmVhIC0gc2hvd3MgbWFpbiB2aWRlbyBvbmx5IC0tPlxuICA8ZGl2IGNsYXNzPVwiZmxvYXRpbmctY29udGVudFwiPlxuICAgIDwhLS0gTWFpbiB2aWRlbyBjb250YWluZXIgKHN1YnNjcmliZXIgaWYgYXZhaWxhYmxlLCBvdGhlcndpc2UgcHVibGlzaGVyKSAtLT5cbiAgICA8ZGl2IGlkPVwicGlwLW1haW4tdmlkZW9cIiBjbGFzcz1cInBpcC1tYWluLXZpZGVvXCI+PC9kaXY+XG5cbiAgICA8IS0tIEJvdHRvbSBjb250cm9scyAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiZmxvYXRpbmctY29udHJvbHNcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJhY3Rpb24tYnRuIGV4cGFuZC1idG5cIlxuICAgICAgICAoY2xpY2spPVwib25FeHBhbmQoKVwiXG4gICAgICAgIHRpdGxlPVwiRXhwYW5kIHRvIGZ1bGxzY3JlZW5cIlxuICAgICAgPlxuICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWV4cGFuZFwiPjwvaT5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cImFjdGlvbi1idG4gbXV0ZS1idG5cIlxuICAgICAgICBbY2xhc3MubXV0ZWRdPVwiaXNNdXRlZFwiXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVNdXRlKClcIlxuICAgICAgICBbdGl0bGVdPVwiaXNNdXRlZCA/ICdVbm11dGUgbWljcm9waG9uZScgOiAnTXV0ZSBtaWNyb3Bob25lJ1wiXG4gICAgICA+XG4gICAgICAgIDxpXG4gICAgICAgICAgY2xhc3M9XCJmYVwiXG4gICAgICAgICAgW2NsYXNzLmZhLW1pY3JvcGhvbmVdPVwiIWlzTXV0ZWRcIlxuICAgICAgICAgIFtjbGFzcy5mYS1taWNyb3Bob25lLXNsYXNoXT1cImlzTXV0ZWRcIlxuICAgICAgICA+PC9pPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYWN0aW9uLWJ0biBoYW5ndXAtYnRuXCIgKGNsaWNrKT1cIm9uSGFuZ1VwKClcIiB0aXRsZT1cIkhhbmcgdXAgY2FsbFwiPlxuICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXBob25lXCIgc3R5bGU9XCJ0cmFuc2Zvcm06IHJvdGF0ZSgxMzVkZWcpXCI+PC9pPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
189
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzLWZsb2F0aW5nLWNhbGwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFzLXVlbGwtc2RrL3NyYy9saWIvY29tcG9uZW50cy90YXMtZmxvYXRpbmctY2FsbC90YXMtZmxvYXRpbmctY2FsbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YXMtdWVsbC1zZGsvc3JjL2xpYi9jb21wb25lbnRzL3Rhcy1mbG9hdGluZy1jYWxsL3Rhcy1mbG9hdGluZy1jYWxsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRzdELE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDakYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDL0YsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLFFBQVEsTUFBTSxZQUFZLENBQUM7Ozs7QUFPbEMsTUFBTSxPQUFPLHdCQUF3QjtJQVFuQyxZQUNVLFVBQXNCLEVBQ3RCLFlBQXNCO1FBRHRCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsaUJBQVksR0FBWixZQUFZLENBQVU7UUFUekIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBRWYsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ25DLHNCQUFpQixHQUF1QixJQUFJLENBQUM7UUFDN0Msa0JBQWEsR0FBRyxLQUFLLENBQUMsQ0FBQyx5Q0FBeUM7UUFnSXhFLHVDQUF1QztRQUN0QixlQUFVLEdBQUcsRUFBRSxDQUFDO0lBNUg5QixDQUFDO0lB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dXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nYk1vZGFsLCBOZ2JNb2RhbFJlZiB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcbmltcG9ydCB7IFRhc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90YXMuc2VydmljZSc7XG5pbXBvcnQgeyBDYWxsU3RhdGUsIFZpZXdNb2RlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy90YXMuaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBUYXNWaWRlb2NhbGxDb21wb25lbnQgfSBmcm9tICcuLi90YXMtdmlkZW9jYWxsL3Rhcy12aWRlb2NhbGwuY29tcG9uZW50JztcbmltcG9ydCB7IFRhc0ZlZWRiYWNrTW9kYWxDb21wb25lbnQgfSBmcm9tICcuLi90YXMtZmVlZGJhY2stbW9kYWwvdGFzLWZlZWRiYWNrLW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCBpbnRlcmFjdCBmcm9tICdpbnRlcmFjdGpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGFzLWZsb2F0aW5nLWNhbGwnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFzLWZsb2F0aW5nLWNhbGwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90YXMtZmxvYXRpbmctY2FsbC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBUYXNGbG9hdGluZ0NhbGxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHB1YmxpYyBpc1Zpc2libGUgPSBmYWxzZTtcbiAgcHVibGljIGlzTXV0ZWQgPSBmYWxzZTtcblxuICBwcml2YXRlIHN1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIHByaXZhdGUgdmlkZW9DYWxsTW9kYWxSZWY6IE5nYk1vZGFsUmVmIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgZmVlZGJhY2tTaG93biA9IGZhbHNlOyAvLyBUcmFjayBpZiBmZWVkYmFjayBtb2RhbCBoYXMgYmVlbiBzaG93blxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdGFzU2VydmljZTogVGFzU2VydmljZSxcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTmdiTW9kYWxcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2V0dXBTdWJzY3JpcHRpb25zKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgICBpbnRlcmFjdCgnLnRhcy1mbG9hdGluZy1jb250YWluZXInKS51bnNldCgpO1xuICB9XG5cbiAgLy8gUHVibGljIE1ldGhvZHNcbiAgb25FeHBhbmQoKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuVmlkZW9DYWxsTW9kYWwodHJ1ZSk7XG4gICAgdGhpcy50YXNTZXJ2aWNlLmV4aXRQaXBNb2RlKCk7XG4gIH1cblxuICBvbkhhbmdVcCgpOiB2b2lkIHtcbiAgICB0aGlzLnRhc1NlcnZpY2UuZGlzY29ubmVjdFNlc3Npb24oKTtcbiAgfVxuXG4gIHRvZ2dsZU11dGUoKTogdm9pZCB7XG4gICAgdGhpcy50YXNTZXJ2aWNlLnRvZ2dsZU11dGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPcGVuIGZlZWRiYWNrIG1vZGFsIHdoZW4gY2FsbCBlbmRzIGZyb20gUGlQIG1vZGVcbiAgICovXG4gIHByaXZhdGUgb3BlbkZlZWRiYWNrTW9kYWwoKTogdm9pZCB7XG4gICAgLy8gUHJldmVudCBvcGVuaW5nIGZlZWRiYWNrIG1vZGFsIG11bHRpcGxlIHRpbWVzXG4gICAgaWYgKHRoaXMuZmVlZGJhY2tTaG93bikge1xuICAgICAgdGhpcy5pc1Zpc2libGUgPSBmYWxzZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBHZXQgdmlkZW9DYWxsSWQgZnJvbSBzZXJ2aWNlXG4gICAgY29uc3QgdmlkZW9DYWxsSWQgPSB0aGlzLnRhc1NlcnZpY2UudmlkZW9DYWxsSWQ7XG5cbiAgICAvLyBJZiBubyB2aWRlb0NhbGxJZCwgc2tpcCBmZWVkYmFjayBhbmQgaGlkZSBkaXJlY3RseVxuICAgIGlmICghdmlkZW9DYWxsSWQpIHtcbiAgICAgIHRoaXMuaXNWaXNpYmxlID0gZmFsc2U7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5mZWVkYmFja1Nob3duID0gdHJ1ZTtcblxuICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihUYXNGZWVkYmFja01vZGFsQ29tcG9uZW50LCB7XG4gICAgICBjZW50ZXJlZDogdHJ1ZSxcbiAgICAgIGJhY2tkcm9wOiB0cnVlLFxuICAgICAga2V5Ym9hcmQ6IHRydWUsXG4gICAgICB3aW5kb3dDbGFzczogJ3Rhcy1mZWVkYmFjay1tb2RhbC13cmFwcGVyJyxcbiAgICB9KTtcblxuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLnZpZGVvQ2FsbElkID0gdmlkZW9DYWxsSWQ7XG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UudGVuYW50ID0gdGhpcy50YXNTZXJ2aWNlLnRlbmFudCA/PyAnJztcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5idXNpbmVzc1JvbGUgPSB0aGlzLnRhc1NlcnZpY2UuYnVzaW5lc3NSb2xlO1xuXG4gICAgLy8gSGlkZSBmbG9hdGluZyBjYWxsIGFmdGVyIGZlZWRiYWNrIG1vZGFsIGlzIGNsb3NlZC9kaXNtaXNzZWRcbiAgICBtb2RhbFJlZi5yZXN1bHQuZmluYWxseSgoKSA9PiB7XG4gICAgICB0aGlzLmlzVmlzaWJsZSA9IGZhbHNlO1xuICAgICAgdGhpcy5mZWVkYmFja1Nob3duID0gZmFsc2U7IC8vIFJlc2V0IGZvciBwb3RlbnRpYWwgZnV0dXJlIGNhbGxzXG4gICAgfSk7XG4gIH1cblxuICAvLyBQcml2YXRlIE1ldGhvZHNcbiAgcHJpdmF0ZSBzZXR1cFN1YnNjcmlwdGlvbnMoKTogdm9pZCB7XG4gICAgLy8gQ2FsbCBzdGF0ZSBzdWJzY3JpcHRpb25cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy50YXNTZXJ2aWNlLmNhbGxTdGF0ZSQuc3Vic2NyaWJlKChzdGF0ZSkgPT4ge1xuICAgICAgICAvLyBPbmx5IGhhbmRsZSBkaXNjb25uZWN0IGZlZWRiYWNrIGlmIHdlJ3JlIGluIFBpUCBtb2RlIChpc1Zpc2libGUpXG4gICAgICAgIGlmIChzdGF0ZSA9PT0gQ2FsbFN0YXRlLkRJU0NPTk5FQ1RFRCAmJiB0aGlzLmlzVmlzaWJsZSkge1xuICAgICAgICAgIHRoaXMub3BlbkZlZWRiYWNrTW9kYWwoKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuXG4gICAgLy8gVmlldyBtb2RlIHN1YnNjcmlwdGlvblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLnRhc1NlcnZpY2Uudmlld01vZGUkLnN1YnNjcmliZSgobW9kZSkgPT4ge1xuICAgICAgICB0aGlzLmlzVmlzaWJsZSA9IG1vZGUgPT09IFZpZXdNb2RlLlBJUCAmJiB0aGlzLnRhc1NlcnZpY2UuaXNDYWxsQWN0aXZlKCk7XG4gICAgICAgIGlmICh0aGlzLmlzVmlzaWJsZSkge1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5pbml0SW50ZXJhY3QoKSwgMTAwKTtcbiAgICAgICAgICAvLyBDbGVhciBtb2RhbCByZWYgaWYgd2UgZW50ZXIgUGlQIG1vZGUgKG1vZGFsIGNsb3NlcyBpdHNlbGYpXG4gICAgICAgICAgdGhpcy52aWRlb0NhbGxNb2RhbFJlZiA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICAgIC8vIE11dGUgc3RhdGUgc3Vic2NyaXB0aW9uXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMudGFzU2VydmljZS5pc011dGVkJC5zdWJzY3JpYmUoKG11dGVkKSA9PiB7XG4gICAgICAgIHRoaXMuaXNNdXRlZCA9IG11dGVkO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuVmlkZW9DYWxsTW9kYWwoaXNSZXR1cm5pbmdGcm9tUGlwOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcbiAgICBpZiAodGhpcy52aWRlb0NhbGxNb2RhbFJlZikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMudmlkZW9DYWxsTW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKFRhc1ZpZGVvY2FsbENvbXBvbmVudCwge1xuICAgICAgc2l6ZTogJ3hsJyxcbiAgICAgIHdpbmRvd0NsYXNzOiAndGFzLXZpZGVvLW1vZGFsJyxcbiAgICAgIGJhY2tkcm9wOiAnc3RhdGljJyxcbiAgICAgIGtleWJvYXJkOiBmYWxzZSxcbiAgICB9KTtcblxuICAgIHRoaXMudmlkZW9DYWxsTW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2Uuc2Vzc2lvbklkID0gdGhpcy50YXNTZXJ2aWNlLnNlc3Npb25JZDtcbiAgICB0aGlzLnZpZGVvQ2FsbE1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLnRva2VuID0gdGhpcy50YXNTZXJ2aWNlLnRva2VuO1xuICAgIHRoaXMudmlkZW9DYWxsTW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UuYnVzaW5lc3NSb2xlID0gdGhpcy50YXNTZXJ2aWNlLmJ1c2luZXNzUm9sZTtcbiAgICB0aGlzLnZpZGVvQ2FsbE1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLmlzUmV0dXJuaW5nRnJvbVBpcCA9IGlzUmV0dXJuaW5nRnJvbVBpcDtcblxuICAgIHRoaXMudmlkZW9DYWxsTW9kYWxSZWYucmVzdWx0LnRoZW4oXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMudmlkZW9DYWxsTW9kYWxSZWYgPSBudWxsO1xuICAgICAgfSxcbiAgICAgICgpID0+IHtcbiAgICAgICAgdGhpcy52aWRlb0NhbGxNb2RhbFJlZiA9IG51bGw7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIC8vIE1hcmdpbiBmcm9tIHNjcmVlbiBlZGdlcyAoaW4gcGl4ZWxzKVxuICBwcml2YXRlIHJlYWRvbmx5IFBJUF9NQVJHSU4gPSAyMDtcblxuICBwcml2YXRlIGluaXRJbnRlcmFjdCgpOiB2b2lkIHtcbiAgICBpbnRlcmFjdCgnLnRhcy1mbG9hdGluZy1jb250YWluZXInKS51bnNldCgpO1xuXG4gICAgLy8gQ3JlYXRlIHJlc3RyaWN0aW9uIGFyZWEgd2l0aCBtYXJnaW5cbiAgICBjb25zdCBtYXJnaW4gPSB0aGlzLlBJUF9NQVJHSU47XG4gICAgY29uc3QgcmVzdHJpY3RUb0JvZHlXaXRoTWFyZ2luID0ge1xuICAgICAgcmVzdHJpY3Rpb246ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBsZWZ0OiBtYXJnaW4sXG4gICAgICAgICAgdG9wOiBtYXJnaW4sXG4gICAgICAgICAgcmlnaHQ6IHdpbmRvdy5pbm5lcldpZHRoIC0gbWFyZ2luLFxuICAgICAgICAgIGJvdHRvbTogd2luZG93LmlubmVySGVpZ2h0IC0gbWFyZ2luLFxuICAgICAgICB9O1xuICAgICAgfSxcbiAgICAgIGVsZW1lbnRSZWN0OiB7IGxlZnQ6IDAsIHJpZ2h0OiAxLCB0b3A6IDAsIGJvdHRvbTogMSB9LFxuICAgIH07XG5cbiAgICBpbnRlcmFjdCgnLnRhcy1mbG9hdGluZy1jb250YWluZXInKVxuICAgICAgLmRyYWdnYWJsZSh7XG4gICAgICAgIGluZXJ0aWE6IHRydWUsXG4gICAgICAgIG1vZGlmaWVyczogW2ludGVyYWN0Lm1vZGlmaWVycy5yZXN0cmljdChyZXN0cmljdFRvQm9keVdpdGhNYXJnaW4pXSxcbiAgICAgICAgYXV0b1Njcm9sbDogZmFsc2UsXG4gICAgICAgIGxpc3RlbmVyczoge1xuICAgICAgICAgIG1vdmU6IChldmVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0O1xuICAgICAgICAgICAgY29uc3QgeCA9IChwYXJzZUZsb2F0KHRhcmdldC5nZXRBdHRyaWJ1dGUoJ2RhdGEteCcpKSB8fCAwKSArIGV2ZW50LmR4O1xuICAgICAgICAgICAgY29uc3QgeSA9IChwYXJzZUZsb2F0KHRhcmdldC5nZXRBdHRyaWJ1dGUoJ2RhdGEteScpKSB8fCAwKSArIGV2ZW50LmR5O1xuXG4gICAgICAgICAgICB0YXJnZXQuc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZSgke3h9cHgsICR7eX1weClgO1xuICAgICAgICAgICAgdGFyZ2V0LnNldEF0dHJpYnV0ZSgnZGF0YS14JywgU3RyaW5nKHgpKTtcbiAgICAgICAgICAgIHRhcmdldC5zZXRBdHRyaWJ1dGUoJ2RhdGEteScsIFN0cmluZyh5KSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgICAucmVzaXphYmxlKHtcbiAgICAgICAgZWRnZXM6IHsgbGVmdDogZmFsc2UsIHJpZ2h0OiB0cnVlLCBib3R0b206IHRydWUsIHRvcDogZmFsc2UgfSxcbiAgICAgICAgbGlzdGVuZXJzOiB7XG4gICAgICAgICAgbW92ZTogKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG4gICAgICAgICAgICBsZXQgeCA9IHBhcnNlRmxvYXQodGFyZ2V0LmdldEF0dHJpYnV0ZSgnZGF0YS14JykpIHx8IDA7XG4gICAgICAgICAgICBsZXQgeSA9IHBhcnNlRmxvYXQodGFyZ2V0LmdldEF0dHJpYnV0ZSgnZGF0YS15JykpIHx8IDA7XG5cbiAgICAgICAgICAgIC8vIFVwZGF0ZSBlbGVtZW50IHNpemVcbiAgICAgICAgICAgIHRhcmdldC5zdHlsZS53aWR0aCA9IGAke2V2ZW50LnJlY3Qud2lkdGh9cHhgO1xuICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmhlaWdodCA9IGAke2V2ZW50LnJlY3QuaGVpZ2h0fXB4YDtcblxuICAgICAgICAgICAgLy8gVHJhbnNsYXRlIHdoZW4gcmVzaXppbmcgZnJvbSB0b3Agb3IgbGVmdCBlZGdlc1xuICAgICAgICAgICAgeCArPSBldmVudC5kZWx0YVJlY3QubGVmdDtcbiAgICAgICAgICAgIHkgKz0gZXZlbnQuZGVsdGFSZWN0LnRvcDtcblxuICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGUoJHt4fXB4LCAke3l9cHgpYDtcbiAgICAgICAgICAgIHRhcmdldC5zZXRBdHRyaWJ1dGUoJ2RhdGEteCcsIFN0cmluZyh4KSk7XG4gICAgICAgICAgICB0YXJnZXQuc2V0QXR0cmlidXRlKCdkYXRhLXknLCBTdHJpbmcoeSkpO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIG1vZGlmaWVyczogW1xuICAgICAgICAgIGludGVyYWN0Lm1vZGlmaWVycy5yZXN0cmljdEVkZ2VzKHtcbiAgICAgICAgICAgIG91dGVyOiB7XG4gICAgICAgICAgICAgIGxlZnQ6IG1hcmdpbixcbiAgICAgICAgICAgICAgdG9wOiBtYXJnaW4sXG4gICAgICAgICAgICAgIHJpZ2h0OiB3aW5kb3cuaW5uZXJXaWR0aCAtIG1hcmdpbixcbiAgICAgICAgICAgICAgYm90dG9tOiB3aW5kb3cuaW5uZXJIZWlnaHQgLSBtYXJnaW4sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIGludGVyYWN0Lm1vZGlmaWVycy5yZXN0cmljdFNpemUoe1xuICAgICAgICAgICAgbWluOiB7IHdpZHRoOiAyMDAsIGhlaWdodDogMTMwIH0sXG4gICAgICAgICAgICBtYXg6IHsgd2lkdGg6IDUwMCwgaGVpZ2h0OiAzNTAgfSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBpbnRlcmFjdC5tb2RpZmllcnMuYXNwZWN0UmF0aW8oeyByYXRpbzogJ3ByZXNlcnZlJyB9KSxcbiAgICAgICAgXSxcbiAgICAgICAgaW5lcnRpYTogdHJ1ZSxcbiAgICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwidGFzLWZsb2F0aW5nLWNvbnRhaW5lclwiIFtjbGFzcy52aXNpYmxlXT1cImlzVmlzaWJsZVwiPlxuICA8IS0tIFZpZGVvIGNvbnRlbnQgYXJlYSAtIHNob3dzIG1haW4gdmlkZW8gb25seSAtLT5cbiAgPGRpdiBjbGFzcz1cImZsb2F0aW5nLWNvbnRlbnRcIj5cbiAgICA8IS0tIE1haW4gdmlkZW8gY29udGFpbmVyIChzdWJzY3JpYmVyIGlmIGF2YWlsYWJsZSwgb3RoZXJ3aXNlIHB1Ymxpc2hlcikgLS0+XG4gICAgPGRpdiBpZD1cInBpcC1tYWluLXZpZGVvXCIgY2xhc3M9XCJwaXAtbWFpbi12aWRlb1wiPjwvZGl2PlxuXG4gICAgPCEtLSBCb3R0b20gY29udHJvbHMgLS0+XG4gICAgPGRpdiBjbGFzcz1cImZsb2F0aW5nLWNvbnRyb2xzXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwiYWN0aW9uLWJ0biBleHBhbmQtYnRuXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uRXhwYW5kKClcIlxuICAgICAgICB0aXRsZT1cIkV4cGFuZCB0byBmdWxsc2NyZWVuXCJcbiAgICAgID5cbiAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1leHBhbmRcIj48L2k+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJhY3Rpb24tYnRuIG11dGUtYnRuXCJcbiAgICAgICAgW2NsYXNzLm11dGVkXT1cImlzTXV0ZWRcIlxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlTXV0ZSgpXCJcbiAgICAgICAgW3RpdGxlXT1cImlzTXV0ZWQgPyAnVW5tdXRlIG1pY3JvcGhvbmUnIDogJ011dGUgbWljcm9waG9uZSdcIlxuICAgICAgPlxuICAgICAgICA8aVxuICAgICAgICAgIGNsYXNzPVwiZmFcIlxuICAgICAgICAgIFtjbGFzcy5mYS1taWNyb3Bob25lXT1cIiFpc011dGVkXCJcbiAgICAgICAgICBbY2xhc3MuZmEtbWljcm9waG9uZS1zbGFzaF09XCJpc011dGVkXCJcbiAgICAgICAgPjwvaT5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImFjdGlvbi1idG4gaGFuZ3VwLWJ0blwiIChjbGljayk9XCJvbkhhbmdVcCgpXCIgdGl0bGU9XCJIYW5nIHVwIGNhbGxcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1waG9uZVwiIHN0eWxlPVwidHJhbnNmb3JtOiByb3RhdGUoMTM1ZGVnKVwiPjwvaT5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
package/esm2020/lib/components/tas-incoming-appointment/tas-incoming-appointment.component.mjs
CHANGED
|
@@ -16,10 +16,13 @@ export class TasIncomingAppointmentComponent {
|
|
|
16
16
|
this.appointments = [];
|
|
17
17
|
this.isLoading = true;
|
|
18
18
|
this.hasError = false;
|
|
19
|
+
// The appointmentId from status API - only this appointment shows tas-btn
|
|
20
|
+
this.activeAppointmentId = null;
|
|
19
21
|
this.subscriptions = new Subscription();
|
|
20
22
|
}
|
|
21
23
|
ngOnInit() {
|
|
22
24
|
this.loadAppointments();
|
|
25
|
+
this.checkStatus();
|
|
23
26
|
}
|
|
24
27
|
ngOnDestroy() {
|
|
25
28
|
this.subscriptions.unsubscribe();
|
|
@@ -37,8 +40,9 @@ export class TasIncomingAppointmentComponent {
|
|
|
37
40
|
const appointments = Array.isArray(response)
|
|
38
41
|
? response
|
|
39
42
|
: response?.content || [];
|
|
40
|
-
//
|
|
41
|
-
|
|
43
|
+
// Deduplicate by id and sort by date and startTime ascending (earliest first)
|
|
44
|
+
const uniqueAppointments = appointments.filter((appt, index, self) => index === self.findIndex((a) => a.id === appt.id));
|
|
45
|
+
this.appointments = uniqueAppointments.sort((a, b) => {
|
|
42
46
|
const dateTimeA = `${a.date}T${a.startTime}`;
|
|
43
47
|
const dateTimeB = `${b.date}T${b.startTime}`;
|
|
44
48
|
return dateTimeB.localeCompare(dateTimeA);
|
|
@@ -51,15 +55,49 @@ export class TasIncomingAppointmentComponent {
|
|
|
51
55
|
},
|
|
52
56
|
}));
|
|
53
57
|
}
|
|
58
|
+
/**
|
|
59
|
+
* Check status endpoint to get the active appointmentId
|
|
60
|
+
*/
|
|
61
|
+
checkStatus() {
|
|
62
|
+
if (!this.tenant || !this.entityId) {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
this.subscriptions.add(this.tasService
|
|
66
|
+
.getProxyVideoStatus({
|
|
67
|
+
roomType: this.roomType,
|
|
68
|
+
entityId: this.entityId,
|
|
69
|
+
tenant: this.tenant,
|
|
70
|
+
businessRole: this.businessRole,
|
|
71
|
+
})
|
|
72
|
+
.subscribe({
|
|
73
|
+
next: (response) => {
|
|
74
|
+
// Store the appointmentId from status - tas-btn only shows for this one
|
|
75
|
+
this.activeAppointmentId = response?.content?.appointmentId ?? null;
|
|
76
|
+
},
|
|
77
|
+
error: () => {
|
|
78
|
+
this.activeAppointmentId = null;
|
|
79
|
+
},
|
|
80
|
+
}));
|
|
81
|
+
}
|
|
54
82
|
onEnterCall(appointment) {
|
|
55
83
|
this.enterCall.emit(appointment);
|
|
56
84
|
}
|
|
57
85
|
/**
|
|
58
|
-
* Check if tas-btn should be shown for an appointment
|
|
86
|
+
* Check if tas-btn should be shown for an appointment.
|
|
87
|
+
* Only shows when appointment.id matches the activeAppointmentId from status API.
|
|
88
|
+
* tas-btn handles its own polling for joinable state.
|
|
59
89
|
*/
|
|
60
90
|
shouldShowTasBtn(appointment) {
|
|
61
|
-
|
|
91
|
+
const hasValidStatus = appointment.status === AppointmentStatus.CONFIRMED ||
|
|
62
92
|
appointment.status === AppointmentStatus.ACTIVE;
|
|
93
|
+
// Only show for the appointment that matches status API response
|
|
94
|
+
return hasValidStatus && appointment.id === this.activeAppointmentId;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* TrackBy function for ngFor
|
|
98
|
+
*/
|
|
99
|
+
trackByAppointmentId(index, appointment) {
|
|
100
|
+
return appointment.id;
|
|
63
101
|
}
|
|
64
102
|
/**
|
|
65
103
|
* Format date to Spanish format: "Lunes 8 de diciembre"
|
|
@@ -91,17 +129,17 @@ export class TasIncomingAppointmentComponent {
|
|
|
91
129
|
*/
|
|
92
130
|
getOtherParticipant(appointment) {
|
|
93
131
|
if (!appointment.participants || appointment.participants.length === 0) {
|
|
94
|
-
return appointment.title;
|
|
132
|
+
return appointment.title;
|
|
95
133
|
}
|
|
96
134
|
const otherParticipant = appointment.participants.find(p => p.userId !== this.currentUser?.id);
|
|
97
135
|
return otherParticipant?.name || appointment.title;
|
|
98
136
|
}
|
|
99
137
|
}
|
|
100
138
|
TasIncomingAppointmentComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TasIncomingAppointmentComponent, deps: [{ token: i1.TasService }], target: i0.ɵɵFactoryTarget.Component });
|
|
101
|
-
TasIncomingAppointmentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: TasIncomingAppointmentComponent, selector: "tas-incoming-appointment", inputs: { roomType: "roomType", entityId: "entityId", tenant: "tenant", businessRole: "businessRole", currentUser: "currentUser", fromDate: "fromDate", toDate: "toDate" }, outputs: { enterCall: "enterCall" }, ngImport: i0, template: "<div class=\"incoming-appointment-card\">\n <h3 class=\"card-title\">Pr\u00F3ximo turno</h3>\n\n <!-- Loading state -->\n <div class=\"card-content\" *ngIf=\"isLoading\">\n <div class=\"loading-spinner\"></div>\n </div>\n\n <!-- Empty state -->\n <div class=\"card-content empty-state\" *ngIf=\"!isLoading && appointments.length === 0\">\n <div class=\"icon-container\">\n <div class=\"icon-circle\">\n <i class=\"fa fa-calendar\" aria-hidden=\"true\"></i>\n </div>\n <span class=\"sparkle sparkle-1\">\u2726</span>\n <span class=\"sparkle sparkle-2\">\u2726</span>\n <span class=\"sparkle sparkle-3\">\u2726</span>\n <span class=\"sparkle sparkle-4\">\u2726</span>\n </div>\n <h4 class=\"empty-title\">Todav\u00EDa no ten\u00E9s turnos agendados</h4>\n <p class=\"empty-subtitle\">\n En caso de que Medicina Laboral requiera una consulta, lo ver\u00E1s en esta secci\u00F3n.\n </p>\n </div>\n\n <!-- Appointments list -->\n <div class=\"card-content appointment-state\" *ngIf=\"!isLoading && appointments.length > 0\">\n <div class=\"appointment-card\" *ngFor=\"let appt of appointments\">\n <div class=\"appointment-header\">\n <tas-avatar [name]=\"getOtherParticipant(appt)\" [size]=\"48\"></tas-avatar>\n <span class=\"doctor-name\">{{ getOtherParticipant(appt) }}</span>\n </div>\n <div class=\"appointment-details\">\n <div class=\"date-time\">\n <span class=\"date\">{{ formatAppointmentDate(appt) }}</span>\n <span class=\"time\">{{ formatTimeRange(appt) }}</span>\n </div>\n <tas-btn\n *ngIf=\"shouldShowTasBtn(appt)\"\n variant=\"teal\"\n buttonLabel=\"Ingresar\"\n [roomType]=\"appt.roomType\"\n [entityId]=\"appt.entityId\"\n [tenant]=\"tenant\"\n [businessRole]=\"businessRole\"\n [currentUser]=\"currentUser\"\n ></tas-btn>\n </div>\n </div>\n </div>\n</div>\n\n", styles: ["
|
|
139
|
+
TasIncomingAppointmentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: TasIncomingAppointmentComponent, selector: "tas-incoming-appointment", inputs: { roomType: "roomType", entityId: "entityId", tenant: "tenant", businessRole: "businessRole", currentUser: "currentUser", fromDate: "fromDate", toDate: "toDate" }, outputs: { enterCall: "enterCall" }, ngImport: i0, template: "<div class=\"incoming-appointment-card\">\n <h3 class=\"card-title\">Pr\u00F3ximo turno</h3>\n\n <!-- Loading state -->\n <div class=\"card-content\" *ngIf=\"isLoading\">\n <div class=\"loading-spinner\"></div>\n </div>\n\n <!-- Empty state -->\n <div class=\"card-content empty-state\" *ngIf=\"!isLoading && appointments.length === 0\">\n <div class=\"icon-container\">\n <div class=\"icon-circle\">\n <i class=\"fa fa-calendar\" aria-hidden=\"true\"></i>\n </div>\n <span class=\"sparkle sparkle-1\">\u2726</span>\n <span class=\"sparkle sparkle-2\">\u2726</span>\n <span class=\"sparkle sparkle-3\">\u2726</span>\n <span class=\"sparkle sparkle-4\">\u2726</span>\n </div>\n <h4 class=\"empty-title\">Todav\u00EDa no ten\u00E9s turnos agendados</h4>\n <p class=\"empty-subtitle\">\n En caso de que Medicina Laboral requiera una consulta, lo ver\u00E1s en esta secci\u00F3n.\n </p>\n </div>\n\n <!-- Appointments list -->\n <div class=\"card-content appointment-state\" *ngIf=\"!isLoading && appointments.length > 0\">\n <div class=\"appointment-card\" [ngClass]=\"{ 'cancelled': appt.status === 'CANCELLED' || appt.status === 'RESCHEDULED' }\" *ngFor=\"let appt of appointments; trackBy: trackByAppointmentId\">\n <div class=\"appointment-header\">\n <tas-avatar [name]=\"getOtherParticipant(appt)\" [size]=\"48\"></tas-avatar>\n <span class=\"doctor-name\">{{ getOtherParticipant(appt) }}</span>\n </div>\n <div class=\"appointment-details\">\n <div class=\"date-time\" [ngClass]=\"{ 'compact': !shouldShowTasBtn(appt), 'cancelled': appt.status === 'CANCELLED' || appt.status === 'RESCHEDULED' }\">\n <span class=\"date\">{{ formatAppointmentDate(appt) }}</span>\n <span class=\"time\">{{ formatTimeRange(appt) }}</span>\n </div>\n <tas-btn\n *ngIf=\"shouldShowTasBtn(appt)\"\n variant=\"teal\"\n buttonLabel=\"Ingresar\"\n [roomType]=\"appt.roomType\"\n [entityId]=\"appt.entityId\"\n [tenant]=\"tenant\"\n [businessRole]=\"businessRole\"\n [currentUser]=\"currentUser\"\n ></tas-btn>\n </div>\n </div>\n </div>\n</div>\n\n", styles: ["@charset \"UTF-8\";:host{display:block}.incoming-appointment-card{background:#ffffff;border-radius:12px;box-shadow:0 2px 8px #00000014;padding:24px;min-width:360px}.card-title{font-size:16px;font-weight:400;color:#6b7280;margin:0 0 24px}.card-content{display:flex;flex-direction:column;align-items:center}.loading-spinner{width:40px;height:40px;border:3px solid #e0f7fa;border-top-color:#0097a7;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.empty-state{text-align:center;padding:20px 0}.icon-container{position:relative;width:120px;height:120px;margin-bottom:24px}.icon-circle{width:100%;height:100%;background:#e0f7fa;border-radius:50%;display:flex;align-items:center;justify-content:center}.icon-circle i{font-size:40px;color:#0097a7}.sparkle{position:absolute;color:#0097a7;font-size:12px}.sparkle-1{top:10px;right:5px}.sparkle-2{top:0;right:30px}.sparkle-3{top:25px;left:0}.sparkle-4{bottom:20px;right:0}.empty-title{font-size:18px;font-weight:600;color:#1f2937;margin:0 0 12px}.empty-subtitle{font-size:14px;color:#6b7280;margin:0;max-width:320px;line-height:1.5}.appointment-state{align-items:stretch;gap:16px}.appointment-card{border-radius:12px;border:1px solid var(--Primary-White-Uell50, #8ED1D8);background:#F1FAFA;padding:1.5rem}.appointment-header{display:flex;align-items:center;gap:12px;margin-bottom:16px}.doctor-name{overflow:hidden;color:var(--Neutral-GreyDark, #383E52);text-overflow:ellipsis;font-size:16px;font-style:normal;font-weight:600;line-height:24px;letter-spacing:.016px}.appointment-details{display:flex;justify-content:space-between;align-items:flex-end}.date-time{display:flex;flex-direction:column;gap:4px}.date{color:var(--Neutral-GreyDark, #383E52);font-size:12px;font-style:normal;font-weight:600;line-height:16px;letter-spacing:.06px}.time{font-size:14px;color:var(--Neutral-GreyDark, #383E52);font-family:Inter;font-size:10px;font-style:normal;font-weight:400;line-height:14px;letter-spacing:.04px}.date-time.compact{flex-direction:row;align-items:center;gap:8px}.date-time.compact .date:after{content:\"\\b7\";margin-left:8px}.date-time.cancelled{color:#8a95ab}.date-time.cancelled .date{color:#8a95ab;text-decoration:line-through;font-size:14px}.date-time.cancelled .time{color:#8a95ab;text-decoration:line-through;font-size:12px}.appointment-card.cancelled{background:#f3f4f6;border:none}.appointment-card.cancelled .doctor-name{color:#8a95ab;text-decoration:line-through}.appointment-card.cancelled tas-avatar ::ng-deep .avatar{box-shadow:none}\n"], components: [{ type: i2.TasAvatarComponent, selector: "tas-avatar", inputs: ["name", "size"] }, { type: i3.TasButtonComponent, selector: "tas-btn", inputs: ["roomType", "entityId", "tenant", "businessRole", "currentUser", "variant", "buttonLabel"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
102
140
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TasIncomingAppointmentComponent, decorators: [{
|
|
103
141
|
type: Component,
|
|
104
|
-
args: [{ selector: 'tas-incoming-appointment', template: "<div class=\"incoming-appointment-card\">\n <h3 class=\"card-title\">Pr\u00F3ximo turno</h3>\n\n <!-- Loading state -->\n <div class=\"card-content\" *ngIf=\"isLoading\">\n <div class=\"loading-spinner\"></div>\n </div>\n\n <!-- Empty state -->\n <div class=\"card-content empty-state\" *ngIf=\"!isLoading && appointments.length === 0\">\n <div class=\"icon-container\">\n <div class=\"icon-circle\">\n <i class=\"fa fa-calendar\" aria-hidden=\"true\"></i>\n </div>\n <span class=\"sparkle sparkle-1\">\u2726</span>\n <span class=\"sparkle sparkle-2\">\u2726</span>\n <span class=\"sparkle sparkle-3\">\u2726</span>\n <span class=\"sparkle sparkle-4\">\u2726</span>\n </div>\n <h4 class=\"empty-title\">Todav\u00EDa no ten\u00E9s turnos agendados</h4>\n <p class=\"empty-subtitle\">\n En caso de que Medicina Laboral requiera una consulta, lo ver\u00E1s en esta secci\u00F3n.\n </p>\n </div>\n\n <!-- Appointments list -->\n <div class=\"card-content appointment-state\" *ngIf=\"!isLoading && appointments.length > 0\">\n <div class=\"appointment-card\" *ngFor=\"let appt of appointments\">\n <div class=\"appointment-header\">\n <tas-avatar [name]=\"getOtherParticipant(appt)\" [size]=\"48\"></tas-avatar>\n <span class=\"doctor-name\">{{ getOtherParticipant(appt) }}</span>\n </div>\n <div class=\"appointment-details\">\n <div class=\"date-time\">\n <span class=\"date\">{{ formatAppointmentDate(appt) }}</span>\n <span class=\"time\">{{ formatTimeRange(appt) }}</span>\n </div>\n <tas-btn\n *ngIf=\"shouldShowTasBtn(appt)\"\n variant=\"teal\"\n buttonLabel=\"Ingresar\"\n [roomType]=\"appt.roomType\"\n [entityId]=\"appt.entityId\"\n [tenant]=\"tenant\"\n [businessRole]=\"businessRole\"\n [currentUser]=\"currentUser\"\n ></tas-btn>\n </div>\n </div>\n </div>\n</div>\n\n", styles: ["
|
|
142
|
+
args: [{ selector: 'tas-incoming-appointment', template: "<div class=\"incoming-appointment-card\">\n <h3 class=\"card-title\">Pr\u00F3ximo turno</h3>\n\n <!-- Loading state -->\n <div class=\"card-content\" *ngIf=\"isLoading\">\n <div class=\"loading-spinner\"></div>\n </div>\n\n <!-- Empty state -->\n <div class=\"card-content empty-state\" *ngIf=\"!isLoading && appointments.length === 0\">\n <div class=\"icon-container\">\n <div class=\"icon-circle\">\n <i class=\"fa fa-calendar\" aria-hidden=\"true\"></i>\n </div>\n <span class=\"sparkle sparkle-1\">\u2726</span>\n <span class=\"sparkle sparkle-2\">\u2726</span>\n <span class=\"sparkle sparkle-3\">\u2726</span>\n <span class=\"sparkle sparkle-4\">\u2726</span>\n </div>\n <h4 class=\"empty-title\">Todav\u00EDa no ten\u00E9s turnos agendados</h4>\n <p class=\"empty-subtitle\">\n En caso de que Medicina Laboral requiera una consulta, lo ver\u00E1s en esta secci\u00F3n.\n </p>\n </div>\n\n <!-- Appointments list -->\n <div class=\"card-content appointment-state\" *ngIf=\"!isLoading && appointments.length > 0\">\n <div class=\"appointment-card\" [ngClass]=\"{ 'cancelled': appt.status === 'CANCELLED' || appt.status === 'RESCHEDULED' }\" *ngFor=\"let appt of appointments; trackBy: trackByAppointmentId\">\n <div class=\"appointment-header\">\n <tas-avatar [name]=\"getOtherParticipant(appt)\" [size]=\"48\"></tas-avatar>\n <span class=\"doctor-name\">{{ getOtherParticipant(appt) }}</span>\n </div>\n <div class=\"appointment-details\">\n <div class=\"date-time\" [ngClass]=\"{ 'compact': !shouldShowTasBtn(appt), 'cancelled': appt.status === 'CANCELLED' || appt.status === 'RESCHEDULED' }\">\n <span class=\"date\">{{ formatAppointmentDate(appt) }}</span>\n <span class=\"time\">{{ formatTimeRange(appt) }}</span>\n </div>\n <tas-btn\n *ngIf=\"shouldShowTasBtn(appt)\"\n variant=\"teal\"\n buttonLabel=\"Ingresar\"\n [roomType]=\"appt.roomType\"\n [entityId]=\"appt.entityId\"\n [tenant]=\"tenant\"\n [businessRole]=\"businessRole\"\n [currentUser]=\"currentUser\"\n ></tas-btn>\n </div>\n </div>\n </div>\n</div>\n\n", styles: ["@charset \"UTF-8\";:host{display:block}.incoming-appointment-card{background:#ffffff;border-radius:12px;box-shadow:0 2px 8px #00000014;padding:24px;min-width:360px}.card-title{font-size:16px;font-weight:400;color:#6b7280;margin:0 0 24px}.card-content{display:flex;flex-direction:column;align-items:center}.loading-spinner{width:40px;height:40px;border:3px solid #e0f7fa;border-top-color:#0097a7;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.empty-state{text-align:center;padding:20px 0}.icon-container{position:relative;width:120px;height:120px;margin-bottom:24px}.icon-circle{width:100%;height:100%;background:#e0f7fa;border-radius:50%;display:flex;align-items:center;justify-content:center}.icon-circle i{font-size:40px;color:#0097a7}.sparkle{position:absolute;color:#0097a7;font-size:12px}.sparkle-1{top:10px;right:5px}.sparkle-2{top:0;right:30px}.sparkle-3{top:25px;left:0}.sparkle-4{bottom:20px;right:0}.empty-title{font-size:18px;font-weight:600;color:#1f2937;margin:0 0 12px}.empty-subtitle{font-size:14px;color:#6b7280;margin:0;max-width:320px;line-height:1.5}.appointment-state{align-items:stretch;gap:16px}.appointment-card{border-radius:12px;border:1px solid var(--Primary-White-Uell50, #8ED1D8);background:#F1FAFA;padding:1.5rem}.appointment-header{display:flex;align-items:center;gap:12px;margin-bottom:16px}.doctor-name{overflow:hidden;color:var(--Neutral-GreyDark, #383E52);text-overflow:ellipsis;font-size:16px;font-style:normal;font-weight:600;line-height:24px;letter-spacing:.016px}.appointment-details{display:flex;justify-content:space-between;align-items:flex-end}.date-time{display:flex;flex-direction:column;gap:4px}.date{color:var(--Neutral-GreyDark, #383E52);font-size:12px;font-style:normal;font-weight:600;line-height:16px;letter-spacing:.06px}.time{font-size:14px;color:var(--Neutral-GreyDark, #383E52);font-family:Inter;font-size:10px;font-style:normal;font-weight:400;line-height:14px;letter-spacing:.04px}.date-time.compact{flex-direction:row;align-items:center;gap:8px}.date-time.compact .date:after{content:\"\\b7\";margin-left:8px}.date-time.cancelled{color:#8a95ab}.date-time.cancelled .date{color:#8a95ab;text-decoration:line-through;font-size:14px}.date-time.cancelled .time{color:#8a95ab;text-decoration:line-through;font-size:12px}.appointment-card.cancelled{background:#f3f4f6;border:none}.appointment-card.cancelled .doctor-name{color:#8a95ab;text-decoration:line-through}.appointment-card.cancelled tas-avatar ::ng-deep .avatar{box-shadow:none}\n"] }]
|
|
105
143
|
}], ctorParameters: function () { return [{ type: i1.TasService }]; }, propDecorators: { roomType: [{
|
|
106
144
|
type: Input
|
|
107
145
|
}], entityId: [{
|
|
@@ -119,4 +157,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
119
157
|
}], enterCall: [{
|
|
120
158
|
type: Output
|
|
121
159
|
}] } });
|
|
122
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzLWluY29taW5nLWFwcG9pbnRtZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rhcy11ZWxsLXNkay9zcmMvbGliL2NvbXBvbmVudHMvdGFzLWluY29taW5nLWFwcG9pbnRtZW50L3Rhcy1pbmNvbWluZy1hcHBvaW50bWVudC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YXMtdWVsbC1zZGsvc3JjL2xpYi9jb21wb25lbnRzL3Rhcy1pbmNvbWluZy1hcHBvaW50bWVudC90YXMtaW5jb21pbmctYXBwb2ludG1lbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFHVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXBDLE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsV0FBVyxFQUNYLGVBQWUsR0FFaEIsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7O0FBT3pDLE1BQU0sT0FBTywrQkFBK0I7SUFvQjFDLFlBQW9CLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFuQjFDLGlDQUFpQztRQUN4QixhQUFRLEdBQWdCLFdBQVcsQ0FBQyxHQUFHLENBQUM7UUFHeEMsaUJBQVksR0FBb0IsZUFBZSxDQUFDLElBQUksQ0FBQztRQU9wRCxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQWtCLENBQUM7UUFFbEQsaUJBQVksR0FBcUIsRUFBRSxDQUFDO1FBQ3BDLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFDakIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVoQixrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFFRSxDQUFDO0lBRTlDLFFBQVE7UUFDTixJQUFJLENBQUMsZ0JBQWdCLEVB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LFFBQVEsRUFBRSxDQUFDLENBQUM7UUFFOUMsT0FBTyxHQUFHLE9BQU8sSUFBSSxNQUFNLE9BQU8sU0FBUyxFQUFFLENBQUM7SUFDaEQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksZUFBZSxDQUFDLFdBQTJCO1FBQ2hELE9BQU8sR0FBRyxXQUFXLENBQUMsU0FBUyxNQUFNLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM3RCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxtQkFBbUIsQ0FBQyxXQUEyQjtRQUNwRCxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksSUFBSSxXQUFXLENBQUMsWUFBWSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDdEUsT0FBTyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsdUNBQXVDO1NBQ2xFO1FBRUQsTUFBTSxnQkFBZ0IsR0FBRyxXQUFXLENBQUMsWUFBWSxDQUFDLElBQUksQ0FDcEQsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUN2QyxDQUFDO1FBRUYsT0FBTyxnQkFBZ0IsRUFBRSxJQUFJLElBQUksV0FBVyxDQUFDLEtBQUssQ0FBQztJQUNyRCxDQUFDOzs2SEFwSFUsK0JBQStCO2lIQUEvQiwrQkFBK0IsaVJDdkI1QyxzOURBb0RBOzRGRDdCYSwrQkFBK0I7a0JBTDNDLFNBQVM7K0JBQ0UsMEJBQTBCO2lHQU0zQixRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFHRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFFSSxTQUFTO3NCQUFsQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBPbkluaXQsXG4gIE9uRGVzdHJveSxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVGFzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Rhcy5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIFRhc0FwcG9pbnRtZW50LFxuICBBcHBvaW50bWVudFN0YXR1cyxcbiAgVGFzUm9vbVR5cGUsXG4gIFRhc0J1c2luZXNzUm9sZSxcbiAgVGFzQ3VycmVudFVzZXIsXG59IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvdGFzLmludGVyZmFjZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0YXMtaW5jb21pbmctYXBwb2ludG1lbnQnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFzLWluY29taW5nLWFwcG9pbnRtZW50LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFzLWluY29taW5nLWFwcG9pbnRtZW50LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFRhc0luY29taW5nQXBwb2ludG1lbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIC8vIFBhc3N0aHJvdWdoIGlucHV0cyBmb3IgdGFzLWJ0blxuICBASW5wdXQoKSByb29tVHlwZTogVGFzUm9vbVR5cGUgPSBUYXNSb29tVHlwZS5UQVM7XG4gIEBJbnB1dCgpIGVudGl0eUlkITogbnVtYmVyO1xuICBASW5wdXQoKSB0ZW5hbnQhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGJ1c2luZXNzUm9sZTogVGFzQnVzaW5lc3NSb2xlID0gVGFzQnVzaW5lc3NSb2xlLlVTRVI7XG4gIEBJbnB1dCgpIGN1cnJlbnRVc2VyITogVGFzQ3VycmVudFVzZXI7XG4gIFxuICAvLyBEYXRlIHJhbmdlIGlucHV0cyBmb3IgZmV0Y2hpbmcgYXBwb2ludG1lbnRzXG4gIEBJbnB1dCgpIGZyb21EYXRlITogc3RyaW5nOyAvLyBZWVlZLU1NLUREIGZvcm1hdFxuICBASW5wdXQoKSB0b0RhdGUhOiBzdHJpbmc7ICAgLy8gWVlZWS1NTS1ERCBmb3JtYXRcblxuICBAT3V0cHV0KCkgZW50ZXJDYWxsID0gbmV3IEV2ZW50RW1pdHRlcjxUYXNBcHBvaW50bWVudD4oKTtcblxuICBwdWJsaWMgYXBwb2ludG1lbnRzOiBUYXNBcHBvaW50bWVudFtdID0gW107XG4gIHB1YmxpYyBpc0xvYWRpbmcgPSB0cnVlO1xuICBwdWJsaWMgaGFzRXJyb3IgPSBmYWxzZTtcblxuICBwcml2YXRlIHN1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0YXNTZXJ2aWNlOiBUYXNTZXJ2aWNlKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubG9hZEFwcG9pbnRtZW50cygpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIGxvYWRBcHBvaW50bWVudHMoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMudGFzU2VydmljZVxuICAgICAgICAuZ2V0QXBwb2ludG1lbnRzKHsgXG4gICAgICAgICAgZnJvbURhdGU6IHRoaXMuZnJvbURhdGUsIFxuICAgICAgICAgIHRvRGF0ZTogdGhpcy50b0RhdGUsIFxuICAgICAgICAgIGVudGl0eUlkOiB0aGlzLmVudGl0eUlkIFxuICAgICAgICB9KVxuICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICBuZXh0OiAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgICAgLy8gSGFuZGxlIGJvdGggYXJyYXkgcmVzcG9uc2UgYW5kIHdyYXBwZWQgcmVzcG9uc2UgKGUuZy4sIHsgY29udGVudDogWy4uLl0gfSlcbiAgICAgICAgICAgIGNvbnN0IGFwcG9pbnRtZW50cyA9IEFycmF5LmlzQXJyYXkocmVzcG9uc2UpXG4gICAgICAgICAgICAgID8gcmVzcG9uc2VcbiAgICAgICAgICAgICAgOiByZXNwb25zZT8uY29udGVudCB8fCBbXTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLy8gU29ydCBieSBkYXRlIGFuZCBzdGFydFRpbWUgZGVzY2VuZGluZyAobW9zdCByZWNlbnQgZmlyc3QpXG4gICAgICAgICAgICB0aGlzLmFwcG9pbnRtZW50cyA9IGFwcG9pbnRtZW50cy5zb3J0KChhOiBUYXNBcHBvaW50bWVudCwgYjogVGFzQXBwb2ludG1lbnQpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgZGF0ZVRpbWVBID0gYCR7YS5kYXRlfVQke2Euc3RhcnRUaW1lfWA7XG4gICAgICAgICAgICAgIGNvbnN0IGRhdGVUaW1lQiA9IGAke2IuZGF0ZX1UJHtiLnN0YXJ0VGltZX1gO1xuICAgICAgICAgICAgICByZXR1cm4gZGF0ZVRpbWVCLmxvY2FsZUNvbXBhcmUoZGF0ZVRpbWVBKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmhhc0Vycm9yID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHVibGljIG9uRW50ZXJDYWxsKGFwcG9pbnRtZW50OiBUYXNBcHBvaW50bWVudCk6IHZvaWQge1xuICAgIHRoaXMuZW50ZXJDYWxsLmVtaXQoYXBwb2ludG1lbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIHRhcy1idG4gc2hvdWxkIGJlIHNob3duIGZvciBhbiBhcHBvaW50bWVudCAoQ09ORklSTUVEIG9yIEFDVElWRSBzdGF0dXMpXG4gICAqL1xuICBwdWJsaWMgc2hvdWxkU2hvd1Rhc0J0bihhcHBvaW50bWVudDogVGFzQXBwb2ludG1lbnQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gYXBwb2ludG1lbnQuc3RhdHVzID09PSBBcHBvaW50bWVudFN0YXR1cy5DT05GSVJNRUQgfHwgXG4gICAgICAgICAgIGFwcG9pbnRtZW50LnN0YXR1cyA9PT0gQXBwb2ludG1lbnRTdGF0dXMuQUNUSVZFO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvcm1hdCBkYXRlIHRvIFNwYW5pc2ggZm9ybWF0OiBcIkx1bmVzIDggZGUgZGljaWVtYnJlXCJcbiAgICovXG4gIHB1YmxpYyBmb3JtYXRBcHBvaW50bWVudERhdGUoYXBwb2ludG1lbnQ6IFRhc0FwcG9pbnRtZW50KTogc3RyaW5nIHtcbiAgICBjb25zdCBbeWVhciwgbW9udGgsIGRheV0gPSBhcHBvaW50bWVudC5kYXRlLnNwbGl0KCctJykubWFwKE51bWJlcik7XG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHllYXIsIG1vbnRoIC0gMSwgZGF5KTtcblxuICAgIGNvbnN0IGRheU5hbWVzID0gW1xuICAgICAgJ0RvbWluZ28nLCAnTHVuZXMnLCAnTWFydGVzJywgJ01pw6lyY29sZXMnLFxuICAgICAgJ0p1ZXZlcycsICdWaWVybmVzJywgJ1PDoWJhZG8nXG4gICAgXTtcbiAgICBjb25zdCBtb250aE5hbWVzID0gW1xuICAgICAgJ2VuZXJvJywgJ2ZlYnJlcm8nLCAnbWFyem8nLCAnYWJyaWwnLCAnbWF5bycsICdqdW5pbycsXG4gICAgICAnanVsaW8nLCAnYWdvc3RvJywgJ3NlcHRpZW1icmUnLCAnb2N0dWJyZScsICdub3ZpZW1icmUnLCAnZGljaWVtYnJlJ1xuICAgIF07XG5cbiAgICBjb25zdCBkYXlOYW1lID0gZGF5TmFtZXNbZGF0ZS5nZXREYXkoKV07XG4gICAgY29uc3QgZGF5TnVtID0gZGF0ZS5nZXREYXRlKCk7XG4gICAgY29uc3QgbW9udGhOYW1lID0gbW9udGhOYW1lc1tkYXRlLmdldE1vbnRoKCldO1xuXG4gICAgcmV0dXJuIGAke2RheU5hbWV9ICR7ZGF5TnVtfSBkZSAke21vbnRoTmFtZX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvcm1hdCB0aW1lIHJhbmdlOiBcIjk6MDAgLSA5OjMwXCJcbiAgICovXG4gIHB1YmxpYyBmb3JtYXRUaW1lUmFuZ2UoYXBwb2ludG1lbnQ6IFRhc0FwcG9pbnRtZW50KTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7YXBwb2ludG1lbnQuc3RhcnRUaW1lfSAtICR7YXBwb2ludG1lbnQuZW5kVGltZX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgb3RoZXIgcGFydGljaXBhbnQgaW4gdGhlIGNhbGwgKG5vdCB0aGUgY3VycmVudCB1c2VyKVxuICAgKi9cbiAgcHVibGljIGdldE90aGVyUGFydGljaXBhbnQoYXBwb2ludG1lbnQ6IFRhc0FwcG9pbnRtZW50KTogc3RyaW5nIHtcbiAgICBpZiAoIWFwcG9pbnRtZW50LnBhcnRpY2lwYW50cyB8fCBhcHBvaW50bWVudC5wYXJ0aWNpcGFudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gYXBwb2ludG1lbnQudGl0bGU7IC8vIEZhbGxiYWNrIHRvIHRpdGxlIGlmIG5vIHBhcnRpY2lwYW50c1xuICAgIH1cbiAgICBcbiAgICBjb25zdCBvdGhlclBhcnRpY2lwYW50ID0gYXBwb2ludG1lbnQucGFydGljaXBhbnRzLmZpbmQoXG4gICAgICBwID0+IHAudXNlcklkICE9PSB0aGlzLmN1cnJlbnRVc2VyPy5pZFxuICAgICk7XG4gICAgXG4gICAgcmV0dXJuIG90aGVyUGFydGljaXBhbnQ/Lm5hbWUgfHwgYXBwb2ludG1lbnQudGl0bGU7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJpbmNvbWluZy1hcHBvaW50bWVudC1jYXJkXCI+XG4gIDxoMyBjbGFzcz1cImNhcmQtdGl0bGVcIj5QcsOzeGltbyB0dXJubzwvaDM+XG5cbiAgPCEtLSBMb2FkaW5nIHN0YXRlIC0tPlxuICA8ZGl2IGNsYXNzPVwiY2FyZC1jb250ZW50XCIgKm5nSWY9XCJpc0xvYWRpbmdcIj5cbiAgICA8ZGl2IGNsYXNzPVwibG9hZGluZy1zcGlubmVyXCI+PC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gRW1wdHkgc3RhdGUgLS0+XG4gIDxkaXYgY2xhc3M9XCJjYXJkLWNvbnRlbnQgZW1wdHktc3RhdGVcIiAqbmdJZj1cIiFpc0xvYWRpbmcgJiYgYXBwb2ludG1lbnRzLmxlbmd0aCA9PT0gMFwiPlxuICAgIDxkaXYgY2xhc3M9XCJpY29uLWNvbnRhaW5lclwiPlxuICAgICAgPGRpdiBjbGFzcz1cImljb24tY2lyY2xlXCI+XG4gICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtY2FsZW5kYXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxzcGFuIGNsYXNzPVwic3BhcmtsZSBzcGFya2xlLTFcIj7inKY8L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz1cInNwYXJrbGUgc3BhcmtsZS0yXCI+4pymPC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJzcGFya2xlIHNwYXJrbGUtM1wiPuKcpjwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwic3BhcmtsZSBzcGFya2xlLTRcIj7inKY8L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPGg0IGNsYXNzPVwiZW1wdHktdGl0bGVcIj5Ub2RhdsOtYSBubyB0ZW7DqXMgdHVybm9zIGFnZW5kYWRvczwvaDQ+XG4gICAgPHAgY2xhc3M9XCJlbXB0eS1zdWJ0aXRsZVwiPlxuICAgICAgRW4gY2FzbyBkZSBxdWUgTWVkaWNpbmEgTGFib3JhbCByZXF1aWVyYSB1bmEgY29uc3VsdGEsIGxvIHZlcsOhcyBlbiBlc3RhIHNlY2Npw7NuLlxuICAgIDwvcD5cbiAgPC9kaXY+XG5cbiAgPCEtLSBBcHBvaW50bWVudHMgbGlzdCAtLT5cbiAgPGRpdiBjbGFzcz1cImNhcmQtY29udGVudCBhcHBvaW50bWVudC1zdGF0ZVwiICpuZ0lmPVwiIWlzTG9hZGluZyAmJiBhcHBvaW50bWVudHMubGVuZ3RoID4gMFwiPlxuICAgIDxkaXYgY2xhc3M9XCJhcHBvaW50bWVudC1jYXJkXCIgKm5nRm9yPVwibGV0IGFwcHQgb2YgYXBwb2ludG1lbnRzXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXBwb2ludG1lbnQtaGVhZGVyXCI+XG4gICAgICAgIDx0YXMtYXZhdGFyIFtuYW1lXT1cImdldE90aGVyUGFydGljaXBhbnQoYXBwdClcIiBbc2l6ZV09XCI0OFwiPjwvdGFzLWF2YXRhcj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJkb2N0b3ItbmFtZVwiPnt7IGdldE90aGVyUGFydGljaXBhbnQoYXBwdCkgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJhcHBvaW50bWVudC1kZXRhaWxzXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlLXRpbWVcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImRhdGVcIj57eyBmb3JtYXRBcHBvaW50bWVudERhdGUoYXBwdCkgfX08L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aW1lXCI+e3sgZm9ybWF0VGltZVJhbmdlKGFwcHQpIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHRhcy1idG5cbiAgICAgICAgICAqbmdJZj1cInNob3VsZFNob3dUYXNCdG4oYXBwdClcIlxuICAgICAgICAgIHZhcmlhbnQ9XCJ0ZWFsXCJcbiAgICAgICAgICBidXR0b25MYWJlbD1cIkluZ3Jlc2FyXCJcbiAgICAgICAgICBbcm9vbVR5cGVdPVwiYXBwdC5yb29tVHlwZVwiXG4gICAgICAgICAgW2VudGl0eUlkXT1cImFwcHQuZW50aXR5SWRcIlxuICAgICAgICAgIFt0ZW5hbnRdPVwidGVuYW50XCJcbiAgICAgICAgICBbYnVzaW5lc3NSb2xlXT1cImJ1c2luZXNzUm9sZVwiXG4gICAgICAgICAgW2N1cnJlbnRVc2VyXT1cImN1cnJlbnRVc2VyXCJcbiAgICAgICAgPjwvdGFzLWJ0bj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG4iXX0=
|
|
160
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzLWluY29taW5nLWFwcG9pbnRtZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rhcy11ZWxsLXNkay9zcmMvbGliL2NvbXBvbmVudHMvdGFzLWluY29taW5nLWFwcG9pbnRtZW50L3Rhcy1pbmNvbWluZy1hcHBvaW50bWVudC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YXMtdWVsbC1zZGsvc3JjL2xpYi9jb21wb25lbnRzL3Rhcy1pbmNvbWluZy1hcHBvaW50bWVudC90YXMtaW5jb21pbmctYXBwb2ludG1lbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFHVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXBDLE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsV0FBVyxFQUNYLGVBQWUsR0FFaEIsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7O0FBT3pDLE1BQU0sT0FBTywrQkFBK0I7SUF1QjFDLFlBQW9CLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7UUF0QjFDLGlDQUFpQztRQUN4QixhQUFRLEdBQWdCLFdBQVcsQ0FBQyxHQUFHLENBQUM7UUFHeEMsaUJBQVksR0FBb0IsZUFBZSxDQUFDLElBQUksQ0FBQztRQU9wRCxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQWtCLENBQUM7UUFFbEQsaUJBQVksR0FBcUIsRUFBRSxDQUFDO1FBQ3BDLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFDakIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUV4QiwwRUFBMEU7UUFDbkUsd0JBQW1CLEdBQWtCLElBQUksQ0FBQztRQUV6QyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFF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b250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgT25Jbml0LFxuICBPbkRlc3Ryb3ksXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFRhc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90YXMuc2VydmljZSc7XG5pbXBvcnQge1xuICBUYXNBcHBvaW50bWVudCxcbiAgQXBwb2ludG1lbnRTdGF0dXMsXG4gIFRhc1Jvb21UeXBlLFxuICBUYXNCdXNpbmVzc1JvbGUsXG4gIFRhc0N1cnJlbnRVc2VyLFxufSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3Rhcy5pbnRlcmZhY2VzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGFzLWluY29taW5nLWFwcG9pbnRtZW50JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Rhcy1pbmNvbWluZy1hcHBvaW50bWVudC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Rhcy1pbmNvbWluZy1hcHBvaW50bWVudC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBUYXNJbmNvbWluZ0FwcG9pbnRtZW50Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvLyBQYXNzdGhyb3VnaCBpbnB1dHMgZm9yIHRhcy1idG5cbiAgQElucHV0KCkgcm9vbVR5cGU6IFRhc1Jvb21UeXBlID0gVGFzUm9vbVR5cGUuVEFTO1xuICBASW5wdXQoKSBlbnRpdHlJZCE6IG51bWJlcjtcbiAgQElucHV0KCkgdGVuYW50ITogc3RyaW5nO1xuICBASW5wdXQoKSBidXNpbmVzc1JvbGU6IFRhc0J1c2luZXNzUm9sZSA9IFRhc0J1c2luZXNzUm9sZS5VU0VSO1xuICBASW5wdXQoKSBjdXJyZW50VXNlciE6IFRhc0N1cnJlbnRVc2VyO1xuICBcbiAgLy8gRGF0ZSByYW5nZSBpbnB1dHMgZm9yIGZldGNoaW5nIGFwcG9pbnRtZW50c1xuICBASW5wdXQoKSBmcm9tRGF0ZSE6IHN0cmluZzsgLy8gWVlZWS1NTS1ERCBmb3JtYXRcbiAgQElucHV0KCkgdG9EYXRlITogc3RyaW5nOyAgIC8vIFlZWVktTU0tREQgZm9ybWF0XG5cbiAgQE91dHB1dCgpIGVudGVyQ2FsbCA9IG5ldyBFdmVudEVtaXR0ZXI8VGFzQXBwb2ludG1lbnQ+KCk7XG5cbiAgcHVibGljIGFwcG9pbnRtZW50czogVGFzQXBwb2ludG1lbnRbXSA9IFtdO1xuICBwdWJsaWMgaXNMb2FkaW5nID0gdHJ1ZTtcbiAgcHVibGljIGhhc0Vycm9yID0gZmFsc2U7XG5cbiAgLy8gVGhlIGFwcG9pbnRtZW50SWQgZnJvbSBzdGF0dXMgQVBJIC0gb25seSB0aGlzIGFwcG9pbnRtZW50IHNob3dzIHRhcy1idG5cbiAgcHVibGljIGFjdGl2ZUFwcG9pbnRtZW50SWQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRhc1NlcnZpY2U6IFRhc1NlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5sb2FkQXBwb2ludG1lbnRzKCk7XG4gICAgdGhpcy5jaGVja1N0YXR1cygpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIGxvYWRBcHBvaW50bWVudHMoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMudGFzU2VydmljZVxuICAgICAgICAuZ2V0QXBwb2ludG1lbnRzKHsgXG4gICAgICAgICAgZnJvbURhdGU6IHRoaXMuZnJvbURhdGUsIFxuICAgICAgICAgIHRvRGF0ZTogdGhpcy50b0RhdGUsIFxuICAgICAgICAgIGVudGl0eUlkOiB0aGlzLmVudGl0eUlkIFxuICAgICAgICB9KVxuICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICBuZXh0OiAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgICAgLy8gSGFuZGxlIGJvdGggYXJyYXkgcmVzcG9uc2UgYW5kIHdyYXBwZWQgcmVzcG9uc2UgKGUuZy4sIHsgY29udGVudDogWy4uLl0gfSlcbiAgICAgICAgICAgIGNvbnN0IGFwcG9pbnRtZW50cyA9IEFycmF5LmlzQXJyYXkocmVzcG9uc2UpXG4gICAgICAgICAgICAgID8gcmVzcG9uc2VcbiAgICAgICAgICAgICAgOiByZXNwb25zZT8uY29udGVudCB8fCBbXTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLy8gRGVkdXBsaWNhdGUgYnkgaWQgYW5kIHNvcnQgYnkgZGF0ZSBhbmQgc3RhcnRUaW1lIGFzY2VuZGluZyAoZWFybGllc3QgZmlyc3QpXG4gICAgICAgICAgICBjb25zdCB1bmlxdWVBcHBvaW50bWVudHMgPSBhcHBvaW50bWVudHMuZmlsdGVyKFxuICAgICAgICAgICAgICAoYXBwdDogVGFzQXBwb2ludG1lbnQsIGluZGV4OiBudW1iZXIsIHNlbGY6IFRhc0FwcG9pbnRtZW50W10pID0+XG4gICAgICAgICAgICAgICAgaW5kZXggPT09IHNlbGYuZmluZEluZGV4KChhOiBUYXNBcHBvaW50bWVudCkgPT4gYS5pZCA9PT0gYXBwdC5pZClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLmFwcG9pbnRtZW50cyA9IHVuaXF1ZUFwcG9pbnRtZW50cy5zb3J0KChhOiBUYXNBcHBvaW50bWVudCwgYjogVGFzQXBwb2ludG1lbnQpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgZGF0ZVRpbWVBID0gYCR7YS5kYXRlfVQke2Euc3RhcnRUaW1lfWA7XG4gICAgICAgICAgICAgIGNvbnN0IGRhdGVUaW1lQiA9IGAke2IuZGF0ZX1UJHtiLnN0YXJ0VGltZX1gO1xuICAgICAgICAgICAgICByZXR1cm4gZGF0ZVRpbWVCLmxvY2FsZUNvbXBhcmUoZGF0ZVRpbWVBKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmhhc0Vycm9yID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIHN0YXR1cyBlbmRwb2ludCB0byBnZXQgdGhlIGFjdGl2ZSBhcHBvaW50bWVudElkXG4gICAqL1xuICBwcml2YXRlIGNoZWNrU3RhdHVzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy50ZW5hbnQgfHwgIXRoaXMuZW50aXR5SWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy50YXNTZXJ2aWNlXG4gICAgICAgIC5nZXRQcm94eVZpZGVvU3RhdHVzKHtcbiAgICAgICAgICByb29tVHlwZTogdGhpcy5yb29tVHlwZSxcbiAgICAgICAgICBlbnRpdHlJZDogdGhpcy5lbnRpdHlJZCxcbiAgICAgICAgICB0ZW5hbnQ6IHRoaXMudGVuYW50LFxuICAgICAgICAgIGJ1c2luZXNzUm9sZTogdGhpcy5idXNpbmVzc1JvbGUsXG4gICAgICAgIH0pXG4gICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgIG5leHQ6IChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgLy8gU3RvcmUgdGhlIGFwcG9pbnRtZW50SWQgZnJvbSBzdGF0dXMgLSB0YXMtYnRuIG9ubHkgc2hvd3MgZm9yIHRoaXMgb25lXG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUFwcG9pbnRtZW50SWQgPSByZXNwb25zZT8uY29udGVudD8uYXBwb2ludG1lbnRJZCA/PyBudWxsO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlQXBwb2ludG1lbnRJZCA9IG51bGw7XG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHVibGljIG9uRW50ZXJDYWxsKGFwcG9pbnRtZW50OiBUYXNBcHBvaW50bWVudCk6IHZvaWQge1xuICAgIHRoaXMuZW50ZXJDYWxsLmVtaXQoYXBwb2ludG1lbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIHRhcy1idG4gc2hvdWxkIGJlIHNob3duIGZvciBhbiBhcHBvaW50bWVudC5cbiAgICogT25seSBzaG93cyB3aGVuIGFwcG9pbnRtZW50LmlkIG1hdGNoZXMgdGhlIGFjdGl2ZUFwcG9pbnRtZW50SWQgZnJvbSBzdGF0dXMgQVBJLlxuICAgKiB0YXMtYnRuIGhhbmRsZXMgaXRzIG93biBwb2xsaW5nIGZvciBqb2luYWJsZSBzdGF0ZS5cbiAgICovXG4gIHB1YmxpYyBzaG91bGRTaG93VGFzQnRuKGFwcG9pbnRtZW50OiBUYXNBcHBvaW50bWVudCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGhhc1ZhbGlkU3RhdHVzID0gYXBwb2ludG1lbnQuc3RhdHVzID09PSBBcHBvaW50bWVudFN0YXR1cy5DT05GSVJNRUQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwb2ludG1lbnQuc3RhdHVzID09PSBBcHBvaW50bWVudFN0YXR1cy5BQ1RJVkU7XG4gICAgXG4gICAgLy8gT25seSBzaG93IGZvciB0aGUgYXBwb2ludG1lbnQgdGhhdCBtYXRjaGVzIHN0YXR1cyBBUEkgcmVzcG9uc2VcbiAgICByZXR1cm4gaGFzVmFsaWRTdGF0dXMgJiYgYXBwb2ludG1lbnQuaWQgPT09IHRoaXMuYWN0aXZlQXBwb2ludG1lbnRJZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmFja0J5IGZ1bmN0aW9uIGZvciBuZ0ZvclxuICAgKi9cbiAgcHVibGljIHRyYWNrQnlBcHBvaW50bWVudElkKGluZGV4OiBudW1iZXIsIGFwcG9pbnRtZW50OiBUYXNBcHBvaW50bWVudCk6IG51bWJlciB7XG4gICAgcmV0dXJuIGFwcG9pbnRtZW50LmlkO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvcm1hdCBkYXRlIHRvIFNwYW5pc2ggZm9ybWF0OiBcIkx1bmVzIDggZGUgZGljaWVtYnJlXCJcbiAgICovXG4gIHB1YmxpYyBmb3JtYXRBcHBvaW50bWVudERhdGUoYXBwb2ludG1lbnQ6IFRhc0FwcG9pbnRtZW50KTogc3RyaW5nIHtcbiAgICBjb25zdCBbeWVhciwgbW9udGgsIGRheV0gPSBhcHBvaW50bWVudC5kYXRlLnNwbGl0KCctJykubWFwKE51bWJlcik7XG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHllYXIsIG1vbnRoIC0gMSwgZGF5KTtcblxuICAgIGNvbnN0IGRheU5hbWVzID0gW1xuICAgICAgJ0RvbWluZ28nLCAnTHVuZXMnLCAnTWFydGVzJywgJ01pw6lyY29sZXMnLFxuICAgICAgJ0p1ZXZlcycsICdWaWVybmVzJywgJ1PDoWJhZG8nXG4gICAgXTtcbiAgICBjb25zdCBtb250aE5hbWVzID0gW1xuICAgICAgJ2VuZXJvJywgJ2ZlYnJlcm8nLCAnbWFyem8nLCAnYWJyaWwnLCAnbWF5bycsICdqdW5pbycsXG4gICAgICAnanVsaW8nLCAnYWdvc3RvJywgJ3NlcHRpZW1icmUnLCAnb2N0dWJyZScsICdub3ZpZW1icmUnLCAnZGljaWVtYnJlJ1xuICAgIF07XG5cbiAgICBjb25zdCBkYXlOYW1lID0gZGF5TmFtZXNbZGF0ZS5nZXREYXkoKV07XG4gICAgY29uc3QgZGF5TnVtID0gZGF0ZS5nZXREYXRlKCk7XG4gICAgY29uc3QgbW9udGhOYW1lID0gbW9udGhOYW1lc1tkYXRlLmdldE1vbnRoKCldO1xuXG4gICAgcmV0dXJuIGAke2RheU5hbWV9ICR7ZGF5TnVtfSBkZSAke21vbnRoTmFtZX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvcm1hdCB0aW1lIHJhbmdlOiBcIjk6MDAgLSA5OjMwXCJcbiAgICovXG4gIHB1YmxpYyBmb3JtYXRUaW1lUmFuZ2UoYXBwb2ludG1lbnQ6IFRhc0FwcG9pbnRtZW50KTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7YXBwb2ludG1lbnQuc3RhcnRUaW1lfSAtICR7YXBwb2ludG1lbnQuZW5kVGltZX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgb3RoZXIgcGFydGljaXBhbnQgaW4gdGhlIGNhbGwgKG5vdCB0aGUgY3VycmVudCB1c2VyKVxuICAgKi9cbiAgcHVibGljIGdldE90aGVyUGFydGljaXBhbnQoYXBwb2ludG1lbnQ6IFRhc0FwcG9pbnRtZW50KTogc3RyaW5nIHtcbiAgICBpZiAoIWFwcG9pbnRtZW50LnBhcnRpY2lwYW50cyB8fCBhcHBvaW50bWVudC5wYXJ0aWNpcGFudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gYXBwb2ludG1lbnQudGl0bGU7XG4gICAgfVxuICAgIFxuICAgIGNvbnN0IG90aGVyUGFydGljaXBhbnQgPSBhcHBvaW50bWVudC5wYXJ0aWNpcGFudHMuZmluZChcbiAgICAgIHAgPT4gcC51c2VySWQgIT09IHRoaXMuY3VycmVudFVzZXI/LmlkXG4gICAgKTtcbiAgICBcbiAgICByZXR1cm4gb3RoZXJQYXJ0aWNpcGFudD8ubmFtZSB8fCBhcHBvaW50bWVudC50aXRsZTtcbiAgfVxufVxuXG4iLCI8ZGl2IGNsYXNzPVwiaW5jb21pbmctYXBwb2ludG1lbnQtY2FyZFwiPlxuICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlXCI+UHLDs3hpbW8gdHVybm88L2gzPlxuXG4gIDwhLS0gTG9hZGluZyBzdGF0ZSAtLT5cbiAgPGRpdiBjbGFzcz1cImNhcmQtY29udGVudFwiICpuZ0lmPVwiaXNMb2FkaW5nXCI+XG4gICAgPGRpdiBjbGFzcz1cImxvYWRpbmctc3Bpbm5lclwiPjwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIEVtcHR5IHN0YXRlIC0tPlxuICA8ZGl2IGNsYXNzPVwiY2FyZC1jb250ZW50IGVtcHR5LXN0YXRlXCIgKm5nSWY9XCIhaXNMb2FkaW5nICYmIGFwcG9pbnRtZW50cy5sZW5ndGggPT09IDBcIj5cbiAgICA8ZGl2IGNsYXNzPVwiaWNvbi1jb250YWluZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpY29uLWNpcmNsZVwiPlxuICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWNhbGVuZGFyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgPC9kaXY+XG4gICAgICA8c3BhbiBjbGFzcz1cInNwYXJrbGUgc3BhcmtsZS0xXCI+4pymPC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJzcGFya2xlIHNwYXJrbGUtMlwiPuKcpjwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwic3BhcmtsZSBzcGFya2xlLTNcIj7inKY8L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz1cInNwYXJrbGUgc3BhcmtsZS00XCI+4pymPC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxoNCBjbGFzcz1cImVtcHR5LXRpdGxlXCI+VG9kYXbDrWEgbm8gdGVuw6lzIHR1cm5vcyBhZ2VuZGFkb3M8L2g0PlxuICAgIDxwIGNsYXNzPVwiZW1wdHktc3VidGl0bGVcIj5cbiAgICAgIEVuIGNhc28gZGUgcXVlIE1lZGljaW5hIExhYm9yYWwgcmVxdWllcmEgdW5hIGNvbnN1bHRhLCBsbyB2ZXLDoXMgZW4gZXN0YSBzZWNjacOzbi5cbiAgICA8L3A+XG4gIDwvZGl2PlxuXG4gIDwhLS0gQXBwb2ludG1lbnRzIGxpc3QgLS0+XG4gIDxkaXYgY2xhc3M9XCJjYXJkLWNvbnRlbnQgYXBwb2ludG1lbnQtc3RhdGVcIiAqbmdJZj1cIiFpc0xvYWRpbmcgJiYgYXBwb2ludG1lbnRzLmxlbmd0aCA+IDBcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYXBwb2ludG1lbnQtY2FyZFwiIFtuZ0NsYXNzXT1cInsgJ2NhbmNlbGxlZCc6IGFwcHQuc3RhdHVzID09PSAnQ0FOQ0VMTEVEJyB8fCBhcHB0LnN0YXR1cyA9PT0gJ1JFU0NIRURVTEVEJyB9XCIgKm5nRm9yPVwibGV0IGFwcHQgb2YgYXBwb2ludG1lbnRzOyB0cmFja0J5OiB0cmFja0J5QXBwb2ludG1lbnRJZFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImFwcG9pbnRtZW50LWhlYWRlclwiPlxuICAgICAgICA8dGFzLWF2YXRhciBbbmFtZV09XCJnZXRPdGhlclBhcnRpY2lwYW50KGFwcHQpXCIgW3NpemVdPVwiNDhcIj48L3Rhcy1hdmF0YXI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZG9jdG9yLW5hbWVcIj57eyBnZXRPdGhlclBhcnRpY2lwYW50KGFwcHQpIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXBwb2ludG1lbnQtZGV0YWlsc1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZS10aW1lXCIgW25nQ2xhc3NdPVwieyAnY29tcGFjdCc6ICFzaG91bGRTaG93VGFzQnRuKGFwcHQpLCAnY2FuY2VsbGVkJzogYXBwdC5zdGF0dXMgPT09ICdDQU5DRUxMRUQnIHx8IGFwcHQuc3RhdHVzID09PSAnUkVTQ0hFRFVMRUQnIH1cIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImRhdGVcIj57eyBmb3JtYXRBcHBvaW50bWVudERhdGUoYXBwdCkgfX08L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aW1lXCI+e3sgZm9ybWF0VGltZVJhbmdlKGFwcHQpIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHRhcy1idG5cbiAgICAgICAgICAqbmdJZj1cInNob3VsZFNob3dUYXNCdG4oYXBwdClcIlxuICAgICAgICAgIHZhcmlhbnQ9XCJ0ZWFsXCJcbiAgICAgICAgICBidXR0b25MYWJlbD1cIkluZ3Jlc2FyXCJcbiAgICAgICAgICBbcm9vbVR5cGVdPVwiYXBwdC5yb29tVHlwZVwiXG4gICAgICAgICAgW2VudGl0eUlkXT1cImFwcHQuZW50aXR5SWRcIlxuICAgICAgICAgIFt0ZW5hbnRdPVwidGVuYW50XCJcbiAgICAgICAgICBbYnVzaW5lc3NSb2xlXT1cImJ1c2luZXNzUm9sZVwiXG4gICAgICAgICAgW2N1cnJlbnRVc2VyXT1cImN1cnJlbnRVc2VyXCJcbiAgICAgICAgPjwvdGFzLWJ0bj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG4iXX0=
|