@adlfe/campaign-management-library 2.11.6 → 2.11.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,8 +4,8 @@ import { HttpClient, HttpHeaders } from '@angular/common/http';
4
4
  import { Component, ElementRef, EventEmitter, Input, NgZone, OnDestroy, OnInit, Output, ViewChild, } from '@angular/core';
5
5
  import { FormArray, FormControl, FormGroup, Validators } from '@angular/forms';
6
6
  import { ToastrService } from 'ngx-toastr';
7
- import { environment } from 'projects/adl-campaign-management-library-internal/src/environments/environment';
8
7
  import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
8
+ import { environment } from '../../../../../../environments/environment';
9
9
  import { GeneralInformationWAMessageValidationConst, MediaTypeOptionConst, MsgTypeWAOptionConst, } from '../../../../../core/const';
10
10
  import { ProductCategoryEnum } from '../../../../../core/enums';
11
11
  import { ApiAdapterServiceService } from '../../../../../core/services';
@@ -752,4 +752,4 @@ var GeneralInformationWAComponent = /** @class */ (function () {
752
752
  return GeneralInformationWAComponent;
753
753
  }());
754
754
  export { GeneralInformationWAComponent };
755
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhbC1pbmZvcm1hdGlvbi13YS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWRsZmUvY2FtcGFpZ24tbWFuYWdlbWVudC1saWJyYXJ5LyIsInNvdXJjZXMiOlsibGliL2NhbXBhaWduLW1hbmFnZW1lbnQvbW9kdWxlcy9uZXctY2FtcGFpZ24vY29tcG9uZW50cy9nZW5lcmFsLWluZm9ybWF0aW9uLXdhL2dlbmVyYWwtaW5mb3JtYXRpb24td2EuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUNILFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNULE1BQU0sRUFDTixNQUFNLEVBQ04sU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnRkFBZ0YsQ0FBQztBQUU3RyxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQUNILDBDQUEwQyxFQUMxQyxvQkFBb0IsRUFDcEIsb0JBQW9CLEdBQ3ZCLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFJaEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDeEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7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OHhCekM7SUFBRCxvQ0FBQztDQUFBLEFBOXhCRCxJQTh4QkM7U0E5eEJZLDZCQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1hcHNBUElMb2FkZXIgfSBmcm9tICdAYWdtL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHtcclxuICAgIENvbXBvbmVudCxcclxuICAgIEVsZW1lbnRSZWYsXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBJbnB1dCxcclxuICAgIE5nWm9uZSxcclxuICAgIE9uRGVzdHJveSxcclxuICAgIE9uSW5pdCxcclxuICAgIE91dHB1dCxcclxuICAgIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUFycmF5LCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBUb2FzdHJTZXJ2aWNlIH0gZnJvbSAnbmd4LXRvYXN0cic7XHJcbmltcG9ydCB7IGVudmlyb25tZW50IH0gZnJvbSAncHJvamVjdHMvYWRsLWNhbXBhaWduLW1hbmFnZW1lbnQtbGlicmFyeS1pbnRlcm5hbC9zcmMvZW52aXJvbm1lbnRzL2Vudmlyb25tZW50JztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7XHJcbiAgICBHZW5lcmFsSW5mb3JtYXRpb25XQU1lc3NhZ2VWYWxpZGF0aW9uQ29uc3QsXHJcbiAgICBNZWRpYVR5cGVPcHRpb25Db25zdCxcclxuICAgIE1zZ1R5cGVXQU9wdGlvbkNvbnN0LFxyXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvcmUvY29uc3QnO1xyXG5pbXBvcnQgeyBQcm9kdWN0Q2F0ZWdvcnlFbnVtIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29yZS9lbnVtcyc7XHJcbmltcG9ydCB7IEJhc2VPcHRpb25Nb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvcmUvbW9kZWxzJztcclxuaW1wb3J0IHsgUGFyYW1ldGVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29yZS9tb2RlbHMvdXRpbC9hcGktYWRhcHRlci1zZXJ2aWNlLW1vZGVscyc7XHJcbmltcG9ydCB7IEFwcFJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29yZS9tb2RlbHMvdXRpbC9hcGktZHRvL3Jlc3BvbnNlLW1vZGVscyc7XHJcbmltcG9ydCB7IEFwaUFkYXB0ZXJTZXJ2aWNlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvcmUvc2VydmljZXMnO1xyXG5pbXBvcnQgeyBnZW5lcmF0ZUVudW1PcHRpb24gfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9jb3JlL3V0aWwnO1xyXG5pbXBvcnQgeyBUZW1wbGF0ZVdBTW9kZWwsIFdoYXRzQXBwQWNjb3VudER0byB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscyc7XHJcbmltcG9ydCB7IEVudW1EYXRhIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbC9lbnVtcyc7XHJcbmltcG9ydCB7IFZhbGlkYXRvcnMgYXMgQ3VzdG9tVmFsaWRhdG9ycyB9IGZyb20gJy4uLy4uLy4uLy4uL3ZhbGlkYXRvcnMnO1xyXG5cclxuaW50ZXJmYWNlIElNYXBzIHtcclxuICAgIHpvb206IG51bWJlcjtcclxuICAgIGxhdGl0dWRlOiBudW1iZXI7XHJcbiAgICBsb25naXR1ZGU6IG51bWJlcjtcclxuICAgIGlzRHJhZ2dhYmxlOiBib29sZWFuO1xyXG4gICAgaXNEb3VibGVDbGlja1pvb206IGJvb2xlYW47XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdsaWItZ2VuZXJhbC1pbmZvcm1hdGlvbi13YScsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vZ2VuZXJhbC1pbmZvcm1hdGlvbi13YS5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9nZW5lcmFsLWluZm9ybWF0aW9uLXdhLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBHZW5lcmFsSW5mb3JtYXRpb25XQUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIHVwZGF0ZUdlbmVyYWxJbmZvcm1hdGlvbkZvcm06IEV2ZW50RW1pdHRlcjxGb3JtR3JvdXA+O1xyXG5cclxuICAgIHB1YmxpYyBmb3JtOiBGb3JtR3JvdXA7XHJcbiAgICBwdWJsaWMgbXNnVHlwZVdBT3B0aW9uOiBhbnlbXSA9IFtdO1xyXG4gICAgcHVibGljIG1lZGlhVHlwZU9wdGlvbjogYW55W10gPSBbXTtcclxuICAgIHB1YmxpYyBjYXRlZ29yeU9wdGlvbjogQmFzZU9wdGlvbk1vZGVsW107XHJcbiAgICBwdWJsaWMgYWNjb3VudE9wdGlvbjogV2hhdHNBcHBBY2NvdW50RHRvW10gPSBbXTtcclxuICAgIHB1YmxpYyBpc0hhdmVOZXh0QWNjb3VudE9wdGlvbjogYm9vbGVhbiA9IHRydWU7XHJcbiAgICBwdWJsaWMgaXNMb2FkaW5nQWNjb3VudE9wdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIHRlbXBsYXRlT3B0aW9uOiBUZW1wbGF0ZVdBTW9kZWxbXSA9IFtdO1xyXG4gICAgcHVibGljIGlzSGF2ZU5leHRUZW1wbGF0ZU9wdGlvbjogYm9vbGVhbiA9IHRydWU7XHJcbiAgICBwdWJsaWMgaXNMb2FkaW5nVGVtcGxhdGVPcHRpb246IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHB1YmxpYyBpc0hhdmVUZW1wbGF0ZVBhcmFtOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgaXNTaG93UGFyYW1ldGVyOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgdmFsaWRhdGlvbk1lc3NhZ2VzOiBhbnk7XHJcbiAgICBwdWJsaWMgZXh0RmlsZUFjY2VwdGVkOiBzdHJpbmcgPSAnaW1hZ2UvKic7XHJcbiAgICBwdWJsaWMgbWFwczogSU1hcHM7XHJcblxyXG4gICAgcHJpdmF0ZSBwYWdlTm9BY2NvdW50T3B0aW9uOiBudW1iZXIgPSAxO1xyXG4gICAgcHJpdmF0ZSBwYWdlTm9UZW1wbGF0ZU9wdGlvbjogbnVtYmVyID0gMTtcclxuICAgIHByaXZhdGUgc3Vic2NyaWJlcnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcbiAgICBwcml2YXRlIGdlb0NvZGVyOiBhbnk7XHJcblxyXG4gICAgcHVibGljIHRlbXBsYXRlcyA9IFtcclxuICAgICAgICB7IGxhYmVsOiAnQ3JlYXRlIE5ldycsIHZhbHVlOiBmYWxzZSB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdVc2UgZXhpc3RpbmcgdGVtcGxhdGUnLCB2YWx1ZTogdHJ1ZSB9LFxyXG4gICAgXTtcclxuXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgaXNSZWFkT25seU1vZGU6IGJvb2xlYW47XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHNldCBpc1RvdWNoZWRGb3JtKHN0YXR1czogYm9vbGVhbikge1xyXG4gICAgICAgIGlmICghdGhpcy51cGRhdGVHZW5lcmFsSW5mb3JtYXRpb25Gb3JtKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUdlbmVyYWxJbmZvcm1hdGlvbkZvcm0uZW1pdCh0aGlzLmZvcm0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ21hcFNlYXJjaCcpIG1hcFNlYXJjaFJlZjogRWxlbWVudFJlZjtcclxuXHJcbiAgICBwdWJsaWMgaXNVdGlsaXR5OiBib29sZWFuID0gdHJ1ZTtcclxuICAgIHB1YmxpYyBpc0NoZWNrVXRpbGl0eTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXHJcbiAgICAgICAgcHJpdmF0ZSBtYXBzQVBJTG9hZGVyOiBNYXBzQVBJTG9hZGVyLFxyXG4gICAgICAgIHByaXZhdGUgYXBpQWRhcHRlclNlcnZpY2U6IEFwaUFkYXB0ZXJTZXJ2aWNlU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHRvYXN0cjogVG9hc3RyU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnRcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMudXBkYXRlR2VuZXJhbEluZm9ybWF0aW9uRm9ybSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm1zZ1R5cGVXQU9wdGlvbiA9IE1zZ1R5cGVXQU9wdGlvbkNvbnN0O1xyXG4gICAgICAgIHRoaXMubWVkaWFUeXBlT3B0aW9uID0gTWVkaWFUeXBlT3B0aW9uQ29uc3Q7XHJcbiAgICAgICAgdGhpcy5jYXRlZ29yeU9wdGlvbiA9IGdlbmVyYXRlRW51bU9wdGlvbihQcm9kdWN0Q2F0ZWdvcnlFbnVtKTtcclxuICAgICAgICB0aGlzLnZhbGlkYXRpb25NZXNzYWdlcyA9IEdlbmVyYWxJbmZvcm1hdGlvbldBTWVzc2FnZVZhbGlkYXRpb25Db25zdDtcclxuICAgICAgICB0aGlzLm1hcHMgPSB7XHJcbiAgICAgICAgICAgIHpvb206IDE1LFxyXG4gICAgICAgICAgICBsYXRpdHVkZTogbnVsbCxcclxuICAgICAgICAgICAgbG9uZ2l0dWRlOiBudWxsLFxyXG4gICAgICAgICAgICBpc0RyYWdnYWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgaXNEb3VibGVDbGlja1pvb206IHRydWUsXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5pbml0Rm9ybSgpO1xyXG4gICAgICAgIHRoaXMuaW5pdERpc2FibGUoKTtcclxuICAgICAgICB0aGlzLmluaXRFZGl0KCk7XHJcbiAgICAgICAgdGhpcy5pbml0VmFsaWRhdGlvbigpO1xyXG4gICAgICAgIHRoaXMuZ2V0QWNjb3VudE9wdGlvblNlcnZpY2UoXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0Q2FtcGFpZ25TdG9yYWdlPy5nZW5lcmFsSW5mb3JtYXRpb24/LmZvcm0/Lm1lZGl1bSA9PT0gJ1dBJ1xyXG4gICAgICAgICAgICAgICAgPyB0aGlzLmdldENhbXBhaWduU3RvcmFnZT8uZ2VuZXJhbEluZm9ybWF0aW9uPy5mb3JtPy5mcm9tPy5uYW1lXHJcbiAgICAgICAgICAgICAgICA6ICcnXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmxpc3RlbkJvZHlDaGFuZ2UoKTtcclxuICAgICAgICAvKiB0aGlzLnNldEN1cnJlbnRMb2NhdGlvbigpOyAqL1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBnZXRDYW1wYWlnblN0b3JhZ2UoKTogYW55IHtcclxuICAgICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RlbGluLmNhbXBhaWduJylcclxuICAgICAgICAgICAgPyBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0ZWxpbi5jYW1wYWlnbicpKVxyXG4gICAgICAgICAgICA6IHt9O1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaW5pdEZvcm0oKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5mb3JtID0gbmV3IEZvcm1Hcm91cCh7XHJcbiAgICAgICAgICAgIGNoYW5uZWw6IG5ldyBGb3JtQ29udHJvbChudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcclxuICAgICAgICAgICAgbWVkaWE6IG5ldyBGb3JtQ29udHJvbChudWxsKSxcclxuICAgICAgICAgICAgZnJvbTogbmV3IEZvcm1Db250cm9sKG51bGwpLFxyXG4gICAgICAgICAgICB0ZXh0OiBuZXcgRm9ybUNvbnRyb2wobnVsbCksXHJcbiAgICAgICAgICAgIGZpbGVOYW1lOiBuZXcgRm9ybUNvbnRyb2wobnVsbCksXHJcbiAgICAgICAgICAgIHRhcmdldFVSTDogbmV3IEZvcm1Db250cm9sKG51bGwpLFxyXG4gICAgICAgICAgICBmaWxlVHlwZTogbmV3IEZvcm1Db250cm9sKG51bGwpLFxyXG4gICAgICAgICAgICBmaWxlOiBuZXcgRm9ybUNvbnRyb2wobnVsbCksXHJcbiAgICAgICAgICAgIGxhdGl0dWRlOiBuZXcgRm9ybUNvbnRyb2wobnVsbCksXHJcbiAgICAgICAgICAgIGxvbmdpdHVkZTogbmV3IEZvcm1Db250cm9sKG51bGwpLFxyXG4gICAgICAgICAgICB0ZW1wbGF0ZTogbmV3IEZvcm1Db250cm9sKG51bGwpLFxyXG4gICAgICAgICAgICBwYXJhbUhlYWRlcjogbmV3IEZvcm1BcnJheShbXSwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXHJcbiAgICAgICAgICAgIHBhcmFtQm9keTogbmV3IEZvcm1BcnJheShbXSwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXHJcbiAgICAgICAgICAgIHBhcmFtQnV0dG9uOiBuZXcgRm9ybUFycmF5KFtdLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcclxuICAgICAgICAgICAgb3RwVmFsdWU6IG5ldyBGb3JtQ29udHJvbCgnJyksXHJcbiAgICAgICAgICAgIGlzVXBsb2FkOiBuZXcgRm9ybUNvbnRyb2woZmFsc2UpLFxyXG4gICAgICAgICAgICBmaWxlSWQ6IG5ldyBGb3JtQ29udHJvbCgnJyksXHJcbiAgICAgICAgICAgIGNhdGVnb3J5OiBuZXcgRm9ybUNvbnRyb2wobnVsbCksXHJcbiAgICAgICAgICAgIHByb2R1Y3Q6IG5ldyBGb3JtQ29udHJvbChudWxsKSxcclxuICAgICAgICAgICAgY2F0YWxvZ3VlOiBuZXcgRm9ybUNvbnRyb2wobnVsbCksXHJcbiAgICAgICAgICAgIGJvZHk6IG5ldyBGb3JtQ29udHJvbChudWxsKSxcclxuICAgICAgICAgICAgaXNVc2VFeGlzdGluZ1RlbXBsYXRlOiBuZXcgRm9ybUNvbnRyb2woZmFsc2UpLFxyXG4gICAgICAgICAgICBpc05lZWRTYXZlOiBuZXcgRm9ybUNvbnRyb2woZmFsc2UpLFxyXG4gICAgICAgICAgICB0dGw6IG5ldyBGb3JtQ29udHJvbChudWxsKSxcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5mb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlR2VuZXJhbEluZm9ybWF0aW9uRm9ybS5lbWl0KHRoaXMuZm9ybSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaW5pdERpc2FibGUoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmlzUmVhZE9ubHlNb2RlKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZm9ybS5kaXNhYmxlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBpbml0RWRpdCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKHRoaXMuZ2V0Q2FtcGFpZ25TdG9yYWdlKS5sZW5ndGggPT09IDAgfHxcclxuICAgICAgICAgICAgdGhpcy5nZXRDYW1wYWlnblN0b3JhZ2U/LmdlbmVyYWxJbmZvcm1hdGlvbj8uZm9ybT8ubWVkaXVtICE9PSAnV0EnXHJcbiAgICAgICAgKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIHRoaXMuZm9ybVxyXG4gICAgICAgICAgICAuZ2V0KCdjaGFubmVsJylcclxuICAgICAgICAgICAgLnNldFZhbHVlKHRoaXMuZ2V0Q2FtcGFpZ25TdG9yYWdlPy5nZW5lcmFsSW5mb3JtYXRpb24/LmZvcm0uY2hhbm5lbCk7XHJcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnbWVkaWEnKS5zZXRWYWx1ZSh0aGlzLmdldENhbXBhaWduU3RvcmFnZT8uZ2VuZXJhbEluZm9ybWF0aW9uPy5mb3JtLm1lZGlhKTtcclxuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdmcm9tJykuc2V0VmFsdWUodGhpcy5nZXRDYW1wYWlnblN0b3JhZ2U/LmdlbmVyYWxJbmZvcm1hdGlvbj8uZm9ybS5mcm9tKTtcclxuICAgICAgICB0aGlzLmZvcm0uZ2V0KCd0ZXh0Jykuc2V0VmFsdWUodGhpcy5nZXRDYW1wYWlnblN0b3JhZ2U/LmdlbmVyYWxJbmZvcm1hdGlvbj8uZm9ybS50ZXh0KTtcclxuICAgICAgICB0aGlzLmZvcm1cclxuICAgICAgICAgICAgLmdldCgndGFyZ2V0VVJMJylcclxuICAgICAgICAgICAgLnNldFZhbHVlKHRoaXMuZ2V0Q2FtcGFpZ25TdG9yYWdlPy5nZW5lcmFsSW5mb3JtYXRpb24/LmZvcm0udGFyZ2V0VVJMKTtcclxuICAgICAgICB0aGlzLmZvcm1cclxuICAgICAgICAgICAgLmdldCgnZmlsZU5hbWUnKVxyXG4gICAgICAgICAgICAuc2V0VmFsdWUoXHJcbiAgICAgICAgICAgICAgICB0aGlzLmdldENhbXBhaWduU3RvcmFnZT8uZ2VuZXJhbEluZm9ybWF0aW9uPy5mb3JtLmZpbGVOYW1lID8/XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgndGFyZ2V0VVJMJykudmFsdWVcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmZvcm1cclxuICAgICAgICAgICAgLmdldCgndGVtcGxhdGUnKVxyXG4gICAgICAgICAgICAuc2V0VmFsdWUodGhpcy5nZXRDYW1wYWlnblN0b3JhZ2U/LmdlbmVyYWxJbmZvcm1hdGlvbj8uZm9ybS50ZW1wbGF0ZSk7XHJcbiAgICAgICAgdGhpcy5mb3JtXHJcbiAgICAgICAgICAgIC5nZXQoJ2lzVXBsb2FkJylcclxuICAgICAgICAgICAgLnNldFZhbHVlKHRoaXMuZ2V0Q2FtcGFpZ25TdG9yYWdlPy5nZW5lcmFsSW5mb3JtYXRpb24/LmZvcm0uaXNVcGxvYWQpO1xyXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ2ZpbGVJZCcpLnNldFZhbHVlKHRoaXMuZ2V0Q2FtcGFpZ25TdG9yYWdlPy5nZW5lcmFsSW5mb3JtYXRpb24/LmZvcm0uZmlsZUlkKTtcclxuICAgICAgICB0aGlzLmZvcm1cclxuICAgICAgICAgICAgLmdldCgnb3RwVmFsdWUnKVxyXG4gICAgICAgICAgICAuc2V0VmFsdWUodGhpcy5nZXRDYW1wYWlnblN0b3JhZ2U/LmdlbmVyYWxJbmZvcm1hdGlvbj8uZm9ybS5vdHBWYWx1ZSk7XHJcbiAgICAgICAgdGhpcy5mb3JtXHJcbiAgICAgICAgICAgIC5nZXQoJ2lzVXNlRXhpc3RpbmdUZW1wbGF0ZScpXHJcbiAgICAgICAgICAgIC5zZXRWYWx1ZSghIXRoaXMuZ2V0Q2FtcGFpZ25TdG9yYWdlPy5nZW5lcmFsSW5mb3JtYXRpb24/LmZvcm0/LnRlbXBsYXRlTmFtZSk7XHJcbiAgICAgICAgdGhpcy5mb3JtXHJcbiAgICAgICAgICAgIC5nZXQoJ2lzTmVlZFNhdmUnKVxyXG4gICAgICAgICAgICAuc2V0VmFsdWUoISF0aGlzLmdldENhbXBhaWduU3RvcmFnZT8uZ2VuZXJhbEluZm9ybWF0aW9uPy5mb3JtPy5pc05lZWRTYXZlKTtcclxuICAgICAgICB0aGlzLmZvcm0uZ2V0KCd0dGwnKS5zZXRWYWx1ZSh0aGlzLmdldENhbXBhaWduU3RvcmFnZT8uZ2VuZXJhbEluZm9ybWF0aW9uPy5mb3JtPy50dGwpO1xyXG5cclxuICAgICAgICB0aGlzLmlzSGF2ZVRlbXBsYXRlUGFyYW0gPSB0aGlzLmZvcm0uZ2V0KCdpc1VwbG9hZCcpLnZhbHVlO1xyXG4gICAgICAgIHRoaXMuZ2V0VGVtcGxhdGVPcHRpb25TZXJ2aWNlKG51bGwsIHRoaXMuZm9ybS5nZXQoJ3RlbXBsYXRlJykudmFsdWU/Lm5hbWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaW5pdFZhbGlkYXRpb24oKTogdm9pZCB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5mb3JtLmNvbnRyb2xzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1trZXldLmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uY29udHJvbHNba2V5XS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdjaGFubmVsJykuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZ2V0SXNUZXh0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ2Zyb20nKS5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCd0ZXh0Jykuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgnZnJvbScpLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgndGV4dCcpLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZ2V0SXNNZWRpYSkge1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdtZWRpYScpLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ2Zyb20nKS5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdmaWxlTmFtZScpLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ21lZGlhJykudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdmcm9tJykudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdmaWxlTmFtZScpLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZ2V0SXNUZW1wbGF0ZSkge1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdmcm9tJykuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgndGVtcGxhdGUnKS5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdwYXJhbUhlYWRlcicpLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ3BhcmFtQm9keScpLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ3BhcmFtQnV0dG9uJykuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgnZnJvbScpLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgndGVtcGxhdGUnKS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ3BhcmFtSGVhZGVyJykudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdwYXJhbUJvZHknKS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ3BhcmFtQnV0dG9uJykudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5nZXRJc0NhdGFsb2d1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdmcm9tJykuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgnY2F0ZWdvcnknKS5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdjYXRhbG9ndWUnKS5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdwcm9kdWN0Jykuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgnYm9keScpLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTAwKSk7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ2Zyb20nKS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ2NhdGVnb3J5JykudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdjYXRhbG9ndWUnKS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ3Byb2R1Y3QnKS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ2JvZHknKS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmdldElzVXRpbGl0eSkge1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdmcm9tJykuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgndGV4dCcpLnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEwMjQpXSk7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybVxyXG4gICAgICAgICAgICAgICAgLmdldCgndHRsJylcclxuICAgICAgICAgICAgICAgIC5zZXRWYWxpZGF0b3JzKFtcclxuICAgICAgICAgICAgICAgICAgICBDdXN0b21WYWxpZGF0b3JzLm1pbigzMCwgJ01pbmltdW0gVFRMIDMwJyksXHJcbiAgICAgICAgICAgICAgICAgICAgQ3VzdG9tVmFsaWRhdG9ycy5tYXgoNDMyMDAsICdNYXhpbXVtIFRUTCA0MzIwMCcpLFxyXG4gICAgICAgICAgICAgICAgXSk7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ2Zyb20nKS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ3RleHQnKS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ3R0bCcpLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdmcm9tJykuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgndGV4dCcpLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ2Zyb20nKS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ3RleHQnKS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBmb3JtUmVzZXQoX2lzTWVkaWFUeXBlOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIV9pc01lZGlhVHlwZSkge1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdtZWRpYScpLnJlc2V0KCk7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ2Zyb20nKS5yZXNldCgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5mb3JtLmdldCgndGV4dCcpLnJlc2V0KCk7XHJcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnZmlsZU5hbWUnKS5yZXNldCgpO1xyXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ3RhcmdldFVSTCcpLnJlc2V0KCk7XHJcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnZmlsZVR5cGUnKS5yZXNldCgpO1xyXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ2ZpbGUnKS5yZXNldCgpO1xyXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ2xhdGl0dWRlJykucmVzZXQoKTtcclxuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdsb25naXR1ZGUnKS5yZXNldCgpO1xyXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ3RlbXBsYXRlJykucmVzZXQoKTtcclxuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdjYXRlZ29yeScpLnJlc2V0KCk7XHJcbiAgICAgICAgdGhpcy5mb3JtLmdldCgncHJvZHVjdCcpLnJlc2V0KCk7XHJcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnY2F0YWxvZ3VlJykucmVzZXQoKTtcclxuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdib2R5JykucmVzZXQoKTtcclxuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdvdHBWYWx1ZScpLnJlc2V0KCk7XHJcbiAgICAgICAgKHRoaXMuZm9ybS5nZXQoJ3BhcmFtSGVhZGVyJykgYXMgRm9ybUFycmF5KS5jb250cm9scyA9IFtdO1xyXG4gICAgICAgICh0aGlzLmZvcm0uZ2V0KCdwYXJhbUhlYWRlcicpIGFzIEZvcm1BcnJheSkucmVzZXQoKTtcclxuICAgICAgICAodGhpcy5mb3JtLmdldCgncGFyYW1Cb2R5JykgYXMgRm9ybUFycmF5KS5jb250cm9scyA9IFtdO1xyXG4gICAgICAgICh0aGlzLmZvcm0uZ2V0KCdwYXJhbUJvZHknKSBhcyBGb3JtQXJyYXkpLnJlc2V0KCk7XHJcbiAgICAgICAgKHRoaXMuZm9ybS5nZXQoJ3BhcmFtQnV0dG9uJykgYXMgRm9ybUFycmF5KS5jb250cm9scyA9IFtdO1xyXG4gICAgICAgICh0aGlzLmZvcm0uZ2V0KCdwYXJhbUJ1dHRvbicpIGFzIEZvcm1BcnJheSkucmVzZXQoKTtcclxuXHJcbiAgICAgICAgdGhpcy5pbml0VmFsaWRhdGlvbigpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaW5pdFBhcmFtKF9uYW1lOiBzdHJpbmcsIF92YWx1ZTogYW55LCBfdHlwZTogc3RyaW5nKTogUGFyYW1ldGVyIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBuYW1lOiBfbmFtZSxcclxuICAgICAgICAgICAgdmFsdWU6IF92YWx1ZSxcclxuICAgICAgICAgICAgaW46ICdxdWVyeScsXHJcbiAgICAgICAgICAgIHR5cGU6IF90eXBlLFxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRBY2NvdW50T3B0aW9uU2VydmljZShmaWx0ZXI6IHN0cmluZyA9ICcnLCBpc0luZmluaXRlOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmlzTG9hZGluZ0FjY291bnRPcHRpb24gPSB0cnVlO1xyXG5cclxuICAgICAgICBjb25zdCBwYXJhbWV0ZXJMaXN0OiBBcnJheTxQYXJhbWV0ZXI+ID0gW1xyXG4gICAgICAgICAgICB0aGlzLmluaXRQYXJhbSgncGFnZU5vJywgdGhpcy5wYWdlTm9BY2NvdW50T3B0aW9uLCAnbnVtYmVyJyksXHJcbiAgICAgICAgICAgIHRoaXMuaW5pdFBhcmFtKCdyb3dQZXJQYWdlJywgMjAsICdudW1iZXInKSxcclxuICAgICAgICAgICAgdGhpcy5pbml0UGFyYW0oJ3BsYXRmb3JtJywgJ1dBJywgJ3N0cmluZycpLFxyXG4gICAgICAgICAgICB0aGlzLmluaXRQYXJhbSgnc3RhdHVzJywgJ0FQUFJPVkVEJywgJ3N0cmluZycpLFxyXG4gICAgICAgICAgICB0aGlzLmluaXRQYXJhbSgnZmlsdGVyJywgZmlsdGVyLCAnc3RyaW5nJyksXHJcbiAgICAgICAgXTtcclxuXHJcbiAgICAgICAgY29uc3Qgc3VicyA9IHRoaXMuYXBpQWRhcHRlclNlcnZpY2VcclxuICAgICAgICAgICAgLmV4ZWN1dGVBcGlSZXF1ZXN0KHBhcmFtZXRlckxpc3QsICcvYWRtaW4vYWNjb3VudCcsICdHRVQnKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChyZXNwOiBBcHBSZXNwb25zZTxXaGF0c0FwcEFjY291bnREdG9bXT4pID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICghcmVzcC5kYXRhKSByZXR1cm47XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5hY2NvdW50T3B0aW9uID0gaXNJbmZpbml0ZSA/IFsuLi50aGlzLmFjY291bnRPcHRpb24sIC4uLnJlc3AuZGF0YV0gOiByZXNwLmRhdGE7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzSGF2ZU5leHRBY2NvdW50T3B0aW9uID0gcmVzcC5oYXZlTmV4dDtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nQWNjb3VudE9wdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5zdWJzY3JpYmVycy5wdXNoKHN1YnMpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgbGlzdGVuQm9keUNoYW5nZSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmZvcm1cclxuICAgICAgICAgICAgLmdldCgndGV4dCcpXHJcbiAgICAgICAgICAgID8udmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKDEwMDApLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5nZXRJc1V0aWxpdHkpIHJldHVybjtcclxuICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVUZXh0KCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdmFsaWRhdGVUZXh0KGFjY291bnQ/OiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmlzQ2hlY2tVdGlsaXR5ID0gdHJ1ZTtcclxuICAgICAgICBjb25zdCB7IGZyb20sIHRleHQgfSA9IHRoaXMuZm9ybS52YWx1ZTtcclxuICAgICAgICBpZiAoIXRleHQgJiYgIWZyb20pIHJldHVybjtcclxuICAgICAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKClcclxuICAgICAgICAgICAgLnNldCgnQXV0aG9yaXphdGlvbicsICdCZWFyZXIgJyArIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0ZWxpbi5hY2Nlc3NUb2tlbicpKVxyXG4gICAgICAgICAgICAuc2V0KCdBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4nLCAnKicpO1xyXG4gICAgICAgIHRoaXMuaHR0cENsaWVudFxyXG4gICAgICAgICAgICAucG9zdChcclxuICAgICAgICAgICAgICAgIGAke2Vudmlyb25tZW50LmFwaX0vbWVzc2FnZS9kaXJlY3Qtc2VuZC8keyhmcm9tIHx8IGFjY291bnQpPy5pZH1gLFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcclxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiB7IGJvZHk6IHRleHQgfSxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB7IGhlYWRlcnMgfVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgbmV4dDogKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzVXRpbGl0eSA9IHJlc3BvbnNlPy5jYXRlZ29yeSA9PT0gJ1VUSUxJVFknO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNDaGVja1V0aWxpdHkgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBlcnJvcjogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNDaGVja1V0aWxpdHkgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRUZW1wbGF0ZU9wdGlvblNlcnZpY2UoXHJcbiAgICAgICAgZXZlbnQ6IHN0cmluZyA9IG51bGwsXHJcbiAgICAgICAgZmlsdGVyOiBzdHJpbmcgPSAnJyxcclxuICAgICAgICBpc0luZmluaXRlOiBib29sZWFuID0gZmFsc2VcclxuICAgICk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nVGVtcGxhdGVPcHRpb24gPSB0cnVlO1xyXG5cclxuICAgICAgICBjb25zdCBwYXJhbWV0ZXJMaXN0OiBBcnJheTxQYXJhbWV0ZXI+ID0gW1xyXG4gICAgICAgICAgICB0aGlzLmluaXRQYXJhbSgncGFnZU5vJywgdGhpcy5wYWdlTm9UZW1wbGF0ZU9wdGlvbiwgJ251bWJlcicpLFxyXG4gICAgICAgICAgICB0aGlzLmluaXRQYXJhbSgncm93UGVyUGFnZScsIDIwLCAnbnVtYmVyJyksXHJcbiAgICAgICAgICAgIHRoaXMuaW5pdFBhcmFtKCdwbGF0Zm9ybScsICdXQScsICdzdHJpbmcnKSxcclxuICAgICAgICAgICAgdGhpcy5pbml0UGFyYW0oJ2ZpbHRlcicsIGZpbHRlciwgJ3N0cmluZycpLFxyXG4gICAgICAgICAgICB0aGlzLmluaXRQYXJhbSgnc3RhdHVzJywgJ0FQUFJPVkVEJywgJ3N0cmluZycpLFxyXG4gICAgICAgICAgICB0aGlzLmluaXRQYXJhbSgnY2xpZW50SWQnLCB0aGlzLmZvcm0uZ2V0KCdmcm9tJykudmFsdWU/LmNsaWVudElkLCAnc3RyaW5nJyksXHJcbiAgICAgICAgICAgIHRoaXMuaW5pdFBhcmFtKCd3YWJhSWQnLCB0aGlzLmZvcm0uZ2V0KCdmcm9tJykudmFsdWU/LndhYmFJZCA/PyAnJywgJ3N0cmluZycpLFxyXG4gICAgICAgIF07XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmlzUmVhZE9ubHlNb2RlKSBwYXJhbWV0ZXJMaXN0LnB1c2godGhpcy5pbml0UGFyYW0oJ3N1bW1hcnknLCB0cnVlLCAnc3RyaW5nJykpO1xyXG5cclxuICAgICAgICBjb25zdCBtZXNzYWdlVHlwZSA9IHRoaXMuZm9ybS52YWx1ZT8uY2hhbm5lbDtcclxuXHJcbiAgICAgICAgaWYgKG1lc3NhZ2VUeXBlID09PSAndXRpbGl0eScpIHtcclxuICAgICAgICAgICAgcGFyYW1ldGVyTGlzdC5wdXNoKHRoaXMuaW5pdFBhcmFtKCdpc0RpcmVjdFNlbmQnLCB0cnVlLCAnc3RyaW5nJykpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3Qgc3VicyA9IHRoaXMuYXBpQWRhcHRlclNlcnZpY2VcclxuICAgICAgICAgICAgLmV4ZWN1dGVBcGlSZXF1ZXN0KHBhcmFtZXRlckxpc3QsICcvbWVzc2FnZS90ZW1wbGF0ZScsICdHRVQnKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChyZXNwOiBBcHBSZXNwb25zZTxUZW1wbGF0ZVdBTW9kZWxbXT4pID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMudGVtcGxhdGVPcHRpb24gPSBpc0luZmluaXRlXHJcbiAgICAgICAgICAgICAgICAgICAgPyBbLi4udGhpcy50ZW1wbGF0ZU9wdGlvbiwgLi4ucmVzcC5kYXRhXVxyXG4gICAgICAgICAgICAgICAgICAgIDogcmVzcC5kYXRhO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pc0hhdmVOZXh0VGVtcGxhdGVPcHRpb24gPSByZXNwLmhhdmVOZXh0O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmdUZW1wbGF0ZU9wdGlvbiA9IGZhbHNlO1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IHRlbXBsYXRlID0gdGhpcy50ZW1wbGF0ZU9wdGlvbj8uZmluZChcclxuICAgICAgICAgICAgICAgICAgICAodCkgPT4gdC5JRCA9PT0gdGhpcy5mb3JtLmdldCgndGVtcGxhdGUnKS52YWx1ZT8uSURcclxuICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHRlbXBsYXRlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgndGVtcGxhdGUnKS5zZXRWYWx1ZSh0ZW1wbGF0ZSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmZvcm0uZ2V0KCdpc1VwbG9hZCcpLnZhbHVlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy51cGRhdGVEb3dubG9hZENTVih0aGlzLmZvcm0uZ2V0KCdpc1VwbG9hZCcpLnZhbHVlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVGVtcGxhdGUodGhpcy5mb3JtLmdldCgndGVtcGxhdGUnKS52YWx1ZSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLnN1YnNjcmliZXJzLnB1c2goc3Vicyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBpbml0UGFyYW1ldGVyKGlzQnV0dG9uOiBib29sZWFuID0gZmFsc2UsIHZhbHVlOiBzdHJpbmcgPSAnJyk6IEZvcm1Hcm91cCB7XHJcbiAgICAgICAgY29uc3QgZm9ybSA9IGlzQnV0dG9uXHJcbiAgICAgICAgICAgID8gbmV3IEZvcm1Hcm91cCh7XHJcbiAgICAgICAgICAgICAgICAgIG5hbWU6IG5ldyBGb3JtQXJyYXkoW10sIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIDogbmV3IEZvcm1Hcm91cCh7XHJcbiAgICAgICAgICAgICAgICAgIG5hbWU6IG5ldyBGb3JtQ29udHJvbChcclxuICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMuaXNSZWFkT25seU1vZGUgfHwgWyckVW5zdWJzY3JpYmVBY2NvdW50J10uaW5jbHVkZXModmFsdWUpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWRcclxuICAgICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGZvcm07XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGdldFBhcmFtSGVhZGVyKCk6IEZvcm1Hcm91cFtdIHtcclxuICAgICAgICByZXR1cm4gKHRoaXMuZm9ybS5nZXQoJ3BhcmFtSGVhZGVyJykgYXMgRm9ybUFycmF5KS5jb250cm9scyBhcyBGb3JtR3JvdXBbXTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYWRkUGFyYW1IZWFkZXIodmFsdWU6IHN0cmluZyA9ICcnKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgZm9ybSA9IHRoaXMuaW5pdFBhcmFtZXRlcihmYWxzZSwgdmFsdWUpO1xyXG4gICAgICAgICh0aGlzLmZvcm0uZ2V0KCdwYXJhbUhlYWRlcicpIGFzIEZvcm1BcnJheSkucHVzaChmb3JtKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgZ2V0UGFyYW1Cb2R5KCk6IEZvcm1Hcm91cFtdIHtcclxuICAgICAgICByZXR1cm4gKHRoaXMuZm9ybS5nZXQoJ3BhcmFtQm9keScpIGFzIEZvcm1BcnJheSkuY29udHJvbHMgYXMgRm9ybUdyb3VwW107XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFkZFBhcmFtQm9keSh2YWx1ZTogc3RyaW5nID0gJycpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBmb3JtID0gdGhpcy5pbml0UGFyYW1ldGVyKGZhbHNlLCB2YWx1ZSk7XHJcbiAgICAgICAgKHRoaXMuZm9ybS5nZXQoJ3BhcmFtQm9keScpIGFzIEZvcm1BcnJheSkucHVzaChmb3JtKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgZ2V0QnV0dG9uKCk6IEZvcm1Hcm91cFtdIHtcclxuICAgICAgICByZXR1cm4gKHRoaXMuZm9ybS5nZXQoJ3BhcmFtQnV0dG9uJykgYXMgRm9ybUFycmF5KS5jb250cm9scyBhcyBGb3JtR3JvdXBbXTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0UGFyYW1CdXR0b24oaW5kZXg6IG51bWJlcik6IEZvcm1Hcm91cFtdIHtcclxuICAgICAgICBjb25zdCBmb3JtID0gKHRoaXMuZm9ybS5nZXQoJ3BhcmFtQnV0dG9uJykgYXMgRm9ybUFycmF5KS5jb250cm9scyBhcyBGb3JtR3JvdXBbXTtcclxuICAgICAgICByZXR1cm4gKGZvcm1baW5kZXhdLmdldCgnbmFtZScpIGFzIEZvcm1BcnJheSkuY29udHJvbHMgYXMgRm9ybUdyb3VwW107XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFkZFBhcmFtQnV0dG9uKCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGZvcm0gPSB0aGlzLmluaXRQYXJhbWV0ZXIodHJ1ZSk7XHJcbiAgICAgICAgKHRoaXMuZm9ybS5nZXQoJ3BhcmFtQnV0dG9uJykgYXMgRm9ybUFycmF5KS5wdXNoKGZvcm0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBnZXRJc1RleHQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgnY2hhbm5lbCcpLnZhbHVlICYmXHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ2NoYW5uZWwnKS52YWx1ZT8udG9Mb3dlckNhc2UoKSA9PT0gJ3RleHQnXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgZ2V0SXNNZWRpYSgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdjaGFubmVsJykudmFsdWUgJiZcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgnY2hhbm5lbCcpLnZhbHVlPy50b0xvd2VyQ2FzZSgpID09PSAnbWVkaWEnXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgZ2V0SXNUZW1wbGF0ZSgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdjaGFubmVsJykudmFsdWUgJiZcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgnY2hhbm5lbCcpLnZhbHVlPy50b0xvd2VyQ2FzZSgpID09PSAndGVtcGxhdGUnXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgZ2V0SXNDYXRhbG9ndWUoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgnY2hhbm5lbCcpLnZhbHVlICYmXHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ2NoYW5uZWwnKS52YWx1ZT8udG9Mb3dlckNhc2UoKSA9PT0gJ2NhdGFsb2d1ZSdcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBnZXRJc1V0aWxpdHkoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgnY2hhbm5lbCcpLnZhbHVlICYmXHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ2NoYW5uZWwnKS52YWx1ZT8udG9Mb3dlckNhc2UoKSA9PT0gJ3V0aWxpdHknXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0TmV4dEFjY291bnRCYXRjaCgpIHtcclxuICAgICAgICBpZiAoIXRoaXMuaXNIYXZlTmV4dEFjY291bnRPcHRpb24pIHJldHVybjtcclxuXHJcbiAgICAgICAgdGhpcy5wYWdlTm9BY2NvdW50T3B0aW9uICs9IDE7XHJcbiAgICAgICAgdGhpcy5nZXRBY2NvdW50T3B0aW9uU2VydmljZSgnJywgdHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFjY291bnRTZWxlY3RlZERpc3BsYXkoXHJcbiAgICAgICAgYXR0cmlidXRlMTogV2hhdHNBcHBBY2NvdW50RHRvLFxyXG4gICAgICAgIGF0dHJpYnV0ZTI6IFdoYXRzQXBwQWNjb3VudER0b1xyXG4gICAgKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gYXR0cmlidXRlMSAmJiBhdHRyaWJ1dGUyICYmIGF0dHJpYnV0ZTEuaWQgPT0gYXR0cmlidXRlMi5pZFxyXG4gICAgICAgICAgICA/IGAke2F0dHJpYnV0ZTEubmFtZX0gKCR7YXR0cmlidXRlMS5hY2NvdW50Tm99KWBcclxuICAgICAgICAgICAgOiAnJztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0TmV4dFRlbXBsYXRlQmF0Y2goKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmlzSGF2ZU5leHRUZW1wbGF0ZU9wdGlvbikgcmV0dXJuO1xyXG5cclxuICAgICAgICB0aGlzLnBhZ2VOb1RlbXBsYXRlT3B0aW9uICs9IDE7XHJcbiAgICAgICAgdGhpcy5nZXRUZW1wbGF0ZU9wdGlvblNlcnZpY2UobnVsbCwgJycsIHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB0ZW1wbGF0ZVNlbGVjdGVkRGlzcGxheShcclxuICAgICAgICBhdHRyaWJ1dGUxOiBUZW1wbGF0ZVdBTW9kZWwsXHJcbiAgICAgICAgYXR0cmlidXRlMjogVGVtcGxhdGVXQU1vZGVsXHJcbiAgICApOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBhdHRyaWJ1dGUxICYmIGF0dHJpYnV0ZTIgJiYgYXR0cmlidXRlMS5uYW1lID09IGF0dHJpYnV0ZTIubmFtZVxyXG4gICAgICAgICAgICA/IGAke2F0dHJpYnV0ZTEubmFtZX1gXHJcbiAgICAgICAgICAgIDogJyc7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uRmlsZVNlbGVjdGVkKGV2ZW50OiBFdmVudCkge1xyXG4gICAgICAgIGNvbnN0IGZpbGU6IEZpbGVMaXN0ID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS5maWxlcztcclxuICAgICAgICBjb25zdCBhY2NlcHQgPSB0aGlzLmV4dEZpbGVBY2NlcHRlZC5zcGxpdCgnLycpO1xyXG4gICAgICAgIGxldCBtYXRjaFR5cGUgPSBhY2NlcHRbMF07XHJcblxyXG4gICAgICAgIGlmIChmaWxlLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5leHRGaWxlQWNjZXB0ZWQgPT09ICdhcHBsaWNhdGlvbi9wZGYnKSBtYXRjaFR5cGUgPSBhY2NlcHRbMV07XHJcblxyXG4gICAgICAgIGlmICghZmlsZVswXS50eXBlLmluY2x1ZGVzKG1hdGNoVHlwZSkpIHtcclxuICAgICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoJ1NvcnJ5LCB0aGUgZmlsZSB5b3UgYXJlIHVwbG9hZGluZyBpcyBub3TCoGFsbG93ZWQnKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGZpbGVbMF0uc2l6ZSA+IDEwMDAwMDAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKCdVcGxvYWQgbWVkaWEgZmFpbGVkLCBtYXggc2l6ZSAxMG1iJyk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ2ZpbGUnKS5zZXRWYWx1ZShmaWxlWzBdKTtcclxuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdmaWxlVHlwZScpLnNldFZhbHVlKCdpbWFnZScpO1xyXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ2ZpbGVOYW1lJykuc2V0VmFsdWUoZmlsZVswXS5uYW1lKTtcclxuICAgICAgICB0aGlzLmZvcm0uZ2V0KCd0YXJnZXRVUkwnKS5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ3RhcmdldFVSTCcpLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuXHJcbiAgICAgICAgaWYgKGZpbGVbMF0udHlwZS5pbmRleE9mKCd2aWRlbycpID4gLTEpIHRoaXMuZm9ybS5nZXQoJ2ZpbGVUeXBlJykuc2V0VmFsdWUoJ3ZpZGVvJyk7XHJcblxyXG4gICAgICAgIHRoaXMudXBsb2FkTWVkaWFTZXJ2aWNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSB1cGxvYWRNZWRpYVNlcnZpY2UoKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgcGFyYW1ldGVyTGlzdDogQXJyYXk8UGFyYW1ldGVyPiA9IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogJ2ZpbGUnLFxyXG4gICAgICAgICAgICAgICAgdmFsdWU6IHRoaXMuZm9ybS5nZXQoJ2ZpbGUnKS52YWx1ZSxcclxuICAgICAgICAgICAgICAgIGluOiAnZm9ybURhdGEnLFxyXG4gICAgICAgICAgICAgICAgdHlwZTogJ29iamVjdCcsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgXTtcclxuXHJcbiAgICAgICAgY29uc3Qgc3VicyA9IHRoaXMuYXBpQWRhcHRlclNlcnZpY2VcclxuICAgICAgICAgICAgLmV4ZWN1dGVBcGlSZXF1ZXN0KHBhcmFtZXRlckxpc3QsICcvbWVzc2FnZS9tZWRpYScsICdQT1NUJylcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzcDogQXBwUmVzcG9uc2U8YW55PikgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgndGFyZ2V0VVJMJykuY2xlYXJWYWxpZGF0b3JzKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCd0YXJnZXRVUkwnKS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCd0YXJnZXRVUkwnKS5zZXRWYWx1ZShyZXNwLmRhdGEudGFyZ2V0VVJMKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ2ZpbGUnKS5yZXNldCgpO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMudG9hc3RyLnN1Y2Nlc3MoJ1VwbG9hZCBtZWRpYSBzdWNjZXNzJyk7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLnN1YnNjcmliZXJzLnB1c2goc3Vicyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHVwZGF0ZVRlbXBsYXRlKHRlbXBsYXRlOiBUZW1wbGF0ZVdBTW9kZWwpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmlzU2hvd1BhcmFtZXRlciA9IGZhbHNlO1xyXG5cclxuICAgICAgICBpZiAoIXRlbXBsYXRlKSByZXR1cm47XHJcblxyXG4gICAgICAgIHRoaXMuaXNIYXZlVGVtcGxhdGVQYXJhbSA9XHJcbiAgICAgICAgICAgIHRlbXBsYXRlLmhlYWRlci5leGFtcGxlcz8ubGVuZ3RoID4gMCB8fFxyXG4gICAgICAgICAgICB0ZW1wbGF0ZS5ib2R5LmV4YW1wbGVzPy5sZW5ndGggPiAwIHx8XHJcbiAgICAgICAgICAgIHRlbXBsYXRlLmJ1dHRvbnM/Lmxlbmd0aCA+IDA7XHJcblxyXG4gICAgICAgIGlmIChbJ2ltYWdlJywgJ3ZpZGVvJywgJ2RvY3VtZW50J10uaW5jbHVkZXModGVtcGxhdGU/LmhlYWRlcj8udHlwZT8udG9Mb3dlckNhc2UoKSkpIHtcclxuICAgICAgICAgICAgdGhpcy5mb3JtXHJcbiAgICAgICAgICAgICAgICAuZ2V0KCdmaWxlTmFtZScpXHJcbiAgICAgICAgICAgICAgICAuc2V0VmFsdWUoXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRDYW1wYWlnblN0b3JhZ2U/LmdlbmVyYWxJbmZvcm1hdGlvbj8uZm9ybS5maWxlTmFtZSA/P1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdldENhbXBhaWduU3RvcmFnZT8uZ2VuZXJhbEluZm9ybWF0aW9uPy5mb3JtLnRhcmdldFVSTCA/P1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZS5oZWFkZXIudXJsXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm1cclxuICAgICAgICAgICAgICAgIC5nZXQoJ3RhcmdldFVSTCcpXHJcbiAgICAgICAgICAgICAgICAuc2V0VmFsdWUoXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRDYW1wYWlnblN0b3JhZ2U/LmdlbmVyYWxJbmZvcm1hdGlvbj8uZm9ybS50YXJnZXRVUkwgPz9cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGUuaGVhZGVyLnVybFxyXG4gICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuZmlsZVR5cGVDaGFuZ2UodGVtcGxhdGU/LmhlYWRlcj8udHlwZT8udG9Mb3dlckNhc2UoKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0ZW1wbGF0ZS5oZWFkZXIuZXhhbXBsZXM/Lmxlbmd0aCA+IDBcclxuICAgICAgICAgICAgPyB0aGlzLmZvcm0uZ2V0KCdwYXJhbUhlYWRlcicpLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZClcclxuICAgICAgICAgICAgOiB0aGlzLmZvcm0uZ2V0KCdwYXJhbUhlYWRlcicpLmNsZWFyVmFsaWRhdG9ycygpO1xyXG5cclxuICAgICAgICB0ZW1wbGF0ZS5ib2R5LmV4YW1wbGVzPy5sZW5ndGggPiAwXHJcbiAgICAgICAgICAgID8gdGhpcy5mb3JtLmdldCgncGFyYW1Cb2R5Jykuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKVxyXG4gICAgICAgICAgICA6IHRoaXMuZm9ybS5nZXQoJ3BhcmFtQm9keScpLmNsZWFyVmFsaWRhdG9ycygpO1xyXG5cclxuICAgICAgICB0ZW1wbGF0ZS5idXR0b25zPy5sZW5ndGggPiAwXHJcbiAgICAgICAgICAgID8gdGhpcy5mb3JtLmdldCgncGFyYW1CdXR0b24nKS5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpXHJcbiAgICAgICAgICAgIDogdGhpcy5mb3JtLmdldCgncGFyYW1CdXR0b24nKS5jbGVhclZhbGlkYXRvcnMoKTtcclxuXHJcbiAgICAgICAgKHRoaXMuZm9ybS5nZXQoJ3BhcmFtSGVhZGVyJykgYXMgRm9ybUFycmF5KS5jb250cm9scyA9IFtdO1xyXG4gICAgICAgICh0aGlzLmZvcm0uZ2V0KCdwYXJhbUhlYWRlcicpIGFzIEZvcm1BcnJheSkucmVzZXQoKTtcclxuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdwYXJhbUhlYWRlcicpLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICAodGhpcy5mb3JtLmdldCgncGFyYW1Cb2R5JykgYXMgRm9ybUFycmF5KS5jb250cm9scyA9IFtdO1xyXG4gICAgICAgICh0aGlzLmZvcm0uZ2V0KCdwYXJhbUJvZHknKSBhcyBGb3JtQXJyYXkpLnJlc2V0KCk7XHJcbiAgICAgICAgdGhpcy5mb3JtLmdldCgncGFyYW1Cb2R5JykudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgICh0aGlzLmZvcm0uZ2V0KCdwYXJhbUJ1dHRvbicpIGFzIEZvcm1BcnJheSkuY29udHJvbHMgPSBbXTtcclxuICAgICAgICAodGhpcy5mb3JtLmdldCgncGFyYW1CdXR0b24nKSBhcyBGb3JtQXJyYXkpLnJlc2V0KCk7XHJcbiAgICAgICAgdGhpcy5mb3JtLmdldCgncGFyYW1CdXR0b24nKS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnb3RwVmFsdWUnKS5zZXRWYWx1ZSgnJyk7XHJcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnb3RwVmFsdWUnKS5jbGVhclZhbGlkYXRvcnMoKTtcclxuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdvdHBWYWx1ZScpLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuXHJcbiAgICAgICAgY29uc3QgZm9ybVN0b3JhZ2UgPSB0aGlzLmdldENhbXBhaWduU3RvcmFnZT8uZ2VuZXJhbEluZm9ybWF0aW9uPy5mb3JtO1xyXG5cclxuICAgICAgICBpZiAodGVtcGxhdGUuY2F0ZWdvcnkgPT09ICdBVVRIRU5USUNBVElPTicpIHtcclxuICAgICAgICAgICAgdGhpcy5mb3JtXHJcbiAgICAgICAgICAgICAgICAuZ2V0KCdvdHBWYWx1ZScpXHJcbiAgICAgICAgICAgICAgICAuc2V0VmFsdWUoXHJcbiAgICAgICAgICAgICAgICAgICAgZm9ybVN0b3JhZ2U/Lm90cFZhbHVlID8/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsuLi4oZm9ybVN0b3JhZ2U/LnRlbXBsYXRlPy5ib2R5Py5leGFtcGxlcyA/PyBbXSldPy5wb3AoKSA/P1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAnJ1xyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgnb3RwVmFsdWUnKS5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdvdHBWYWx1ZScpLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRlbXBsYXRlLmhlYWRlci5leGFtcGxlcz8uZm9yRWFjaCgoZWFjaCwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5hZGRQYXJhbUhlYWRlcihcclxuICAgICAgICAgICAgICAgIGZvcm1TdG9yYWdlPy5wYXJhbUhlYWRlcj8uW2luZGV4XT8ubmFtZSA/PyBmb3JtU3RvcmFnZT8ucGFyYW1IZWFkZXI/LltpbmRleF0gPz8gJydcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGVtcGxhdGUuYm9keS5leGFtcGxlcz8uZm9yRWFjaCgoZWFjaCwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgbGV0IHBhcmFtVmFsdWUgPVxyXG4gICAgICAgICAgICAgICAgZm9ybVN0b3JhZ2U/LnBhcmFtQm9keT8uW2luZGV4XT8ubmFtZSA/PyBmb3JtU3RvcmFnZT8ucGFyYW1Cb2R5Py5baW5kZXhdID8/ICcnO1xyXG5cclxuICAgICAgICAgICAgaWYgKFsnJFVuc3Vic2NyaWJlQWNjb3VudCddLmluY2x1ZGVzKGVhY2gpKSBwYXJhbVZhbHVlID0gZWFjaDtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuYWRkUGFyYW1Cb2R5KHBhcmFtVmFsdWUpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0ZW1wbGF0ZS5idXR0b25zPy5mb3JFYWNoKChlYWNoLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmFkZFBhcmFtQnV0dG9uKCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGJ1dHRvbiA9IHRoaXMuZ2V0QnV0dG9uO1xyXG5cclxuICAgICAgICAgICAgaWYgKGVhY2guZXhhbXBsZXM/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIGVhY2guZXhhbXBsZXMuZm9yRWFjaCgoXywgcGFyYW1JbmRleCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBmb3JtID0gbnVsbDtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVhY2gudHlwZSA9PT0gJ0ZMT1cnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm0gPSB0aGlzLmluaXRQYXJhbWV0ZXIoZmFsc2UsIGVhY2guZmxvd19pZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1Nob3dQYXJhbWV0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtID0gdGhpcy5pbml0UGFyYW1ldGVyKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtU3RvcmFnZT8ucGFyYW1CdXR0b24/LltpbmRleF0/Lm5hbWU/LltwYXJhbUluZGV4XT8ubmFtZSA/P1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1TdG9yYWdlPy5wYXJhbUJ1dHRvbj8uW2luZGV4XT8ubmFtZT8uW3BhcmFtSW5kZXhdID8/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybVN0b3JhZ2U/LnBhcmFtQnV0dG9uPy5baW5kZXhdPy5bcGFyYW1JbmRleF0gPz9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgKGJ1dHRvbltidXR0b24ubGVuZ3RoIC0gMV0uZ2V0KCduYW1lJykgYXMgRm9ybUFycmF5KS5wdXNoKGZvcm0pO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBidXR0b25bYnV0dG9uLmxlbmd0aCAtIDFdLmdldCgnbmFtZScpLmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgICAgICAgICAgICAgYnV0dG9uW2J1dHRvbi5sZW5ndGggLSAxXS5nZXQoJ25hbWUnKS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdXBkYXRlTWVkaWFUeXBlKF9tZWRpYVR5cGU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIGlmIChfbWVkaWFUeXBlID09PSBFbnVtRGF0YS5NRURJQV9UWVBFX0xPQ0FUSU9OKSB0aGlzLmluaXRNYXBzO1xyXG5cclxuICAgICAgICB0aGlzLmZvcm1SZXNldCh0cnVlKTtcclxuICAgICAgICB0aGlzLmZpbGVUeXBlQ2hhbmdlKF9tZWRpYVR5cGUudG9Mb3dlckNhc2UoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBmaWxlVHlwZUNoYW5nZSh0eXBlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmV4dEZpbGVBY2NlcHRlZCA9ICdpbWFnZS8qJztcclxuXHJcbiAgICAgICAgaWYgKHR5cGUgPT09IEVudW1EYXRhLk1FRElBX1RZUEVfVklERU8udG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgICAgICB0aGlzLmV4dEZpbGVBY2NlcHRlZCA9ICd2aWRlby8qJztcclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09IEVudW1EYXRhLk1FRElBX1RZUEVfRE9DVU1FTlQudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgICAgICB0aGlzLmV4dEZpbGVBY2NlcHRlZCA9ICdhcHBsaWNhdGlvbi9wZGYnO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdXBkYXRlU2VhcmNoKHNlYXJjaFZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnBhZ2VOb1RlbXBsYXRlT3B0aW9uID0gMTtcclxuICAgICAgICB0aGlzLmdldFRlbXBsYXRlT3B0aW9uU2VydmljZShudWxsLCBzZWFyY2hWYWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHVwZGF0ZVNlYXJjaEFjY291bnQoc2VhcmNoVmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMucGFnZU5vQWNjb3VudE9wdGlvbiA9IDE7XHJcbiAgICAgICAgdGhpcy5nZXRBY2NvdW50T3B0aW9uU2VydmljZShzZWFyY2hWYWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBpbml0TWFwcygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm1hcHNBUElMb2FkZXIubG9hZCgpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnNldEN1cnJlbnRMb2NhdGlvbigpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5nZW9Db2RlciA9IG5ldyBnb29nbGUubWFwcy5HZW9jb2RlcigpO1xyXG4gICAgICAgICAgICBjb25zdCBhdXRvY29tcGxldGUgPSBuZXcgZ29vZ2xlLm1hcHMucGxhY2VzLkF1dG9jb21wbGV0ZShcclxuICAgICAgICAgICAgICAgIHRoaXMubWFwU2VhcmNoUmVmLm5hdGl2ZUVsZW1lbnRcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgYXV0b2NvbXBsZXRlLmFkZExpc3RlbmVyKCdwbGFjZV9jaGFuZ2VkJywgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwbGFjZTogZ29vZ2xlLm1hcHMucGxhY2VzLlBsYWNlUmVzdWx0ID0gYXV0b2NvbXBsZXRlLmdldFBsYWNlKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghcGxhY2UuZ2VvbWV0cnkpIHJldHVybjtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXBzLmxhdGl0dWRlID0gcGxhY2UuZ2VvbWV0cnkubG9jYXRpb24ubGF0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXBzLmxvbmdpdHVkZSA9IHBsYWNlLmdlb21ldHJ5LmxvY2F0aW9uLmxuZygpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ2xhdGl0dWRlJykuc2V0VmFsdWUodGhpcy5tYXBzLmxhdGl0dWRlKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdsb25naXR1ZGUnKS5zZXRWYWx1ZSh0aGlzLm1hcHMubG9uZ2l0dWRlKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHNldEN1cnJlbnRMb2NhdGlvbigpIHtcclxuICAgICAgICBpZiAoJ2dlb2xvY2F0aW9uJyBpbiBuYXZpZ2F0b3IpIHtcclxuICAgICAgICAgICAgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbigocG9zaXRpb24pID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5mb3JtLmdldCgnbG9uZ2l0dWRlJykudmFsdWUgJiYgIXRoaXMuZm9ybS5nZXQoJ2xhdGl0dWRlJykudmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1hcHMubGF0aXR1ZGUgPSBwb3NpdGlvbi5jb29yZHMubGF0aXR1ZGU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXBzLmxvbmdpdHVkZSA9IHBvc2l0aW9uLmNvb3Jkcy5sb25naXR1ZGU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgnbGF0aXR1ZGUnKS5zZXRWYWx1ZSh0aGlzLm1hcHMubGF0aXR1ZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ2xvbmdpdHVkZScpLnNldFZhbHVlKHRoaXMubWFwcy5sb25naXR1ZGUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG1hcmtlckRyYWdFbmQoZXZlbnQ6IGdvb2dsZS5tYXBzLk1vdXNlRXZlbnQpIHtcclxuICAgICAgICBpZiAoZXZlbnQubGF0TG5nKSB7XHJcbiAgICAgICAgICAgIHRoaXMubWFwcy5sYXRpdHVkZSA9IGV2ZW50LmxhdExuZy5sYXQoKTtcclxuICAgICAgICAgICAgdGhpcy5tYXBzLmxvbmdpdHVkZSA9IGV2ZW50LmxhdExuZy5sbmcoKTtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgnbGF0aXR1ZGUnKS5zZXRWYWx1ZSh0aGlzLm1hcHMubGF0aXR1ZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdsb25naXR1ZGUnKS5zZXRWYWx1ZSh0aGlzLm1hcHMubG9uZ2l0dWRlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHVwZGF0ZURvd25sb2FkQ1NWKGlzQ2hlY2tlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ2lzVXBsb2FkJykuc2V0VmFsdWUoaXNDaGVja2VkKTtcclxuXHJcbiAgICAgICAgaWYgKGlzQ2hlY2tlZCkge1xyXG4gICAgICAgICAgICAodGhpcy5mb3JtLmdldCgncGFyYW1IZWFkZXInKSBhcyBGb3JtQXJyYXkpLmNvbnRyb2xzID0gW107XHJcbiAgICAgICAgICAgICh0aGlzLmZvcm0uZ2V0KCdwYXJhbUhlYWRlcicpIGFzIEZvcm1BcnJheSkucmVzZXQoKTtcclxuICAgICAgICAgICAgKHRoaXMuZm9ybS5nZXQoJ3BhcmFtQm9keScpIGFzIEZvcm1BcnJheSkuY29udHJvbHMgPSBbXTtcclxuICAgICAgICAgICAgKHRoaXMuZm9ybS5nZXQoJ3BhcmFtQm9keScpIGFzIEZvcm1BcnJheSkucmVzZXQoKTtcclxuICAgICAgICAgICAgKHRoaXMuZm9ybS5nZXQoJ3BhcmFtQnV0dG9uJykgYXMgRm9ybUFycmF5KS5jb250cm9scyA9IFtdO1xyXG4gICAgICAgICAgICAodGhpcy5mb3JtLmdldCgncGFyYW1CdXR0b24nKSBhcyBGb3JtQXJyYXkpLnJlc2V0KCk7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ3BhcmFtSGVhZGVyJykuY2xlYXJWYWxpZGF0b3JzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ3BhcmFtQm9keScpLmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdwYXJhbUJ1dHRvbicpLmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdwYXJhbUhlYWRlcicpLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgncGFyYW1Cb2R5JykudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdwYXJhbUJ1dHRvbicpLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgnb3RwVmFsdWUnKS5yZXNldCgpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdvdHBWYWx1ZScpLmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdvdHBWYWx1ZScpLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy51cGRhdGVUZW1wbGF0ZSh0aGlzLmZvcm0uZ2V0KCd0ZW1wbGF0ZScpLnZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaGFuZGxlQ2hhbmdlVGVtcGxhdGUodXNlRXhpc3Rpbmc6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICBpZiAodXNlRXhpc3RpbmcpIHtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgndGVtcGxhdGUnKS5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCd0ZXh0JykucmVzZXQoKTtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgndGV4dCcpLmNsZWFyVmFsaWRhdG9ycygpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgndGV4dCcpLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgndGVtcGxhdGUnKS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgndGVtcGxhdGUnKS5yZXNldCgpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCd0ZW1wbGF0ZScpLmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCd0ZXh0Jykuc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXgoMTAyNCldKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ3RleHQnKS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ3RlbXBsYXRlJykudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaGFuZGxlQ2hhbmdlRnJvbSh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgeyBpc1VzZUV4aXN0aW5nVGVtcGxhdGUgfSA9IHRoaXMuZm9ybS52YWx1ZTtcclxuICAgICAgICBpZiAoaXNVc2VFeGlzdGluZ1RlbXBsYXRlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0VGVtcGxhdGVPcHRpb25TZXJ2aWNlKHZhbHVlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRlVGV4dCh2YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaWJlcnMuZm9yRWFjaCgoZWFjaCkgPT4gZWFjaC51bnN1YnNjcmliZSgpKTtcclxuICAgIH1cclxufVxyXG4iXX0=
755
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhbC1pbmZvcm1hdGlvbi13YS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWRsZmUvY2FtcGFpZ24tbWFuYWdlbWVudC1saWJyYXJ5LyIsInNvdXJjZXMiOlsibGliL2NhbXBhaWduLW1hbmFnZW1lbnQvbW9kdWxlcy9uZXctY2FtcGFpZ24vY29tcG9uZW50cy9nZW5lcmFsLWluZm9ybWF0aW9uLXdhL2dlbmVyYWwtaW5mb3JtYXRpb24td2EuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUNILFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNULE1BQU0sRUFDTixNQUFNLEVBQ04sU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDekUsT0FBTyxFQUNILDBDQUEwQyxFQUMxQyxvQkFBb0IsRUFDcEIsb0JBQW9CLEdBQ3ZCLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFJaEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDeEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7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OHhCekM7SUFBRCxvQ0FBQztDQUFBLEFBOXhCRCxJQTh4QkM7U0E5eEJZLDZCQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1hcHNBUElMb2FkZXIgfSBmcm9tICdAYWdtL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHtcclxuICAgIENvbXBvbmVudCxcclxuICAgIEVsZW1lbnRSZWYsXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBJbnB1dCxcclxuICAgIE5nWm9uZSxcclxuICAgIE9uRGVzdHJveSxcclxuICAgIE9uSW5pdCxcclxuICAgIE91dHB1dCxcclxuICAgIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUFycmF5LCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBUb2FzdHJTZXJ2aWNlIH0gZnJvbSAnbmd4LXRvYXN0cic7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBlbnZpcm9ubWVudCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudCc7XHJcbmltcG9ydCB7XHJcbiAgICBHZW5lcmFsSW5mb3JtYXRpb25XQU1lc3NhZ2VWYWxpZGF0aW9uQ29uc3QsXHJcbiAgICBNZWRpYVR5cGVPcHRpb25Db25zdCxcclxuICAgIE1zZ1R5cGVXQU9wdGlvbkNvbnN0LFxyXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvcmUvY29uc3QnO1xyXG5pbXBvcnQgeyBQcm9kdWN0Q2F0ZWdvcnlFbnVtIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29yZS9lbnVtcyc7XHJcbmltcG9ydCB7IEJhc2VPcHRpb25Nb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvcmUvbW9kZWxzJztcclxuaW1wb3J0IHsgUGFyYW1ldGVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29yZS9tb2RlbHMvdXRpbC9hcGktYWRhcHRlci1zZXJ2aWNlLW1vZGVscyc7XHJcbmltcG9ydCB7IEFwcFJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29yZS9tb2RlbHMvdXRpbC9hcGktZHRvL3Jlc3BvbnNlLW1vZGVscyc7XHJcbmltcG9ydCB7IEFwaUFkYXB0ZXJTZXJ2aWNlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvcmUvc2VydmljZXMnO1xyXG5pbXBvcnQgeyBnZW5lcmF0ZUVudW1PcHRpb24gfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9jb3JlL3V0aWwnO1xyXG5pbXBvcnQgeyBUZW1wbGF0ZVdBTW9kZWwsIFdoYXRzQXBwQWNjb3VudER0byB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscyc7XHJcbmltcG9ydCB7IEVudW1EYXRhIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbC9lbnVtcyc7XHJcbmltcG9ydCB7IFZhbGlkYXRvcnMgYXMgQ3VzdG9tVmFsaWRhdG9ycyB9IGZyb20gJy4uLy4uLy4uLy4uL3ZhbGlkYXRvcnMnO1xyXG5cclxuaW50ZXJmYWNlIElNYXBzIHtcclxuICAgIHpvb206IG51bWJlcjtcclxuICAgIGxhdGl0dWRlOiBudW1iZXI7XHJcbiAgICBsb25naXR1ZGU6IG51bWJlcjtcclxuICAgIGlzRHJhZ2dhYmxlOiBib29sZWFuO1xyXG4gICAgaXNEb3VibGVDbGlja1pvb206IGJvb2xlYW47XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdsaWItZ2VuZXJhbC1pbmZvcm1hdGlvbi13YScsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vZ2VuZXJhbC1pbmZvcm1hdGlvbi13YS5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9nZW5lcmFsLWluZm9ybWF0aW9uLXdhLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBHZW5lcmFsSW5mb3JtYXRpb25XQUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIHVwZGF0ZUdlbmVyYWxJbmZvcm1hdGlvbkZvcm06IEV2ZW50RW1pdHRlcjxGb3JtR3JvdXA+O1xyXG5cclxuICAgIHB1YmxpYyBmb3JtOiBGb3JtR3JvdXA7XHJcbiAgICBwdWJsaWMgbXNnVHlwZVdBT3B0aW9uOiBhbnlbXSA9IFtdO1xyXG4gICAgcHVibGljIG1lZGlhVHlwZU9wdGlvbjogYW55W10gPSBbXTtcclxuICAgIHB1YmxpYyBjYXRlZ29yeU9wdGlvbjogQmFzZU9wdGlvbk1vZGVsW107XHJcbiAgICBwdWJsaWMgYWNjb3VudE9wdGlvbjogV2hhdHNBcHBBY2NvdW50RHRvW10gPSBbXTtcclxuICAgIHB1YmxpYyBpc0hhdmVOZXh0QWNjb3VudE9wdGlvbjogYm9vbGVhbiA9IHRydWU7XHJcbiAgICBwdWJsaWMgaXNMb2FkaW5nQWNjb3VudE9wdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIHRlbXBsYXRlT3B0aW9uOiBUZW1wbGF0ZVdBTW9kZWxbXSA9IFtdO1xyXG4gICAgcHVibGljIGlzSGF2ZU5leHRUZW1wbGF0ZU9wdGlvbjogYm9vbGVhbiA9IHRydWU7XHJcbiAgICBwdWJsaWMgaXNMb2FkaW5nVGVtcGxhdGVPcHRpb246IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHB1YmxpYyBpc0hhdmVUZW1wbGF0ZVBhcmFtOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgaXNTaG93UGFyYW1ldGVyOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgdmFsaWRhdGlvbk1lc3NhZ2VzOiBhbnk7XHJcbiAgICBwdWJsaWMgZXh0RmlsZUFjY2VwdGVkOiBzdHJpbmcgPSAnaW1hZ2UvKic7XHJcbiAgICBwdWJsaWMgbWFwczogSU1hcHM7XHJcblxyXG4gICAgcHJpdmF0ZSBwYWdlTm9BY2NvdW50T3B0aW9uOiBudW1iZXIgPSAxO1xyXG4gICAgcHJpdmF0ZSBwYWdlTm9UZW1wbGF0ZU9wdGlvbjogbnVtYmVyID0gMTtcclxuICAgIHByaXZhdGUgc3Vic2NyaWJlcnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcbiAgICBwcml2YXRlIGdlb0NvZGVyOiBhbnk7XHJcblxyXG4gICAgcHVibGljIHRlbXBsYXRlcyA9IFtcclxuICAgICAgICB7IGxhYmVsOiAnQ3JlYXRlIE5ldycsIHZhbHVlOiBmYWxzZSB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdVc2UgZXhpc3RpbmcgdGVtcGxhdGUnLCB2YWx1ZTogdHJ1ZSB9LFxyXG4gICAgXTtcclxuXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgaXNSZWFkT25seU1vZGU6IGJvb2xlYW47XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHNldCBpc1RvdWNoZWRGb3JtKHN0YXR1czogYm9vbGVhbikge1xyXG4gICAgICAgIGlmICghdGhpcy51cGRhdGVHZW5lcmFsSW5mb3JtYXRpb25Gb3JtKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUdlbmVyYWxJbmZvcm1hdGlvbkZvcm0uZW1pdCh0aGlzLmZvcm0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ21hcFNlYXJjaCcpIG1hcFNlYXJjaFJlZjogRWxlbWVudFJlZjtcclxuXHJcbiAgICBwdWJsaWMgaXNVdGlsaXR5OiBib29sZWFuID0gdHJ1ZTtcclxuICAgIHB1YmxpYyBpc0NoZWNrVXRpbGl0eTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXHJcbiAgICAgICAgcHJpdmF0ZSBtYXBzQVBJTG9hZGVyOiBNYXBzQVBJTG9hZGVyLFxyXG4gICAgICAgIHByaXZhdGUgYXBpQWRhcHRlclNlcnZpY2U6IEFwaUFkYXB0ZXJTZXJ2aWNlU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHRvYXN0cjogVG9hc3RyU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnRcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMudXBkYXRlR2VuZXJhbEluZm9ybWF0aW9uRm9ybSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm1zZ1R5cGVXQU9wdGlvbiA9IE1zZ1R5cGVXQU9wdGlvbkNvbnN0O1xyXG4gICAgICAgIHRoaXMubWVkaWFUeXBlT3B0aW9uID0gTWVkaWFUeXBlT3B0aW9uQ29uc3Q7XHJcbiAgICAgICAgdGhpcy5jYXRlZ29yeU9wdGlvbiA9IGdlbmVyYXRlRW51bU9wdGlvbihQcm9kdWN0Q2F0ZWdvcnlFbnVtKTtcclxuICAgICAgICB0aGlzLnZhbGlkYXRpb25NZXNzYWdlcyA9IEdlbmVyYWxJbmZvcm1hdGlvbldBTWVzc2FnZVZhbGlkYXRpb25Db25zdDtcclxuICAgICAgICB0aGlzLm1hcHMgPSB7XHJcbiAgICAgICAgICAgIHpvb206IDE1LFxyXG4gICAgICAgICAgICBsYXRpdHVkZTogbnVsbCxcclxuICAgICAgICAgICAgbG9uZ2l0dWRlOiBudWxsLFxyXG4gICAgICAgICAgICBpc0RyYWdnYWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgaXNEb3VibGVDbGlja1pvb206IHRydWUsXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5pbml0Rm9ybSgpO1xyXG4gICAgICAgIHRoaXMuaW5pdERpc2FibGUoKTtcclxuICAgICAgICB0aGlzLmluaXRFZGl0KCk7XHJcbiAgICAgICAgdGhpcy5pbml0VmFsaWRhdGlvbigpO1xyXG4gICAgICAgIHRoaXMuZ2V0QWNjb3VudE9wdGlvblNlcnZpY2UoXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0Q2FtcGFpZ25TdG9yYWdlPy5nZW5lcmFsSW5mb3JtYXRpb24/LmZvcm0/Lm1lZGl1bSA9PT0gJ1dBJ1xyXG4gICAgICAgICAgICAgICAgPyB0aGlzLmdldENhbXBhaWduU3RvcmFnZT8uZ2VuZXJhbEluZm9ybWF0aW9uPy5mb3JtPy5mcm9tPy5uYW1lXHJcbiAgICAgICAgICAgICAgICA6ICcnXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmxpc3RlbkJvZHlDaGFuZ2UoKTtcclxuICAgICAgICAvKiB0aGlzLnNldEN1cnJlbnRMb2NhdGlvbigpOyAqL1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBnZXRDYW1wYWlnblN0b3JhZ2UoKTogYW55IHtcclxuICAgICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RlbGluLmNhbXBhaWduJylcclxuICAgICAgICAgICAgPyBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0ZWxpbi5jYW1wYWlnbicpKVxyXG4gICAgICAgICAgICA6IHt9O1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaW5pdEZvcm0oKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5mb3JtID0gbmV3IEZvcm1Hcm91cCh7XHJcbiAgICAgICAgICAgIGNoYW5uZWw6IG5ldyBGb3JtQ29udHJvbChudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcclxuICAgICAgICAgICAgbWVkaWE6IG5ldyBGb3JtQ29udHJvbChudWxsKSxcclxuICAgICAgICAgICAgZnJvbTogbmV3IEZvcm1Db250cm9sKG51bGwpLFxyXG4gICAgICAgICAgICB0ZXh0OiBuZXcgRm9ybUNvbnRyb2wobnVsbCksXHJcbiAgICAgICAgICAgIGZpbGVOYW1lOiBuZXcgRm9ybUNvbnRyb2wobnVsbCksXHJcbiAgICAgICAgICAgIHRhcmdldFVSTDogbmV3IEZvcm1Db250cm9sKG51bGwpLFxyXG4gICAgICAgICAgICBmaWxlVHlwZTogbmV3IEZvcm1Db250cm9sKG51bGwpLFxyXG4gICAgICAgICAgICBmaWxlOiBuZXcgRm9ybUNvbnRyb2wobnVsbCksXHJcbiAgICAgICAgICAgIGxhdGl0dWRlOiBuZXcgRm9ybUNvbnRyb2wobnVsbCksXHJcbiAgICAgICAgICAgIGxvbmdpdHVkZTogbmV3IEZvcm1Db250cm9sKG51bGwpLFxyXG4gICAgICAgICAgICB0ZW1wbGF0ZTogbmV3IEZvcm1Db250cm9sKG51bGwpLFxyXG4gICAgICAgICAgICBwYXJhbUhlYWRlcjogbmV3IEZvcm1BcnJheShbXSwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXHJcbiAgICAgICAgICAgIHBhcmFtQm9keTogbmV3IEZvcm1BcnJheShbXSwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXHJcbiAgICAgICAgICAgIHBhcmFtQnV0dG9uOiBuZXcgRm9ybUFycmF5KFtdLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcclxuICAgICAgICAgICAgb3RwVmFsdWU6IG5ldyBGb3JtQ29udHJvbCgnJyksXHJcbiAgICAgICAgICAgIGlzVXBsb2FkOiBuZXcgRm9ybUNvbnRyb2woZmFsc2UpLFxyXG4gICAgICAgICAgICBmaWxlSWQ6IG5ldyBGb3JtQ29udHJvbCgnJyksXHJcbiAgICAgICAgICAgIGNhdGVnb3J5OiBuZXcgRm9ybUNvbnRyb2wobnVsbCksXHJcbiAgICAgICAgICAgIHByb2R1Y3Q6IG5ldyBGb3JtQ29udHJvbChudWxsKSxcclxuICAgICAgICAgICAgY2F0YWxvZ3VlOiBuZXcgRm9ybUNvbnRyb2wobnVsbCksXHJcbiAgICAgICAgICAgIGJvZHk6IG5ldyBGb3JtQ29udHJvbChudWxsKSxcclxuICAgICAgICAgICAgaXNVc2VFeGlzdGluZ1RlbXBsYXRlOiBuZXcgRm9ybUNvbnRyb2woZmFsc2UpLFxyXG4gICAgICAgICAgICBpc05lZWRTYXZlOiBuZXcgRm9ybUNvbnRyb2woZmFsc2UpLFxyXG4gICAgICAgICAgICB0dGw6IG5ldyBGb3JtQ29udHJvbChudWxsKSxcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5mb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlR2VuZXJhbEluZm9ybWF0aW9uRm9ybS5lbWl0KHRoaXMuZm9ybSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaW5pdERpc2FibGUoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmlzUmVhZE9ubHlNb2RlKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZm9ybS5kaXNhYmxlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBpbml0RWRpdCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKHRoaXMuZ2V0Q2FtcGFpZ25TdG9yYWdlKS5sZW5ndGggPT09IDAgfHxcclxuICAgICAgICAgICAgdGhpcy5nZXRDYW1wYWlnblN0b3JhZ2U/LmdlbmVyYWxJbmZvcm1hdGlvbj8uZm9ybT8ubWVkaXVtICE9PSAnV0EnXHJcbiAgICAgICAgKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIHRoaXMuZm9ybVxyXG4gICAgICAgICAgICAuZ2V0KCdjaGFubmVsJylcclxuICAgICAgICAgICAgLnNldFZhbHVlKHRoaXMuZ2V0Q2FtcGFpZ25TdG9yYWdlPy5nZW5lcmFsSW5mb3JtYXRpb24/LmZvcm0uY2hhbm5lbCk7XHJcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnbWVkaWEnKS5zZXRWYWx1ZSh0aGlzLmdldENhbXBhaWduU3RvcmFnZT8uZ2VuZXJhbEluZm9ybWF0aW9uPy5mb3JtLm1lZGlhKTtcclxuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdmcm9tJykuc2V0VmFsdWUodGhpcy5nZXRDYW1wYWlnblN0b3JhZ2U/LmdlbmVyYWxJbmZvcm1hdGlvbj8uZm9ybS5mcm9tKTtcclxuICAgICAgICB0aGlzLmZvcm0uZ2V0KCd0ZXh0Jykuc2V0VmFsdWUodGhpcy5nZXRDYW1wYWlnblN0b3JhZ2U/LmdlbmVyYWxJbmZvcm1hdGlvbj8uZm9ybS50ZXh0KTtcclxuICAgICAgICB0aGlzLmZvcm1cclxuICAgICAgICAgICAgLmdldCgndGFyZ2V0VVJMJylcclxuICAgICAgICAgICAgLnNldFZhbHVlKHRoaXMuZ2V0Q2FtcGFpZ25TdG9yYWdlPy5nZW5lcmFsSW5mb3JtYXRpb24/LmZvcm0udGFyZ2V0VVJMKTtcclxuICAgICAgICB0aGlzLmZvcm1cclxuICAgICAgICAgICAgLmdldCgnZmlsZU5hbWUnKVxyXG4gICAgICAgICAgICAuc2V0VmFsdWUoXHJcbiAgICAgICAgICAgICAgICB0aGlzLmdldENhbXBhaWduU3RvcmFnZT8uZ2VuZXJhbEluZm9ybWF0aW9uPy5mb3JtLmZpbGVOYW1lID8/XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgndGFyZ2V0VVJMJykudmFsdWVcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmZvcm1cclxuICAgICAgICAgICAgLmdldCgndGVtcGxhdGUnKVxyXG4gICAgICAgICAgICAuc2V0VmFsdWUodGhpcy5nZXRDYW1wYWlnblN0b3JhZ2U/LmdlbmVyYWxJbmZvcm1hdGlvbj8uZm9ybS50ZW1wbGF0ZSk7XHJcbiAgICAgICAgdGhpcy5mb3JtXHJcbiAgICAgICAgICAgIC5nZXQoJ2lzVXBsb2FkJylcclxuICAgICAgICAgICAgLnNldFZhbHVlKHRoaXMuZ2V0Q2FtcGFpZ25TdG9yYWdlPy5nZW5lcmFsSW5mb3JtYXRpb24/LmZvcm0uaXNVcGxvYWQpO1xyXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ2ZpbGVJZCcpLnNldFZhbHVlKHRoaXMuZ2V0Q2FtcGFpZ25TdG9yYWdlPy5nZW5lcmFsSW5mb3JtYXRpb24/LmZvcm0uZmlsZUlkKTtcclxuICAgICAgICB0aGlzLmZvcm1cclxuICAgICAgICAgICAgLmdldCgnb3RwVmFsdWUnKVxyXG4gICAgICAgICAgICAuc2V0VmFsdWUodGhpcy5nZXRDYW1wYWlnblN0b3JhZ2U/LmdlbmVyYWxJbmZvcm1hdGlvbj8uZm9ybS5vdHBWYWx1ZSk7XHJcbiAgICAgICAgdGhpcy5mb3JtXHJcbiAgICAgICAgICAgIC5nZXQoJ2lzVXNlRXhpc3RpbmdUZW1wbGF0ZScpXHJcbiAgICAgICAgICAgIC5zZXRWYWx1ZSghIXRoaXMuZ2V0Q2FtcGFpZ25TdG9yYWdlPy5nZW5lcmFsSW5mb3JtYXRpb24/LmZvcm0/LnRlbXBsYXRlTmFtZSk7XHJcbiAgICAgICAgdGhpcy5mb3JtXHJcbiAgICAgICAgICAgIC5nZXQoJ2lzTmVlZFNhdmUnKVxyXG4gICAgICAgICAgICAuc2V0VmFsdWUoISF0aGlzLmdldENhbXBhaWduU3RvcmFnZT8uZ2VuZXJhbEluZm9ybWF0aW9uPy5mb3JtPy5pc05lZWRTYXZlKTtcclxuICAgICAgICB0aGlzLmZvcm0uZ2V0KCd0dGwnKS5zZXRWYWx1ZSh0aGlzLmdldENhbXBhaWduU3RvcmFnZT8uZ2VuZXJhbEluZm9ybWF0aW9uPy5mb3JtPy50dGwpO1xyXG5cclxuICAgICAgICB0aGlzLmlzSGF2ZVRlbXBsYXRlUGFyYW0gPSB0aGlzLmZvcm0uZ2V0KCdpc1VwbG9hZCcpLnZhbHVlO1xyXG4gICAgICAgIHRoaXMuZ2V0VGVtcGxhdGVPcHRpb25TZXJ2aWNlKG51bGwsIHRoaXMuZm9ybS5nZXQoJ3RlbXBsYXRlJykudmFsdWU/Lm5hbWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaW5pdFZhbGlkYXRpb24oKTogdm9pZCB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5mb3JtLmNvbnRyb2xzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1trZXldLmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uY29udHJvbHNba2V5XS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdjaGFubmVsJykuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZ2V0SXNUZXh0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ2Zyb20nKS5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCd0ZXh0Jykuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgnZnJvbScpLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgndGV4dCcpLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZ2V0SXNNZWRpYSkge1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdtZWRpYScpLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ2Zyb20nKS5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdmaWxlTmFtZScpLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ21lZGlhJykudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdmcm9tJykudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdmaWxlTmFtZScpLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZ2V0SXNUZW1wbGF0ZSkge1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdmcm9tJykuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgndGVtcGxhdGUnKS5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdwYXJhbUhlYWRlcicpLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ3BhcmFtQm9keScpLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ3BhcmFtQnV0dG9uJykuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgnZnJvbScpLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgndGVtcGxhdGUnKS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ3BhcmFtSGVhZGVyJykudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdwYXJhbUJvZHknKS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ3BhcmFtQnV0dG9uJykudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5nZXRJc0NhdGFsb2d1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdmcm9tJykuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgnY2F0ZWdvcnknKS5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdjYXRhbG9ndWUnKS5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdwcm9kdWN0Jykuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgnYm9keScpLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTAwKSk7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ2Zyb20nKS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ2NhdGVnb3J5JykudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdjYXRhbG9ndWUnKS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ3Byb2R1Y3QnKS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ2JvZHknKS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmdldElzVXRpbGl0eSkge1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdmcm9tJykuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgndGV4dCcpLnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEwMjQpXSk7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybVxyXG4gICAgICAgICAgICAgICAgLmdldCgndHRsJylcclxuICAgICAgICAgICAgICAgIC5zZXRWYWxpZGF0b3JzKFtcclxuICAgICAgICAgICAgICAgICAgICBDdXN0b21WYWxpZGF0b3JzLm1pbigzMCwgJ01pbmltdW0gVFRMIDMwJyksXHJcbiAgICAgICAgICAgICAgICAgICAgQ3VzdG9tVmFsaWRhdG9ycy5tYXgoNDMyMDAsICdNYXhpbXVtIFRUTCA0MzIwMCcpLFxyXG4gICAgICAgICAgICAgICAgXSk7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ2Zyb20nKS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ3RleHQnKS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ3R0bCcpLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdmcm9tJykuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgndGV4dCcpLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ2Zyb20nKS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ3RleHQnKS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBmb3JtUmVzZXQoX2lzTWVkaWFUeXBlOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIV9pc01lZGlhVHlwZSkge1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdtZWRpYScpLnJlc2V0KCk7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ2Zyb20nKS5yZXNldCgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5mb3JtLmdldCgndGV4dCcpLnJlc2V0KCk7XHJcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnZmlsZU5hbWUnKS5yZXNldCgpO1xyXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ3RhcmdldFVSTCcpLnJlc2V0KCk7XHJcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnZmlsZVR5cGUnKS5yZXNldCgpO1xyXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ2ZpbGUnKS5yZXNldCgpO1xyXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ2xhdGl0dWRlJykucmVzZXQoKTtcclxuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdsb25naXR1ZGUnKS5yZXNldCgpO1xyXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ3RlbXBsYXRlJykucmVzZXQoKTtcclxuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdjYXRlZ29yeScpLnJlc2V0KCk7XHJcbiAgICAgICAgdGhpcy5mb3JtLmdldCgncHJvZHVjdCcpLnJlc2V0KCk7XHJcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnY2F0YWxvZ3VlJykucmVzZXQoKTtcclxuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdib2R5JykucmVzZXQoKTtcclxuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdvdHBWYWx1ZScpLnJlc2V0KCk7XHJcbiAgICAgICAgKHRoaXMuZm9ybS5nZXQoJ3BhcmFtSGVhZGVyJykgYXMgRm9ybUFycmF5KS5jb250cm9scyA9IFtdO1xyXG4gICAgICAgICh0aGlzLmZvcm0uZ2V0KCdwYXJhbUhlYWRlcicpIGFzIEZvcm1BcnJheSkucmVzZXQoKTtcclxuICAgICAgICAodGhpcy5mb3JtLmdldCgncGFyYW1Cb2R5JykgYXMgRm9ybUFycmF5KS5jb250cm9scyA9IFtdO1xyXG4gICAgICAgICh0aGlzLmZvcm0uZ2V0KCdwYXJhbUJvZHknKSBhcyBGb3JtQXJyYXkpLnJlc2V0KCk7XHJcbiAgICAgICAgKHRoaXMuZm9ybS5nZXQoJ3BhcmFtQnV0dG9uJykgYXMgRm9ybUFycmF5KS5jb250cm9scyA9IFtdO1xyXG4gICAgICAgICh0aGlzLmZvcm0uZ2V0KCdwYXJhbUJ1dHRvbicpIGFzIEZvcm1BcnJheSkucmVzZXQoKTtcclxuXHJcbiAgICAgICAgdGhpcy5pbml0VmFsaWRhdGlvbigpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaW5pdFBhcmFtKF9uYW1lOiBzdHJpbmcsIF92YWx1ZTogYW55LCBfdHlwZTogc3RyaW5nKTogUGFyYW1ldGVyIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBuYW1lOiBfbmFtZSxcclxuICAgICAgICAgICAgdmFsdWU6IF92YWx1ZSxcclxuICAgICAgICAgICAgaW46ICdxdWVyeScsXHJcbiAgICAgICAgICAgIHR5cGU6IF90eXBlLFxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRBY2NvdW50T3B0aW9uU2VydmljZShmaWx0ZXI6IHN0cmluZyA9ICcnLCBpc0luZmluaXRlOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmlzTG9hZGluZ0FjY291bnRPcHRpb24gPSB0cnVlO1xyXG5cclxuICAgICAgICBjb25zdCBwYXJhbWV0ZXJMaXN0OiBBcnJheTxQYXJhbWV0ZXI+ID0gW1xyXG4gICAgICAgICAgICB0aGlzLmluaXRQYXJhbSgncGFnZU5vJywgdGhpcy5wYWdlTm9BY2NvdW50T3B0aW9uLCAnbnVtYmVyJyksXHJcbiAgICAgICAgICAgIHRoaXMuaW5pdFBhcmFtKCdyb3dQZXJQYWdlJywgMjAsICdudW1iZXInKSxcclxuICAgICAgICAgICAgdGhpcy5pbml0UGFyYW0oJ3BsYXRmb3JtJywgJ1dBJywgJ3N0cmluZycpLFxyXG4gICAgICAgICAgICB0aGlzLmluaXRQYXJhbSgnc3RhdHVzJywgJ0FQUFJPVkVEJywgJ3N0cmluZycpLFxyXG4gICAgICAgICAgICB0aGlzLmluaXRQYXJhbSgnZmlsdGVyJywgZmlsdGVyLCAnc3RyaW5nJyksXHJcbiAgICAgICAgXTtcclxuXHJcbiAgICAgICAgY29uc3Qgc3VicyA9IHRoaXMuYXBpQWRhcHRlclNlcnZpY2VcclxuICAgICAgICAgICAgLmV4ZWN1dGVBcGlSZXF1ZXN0KHBhcmFtZXRlckxpc3QsICcvYWRtaW4vYWNjb3VudCcsICdHRVQnKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChyZXNwOiBBcHBSZXNwb25zZTxXaGF0c0FwcEFjY291bnREdG9bXT4pID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICghcmVzcC5kYXRhKSByZXR1cm47XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5hY2NvdW50T3B0aW9uID0gaXNJbmZpbml0ZSA/IFsuLi50aGlzLmFjY291bnRPcHRpb24sIC4uLnJlc3AuZGF0YV0gOiByZXNwLmRhdGE7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzSGF2ZU5leHRBY2NvdW50T3B0aW9uID0gcmVzcC5oYXZlTmV4dDtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nQWNjb3VudE9wdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5zdWJzY3JpYmVycy5wdXNoKHN1YnMpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgbGlzdGVuQm9keUNoYW5nZSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmZvcm1cclxuICAgICAgICAgICAgLmdldCgndGV4dCcpXHJcbiAgICAgICAgICAgID8udmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKDEwMDApLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5nZXRJc1V0aWxpdHkpIHJldHVybjtcclxuICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVUZXh0KCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdmFsaWRhdGVUZXh0KGFjY291bnQ/OiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmlzQ2hlY2tVdGlsaXR5ID0gdHJ1ZTtcclxuICAgICAgICBjb25zdCB7IGZyb20sIHRleHQgfSA9IHRoaXMuZm9ybS52YWx1ZTtcclxuICAgICAgICBpZiAoIXRleHQgJiYgIWZyb20pIHJldHVybjtcclxuICAgICAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKClcclxuICAgICAgICAgICAgLnNldCgnQXV0aG9yaXphdGlvbicsICdCZWFyZXIgJyArIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0ZWxpbi5hY2Nlc3NUb2tlbicpKVxyXG4gICAgICAgICAgICAuc2V0KCdBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4nLCAnKicpO1xyXG4gICAgICAgIHRoaXMuaHR0cENsaWVudFxyXG4gICAgICAgICAgICAucG9zdChcclxuICAgICAgICAgICAgICAgIGAke2Vudmlyb25tZW50LmFwaX0vbWVzc2FnZS9kaXJlY3Qtc2VuZC8keyhmcm9tIHx8IGFjY291bnQpPy5pZH1gLFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcclxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiB7IGJvZHk6IHRleHQgfSxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB7IGhlYWRlcnMgfVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgbmV4dDogKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzVXRpbGl0eSA9IHJlc3BvbnNlPy5jYXRlZ29yeSA9PT0gJ1VUSUxJVFknO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNDaGVja1V0aWxpdHkgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBlcnJvcjogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNDaGVja1V0aWxpdHkgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRUZW1wbGF0ZU9wdGlvblNlcnZpY2UoXHJcbiAgICAgICAgZXZlbnQ6IHN0cmluZyA9IG51bGwsXHJcbiAgICAgICAgZmlsdGVyOiBzdHJpbmcgPSAnJyxcclxuICAgICAgICBpc0luZmluaXRlOiBib29sZWFuID0gZmFsc2VcclxuICAgICk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nVGVtcGxhdGVPcHRpb24gPSB0cnVlO1xyXG5cclxuICAgICAgICBjb25zdCBwYXJhbWV0ZXJMaXN0OiBBcnJheTxQYXJhbWV0ZXI+ID0gW1xyXG4gICAgICAgICAgICB0aGlzLmluaXRQYXJhbSgncGFnZU5vJywgdGhpcy5wYWdlTm9UZW1wbGF0ZU9wdGlvbiwgJ251bWJlcicpLFxyXG4gICAgICAgICAgICB0aGlzLmluaXRQYXJhbSgncm93UGVyUGFnZScsIDIwLCAnbnVtYmVyJyksXHJcbiAgICAgICAgICAgIHRoaXMuaW5pdFBhcmFtKCdwbGF0Zm9ybScsICdXQScsICdzdHJpbmcnKSxcclxuICAgICAgICAgICAgdGhpcy5pbml0UGFyYW0oJ2ZpbHRlcicsIGZpbHRlciwgJ3N0cmluZycpLFxyXG4gICAgICAgICAgICB0aGlzLmluaXRQYXJhbSgnc3RhdHVzJywgJ0FQUFJPVkVEJywgJ3N0cmluZycpLFxyXG4gICAgICAgICAgICB0aGlzLmluaXRQYXJhbSgnY2xpZW50SWQnLCB0aGlzLmZvcm0uZ2V0KCdmcm9tJykudmFsdWU/LmNsaWVudElkLCAnc3RyaW5nJyksXHJcbiAgICAgICAgICAgIHRoaXMuaW5pdFBhcmFtKCd3YWJhSWQnLCB0aGlzLmZvcm0uZ2V0KCdmcm9tJykudmFsdWU/LndhYmFJZCA/PyAnJywgJ3N0cmluZycpLFxyXG4gICAgICAgIF07XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmlzUmVhZE9ubHlNb2RlKSBwYXJhbWV0ZXJMaXN0LnB1c2godGhpcy5pbml0UGFyYW0oJ3N1bW1hcnknLCB0cnVlLCAnc3RyaW5nJykpO1xyXG5cclxuICAgICAgICBjb25zdCBtZXNzYWdlVHlwZSA9IHRoaXMuZm9ybS52YWx1ZT8uY2hhbm5lbDtcclxuXHJcbiAgICAgICAgaWYgKG1lc3NhZ2VUeXBlID09PSAndXRpbGl0eScpIHtcclxuICAgICAgICAgICAgcGFyYW1ldGVyTGlzdC5wdXNoKHRoaXMuaW5pdFBhcmFtKCdpc0RpcmVjdFNlbmQnLCB0cnVlLCAnc3RyaW5nJykpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3Qgc3VicyA9IHRoaXMuYXBpQWRhcHRlclNlcnZpY2VcclxuICAgICAgICAgICAgLmV4ZWN1dGVBcGlSZXF1ZXN0KHBhcmFtZXRlckxpc3QsICcvbWVzc2FnZS90ZW1wbGF0ZScsICdHRVQnKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChyZXNwOiBBcHBSZXNwb25zZTxUZW1wbGF0ZVdBTW9kZWxbXT4pID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMudGVtcGxhdGVPcHRpb24gPSBpc0luZmluaXRlXHJcbiAgICAgICAgICAgICAgICAgICAgPyBbLi4udGhpcy50ZW1wbGF0ZU9wdGlvbiwgLi4ucmVzcC5kYXRhXVxyXG4gICAgICAgICAgICAgICAgICAgIDogcmVzcC5kYXRhO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pc0hhdmVOZXh0VGVtcGxhdGVPcHRpb24gPSByZXNwLmhhdmVOZXh0O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmdUZW1wbGF0ZU9wdGlvbiA9IGZhbHNlO1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IHRlbXBsYXRlID0gdGhpcy50ZW1wbGF0ZU9wdGlvbj8uZmluZChcclxuICAgICAgICAgICAgICAgICAgICAodCkgPT4gdC5JRCA9PT0gdGhpcy5mb3JtLmdldCgndGVtcGxhdGUnKS52YWx1ZT8uSURcclxuICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHRlbXBsYXRlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgndGVtcGxhdGUnKS5zZXRWYWx1ZSh0ZW1wbGF0ZSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmZvcm0uZ2V0KCdpc1VwbG9hZCcpLnZhbHVlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy51cGRhdGVEb3dubG9hZENTVih0aGlzLmZvcm0uZ2V0KCdpc1VwbG9hZCcpLnZhbHVlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVGVtcGxhdGUodGhpcy5mb3JtLmdldCgndGVtcGxhdGUnKS52YWx1ZSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLnN1YnNjcmliZXJzLnB1c2goc3Vicyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBpbml0UGFyYW1ldGVyKGlzQnV0dG9uOiBib29sZWFuID0gZmFsc2UsIHZhbHVlOiBzdHJpbmcgPSAnJyk6IEZvcm1Hcm91cCB7XHJcbiAgICAgICAgY29uc3QgZm9ybSA9IGlzQnV0dG9uXHJcbiAgICAgICAgICAgID8gbmV3IEZvcm1Hcm91cCh7XHJcbiAgICAgICAgICAgICAgICAgIG5hbWU6IG5ldyBGb3JtQXJyYXkoW10sIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIDogbmV3IEZvcm1Hcm91cCh7XHJcbiAgICAgICAgICAgICAgICAgIG5hbWU6IG5ldyBGb3JtQ29udHJvbChcclxuICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMuaXNSZWFkT25seU1vZGUgfHwgWyckVW5zdWJzY3JpYmVBY2NvdW50J10uaW5jbHVkZXModmFsdWUpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWRcclxuICAgICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGZvcm07XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGdldFBhcmFtSGVhZGVyKCk6IEZvcm1Hcm91cFtdIHtcclxuICAgICAgICByZXR1cm4gKHRoaXMuZm9ybS5nZXQoJ3BhcmFtSGVhZGVyJykgYXMgRm9ybUFycmF5KS5jb250cm9scyBhcyBGb3JtR3JvdXBbXTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYWRkUGFyYW1IZWFkZXIodmFsdWU6IHN0cmluZyA9ICcnKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgZm9ybSA9IHRoaXMuaW5pdFBhcmFtZXRlcihmYWxzZSwgdmFsdWUpO1xyXG4gICAgICAgICh0aGlzLmZvcm0uZ2V0KCdwYXJhbUhlYWRlcicpIGFzIEZvcm1BcnJheSkucHVzaChmb3JtKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgZ2V0UGFyYW1Cb2R5KCk6IEZvcm1Hcm91cFtdIHtcclxuICAgICAgICByZXR1cm4gKHRoaXMuZm9ybS5nZXQoJ3BhcmFtQm9keScpIGFzIEZvcm1BcnJheSkuY29udHJvbHMgYXMgRm9ybUdyb3VwW107XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFkZFBhcmFtQm9keSh2YWx1ZTogc3RyaW5nID0gJycpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBmb3JtID0gdGhpcy5pbml0UGFyYW1ldGVyKGZhbHNlLCB2YWx1ZSk7XHJcbiAgICAgICAgKHRoaXMuZm9ybS5nZXQoJ3BhcmFtQm9keScpIGFzIEZvcm1BcnJheSkucHVzaChmb3JtKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgZ2V0QnV0dG9uKCk6IEZvcm1Hcm91cFtdIHtcclxuICAgICAgICByZXR1cm4gKHRoaXMuZm9ybS5nZXQoJ3BhcmFtQnV0dG9uJykgYXMgRm9ybUFycmF5KS5jb250cm9scyBhcyBGb3JtR3JvdXBbXTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0UGFyYW1CdXR0b24oaW5kZXg6IG51bWJlcik6IEZvcm1Hcm91cFtdIHtcclxuICAgICAgICBjb25zdCBmb3JtID0gKHRoaXMuZm9ybS5nZXQoJ3BhcmFtQnV0dG9uJykgYXMgRm9ybUFycmF5KS5jb250cm9scyBhcyBGb3JtR3JvdXBbXTtcclxuICAgICAgICByZXR1cm4gKGZvcm1baW5kZXhdLmdldCgnbmFtZScpIGFzIEZvcm1BcnJheSkuY29udHJvbHMgYXMgRm9ybUdyb3VwW107XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFkZFBhcmFtQnV0dG9uKCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGZvcm0gPSB0aGlzLmluaXRQYXJhbWV0ZXIodHJ1ZSk7XHJcbiAgICAgICAgKHRoaXMuZm9ybS5nZXQoJ3BhcmFtQnV0dG9uJykgYXMgRm9ybUFycmF5KS5wdXNoKGZvcm0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBnZXRJc1RleHQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgnY2hhbm5lbCcpLnZhbHVlICYmXHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ2NoYW5uZWwnKS52YWx1ZT8udG9Mb3dlckNhc2UoKSA9PT0gJ3RleHQnXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgZ2V0SXNNZWRpYSgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdjaGFubmVsJykudmFsdWUgJiZcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgnY2hhbm5lbCcpLnZhbHVlPy50b0xvd2VyQ2FzZSgpID09PSAnbWVkaWEnXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgZ2V0SXNUZW1wbGF0ZSgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdjaGFubmVsJykudmFsdWUgJiZcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgnY2hhbm5lbCcpLnZhbHVlPy50b0xvd2VyQ2FzZSgpID09PSAndGVtcGxhdGUnXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgZ2V0SXNDYXRhbG9ndWUoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgnY2hhbm5lbCcpLnZhbHVlICYmXHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ2NoYW5uZWwnKS52YWx1ZT8udG9Mb3dlckNhc2UoKSA9PT0gJ2NhdGFsb2d1ZSdcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBnZXRJc1V0aWxpdHkoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgnY2hhbm5lbCcpLnZhbHVlICYmXHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ2NoYW5uZWwnKS52YWx1ZT8udG9Mb3dlckNhc2UoKSA9PT0gJ3V0aWxpdHknXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0TmV4dEFjY291bnRCYXRjaCgpIHtcclxuICAgICAgICBpZiAoIXRoaXMuaXNIYXZlTmV4dEFjY291bnRPcHRpb24pIHJldHVybjtcclxuXHJcbiAgICAgICAgdGhpcy5wYWdlTm9BY2NvdW50T3B0aW9uICs9IDE7XHJcbiAgICAgICAgdGhpcy5nZXRBY2NvdW50T3B0aW9uU2VydmljZSgnJywgdHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFjY291bnRTZWxlY3RlZERpc3BsYXkoXHJcbiAgICAgICAgYXR0cmlidXRlMTogV2hhdHNBcHBBY2NvdW50RHRvLFxyXG4gICAgICAgIGF0dHJpYnV0ZTI6IFdoYXRzQXBwQWNjb3VudER0b1xyXG4gICAgKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gYXR0cmlidXRlMSAmJiBhdHRyaWJ1dGUyICYmIGF0dHJpYnV0ZTEuaWQgPT0gYXR0cmlidXRlMi5pZFxyXG4gICAgICAgICAgICA/IGAke2F0dHJpYnV0ZTEubmFtZX0gKCR7YXR0cmlidXRlMS5hY2NvdW50Tm99KWBcclxuICAgICAgICAgICAgOiAnJztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0TmV4dFRlbXBsYXRlQmF0Y2goKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmlzSGF2ZU5leHRUZW1wbGF0ZU9wdGlvbikgcmV0dXJuO1xyXG5cclxuICAgICAgICB0aGlzLnBhZ2VOb1RlbXBsYXRlT3B0aW9uICs9IDE7XHJcbiAgICAgICAgdGhpcy5nZXRUZW1wbGF0ZU9wdGlvblNlcnZpY2UobnVsbCwgJycsIHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB0ZW1wbGF0ZVNlbGVjdGVkRGlzcGxheShcclxuICAgICAgICBhdHRyaWJ1dGUxOiBUZW1wbGF0ZVdBTW9kZWwsXHJcbiAgICAgICAgYXR0cmlidXRlMjogVGVtcGxhdGVXQU1vZGVsXHJcbiAgICApOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBhdHRyaWJ1dGUxICYmIGF0dHJpYnV0ZTIgJiYgYXR0cmlidXRlMS5uYW1lID09IGF0dHJpYnV0ZTIubmFtZVxyXG4gICAgICAgICAgICA/IGAke2F0dHJpYnV0ZTEubmFtZX1gXHJcbiAgICAgICAgICAgIDogJyc7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uRmlsZVNlbGVjdGVkKGV2ZW50OiBFdmVudCkge1xyXG4gICAgICAgIGNvbnN0IGZpbGU6IEZpbGVMaXN0ID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS5maWxlcztcclxuICAgICAgICBjb25zdCBhY2NlcHQgPSB0aGlzLmV4dEZpbGVBY2NlcHRlZC5zcGxpdCgnLycpO1xyXG4gICAgICAgIGxldCBtYXRjaFR5cGUgPSBhY2NlcHRbMF07XHJcblxyXG4gICAgICAgIGlmIChmaWxlLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5leHRGaWxlQWNjZXB0ZWQgPT09ICdhcHBsaWNhdGlvbi9wZGYnKSBtYXRjaFR5cGUgPSBhY2NlcHRbMV07XHJcblxyXG4gICAgICAgIGlmICghZmlsZVswXS50eXBlLmluY2x1ZGVzKG1hdGNoVHlwZSkpIHtcclxuICAgICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoJ1NvcnJ5LCB0aGUgZmlsZSB5b3UgYXJlIHVwbG9hZGluZyBpcyBub3TCoGFsbG93ZWQnKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGZpbGVbMF0uc2l6ZSA+IDEwMDAwMDAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKCdVcGxvYWQgbWVkaWEgZmFpbGVkLCBtYXggc2l6ZSAxMG1iJyk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ2ZpbGUnKS5zZXRWYWx1ZShmaWxlWzBdKTtcclxuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdmaWxlVHlwZScpLnNldFZhbHVlKCdpbWFnZScpO1xyXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ2ZpbGVOYW1lJykuc2V0VmFsdWUoZmlsZVswXS5uYW1lKTtcclxuICAgICAgICB0aGlzLmZvcm0uZ2V0KCd0YXJnZXRVUkwnKS5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ3RhcmdldFVSTCcpLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuXHJcbiAgICAgICAgaWYgKGZpbGVbMF0udHlwZS5pbmRleE9mKCd2aWRlbycpID4gLTEpIHRoaXMuZm9ybS5nZXQoJ2ZpbGVUeXBlJykuc2V0VmFsdWUoJ3ZpZGVvJyk7XHJcblxyXG4gICAgICAgIHRoaXMudXBsb2FkTWVkaWFTZXJ2aWNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSB1cGxvYWRNZWRpYVNlcnZpY2UoKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgcGFyYW1ldGVyTGlzdDogQXJyYXk8UGFyYW1ldGVyPiA9IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogJ2ZpbGUnLFxyXG4gICAgICAgICAgICAgICAgdmFsdWU6IHRoaXMuZm9ybS5nZXQoJ2ZpbGUnKS52YWx1ZSxcclxuICAgICAgICAgICAgICAgIGluOiAnZm9ybURhdGEnLFxyXG4gICAgICAgICAgICAgICAgdHlwZTogJ29iamVjdCcsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgXTtcclxuXHJcbiAgICAgICAgY29uc3Qgc3VicyA9IHRoaXMuYXBpQWRhcHRlclNlcnZpY2VcclxuICAgICAgICAgICAgLmV4ZWN1dGVBcGlSZXF1ZXN0KHBhcmFtZXRlckxpc3QsICcvbWVzc2FnZS9tZWRpYScsICdQT1NUJylcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzcDogQXBwUmVzcG9uc2U8YW55PikgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgndGFyZ2V0VVJMJykuY2xlYXJWYWxpZGF0b3JzKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCd0YXJnZXRVUkwnKS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCd0YXJnZXRVUkwnKS5zZXRWYWx1ZShyZXNwLmRhdGEudGFyZ2V0VVJMKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ2ZpbGUnKS5yZXNldCgpO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMudG9hc3RyLnN1Y2Nlc3MoJ1VwbG9hZCBtZWRpYSBzdWNjZXNzJyk7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLnN1YnNjcmliZXJzLnB1c2goc3Vicyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHVwZGF0ZVRlbXBsYXRlKHRlbXBsYXRlOiBUZW1wbGF0ZVdBTW9kZWwpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmlzU2hvd1BhcmFtZXRlciA9IGZhbHNlO1xyXG5cclxuICAgICAgICBpZiAoIXRlbXBsYXRlKSByZXR1cm47XHJcblxyXG4gICAgICAgIHRoaXMuaXNIYXZlVGVtcGxhdGVQYXJhbSA9XHJcbiAgICAgICAgICAgIHRlbXBsYXRlLmhlYWRlci5leGFtcGxlcz8ubGVuZ3RoID4gMCB8fFxyXG4gICAgICAgICAgICB0ZW1wbGF0ZS5ib2R5LmV4YW1wbGVzPy5sZW5ndGggPiAwIHx8XHJcbiAgICAgICAgICAgIHRlbXBsYXRlLmJ1dHRvbnM/Lmxlbmd0aCA+IDA7XHJcblxyXG4gICAgICAgIGlmIChbJ2ltYWdlJywgJ3ZpZGVvJywgJ2RvY3VtZW50J10uaW5jbHVkZXModGVtcGxhdGU/LmhlYWRlcj8udHlwZT8udG9Mb3dlckNhc2UoKSkpIHtcclxuICAgICAgICAgICAgdGhpcy5mb3JtXHJcbiAgICAgICAgICAgICAgICAuZ2V0KCdmaWxlTmFtZScpXHJcbiAgICAgICAgICAgICAgICAuc2V0VmFsdWUoXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRDYW1wYWlnblN0b3JhZ2U/LmdlbmVyYWxJbmZvcm1hdGlvbj8uZm9ybS5maWxlTmFtZSA/P1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdldENhbXBhaWduU3RvcmFnZT8uZ2VuZXJhbEluZm9ybWF0aW9uPy5mb3JtLnRhcmdldFVSTCA/P1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZS5oZWFkZXIudXJsXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm1cclxuICAgICAgICAgICAgICAgIC5nZXQoJ3RhcmdldFVSTCcpXHJcbiAgICAgICAgICAgICAgICAuc2V0VmFsdWUoXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRDYW1wYWlnblN0b3JhZ2U/LmdlbmVyYWxJbmZvcm1hdGlvbj8uZm9ybS50YXJnZXRVUkwgPz9cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGUuaGVhZGVyLnVybFxyXG4gICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuZmlsZVR5cGVDaGFuZ2UodGVtcGxhdGU/LmhlYWRlcj8udHlwZT8udG9Mb3dlckNhc2UoKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0ZW1wbGF0ZS5oZWFkZXIuZXhhbXBsZXM/Lmxlbmd0aCA+IDBcclxuICAgICAgICAgICAgPyB0aGlzLmZvcm0uZ2V0KCdwYXJhbUhlYWRlcicpLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZClcclxuICAgICAgICAgICAgOiB0aGlzLmZvcm0uZ2V0KCdwYXJhbUhlYWRlcicpLmNsZWFyVmFsaWRhdG9ycygpO1xyXG5cclxuICAgICAgICB0ZW1wbGF0ZS5ib2R5LmV4YW1wbGVzPy5sZW5ndGggPiAwXHJcbiAgICAgICAgICAgID8gdGhpcy5mb3JtLmdldCgncGFyYW1Cb2R5Jykuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKVxyXG4gICAgICAgICAgICA6IHRoaXMuZm9ybS5nZXQoJ3BhcmFtQm9keScpLmNsZWFyVmFsaWRhdG9ycygpO1xyXG5cclxuICAgICAgICB0ZW1wbGF0ZS5idXR0b25zPy5sZW5ndGggPiAwXHJcbiAgICAgICAgICAgID8gdGhpcy5mb3JtLmdldCgncGFyYW1CdXR0b24nKS5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpXHJcbiAgICAgICAgICAgIDogdGhpcy5mb3JtLmdldCgncGFyYW1CdXR0b24nKS5jbGVhclZhbGlkYXRvcnMoKTtcclxuXHJcbiAgICAgICAgKHRoaXMuZm9ybS5nZXQoJ3BhcmFtSGVhZGVyJykgYXMgRm9ybUFycmF5KS5jb250cm9scyA9IFtdO1xyXG4gICAgICAgICh0aGlzLmZvcm0uZ2V0KCdwYXJhbUhlYWRlcicpIGFzIEZvcm1BcnJheSkucmVzZXQoKTtcclxuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdwYXJhbUhlYWRlcicpLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICAodGhpcy5mb3JtLmdldCgncGFyYW1Cb2R5JykgYXMgRm9ybUFycmF5KS5jb250cm9scyA9IFtdO1xyXG4gICAgICAgICh0aGlzLmZvcm0uZ2V0KCdwYXJhbUJvZHknKSBhcyBGb3JtQXJyYXkpLnJlc2V0KCk7XHJcbiAgICAgICAgdGhpcy5mb3JtLmdldCgncGFyYW1Cb2R5JykudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgICh0aGlzLmZvcm0uZ2V0KCdwYXJhbUJ1dHRvbicpIGFzIEZvcm1BcnJheSkuY29udHJvbHMgPSBbXTtcclxuICAgICAgICAodGhpcy5mb3JtLmdldCgncGFyYW1CdXR0b24nKSBhcyBGb3JtQXJyYXkpLnJlc2V0KCk7XHJcbiAgICAgICAgdGhpcy5mb3JtLmdldCgncGFyYW1CdXR0b24nKS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnb3RwVmFsdWUnKS5zZXRWYWx1ZSgnJyk7XHJcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnb3RwVmFsdWUnKS5jbGVhclZhbGlkYXRvcnMoKTtcclxuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdvdHBWYWx1ZScpLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuXHJcbiAgICAgICAgY29uc3QgZm9ybVN0b3JhZ2UgPSB0aGlzLmdldENhbXBhaWduU3RvcmFnZT8uZ2VuZXJhbEluZm9ybWF0aW9uPy5mb3JtO1xyXG5cclxuICAgICAgICBpZiAodGVtcGxhdGUuY2F0ZWdvcnkgPT09ICdBVVRIRU5USUNBVElPTicpIHtcclxuICAgICAgICAgICAgdGhpcy5mb3JtXHJcbiAgICAgICAgICAgICAgICAuZ2V0KCdvdHBWYWx1ZScpXHJcbiAgICAgICAgICAgICAgICAuc2V0VmFsdWUoXHJcbiAgICAgICAgICAgICAgICAgICAgZm9ybVN0b3JhZ2U/Lm90cFZhbHVlID8/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsuLi4oZm9ybVN0b3JhZ2U/LnRlbXBsYXRlPy5ib2R5Py5leGFtcGxlcyA/PyBbXSldPy5wb3AoKSA/P1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAnJ1xyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgnb3RwVmFsdWUnKS5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdvdHBWYWx1ZScpLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRlbXBsYXRlLmhlYWRlci5leGFtcGxlcz8uZm9yRWFjaCgoZWFjaCwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5hZGRQYXJhbUhlYWRlcihcclxuICAgICAgICAgICAgICAgIGZvcm1TdG9yYWdlPy5wYXJhbUhlYWRlcj8uW2luZGV4XT8ubmFtZSA/PyBmb3JtU3RvcmFnZT8ucGFyYW1IZWFkZXI/LltpbmRleF0gPz8gJydcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGVtcGxhdGUuYm9keS5leGFtcGxlcz8uZm9yRWFjaCgoZWFjaCwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgbGV0IHBhcmFtVmFsdWUgPVxyXG4gICAgICAgICAgICAgICAgZm9ybVN0b3JhZ2U/LnBhcmFtQm9keT8uW2luZGV4XT8ubmFtZSA/PyBmb3JtU3RvcmFnZT8ucGFyYW1Cb2R5Py5baW5kZXhdID8/ICcnO1xyXG5cclxuICAgICAgICAgICAgaWYgKFsnJFVuc3Vic2NyaWJlQWNjb3VudCddLmluY2x1ZGVzKGVhY2gpKSBwYXJhbVZhbHVlID0gZWFjaDtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuYWRkUGFyYW1Cb2R5KHBhcmFtVmFsdWUpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0ZW1wbGF0ZS5idXR0b25zPy5mb3JFYWNoKChlYWNoLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmFkZFBhcmFtQnV0dG9uKCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGJ1dHRvbiA9IHRoaXMuZ2V0QnV0dG9uO1xyXG5cclxuICAgICAgICAgICAgaWYgKGVhY2guZXhhbXBsZXM/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIGVhY2guZXhhbXBsZXMuZm9yRWFjaCgoXywgcGFyYW1JbmRleCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBmb3JtID0gbnVsbDtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVhY2gudHlwZSA9PT0gJ0ZMT1cnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm0gPSB0aGlzLmluaXRQYXJhbWV0ZXIoZmFsc2UsIGVhY2guZmxvd19pZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1Nob3dQYXJhbWV0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtID0gdGhpcy5pbml0UGFyYW1ldGVyKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtU3RvcmFnZT8ucGFyYW1CdXR0b24/LltpbmRleF0/Lm5hbWU/LltwYXJhbUluZGV4XT8ubmFtZSA/P1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1TdG9yYWdlPy5wYXJhbUJ1dHRvbj8uW2luZGV4XT8ubmFtZT8uW3BhcmFtSW5kZXhdID8/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybVN0b3JhZ2U/LnBhcmFtQnV0dG9uPy5baW5kZXhdPy5bcGFyYW1JbmRleF0gPz9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgKGJ1dHRvbltidXR0b24ubGVuZ3RoIC0gMV0uZ2V0KCduYW1lJykgYXMgRm9ybUFycmF5KS5wdXNoKGZvcm0pO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBidXR0b25bYnV0dG9uLmxlbmd0aCAtIDFdLmdldCgnbmFtZScpLmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgICAgICAgICAgICAgYnV0dG9uW2J1dHRvbi5sZW5ndGggLSAxXS5nZXQoJ25hbWUnKS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdXBkYXRlTWVkaWFUeXBlKF9tZWRpYVR5cGU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIGlmIChfbWVkaWFUeXBlID09PSBFbnVtRGF0YS5NRURJQV9UWVBFX0xPQ0FUSU9OKSB0aGlzLmluaXRNYXBzO1xyXG5cclxuICAgICAgICB0aGlzLmZvcm1SZXNldCh0cnVlKTtcclxuICAgICAgICB0aGlzLmZpbGVUeXBlQ2hhbmdlKF9tZWRpYVR5cGUudG9Mb3dlckNhc2UoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBmaWxlVHlwZUNoYW5nZSh0eXBlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmV4dEZpbGVBY2NlcHRlZCA9ICdpbWFnZS8qJztcclxuXHJcbiAgICAgICAgaWYgKHR5cGUgPT09IEVudW1EYXRhLk1FRElBX1RZUEVfVklERU8udG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgICAgICB0aGlzLmV4dEZpbGVBY2NlcHRlZCA9ICd2aWRlby8qJztcclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09IEVudW1EYXRhLk1FRElBX1RZUEVfRE9DVU1FTlQudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgICAgICB0aGlzLmV4dEZpbGVBY2NlcHRlZCA9ICdhcHBsaWNhdGlvbi9wZGYnO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdXBkYXRlU2VhcmNoKHNlYXJjaFZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnBhZ2VOb1RlbXBsYXRlT3B0aW9uID0gMTtcclxuICAgICAgICB0aGlzLmdldFRlbXBsYXRlT3B0aW9uU2VydmljZShudWxsLCBzZWFyY2hWYWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHVwZGF0ZVNlYXJjaEFjY291bnQoc2VhcmNoVmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMucGFnZU5vQWNjb3VudE9wdGlvbiA9IDE7XHJcbiAgICAgICAgdGhpcy5nZXRBY2NvdW50T3B0aW9uU2VydmljZShzZWFyY2hWYWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBpbml0TWFwcygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm1hcHNBUElMb2FkZXIubG9hZCgpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnNldEN1cnJlbnRMb2NhdGlvbigpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5nZW9Db2RlciA9IG5ldyBnb29nbGUubWFwcy5HZW9jb2RlcigpO1xyXG4gICAgICAgICAgICBjb25zdCBhdXRvY29tcGxldGUgPSBuZXcgZ29vZ2xlLm1hcHMucGxhY2VzLkF1dG9jb21wbGV0ZShcclxuICAgICAgICAgICAgICAgIHRoaXMubWFwU2VhcmNoUmVmLm5hdGl2ZUVsZW1lbnRcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgYXV0b2NvbXBsZXRlLmFkZExpc3RlbmVyKCdwbGFjZV9jaGFuZ2VkJywgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwbGFjZTogZ29vZ2xlLm1hcHMucGxhY2VzLlBsYWNlUmVzdWx0ID0gYXV0b2NvbXBsZXRlLmdldFBsYWNlKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghcGxhY2UuZ2VvbWV0cnkpIHJldHVybjtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXBzLmxhdGl0dWRlID0gcGxhY2UuZ2VvbWV0cnkubG9jYXRpb24ubGF0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXBzLmxvbmdpdHVkZSA9IHBsYWNlLmdlb21ldHJ5LmxvY2F0aW9uLmxuZygpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ2xhdGl0dWRlJykuc2V0VmFsdWUodGhpcy5tYXBzLmxhdGl0dWRlKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdsb25naXR1ZGUnKS5zZXRWYWx1ZSh0aGlzLm1hcHMubG9uZ2l0dWRlKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHNldEN1cnJlbnRMb2NhdGlvbigpIHtcclxuICAgICAgICBpZiAoJ2dlb2xvY2F0aW9uJyBpbiBuYXZpZ2F0b3IpIHtcclxuICAgICAgICAgICAgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbigocG9zaXRpb24pID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5mb3JtLmdldCgnbG9uZ2l0dWRlJykudmFsdWUgJiYgIXRoaXMuZm9ybS5nZXQoJ2xhdGl0dWRlJykudmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1hcHMubGF0aXR1ZGUgPSBwb3NpdGlvbi5jb29yZHMubGF0aXR1ZGU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXBzLmxvbmdpdHVkZSA9IHBvc2l0aW9uLmNvb3Jkcy5sb25naXR1ZGU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgnbGF0aXR1ZGUnKS5zZXRWYWx1ZSh0aGlzLm1hcHMubGF0aXR1ZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ2xvbmdpdHVkZScpLnNldFZhbHVlKHRoaXMubWFwcy5sb25naXR1ZGUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG1hcmtlckRyYWdFbmQoZXZlbnQ6IGdvb2dsZS5tYXBzLk1vdXNlRXZlbnQpIHtcclxuICAgICAgICBpZiAoZXZlbnQubGF0TG5nKSB7XHJcbiAgICAgICAgICAgIHRoaXMubWFwcy5sYXRpdHVkZSA9IGV2ZW50LmxhdExuZy5sYXQoKTtcclxuICAgICAgICAgICAgdGhpcy5tYXBzLmxvbmdpdHVkZSA9IGV2ZW50LmxhdExuZy5sbmcoKTtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgnbGF0aXR1ZGUnKS5zZXRWYWx1ZSh0aGlzLm1hcHMubGF0aXR1ZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdsb25naXR1ZGUnKS5zZXRWYWx1ZSh0aGlzLm1hcHMubG9uZ2l0dWRlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHVwZGF0ZURvd25sb2FkQ1NWKGlzQ2hlY2tlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ2lzVXBsb2FkJykuc2V0VmFsdWUoaXNDaGVja2VkKTtcclxuXHJcbiAgICAgICAgaWYgKGlzQ2hlY2tlZCkge1xyXG4gICAgICAgICAgICAodGhpcy5mb3JtLmdldCgncGFyYW1IZWFkZXInKSBhcyBGb3JtQXJyYXkpLmNvbnRyb2xzID0gW107XHJcbiAgICAgICAgICAgICh0aGlzLmZvcm0uZ2V0KCdwYXJhbUhlYWRlcicpIGFzIEZvcm1BcnJheSkucmVzZXQoKTtcclxuICAgICAgICAgICAgKHRoaXMuZm9ybS5nZXQoJ3BhcmFtQm9keScpIGFzIEZvcm1BcnJheSkuY29udHJvbHMgPSBbXTtcclxuICAgICAgICAgICAgKHRoaXMuZm9ybS5nZXQoJ3BhcmFtQm9keScpIGFzIEZvcm1BcnJheSkucmVzZXQoKTtcclxuICAgICAgICAgICAgKHRoaXMuZm9ybS5nZXQoJ3BhcmFtQnV0dG9uJykgYXMgRm9ybUFycmF5KS5jb250cm9scyA9IFtdO1xyXG4gICAgICAgICAgICAodGhpcy5mb3JtLmdldCgncGFyYW1CdXR0b24nKSBhcyBGb3JtQXJyYXkpLnJlc2V0KCk7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ3BhcmFtSGVhZGVyJykuY2xlYXJWYWxpZGF0b3JzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ3BhcmFtQm9keScpLmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdwYXJhbUJ1dHRvbicpLmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdwYXJhbUhlYWRlcicpLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgncGFyYW1Cb2R5JykudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdwYXJhbUJ1dHRvbicpLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgnb3RwVmFsdWUnKS5yZXNldCgpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdvdHBWYWx1ZScpLmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdvdHBWYWx1ZScpLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy51cGRhdGVUZW1wbGF0ZSh0aGlzLmZvcm0uZ2V0KCd0ZW1wbGF0ZScpLnZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaGFuZGxlQ2hhbmdlVGVtcGxhdGUodXNlRXhpc3Rpbmc6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICBpZiAodXNlRXhpc3RpbmcpIHtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgndGVtcGxhdGUnKS5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCd0ZXh0JykucmVzZXQoKTtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgndGV4dCcpLmNsZWFyVmFsaWRhdG9ycygpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgndGV4dCcpLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgndGVtcGxhdGUnKS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgndGVtcGxhdGUnKS5yZXNldCgpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCd0ZW1wbGF0ZScpLmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCd0ZXh0Jykuc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXgoMTAyNCldKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ3RleHQnKS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ3RlbXBsYXRlJykudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaGFuZGxlQ2hhbmdlRnJvbSh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgeyBpc1VzZUV4aXN0aW5nVGVtcGxhdGUgfSA9IHRoaXMuZm9ybS52YWx1ZTtcclxuICAgICAgICBpZiAoaXNVc2VFeGlzdGluZ1RlbXBsYXRlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0VGVtcGxhdGVPcHRpb25TZXJ2aWNlKHZhbHVlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRlVGV4dCh2YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaWJlcnMuZm9yRWFjaCgoZWFjaCkgPT4gZWFjaC51bnN1YnNjcmliZSgpKTtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -41,7 +41,6 @@ import { MatTooltipModule } from '@angular/material/tooltip';
41
41
  import { catchError } from 'rxjs/internal/operators/catchError';
42
42
  import { MatButtonToggleModule } from '@angular/material/button-toggle';
43
43
  import { SegmentedMessage } from 'sms-segments-calculator';
44
- import { environment as environment$1 } from 'projects/adl-campaign-management-library-internal/src/environments/environment';
45
44
  import { DomSanitizer } from '@angular/platform-browser';
46
45
  import { SelectionModel } from '@angular/cdk/collections';
47
46
 
@@ -4098,7 +4097,7 @@ let GeneralInformationWAComponent = class GeneralInformationWAComponent {
4098
4097
  .set('Authorization', 'Bearer ' + localStorage.getItem('telin.accessToken'))
4099
4098
  .set('Access-Control-Allow-Origin', '*');
4100
4099
  this.httpClient
4101
- .post(`${environment$1.api}/message/direct-send/${(_a = (from || account)) === null || _a === void 0 ? void 0 : _a.id}`, {
4100
+ .post(`${environment.api}/message/direct-send/${(_a = (from || account)) === null || _a === void 0 ? void 0 : _a.id}`, {
4102
4101
  type: 'text',
4103
4102
  text: { body: text },
4104
4103
  }, { headers })