@colijnit/transaction 258.1.6 → 258.1.7

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.
@@ -510,6 +510,9 @@ export class DeliveryPlanningOverviewComponent {
510
510
  //fire event selected outwards
511
511
  this.transactionEventService.selectedTransportDay.next(transportDay);
512
512
  }
513
+ else {
514
+ this.transactionEventService.resetTransportDayFilteredOrders.next();
515
+ }
513
516
  }
514
517
  }
515
518
  DeliveryPlanningOverviewComponent.decorators = [
@@ -596,4 +599,4 @@ DeliveryPlanningOverviewComponent.propDecorators = {
596
599
  showClass: [{ type: HostBinding, args: ['class.co-delivery-planning-overview',] }],
597
600
  onResize: [{ type: HostListener, args: ['window:resize', ['$event'],] }]
598
601
  };
599
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJhbnNhY3Rpb24vc3JjL2xpYi9jb21wb25lbnQvZGVsaXZlcnktcGxhbm5pbmctbWFpbi9jb21wb25lbnQvZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXcvZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQW1CLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBYSxTQUFTLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRS9NLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUN4RCxPQUFPLEVBQUMsNkJBQTZCLEVBQUMsTUFBTSx3REFBd0QsQ0FBQztBQUNyRyxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxvREFBb0QsQ0FBQztBQUM3RixPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSw4REFBOEQsQ0FBQztBQUNyRyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUMzRSxPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSxtREFBbUQsQ0FBQztBQUc5RixPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxzRUFBc0UsQ0FBQztBQUMvRyxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxnRUFBZ0UsQ0FBQztBQUNwRyxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSxnREFBZ0QsQ0FBQztBQUN4RixPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSxxRUFBcUUsQ0FBQztBQUU3RyxPQUFPLEVBQUMscUNBQXFDLEVBQUMsTUFBTSx1RkFB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QVEsR0FBRyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUM7UUFFL0MsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUVyQyxJQUFJLFlBQVksQ0FBQyxRQUFRLEVBQUU7WUFDekIsOEJBQThCO1lBQzlCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUUsWUFBWSxDQUFDLENBQUM7U0FDdkU7SUFDSCxDQUFDOzs7WUFubkJGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsK0JBQStCO2dCQUN6QyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcURUO2dCQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3RDOzs7WUEvRU8sdUJBQXVCO1lBQ3ZCLGtCQUFrQjtZQUNsQiwyQkFBMkI7WUFLM0Isd0JBQXdCO1lBWk4saUJBQWlCO1lBcUJuQyxpQkFBaUI7WUFMakIsZ0JBQWdCO1lBU2hCLHVCQUF1Qjs7O29CQThFNUIsWUFBWSxTQUFDLHFDQUFxQzsyQkFLbEQsU0FBUyxTQUFDLGNBQWM7eUJBQ3hCLFNBQVMsU0FBQyxZQUFZO3FDQUl0QixTQUFTLFNBQUMsZUFBZTsyQkFLekIsS0FBSzswQkFLTCxLQUFLOzhCQUdMLEtBQUs7c0NBR0wsS0FBSzsyQ0FHTCxNQUFNOzBDQVdOLE1BQU07d0JBcUROLFdBQVcsU0FBQyxxQ0FBcUM7dUJBTWpELFlBQVksU0FBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FmdGVyVmlld0NoZWNrZWQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFF1ZXJ5TGlzdCwgVmlld0NoaWxkLCBWaWV3Q2hpbGRyZW4sIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7Q2FsZW5kYXJWaWV3fSBmcm9tICdAY29saWpuaXQvc2hhcmVkY29tcG9uZW50cyc7XHJcbmltcG9ydCB7RGVsaXZlcnlQbGFubmluZ0NhbGVuZGFyTW9kZXN9IGZyb20gJy4uLy4uLy4uLy4uL2VudW0vZGVsaXZlcnktcGxhbm5pbmctY2FsZW5kYXItbW9kZXMuZW51bSc7XHJcbmltcG9ydCB7RGVsaXZlcnlQbGFubmluZ1ZpZXdNb2Rlc30gZnJvbSAnLi4vLi4vLi4vLi4vZW51bS9kZWxpdmVyeS1wbGFubmluZy12aWV3LW1vZGVzLmVudW0nO1xyXG5pbXBvcnQge0RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9kZWxpdmVyeS1wbGFubmluZy9zZXJ2aWNlL2RlbGl2ZXJ5LXBsYW5uaW5nLnNlcnZpY2UnO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZS90cmFuc2FjdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkNvbm5lY3RvclNlcnZpY2V9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24tY29ubmVjdG9yLnNlcnZpY2UnO1xyXG5pbXBvcnQge1BsYW5uaW5nVHJhbnNwb3J0V2Vla0RheX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BsYW5uaW5nLXRyYW5zcG9ydC13ZWVrLWRheS5ibyc7XHJcbmltcG9ydCB7UGxhbk9yZGVyfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGxhbi1vcmRlci5ibyc7XHJcbmltcG9ydCB7R2V0VHJhbnNwb3J0T3JkZXJzUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2dldC10cmFuc3BvcnQtb3JkZXJzLXJlcXVlc3QuYm8nO1xyXG5pbXBvcnQge1BsYW5uaW5nRmlsdGVyT2JqZWN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGxhbm5pbmctZmlsdGVyLW9iamVjdC5ibyc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25EaWFsb2dTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlL3RyYW5zYWN0aW9uLWRpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHtPcmRlckxpbmVzUGxhbm5lZFJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9vcmRlci1saW5lcy1wbGFubmVkLXJlcXVlc3QuYm8nO1xyXG5pbXBvcnQge0RlbGl2ZXJ5UGxhbm5pbmdPdmVydmlld1BvcHVwQ29tcG9uZW50fSBmcm9tICcuL2NvbXBvbmVudC9kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldy1wb3B1cC9kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldy1wb3B1cC5jb21wb25lbnQnO1xyXG5pbXBvcnQge0RlbGl2ZXJ5UGxhbm5pbmdPdmVydmlld1RpbGVDb21wb25lbnR9IGZyb20gJy4vY29tcG9uZW50L2RlbGl2ZXJ5LXBsYW5uaW5nLW92ZXJ2aWV3LXRpbGUvZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXctdGlsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQge0ljb25DYWNoZVNlcnZpY2V9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2UvaWNvbi1jYWNoZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtJY29ufSBmcm9tICcuLi8uLi8uLi8uLi9lbnVtL2ljb24uZW51bSc7XHJcbmltcG9ydCB7RGVsaXZlcnlQbGFubmluZ1RpbGVNb2Rlc30gZnJvbSAnLi4vLi4vLi4vLi4vZW51bS9kZWxpdmVyeS1wbGFubmluZy10aWxlLW1vZGVzLmVudW0nO1xyXG5pbXBvcnQge0RlbGl2ZXJ5UGxhbm5pbmdVcGRhdGVBY3Rpb25zfSBmcm9tICcuLi8uLi8uLi8uLi9lbnVtL2RlbGl2ZXJ5LXBsYW5uaW5nLXVwZGF0ZS1hY3Rpb25zLmVudW0nO1xyXG5pbXBvcnQge1BsYW5PcmRlckxpbmV9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wbGFuLW9yZGVyLWxpbmUuYm8nO1xyXG5pbXBvcnQge0RpY3Rpb25hcnlTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlL2RpY3Rpb25hcnkuc2VydmljZSc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25MaW5lSW5mb30gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLWxpbmUtaW5mby5ibyc7XHJcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtJbnRlcm5hbFBhcmFtfSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9lbnVtL2ludGVybmFsLXBhcmFtLmVudW0nO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlL3RyYW5zYWN0aW9uLWV2ZW50LnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjby1kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldycsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgICAgPGRpdiBjbGFzcz1cImRlbGl2ZXJ5LXBsYW5uaW5nLXdyYXBwZXJcIj5cclxuICAgICAgICAgIDxjby1kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldy1wb3B1cCAjcGxhbm5pbmdQb3B1cCAqbmdJZj1cInNob3dOb3RlRGlhbG9nXCIgKGNsb3NlRXZlbnQpPVwic2hvd05vdGVEaWFsb2cgPSBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uU3VjY2VlZGVkUGxhbkFjdGlvbik9XCJoYW5kbGVQb3B1cFBsYW5FdmVudCgkZXZlbnQpXCI+PC9jby1kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldy1wb3B1cD5cclxuICAgICAgICAgIDxjby1kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldy10aWxlLXNldHRpbmdzLXBvcHVwICpuZ0lmPVwic2hvd1NldHRpbmdzRGlhbG9nXCIgW3RyYW5zcG9ydERheV09XCJzZWxlY3RlZFRyYW5zcG9ydERheVwiXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2FuY2VsQWN0aW9uKT1cImhhbmRsZVNldHRpbmdzUmVzZXQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xvc2VFdmVudCk9XCJzaG93U2V0dGluZ3NEaWFsb2cgPSBmYWxzZVwiPjwvY28tZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXctdGlsZS1zZXR0aW5ncy1wb3B1cD5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZWxpdmVyeS1vdmVydmlldy13cmFwcGVyXCIgW2NsYXNzLnNpZGViYXJdPVwiY3VycmVudFZpZXdNb2RlID09PSAnREFZU19BUk9VTkQnXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpbGUtdmlldy1tb2RlcyByb3dcIj5cclxuICAgICAgICAgICAgICAgICAgPGNvLWljb24gKGNsaWNrKT1cImN1cnJlbnRUaWxlTW9kZSA9IHRpbGVNb2Rlcy5Ob3JtYWxcIiBbY2xhc3MuYWN0aXZlXT1cImN1cnJlbnRUaWxlTW9kZSA9PT0gdGlsZU1vZGVzLk5vcm1hbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24oaWNvbnMuQ2FsZW5kYXJMaW5lc1JlZ3VsYXIpXCI+PC9jby1pY29uPlxyXG4gICAgICAgICAgICAgICAgICA8Y28taWNvbiAoY2xpY2spPVwiY3VycmVudFRpbGVNb2RlID0gdGlsZU1vZGVzLkNhbGVuZGFyXCIgW2NsYXNzLmFjdGl2ZV09XCJjdXJyZW50VGlsZU1vZGUgPT09IHRpbGVNb2Rlcy5DYWxlbmRhclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24oaWNvbnMuQ2FsZW5kYXJEYXlSZWd1bGFyKVwiPjwvY28taWNvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGxhbm5pbmctY29tcG9uZW50LXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPGNvLWRhdGUtcGxhbm5pbmcgW3ZpZXddPVwiY3VycmVudFZpZXdNb2RlXCIgW3NlbGVjdGVkRGF0ZV09XCJjdXJyZW50RGF0ZSgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJhbmdlQ2hhbmdlKT1cImhhbmRsZURhdGVSYW5nZUNoYW5nZSgkZXZlbnQpXCI+PC9jby1kYXRlLXBsYW5uaW5nPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGRhdGUtcGxhbm5pbmdcIiBbY2xhc3MuZW1wbG95ZWUtdmlld109XCJlbXBsb3llZVZpZXdcIiAjcm93Q29udGFpbmVyICpuZ0Zvcj1cImxldCB0cmFuc3BvcnRXZWVrUm93IG9mIHBsYW5UcmFuc3BvcnRXZWVrQXJyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW5cIiAjY29sdW1uRWxlbVxyXG4gICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB0cmFuc1BvcnREYXkgb2YgZmlsdGVyV2Vla0FycmF5KHRyYW5zcG9ydFdlZWtSb3cpOyBpbmRleCBhcyBpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8Y28tZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXctdGlsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0VHJhbnNwb3J0RGF5KHRyYW5zUG9ydERheSwgZmlsdGVyV2Vla0FycmF5KHRyYW5zcG9ydFdlZWtSb3cpKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCIhdHJhbnNQb3J0RGF5LmF2YWlsYWJsZU9uRGF0ZSB8fCB0cmFuc1BvcnREYXkubWF4TWludXRlcyA9PT0gMCB8fCBjaGVja0F2YWlsYWJsZSh0cmFuc1BvcnREYXkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiF0cmFuc1BvcnREYXkuYXZhaWxhYmxlT25EYXRlIHx8IHRyYW5zUG9ydERheS5tYXhNaW51dGVzID09PSAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRyYWdvdmVyKT1cImFsbG93RHJvcCgkZXZlbnQsIHRyYW5zUG9ydERheSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZHJvcCk9XCJkcm9wcGVkKCRldmVudCwgdHJhbnNwb3J0V2Vla1JvdywgdHJhbnNQb3J0RGF5LCBmaWx0ZXJXZWVrQXJyYXkodHJhbnNwb3J0V2Vla1JvdykpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRyYWdlbmQpPVwiZHJhZ0VuZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RyYW5zcG9ydERheV09XCJ0cmFuc1BvcnREYXlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVsZXRlT3JkZXJFdmVudCk9XCJoYW5kbGVEZWxldGVPcmRlcigkZXZlbnQsIHRyYW5zcG9ydFdlZWtSb3cpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRpbWVDaGFuZ2VFdmVudCk9XCJoYW5kbGVUaW1lQ2hhbmdlRXZlbnQodHJhbnNQb3J0RGF5LCB0cmFuc3BvcnRXZWVrUm93LCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3BlblNldHRpbmdzRGlhbG9nRXZlbnQpPVwib3BlblNldHRpbmdzRGlhbG9nKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2FsZW5kYXJQbGFuRXZlbnQpPVwiaGFuZGxlQ2FsZW5kYXJQbGFuRXZlbnQoJGV2ZW50LCB0cmFuc1BvcnREYXksIHRyYW5zcG9ydFdlZWtSb3cpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlbGV0ZU9yZGVyTGluZUV2ZW50KT1cImhhbmRsZURlbGV0ZUxpbmUoJGV2ZW50LCB0cmFuc1BvcnREYXksIHRyYW5zcG9ydFdlZWtSb3cpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVkaXRPcmRlckV2ZW50KT1cImhhbmRsZUVkaXRQbGFubmVkT3JkZXIoJGV2ZW50LCB0cmFuc1BvcnREYXksIHRyYW5zcG9ydFdlZWtSb3cpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdmVFdmVudCk9XCJoYW5kbGVNb3ZlRXZlbnQoJGV2ZW50LHRyYW5zUG9ydERheSwgdHJhbnNwb3J0V2Vla1JvdywgcGxhblRyYW5zcG9ydFdlZWtBcnIpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGF2YWlsYWJpbGl0eUNoZWNrZWQpPVwiaGFuZGxlQXZhaWxhYmlsaXR5Q2hlY2tlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdmVPcmRlclVwRXZlbnQpPVwiaGFuZGxlTW92ZU9yZGVyVXAoJGV2ZW50LCB0cmFuc3BvcnRXZWVrUm93LCB0cmFuc1BvcnREYXkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdmVPcmRlckRvd25FdmVudCk9XCJoYW5kbGVNb3ZlT3JkZXJEb3duKCRldmVudCwgdHJhbnNwb3J0V2Vla1JvdywgdHJhbnNQb3J0RGF5KVwiXHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgID48L2NvLWRlbGl2ZXJ5LXBsYW5uaW5nLW92ZXJ2aWV3LXRpbGU+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgYCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEZWxpdmVyeVBsYW5uaW5nT3ZlcnZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdDaGVja2VkLCBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgcHVibGljIHJlYWRvbmx5IGljb25zOiB0eXBlb2YgSWNvbiA9IEljb247XHJcbiAgcHVibGljIHJlYWRvbmx5IHBsYW5uaW5nQWN0aW9uczogdHlwZW9mIERlbGl2ZXJ5UGxhbm5pbmdVcGRhdGVBY3Rpb25zID0gRGVsaXZlcnlQbGFubmluZ1VwZGF0ZUFjdGlvbnM7XHJcbiAgcHVibGljIHJlYWRvbmx5IHRpbGVNb2RlczogdHlwZW9mIERlbGl2ZXJ5UGxhbm5pbmdUaWxlTW9kZXMgPSBEZWxpdmVyeVBsYW5uaW5nVGlsZU1vZGVzO1xyXG4gIHB1YmxpYyBkZWxpdmVyeVBsYW5uaW5nVmlld01vZGVzOiB0eXBlb2YgRGVsaXZlcnlQbGFubmluZ1ZpZXdNb2RlcyA9IERlbGl2ZXJ5UGxhbm5pbmdWaWV3TW9kZXM7XHJcblxyXG4gIHB1YmxpYyBhdmFpbGFiaWxpdHk6IHsgdHJhbnNwb3J0RGF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXksIGF2YWlsYWJsZTogYm9vbGVhbiB9W10gPSBbXTtcclxuXHJcbiAgcHVibGljIHBsYW5uaW5nUG9wdXBSZWY6IERlbGl2ZXJ5UGxhbm5pbmdPdmVydmlld1BvcHVwQ29tcG9uZW50O1xyXG5cclxuICBwdWJsaWMgYXZhaWxhYmxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHNob3dOb3RlRGlhbG9nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHNob3dTZXR0aW5nc0RpYWxvZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyB0aWxlc1F1ZXJ5TGlzdDogUXVlcnlMaXN0PERlbGl2ZXJ5UGxhbm5pbmdPdmVydmlld1RpbGVDb21wb25lbnQ+O1xyXG4gIHB1YmxpYyBzZWxlY3RlZFRyYW5zcG9ydERheTogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5O1xyXG5cclxuICBwcml2YXRlIF9zdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICBAVmlld0NoaWxkcmVuKERlbGl2ZXJ5UGxhbm5pbmdPdmVydmlld1RpbGVDb21wb25lbnQpXHJcbiAgcHVibGljIHNldCB0aWxlcyh0aWxlczogUXVlcnlMaXN0PERlbGl2ZXJ5UGxhbm5pbmdPdmVydmlld1RpbGVDb21wb25lbnQ+KSB7XHJcbiAgICB0aGlzLnRpbGVzUXVlcnlMaXN0ID0gdGlsZXM7XHJcbiAgfTtcclxuXHJcbiAgQFZpZXdDaGlsZCgncm93Q29udGFpbmVyJykgcm93Q29udGFpbmVyOiBIVE1MRGl2RWxlbWVudDtcclxuICBAVmlld0NoaWxkKCdjb2x1bW5FbGVtJykgY29sdW1uRWxlbTogSFRNTERpdkVsZW1lbnQ7XHJcblxyXG4gIHB1YmxpYyBjb2x1bW5OdW0gPSAzOyAvL2luaXRpYWwgY291bnRcclxuXHJcbiAgQFZpZXdDaGlsZCgncGxhbm5pbmdQb3B1cCcpXHJcbiAgcHVibGljIHNldCBwbGFubmluZ1BvcHVwQ29tcG9uZW50KHZhbHVlOiBEZWxpdmVyeVBsYW5uaW5nT3ZlcnZpZXdQb3B1cENvbXBvbmVudCkge1xyXG4gICAgdGhpcy5wbGFubmluZ1BvcHVwUmVmID0gdmFsdWU7XHJcbiAgfTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZ2V0IGVtcGxveWVlVmlldygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5lbXBsb3llZVZpZXc7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBjdXJyZW50TW9kZTogRGVsaXZlcnlQbGFubmluZ0NhbGVuZGFyTW9kZXMgPSBEZWxpdmVyeVBsYW5uaW5nQ2FsZW5kYXJNb2Rlcy5XZWVrO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBjdXJyZW50Vmlld01vZGU6IENhbGVuZGFyVmlldyA9IENhbGVuZGFyVmlldy5XZWVrVmlldztcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgY3VycmVudFBsYW5uaW5nVmlld01vZGU6IERlbGl2ZXJ5UGxhbm5pbmdWaWV3TW9kZXMgPSB0aGlzLmRlbGl2ZXJ5UGxhbm5pbmdWaWV3TW9kZXMuRnVsbHNjcmVlbjtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHVwZGF0ZVBsYW5uaW5nVHJhbnNwb3J0RXZlbnQ6IEV2ZW50RW1pdHRlcjx7XHJcbiAgICBvbGRXZWVrOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXSxcclxuICAgIHdlZWs6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdLFxyXG4gICAgYWN0aW9uOiBEZWxpdmVyeVBsYW5uaW5nVXBkYXRlQWN0aW9uc1xyXG4gIH0+ID0gbmV3IEV2ZW50RW1pdHRlcjx7XHJcbiAgICBvbGRXZWVrOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXSxcclxuICAgIHdlZWs6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdLFxyXG4gICAgYWN0aW9uOiBEZWxpdmVyeVBsYW5uaW5nVXBkYXRlQWN0aW9uc1xyXG4gIH0+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyByZXNldFBsYW5uaW5nVHJhbnNwb3J0RXZlbnQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcblxyXG4gIHB1YmxpYyBnZXQgcGxhblRyYW5zcG9ydFdlZWtBcnIoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UucGxhblRyYW5zcG9ydFdlZWtBcnI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGN1cnJlbnRUaWxlTW9kZSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5jdXJyZW50VGlsZU1vZGU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0IGN1cnJlbnRUaWxlTW9kZSh0aWxlTW9kZTogRGVsaXZlcnlQbGFubmluZ1RpbGVNb2Rlcykge1xyXG4gICAgdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuY3VycmVudFRpbGVNb2RlID0gdGlsZU1vZGU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY3VycmVudERhdGUoKTogRGF0ZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuY3VycmVudFN0YXJ0RGF0ZTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlOiBEZWxpdmVyeVBsYW5uaW5nU2VydmljZSxcclxuICAgIHByaXZhdGUgX3RyYW5zYWN0aW9uOiBUcmFuc2FjdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF90cmFuc2FjdGlvbkNvbjogVHJhbnNhY3Rpb25Db25uZWN0b3JTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZGlhbG9nOiBUcmFuc2FjdGlvbkRpYWxvZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIF9kaWN0aW9uYXJ5OiBEaWN0aW9uYXJ5U2VydmljZSxcclxuICAgIHB1YmxpYyBpY29uQ2FjaGVTZXJ2aWNlOiBJY29uQ2FjaGVTZXJ2aWNlLFxyXG4gICAgcHVibGljIHRyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlOiBUcmFuc2FjdGlvbkV2ZW50U2VydmljZVxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgLy9jYWxjdWxhdGluZyB1cG9uIGxvYWRpbmdcclxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XHJcbiAgICB0aGlzLnNldENvbE51bSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9zdWJzLnB1c2godGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuYXZhaWxhYmlsaXR5UmVzZXRFdmVudC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xyXG4gICAgICB0aGlzLmF2YWlsYWJpbGl0eSA9IFtdO1xyXG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSkpO1xyXG4gICAgdGhpcy5fdHJhbnNhY3Rpb24uZ2V0SW50ZXJuYWxQYXJhbWV0ZXIoSW50ZXJuYWxQYXJhbS5QbGFuUmF5b24pLnRoZW4oKHJlc3VsdDogYm9vbGVhbikgPT4ge1xyXG4gICAgICB0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5wbGFuUmF5b24gPSByZXN1bHQ7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fc3Vicy5mb3JFYWNoKChzdWI6IFN1YnNjcmlwdGlvbikgPT4ge1xyXG4gICAgICBzdWIudW5zdWJzY3JpYmUoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jby1kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldycpXHJcbiAgcHVibGljIHNob3dDbGFzcygpIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLy9yZWNhbGN1bGF0aW5nIHVwb24gYnJvd3NlciB3aW5kb3cgcmVzaXplXHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXHJcbiAgb25SZXNpemUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIHRoaXMuc2V0Q29sTnVtKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZHJvcHBlZChldjogRHJhZ0V2ZW50LCB3ZWVrOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXSwgdHJhbnNwb3J0RGF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXksIHRyYW5zcG9ydERheXM6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdKSB7XHJcbiAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgZXYuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblxyXG4gICAgdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuZHJhZ2dpbmcgPSBmYWxzZTtcclxuXHJcbiAgICBpZiAodGhpcy5jaGVja0F2YWlsYWJsZSh0cmFuc3BvcnREYXkpKSB7XHJcbiAgICAgIGF3YWl0IHRoaXMuX2RpYWxvZy5zaG93RXJyb3IodGhpcy5fZGljdGlvbmFyeS5nZXQoJ09SREVSX0NBTl9OT1RfQkVfUExBTk5FRF9PTl9SRVNPVVJDRScpLCB0cnVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGRhdGEgPSBldi5kYXRhVHJhbnNmZXIuZ2V0RGF0YSgndGV4dCcpO1xyXG4gICAgICBsZXQgaW5kZXggPSB0cmFuc3BvcnREYXlzLmluZGV4T2YodHJhbnNwb3J0RGF5KTtcclxuICAgICAgbGV0IHRpbGUgPSB0aGlzLnRpbGVzUXVlcnlMaXN0LmdldChpbmRleCk7XHJcbiAgICAgIGlmICghdGlsZS5leHBhbmRlZCkge1xyXG4gICAgICAgIHRpbGUuZXhwYW5kZWQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChkYXRhICE9ICdsaW5lcycgJiYgIXRoaXMuX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLm1vdmluZ1RyYW5zSWQpIHtcclxuICAgICAgICBpZiAoZGF0YSAmJiBwYXJzZUludChkYXRhKSkge1xyXG4gICAgICAgICAgY29uc3QgcGxhbk9yZGVyID0gYXdhaXQgdGhpcy5fdHJhbnNhY3Rpb25Db24uZ2V0UGxhbk9yZGVyKHBhcnNlSW50KGRhdGEpKTtcclxuICAgICAgICAgIGlmIChwbGFuT3JkZXIubGluZXMubGVuZ3RoIDw9IDApIHtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5fZGlhbG9nLnNob3dFcnJvcih0aGlzLl9kaWN0aW9uYXJ5LmdldCgnTk9fTElORVNfVE9fUExBTicpLCB0cnVlKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRyYW5zcG9ydERheT8ucGxhbm5lZE9yZGVycz8ubGVuZ3RoICYmIHRyYW5zcG9ydERheT8ucGxhbm5lZE9yZGVycz8uaW5kZXhPZihwbGFuT3JkZXIpICE9PSAtMSkge1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLl9kaWFsb2cuc2hvd0Vycm9yKHRoaXMuX2RpY3Rpb25hcnkuZ2V0KCdPUkRFUl9IQVNfQUxSRUFEWV9CRUVOX1BMQU5ORUQnKSwgdHJ1ZSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAocGxhbk9yZGVyKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5vcGVuUGxhbm5pbmdQb3B1cChwbGFuT3JkZXIsIHRyYW5zcG9ydERheSwgd2Vlayk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAoZGF0YSAhPSAnbGluZXMnICYmIHRoaXMuX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLm1vdmluZ1RyYW5zSWQpIHtcclxuICAgICAgICAvLyBhd2FpdCB0aGlzLmhhbmRsZU1vdmVOb3JtYWxFdmVudChkYXRhLCB0cmFuc3BvcnREYXksIHdlZWssIHRoaXMucGxhblRyYW5zcG9ydFdlZWtBcnIpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGF3YWl0IHRoaXMucGxhblNlbGVjdGVkTGluZXModHJhbnNwb3J0RGF5LCB3ZWVrKTtcclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYWxsb3dEcm9wKGV2OiBEcmFnRXZlbnQsIHRyYW5zcG9ydERheTogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5KSB7XHJcbiAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgaWYgKHRoaXMuX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLmRyYWdnaW5nICYmIHRyYW5zcG9ydERheS5tYXhNaW51dGVzID4gMCAmJiB0cmFuc3BvcnREYXkuYXZhaWxhYmxlT25EYXRlKSB7XHJcbiAgICAgIHJldHVybiB0cmFuc3BvcnREYXkubWludXRlcyArIHRyYW5zcG9ydERheS5taW51dGVzIDwgdHJhbnNwb3J0RGF5Lm1heE1pbnV0ZXMgJiYgdHJhbnNwb3J0RGF5Lm1heE9yZGVyQW1vdW50IDwgdHJhbnNwb3J0RGF5Lm9yZGVyQW1vdW50ICYmIHRyYW5zcG9ydERheS5hdmFpbGFibGVPbkRhdGUgJiYgdGhpcy5jaGVja0F2YWlsYWJsZSh0cmFuc3BvcnREYXkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldENvbE51bSgpIHtcclxuICAgIGlmICh0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS52aWV3TW9kZSA9PT0gRGVsaXZlcnlQbGFubmluZ1ZpZXdNb2Rlcy5TaWRlYmFyKSB7XHJcbiAgICAgIHRoaXMuY29sdW1uTnVtID0gMTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY29sdW1uTnVtID0gMztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBkcmFnRW5kKGV2OiBEcmFnRXZlbnQpIHtcclxuICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5kcmFnZ2luZyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGZpbHRlcldlZWtBcnJheSh3ZWVrQXJyYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdKSB7XHJcbiAgICByZXR1cm4gd2Vla0FycmF5LnNsaWNlKDAsIHRoaXMuY29sdW1uTnVtKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVEYXRlUmFuZ2VDaGFuZ2UobmV3RGF0ZTogRGF0ZSkge1xyXG4gICAgdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuY3VycmVudFN0YXJ0RGF0ZSA9IG5ld0RhdGU7XHJcbiAgICB0aGlzLnJlc2V0UGxhbm5pbmdUcmFuc3BvcnRFdmVudC5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgaGFuZGxlRGVsZXRlT3JkZXIoZGVsZXRlUmVzdWx0OiBbUGxhbk9yZGVyLCBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXldLCBwbGFubmluZ1RyYW5zcG9ydFdlZWs6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdKSB7XHJcbiAgICBjb25zdCBvbGRXZWVrOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXSA9IFtdO1xyXG4gICAgcGxhbm5pbmdUcmFuc3BvcnRXZWVrLmZvckVhY2godmFsID0+IG9sZFdlZWsucHVzaChPYmplY3QuYXNzaWduKHt9LCB2YWwpKSk7XHJcbiAgICBsZXQgb3JkZXIgPSBkZWxldGVSZXN1bHRbMF07XHJcbiAgICBpZiAob3JkZXIpIHtcclxuICAgICAgaWYgKGRlbGV0ZVJlc3VsdFswXS5saW5lcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuZGVsZXRpbmdPcmRlciA9IG9yZGVyO1xyXG4gICAgICAgIGRlbGV0ZVJlc3VsdFsxXS5wbGFubmVkT3JkZXJzLnNwbGljZShkZWxldGVSZXN1bHRbMV0ucGxhbm5lZE9yZGVycy5pbmRleE9mKG9yZGVyKSwgMSk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVQbGFubmluZ1RyYW5zcG9ydEV2ZW50LmVtaXQoe1xyXG4gICAgICAgICAgb2xkV2Vlazogb2xkV2VlayxcclxuICAgICAgICAgIHdlZWs6IHBsYW5uaW5nVHJhbnNwb3J0V2VlayxcclxuICAgICAgICAgIGFjdGlvbjogRGVsaXZlcnlQbGFubmluZ1VwZGF0ZUFjdGlvbnMuRGVsZXRlUGxhbm5lZE9yZGVyXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5fZGlhbG9nLnNob3dFcnJvcignTk9fTElORVNfVE9fREVMRVRFJywgdHJ1ZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVEZWxldGVMaW5lKGRlbGV0ZVJlc3VsdDoge1xyXG4gICAgb3JkZXI6IFBsYW5PcmRlcixcclxuICAgIGxpbmU6IFBsYW5PcmRlckxpbmVcclxuICB9LCB3ZWVrRGF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXksIHRyYW5zcG9ydFdlZWtSb3c6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdKSB7XHJcbiAgICBsZXQgb2xkV2VlayA9IHRyYW5zcG9ydFdlZWtSb3c7XHJcbiAgICBsZXQgb3JkZXIgPSB3ZWVrRGF5LnBsYW5uZWRPcmRlcnMuZmluZChvcmRlciA9PiBvcmRlci50cmFuc0lkID09PSBkZWxldGVSZXN1bHQub3JkZXIudHJhbnNJZCk7XHJcbiAgICBvcmRlci5saW5lcyA9IG9yZGVyLmxpbmVzLmZpbHRlcihsaW5lID0+IGxpbmUub3JpZ2luYWxMaW5lTnIgIT09IGRlbGV0ZVJlc3VsdC5saW5lLm9yaWdpbmFsTGluZU5yKTtcclxuICAgIGlmIChvcmRlci5saW5lcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgd2Vla0RheS5wbGFubmVkT3JkZXJzLnNwbGljZSh3ZWVrRGF5LnBsYW5uZWRPcmRlcnMuaW5kZXhPZihvcmRlciksIDEpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuZGVsZXRpbmdPcmRlciA9IG9yZGVyO1xyXG4gICAgdGhpcy51cGRhdGVQbGFubmluZ1RyYW5zcG9ydEV2ZW50LmVtaXQoe1xyXG4gICAgICBvbGRXZWVrOiBvbGRXZWVrLFxyXG4gICAgICB3ZWVrOiB0cmFuc3BvcnRXZWVrUm93LFxyXG4gICAgICBhY3Rpb246IERlbGl2ZXJ5UGxhbm5pbmdVcGRhdGVBY3Rpb25zLkRlbGV0ZVBsYW5uZWRMaW5lc1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0T3JkZXJMaW5lc1BsYW5uZWQob3JkZXI6IFBsYW5PcmRlcik6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgbGV0IHJlcXVlc3Q6IE9yZGVyTGluZXNQbGFubmVkUmVxdWVzdCA9IG5ldyBPcmRlckxpbmVzUGxhbm5lZFJlcXVlc3QoKTtcclxuICAgIGxldCBmaWx0ZXJPYmo6IFBsYW5uaW5nRmlsdGVyT2JqZWN0ID0gbmV3IFBsYW5uaW5nRmlsdGVyT2JqZWN0KCk7XHJcbiAgICByZXF1ZXN0LnBsYW5uZWQgPSB0cnVlO1xyXG4gICAgcmVxdWVzdC5wbGFubmluZ0lkID0gdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuY3VycmVudFBsYW5uaW5nLnBsYW5uaW5nSWQ7XHJcbiAgICByZXF1ZXN0LnRyYW5zSWQgPSBvcmRlci50cmFuc0lkO1xyXG4gICAgcmVxdWVzdC5wbGFubmVkTGluZUlkID0gb3JkZXIucGxhbm5lZExpbmVJZDtcclxuICAgIGZpbHRlck9iai5vbmx5Q3VycmVudFdlZWsgPSB0cnVlO1xyXG4gICAgZmlsdGVyT2JqLmJlZ2luQ3VycmVudFdlZWsgPSBuZXcgRGF0ZSgpO1xyXG4gICAgZmlsdGVyT2JqLmNoZWNrT3JkZXJMaW5lcyA9IDE7XHJcbiAgICByZXF1ZXN0LmZpbHRlck9iamVjdCA9IGZpbHRlck9iajtcclxuICAgIGlmICghb3JkZXIubGluZXMpIHtcclxuICAgICAgb3JkZXIubGluZXMgPSBbXTtcclxuICAgIH1cclxuICAgIG9yZGVyLmxpbmVzLnB1c2goLi4uYXdhaXQgdGhpcy5fdHJhbnNhY3Rpb25Db24uZ2V0T3JkZXJMaW5lc1BsYW5uZWQocmVxdWVzdCkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldFRyYW5zcG9ydE9yZGVycyh0cmFuc3BvcnREYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgbGV0IHJlcXVlc3Q6IEdldFRyYW5zcG9ydE9yZGVyc1JlcXVlc3QgPSBuZXcgR2V0VHJhbnNwb3J0T3JkZXJzUmVxdWVzdCgpO1xyXG4gICAgcmVxdWVzdC5wbGFubmluZ0lkID0gdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuY3VycmVudFBsYW5uaW5nLnBsYW5uaW5nSWQ7XHJcbiAgICByZXF1ZXN0LmRhdGUgPSB0cmFuc3BvcnREYXkuZGF0ZTtcclxuICAgIHJlcXVlc3QudHJhbnNwb3J0SWQgPSB0cmFuc3BvcnREYXkudHJhbnNwb3J0LnRyYW5zcG9ydElkO1xyXG4gICAgdHJhbnNwb3J0RGF5LnBsYW5uZWRPcmRlcnMgPSBhd2FpdCB0aGlzLl90cmFuc2FjdGlvbkNvbi5nZXRUcmFuc3BvcnRPcmRlcnMocmVxdWVzdCk7XHJcbiAgICB0cmFuc3BvcnREYXkub3JkZXJzTG9hZGVkID0gdHJ1ZTtcclxuXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgcGxhbk9yZGVyTGluZXMob3JkZXI6IFBsYW5PcmRlciwgdHJhbnNwb3J0RGF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXksIHdlZWs6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBjb25zdCBvbGRXZWVrOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXSA9IFtdO1xyXG4gICAgd2Vlay5mb3JFYWNoKHZhbCA9PiBvbGRXZWVrLnB1c2goT2JqZWN0LmFzc2lnbih7fSwgdmFsKSkpO1xyXG4gICAgaWYgKG9yZGVyLmxpbmVzPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIG9yZGVyLmxpbmVzTG9hZGVkID0gdHJ1ZTtcclxuICAgICAgb3JkZXIudGFza3MgPSBbXTtcclxuICAgICAgb3JkZXIudGFza3NMb2FkZWQgPSB0cnVlO1xyXG4gICAgICBvcmRlci5saW5lcy5mb3JFYWNoKGxpbmUgPT4ge1xyXG4gICAgICAgIGxpbmUuc2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgIGlmIChsaW5lLmFtb3VudFRvUGxhbiA9PT0gMCkge1xyXG4gICAgICAgICAgbGluZS5hbW91bnRUb1BsYW4gPSAobGluZS5hbW91bnRJbk9yZGVyIC0gbGluZS5hbW91bnRQbGFubmVkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAoIXRyYW5zcG9ydERheS5wbGFubmVkT3JkZXJzKSB7XHJcbiAgICAgICAgdHJhbnNwb3J0RGF5LnBsYW5uZWRPcmRlcnMgPSBbb3JkZXJdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICghdHJhbnNwb3J0RGF5LnBsYW5uZWRPcmRlcnMuZmluZCgocGxhbm5lZE9yZGVyOiBQbGFuT3JkZXIpID0+IHBsYW5uZWRPcmRlci50cmFuc0lkID09PSBvcmRlci50cmFuc0lkKSkge1xyXG4gICAgICAgICAgdHJhbnNwb3J0RGF5LnBsYW5uZWRPcmRlcnMucHVzaChvcmRlcik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGxldCBwbGFubmVkT3JkZXI6IFBsYW5PcmRlciA9IHRyYW5zcG9ydERheS5wbGFubmVkT3JkZXJzLmZpbmQoKHBsYW5uZWRPcmRlcjogUGxhbk9yZGVyKSA9PiBwbGFubmVkT3JkZXIudHJhbnNJZCA9PT0gb3JkZXIudHJhbnNJZCk7XHJcbiAgICAgICAgICBpZiAob3JkZXIuc3RhcnRUaW1lICE9PSB0cmFuc3BvcnREYXkucGxhbm5lZE9yZGVycy5maW5kKChwbGFubmVkT3JkZXI6IFBsYW5PcmRlcikgPT4gcGxhbm5lZE9yZGVyLnRyYW5zSWQgPT09IG9yZGVyLnRyYW5zSWQpLnN0YXJ0VGltZSkge1xyXG5cclxuICAgICAgICAgICAgaWYgKCFvcmRlci5wYXJ0RGVsaXZlcnkpIHtcclxuICAgICAgICAgICAgICB0cmFuc3BvcnREYXkucGxhbm5lZE9yZGVycy5zcGxpY2UodHJhbnNwb3J0RGF5LnBsYW5uZWRPcmRlcnMuaW5kZXhPZihwbGFubmVkT3JkZXIpLCAxKTtcclxuICAgICAgICAgICAgICB0cmFuc3BvcnREYXkucGxhbm5lZE9yZGVycy5wdXNoKG9yZGVyKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0cmFuc3BvcnREYXkucGxhbm5lZE9yZGVycy5wdXNoKG9yZGVyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdHJhbnNwb3J0RGF5LnBsYW5uZWRPcmRlcnMuc3BsaWNlKHRyYW5zcG9ydERheS5wbGFubmVkT3JkZXJzLmluZGV4T2YodHJhbnNwb3J0RGF5LnBsYW5uZWRPcmRlcnMuZmluZCgocGxhbm5lZE9yZGVyOiBQbGFuT3JkZXIpID0+IHBsYW5uZWRPcmRlci50cmFuc0lkID09PSBvcmRlci50cmFuc0lkKSksIDEpO1xyXG4gICAgICAgICAgICB0cmFuc3BvcnREYXkucGxhbm5lZE9yZGVycy5wdXNoKG9yZGVyKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy51cGRhdGVQbGFubmluZ1RyYW5zcG9ydEV2ZW50LmVtaXQoe1xyXG4gICAgICAgIG9sZFdlZWs6IG9sZFdlZWssXHJcbiAgICAgICAgd2Vlazogd2VlayxcclxuICAgICAgICBhY3Rpb246IERlbGl2ZXJ5UGxhbm5pbmdVcGRhdGVBY3Rpb25zLlBsYW5MaW5lc1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGF3YWl0IHRoaXMuX2RpYWxvZy5zaG93RXJyb3IoJ05PX0xJTkVTX1RPX1BMQU4nLCB0cnVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBwbGFuU2VsZWN0ZWRMaW5lcyh0cmFuc3BvcnREYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSwgd2VlazogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5W10pOiBQcm9taXNlPHZvaWQ+IHtcclxuXHJcbiAgICBsZXQgcGxhbk9yZGVyID0gYXdhaXQgdGhpcy5fdHJhbnNhY3Rpb25Db24uZ2V0UGxhbk9yZGVyKHRoaXMuX3RyYW5zYWN0aW9uLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8uaWQpO1xyXG4gICAgYXdhaXQgdGhpcy5nZXRTZXF1ZW5jZU9yZGVyVmFsdWUocGxhbk9yZGVyKTtcclxuICAgIGF3YWl0IHRoaXMuZ2V0T3JkZXJMaW5lc1BsYW5uZWQocGxhbk9yZGVyKTtcclxuXHJcbiAgICBpZiAocGxhbk9yZGVyLnBhcnREZWxpdmVyeSkge1xyXG5cclxuICAgICAgbGV0IHNlbGVjdGVkTGluZXM6IFRyYW5zYWN0aW9uTGluZUluZm9bXSA9IHRoaXMuX3RyYW5zYWN0aW9uLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkxpbmVzLmZpbHRlcigodHJhbnNMaW5lczogVHJhbnNhY3Rpb25MaW5lSW5mbykgPT4gdHJhbnNMaW5lcy5zZWxlY3RlZCk7XHJcblxyXG4gICAgICAvL0RvZXMgdGhlIG9yZGVyIGFscmVhZHkgZXhpc3Q/XHJcbiAgICAgIGlmICh0cmFuc3BvcnREYXk/LnBsYW5uZWRPcmRlcnM/LmZpbmQob3JkZXIgPT4gb3JkZXIudHJhbnNJZCA9PT0gcGxhbk9yZGVyLnRyYW5zSWQpKSB7XHJcbiAgICAgICAgLy9ZZXMgdGhlIG9yZGVyIGV4aXN0c1xyXG5cclxuICAgICAgICAvL0lmIHRoZSBsaW5lKHMpIHdlJ3JlIHRyeWluZyB0byBwbGFuIGFscmVhZHkgYXJlIHBsYW5uZWQgd2UgbmVlZCB0byB2YWxpZGF0ZSBpZiB3ZSBuZWVkIHRvIHBsYW4gYW55d2F5XHJcbiAgICAgICAgbGV0IGNhbnRQbGFuU2VsZWN0ZWRMaW5lczogUGxhbk9yZGVyTGluZVtdID0gW107XHJcbiAgICAgICAgaWYgKHNlbGVjdGVkTGluZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgdHJhbnNwb3J0RGF5LnBsYW5uZWRPcmRlcnMuZmluZCgocGxhbm5lZE9yZGVyOiBQbGFuT3JkZXIpID0+IHBsYW5uZWRPcmRlci50cmFuc0lkID09PSBwbGFuT3JkZXIudHJhbnNJZCkubGluZXMuZm9yRWFjaCgocGxhbm5lZExpbmU6IFBsYW5PcmRlckxpbmUpID0+IHtcclxuICAgICAgICAgICAgaWYgKHNlbGVjdGVkTGluZXMuZmluZCgoc2VsZWN0ZWRMaW5lOiBUcmFuc2FjdGlvbkxpbmVJbmZvKSA9PiBzZWxlY3RlZExpbmUubGluZU5yID09PSBwbGFubmVkTGluZS5vcmlnaW5hbExpbmVOcikpIHtcclxuICAgICAgICAgICAgICBjYW50UGxhblNlbGVjdGVkTGluZXMucHVzaChwbGFubmVkTGluZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIGlmIChjYW50UGxhblNlbGVjdGVkTGluZXMubGVuZ3RoID09PSBwbGFuT3JkZXIubGluZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX2RpYWxvZy5zaG93RXJyb3IoJ05PX0xJTkVTX1RPX1BMQU4nLCB0cnVlKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBhd2FpdCB0aGlzLl9kaWFsb2cuc2hvd0Vycm9yKCdOT19MSU5FU19TRUxFQ1RFRCcsIHRydWUpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IHBsYW5uZWRPcmRlcjogUGxhbk9yZGVyID0gdHJhbnNwb3J0RGF5LnBsYW5uZWRPcmRlcnMuZmluZCgocGxhbm5lZE9yZGVyOiBQbGFuT3JkZXIpID0+IHBsYW5uZWRPcmRlci50cmFuc0lkID09PSBwbGFuT3JkZXIudHJhbnNJZCk7XHJcblxyXG4gICAgICAgIC8vQWxsIGxpbmVzIHRoYXQgbmVlZCB0byBiZSBwbGFubmVkIGZvciBhbiBvcmRlciBhcmUgaW4gcGxhbk9yZGVyIG5vd1xyXG4gICAgICAgIC8vV2hpY2ggbWVhbnMgdGhhdCB3ZSBqdXN0IGZpbHRlciB0aGUgbGluZXMgb3V0IHRoYXQgRE9OJ1QgbWF0Y2ggYSBzZWxlY3RlZCBsaW5lIEFORCBhcmUgcGxhbm5lZFxyXG4gICAgICAgIHBsYW5PcmRlci5saW5lcy5maWx0ZXIoXHJcbiAgICAgICAgICAodG9QbGFuTGluZTogUGxhbk9yZGVyTGluZSkgPT4gIXBsYW5uZWRPcmRlci5saW5lcy5maW5kKChwbGFubmVkT3JkZXJMaW5lOiBQbGFuT3JkZXJMaW5lKSA9PiBwbGFubmVkT3JkZXJMaW5lLm9yaWdpbmFsTGluZU5yID09PSB0b1BsYW5MaW5lLm9yaWdpbmFsTGluZU5yKVxyXG4gICAgICAgICAgICAmJiAhc2VsZWN0ZWRMaW5lcy5maW5kKChzZWxlY3RlZExpbmU6IFRyYW5zYWN0aW9uTGluZUluZm8pID0+IHNlbGVjdGVkTGluZS5saW5lTnIgPT09IHRvUGxhbkxpbmUub3JpZ2luYWxMaW5lTnIpKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvL09yZGVyIGRvZXMgbm90IGV4aXN0LCBsZXRzIHByZXBhcmUgaXQgd2l0aCB0aGUgc2VsZWN0ZWQgbGluZXNcclxuICAgICAgICAvL0ZpbHRlciB0aGUgbGluZXMgZm9yIG9ubHkgdGhlIHNlbGVjdGVkIG9uZXNcclxuICAgICAgICBwbGFuT3JkZXIubGluZXMgPSBwbGFuT3JkZXIubGluZXMuZmlsdGVyKHBsYW5uZWRPcmRlckxpbmUgPT4gc2VsZWN0ZWRMaW5lcy5maW5kKChzZWxlY3RlZExpbmU6IFRyYW5zYWN0aW9uTGluZUluZm8pID0+IHBsYW5uZWRPcmRlckxpbmUub3JpZ2luYWxMaW5lTnIgPT09IHNlbGVjdGVkTGluZS5saW5lTnIpKTtcclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgICBwbGFuT3JkZXIubGluZXMuZm9yRWFjaCgobGluZTogUGxhbk9yZGVyTGluZSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICBsZXQgbWF0Y2hlZFRyYW5zTGluZTogVHJhbnNhY3Rpb25MaW5lSW5mbyA9IHRoaXMuX3RyYW5zYWN0aW9uLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkxpbmVzLmZpbmQodHJhbnNMaW5lID0+IHRyYW5zTGluZS5saW5lTnIgPT09IGxpbmUub3JpZ2luYWxMaW5lTnIpO1xyXG4gICAgICBpZiAobWF0Y2hlZFRyYW5zTGluZSkge1xyXG4gICAgICAgIGxpbmUuYW1vdW50VG9QbGFuID0gbWF0Y2hlZFRyYW5zTGluZS5hbW91bnRTZWxlY3RlZDtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICAvL1NlbmQgdGhlIHByZXBhcmVkIG9yZGVyIHRvIHRoZVxyXG4gICAgdGhpcy5vcGVuUGxhbm5pbmdQb3B1cChwbGFuT3JkZXIsIHRyYW5zcG9ydERheSwgd2Vlayk7XHJcblxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldFNlcXVlbmNlT3JkZXJWYWx1ZShvcmRlcjogUGxhbk9yZGVyKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBvcmRlci5wbGFubmVkTGluZUlkID0gYXdhaXQgdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuZ2V0T3JkZXJTZXF1ZW5jZVZhbHVlKCk7XHJcbiAgICBvcmRlci5jaGFpbmVkID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgaGFuZGxlUG9wdXBQbGFuRXZlbnQoZXZlbnQ6IFtQbGFuT3JkZXIsIFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSwgUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5W11dKSB7XHJcblxyXG4gICAgdGhpcy5zaG93Tm90ZURpYWxvZyA9IGZhbHNlO1xyXG4gICAgYXdhaXQgdGhpcy5nZXRUcmFuc3BvcnRPcmRlcnMoZXZlbnRbMV0pO1xyXG4gICAgYXdhaXQgdGhpcy5nZXRTZXF1ZW5jZU9yZGVyVmFsdWUoZXZlbnRbMF0pO1xyXG4gICAgYXdhaXQgdGhpcy5nZXRPcmRlckxpbmVzUGxhbm5lZChldmVudFswXSk7XHJcbiAgICBhd2FpdCB0aGlzLnBsYW5PcmRlckxpbmVzKGV2ZW50WzBdLCBldmVudFsxXSwgZXZlbnRbMl0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZVNldHRpbmdzUmVzZXQoKSB7XHJcbiAgICB0aGlzLnVwZGF0ZVBsYW5uaW5nVHJhbnNwb3J0RXZlbnQuZW1pdCgpO1xyXG4gICAgdGhpcy5zaG93U2V0dGluZ3NEaWFsb2cgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvcGVuU2V0dGluZ3NEaWFsb2codHJhbnNwb3J0RGF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRUcmFuc3BvcnREYXkgPSB0cmFuc3BvcnREYXk7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZFRyYW5zcG9ydERheSkge1xyXG4gICAgICB0aGlzLnNob3dTZXR0aW5nc0RpYWxvZyA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgaGFuZGxlQ2FsZW5kYXJQbGFuRXZlbnQoZGF0YToge1xyXG4gICAgY3VycmVudEhvdXI6IHN0cmluZyxcclxuICAgIGRhdGE6IHN0cmluZ1xyXG4gIH0sIHRyYW5zcG9ydFdlZWtEYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSwgd2VlazogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5W10pIHtcclxuICAgIGxldCBwbGFuT3JkZXI6IFBsYW5PcmRlcjtcclxuICAgIGlmIChkYXRhLmRhdGEgPT09ICdmYWxzZScgJiYgdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuY3VycmVudFRyYW5zSWQpIHtcclxuICAgICAgcGxhbk9yZGVyID0gYXdhaXQgdGhpcy5fdHJhbnNhY3Rpb25Db24uZ2V0UGxhbk9yZGVyKHRoaXMuX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlPy5jdXJyZW50VHJhbnNJZCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBwbGFuT3JkZXIgPSBhd2FpdCB0aGlzLl90cmFuc2FjdGlvbkNvbi5nZXRQbGFuT3JkZXIocGFyc2VJbnQoZGF0YS5kYXRhKSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRyYW5zcG9ydFdlZWtEYXkucGxhbm5lZE9yZGVycy5maW5kKChwbGFubmVkT3JkZXI6IFBsYW5PcmRlcikgPT4gcGxhbm5lZE9yZGVyLnRyYW5zSWQgPT09IHBsYW5PcmRlci50cmFuc0lkKSkge1xyXG4gICAgICBhd2FpdCB0aGlzLl9kaWFsb2cuc2hvd0Vycm9yKHRoaXMuX2RpY3Rpb25hcnkuZ2V0KCdPUkRFUl9IQVNfQUxSRUFEWV9CRUVOX1BMQU5ORUQnKSwgdHJ1ZSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAocGxhbk9yZGVyICYmIGRhdGEuY3VycmVudEhvdXIpIHtcclxuXHJcbiAgICAgIHBsYW5PcmRlci5zdGFydFRpbWUgPSB0aGlzLmNhbGN1bGF0ZVN0YXJ0VGltZSh0cmFuc3BvcnRXZWVrRGF5LCBkYXRhLmN1cnJlbnRIb3VyKTtcclxuICAgICAgcGxhbk9yZGVyLmVuZFRpbWUgPSB0aGlzLmNhbGN1bGF0ZUVuZFRpbWUocGxhbk9yZGVyLnN0YXJ0VGltZSwgZGF0YS5jdXJyZW50SG91ciwgcGxhbk9yZGVyKTtcclxuXHJcbiAgICAgIGF3YWl0IHRoaXMuZ2V0VHJhbnNwb3J0T3JkZXJzKHRyYW5zcG9ydFdlZWtEYXkpO1xyXG4gICAgICBhd2FpdCB0aGlzLmdldFNlcXVlbmNlT3JkZXJWYWx1ZShwbGFuT3JkZXIpO1xyXG4gICAgICBhd2FpdCB0aGlzLmdldE9yZGVyTGluZXNQbGFubmVkKHBsYW5PcmRlcik7XHJcbiAgICAgIGF3YWl0IHRoaXMucGxhbk9yZGVyTGluZXMocGxhbk9yZGVyLCB0cmFuc3BvcnRXZWVrRGF5LCB3ZWVrKTtcclxuICAgICAgaWYgKGRhdGEuZGF0YSA9PT0gJ2ZhbHNlJyAmJiB0aGlzLl90cmFuc2FjdGlvbi5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLnV1aWQpIHtcclxuICAgICAgICBhd2FpdCB0aGlzLl90cmFuc2FjdGlvbi5nZXRUcmFuc2FjdGlvbkJ5SWQodGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuY3VycmVudFRyYW5zSWQpO1xyXG4gICAgICAgIGF3YWl0IHRoaXMuX3RyYW5zYWN0aW9uLnNhdmVUcmFuc2FjdGlvbigpO1xyXG4gICAgICAgIGF3YWl0IHRoaXMuX3RyYW5zYWN0aW9uLmNoZWNrUmVmVHJhbnNhY3Rpb24oKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGNhbGN1bGF0ZVN0YXJ0VGltZSh0cmFuc3BvcnRXZWVrRGF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXksIGN1cnJlbnRIb3VyOiBzdHJpbmcpOiBEYXRlIHtcclxuICAgIGxldCBzdGFydERhdGU6IERhdGUgPSBuZXcgRGF0ZSh0cmFuc3BvcnRXZWVrRGF5LmRhdGUpO1xyXG4gICAgbGV0IHN0YXJ0VGltZTogbnVtYmVyID0gcGFyc2VJbnQoY3VycmVudEhvdXIuc3BsaXQoJzonKVswXSk7XHJcbiAgICBzdGFydERhdGUuc2V0SG91cnMoc3RhcnRUaW1lKTtcclxuICAgIHN0YXJ0RGF0ZS5zZXRNaW51dGVzKHBhcnNlSW50KGN1cnJlbnRIb3VyLnNwbGl0KCc6JylbMV0pID4gMCA/IHBhcnNlSW50KGN1cnJlbnRIb3VyLnNwbGl0KCc6JylbMV0pIDogMCk7XHJcbiAgICBzdGFydERhdGUuc2V0U2Vjb25kcygwKTtcclxuXHJcbiAgICByZXR1cm4gc3RhcnREYXRlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNhbGN1bGF0ZUVuZFRpbWUoc3RhcnREYXRlOiBEYXRlLCBjdXJyZW50SG91cjogc3RyaW5nLCBwbGFuT3JkZXI6IFBsYW5PcmRlcik6IERhdGUge1xyXG4gICAgbGV0IGVuZFRpbWU6IERhdGUgPSBuZXcgRGF0ZShzdGFydERhdGUpO1xyXG5cclxuICAgIGxldCBzcGxpdEhvdXIgPSBjdXJyZW50SG91ci5zcGxpdCgnOicpO1xyXG4gICAgY29uc3QgbmV3RW5kTWludXRlcyA9IHNwbGl0SG91clsxXSA9PT0gJzAwJyA/IDMwIDogMDtcclxuICAgIGNvbnN0IG5ld0VuZEhvdXIgPSBzcGxpdEhvdXJbMV0gPT09ICczMCcgPyAocGFyc2VJbnQoc3BsaXRIb3VyWzBdKSArIDEpIDogcGFyc2VJbnQoc3BsaXRIb3VyWzBdKTtcclxuICAgIGVuZFRpbWUuc2V0SG91cnMobmV3RW5kSG91cik7XHJcbiAgICBlbmRUaW1lLnNldE1pbnV0ZXMobmV3RW5kTWludXRlcyk7XHJcbiAgICBsZXQgYXNzZW1ibHlUaW1lID0gdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UudG90YWxBc3NlbWJseVRpbWUocGxhbk9yZGVyKSAqIDYwICogMTAwMDtcclxuICAgIGVuZFRpbWUuc2V0VGltZShlbmRUaW1lLmdldFRpbWUoKSArIGFzc2VtYmx5VGltZSk7XHJcblxyXG4gICAgcmV0dXJuIGVuZFRpbWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb3BlblBsYW5uaW5nUG9wdXAocGxhbk9yZGVyOiBQbGFuT3JkZXIsIHRyYW5zcG9ydERheTogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5LCB3ZWVrOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXSkge1xyXG4gICAgdGhpcy5zaG93Tm90ZURpYWxvZyA9IHRydWU7XHJcbiAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgIGlmICh0aGlzLnBsYW5uaW5nUG9wdXBSZWYpIHtcclxuICAgICAgdGhpcy5wbGFubmluZ1BvcHVwUmVmLnBsYW5PcmRlciA9IHBsYW5PcmRlcjtcclxuICAgICAgdGhpcy5wbGFubmluZ1BvcHVwUmVmLnRyYW5zcG9ydERheSA9IHRyYW5zcG9ydERheTtcclxuICAgICAgdGhpcy5wbGFubmluZ1BvcHVwUmVmLndlZWsgPSB3ZWVrO1xyXG4gICAgICB0aGlzLnBsYW5uaW5nUG9wdXBSZWYudHJhbnNhY3Rpb24gPSB0aGlzLl90cmFuc2FjdGlvbi5jdXJyZW50VHJhbnNhY3Rpb247XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlQXZhaWxhYmlsaXR5Q2hlY2tlZCh2YWx1ZTogeyB0cmFuc3BvcnREYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSwgYXZhaWxhYmxlOiBib29sZWFuIH0pIHtcclxuICAgIHRoaXMuYXZhaWxhYmlsaXR5LnB1c2godmFsdWUpO1xyXG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNoZWNrQXZhaWxhYmxlKHRyYW5zcG9ydERheTogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5KSB7XHJcbiAgICBsZXQgdHJhbnNwb3J0ID0gdGhpcy5hdmFpbGFiaWxpdHkuZmluZCh0cmFuc3BvcnRPYmplY3QgPT4gdHJhbnNwb3J0T2JqZWN0LnRyYW5zcG9ydERheSA9PT0gdHJhbnNwb3J0RGF5KTtcclxuICAgIHJldHVybiB0cmFuc3BvcnQgJiYgIXRyYW5zcG9ydC5hdmFpbGFibGU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlVGltZUNoYW5nZUV2ZW50KHRyYW5zcG9ydERheTogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5LCB3ZWVrOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXSwgb2JqOiBQbGFuT3JkZXIpIHtcclxuICAgIGxldCBvbGRXZWVrOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXSA9IHdlZWs7XHJcbiAgICBsZXQgb3JkZXI6IFBsYW5PcmRlciA9IHRyYW5zcG9ydERheS5wbGFubmVkT3JkZXJzLmZpbmQocGxhbk9yZGVyID0+IHBsYW5PcmRlci50cmFuc0lkID09PSBvYmoudHJhbnNJZCk7XHJcbiAgICBvcmRlci5zdGFydFRpbWUgPSBuZXcgRGF0ZShvYmpbJ3N0YXJ0VGltZSddKTtcclxuICAgIG9yZGVyLmVuZFRpbWUgPSBuZXcgRGF0ZShvYmpbJ2VuZFRpbWUnXSk7XHJcblxyXG4gICAgdGhpcy51cGRhdGVQbGFubmluZ1RyYW5zcG9ydEV2ZW50LmVtaXQoe29sZFdlZWs6IG9sZFdlZWssIHdlZWs6IHdlZWssIGFjdGlvbjogdGhpcy5wbGFubmluZ0FjdGlvbnMuUGxhbk9yZGVyfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgaGFuZGxlTW92ZUV2ZW50KG1vdmVEYXRhOiB7XHJcbiAgICBob3VyOiBzdHJpbmcsXHJcbiAgICBzY2hlZHVsZWRPYmplY3Q6IE9iamVjdFxyXG4gIH0sIHRyYW5zcG9ydDogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5LCB3ZWVrOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXSwgd2Vla0FycjogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5W11bXSkge1xyXG4gICAgbGV0IHBsYW5PcmRlcjogUGxhbk9yZGVyID0gYXdhaXQgdGhpcy5fdHJhbnNhY3Rpb25Db24uZ2V0UGxhbk9yZGVyKG1vdmVEYXRhLnNjaGVkdWxlZE9iamVjdFsnb2JqJ11bJ2lkJ10pO1xyXG4gICAgLy9yZW1vdmUgZnJvbSBvbGQgdHJhbnNwb3J0XHJcbiAgICB3ZWVrQXJyLmZvckVhY2goKChyb3c6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdKSA9PiB7XHJcbiAgICAgIHJvdy5mb3JFYWNoKCh3ZWVrRGF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXkpID0+IHtcclxuICAgICAgICBpZiAod2Vla0RheT8ucGxhbm5lZE9yZGVycz8uZmluZChvcmRlciA9PiBvcmRlci50cmFuc0lkID09PSBwbGFuT3JkZXIudHJhbnNJZCkpIHtcclxuICAgICAgICAgIHdlZWtEYXkucGxhbm5lZE9yZGVycy5zcGxpY2Uod2Vla0RheS5wbGFubmVkT3JkZXJzLmluZGV4T2YocGxhbk9yZGVyKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pKTtcclxuXHJcbiAgICBpZiAocGxhbk9yZGVyKSB7XHJcbiAgICAgIC8vcmVzdG9yZSBvcmRlclxyXG4gICAgICBhd2FpdCB0aGlzLl90cmFuc2FjdGlvbkNvbi5yZXN0b3JlRGVsaXZlcnlTZXR0aW5ncyhbcGxhbk9yZGVyXSk7XHJcblxyXG4gICAgICAvL3NldCBuZXcgZGF0ZSBmb3Igb3JkZXIgYW5kIHBsYW4gaXQgb24gbmV3IHRyYW5zcG9ydFxyXG4gICAgICBsZXQgbmV3RGF0ZTogRGF0ZSA9IG5ldyBEYXRlKHRyYW5zcG9ydC5kYXRlKTtcclxuICAgICAgbGV0IHNwbGl0VGltZTogc3RyaW5nW10gPSBtb3ZlRGF0YS5ob3VyLnNwbGl0KCc6Jyk7XHJcbiAgICAgIG5ld0RhdGUuc2V0SG91cnMocGFyc2VJbnQoc3BsaXRUaW1lWzBdKSk7XHJcbiAgICAgIG5ld0RhdGUuc2V0TWludXRlcyhwYXJzZUludChzcGxpdFRpbWVbMV0pKTtcclxuICAgICAgbmV3RGF0ZS5zZXRTZWNvbmRzKDApO1xyXG4gICAgICBwbGFuT3JkZXIuc3RhcnRUaW1lID0gbmV3RGF0ZTtcclxuICAgICAgbGV0IGVuZERhdGUgPSBuZXcgRGF0ZShwbGFuT3JkZXIuc3RhcnRUaW1lKTtcclxuICAgICAgcGxhbk9yZGVyLmVuZFRpbWUgPSB0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5hZGRNaW51dGVzKGVuZERhdGUsIG1vdmVEYXRhLnNjaGVkdWxlZE9iamVjdFsnb2JqJ11bJ2hlaWdodCddKTtcclxuICAgICAgYXdhaXQgdGhpcy5nZXRUcmFuc3BvcnRPcmRlcnModHJhbnNwb3J0KTtcclxuICAgICAgYXdhaXQgdGhpcy5nZXRTZXF1ZW5jZU9yZGVyVmFsdWUocGxhbk9yZGVyKTtcclxuICAgICAgYXdhaXQgdGhpcy5nZXRPcmRlckxpbmVzUGxhbm5lZChwbGFuT3JkZXIpO1xyXG4gICAgICBhd2FpdCB0aGlzLnBsYW5PcmRlckxpbmVzKHBsYW5PcmRlciwgdHJhbnNwb3J0LCB3ZWVrKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBoYW5kbGVNb3ZlTm9ybWFsRXZlbnQodHJhbnNJZDogc3RyaW5nLCB0cmFuc3BvcnQ6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSwgd2VlazogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5W10sIHdlZWtBcnI6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdW10pIHtcclxuICAgIGxldCBwbGFuT3JkZXI6IFBsYW5PcmRlciA9IGF3YWl0IHRoaXMuX3RyYW5zYWN0aW9uQ29uLmdldFBsYW5PcmRlcihwYXJzZUludCh0cmFuc0lkKSk7XHJcbiAgICAvL3JlbW92ZSBmcm9tIG9sZCB0cmFuc3BvcnRcclxuICAgIHdlZWtBcnIuZm9yRWFjaCgoKHJvdzogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5W10pID0+IHtcclxuICAgICAgcm93LmZvckVhY2goKHdlZWtEYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSkgPT4ge1xyXG4gICAgICAgIGlmICh3ZWVrRGF5Py5wbGFubmVkT3JkZXJzPy5maW5kKG9yZGVyID0+IG9yZGVyLnRyYW5zSWQgPT09IHBsYW5PcmRlci50cmFuc0lkKSkge1xyXG4gICAgICAgICAgd2Vla0RheS5wbGFubmVkT3JkZXJzLnNwbGljZSh3ZWVrRGF5LnBsYW5uZWRPcmRlcnMuaW5kZXhPZihwbGFuT3JkZXIpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSkpO1xyXG5cclxuICAgIGlmIChwbGFuT3JkZXIpIHtcclxuICAgICAgLy9yZXN0b3JlIG9yZGVyXHJcbiAgICAgIGF3YWl0IHRoaXMuX3RyYW5zYWN0aW9uQ29uLnJlc3RvcmVEZWxpdmVyeVNldHRpbmdzKFtwbGFuT3JkZXJdKTtcclxuICAgICAgYXdhaXQgdGhpcy5nZXRUcmFuc3BvcnRPcmRlcnModHJhbnNwb3J0KTtcclxuICAgICAgYXdhaXQgdGhpcy5nZXRTZXF1ZW5jZU9yZGVyVmFsdWUocGxhbk9yZGVyKTtcclxuICAgICAgYXdhaXQgdGhpcy5nZXRPcmRlckxpbmVzUGxhbm5lZChwbGFuT3JkZXIpO1xyXG4gICAgICBhd2FpdCB0aGlzLnBsYW5PcmRlckxpbmVzKHBsYW5PcmRlciwgdHJhbnNwb3J0LCB3ZWVrKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVFZGl0UGxhbm5lZE9yZGVyKHBsYW5PcmRlcjogUGxhbk9yZGVyLCB0cmFuc3BvcnREYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSwgd2VlazogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5W10pIHtcclxuICAgIHRoaXMub3BlblBsYW5uaW5nUG9wdXAocGxhbk9yZGVyLCB0cmFuc3BvcnREYXksIHdlZWspO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZU1vdmVPcmRlclVwKHBsYW5PcmRlcjogUGxhbk9yZGVyLCBwbGFubmluZ1RyYW5zcG9ydFdlZWs6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdLCB0cmFuc3BvcnREYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSkge1xyXG4gICAgY29uc3Qgb2xkV2VlazogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5W10gPSBbXTtcclxuICAgIHBsYW5uaW5nVHJhbnNwb3J0V2Vlay5mb3JFYWNoKHZhbCA9PiBvbGRXZWVrLnB1c2goT2JqZWN0LmFzc2lnbih7fSwgdmFsKSkpO1xyXG4gICAgdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UucmVvcmRlckl0ZW0odHJhbnNwb3J0RGF5LnBsYW5uZWRPcmRlcnMsIHBsYW5PcmRlciwgJ3VwJyk7XHJcbiAgICB0aGlzLnVwZGF0ZVBsYW5uaW5nVHJhbnNwb3J0RXZlbnQuZW1pdCh7b2xkV2Vlazogb2xkV2Vlaywgd2VlazogcGxhbm5pbmdUcmFuc3BvcnRXZWVrLCBhY3Rpb246IERlbGl2ZXJ5UGxhbm5pbmdVcGRhdGVBY3Rpb25zLlBsYW5PcmRlcn0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZU1vdmVPcmRlckRvd24ocGxhbk9yZGVyOiBQbGFuT3JkZXIsIHBsYW5uaW5nVHJhbnNwb3J0V2VlazogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5W10sIHRyYW5zcG9ydERheTogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5KSB7XHJcbiAgICBjb25zdCBvbGRXZWVrOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXSA9IFtdO1xyXG4gICAgcGxhbm5pbmdUcmFuc3BvcnRXZWVrLmZvckVhY2godmFsID0+IG9sZFdlZWsucHVzaChPYmplY3QuYXNzaWduKHt9LCB2YWwpKSk7XHJcbiAgICB0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5yZW9yZGVySXRlbSh0cmFuc3BvcnREYXkucGxhbm5lZE9yZGVycywgcGxhbk9yZGVyLCAnZG93bicpO1xyXG4gICAgdGhpcy51cGRhdGVQbGFubmluZ1RyYW5zcG9ydEV2ZW50LmVtaXQoe29sZFdlZWs6IG9sZFdlZWssIHdlZWs6IHBsYW5uaW5nVHJhbnNwb3J0V2VlaywgYWN0aW9uOiBEZWxpdmVyeVBsYW5uaW5nVXBkYXRlQWN0aW9ucy5QbGFuT3JkZXJ9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZWxlY3RUcmFuc3BvcnREYXkodHJhbnNwb3J0RGF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXksIHRyYW5zcG9ydERheXM6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdKSB7XHJcbiAgICBsZXQgaW5kZXggPSB0cmFuc3BvcnREYXlzLmluZGV4T2YodHJhbnNwb3J0RGF5KTtcclxuICAgIGxldCB0aWxlID0gdGhpcy50aWxlc1F1ZXJ5TGlzdC5nZXQoaW5kZXgpO1xyXG5cclxuICAgIGlmICghdHJhbnNwb3J0RGF5LnNlbGVjdGVkKSB7XHJcbiAgICAgIGlmICghdGlsZS5leHBhbmRlZCkge1xyXG4gICAgICAgIHRpbGUuZXhwYW5kZWQgPSB0cnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodHJhbnNwb3J0RGF5cy5maW5kKHRyYW5zcG9ydERheUxpc3RJdGVtID0+IHRyYW5zcG9ydERheUxpc3RJdGVtLnNlbGVjdGVkKSAmJiAhdHJhbnNwb3J0RGF5LnNlbGVjdGVkKSB7XHJcbiAgICAgICAgLy9kZXNlbGVjdCBvdGhlcnMgaWYgbm90IHNlbGVjdGVkXHJcbiAgICAgICAgdHJhbnNwb3J0RGF5cy5maWx0ZXIodHJhbnNwb3J0RGF5TGlzdEl0ZW0gPT4gdHJhbnNwb3J0RGF5TGlzdEl0ZW0uc2VsZWN0ZWQpLmZvckVhY2goc2VsZWN0ZWRUcmFuc3BvcnRMaXN0SXRlbSA9PiB7XHJcbiAgICAgICAgICBzZWxlY3RlZFRyYW5zcG9ydExpc3RJdGVtLnNlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0cmFuc3BvcnREYXkuc2VsZWN0ZWQgPSAhdHJhbnNwb3J0RGF5LnNlbGVjdGVkO1xyXG5cclxuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgICBpZiAodHJhbnNwb3J0RGF5LnNlbGVjdGVkKSB7XHJcbiAgICAgIC8vZmlyZSBldmVudCBzZWxlY3RlZCBvdXR3YXJkc1xyXG4gICAgICB0aGlzLnRyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlLnNlbGVjdGVkVHJhbnNwb3J0RGF5Lm5leHQoIHRyYW5zcG9ydERheSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
602
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJhbnNhY3Rpb24vc3JjL2xpYi9jb21wb25lbnQvZGVsaXZlcnktcGxhbm5pbmctbWFpbi9jb21wb25lbnQvZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXcvZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQW1CLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBYSxTQUFTLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRS9NLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUN4RCxPQUFPLEVBQUMsNkJBQTZCLEVBQUMsTUFBTSx3REFBd0QsQ0FBQztBQUNyRyxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxvREFBb0QsQ0FBQztBQUM3RixPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSw4REFBOEQsQ0FBQztBQUNyRyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUMzRSxPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSxtREFBbUQsQ0FBQztBQUc5RixPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxzRUFBc0UsQ0FBQztBQUMvRyxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxnRUFBZ0UsQ0FBQztBQUNwRyxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSxnREFBZ0QsQ0FBQztBQUN4RixPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSxxRUFBcUUsQ0FBQztBQUU3RyxPQUFPLEVBQUMscUNBQXFDLEVBQUMsTUFBTSx1RkFB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QVEsR0FBRyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUM7UUFFL0MsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUVyQyxJQUFJLFlBQVksQ0FBQyxRQUFRLEVBQUU7WUFDekIsOEJBQThCO1lBQzlCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUUsWUFBWSxDQUFDLENBQUM7U0FDdkU7YUFBTTtZQUNMLElBQUksQ0FBQyx1QkFBdUIsQ0FBQywrQkFBK0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNyRTtJQUNILENBQUM7OztZQXJuQkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSwrQkFBK0I7Z0JBQ3pDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxRFQ7Z0JBQ0QsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7YUFDdEM7OztZQS9FTyx1QkFBdUI7WUFDdkIsa0JBQWtCO1lBQ2xCLDJCQUEyQjtZQUszQix3QkFBd0I7WUFaTixpQkFBaUI7WUFxQm5DLGlCQUFpQjtZQUxqQixnQkFBZ0I7WUFTaEIsdUJBQXVCOzs7b0JBOEU1QixZQUFZLFNBQUMscUNBQXFDOzJCQUtsRCxTQUFTLFNBQUMsY0FBYzt5QkFDeEIsU0FBUyxTQUFDLFlBQVk7cUNBSXRCLFNBQVMsU0FBQyxlQUFlOzJCQUt6QixLQUFLOzBCQUtMLEtBQUs7OEJBR0wsS0FBSztzQ0FHTCxLQUFLOzJDQUdMLE1BQU07MENBV04sTUFBTTt3QkFxRE4sV0FBVyxTQUFDLHFDQUFxQzt1QkFNakQsWUFBWSxTQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3Q2hlY2tlZCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgUXVlcnlMaXN0LCBWaWV3Q2hpbGQsIFZpZXdDaGlsZHJlbiwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHtDYWxlbmRhclZpZXd9IGZyb20gJ0Bjb2xpam5pdC9zaGFyZWRjb21wb25lbnRzJztcclxuaW1wb3J0IHtEZWxpdmVyeVBsYW5uaW5nQ2FsZW5kYXJNb2Rlc30gZnJvbSAnLi4vLi4vLi4vLi4vZW51bS9kZWxpdmVyeS1wbGFubmluZy1jYWxlbmRhci1tb2Rlcy5lbnVtJztcclxuaW1wb3J0IHtEZWxpdmVyeVBsYW5uaW5nVmlld01vZGVzfSBmcm9tICcuLi8uLi8uLi8uLi9lbnVtL2RlbGl2ZXJ5LXBsYW5uaW5nLXZpZXctbW9kZXMuZW51bSc7XHJcbmltcG9ydCB7RGVsaXZlcnlQbGFubmluZ1NlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2RlbGl2ZXJ5LXBsYW5uaW5nL3NlcnZpY2UvZGVsaXZlcnktcGxhbm5pbmcuc2VydmljZSc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlL3RyYW5zYWN0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uQ29ubmVjdG9yU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZS90cmFuc2FjdGlvbi1jb25uZWN0b3Iuc2VydmljZSc7XHJcbmltcG9ydCB7UGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGxhbm5pbmctdHJhbnNwb3J0LXdlZWstZGF5LmJvJztcclxuaW1wb3J0IHtQbGFuT3JkZXJ9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wbGFuLW9yZGVyLmJvJztcclxuaW1wb3J0IHtHZXRUcmFuc3BvcnRPcmRlcnNSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZ2V0LXRyYW5zcG9ydC1vcmRlcnMtcmVxdWVzdC5ibyc7XHJcbmltcG9ydCB7UGxhbm5pbmdGaWx0ZXJPYmplY3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wbGFubmluZy1maWx0ZXItb2JqZWN0LmJvJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkRpYWxvZ1NlcnZpY2V9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24tZGlhbG9nLnNlcnZpY2UnO1xyXG5pbXBvcnQge09yZGVyTGluZXNQbGFubmVkUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL29yZGVyLWxpbmVzLXBsYW5uZWQtcmVxdWVzdC5ibyc7XHJcbmltcG9ydCB7RGVsaXZlcnlQbGFubmluZ092ZXJ2aWV3UG9wdXBDb21wb25lbnR9IGZyb20gJy4vY29tcG9uZW50L2RlbGl2ZXJ5LXBsYW5uaW5nLW92ZXJ2aWV3LXBvcHVwL2RlbGl2ZXJ5LXBsYW5uaW5nLW92ZXJ2aWV3LXBvcHVwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7RGVsaXZlcnlQbGFubmluZ092ZXJ2aWV3VGlsZUNvbXBvbmVudH0gZnJvbSAnLi9jb21wb25lbnQvZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXctdGlsZS9kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldy10aWxlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7SWNvbkNhY2hlU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZS9pY29uLWNhY2hlLnNlcnZpY2UnO1xyXG5pbXBvcnQge0ljb259IGZyb20gJy4uLy4uLy4uLy4uL2VudW0vaWNvbi5lbnVtJztcclxuaW1wb3J0IHtEZWxpdmVyeVBsYW5uaW5nVGlsZU1vZGVzfSBmcm9tICcuLi8uLi8uLi8uLi9lbnVtL2RlbGl2ZXJ5LXBsYW5uaW5nLXRpbGUtbW9kZXMuZW51bSc7XHJcbmltcG9ydCB7RGVsaXZlcnlQbGFubmluZ1VwZGF0ZUFjdGlvbnN9IGZyb20gJy4uLy4uLy4uLy4uL2VudW0vZGVsaXZlcnktcGxhbm5pbmctdXBkYXRlLWFjdGlvbnMuZW51bSc7XHJcbmltcG9ydCB7UGxhbk9yZGVyTGluZX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BsYW4tb3JkZXItbGluZS5ibyc7XHJcbmltcG9ydCB7RGljdGlvbmFyeVNlcnZpY2V9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2UvZGljdGlvbmFyeS5zZXJ2aWNlJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkxpbmVJbmZvfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tbGluZS1pbmZvLmJvJztcclxuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge0ludGVybmFsUGFyYW19IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL2VudW0vaW50ZXJuYWwtcGFyYW0uZW51bSc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25FdmVudFNlcnZpY2V9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24tZXZlbnQuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NvLWRlbGl2ZXJ5LXBsYW5uaW5nLW92ZXJ2aWV3JyxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZGVsaXZlcnktcGxhbm5pbmctd3JhcHBlclwiPlxyXG4gICAgICAgICAgPGNvLWRlbGl2ZXJ5LXBsYW5uaW5nLW92ZXJ2aWV3LXBvcHVwICNwbGFubmluZ1BvcHVwICpuZ0lmPVwic2hvd05vdGVEaWFsb2dcIiAoY2xvc2VFdmVudCk9XCJzaG93Tm90ZURpYWxvZyA9IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25TdWNjZWVkZWRQbGFuQWN0aW9uKT1cImhhbmRsZVBvcHVwUGxhbkV2ZW50KCRldmVudClcIj48L2NvLWRlbGl2ZXJ5LXBsYW5uaW5nLW92ZXJ2aWV3LXBvcHVwPlxyXG4gICAgICAgICAgPGNvLWRlbGl2ZXJ5LXBsYW5uaW5nLW92ZXJ2aWV3LXRpbGUtc2V0dGluZ3MtcG9wdXAgKm5nSWY9XCJzaG93U2V0dGluZ3NEaWFsb2dcIiBbdHJhbnNwb3J0RGF5XT1cInNlbGVjdGVkVHJhbnNwb3J0RGF5XCJcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DYW5jZWxBY3Rpb24pPVwiaGFuZGxlU2V0dGluZ3NSZXNldCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbG9zZUV2ZW50KT1cInNob3dTZXR0aW5nc0RpYWxvZyA9IGZhbHNlXCI+PC9jby1kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldy10aWxlLXNldHRpbmdzLXBvcHVwPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRlbGl2ZXJ5LW92ZXJ2aWV3LXdyYXBwZXJcIiBbY2xhc3Muc2lkZWJhcl09XCJjdXJyZW50Vmlld01vZGUgPT09ICdEQVlTX0FST1VORCdcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGlsZS12aWV3LW1vZGVzIHJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICA8Y28taWNvbiAoY2xpY2spPVwiY3VycmVudFRpbGVNb2RlID0gdGlsZU1vZGVzLk5vcm1hbFwiIFtjbGFzcy5hY3RpdmVdPVwiY3VycmVudFRpbGVNb2RlID09PSB0aWxlTW9kZXMuTm9ybWFsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29ucy5DYWxlbmRhckxpbmVzUmVndWxhcilcIj48L2NvLWljb24+XHJcbiAgICAgICAgICAgICAgICAgIDxjby1pY29uIChjbGljayk9XCJjdXJyZW50VGlsZU1vZGUgPSB0aWxlTW9kZXMuQ2FsZW5kYXJcIiBbY2xhc3MuYWN0aXZlXT1cImN1cnJlbnRUaWxlTW9kZSA9PT0gdGlsZU1vZGVzLkNhbGVuZGFyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29ucy5DYWxlbmRhckRheVJlZ3VsYXIpXCI+PC9jby1pY29uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwbGFubmluZy1jb21wb25lbnQtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICA8Y28tZGF0ZS1wbGFubmluZyBbdmlld109XCJjdXJyZW50Vmlld01vZGVcIiBbc2VsZWN0ZWREYXRlXT1cImN1cnJlbnREYXRlKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmFuZ2VDaGFuZ2UpPVwiaGFuZGxlRGF0ZVJhbmdlQ2hhbmdlKCRldmVudClcIj48L2NvLWRhdGUtcGxhbm5pbmc+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgZGF0ZS1wbGFubmluZ1wiIFtjbGFzcy5lbXBsb3llZS12aWV3XT1cImVtcGxveWVlVmlld1wiICNyb3dDb250YWluZXIgKm5nRm9yPVwibGV0IHRyYW5zcG9ydFdlZWtSb3cgb2YgcGxhblRyYW5zcG9ydFdlZWtBcnJcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbHVtblwiICNjb2x1bW5FbGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHRyYW5zUG9ydERheSBvZiBmaWx0ZXJXZWVrQXJyYXkodHJhbnNwb3J0V2Vla1Jvdyk7IGluZGV4IGFzIGlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxjby1kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldy10aWxlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RUcmFuc3BvcnREYXkodHJhbnNQb3J0RGF5LCBmaWx0ZXJXZWVrQXJyYXkodHJhbnNwb3J0V2Vla1JvdykpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIiF0cmFuc1BvcnREYXkuYXZhaWxhYmxlT25EYXRlIHx8IHRyYW5zUG9ydERheS5tYXhNaW51dGVzID09PSAwIHx8IGNoZWNrQXZhaWxhYmxlKHRyYW5zUG9ydERheSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXRyYW5zUG9ydERheS5hdmFpbGFibGVPbkRhdGUgfHwgdHJhbnNQb3J0RGF5Lm1heE1pbnV0ZXMgPT09IDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZHJhZ292ZXIpPVwiYWxsb3dEcm9wKCRldmVudCwgdHJhbnNQb3J0RGF5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkcm9wKT1cImRyb3BwZWQoJGV2ZW50LCB0cmFuc3BvcnRXZWVrUm93LCB0cmFuc1BvcnREYXksIGZpbHRlcldlZWtBcnJheSh0cmFuc3BvcnRXZWVrUm93KSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZHJhZ2VuZCk9XCJkcmFnRW5kKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdHJhbnNwb3J0RGF5XT1cInRyYW5zUG9ydERheVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWxldGVPcmRlckV2ZW50KT1cImhhbmRsZURlbGV0ZU9yZGVyKCRldmVudCwgdHJhbnNwb3J0V2Vla1JvdylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGltZUNoYW5nZUV2ZW50KT1cImhhbmRsZVRpbWVDaGFuZ2VFdmVudCh0cmFuc1BvcnREYXksIHRyYW5zcG9ydFdlZWtSb3csJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvcGVuU2V0dGluZ3NEaWFsb2dFdmVudCk9XCJvcGVuU2V0dGluZ3NEaWFsb2coJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjYWxlbmRhclBsYW5FdmVudCk9XCJoYW5kbGVDYWxlbmRhclBsYW5FdmVudCgkZXZlbnQsIHRyYW5zUG9ydERheSwgdHJhbnNwb3J0V2Vla1JvdylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVsZXRlT3JkZXJMaW5lRXZlbnQpPVwiaGFuZGxlRGVsZXRlTGluZSgkZXZlbnQsIHRyYW5zUG9ydERheSwgdHJhbnNwb3J0V2Vla1JvdylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZWRpdE9yZGVyRXZlbnQpPVwiaGFuZGxlRWRpdFBsYW5uZWRPcmRlcigkZXZlbnQsIHRyYW5zUG9ydERheSwgdHJhbnNwb3J0V2Vla1JvdylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW92ZUV2ZW50KT1cImhhbmRsZU1vdmVFdmVudCgkZXZlbnQsdHJhbnNQb3J0RGF5LCB0cmFuc3BvcnRXZWVrUm93LCBwbGFuVHJhbnNwb3J0V2Vla0FycilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYXZhaWxhYmlsaXR5Q2hlY2tlZCk9XCJoYW5kbGVBdmFpbGFiaWxpdHlDaGVja2VkKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW92ZU9yZGVyVXBFdmVudCk9XCJoYW5kbGVNb3ZlT3JkZXJVcCgkZXZlbnQsIHRyYW5zcG9ydFdlZWtSb3csIHRyYW5zUG9ydERheSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW92ZU9yZGVyRG93bkV2ZW50KT1cImhhbmRsZU1vdmVPcmRlckRvd24oJGV2ZW50LCB0cmFuc3BvcnRXZWVrUm93LCB0cmFuc1BvcnREYXkpXCJcclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPjwvY28tZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXctdGlsZT5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPC9kaXY+XHJcblxyXG5cclxuICBgLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIERlbGl2ZXJ5UGxhbm5pbmdPdmVydmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0NoZWNrZWQsIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBwdWJsaWMgcmVhZG9ubHkgaWNvbnM6IHR5cGVvZiBJY29uID0gSWNvbjtcclxuICBwdWJsaWMgcmVhZG9ubHkgcGxhbm5pbmdBY3Rpb25zOiB0eXBlb2YgRGVsaXZlcnlQbGFubmluZ1VwZGF0ZUFjdGlvbnMgPSBEZWxpdmVyeVBsYW5uaW5nVXBkYXRlQWN0aW9ucztcclxuICBwdWJsaWMgcmVhZG9ubHkgdGlsZU1vZGVzOiB0eXBlb2YgRGVsaXZlcnlQbGFubmluZ1RpbGVNb2RlcyA9IERlbGl2ZXJ5UGxhbm5pbmdUaWxlTW9kZXM7XHJcbiAgcHVibGljIGRlbGl2ZXJ5UGxhbm5pbmdWaWV3TW9kZXM6IHR5cGVvZiBEZWxpdmVyeVBsYW5uaW5nVmlld01vZGVzID0gRGVsaXZlcnlQbGFubmluZ1ZpZXdNb2RlcztcclxuXHJcbiAgcHVibGljIGF2YWlsYWJpbGl0eTogeyB0cmFuc3BvcnREYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSwgYXZhaWxhYmxlOiBib29sZWFuIH1bXSA9IFtdO1xyXG5cclxuICBwdWJsaWMgcGxhbm5pbmdQb3B1cFJlZjogRGVsaXZlcnlQbGFubmluZ092ZXJ2aWV3UG9wdXBDb21wb25lbnQ7XHJcblxyXG4gIHB1YmxpYyBhdmFpbGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgc2hvd05vdGVEaWFsb2c6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgc2hvd1NldHRpbmdzRGlhbG9nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHRpbGVzUXVlcnlMaXN0OiBRdWVyeUxpc3Q8RGVsaXZlcnlQbGFubmluZ092ZXJ2aWV3VGlsZUNvbXBvbmVudD47XHJcbiAgcHVibGljIHNlbGVjdGVkVHJhbnNwb3J0RGF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXk7XHJcblxyXG4gIHByaXZhdGUgX3N1YnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gIEBWaWV3Q2hpbGRyZW4oRGVsaXZlcnlQbGFubmluZ092ZXJ2aWV3VGlsZUNvbXBvbmVudClcclxuICBwdWJsaWMgc2V0IHRpbGVzKHRpbGVzOiBRdWVyeUxpc3Q8RGVsaXZlcnlQbGFubmluZ092ZXJ2aWV3VGlsZUNvbXBvbmVudD4pIHtcclxuICAgIHRoaXMudGlsZXNRdWVyeUxpc3QgPSB0aWxlcztcclxuICB9O1xyXG5cclxuICBAVmlld0NoaWxkKCdyb3dDb250YWluZXInKSByb3dDb250YWluZXI6IEhUTUxEaXZFbGVtZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ2NvbHVtbkVsZW0nKSBjb2x1bW5FbGVtOiBIVE1MRGl2RWxlbWVudDtcclxuXHJcbiAgcHVibGljIGNvbHVtbk51bSA9IDM7IC8vaW5pdGlhbCBjb3VudFxyXG5cclxuICBAVmlld0NoaWxkKCdwbGFubmluZ1BvcHVwJylcclxuICBwdWJsaWMgc2V0IHBsYW5uaW5nUG9wdXBDb21wb25lbnQodmFsdWU6IERlbGl2ZXJ5UGxhbm5pbmdPdmVydmlld1BvcHVwQ29tcG9uZW50KSB7XHJcbiAgICB0aGlzLnBsYW5uaW5nUG9wdXBSZWYgPSB2YWx1ZTtcclxuICB9O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBnZXQgZW1wbG95ZWVWaWV3KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLmVtcGxveWVlVmlldztcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGN1cnJlbnRNb2RlOiBEZWxpdmVyeVBsYW5uaW5nQ2FsZW5kYXJNb2RlcyA9IERlbGl2ZXJ5UGxhbm5pbmdDYWxlbmRhck1vZGVzLldlZWs7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGN1cnJlbnRWaWV3TW9kZTogQ2FsZW5kYXJWaWV3ID0gQ2FsZW5kYXJWaWV3LldlZWtWaWV3O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBjdXJyZW50UGxhbm5pbmdWaWV3TW9kZTogRGVsaXZlcnlQbGFubmluZ1ZpZXdNb2RlcyA9IHRoaXMuZGVsaXZlcnlQbGFubmluZ1ZpZXdNb2Rlcy5GdWxsc2NyZWVuO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgdXBkYXRlUGxhbm5pbmdUcmFuc3BvcnRFdmVudDogRXZlbnRFbWl0dGVyPHtcclxuICAgIG9sZFdlZWs6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdLFxyXG4gICAgd2VlazogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5W10sXHJcbiAgICBhY3Rpb246IERlbGl2ZXJ5UGxhbm5pbmdVcGRhdGVBY3Rpb25zXHJcbiAgfT4gPSBuZXcgRXZlbnRFbWl0dGVyPHtcclxuICAgIG9sZFdlZWs6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdLFxyXG4gICAgd2VlazogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5W10sXHJcbiAgICBhY3Rpb246IERlbGl2ZXJ5UGxhbm5pbmdVcGRhdGVBY3Rpb25zXHJcbiAgfT4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHJlc2V0UGxhbm5pbmdUcmFuc3BvcnRFdmVudDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuXHJcbiAgcHVibGljIGdldCBwbGFuVHJhbnNwb3J0V2Vla0FycigpIHtcclxuICAgIHJldHVybiB0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5wbGFuVHJhbnNwb3J0V2Vla0FycjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgY3VycmVudFRpbGVNb2RlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLmN1cnJlbnRUaWxlTW9kZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXQgY3VycmVudFRpbGVNb2RlKHRpbGVNb2RlOiBEZWxpdmVyeVBsYW5uaW5nVGlsZU1vZGVzKSB7XHJcbiAgICB0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5jdXJyZW50VGlsZU1vZGUgPSB0aWxlTW9kZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjdXJyZW50RGF0ZSgpOiBEYXRlIHtcclxuICAgIHJldHVybiB0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5jdXJyZW50U3RhcnREYXRlO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfZGVsaXZlcnlQbGFubmluZ1NlcnZpY2U6IERlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfdHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgX3RyYW5zYWN0aW9uQ29uOiBUcmFuc2FjdGlvbkNvbm5lY3RvclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9kaWFsb2c6IFRyYW5zYWN0aW9uRGlhbG9nU2VydmljZSxcclxuICAgIHByaXZhdGUgX2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgX2RpY3Rpb25hcnk6IERpY3Rpb25hcnlTZXJ2aWNlLFxyXG4gICAgcHVibGljIGljb25DYWNoZVNlcnZpY2U6IEljb25DYWNoZVNlcnZpY2UsXHJcbiAgICBwdWJsaWMgdHJhbnNhY3Rpb25FdmVudFNlcnZpY2U6IFRyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICAvL2NhbGN1bGF0aW5nIHVwb24gbG9hZGluZ1xyXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpIHtcclxuICAgIHRoaXMuc2V0Q29sTnVtKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3N1YnMucHVzaCh0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5hdmFpbGFiaWxpdHlSZXNldEV2ZW50LnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgIHRoaXMuYXZhaWxhYmlsaXR5ID0gW107XHJcbiAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9KSk7XHJcbiAgICB0aGlzLl90cmFuc2FjdGlvbi5nZXRJbnRlcm5hbFBhcmFtZXRlcihJbnRlcm5hbFBhcmFtLlBsYW5SYXlvbikudGhlbigocmVzdWx0OiBib29sZWFuKSA9PiB7XHJcbiAgICAgIHRoaXMuX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLnBsYW5SYXlvbiA9IHJlc3VsdDtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9zdWJzLmZvckVhY2goKHN1YjogU3Vic2NyaXB0aW9uKSA9PiB7XHJcbiAgICAgIHN1Yi51bnN1YnNjcmliZSgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmNvLWRlbGl2ZXJ5LXBsYW5uaW5nLW92ZXJ2aWV3JylcclxuICBwdWJsaWMgc2hvd0NsYXNzKCkge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICAvL3JlY2FsY3VsYXRpbmcgdXBvbiBicm93c2VyIHdpbmRvdyByZXNpemVcclxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcclxuICBvblJlc2l6ZShldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgdGhpcy5zZXRDb2xOdW0oKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBkcm9wcGVkKGV2OiBEcmFnRXZlbnQsIHdlZWs6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdLCB0cmFuc3BvcnREYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSwgdHJhbnNwb3J0RGF5czogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5W10pIHtcclxuICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBldi5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICB0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5kcmFnZ2luZyA9IGZhbHNlO1xyXG5cclxuICAgIGlmICh0aGlzLmNoZWNrQXZhaWxhYmxlKHRyYW5zcG9ydERheSkpIHtcclxuICAgICAgYXdhaXQgdGhpcy5fZGlhbG9nLnNob3dFcnJvcih0aGlzLl9kaWN0aW9uYXJ5LmdldCgnT1JERVJfQ0FOX05PVF9CRV9QTEFOTkVEX09OX1JFU09VUkNFJyksIHRydWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgZGF0YSA9IGV2LmRhdGFUcmFuc2Zlci5nZXREYXRhKCd0ZXh0Jyk7XHJcbiAgICAgIGxldCBpbmRleCA9IHRyYW5zcG9ydERheXMuaW5kZXhPZih0cmFuc3BvcnREYXkpO1xyXG4gICAgICBsZXQgdGlsZSA9IHRoaXMudGlsZXNRdWVyeUxpc3QuZ2V0KGluZGV4KTtcclxuICAgICAgaWYgKCF0aWxlLmV4cGFuZGVkKSB7XHJcbiAgICAgICAgdGlsZS5leHBhbmRlZCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGRhdGEgIT0gJ2xpbmVzJyAmJiAhdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UubW92aW5nVHJhbnNJZCkge1xyXG4gICAgICAgIGlmIChkYXRhICYmIHBhcnNlSW50KGRhdGEpKSB7XHJcbiAgICAgICAgICBjb25zdCBwbGFuT3JkZXIgPSBhd2FpdCB0aGlzLl90cmFuc2FjdGlvbkNvbi5nZXRQbGFuT3JkZXIocGFyc2VJbnQoZGF0YSkpO1xyXG4gICAgICAgICAgaWYgKHBsYW5PcmRlci5saW5lcy5sZW5ndGggPD0gMCkge1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLl9kaWFsb2cuc2hvd0Vycm9yKHRoaXMuX2RpY3Rpb25hcnkuZ2V0KCdOT19MSU5FU19UT19QTEFOJyksIHRydWUpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodHJhbnNwb3J0RGF5Py5wbGFubmVkT3JkZXJzPy5sZW5ndGggJiYgdHJhbnNwb3J0RGF5Py5wbGFubmVkT3JkZXJzPy5pbmRleE9mKHBsYW5PcmRlcikgIT09IC0xKSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX2RpYWxvZy5zaG93RXJyb3IodGhpcy5fZGljdGlvbmFyeS5nZXQoJ09SREVSX0hBU19BTFJFQURZX0JFRU5fUExBTk5FRCcpLCB0cnVlKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChwbGFuT3JkZXIpIHtcclxuICAgICAgICAgICAgICB0aGlzLm9wZW5QbGFubmluZ1BvcHVwKHBsYW5PcmRlciwgdHJhbnNwb3J0RGF5LCB3ZWVrKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmIChkYXRhICE9ICdsaW5lcycgJiYgdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UubW92aW5nVHJhbnNJZCkge1xyXG4gICAgICAgIC8vIGF3YWl0IHRoaXMuaGFuZGxlTW92ZU5vcm1hbEV2ZW50KGRhdGEsIHRyYW5zcG9ydERheSwgd2VlaywgdGhpcy5wbGFuVHJhbnNwb3J0V2Vla0Fycik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5wbGFuU2VsZWN0ZWRMaW5lcyh0cmFuc3BvcnREYXksIHdlZWspO1xyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhbGxvd0Ryb3AoZXY6IERyYWdFdmVudCwgdHJhbnNwb3J0RGF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXkpIHtcclxuICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBpZiAodGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuZHJhZ2dpbmcgJiYgdHJhbnNwb3J0RGF5Lm1heE1pbnV0ZXMgPiAwICYmIHRyYW5zcG9ydERheS5hdmFpbGFibGVPbkRhdGUpIHtcclxuICAgICAgcmV0dXJuIHRyYW5zcG9ydERheS5taW51dGVzICsgdHJhbnNwb3J0RGF5Lm1pbnV0ZXMgPCB0cmFuc3BvcnREYXkubWF4TWludXRlcyAmJiB0cmFuc3BvcnREYXkubWF4T3JkZXJBbW91bnQgPCB0cmFuc3BvcnREYXkub3JkZXJBbW91bnQgJiYgdHJhbnNwb3J0RGF5LmF2YWlsYWJsZU9uRGF0ZSAmJiB0aGlzLmNoZWNrQXZhaWxhYmxlKHRyYW5zcG9ydERheSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0Q29sTnVtKCkge1xyXG4gICAgaWYgKHRoaXMuX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLnZpZXdNb2RlID09PSBEZWxpdmVyeVBsYW5uaW5nVmlld01vZGVzLlNpZGViYXIpIHtcclxuICAgICAgdGhpcy5jb2x1bW5OdW0gPSAxO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jb2x1bW5OdW0gPSAzO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGRyYWdFbmQoZXY6IERyYWdFdmVudCkge1xyXG4gICAgZXYucHJldmVudERlZmF1bHQoKTtcclxuICAgIHRoaXMuX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLmRyYWdnaW5nID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZmlsdGVyV2Vla0FycmF5KHdlZWtBcnJheTogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5W10pIHtcclxuICAgIHJldHVybiB3ZWVrQXJyYXkuc2xpY2UoMCwgdGhpcy5jb2x1bW5OdW0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZURhdGVSYW5nZUNoYW5nZShuZXdEYXRlOiBEYXRlKSB7XHJcbiAgICB0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5jdXJyZW50U3RhcnREYXRlID0gbmV3RGF0ZTtcclxuICAgIHRoaXMucmVzZXRQbGFubmluZ1RyYW5zcG9ydEV2ZW50LmVtaXQoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBoYW5kbGVEZWxldGVPcmRlcihkZWxldGVSZXN1bHQ6IFtQbGFuT3JkZXIsIFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheV0sIHBsYW5uaW5nVHJhbnNwb3J0V2VlazogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5W10pIHtcclxuICAgIGNvbnN0IG9sZFdlZWs6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdID0gW107XHJcbiAgICBwbGFubmluZ1RyYW5zcG9ydFdlZWsuZm9yRWFjaCh2YWwgPT4gb2xkV2Vlay5wdXNoKE9iamVjdC5hc3NpZ24oe30sIHZhbCkpKTtcclxuICAgIGxldCBvcmRlciA9IGRlbGV0ZVJlc3VsdFswXTtcclxuICAgIGlmIChvcmRlcikge1xyXG4gICAgICBpZiAoZGVsZXRlUmVzdWx0WzBdLmxpbmVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5kZWxldGluZ09yZGVyID0gb3JkZXI7XHJcbiAgICAgICAgZGVsZXRlUmVzdWx0WzFdLnBsYW5uZWRPcmRlcnMuc3BsaWNlKGRlbGV0ZVJlc3VsdFsxXS5wbGFubmVkT3JkZXJzLmluZGV4T2Yob3JkZXIpLCAxKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZVBsYW5uaW5nVHJhbnNwb3J0RXZlbnQuZW1pdCh7XHJcbiAgICAgICAgICBvbGRXZWVrOiBvbGRXZWVrLFxyXG4gICAgICAgICAgd2VlazogcGxhbm5pbmdUcmFuc3BvcnRXZWVrLFxyXG4gICAgICAgICAgYWN0aW9uOiBEZWxpdmVyeVBsYW5uaW5nVXBkYXRlQWN0aW9ucy5EZWxldGVQbGFubmVkT3JkZXJcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBhd2FpdCB0aGlzLl9kaWFsb2cuc2hvd0Vycm9yKCdOT19MSU5FU19UT19ERUxFVEUnLCB0cnVlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZURlbGV0ZUxpbmUoZGVsZXRlUmVzdWx0OiB7XHJcbiAgICBvcmRlcjogUGxhbk9yZGVyLFxyXG4gICAgbGluZTogUGxhbk9yZGVyTGluZVxyXG4gIH0sIHdlZWtEYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSwgdHJhbnNwb3J0V2Vla1JvdzogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5W10pIHtcclxuICAgIGxldCBvbGRXZWVrID0gdHJhbnNwb3J0V2Vla1JvdztcclxuICAgIGxldCBvcmRlciA9IHdlZWtEYXkucGxhbm5lZE9yZGVycy5maW5kKG9yZGVyID0+IG9yZGVyLnRyYW5zSWQgPT09IGRlbGV0ZVJlc3VsdC5vcmRlci50cmFuc0lkKTtcclxuICAgIG9yZGVyLmxpbmVzID0gb3JkZXIubGluZXMuZmlsdGVyKGxpbmUgPT4gbGluZS5vcmlnaW5hbExpbmVOciAhPT0gZGVsZXRlUmVzdWx0LmxpbmUub3JpZ2luYWxMaW5lTnIpO1xyXG4gICAgaWYgKG9yZGVyLmxpbmVzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICB3ZWVrRGF5LnBsYW5uZWRPcmRlcnMuc3BsaWNlKHdlZWtEYXkucGxhbm5lZE9yZGVycy5pbmRleE9mKG9yZGVyKSwgMSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5kZWxldGluZ09yZGVyID0gb3JkZXI7XHJcbiAgICB0aGlzLnVwZGF0ZVBsYW5uaW5nVHJhbnNwb3J0RXZlbnQuZW1pdCh7XHJcbiAgICAgIG9sZFdlZWs6IG9sZFdlZWssXHJcbiAgICAgIHdlZWs6IHRyYW5zcG9ydFdlZWtSb3csXHJcbiAgICAgIGFjdGlvbjogRGVsaXZlcnlQbGFubmluZ1VwZGF0ZUFjdGlvbnMuRGVsZXRlUGxhbm5lZExpbmVzXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRPcmRlckxpbmVzUGxhbm5lZChvcmRlcjogUGxhbk9yZGVyKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBsZXQgcmVxdWVzdDogT3JkZXJMaW5lc1BsYW5uZWRSZXF1ZXN0ID0gbmV3IE9yZGVyTGluZXNQbGFubmVkUmVxdWVzdCgpO1xyXG4gICAgbGV0IGZpbHRlck9iajogUGxhbm5pbmdGaWx0ZXJPYmplY3QgPSBuZXcgUGxhbm5pbmdGaWx0ZXJPYmplY3QoKTtcclxuICAgIHJlcXVlc3QucGxhbm5lZCA9IHRydWU7XHJcbiAgICByZXF1ZXN0LnBsYW5uaW5nSWQgPSB0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5jdXJyZW50UGxhbm5pbmcucGxhbm5pbmdJZDtcclxuICAgIHJlcXVlc3QudHJhbnNJZCA9IG9yZGVyLnRyYW5zSWQ7XHJcbiAgICByZXF1ZXN0LnBsYW5uZWRMaW5lSWQgPSBvcmRlci5wbGFubmVkTGluZUlkO1xyXG4gICAgZmlsdGVyT2JqLm9ubHlDdXJyZW50V2VlayA9IHRydWU7XHJcbiAgICBmaWx0ZXJPYmouYmVnaW5DdXJyZW50V2VlayA9IG5ldyBEYXRlKCk7XHJcbiAgICBmaWx0ZXJPYmouY2hlY2tPcmRlckxpbmVzID0gMTtcclxuICAgIHJlcXVlc3QuZmlsdGVyT2JqZWN0ID0gZmlsdGVyT2JqO1xyXG4gICAgaWYgKCFvcmRlci5saW5lcykge1xyXG4gICAgICBvcmRlci5saW5lcyA9IFtdO1xyXG4gICAgfVxyXG4gICAgb3JkZXIubGluZXMucHVzaCguLi5hd2FpdCB0aGlzLl90cmFuc2FjdGlvbkNvbi5nZXRPcmRlckxpbmVzUGxhbm5lZChyZXF1ZXN0KSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0VHJhbnNwb3J0T3JkZXJzKHRyYW5zcG9ydERheTogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBsZXQgcmVxdWVzdDogR2V0VHJhbnNwb3J0T3JkZXJzUmVxdWVzdCA9IG5ldyBHZXRUcmFuc3BvcnRPcmRlcnNSZXF1ZXN0KCk7XHJcbiAgICByZXF1ZXN0LnBsYW5uaW5nSWQgPSB0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5jdXJyZW50UGxhbm5pbmcucGxhbm5pbmdJZDtcclxuICAgIHJlcXVlc3QuZGF0ZSA9IHRyYW5zcG9ydERheS5kYXRlO1xyXG4gICAgcmVxdWVzdC50cmFuc3BvcnRJZCA9IHRyYW5zcG9ydERheS50cmFuc3BvcnQudHJhbnNwb3J0SWQ7XHJcbiAgICB0cmFuc3BvcnREYXkucGxhbm5lZE9yZGVycyA9IGF3YWl0IHRoaXMuX3RyYW5zYWN0aW9uQ29uLmdldFRyYW5zcG9ydE9yZGVycyhyZXF1ZXN0KTtcclxuICAgIHRyYW5zcG9ydERheS5vcmRlcnNMb2FkZWQgPSB0cnVlO1xyXG5cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBwbGFuT3JkZXJMaW5lcyhvcmRlcjogUGxhbk9yZGVyLCB0cmFuc3BvcnREYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSwgd2VlazogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5W10pOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IG9sZFdlZWs6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdID0gW107XHJcbiAgICB3ZWVrLmZvckVhY2godmFsID0+IG9sZFdlZWsucHVzaChPYmplY3QuYXNzaWduKHt9LCB2YWwpKSk7XHJcbiAgICBpZiAob3JkZXIubGluZXM/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgb3JkZXIubGluZXNMb2FkZWQgPSB0cnVlO1xyXG4gICAgICBvcmRlci50YXNrcyA9IFtdO1xyXG4gICAgICBvcmRlci50YXNrc0xvYWRlZCA9IHRydWU7XHJcbiAgICAgIG9yZGVyLmxpbmVzLmZvckVhY2gobGluZSA9PiB7XHJcbiAgICAgICAgbGluZS5zZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgICAgaWYgKGxpbmUuYW1vdW50VG9QbGFuID09PSAwKSB7XHJcbiAgICAgICAgICBsaW5lLmFtb3VudFRvUGxhbiA9IChsaW5lLmFtb3VudEluT3JkZXIgLSBsaW5lLmFtb3VudFBsYW5uZWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGlmICghdHJhbnNwb3J0RGF5LnBsYW5uZWRPcmRlcnMpIHtcclxuICAgICAgICB0cmFuc3BvcnREYXkucGxhbm5lZE9yZGVycyA9IFtvcmRlcl07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKCF0cmFuc3BvcnREYXkucGxhbm5lZE9yZGVycy5maW5kKChwbGFubmVkT3JkZXI6IFBsYW5PcmRlcikgPT4gcGxhbm5lZE9yZGVyLnRyYW5zSWQgPT09IG9yZGVyLnRyYW5zSWQpKSB7XHJcbiAgICAgICAgICB0cmFuc3BvcnREYXkucGxhbm5lZE9yZGVycy5wdXNoKG9yZGVyKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgbGV0IHBsYW5uZWRPcmRlcjogUGxhbk9yZGVyID0gdHJhbnNwb3J0RGF5LnBsYW5uZWRPcmRlcnMuZmluZCgocGxhbm5lZE9yZGVyOiBQbGFuT3JkZXIpID0+IHBsYW5uZWRPcmRlci50cmFuc0lkID09PSBvcmRlci50cmFuc0lkKTtcclxuICAgICAgICAgIGlmIChvcmRlci5zdGFydFRpbWUgIT09IHRyYW5zcG9ydERheS5wbGFubmVkT3JkZXJzLmZpbmQoKHBsYW5uZWRPcmRlcjogUGxhbk9yZGVyKSA9PiBwbGFubmVkT3JkZXIudHJhbnNJZCA9PT0gb3JkZXIudHJhbnNJZCkuc3RhcnRUaW1lKSB7XHJcblxyXG4gICAgICAgICAgICBpZiAoIW9yZGVyLnBhcnREZWxpdmVyeSkge1xyXG4gICAgICAgICAgICAgIHRyYW5zcG9ydERheS5wbGFubmVkT3JkZXJzLnNwbGljZSh0cmFuc3BvcnREYXkucGxhbm5lZE9yZGVycy5pbmRleE9mKHBsYW5uZWRPcmRlciksIDEpO1xyXG4gICAgICAgICAgICAgIHRyYW5zcG9ydERheS5wbGFubmVkT3JkZXJzLnB1c2gob3JkZXIpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRyYW5zcG9ydERheS5wbGFubmVkT3JkZXJzLnB1c2gob3JkZXIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0cmFuc3BvcnREYXkucGxhbm5lZE9yZGVycy5zcGxpY2UodHJhbnNwb3J0RGF5LnBsYW5uZWRPcmRlcnMuaW5kZXhPZih0cmFuc3BvcnREYXkucGxhbm5lZE9yZGVycy5maW5kKChwbGFubmVkT3JkZXI6IFBsYW5PcmRlcikgPT4gcGxhbm5lZE9yZGVyLnRyYW5zSWQgPT09IG9yZGVyLnRyYW5zSWQpKSwgMSk7XHJcbiAgICAgICAgICAgIHRyYW5zcG9ydERheS5wbGFubmVkT3JkZXJzLnB1c2gob3JkZXIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLnVwZGF0ZVBsYW5uaW5nVHJhbnNwb3J0RXZlbnQuZW1pdCh7XHJcbiAgICAgICAgb2xkV2Vlazogb2xkV2VlayxcclxuICAgICAgICB3ZWVrOiB3ZWVrLFxyXG4gICAgICAgIGFjdGlvbjogRGVsaXZlcnlQbGFubmluZ1VwZGF0ZUFjdGlvbnMuUGxhbkxpbmVzXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgYXdhaXQgdGhpcy5fZGlhbG9nLnNob3dFcnJvcignTk9fTElORVNfVE9fUExBTicsIHRydWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHBsYW5TZWxlY3RlZExpbmVzKHRyYW5zcG9ydERheTogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5LCB3ZWVrOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXSk6IFByb21pc2U8dm9pZD4ge1xyXG5cclxuICAgIGxldCBwbGFuT3JkZXIgPSBhd2FpdCB0aGlzLl90cmFuc2FjdGlvbkNvbi5nZXRQbGFuT3JkZXIodGhpcy5fdHJhbnNhY3Rpb24uY3VycmVudFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5pZCk7XHJcbiAgICBhd2FpdCB0aGlzLmdldFNlcXVlbmNlT3JkZXJWYWx1ZShwbGFuT3JkZXIpO1xyXG4gICAgYXdhaXQgdGhpcy5nZXRPcmRlckxpbmVzUGxhbm5lZChwbGFuT3JkZXIpO1xyXG5cclxuICAgIGlmIChwbGFuT3JkZXIucGFydERlbGl2ZXJ5KSB7XHJcblxyXG4gICAgICBsZXQgc2VsZWN0ZWRMaW5lczogVHJhbnNhY3Rpb25MaW5lSW5mb1tdID0gdGhpcy5fdHJhbnNhY3Rpb24uY3VycmVudFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uTGluZXMuZmlsdGVyKCh0cmFuc0xpbmVzOiBUcmFuc2FjdGlvbkxpbmVJbmZvKSA9PiB0cmFuc0xpbmVzLnNlbGVjdGVkKTtcclxuXHJcbiAgICAgIC8vRG9lcyB0aGUgb3JkZXIgYWxyZWFkeSBleGlzdD9cclxuICAgICAgaWYgKHRyYW5zcG9ydERheT8ucGxhbm5lZE9yZGVycz8uZmluZChvcmRlciA9PiBvcmRlci50cmFuc0lkID09PSBwbGFuT3JkZXIudHJhbnNJZCkpIHtcclxuICAgICAgICAvL1llcyB0aGUgb3JkZXIgZXhpc3RzXHJcblxyXG4gICAgICAgIC8vSWYgdGhlIGxpbmUocykgd2UncmUgdHJ5aW5nIHRvIHBsYW4gYWxyZWFkeSBhcmUgcGxhbm5lZCB3ZSBuZWVkIHRvIHZhbGlkYXRlIGlmIHdlIG5lZWQgdG8gcGxhbiBhbnl3YXlcclxuICAgICAgICBsZXQgY2FudFBsYW5TZWxlY3RlZExpbmVzOiBQbGFuT3JkZXJMaW5lW10gPSBbXTtcclxuICAgICAgICBpZiAoc2VsZWN0ZWRMaW5lcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICB0cmFuc3BvcnREYXkucGxhbm5lZE9yZGVycy5maW5kKChwbGFubmVkT3JkZXI6IFBsYW5PcmRlcikgPT4gcGxhbm5lZE9yZGVyLnRyYW5zSWQgPT09IHBsYW5PcmRlci50cmFuc0lkKS5saW5lcy5mb3JFYWNoKChwbGFubmVkTGluZTogUGxhbk9yZGVyTGluZSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRMaW5lcy5maW5kKChzZWxlY3RlZExpbmU6IFRyYW5zYWN0aW9uTGluZUluZm8pID0+IHNlbGVjdGVkTGluZS5saW5lTnIgPT09IHBsYW5uZWRMaW5lLm9yaWdpbmFsTGluZU5yKSkge1xyXG4gICAgICAgICAgICAgIGNhbnRQbGFuU2VsZWN0ZWRMaW5lcy5wdXNoKHBsYW5uZWRMaW5lKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgaWYgKGNhbnRQbGFuU2VsZWN0ZWRMaW5lcy5sZW5ndGggPT09IHBsYW5PcmRlci5saW5lcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5fZGlhbG9nLnNob3dFcnJvcignTk9fTElORVNfVE9fUExBTicsIHRydWUpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGF3YWl0IHRoaXMuX2RpYWxvZy5zaG93RXJyb3IoJ05PX0xJTkVTX1NFTEVDVEVEJywgdHJ1ZSk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgcGxhbm5lZE9yZGVyOiBQbGFuT3JkZXIgPSB0cmFuc3BvcnREYXkucGxhbm5lZE9yZGVycy5maW5kKChwbGFubmVkT3JkZXI6IFBsYW5PcmRlcikgPT4gcGxhbm5lZE9yZGVyLnRyYW5zSWQgPT09IHBsYW5PcmRlci50cmFuc0lkKTtcclxuXHJcbiAgICAgICAgLy9BbGwgbGluZXMgdGhhdCBuZWVkIHRvIGJlIHBsYW5uZWQgZm9yIGFuIG9yZGVyIGFyZSBpbiBwbGFuT3JkZXIgbm93XHJcbiAgICAgICAgLy9XaGljaCBtZWFucyB0aGF0IHdlIGp1c3QgZmlsdGVyIHRoZSBsaW5lcyBvdXQgdGhhdCBET04nVCBtYXRjaCBhIHNlbGVjdGVkIGxpbmUgQU5EIGFyZSBwbGFubmVkXHJcbiAgICAgICAgcGxhbk9yZGVyLmxpbmVzLmZpbHRlcihcclxuICAgICAgICAgICh0b1BsYW5MaW5lOiBQbGFuT3JkZXJMaW5lKSA9PiAhcGxhbm5lZE9yZGVyLmxpbmVzLmZpbmQoKHBsYW5uZWRPcmRlckxpbmU6IFBsYW5PcmRlckxpbmUpID0+IHBsYW5uZWRPcmRlckxpbmUub3JpZ2luYWxMaW5lTnIgPT09IHRvUGxhbkxpbmUub3JpZ2luYWxMaW5lTnIpXHJcbiAgICAgICAgICAgICYmICFzZWxlY3RlZExpbmVzLmZpbmQoKHNlbGVjdGVkTGluZTogVHJhbnNhY3Rpb25MaW5lSW5mbykgPT4gc2VsZWN0ZWRMaW5lLmxpbmVOciA9PT0gdG9QbGFuTGluZS5vcmlnaW5hbExpbmVOcikpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vT3JkZXIgZG9lcyBub3QgZXhpc3QsIGxldHMgcHJlcGFyZSBpdCB3aXRoIHRoZSBzZWxlY3RlZCBsaW5lc1xyXG4gICAgICAgIC8vRmlsdGVyIHRoZSBsaW5lcyBmb3Igb25seSB0aGUgc2VsZWN0ZWQgb25lc1xyXG4gICAgICAgIHBsYW5PcmRlci5saW5lcyA9IHBsYW5PcmRlci5saW5lcy5maWx0ZXIocGxhbm5lZE9yZGVyTGluZSA9PiBzZWxlY3RlZExpbmVzLmZpbmQoKHNlbGVjdGVkTGluZTogVHJhbnNhY3Rpb25MaW5lSW5mbykgPT4gcGxhbm5lZE9yZGVyTGluZS5vcmlnaW5hbExpbmVOciA9PT0gc2VsZWN0ZWRMaW5lLmxpbmVOcikpO1xyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHBsYW5PcmRlci5saW5lcy5mb3JFYWNoKChsaW5lOiBQbGFuT3JkZXJMaW5lLCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgIGxldCBtYXRjaGVkVHJhbnNMaW5lOiBUcmFuc2FjdGlvbkxpbmVJbmZvID0gdGhpcy5fdHJhbnNhY3Rpb24uY3VycmVudFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uTGluZXMuZmluZCh0cmFuc0xpbmUgPT4gdHJhbnNMaW5lLmxpbmVOciA9PT0gbGluZS5vcmlnaW5hbExpbmVOcik7XHJcbiAgICAgIGlmIChtYXRjaGVkVHJhbnNMaW5lKSB7XHJcbiAgICAgICAgbGluZS5hbW91bnRUb1BsYW4gPSBtYXRjaGVkVHJhbnNMaW5lLmFtb3VudFNlbGVjdGVkO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIC8vU2VuZCB0aGUgcHJlcGFyZWQgb3JkZXIgdG8gdGhlXHJcbiAgICB0aGlzLm9wZW5QbGFubmluZ1BvcHVwKHBsYW5PcmRlciwgdHJhbnNwb3J0RGF5LCB3ZWVrKTtcclxuXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0U2VxdWVuY2VPcmRlclZhbHVlKG9yZGVyOiBQbGFuT3JkZXIpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIG9yZGVyLnBsYW5uZWRMaW5lSWQgPSBhd2FpdCB0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5nZXRPcmRlclNlcXVlbmNlVmFsdWUoKTtcclxuICAgIG9yZGVyLmNoYWluZWQgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBoYW5kbGVQb3B1cFBsYW5FdmVudChldmVudDogW1BsYW5PcmRlciwgUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5LCBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXV0pIHtcclxuXHJcbiAgICB0aGlzLnNob3dOb3RlRGlhbG9nID0gZmFsc2U7XHJcbiAgICBhd2FpdCB0aGlzLmdldFRyYW5zcG9ydE9yZGVycyhldmVudFsxXSk7XHJcbiAgICBhd2FpdCB0aGlzLmdldFNlcXVlbmNlT3JkZXJWYWx1ZShldmVudFswXSk7XHJcbiAgICBhd2FpdCB0aGlzLmdldE9yZGVyTGluZXNQbGFubmVkKGV2ZW50WzBdKTtcclxuICAgIGF3YWl0IHRoaXMucGxhbk9yZGVyTGluZXMoZXZlbnRbMF0sIGV2ZW50WzFdLCBldmVudFsyXSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlU2V0dGluZ3NSZXNldCgpIHtcclxuICAgIHRoaXMudXBkYXRlUGxhbm5pbmdUcmFuc3BvcnRFdmVudC5lbWl0KCk7XHJcbiAgICB0aGlzLnNob3dTZXR0aW5nc0RpYWxvZyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9wZW5TZXR0aW5nc0RpYWxvZyh0cmFuc3BvcnREYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZFRyYW5zcG9ydERheSA9IHRyYW5zcG9ydERheTtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkVHJhbnNwb3J0RGF5KSB7XHJcbiAgICAgIHRoaXMuc2hvd1NldHRpbmdzRGlhbG9nID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBoYW5kbGVDYWxlbmRhclBsYW5FdmVudChkYXRhOiB7XHJcbiAgICBjdXJyZW50SG91cjogc3RyaW5nLFxyXG4gICAgZGF0YTogc3RyaW5nXHJcbiAgfSwgdHJhbnNwb3J0V2Vla0RheTogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5LCB3ZWVrOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXSkge1xyXG4gICAgbGV0IHBsYW5PcmRlcjogUGxhbk9yZGVyO1xyXG4gICAgaWYgKGRhdGEuZGF0YSA9PT0gJ2ZhbHNlJyAmJiB0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5jdXJyZW50VHJhbnNJZCkge1xyXG4gICAgICBwbGFuT3JkZXIgPSBhd2FpdCB0aGlzLl90cmFuc2FjdGlvbkNvbi5nZXRQbGFuT3JkZXIodGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2U/LmN1cnJlbnRUcmFuc0lkKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHBsYW5PcmRlciA9IGF3YWl0IHRoaXMuX3RyYW5zYWN0aW9uQ29uLmdldFBsYW5PcmRlcihwYXJzZUludChkYXRhLmRhdGEpKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodHJhbnNwb3J0V2Vla0RheS5wbGFubmVkT3JkZXJzLmZpbmQoKHBsYW5uZWRPcmRlcjogUGxhbk9yZGVyKSA9PiBwbGFubmVkT3JkZXIudHJhbnNJZCA9PT0gcGxhbk9yZGVyLnRyYW5zSWQpKSB7XHJcbiAgICAgIGF3YWl0IHRoaXMuX2RpYWxvZy5zaG93RXJyb3IodGhpcy5fZGljdGlvbmFyeS5nZXQoJ09SREVSX0hBU19BTFJFQURZX0JFRU5fUExBTk5FRCcpLCB0cnVlKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChwbGFuT3JkZXIgJiYgZGF0YS5jdXJyZW50SG91cikge1xyXG5cclxuICAgICAgcGxhbk9yZGVyLnN0YXJ0VGltZSA9IHRoaXMuY2FsY3VsYXRlU3RhcnRUaW1lKHRyYW5zcG9ydFdlZWtEYXksIGRhdGEuY3VycmVudEhvdXIpO1xyXG4gICAgICBwbGFuT3JkZXIuZW5kVGltZSA9IHRoaXMuY2FsY3VsYXRlRW5kVGltZShwbGFuT3JkZXIuc3RhcnRUaW1lLCBkYXRhLmN1cnJlbnRIb3VyLCBwbGFuT3JkZXIpO1xyXG5cclxuICAgICAgYXdhaXQgdGhpcy5nZXRUcmFuc3BvcnRPcmRlcnModHJhbnNwb3J0V2Vla0RheSk7XHJcbiAgICAgIGF3YWl0IHRoaXMuZ2V0U2VxdWVuY2VPcmRlclZhbHVlKHBsYW5PcmRlcik7XHJcbiAgICAgIGF3YWl0IHRoaXMuZ2V0T3JkZXJMaW5lc1BsYW5uZWQocGxhbk9yZGVyKTtcclxuICAgICAgYXdhaXQgdGhpcy5wbGFuT3JkZXJMaW5lcyhwbGFuT3JkZXIsIHRyYW5zcG9ydFdlZWtEYXksIHdlZWspO1xyXG4gICAgICBpZiAoZGF0YS5kYXRhID09PSAnZmFsc2UnICYmIHRoaXMuX3RyYW5zYWN0aW9uLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8udXVpZCkge1xyXG4gICAgICAgIGF3YWl0IHRoaXMuX3RyYW5zYWN0aW9uLmdldFRyYW5zYWN0aW9uQnlJZCh0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5jdXJyZW50VHJhbnNJZCk7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5fdHJhbnNhY3Rpb24uc2F2ZVRyYW5zYWN0aW9uKCk7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5fdHJhbnNhY3Rpb24uY2hlY2tSZWZUcmFuc2FjdGlvbigpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2FsY3VsYXRlU3RhcnRUaW1lKHRyYW5zcG9ydFdlZWtEYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSwgY3VycmVudEhvdXI6IHN0cmluZyk6IERhdGUge1xyXG4gICAgbGV0IHN0YXJ0RGF0ZTogRGF0ZSA9IG5ldyBEYXRlKHRyYW5zcG9ydFdlZWtEYXkuZGF0ZSk7XHJcbiAgICBsZXQgc3RhcnRUaW1lOiBudW1iZXIgPSBwYXJzZUludChjdXJyZW50SG91ci5zcGxpdCgnOicpWzBdKTtcclxuICAgIHN0YXJ0RGF0ZS5zZXRIb3VycyhzdGFydFRpbWUpO1xyXG4gICAgc3RhcnREYXRlLnNldE1pbnV0ZXMocGFyc2VJbnQoY3VycmVudEhvdXIuc3BsaXQoJzonKVsxXSkgPiAwID8gcGFyc2VJbnQoY3VycmVudEhvdXIuc3BsaXQoJzonKVsxXSkgOiAwKTtcclxuICAgIHN0YXJ0RGF0ZS5zZXRTZWNvbmRzKDApO1xyXG5cclxuICAgIHJldHVybiBzdGFydERhdGU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2FsY3VsYXRlRW5kVGltZShzdGFydERhdGU6IERhdGUsIGN1cnJlbnRIb3VyOiBzdHJpbmcsIHBsYW5PcmRlcjogUGxhbk9yZGVyKTogRGF0ZSB7XHJcbiAgICBsZXQgZW5kVGltZTogRGF0ZSA9IG5ldyBEYXRlKHN0YXJ0RGF0ZSk7XHJcblxyXG4gICAgbGV0IHNwbGl0SG91ciA9IGN1cnJlbnRIb3VyLnNwbGl0KCc6Jyk7XHJcbiAgICBjb25zdCBuZXdFbmRNaW51dGVzID0gc3BsaXRIb3VyWzFdID09PSAnMDAnID8gMzAgOiAwO1xyXG4gICAgY29uc3QgbmV3RW5kSG91ciA9IHNwbGl0SG91clsxXSA9PT0gJzMwJyA/IChwYXJzZUludChzcGxpdEhvdXJbMF0pICsgMSkgOiBwYXJzZUludChzcGxpdEhvdXJbMF0pO1xyXG4gICAgZW5kVGltZS5zZXRIb3VycyhuZXdFbmRIb3VyKTtcclxuICAgIGVuZFRpbWUuc2V0TWludXRlcyhuZXdFbmRNaW51dGVzKTtcclxuICAgIGxldCBhc3NlbWJseVRpbWUgPSB0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS50b3RhbEFzc2VtYmx5VGltZShwbGFuT3JkZXIpICogNjAgKiAxMDAwO1xyXG4gICAgZW5kVGltZS5zZXRUaW1lKGVuZFRpbWUuZ2V0VGltZSgpICsgYXNzZW1ibHlUaW1lKTtcclxuXHJcbiAgICByZXR1cm4gZW5kVGltZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvcGVuUGxhbm5pbmdQb3B1cChwbGFuT3JkZXI6IFBsYW5PcmRlciwgdHJhbnNwb3J0RGF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXksIHdlZWs6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdKSB7XHJcbiAgICB0aGlzLnNob3dOb3RlRGlhbG9nID0gdHJ1ZTtcclxuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgaWYgKHRoaXMucGxhbm5pbmdQb3B1cFJlZikge1xyXG4gICAgICB0aGlzLnBsYW5uaW5nUG9wdXBSZWYucGxhbk9yZGVyID0gcGxhbk9yZGVyO1xyXG4gICAgICB0aGlzLnBsYW5uaW5nUG9wdXBSZWYudHJhbnNwb3J0RGF5ID0gdHJhbnNwb3J0RGF5O1xyXG4gICAgICB0aGlzLnBsYW5uaW5nUG9wdXBSZWYud2VlayA9IHdlZWs7XHJcbiAgICAgIHRoaXMucGxhbm5pbmdQb3B1cFJlZi50cmFuc2FjdGlvbiA9IHRoaXMuX3RyYW5zYWN0aW9uLmN1cnJlbnRUcmFuc2FjdGlvbjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVBdmFpbGFiaWxpdHlDaGVja2VkKHZhbHVlOiB7IHRyYW5zcG9ydERheTogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5LCBhdmFpbGFibGU6IGJvb2xlYW4gfSkge1xyXG4gICAgdGhpcy5hdmFpbGFiaWxpdHkucHVzaCh2YWx1ZSk7XHJcbiAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2hlY2tBdmFpbGFibGUodHJhbnNwb3J0RGF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXkpIHtcclxuICAgIGxldCB0cmFuc3BvcnQgPSB0aGlzLmF2YWlsYWJpbGl0eS5maW5kKHRyYW5zcG9ydE9iamVjdCA9PiB0cmFuc3BvcnRPYmplY3QudHJhbnNwb3J0RGF5ID09PSB0cmFuc3BvcnREYXkpO1xyXG4gICAgcmV0dXJuIHRyYW5zcG9ydCAmJiAhdHJhbnNwb3J0LmF2YWlsYWJsZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVUaW1lQ2hhbmdlRXZlbnQodHJhbnNwb3J0RGF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXksIHdlZWs6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdLCBvYmo6IFBsYW5PcmRlcikge1xyXG4gICAgbGV0IG9sZFdlZWs6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdID0gd2VlaztcclxuICAgIGxldCBvcmRlcjogUGxhbk9yZGVyID0gdHJhbnNwb3J0RGF5LnBsYW5uZWRPcmRlcnMuZmluZChwbGFuT3JkZXIgPT4gcGxhbk9yZGVyLnRyYW5zSWQgPT09IG9iai50cmFuc0lkKTtcclxuICAgIG9yZGVyLnN0YXJ0VGltZSA9IG5ldyBEYXRlKG9ialsnc3RhcnRUaW1lJ10pO1xyXG4gICAgb3JkZXIuZW5kVGltZSA9IG5ldyBEYXRlKG9ialsnZW5kVGltZSddKTtcclxuXHJcbiAgICB0aGlzLnVwZGF0ZVBsYW5uaW5nVHJhbnNwb3J0RXZlbnQuZW1pdCh7b2xkV2Vlazogb2xkV2Vlaywgd2Vlazogd2VlaywgYWN0aW9uOiB0aGlzLnBsYW5uaW5nQWN0aW9ucy5QbGFuT3JkZXJ9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBoYW5kbGVNb3ZlRXZlbnQobW92ZURhdGE6IHtcclxuICAgIGhvdXI6IHN0cmluZyxcclxuICAgIHNjaGVkdWxlZE9iamVjdDogT2JqZWN0XHJcbiAgfSwgdHJhbnNwb3J0OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXksIHdlZWs6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdLCB3ZWVrQXJyOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXVtdKSB7XHJcbiAgICBsZXQgcGxhbk9yZGVyOiBQbGFuT3JkZXIgPSBhd2FpdCB0aGlzLl90cmFuc2FjdGlvbkNvbi5nZXRQbGFuT3JkZXIobW92ZURhdGEuc2NoZWR1bGVkT2JqZWN0WydvYmonXVsnaWQnXSk7XHJcbiAgICAvL3JlbW92ZSBmcm9tIG9sZCB0cmFuc3BvcnRcclxuICAgIHdlZWtBcnIuZm9yRWFjaCgoKHJvdzogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5W10pID0+IHtcclxuICAgICAgcm93LmZvckVhY2goKHdlZWtEYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSkgPT4ge1xyXG4gICAgICAgIGlmICh3ZWVrRGF5Py5wbGFubmVkT3JkZXJzPy5maW5kKG9yZGVyID0+IG9yZGVyLnRyYW5zSWQgPT09IHBsYW5PcmRlci50cmFuc0lkKSkge1xyXG4gICAgICAgICAgd2Vla0RheS5wbGFubmVkT3JkZXJzLnNwbGljZSh3ZWVrRGF5LnBsYW5uZWRPcmRlcnMuaW5kZXhPZihwbGFuT3JkZXIpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSkpO1xyXG5cclxuICAgIGlmIChwbGFuT3JkZXIpIHtcclxuICAgICAgLy9yZXN0b3JlIG9yZGVyXHJcbiAgICAgIGF3YWl0IHRoaXMuX3RyYW5zYWN0aW9uQ29uLnJlc3RvcmVEZWxpdmVyeVNldHRpbmdzKFtwbGFuT3JkZXJdKTtcclxuXHJcbiAgICAgIC8vc2V0IG5ldyBkYXRlIGZvciBvcmRlciBhbmQgcGxhbiBpdCBvbiBuZXcgdHJhbnNwb3J0XHJcbiAgICAgIGxldCBuZXdEYXRlOiBEYXRlID0gbmV3IERhdGUodHJhbnNwb3J0LmRhdGUpO1xyXG4gICAgICBsZXQgc3BsaXRUaW1lOiBzdHJpbmdbXSA9IG1vdmVEYXRhLmhvdXIuc3BsaXQoJzonKTtcclxuICAgICAgbmV3RGF0ZS5zZXRIb3VycyhwYXJzZUludChzcGxpdFRpbWVbMF0pKTtcclxuICAgICAgbmV3RGF0ZS5zZXRNaW51dGVzKHBhcnNlSW50KHNwbGl0VGltZVsxXSkpO1xyXG4gICAgICBuZXdEYXRlLnNldFNlY29uZHMoMCk7XHJcbiAgICAgIHBsYW5PcmRlci5zdGFydFRpbWUgPSBuZXdEYXRlO1xyXG4gICAgICBsZXQgZW5kRGF0ZSA9IG5ldyBEYXRlKHBsYW5PcmRlci5zdGFydFRpbWUpO1xyXG4gICAgICBwbGFuT3JkZXIuZW5kVGltZSA9IHRoaXMuX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLmFkZE1pbnV0ZXMoZW5kRGF0ZSwgbW92ZURhdGEuc2NoZWR1bGVkT2JqZWN0WydvYmonXVsnaGVpZ2h0J10pO1xyXG4gICAgICBhd2FpdCB0aGlzLmdldFRyYW5zcG9ydE9yZGVycyh0cmFuc3BvcnQpO1xyXG4gICAgICBhd2FpdCB0aGlzLmdldFNlcXVlbmNlT3JkZXJWYWx1ZShwbGFuT3JkZXIpO1xyXG4gICAgICBhd2FpdCB0aGlzLmdldE9yZGVyTGluZXNQbGFubmVkKHBsYW5PcmRlcik7XHJcbiAgICAgIGF3YWl0IHRoaXMucGxhbk9yZGVyTGluZXMocGxhbk9yZGVyLCB0cmFuc3BvcnQsIHdlZWspO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGhhbmRsZU1vdmVOb3JtYWxFdmVudCh0cmFuc0lkOiBzdHJpbmcsIHRyYW5zcG9ydDogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5LCB3ZWVrOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXSwgd2Vla0FycjogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5W11bXSkge1xyXG4gICAgbGV0IHBsYW5PcmRlcjogUGxhbk9yZGVyID0gYXdhaXQgdGhpcy5fdHJhbnNhY3Rpb25Db24uZ2V0UGxhbk9yZGVyKHBhcnNlSW50KHRyYW5zSWQpKTtcclxuICAgIC8vcmVtb3ZlIGZyb20gb2xkIHRyYW5zcG9ydFxyXG4gICAgd2Vla0Fyci5mb3JFYWNoKCgocm93OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXSkgPT4ge1xyXG4gICAgICByb3cuZm9yRWFjaCgod2Vla0RheTogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5KSA9PiB7XHJcbiAgICAgICAgaWYgKHdlZWtEYXk/LnBsYW5uZWRPcmRlcnM/LmZpbmQob3JkZXIgPT4gb3JkZXIudHJhbnNJZCA9PT0gcGxhbk9yZGVyLnRyYW5zSWQpKSB7XHJcbiAgICAgICAgICB3ZWVrRGF5LnBsYW5uZWRPcmRlcnMuc3BsaWNlKHdlZWtEYXkucGxhbm5lZE9yZGVycy5pbmRleE9mKHBsYW5PcmRlcikpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KSk7XHJcblxyXG4gICAgaWYgKHBsYW5PcmRlcikge1xyXG4gICAgICAvL3Jlc3RvcmUgb3JkZXJcclxuICAgICAgYXdhaXQgdGhpcy5fdHJhbnNhY3Rpb25Db24ucmVzdG9yZURlbGl2ZXJ5U2V0dGluZ3MoW3BsYW5PcmRlcl0pO1xyXG4gICAgICBhd2FpdCB0aGlzLmdldFRyYW5zcG9ydE9yZGVycyh0cmFuc3BvcnQpO1xyXG4gICAgICBhd2FpdCB0aGlzLmdldFNlcXVlbmNlT3JkZXJWYWx1ZShwbGFuT3JkZXIpO1xyXG4gICAgICBhd2FpdCB0aGlzLmdldE9yZGVyTGluZXNQbGFubmVkKHBsYW5PcmRlcik7XHJcbiAgICAgIGF3YWl0IHRoaXMucGxhbk9yZGVyTGluZXMocGxhbk9yZGVyLCB0cmFuc3BvcnQsIHdlZWspO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUVkaXRQbGFubmVkT3JkZXIocGxhbk9yZGVyOiBQbGFuT3JkZXIsIHRyYW5zcG9ydERheTogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5LCB3ZWVrOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXSkge1xyXG4gICAgdGhpcy5vcGVuUGxhbm5pbmdQb3B1cChwbGFuT3JkZXIsIHRyYW5zcG9ydERheSwgd2Vlayk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlTW92ZU9yZGVyVXAocGxhbk9yZGVyOiBQbGFuT3JkZXIsIHBsYW5uaW5nVHJhbnNwb3J0V2VlazogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5W10sIHRyYW5zcG9ydERheTogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5KSB7XHJcbiAgICBjb25zdCBvbGRXZWVrOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXSA9IFtdO1xyXG4gICAgcGxhbm5pbmdUcmFuc3BvcnRXZWVrLmZvckVhY2godmFsID0+IG9sZFdlZWsucHVzaChPYmplY3QuYXNzaWduKHt9LCB2YWwpKSk7XHJcbiAgICB0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5yZW9yZGVySXRlbSh0cmFuc3BvcnREYXkucGxhbm5lZE9yZGVycywgcGxhbk9yZGVyLCAndXAnKTtcclxuICAgIHRoaXMudXBkYXRlUGxhbm5pbmdUcmFuc3BvcnRFdmVudC5lbWl0KHtvbGRXZWVrOiBvbGRXZWVrLCB3ZWVrOiBwbGFubmluZ1RyYW5zcG9ydFdlZWssIGFjdGlvbjogRGVsaXZlcnlQbGFubmluZ1VwZGF0ZUFjdGlvbnMuUGxhbk9yZGVyfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlTW92ZU9yZGVyRG93bihwbGFuT3JkZXI6IFBsYW5PcmRlciwgcGxhbm5pbmdUcmFuc3BvcnRXZWVrOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXSwgdHJhbnNwb3J0RGF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXkpIHtcclxuICAgIGNvbnN0IG9sZFdlZWs6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdID0gW107XHJcbiAgICBwbGFubmluZ1RyYW5zcG9ydFdlZWsuZm9yRWFjaCh2YWwgPT4gb2xkV2Vlay5wdXNoKE9iamVjdC5hc3NpZ24oe30sIHZhbCkpKTtcclxuICAgIHRoaXMuX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLnJlb3JkZXJJdGVtKHRyYW5zcG9ydERheS5wbGFubmVkT3JkZXJzLCBwbGFuT3JkZXIsICdkb3duJyk7XHJcbiAgICB0aGlzLnVwZGF0ZVBsYW5uaW5nVHJhbnNwb3J0RXZlbnQuZW1pdCh7b2xkV2Vlazogb2xkV2Vlaywgd2VlazogcGxhbm5pbmdUcmFuc3BvcnRXZWVrLCBhY3Rpb246IERlbGl2ZXJ5UGxhbm5pbmdVcGRhdGVBY3Rpb25zLlBsYW5PcmRlcn0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNlbGVjdFRyYW5zcG9ydERheSh0cmFuc3BvcnREYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSwgdHJhbnNwb3J0RGF5czogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5W10pIHtcclxuICAgIGxldCBpbmRleCA9IHRyYW5zcG9ydERheXMuaW5kZXhPZih0cmFuc3BvcnREYXkpO1xyXG4gICAgbGV0IHRpbGUgPSB0aGlzLnRpbGVzUXVlcnlMaXN0LmdldChpbmRleCk7XHJcblxyXG4gICAgaWYgKCF0cmFuc3BvcnREYXkuc2VsZWN0ZWQpIHtcclxuICAgICAgaWYgKCF0aWxlLmV4cGFuZGVkKSB7XHJcbiAgICAgICAgdGlsZS5leHBhbmRlZCA9IHRydWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0cmFuc3BvcnREYXlzLmZpbmQodHJhbnNwb3J0RGF5TGlzdEl0ZW0gPT4gdHJhbnNwb3J0RGF5TGlzdEl0ZW0uc2VsZWN0ZWQpICYmICF0cmFuc3BvcnREYXkuc2VsZWN0ZWQpIHtcclxuICAgICAgICAvL2Rlc2VsZWN0IG90aGVycyBpZiBub3Qgc2VsZWN0ZWRcclxuICAgICAgICB0cmFuc3BvcnREYXlzLmZpbHRlcih0cmFuc3BvcnREYXlMaXN0SXRlbSA9PiB0cmFuc3BvcnREYXlMaXN0SXRlbS5zZWxlY3RlZCkuZm9yRWFjaChzZWxlY3RlZFRyYW5zcG9ydExpc3RJdGVtID0+IHtcclxuICAgICAgICAgIHNlbGVjdGVkVHJhbnNwb3J0TGlzdEl0ZW0uc2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRyYW5zcG9ydERheS5zZWxlY3RlZCA9ICF0cmFuc3BvcnREYXkuc2VsZWN0ZWQ7XHJcblxyXG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICAgIGlmICh0cmFuc3BvcnREYXkuc2VsZWN0ZWQpIHtcclxuICAgICAgLy9maXJlIGV2ZW50IHNlbGVjdGVkIG91dHdhcmRzXHJcbiAgICAgIHRoaXMudHJhbnNhY3Rpb25FdmVudFNlcnZpY2Uuc2VsZWN0ZWRUcmFuc3BvcnREYXkubmV4dCggdHJhbnNwb3J0RGF5KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudHJhbnNhY3Rpb25FdmVudFNlcnZpY2UucmVzZXRUcmFuc3BvcnREYXlGaWx0ZXJlZE9yZGVycy5uZXh0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -68,14 +68,18 @@ export class TransactionSearchResultComponent {
68
68
  this.markSelectedTransactions();
69
69
  }
70
70
  }), this.transactionEventService.selectedTransportDay.subscribe((transportDay) => __awaiter(this, void 0, void 0, function* () {
71
+ console.log(this.searchService.transactions.length);
71
72
  const filteredTransactions = yield Promise.all(this.searchService.transactions.map((order) => __awaiter(this, void 0, void 0, function* () {
72
- let available = true;
73
73
  const planOrder = yield this.transactionService.getPlanOrder(order.transId);
74
- yield this._deliveryPlanningService.deliveryMethodAvailabilityCheck(planOrder, available, transportDay);
75
- yield this._deliveryPlanningService.districtAvailabilityCheck(planOrder, available, transportDay);
76
- return available ? order : null;
74
+ const isAvailable = (yield this._deliveryPlanningService.deliveryMethodAvailabilityCheck(planOrder, transportDay)) &&
75
+ (yield this._deliveryPlanningService.districtAvailabilityCheck(planOrder, transportDay)) &&
76
+ transportDay.availableOnDate;
77
+ return isAvailable ? order : null;
77
78
  })));
78
79
  this.searchService.transactions = filteredTransactions.filter((order) => order !== null);
80
+ console.log(this.searchService.transactions.length);
81
+ })), this.transactionEventService.resetTransportDayFilteredOrders.subscribe((event) => __awaiter(this, void 0, void 0, function* () {
82
+ yield this.searchService.searchTransactions();
79
83
  })));
