@colijnit/transaction 258.1.6 → 258.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (21) hide show
  1. package/bundles/colijnit-transaction.umd.js +99 -53
  2. package/bundles/colijnit-transaction.umd.js.map +1 -1
  3. package/colijnit-transaction.metadata.json +1 -1
  4. package/esm2015/lib/component/delivery-planning/service/delivery-planning.service.js +5 -3
  5. package/esm2015/lib/component/delivery-planning-main/component/delivery-planning-overview/component/delivery-planning-overview-tile/delivery-planning-overview-tile.component.js +6 -8
  6. package/esm2015/lib/component/delivery-planning-main/component/delivery-planning-overview/delivery-planning-overview.component.js +5 -2
  7. package/esm2015/lib/component/transaction-line/transaction-planning-line/components/transaction-planning-line-planned-resource/transaction-planning-line-planned-resource.component.js +1 -2
  8. package/esm2015/lib/component/transaction-line/transaction-planning-line/transaction-planning-line.component.js +25 -12
  9. package/esm2015/lib/component/transaction-search/transaction-search-result/transaction-search-result.component.js +7 -5
  10. package/esm2015/lib/service/transaction-event.service.js +2 -1
  11. package/esm2015/lib/transaction-version.js +3 -3
  12. package/fesm2015/colijnit-transaction.js +46 -28
  13. package/fesm2015/colijnit-transaction.js.map +1 -1
  14. package/lib/component/delivery-planning/service/delivery-planning.service.d.ts +2 -2
  15. package/lib/component/delivery-planning-main/component/delivery-planning-overview/component/delivery-planning-overview-tile/delivery-planning-overview-tile.component.d.ts +2 -2
  16. package/lib/component/transaction-line/transaction-planning-line/components/transaction-planning-line-planned-resource/style/_layout.scss +1 -0
  17. package/lib/component/transaction-line/transaction-planning-line/style/_layout.scss +6 -0
  18. package/lib/component/transaction-line/transaction-planning-line/transaction-planning-line.component.d.ts +1 -0
  19. package/lib/service/transaction-event.service.d.ts +1 -0
  20. package/package.json +1 -1
  21. package/colijnit-transaction-258.1.5.tgz +0 -0
@@ -262,8 +262,9 @@ export class DeliveryPlanningService {
262
262
  // Swap positions in the array
263
263
  [array[index], array[newIndex]] = [array[newIndex], array[index]];
264
264
  }
