qms-angular 1.1.50 → 1.1.51

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.
@@ -5,18 +5,18 @@ import guidHelper from '../../qms-ckeditor-components/common/helper/guidHelper';
5
5
  export class QMSNavigationDrawerComponent {
6
6
  constructor() {
7
7
  this.treeData = [];
8
- this.addNodeEvent = new EventEmitter();
9
- this.addFavoriteEvent = new EventEmitter();
10
- this.drogLocationEvent = new EventEmitter();
11
8
  this.showAddIcon = true;
12
9
  this.openNodes = [];
13
10
  this.dragDropListDisabled = false;
14
- this.nodesExpand = new EventEmitter();
15
- this.onClickNodeEvent = new EventEmitter();
16
11
  this.addFavoriteTooltip = 'Legg til favoritt';
17
12
  this.deleteFavoriteTooltip = 'Slett favoritt';
18
13
  this.addNodeTooltip = 'Legg til lokasjon';
19
14
  this.activeNode = '';
15
+ this.onClickNodeEvent = new EventEmitter();
16
+ this.nodesExpand = new EventEmitter();
17
+ this.addNodeEvent = new EventEmitter();
18
+ this.addFavoriteEvent = new EventEmitter();
19
+ this.drogLocationEvent = new EventEmitter();
20
20
  this.expandedNodeSet = new Set();
21
21
  this.dragging = false;
22
22
  this.expandDelay = 1000;
@@ -336,19 +336,19 @@ QMSNavigationDrawerComponent.propDecorators = {
336
336
  treeData: [{ type: Input }],
337
337
  showFavoriteIcon: [{ type: Input }],
338
338
  favoriteMode: [{ type: Input }],
339
- addNodeEvent: [{ type: Output }],
340
- addFavoriteEvent: [{ type: Output }],
341
- drogLocationEvent: [{ type: Output }],
342
339
  showAddIcon: [{ type: Input }],
343
340
  openNodes: [{ type: Input }],
344
341
  dragDropListDisabled: [{ type: Input }],
345
- nodesExpand: [{ type: Output }],
346
342
  filterText: [{ type: Input }],
347
343
  faIconPath: [{ type: Input }],
348
- onClickNodeEvent: [{ type: Output }],
349
344
  addFavoriteTooltip: [{ type: Input }],
350
345
  deleteFavoriteTooltip: [{ type: Input }],
351
346
  addNodeTooltip: [{ type: Input }],
352
- activeNode: [{ type: Input }]
347
+ activeNode: [{ type: Input }],
348
+ onClickNodeEvent: [{ type: Output }],
349
+ nodesExpand: [{ type: Output }],
350
+ addNodeEvent: [{ type: Output }],
351
+ addFavoriteEvent: [{ type: Output }],
352
+ drogLocationEvent: [{ type: Output }]
353
353
  };
354
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLW5hdmlnYXRpb24tZHJhd2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Ftcy1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9xbXMtbmF2aWdhdGlvbi1kcmF3ZXIvcW1zLW5hdmlnYXRpb24tZHJhd2VyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFnQyxNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3BILE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWpGLE9BQU8sVUFBVSxNQUFNLHdEQUF3RCxDQUFDO0FBUWhGLE1BQU0sT0FBTyw0QkFBNEI7SUFDdkM7UUFHUyxhQUFRLEdBQW9CLEVBQUUsQ0FBQztRQUc5QixpQkFBWSxHQUF5QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3hELHFCQUFnQixHQUF5QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzVELHNCQUFpQixHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzNELGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ25CLGNBQVMsR0FBYSxFQUFFLENBQUM7UUFDekIseUJBQW9CLEdBQUcsS0FBSyxDQUFDO1FBQzVCLGdCQUFXLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFHcEQscUJBQWdCLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDN0QsdUJBQWtCLEdBQVcsbUJBQW1CLENBQUM7UUFDakQsMEJBQXFCLEdBQVcsZ0JBQWdCLENBQUM7UUFDakQsbUJBQWMsR0FBVyxtQkFBbUIsQ0FBQztRQUM3QyxlQUFVLEdBQVcsRUFBRSxDQUFDO1FBRWpDLG9CQUFlLEdBQUcsSUFBSSxHQUFH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QUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRTtvQkFDaEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztpQkFDdEM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGlCQUFpQixDQUFDLElBQWM7UUFDdEMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDcEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDaEM7SUFDSCxDQUFDO0lBRU8scUJBQXFCLENBQUMsTUFBYztRQUMxQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxNQUFNLENBQUMsQ0FBQztJQUN6RSxDQUFDOzs7WUFsWEYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSwyQkFBMkI7Z0JBQ3JDLHc0SkFBcUQ7O2FBRXREOzs7O3VCQU1FLEtBQUs7K0JBQ0wsS0FBSzsyQkFDTCxLQUFLOzJCQUNMLE1BQU07K0JBQ04sTUFBTTtnQ0FDTixNQUFNOzBCQUNOLEtBQUs7d0JBQ0wsS0FBSzttQ0FDTCxLQUFLOzBCQUNMLE1BQU07eUJBQ04sS0FBSzt5QkFDTCxLQUFLOytCQUNMLE1BQU07aUNBQ04sS0FBSztvQ0FDTCxLQUFLOzZCQUNMLEtBQUs7eUJBQ0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENka0RyYWdEcm9wIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBGbGF0VHJlZUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9jZGsvdHJlZSc7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0VHJlZUZsYXREYXRhU291cmNlLCBNYXRUcmVlRmxhdHRlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdHJlZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCBndWlkSGVscGVyIGZyb20gJy4uLy4uL3Ftcy1ja2VkaXRvci1jb21wb25lbnRzL2NvbW1vbi9oZWxwZXIvZ3VpZEhlbHBlcic7XG5pbXBvcnQgeyBGbGF0Tm9kZSwgVHJlZU5vZGUgfSBmcm9tICcuL21vZGVscy9xbXMtbmF2aWdhdGlvbi1kcmF3ZXIubW9kZWwnO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXFtcy1uYXZpZ2F0aW9uLWRyYXdlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9xbXMtbmF2aWdhdGlvbi1kcmF3ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9xbXMtbmF2aWdhdGlvbi1kcmF3ZXIuY29tcG9uZW50LnNjc3MnXVxufSlcblxuZXhwb3J0IGNsYXNzIFFNU05hdmlnYXRpb25EcmF3ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSB0aGlzLnRyZWVEYXRhO1xuICB9XG4gIEBJbnB1dCgpIHRyZWVEYXRhOiBBcnJheTxUcmVlTm9kZT4gPSBbXTtcbiAgQElucHV0KCkgc2hvd0Zhdm9yaXRlSWNvbjogYm9vbGVhbjtcbiAgQElucHV0KCkgZmF2b3JpdGVNb2RlOiBib29sZWFuO1xuICBAT3V0cHV0KCkgYWRkTm9kZUV2ZW50OiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGFkZEZhdm9yaXRlRXZlbnQ6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgZHJvZ0xvY2F0aW9uRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBASW5wdXQoKSBzaG93QWRkSWNvbiA9IHRydWU7XG4gIEBJbnB1dCgpIG9wZW5Ob2Rlczogc3RyaW5nW10gPSBbXTtcbiAgQElucHV0KCkgZHJhZ0Ryb3BMaXN0RGlzYWJsZWQgPSBmYWxzZTtcbiAgQE91dHB1dCgpIG5vZGVzRXhwYW5kOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQElucHV0KCkgZmlsdGVyVGV4dDogc3RyaW5nO1xuICBASW5wdXQoKSBmYUljb25QYXRoOiBzdHJpbmc7XG4gIEBPdXRwdXQoKSBvbkNsaWNrTm9kZUV2ZW50OiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQElucHV0KCkgYWRkRmF2b3JpdGVUb29sdGlwOiBzdHJpbmcgPSAnTGVnZyB0aWwgZmF2b3JpdHQnO1xuICBASW5wdXQoKSBkZWxldGVGYXZvcml0ZVRvb2x0aXA6IHN0cmluZyA9ICdTbGV0dCBmYXZvcml0dCc7XG4gIEBJbnB1dCgpIGFkZE5vZGVUb29sdGlwOiBzdHJpbmcgPSAnTGVnZyB0aWwgbG9rYXNqb24nO1xuICBASW5wdXQoKSBhY3RpdmVOb2RlOiBzdHJpbmcgPSAnJztcbiAgYWN0aXZlTm9kZUxvY2F0aW9uOiBTdWJzY3JpcHRpb247XG4gIGV4cGFuZGVkTm9kZVNldCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBkcmFnZ2luZyA9IGZhbHNlO1xuICBleHBhbmRUaW1lb3V0OiBhbnk7XG4gIGV4cGFuZERlbGF5ID0gMTAwMDtcbiAgaG92ZXJGYXZvcml0ZU5vZGVJZDogc3RyaW5nO1xuICBpc0hvdmVyID0gZmFsc2U7XG4gIHRyZWVDb250cm9sID0gbmV3IEZsYXRUcmVlQ29udHJvbDxGbGF0Tm9kZT4obm9kZSA9PiBub2RlLmxldmVsLCBub2RlID0+IG5vZGUuZXhwYW5kYWJsZSk7XG4gIHRyZWVGbGF0dGVuZXIgPSBuZXcgTWF0VHJlZUZsYXR0ZW5lcih0aGlzLl90cmFuc2Zvcm1lciwgbm9kZSA9PiBub2RlLmxldmVsLCBub2RlID0+IG5vZGUuZXhwYW5kYWJsZSwgbm9kZSA9PiBub2RlLmNoaWxkcmVuKTtcbiAgZGF0YVNvdXJjZSA9IG5ldyBNYXRUcmVlRmxhdERhdGFTb3VyY2UodGhpcy50cmVlQ29udHJvbCwgdGhpcy50cmVlRmxhdHRlbmVyKTtcbiAgaG92ZXJOb2RlOiBhbnkgPSB7fTtcbiAgZXhwYW5kaW5nTm9kZXM6IEZsYXROb2RlW10gPSBbXTtcblxuICBfdHJhbnNmb3JtZXIobm9kZTogVHJlZU5vZGUsIGxldmVsOiBudW1iZXIpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZXhwYW5kYWJsZTogISFub2RlLmNoaWxkcmVuICYmIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMCxcbiAgICAgIG5hbWU6IG5vZGUubmFtZSxcbiAgICAgIGxldmVsLFxuICAgICAgaWQ6IG5vZGUuaWQsXG4gICAgICBpc1JlYWRPbmx5OiBub2RlLmlzUmVhZE9ubHksXG4gICAgICBmYXZvcml0ZTogbm9kZS5mYXZvcml0ZSxcbiAgICAgIGRpc2FibGVkOiBub2RlLmRpc2FibGVkXG4gICAgfTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMub3Blbk5vZGVzLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICB0aGlzLnRyZWVDb250cm9sLmV4cGFuZCh0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlcy5maW5kKHAgPT4gcC5pZC50b1N0cmluZygpID09PSBpdGVtKSk7XG4gICAgfSk7XG4gIH1cblxuICBoYXNDaGlsZCA9IChfOiBudW1iZXIsIG5vZGU6IEZsYXROb2RlKSA9PiBub2RlLmV4cGFuZGFibGU7XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gdGhpcy50cmVlRGF0YTtcbiAgICBpZiAoY2hhbmdlcy5maWx0ZXJUZXh0ICYmIEpTT04uc3RyaW5naWZ5KGNoYW5nZXMuZmlsdGVyVGV4dC5jdXJyZW50VmFsdWUpICE9PSBKU09OLnN0cmluZ2lmeShjaGFuZ2VzLmZpbHRlclRleHQucHJldmlvdXNWYWx1ZSkpIHtcbiAgICAgIHRoaXMuZXhwYW5kTm9kZVNlYXJjaGVkKHRoaXMudHJlZURhdGEsIHRoaXMuZmlsdGVyVGV4dCk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXMub3Blbk5vZGVzICYmIEpTT04uc3RyaW5naWZ5KGNoYW5nZXMub3Blbk5vZGVzLmN1cnJlbnRWYWx1ZSkgIT09IEpTT04uc3RyaW5naWZ5KGNoYW5nZXMub3Blbk5vZGVzLnByZXZpb3VzVmFsdWUpKSB7XG4gICAgICB0aGlzLm9wZW5Ob2Rlcy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICB0aGlzLnRyZWVDb250cm9sLmV4cGFuZCh0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlcy5maW5kKHAgPT4gcC5pZC50b1N0cmluZygpID09PSBpdGVtKSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBleHBhbmROb2RlU2VhcmNoZWQobm9kZXNPcmlnaW46IFRyZWVOb2RlW10sIHR4dFNlYXJjaDogc3RyaW5nKSB7XG4gICAgbm9kZXNPcmlnaW4uZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGlmICghaXRlbS5uYW1lLnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5jbHVkZXModHh0U2VhcmNoLnRvTG9jYWxlTG93ZXJDYXNlKCkpKSB7XG4gICAgICAgIHRoaXMudHJlZUNvbnRyb2wuZXhwYW5kKHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzLmZpbmQocCA9PiBwLmlkLnRvU3RyaW5nKCkgPT09IGl0ZW0uaWQpKTtcbiAgICAgICAgaWYgKGl0ZW0uY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHRoaXMuZXhwYW5kTm9kZVNlYXJjaGVkKGl0ZW0uY2hpbGRyZW4sIHR4dFNlYXJjaCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG9uQ2xpY2tOb2RlKG5vZGU6IFRyZWVOb2RlLCBzZXRBY3RpdmVOb2RlPzogYm9vbGVhbikge1xuICAgIGlmIChzZXRBY3RpdmVOb2RlKSB7XG4gICAgICB0aGlzLmFjdGl2ZU5vZGUgPSBub2RlLmlkO1xuICAgICAgdGhpcy5vbkNsaWNrTm9kZUV2ZW50LmVtaXQobm9kZS5pZCk7XG4gICAgfVxuICAgIHRoaXMub25DbGlja1RvZ2dsZU5vZGUobm9kZSk7XG4gIH1cblxuICBvbk92ZXIobm9kZTogYW55KSB7XG4gICAgdGhpcy5ob3Zlck5vZGUgPSBub2RlO1xuICB9XG5cbiAgYWRkTmV3Tm9kZShub2RlSWQ6IGFueSwgZXZlbnQ6IGFueSkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5hZGROb2RlRXZlbnQuZW1pdChub2RlSWQpO1xuICB9XG5cbiAgYWRkRmF2b3JpdGVOb2RlKG5vZGVJZDogYW55LCBldmVudDogYW55KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLmFkZEZhdm9yaXRlRXZlbnQuZW1pdChub2RlSWQpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYWN0aXZlTm9kZUxvY2F0aW9uKSB7XG4gICAgICB0aGlzLmFjdGl2ZU5vZGVMb2NhdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIGNvbnN0cnVjdHMgYW4gYXJyYXkgb2Ygbm9kZXMgdGhhdCBtYXRjaGVzIHRoZSBET00sXG4gICAqIGFuZCBjYWxscyByZW1lbWJlckV4cGFuZGVkVHJlZU5vZGVzIHRvIHBlcnNpc3QgZXhwYW5kIHN0YXRlXG4gICAqL1xuICB2aXNpYmxlTm9kZXMoKTogVHJlZU5vZGVbXSB7XG4gICAgdGhpcy5yZW1lbWJlckV4cGFuZGVkVHJlZU5vZGVzKHRoaXMudHJlZUNvbnRyb2wsIHRoaXMuZXhwYW5kZWROb2RlU2V0KTtcbiAgICBjb25zdCByZXN1bHQgPSBbXTtcblxuICAgIGZ1bmN0aW9uIGFkZEV4cGFuZGVkQ2hpbGRyZW4obm9kZTogVHJlZU5vZGUsIGV4cGFuZGVkOiBTZXQ8c3RyaW5nPikge1xuICAgICAgcmVzdWx0LnB1c2gobm9kZSk7XG4gICAgICBpZiAoZXhwYW5kZWQuaGFzKG5vZGUuaWQpKSB7XG4gICAgICAgIG5vZGUuY2hpbGRyZW4ubWFwKGNoaWxkID0+IGFkZEV4cGFuZGVkQ2hpbGRyZW4oY2hpbGQsIGV4cGFuZGVkKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhLmZvckVhY2gobm9kZSA9PiB7XG4gICAgICBhZGRFeHBhbmRlZENoaWxkcmVuKG5vZGUsIHRoaXMuZXhwYW5kZWROb2RlU2V0KTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSB0aGUgZHJvcCAtIGhlcmUgd2UgcmVhcnJhbmdlIHRoZSBkYXRhIGJhc2VkIG9uIHRoZSBkcm9wIGV2ZW50LFxuICAgKiB0aGVuIHJlYnVpbGQgdGhlIHRyZWUuXG4gICAqICovXG4gIGRyb3AoZXZlbnQ6IENka0RyYWdEcm9wPHN0cmluZ1tdPikge1xuICAgIC8vIFNhdmUgZGF0YSBmb3IgYmFja3VwXG4gICAgY29uc3Qgbm9kZSA9IGV2ZW50Lml0ZW0uZGF0YTtcbiAgICBjb25zdCBiYWNrdXBDaGFuZ2VkTm9kZTogVHJlZU5vZGUgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG5vZGUpKTtcbiAgICBjb25zdCBiYWNrdXBEYXRhOiBUcmVlTm9kZVtdID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmRhdGFTb3VyY2UuZGF0YSkpO1xuXG4gICAgLy8gaWdub3JlIGRyb3BzIG91dHNpZGUgb2YgdGhlIHRyZWVcbiAgICBpZiAoIWV2ZW50LmlzUG9pbnRlck92ZXJDb250YWluZXIpIHsgcmV0dXJuOyB9XG5cbiAgICAvLyBjb25zdHJ1Y3QgYSBsaXN0IG9mIHZpc2libGUgbm9kZXMsIHRoaXMgd2lsbCBtYXRjaCB0aGUgRE9NLlxuICAgIC8vIHRoZSBjZGtEcmFnRHJvcCBldmVudC5jdXJyZW50SW5kZXggaml2ZXMgd2l0aCB2aXNpYmxlIG5vZGVzLlxuICAgIC8vIGl0IGNhbGxzIHJlbWVtYmVyRXhwYW5kZWRUcmVlTm9kZXMgdG8gcGVyc2lzdCBleHBhbmQgc3RhdGVcbiAgICBjb25zdCB2aXNpYmxlTm9kZXMgPSB0aGlzLnZpc2libGVOb2RlcygpO1xuXG4gICAgLy8gZGVlcCBjbG9uZSB0aGUgZGF0YSBzb3VyY2Ugc28gd2UgY2FuIG11dGF0ZSBpdFxuICAgIGNvbnN0IGNoYW5nZWREYXRhID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmRhdGFTb3VyY2UuZGF0YSkpO1xuXG4gICAgLy8gcmVjdXJzaXZlIGZpbmQgZnVuY3Rpb24gdG8gZmluZCBzaWJsaW5ncyBvZiBub2RlXG4gICAgZnVuY3Rpb24gZmluZE5vZGVTaWJsaW5ncyhhcnI6IEFycmF5PGFueT4sIGlkOiBzdHJpbmcpOiBBcnJheTxhbnk+IHtcbiAgICAgIGxldCByZXN1bHQsIHN1YlJlc3VsdDtcbiAgICAgIGFyci5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICBpZiAoaXRlbS5pZCA9PT0gaWQpIHtcbiAgICAgICAgICByZXN1bHQgPSBhcnI7XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbS5jaGlsZHJlbikge1xuICAgICAgICAgIHN1YlJlc3VsdCA9IGZpbmROb2RlU2libGluZ3MoaXRlbS5jaGlsZHJlbiwgaWQpO1xuICAgICAgICAgIGlmIChzdWJSZXN1bHQpIHsgcmVzdWx0ID0gc3ViUmVzdWx0OyB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvLyByZW1vdmUgdGhlIG5vZGUgZnJvbSBpdHMgb2xkIHBsYWNlXG4gICAgY29uc3Qgc2libGluZ3MgPSBmaW5kTm9kZVNpYmxpbmdzKGNoYW5nZWREYXRhLCBub2RlLmlkKTtcbiAgICBjb25zdCBzaWJsaW5nSW5kZXggPSBzaWJsaW5ncy5maW5kSW5kZXgobiA9PiBuLmlkID09PSBub2RlLmlkKTtcbiAgICAvLyBjb25zdCBub2RlVG9JbnNlcnQ6IFRyZWVOb2RlID0gc2libGluZ3Muc3BsaWNlKHNpYmxpbmdJbmRleCwgMSlbMF07XG4gICAgY29uc3Qgbm9kZVRvSW5zZXJ0ID0gc2libGluZ3Muc3BsaWNlKHNpYmxpbmdJbmRleCwgMSlbMF07XG4gICAgLy8gZGV0ZXJtaW5lIHdoZXJlIHRvIGluc2VydCB0aGUgbm9kZVxuICAgIGNvbnN0IG5vZGVBdERlc3QgPSB2aXNpYmxlTm9kZXNbZXZlbnQuY3VycmVudEluZGV4XTtcbiAgICBpZiAobm9kZUF0RGVzdC5pZCA9PT0gbm9kZVRvSW5zZXJ0LmlkKSB7IHJldHVybjsgfVxuXG4gICAgLy8gZGV0ZXJtaW5lIGRyb3AgaW5kZXggcmVsYXRpdmUgdG8gZGVzdGluYXRpb24gYXJyYXlcbiAgICBsZXQgcmVsYXRpdmVJbmRleCA9IGV2ZW50LmN1cnJlbnRJbmRleDsgLy8gZGVmYXVsdCBpZiBubyBwYXJlbnRcbiAgICBjb25zdCBub2RlQXREZXN0RmxhdE5vZGUgPSB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlcy5maW5kKG4gPT4gbm9kZUF0RGVzdC5pZCA9PT0gbi5pZCk7XG4gICAgY29uc3QgcGFyZW50ID0gdGhpcy5nZXRQYXJlbnROb2RlKG5vZGVBdERlc3RGbGF0Tm9kZSk7XG5cbiAgICBpZiAocGFyZW50KSB7XG4gICAgICBjb25zdCBwYXJlbnRJbmRleCA9IHZpc2libGVOb2Rlcy5maW5kSW5kZXgobiA9PiBuLmlkID09PSBwYXJlbnQuaWQpICsgMTtcbiAgICAgIHJlbGF0aXZlSW5kZXggPSBldmVudC5jdXJyZW50SW5kZXggLSBwYXJlbnRJbmRleDtcbiAgICAgIC8vIHVwZGF0ZSBwYXJlbnRJZCBmb3Igbm9kZVRvSW5zZXJ0XG4gICAgICBub2RlVG9JbnNlcnQucGFyZW50SWQgPSBwYXJlbnQuaWQ7XG5cbiAgICB9IGVsc2Uge1xuICAgICAgbm9kZVRvSW5zZXJ0LnBhcmVudElkID0gZ3VpZEhlbHBlci5lbXB0eTtcbiAgICB9XG4gICAgLy8gdXBkYXRlIG5ldyBvcmRlciBmb3Igbm9kZVRvSW5zZXJ0XG4gICAgbm9kZVRvSW5zZXJ0Lm9yZGVyID0gcmVsYXRpdmVJbmRleDtcbiAgICAvLyBpbnNlcnQgbm9kZVxuICAgIGNvbnN0IG5ld1NpYmxpbmdzID0gZmluZE5vZGVTaWJsaW5ncyhjaGFuZ2VkRGF0YSwgbm9kZUF0RGVzdC5pZCk7XG4gICAgaWYgKCFuZXdTaWJsaW5ncykgeyByZXR1cm47IH1cbiAgICBuZXdTaWJsaW5ncy5zcGxpY2UocmVsYXRpdmVJbmRleCwgMCwgbm9kZVRvSW5zZXJ0KTtcblxuICAgIC8vIHJlYnVpbGQgdHJlZSB3aXRoIG11dGF0ZWQgZGF0YVxuICAgIHRoaXMucmVidWlsZFRyZWVGb3JEYXRhKGNoYW5nZWREYXRhKTtcblxuICAgIC8vIHVwZGF0ZSBOZXcgTG9jYXRpb24gT3JkZXIgZm9yIG5ldyBpbnNlcnQgbm9kZVxuICAgIHRoaXMudXBkYXRlTmV3T3JkZXJGb3JOb2RlU2libGluZ3MobmV3U2libGluZ3MpO1xuXG4gICAgdGhpcy5kcm9nTG9jYXRpb25FdmVudC5lbWl0KHtcbiAgICAgIG5ld1NpYmxpbmdzOiBuZXdTaWJsaW5ncyxcbiAgICAgIGNoYW5nZWROb2RlOiBiYWNrdXBDaGFuZ2VkTm9kZSxcbiAgICAgIG9sZERhdGFTb3VyY2U6IGJhY2t1cERhdGFcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlTmV3T3JkZXJGb3JOb2RlU2libGluZ3MobmV3U2libGluZ3M6IGFueVtdKSB7XG4gICAgbGV0IG5ld09yZGVyID0gMDtcbiAgICBuZXdTaWJsaW5ncy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgaXRlbS5vcmRlciA9IG5ld09yZGVyO1xuICAgICAgbmV3T3JkZXIgPSBuZXdPcmRlciArIDE7XG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIEV4cGVyaW1lbnRhbCAtIG9wZW5pbmcgdHJlZSBub2RlcyBhcyB5b3UgZHJhZyBvdmVyIHRoZW1cbiAgKi9cbiAgZHJhZ1N0YXJ0KCkge1xuICAgIHRoaXMuZHJhZ2dpbmcgPSB0cnVlO1xuICB9XG4gIGRyYWdFbmQoKSB7XG4gICAgdGhpcy5kcmFnZ2luZyA9IGZhbHNlO1xuICB9XG4gIGRyYWdIb3Zlcihub2RlOiBGbGF0Tm9kZSkge1xuICAgIHRoaXMuaXNIb3ZlciA9IHRydWU7XG4gICAgaWYgKHRoaXMuZHJhZ2dpbmcpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLmV4cGFuZFRpbWVvdXQpO1xuICAgICAgdGhpcy5leHBhbmRUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMudHJlZUNvbnRyb2wuZXhwYW5kKG5vZGUpO1xuICAgICAgfSwgdGhpcy5leHBhbmREZWxheSk7XG4gICAgfVxuICB9XG4gIGRyYWdIb3ZlckVuZCgpIHtcbiAgICB0aGlzLmlzSG92ZXIgPSBmYWxzZTtcbiAgICBpZiAodGhpcy5kcmFnZ2luZykge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuZXhwYW5kVGltZW91dCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhcmUgZm9yIHBlcnNpc3RpbmcgdGhlIHRyZWUgZXhwYW5kIHN0YXRlXG4gICAqIGFmdGVyIGJlaW5nIHJlYnVpbHRcbiAgICovXG5cbiAgcmVidWlsZFRyZWVGb3JEYXRhKGRhdGE6IGFueSkge1xuICAgIHRoaXMucmVtZW1iZXJFeHBhbmRlZFRyZWVOb2Rlcyh0aGlzLnRyZWVDb250cm9sLCB0aGlzLmV4cGFuZGVkTm9kZVNldCk7XG4gICAgdGhpcy50cmVlRGF0YSA9IGRhdGE7XG4gICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSBkYXRhO1xuICAgIHRoaXMuZm9yZ2V0TWlzc2luZ0V4cGFuZGVkTm9kZXModGhpcy50cmVlQ29udHJvbCwgdGhpcy5leHBhbmRlZE5vZGVTZXQpO1xuICAgIHRoaXMuZXhwYW5kTm9kZXNCeUlkKHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzLCBBcnJheS5mcm9tKHRoaXMuZXhwYW5kZWROb2RlU2V0KSk7XG4gIH1cblxuICBwcml2YXRlIHJlbWVtYmVyRXhwYW5kZWRUcmVlTm9kZXMoXG4gICAgdHJlZUNvbnRyb2w6IEZsYXRUcmVlQ29udHJvbDxGbGF0Tm9kZT4sXG4gICAgZXhwYW5kZWROb2RlU2V0OiBTZXQ8c3RyaW5nPlxuICApIHtcbiAgICBpZiAodHJlZUNvbnRyb2wuZGF0YU5vZGVzKSB7XG4gICAgICB0cmVlQ29udHJvbC5kYXRhTm9kZXMuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgICBpZiAodHJlZUNvbnRyb2wuaXNFeHBhbmRhYmxlKG5vZGUpICYmIHRyZWVDb250cm9sLmlzRXhwYW5kZWQobm9kZSkpIHtcbiAgICAgICAgICAvLyBjYXB0dXJlIGxhdGVzdCBleHBhbmRlZCBzdGF0ZVxuICAgICAgICAgIGV4cGFuZGVkTm9kZVNldC5hZGQobm9kZS5pZC50b1N0cmluZygpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmb3JnZXRNaXNzaW5nRXhwYW5kZWROb2RlcyhcbiAgICB0cmVlQ29udHJvbDogRmxhdFRyZWVDb250cm9sPEZsYXROb2RlPixcbiAgICBleHBhbmRlZE5vZGVTZXQ6IFNldDxzdHJpbmc+XG4gICkge1xuICAgIGlmICh0cmVlQ29udHJvbC5kYXRhTm9kZXMpIHtcbiAgICAgIGV4cGFuZGVkTm9kZVNldC5mb3JFYWNoKChub2RlSWQpID0+IHtcbiAgICAgICAgLy8gbWFpbnRhaW4gZXhwYW5kZWQgbm9kZSBzdGF0ZVxuICAgICAgICBpZiAoIXRyZWVDb250cm9sLmRhdGFOb2Rlcy5maW5kKChuKSA9PiBuLmlkLnRvU3RyaW5nKCkgPT09IG5vZGVJZCkpIHtcbiAgICAgICAgICAvLyBpZiB0aGUgdHJlZSBkb2Vzbid0IGhhdmUgdGhlIHByZXZpb3VzIG5vZGUsIHJlbW92ZSBpdCBmcm9tIHRoZSBleHBhbmRlZCBsaXN0XG4gICAgICAgICAgZXhwYW5kZWROb2RlU2V0LmRlbGV0ZShub2RlSWQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGV4cGFuZE5vZGVzQnlJZChmbGF0Tm9kZXM6IEZsYXROb2RlW10sIGlkczogc3RyaW5nW10pIHtcbiAgICBpZiAoIWZsYXROb2RlcyB8fCBmbGF0Tm9kZXMubGVuZ3RoID09PSAwKSB7IHJldHVybjsgfVxuICAgIGNvbnN0IGlkU2V0ID0gbmV3IFNldChpZHMpO1xuICAgIHJldHVybiBmbGF0Tm9kZXMuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgaWYgKGlkU2V0Lmhhcyhub2RlLmlkLnRvU3RyaW5nKCkpKSB7XG4gICAgICAgIHRoaXMudHJlZUNvbnRyb2wuZXhwYW5kKG5vZGUpO1xuXG4gICAgICAgIHRoaXMuZXhwYW5kaW5nTm9kZXMucHVzaChub2RlKTtcblxuICAgICAgICBsZXQgcGFyZW50ID0gdGhpcy5nZXRQYXJlbnROb2RlKG5vZGUpO1xuICAgICAgICB3aGlsZSAocGFyZW50KSB7XG4gICAgICAgICAgdGhpcy50cmVlQ29udHJvbC5leHBhbmQocGFyZW50KTtcblxuICAgICAgICAgIHRoaXMuZXhwYW5kaW5nTm9kZXMucHVzaChwYXJlbnQpO1xuXG4gICAgICAgICAgcGFyZW50ID0gdGhpcy5nZXRQYXJlbnROb2RlKHBhcmVudCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UGFyZW50Tm9kZShub2RlOiBGbGF0Tm9kZSk6IEZsYXROb2RlIHwgbnVsbCB7XG4gICAgY29uc3QgY3VycmVudExldmVsID0gbm9kZS5sZXZlbDtcbiAgICBpZiAoY3VycmVudExldmVsIDwgMSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHN0YXJ0SW5kZXggPSB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlcy5pbmRleE9mKG5vZGUpIC0gMTtcbiAgICBmb3IgKGxldCBpID0gc3RhcnRJbmRleDsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGNvbnN0IGN1cnJlbnROb2RlID0gdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaV07XG4gICAgICBpZiAoY3VycmVudE5vZGUubGV2ZWwgPCBjdXJyZW50TGV2ZWwpIHtcbiAgICAgICAgcmV0dXJuIGN1cnJlbnROb2RlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIG9uS2V5RG93bk5vZGUoZXZlbnQ6IGFueSwgbm9kZSkge1xuICAgIGlmIChldmVudC5rZXkgPT0gJ0VudGVyJykge1xuICAgICAgdGhpcy5vbkNsaWNrVG9nZ2xlTm9kZShub2RlKTtcbiAgICB9XG4gIH1cblxuICBvbkNsaWNrVG9nZ2xlTm9kZShub2RlKSB7XG4gICAgaWYgKHRoaXMudHJlZUNvbnRyb2wuaXNFeHBhbmRlZChub2RlKSkge1xuICAgICAgdGhpcy50cmVlQ29udHJvbC5leHBhbmQobm9kZSk7XG4gICAgICB0aGlzLl9hZGRFeHBhbmRpbmdOb2RlKG5vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRyZWVDb250cm9sLmNvbGxhcHNlKG5vZGUpO1xuICAgICAgdGhpcy5fcmVtb3ZlRXhwYW5kaW5nTm9kZXMobm9kZS5pZCk7XG4gICAgfVxuICAgIHRoaXMubm9kZXNFeHBhbmQuZW1pdCh7IG5vZGUsIGlzRXhwYW5kOiB0aGlzLnRyZWVDb250cm9sLmlzRXhwYW5kZWQobm9kZSkgfSk7XG4gIH1cblxuICBzZXRIb3ZlckZhdm9yaXRlKGlkKSB7XG4gICAgdGhpcy5ob3ZlckZhdm9yaXRlTm9kZUlkID0gaWQ7XG4gIH1cblxuICBleHBhbmROb2RlcygpOiB2b2lkIHtcbiAgICB0aGlzLl9leHBhbmROb2Rlc0xvb3AodGhpcy50cmVlRGF0YSk7XG4gIH1cblxuICBwcml2YXRlIF9leHBhbmROb2Rlc0xvb3AoZGF0YTogVHJlZU5vZGVbXSk6IHZvaWQge1xuICAgIGRhdGEuZm9yRWFjaChub2RlID0+IHtcbiAgICAgIGNvbnN0IGV4cGFuZGluZ05vZGUgPSB0aGlzLmV4cGFuZGluZ05vZGVzLnNvbWUoeCA9PiB4LmlkID09PSBub2RlLmlkKTtcbiAgICAgIGlmIChleHBhbmRpbmdOb2RlKSB7XG4gICAgICAgIHRoaXMub25DbGlja1RvZ2dsZU5vZGUoZXhwYW5kaW5nTm9kZSk7XG4gICAgICB9XG5cbiAgICAgIGRhdGEuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaXRlbS5jaGlsZHJlbikpIHtcbiAgICAgICAgICB0aGlzLl9leHBhbmROb2Rlc0xvb3AoaXRlbS5jaGlsZHJlbik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfYWRkRXhwYW5kaW5nTm9kZShub2RlOiBGbGF0Tm9kZSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5leHBhbmRpbmdOb2Rlcy5zb21lKHggPT4geC5pZCA9PT0gbm9kZS5pZCkpIHtcbiAgICAgIHRoaXMuZXhwYW5kaW5nTm9kZXMucHVzaChub2RlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9yZW1vdmVFeHBhbmRpbmdOb2Rlcyhub2RlSWQ6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuZXhwYW5kaW5nTm9kZXMgPSB0aGlzLmV4cGFuZGluZ05vZGVzLmZpbHRlcih4ID0+IHguaWQgIT09IG5vZGVJZCk7XG4gIH1cbn0iXX0=
354
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLW5hdmlnYXRpb24tZHJhd2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Ftcy1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9xbXMtbmF2aWdhdGlvbi1kcmF3ZXIvcW1zLW5hdmlnYXRpb24tZHJhd2VyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFnQyxNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3BILE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWpGLE9BQU8sVUFBVSxNQUFNLHdEQUF3RCxDQUFDO0FBUWhGLE1BQU0sT0FBTyw0QkFBNEI7SUFDdkM7UUFHUyxhQUFRLEdBQW9CLEVBQUUsQ0FBQztRQUcvQixnQkFBVyxHQUFHLElBQUksQ0FBQztRQUNuQixjQUFTLEdBQWEsRUFBRSxDQUFDO1FBQ3pCLHlCQUFvQixHQUFHLEtBQUssQ0FBQztRQUc3Qix1QkFBa0IsR0FBVyxtQkFBbUIsQ0FBQztRQUNqRCwwQkFBcUIsR0FBVyxnQkFBZ0IsQ0FBQztRQUNqRCxtQkFBYyxHQUFXLG1CQUFtQixDQUFDO1FBQzdDLGVBQVUsR0FBVyxFQUFFLENBQUM7UUFFdkIscUJBQWdCLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDNUQsZ0JBQVcsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNwRCxpQkFBWSxHQUF5QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3hELHFCQUFnQixHQUF5QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzVELHNCQUFpQixHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBR3BFLG9CQUFlLEdBQUcsSUFBSSxHQUFH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QUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRTtvQkFDaEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztpQkFDdEM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGlCQUFpQixDQUFDLElBQWM7UUFDdEMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDcEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDaEM7SUFDSCxDQUFDO0lBRU8scUJBQXFCLENBQUMsTUFBYztRQUMxQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxNQUFNLENBQUMsQ0FBQztJQUN6RSxDQUFDOzs7WUFwWEYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSwyQkFBMkI7Z0JBQ3JDLHc0SkFBcUQ7O2FBRXREOzs7O3VCQU1FLEtBQUs7K0JBQ0wsS0FBSzsyQkFDTCxLQUFLOzBCQUNMLEtBQUs7d0JBQ0wsS0FBSzttQ0FDTCxLQUFLO3lCQUNMLEtBQUs7eUJBQ0wsS0FBSztpQ0FDTCxLQUFLO29DQUNMLEtBQUs7NkJBQ0wsS0FBSzt5QkFDTCxLQUFLOytCQUVMLE1BQU07MEJBQ04sTUFBTTsyQkFDTixNQUFNOytCQUNOLE1BQU07Z0NBQ04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENka0RyYWdEcm9wIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBGbGF0VHJlZUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9jZGsvdHJlZSc7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0VHJlZUZsYXREYXRhU291cmNlLCBNYXRUcmVlRmxhdHRlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdHJlZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCBndWlkSGVscGVyIGZyb20gJy4uLy4uL3Ftcy1ja2VkaXRvci1jb21wb25lbnRzL2NvbW1vbi9oZWxwZXIvZ3VpZEhlbHBlcic7XG5pbXBvcnQgeyBGbGF0Tm9kZSwgVHJlZU5vZGUgfSBmcm9tICcuL21vZGVscy9xbXMtbmF2aWdhdGlvbi1kcmF3ZXIubW9kZWwnO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXFtcy1uYXZpZ2F0aW9uLWRyYXdlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9xbXMtbmF2aWdhdGlvbi1kcmF3ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9xbXMtbmF2aWdhdGlvbi1kcmF3ZXIuY29tcG9uZW50LnNjc3MnXVxufSlcblxuZXhwb3J0IGNsYXNzIFFNU05hdmlnYXRpb25EcmF3ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSB0aGlzLnRyZWVEYXRhO1xuICB9XG4gIEBJbnB1dCgpIHRyZWVEYXRhOiBBcnJheTxUcmVlTm9kZT4gPSBbXTtcbiAgQElucHV0KCkgc2hvd0Zhdm9yaXRlSWNvbjogYm9vbGVhbjtcbiAgQElucHV0KCkgZmF2b3JpdGVNb2RlOiBib29sZWFuO1xuICBASW5wdXQoKSBzaG93QWRkSWNvbiA9IHRydWU7XG4gIEBJbnB1dCgpIG9wZW5Ob2Rlczogc3RyaW5nW10gPSBbXTtcbiAgQElucHV0KCkgZHJhZ0Ryb3BMaXN0RGlzYWJsZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgZmlsdGVyVGV4dDogc3RyaW5nO1xuICBASW5wdXQoKSBmYUljb25QYXRoOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGFkZEZhdm9yaXRlVG9vbHRpcDogc3RyaW5nID0gJ0xlZ2cgdGlsIGZhdm9yaXR0JztcbiAgQElucHV0KCkgZGVsZXRlRmF2b3JpdGVUb29sdGlwOiBzdHJpbmcgPSAnU2xldHQgZmF2b3JpdHQnO1xuICBASW5wdXQoKSBhZGROb2RlVG9vbHRpcDogc3RyaW5nID0gJ0xlZ2cgdGlsIGxva2Fzam9uJztcbiAgQElucHV0KCkgYWN0aXZlTm9kZTogc3RyaW5nID0gJyc7XG5cbiAgQE91dHB1dCgpIG9uQ2xpY2tOb2RlRXZlbnQ6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgbm9kZXNFeHBhbmQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgYWRkTm9kZUV2ZW50OiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGFkZEZhdm9yaXRlRXZlbnQ6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgZHJvZ0xvY2F0aW9uRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGFjdGl2ZU5vZGVMb2NhdGlvbjogU3Vic2NyaXB0aW9uO1xuICBleHBhbmRlZE5vZGVTZXQgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgZHJhZ2dpbmcgPSBmYWxzZTtcbiAgZXhwYW5kVGltZW91dDogYW55O1xuICBleHBhbmREZWxheSA9IDEwMDA7XG4gIGhvdmVyRmF2b3JpdGVOb2RlSWQ6IHN0cmluZztcbiAgaXNIb3ZlciA9IGZhbHNlO1xuICB0cmVlQ29udHJvbCA9IG5ldyBGbGF0VHJlZUNvbnRyb2w8RmxhdE5vZGU+KG5vZGUgPT4gbm9kZS5sZXZlbCwgbm9kZSA9PiBub2RlLmV4cGFuZGFibGUpO1xuICB0cmVlRmxhdHRlbmVyID0gbmV3IE1hdFRyZWVGbGF0dGVuZXIodGhpcy5fdHJhbnNmb3JtZXIsIG5vZGUgPT4gbm9kZS5sZXZlbCwgbm9kZSA9PiBub2RlLmV4cGFuZGFibGUsIG5vZGUgPT4gbm9kZS5jaGlsZHJlbik7XG4gIGRhdGFTb3VyY2UgPSBuZXcgTWF0VHJlZUZsYXREYXRhU291cmNlKHRoaXMudHJlZUNvbnRyb2wsIHRoaXMudHJlZUZsYXR0ZW5lcik7XG4gIGhvdmVyTm9kZTogYW55ID0ge307XG4gIGV4cGFuZGluZ05vZGVzOiBGbGF0Tm9kZVtdID0gW107XG5cbiAgX3RyYW5zZm9ybWVyKG5vZGU6IFRyZWVOb2RlLCBsZXZlbDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGV4cGFuZGFibGU6ICEhbm9kZS5jaGlsZHJlbiAmJiBub2RlLmNoaWxkcmVuLmxlbmd0aCA+IDAsXG4gICAgICBuYW1lOiBub2RlLm5hbWUsXG4gICAgICBsZXZlbCxcbiAgICAgIGlkOiBub2RlLmlkLFxuICAgICAgaXNSZWFkT25seTogbm9kZS5pc1JlYWRPbmx5LFxuICAgICAgZmF2b3JpdGU6IG5vZGUuZmF2b3JpdGUsXG4gICAgICBkaXNhYmxlZDogbm9kZS5kaXNhYmxlZFxuICAgIH07XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLm9wZW5Ob2Rlcy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgdGhpcy50cmVlQ29udHJvbC5leHBhbmQodGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXMuZmluZChwID0+IHAuaWQudG9TdHJpbmcoKSA9PT0gaXRlbSkpO1xuICAgIH0pO1xuICB9XG5cbiAgaGFzQ2hpbGQgPSAoXzogbnVtYmVyLCBub2RlOiBGbGF0Tm9kZSkgPT4gbm9kZS5leHBhbmRhYmxlO1xuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IHRoaXMudHJlZURhdGE7XG4gICAgaWYgKGNoYW5nZXMuZmlsdGVyVGV4dCAmJiBKU09OLnN0cmluZ2lmeShjaGFuZ2VzLmZpbHRlclRleHQuY3VycmVudFZhbHVlKSAhPT0gSlNPTi5zdHJpbmdpZnkoY2hhbmdlcy5maWx0ZXJUZXh0LnByZXZpb3VzVmFsdWUpKSB7XG4gICAgICB0aGlzLmV4cGFuZE5vZGVTZWFyY2hlZCh0aGlzLnRyZWVEYXRhLCB0aGlzLmZpbHRlclRleHQpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzLm9wZW5Ob2RlcyAmJiBKU09OLnN0cmluZ2lmeShjaGFuZ2VzLm9wZW5Ob2Rlcy5jdXJyZW50VmFsdWUpICE9PSBKU09OLnN0cmluZ2lmeShjaGFuZ2VzLm9wZW5Ob2Rlcy5wcmV2aW91c1ZhbHVlKSkge1xuICAgICAgdGhpcy5vcGVuTm9kZXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgdGhpcy50cmVlQ29udHJvbC5leHBhbmQodGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXMuZmluZChwID0+IHAuaWQudG9TdHJpbmcoKSA9PT0gaXRlbSkpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgZXhwYW5kTm9kZVNlYXJjaGVkKG5vZGVzT3JpZ2luOiBUcmVlTm9kZVtdLCB0eHRTZWFyY2g6IHN0cmluZykge1xuICAgIG5vZGVzT3JpZ2luLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICBpZiAoIWl0ZW0ubmFtZS50b0xvY2FsZUxvd2VyQ2FzZSgpLmluY2x1ZGVzKHR4dFNlYXJjaC50b0xvY2FsZUxvd2VyQ2FzZSgpKSkge1xuICAgICAgICB0aGlzLnRyZWVDb250cm9sLmV4cGFuZCh0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlcy5maW5kKHAgPT4gcC5pZC50b1N0cmluZygpID09PSBpdGVtLmlkKSk7XG4gICAgICAgIGlmIChpdGVtLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB0aGlzLmV4cGFuZE5vZGVTZWFyY2hlZChpdGVtLmNoaWxkcmVuLCB0eHRTZWFyY2gpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBvbkNsaWNrTm9kZShub2RlOiBUcmVlTm9kZSwgc2V0QWN0aXZlTm9kZT86IGJvb2xlYW4pIHtcbiAgICBpZiAoc2V0QWN0aXZlTm9kZSkge1xuICAgICAgdGhpcy5hY3RpdmVOb2RlID0gbm9kZS5pZDtcbiAgICAgIHRoaXMub25DbGlja05vZGVFdmVudC5lbWl0KG5vZGUuaWQpO1xuICAgIH1cbiAgICB0aGlzLm9uQ2xpY2tUb2dnbGVOb2RlKG5vZGUpO1xuICB9XG5cbiAgb25PdmVyKG5vZGU6IGFueSkge1xuICAgIHRoaXMuaG92ZXJOb2RlID0gbm9kZTtcbiAgfVxuXG4gIGFkZE5ld05vZGUobm9kZUlkOiBhbnksIGV2ZW50OiBhbnkpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMuYWRkTm9kZUV2ZW50LmVtaXQobm9kZUlkKTtcbiAgfVxuXG4gIGFkZEZhdm9yaXRlTm9kZShub2RlSWQ6IGFueSwgZXZlbnQ6IGFueSkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5hZGRGYXZvcml0ZUV2ZW50LmVtaXQobm9kZUlkKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFjdGl2ZU5vZGVMb2NhdGlvbikge1xuICAgICAgdGhpcy5hY3RpdmVOb2RlTG9jYXRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBjb25zdHJ1Y3RzIGFuIGFycmF5IG9mIG5vZGVzIHRoYXQgbWF0Y2hlcyB0aGUgRE9NLFxuICAgKiBhbmQgY2FsbHMgcmVtZW1iZXJFeHBhbmRlZFRyZWVOb2RlcyB0byBwZXJzaXN0IGV4cGFuZCBzdGF0ZVxuICAgKi9cbiAgdmlzaWJsZU5vZGVzKCk6IFRyZWVOb2RlW10ge1xuICAgIHRoaXMucmVtZW1iZXJFeHBhbmRlZFRyZWVOb2Rlcyh0aGlzLnRyZWVDb250cm9sLCB0aGlzLmV4cGFuZGVkTm9kZVNldCk7XG4gICAgY29uc3QgcmVzdWx0ID0gW107XG5cbiAgICBmdW5jdGlvbiBhZGRFeHBhbmRlZENoaWxkcmVuKG5vZGU6IFRyZWVOb2RlLCBleHBhbmRlZDogU2V0PHN0cmluZz4pIHtcbiAgICAgIHJlc3VsdC5wdXNoKG5vZGUpO1xuICAgICAgaWYgKGV4cGFuZGVkLmhhcyhub2RlLmlkKSkge1xuICAgICAgICBub2RlLmNoaWxkcmVuLm1hcChjaGlsZCA9PiBhZGRFeHBhbmRlZENoaWxkcmVuKGNoaWxkLCBleHBhbmRlZCkpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YS5mb3JFYWNoKG5vZGUgPT4ge1xuICAgICAgYWRkRXhwYW5kZWRDaGlsZHJlbihub2RlLCB0aGlzLmV4cGFuZGVkTm9kZVNldCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgdGhlIGRyb3AgLSBoZXJlIHdlIHJlYXJyYW5nZSB0aGUgZGF0YSBiYXNlZCBvbiB0aGUgZHJvcCBldmVudCxcbiAgICogdGhlbiByZWJ1aWxkIHRoZSB0cmVlLlxuICAgKiAqL1xuICBkcm9wKGV2ZW50OiBDZGtEcmFnRHJvcDxzdHJpbmdbXT4pIHtcbiAgICAvLyBTYXZlIGRhdGEgZm9yIGJhY2t1cFxuICAgIGNvbnN0IG5vZGUgPSBldmVudC5pdGVtLmRhdGE7XG4gICAgY29uc3QgYmFja3VwQ2hhbmdlZE5vZGU6IFRyZWVOb2RlID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShub2RlKSk7XG4gICAgY29uc3QgYmFja3VwRGF0YTogVHJlZU5vZGVbXSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5kYXRhU291cmNlLmRhdGEpKTtcblxuICAgIC8vIGlnbm9yZSBkcm9wcyBvdXRzaWRlIG9mIHRoZSB0cmVlXG4gICAgaWYgKCFldmVudC5pc1BvaW50ZXJPdmVyQ29udGFpbmVyKSB7IHJldHVybjsgfVxuXG4gICAgLy8gY29uc3RydWN0IGEgbGlzdCBvZiB2aXNpYmxlIG5vZGVzLCB0aGlzIHdpbGwgbWF0Y2ggdGhlIERPTS5cbiAgICAvLyB0aGUgY2RrRHJhZ0Ryb3AgZXZlbnQuY3VycmVudEluZGV4IGppdmVzIHdpdGggdmlzaWJsZSBub2Rlcy5cbiAgICAvLyBpdCBjYWxscyByZW1lbWJlckV4cGFuZGVkVHJlZU5vZGVzIHRvIHBlcnNpc3QgZXhwYW5kIHN0YXRlXG4gICAgY29uc3QgdmlzaWJsZU5vZGVzID0gdGhpcy52aXNpYmxlTm9kZXMoKTtcblxuICAgIC8vIGRlZXAgY2xvbmUgdGhlIGRhdGEgc291cmNlIHNvIHdlIGNhbiBtdXRhdGUgaXRcbiAgICBjb25zdCBjaGFuZ2VkRGF0YSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5kYXRhU291cmNlLmRhdGEpKTtcblxuICAgIC8vIHJlY3Vyc2l2ZSBmaW5kIGZ1bmN0aW9uIHRvIGZpbmQgc2libGluZ3Mgb2Ygbm9kZVxuICAgIGZ1bmN0aW9uIGZpbmROb2RlU2libGluZ3MoYXJyOiBBcnJheTxhbnk+LCBpZDogc3RyaW5nKTogQXJyYXk8YW55PiB7XG4gICAgICBsZXQgcmVzdWx0LCBzdWJSZXN1bHQ7XG4gICAgICBhcnIuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgaWYgKGl0ZW0uaWQgPT09IGlkKSB7XG4gICAgICAgICAgcmVzdWx0ID0gYXJyO1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0uY2hpbGRyZW4pIHtcbiAgICAgICAgICBzdWJSZXN1bHQgPSBmaW5kTm9kZVNpYmxpbmdzKGl0ZW0uY2hpbGRyZW4sIGlkKTtcbiAgICAgICAgICBpZiAoc3ViUmVzdWx0KSB7IHJlc3VsdCA9IHN1YlJlc3VsdDsgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLy8gcmVtb3ZlIHRoZSBub2RlIGZyb20gaXRzIG9sZCBwbGFjZVxuICAgIGNvbnN0IHNpYmxpbmdzID0gZmluZE5vZGVTaWJsaW5ncyhjaGFuZ2VkRGF0YSwgbm9kZS5pZCk7XG4gICAgY29uc3Qgc2libGluZ0luZGV4ID0gc2libGluZ3MuZmluZEluZGV4KG4gPT4gbi5pZCA9PT0gbm9kZS5pZCk7XG4gICAgLy8gY29uc3Qgbm9kZVRvSW5zZXJ0OiBUcmVlTm9kZSA9IHNpYmxpbmdzLnNwbGljZShzaWJsaW5nSW5kZXgsIDEpWzBdO1xuICAgIGNvbnN0IG5vZGVUb0luc2VydCA9IHNpYmxpbmdzLnNwbGljZShzaWJsaW5nSW5kZXgsIDEpWzBdO1xuICAgIC8vIGRldGVybWluZSB3aGVyZSB0byBpbnNlcnQgdGhlIG5vZGVcbiAgICBjb25zdCBub2RlQXREZXN0ID0gdmlzaWJsZU5vZGVzW2V2ZW50LmN1cnJlbnRJbmRleF07XG4gICAgaWYgKG5vZGVBdERlc3QuaWQgPT09IG5vZGVUb0luc2VydC5pZCkgeyByZXR1cm47IH1cblxuICAgIC8vIGRldGVybWluZSBkcm9wIGluZGV4IHJlbGF0aXZlIHRvIGRlc3RpbmF0aW9uIGFycmF5XG4gICAgbGV0IHJlbGF0aXZlSW5kZXggPSBldmVudC5jdXJyZW50SW5kZXg7IC8vIGRlZmF1bHQgaWYgbm8gcGFyZW50XG4gICAgY29uc3Qgbm9kZUF0RGVzdEZsYXROb2RlID0gdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXMuZmluZChuID0+IG5vZGVBdERlc3QuaWQgPT09IG4uaWQpO1xuICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuZ2V0UGFyZW50Tm9kZShub2RlQXREZXN0RmxhdE5vZGUpO1xuXG4gICAgaWYgKHBhcmVudCkge1xuICAgICAgY29uc3QgcGFyZW50SW5kZXggPSB2aXNpYmxlTm9kZXMuZmluZEluZGV4KG4gPT4gbi5pZCA9PT0gcGFyZW50LmlkKSArIDE7XG4gICAgICByZWxhdGl2ZUluZGV4ID0gZXZlbnQuY3VycmVudEluZGV4IC0gcGFyZW50SW5kZXg7XG4gICAgICAvLyB1cGRhdGUgcGFyZW50SWQgZm9yIG5vZGVUb0luc2VydFxuICAgICAgbm9kZVRvSW5zZXJ0LnBhcmVudElkID0gcGFyZW50LmlkO1xuXG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGVUb0luc2VydC5wYXJlbnRJZCA9IGd1aWRIZWxwZXIuZW1wdHk7XG4gICAgfVxuICAgIC8vIHVwZGF0ZSBuZXcgb3JkZXIgZm9yIG5vZGVUb0luc2VydFxuICAgIG5vZGVUb0luc2VydC5vcmRlciA9IHJlbGF0aXZlSW5kZXg7XG4gICAgLy8gaW5zZXJ0IG5vZGVcbiAgICBjb25zdCBuZXdTaWJsaW5ncyA9IGZpbmROb2RlU2libGluZ3MoY2hhbmdlZERhdGEsIG5vZGVBdERlc3QuaWQpO1xuICAgIGlmICghbmV3U2libGluZ3MpIHsgcmV0dXJuOyB9XG4gICAgbmV3U2libGluZ3Muc3BsaWNlKHJlbGF0aXZlSW5kZXgsIDAsIG5vZGVUb0luc2VydCk7XG5cbiAgICAvLyByZWJ1aWxkIHRyZWUgd2l0aCBtdXRhdGVkIGRhdGFcbiAgICB0aGlzLnJlYnVpbGRUcmVlRm9yRGF0YShjaGFuZ2VkRGF0YSk7XG5cbiAgICAvLyB1cGRhdGUgTmV3IExvY2F0aW9uIE9yZGVyIGZvciBuZXcgaW5zZXJ0IG5vZGVcbiAgICB0aGlzLnVwZGF0ZU5ld09yZGVyRm9yTm9kZVNpYmxpbmdzKG5ld1NpYmxpbmdzKTtcblxuICAgIHRoaXMuZHJvZ0xvY2F0aW9uRXZlbnQuZW1pdCh7XG4gICAgICBuZXdTaWJsaW5nczogbmV3U2libGluZ3MsXG4gICAgICBjaGFuZ2VkTm9kZTogYmFja3VwQ2hhbmdlZE5vZGUsXG4gICAgICBvbGREYXRhU291cmNlOiBiYWNrdXBEYXRhXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZU5ld09yZGVyRm9yTm9kZVNpYmxpbmdzKG5ld1NpYmxpbmdzOiBhbnlbXSkge1xuICAgIGxldCBuZXdPcmRlciA9IDA7XG4gICAgbmV3U2libGluZ3MuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGl0ZW0ub3JkZXIgPSBuZXdPcmRlcjtcbiAgICAgIG5ld09yZGVyID0gbmV3T3JkZXIgKyAxO1xuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBFeHBlcmltZW50YWwgLSBvcGVuaW5nIHRyZWUgbm9kZXMgYXMgeW91IGRyYWcgb3ZlciB0aGVtXG4gICovXG4gIGRyYWdTdGFydCgpIHtcbiAgICB0aGlzLmRyYWdnaW5nID0gdHJ1ZTtcbiAgfVxuICBkcmFnRW5kKCkge1xuICAgIHRoaXMuZHJhZ2dpbmcgPSBmYWxzZTtcbiAgfVxuICBkcmFnSG92ZXIobm9kZTogRmxhdE5vZGUpIHtcbiAgICB0aGlzLmlzSG92ZXIgPSB0cnVlO1xuICAgIGlmICh0aGlzLmRyYWdnaW5nKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5leHBhbmRUaW1lb3V0KTtcbiAgICAgIHRoaXMuZXhwYW5kVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnRyZWVDb250cm9sLmV4cGFuZChub2RlKTtcbiAgICAgIH0sIHRoaXMuZXhwYW5kRGVsYXkpO1xuICAgIH1cbiAgfVxuICBkcmFnSG92ZXJFbmQoKSB7XG4gICAgdGhpcy5pc0hvdmVyID0gZmFsc2U7XG4gICAgaWYgKHRoaXMuZHJhZ2dpbmcpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLmV4cGFuZFRpbWVvdXQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgZm9sbG93aW5nIG1ldGhvZHMgYXJlIGZvciBwZXJzaXN0aW5nIHRoZSB0cmVlIGV4cGFuZCBzdGF0ZVxuICAgKiBhZnRlciBiZWluZyByZWJ1aWx0XG4gICAqL1xuXG4gIHJlYnVpbGRUcmVlRm9yRGF0YShkYXRhOiBhbnkpIHtcbiAgICB0aGlzLnJlbWVtYmVyRXhwYW5kZWRUcmVlTm9kZXModGhpcy50cmVlQ29udHJvbCwgdGhpcy5leHBhbmRlZE5vZGVTZXQpO1xuICAgIHRoaXMudHJlZURhdGEgPSBkYXRhO1xuICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gZGF0YTtcbiAgICB0aGlzLmZvcmdldE1pc3NpbmdFeHBhbmRlZE5vZGVzKHRoaXMudHJlZUNvbnRyb2wsIHRoaXMuZXhwYW5kZWROb2RlU2V0KTtcbiAgICB0aGlzLmV4cGFuZE5vZGVzQnlJZCh0aGlzLnRyZWVDb250cm9sLmRhdGFOb2RlcywgQXJyYXkuZnJvbSh0aGlzLmV4cGFuZGVkTm9kZVNldCkpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1lbWJlckV4cGFuZGVkVHJlZU5vZGVzKFxuICAgIHRyZWVDb250cm9sOiBGbGF0VHJlZUNvbnRyb2w8RmxhdE5vZGU+LFxuICAgIGV4cGFuZGVkTm9kZVNldDogU2V0PHN0cmluZz5cbiAgKSB7XG4gICAgaWYgKHRyZWVDb250cm9sLmRhdGFOb2Rlcykge1xuICAgICAgdHJlZUNvbnRyb2wuZGF0YU5vZGVzLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgICAgaWYgKHRyZWVDb250cm9sLmlzRXhwYW5kYWJsZShub2RlKSAmJiB0cmVlQ29udHJvbC5pc0V4cGFuZGVkKG5vZGUpKSB7XG4gICAgICAgICAgLy8gY2FwdHVyZSBsYXRlc3QgZXhwYW5kZWQgc3RhdGVcbiAgICAgICAgICBleHBhbmRlZE5vZGVTZXQuYWRkKG5vZGUuaWQudG9TdHJpbmcoKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZm9yZ2V0TWlzc2luZ0V4cGFuZGVkTm9kZXMoXG4gICAgdHJlZUNvbnRyb2w6IEZsYXRUcmVlQ29udHJvbDxGbGF0Tm9kZT4sXG4gICAgZXhwYW5kZWROb2RlU2V0OiBTZXQ8c3RyaW5nPlxuICApIHtcbiAgICBpZiAodHJlZUNvbnRyb2wuZGF0YU5vZGVzKSB7XG4gICAgICBleHBhbmRlZE5vZGVTZXQuZm9yRWFjaCgobm9kZUlkKSA9PiB7XG4gICAgICAgIC8vIG1haW50YWluIGV4cGFuZGVkIG5vZGUgc3RhdGVcbiAgICAgICAgaWYgKCF0cmVlQ29udHJvbC5kYXRhTm9kZXMuZmluZCgobikgPT4gbi5pZC50b1N0cmluZygpID09PSBub2RlSWQpKSB7XG4gICAgICAgICAgLy8gaWYgdGhlIHRyZWUgZG9lc24ndCBoYXZlIHRoZSBwcmV2aW91cyBub2RlLCByZW1vdmUgaXQgZnJvbSB0aGUgZXhwYW5kZWQgbGlzdFxuICAgICAgICAgIGV4cGFuZGVkTm9kZVNldC5kZWxldGUobm9kZUlkKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBleHBhbmROb2Rlc0J5SWQoZmxhdE5vZGVzOiBGbGF0Tm9kZVtdLCBpZHM6IHN0cmluZ1tdKSB7XG4gICAgaWYgKCFmbGF0Tm9kZXMgfHwgZmxhdE5vZGVzLmxlbmd0aCA9PT0gMCkgeyByZXR1cm47IH1cbiAgICBjb25zdCBpZFNldCA9IG5ldyBTZXQoaWRzKTtcbiAgICByZXR1cm4gZmxhdE5vZGVzLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgIGlmIChpZFNldC5oYXMobm9kZS5pZC50b1N0cmluZygpKSkge1xuICAgICAgICB0aGlzLnRyZWVDb250cm9sLmV4cGFuZChub2RlKTtcblxuICAgICAgICB0aGlzLmV4cGFuZGluZ05vZGVzLnB1c2gobm9kZSk7XG5cbiAgICAgICAgbGV0IHBhcmVudCA9IHRoaXMuZ2V0UGFyZW50Tm9kZShub2RlKTtcbiAgICAgICAgd2hpbGUgKHBhcmVudCkge1xuICAgICAgICAgIHRoaXMudHJlZUNvbnRyb2wuZXhwYW5kKHBhcmVudCk7XG5cbiAgICAgICAgICB0aGlzLmV4cGFuZGluZ05vZGVzLnB1c2gocGFyZW50KTtcblxuICAgICAgICAgIHBhcmVudCA9IHRoaXMuZ2V0UGFyZW50Tm9kZShwYXJlbnQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldFBhcmVudE5vZGUobm9kZTogRmxhdE5vZGUpOiBGbGF0Tm9kZSB8IG51bGwge1xuICAgIGNvbnN0IGN1cnJlbnRMZXZlbCA9IG5vZGUubGV2ZWw7XG4gICAgaWYgKGN1cnJlbnRMZXZlbCA8IDEpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBzdGFydEluZGV4ID0gdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXMuaW5kZXhPZihub2RlKSAtIDE7XG4gICAgZm9yIChsZXQgaSA9IHN0YXJ0SW5kZXg7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBjb25zdCBjdXJyZW50Tm9kZSA9IHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2ldO1xuICAgICAgaWYgKGN1cnJlbnROb2RlLmxldmVsIDwgY3VycmVudExldmVsKSB7XG4gICAgICAgIHJldHVybiBjdXJyZW50Tm9kZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBvbktleURvd25Ob2RlKGV2ZW50OiBhbnksIG5vZGUpIHtcbiAgICBpZiAoZXZlbnQua2V5ID09ICdFbnRlcicpIHtcbiAgICAgIHRoaXMub25DbGlja1RvZ2dsZU5vZGUobm9kZSk7XG4gICAgfVxuICB9XG5cbiAgb25DbGlja1RvZ2dsZU5vZGUobm9kZSkge1xuICAgIGlmICh0aGlzLnRyZWVDb250cm9sLmlzRXhwYW5kZWQobm9kZSkpIHtcbiAgICAgIHRoaXMudHJlZUNvbnRyb2wuZXhwYW5kKG5vZGUpO1xuICAgICAgdGhpcy5fYWRkRXhwYW5kaW5nTm9kZShub2RlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50cmVlQ29udHJvbC5jb2xsYXBzZShub2RlKTtcbiAgICAgIHRoaXMuX3JlbW92ZUV4cGFuZGluZ05vZGVzKG5vZGUuaWQpO1xuICAgIH1cbiAgICB0aGlzLm5vZGVzRXhwYW5kLmVtaXQoeyBub2RlLCBpc0V4cGFuZDogdGhpcy50cmVlQ29udHJvbC5pc0V4cGFuZGVkKG5vZGUpIH0pO1xuICB9XG5cbiAgc2V0SG92ZXJGYXZvcml0ZShpZCkge1xuICAgIHRoaXMuaG92ZXJGYXZvcml0ZU5vZGVJZCA9IGlkO1xuICB9XG5cbiAgZXhwYW5kTm9kZXMoKTogdm9pZCB7XG4gICAgdGhpcy5fZXhwYW5kTm9kZXNMb29wKHRoaXMudHJlZURhdGEpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZXhwYW5kTm9kZXNMb29wKGRhdGE6IFRyZWVOb2RlW10pOiB2b2lkIHtcbiAgICBkYXRhLmZvckVhY2gobm9kZSA9PiB7XG4gICAgICBjb25zdCBleHBhbmRpbmdOb2RlID0gdGhpcy5leHBhbmRpbmdOb2Rlcy5zb21lKHggPT4geC5pZCA9PT0gbm9kZS5pZCk7XG4gICAgICBpZiAoZXhwYW5kaW5nTm9kZSkge1xuICAgICAgICB0aGlzLm9uQ2xpY2tUb2dnbGVOb2RlKGV4cGFuZGluZ05vZGUpO1xuICAgICAgfVxuXG4gICAgICBkYXRhLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW0uY2hpbGRyZW4pKSB7XG4gICAgICAgICAgdGhpcy5fZXhwYW5kTm9kZXNMb29wKGl0ZW0uY2hpbGRyZW4pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2FkZEV4cGFuZGluZ05vZGUobm9kZTogRmxhdE5vZGUpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZXhwYW5kaW5nTm9kZXMuc29tZSh4ID0+IHguaWQgPT09IG5vZGUuaWQpKSB7XG4gICAgICB0aGlzLmV4cGFuZGluZ05vZGVzLnB1c2gobm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfcmVtb3ZlRXhwYW5kaW5nTm9kZXMobm9kZUlkOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmV4cGFuZGluZ05vZGVzID0gdGhpcy5leHBhbmRpbmdOb2Rlcy5maWx0ZXIoeCA9PiB4LmlkICE9PSBub2RlSWQpO1xuICB9XG59Il19