80
84
  }
81
85
  ngOnChanges(changes) {
@@ -363,4 +367,4 @@ TransactionSearchResultComponent.propDecorators = {
363
367
  transactionClick: [{ type: Output }],
364
368
  showClass: [{ type: HostBinding, args: ['class.co-transaction-search-result',] }]
365
369
  };
366
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tc2VhcmNoLXJlc3VsdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cmFuc2FjdGlvbi9zcmMvbGliL2NvbXBvbmVudC90cmFuc2FjdGlvbi1zZWFyY2gvdHJhbnNhY3Rpb24tc2VhcmNoLXJlc3VsdC90cmFuc2FjdGlvbi1zZWFyY2gtcmVzdWx0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBZ0MsTUFBTSxFQUFpQixpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVySyxPQUFPLEVBQUMsNkJBQTZCLEVBQUUsZUFBZSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDNUYsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQzdDLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBQy9FLE9BQU8sRUFBQyxxQ0FBcUMsRUFBQyxNQUFNLDJEQUEyRCxDQUFDO0FBR2hILE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLDJEQUEyRCxDQUFDO0FBQ2xHLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ3hFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwyREFBMkQsQ0FBQztBQUMxRixPQUFPLEVBQUMsOEJBQThCLEVBQUMsTUFBTSx3RUFBd0UsQ0FBQztBQUV0SCxPQUFPLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFHeEUsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sNENBQTRDLENBQUM7QUFrSG5GLE1BQU0sT0FBTyxnQ0FBZ0M7SUEyRDNDLFlBQ1MsYUFBdUMsRUFDdkMsbUJB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aUJBQWlCLENBQUMsSUFBSTthQUN0Qzs7O1lBN0hPLHdCQUF3QjtZQUN4QixxQ0FBcUM7WUFJckMsa0JBQWtCO1lBT2xCLHVCQUF1QjtZQWhCdkIsaUJBQWlCO1lBUWpCLHVCQUF1Qjs7O29DQTJINUIsS0FBSzsyQkFHTCxLQUFLOzRCQUdMLEtBQUs7d0NBR0wsS0FBSztvQ0FHTCxLQUFLO3lCQVNMLEtBQUs7K0JBU0wsTUFBTTt3QkFHTixXQUFXLFNBQUMsb0NBQW9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25TZWFyY2hWaWV3fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tc2VhcmNoLXZpZXcuYm8nO1xyXG5pbXBvcnQge0Jhc2VNb2R1bGVTY3JlZW5Db25maWdTZXJ2aWNlLCBDb250ZW50Vmlld01vZGV9IGZyb20gJ0Bjb2xpam5pdC9jb3JlY29tcG9uZW50c192MTInO1xyXG5pbXBvcnQge0ljb259IGZyb20gJy4uLy4uLy4uL2VudW0vaWNvbi5lbnVtJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvblNlYXJjaFNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24tc2VhcmNoLnNlcnZpY2UnO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uU2NyZWVuQ29uZmlndXJhdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24tc2NyZWVuLWNvbmZpZ3VyYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvblNlYXJjaFZpZXdSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tc2VhcmNoLXZpZXctcmVxdWVzdCc7XHJcbmltcG9ydCB7RGVsaXZlcnlQbGFubmluZ1NlcnZpY2V9IGZyb20gJy4uLy4uL2RlbGl2ZXJ5LXBsYW5uaW5nL3NlcnZpY2UvZGVsaXZlcnktcGxhbm5pbmcuc2VydmljZSc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL3RyYW5zYWN0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uS2luZH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL2VudW0vdHJhbnNhY3Rpb24ta2luZC5lbnVtJztcclxuaW1wb3J0IHtCYXRjaFRyYW5zYWN0aW9uU2VuZGluZ1JlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9iYXRjaC10cmFuc2FjdGlvbi1zZW5kaW5nLXJlcXVlc3QnO1xyXG5pbXBvcnQge0JhdGNoSm9iUHJvZ3Jlc3N9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9iYXRjaC1qb2ItcHJvZ3Jlc3MuYm8nO1xyXG5pbXBvcnQge2FuaW1hdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcclxuaW1wb3J0IHtPYmplY3RDb25maWd1cmF0aW9ufSBmcm9tICdAY29saWpuaXQvaW9uZWNvbm5lY3Rvci9idWlsZC9tb2RlbC9vYmplY3QtY29uZmlndXJhdGlvbic7XHJcbmltcG9ydCB7UGxhbk9yZGVyfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGxhbi1vcmRlci5ibyc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25FdmVudFNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24tZXZlbnQuc2VydmljZSc7XHJcbmltcG9ydCB7UGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGxhbm5pbmctdHJhbnNwb3J0LXdlZWstZGF5LmJvJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY28tdHJhbnNhY3Rpb24tc2VhcmNoLXJlc3VsdCcsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNjcmVlbkNvbmZpZ0xvYWRlZFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbnMtd3JhcHBlclwiXHJcbiAgICAgICAgICAgICAgICpuZ0lmPVwic2VhcmNoU2VydmljZS50cmFuc2FjdGlvbnM/Lmxlbmd0aCA+IDAgJiYgc2FsZXNPcmRlcnNQYWdlQWN0aXZlICYmIHNob3dCYXRjaE9wdGlvbnNcIj5cclxuICAgICAgICAgICAgICA8Y28taW5wdXQtY2hlY2tib3hcclxuICAgICAgICAgICAgICAgICAgICAgIFttb2RlbF09XCJjaGVja0lmQWxsU2VsZWN0ZWQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiY2hlY2tJZkFsbFNlbGVjdGVkKCkgPyAnREVTRUxFQ1RfQUxMJyA6ICdTRUxFQ1RfQUxMX09SREVSUycgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwib25Ub2dnbGVBbGxPcmRlcnMoY2hlY2tJZkFsbFNlbGVjdGVkKCkpXCI+XHJcbiAgICAgICAgICAgICAgPC9jby1pbnB1dC1jaGVja2JveD5cclxuICAgICAgICAgICAgICA8Y28tcXVpY2stc2VuZC1idXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY2hlY2tJZlNlbGVjdGVkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3Nob3dTZW5kTWV0aG9kRGlhbG9nSWNvbl09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbc2hvd0xvYWRlcl09XCJzaG93UHJvY2Vzc09yZGVyc0xvYWRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoc2VuZEljb25DbGlja2VkKT1cInNob3dBZGRpdGlvbmFsT3B0aW9ucygpXCI+XHJcbiAgICAgICAgICAgICAgPC9jby1xdWljay1zZW5kLWJ1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cmFuc2FjdGlvbi1zZWFyY2gtcmVzdWx0LWNvbnRlbnQtdGlsZXMtd3JhcHBlclwiIFtuZ0NsYXNzXT1cImZ1bGxzY3JlZW4gPyAnZnVsbHNjcmVlbicgOiAnc2lkZWJhcidcIlxyXG4gICAgICAgICAgICAgICAqbmdJZj1cImFjdGl2ZUNvbnRlbnRWaWV3TW9kZSA9PT0gY29udGVudFZpZXdNb2Rlcy5UaWxlcyAmJiAhZXh0ZW5kZWRUcmFuc2FjdGlvblNlYXJjaFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cmFuc2FjdGlvbi10aWxlXCIgKm5nRm9yPVwibGV0IHRyYW5zYWN0aW9uIG9mIHNlYXJjaFNlcnZpY2UudHJhbnNhY3Rpb25zXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxjby10cmFuc2FjdGlvbi1zZWFyY2gtdGlsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtkcmFnZ2FibGVdPVwiZHJhZ2dhYmxlVHJhbnNhY3Rpb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZHJhZ3N0YXJ0KT1cImRyYWdTdGFydGVkKCRldmVudCwgdHJhbnNhY3Rpb24pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZHJhZ2VuZCk9XCJkcmFnRW5kKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFt0cmFuc2FjdGlvbl09XCJ0cmFuc2FjdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dDaGVja2JveF09XCJzYWxlc09yZGVyc1BhZ2VBY3RpdmUgJiYgc2hvd0JhdGNoT3B0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cInRyYW5zYWN0aW9uLnNlbGVjdGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwidHJhbnNhY3Rpb24gPT09IHNlbGVjdGVkVHJhbnNhY3Rpb24gPyAnc2VsZWN0ZWQnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICh0cmFuc2FjdGlvbkNsaWNrKT1cIm9uVHJhbnNhY3Rpb25DbGljaygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWRDbGljayk9XCJvblNlbGVjdGVkQ2xpY2soJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L2NvLXRyYW5zYWN0aW9uLXNlYXJjaC10aWxlPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRyYW5zYWN0aW9uLXNlYXJjaC1yZXN1bHQtY29udGVudC1ncmlkLXdyYXBwZXJcIlxyXG4gICAgICAgICAgICAgICAqbmdJZj1cImFjdGl2ZUNvbnRlbnRWaWV3TW9kZSA9PT0gY29udGVudFZpZXdNb2Rlcy5HcmlkICYmICFleHRlbmRlZFRyYW5zYWN0aW9uU2VhcmNoXCI+XHJcbiAgICAgICAgICAgICAgPGNvLXRyYW5zYWN0aW9uLXNlYXJjaC1ncmlkXHJcbiAgICAgICAgICAgICAgICAgICAgICBbc2hvd0NoZWNrYm94XT1cInNhbGVzT3JkZXJzUGFnZUFjdGl2ZSAmJiBzaG93QmF0Y2hPcHRpb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICh0cmFuc2FjdGlvbkNsaWNrKT1cIm9uVHJhbnNhY3Rpb25DbGljaygkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgPC9jby10cmFuc2FjdGlvbi1zZWFyY2gtZ3JpZD5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cmFuc2FjdGlvbi1leHRlbmRlZC1zZWFyY2gtcmVzdWx0LXRpbGUtd3JhcHBlclwiICpuZ0lmPVwiZXh0ZW5kZWRUcmFuc2FjdGlvblNlYXJjaFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cmFuc2FjdGlvbi10aWxlXCIgKm5nRm9yPVwibGV0IHRyYW5zYWN0aW9uIG9mIHNlYXJjaFNlcnZpY2UudHJhbnNhY3Rpb25zXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxjby10cmFuc2FjdGlvbi1zZWFyY2gtc2FsZXMtbGluZS1zZWxlY3QtdGlsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFt0cmFuc2FjdGlvbl09XCJ0cmFuc2FjdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyYW5zYWN0aW9uQ2xpY2spPVwib25UcmFuc2FjdGlvbkNsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3RlZENsaWNrKT1cIm9uU2VsZWN0ZWRDbGljaygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbZXh0ZW5kZWRUcmFuc2FjdGlvblNlYXJjaF09XCJleHRlbmRlZFRyYW5zYWN0aW9uU2VhcmNoXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvY28tdHJhbnNhY3Rpb24tc2VhcmNoLXNhbGVzLWxpbmUtc2VsZWN0LXRpbGU+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8Y28tcGFnaW5hdGlvbi1iYXJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzZWFyY2hTZXJ2aWNlLnRyYW5zYWN0aW9ucz8ubGVuZ3RoID4gMFwiXHJcbiAgICAgICAgICAgICAgICAgIFtjdXJyZW50UGFnZV09XCJzZWFyY2hTZXJ2aWNlLmN1cnJlbnRQYWdlXCJcclxuICAgICAgICAgICAgICAgICAgW2l0ZW1zUGVyUGFnZV09XCJzZWFyY2hTZXJ2aWNlLnRyYW5zYWN0aW9uc1BlclBhZ2VcIlxyXG4gICAgICAgICAgICAgICAgICBbdG90YWxJdGVtc109XCJzZWFyY2hTZXJ2aWNlLnJlc3VsdENvdW50XCJcclxuICAgICAgICAgICAgICAgICAgW3ByZXZpb3VzTGFiZWxdPVwiJ1BSRVZJT1VTJyB8IGxvY2FsaXplXCJcclxuICAgICAgICAgICAgICAgICAgW25leHRMYWJlbF09XCInTkVYVCcgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgICAgICAgIFthdXRvSGlkZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgW2RpcmVjdGlvbkxpbmtzXT1cImZ1bGxzY3JlZW5cIlxyXG4gICAgICAgICAgICAgICAgICBbcGFnaW5hdGlvblJhbmdlXT1cIiFmdWxsc2NyZWVuID8gNiA6IDhcIlxyXG4gICAgICAgICAgICAgICAgICAocHJldmlvdXNDbGljayk9XCJvblByZXZpb3VzQ2xpY2soKVwiXHJcbiAgICAgICAgICAgICAgICAgIChuZXh0Q2xpY2spPVwib25OZXh0Q2xpY2soKVwiXHJcbiAgICAgICAgICAgICAgICAgIChwYWdlQ2xpY2spPVwib25QYWdlQ2xpY2soJGV2ZW50KVwiPlxyXG4gICAgICAgICAgPC9jby1wYWdpbmF0aW9uLWJhcj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW1wdHktc3RhdGUtd3JhcHBlclwiICpuZ0lmPVwic2VhcmNoU2VydmljZS50cmFuc2FjdGlvbnMgJiYgc2VhcmNoU2VydmljZS5yZXN1bHRDb3VudCA9PT0gMFwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIFt0ZXh0Q29udGVudF09XCInMF9SRVNVTFRTX0ZPVU5EJyB8IGxvY2FsaXplXCI+PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPGNvLXNoaXBwaW5nLW1ldGhvZC1kaWFsb2dcclxuICAgICAgICAgICAgICAqbmdJZj1cInNob3dTaGlwcGluZ01ldGhvZERpYWxvZ1wiXHJcbiAgICAgICAgICAgICAgW2NhdGVnb3J5XT1cImJhdGNoQ2F0ZWdvcnlcIlxyXG4gICAgICAgICAgICAgIFtzZWxlY3RlZFRyYW5zYWN0aW9uc109XCJzZWxlY3RlZFRyYW5zYWN0aW9uc1wiXHJcbiAgICAgICAgICAgICAgKGNhbmNlbENsaWNrZWQpPVwic2hvd1NoaXBwaW5nTWV0aG9kRGlhbG9nID0gZmFsc2VcIlxyXG4gICAgICAgICAgICAgIChzYXZlQ2xpY2tlZCk9XCJzaGlwcGluZ0RpYWxvZ1NhdmVDbGlja2VkKCRldmVudClcIj5cclxuICAgICAgPC9jby1zaGlwcGluZy1tZXRob2QtZGlhbG9nPlxyXG5cclxuICAgICAgPGNvLWJhdGNoLXByb2Nlc3MtZGlhbG9nXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJzaG93QmF0Y2hQcm9jZXNzRGlhbG9nXCJcclxuICAgICAgICAgICAgICBAZmFkZUluT3V0XHJcbiAgICAgICAgICAgICAgW2JhdGNoSm9iUHJvZ3Jlc3NdPVwiYmF0Y2hKb2JQcm9ncmVzc1wiXHJcbiAgICAgICAgICAgICAgKGNsb3NlKT1cInNob3dCYXRjaFByb2Nlc3NEaWFsb2cgPSBmYWxzZVwiPlxyXG4gICAgICA8L2NvLWJhdGNoLXByb2Nlc3MtZGlhbG9nPlxyXG5cclxuICAgICAgPGNvLXRyYW5zYWN0aW9uLWRhdGUtcGljay1kaWFsb2dcclxuICAgICAgICAgICAgICAqbmdJZj1cInNob3dEYXRlUGlja0RpYWxvZ1wiXHJcbiAgICAgICAgICAgICAgKGNhbmNlbENsaWNrZWQpPVwic2hvd0RhdGVQaWNrRGlhbG9nID0gZmFsc2VcIj5cclxuICAgICAgPC9jby10cmFuc2FjdGlvbi1kYXRlLXBpY2stZGlhbG9nPlxyXG4gIGAsXHJcbiAgYW5pbWF0aW9uczogW1xyXG4gICAgdHJpZ2dlcignZmFkZUluT3V0JywgW1xyXG4gICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXHJcbiAgICAgICAgc3R5bGUoe29wYWNpdHk6IDB9KSxcclxuICAgICAgICBhbmltYXRlKCc1MDBtcyBlYXNlLWluJywgc3R5bGUoe29wYWNpdHk6IDF9KSlcclxuICAgICAgXSksXHJcbiAgICAgIHRyYW5zaXRpb24oJzpsZWF2ZScsIFtcclxuICAgICAgICBhbmltYXRlKCc1MDBtcyBlYXNlLW91dCcsIHN0eWxlKHtvcGFjaXR5OiAwfSkpXHJcbiAgICAgIF0pXHJcbiAgICBdKVxyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7cHJvdmlkZTogQmFzZU1vZHVsZVNjcmVlbkNvbmZpZ1NlcnZpY2UsIHVzZUV4aXN0aW5nOiBUcmFuc2FjdGlvblNjcmVlbkNvbmZpZ3VyYXRpb25TZXJ2aWNlfVxyXG4gIF0sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb25TZWFyY2hSZXN1bHRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBkcmFnZ2FibGVUcmFuc2FjdGlvbnM6IGJvb2xlYW47XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNob3dDaGVja2JveDogYm9vbGVhbjtcclxuXHJcbiAgQElucHV0KClcclxuICBiYXRjaENhdGVnb3J5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGV4dGVuZGVkVHJhbnNhY3Rpb25TZWFyY2g6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IGFjdGl2ZUNvbnRlbnRWaWV3TW9kZSh2YWx1ZTogQ29udGVudFZpZXdNb2RlKSB7XHJcbiAgICB0aGlzLl9hY3RpdmVDb250ZW50Vmlld01vZGUgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgYWN0aXZlQ29udGVudFZpZXdNb2RlKCk6IENvbnRlbnRWaWV3TW9kZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlQ29udGVudFZpZXdNb2RlO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IGZ1bGxzY3JlZW4odmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX2Z1bGxzY3JlZW4gPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZnVsbHNjcmVlbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9mdWxsc2NyZWVuO1xyXG4gIH1cclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHRyYW5zYWN0aW9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxUcmFuc2FjdGlvblNlYXJjaFZpZXc+ID0gbmV3IEV2ZW50RW1pdHRlcjxUcmFuc2FjdGlvblNlYXJjaFZpZXc+KCk7XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuY28tdHJhbnNhY3Rpb24tc2VhcmNoLXJlc3VsdCcpXHJcbiAgcHVibGljIHNob3dDbGFzcygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlYWRvbmx5IGljb246IHR5cGVvZiBJY29uID0gSWNvbjtcclxuICBwdWJsaWMgcmVhZG9ubHkgY29udGVudFZpZXdNb2RlczogdHlwZW9mIENvbnRlbnRWaWV3TW9kZSA9IENvbnRlbnRWaWV3TW9kZTtcclxuXHJcbiAgcHVibGljIHNlbGVjdGVkVHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uU2VhcmNoVmlldztcclxuICBwdWJsaWMgc2NyZWVuQ29uZmlnTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHNhbGVzT3JkZXJzUGFnZUFjdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzaG93UHJvY2Vzc09yZGVyc0xvYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzaG93QmF0Y2hPcHRpb25zOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHNob3dTaGlwcGluZ01ldGhvZERpYWxvZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzaG93RGF0ZVBpY2tEaWFsb2c6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgc2hvd0JhdGNoUHJvY2Vzc0RpYWxvZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBjaGVja2VkQXZhaWxhYmlsaXR5OiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHNlbGVjdGVkVHJhbnNhY3Rpb25zOiBUcmFuc2FjdGlvblNlYXJjaFZpZXdbXSA9IFtdO1xyXG4gIHB1YmxpYyBiYXRjaFRyYW5zYWN0aW9uU2VuZGluZ1JlcXVlc3Q6IEJhdGNoVHJhbnNhY3Rpb25TZW5kaW5nUmVxdWVzdCA9IG5ldyBCYXRjaFRyYW5zYWN0aW9uU2VuZGluZ1JlcXVlc3QoKTtcclxuICBwdWJsaWMgYmF0Y2hKb2JQcm9ncmVzczogQmF0Y2hKb2JQcm9ncmVzc1tdID0gW107XHJcblxyXG4gIHByaXZhdGUgX2FjdGl2ZUNvbnRlbnRWaWV3TW9kZTogQ29udGVudFZpZXdNb2RlO1xyXG4gIHByaXZhdGUgX2Z1bGxzY3JlZW46IGJvb2xlYW47XHJcbiAgcHJpdmF0ZSBfc3ViczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgc2VhcmNoU2VydmljZTogVHJhbnNhY3Rpb25TZWFyY2hTZXJ2aWNlLFxyXG4gICAgcHVibGljIHNjcmVlbkNvbmZpZ1NlcnZpY2U6IFRyYW5zYWN0aW9uU2NyZWVuQ29uZmlndXJhdGlvblNlcnZpY2UsXHJcbiAgICBwdWJsaWMgdHJhbnNhY3Rpb25TZXJ2aWNlOiBUcmFuc2FjdGlvblNlcnZpY2UsXHJcbiAgICBwdWJsaWMgdHJhbnNhY3Rpb25FdmVudFNlcnZpY2U6IFRyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBfZGVsaXZlcnlQbGFubmluZ1NlcnZpY2U6IERlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9zdWJzLnB1c2goXHJcbiAgICAgIHRoaXMuc2VhcmNoU2VydmljZS5zZWFyY2hSZXF1ZXN0U2V0LnN1YnNjcmliZSgocmVxdWVzdDogVHJhbnNhY3Rpb25TZWFyY2hWaWV3UmVxdWVzdCkgPT4ge1xyXG4gICAgICAgIGlmIChyZXF1ZXN0KSB7XHJcbiAgICAgICAgICB0aGlzLnNjcmVlbkNvbmZpZ1NlcnZpY2UubG9hZENvbmZpZyhbcmVxdWVzdC50cmFuc2FjdGlvbktpbmRdKTtcclxuICAgICAgICAgIHRoaXMuc2FsZXNPcmRlcnNQYWdlQWN0aXZlID0gcmVxdWVzdC50cmFuc2FjdGlvbktpbmQgPT09ICdWJztcclxuICAgICAgICAgIGlmICh0aGlzLnNhbGVzT3JkZXJzUGFnZUFjdGl2ZSkge1xyXG4gICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS50cmFuc2FjdGlvbktpbmQgPSBUcmFuc2FjdGlvbktpbmQuU2FsZXNPcmRlcjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pLFxyXG5cclxuICAgICAgdGhpcy5zY3JlZW5Db25maWdTZXJ2aWNlLmNvbmZpZ1NldC5zdWJzY3JpYmUoKGNvbmZpZzogT2JqZWN0Q29uZmlndXJhdGlvbltdKSA9PiB7XHJcbiAgICAgICAgaWYgKGNvbmZpZyAmJiBjb25maWcubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgdGhpcy5zY3JlZW5Db25maWdMb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSksXHJcbiAgICAgIHRoaXMuc2VhcmNoU2VydmljZS5yZXN1bHRzVXBkYXRlZC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLnNhbGVzT3JkZXJzUGFnZUFjdGl2ZSAmJiB0aGlzLnNob3dCYXRjaE9wdGlvbnMpIHtcclxuICAgICAgICAgIHRoaXMubWFya1NlbGVjdGVkVHJhbnNhY3Rpb25zKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KSxcclxuICAgICAgdGhpcy50cmFuc2FjdGlvbkV2ZW50U2VydmljZS5zZWxlY3RlZFRyYW5zcG9ydERheS5zdWJzY3JpYmUoIGFzeW5jICh0cmFuc3BvcnREYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGZpbHRlcmVkVHJhbnNhY3Rpb25zID0gYXdhaXQgUHJvbWlzZS5hbGwoXHJcbiAgICAgICAgICB0aGlzLnNlYXJjaFNlcnZpY2UudHJhbnNhY3Rpb25zLm1hcChhc3luYyAob3JkZXI6IFRyYW5zYWN0aW9uU2VhcmNoVmlldykgPT4ge1xyXG4gICAgICAgICAgICBsZXQgYXZhaWxhYmxlID0gdHJ1ZTtcclxuICAgICAgICAgICAgY29uc3QgcGxhbk9yZGVyID0gYXdhaXQgdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuZ2V0UGxhbk9yZGVyKG9yZGVyLnRyYW5zSWQpO1xyXG5cclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuZGVsaXZlcnlNZXRob2RBdmFpbGFiaWxpdHlDaGVjayhwbGFuT3JkZXIsIGF2YWlsYWJsZSwgdHJhbnNwb3J0RGF5KTtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuZGlzdHJpY3RBdmFpbGFiaWxpdHlDaGVjayhwbGFuT3JkZXIsIGF2YWlsYWJsZSwgdHJhbnNwb3J0RGF5KTtcclxuXHJcbiAgICAgICAgICAgIHJldHVybiBhdmFpbGFibGUgPyBvcmRlciA6IG51bGw7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMuc2VhcmNoU2VydmljZS50cmFuc2FjdGlvbnMgPSBmaWx0ZXJlZFRyYW5zYWN0aW9ucy5maWx0ZXIoKG9yZGVyKTogb3JkZXIgaXMgVHJhbnNhY3Rpb25TZWFyY2hWaWV3ID0+IG9yZGVyICE9PSBudWxsKTtcclxuICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzWydiYXRjaENhdGVnb3J5J10pIHtcclxuICAgICAgdGhpcy5iYXRjaENhdGVnb3J5ID0gY2hhbmdlc1snYmF0Y2hDYXRlZ29yeSddLmN1cnJlbnRWYWx1ZTtcclxuICAgICAgdGhpcy5fc2hvd0JhdGNoT3B0aW9ucyh0aGlzLmJhdGNoQ2F0ZWdvcnkpO1xyXG4gICAgICBpZiAoY2hhbmdlc1snYmF0Y2hDYXRlZ29yeSddLnByZXZpb3VzVmFsdWUgIT09IGNoYW5nZXNbJ2JhdGNoQ2F0ZWdvcnknXS5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgICB0aGlzLl9jbGVhclNlbGVjdGVkKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuX3N1YnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25UcmFuc2FjdGlvbkNsaWNrKHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvblNlYXJjaFZpZXcpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRUcmFuc2FjdGlvbiA9IHRyYW5zYWN0aW9uO1xyXG4gICAgdGhpcy50cmFuc2FjdGlvbkNsaWNrLmVtaXQodHJhbnNhY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uU2VsZWN0ZWRDbGljayh0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb25TZWFyY2hWaWV3KTogdm9pZCB7XHJcbiAgICBpZiAodHJhbnNhY3Rpb24uc2VsZWN0ZWQpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFRyYW5zYWN0aW9ucy5wdXNoKHRyYW5zYWN0aW9uKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IHRyYW5zSWQgPSB0cmFuc2FjdGlvbi50cmFuc0lkO1xyXG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMuc2VsZWN0ZWRUcmFuc2FjdGlvbnMuZmluZEluZGV4KHRyYW5zYWN0aW9uID0+IHRyYW5zYWN0aW9uLnRyYW5zSWQgPT09IHRyYW5zSWQpO1xyXG4gICAgICBpZiAoaW5kZXggIT09IC0xKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRyYW5zYWN0aW9ucy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25QcmV2aW91c0NsaWNrKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWFyY2hTZXJ2aWNlLmN1cnJlbnRQYWdlIC09IDE7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25OZXh0Q2xpY2soKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlYXJjaFNlcnZpY2UuY3VycmVudFBhZ2UgKz0gMTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvblBhZ2VDbGljayhwYWdlTnI6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5zZWFyY2hTZXJ2aWNlLmN1cnJlbnRQYWdlID0gcGFnZU5yO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG1hcmtTZWxlY3RlZFRyYW5zYWN0aW9ucygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNlYXJjaFNlcnZpY2UucmVzdWx0c1VwZGF0ZWQpIHtcclxuICAgICAgdGhpcy5zZWFyY2hTZXJ2aWNlLnRyYW5zYWN0aW9ucy5mb3JFYWNoKHRyYW5zYWN0aW9uID0+IHtcclxuICAgICAgICBjb25zdCBtYXRjaGluZ09iamVjdCA9IHRoaXMuc2VsZWN0ZWRUcmFuc2FjdGlvbnMuZmluZChzZWxlY3RlZFRyYW5zYWN0aW9uID0+IHNlbGVjdGVkVHJhbnNhY3Rpb24udHJhbnNJZCA9PT0gdHJhbnNhY3Rpb24udHJhbnNJZCk7XHJcbiAgICAgICAgaWYgKG1hdGNoaW5nT2JqZWN0KSB7XHJcbiAgICAgICAgICB0cmFuc2FjdGlvbi5zZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBkcmFnU3RhcnRlZChldjogYW55LCB0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb25TZWFyY2hWaWV3KSB7XHJcbiAgICB0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5kcmFnZ2luZyA9IHRydWU7XHJcbiAgICB0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5jdXJyZW50VHJhbnNJZCA9IHRyYW5zYWN0aW9uLnRyYW5zSWQ7XHJcbiAgICBldi5kYXRhVHJhbnNmZXIuc2V0RGF0YSgndGV4dCcsIHRyYW5zYWN0aW9uLnRyYW5zSWQpO1xyXG4gICAgaWYgKCF0aGlzLmNoZWNrZWRBdmFpbGFiaWxpdHkpIHtcclxuICAgICAgbGV0IHBsYW5PcmRlcjogUGxhbk9yZGVyID0gYXdhaXQgdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuZ2V0UGxhbk9yZGVyKHRyYW5zYWN0aW9uLnRyYW5zSWQpO1xyXG4gICAgICB0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5hdmFpbGFiaWxpdHlDaGVja0V2ZW50LmVtaXQocGxhbk9yZGVyKTtcclxuICAgICAgdGhpcy5jaGVja2VkQXZhaWxhYmlsaXR5ID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBkcmFnRW5kKGV2OiBhbnkpIHtcclxuICAgIHRoaXMuX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLmRyYWdnaW5nID0gZmFsc2U7XHJcbiAgICB0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5jdXJyZW50VHJhbnNJZCA9IHVuZGVmaW5lZDtcclxuICAgIGlmICh0aGlzLmNoZWNrZWRBdmFpbGFiaWxpdHkpIHtcclxuICAgICAgdGhpcy5jaGVja2VkQXZhaWxhYmlsaXR5ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLmF2YWlsYWJpbGl0eVJlc2V0RXZlbnQuZW1pdCgpO1xyXG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGNoZWNrSWZTZWxlY3RlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkVHJhbnNhY3Rpb25zLnNvbWUoaXRlbSA9PiBpdGVtLnNlbGVjdGVkKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjaGVja0lmQWxsU2VsZWN0ZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hTZXJ2aWNlLnRyYW5zYWN0aW9ucy5ldmVyeShpdGVtID0+IGl0ZW0uc2VsZWN0ZWQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNob3dBZGRpdGlvbmFsT3B0aW9ucygpOiB2b2lkIHtcclxuICAgIGNvbnN0IHNlbGVjdGVkVHJhbnNhY3Rpb25zSWRzOiBudW1iZXJbXSA9IHRoaXMuc2VsZWN0ZWRUcmFuc2FjdGlvbnMubWFwKHRyYW5zYWN0aW9uID0+IHRyYW5zYWN0aW9uLnRyYW5zSWQpO1xyXG5cclxuICAgIGlmICh0aGlzLmJhdGNoQ2F0ZWdvcnkgPT09ICdhbGxvY2F0ZScgfHwgdGhpcy5iYXRjaENhdGVnb3J5ID09PSAndG9ld2lqemVuJykge1xyXG4gICAgICB0aGlzLnNob3dQcm9jZXNzT3JkZXJzTG9hZGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy50cmFuc2FjdGlvblNlcnZpY2Uuc3RhcnRUb0FsbG9jYXRlVW5BbGxvY2F0ZWRMaW5lc0JhdGNoKHNlbGVjdGVkVHJhbnNhY3Rpb25zSWRzKVxyXG4gICAgICAgIC50aGVuKCgpID0+IHRoaXMuX3Nob3dCYXRjaFByb2Nlc3Nlc1N0YXR1cygpKVxyXG4gICAgICAgIC5jYXRjaCgoKSA9PiB0aGlzLnNob3dQcm9jZXNzT3JkZXJzTG9hZGVyID0gZmFsc2UpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmJhdGNoQ2F0ZWdvcnkgPT09ICd0byBiZSBwaWNrZWQnKSB7XHJcbiAgICAgIHRoaXMuc2hvd1Byb2Nlc3NPcmRlcnNMb2FkZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5zdGFydEdvb2RzVG9CZVBpY2tlZEJhdGNoKHNlbGVjdGVkVHJhbnNhY3Rpb25zSWRzKVxyXG4gICAgICAgIC50aGVuKCgpID0+IHRoaXMuX3Nob3dCYXRjaFByb2Nlc3Nlc1N0YXR1cygpKVxyXG4gICAgICAgIC5jYXRjaCgoKSA9PiB0aGlzLnNob3dQcm9jZXNzT3JkZXJzTG9hZGVyID0gZmFsc2UpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmJhdGNoQ2F0ZWdvcnkgPT09ICdwaWNrZWQnKSB7XHJcbiAgICAgIHRoaXMuc2hvd1Byb2Nlc3NPcmRlcnNMb2FkZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5zdGFydEdvb2RzUGlja2VkQmF0Y2goc2VsZWN0ZWRUcmFuc2FjdGlvbnNJZHMpXHJcbiAgICAgICAgLnRoZW4oKCkgPT4gdGhpcy5fc2hvd0JhdGNoUHJvY2Vzc2VzU3RhdHVzKCkpXHJcbiAgICAgICAgLmNhdGNoKCgpID0+IHRoaXMuc2hvd1Byb2Nlc3NPcmRlcnNMb2FkZXIgPSBmYWxzZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNob3dTaGlwcGluZ01ldGhvZERpYWxvZyA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25Ub2dnbGVBbGxPcmRlcnMoYWxsU2VsZWN0ZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuc2VhcmNoU2VydmljZS50cmFuc2FjdGlvbnMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgaXRlbS5zZWxlY3RlZCA9ICFhbGxTZWxlY3RlZDtcclxuICAgICAgY29uc3QgdHJhbnNhY3Rpb25FeGlzdHM6IGJvb2xlYW4gPSB0aGlzLnNlbGVjdGVkVHJhbnNhY3Rpb25zLnNvbWUodHJhbnMgPT4gdHJhbnMudHJhbnNJZCA9PT0gaXRlbS50cmFuc0lkKTtcclxuICAgICAgaWYgKCFhbGxTZWxlY3RlZCAmJiAhdHJhbnNhY3Rpb25FeGlzdHMpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVHJhbnNhY3Rpb25zLnB1c2goaXRlbSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGFsbFNlbGVjdGVkKSB7XHJcbiAgICAgICAgY29uc3QgdHJhbnNhY3Rpb25JbmRleCA9IHRoaXMuc2VsZWN0ZWRUcmFuc2FjdGlvbnMuZmluZEluZGV4KHRyYW5zID0+IHRyYW5zLnRyYW5zSWQgPT09IGl0ZW0udHJhbnNJZCk7XHJcbiAgICAgICAgaWYgKHRyYW5zYWN0aW9uSW5kZXggIT09IC0xKSB7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkVHJhbnNhY3Rpb25zLnNwbGljZSh0cmFuc2FjdGlvbkluZGV4LCAxKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNoaXBwaW5nRGlhbG9nU2F2ZUNsaWNrZWQocmVxdWVzdDogQmF0Y2hUcmFuc2FjdGlvblNlbmRpbmdSZXF1ZXN0KTogdm9pZCB7XHJcbiAgICB0aGlzLmJhdGNoVHJhbnNhY3Rpb25TZW5kaW5nUmVxdWVzdCA9IHJlcXVlc3Q7XHJcbiAgICB0aGlzLnNob3dTaGlwcGluZ01ldGhvZERpYWxvZyA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93UHJvY2Vzc09yZGVyc0xvYWRlciA9IHRydWU7XHJcblxyXG4gICAgaWYgKHRoaXMuYmF0Y2hDYXRlZ29yeSA9PT0gJ292ZXJ2aWV3JyB8fCB0aGlzLmJhdGNoQ2F0ZWdvcnkgPT09ICdvdmVyemljaHQnKSB7XHJcbiAgICAgIHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLnN0YXJ0T3JkZXJDb25maXJtYXRpb25CYXRjaCh0aGlzLmJhdGNoVHJhbnNhY3Rpb25TZW5kaW5nUmVxdWVzdClcclxuICAgICAgICAudGhlbigoKSA9PiB0aGlzLl9zaG93QmF0Y2hQcm9jZXNzZXNTdGF0dXMoKSlcclxuICAgICAgICAuY2F0Y2goKCkgPT4gdGhpcy5zaG93UHJvY2Vzc09yZGVyc0xvYWRlciA9IGZhbHNlKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5iYXRjaENhdGVnb3J5ID09PSAncHVyY2hhc2UnIHx8IHRoaXMuYmF0Y2hDYXRlZ29yeSA9PT0gJ2lua29vcCcpIHtcclxuICAgICAgdGhpcy50cmFuc2FjdGlvblNlcnZpY2Uuc3RhcnRQdXJjaGFzZU9yZGVyRm9ybUJhdGNoKHRoaXMuYmF0Y2hUcmFuc2FjdGlvblNlbmRpbmdSZXF1ZXN0KVxyXG4gICAgICAgIC50aGVuKCgpID0+IHRoaXMuX3Nob3dCYXRjaFByb2Nlc3Nlc1N0YXR1cygpKVxyXG4gICAgICAgIC5jYXRjaCgoKSA9PiB0aGlzLnNob3dQcm9jZXNzT3JkZXJzTG9hZGVyID0gZmFsc2UpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmJhdGNoQ2F0ZWdvcnkgPT09ICdkZWxpdmVyeSBvcmRlcicgfHwgdGhpcy5iYXRjaENhdGVnb3J5ID09PSAnYWZsZXZlcmJvbicpIHtcclxuICAgICAgdGhpcy50cmFuc2FjdGlvblNlcnZpY2Uuc3RhcnREZWxpdmVyeU5vdGVzQmF0Y2godGhpcy5iYXRjaFRyYW5zYWN0aW9uU2VuZGluZ1JlcXVlc3QpXHJcbiAgICAgICAgLnRoZW4oKCkgPT4gdGhpcy5fc2hvd0JhdGNoUHJvY2Vzc2VzU3RhdHVzKCkpXHJcbiAgICAgICAgLmNhdGNoKCgpID0+IHRoaXMuc2hvd1Byb2Nlc3NPcmRlcnNMb2FkZXIgPSBmYWxzZSk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuYmF0Y2hDYXRlZ29yeSA9PT0gJ2ludm9pY2UnIHx8IHRoaXMuYmF0Y2hDYXRlZ29yeSA9PT0gJ2ZhY3R1dXInKSB7XHJcbiAgICAgIHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLnN0YXJ0SW52b2ljZUJhdGNoKHRoaXMuYmF0Y2hUcmFuc2FjdGlvblNlbmRpbmdSZXF1ZXN0KVxyXG4gICAgICAgIC50aGVuKCgpID0+IHRoaXMuX3Nob3dCYXRjaFByb2Nlc3Nlc1N0YXR1cygpKVxyXG4gICAgICAgIC5jYXRjaCgoKSA9PiB0aGlzLnNob3dQcm9jZXNzT3JkZXJzTG9hZGVyID0gZmFsc2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2hvd0JhdGNoT3B0aW9ucyhjYXRlZ29yeTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnNob3dCYXRjaE9wdGlvbnMgPSBbJ292ZXJ2aWV3JywgJ3B1cmNoYXNlJywgJ2FsbG9jYXRlJywgJ3RvIGJlIHBpY2tlZCcsICdwaWNrZWQnLCAnZGVsaXZlcnkgb3JkZXInLCAnaW52b2ljZScsICdvdmVyemljaHQnLCAnaW5rb29wJywgJ3RvZXdpanplbicsICdhZmxldmVyYm9uJywgJ2ZhY3R1dXInXS5pbmNsdWRlcyhjYXRlZ29yeSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zaG93QmF0Y2hQcm9jZXNzZXNTdGF0dXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNob3dQcm9jZXNzT3JkZXJzTG9hZGVyID0gZmFsc2U7XHJcbiAgICB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5nZXRCYXRjaEpvYlByb2dyZXNzZXNGb3JUaGVVc2VyKCkudGhlbigoYmF0Y2hKb2JQcm9ncmVzc2VzOiBCYXRjaEpvYlByb2dyZXNzW10pID0+IHtcclxuICAgICAgdGhpcy5iYXRjaEpvYlByb2dyZXNzID0gYmF0Y2hKb2JQcm9ncmVzc2VzO1xyXG4gICAgICB0aGlzLnNob3dCYXRjaFByb2Nlc3NEaWFsb2cgPSB0cnVlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jbGVhclNlbGVjdGVkKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWFyY2hTZXJ2aWNlLnRyYW5zYWN0aW9ucy5mb3JFYWNoKGl0ZW0gPT4gaXRlbS5zZWxlY3RlZCA9IGZhbHNlKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRUcmFuc2FjdGlvbnMgPSBbXTtcclxuICB9XHJcbn1cclxuIl19
370
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tc2VhcmNoLXJlc3VsdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cmFuc2FjdGlvbi9zcmMvbGliL2NvbXBvbmVudC90cmFuc2FjdGlvbi1zZWFyY2gvdHJhbnNhY3Rpb24tc2VhcmNoLXJlc3VsdC90cmFuc2FjdGlvbi1zZWFyY2gtcmVzdWx0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBZ0MsTUFBTSxFQUFpQixpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVySyxPQUFPLEVBQUMsNkJBQTZCLEVBQUUsZUFBZSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDNUYsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQzdDLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBQy9FLE9BQU8sRUFBQyxxQ0FBcUMsRUFBQyxNQUFNLDJEQUEyRCxDQUFDO0FBR2hILE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLDJEQUEyRCxDQUFDO0FBQ2xHLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ3hFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwyREFBMkQsQ0FBQztBQUMxRixPQUFPLEVBQUMsOEJBQThCLEVBQUMsTUFBTSx3RUFBd0UsQ0FBQztBQUV0SCxPQUFPLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFHeEUsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sNENBQTRDLENBQUM7QUFrSG5GLE1BQU0sT0FBTyxnQ0FBZ0M7SUEyRDNDLFlBQ1MsYUFBdUMsRUFDdkMsbUJB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RUFBQyxPQUFPLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQzt5QkFDOUMsQ0FBQzt3QkFDRixVQUFVLENBQUMsUUFBUSxFQUFFOzRCQUNuQixPQUFPLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLEVBQUMsT0FBTyxFQUFFLENBQUMsRUFBQyxDQUFDLENBQUM7eUJBQy9DLENBQUM7cUJBQ0gsQ0FBQztpQkFDSDtnQkFDRCxTQUFTLEVBQUU7b0JBQ1QsRUFBQyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsV0FBVyxFQUFFLHFDQUFxQyxFQUFDO2lCQUM3RjtnQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTthQUN0Qzs7O1lBN0hPLHdCQUF3QjtZQUN4QixxQ0FBcUM7WUFJckMsa0JBQWtCO1lBT2xCLHVCQUF1QjtZQWhCdkIsaUJBQWlCO1lBUWpCLHVCQUF1Qjs7O29DQTJINUIsS0FBSzsyQkFHTCxLQUFLOzRCQUdMLEtBQUs7d0NBR0wsS0FBSztvQ0FHTCxLQUFLO3lCQVNMLEtBQUs7K0JBU0wsTUFBTTt3QkFHTixXQUFXLFNBQUMsb0NBQW9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25TZWFyY2hWaWV3fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tc2VhcmNoLXZpZXcuYm8nO1xyXG5pbXBvcnQge0Jhc2VNb2R1bGVTY3JlZW5Db25maWdTZXJ2aWNlLCBDb250ZW50Vmlld01vZGV9IGZyb20gJ0Bjb2xpam5pdC9jb3JlY29tcG9uZW50c192MTInO1xyXG5pbXBvcnQge0ljb259IGZyb20gJy4uLy4uLy4uL2VudW0vaWNvbi5lbnVtJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvblNlYXJjaFNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24tc2VhcmNoLnNlcnZpY2UnO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uU2NyZWVuQ29uZmlndXJhdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24tc2NyZWVuLWNvbmZpZ3VyYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvblNlYXJjaFZpZXdSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tc2VhcmNoLXZpZXctcmVxdWVzdCc7XHJcbmltcG9ydCB7RGVsaXZlcnlQbGFubmluZ1NlcnZpY2V9IGZyb20gJy4uLy4uL2RlbGl2ZXJ5LXBsYW5uaW5nL3NlcnZpY2UvZGVsaXZlcnktcGxhbm5pbmcuc2VydmljZSc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL3RyYW5zYWN0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uS2luZH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL2VudW0vdHJhbnNhY3Rpb24ta2luZC5lbnVtJztcclxuaW1wb3J0IHtCYXRjaFRyYW5zYWN0aW9uU2VuZGluZ1JlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9iYXRjaC10cmFuc2FjdGlvbi1zZW5kaW5nLXJlcXVlc3QnO1xyXG5pbXBvcnQge0JhdGNoSm9iUHJvZ3Jlc3N9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9iYXRjaC1qb2ItcHJvZ3Jlc3MuYm8nO1xyXG5pbXBvcnQge2FuaW1hdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcclxuaW1wb3J0IHtPYmplY3RDb25maWd1cmF0aW9ufSBmcm9tICdAY29saWpuaXQvaW9uZWNvbm5lY3Rvci9idWlsZC9tb2RlbC9vYmplY3QtY29uZmlndXJhdGlvbic7XHJcbmltcG9ydCB7UGxhbk9yZGVyfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGxhbi1vcmRlci5ibyc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25FdmVudFNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24tZXZlbnQuc2VydmljZSc7XHJcbmltcG9ydCB7UGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGxhbm5pbmctdHJhbnNwb3J0LXdlZWstZGF5LmJvJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY28tdHJhbnNhY3Rpb24tc2VhcmNoLXJlc3VsdCcsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNjcmVlbkNvbmZpZ0xvYWRlZFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbnMtd3JhcHBlclwiXHJcbiAgICAgICAgICAgICAgICpuZ0lmPVwic2VhcmNoU2VydmljZS50cmFuc2FjdGlvbnM/Lmxlbmd0aCA+IDAgJiYgc2FsZXNPcmRlcnNQYWdlQWN0aXZlICYmIHNob3dCYXRjaE9wdGlvbnNcIj5cclxuICAgICAgICAgICAgICA8Y28taW5wdXQtY2hlY2tib3hcclxuICAgICAgICAgICAgICAgICAgICAgIFttb2RlbF09XCJjaGVja0lmQWxsU2VsZWN0ZWQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiY2hlY2tJZkFsbFNlbGVjdGVkKCkgPyAnREVTRUxFQ1RfQUxMJyA6ICdTRUxFQ1RfQUxMX09SREVSUycgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwib25Ub2dnbGVBbGxPcmRlcnMoY2hlY2tJZkFsbFNlbGVjdGVkKCkpXCI+XHJcbiAgICAgICAgICAgICAgPC9jby1pbnB1dC1jaGVja2JveD5cclxuICAgICAgICAgICAgICA8Y28tcXVpY2stc2VuZC1idXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY2hlY2tJZlNlbGVjdGVkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3Nob3dTZW5kTWV0aG9kRGlhbG9nSWNvbl09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbc2hvd0xvYWRlcl09XCJzaG93UHJvY2Vzc09yZGVyc0xvYWRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoc2VuZEljb25DbGlja2VkKT1cInNob3dBZGRpdGlvbmFsT3B0aW9ucygpXCI+XHJcbiAgICAgICAgICAgICAgPC9jby1xdWljay1zZW5kLWJ1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cmFuc2FjdGlvbi1zZWFyY2gtcmVzdWx0LWNvbnRlbnQtdGlsZXMtd3JhcHBlclwiIFtuZ0NsYXNzXT1cImZ1bGxzY3JlZW4gPyAnZnVsbHNjcmVlbicgOiAnc2lkZWJhcidcIlxyXG4gICAgICAgICAgICAgICAqbmdJZj1cImFjdGl2ZUNvbnRlbnRWaWV3TW9kZSA9PT0gY29udGVudFZpZXdNb2Rlcy5UaWxlcyAmJiAhZXh0ZW5kZWRUcmFuc2FjdGlvblNlYXJjaFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cmFuc2FjdGlvbi10aWxlXCIgKm5nRm9yPVwibGV0IHRyYW5zYWN0aW9uIG9mIHNlYXJjaFNlcnZpY2UudHJhbnNhY3Rpb25zXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxjby10cmFuc2FjdGlvbi1zZWFyY2gtdGlsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtkcmFnZ2FibGVdPVwiZHJhZ2dhYmxlVHJhbnNhY3Rpb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZHJhZ3N0YXJ0KT1cImRyYWdTdGFydGVkKCRldmVudCwgdHJhbnNhY3Rpb24pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZHJhZ2VuZCk9XCJkcmFnRW5kKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFt0cmFuc2FjdGlvbl09XCJ0cmFuc2FjdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dDaGVja2JveF09XCJzYWxlc09yZGVyc1BhZ2VBY3RpdmUgJiYgc2hvd0JhdGNoT3B0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cInRyYW5zYWN0aW9uLnNlbGVjdGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwidHJhbnNhY3Rpb24gPT09IHNlbGVjdGVkVHJhbnNhY3Rpb24gPyAnc2VsZWN0ZWQnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICh0cmFuc2FjdGlvbkNsaWNrKT1cIm9uVHJhbnNhY3Rpb25DbGljaygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWRDbGljayk9XCJvblNlbGVjdGVkQ2xpY2soJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L2NvLXRyYW5zYWN0aW9uLXNlYXJjaC10aWxlPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRyYW5zYWN0aW9uLXNlYXJjaC1yZXN1bHQtY29udGVudC1ncmlkLXdyYXBwZXJcIlxyXG4gICAgICAgICAgICAgICAqbmdJZj1cImFjdGl2ZUNvbnRlbnRWaWV3TW9kZSA9PT0gY29udGVudFZpZXdNb2Rlcy5HcmlkICYmICFleHRlbmRlZFRyYW5zYWN0aW9uU2VhcmNoXCI+XHJcbiAgICAgICAgICAgICAgPGNvLXRyYW5zYWN0aW9uLXNlYXJjaC1ncmlkXHJcbiAgICAgICAgICAgICAgICAgICAgICBbc2hvd0NoZWNrYm94XT1cInNhbGVzT3JkZXJzUGFnZUFjdGl2ZSAmJiBzaG93QmF0Y2hPcHRpb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICh0cmFuc2FjdGlvbkNsaWNrKT1cIm9uVHJhbnNhY3Rpb25DbGljaygkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgPC9jby10cmFuc2FjdGlvbi1zZWFyY2gtZ3JpZD5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cmFuc2FjdGlvbi1leHRlbmRlZC1zZWFyY2gtcmVzdWx0LXRpbGUtd3JhcHBlclwiICpuZ0lmPVwiZXh0ZW5kZWRUcmFuc2FjdGlvblNlYXJjaFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cmFuc2FjdGlvbi10aWxlXCIgKm5nRm9yPVwibGV0IHRyYW5zYWN0aW9uIG9mIHNlYXJjaFNlcnZpY2UudHJhbnNhY3Rpb25zXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxjby10cmFuc2FjdGlvbi1zZWFyY2gtc2FsZXMtbGluZS1zZWxlY3QtdGlsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFt0cmFuc2FjdGlvbl09XCJ0cmFuc2FjdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyYW5zYWN0aW9uQ2xpY2spPVwib25UcmFuc2FjdGlvbkNsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3RlZENsaWNrKT1cIm9uU2VsZWN0ZWRDbGljaygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbZXh0ZW5kZWRUcmFuc2FjdGlvblNlYXJjaF09XCJleHRlbmRlZFRyYW5zYWN0aW9uU2VhcmNoXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvY28tdHJhbnNhY3Rpb24tc2VhcmNoLXNhbGVzLWxpbmUtc2VsZWN0LXRpbGU+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8Y28tcGFnaW5hdGlvbi1iYXJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzZWFyY2hTZXJ2aWNlLnRyYW5zYWN0aW9ucz8ubGVuZ3RoID4gMFwiXHJcbiAgICAgICAgICAgICAgICAgIFtjdXJyZW50UGFnZV09XCJzZWFyY2hTZXJ2aWNlLmN1cnJlbnRQYWdlXCJcclxuICAgICAgICAgICAgICAgICAgW2l0ZW1zUGVyUGFnZV09XCJzZWFyY2hTZXJ2aWNlLnRyYW5zYWN0aW9uc1BlclBhZ2VcIlxyXG4gICAgICAgICAgICAgICAgICBbdG90YWxJdGVtc109XCJzZWFyY2hTZXJ2aWNlLnJlc3VsdENvdW50XCJcclxuICAgICAgICAgICAgICAgICAgW3ByZXZpb3VzTGFiZWxdPVwiJ1BSRVZJT1VTJyB8IGxvY2FsaXplXCJcclxuICAgICAgICAgICAgICAgICAgW25leHRMYWJlbF09XCInTkVYVCcgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgICAgICAgIFthdXRvSGlkZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgW2RpcmVjdGlvbkxpbmtzXT1cImZ1bGxzY3JlZW5cIlxyXG4gICAgICAgICAgICAgICAgICBbcGFnaW5hdGlvblJhbmdlXT1cIiFmdWxsc2NyZWVuID8gNiA6IDhcIlxyXG4gICAgICAgICAgICAgICAgICAocHJldmlvdXNDbGljayk9XCJvblByZXZpb3VzQ2xpY2soKVwiXHJcbiAgICAgICAgICAgICAgICAgIChuZXh0Q2xpY2spPVwib25OZXh0Q2xpY2soKVwiXHJcbiAgICAgICAgICAgICAgICAgIChwYWdlQ2xpY2spPVwib25QYWdlQ2xpY2soJGV2ZW50KVwiPlxyXG4gICAgICAgICAgPC9jby1wYWdpbmF0aW9uLWJhcj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW1wdHktc3RhdGUtd3JhcHBlclwiICpuZ0lmPVwic2VhcmNoU2VydmljZS50cmFuc2FjdGlvbnMgJiYgc2VhcmNoU2VydmljZS5yZXN1bHRDb3VudCA9PT0gMFwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIFt0ZXh0Q29udGVudF09XCInMF9SRVNVTFRTX0ZPVU5EJyB8IGxvY2FsaXplXCI+PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPGNvLXNoaXBwaW5nLW1ldGhvZC1kaWFsb2dcclxuICAgICAgICAgICAgICAqbmdJZj1cInNob3dTaGlwcGluZ01ldGhvZERpYWxvZ1wiXHJcbiAgICAgICAgICAgICAgW2NhdGVnb3J5XT1cImJhdGNoQ2F0ZWdvcnlcIlxyXG4gICAgICAgICAgICAgIFtzZWxlY3RlZFRyYW5zYWN0aW9uc109XCJzZWxlY3RlZFRyYW5zYWN0aW9uc1wiXHJcbiAgICAgICAgICAgICAgKGNhbmNlbENsaWNrZWQpPVwic2hvd1NoaXBwaW5nTWV0aG9kRGlhbG9nID0gZmFsc2VcIlxyXG4gICAgICAgICAgICAgIChzYXZlQ2xpY2tlZCk9XCJzaGlwcGluZ0RpYWxvZ1NhdmVDbGlja2VkKCRldmVudClcIj5cclxuICAgICAgPC9jby1zaGlwcGluZy1tZXRob2QtZGlhbG9nPlxyXG5cclxuICAgICAgPGNvLWJhdGNoLXByb2Nlc3MtZGlhbG9nXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJzaG93QmF0Y2hQcm9jZXNzRGlhbG9nXCJcclxuICAgICAgICAgICAgICBAZmFkZUluT3V0XHJcbiAgICAgICAgICAgICAgW2JhdGNoSm9iUHJvZ3Jlc3NdPVwiYmF0Y2hKb2JQcm9ncmVzc1wiXHJcbiAgICAgICAgICAgICAgKGNsb3NlKT1cInNob3dCYXRjaFByb2Nlc3NEaWFsb2cgPSBmYWxzZVwiPlxyXG4gICAgICA8L2NvLWJhdGNoLXByb2Nlc3MtZGlhbG9nPlxyXG5cclxuICAgICAgPGNvLXRyYW5zYWN0aW9uLWRhdGUtcGljay1kaWFsb2dcclxuICAgICAgICAgICAgICAqbmdJZj1cInNob3dEYXRlUGlja0RpYWxvZ1wiXHJcbiAgICAgICAgICAgICAgKGNhbmNlbENsaWNrZWQpPVwic2hvd0RhdGVQaWNrRGlhbG9nID0gZmFsc2VcIj5cclxuICAgICAgPC9jby10cmFuc2FjdGlvbi1kYXRlLXBpY2stZGlhbG9nPlxyXG4gIGAsXHJcbiAgYW5pbWF0aW9uczogW1xyXG4gICAgdHJpZ2dlcignZmFkZUluT3V0JywgW1xyXG4gICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXHJcbiAgICAgICAgc3R5bGUoe29wYWNpdHk6IDB9KSxcclxuICAgICAgICBhbmltYXRlKCc1MDBtcyBlYXNlLWluJywgc3R5bGUoe29wYWNpdHk6IDF9KSlcclxuICAgICAgXSksXHJcbiAgICAgIHRyYW5zaXRpb24oJzpsZWF2ZScsIFtcclxuICAgICAgICBhbmltYXRlKCc1MDBtcyBlYXNlLW91dCcsIHN0eWxlKHtvcGFjaXR5OiAwfSkpXHJcbiAgICAgIF0pXHJcbiAgICBdKVxyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7cHJvdmlkZTogQmFzZU1vZHVsZVNjcmVlbkNvbmZpZ1NlcnZpY2UsIHVzZUV4aXN0aW5nOiBUcmFuc2FjdGlvblNjcmVlbkNvbmZpZ3VyYXRpb25TZXJ2aWNlfVxyXG4gIF0sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb25TZWFyY2hSZXN1bHRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBkcmFnZ2FibGVUcmFuc2FjdGlvbnM6IGJvb2xlYW47XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNob3dDaGVja2JveDogYm9vbGVhbjtcclxuXHJcbiAgQElucHV0KClcclxuICBiYXRjaENhdGVnb3J5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGV4dGVuZGVkVHJhbnNhY3Rpb25TZWFyY2g6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IGFjdGl2ZUNvbnRlbnRWaWV3TW9kZSh2YWx1ZTogQ29udGVudFZpZXdNb2RlKSB7XHJcbiAgICB0aGlzLl9hY3RpdmVDb250ZW50Vmlld01vZGUgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgYWN0aXZlQ29udGVudFZpZXdNb2RlKCk6IENvbnRlbnRWaWV3TW9kZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlQ29udGVudFZpZXdNb2RlO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IGZ1bGxzY3JlZW4odmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX2Z1bGxzY3JlZW4gPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZnVsbHNjcmVlbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9mdWxsc2NyZWVuO1xyXG4gIH1cclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHRyYW5zYWN0aW9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxUcmFuc2FjdGlvblNlYXJjaFZpZXc+ID0gbmV3IEV2ZW50RW1pdHRlcjxUcmFuc2FjdGlvblNlYXJjaFZpZXc+KCk7XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuY28tdHJhbnNhY3Rpb24tc2VhcmNoLXJlc3VsdCcpXHJcbiAgcHVibGljIHNob3dDbGFzcygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlYWRvbmx5IGljb246IHR5cGVvZiBJY29uID0gSWNvbjtcclxuICBwdWJsaWMgcmVhZG9ubHkgY29udGVudFZpZXdNb2RlczogdHlwZW9mIENvbnRlbnRWaWV3TW9kZSA9IENvbnRlbnRWaWV3TW9kZTtcclxuXHJcbiAgcHVibGljIHNlbGVjdGVkVHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uU2VhcmNoVmlldztcclxuICBwdWJsaWMgc2NyZWVuQ29uZmlnTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHNhbGVzT3JkZXJzUGFnZUFjdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzaG93UHJvY2Vzc09yZGVyc0xvYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzaG93QmF0Y2hPcHRpb25zOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHNob3dTaGlwcGluZ01ldGhvZERpYWxvZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzaG93RGF0ZVBpY2tEaWFsb2c6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgc2hvd0JhdGNoUHJvY2Vzc0RpYWxvZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBjaGVja2VkQXZhaWxhYmlsaXR5OiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHNlbGVjdGVkVHJhbnNhY3Rpb25zOiBUcmFuc2FjdGlvblNlYXJjaFZpZXdbXSA9IFtdO1xyXG4gIHB1YmxpYyBiYXRjaFRyYW5zYWN0aW9uU2VuZGluZ1JlcXVlc3Q6IEJhdGNoVHJhbnNhY3Rpb25TZW5kaW5nUmVxdWVzdCA9IG5ldyBCYXRjaFRyYW5zYWN0aW9uU2VuZGluZ1JlcXVlc3QoKTtcclxuICBwdWJsaWMgYmF0Y2hKb2JQcm9ncmVzczogQmF0Y2hKb2JQcm9ncmVzc1tdID0gW107XHJcblxyXG4gIHByaXZhdGUgX2FjdGl2ZUNvbnRlbnRWaWV3TW9kZTogQ29udGVudFZpZXdNb2RlO1xyXG4gIHByaXZhdGUgX2Z1bGxzY3JlZW46IGJvb2xlYW47XHJcbiAgcHJpdmF0ZSBfc3ViczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgc2VhcmNoU2VydmljZTogVHJhbnNhY3Rpb25TZWFyY2hTZXJ2aWNlLFxyXG4gICAgcHVibGljIHNjcmVlbkNvbmZpZ1NlcnZpY2U6IFRyYW5zYWN0aW9uU2NyZWVuQ29uZmlndXJhdGlvblNlcnZpY2UsXHJcbiAgICBwdWJsaWMgdHJhbnNhY3Rpb25TZXJ2aWNlOiBUcmFuc2FjdGlvblNlcnZpY2UsXHJcbiAgICBwdWJsaWMgdHJhbnNhY3Rpb25FdmVudFNlcnZpY2U6IFRyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBfZGVsaXZlcnlQbGFubmluZ1NlcnZpY2U6IERlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9zdWJzLnB1c2goXHJcbiAgICAgIHRoaXMuc2VhcmNoU2VydmljZS5zZWFyY2hSZXF1ZXN0U2V0LnN1YnNjcmliZSgocmVxdWVzdDogVHJhbnNhY3Rpb25TZWFyY2hWaWV3UmVxdWVzdCkgPT4ge1xyXG4gICAgICAgIGlmIChyZXF1ZXN0KSB7XHJcbiAgICAgICAgICB0aGlzLnNjcmVlbkNvbmZpZ1NlcnZpY2UubG9hZENvbmZpZyhbcmVxdWVzdC50cmFuc2FjdGlvbktpbmRdKTtcclxuICAgICAgICAgIHRoaXMuc2FsZXNPcmRlcnNQYWdlQWN0aXZlID0gcmVxdWVzdC50cmFuc2FjdGlvbktpbmQgPT09ICdWJztcclxuICAgICAgICAgIGlmICh0aGlzLnNhbGVzT3JkZXJzUGFnZUFjdGl2ZSkge1xyXG4gICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS50cmFuc2FjdGlvbktpbmQgPSBUcmFuc2FjdGlvbktpbmQuU2FsZXNPcmRlcjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pLFxyXG5cclxuICAgICAgdGhpcy5zY3JlZW5Db25maWdTZXJ2aWNlLmNvbmZpZ1NldC5zdWJzY3JpYmUoKGNvbmZpZzogT2JqZWN0Q29uZmlndXJhdGlvbltdKSA9PiB7XHJcbiAgICAgICAgaWYgKGNvbmZpZyAmJiBjb25maWcubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgdGhpcy5zY3JlZW5Db25maWdMb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSksXHJcbiAgICAgIHRoaXMuc2VhcmNoU2VydmljZS5yZXN1bHRzVXBkYXRlZC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLnNhbGVzT3JkZXJzUGFnZUFjdGl2ZSAmJiB0aGlzLnNob3dCYXRjaE9wdGlvbnMpIHtcclxuICAgICAgICAgIHRoaXMubWFya1NlbGVjdGVkVHJhbnNhY3Rpb25zKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KSxcclxuICAgICAgdGhpcy50cmFuc2FjdGlvbkV2ZW50U2VydmljZS5zZWxlY3RlZFRyYW5zcG9ydERheS5zdWJzY3JpYmUoIGFzeW5jICh0cmFuc3BvcnREYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSkgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKHRoaXMuc2VhcmNoU2VydmljZS50cmFuc2FjdGlvbnMubGVuZ3RoKTtcclxuICAgICAgICBjb25zdCBmaWx0ZXJlZFRyYW5zYWN0aW9ucyA9IGF3YWl0IFByb21pc2UuYWxsKFxyXG4gICAgICAgICAgdGhpcy5zZWFyY2hTZXJ2aWNlLnRyYW5zYWN0aW9ucy5tYXAoYXN5bmMgKG9yZGVyOiBUcmFuc2FjdGlvblNlYXJjaFZpZXcpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgcGxhbk9yZGVyID0gYXdhaXQgdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuZ2V0UGxhbk9yZGVyKG9yZGVyLnRyYW5zSWQpO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgaXNBdmFpbGFibGU6IGJvb2xlYW4gPVxyXG4gICAgICAgICAgICAgIGF3YWl0IHRoaXMuX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLmRlbGl2ZXJ5TWV0aG9kQXZhaWxhYmlsaXR5Q2hlY2socGxhbk9yZGVyLCB0cmFuc3BvcnREYXkpICYmXHJcbiAgICAgICAgICAgICAgYXdhaXQgdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuZGlzdHJpY3RBdmFpbGFiaWxpdHlDaGVjayhwbGFuT3JkZXIsIHRyYW5zcG9ydERheSkgJiZcclxuICAgICAgICAgICAgICB0cmFuc3BvcnREYXkuYXZhaWxhYmxlT25EYXRlO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuIGlzQXZhaWxhYmxlID8gb3JkZXIgOiBudWxsO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLnNlYXJjaFNlcnZpY2UudHJhbnNhY3Rpb25zID0gZmlsdGVyZWRUcmFuc2FjdGlvbnMuZmlsdGVyKChvcmRlcik6IG9yZGVyIGlzIFRyYW5zYWN0aW9uU2VhcmNoVmlldyA9PiBvcmRlciAhPT0gbnVsbCk7XHJcblxyXG4gICAgICAgIGNvbnNvbGUubG9nKHRoaXMuc2VhcmNoU2VydmljZS50cmFuc2FjdGlvbnMubGVuZ3RoKTtcclxuICAgIH0pLFxyXG4gICAgICB0aGlzLnRyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlLnJlc2V0VHJhbnNwb3J0RGF5RmlsdGVyZWRPcmRlcnMuc3Vic2NyaWJlKCBhc3luYyBldmVudCA9PiB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5zZWFyY2hTZXJ2aWNlLnNlYXJjaFRyYW5zYWN0aW9ucygpO1xyXG4gICAgICB9KVxyXG4gICAgICBcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbJ2JhdGNoQ2F0ZWdvcnknXSkge1xyXG4gICAgICB0aGlzLmJhdGNoQ2F0ZWdvcnkgPSBjaGFuZ2VzWydiYXRjaENhdGVnb3J5J10uY3VycmVudFZhbHVlO1xyXG4gICAgICB0aGlzLl9zaG93QmF0Y2hPcHRpb25zKHRoaXMuYmF0Y2hDYXRlZ29yeSk7XHJcbiAgICAgIGlmIChjaGFuZ2VzWydiYXRjaENhdGVnb3J5J10ucHJldmlvdXNWYWx1ZSAhPT0gY2hhbmdlc1snYmF0Y2hDYXRlZ29yeSddLmN1cnJlbnRWYWx1ZSkge1xyXG4gICAgICAgIHRoaXMuX2NsZWFyU2VsZWN0ZWQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5fc3Vicy5mb3JFYWNoKHMgPT4gcy51bnN1YnNjcmliZSgpKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvblRyYW5zYWN0aW9uQ2xpY2sodHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uU2VhcmNoVmlldyk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZFRyYW5zYWN0aW9uID0gdHJhbnNhY3Rpb247XHJcbiAgICB0aGlzLnRyYW5zYWN0aW9uQ2xpY2suZW1pdCh0cmFuc2FjdGlvbik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25TZWxlY3RlZENsaWNrKHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvblNlYXJjaFZpZXcpOiB2b2lkIHtcclxuICAgIGlmICh0cmFuc2FjdGlvbi5zZWxlY3RlZCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkVHJhbnNhY3Rpb25zLnB1c2godHJhbnNhY3Rpb24pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgdHJhbnNJZCA9IHRyYW5zYWN0aW9uLnRyYW5zSWQ7XHJcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5zZWxlY3RlZFRyYW5zYWN0aW9ucy5maW5kSW5kZXgodHJhbnNhY3Rpb24gPT4gdHJhbnNhY3Rpb24udHJhbnNJZCA9PT0gdHJhbnNJZCk7XHJcbiAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVHJhbnNhY3Rpb25zLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBvblByZXZpb3VzQ2xpY2soKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlYXJjaFNlcnZpY2UuY3VycmVudFBhZ2UgLT0gMTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbk5leHRDbGljaygpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VhcmNoU2VydmljZS5jdXJyZW50UGFnZSArPSAxO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uUGFnZUNsaWNrKHBhZ2VOcjogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlYXJjaFNlcnZpY2UuY3VycmVudFBhZ2UgPSBwYWdlTnI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbWFya1NlbGVjdGVkVHJhbnNhY3Rpb25zKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc2VhcmNoU2VydmljZS5yZXN1bHRzVXBkYXRlZCkge1xyXG4gICAgICB0aGlzLnNlYXJjaFNlcnZpY2UudHJhbnNhY3Rpb25zLmZvckVhY2godHJhbnNhY3Rpb24gPT4ge1xyXG4gICAgICAgIGNvbnN0IG1hdGNoaW5nT2JqZWN0ID0gdGhpcy5zZWxlY3RlZFRyYW5zYWN0aW9ucy5maW5kKHNlbGVjdGVkVHJhbnNhY3Rpb24gPT4gc2VsZWN0ZWRUcmFuc2FjdGlvbi50cmFuc0lkID09PSB0cmFuc2FjdGlvbi50cmFuc0lkKTtcclxuICAgICAgICBpZiAobWF0Y2hpbmdPYmplY3QpIHtcclxuICAgICAgICAgIHRyYW5zYWN0aW9uLnNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGRyYWdTdGFydGVkKGV2OiBhbnksIHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvblNlYXJjaFZpZXcpIHtcclxuICAgIHRoaXMuX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLmRyYWdnaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLmN1cnJlbnRUcmFuc0lkID0gdHJhbnNhY3Rpb24udHJhbnNJZDtcclxuICAgIGV2LmRhdGFUcmFuc2Zlci5zZXREYXRhKCd0ZXh0JywgdHJhbnNhY3Rpb24udHJhbnNJZCk7XHJcbiAgICBpZiAoIXRoaXMuY2hlY2tlZEF2YWlsYWJpbGl0eSkge1xyXG4gICAgICBsZXQgcGxhbk9yZGVyOiBQbGFuT3JkZXIgPSBhd2FpdCB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5nZXRQbGFuT3JkZXIodHJhbnNhY3Rpb24udHJhbnNJZCk7XHJcbiAgICAgIHRoaXMuX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLmF2YWlsYWJpbGl0eUNoZWNrRXZlbnQuZW1pdChwbGFuT3JkZXIpO1xyXG4gICAgICB0aGlzLmNoZWNrZWRBdmFpbGFiaWxpdHkgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGRyYWdFbmQoZXY6IGFueSkge1xyXG4gICAgdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuZHJhZ2dpbmcgPSBmYWxzZTtcclxuICAgIHRoaXMuX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLmN1cnJlbnRUcmFuc0lkID0gdW5kZWZpbmVkO1xyXG4gICAgaWYgKHRoaXMuY2hlY2tlZEF2YWlsYWJpbGl0eSkge1xyXG4gICAgICB0aGlzLmNoZWNrZWRBdmFpbGFiaWxpdHkgPSBmYWxzZTtcclxuICAgICAgdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuYXZhaWxhYmlsaXR5UmVzZXRFdmVudC5lbWl0KCk7XHJcbiAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2hlY2tJZlNlbGVjdGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRUcmFuc2FjdGlvbnMuc29tZShpdGVtID0+IGl0ZW0uc2VsZWN0ZWQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNoZWNrSWZBbGxTZWxlY3RlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnNlYXJjaFNlcnZpY2UudHJhbnNhY3Rpb25zLmV2ZXJ5KGl0ZW0gPT4gaXRlbS5zZWxlY3RlZCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2hvd0FkZGl0aW9uYWxPcHRpb25zKCk6IHZvaWQge1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRUcmFuc2FjdGlvbnNJZHM6IG51bWJlcltdID0gdGhpcy5zZWxlY3RlZFRyYW5zYWN0aW9ucy5tYXAodHJhbnNhY3Rpb24gPT4gdHJhbnNhY3Rpb24udHJhbnNJZCk7XHJcblxyXG4gICAgaWYgKHRoaXMuYmF0Y2hDYXRlZ29yeSA9PT0gJ2FsbG9jYXRlJyB8fCB0aGlzLmJhdGNoQ2F0ZWdvcnkgPT09ICd0b2V3aWp6ZW4nKSB7XHJcbiAgICAgIHRoaXMuc2hvd1Byb2Nlc3NPcmRlcnNMb2FkZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5zdGFydFRvQWxsb2NhdGVVbkFsbG9jYXRlZExpbmVzQmF0Y2goc2VsZWN0ZWRUcmFuc2FjdGlvbnNJZHMpXHJcbiAgICAgICAgLnRoZW4oKCkgPT4gdGhpcy5fc2hvd0JhdGNoUHJvY2Vzc2VzU3RhdHVzKCkpXHJcbiAgICAgICAgLmNhdGNoKCgpID0+IHRoaXMuc2hvd1Byb2Nlc3NPcmRlcnNMb2FkZXIgPSBmYWxzZSk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuYmF0Y2hDYXRlZ29yeSA9PT0gJ3RvIGJlIHBpY2tlZCcpIHtcclxuICAgICAgdGhpcy5zaG93UHJvY2Vzc09yZGVyc0xvYWRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLnN0YXJ0R29vZHNUb0JlUGlja2VkQmF0Y2goc2VsZWN0ZWRUcmFuc2FjdGlvbnNJZHMpXHJcbiAgICAgICAgLnRoZW4oKCkgPT4gdGhpcy5fc2hvd0JhdGNoUHJvY2Vzc2VzU3RhdHVzKCkpXHJcbiAgICAgICAgLmNhdGNoKCgpID0+IHRoaXMuc2hvd1Byb2Nlc3NPcmRlcnNMb2FkZXIgPSBmYWxzZSk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuYmF0Y2hDYXRlZ29yeSA9PT0gJ3BpY2tlZCcpIHtcclxuICAgICAgdGhpcy5zaG93UHJvY2Vzc09yZGVyc0xvYWRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLnN0YXJ0R29vZHNQaWNrZWRCYXRjaChzZWxlY3RlZFRyYW5zYWN0aW9uc0lkcylcclxuICAgICAgICAudGhlbigoKSA9PiB0aGlzLl9zaG93QmF0Y2hQcm9jZXNzZXNTdGF0dXMoKSlcclxuICAgICAgICAuY2F0Y2goKCkgPT4gdGhpcy5zaG93UHJvY2Vzc09yZGVyc0xvYWRlciA9IGZhbHNlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2hvd1NoaXBwaW5nTWV0aG9kRGlhbG9nID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBvblRvZ2dsZUFsbE9yZGVycyhhbGxTZWxlY3RlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5zZWFyY2hTZXJ2aWNlLnRyYW5zYWN0aW9ucy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICBpdGVtLnNlbGVjdGVkID0gIWFsbFNlbGVjdGVkO1xyXG4gICAgICBjb25zdCB0cmFuc2FjdGlvbkV4aXN0czogYm9vbGVhbiA9IHRoaXMuc2VsZWN0ZWRUcmFuc2FjdGlvbnMuc29tZSh0cmFucyA9PiB0cmFucy50cmFuc0lkID09PSBpdGVtLnRyYW5zSWQpO1xyXG4gICAgICBpZiAoIWFsbFNlbGVjdGVkICYmICF0cmFuc2FjdGlvbkV4aXN0cykge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUcmFuc2FjdGlvbnMucHVzaChpdGVtKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoYWxsU2VsZWN0ZWQpIHtcclxuICAgICAgICBjb25zdCB0cmFuc2FjdGlvbkluZGV4ID0gdGhpcy5zZWxlY3RlZFRyYW5zYWN0aW9ucy5maW5kSW5kZXgodHJhbnMgPT4gdHJhbnMudHJhbnNJZCA9PT0gaXRlbS50cmFuc0lkKTtcclxuICAgICAgICBpZiAodHJhbnNhY3Rpb25JbmRleCAhPT0gLTEpIHtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUcmFuc2FjdGlvbnMuc3BsaWNlKHRyYW5zYWN0aW9uSW5kZXgsIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2hpcHBpbmdEaWFsb2dTYXZlQ2xpY2tlZChyZXF1ZXN0OiBCYXRjaFRyYW5zYWN0aW9uU2VuZGluZ1JlcXVlc3QpOiB2b2lkIHtcclxuICAgIHRoaXMuYmF0Y2hUcmFuc2FjdGlvblNlbmRpbmdSZXF1ZXN0ID0gcmVxdWVzdDtcclxuICAgIHRoaXMuc2hvd1NoaXBwaW5nTWV0aG9kRGlhbG9nID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dQcm9jZXNzT3JkZXJzTG9hZGVyID0gdHJ1ZTtcclxuXHJcbiAgICBpZiAodGhpcy5iYXRjaENhdGVnb3J5ID09PSAnb3ZlcnZpZXcnIHx8IHRoaXMuYmF0Y2hDYXRlZ29yeSA9PT0gJ292ZXJ6aWNodCcpIHtcclxuICAgICAgdGhpcy50cmFuc2FjdGlvblNlcnZpY2Uuc3RhcnRPcmRlckNvbmZpcm1hdGlvbkJhdGNoKHRoaXMuYmF0Y2hUcmFuc2FjdGlvblNlbmRpbmdSZXF1ZXN0KVxyXG4gICAgICAgIC50aGVuKCgpID0+IHRoaXMuX3Nob3dCYXRjaFByb2Nlc3Nlc1N0YXR1cygpKVxyXG4gICAgICAgIC5jYXRjaCgoKSA9PiB0aGlzLnNob3dQcm9jZXNzT3JkZXJzTG9hZGVyID0gZmFsc2UpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmJhdGNoQ2F0ZWdvcnkgPT09ICdwdXJjaGFzZScgfHwgdGhpcy5iYXRjaENhdGVnb3J5ID09PSAnaW5rb29wJykge1xyXG4gICAgICB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5zdGFydFB1cmNoYXNlT3JkZXJGb3JtQmF0Y2godGhpcy5iYXRjaFRyYW5zYWN0aW9uU2VuZGluZ1JlcXVlc3QpXHJcbiAgICAgICAgLnRoZW4oKCkgPT4gdGhpcy5fc2hvd0JhdGNoUHJvY2Vzc2VzU3RhdHVzKCkpXHJcbiAgICAgICAgLmNhdGNoKCgpID0+IHRoaXMuc2hvd1Byb2Nlc3NPcmRlcnNMb2FkZXIgPSBmYWxzZSk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuYmF0Y2hDYXRlZ29yeSA9PT0gJ2RlbGl2ZXJ5IG9yZGVyJyB8fCB0aGlzLmJhdGNoQ2F0ZWdvcnkgPT09ICdhZmxldmVyYm9uJykge1xyXG4gICAgICB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5zdGFydERlbGl2ZXJ5Tm90ZXNCYXRjaCh0aGlzLmJhdGNoVHJhbnNhY3Rpb25TZW5kaW5nUmVxdWVzdClcclxuICAgICAgICAudGhlbigoKSA9PiB0aGlzLl9zaG93QmF0Y2hQcm9jZXNzZXNTdGF0dXMoKSlcclxuICAgICAgICAuY2F0Y2goKCkgPT4gdGhpcy5zaG93UHJvY2Vzc09yZGVyc0xvYWRlciA9IGZhbHNlKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5iYXRjaENhdGVnb3J5ID09PSAnaW52b2ljZScgfHwgdGhpcy5iYXRjaENhdGVnb3J5ID09PSAnZmFjdHV1cicpIHtcclxuICAgICAgdGhpcy50cmFuc2FjdGlvblNlcnZpY2Uuc3RhcnRJbnZvaWNlQmF0Y2godGhpcy5iYXRjaFRyYW5zYWN0aW9uU2VuZGluZ1JlcXVlc3QpXHJcbiAgICAgICAgLnRoZW4oKCkgPT4gdGhpcy5fc2hvd0JhdGNoUHJvY2Vzc2VzU3RhdHVzKCkpXHJcbiAgICAgICAgLmNhdGNoKCgpID0+IHRoaXMuc2hvd1Byb2Nlc3NPcmRlcnNMb2FkZXIgPSBmYWxzZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zaG93QmF0Y2hPcHRpb25zKGNhdGVnb3J5OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuc2hvd0JhdGNoT3B0aW9ucyA9IFsnb3ZlcnZpZXcnLCAncHVyY2hhc2UnLCAnYWxsb2NhdGUnLCAndG8gYmUgcGlja2VkJywgJ3BpY2tlZCcsICdkZWxpdmVyeSBvcmRlcicsICdpbnZvaWNlJywgJ292ZXJ6aWNodCcsICdpbmtvb3AnLCAndG9ld2lqemVuJywgJ2FmbGV2ZXJib24nLCAnZmFjdHV1ciddLmluY2x1ZGVzKGNhdGVnb3J5KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3Nob3dCYXRjaFByb2Nlc3Nlc1N0YXR1cygpOiB2b2lkIHtcclxuICAgIHRoaXMuc2hvd1Byb2Nlc3NPcmRlcnNMb2FkZXIgPSBmYWxzZTtcclxuICAgIHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLmdldEJhdGNoSm9iUHJvZ3Jlc3Nlc0ZvclRoZVVzZXIoKS50aGVuKChiYXRjaEpvYlByb2dyZXNzZXM6IEJhdGNoSm9iUHJvZ3Jlc3NbXSkgPT4ge1xyXG4gICAgICB0aGlzLmJhdGNoSm9iUHJvZ3Jlc3MgPSBiYXRjaEpvYlByb2dyZXNzZXM7XHJcbiAgICAgIHRoaXMuc2hvd0JhdGNoUHJvY2Vzc0RpYWxvZyA9IHRydWU7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NsZWFyU2VsZWN0ZWQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlYXJjaFNlcnZpY2UudHJhbnNhY3Rpb25zLmZvckVhY2goaXRlbSA9PiBpdGVtLnNlbGVjdGVkID0gZmFsc2UpO1xyXG4gICAgdGhpcy5zZWxlY3RlZFRyYW5zYWN0aW9ucyA9IFtdO1xyXG4gIH1cclxufVxyXG4iXX0=