265
- deliveryMethodAvailabilityCheck(planOrder, available, transportDay) {
265
+ deliveryMethodAvailabilityCheck(planOrder, transportDay) {
266
266
  return __awaiter(this, void 0, void 0, function* () {
267
+ let available = true;
267
268
  if (available) {
268
269
  if (!planOrder.partDelivery) {
269
270
  if (!transportDay.deliveryMethods.find(method => method === planOrder.deliveryMethod.toString())) {
@@ -285,10 +286,11 @@ export class DeliveryPlanningService {
285
286
  }
286
287
  });
287
288
  }
288
- districtAvailabilityCheck(planOrder, available, transportDay) {
289
+ districtAvailabilityCheck(planOrder, transportDay) {
289
290
  return __awaiter(this, void 0, void 0, function* () {
290
291
  //If true: you can plan without rayons/districts. Orders without districts can go everywhere in this case. Does it have districts that it needs to match a district in the plan resource.
291
292
  //If false: orders without district can not be planned. On a plan resource without districts you can't plan. Other than that same rules apply.
293
+ let available = true;
292
294
  if (available) {
293
295
  if (!this.planRayon) {
294
296
  if (!planOrder.districts || planOrder.districts.length) {
@@ -320,4 +322,4 @@ DeliveryPlanningService.decorators = [
320
322
  DeliveryPlanningService.ctorParameters = () => [
321
323
  { type: TransactionConnectorService }
322
324
  ];
323
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsaXZlcnktcGxhbm5pbmcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RyYW5zYWN0aW9uL3NyYy9saWIvY29tcG9uZW50L2RlbGl2ZXJ5LXBsYW5uaW5nL3NlcnZpY2UvZGVsaXZlcnktcGxhbm5pbmcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFlBQVksRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkQsT0FBTyxFQUFDLDJCQUEyQixFQUFDLE1BQU0sZ0RBQWdELENBQUM7QUFDM0YsT0FBTyxFQUFDLDZCQUE2QixFQUFDLE1BQU0scURBQXFELENBQUM7QUFDbEcsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ3hELE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLGlEQUFpRCxDQUFDO0FBRTFGLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx3REFBd0QsQ0FBQztBQUVwRixPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxzRUFBc0UsQ0FBQztBQUUvRyxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUVqRixPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSxxRUFBcUUsQ0FBQztBQUM3RyxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxnRUFBZ0UsQ0FBQztBQU1wRyxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxpREFBaUQsQ0FBQztBQUUxRixPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDOzs7QUFLN0IsTUFBTSxPQUFPLHVCQUF1QjtJQXdGbEMsWUFDVSxZQUF5QztRQUF6QyxpQkFBWSxHQUFaLFlBQVksQ0FBNkI7UUF4RjNDLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFDM0IsdUJBQWtCLEdBQTRCLEVBQUUsQ0FBQztRQUNqRCwwQkFBcUIsR0FB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LFNBQVMsQ0FBQzthQUNsQjtRQUNILENBQUM7S0FBQTs7OztZQXZWRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQXhCTywyQkFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0V2ZW50RW1pdHRlciwgSW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25Db25uZWN0b3JTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL3RyYW5zYWN0aW9uLWNvbm5lY3Rvci5zZXJ2aWNlJztcclxuaW1wb3J0IHtEZWxpdmVyeVBsYW5uaW5nQ2FsZW5kYXJNb2Rlc30gZnJvbSAnLi4vLi4vLi4vZW51bS9kZWxpdmVyeS1wbGFubmluZy1jYWxlbmRhci1tb2Rlcy5lbnVtJztcclxuaW1wb3J0IHtDYWxlbmRhclZpZXd9IGZyb20gJ0Bjb2xpam5pdC9zaGFyZWRjb21wb25lbnRzJztcclxuaW1wb3J0IHtEZWxpdmVyeVBsYW5uaW5nVmlld01vZGVzfSBmcm9tICcuLi8uLi8uLi9lbnVtL2RlbGl2ZXJ5LXBsYW5uaW5nLXZpZXctbW9kZXMuZW51bSc7XHJcbmltcG9ydCB7UGxhbm5pbmd9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wbGFubmluZy5ibyc7XHJcbmltcG9ydCB7U2VxdWVuY2VOYW1lfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvZW51bS9zZXF1ZW5jZS1uYW1lLmVudW0nO1xyXG5pbXBvcnQge1BsYW5uaW5nVHJhbnNwb3J0V2Vla0RheX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BsYW5uaW5nLXRyYW5zcG9ydC13ZWVrLWRheS5ibyc7XHJcbmltcG9ydCB7R2V0VHJhbnNwb3J0T3JkZXJzUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2dldC10cmFuc3BvcnQtb3JkZXJzLXJlcXVlc3QuYm8nO1xyXG5pbXBvcnQge1BsYW5uaW5nVHJhbnNwb3J0V2Vla30gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BsYW5uaW5nLXRyYW5zcG9ydC13ZWVrLmJvJztcclxuaW1wb3J0IHtEZWxpdmVyeVBsYW5uaW5nTW9kZXN9IGZyb20gJy4uLy4uLy4uL2VudW0vZGVsaXZlcnktcGxhbm5pbmctbW9kZXMuZW51bSc7XHJcbmltcG9ydCB7UGxhbk9yZGVyfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGxhbi1vcmRlci5ibyc7XHJcbmltcG9ydCB7T3JkZXJMaW5lc1BsYW5uZWRSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvb3JkZXItbGluZXMtcGxhbm5lZC1yZXF1ZXN0LmJvJztcclxuaW1wb3J0IHtQbGFubmluZ0ZpbHRlck9iamVjdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BsYW5uaW5nLWZpbHRlci1vYmplY3QuYm8nO1xyXG5pbXBvcnQge0RlbGl2ZXJ5TWV0aG9kfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZGVsaXZlcnktbWV0aG9kLmJvJztcclxuaW1wb3J0IHtEaXN0cmljdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2Rpc3RyaWN0LmJvJztcclxuaW1wb3J0IHtTa2lsbH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3NraWxsLmJvJztcclxuaW1wb3J0IHtSZWxhdGlvbkxpc3RPYmplY3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9yZWxhdGlvbi1saXN0LW9iamVjdC5ibyc7XHJcbmltcG9ydCB7VXNlckdyb3VwfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdXNlci1ncm91cC5ibyc7XHJcbmltcG9ydCB7RGVsaXZlcnlQbGFubmluZ1RpbGVNb2Rlc30gZnJvbSAnLi4vLi4vLi4vZW51bS9kZWxpdmVyeS1wbGFubmluZy10aWxlLW1vZGVzLmVudW0nO1xyXG5pbXBvcnQge1BsYW5PcmRlckxpbmV9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wbGFuLW9yZGVyLWxpbmUuYm8nO1xyXG5pbXBvcnQge1N1YmplY3R9IGZyb20gJ3J4anMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRGVsaXZlcnlQbGFubmluZ1NlcnZpY2Uge1xyXG4gIHByaXZhdGUgX2RyYWdnaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfcGxhblRyYW5zcG9ydFdlZWs6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla1tdID0gW107XHJcbiAgcHJpdmF0ZSBfcGxhblRyYW5zcG9ydFdlZWtBcnI6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdW10gPSBbXTtcclxuXHJcbiAgcHJpdmF0ZSBfZGVsaXZlcnlNZXRob2RzOiBEZWxpdmVyeU1ldGhvZFtdID0gW107XHJcbiAgcHJpdmF0ZSBfZGlzdHJpY3RzOiBEaXN0cmljdFtdID0gW107XHJcbiAgcHJpdmF0ZSBfc2tpbGxzOiBTa2lsbFtdID0gW107XHJcbiAgcHJpdmF0ZSBfZW1wbG95ZWVzOiBSZWxhdGlvbkxpc3RPYmplY3RbXSA9IFtdO1xyXG4gIHByaXZhdGUgX3VzZXJHcm91cHM6IFVzZXJHcm91cFtdID0gW107XHJcblxyXG4gIHB1YmxpYyBjdXJyZW50Q2FsZW5kYXJNb2RlOiBEZWxpdmVyeVBsYW5uaW5nQ2FsZW5kYXJNb2RlcyA9IERlbGl2ZXJ5UGxhbm5pbmdDYWxlbmRhck1vZGVzLldlZWs7XHJcbiAgcHVibGljIGN1cnJlbnRUaWxlTW9kZTogRGVsaXZlcnlQbGFubmluZ1RpbGVNb2RlcyA9IERlbGl2ZXJ5UGxhbm5pbmdUaWxlTW9kZXMuTm9ybWFsO1xyXG4gIHB1YmxpYyBkYXRlUGxhbm5pbmdNb2RlOiBDYWxlbmRhclZpZXcgPSBDYWxlbmRhclZpZXcuV2Vla1ZpZXc7XHJcbiAgcHVibGljIHZpZXdNb2RlOiBEZWxpdmVyeVBsYW5uaW5nVmlld01vZGVzID0gRGVsaXZlcnlQbGFubmluZ1ZpZXdNb2Rlcy5GdWxsc2NyZWVuO1xyXG4gIHB1YmxpYyBjdXJyZW50UGxhbm5pbmdNb2RlOiBEZWxpdmVyeVBsYW5uaW5nTW9kZXMgPSBEZWxpdmVyeVBsYW5uaW5nTW9kZXMuVHJhbnNhY3Rpb247XHJcbiAgcHVibGljIGN1cnJlbnRQbGFubmluZzogUGxhbm5pbmc7XHJcbiAgcHVibGljIGN1cnJlbnRTdGFydERhdGU6IERhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gIHB1YmxpYyBwbGFuT3JkZXJEYXRlOiBEYXRlO1xyXG4gIHB1YmxpYyBjdXJyZW50VHJhbnNJZDogbnVtYmVyO1xyXG4gIHB1YmxpYyBkZWxldGluZ09yZGVyOiBQbGFuT3JkZXI7XHJcbiAgcHVibGljIGxpbmVzUGxhbk9yZGVyOiBQbGFuT3JkZXI7XHJcbiAgcHVibGljIGF2YWlsYWJpbGl0eUNoZWNrRXZlbnQ6IEV2ZW50RW1pdHRlcjxQbGFuT3JkZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxQbGFuT3JkZXI+KCk7XHJcbiAgcHVibGljIGF2YWlsYWJpbGl0eVJlc2V0RXZlbnQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICBwdWJsaWMgcmVSZW5kZXJIb3VyU2NoZWR1bGluZzogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgcHVibGljIG1vdmluZ1RyYW5zSWQ6IG51bWJlcjtcclxuICBwdWJsaWMgcmVsYXRpb25JZDogbnVtYmVyO1xyXG4gIHB1YmxpYyBlbXBsb3llZVZpZXc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgdHJpcHR5Y2hNb2RlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHBsYW5SYXlvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBsc3BNb2RlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHB1YmxpYyBnZXQgZHJhZ2dpbmcoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZHJhZ2dpbmc7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHBsYW5UcmFuc3BvcnRXZWVrKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BsYW5UcmFuc3BvcnRXZWVrO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBwbGFuVHJhbnNwb3J0V2Vla0FycigpOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXVtdIHtcclxuICAgIHJldHVybiB0aGlzLl9wbGFuVHJhbnNwb3J0V2Vla0FycjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZGVsaXZlcnlNZXRob2RzKCk6IERlbGl2ZXJ5TWV0aG9kW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RlbGl2ZXJ5TWV0aG9kcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZGlzdHJpY3RzKCk6IERpc3RyaWN0W10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Rpc3RyaWN0cztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZW1wbG95ZWVzKCk6IFJlbGF0aW9uTGlzdE9iamVjdFtdIHtcclxuICAgIHJldHVybiB0aGlzLl9lbXBsb3llZXM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHNraWxscygpOiBTa2lsbFtdIHtcclxuICAgIHJldHVybiB0aGlzLl9za2lsbHM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHVzZXJHcm91cHMoKTogVXNlckdyb3VwW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3VzZXJHcm91cHM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0IGRyYWdnaW5nKHZhbHVlKSB7XHJcbiAgICB0aGlzLl9kcmFnZ2luZyA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldCBkZWxpdmVyeU1ldGhvZHMobWV0aG9kczogRGVsaXZlcnlNZXRob2RbXSkge1xyXG4gICAgdGhpcy5fZGVsaXZlcnlNZXRob2RzID0gbWV0aG9kcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXQgZGlzdHJpY3RzKGRpc3RyaWN0czogRGlzdHJpY3RbXSkge1xyXG4gICAgdGhpcy5fZGlzdHJpY3RzID0gZGlzdHJpY3RzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldCBlbXBsb3llZXMoZW1wbG95ZWVzOiBSZWxhdGlvbkxpc3RPYmplY3RbXSkge1xyXG4gICAgdGhpcy5fZW1wbG95ZWVzID0gZW1wbG95ZWVzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldCBza2lsbHMoc2tpbGxzOiBTa2lsbFtdKSB7XHJcbiAgICB0aGlzLl9za2lsbHMgPSBza2lsbHM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0IHVzZXJHcm91cHMoZ3JvdXBzOiBVc2VyR3JvdXBbXSkge1xyXG4gICAgdGhpcy5fdXNlckdyb3VwcyA9IGdyb3VwcztcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfdHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uQ29ubmVjdG9yU2VydmljZVxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldE9yZGVyU2VxdWVuY2VWYWx1ZSgpOiBQcm9taXNlPG51bWJlcj4ge1xyXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX3RyYW5zYWN0aW9uLmdldFNlcXVlbmNlVmFsdWUoU2VxdWVuY2VOYW1lLlBsYW5MaW5lKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRUcmFuc3BvcnRPcmRlcnMocGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXkpOiBQcm9taXNlPFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheT4ge1xyXG4gICAgaWYgKHBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheS50cmFuc3BvcnQpIHtcclxuICAgICAgbGV0IHJlcXVlc3Q6IEdldFRyYW5zcG9ydE9yZGVyc1JlcXVlc3QgPSBuZXcgR2V0VHJhbnNwb3J0T3JkZXJzUmVxdWVzdCgpO1xyXG4gICAgICByZXF1ZXN0LnRyYW5zcG9ydElkID0gcGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5LnRyYW5zcG9ydC50cmFuc3BvcnRJZDtcclxuICAgICAgcmVxdWVzdC5kYXRlID0gcGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5LmRhdGU7XHJcbiAgICAgIHJlcXVlc3QucGxhbm5pbmdJZCA9IHRoaXMuY3VycmVudFBsYW5uaW5nLnBsYW5uaW5nSWQ7XHJcbiAgICAgIGNvbnN0IG9yZGVyUmVzcG9uc2UgPSBhd2FpdCB0aGlzLl90cmFuc2FjdGlvbi5nZXRUcmFuc3BvcnRPcmRlcnMocmVxdWVzdCk7XHJcbiAgICAgIGlmIChvcmRlclJlc3BvbnNlICYmIG9yZGVyUmVzcG9uc2UubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheS5wbGFubmVkT3JkZXJzID0gb3JkZXJSZXNwb25zZTtcclxuICAgICAgICBwbGFubmluZ1RyYW5zcG9ydFdlZWtEYXkub3JkZXJzTG9hZGVkID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBwbGFubmluZ1RyYW5zcG9ydFdlZWtEYXk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0T3JkZXJMaW5lc1BsYW5uZWQob3JkZXI6IFBsYW5PcmRlcik6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgbGV0IHJlcXVlc3Q6IE9yZGVyTGluZXNQbGFubmVkUmVxdWVzdCA9IG5ldyBPcmRlckxpbmVzUGxhbm5lZFJlcXVlc3QoKTtcclxuICAgIGxldCBmaWx0ZXJPYmo6IFBsYW5uaW5nRmlsdGVyT2JqZWN0ID0gbmV3IFBsYW5uaW5nRmlsdGVyT2JqZWN0KCk7XHJcbiAgICByZXF1ZXN0LnBsYW5uZWQgPSB0cnVlO1xyXG4gICAgcmVxdWVzdC5wbGFubmluZ0lkID0gdGhpcy5jdXJyZW50UGxhbm5pbmcucGxhbm5pbmdJZDtcclxuICAgIHJlcXVlc3QudHJhbnNJZCA9IG9yZGVyLnRyYW5zSWQ7XHJcbiAgICByZXF1ZXN0LnBsYW5uZWRMaW5lSWQgPSBvcmRlci5wbGFubmVkTGluZUlkO1xyXG4gICAgZmlsdGVyT2JqLm9ubHlDdXJyZW50V2VlayA9IHRydWU7XHJcbiAgICBmaWx0ZXJPYmouYmVnaW5DdXJyZW50V2VlayA9IG5ldyBEYXRlKCk7XHJcbiAgICBmaWx0ZXJPYmouY2hlY2tPcmRlckxpbmVzID0gMTtcclxuICAgIHJlcXVlc3QuZmlsdGVyT2JqZWN0ID0gZmlsdGVyT2JqO1xyXG4gICAgaWYgKCFvcmRlci5saW5lcykge1xyXG4gICAgICBvcmRlci5saW5lcyA9IFtdO1xyXG4gICAgfVxyXG4gICAgb3JkZXIubGluZXMucHVzaCguLi5hd2FpdCB0aGlzLl90cmFuc2FjdGlvbi5nZXRPcmRlckxpbmVzUGxhbm5lZChyZXF1ZXN0KSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0U2VxdWVuY2VPcmRlclZhbHVlKG9yZGVyOiBQbGFuT3JkZXIpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIG9yZGVyLnBsYW5uZWRMaW5lSWQgPSBhd2FpdCB0aGlzLmdldE9yZGVyU2VxdWVuY2VWYWx1ZSgpO1xyXG4gICAgb3JkZXIuY2hhaW5lZCA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldFBsYW5uaW5nVHJhbnNwb3J0V2VlaygpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICh0aGlzLmVtcGxveWVlVmlldyAmJiB0aGlzLnJlbGF0aW9uSWQpIHtcclxuICAgICAgdGhpcy5fdHJhbnNhY3Rpb24uZ2V0UGxhbm5lZExpbmVzRm9yRW1wbG95ZWUodGhpcy5jdXJyZW50UGxhbm5pbmcucGxhbm5pbmdJZCwgdGhpcy5yZWxhdGlvbklkLCB0aGlzLmN1cnJlbnRTdGFydERhdGUpLnRoZW4oKHJlc3VsdDogUGxhbm5pbmdUcmFuc3BvcnRXZWVrW10pID0+IHtcclxuICAgICAgICB0aGlzLl9wbGFuVHJhbnNwb3J0V2VlayA9IHJlc3VsdDtcclxuICAgICAgICB0aGlzLl9wbGFuVHJhbnNwb3J0V2Vla0FyciA9IHRoaXMuY29udmVydFBsYW5uaW5nVHJhbnNwb3J0V2Vla1RvQXJyYXkodGhpcy5fcGxhblRyYW5zcG9ydFdlZWspO1xyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fdHJhbnNhY3Rpb24uZ2V0UGxhblRyYW5zcG9ydFdlZWsodGhpcy5jdXJyZW50U3RhcnREYXRlLCB0aGlzLmN1cnJlbnRQbGFubmluZy5wbGFubmluZ0lkKS50aGVuKChyZXN1bHQ6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla1tdKSA9PiB7XHJcbiAgICAgIGlmIChyZXN1bHQubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMuX3BsYW5UcmFuc3BvcnRXZWVrID0gcmVzdWx0O1xyXG4gICAgICAgIHRoaXMuX3BsYW5UcmFuc3BvcnRXZWVrQXJyID0gdGhpcy5jb252ZXJ0UGxhbm5pbmdUcmFuc3BvcnRXZWVrVG9BcnJheSh0aGlzLl9wbGFuVHJhbnNwb3J0V2Vlayk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHVwZGF0ZVBsYW5uaW5nVHJhbnNwb3J0VmFsdWVzKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgLy8gR2V0IG5ldyBwbGFubmluZyB0cmFuc3BvcnQgd2VlayBkYXRhIGZyb20gdGhlIGJhY2tlbmRcclxuICAgIGxldCBuZXdQbGFubmluZ1RyYW5zcG9ydFdlZWs6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla1tdID0gYXdhaXQgdGhpcy5fdHJhbnNhY3Rpb24uZ2V0UGxhblRyYW5zcG9ydFdlZWsodGhpcy5jdXJyZW50U3RhcnREYXRlLCB0aGlzLmN1cnJlbnRQbGFubmluZy5wbGFubmluZ0lkKTtcclxuXHJcbiAgICAvLyBDb252ZXJ0IHRoZSBuZXcgcGxhbm5pbmcgdHJhbnNwb3J0IHdlZWsgZGF0YSB0byBhIG5lc3RlZCBhcnJheVxyXG4gICAgbGV0IG5ld1BsYW5uaW5nTmVzdGVkQXJyID0gdGhpcy5jb252ZXJ0UGxhbm5pbmdUcmFuc3BvcnRXZWVrVG9BcnJheShuZXdQbGFubmluZ1RyYW5zcG9ydFdlZWspO1xyXG5cclxuICAgIC8vIFVwZGF0ZSB0aGUgb2xkIG5lc3RlZCBhcnJheSAodGhpcy5fcGxhblRyYW5zcG9ydFdlZWtBcnIpIHdpdGggbmV3IHZhbHVlc1xyXG4gICAgdGhpcy5fcGxhblRyYW5zcG9ydFdlZWtBcnIuZm9yRWFjaCgob2xkV2Vla0RheXM6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdLCB3ZWVrSW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICBjb25zdCBuZXdXZWVrRGF5cyA9IG5ld1BsYW5uaW5nTmVzdGVkQXJyW3dlZWtJbmRleF07XHJcblxyXG4gICAgICAvLyBDb21wYXJlIGVhY2ggZGF5J3MgZGF0YSBpbiB0aGUgb2xkIGFuZCBuZXcgbmVzdGVkIGFycmF5c1xyXG4gICAgICBuZXdXZWVrRGF5cy5mb3JFYWNoKGFzeW5jIChuZXdEYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSwgZGF5SW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgIGNvbnN0IG9sZERheSA9IG9sZFdlZWtEYXlzW2RheUluZGV4XTtcclxuXHJcbiAgICAgICAgLy8gQ2hlY2sgZm9yIGNoYW5nZXMgYW5kIHVwZGF0ZSBvbmx5IGNoYW5nZWQgcHJvcGVydGllc1xyXG4gICAgICAgIGF3YWl0IHRoaXMuX3VwZGF0ZUNoYW5nZWRQcm9wZXJ0aWVzKG9sZERheSwgbmV3RGF5KTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4vLyBGdW5jdGlvbiB0byB1cGRhdGUgb25seSB0aGUgY2hhbmdlZCBwcm9wZXJ0aWVzXHJcbiAgcHJpdmF0ZSBhc3luYyBfdXBkYXRlQ2hhbmdlZFByb3BlcnRpZXMob2xkRGF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXksIG5ld0RheTogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAvLyBMaXN0IG9mIHByb3BlcnRpZXMgdG8gY29tcGFyZVxyXG4gICAgY29uc3QgcHJvcGVydGllc1RvQ29tcGFyZSA9IFtcclxuICAgICAgJ21pbnV0ZXMnLFxyXG4gICAgICAnbWF4TWludXRlcycsXHJcbiAgICAgICdtYXhGYWN0b3InLFxyXG4gICAgICAnb3JkZXJBbW91bnQnLFxyXG4gICAgICAnbG9hZCcsXHJcbiAgICAgICdtYXhPcmRlckFtb3VudCcsXHJcbiAgICAgICdmYWN0b3InXHJcbiAgICBdO1xyXG5cclxuICAgIGNvbnN0IHRyYW5zcG9ydFByb3BlcnRpZXNUb0NvbXBhcmU6IHN0cmluZ1tdID0gW1xyXG4gICAgICAnbWF4TG9hZCdcclxuICAgIF07XHJcblxyXG4gICAgcHJvcGVydGllc1RvQ29tcGFyZS5mb3JFYWNoKHByb3BlcnR5ID0+IHtcclxuICAgICAgLy8gQ29tcGFyZSBhbmQgdXBkYXRlIG9ubHkgaWYgdGhlcmUncyBhIGNoYW5nZVxyXG4gICAgICBpZiAoSlNPTi5zdHJpbmdpZnkob2xkRGF5W3Byb3BlcnR5XSkgIT09IEpTT04uc3RyaW5naWZ5KG5ld0RheVtwcm9wZXJ0eV0pKSB7XHJcbiAgICAgICAgb2xkRGF5W3Byb3BlcnR5XSA9IG5ld0RheVtwcm9wZXJ0eV07XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRyYW5zcG9ydFByb3BlcnRpZXNUb0NvbXBhcmUuZm9yRWFjaChwcm9wZXJ0eSA9PiB7XHJcbiAgICAgIGlmIChvbGREYXkudHJhbnNwb3J0ICYmIG5ld0RheS50cmFuc3BvcnQpIHtcclxuICAgICAgICBpZiAoSlNPTi5zdHJpbmdpZnkob2xkRGF5LnRyYW5zcG9ydFtwcm9wZXJ0eV0gIT09IEpTT04uc3RyaW5naWZ5KG5ld0RheS50cmFuc3BvcnRbcHJvcGVydHldKSkpIHtcclxuICAgICAgICAgIG9sZERheS50cmFuc3BvcnRbcHJvcGVydHldID0gbmV3RGF5Py50cmFuc3BvcnRbcHJvcGVydHldO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgYXdhaXQgdGhpcy5nZXRUcmFuc3BvcnRPcmRlcnMob2xkRGF5KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjb252ZXJ0UGxhbm5pbmdUcmFuc3BvcnRXZWVrVG9BcnJheShwbGFubmluZ1RyYW5zcG9ydFdlZWs6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla1tdKSB7XHJcbiAgICBsZXQgd2Vla0FycmF5czogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5W11bXSA9IFtdO1xyXG4gICAgaWYgKHBsYW5uaW5nVHJhbnNwb3J0V2Vlay5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHBsYW5uaW5nVHJhbnNwb3J0V2Vlay5mb3JFYWNoKCh0ZWFtOiBQbGFubmluZ1RyYW5zcG9ydFdlZWspID0+IHtcclxuICAgICAgICB3ZWVrQXJyYXlzLnB1c2goT2JqZWN0LmtleXModGVhbSkuc29ydCgpLm1hcChrZXkgPT4gdGVhbVtrZXldKSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHdlZWtBcnJheXM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY29udmVydFRvUGxhblRyYW5zcG9ydFdlZWsobmVzdGVkQXJyYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdW10pOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtbXSB7XHJcbiAgICBsZXQgcGxhblRyYW5zcG9ydFdlZWtzOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtbXSA9IFtdO1xyXG5cclxuICAgIG5lc3RlZEFycmF5LmZvckVhY2goKHdlZWtEYXlzOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXSkgPT4ge1xyXG4gICAgICBsZXQgcGxhblRyYW5zcG9ydFdlZWs6IGFueSA9IHt9OyAvLyBDcmVhdGUgYW4gZW1wdHkgb2JqZWN0IHRvIGhvbGQgdGhlIHdlZWsncyBkYXlzXHJcblxyXG4gICAgICAvLyBTdGFydCBmcm9tIFwiZGF5MVwiIGFuZCBhc3NpZ24gdGhlIFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSBvYmplY3RzIChleGNsdWRpbmcgdGhlIHRyYW5zcG9ydElkKVxyXG4gICAgICB3ZWVrRGF5cy5mb3JFYWNoKChkYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSwgZGF5SW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgIGlmIChkYXlJbmRleCA9PT0gNykge1xyXG4gICAgICAgICAgcGxhblRyYW5zcG9ydFdlZWtbJ3RyYW5zcG9ydElkJ10gPSB3ZWVrRGF5c1tkYXlJbmRleF07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHBsYW5UcmFuc3BvcnRXZWVrW2BkYXkke2RheUluZGV4ICsgMX1gXSA9IGRheTsgIC8vIFwiZGF5MVwiLCBcImRheTJcIiwgZXRjLlxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICAvLyBQdXNoIHRoZSBvYmplY3QgaW50byB0aGUgZmluYWwgYXJyYXlcclxuICAgICAgcGxhblRyYW5zcG9ydFdlZWtzLnB1c2gocGxhblRyYW5zcG9ydFdlZWsgYXMgUGxhbm5pbmdUcmFuc3BvcnRXZWVrKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBwbGFuVHJhbnNwb3J0V2Vla3M7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdG90YWxBc3NlbWJseVRpbWUocGxhbk9yZGVyOiBQbGFuT3JkZXIpIHtcclxuICAgIGlmIChwbGFuT3JkZXIpIHtcclxuICAgICAgbGV0IHRvdGFsOiBudW1iZXIgPSAwO1xyXG4gICAgICBwbGFuT3JkZXI/LmxpbmVzPy5mb3JFYWNoKChsaW5lOiBQbGFuT3JkZXJMaW5lKSA9PiB7XHJcbiAgICAgICAgaWYgKGxpbmUubWludXRlcyA+IDApIHtcclxuICAgICAgICAgIHRvdGFsICs9IGxpbmUubWludXRlcztcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gdG90YWw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYWRkTWludXRlcyhkYXRlOiBEYXRlLCBtaW51dGVzOiBudW1iZXIpOiBEYXRlIHtcclxuICAgIHJldHVybiBuZXcgRGF0ZShkYXRlLmdldFRpbWUoKSArIG1pbnV0ZXMgKiA2MDAwMCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFzTWF0Y2gobGlzdDE6IG51bWJlcltdLCBsaXN0MjogbnVtYmVyW10pOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHNldDE6IFNldDxudW1iZXI+ID0gbmV3IFNldChsaXN0MSk7XHJcbiAgICByZXR1cm4gbGlzdDIuc29tZSgobnVtOiBudW1iZXIpID0+IHNldDEuaGFzKG51bSkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlb3JkZXJJdGVtPFQgZXh0ZW5kcyB7IHN0YXJ0VGltZTogRGF0ZTsgZW5kVGltZTogRGF0ZSB9PihcclxuICAgIGFycmF5OiBUW10sXHJcbiAgICBpdGVtOiBULFxyXG4gICAgZGlyZWN0aW9uOiBcInVwXCIgfCBcImRvd25cIlxyXG4gICk6IHZvaWQge1xyXG4gICAgY29uc3QgaW5kZXggPSBhcnJheS5pbmRleE9mKGl0ZW0pO1xyXG5cclxuICAgIGlmIChpbmRleCA9PT0gLTEpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSXRlbSBub3QgZm91bmQgaW4gYXJyYXlcIik7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IG5ld0luZGV4ID0gZGlyZWN0aW9uID09PSBcInVwXCIgPyBpbmRleCAtIDEgOiBpbmRleCArIDE7XHJcblxyXG4gICAgLy8gRW5zdXJlIG5ld0luZGV4IGlzIHdpdGhpbiBib3VuZHNcclxuICAgIGlmIChuZXdJbmRleCA8IDAgfHwgbmV3SW5kZXggPj0gYXJyYXkubGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybjsgLy8gRG8gbm90aGluZyBpZiBhbHJlYWR5IGF0IHRoZSBmaXJzdCBvciBsYXN0IHBvc2l0aW9uXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgb3JpZ2luYWxEdXJhdGlvbiA9IGl0ZW0uZW5kVGltZS5nZXRUaW1lKCkgLSBpdGVtLnN0YXJ0VGltZS5nZXRUaW1lKCk7XHJcbiAgICBjb25zdCBzd2FwSXRlbSA9IGFycmF5W25ld0luZGV4XTtcclxuXHJcbiAgICAvLyBBc3NpZ24gbmV3IHN0YXJ0IHRpbWUgYmFzZWQgb24gdGhlIHN3YXBwZWQgaXRlbSdzIG9yaWdpbmFsIHN0YXJ0IHRpbWVcclxuICAgIGl0ZW0uc3RhcnRUaW1lID0gbmV3IERhdGUoc3dhcEl0ZW0uc3RhcnRUaW1lLmdldFRpbWUoKSk7XHJcbiAgICBpdGVtLmVuZFRpbWUgPSBuZXcgRGF0ZShpdGVtLnN0YXJ0VGltZS5nZXRUaW1lKCkgKyBvcmlnaW5hbER1cmF0aW9uKTtcclxuXHJcbiAgICAvLyBFbnN1cmUgdGhlIHN3YXBwZWQgaXRlbSBkb2Vzbid0IG92ZXJsYXBcclxuICAgIGNvbnN0IHN3YXBEdXJhdGlvbiA9IHN3YXBJdGVtLmVuZFRpbWUuZ2V0VGltZSgpIC0gc3dhcEl0ZW0uc3RhcnRUaW1lLmdldFRpbWUoKTtcclxuICAgIGlmIChpdGVtLmVuZFRpbWUuZ2V0VGltZSgpID4gc3dhcEl0ZW0uc3RhcnRUaW1lLmdldFRpbWUoKSkge1xyXG4gICAgICBzd2FwSXRlbS5zdGFydFRpbWUgPSBuZXcgRGF0ZShpdGVtLmVuZFRpbWUuZ2V0VGltZSgpKTsgLy8gQWRqdXN0IHN0YXJ0IHRpbWUgdG8gYXZvaWQgb3ZlcmxhcFxyXG4gICAgICBzd2FwSXRlbS5lbmRUaW1lID0gbmV3IERhdGUoc3dhcEl0ZW0uc3RhcnRUaW1lLmdldFRpbWUoKSArIHN3YXBEdXJhdGlvbik7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gU3dhcCBwb3NpdGlvbnMgaW4gdGhlIGFycmF5XHJcbiAgICBbYXJyYXlbaW5kZXhdLCBhcnJheVtuZXdJbmRleF1dID0gW2FycmF5W25ld0luZGV4XSwgYXJyYXlbaW5kZXhdXTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBkZWxpdmVyeU1ldGhvZEF2YWlsYWJpbGl0eUNoZWNrKHBsYW5PcmRlcjogUGxhbk9yZGVyLCBhdmFpbGFibGU6IGJvb2xlYW4sIHRyYW5zcG9ydERheTogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5KTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICBpZihhdmFpbGFibGUpIHtcclxuICAgICAgaWYgKCFwbGFuT3JkZXIucGFydERlbGl2ZXJ5KSB7XHJcbiAgICAgICAgaWYgKCF0cmFuc3BvcnREYXkuZGVsaXZlcnlNZXRob2RzLmZpbmQobWV0aG9kID0+IG1ldGhvZCA9PT0gcGxhbk9yZGVyLmRlbGl2ZXJ5TWV0aG9kLnRvU3RyaW5nKCkpKSB7XHJcbiAgICAgICAgICBhdmFpbGFibGUgPSBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGF3YWl0IHRoaXMuZ2V0T3JkZXJMaW5lc1BsYW5uZWQocGxhbk9yZGVyKTtcclxuICAgICAgICBwbGFuT3JkZXIubGluZXMuZm9yRWFjaCgobGluZTogUGxhbk9yZGVyTGluZSkgPT4ge1xyXG4gICAgICAgICAgaWYgKCF0cmFuc3BvcnREYXkuZGVsaXZlcnlNZXRob2RzLmZpbmQobWV0aG9kID0+IG1ldGhvZCA9PT0gbGluZS5kZWxpdmVyeU1ldGhvZCkpIHtcclxuICAgICAgICAgICAgYXZhaWxhYmxlID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGF2YWlsYWJsZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBhdmFpbGFibGU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZGlzdHJpY3RBdmFpbGFiaWxpdHlDaGVjayhwbGFuT3JkZXI6IFBsYW5PcmRlciwgYXZhaWxhYmxlOiBib29sZWFuLCB0cmFuc3BvcnREYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgLy9JZiB0cnVlOiB5b3UgY2FuIHBsYW4gd2l0aG91dCByYXlvbnMvZGlzdHJpY3RzLiBPcmRlcnMgd2l0aG91dCBkaXN0cmljdHMgY2FuIGdvIGV2ZXJ5d2hlcmUgaW4gdGhpcyBjYXNlLiBEb2VzIGl0IGhhdmUgZGlzdHJpY3RzIHRoYXQgaXQgbmVlZHMgdG8gbWF0Y2ggYSBkaXN0cmljdCBpbiB0aGUgcGxhbiByZXNvdXJjZS5cclxuICAgIC8vSWYgZmFsc2U6IG9yZGVycyB3aXRob3V0IGRpc3RyaWN0IGNhbiBub3QgYmUgcGxhbm5lZC4gT24gYSBwbGFuIHJlc291cmNlIHdpdGhvdXQgZGlzdHJpY3RzIHlvdSBjYW4ndCBwbGFuLiBPdGhlciB0aGFuIHRoYXQgc2FtZSBydWxlcyBhcHBseS5cclxuXHJcbiAgICBpZihhdmFpbGFibGUpIHtcclxuICAgICAgaWYgKCF0aGlzLnBsYW5SYXlvbikge1xyXG4gICAgICAgIGlmICghcGxhbk9yZGVyLmRpc3RyaWN0cyB8fCBwbGFuT3JkZXIuZGlzdHJpY3RzLmxlbmd0aCkge1xyXG4gICAgICAgICAgYXZhaWxhYmxlID0gZmFsc2U7XHJcbiAgICAgICAgICByZXR1cm4gYXZhaWxhYmxlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCF0cmFuc3BvcnREYXkuZGlzdHJpY3RzIHx8IHRyYW5zcG9ydERheS5kaXN0cmljdHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICBhdmFpbGFibGUgPSBmYWxzZTtcclxuICAgICAgICAgIHJldHVybiBhdmFpbGFibGU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmICghdGhpcy5oYXNNYXRjaCh0cmFuc3BvcnREYXkuZGlzdHJpY3RzLCBwbGFuT3JkZXIuZGlzdHJpY3RzKSkge1xyXG4gICAgICAgIGF2YWlsYWJsZSA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBhdmFpbGFibGU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gYXZhaWxhYmxlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuXHJcbiJdfQ==
325
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsaXZlcnktcGxhbm5pbmcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RyYW5zYWN0aW9uL3NyYy9saWIvY29tcG9uZW50L2RlbGl2ZXJ5LXBsYW5uaW5nL3NlcnZpY2UvZGVsaXZlcnktcGxhbm5pbmcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFlBQVksRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkQsT0FBTyxFQUFDLDJCQUEyQixFQUFDLE1BQU0sZ0RBQWdELENBQUM7QUFDM0YsT0FBTyxFQUFDLDZCQUE2QixFQUFDLE1BQU0scURBQXFELENBQUM7QUFDbEcsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ3hELE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLGlEQUFpRCxDQUFDO0FBRTFGLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx3REFBd0QsQ0FBQztBQUVwRixPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxzRUFBc0UsQ0FBQztBQUUvRyxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUVqRixPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSxxRUFBcUUsQ0FBQztBQUM3RyxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxnRUFBZ0UsQ0FBQztBQU1wRyxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxpREFBaUQsQ0FBQztBQUUxRixPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDOzs7QUFLN0IsTUFBTSxPQUFPLHVCQUF1QjtJQXdGbEMsWUFDVSxZQUF5QztRQUF6QyxpQkFBWSxHQUFaLFlBQVksQ0FBNkI7UUF4RjNDLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFDM0IsdUJBQWtCLEdBQTRCLEVBQUUsQ0FBQztRQUNqRCwwQkFBcUIsR0FB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Q0QsT0FBTyxTQUFTLENBQUM7YUFDbEI7aUJBQU07Z0JBQ0wsT0FBTyxTQUFTLENBQUM7YUFDbEI7UUFDSCxDQUFDO0tBQUE7Ozs7WUF4VkYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUF4Qk8sMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtFdmVudEVtaXR0ZXIsIEluamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uQ29ubmVjdG9yU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS90cmFuc2FjdGlvbi1jb25uZWN0b3Iuc2VydmljZSc7XHJcbmltcG9ydCB7RGVsaXZlcnlQbGFubmluZ0NhbGVuZGFyTW9kZXN9IGZyb20gJy4uLy4uLy4uL2VudW0vZGVsaXZlcnktcGxhbm5pbmctY2FsZW5kYXItbW9kZXMuZW51bSc7XHJcbmltcG9ydCB7Q2FsZW5kYXJWaWV3fSBmcm9tICdAY29saWpuaXQvc2hhcmVkY29tcG9uZW50cyc7XHJcbmltcG9ydCB7RGVsaXZlcnlQbGFubmluZ1ZpZXdNb2Rlc30gZnJvbSAnLi4vLi4vLi4vZW51bS9kZWxpdmVyeS1wbGFubmluZy12aWV3LW1vZGVzLmVudW0nO1xyXG5pbXBvcnQge1BsYW5uaW5nfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGxhbm5pbmcuYm8nO1xyXG5pbXBvcnQge1NlcXVlbmNlTmFtZX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL2VudW0vc2VxdWVuY2UtbmFtZS5lbnVtJztcclxuaW1wb3J0IHtQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXl9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wbGFubmluZy10cmFuc3BvcnQtd2Vlay1kYXkuYm8nO1xyXG5pbXBvcnQge0dldFRyYW5zcG9ydE9yZGVyc1JlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9nZXQtdHJhbnNwb3J0LW9yZGVycy1yZXF1ZXN0LmJvJztcclxuaW1wb3J0IHtQbGFubmluZ1RyYW5zcG9ydFdlZWt9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wbGFubmluZy10cmFuc3BvcnQtd2Vlay5ibyc7XHJcbmltcG9ydCB7RGVsaXZlcnlQbGFubmluZ01vZGVzfSBmcm9tICcuLi8uLi8uLi9lbnVtL2RlbGl2ZXJ5LXBsYW5uaW5nLW1vZGVzLmVudW0nO1xyXG5pbXBvcnQge1BsYW5PcmRlcn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BsYW4tb3JkZXIuYm8nO1xyXG5pbXBvcnQge09yZGVyTGluZXNQbGFubmVkUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL29yZGVyLWxpbmVzLXBsYW5uZWQtcmVxdWVzdC5ibyc7XHJcbmltcG9ydCB7UGxhbm5pbmdGaWx0ZXJPYmplY3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wbGFubmluZy1maWx0ZXItb2JqZWN0LmJvJztcclxuaW1wb3J0IHtEZWxpdmVyeU1ldGhvZH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2RlbGl2ZXJ5LW1ldGhvZC5ibyc7XHJcbmltcG9ydCB7RGlzdHJpY3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9kaXN0cmljdC5ibyc7XHJcbmltcG9ydCB7U2tpbGx9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9za2lsbC5ibyc7XHJcbmltcG9ydCB7UmVsYXRpb25MaXN0T2JqZWN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcmVsYXRpb24tbGlzdC1vYmplY3QuYm8nO1xyXG5pbXBvcnQge1VzZXJHcm91cH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3VzZXItZ3JvdXAuYm8nO1xyXG5pbXBvcnQge0RlbGl2ZXJ5UGxhbm5pbmdUaWxlTW9kZXN9IGZyb20gJy4uLy4uLy4uL2VudW0vZGVsaXZlcnktcGxhbm5pbmctdGlsZS1tb2Rlcy5lbnVtJztcclxuaW1wb3J0IHtQbGFuT3JkZXJMaW5lfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGxhbi1vcmRlci1saW5lLmJvJztcclxuaW1wb3J0IHtTdWJqZWN0fSBmcm9tICdyeGpzJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIERlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlIHtcclxuICBwcml2YXRlIF9kcmFnZ2luZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX3BsYW5UcmFuc3BvcnRXZWVrOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtbXSA9IFtdO1xyXG4gIHByaXZhdGUgX3BsYW5UcmFuc3BvcnRXZWVrQXJyOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXVtdID0gW107XHJcblxyXG4gIHByaXZhdGUgX2RlbGl2ZXJ5TWV0aG9kczogRGVsaXZlcnlNZXRob2RbXSA9IFtdO1xyXG4gIHByaXZhdGUgX2Rpc3RyaWN0czogRGlzdHJpY3RbXSA9IFtdO1xyXG4gIHByaXZhdGUgX3NraWxsczogU2tpbGxbXSA9IFtdO1xyXG4gIHByaXZhdGUgX2VtcGxveWVlczogUmVsYXRpb25MaXN0T2JqZWN0W10gPSBbXTtcclxuICBwcml2YXRlIF91c2VyR3JvdXBzOiBVc2VyR3JvdXBbXSA9IFtdO1xyXG5cclxuICBwdWJsaWMgY3VycmVudENhbGVuZGFyTW9kZTogRGVsaXZlcnlQbGFubmluZ0NhbGVuZGFyTW9kZXMgPSBEZWxpdmVyeVBsYW5uaW5nQ2FsZW5kYXJNb2Rlcy5XZWVrO1xyXG4gIHB1YmxpYyBjdXJyZW50VGlsZU1vZGU6IERlbGl2ZXJ5UGxhbm5pbmdUaWxlTW9kZXMgPSBEZWxpdmVyeVBsYW5uaW5nVGlsZU1vZGVzLk5vcm1hbDtcclxuICBwdWJsaWMgZGF0ZVBsYW5uaW5nTW9kZTogQ2FsZW5kYXJWaWV3ID0gQ2FsZW5kYXJWaWV3LldlZWtWaWV3O1xyXG4gIHB1YmxpYyB2aWV3TW9kZTogRGVsaXZlcnlQbGFubmluZ1ZpZXdNb2RlcyA9IERlbGl2ZXJ5UGxhbm5pbmdWaWV3TW9kZXMuRnVsbHNjcmVlbjtcclxuICBwdWJsaWMgY3VycmVudFBsYW5uaW5nTW9kZTogRGVsaXZlcnlQbGFubmluZ01vZGVzID0gRGVsaXZlcnlQbGFubmluZ01vZGVzLlRyYW5zYWN0aW9uO1xyXG4gIHB1YmxpYyBjdXJyZW50UGxhbm5pbmc6IFBsYW5uaW5nO1xyXG4gIHB1YmxpYyBjdXJyZW50U3RhcnREYXRlOiBEYXRlID0gbmV3IERhdGUoKTtcclxuICBwdWJsaWMgcGxhbk9yZGVyRGF0ZTogRGF0ZTtcclxuICBwdWJsaWMgY3VycmVudFRyYW5zSWQ6IG51bWJlcjtcclxuICBwdWJsaWMgZGVsZXRpbmdPcmRlcjogUGxhbk9yZGVyO1xyXG4gIHB1YmxpYyBsaW5lc1BsYW5PcmRlcjogUGxhbk9yZGVyO1xyXG4gIHB1YmxpYyBhdmFpbGFiaWxpdHlDaGVja0V2ZW50OiBFdmVudEVtaXR0ZXI8UGxhbk9yZGVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8UGxhbk9yZGVyPigpO1xyXG4gIHB1YmxpYyBhdmFpbGFiaWxpdHlSZXNldEV2ZW50OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgcHVibGljIHJlUmVuZGVySG91clNjaGVkdWxpbmc6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xyXG4gIHB1YmxpYyBtb3ZpbmdUcmFuc0lkOiBudW1iZXI7XHJcbiAgcHVibGljIHJlbGF0aW9uSWQ6IG51bWJlcjtcclxuICBwdWJsaWMgZW1wbG95ZWVWaWV3OiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHRyaXB0eWNoTW9kZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBwbGFuUmF5b246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgbHNwTW9kZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgZ2V0IGRyYWdnaW5nKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RyYWdnaW5nO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBwbGFuVHJhbnNwb3J0V2VlaygpIHtcclxuICAgIHJldHVybiB0aGlzLl9wbGFuVHJhbnNwb3J0V2VlaztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgcGxhblRyYW5zcG9ydFdlZWtBcnIoKTogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5W11bXSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGxhblRyYW5zcG9ydFdlZWtBcnI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGRlbGl2ZXJ5TWV0aG9kcygpOiBEZWxpdmVyeU1ldGhvZFtdIHtcclxuICAgIHJldHVybiB0aGlzLl9kZWxpdmVyeU1ldGhvZHM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGRpc3RyaWN0cygpOiBEaXN0cmljdFtdIHtcclxuICAgIHJldHVybiB0aGlzLl9kaXN0cmljdHM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGVtcGxveWVlcygpOiBSZWxhdGlvbkxpc3RPYmplY3RbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZW1wbG95ZWVzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBza2lsbHMoKTogU2tpbGxbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2tpbGxzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCB1c2VyR3JvdXBzKCk6IFVzZXJHcm91cFtdIHtcclxuICAgIHJldHVybiB0aGlzLl91c2VyR3JvdXBzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldCBkcmFnZ2luZyh2YWx1ZSkge1xyXG4gICAgdGhpcy5fZHJhZ2dpbmcgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXQgZGVsaXZlcnlNZXRob2RzKG1ldGhvZHM6IERlbGl2ZXJ5TWV0aG9kW10pIHtcclxuICAgIHRoaXMuX2RlbGl2ZXJ5TWV0aG9kcyA9IG1ldGhvZHM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0IGRpc3RyaWN0cyhkaXN0cmljdHM6IERpc3RyaWN0W10pIHtcclxuICAgIHRoaXMuX2Rpc3RyaWN0cyA9IGRpc3RyaWN0cztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXQgZW1wbG95ZWVzKGVtcGxveWVlczogUmVsYXRpb25MaXN0T2JqZWN0W10pIHtcclxuICAgIHRoaXMuX2VtcGxveWVlcyA9IGVtcGxveWVlcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXQgc2tpbGxzKHNraWxsczogU2tpbGxbXSkge1xyXG4gICAgdGhpcy5fc2tpbGxzID0gc2tpbGxzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldCB1c2VyR3JvdXBzKGdyb3VwczogVXNlckdyb3VwW10pIHtcclxuICAgIHRoaXMuX3VzZXJHcm91cHMgPSBncm91cHM7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX3RyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbkNvbm5lY3RvclNlcnZpY2VcclxuICApIHtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRPcmRlclNlcXVlbmNlVmFsdWUoKTogUHJvbWlzZTxudW1iZXI+IHtcclxuICAgIHJldHVybiBhd2FpdCB0aGlzLl90cmFuc2FjdGlvbi5nZXRTZXF1ZW5jZVZhbHVlKFNlcXVlbmNlTmFtZS5QbGFuTGluZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0VHJhbnNwb3J0T3JkZXJzKHBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheTogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5KTogUHJvbWlzZTxQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXk+IHtcclxuICAgIGlmIChwbGFubmluZ1RyYW5zcG9ydFdlZWtEYXkudHJhbnNwb3J0KSB7XHJcbiAgICAgIGxldCByZXF1ZXN0OiBHZXRUcmFuc3BvcnRPcmRlcnNSZXF1ZXN0ID0gbmV3IEdldFRyYW5zcG9ydE9yZGVyc1JlcXVlc3QoKTtcclxuICAgICAgcmVxdWVzdC50cmFuc3BvcnRJZCA9IHBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheS50cmFuc3BvcnQudHJhbnNwb3J0SWQ7XHJcbiAgICAgIHJlcXVlc3QuZGF0ZSA9IHBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheS5kYXRlO1xyXG4gICAgICByZXF1ZXN0LnBsYW5uaW5nSWQgPSB0aGlzLmN1cnJlbnRQbGFubmluZy5wbGFubmluZ0lkO1xyXG4gICAgICBjb25zdCBvcmRlclJlc3BvbnNlID0gYXdhaXQgdGhpcy5fdHJhbnNhY3Rpb24uZ2V0VHJhbnNwb3J0T3JkZXJzKHJlcXVlc3QpO1xyXG4gICAgICBpZiAob3JkZXJSZXNwb25zZSAmJiBvcmRlclJlc3BvbnNlLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBwbGFubmluZ1RyYW5zcG9ydFdlZWtEYXkucGxhbm5lZE9yZGVycyA9IG9yZGVyUmVzcG9uc2U7XHJcbiAgICAgICAgcGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5Lm9yZGVyc0xvYWRlZCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldE9yZGVyTGluZXNQbGFubmVkKG9yZGVyOiBQbGFuT3JkZXIpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGxldCByZXF1ZXN0OiBPcmRlckxpbmVzUGxhbm5lZFJlcXVlc3QgPSBuZXcgT3JkZXJMaW5lc1BsYW5uZWRSZXF1ZXN0KCk7XHJcbiAgICBsZXQgZmlsdGVyT2JqOiBQbGFubmluZ0ZpbHRlck9iamVjdCA9IG5ldyBQbGFubmluZ0ZpbHRlck9iamVjdCgpO1xyXG4gICAgcmVxdWVzdC5wbGFubmVkID0gdHJ1ZTtcclxuICAgIHJlcXVlc3QucGxhbm5pbmdJZCA9IHRoaXMuY3VycmVudFBsYW5uaW5nLnBsYW5uaW5nSWQ7XHJcbiAgICByZXF1ZXN0LnRyYW5zSWQgPSBvcmRlci50cmFuc0lkO1xyXG4gICAgcmVxdWVzdC5wbGFubmVkTGluZUlkID0gb3JkZXIucGxhbm5lZExpbmVJZDtcclxuICAgIGZpbHRlck9iai5vbmx5Q3VycmVudFdlZWsgPSB0cnVlO1xyXG4gICAgZmlsdGVyT2JqLmJlZ2luQ3VycmVudFdlZWsgPSBuZXcgRGF0ZSgpO1xyXG4gICAgZmlsdGVyT2JqLmNoZWNrT3JkZXJMaW5lcyA9IDE7XHJcbiAgICByZXF1ZXN0LmZpbHRlck9iamVjdCA9IGZpbHRlck9iajtcclxuICAgIGlmICghb3JkZXIubGluZXMpIHtcclxuICAgICAgb3JkZXIubGluZXMgPSBbXTtcclxuICAgIH1cclxuICAgIG9yZGVyLmxpbmVzLnB1c2goLi4uYXdhaXQgdGhpcy5fdHJhbnNhY3Rpb24uZ2V0T3JkZXJMaW5lc1BsYW5uZWQocmVxdWVzdCkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldFNlcXVlbmNlT3JkZXJWYWx1ZShvcmRlcjogUGxhbk9yZGVyKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBvcmRlci5wbGFubmVkTGluZUlkID0gYXdhaXQgdGhpcy5nZXRPcmRlclNlcXVlbmNlVmFsdWUoKTtcclxuICAgIG9yZGVyLmNoYWluZWQgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRQbGFubmluZ1RyYW5zcG9ydFdlZWsoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAodGhpcy5lbXBsb3llZVZpZXcgJiYgdGhpcy5yZWxhdGlvbklkKSB7XHJcbiAgICAgIHRoaXMuX3RyYW5zYWN0aW9uLmdldFBsYW5uZWRMaW5lc0ZvckVtcGxveWVlKHRoaXMuY3VycmVudFBsYW5uaW5nLnBsYW5uaW5nSWQsIHRoaXMucmVsYXRpb25JZCwgdGhpcy5jdXJyZW50U3RhcnREYXRlKS50aGVuKChyZXN1bHQ6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla1tdKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fcGxhblRyYW5zcG9ydFdlZWsgPSByZXN1bHQ7XHJcbiAgICAgICAgdGhpcy5fcGxhblRyYW5zcG9ydFdlZWtBcnIgPSB0aGlzLmNvbnZlcnRQbGFubmluZ1RyYW5zcG9ydFdlZWtUb0FycmF5KHRoaXMuX3BsYW5UcmFuc3BvcnRXZWVrKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuX3RyYW5zYWN0aW9uLmdldFBsYW5UcmFuc3BvcnRXZWVrKHRoaXMuY3VycmVudFN0YXJ0RGF0ZSwgdGhpcy5jdXJyZW50UGxhbm5pbmcucGxhbm5pbmdJZCkudGhlbigocmVzdWx0OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtbXSkgPT4ge1xyXG4gICAgICBpZiAocmVzdWx0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLl9wbGFuVHJhbnNwb3J0V2VlayA9IHJlc3VsdDtcclxuICAgICAgICB0aGlzLl9wbGFuVHJhbnNwb3J0V2Vla0FyciA9IHRoaXMuY29udmVydFBsYW5uaW5nVHJhbnNwb3J0V2Vla1RvQXJyYXkodGhpcy5fcGxhblRyYW5zcG9ydFdlZWspO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyB1cGRhdGVQbGFubmluZ1RyYW5zcG9ydFZhbHVlcygpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIC8vIEdldCBuZXcgcGxhbm5pbmcgdHJhbnNwb3J0IHdlZWsgZGF0YSBmcm9tIHRoZSBiYWNrZW5kXHJcbiAgICBsZXQgbmV3UGxhbm5pbmdUcmFuc3BvcnRXZWVrOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtbXSA9IGF3YWl0IHRoaXMuX3RyYW5zYWN0aW9uLmdldFBsYW5UcmFuc3BvcnRXZWVrKHRoaXMuY3VycmVudFN0YXJ0RGF0ZSwgdGhpcy5jdXJyZW50UGxhbm5pbmcucGxhbm5pbmdJZCk7XHJcblxyXG4gICAgLy8gQ29udmVydCB0aGUgbmV3IHBsYW5uaW5nIHRyYW5zcG9ydCB3ZWVrIGRhdGEgdG8gYSBuZXN0ZWQgYXJyYXlcclxuICAgIGxldCBuZXdQbGFubmluZ05lc3RlZEFyciA9IHRoaXMuY29udmVydFBsYW5uaW5nVHJhbnNwb3J0V2Vla1RvQXJyYXkobmV3UGxhbm5pbmdUcmFuc3BvcnRXZWVrKTtcclxuXHJcbiAgICAvLyBVcGRhdGUgdGhlIG9sZCBuZXN0ZWQgYXJyYXkgKHRoaXMuX3BsYW5UcmFuc3BvcnRXZWVrQXJyKSB3aXRoIG5ldyB2YWx1ZXNcclxuICAgIHRoaXMuX3BsYW5UcmFuc3BvcnRXZWVrQXJyLmZvckVhY2goKG9sZFdlZWtEYXlzOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXSwgd2Vla0luZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgY29uc3QgbmV3V2Vla0RheXMgPSBuZXdQbGFubmluZ05lc3RlZEFyclt3ZWVrSW5kZXhdO1xyXG5cclxuICAgICAgLy8gQ29tcGFyZSBlYWNoIGRheSdzIGRhdGEgaW4gdGhlIG9sZCBhbmQgbmV3IG5lc3RlZCBhcnJheXNcclxuICAgICAgbmV3V2Vla0RheXMuZm9yRWFjaChhc3luYyAobmV3RGF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXksIGRheUluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICBjb25zdCBvbGREYXkgPSBvbGRXZWVrRGF5c1tkYXlJbmRleF07XHJcblxyXG4gICAgICAgIC8vIENoZWNrIGZvciBjaGFuZ2VzIGFuZCB1cGRhdGUgb25seSBjaGFuZ2VkIHByb3BlcnRpZXNcclxuICAgICAgICBhd2FpdCB0aGlzLl91cGRhdGVDaGFuZ2VkUHJvcGVydGllcyhvbGREYXksIG5ld0RheSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuLy8gRnVuY3Rpb24gdG8gdXBkYXRlIG9ubHkgdGhlIGNoYW5nZWQgcHJvcGVydGllc1xyXG4gIHByaXZhdGUgYXN5bmMgX3VwZGF0ZUNoYW5nZWRQcm9wZXJ0aWVzKG9sZERheTogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5LCBuZXdEYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgLy8gTGlzdCBvZiBwcm9wZXJ0aWVzIHRvIGNvbXBhcmVcclxuICAgIGNvbnN0IHByb3BlcnRpZXNUb0NvbXBhcmUgPSBbXHJcbiAgICAgICdtaW51dGVzJyxcclxuICAgICAgJ21heE1pbnV0ZXMnLFxyXG4gICAgICAnbWF4RmFjdG9yJyxcclxuICAgICAgJ29yZGVyQW1vdW50JyxcclxuICAgICAgJ2xvYWQnLFxyXG4gICAgICAnbWF4T3JkZXJBbW91bnQnLFxyXG4gICAgICAnZmFjdG9yJ1xyXG4gICAgXTtcclxuXHJcbiAgICBjb25zdCB0cmFuc3BvcnRQcm9wZXJ0aWVzVG9Db21wYXJlOiBzdHJpbmdbXSA9IFtcclxuICAgICAgJ21heExvYWQnXHJcbiAgICBdO1xyXG5cclxuICAgIHByb3BlcnRpZXNUb0NvbXBhcmUuZm9yRWFjaChwcm9wZXJ0eSA9PiB7XHJcbiAgICAgIC8vIENvbXBhcmUgYW5kIHVwZGF0ZSBvbmx5IGlmIHRoZXJlJ3MgYSBjaGFuZ2VcclxuICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KG9sZERheVtwcm9wZXJ0eV0pICE9PSBKU09OLnN0cmluZ2lmeShuZXdEYXlbcHJvcGVydHldKSkge1xyXG4gICAgICAgIG9sZERheVtwcm9wZXJ0eV0gPSBuZXdEYXlbcHJvcGVydHldO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0cmFuc3BvcnRQcm9wZXJ0aWVzVG9Db21wYXJlLmZvckVhY2gocHJvcGVydHkgPT4ge1xyXG4gICAgICBpZiAob2xkRGF5LnRyYW5zcG9ydCAmJiBuZXdEYXkudHJhbnNwb3J0KSB7XHJcbiAgICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KG9sZERheS50cmFuc3BvcnRbcHJvcGVydHldICE9PSBKU09OLnN0cmluZ2lmeShuZXdEYXkudHJhbnNwb3J0W3Byb3BlcnR5XSkpKSB7XHJcbiAgICAgICAgICBvbGREYXkudHJhbnNwb3J0W3Byb3BlcnR5XSA9IG5ld0RheT8udHJhbnNwb3J0W3Byb3BlcnR5XTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGF3YWl0IHRoaXMuZ2V0VHJhbnNwb3J0T3JkZXJzKG9sZERheSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY29udmVydFBsYW5uaW5nVHJhbnNwb3J0V2Vla1RvQXJyYXkocGxhbm5pbmdUcmFuc3BvcnRXZWVrOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtbXSkge1xyXG4gICAgbGV0IHdlZWtBcnJheXM6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdW10gPSBbXTtcclxuICAgIGlmIChwbGFubmluZ1RyYW5zcG9ydFdlZWsubGVuZ3RoID4gMCkge1xyXG4gICAgICBwbGFubmluZ1RyYW5zcG9ydFdlZWsuZm9yRWFjaCgodGVhbTogUGxhbm5pbmdUcmFuc3BvcnRXZWVrKSA9PiB7XHJcbiAgICAgICAgd2Vla0FycmF5cy5wdXNoKE9iamVjdC5rZXlzKHRlYW0pLnNvcnQoKS5tYXAoa2V5ID0+IHRlYW1ba2V5XSkpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiB3ZWVrQXJyYXlzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNvbnZlcnRUb1BsYW5UcmFuc3BvcnRXZWVrKG5lc3RlZEFycmF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXVtdKTogUGxhbm5pbmdUcmFuc3BvcnRXZWVrW10ge1xyXG4gICAgbGV0IHBsYW5UcmFuc3BvcnRXZWVrczogUGxhbm5pbmdUcmFuc3BvcnRXZWVrW10gPSBbXTtcclxuXHJcbiAgICBuZXN0ZWRBcnJheS5mb3JFYWNoKCh3ZWVrRGF5czogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5W10pID0+IHtcclxuICAgICAgbGV0IHBsYW5UcmFuc3BvcnRXZWVrOiBhbnkgPSB7fTsgLy8gQ3JlYXRlIGFuIGVtcHR5IG9iamVjdCB0byBob2xkIHRoZSB3ZWVrJ3MgZGF5c1xyXG5cclxuICAgICAgLy8gU3RhcnQgZnJvbSBcImRheTFcIiBhbmQgYXNzaWduIHRoZSBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXkgb2JqZWN0cyAoZXhjbHVkaW5nIHRoZSB0cmFuc3BvcnRJZClcclxuICAgICAgd2Vla0RheXMuZm9yRWFjaCgoZGF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXksIGRheUluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICBpZiAoZGF5SW5kZXggPT09IDcpIHtcclxuICAgICAgICAgIHBsYW5UcmFuc3BvcnRXZWVrWyd0cmFuc3BvcnRJZCddID0gd2Vla0RheXNbZGF5SW5kZXhdO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBwbGFuVHJhbnNwb3J0V2Vla1tgZGF5JHtkYXlJbmRleCArIDF9YF0gPSBkYXk7ICAvLyBcImRheTFcIiwgXCJkYXkyXCIsIGV0Yy5cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgLy8gUHVzaCB0aGUgb2JqZWN0IGludG8gdGhlIGZpbmFsIGFycmF5XHJcbiAgICAgIHBsYW5UcmFuc3BvcnRXZWVrcy5wdXNoKHBsYW5UcmFuc3BvcnRXZWVrIGFzIFBsYW5uaW5nVHJhbnNwb3J0V2Vlayk7XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gcGxhblRyYW5zcG9ydFdlZWtzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHRvdGFsQXNzZW1ibHlUaW1lKHBsYW5PcmRlcjogUGxhbk9yZGVyKSB7XHJcbiAgICBpZiAocGxhbk9yZGVyKSB7XHJcbiAgICAgIGxldCB0b3RhbDogbnVtYmVyID0gMDtcclxuICAgICAgcGxhbk9yZGVyPy5saW5lcz8uZm9yRWFjaCgobGluZTogUGxhbk9yZGVyTGluZSkgPT4ge1xyXG4gICAgICAgIGlmIChsaW5lLm1pbnV0ZXMgPiAwKSB7XHJcbiAgICAgICAgICB0b3RhbCArPSBsaW5lLm1pbnV0ZXM7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIHRvdGFsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFkZE1pbnV0ZXMoZGF0ZTogRGF0ZSwgbWludXRlczogbnVtYmVyKTogRGF0ZSB7XHJcbiAgICByZXR1cm4gbmV3IERhdGUoZGF0ZS5nZXRUaW1lKCkgKyBtaW51dGVzICogNjAwMDApO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhc01hdGNoKGxpc3QxOiBudW1iZXJbXSwgbGlzdDI6IG51bWJlcltdKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBzZXQxOiBTZXQ8bnVtYmVyPiA9IG5ldyBTZXQobGlzdDEpO1xyXG4gICAgcmV0dXJuIGxpc3QyLnNvbWUoKG51bTogbnVtYmVyKSA9PiBzZXQxLmhhcyhudW0pKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZW9yZGVySXRlbTxUIGV4dGVuZHMgeyBzdGFydFRpbWU6IERhdGU7IGVuZFRpbWU6IERhdGUgfT4oXHJcbiAgICBhcnJheTogVFtdLFxyXG4gICAgaXRlbTogVCxcclxuICAgIGRpcmVjdGlvbjogXCJ1cFwiIHwgXCJkb3duXCJcclxuICApOiB2b2lkIHtcclxuICAgIGNvbnN0IGluZGV4ID0gYXJyYXkuaW5kZXhPZihpdGVtKTtcclxuXHJcbiAgICBpZiAoaW5kZXggPT09IC0xKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkl0ZW0gbm90IGZvdW5kIGluIGFycmF5XCIpO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBuZXdJbmRleCA9IGRpcmVjdGlvbiA9PT0gXCJ1cFwiID8gaW5kZXggLSAxIDogaW5kZXggKyAxO1xyXG5cclxuICAgIC8vIEVuc3VyZSBuZXdJbmRleCBpcyB3aXRoaW4gYm91bmRzXHJcbiAgICBpZiAobmV3SW5kZXggPCAwIHx8IG5ld0luZGV4ID49IGFycmF5Lmxlbmd0aCkge1xyXG4gICAgICByZXR1cm47IC8vIERvIG5vdGhpbmcgaWYgYWxyZWFkeSBhdCB0aGUgZmlyc3Qgb3IgbGFzdCBwb3NpdGlvblxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG9yaWdpbmFsRHVyYXRpb24gPSBpdGVtLmVuZFRpbWUuZ2V0VGltZSgpIC0gaXRlbS5zdGFydFRpbWUuZ2V0VGltZSgpO1xyXG4gICAgY29uc3Qgc3dhcEl0ZW0gPSBhcnJheVtuZXdJbmRleF07XHJcblxyXG4gICAgLy8gQXNzaWduIG5ldyBzdGFydCB0aW1lIGJhc2VkIG9uIHRoZSBzd2FwcGVkIGl0ZW0ncyBvcmlnaW5hbCBzdGFydCB0aW1lXHJcbiAgICBpdGVtLnN0YXJ0VGltZSA9IG5ldyBEYXRlKHN3YXBJdGVtLnN0YXJ0VGltZS5nZXRUaW1lKCkpO1xyXG4gICAgaXRlbS5lbmRUaW1lID0gbmV3IERhdGUoaXRlbS5zdGFydFRpbWUuZ2V0VGltZSgpICsgb3JpZ2luYWxEdXJhdGlvbik7XHJcblxyXG4gICAgLy8gRW5zdXJlIHRoZSBzd2FwcGVkIGl0ZW0gZG9lc24ndCBvdmVybGFwXHJcbiAgICBjb25zdCBzd2FwRHVyYXRpb24gPSBzd2FwSXRlbS5lbmRUaW1lLmdldFRpbWUoKSAtIHN3YXBJdGVtLnN0YXJ0VGltZS5nZXRUaW1lKCk7XHJcbiAgICBpZiAoaXRlbS5lbmRUaW1lLmdldFRpbWUoKSA+IHN3YXBJdGVtLnN0YXJ0VGltZS5nZXRUaW1lKCkpIHtcclxuICAgICAgc3dhcEl0ZW0uc3RhcnRUaW1lID0gbmV3IERhdGUoaXRlbS5lbmRUaW1lLmdldFRpbWUoKSk7IC8vIEFkanVzdCBzdGFydCB0aW1lIHRvIGF2b2lkIG92ZXJsYXBcclxuICAgICAgc3dhcEl0ZW0uZW5kVGltZSA9IG5ldyBEYXRlKHN3YXBJdGVtLnN0YXJ0VGltZS5nZXRUaW1lKCkgKyBzd2FwRHVyYXRpb24pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFN3YXAgcG9zaXRpb25zIGluIHRoZSBhcnJheVxyXG4gICAgW2FycmF5W2luZGV4XSwgYXJyYXlbbmV3SW5kZXhdXSA9IFthcnJheVtuZXdJbmRleF0sIGFycmF5W2luZGV4XV07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZGVsaXZlcnlNZXRob2RBdmFpbGFiaWxpdHlDaGVjayhwbGFuT3JkZXI6IFBsYW5PcmRlciwgdHJhbnNwb3J0RGF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXkpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIGxldCBhdmFpbGFibGU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gICAgaWYoYXZhaWxhYmxlKSB7XHJcbiAgICAgIGlmICghcGxhbk9yZGVyLnBhcnREZWxpdmVyeSkge1xyXG4gICAgICAgIGlmICghdHJhbnNwb3J0RGF5LmRlbGl2ZXJ5TWV0aG9kcy5maW5kKG1ldGhvZCA9PiBtZXRob2QgPT09IHBsYW5PcmRlci5kZWxpdmVyeU1ldGhvZC50b1N0cmluZygpKSkge1xyXG4gICAgICAgICAgYXZhaWxhYmxlID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBhd2FpdCB0aGlzLmdldE9yZGVyTGluZXNQbGFubmVkKHBsYW5PcmRlcik7XHJcbiAgICAgICAgcGxhbk9yZGVyLmxpbmVzLmZvckVhY2goKGxpbmU6IFBsYW5PcmRlckxpbmUpID0+IHtcclxuICAgICAgICAgIGlmICghdHJhbnNwb3J0RGF5LmRlbGl2ZXJ5TWV0aG9kcy5maW5kKG1ldGhvZCA9PiBtZXRob2QgPT09IGxpbmUuZGVsaXZlcnlNZXRob2QpKSB7XHJcbiAgICAgICAgICAgIGF2YWlsYWJsZSA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBhdmFpbGFibGU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gYXZhaWxhYmxlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGRpc3RyaWN0QXZhaWxhYmlsaXR5Q2hlY2socGxhbk9yZGVyOiBQbGFuT3JkZXIsIHRyYW5zcG9ydERheTogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5KTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICAvL0lmIHRydWU6IHlvdSBjYW4gcGxhbiB3aXRob3V0IHJheW9ucy9kaXN0cmljdHMuIE9yZGVycyB3aXRob3V0IGRpc3RyaWN0cyBjYW4gZ28gZXZlcnl3aGVyZSBpbiB0aGlzIGNhc2UuIERvZXMgaXQgaGF2ZSBkaXN0cmljdHMgdGhhdCBpdCBuZWVkcyB0byBtYXRjaCBhIGRpc3RyaWN0IGluIHRoZSBwbGFuIHJlc291cmNlLlxyXG4gICAgLy9JZiBmYWxzZTogb3JkZXJzIHdpdGhvdXQgZGlzdHJpY3QgY2FuIG5vdCBiZSBwbGFubmVkLiBPbiBhIHBsYW4gcmVzb3VyY2Ugd2l0aG91dCBkaXN0cmljdHMgeW91IGNhbid0IHBsYW4uIE90aGVyIHRoYW4gdGhhdCBzYW1lIHJ1bGVzIGFwcGx5LlxyXG4gICAgbGV0IGF2YWlsYWJsZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgICBpZihhdmFpbGFibGUpIHtcclxuICAgICAgaWYgKCF0aGlzLnBsYW5SYXlvbikge1xyXG4gICAgICAgIGlmICghcGxhbk9yZGVyLmRpc3RyaWN0cyB8fCBwbGFuT3JkZXIuZGlzdHJpY3RzLmxlbmd0aCkge1xyXG4gICAgICAgICAgYXZhaWxhYmxlID0gZmFsc2U7XHJcbiAgICAgICAgICByZXR1cm4gYXZhaWxhYmxlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCF0cmFuc3BvcnREYXkuZGlzdHJpY3RzIHx8IHRyYW5zcG9ydERheS5kaXN0cmljdHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICBhdmFpbGFibGUgPSBmYWxzZTtcclxuICAgICAgICAgIHJldHVybiBhdmFpbGFibGU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmICghdGhpcy5oYXNNYXRjaCh0cmFuc3BvcnREYXkuZGlzdHJpY3RzLCBwbGFuT3JkZXIuZGlzdHJpY3RzKSkge1xyXG4gICAgICAgIGF2YWlsYWJsZSA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBhdmFpbGFibGU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gYXZhaWxhYmxlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuXHJcbiJdfQ==
@@ -118,11 +118,7 @@ export class DeliveryPlanningOverviewTileComponent {
118
118
  }
119
119
  handleAvailabilityChecked(planOrder) {
120
120
  return __awaiter(this, void 0, void 0, function* () {
121
- let available;
122
- available = this.transportDay.availableOnDate;
123
- available = yield this.deliveryMethodAvailabilityCheck(planOrder, available);
124
- available = yield this.districtAvailabilityCheck(planOrder, available);
125
- this.availabilityChecked.emit({ transportDay: this.transportDay, available: available });
121
+ this.availabilityChecked.emit({ transportDay: this.transportDay, available: this.transportDay.availableOnDate && (yield this.deliveryMethodAvailabilityCheck(planOrder)) && (yield this.districtAvailabilityCheck(planOrder)) });
126
122
  });
127
123
  }
128
124
  getOrderLinesPlanned(planOrder) {
@@ -140,8 +136,9 @@ export class DeliveryPlanningOverviewTileComponent {
140
136
  planOrder.lines.push(...yield this._transaction.getOrderLinesPlanned(request));
141
137
  });
142
138
  }
143
- deliveryMethodAvailabilityCheck(planOrder, available) {
139
+ deliveryMethodAvailabilityCheck(planOrder) {
144
140
  return __awaiter(this, void 0, void 0, function* () {
141
+ let available = true;
145
142
  if (available) {
146
143
  if (!planOrder.partDelivery) {
147
144
  if (!this.transportDay.deliveryMethods.find(method => method === planOrder.deliveryMethod.toString())) {
@@ -163,10 +160,11 @@ export class DeliveryPlanningOverviewTileComponent {
163
160
  }
164
161
  });
165
162
  }
166
- districtAvailabilityCheck(planOrder, available) {
163
+ districtAvailabilityCheck(planOrder) {
167
164
  return __awaiter(this, void 0, void 0, function* () {
168
165
  //If true: you can plan without rayons/districts. Orders without districts can go everywhere in this case. Does it have districts that it needs to match a district in the plan resource.
169
166
  //If false: orders without district can not be planned. On a plan resource without districts you can't plan. Other than that same rules apply.
167
+ let available = true;
170
168
  if (available) {
171
169
  if (!this._deliveryPlanningService.planRayon) {
172
170
  if (!planOrder.districts || planOrder.districts.length) {
@@ -309,4 +307,4 @@ DeliveryPlanningOverviewTileComponent.propDecorators = {
309
307
  hourSchedulingComp: [{ type: ViewChild, args: ['hourSchedulingComponent',] }],
310
308
  showClass: [{ type: HostBinding, args: ['class.co-delivery-planning-overview-tile',] }]
311
309
  };
312
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXctdGlsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cmFuc2FjdGlvbi9zcmMvbGliL2NvbXBvbmVudC9kZWxpdmVyeS1wbGFubmluZy1tYWluL2NvbXBvbmVudC9kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldy9jb21wb25lbnQvZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXctdGlsZS9kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldy10aWxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUd0SixPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxvRUFBb0UsQ0FBQztBQUMzRyxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDdEQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sOENBQThDLENBQUM7QUFDOUUsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sMERBQTBELENBQUM7QUFJbkcsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sK0NBQStDLENBQUM7QUFDakYsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0scUVBQXFFLENBQUM7QUFDN0csT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sZ0VBQWdFLENBQUM7QUFnR3BHLE1BQU0sT0FBTyxxQ0FBcUM7SUF5RWhELFlBQ1Usd0JBQWlELEVBQ2pELFlBQWdDLEVBQ2hDLGVBQWtDLEVBQ25DLGdCQUFrQztRQUhqQyw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQXlCO1FBQ2pELGlCQUFZLEdBQVosWUFBWSxD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YUFDbEI7aUJBQU07Z0JBQ0wsT0FBTyxTQUFTLENBQUM7YUFDbEI7UUFDSCxDQUFDO0tBQUE7OztZQTFVRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLG9DQUFvQztnQkFDOUMsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlGVDtnQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTthQUN0Qzs7O1lBeEdPLHVCQUF1QjtZQU92QixrQkFBa0I7WUFWbEIsaUJBQWlCO1lBS2pCLGdCQUFnQjs7O3VCQStHckIsS0FBSzsyQkFHTCxLQUFLOzRCQUdMLE1BQU07K0JBR04sTUFBTTttQ0FHTixNQUFNOzZCQU1OLE1BQU07c0NBR04sTUFBTTs4QkFHTixNQUFNO3NDQUdOLE1BQU07a0NBR04sTUFBTTtnQ0FHTixNQUFNO3dCQU1OLE1BQU07K0JBTU4sTUFBTTtpQ0FHTixNQUFNO2lDQUdOLFNBQVMsU0FBQyx5QkFBeUI7d0JBU25DLFdBQVcsU0FBQywwQ0FBMEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtQbGFuT3JkZXJ9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wbGFuLW9yZGVyLmJvJztcclxuaW1wb3J0IHtQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXl9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wbGFubmluZy10cmFuc3BvcnQtd2Vlay1kYXkuYm8nO1xyXG5pbXBvcnQge0RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9kZWxpdmVyeS1wbGFubmluZy9zZXJ2aWNlL2RlbGl2ZXJ5LXBsYW5uaW5nLnNlcnZpY2UnO1xyXG5pbXBvcnQge0ljb259IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2VudW0vaWNvbi5lbnVtJztcclxuaW1wb3J0IHtJY29uQ2FjaGVTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9zZXJ2aWNlL2ljb24tY2FjaGUuc2VydmljZSc7XHJcbmltcG9ydCB7RGVsaXZlcnlQbGFubmluZ1RpbGVNb2Rlc30gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vZW51bS9kZWxpdmVyeS1wbGFubmluZy10aWxlLW1vZGVzLmVudW0nO1xyXG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7SG91clNjaGVkdWxpbmdFeHBhbmRhYmxlQ29tcG9uZW50fSBmcm9tICdAY29saWpuaXQvY29yZWNvbXBvbmVudHNfdjEyJztcclxuaW1wb3J0IHtQbGFuT3JkZXJMaW5lfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGxhbi1vcmRlci1saW5lLmJvJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24uc2VydmljZSc7XHJcbmltcG9ydCB7T3JkZXJMaW5lc1BsYW5uZWRSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvb3JkZXItbGluZXMtcGxhbm5lZC1yZXF1ZXN0LmJvJztcclxuaW1wb3J0IHtQbGFubmluZ0ZpbHRlck9iamVjdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BsYW5uaW5nLWZpbHRlci1vYmplY3QuYm8nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjby1kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldy10aWxlJyxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXctdGlsZS13cmFwcGVyXCIgW2NsYXNzLnNlbGVjdGVkXT1cInRyYW5zcG9ydERheS5zZWxlY3RlZFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci10aWxlLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLXRpdGxlXCIgKGNsaWNrKT1cImV4cGFuZGVkQ2hhbmdlKClcIj5cclxuICAgICAgICAgICAgICAgICAgPGNvLWljb24gKm5nSWY9XCIhZXhwYW5kZWRcIiBbaWNvbkRhdGFdPVwiaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKGljb25zLkNhcmV0RG93blNvbGlkKVwiPjwvY28taWNvbj5cclxuICAgICAgICAgICAgICAgICAgPGNvLWljb24gKm5nSWY9XCJleHBhbmRlZFwiIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24oaWNvbnMuQ2FyZXRVcFNvbGlkKVwiPjwvY28taWNvbj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoZWFkZXItdGl0bGVcIiBbdGV4dENvbnRlbnRdPVwidHJhbnNwb3J0RGF5Py50cmFuc3BvcnQucmVnaXN0cmF0aW9uTnVtYmVyXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cnVjay1oZWFkZXItdGlsZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8Y28taWNvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24oaWNvbnMuVHJ1Y2tDb250YWluZXJEdW8pXCI+PC9jby1pY29uPlxyXG4gICAgICAgICAgICAgICAgICA8Y28taWNvbiBjbGFzcz1cInNtYWxsXCIgKGNsaWNrKT1cIm9wZW5TZXR0aW5nc0RpYWxvZygpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29ucy5TbGlkZXJzVXBSZWd1bGFyKVwiPjwvY28taWNvbj5cclxuXHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicGxhbm5pbmctd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGF0dXMtd3JhcHBlciByb3dcIj5cclxuICAgICAgICAgICAgICAgICAgPGNvLWRlbGl2ZXJ5LXBsYW5uaW5nLXRpbGUtc3RhdHVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2N1cnJlbnRWb2x1bWVdPVwidHJhbnNwb3J0RGF5Py5vcmRlckFtb3VudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW21heFZvbHVtZV09XCJ0cmFuc3BvcnREYXk/Lm1heE9yZGVyQW1vdW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY3VycmVudFRpbWVUb3RhbF09XCJ0cmFuc3BvcnREYXk/Lm1pbnV0ZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFt0aW1lVG90YWxdPVwidHJhbnNwb3J0RGF5Py5tYXhNaW51dGVzXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvY28tZGVsaXZlcnktcGxhbm5pbmctdGlsZS1zdGF0dXM+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwbGFubmluZy1zaG9ydC1saW5lLXdyYXBwZXJcIiAqbmdJZj1cIiFleHBhbmRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGNvLWRlbGl2ZXJ5LXBsYW5uaW5nLW92ZXJ2aWV3LXNob3J0LWxpbmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG9yZGVyIG9mIHRyYW5zcG9ydERheT8ucGxhbm5lZE9yZGVyc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWxldGVPcmRlckV2ZW50KT1cImhhbmRsZURlbGV0ZU9yZGVyQ2xpY2soJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcmRlcl09XCJvcmRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9jby1kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldy1zaG9ydC1saW5lPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8Y28tY29sbGFwc2libGUgW2V4cGFuZGVkXT1cImV4cGFuZGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWxlLWNvbnRlbnQtd3JhcHBlciBjb2x1bW5cIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGxhbm5pbmctbGluZXMtd3JhcHBlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidGlsZU1vZGUgPT09IHRpbGVNb2Rlcy5Ob3JtYWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Y28tZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXctdGlsZS1saW5lIGNsYXNzPVwibm9ybWFsLW1vZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG9yZGVyIG9mIHRyYW5zcG9ydERheT8ucGxhbm5lZE9yZGVyc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVsZXRlT3JkZXJFdmVudCk9XCJoYW5kbGVEZWxldGVPcmRlckNsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlbGV0ZU9yZGVyTGluZUV2ZW50KT1cImhhbmRsZURlbGV0ZU9yZGVyTGluZUNsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVkaXRPcmRlckV2ZW50KT1cImhhbmRsZUVkaXRPcmRlckV2ZW50KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzQWN0aXZlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29yZGVyXT1cIm9yZGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkcmFnZ2FibGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZHJhZ3N0YXJ0KT1cImRyYWdTdGFydCgkZXZlbnQsb3JkZXIudHJhbnNJZClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdmVPcmRlckRvd25FdmVudCk9XCJtb3ZlT3JkZXJEb3duRXZlbnQuZW1pdCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3ZlT3JkZXJVcEV2ZW50KT1cIm1vdmVPcmRlclVwRXZlbnQuZW1pdCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jby1kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldy10aWxlLWxpbmU+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICA8Y28taG91ci1zY2hlZHVsaW5nLWV4cGFuZGFibGUgI2hvdXJTY2hlZHVsaW5nQ29tcG9uZW50XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJvcmRlcnNMb2FkZWQgJiYgdGlsZU1vZGUgPT09IHRpbGVNb2Rlcy5DYWxlbmRhclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NjaGVkdWxlXT1cInRyYW5zcG9ydERheVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0YXJ0VGltZVByb3BdPVwiJ3N0YXJ0VGltZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlbmRUaW1lUHJvcF09XCInZW5kVGltZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvYmplY3RzUHJvcF09XCIncGxhbm5lZE9yZGVycydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGlsZFByb3BdPVwiJ3RyYW5zcG9ydCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjdXN0b21UZW1wbGF0ZV09XCJjdXN0b21FeHBhbmRhYmxlVGVtcGxhdGVTZXBhcmF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkUHJvcF09XCIndHJhbnNJZCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aW1lQ2hhbmdlRXZlbnQpPVwiaGFuZGxlVGltZUNoYW5nZUV2ZW50KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkcm9wKT1cImhhbmRsZURyb3AoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5ld09iamVjdFBsYW5FdmVudCk9XCJoYW5kbGVDYWxlbmRhclBsYW5FdmVudCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW92ZUJldHdlZW5DYWxlbmRhcnNFdmVudCk9XCJoYW5kbGVNb3ZlQmV0d2VlbkNhbGVuZGFycygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgID48L2NvLWhvdXItc2NoZWR1bGluZy1leHBhbmRhYmxlPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY3VzdG9tRXhwYW5kYWJsZVRlbXBsYXRlU2VwYXJhdGUgbGV0LW9uRHJhZ1N0YXJ0Q3VzdG9tPVwib25EcmFnU3RhcnRDdXN0b21cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldC1vblNlbGVjdEJsb2NrPVwib25TZWxlY3RCbG9ja1wiIGxldC1vblJlc2l6ZVN0YXJ0PVwib25SZXNpemVTdGFydFwiIGxldC1vYmplY3RzPVwib2JqZWN0c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxjby1ob3VyLXNjaGVkdWxpbmctZXhwYW5kYWJsZS10ZW1wbGF0ZSBbb2JqZWN0c109XCJvYmplY3RzXCIgW29uU2VsZWN0QmxvY2tdPVwib25TZWxlY3RCbG9ja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvblJlc2l6ZVN0YXJ0XT1cIm9uUmVzaXplU3RhcnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb25EcmFnU3RhcnRDdXN0b21dPVwib25EcmFnU3RhcnRDdXN0b21cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb2JqZWN0VGVtcGxhdGVdPVwib2JqZWN0VGVtcGxhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNvYmplY3RUZW1wbGF0ZSBsZXQtb2JqPVwib2JqZWN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y28tZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXctdGlsZS1saW5lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWxldGVPcmRlckV2ZW50KT1cImhhbmRsZURlbGV0ZU9yZGVyQ2xpY2soJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWxldGVPcmRlckxpbmVFdmVudCk9XCJoYW5kbGVEZWxldGVPcmRlckxpbmVDbGljaygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVkaXRPcmRlckV2ZW50KT1cImhhbmRsZUVkaXRPcmRlckV2ZW50KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3JkZXJdPVwib3JkZXJGb3JPYmplY3Qob2JqLmlkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jby1kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldy10aWxlLWxpbmU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jby1ob3VyLXNjaGVkdWxpbmctZXhwYW5kYWJsZS10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvY28tY29sbGFwc2libGU+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwvZGl2PlxyXG4gIGAsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGVsaXZlcnlQbGFubmluZ092ZXJ2aWV3VGlsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBwdWJsaWMgcmVhZG9ubHkgaWNvbnM6IHR5cGVvZiBJY29uID0gSWNvbjtcclxuICBwdWJsaWMgcmVhZG9ubHkgdGlsZU1vZGVzOiB0eXBlb2YgRGVsaXZlcnlQbGFubmluZ1RpbGVNb2RlcyA9IERlbGl2ZXJ5UGxhbm5pbmdUaWxlTW9kZXM7XHJcblxyXG4gIHB1YmxpYyBvcmRlcnNMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSBfc3ViczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgdHJhbnNwb3J0RGF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBleHBhbmRlZEV2ZW50OiBFdmVudEVtaXR0ZXI8UGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5PiA9IG5ldyBFdmVudEVtaXR0ZXI8UGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgZGVsZXRlT3JkZXJFdmVudDogRXZlbnRFbWl0dGVyPFtQbGFuT3JkZXIsIFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheV0+ID0gbmV3IEV2ZW50RW1pdHRlcjxbUGxhbk9yZGVyLCBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXldPigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgZGVsZXRlT3JkZXJMaW5lRXZlbnQ6IEV2ZW50RW1pdHRlcjx7IG9yZGVyOiBQbGFuT3JkZXIsIGxpbmU6IFBsYW5PcmRlckxpbmUgfT4gPSBuZXcgRXZlbnRFbWl0dGVyPHtcclxuICAgIG9yZGVyOiBQbGFuT3JkZXIsXHJcbiAgICBsaW5lOiBQbGFuT3JkZXJMaW5lXHJcbiAgfT4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGVkaXRPcmRlckV2ZW50OiBFdmVudEVtaXR0ZXI8UGxhbk9yZGVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8UGxhbk9yZGVyPigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgZ2V0VHJhbnNwb3J0T3JkZXJzRXZlbnQ6IEV2ZW50RW1pdHRlcjxQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXk+ID0gbmV3IEV2ZW50RW1pdHRlcjxQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXk+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyB0aW1lQ2hhbmdlRXZlbnQ6IEV2ZW50RW1pdHRlcjxQbGFuT3JkZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxQbGFuT3JkZXI+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBvcGVuU2V0dGluZ3NEaWFsb2dFdmVudDogRXZlbnRFbWl0dGVyPFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheT4gPSBuZXcgRXZlbnRFbWl0dGVyPFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheT4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGF2YWlsYWJpbGl0eUNoZWNrZWQ6IEV2ZW50RW1pdHRlcjx7IHRyYW5zcG9ydERheTogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5LCBhdmFpbGFibGU6IGJvb2xlYW4gfT4gPSBuZXcgRXZlbnRFbWl0dGVyPHsgdHJhbnNwb3J0RGF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXksIGF2YWlsYWJsZTogYm9vbGVhbiB9PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgY2FsZW5kYXJQbGFuRXZlbnQ6IEV2ZW50RW1pdHRlcjx7IGN1cnJlbnRIb3VyOiBzdHJpbmcsIGRhdGE6IHN0cmluZyB9PiA9IG5ldyBFdmVudEVtaXR0ZXI8e1xyXG4gICAgY3VycmVudEhvdXI6IHN0cmluZyxcclxuICAgIGRhdGE6IHN0cmluZ1xyXG4gIH0+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBtb3ZlRXZlbnQ6IEV2ZW50RW1pdHRlcjx7IGhvdXI6IHN0cmluZywgc2NoZWR1bGVkT2JqZWN0OiBPYmplY3QgfT4gPSBuZXcgRXZlbnRFbWl0dGVyPHtcclxuICAgIGhvdXI6IHN0cmluZztcclxuICAgIHNjaGVkdWxlZE9iamVjdDogT2JqZWN0XHJcbiAgfT4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIG1vdmVPcmRlclVwRXZlbnQ6IEV2ZW50RW1pdHRlcjxQbGFuT3JkZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxQbGFuT3JkZXI+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBtb3ZlT3JkZXJEb3duRXZlbnQ6IEV2ZW50RW1pdHRlcjxQbGFuT3JkZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxQbGFuT3JkZXI+KCk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2hvdXJTY2hlZHVsaW5nQ29tcG9uZW50JylcclxuICBwdWJsaWMgaG91clNjaGVkdWxpbmdDb21wOiBIb3VyU2NoZWR1bGluZ0V4cGFuZGFibGVDb21wb25lbnQ7XHJcblxyXG4gIHB1YmxpYyBnZXQgdGlsZU1vZGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuY3VycmVudFRpbGVNb2RlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGV4cGFuZGVkOiBib29sZWFuO1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmNvLWRlbGl2ZXJ5LXBsYW5uaW5nLW92ZXJ2aWV3LXRpbGUnKVxyXG4gIHB1YmxpYyBzaG93Q2xhc3MoKSB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfZGVsaXZlcnlQbGFubmluZ1NlcnZpY2U6IERlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfdHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgX2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHB1YmxpYyBpY29uQ2FjaGVTZXJ2aWNlOiBJY29uQ2FjaGVTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGVtcGxveWVlVmlldygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5lbXBsb3llZVZpZXc7XHJcbiAgfVxyXG5cclxuICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICh0aGlzLnRyYW5zcG9ydERheSkge1xyXG4gICAgICBhd2FpdCB0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5nZXRUcmFuc3BvcnRPcmRlcnModGhpcy50cmFuc3BvcnREYXkpO1xyXG4gICAgICB0aGlzLm9yZGVyc0xvYWRlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuZ2V0VHJhbnNwb3J0T3JkZXJzRXZlbnQuZW1pdCh0aGlzLnRyYW5zcG9ydERheSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5lbXBsb3llZVZpZXcpIHtcclxuICAgICAgdGhpcy5leHBhbmRlZENoYW5nZSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fc3Vicy5wdXNoKHRoaXMuX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLnJlUmVuZGVySG91clNjaGVkdWxpbmcuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuICAgICAgdGhpcy5ob3VyU2NoZWR1bGluZ0NvbXA/LnJlbmRlck9iamVjdHMoKTtcclxuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0pKTtcclxuXHJcbiAgICB0aGlzLl9zdWJzLnB1c2godGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuYXZhaWxhYmlsaXR5Q2hlY2tFdmVudC5zdWJzY3JpYmUoYXN5bmMgKHBsYW5PcmRlcjogUGxhbk9yZGVyKSA9PiB7XHJcbiAgICAgIGF3YWl0IHRoaXMuaGFuZGxlQXZhaWxhYmlsaXR5Q2hlY2tlZChwbGFuT3JkZXIpO1xyXG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9KSk7XHJcblxyXG4gIH1cclxuXHJcbiAgYXN5bmMgbmdPbkRlc3Ryb3koKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLl9zdWJzLmZvckVhY2goKHN1YjogU3Vic2NyaXB0aW9uKSA9PiB7XHJcbiAgICAgIHN1Yi51bnN1YnNjcmliZSgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZHJhZ1N0YXJ0KGRyYWdFdmVudDogRHJhZ0V2ZW50LCB0cmFuc0lkOiBudW1iZXIpIHtcclxuICAgIGRyYWdFdmVudC5kYXRhVHJhbnNmZXIhLnNldERhdGEoJ3RleHQnLCBKU09OLnN0cmluZ2lmeSh0cmFuc0lkKSk7XHJcbiAgICB0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5tb3ZpbmdUcmFuc0lkID0gdHJhbnNJZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVEcm9wKGV2ZW50OiBEcmFnRXZlbnQpIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBleHBhbmRlZENoYW5nZSgpIHtcclxuICAgIHRoaXMuZXhwYW5kZWQgPSAhdGhpcy5leHBhbmRlZDtcclxuICAgIGlmICh0aGlzLmV4cGFuZGVkKSB7XHJcbiAgICAgIHRoaXMuX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLmdldFRyYW5zcG9ydE9yZGVycyh0aGlzLnRyYW5zcG9ydERheSkudGhlbihyZXN1bHQgPT4ge1xyXG4gICAgICAgIHRoaXMudHJhbnNwb3J0RGF5ID0gcmVzdWx0O1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVEZWxldGVPcmRlckNsaWNrKG9yZGVyOiBQbGFuT3JkZXIpIHtcclxuICAgIHRoaXMuZGVsZXRlT3JkZXJFdmVudC5lbWl0KFtvcmRlciwgdGhpcy50cmFuc3BvcnREYXldKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVEZWxldGVPcmRlckxpbmVDbGljayhkYXRhOiB7IG9yZGVyOiBQbGFuT3JkZXIsIGxpbmU6IFBsYW5PcmRlckxpbmUgfSkge1xyXG4gICAgdGhpcy5kZWxldGVPcmRlckxpbmVFdmVudC5lbWl0KGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9yZGVyRm9yT2JqZWN0KHRyYW5zSWQ6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIHRoaXMudHJhbnNwb3J0RGF5LnBsYW5uZWRPcmRlcnMuZmluZChvcmRlciA9PiBvcmRlci50cmFuc0lkID09PSB0cmFuc0lkKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvcGVuU2V0dGluZ3NEaWFsb2coKSB7XHJcbiAgICB0aGlzLm9wZW5TZXR0aW5nc0RpYWxvZ0V2ZW50LmVtaXQodGhpcy50cmFuc3BvcnREYXkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZVRpbWVDaGFuZ2VFdmVudChvYmo6IFBsYW5PcmRlcikge1xyXG4gICAgdGhpcy50aW1lQ2hhbmdlRXZlbnQuZW1pdChvYmopO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUNhbGVuZGFyUGxhbkV2ZW50KGRhdGE6IHsgY3VycmVudEhvdXI6IHN0cmluZywgZGF0YTogc3RyaW5nIH0pIHtcclxuICAgIHRoaXMuY2FsZW5kYXJQbGFuRXZlbnQuZW1pdChkYXRhKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVFZGl0T3JkZXJFdmVudChwbGFuT3JkZXI6IFBsYW5PcmRlcikge1xyXG4gICAgdGhpcy5lZGl0T3JkZXJFdmVudC5lbWl0KHBsYW5PcmRlcik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgaGFuZGxlTW92ZUJldHdlZW5DYWxlbmRhcnMobW92ZURhdGE6IHsgaG91cjogc3RyaW5nLCBkYXRhOiBPYmplY3QgfSkge1xyXG4gICAgaWYgKG1vdmVEYXRhICYmIG1vdmVEYXRhLmRhdGFbJ29iaiddWydpZCddICYmIG1vdmVEYXRhLmRhdGFbJ29iaiddWydoZWlnaHQnXSkge1xyXG4gICAgICB0aGlzLm1vdmVFdmVudC5lbWl0KHtcclxuICAgICAgICBob3VyOiBtb3ZlRGF0YS5ob3VyLFxyXG4gICAgICAgIHNjaGVkdWxlZE9iamVjdDogbW92ZURhdGE/LmRhdGFcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGhhbmRsZUF2YWlsYWJpbGl0eUNoZWNrZWQocGxhbk9yZGVyOiBQbGFuT3JkZXIpIHtcclxuICAgIGxldCBhdmFpbGFibGU6IGJvb2xlYW47XHJcbiAgICBhdmFpbGFibGUgPSB0aGlzLnRyYW5zcG9ydERheS5hdmFpbGFibGVPbkRhdGU7XHJcbiAgICBhdmFpbGFibGUgPSBhd2FpdCB0aGlzLmRlbGl2ZXJ5TWV0aG9kQXZhaWxhYmlsaXR5Q2hlY2socGxhbk9yZGVyLCBhdmFpbGFibGUpO1xyXG4gICAgYXZhaWxhYmxlID0gYXdhaXQgdGhpcy5kaXN0cmljdEF2YWlsYWJpbGl0eUNoZWNrKHBsYW5PcmRlciwgYXZhaWxhYmxlKTtcclxuICAgIHRoaXMuYXZhaWxhYmlsaXR5Q2hlY2tlZC5lbWl0KHt0cmFuc3BvcnREYXk6IHRoaXMudHJhbnNwb3J0RGF5LCBhdmFpbGFibGU6IGF2YWlsYWJsZX0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldE9yZGVyTGluZXNQbGFubmVkKHBsYW5PcmRlcjogUGxhbk9yZGVyKSB7XHJcbiAgICBsZXQgcmVxdWVzdDogT3JkZXJMaW5lc1BsYW5uZWRSZXF1ZXN0ID0gbmV3IE9yZGVyTGluZXNQbGFubmVkUmVxdWVzdCgpO1xyXG4gICAgbGV0IGZpbHRlck9iajogUGxhbm5pbmdGaWx0ZXJPYmplY3QgPSBuZXcgUGxhbm5pbmdGaWx0ZXJPYmplY3QoKTtcclxuICAgIHJlcXVlc3QucGxhbm5lZCA9IHRydWU7XHJcbiAgICByZXF1ZXN0LnBsYW5uaW5nSWQgPSB0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5jdXJyZW50UGxhbm5pbmcucGxhbm5pbmdJZDtcclxuICAgIHJlcXVlc3QudHJhbnNJZCA9IHBsYW5PcmRlci50cmFuc0lkO1xyXG4gICAgcmVxdWVzdC5wbGFubmVkTGluZUlkID0gcGxhbk9yZGVyLnBsYW5uZWRMaW5lSWQ7XHJcbiAgICBmaWx0ZXJPYmoub25seUN1cnJlbnRXZWVrID0gdHJ1ZTtcclxuICAgIGZpbHRlck9iai5iZWdpbkN1cnJlbnRXZWVrID0gbmV3IERhdGUoKTtcclxuICAgIGZpbHRlck9iai5jaGVja09yZGVyTGluZXMgPSAxO1xyXG4gICAgcmVxdWVzdC5maWx0ZXJPYmplY3QgPSBmaWx0ZXJPYmo7XHJcbiAgICBwbGFuT3JkZXIubGluZXMucHVzaCguLi5hd2FpdCB0aGlzLl90cmFuc2FjdGlvbi5nZXRPcmRlckxpbmVzUGxhbm5lZChyZXF1ZXN0KSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZGVsaXZlcnlNZXRob2RBdmFpbGFiaWxpdHlDaGVjayhwbGFuT3JkZXI6IFBsYW5PcmRlciwgYXZhaWxhYmxlOiBib29sZWFuKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICBpZihhdmFpbGFibGUpIHtcclxuICAgICAgaWYgKCFwbGFuT3JkZXIucGFydERlbGl2ZXJ5KSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnRyYW5zcG9ydERheS5kZWxpdmVyeU1ldGhvZHMuZmluZChtZXRob2QgPT4gbWV0aG9kID09PSBwbGFuT3JkZXIuZGVsaXZlcnlNZXRob2QudG9TdHJpbmcoKSkpIHtcclxuICAgICAgICAgIGF2YWlsYWJsZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5nZXRPcmRlckxpbmVzUGxhbm5lZChwbGFuT3JkZXIpO1xyXG4gICAgICAgIHBsYW5PcmRlci5saW5lcy5mb3JFYWNoKChsaW5lOiBQbGFuT3JkZXJMaW5lKSA9PiB7XHJcbiAgICAgICAgICBpZiAoIXRoaXMudHJhbnNwb3J0RGF5LmRlbGl2ZXJ5TWV0aG9kcy5maW5kKG1ldGhvZCA9PiBtZXRob2QgPT09IGxpbmUuZGVsaXZlcnlNZXRob2QpKSB7XHJcbiAgICAgICAgICAgIGF2YWlsYWJsZSA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBhdmFpbGFibGU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gYXZhaWxhYmxlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGRpc3RyaWN0QXZhaWxhYmlsaXR5Q2hlY2socGxhbk9yZGVyOiBQbGFuT3JkZXIsIGF2YWlsYWJsZTogYm9vbGVhbik6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgLy9JZiB0cnVlOiB5b3UgY2FuIHBsYW4gd2l0aG91dCByYXlvbnMvZGlzdHJpY3RzLiBPcmRlcnMgd2l0aG91dCBkaXN0cmljdHMgY2FuIGdvIGV2ZXJ5d2hlcmUgaW4gdGhpcyBjYXNlLiBEb2VzIGl0IGhhdmUgZGlzdHJpY3RzIHRoYXQgaXQgbmVlZHMgdG8gbWF0Y2ggYSBkaXN0cmljdCBpbiB0aGUgcGxhbiByZXNvdXJjZS5cclxuICAgIC8vSWYgZmFsc2U6IG9yZGVycyB3aXRob3V0IGRpc3RyaWN0IGNhbiBub3QgYmUgcGxhbm5lZC4gT24gYSBwbGFuIHJlc291cmNlIHdpdGhvdXQgZGlzdHJpY3RzIHlvdSBjYW4ndCBwbGFuLiBPdGhlciB0aGFuIHRoYXQgc2FtZSBydWxlcyBhcHBseS5cclxuXHJcbiAgICBpZihhdmFpbGFibGUpIHtcclxuICAgICAgaWYgKCF0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5wbGFuUmF5b24pIHtcclxuICAgICAgICBpZiAoIXBsYW5PcmRlci5kaXN0cmljdHMgfHwgcGxhbk9yZGVyLmRpc3RyaWN0cy5sZW5ndGgpIHtcclxuICAgICAgICAgIGF2YWlsYWJsZSA9IGZhbHNlO1xyXG4gICAgICAgICAgcmV0dXJuIGF2YWlsYWJsZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghdGhpcy50cmFuc3BvcnREYXkuZGlzdHJpY3RzIHx8IHRoaXMudHJhbnNwb3J0RGF5LmRpc3RyaWN0cy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgIGF2YWlsYWJsZSA9IGZhbHNlO1xyXG4gICAgICAgICAgcmV0dXJuIGF2YWlsYWJsZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCF0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5oYXNNYXRjaCh0aGlzLnRyYW5zcG9ydERheS5kaXN0cmljdHMsIHBsYW5PcmRlci5kaXN0cmljdHMpKSB7XHJcbiAgICAgICAgYXZhaWxhYmxlID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGF2YWlsYWJsZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBhdmFpbGFibGU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG5cclxuIl19
310
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXctdGlsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cmFuc2FjdGlvbi9zcmMvbGliL2NvbXBvbmVudC9kZWxpdmVyeS1wbGFubmluZy1tYWluL2NvbXBvbmVudC9kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldy9jb21wb25lbnQvZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXctdGlsZS9kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldy10aWxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUd0SixPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxvRUFBb0UsQ0FBQztBQUMzRyxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDdEQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sOENBQThDLENBQUM7QUFDOUUsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sMERBQTBELENBQUM7QUFJbkcsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sK0NBQStDLENBQUM7QUFDakYsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0scUVBQXFFLENBQUM7QUFDN0csT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sZ0VBQWdFLENBQUM7QUFnR3BHLE1BQU0sT0FBTyxxQ0FBcUM7SUF5RWhELFlBQ1Usd0JBQWlELEVBQ2pELFlBQWdDLEVBQ2hDLGVBQWtDLEVBQ25DLGdCQUFrQztRQUhqQyw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQXlCO1FBQ2pELGlCQUFZLEdBQVosWUFBWSxD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QUFBOzs7WUF4VUYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxvQ0FBb0M7Z0JBQzlDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F5RlQ7Z0JBQ0QsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7YUFDdEM7OztZQXhHTyx1QkFBdUI7WUFPdkIsa0JBQWtCO1lBVmxCLGlCQUFpQjtZQUtqQixnQkFBZ0I7Ozt1QkErR3JCLEtBQUs7MkJBR0wsS0FBSzs0QkFHTCxNQUFNOytCQUdOLE1BQU07bUNBR04sTUFBTTs2QkFNTixNQUFNO3NDQUdOLE1BQU07OEJBR04sTUFBTTtzQ0FHTixNQUFNO2tDQUdOLE1BQU07Z0NBR04sTUFBTTt3QkFNTixNQUFNOytCQU1OLE1BQU07aUNBR04sTUFBTTtpQ0FHTixTQUFTLFNBQUMseUJBQXlCO3dCQVNuQyxXQUFXLFNBQUMsMENBQTBDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7UGxhbk9yZGVyfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGxhbi1vcmRlci5ibyc7XHJcbmltcG9ydCB7UGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGxhbm5pbmctdHJhbnNwb3J0LXdlZWstZGF5LmJvJztcclxuaW1wb3J0IHtEZWxpdmVyeVBsYW5uaW5nU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vZGVsaXZlcnktcGxhbm5pbmcvc2VydmljZS9kZWxpdmVyeS1wbGFubmluZy5zZXJ2aWNlJztcclxuaW1wb3J0IHtJY29ufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9lbnVtL2ljb24uZW51bSc7XHJcbmltcG9ydCB7SWNvbkNhY2hlU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vc2VydmljZS9pY29uLWNhY2hlLnNlcnZpY2UnO1xyXG5pbXBvcnQge0RlbGl2ZXJ5UGxhbm5pbmdUaWxlTW9kZXN9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2VudW0vZGVsaXZlcnktcGxhbm5pbmctdGlsZS1tb2Rlcy5lbnVtJztcclxuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge0hvdXJTY2hlZHVsaW5nRXhwYW5kYWJsZUNvbXBvbmVudH0gZnJvbSAnQGNvbGlqbml0L2NvcmVjb21wb25lbnRzX3YxMic7XHJcbmltcG9ydCB7UGxhbk9yZGVyTGluZX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BsYW4tb3JkZXItbGluZS5ibyc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9zZXJ2aWNlL3RyYW5zYWN0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQge09yZGVyTGluZXNQbGFubmVkUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL29yZGVyLWxpbmVzLXBsYW5uZWQtcmVxdWVzdC5ibyc7XHJcbmltcG9ydCB7UGxhbm5pbmdGaWx0ZXJPYmplY3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wbGFubmluZy1maWx0ZXItb2JqZWN0LmJvJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY28tZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXctdGlsZScsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgICAgPGRpdiBjbGFzcz1cImRlbGl2ZXJ5LXBsYW5uaW5nLW92ZXJ2aWV3LXRpbGUtd3JhcHBlclwiIFtjbGFzcy5zZWxlY3RlZF09XCJ0cmFuc3BvcnREYXkuc2VsZWN0ZWRcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItdGlsZS13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci10aXRsZVwiIChjbGljayk9XCJleHBhbmRlZENoYW5nZSgpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxjby1pY29uICpuZ0lmPVwiIWV4cGFuZGVkXCIgW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29ucy5DYXJldERvd25Tb2xpZClcIj48L2NvLWljb24+XHJcbiAgICAgICAgICAgICAgICAgIDxjby1pY29uICpuZ0lmPVwiZXhwYW5kZWRcIiBbaWNvbkRhdGFdPVwiaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKGljb25zLkNhcmV0VXBTb2xpZClcIj48L2NvLWljb24+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaGVhZGVyLXRpdGxlXCIgW3RleHRDb250ZW50XT1cInRyYW5zcG9ydERheT8udHJhbnNwb3J0LnJlZ2lzdHJhdGlvbk51bWJlclwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJ1Y2staGVhZGVyLXRpbGVcIj5cclxuICAgICAgICAgICAgICAgICAgPGNvLWljb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaWNvbkRhdGFdPVwiaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKGljb25zLlRydWNrQ29udGFpbmVyRHVvKVwiPjwvY28taWNvbj5cclxuICAgICAgICAgICAgICAgICAgPGNvLWljb24gY2xhc3M9XCJzbWFsbFwiIChjbGljayk9XCJvcGVuU2V0dGluZ3NEaWFsb2coKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24oaWNvbnMuU2xpZGVyc1VwUmVndWxhcilcIj48L2NvLWljb24+XHJcblxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBsYW5uaW5nLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RhdHVzLXdyYXBwZXIgcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxjby1kZWxpdmVyeS1wbGFubmluZy10aWxlLXN0YXR1c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtjdXJyZW50Vm9sdW1lXT1cInRyYW5zcG9ydERheT8ub3JkZXJBbW91bnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFttYXhWb2x1bWVdPVwidHJhbnNwb3J0RGF5Py5tYXhPcmRlckFtb3VudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2N1cnJlbnRUaW1lVG90YWxdPVwidHJhbnNwb3J0RGF5Py5taW51dGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbdGltZVRvdGFsXT1cInRyYW5zcG9ydERheT8ubWF4TWludXRlc1wiPlxyXG4gICAgICAgICAgICAgICAgICA8L2NvLWRlbGl2ZXJ5LXBsYW5uaW5nLXRpbGUtc3RhdHVzPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGxhbm5pbmctc2hvcnQtbGluZS13cmFwcGVyXCIgKm5nSWY9XCIhZXhwYW5kZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxjby1kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldy1zaG9ydC1saW5lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBvcmRlciBvZiB0cmFuc3BvcnREYXk/LnBsYW5uZWRPcmRlcnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVsZXRlT3JkZXJFdmVudCk9XCJoYW5kbGVEZWxldGVPcmRlckNsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3JkZXJdPVwib3JkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvY28tZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXctc2hvcnQtbGluZT5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGNvLWNvbGxhcHNpYmxlIFtleHBhbmRlZF09XCJleHBhbmRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGlsZS1jb250ZW50LXdyYXBwZXIgY29sdW1uXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBsYW5uaW5nLWxpbmVzLXdyYXBwZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInRpbGVNb2RlID09PSB0aWxlTW9kZXMuTm9ybWFsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvLWRlbGl2ZXJ5LXBsYW5uaW5nLW92ZXJ2aWV3LXRpbGUtbGluZSBjbGFzcz1cIm5vcm1hbC1tb2RlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBvcmRlciBvZiB0cmFuc3BvcnREYXk/LnBsYW5uZWRPcmRlcnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlbGV0ZU9yZGVyRXZlbnQpPVwiaGFuZGxlRGVsZXRlT3JkZXJDbGljaygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWxldGVPcmRlckxpbmVFdmVudCk9XCJoYW5kbGVEZWxldGVPcmRlckxpbmVDbGljaygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlZGl0T3JkZXJFdmVudCk9XCJoYW5kbGVFZGl0T3JkZXJFdmVudCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc0FjdGl2ZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcmRlcl09XCJvcmRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZHJhZ2dhYmxlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRyYWdzdGFydCk9XCJkcmFnU3RhcnQoJGV2ZW50LG9yZGVyLnRyYW5zSWQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3ZlT3JkZXJEb3duRXZlbnQpPVwibW92ZU9yZGVyRG93bkV2ZW50LmVtaXQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW92ZU9yZGVyVXBFdmVudCk9XCJtb3ZlT3JkZXJVcEV2ZW50LmVtaXQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvY28tZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXctdGlsZS1saW5lPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPGNvLWhvdXItc2NoZWR1bGluZy1leHBhbmRhYmxlICNob3VyU2NoZWR1bGluZ0NvbXBvbmVudFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwib3JkZXJzTG9hZGVkICYmIHRpbGVNb2RlID09PSB0aWxlTW9kZXMuQ2FsZW5kYXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzY2hlZHVsZV09XCJ0cmFuc3BvcnREYXlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdGFydFRpbWVQcm9wXT1cIidzdGFydFRpbWUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZW5kVGltZVByb3BdPVwiJ2VuZFRpbWUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb2JqZWN0c1Byb3BdPVwiJ3BsYW5uZWRPcmRlcnMnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hpbGRQcm9wXT1cIid0cmFuc3BvcnQnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY3VzdG9tVGVtcGxhdGVdPVwiY3VzdG9tRXhwYW5kYWJsZVRlbXBsYXRlU2VwYXJhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZFByb3BdPVwiJ3RyYW5zSWQnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGltZUNoYW5nZUV2ZW50KT1cImhhbmRsZVRpbWVDaGFuZ2VFdmVudCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZHJvcCk9XCJoYW5kbGVEcm9wKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZXdPYmplY3RQbGFuRXZlbnQpPVwiaGFuZGxlQ2FsZW5kYXJQbGFuRXZlbnQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdmVCZXR3ZWVuQ2FsZW5kYXJzRXZlbnQpPVwiaGFuZGxlTW92ZUJldHdlZW5DYWxlbmRhcnMoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+PC9jby1ob3VyLXNjaGVkdWxpbmctZXhwYW5kYWJsZT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2N1c3RvbUV4cGFuZGFibGVUZW1wbGF0ZVNlcGFyYXRlIGxldC1vbkRyYWdTdGFydEN1c3RvbT1cIm9uRHJhZ1N0YXJ0Q3VzdG9tXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQtb25TZWxlY3RCbG9jaz1cIm9uU2VsZWN0QmxvY2tcIiBsZXQtb25SZXNpemVTdGFydD1cIm9uUmVzaXplU3RhcnRcIiBsZXQtb2JqZWN0cz1cIm9iamVjdHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Y28taG91ci1zY2hlZHVsaW5nLWV4cGFuZGFibGUtdGVtcGxhdGUgW29iamVjdHNdPVwib2JqZWN0c1wiIFtvblNlbGVjdEJsb2NrXT1cIm9uU2VsZWN0QmxvY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb25SZXNpemVTdGFydF09XCJvblJlc2l6ZVN0YXJ0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29uRHJhZ1N0YXJ0Q3VzdG9tXT1cIm9uRHJhZ1N0YXJ0Q3VzdG9tXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29iamVjdFRlbXBsYXRlXT1cIm9iamVjdFRlbXBsYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjb2JqZWN0VGVtcGxhdGUgbGV0LW9iaj1cIm9iamVjdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvLWRlbGl2ZXJ5LXBsYW5uaW5nLW92ZXJ2aWV3LXRpbGUtbGluZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVsZXRlT3JkZXJFdmVudCk9XCJoYW5kbGVEZWxldGVPcmRlckNsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVsZXRlT3JkZXJMaW5lRXZlbnQpPVwiaGFuZGxlRGVsZXRlT3JkZXJMaW5lQ2xpY2soJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlZGl0T3JkZXJFdmVudCk9XCJoYW5kbGVFZGl0T3JkZXJFdmVudCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29yZGVyXT1cIm9yZGVyRm9yT2JqZWN0KG9iai5pZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY28tZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXctdGlsZS1saW5lPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvY28taG91ci1zY2hlZHVsaW5nLWV4cGFuZGFibGUtdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2NvLWNvbGxhcHNpYmxlPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8L2Rpdj5cclxuICBgLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIERlbGl2ZXJ5UGxhbm5pbmdPdmVydmlld1RpbGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgcHVibGljIHJlYWRvbmx5IGljb25zOiB0eXBlb2YgSWNvbiA9IEljb247XHJcbiAgcHVibGljIHJlYWRvbmx5IHRpbGVNb2RlczogdHlwZW9mIERlbGl2ZXJ5UGxhbm5pbmdUaWxlTW9kZXMgPSBEZWxpdmVyeVBsYW5uaW5nVGlsZU1vZGVzO1xyXG5cclxuICBwdWJsaWMgb3JkZXJzTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHByaXZhdGUgX3N1YnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHRyYW5zcG9ydERheTogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5O1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgZXhwYW5kZWRFdmVudDogRXZlbnRFbWl0dGVyPFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheT4gPSBuZXcgRXZlbnRFbWl0dGVyPFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheT4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGRlbGV0ZU9yZGVyRXZlbnQ6IEV2ZW50RW1pdHRlcjxbUGxhbk9yZGVyLCBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXldPiA9IG5ldyBFdmVudEVtaXR0ZXI8W1BsYW5PcmRlciwgUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5XT4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGRlbGV0ZU9yZGVyTGluZUV2ZW50OiBFdmVudEVtaXR0ZXI8eyBvcmRlcjogUGxhbk9yZGVyLCBsaW5lOiBQbGFuT3JkZXJMaW5lIH0+ID0gbmV3IEV2ZW50RW1pdHRlcjx7XHJcbiAgICBvcmRlcjogUGxhbk9yZGVyLFxyXG4gICAgbGluZTogUGxhbk9yZGVyTGluZVxyXG4gIH0+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBlZGl0T3JkZXJFdmVudDogRXZlbnRFbWl0dGVyPFBsYW5PcmRlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPFBsYW5PcmRlcj4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGdldFRyYW5zcG9ydE9yZGVyc0V2ZW50OiBFdmVudEVtaXR0ZXI8UGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5PiA9IG5ldyBFdmVudEVtaXR0ZXI8UGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgdGltZUNoYW5nZUV2ZW50OiBFdmVudEVtaXR0ZXI8UGxhbk9yZGVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8UGxhbk9yZGVyPigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgb3BlblNldHRpbmdzRGlhbG9nRXZlbnQ6IEV2ZW50RW1pdHRlcjxQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXk+ID0gbmV3IEV2ZW50RW1pdHRlcjxQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXk+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBhdmFpbGFiaWxpdHlDaGVja2VkOiBFdmVudEVtaXR0ZXI8eyB0cmFuc3BvcnREYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSwgYXZhaWxhYmxlOiBib29sZWFuIH0+ID0gbmV3IEV2ZW50RW1pdHRlcjx7IHRyYW5zcG9ydERheTogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5LCBhdmFpbGFibGU6IGJvb2xlYW4gfT4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGNhbGVuZGFyUGxhbkV2ZW50OiBFdmVudEVtaXR0ZXI8eyBjdXJyZW50SG91cjogc3RyaW5nLCBkYXRhOiBzdHJpbmcgfT4gPSBuZXcgRXZlbnRFbWl0dGVyPHtcclxuICAgIGN1cnJlbnRIb3VyOiBzdHJpbmcsXHJcbiAgICBkYXRhOiBzdHJpbmdcclxuICB9PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgbW92ZUV2ZW50OiBFdmVudEVtaXR0ZXI8eyBob3VyOiBzdHJpbmcsIHNjaGVkdWxlZE9iamVjdDogT2JqZWN0IH0+ID0gbmV3IEV2ZW50RW1pdHRlcjx7XHJcbiAgICBob3VyOiBzdHJpbmc7XHJcbiAgICBzY2hlZHVsZWRPYmplY3Q6IE9iamVjdFxyXG4gIH0+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBtb3ZlT3JkZXJVcEV2ZW50OiBFdmVudEVtaXR0ZXI8UGxhbk9yZGVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8UGxhbk9yZGVyPigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgbW92ZU9yZGVyRG93bkV2ZW50OiBFdmVudEVtaXR0ZXI8UGxhbk9yZGVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8UGxhbk9yZGVyPigpO1xyXG5cclxuICBAVmlld0NoaWxkKCdob3VyU2NoZWR1bGluZ0NvbXBvbmVudCcpXHJcbiAgcHVibGljIGhvdXJTY2hlZHVsaW5nQ29tcDogSG91clNjaGVkdWxpbmdFeHBhbmRhYmxlQ29tcG9uZW50O1xyXG5cclxuICBwdWJsaWMgZ2V0IHRpbGVNb2RlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLmN1cnJlbnRUaWxlTW9kZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBleHBhbmRlZDogYm9vbGVhbjtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jby1kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldy10aWxlJylcclxuICBwdWJsaWMgc2hvd0NsYXNzKCkge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlOiBEZWxpdmVyeVBsYW5uaW5nU2VydmljZSxcclxuICAgIHByaXZhdGUgX3RyYW5zYWN0aW9uOiBUcmFuc2FjdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwdWJsaWMgaWNvbkNhY2hlU2VydmljZTogSWNvbkNhY2hlU2VydmljZVxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBlbXBsb3llZVZpZXcoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuZW1wbG95ZWVWaWV3O1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAodGhpcy50cmFuc3BvcnREYXkpIHtcclxuICAgICAgYXdhaXQgdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuZ2V0VHJhbnNwb3J0T3JkZXJzKHRoaXMudHJhbnNwb3J0RGF5KTtcclxuICAgICAgdGhpcy5vcmRlcnNMb2FkZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmdldFRyYW5zcG9ydE9yZGVyc0V2ZW50LmVtaXQodGhpcy50cmFuc3BvcnREYXkpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZW1wbG95ZWVWaWV3KSB7XHJcbiAgICAgIHRoaXMuZXhwYW5kZWRDaGFuZ2UoKTtcclxuICAgIH1cclxuICAgIHRoaXMuX3N1YnMucHVzaCh0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5yZVJlbmRlckhvdXJTY2hlZHVsaW5nLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgIHRoaXMuaG91clNjaGVkdWxpbmdDb21wPy5yZW5kZXJPYmplY3RzKCk7XHJcbiAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9KSk7XHJcblxyXG4gICAgdGhpcy5fc3Vicy5wdXNoKHRoaXMuX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLmF2YWlsYWJpbGl0eUNoZWNrRXZlbnQuc3Vic2NyaWJlKGFzeW5jIChwbGFuT3JkZXI6IFBsYW5PcmRlcikgPT4ge1xyXG4gICAgICBhd2FpdCB0aGlzLmhhbmRsZUF2YWlsYWJpbGl0eUNoZWNrZWQocGxhbk9yZGVyKTtcclxuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSkpO1xyXG5cclxuICB9XHJcblxyXG4gIGFzeW5jIG5nT25EZXN0cm95KCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5fc3Vicy5mb3JFYWNoKChzdWI6IFN1YnNjcmlwdGlvbikgPT4ge1xyXG4gICAgICBzdWIudW5zdWJzY3JpYmUoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGRyYWdTdGFydChkcmFnRXZlbnQ6IERyYWdFdmVudCwgdHJhbnNJZDogbnVtYmVyKSB7XHJcbiAgICBkcmFnRXZlbnQuZGF0YVRyYW5zZmVyIS5zZXREYXRhKCd0ZXh0JywgSlNPTi5zdHJpbmdpZnkodHJhbnNJZCkpO1xyXG4gICAgdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UubW92aW5nVHJhbnNJZCA9IHRyYW5zSWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlRHJvcChldmVudDogRHJhZ0V2ZW50KSB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZXhwYW5kZWRDaGFuZ2UoKSB7XHJcbiAgICB0aGlzLmV4cGFuZGVkID0gIXRoaXMuZXhwYW5kZWQ7XHJcbiAgICBpZiAodGhpcy5leHBhbmRlZCkge1xyXG4gICAgICB0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5nZXRUcmFuc3BvcnRPcmRlcnModGhpcy50cmFuc3BvcnREYXkpLnRoZW4ocmVzdWx0ID0+IHtcclxuICAgICAgICB0aGlzLnRyYW5zcG9ydERheSA9IHJlc3VsdDtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlRGVsZXRlT3JkZXJDbGljayhvcmRlcjogUGxhbk9yZGVyKSB7XHJcbiAgICB0aGlzLmRlbGV0ZU9yZGVyRXZlbnQuZW1pdChbb3JkZXIsIHRoaXMudHJhbnNwb3J0RGF5XSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlRGVsZXRlT3JkZXJMaW5lQ2xpY2soZGF0YTogeyBvcmRlcjogUGxhbk9yZGVyLCBsaW5lOiBQbGFuT3JkZXJMaW5lIH0pIHtcclxuICAgIHRoaXMuZGVsZXRlT3JkZXJMaW5lRXZlbnQuZW1pdChkYXRhKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvcmRlckZvck9iamVjdCh0cmFuc0lkOiBudW1iZXIpIHtcclxuICAgIHJldHVybiB0aGlzLnRyYW5zcG9ydERheS5wbGFubmVkT3JkZXJzLmZpbmQob3JkZXIgPT4gb3JkZXIudHJhbnNJZCA9PT0gdHJhbnNJZCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb3BlblNldHRpbmdzRGlhbG9nKCkge1xyXG4gICAgdGhpcy5vcGVuU2V0dGluZ3NEaWFsb2dFdmVudC5lbWl0KHRoaXMudHJhbnNwb3J0RGF5KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVUaW1lQ2hhbmdlRXZlbnQob2JqOiBQbGFuT3JkZXIpIHtcclxuICAgIHRoaXMudGltZUNoYW5nZUV2ZW50LmVtaXQob2JqKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVDYWxlbmRhclBsYW5FdmVudChkYXRhOiB7IGN1cnJlbnRIb3VyOiBzdHJpbmcsIGRhdGE6IHN0cmluZyB9KSB7XHJcbiAgICB0aGlzLmNhbGVuZGFyUGxhbkV2ZW50LmVtaXQoZGF0YSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlRWRpdE9yZGVyRXZlbnQocGxhbk9yZGVyOiBQbGFuT3JkZXIpIHtcclxuICAgIHRoaXMuZWRpdE9yZGVyRXZlbnQuZW1pdChwbGFuT3JkZXIpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGhhbmRsZU1vdmVCZXR3ZWVuQ2FsZW5kYXJzKG1vdmVEYXRhOiB7IGhvdXI6IHN0cmluZywgZGF0YTogT2JqZWN0IH0pIHtcclxuICAgIGlmIChtb3ZlRGF0YSAmJiBtb3ZlRGF0YS5kYXRhWydvYmonXVsnaWQnXSAmJiBtb3ZlRGF0YS5kYXRhWydvYmonXVsnaGVpZ2h0J10pIHtcclxuICAgICAgdGhpcy5tb3ZlRXZlbnQuZW1pdCh7XHJcbiAgICAgICAgaG91cjogbW92ZURhdGEuaG91cixcclxuICAgICAgICBzY2hlZHVsZWRPYmplY3Q6IG1vdmVEYXRhPy5kYXRhXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBoYW5kbGVBdmFpbGFiaWxpdHlDaGVja2VkKHBsYW5PcmRlcjogUGxhbk9yZGVyKSB7XHJcbiAgICB0aGlzLmF2YWlsYWJpbGl0eUNoZWNrZWQuZW1pdCh7dHJhbnNwb3J0RGF5OiB0aGlzLnRyYW5zcG9ydERheSwgYXZhaWxhYmxlOiB0aGlzLnRyYW5zcG9ydERheS5hdmFpbGFibGVPbkRhdGUgJiYgYXdhaXQgdGhpcy5kZWxpdmVyeU1ldGhvZEF2YWlsYWJpbGl0eUNoZWNrKHBsYW5PcmRlcikgJiYgYXdhaXQgdGhpcy5kaXN0cmljdEF2YWlsYWJpbGl0eUNoZWNrKHBsYW5PcmRlcil9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRPcmRlckxpbmVzUGxhbm5lZChwbGFuT3JkZXI6IFBsYW5PcmRlcikge1xyXG4gICAgbGV0IHJlcXVlc3Q6IE9yZGVyTGluZXNQbGFubmVkUmVxdWVzdCA9IG5ldyBPcmRlckxpbmVzUGxhbm5lZFJlcXVlc3QoKTtcclxuICAgIGxldCBmaWx0ZXJPYmo6IFBsYW5uaW5nRmlsdGVyT2JqZWN0ID0gbmV3IFBsYW5uaW5nRmlsdGVyT2JqZWN0KCk7XHJcbiAgICByZXF1ZXN0LnBsYW5uZWQgPSB0cnVlO1xyXG4gICAgcmVxdWVzdC5wbGFubmluZ0lkID0gdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuY3VycmVudFBsYW5uaW5nLnBsYW5uaW5nSWQ7XHJcbiAgICByZXF1ZXN0LnRyYW5zSWQgPSBwbGFuT3JkZXIudHJhbnNJZDtcclxuICAgIHJlcXVlc3QucGxhbm5lZExpbmVJZCA9IHBsYW5PcmRlci5wbGFubmVkTGluZUlkO1xyXG4gICAgZmlsdGVyT2JqLm9ubHlDdXJyZW50V2VlayA9IHRydWU7XHJcbiAgICBmaWx0ZXJPYmouYmVnaW5DdXJyZW50V2VlayA9IG5ldyBEYXRlKCk7XHJcbiAgICBmaWx0ZXJPYmouY2hlY2tPcmRlckxpbmVzID0gMTtcclxuICAgIHJlcXVlc3QuZmlsdGVyT2JqZWN0ID0gZmlsdGVyT2JqO1xyXG4gICAgcGxhbk9yZGVyLmxpbmVzLnB1c2goLi4uYXdhaXQgdGhpcy5fdHJhbnNhY3Rpb24uZ2V0T3JkZXJMaW5lc1BsYW5uZWQocmVxdWVzdCkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGRlbGl2ZXJ5TWV0aG9kQXZhaWxhYmlsaXR5Q2hlY2socGxhbk9yZGVyOiBQbGFuT3JkZXIpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIGxldCBhdmFpbGFibGU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gICAgaWYoYXZhaWxhYmxlKSB7XHJcbiAgICAgIGlmICghcGxhbk9yZGVyLnBhcnREZWxpdmVyeSkge1xyXG4gICAgICAgIGlmICghdGhpcy50cmFuc3BvcnREYXkuZGVsaXZlcnlNZXRob2RzLmZpbmQobWV0aG9kID0+IG1ldGhvZCA9PT0gcGxhbk9yZGVyLmRlbGl2ZXJ5TWV0aG9kLnRvU3RyaW5nKCkpKSB7XHJcbiAgICAgICAgICBhdmFpbGFibGUgPSBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGF3YWl0IHRoaXMuZ2V0T3JkZXJMaW5lc1BsYW5uZWQocGxhbk9yZGVyKTtcclxuICAgICAgICBwbGFuT3JkZXIubGluZXMuZm9yRWFjaCgobGluZTogUGxhbk9yZGVyTGluZSkgPT4ge1xyXG4gICAgICAgICAgaWYgKCF0aGlzLnRyYW5zcG9ydERheS5kZWxpdmVyeU1ldGhvZHMuZmluZChtZXRob2QgPT4gbWV0aG9kID09PSBsaW5lLmRlbGl2ZXJ5TWV0aG9kKSkge1xyXG4gICAgICAgICAgICBhdmFpbGFibGUgPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gYXZhaWxhYmxlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGF2YWlsYWJsZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBkaXN0cmljdEF2YWlsYWJpbGl0eUNoZWNrKHBsYW5PcmRlcjogUGxhbk9yZGVyKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICAvL0lmIHRydWU6IHlvdSBjYW4gcGxhbiB3aXRob3V0IHJheW9ucy9kaXN0cmljdHMuIE9yZGVycyB3aXRob3V0IGRpc3RyaWN0cyBjYW4gZ28gZXZlcnl3aGVyZSBpbiB0aGlzIGNhc2UuIERvZXMgaXQgaGF2ZSBkaXN0cmljdHMgdGhhdCBpdCBuZWVkcyB0byBtYXRjaCBhIGRpc3RyaWN0IGluIHRoZSBwbGFuIHJlc291cmNlLlxyXG4gICAgLy9JZiBmYWxzZTogb3JkZXJzIHdpdGhvdXQgZGlzdHJpY3QgY2FuIG5vdCBiZSBwbGFubmVkLiBPbiBhIHBsYW4gcmVzb3VyY2Ugd2l0aG91dCBkaXN0cmljdHMgeW91IGNhbid0IHBsYW4uIE90aGVyIHRoYW4gdGhhdCBzYW1lIHJ1bGVzIGFwcGx5LlxyXG5cclxuICAgIGxldCBhdmFpbGFibGU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gICAgaWYoYXZhaWxhYmxlKSB7XHJcbiAgICAgIGlmICghdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UucGxhblJheW9uKSB7XHJcbiAgICAgICAgaWYgKCFwbGFuT3JkZXIuZGlzdHJpY3RzIHx8IHBsYW5PcmRlci5kaXN0cmljdHMubGVuZ3RoKSB7XHJcbiAgICAgICAgICBhdmFpbGFibGUgPSBmYWxzZTtcclxuICAgICAgICAgIHJldHVybiBhdmFpbGFibGU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIXRoaXMudHJhbnNwb3J0RGF5LmRpc3RyaWN0cyB8fCB0aGlzLnRyYW5zcG9ydERheS5kaXN0cmljdHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICBhdmFpbGFibGUgPSBmYWxzZTtcclxuICAgICAgICAgIHJldHVybiBhdmFpbGFibGU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmICghdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuaGFzTWF0Y2godGhpcy50cmFuc3BvcnREYXkuZGlzdHJpY3RzLCBwbGFuT3JkZXIuZGlzdHJpY3RzKSkge1xyXG4gICAgICAgIGF2YWlsYWJsZSA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBhdmFpbGFibGU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gYXZhaWxhYmxlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuXHJcbiJdfQ==