ezlibrary_v2 0.1.57 → 0.1.60

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.
@@ -290,16 +290,22 @@ export class AnalysisSearchComponent {
290
290
  let reqObj = {};
291
291
  reqObj['likeStr'] = e;
292
292
  reqObj['formNme'] = this.route.snapshot.params['frmnme'];
293
- reqObj['typ'] = 'vender';
293
+ reqObj['typ'] = 'vendor';
294
294
  console.log(reqObj);
295
295
  this.bis.data(reqObj, 'loadBuyer', 'marketing/search')
296
296
  .subscribe(data => {
297
- let res = data.result;
298
- this.venderList = res.buyerList.map(option => ({
299
- value: option.k,
300
- label: option.v
301
- }));
302
- this._spinnerService.hide();
297
+ if (data.status == 'SUCCESS') {
298
+ let res = data.result;
299
+ this.venderList = res.buyerList.map(option => ({
300
+ value: option.k,
301
+ label: option.v
302
+ }));
303
+ this._spinnerService.hide();
304
+ }
305
+ else {
306
+ this._spinnerService.hide();
307
+ this.toastr.error(data.message);
308
+ }
303
309
  }, error => {
304
310
  this._spinnerService.hide();
305
311
  this.toastr.error(error);
@@ -1080,4 +1086,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
1080
1086
  type: Component,
1081
1087
  args: [{ selector: 'app-analysis-search', template: "<div class=\"mt\">\r\n <div class=\"panel panel-default\">\r\n <div class=\"panel-heading\">\r\n <h3 class=\"panel-title\">Analysis Search\r\n <span class=\"f-12\">({{cs.cDate | date:'medium'}})</span>\r\n </h3>\r\n </div>\r\n </div>\r\n <div class=\"content-frame\">\r\n <div class=\"content-frame-body\" style=\"margin-left:0;\">\r\n <div class=\"panel panel-default\">\r\n <div class=\"panel-body\">\r\n <div class=\"infoSec\">\r\n <div class=\"row\">\r\n <div class=\"col-sm-12\">\r\n <form class=\"form-inline\" target=\"_blank\">\r\n <label class=\"text-capitalize lblcolor\"> <strong>Status: </strong> </label>\r\n <ul class=\"ulclass\">\r\n <li *ngFor=\"let status of statusList\">\r\n <ng-container *ngIf=\"status.k != ''\">\r\n <input id=\"{{status?.k}}\" type=\"checkbox\" name=\"anaStatus\" value=\"{{status?.v}}\"\r\n (change)=\"getVal(status, $event.target.checked);\">\r\n <label for=\"{{status?.v}}\" class=\"text-capitalize\"> &nbsp;{{status?.k}}</label>\r\n </ng-container>\r\n </li>\r\n </ul>\r\n &nbsp;\r\n <label class=\"text-capitalize lblcolor\"> <strong>Employee: </strong> </label>\r\n &nbsp;\r\n <select class=\"form-control\" name=\"employee\" [(ngModel)]=\"empId\">\r\n <option>Select </option>\r\n <option *ngFor=\"let employee of employees\" value=\"{{employee?.k}}\">{{employee?.v}}\r\n </option>\r\n </select>\r\n &nbsp;\r\n <label class=\"text-capitalize lblcolor\"> <strong>Buyer: </strong> </label>\r\n &nbsp;\r\n <div style=\"width:200px;display: inline-block;\">\r\n <ng-select style=\"z-index: 5;\" placeholder=\"Select Buyers\" [allowClear]=\"true\" [options]=\"buyers\"\r\n [(ngModel)]=\"selectedSugg\" name=\"buyer\" (filterInputChanged)=\"getBuyers($event)\"\r\n (selected)=\"onselect(selectedSugg)\">\r\n </ng-select>\r\n </div>\r\n &nbsp;\r\n <label class=\"text-capitalize lblcolor\" *ngIf=\"showvender\"> <strong>Vendor: </strong> </label>\r\n &nbsp;\r\n <div style=\"width:200px;display: inline-block;\" *ngIf=\"showvender\">\r\n <ng-select style=\"z-index: 5;\" placeholder=\"Select Vendor\" [allowClear]=\"true\" [options]=\"venderList\"\r\n [(ngModel)]=\"vender\" name=\"vender\" (filterInputChanged)=\"getVender($event)\"\r\n >\r\n </ng-select>\r\n </div>\r\n <!-- (selected)=\"getTerms(selectedSugg)\" -->\r\n </form>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <span> <strong> Period: </strong> </span>\r\n <div style=\"width: 115px;display: inline-block;\">\r\n <!-- <input type=\"number\" class=\"form-control\" value=\"1\" [(ngModel)]=\"period\" /> -->\r\n <select class=\"form-control\" [(ngModel)]=\"period\" (change)=\"onPeriodChange(period)\">\r\n <option>Select </option>\r\n <option *ngFor=\"let bi of biPeriodList\" value=\"{{bi?.k}}\">{{bi?.v}}\r\n </option>\r\n </select>\r\n </div>\r\n <div class=\"periodicsch\">\r\n <div class=\"periodicdate\">\r\n <strong>P1</strong>\r\n From <input type=\"date\" class=\"form-control\" id=\"pFrom\"\r\n (blur)=\"addDate($event.target.value,0,'p1');\">\r\n To <input type=\"date\" class=\"form-control\" id=\"pTo\" (blur)=\"addDate($event.target.value,1,'p1');\">\r\n &nbsp;&nbsp;\r\n\r\n <!-- <strong>P2</strong>\r\n From <input type=\"date\" class=\"form-control\" (change)=\"addDate($event.target.value,0,'p2');\">\r\n To <input type=\"date\" class=\"form-control\" (change)=\"addDate($event.target.value,1,'p2');\"> -->\r\n </div>\r\n\r\n <!-- <div class=\"periodicdate\">\r\n <strong>P3</strong>\r\n From <input type=\"date\" class=\"form-control\" (change)=\"addDate($event.target.value,0,'p3');\">\r\n To <input type=\"date\" class=\"form-control\" (change)=\"addDate($event.target.value,1, 'p3');\">\r\n &nbsp;&nbsp;\r\n <strong>P4</strong>\r\n From <input type=\"date\" class=\"form-control\" (change)=\"addDate($event.target.value,0,'p4');\">\r\n To <input type=\"date\" class=\"form-control\" (change)=\"addDate($event.target.value,1,'p4');\">\r\n </div> -->\r\n </div>\r\n <div class=\"periodicsch\">\r\n <strong>Sale Days</strong>\r\n <select class=\"form-control\" id=\"salePeriod\" [(ngModel)]=\"salePeriod\"\r\n (change)=onChangeSalePeriod(salePeriod)>\r\n <option *ngFor=\"let days of bi_sale_dys\" value=\"{{days.k}}\">{{days.v}}</option>\r\n </select>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"searchsec\">\r\n <div class=\"tabssec\">\r\n <ul class=\"nav nav-tabs\" style=\"margin: 10px 0;\" role=\"tablist\">\r\n <li role=\"presentation\" *ngFor=\"let attrStructure of attrStructureDtl;\"\r\n (click)=\"cs.scrollToDiv(attrStructure.grp)\"><a href=\"#{{attrStructure.grp}}\" aria-controls=\"home\"\r\n role=\"tab\" data-toggle=\"tab\">{{attrStructure.grp}}</a></li>\r\n \r\n </ul>\r\n </div>\r\n <div class=\"schcrateria\">\r\n <div style=\"margin-bottom: 10px;\" id=\"{{attrStructure.grp}}\"\r\n *ngFor=\"let attrStructure of attrStructureDtl;\">\r\n <div class=\"grpheader\">\r\n <h6>{{attrStructure.grp}}</h6>\r\n </div>\r\n <div class=\"row\">\r\n <ng-container *ngFor=\"let attcompo of attrStructure.component;let i = index\">\r\n\r\n <div id=\"{{attrStructure.grp}}\">\r\n <label class=\"control-label headers col-md-1 text-right\" *ngIf=\"attcompo.attr == 'ct'\"\r\n style=\"margin-top: 10px;\">CPS</label>\r\n <div class=\"col-md-11\" *ngIf=\"attcompo.attr == 'ct'\"\r\n style=\"overflow-x: auto;white-space: nowrap;margin-top: 10px;\">\r\n <div class=\"ck-button\">\r\n <div class=\"outChkCls\">\r\n <label style=\"margin-bottom: 0;\">\r\n <input type=\"checkbox\" id=\"one\" class=\"prntchk\" [disabled]=\"one\"\r\n (click)=\"selectEle(0 , $event.target.checked);\">\r\n <span>3EX</span>\r\n </label>\r\n </div>\r\n </div>\r\n <!-- <div class=\"ck-button\">\r\n <div class=\"outChkCls\">\r\n <label style=\"margin-bottom: 0;\">\r\n <input type=\"checkbox\" id=\"two\" class=\"prntchk\" [disabled]=\"two\" (click)=\"selectEle(1 , $event.target.checked);\">\r\n <span>2EX</span>\r\n </label>\r\n </div>\r\n </div> -->\r\n <div class=\"ck-button\">\r\n <div class=\"outChkCls\">\r\n <label style=\"margin-bottom: 0;\">\r\n <input type=\"checkbox\" id=\"thvgup\" class=\"prntchk\" [disabled]=\"thvgup\"\r\n (click)=\"selectEle(3 , $event.target.checked);\">\r\n <span><b> &uarr;</b> 3VG</span>\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n\r\n <div class=\"col-md-1\">\r\n <label style=\"margin-top:15px;\"\r\n [ngStyle]=\"{'margin-top':((attcompo.dataType == 't' && attcompo.attr=='vnm') || attcompo.dataType == 'd' || attcompo.dataType == 'n' )?'30px':'15px'}\"\r\n class=\"pull-right\">{{attcompo.print}}</label>\r\n </div>\r\n <div class=\"col-md-{{attcompo.displayType}}\"\r\n [ngStyle]=\"{'overflow-x' : attcompo.attr == 'sz' ? 'unset': 'auto'}\"\r\n style=\"margin-top: 10px;white-space: nowrap;\">\r\n <!-- <span id=\"l{{attcompo.attr}}\" class=\"button larr\" *ngIf=\"attcompo.dataType == 'c' && attcompo.attr != 'sz'\"\r\n (click)=\"leftScroll(attcompo.attr+''+attcompo.dataType)\"><i style=\"font-size: 16px;color: #3b5998;\"\r\n class=\"fa fa-chevron-left\" aria-hidden=\"true\"></i></span>\r\n <div style=\"overflow-x: auto;\" class=\"{{attcompo.attr+''+attcompo.dataType}}\" id=\"scr_{{attcompo.displayType+''+attcompo.attr+''+attcompo.dataType}}\">\r\n <ng-container *ngFor=\"let prpLst of attcompo.prpList;let i =index\">\r\n <div style=\"display: inline-block;\">\r\n <div class=\"ck-button\" *ngIf=\"attcompo.dataType == 'c' && attcompo.attr != 'sz'\" id=\"{{attcompo.attr+'_'+prpLst.sort}}\">\r\n <div class=\"outChkCls\">\r\n <label style=\"margin-bottom: 0;\">\r\n <input type=\"checkbox\" value=\"{{prpLst.sort}}\" name=\"{{prpLst.sort}}\" id=\"{{attcompo.attr+'_'+prpLst.val}}\"\r\n (click)=\"checkBoxFun(attcompo, prpLst.sort, $event.target.checked,attcompo.attr+'_'+prpLst.val)\">\r\n <span>{{prpLst.print}}</span>\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <span id=\"r{{attcompo.attr}}\" class=\"button rarr\" *ngIf=\"attcompo.dataType == 'c' && attcompo.attr != 'sz'\"\r\n (click)=\"rightScroll(attcompo.attr+''+attcompo.dataType)\"><i style=\"font-size: 16px;color: #3b5998;\"\r\n class=\"fa fa-chevron-right\" aria-hidden=\"true\"></i></span> -->\r\n <span id=\"l{{attcompo.attr}}\" class=\"button larr\"\r\n *ngIf=\"attcompo.dataType == 'c' && attcompo.attr != 'sz'\"\r\n (click)=\"leftScroll(attcompo.attr+''+attcompo.dataType)\"><i\r\n style=\"font-size: 16px;color: #3b5998;\" class=\"fa fa-chevron-left\"\r\n aria-hidden=\"true\"></i></span>\r\n <div style=\"overflow-x: hidden;\" class=\"{{attcompo.attr+''+attcompo.dataType}}\"\r\n id=\"scr_{{attcompo.displayType+''+attcompo.attr+''+attcompo.dataType}}\">\r\n <div style=\"display: inline-block;\">\r\n <div class=\"ck-button\" *ngIf=\"attcompo.dataType == 'c' && attcompo.attr != 'sz'\">\r\n <div class=\"outChkCls\">\r\n <label style=\"margin-bottom: 0;\">\r\n <input type=\"checkbox\" [checked]=\"chk\" id=\"all{{attcompo.attr}}\"\r\n (click)=\"selectAll(attcompo, $event);\">\r\n <span>All</span>\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <ng-container *ngFor=\"let prpLst of attcompo.prpList;let i =index\">\r\n <div style=\"display: inline-block;\">\r\n <div class=\"ck-button\" *ngIf=\"attcompo.dataType == 'c' && attcompo.attr != 'sz'\"\r\n id=\"{{attcompo.attr+'_'+prpLst.sort}}\">\r\n <div class=\"outChkCls\">\r\n <label style=\"margin-bottom: 0;\">\r\n <input type=\"checkbox\" value=\"{{prpLst.sort}}\" name=\"{{prpLst.sort}}\"\r\n id=\"{{attcompo.attr+'_'+prpLst.val}}\"\r\n (click)=\"checkBoxFun(attcompo, prpLst.sort, $event.target.checked,attcompo.attr+'_'+prpLst.val)\">\r\n <span>{{prpLst.print}}</span>\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <span id=\"r{{attcompo.attr}}\" class=\"button rarr\"\r\n *ngIf=\"attcompo.dataType == 'c' && attcompo.attr != 'sz'\"\r\n (click)=\"rightScroll(attcompo.attr+''+attcompo.dataType)\"><i\r\n style=\"font-size: 16px;color: #3b5998;\" class=\"fa fa-chevron-right\"\r\n aria-hidden=\"true\"></i></span>\r\n <div *ngIf=\"attcompo.attr == 'sz'\"\r\n [ngStyle]=\"{'margin-top' : attcompo.attr == 'sz' ? '-20px' : '0'}\">\r\n\r\n\r\n <!-- <ng-select placeholder=\"Select Sizes\" id=\"{{attcompo.attr}}\" [options]=\"attcompo.prpList\"\r\n [(ngModel)]=\"szprp\" name=\"{{attcompo.attr}}\" [multiple]=\"true\"\r\n (deselected)=\"multiselect(attcompo,szprp)\" (selected)=\"multiselect(attcompo,szprp)\"\r\n [allowClear]=\"true\">\r\n <ng-template #optionTemplate let-option=\"option\">\r\n <div class=\"famfamfam-flags {{option?.value.toLowerCase()}}\"></div>\r\n {{option?.label}}\r\n </ng-template>\r\n </ng-select> -->\r\n\r\n\r\n <angular2-multiselect [data]=\"attcompo.prpList\" [(ngModel)]=\"szprp\"\r\n [settings]=\"dropdownSettings\" (onSelect)=\"multiselect(attcompo,szprp)\"\r\n (onDeSelect)=\"multiselect(attcompo,szprp)\" (onSelectAll)=\"multiselect(attcompo,szprp)\"\r\n (onDeSelectAll)=\"deselect(attcompo,szprp)\">\r\n </angular2-multiselect>\r\n\r\n\r\n\r\n\r\n\r\n\r\n </div>\r\n <div style=\"overflow-x: hidden;\" *ngIf=\"attcompo.dataType == 'n'\">\r\n <div class=\"col-md-6\">\r\n <input type=\"number\" class=\"form-control form-control-sm\" id=\"{{attcompo.attr+''+0}}\"\r\n name=\"{{attcompo.attr}}\" (change)=\"additional(attcompo,$event,0, 'cwrtm')\"\r\n placeholder=\"From\">\r\n </div>\r\n <div class=\"col-md-6\" style=\"margin: 0;\">\r\n <input type=\"number\" class=\"form-control form-control-sm\" id=\"{{attcompo.attr+1}}\"\r\n name=\"{{attcompo.attr}}\" (change)=\"additional(attcompo,$event,1, 'cwrtm')\"\r\n placeholder=\"To\">\r\n </div>\r\n <!-- <span *ngIf=\"attcompo.attr == 'crtwt'\" class=\"addbtn\" (click)=\"addCwrt();\"><i [ngClass]=\"tg == true ? 'fa fa-minus' : 'fa fa-plus'\"\r\n aria-hidden=\"true\"></i></span>\r\n <div *ngIf=\"attcompo.attr == 'crtwt' && tg\">\r\n <ul class=\"additionalDiv\">\r\n <li *ngFor=\"let wtg of wtgArry;let i = index\">\r\n {{i+1}}\r\n <input type=\"text\" (change)=\"additional(wtg, $event, 0, 'cwrtc')\" style=\"border-radius: 2px;border: 1px solid #c9c9c9;height: 25px;\">\r\n &nbsp;&nbsp;&nbsp; <input type=\"text\" (change)=\"additional(wtg, $event, 1,'cwrtc')\"\r\n style=\"border-radius: 2px;border: 1px solid #c9c9c9;height: 25px;\">\r\n </li>\r\n </ul>\r\n </div> -->\r\n </div>\r\n <div *ngIf=\"attcompo.dataType == 't'\">\r\n <div>\r\n\r\n <textarea class=\"form-control form-control-sm\" id=\"{{attcompo.attr+''+0}}\"\r\n name=\"{{attcompo.attr}}\" (change)=\"singleVal(attcompo,$event.target.value, 't')\"\r\n cols=\"50\" rows=\"3\"></textarea>\r\n\r\n <!-- <input type=\"text\" id=\"{{attcompo.attr+''+0}}\" style=\"width:20%\" name=\"{{attcompo.attr}}\"\r\n (change)=\"singleVal(attcompo,$event.target.value, 't')\" class=\"form-control form-control-sm\"> -->\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- <div *ngIf=\"attcompo.dataType == 'd'\">\r\n <div>\r\n <input type=\"date\" id=\"{{attcompo.attr+''+0}}\" name=\"{{attcompo.attr}}\" (blur)=\"singleVal(attcompo,$event.target.value, 0)\"\r\n class=\"form-control form-control-sm\">\r\n </div>\r\n </div> -->\r\n\r\n\r\n <div *ngIf=\"attcompo.dataType == 'd'\">\r\n <div class=\"form-row\">\r\n <div class=\"form-group col-md-6\">\r\n <input type=\"date\" #todte id=\"{{attcompo.attr+''+0}}\" name=\"{{attcompo.attr}}\"\r\n placeholder=\"From\" class=\"form-control form-control-sm\">\r\n </div>\r\n <div class=\"form-group col-md-6\" style=\"margin: 0;\">\r\n <input type=\"date\" id=\"{{attcompo.attr+''+1}}\" name=\"{{attcompo.attr}}\"\r\n (blur)=\"onDateChange(attcompo,$event.target.value,1)\"\r\n class=\"form-control form-control-sm\" placeholder=\"To\">\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n <div *ngIf=\"(i+1)%3==0\" style=\"clear:both\"></div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n \r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"pagefooter\">\r\n <div class=\"col-md-6\">\r\n </div>\r\n <div class=\"col-md-6\">\r\n <form class=\"form-inline\">\r\n <div class=\"pull-right\">\r\n <span class=\"schCount\" *ngIf=\"count > '0'\">Count : {{count}}</span>\r\n <select class=\"form-control\" name=\"viewGrp\" [(ngModel)]=\"viewGrp\">\r\n <option>Select Group</option>\r\n <option *ngFor=\"let group of groups\" [ngValue]=\"group\">{{group.name}}</option>\r\n </select> &nbsp;\r\n <!-- <select class=\"form-control\" name=\"viewFormate\" [(ngModel)]=\"viewFormate\">\r\n <option>Select </option>\r\n <option *ngFor=\"let view of viewOptions\" value=\"{{view?.form_field}}\">{{view?.form_field_title}}\r\n </option>\r\n </select> &nbsp; -->\r\n <!-- <a class=\"btn btn-success\" (click)=\"viewResult();\" target=\"_blank\">Submit</a> -->\r\n <!-- [(ngModel)]=\"viewFormate\" -->\r\n <ng-container *ngFor=\"let view of viewOptions\">\r\n <a class=\"btn btn-success\" (click)=\"viewResult(view.form_field);\" target=\"_blank\"\r\n style=\"margin-right: 15px;\">{{view?.form_field_title}}</a>\r\n </ng-container>\r\n\r\n\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>", styles: [".ulclass{padding:0;list-style:none;display:inline-block;margin:0}.ulclass li{display:inline-block;margin:0 5px}.ulclass li label{vertical-align:middle}.pagefooter{position:fixed;bottom:0;width:100%;text-align:right;padding:10px 10px 10px 0;background:#1b1e24;z-index:99;left:0}.nav-tabs>li>a{padding:0 10px;border-top:2px solid transparent;border-bottom:2px solid transparent;font-size:12px}.nav-tabs>li.active>a{border-top:2px solid transparent;border-bottom:2px solid #3b5998}.schcrateria{margin:10px 0;height:calc(100vh - 295px);overflow:auto}.grpheader{padding:5px;background:#3b5998;color:#fff;margin:2px 0}.grpheader h6{color:#fff;margin:0}.larr{position:absolute;left:0;top:50%;transform:translateY(-50%);display:none;padding:5px;cursor:pointer}.rarr{position:absolute;right:0;top:50%;transform:translateY(-50%);display:none;padding:5px;cursor:pointer}.periodicsch{display:inline-block;margin:5px 10px 0}.periodicdate{margin-bottom:5px}.periodicdate input[type=date]{width:145px;display:inline-block}.schCount{color:#fff;margin-right:25px;font-weight:700;font-size:14px}\n"] }]
1082
1088
  }], ctorParameters: function () { return [{ type: i1.CommanServiceService }, { type: i2.BiService }, { type: i3.NgxSpinnerService }, { type: i4.ToastrService }, { type: i5.Router }, { type: i5.ActivatedRoute }]; } });
1083
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHlzaXMtc2VhcmNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V6bGliL3NyYy9saWIvYW5hbHlzaXMtc2VhcmNoL2FuYWx5c2lzLXNlYXJjaC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lemxpYi9zcmMvbGliL2FuYWx5c2lzLXNlYXJjaC9hbmFseXNpcy1zZWFyY2guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMzQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDaEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQVMsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7Ozs7QUFRaEUsTUFBTSxPQUFPLHVCQUF1QjtJQUVsQyxZQUNTLEVBQXdCLEVBQ3ZCLEdBQWMsRUFDZCxlQUFrQyxFQUNsQyxNQUFxQixFQUNyQixNQUFjLEVBQ2QsS0FBcUI7UUFMdEIsT0FBRSxHQUFGLEVBQUUsQ0FBc0I7UUFDdkIsUUFBRyxHQUFILEdBQUcsQ0FBVztRQUNkLG9CQUFlLEdBQWYsZUFBZSxDQUFtQjtRQUNsQyxXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQ3JCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUkvQixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUVqQixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLFlBQU8sR0FBRyxFQUFFLENBQUM7UUFDYixpQkFBWSxHQUFHLEVB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RCxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUUvQixJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FBQztJQUVILENBQUM7O3VJQXByQ1UsdUJBQXVCOzJIQUF2Qix1QkFBdUIsMkRDYnBDLHFoc0JBaVdROzJGRHBWSyx1QkFBdUI7a0JBTG5DLFNBQVM7K0JBQ0UscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gJ25neC10b2FzdHInO1xyXG5pbXBvcnQgeyBOZ3hTcGlubmVyU2VydmljZSB9IGZyb20gXCJuZ3gtc3Bpbm5lclwiO1xyXG5pbXBvcnQgeyBCaVNlcnZpY2UgfSBmcm9tICcuLy4uL2JpLXNlcnZpY2UvYmkuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbW1hblNlcnZpY2VTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbWFuLXNlcnZpY2UvY29tbWFuLXNlcnZpY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJvdXRlciwgQWN0aXZhdGVkUm91dGUgLFBhcmFtc30gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1hbmFseXNpcy1zZWFyY2gnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hbmFseXNpcy1zZWFyY2guY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2FuYWx5c2lzLXNlYXJjaC5jb21wb25lbnQuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEFuYWx5c2lzU2VhcmNoQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgY3M6IENvbW1hblNlcnZpY2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBiaXM6IEJpU2VydmljZSxcclxuICAgIHByaXZhdGUgX3NwaW5uZXJTZXJ2aWNlOiBOZ3hTcGlubmVyU2VydmljZSAsXHJcbiAgICBwcml2YXRlIHRvYXN0cjogVG9hc3RyU2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVxyXG4gICkgeyB9XHJcblxyXG4gIGF0dHJTdHJ1Y3R1cmVEdGw7XHJcbiAgYmlfc2FsZV9keXMgPSBbXTtcclxuICBzYWxlUGVyaW9kO1xyXG4gIHN0YXR1c0xpc3QgPSBbXTtcclxuICBzaXplUHJwID0gW107XHJcbiAgYmlQZXJpb2RMaXN0ID0gW107XHJcbiAgdmlld09wdGlvbnM7XHJcbiAgZW1wbG95ZWVzO1xyXG4gIGVtcElkO1xyXG4gIGJ1eWVycztcclxuICBzZWxlY3RlZFN1Z2c7XHJcbiAgaGVhZGVyO1xyXG4gIHNjaElkO1xyXG4gIGNvdW50O1xyXG4gIGRlZmF1bHRTdGF0dXNMaXN0O1xyXG4gIHNlbGVjdGVkU3RhdHVzID0gW107XHJcbiAgLy8gYW5hQWxsR3JwU3R0ID0gWydNYXJrZXRpbmcnLCAnU29sZCddO1xyXG4gIGFuYUFsbEdycFN0dCA9IFtdO1xyXG4gIGNoaztcclxuXHJcblxyXG4gIG5ld0Fyck9iajtcclxuICBhdHRyO1xyXG4gIGF0dHJUeXBlO1xyXG4gIGF0dHJWYWw7XHJcbiAgYXR0cnQ7XHJcbiAgYXR0clR5cGV0XHJcbiAgYXR0clZhbHQ7XHJcbiAgY2FsbEZyb20gPSAnJztcclxuICB0cm06IGFueSA9IFwiXCI7XHJcbiAgc2VsZWN0ZWRDcml0ZXJpYSA9IFtdO1xyXG4gIHNlYXJjaElkOiBhbnkgPSBbXTtcclxuICBwZXJpb2Q6IGFueSA9IDE7XHJcbiAgcDE6IGFueSA9IG5ldyBBcnJheSgyKTtcclxuICBwMiA9IG5ldyBBcnJheSgyKTtcclxuICBwMyA9IG5ldyBBcnJheSgyKTtcclxuICBwNCA9IG5ldyBBcnJheSgyKTtcclxuICB2aWV3Rm9ybWF0ZSA9ICdncmlkJztcclxuICBncm91cHMgPSBbXTtcclxuICB2aWV3R3JwO1xyXG4gIC8vIHAxZGF0ZSA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKS5zdWJzdHIoMCwgMTApO1xyXG4gIC8vIHAyZGF0ZSA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKS5zdWJzdHIoMCwgMTApO1xyXG4gIGNudCA9IDE7XHJcbiAgbW9kZnl0eHQ7XHJcbiAgbW9kaWZ5O1xyXG4gIDtcclxuICBtb2RpZnlTY2g6IGFueSA9IFtdOyBtb2RmeXN0YXRcclxuICB0ZXJtcyA9IFtdO1xyXG5cclxuICBmb3JtbmFtZTtcclxuICBkcm9wZG93bkxpc3QgPSBbXTtcclxuICBzZWxlY3RlZEl0ZW1zID0gW107XHJcbiAgZHJvcGRvd25TZXR0aW5ncyA9IHt9O1xyXG4gIHZlbmRlckxpc3Q9W107XHJcbiAgdmVuZGVyO1xyXG4gIHN6cHJwO1xyXG4gIGF0dHJpYnV0ZTtcclxuICBtb2R1bGVuYW1lO1xyXG4gIGNVcmw7XHJcbiAgc2hvd3ZlbmRlcj1mYWxzZTtcclxuICBvbkl0ZW1TZWxlY3QoaXRlbTogYW55KSB7XHJcbiAgICBjb25zb2xlLmxvZyhpdGVtKTtcclxuICAgIGNvbnNvbGUubG9nKHRoaXMuc2VsZWN0ZWRJdGVtcyk7XHJcbiAgfVxyXG4gIE9uSXRlbURlU2VsZWN0KGl0ZW06IGFueSkge1xyXG4gICAgY29uc29sZS5sb2coaXRlbSk7XHJcbiAgICBjb25zb2xlLmxvZyh0aGlzLnNlbGVjdGVkSXRlbXMpO1xyXG4gIH1cclxuICBvblNlbGVjdEFsbChpdGVtczogYW55KSB7XHJcbiAgICBjb25zb2xlLmxvZyhpdGVtcyk7XHJcbiAgfVxyXG4gIG9uRGVTZWxlY3RBbGwoaXRlbXM6IGFueSkge1xyXG4gICAgY29uc29sZS5sb2coaXRlbXMpO1xyXG4gIH1cclxuICBsb2FkQW5hbHlzaXNTZWFyY2hQYWdlKCkge1xyXG4gICB0aGlzLmZvcm1uYW1lPXRoaXMucm91dGUuc25hcHNob3QucGFyYW1zWydmcm1ubWUnXTtcclxuICAgIHRoaXMuc2hvd3ZlbmRlcj1mYWxzZTtcclxuICAgIHRoaXMuc2VhcmNoSWQ9W107XHJcbiAgICBsZXQgcmVxT2JqID0ge307XHJcbiAgICByZXFPYmpbJ2Zvcm1ObWUnXSA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1zWydmcm1ubWUnXTtcclxuICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHJlcU9iaikpO1xyXG4gICAgdGhpcy5iaXMuZGF0YShyZXFPYmosICdsb2FkJywgJ21hcmtldGluZy9zZWFyY2gnKVxyXG4gICAgICAuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gICAgICAgIHRoaXMuX3NwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICBpZiAoZGF0YS5zdGF0dXMgPT0gJ1NVQ0NFU1MnKSB7XHJcbiAgICAgICAgICBsZXQgcmVzID0gZGF0YS5yZXN1bHQ7XHJcbiAgICAgICAgICBkZWJ1Z2dlclxyXG4gICAgICAgICAgY29uc29sZS5sb2cocmVzKTtcclxuICAgICAgICAgIHRoaXMuYmlfc2FsZV9keXMgPSByZXMuYmlfc2FsZV9keXM7XHJcbiAgICAgICAgICB0aGlzLmF0dHJTdHJ1Y3R1cmVEdGwgPSByZXMuYXR0clN0cnVjdHVyZUR0bDtcclxuICAgICAgICAgIHRoaXMuYXR0clN0cnVjdHVyZUR0bC5mb3JFYWNoKGVsZTEgPT4ge1xyXG4gICAgICAgICAgICBlbGUxLmNvbXBvbmVudC5mb3JFYWNoKGVsZTIgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChlbGUyLmF0dHIgPT0gJ3N6Jykge1xyXG4gICAgICAgICAgICAgICAgZWxlMi5wcnBMaXN0LmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBzdWJPYmogPSB7fTtcclxuICAgICAgICAgICAgICAgICAgLy8gc3ViT2JqWydsYWJlbCddID0gZWxlbWVudC5wcmludDtcclxuICAgICAgICAgICAgICAgICAgLy8gc3ViT2JqWyd2YWwnXSA9IGVsZW1lbnQudmFsO1xyXG4gICAgICAgICAgICAgICAgICAvLyBzdWJPYmpbJ3ZhbHVlJ10gPSBlbGVtZW50LnNvcnQ7XHJcblxyXG4gICAgICAgICAgICAgICAgICBzdWJPYmpbJ2l0ZW1OYW1lJ10gPSBlbGVtZW50LnByaW50O1xyXG4gICAgICAgICAgICAgICAgICBzdWJPYmpbJ2lkJ10gPSBlbGVtZW50LnNvcnQ7XHJcblxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNpemVQcnAucHVzaChzdWJPYmopO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBlbGUyLnBycExpc3QgPSB0aGlzLnNpemVQcnA7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsZTIudmFsdWVzID0gW107XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLnN0YXR1c0xpc3QgPSByZXMuc3RhdHVzTGlzdDtcclxuICAgICAgICAgIHRoaXMuZ3JvdXBzID0gcmVzLmF0dHJHcmlkRm9ybWF0O1xyXG4gICAgICAgICAgdGhpcy52aWV3R3JwID0gdGhpcy5ncm91cHNbMF07XHJcbiAgICAgICAgICB0aGlzLnZpZXdPcHRpb25zID0gcmVzLnBhZ2VEZWZpbmF0aW9uLnRybnNfYnV0dG9ucztcclxuICAgICAgICAgIGxldCB2ZW5kZXIgPSByZXMucGFnZURlZmluYXRpb24uYWRkX25ld3x8W107XHJcbiAgICAgICAgICBpZih2ZW5kZXIubGVuZ3RoPjApe1xyXG4gICAgICAgICAgICB0aGlzLnNob3d2ZW5kZXI9dHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuZW1wbG95ZWVzID0gcmVzLmVtcGxveWVlTGlzdDtcclxuICAgICAgICAgIHRoaXMuYmlQZXJpb2RMaXN0ID0gcmVzLmJpX3BlcmlvZDtcclxuICAgICAgICAgIHRoaXMub25DaGFuZ2VTYWxlUGVyaW9kKDApO1xyXG4gICAgICAgICAgdGhpcy5zYWxlUGVyaW9kID0gXCIwXCI7XHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuYXR0clN0cnVjdHVyZUR0bC5sZW5ndGggIT0gbnVsbCkge1xyXG5cclxuICAgICAgICAgICAgICBsZXQgc3R0cyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ0JJYW5hU3R0JykpO1xyXG4gICAgICAgICAgICAgIGlmIChsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnQkljYWxsJykgIT0gbnVsbCAmJiB0aGlzLmF0dHJTdHJ1Y3R1cmVEdGwubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tb2RpZnlTZWFyY2hGdW4oKTtcclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgY3J0d3QgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnQkljcnR3dCcpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNydHd0ICE9IG51bGwgJiYgY3J0d3QgIT0gdW5kZWZpbmVkICYmIGNydHd0ICE9IFwiXCIpIHtcclxuICAgICAgICAgICAgICAgICAgbGV0IHd0ID0gSlNPTi5wYXJzZShjcnR3dClcclxuICAgICAgICAgICAgICAgICAgaWYgKHd0ICE9IG51bGwgJiYgd3QgIT0gdW5kZWZpbmVkICYmIHd0ICE9IFwiXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NydHd0MCcpIGFzIGFueSkudmFsdWUgPSB3dFswXTtcclxuICAgICAgICAgICAgICAgICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NydHd0MScpIGFzIGFueSkudmFsdWUgPSB3dFsxXTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IGJ5ciA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ0JJYnlyJykpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGJ5ciAhPSBudWxsICYmIGJ5ciAhPSB1bmRlZmluZWQgJiYgYnlyICE9IFwiXCIpIHtcclxuICAgICAgICAgICAgICAgICAgbGV0IGJ1eWVyTGlzdCA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICBidXllckxpc3QucHVzaChieXIpO1xyXG4gICAgICAgICAgICAgICAgICBsZXQgaWQgPSBieXJbJ3ZhbHVlJ107XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuYnV5ZXJzID0gYnV5ZXJMaXN0O1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkU3VnZyA9IGlkOy8vSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnYnlyJykpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGxldCBlbXAgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnQkllSWQnKTtcclxuICAgICAgICAgICAgICAgIGlmIChlbXAgIT0gbnVsbCAmJiBlbXAgIT0gdW5kZWZpbmVkICYmIGVtcCAhPSBcIlwiKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZW1wSWQgPSBlbXA7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBsZXQgcGZybSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdCSXBGcm9tJyk7XHJcbiAgICAgICAgICAgICAgICBpZiAocGZybSAhPSBudWxsICYmIHBmcm0gIT0gdW5kZWZpbmVkICYmIHBmcm0gIT0gXCJcIikge1xyXG4gICAgICAgICAgICAgICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BGcm9tJykgYXMgYW55KS52YWx1ZSA9IEpTT04ucGFyc2UocGZybSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IHB0byA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdCSXBUbycpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHB0byAhPSBudWxsICYmIHB0byAhPSB1bmRlZmluZWQgJiYgcHRvICE9IFwiXCIpIHtcclxuICAgICAgICAgICAgICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwVG8nKSBhcyBhbnkpLnZhbHVlID0gSlNPTi5wYXJzZShwdG8pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICBcclxuXHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IHNhbGVQID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ0JJc2FsZVBlcmlvZCcpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHNhbGVQICE9IG51bGwgJiYgc2FsZVAgIT0gdW5kZWZpbmVkICYmIHNhbGVQICE9IFwiXCIpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zYWxlUGVyaW9kID0gc2FsZVA7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IHBlcmlvZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdCSVBlcmlvZCcpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHBlcmlvZCAhPSBudWxsICYmIHBlcmlvZCAhPSB1bmRlZmluZWQgJiYgcGVyaW9kICE9IFwiXCIpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wZXJpb2QgPSBwZXJpb2Q7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgc3R0cyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ0JJYW5hU3R0JykpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHN0dHMgIT0gbnVsbCAmJiBzdHRzICE9IHVuZGVmaW5lZCAmJiBzdHRzLmxlbmd0aCA8IDEpIHtcclxuICAgICAgICAgICAgICAgICAgc3R0cy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICgoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudCkgYXMgYW55KS5jaGVja2VkID09ICdmYWxzZScpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnQpLmNsaWNrKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGxldCBzenMgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdCSXNpemUnKSlcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHN6cyAhPSBudWxsICYmIHN6cyAhPSB1bmRlZmluZWQgJiYgc3pzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnN6cHJwID0gc3pzO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoc3R0cyAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChzdHRzLmluY2x1ZGVzKCdta3QnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdNYXJrZXRpbmcnKS5jbGljaygpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIGlmIChzdHRzLmluY2x1ZGVzKCdzb2xkJykpIHtcclxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnU29sZCcpLmNsaWNrKCk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgaWYgKHN0dHMuaW5jbHVkZXMoJ2NzJykpIHtcclxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnQ29uc2lnbm1lbnQnKS5jbGljaygpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIGlmIChzdHRzLmluY2x1ZGVzKCdhc3J0JykpIHtcclxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnQXNzb3J0JykuY2xpY2soKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBpZiAoc3R0cy5pbmNsdWRlcygnbGFiJykpIHtcclxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnTGFiJykuY2xpY2soKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnTWFya2V0aW5nJykuY2xpY2soKTtcclxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdTb2xkJykuY2xpY2soKTtcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIC8vIGVsc2Uge1xyXG4gICAgICAgICAgICAgIC8vICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ01hcmtldGluZycpLmNsaWNrKCk7XHJcbiAgICAgICAgICAgICAgLy8gICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnU29sZCcpLmNsaWNrKCk7XHJcblxyXG4gICAgICAgICAgICAgIC8vIH1cclxuXHJcblxyXG4gICAgICAgICAgICAgIC8vIGlmICh0aGlzLnNlbGVjdGVkU3VnZyAhPSB1bmRlZmluZWQgfHwgdGhpcy5zZWxlY3RlZFN1Z2cgIT0gbnVsbCB8fCB0aGlzLnNlbGVjdGVkU3VnZyAhPSBcIlwiKSB7XHJcbiAgICAgICAgICAgICAgLy8gICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnQklieXInKTtcclxuICAgICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICAgICAgLy8gaWYgKHRoaXMuZW1wSWQgIT0gdW5kZWZpbmVkIHx8IHRoaXMuZW1wSWQgIT0gbnVsbCB8fCB0aGlzLmVtcElkICE9IFwiXCIpIHtcclxuICAgICAgICAgICAgICAvLyAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdCSWVJZCcpO1xyXG4gICAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgICAvLyBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnQkljcnR3dCcpO1xyXG5cclxuICAgICAgICAgICAgICAvLyBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnQklzaXplJyk7XHJcblxyXG5cclxuICAgICAgICAgICAgICB0aGlzLmFkZFNjcm9sbEJhcigpO1xyXG4gICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdCSWNhbGwnKTtcclxuICAgICAgICAgICAgICAvLy8vLy8gIHRoaXMuY2xlYXJMb2NhbFN0b3JhZ2VzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sIDUwMCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuX3NwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKGRhdGEubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgdGhpcy5fc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVycm9yKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RBbGwoYXR0Y29tcG9PYmosIGUpIHtcclxuICAgIGlmIChlLnRhcmdldC5jaGVja2VkID09IGZhbHNlKSB7XHJcbiAgICAgIGF0dGNvbXBvT2JqLnBycExpc3QubWFwKHZhbHVlID0+IHsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYXR0Y29tcG9PYmouYXR0ciArICdfJyArIHZhbHVlLnZhbCkuY2xpY2soKTsgfSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGF0dGNvbXBvT2JqLnBycExpc3QubWFwKHZhbHVlID0+IHtcclxuICAgICAgICBpZiAoYXR0Y29tcG9PYmoudmFsdWVzLmluZGV4T2YodmFsdWUuc29ydCkgIT0gLTEpIHtcclxuICAgICAgICB9IGVsc2UgeyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChhdHRjb21wb09iai5hdHRyICsgJ18nICsgdmFsdWUudmFsKS5jbGljaygpOyB9XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhZGRTY3JvbGxCYXIoKSB7XHJcbiAgICBsZXQgZGl2cyA9IChkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbaWRePVwic2NyX1wiXScpIGFzIGFueSk7XHJcbiAgICBkaXZzLmZvckVhY2goKGVsZW1lbnQsIGluZGV4KSA9PiB7XHJcbiAgICAgIGxldCBvZmZzZXR3aSA9IDA7XHJcbiAgICAgIGxldCBzY3JvbGx3aSA9IDA7XHJcbiAgICAgIGxldCBkaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50LmlkKTtcclxuICAgICAgb2Zmc2V0d2kgPSBkaXYub2Zmc2V0V2lkdGg7XHJcbiAgICAgIHNjcm9sbHdpID0gZGl2LnNjcm9sbFdpZHRoO1xyXG4gICAgICBpZiAob2Zmc2V0d2kgIT0gc2Nyb2xsd2kpIHtcclxuICAgICAgICBsZXQgcGVsZSA9IGRpdi5wYXJlbnRFbGVtZW50O1xyXG4gICAgICAgIGxldCBmY2hpbGQ6IGFueSA9IHBlbGUuZmlyc3RFbGVtZW50Q2hpbGQ7XHJcbiAgICAgICAgbGV0IGxjaGlsZDogYW55ID0gcGVsZS5sYXN0RWxlbWVudENoaWxkO1xyXG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGZjaGlsZC5pZCkuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XHJcbiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobGNoaWxkLmlkKS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcclxuICAgICAgICBwZWxlLnN0eWxlLnBhZGRpbmdMZWZ0ID0gXCIzMHB4XCI7XHJcbiAgICAgICAgcGVsZS5zdHlsZS5wYWRkaW5nUmlnaHQgPSBcIjMwcHhcIjtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbnNlbGVjdChiSWQpIHtcclxuICAgIC8vIGNvbnNvbGUubG9nKGJJZCk7XHJcbiAgICBsZXQgb2JqID0gdGhpcy5idXllcnMuZmluZCh4ID0+IHgudmFsdWUgPT0gYklkKTtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdCSWJ5cicsIEpTT04uc3RyaW5naWZ5KG9iaikpO1xyXG4gIH1cclxuXHJcbiAgZ2V0QnV5ZXJzKGVtcGxveWVlKSB7XHJcbiAgICAvLyB0aGlzLmJ1eWVycyA9IFtdO1xyXG4gICAgaWYgKGVtcGxveWVlID09IHVuZGVmaW5lZCB8fCBlbXBsb3llZSA9PSAnJykgcmV0dXJuO1xyXG4gICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqWydlbXBJZG4nXSA9IHRoaXMuZW1wSWQ7XHJcbiAgICByZXFPYmpbJ2xpa2VTdHInXSA9IGVtcGxveWVlO1xyXG4gICAgcmVxT2JqWydmb3JtTm1lJ10gPXRoaXMucm91dGUuc25hcHNob3QucGFyYW1zWydmcm1ubWUnXTtcclxuICAgIHJlcU9ialsna2V5J10gPSAnYnV5ZXJuYW1lJztcclxuICAgIHJlcU9ialsnc3R0J10gPSAnLTEnO1xyXG4gICAgY29uc29sZS5sb2cocmVxT2JqKTtcclxuICAgIHRoaXMuYmlzLmRhdGEocmVxT2JqLCAnbG9hZEJ1eWVyJywgJ21hcmtldGluZy9zZWFyY2gnKVxyXG4gICAgICAuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gICAgICAgIGxldCByZXMgPSBkYXRhLnJlc3VsdDtcclxuICAgICAgICB0aGlzLmJ1eWVycyA9IHJlcy5idXllckxpc3QubWFwKG9wdGlvbiA9PiAoe1xyXG4gICAgICAgICAgdmFsdWU6IG9wdGlvbi5rLFxyXG4gICAgICAgICAgbGFiZWw6IG9wdGlvbi52XHJcbiAgICAgICAgfSkpO1xyXG4gICAgICAgIHRoaXMuX3NwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgIHRoaXMuX3NwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnJvcik7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0VmVuZGVyKGUpIHtcclxuICAgIC8vIHRoaXMuYnV5ZXJzID0gW107XHJcbiAgICBsZXQgcmVxT2JqID0ge307XHJcbiAgICByZXFPYmpbJ2xpa2VTdHInXSA9IGVcclxuICAgIHJlcU9ialsnZm9ybU5tZSddID10aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtc1snZnJtbm1lJ107XHJcbiAgICByZXFPYmpbJ3R5cCddID0gJ3ZlbmRlcic7XHJcbiAgICBjb25zb2xlLmxvZyhyZXFPYmopO1xyXG4gICAgdGhpcy5iaXMuZGF0YShyZXFPYmosICdsb2FkQnV5ZXInLCAnbWFya2V0aW5nL3NlYXJjaCcpXHJcbiAgICAgIC5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgICAgbGV0IHJlcyA9IGRhdGEucmVzdWx0O1xyXG4gICAgICAgIHRoaXMudmVuZGVyTGlzdCA9IHJlcy5idXllckxpc3QubWFwKG9wdGlvbiA9PiAoe1xyXG4gICAgICAgICAgdmFsdWU6IG9wdGlvbi5rLFxyXG4gICAgICAgICAgbGFiZWw6IG9wdGlvbi52XHJcbiAgICAgICAgfSkpO1xyXG4gICAgICAgIHRoaXMuX3NwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgIHRoaXMuX3NwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnJvcik7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbGVmdFNjcm9sbChkaXYpIHtcclxuICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2Rpdi4nICsgZGl2KS5zY3JvbGxMZWZ0IC09IDI1MDtcclxuICB9XHJcblxyXG4gIHJpZ2h0U2Nyb2xsKGRpdikge1xyXG4gICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZGl2LicgKyBkaXYpLnNjcm9sbExlZnQgKz0gMjUwO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tCb3hGdW4oYXR0T2osIHZhbCwgc3RhdHVzLCBpZCkge1xyXG4gICAgY29uc29sZS5sb2coYXR0T2ouYXR0cik7XHJcbiAgICBpZiAoaWQgPT0gJ3RpbmdlX05vIEJHTScgJiYgc3RhdHVzID09IHRydWUpIHtcclxuICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtaWxreV9uYScpIGFzIGFueSkuY2xpY2soKTtcclxuICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0aW5nZV9CUicpIGFzIGFueSkuZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RpbmdlX0dSJykgYXMgYW55KS5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGluZ2VfTVQnKSBhcyBhbnkpLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtaWxreV9tbDEnKSBhcyBhbnkpLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtaWxreV9tbDInKSBhcyBhbnkpLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtaWxreV9tbDMnKSBhcyBhbnkpLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtaWxreV9tbDQnKSBhcyBhbnkpLmRpc2FibGVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGluZ2VfMTVAMjBAMjUnKSBhcyBhbnkpLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICcjZGRkJztcclxuICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0aW5nZV8zNUA0MEA0NUA1MEA1NScpIGFzIGFueSkuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJyNkZGQnO1xyXG4gICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RpbmdlXzYwQDYxQDYyQDYzJykgYXMgYW55KS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnI2RkZCc7XHJcbiAgICAgIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWlsa3lfNycpIGFzIGFueSkuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJyNkZGQnO1xyXG4gICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21pbGt5XzE1JykgYXMgYW55KS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnI2RkZCc7XHJcbiAgICAgIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWlsa3lfMjAnKSBhcyBhbnkpLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICcjZGRkJztcclxuICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtaWxreV8zMCcpIGFzIGFueSkuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJyNkZGQnO1xyXG4gICAgfSBlbHNlIGlmIChpZCA9PSAndGluZ2VfTm8gQkdNJyAmJiBzdGF0dXMgPT0gZmFsc2UpIHtcclxuICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtaWxreV9uYScpIGFzIGFueSkuY2xpY2soKTtcclxuICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0aW5nZV9CUicpIGFzIGFueSkuZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0aW5nZV9HUicpIGFzIGFueSkuZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0aW5nZV9NVCcpIGFzIGFueSkuZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtaWxreV9tbDEnKSBhcyBhbnkpLmRpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWlsa3lfbWwyJykgYXMgYW55KS5kaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21pbGt5X21sMycpIGFzIGFueSkuZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtaWxreV9tbDQnKSBhcyBhbnkpLmRpc2FibGVkID0gZmFsc2U7XHJcblxyXG4gICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RpbmdlXzE1QDIwQDI1JykgYXMgYW55KS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnI2ZmZic7XHJcbiAgICAgIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGluZ2VfMzVANDBANDVANTBANTUnKSBhcyBhbnkpLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICcjZmZmJztcclxuICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0aW5nZV82MEA2MUA2MkA2MycpIGFzIGFueSkuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJyNmZmYnO1xyXG4gICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21pbGt5XzcnKSBhcyBhbnkpLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICcjZmZmJztcclxuICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtaWxreV8xNScpIGFzIGFueSkuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJyNmZmYnO1xyXG4gICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21pbGt5XzIwJykgYXMgYW55KS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnI2ZmZic7XHJcbiAgICAgIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWlsa3lfMzAnKSBhcyBhbnkpLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICcjZmZmJztcclxuICAgIH1cclxuICAgIC8vIHRoaXMuYWN0aXZlID0gdHJ1ZTtcclxuICAgIC8vIGxldCBlbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncHJfJyArIHZhbCk7XHJcbiAgICAvLyBpZiAoYXR0T2ouYXR0ciA9PSAnc2gnKSB7XHJcbiAgICAvLyAgIGlmIChzdGF0dXMgPT0gdHJ1ZSkge1xyXG4gICAgLy8gICAgIGVsZS5jbGFzc0xpc3QuYWRkKFwic2VsZWN0ZWRSb3dcIik7XHJcbiAgICAvLyAgIH0gZWxzZSB7XHJcbiAgICAvLyAgICAgZWxlLmNsYXNzTGlzdC5yZW1vdmUoXCJzZWxlY3RlZFJvd1wiKTtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfVxyXG4gICAgbGV0IGZvdW5kID0gMDtcclxuICAgIGxldCBmb3VuZDIgPSAwO1xyXG4gICAgYXR0T2oudmFsdWVzLmZvckVhY2goKGVsZW1lbnQsIGluZGV4KSA9PiB7XHJcbiAgICAgIGlmIChzdGF0dXMgPT0gZmFsc2UgJiYgZWxlbWVudCA9PSB2YWwpIHtcclxuICAgICAgICBhdHRPai52YWx1ZXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FsbCcgKyBhdHRPai5hdHRyKSBhcyBhbnkpLmNoZWNrZWQgPSBmYWxzZTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH0gZWxzZSBpZiAoc3RhdHVzID09IHRydWUgJiYgZWxlbWVudCA9PSB2YWwpIHtcclxuICAgICAgICBmb3VuZCA9IDE7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMubW9kaWZ5U2NoLmZvckVhY2goKGVsZW1lbnQsIGluZGV4KSA9PiB7XHJcbiAgICAgIGlmIChzdGF0dXMgPT0gZmFsc2UgJiYgZWxlbWVudCA9PSBpZCkge1xyXG4gICAgICAgIHRoaXMubW9kaWZ5U2NoLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9IGVsc2UgaWYgKHN0YXR1cyA9PSB0cnVlICYmIGVsZW1lbnQgPT0gaWQpIHtcclxuICAgICAgICBmb3VuZDIgPSAxO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBpZiAoc3RhdHVzKSB7XHJcbiAgICAgIGlmIChhdHRPai5hdHRyID09ICdzeicpIHtcclxuICAgICAgICBhdHRPai52YWx1ZXMucHVzaCh2YWxbdmFsLmxlbmd0aCAtIDFdKTtcclxuICAgICAgICB0aGlzLm1vZGlmeVNjaC5wdXNoKGlkW2lkLmxlbmd0aCAtIDFdKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBhdHRPai52YWx1ZXMucHVzaCh2YWwpO1xyXG4gICAgICAgIHRoaXMubW9kaWZ5U2NoLnB1c2goaWQpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnQkltb2RpZnlTZWFyY2hTdHJpbmcnLCB0aGlzLm1vZGlmeVNjaCk7XHJcblxyXG4gICAgLy8gY29uc29sZS5sb2coYXR0T2osIHZhbCwgc3RhdHVzLCBpZCk7XHJcbiAgICB0aGlzLmF0dHJNYWtlcignYycpO1xyXG4gIH1cclxuXHJcbiAgb25lO1xyXG4gIHR3bztcclxuICB0aHJlZTtcclxuICB0aHZndXA7XHJcbiAgZXhSYXRlO1xyXG4gIHNlbGVjdEVsZShjLCBzKSB7XHJcbiAgICBpZiAoYyA9PSAwKSB7XHJcbiAgICAgIGlmIChzID09IHRydWUpIHtcclxuICAgICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2N0X2V4JykgYXMgYW55KS5jbGljaygpO1xyXG4gICAgICAgIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncG9fZXgnKSBhcyBhbnkpLmNsaWNrKCk7XHJcbiAgICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzeV9leCcpIGFzIGFueSkuY2xpY2soKTtcclxuICAgICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJ0d29cIikgYXMgYW55KS5jaGVja2VkID0gZmFsc2U7XHJcbiAgICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwidGhyZWVcIikgYXMgYW55KS5jaGVja2VkID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy50d28gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMudGhyZWUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMudGh2Z3VwID0gdHJ1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2N0X2V4JykgYXMgYW55KS5jbGljaygpO1xyXG4gICAgICAgIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncG9fZXgnKSBhcyBhbnkpLmNsaWNrKCk7XHJcbiAgICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzeV9leCcpIGFzIGFueSkuY2xpY2soKTtcclxuICAgICAgICB0aGlzLnR3byA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudGhyZWUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnRodmd1cCA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKGMgPT0gMSkge1xyXG4gICAgICBpZiAocyA9PSB0cnVlKSB7XHJcbiAgICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjdF9leCcpIGFzIGFueSkuY2xpY2soKTtcclxuICAgICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BvX2V4JykgYXMgYW55KS5jbGljaygpO1xyXG4gICAgICAgIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIm9uZVwiKSBhcyBhbnkpLmNoZWNrZWQgPSBmYWxzZTtcclxuICAgICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJ0aHJlZVwiKSBhcyBhbnkpLmNoZWNrZWQgPSBmYWxzZTtcclxuICAgICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJ0aHZndXBcIikgYXMgYW55KS5jaGVja2VkID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5vbmUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMudGhyZWUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMudGh2Z3VwID0gdHJ1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2N0X2V4JykgYXMgYW55KS5jbGljaygpO1xyXG4gICAgICAgIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncG9fZXgnKSBhcyBhbnkpLmNsaWNrKCk7XHJcbiAgICAgICAgdGhpcy5vbmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnRocmVlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy50aHZndXAgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChjID09IDIpIHtcclxuICAgICAgaWYgKHMgPT0gdHJ1ZSkge1xyXG4gICAgICAgIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY3RfdmcnKSBhcyBhbnkpLmNsaWNrKCk7XHJcbiAgICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwb192ZycpIGFzIGFueSkuY2xpY2soKTtcclxuICAgICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N5X3ZnJykgYXMgYW55KS5jbGljaygpO1xyXG4gICAgICAgIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIm9uZVwiKSBhcyBhbnkpLmNoZWNrZWQgPSBmYWxzZTtcclxuICAgICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJ0d29cIikgYXMgYW55KS5jaGVja2VkID0gZmFsc2U7XHJcbiAgICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwidGh2Z3VwXCIpIGFzIGFueSkuY2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMub25lID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnR3byA9IHRydWU7XHJcbiAgICAgICAgdGhpcy50aHZndXAgPSB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY3RfdmcnKSBhcyBhbnkpLmNsaWNrKCk7XHJcbiAgICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwb192ZycpIGFzIGFueSkuY2xpY2soKTtcclxuICAgICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N5X3ZnJykgYXMgYW55KS5jbGljaygpO1xyXG4gICAgICAgIHRoaXMub25lID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy50d28gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnRodmd1cCA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKGMgPT0gMykge1xyXG4gICAgICBpZiAocyA9PSB0cnVlKSB7XHJcbiAgICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjdF9leCcpIGFzIGFueSkuY2xpY2soKTtcclxuICAgICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BvX2V4JykgYXMgYW55KS5jbGljaygpO1xyXG4gICAgICAgIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3lfZXgnKSBhcyBhbnkpLmNsaWNrKCk7XHJcbiAgICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjdF92ZycpIGFzIGFueSkuY2xpY2soKTtcclxuICAgICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BvX3ZnJykgYXMgYW55KS5jbGljaygpO1xyXG4gICAgICAgIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3lfdmcnKSBhcyBhbnkpLmNsaWNrKCk7XHJcbiAgICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwib25lXCIpIGFzIGFueSkuY2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICAgIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInR3b1wiKSBhcyBhbnkpLmNoZWNrZWQgPSBmYWxzZTtcclxuICAgICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJ0aHJlZVwiKSBhcyBhbnkpLmNoZWNrZWQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm9uZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy50d28gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMudGhyZWUgPSB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY3RfZXgnKSBhcyBhbnkpLmNsaWNrKCk7XHJcbiAgICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwb19leCcpIGFzIGFueSkuY2xpY2soKTtcclxuICAgICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N5X2V4JykgYXMgYW55KS5jbGljaygpO1xyXG4gICAgICAgIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY3RfdmcnKSBhcyBhbnkpLmNsaWNrKCk7XHJcbiAgICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwb192ZycpIGFzIGFueSkuY2xpY2soKTtcclxuICAgICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N5X3ZnJykgYXMgYW55KS5jbGljaygpO1xyXG4gICAgICAgIHRoaXMub25lID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy50d28gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnRocmVlID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgc2luZ2xlVmFsKGF0dE9qLCB2YWwsIGkpIHtcclxuXHJcbiAgICBpZiAoaSA9PSBcInRcIikge1xyXG4gICAgICBsZXQgc3BhY2VUb2NvbW1hID0gdmFsLnJlcGxhY2UoL1sgLF0rL2csIFwiLFwiKTtcclxuICAgICAgbGV0IG5ld0xpbmVUb0NvbW1hID0gc3BhY2VUb2NvbW1hLnJlcGxhY2UoL1xcbi9nLCBcIixcIik7XHJcbiAgICAgIGxldCBwbGluZXMgPSBuZXdMaW5lVG9Db21tYS5zcGxpdCgnLCcpO1xyXG4gICAgICBwbGluZXMgPSBwbGluZXMuZmlsdGVyKHYgPT4gdiAhPSAnJyk7XHJcbiAgICAgIHBsaW5lcyA9IHBsaW5lcy5maWx0ZXIodiA9PiB2ICE9ICcgJyk7XHJcbiAgICAgIGF0dE9qLnZhbHVlcyA9IFsuLi5wbGluZXNdO1xyXG4gICAgICB0aGlzLmF0dHJNYWtlcignYycpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGlmICh2YWwgIT0gJycpIHtcclxuICAgICAgYXR0T2oudmFsdWVzLnB1c2godmFsKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGF0dE9qLnZhbHVlcy5zcGxpY2UoaSwgMSk7XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZyhhdHRPaik7XHJcbiAgICB0aGlzLmF0dHJNYWtlcigndCcpO1xyXG4gIH1cclxuXHJcbiAgb25EYXRlQ2hhbmdlKGF0dHJPYmosIHZhbCwgaSkge1xyXG4gICAgbGV0IGF0dHIgPSBhdHRyT2JqLmF0dHI7XHJcbiAgICBsZXQgZnJtSWQgPSBhdHRyICsgMDtcclxuICAgIGxldCBmcm1WYWwgPSAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZnJtSWQpIGFzIGFueSkudmFsdWU7XHJcbiAgICBhdHRyT2JqLnZhbHVlcy5wdXNoKGZybVZhbCk7XHJcblxyXG4gICAgYXR0ck9iai52YWx1ZXMucHVzaCh2YWwpOyAvL3RvdmFsdWVcclxuXHJcblxyXG4gICAgdGhpcy5hdHRyTWFrZXIoJ3QnKTtcclxuICB9XHJcblxyXG4gIG1vZGlmeVNlYXJjaEZ1bigpIHtcclxuICAgIC8vIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdNZm9vZ2xlJyk7XHJcbiAgICAvLyBsZXQgYnlyID0gIEpTT04ucGFyc2UoIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdieXInKSk7XHJcblxyXG4gICAgLy8gdGhpcy50cm0gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndHJtJyk7XHJcbiAgICB2YXIgZXZlbnQgPSBuZXcgRXZlbnQoJ2NoYW5nZScpO1xyXG4gICAgaWYgKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdCSWNhbGwnKSAhPSBudWxsID09IG51bGwpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdCSW1vZGlmeVNjaFR4dCcpICE9IG51bGwpIHtcclxuICAgICAgICB0aGlzLm1vZGZ5dHh0LmZvckVhY2goKGVsZSwgaW5kZXgpID0+IHtcclxuICAgICAgICAgIGlmIChlbGUuaWQgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlLmlkKSBhcyBhbnkpLnZhbHVlID0gZWxlLnZhbFxyXG4gICAgICAgICAgICBsZXQgaWQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGUuaWQpO1xyXG4gICAgICAgICAgICBpZC5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMubW9kaWZ5LmZvckVhY2goKGVsZSwgaW5kZXgpID0+IHtcclxuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGUpLmNsaWNrKCk7XHJcbiAgICAgICAgaWYgKGluZGV4ICsgMSA9PSB0aGlzLm1vZGlmeS5sZW5ndGgpIHtcclxuICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdCSWNhbGwnKTtcclxuICAgICAgICAgIC8vIHNldFRpbWVvdXQoZnVuY3Rpb24gcmVtb3ZlbG9jYWxzKCkge1xyXG4gICAgICAgICAgLy8gICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnbW9kaWZ5U2VhcmNoU3RyaW5nJyk7XHJcbiAgICAgICAgICAvLyAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdtb2RpZnlTY2hUeHQnKTtcclxuICAgICAgICAgIC8vICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ21vZGlmeXN0YXQnKTtcclxuICAgICAgICAgIC8vIH0sIDUwMClcclxuICAgICAgICB9XHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ0JJY2FsbCcpOyAgLy8gZm9yIHJlc2V0dGluZyBhZnRlciBtb2RpZnkgc2VhcmNoXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG4gIHJhbmdlKGF0dE9qLCB2YWwsIGluZGV4KSB7XHJcbiAgICBsZXQgdHh0T2JqID0ge31cclxuICAgIGxldCB2YWx1ID0gdmFsLnRhcmdldC52YWx1ZTtcclxuICAgIGxldCBmaXJzdCA9IGF0dE9qLnZhbHVlc1swXTtcclxuICAgIGxldCBzZWNvbmQgPSBhdHRPai52YWx1ZXNbMV07XHJcbiAgICAvLyBjb25zb2xlLmxvZyhzZWNvbmQpO1xyXG4gICAgLy8gaWYgKGluZGV4ID09IDAgJiYgc2Vjb25kID09IHVuZGVmaW5lZCkge1xyXG4gICAgLy8gICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQob3BwaWQpIGFzIGFueSkudmFsdWUgPSB2YWx1O1xyXG4gICAgLy8gICBhdHRPai52YWx1ZXNbaW5kZXhdID0gdmFsdTtcclxuICAgIC8vICAgYXR0T2oudmFsdWVzW29wcF0gPSB2YWx1O1xyXG4gICAgLy8gfSBlbHNlIGlmIChpbmRleCA9PSAxICYmIGZpcnN0ID09IHVuZGVmaW5lZCkge1xyXG4gICAgLy8gICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQob3BwaWQpIGFzIGFueSkudmFsdWUgPSB2YWx1O1xyXG4gICAgLy8gICBhdHRPai52YWx1ZXNbaW5kZXhdID0gdmFsdTtcclxuICAgIC8vICAgYXR0T2oudmFsdWVzW29wcF0gPSB2YWx1O1xyXG4gICAgLy8gfSBlbHNlIHtcclxuICAgIC8vICAgYXR0T2oudmFsdWVzW2luZGV4XSA9IHZhbHU7XHJcbiAgICAvLyB9XHJcbiAgICAvLyBhdHRPai52YWx1ZXNbaW5kZXhdID0gdmFsdTtcclxuICAgIGlmICh2YWx1ICE9ICcnKSB7XHJcbiAgICAgIGF0dE9qLnZhbHVlc1tpbmRleF0gPSB2YWx1O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgYXR0T2oudmFsdWVzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICB9XHJcbiAgICAvLyBjb25zb2xlLmxvZyhhdHRPai52YWx1ZXMpO1xyXG4gICAgLy8gaWYgKHZhbC50YXJnZXQudmFsdWUgPT0gJycpIHtcclxuICAgIC8vICAgdGhpcy5tb2RpZnlUeHQuZm9yRWFjaCgoZWxlbWVudCwgaW5kZXgpID0+IHtcclxuICAgIC8vICAgICBpZiAoZWxlbWVudC5pZCA9PSBpZCkge1xyXG4gICAgLy8gICAgICAgdGhpcy5tb2RpZnlUeHQuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIC8vICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdtb2RpZnlTY2hUeHQnLCBKU09OLnN0cmluZ2lmeSh0aGlzLm1vZGlmeVR4dCkpO1xyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgfSk7XHJcbiAgICAvLyB9IGVsc2Uge1xyXG4gICAgLy8gICB0eHRPYmpbJ2lkJ10gPSBpZDtcclxuICAgIC8vICAgdHh0T2JqWyd2YWwnXSA9IGF0dE9qLnZhbHVlc1tpbmRleF07XHJcbiAgICAvLyAgIHRoaXMubW9kaWZ5VHh0LnB1c2godHh0T2JqKTtcclxuICAgIC8vICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ21vZGlmeVNjaFR4dCcsIEpTT04uc3RyaW5naWZ5KHRoaXMubW9kaWZ5VHh0KSk7XHJcbiAgICAvLyB9XHJcbiAgICB0aGlzLmF0dHJNYWtlcignYycpO1xyXG4gIH1cclxuXHJcbiAgYWRkaXRpb25hbChhdHRPaiwgdmFsLCBpbmRleCwgY2FsbCkge1xyXG4gICAgdGhpcy5jYWxsRnJvbSA9IGNhbGw7XHJcbiAgICBsZXQgdHh0T2JqID0ge31cclxuICAgIGxldCB2YWx1ID0gdmFsLnRhcmdldC52YWx1ZTtcclxuICAgIGxldCBmaXJzdCA9IGF0dE9qLnZhbHVlc1swXTtcclxuICAgIGxldCBzZWNvbmQgPSBhdHRPai52YWx1ZXNbMV07XHJcbiAgICBpZiAodmFsdSAhPSAnJykge1xyXG4gICAgICBhdHRPai52YWx1ZXNbaW5kZXhdID0gdmFsdTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGF0dE9qLnZhbHVlcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBmY3cgPSAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NydHd0MCcpIGFzIGFueSkudmFsdWU7XHJcbiAgICBsZXQgdGN3ID0gKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjcnR3dDEnKSBhcyBhbnkpLnZhbHVlO1xyXG5cclxuICAgIC8vIGlmIChhdHRPai52YWx1ZXMubGVuZ3RoID09IDIpIHtcclxuICAgIGlmIChmY3cgIT0gbnVsbCAmJiBmY3cgIT0gdW5kZWZpbmVkICYmIGZjdyAhPSBcIlwiICYmIHRjdyAhPSBudWxsICYmIHRjdyAhPSB1bmRlZmluZWQgJiYgdGN3ICE9IFwiXCIpIHtcclxuXHJcblxyXG4gICAgICAvLyBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnQkljcnR3dCcsIEpTT04uc3RyaW5naWZ5KGF0dE9qLnZhbHVlcykpO1xyXG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnQkljcnR3dCcsIEpTT04uc3RyaW5naWZ5KFtmY3csIHRjd10pKTtcclxuXHJcbiAgICAgIHRoaXMuYXR0ck1ha2VyKCdjJyk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgbXVsdGlzZWxlY3QoYXR0T2osIHZhbCkge1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3NpemUnLCB2YWwpO1xyXG4gICAgYXR0T2oudmFsdWVzID0gW107XHJcbiAgICB2YXIgdGVtcEFyciA9IFtdO1xyXG4gICAgdmFsLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgIGlmIChlbGVtZW50ICE9ICcnICYmIGVsZW1lbnQgIT0gbnVsbCkge1xyXG4gICAgICAgIGlmIChhdHRPai52YWx1ZXMuaW5kZXhPZih2YWwpICE9IC0xKSB7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIC8vIGF0dE9qLnZhbHVlcy5wdXNoKGVsZW1lbnQpO1xyXG4gICAgICAgICAgYXR0T2oudmFsdWVzLnB1c2goZWxlbWVudC5pZCk7XHJcbiAgICAgICAgICB0ZW1wQXJyLnB1c2goZWxlbWVudCk7XHJcbiAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnQklzaXplJywgSlNPTi5zdHJpbmdpZnkodGVtcEFycikpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmF0dHJNYWtlcignYycpO1xyXG4gIH1cclxuXHJcbiAgZGVzZWxlY3QoYXR0T2osIHZhbCkge1xyXG4gICAgYXR0T2oudmFsdWVzID0gW107XHJcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnQklzaXplJyk7XHJcbiAgICB0aGlzLmF0dHJNYWtlcignYycpO1xyXG4gIH1cclxuXHJcbiAgYXR0ck1ha2VyKGMpIHtcclxuICAgIGlmIChjID09ICdjJykge1xyXG4gICAgICB0aGlzLmF0dHIgPSAnJztcclxuICAgICAgdGhpcy5hdHRyVHlwZSA9ICcnO1xyXG4gICAgICB0aGlzLmF0dHJWYWwgPSAnJztcclxuICAgICAgdGhpcy5hdHRyU3RydWN0dXJlRHRsLmZvckVhY2goZWxlMSA9PiB7XHJcbiAgICAgICAgZWxlMS5jb21wb25lbnQuZm9yRWFjaChlbGUyID0+IHtcclxuICAgICAgICAgIGlmIChlbGUyLnZhbHVlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXR0ciArPSBlbGUyLmF0dHIgKyBcIiNcIjtcclxuICAgICAgICAgICAgdGhpcy5hdHRyVHlwZSArPSBlbGUyLmRhdGFUeXBlICsgXCIjXCI7XHJcbiAgICAgICAgICAgIGlmKGVsZTIuZGF0YVR5cGU9PSdkJylcclxuICAgICAgICAgICAgdGhpcy5hdHRyVmFsICs9IGVsZTIudmFsdWVzLmpvaW4oXCJAXCIpLnJlcGxhY2UoLy0vZywgJycpICsgXCIjXCI7XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgdGhpcy5hdHRyVmFsICs9IGVsZTIudmFsdWVzLmpvaW4oXCJAXCIpICsgXCIjXCI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmIChjID09ICd0Jykge1xyXG4gICAgICB0aGlzLmF0dHIgPSAnJztcclxuICAgICAgdGhpcy5hdHRyVHlwZSA9ICcnO1xyXG4gICAgICB0aGlzLmF0dHJWYWwgPSAnJztcclxuICAgICAgdGhpcy5hdHRyU3RydWN0dXJlRHRsLmZvckVhY2goZWxlMSA9PiB7XHJcbiAgICAgICAgZWxlMS5jb21wb25lbnQuZm9yRWFjaChlbGUyID0+IHtcclxuICAgICAgICAgIGlmIChlbGUyLnZhbHVlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIC8vIHRoaXMuYXR0ciArPSBlbGUyLmF0dHIgKyBcIiNcIjtcclxuICAgICAgICAgICAgLy8gdGhpcy5hdHRyVHlwZSArPSBlbGUyLmRhdGFUeXBlICsgXCIjXCI7XHJcbiAgICAgICAgICAgIC8vIHRoaXMuYXR0clZhbCArPSBlbGUyLnZhbHVlc1swXS5zcGxpdCgnICcpLmpvaW4oJ0AnKSArIFwiI1wiO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5hdHRyICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuYXR0ciArPSBlbGUyLmF0dHIgKyBcIiNcIjtcclxuICAgICAgICAgICAgICB0aGlzLmF0dHJUeXBlICs9IGVsZTIuZGF0YVR5cGUgKyBcIiNcIjtcclxuICAgICAgICAgICAgICB0aGlzLmF0dHJWYWwgKz0gZWxlMi52YWx1ZXMuam9pbihcIkBcIikucmVwbGFjZSgvLS9nLCAnJykgKyBcIiNcIjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLmF0dHIgPSBlbGUyLmF0dHIgKyBcIiNcIjtcclxuICAgICAgICAgICAgICB0aGlzLmF0dHJUeXBlID0gZWxlMi5kYXRhVHlwZSArIFwiI1wiO1xyXG4gICAgICAgICAgICAgIHRoaXMuYXR0clZhbCA9IGVsZTIudmFsdWVzLmpvaW4oXCJAXCIpLnJlcGxhY2UoLy0vZywgJycpICsgXCIjXCI7XHJcblxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhlbGUyLnZhbHVlcyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgY29uc29sZS5sb2codGhpcy5hdHRyLCB0aGlzLmF0dHJUeXBlLCB0aGlzLmF0dHJWYWwpO1xyXG4gIH1cclxuXHJcbiAgZ2V0VmFsKHYsIHMpIHtcclxuICAgIGlmIChzID09IHRydWUpIHtcclxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRTdGF0dXMuaW5kZXhPZih2KSAhPSAtMSkge1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRTdGF0dXMucHVzaCh2KVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgaW5kZXggPSB0aGlzLnNlbGVjdGVkU3RhdHVzLmluZGV4T2Yodik7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRTdGF0dXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNldFN0dCh2LCBzKVxyXG5cclxuXHJcbiAgICBjb25zb2xlLmxvZyh0aGlzLnNlbGVjdGVkU3RhdHVzKTtcclxuXHJcbiAgfVxyXG4gIGFuYUFsbEdycFN0dExCTCA9IFtdO1xyXG4gIHNldFN0dCh2LCBzKSB7XHJcbiAgICBpZiAocyA9PSB0cnVlKSB7XHJcbiAgICAgIGlmICh0aGlzLmFuYUFsbEdycFN0dC5pbmRleE9mKHYua2V5KSAhPSAtMSkge1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMuYW5hQWxsR3JwU3R0LnB1c2godi5rZXkpO1xyXG4gICAgICAgIHRoaXMuYW5hQWxsR3JwU3R0TEJMLnB1c2godi5sYWJlbCk7XHJcblxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgYW5haW5kZXggPSB0aGlzLmFuYUFsbEdycFN0dC5pbmRleE9mKHYua2V5KTtcclxuICAgICAgbGV0IGFuYWxibGluZGV4ID0gdGhpcy5hbmFBbGxHcnBTdHRMQkwuaW5kZXhPZih2LmxhYmVsKTtcclxuICAgICAgdGhpcy5hbmFBbGxHcnBTdHRMQkwuc3BsaWNlKGFuYWxibGluZGV4LCAxKTtcclxuICAgICAgdGhpcy5hbmFBbGxHcnBTdHQuc3BsaWNlKGFuYWluZGV4LCAxKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ0JJYW5hU3R0JywgSlNPTi5zdHJpbmdpZnkodGhpcy5hbmFBbGxHcnBTdHQpKTtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdCSWFuYVN0dExCTCcsIEpTT04uc3RyaW5naWZ5KHRoaXMuYW5hQWxsR3JwU3R0TEJMKSk7XHJcblxyXG4gICAgY29uc29sZS5sb2codGhpcy5hbmFBbGxHcnBTdHQpO1xyXG5cclxuICB9XHJcblxyXG4gIHNvbGRTdGF0dXMgPSBbXTtcclxuICBvdGhlclN0YXR1cyA9IFtdO1xyXG5cclxuICBwYXR0ciA9ICcnO1xyXG4gIHBhdHRyVHlwZSA9ICcnO1xyXG4gIHBhdHRyVmFsID0gJyc7XHJcbiAgZmlyc3Q7XHJcbiAgc2Vjb25kO1xyXG4gIGdQZnJvbTtcclxuICBnUHRvO1xyXG4gIGFkZERhdGUodmFsLCBpbmRleCwgY2FsbCkge1xyXG4gICAgaWYgKGluZGV4ID09IDApIHtcclxuICAgICAgdGhpcy5maXJzdCA9IG5ldyBEYXRlKHZhbCk7XHJcbiAgICAgIHRoaXMuZ1Bmcm9tID0gdmFsO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWNvbmQgPSBuZXcgRGF0ZSh2YWwpO1xyXG4gICAgICB0aGlzLmdQdG8gPSB2YWw7XHJcbiAgICB9XHJcbiAgICB0aGlzLnBhdHRyID0gJyc7XHJcbiAgICB0aGlzLnBhdHRyVHlwZSA9ICcnO1xyXG4gICAgLy8gdGhpcy5wYXR0clZhbCA9ICcnO1xyXG4gICAgdGhpcy5wMVxyXG4gICAgaWYgKHZhbCAhPSAnJyAmJiB2YWwgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLnBhdHRyID0gJ3NhbF9kdGUnO1xyXG4gICAgICB0aGlzLnBhdHRyVHlwZSA9ICdkJztcclxuICAgICAgaWYgKGNhbGwgPT0gJ3AxJykge1xyXG4gICAgICAgIHRoaXMucDFbaW5kZXhdID0gdmFsLnJlcGxhY2UoLy0vZywgJycpO1xyXG4gICAgICAgIHRoaXMucGF0dHJWYWwgPSB0aGlzLnAxLmpvaW4oXCJAXCIpO1xyXG4gICAgICB9IGVsc2UgaWYgKGNhbGwgPT0gJ3AyJykge1xyXG4gICAgICAgIHRoaXMucDJbaW5kZXhdID0gdmFsLnJlcGxhY2UoLy0vZywgJycpO1xyXG4gICAgICAgIHRoaXMucGF0dHJWYWwgKz0gdGhpcy5wMi5qb2luKFwiQFwiKSArICd+JztcclxuICAgICAgfSBlbHNlIGlmIChjYWxsID09ICdwMycpIHtcclxuICAgICAgICB0aGlzLnAzW2luZGV4XSA9IHZhbC5yZXBsYWNlKC8tL2csICcnKTtcclxuICAgICAgICB0aGlzLnBhdHRyVmFsICs9IHRoaXMucDMuam9pbihcIkBcIikgKyAnfic7XHJcbiAgICAgIH0gZWxzZSBpZiAoY2FsbCA9PSAncDQnKSB7XHJcbiAgICAgICAgdGhpcy5wNFtpbmRleF0gPSB2YWwucmVwbGFjZSgvLS9nLCAnJyk7XHJcbiAgICAgICAgdGhpcy5wYXR0clZhbCArPSB0aGlzLnA0LmpvaW4oXCJAXCIpICsgJ34nO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBjb25zb2xlLmxvZyh0aGlzLnBhdHRyVmFsKTtcclxuICAgIHRoaXMuYXR0ck1ha2VyKCdjJyk7XHJcblxyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2VTYWxlUGVyaW9kKGRheXMpIHtcclxuICAgIC8vIHRoaXMucGVyaW9kID0gMTtcclxuICAgIGxldCBkdCA9IG5ldyBEYXRlKCk7XHJcbiAgICBkdC5zZXREYXRlKGR0LmdldERhdGUoKSAtIGRheXMpO1xyXG4gICAgbGV0IG1vbnRoID0gJycgKyAoZHQuZ2V0TW9udGgoKSArIDEpLFxyXG4gICAgICBkYXkgPSAnJyArIGR0LmdldERhdGUoKSxcclxuICAgICAgeWVhciA9IGR0LmdldEZ1bGxZZWFyKCk7XHJcbiAgICBpZiAobW9udGgubGVuZ3RoIDwgMikgbW9udGggPSAnMCcgKyBtb250aDtcclxuICAgIGlmIChkYXkubGVuZ3RoIDwgMikgZGF5ID0gJzAnICsgZGF5O1xyXG4gICAgbGV0IGJhY2tEdCA9IFt5ZWFyLCBtb250aCwgZGF5XS5qb2luKCctJyk7XHJcblxyXG4gICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwRnJvbScpIGFzIGFueSkudmFsdWUgPSBiYWNrRHQ7XHJcblxyXG5cclxuICAgIGxldCBkID0gbmV3IERhdGUoKSxcclxuICAgICAgdG1vbnRoID0gJycgKyAoZC5nZXRNb250aCgpICsgMSksXHJcbiAgICAgIHRkYXkgPSAnJyArIGQuZ2V0RGF0ZSgpLFxyXG4gICAgICB0eWVhciA9IGQuZ2V0RnVsbFllYXIoKTtcclxuICAgIGlmICh0bW9udGgubGVuZ3RoIDwgMikgdG1vbnRoID0gJzAnICsgdG1vbnRoO1xyXG4gICAgaWYgKHRkYXkubGVuZ3RoIDwgMikgdGRheSA9ICcwJyArIHRkYXk7XHJcbiAgICBsZXQgdGRhdGUgPSBbdHllYXIsIHRtb250aCwgdGRheV0uam9pbignLScpO1xyXG4gICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwVG8nKSBhcyBhbnkpLnZhbHVlID0gdGRhdGU7XHJcblxyXG5cclxuICAgIHRoaXMuYWRkRGF0ZShiYWNrRHQsIDAsICdwMScpO1xyXG4gICAgdGhpcy5hZGREYXRlKHRkYXRlLCAxLCAncDEnKTtcclxuXHJcblxyXG4gIH1cclxuXHJcbiAgdmlld1Jlc3VsdCh0eXBlKSB7XHJcbiBcclxuICAgIGlmICh0eXBlID09ICdncmlkJykge1xyXG4gICAgICB0aGlzLmdldFNjaFJlc3VsdCgnZycpO1xyXG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndmlld1R5cGUnLCAnZ3JpZFZpZXcnKTtcclxuICAgICAgaWYgKHRoaXMudmlld0dycCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnYW5hR3JwVHlwZScsIEpTT04uc3RyaW5naWZ5KHRoaXMudmlld0dycCkpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT0gJ3BhY2tldFZpZXcnKSB7XHJcbiAgICAgIHRoaXMuZ2V0U2NoUmVzdWx0KCdwJyk7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd2aWV3VHlwZScsICdsaXN0VmlldycpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZW1wSWQgIT0gbnVsbCAmJiB0aGlzLmVtcElkICE9IHVuZGVmaW5lZCAmJiB0aGlzLmVtcElkICE9IFwiXCIpIHtcclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ0JJZUlkJywgdGhpcy5lbXBJZCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGlmICh0aGlzLnNhbGVQZXJpb2QgIT0gdW5kZWZpbmVkICYmIHRoaXMuc2FsZVBlcmlvZCAhPSBudWxsICYmIHRoaXMuc2FsZVBlcmlvZCAhPSBcIlwiKSB7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdCSXNhbGVQZXJpb2QnLCB0aGlzLnNhbGVQZXJpb2QpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvLyBpZiAodGhpcy5wZXJpb2QgIT0gdW5kZWZpbmVkICYmIHRoaXMucGVyaW9kICE9IG51bGwgJiYgdGhpcy5wZXJpb2QgIT0gXCJcIikge1xyXG4gICAgLy8gICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnQklQZXJpb2QnLCB0aGlzLnNhbGVQZXJpb2QpO1xyXG4gICAgLy8gfVxyXG5cclxuICAgXHJcblxyXG5cclxuICB9XHJcblxyXG4gIG9hYyA9IHt9O1xyXG4gIGdldFNjaFJlc3VsdCh2aWV3KSB7XHJcbiAgICBcclxuICAgIGxldCBmcm1kdCA9IChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncEZyb20nKSBhcyBhbnkpLnZhbHVlO1xyXG4gICAgbGV0IHRvZHQgPSAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BUbycpIGFzIGFueSkudmFsdWU7XHJcblxyXG4gICAgbGV0IGZyb21EYXRlOiBhbnkgPSBuZXcgRGF0ZShmcm1kdCk7XHJcbiAgICBsZXQgdG9EYXRlOiBhbnkgPSBuZXcgRGF0ZSh0b2R0KTtcclxuICAgIFxyXG4gICBcclxuICAgIGxldCBkaWZmRGF5czogYW55ID0gTWF0aC5yb3VuZChNYXRoLmFicygoZnJvbURhdGUgLSB0b0RhdGUpIC8gKDI0ICogNjAgKiA2MCAqIDEwMDApKSk7XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZGlmZicsIGRpZmZEYXlzKTtcclxuXHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnc3R0JywgSlNPTi5zdHJpbmdpZnkodGhpcy5kZWZhdWx0U3RhdHVzTGlzdCkpO1xyXG4gICAgaWYgKHRoaXMub2FjICYmIHRoaXMub2FjICE9IG51bGwgJiYgT2JqZWN0LmtleXModGhpcy5vYWMpLmxlbmd0aCA+IDApIHtcclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ0JJYWN3dCcsIEpTT04uc3RyaW5naWZ5KHRoaXMub2FjKSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNlbGVjdGVkU3RhdHVzLmZvckVhY2goZWxlMSA9PiB7XHJcbiAgICAgIGxldCBsS2V5ID0gKGVsZTEuaykudG9Mb3dlckNhc2UoKTtcclxuICAgICAgbGV0IGxWYWwgPSBlbGUxLnY7XHJcbiAgICAgIGlmIChsS2V5ID09ICdzb2xkJykge1xyXG4gICAgICAgIHRoaXMuc29sZFN0YXR1cyA9IFsuLi5sVmFsLnNwbGl0KCldO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGxldCB0ZW1wID0gdGhpcy5hcnJheUNvbnZlcnNpb24obFZhbCk7XHJcbiAgICAgICAgdGhpcy5vdGhlclN0YXR1cyA9IHRoaXMub3RoZXJTdGF0dXMuY29uY2F0KHRlbXApO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIFxyXG4gICAgdGhpcy5nZXRTY2hJZCh0aGlzLm90aGVyU3RhdHVzLCB2aWV3KTtcclxuICB9XHJcblxyXG4gIG9uUGVyaW9kQ2hhbmdlKHBlcmlvZCkge1xyXG4gICAgdGhpcy5wZXJpb2QgPSBwZXJpb2Q7XHJcbiAgfVxyXG5cclxuICBnZXRTY2hJZChzdGF0dXMsIHZpZXcpIHtcclxuXHJcbiAvLyBkZWJ1Z2dlclxyXG4gICAgLy8gbGV0IGZyb21EYXRlOiBhbnkgPSBuZXcgRGF0ZSh0aGlzLmZpcnN0LmdldEZ1bGxZZWFyKCksIHRoaXMuZmlyc3QuZ2V0TW9udGgoKSwgdGhpcy5maXJzdC5nZXREYXRlKCkpO1xyXG4gICAgLy8gbGV0IHRvRGF0ZTogYW55ID0gbmV3IERhdGUodGhpcy5zZWNvbmQuZ2V0RnVsbFllYXIoKSwgdGhpcy5zZWNvbmQuZ2V0TW9udGgoKSwgdGhpcy5zZWNvbmQuZ2V0RGF0ZSgpKTtcclxuICAgIC8vIGxldCBmcm1kdCA9IChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncEZyb20nKSBhcyBhbnkpLnZhbHVlO1xyXG4gICAgLy8gbGV0IHRvZHQgPSAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BUbycpIGFzIGFueSkudmFsdWU7XHJcblxyXG4gICAgLy8gbGV0IGRpZmZEYXlzOiBhbnkgPSBNYXRoLnJvdW5kKE1hdGguYWJzKChmcm1kdCAtIHRvZHQpIC8gKDI0ICogNjAgKiA2MCAqIDEwMDApKSk7XHJcbiAgICAvLyBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZGlmZicsIGRpZmZEYXlzKTtcclxuXHJcbiAgICBsZXQgY3J0ZnJtID0gKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjcnR3dDAnKSBhcyBhbnkpLnZhbHVlO1xyXG4gICAgbGV0IGNydHRvID0gKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjcnR3dDEnKSBhcyBhbnkpLnZhbHVlO1xyXG5cclxuICAgIGlmIChjcnRmcm0gIT0gbnVsbCAmJiBjcnRmcm0gIT0gdW5kZWZpbmVkICYmIGNydGZybSAhPSBcIlwiICYmIGNydHRvICE9IG51bGwgJiYgY3J0dG8gIT0gdW5kZWZpbmVkICYmIGNydHRvICE9IFwiXCIgJiYgY3J0ZnJtID4gMCAmJiBjcnR0byA+IDApIHtcclxuICAgICAgY3J0ZnJtID0gcGFyc2VGbG9hdChjcnRmcm0pO1xyXG4gICAgICBjcnR0byA9IHBhcnNlRmxvYXQoY3J0dG8pO1xyXG4gICAgICB0aGlzLmF0dHJTdHJ1Y3R1cmVEdGwuZm9yRWFjaChlbGUxID0+IHtcclxuICAgICAgICBlbGUxLmNvbXBvbmVudC5mb3JFYWNoKGVsZTIgPT4ge1xyXG4gICAgICAgICAgaWYgKGVsZTIuYXR0ciA9PSAnY3J0d3QnKSB7XHJcbiAgICAgICAgICAgIGVsZTIudmFsdWVzID0gW2NydGZybSwgY3J0dG9dO1xyXG4gICAgICAgICAgICAvLyB0aGlzLmF0dHIgKz0gZWxlMi5hdHRyICsgXCIjXCI7XHJcbiAgICAgICAgICAgIC8vIHRoaXMuYXR0clR5cGUgKz0gZWxlMi5kYXRhVHlwZSArIFwiI1wiO1xyXG4gICAgICAgICAgICAvLyB0aGlzLmF0dHJWYWwgKz0gZWxlMi52YWx1ZXMuam9pbihcIkBcIikgKyBcIiNcIjtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5hdHRyTWFrZXIoJ2MnKTtcclxuXHJcbiAgICB9XHJcblxyXG5cclxuICAgZGVidWdnZXJcclxuICAgIGNvbnNvbGUubG9nKFwic3RhdHVzXCIsc3RhdHVzKTtcclxuICAgIGxldCByZXFPYmogPSB7fTtcclxuICAgIHJlcU9ialsnZm9ybU5tZSddID10aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtc1snZnJtbm1lJ107XHJcbiAgICByZXFPYmpbJ2NvdW50J10gPSAnTic7XHJcbiAgICBpZih0aGlzLmF0dHIuaW5kZXhPZigndm5tJyk9PS0xKVxyXG4gICAgICByZXFPYmpbJ3N0YXR1c0xpc3QnXSA9IHN0YXR1cztcclxuICAgICAgaWYodGhpcy5tb2R1bGVuYW1lPT0naW53YXJkJyl7XHJcbiAgICAgIHRoaXMuYXR0cj10aGlzLmF0dHIrXCJwdXIjXCI7XHJcbiAgICAgIHRoaXMuYXR0clR5cGU9dGhpcy5hdHRyVHlwZStcImMjXCI7XHJcbiAgICAgIHRoaXMuYXR0clZhbD10aGlzLmF0dHJWYWwrXCI2MCNcIjtcclxuICAgICAgfVxyXG4gICAgaWYgKHN0YXR1cy5sZW5ndGggIT0gMCkge1xyXG4gICAgIFxyXG4gICAgICByZXFPYmpbJ2F0dHInXSA9IHRoaXMuYXR0ci5lbmRzV2l0aCgnIycpID8gdGhpcy5hdHRyLnNsaWNlKDAsIC0xKSA6IHRoaXMuYXR0cjtcclxuICAgICAgcmVxT2JqWydhdHRyVHlwZSddID0gdGhpcy5hdHRyVHlwZS5lbmRzV2l0aCgnIycpID8gdGhpcy5hdHRyVHlwZS5zbGljZSgwLCAtMSkgOiB0aGlzLmF0dHJUeXBlO1xyXG4gICAgICByZXFPYmpbJ2F0dHJWYWwnXSA9IHRoaXMuYXR0clZhbC5lbmRzV2l0aCgnIycpID8gdGhpcy5hdHRyVmFsLnNsaWNlKDAsIC0xKSA6IHRoaXMuYXR0clZhbDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZ2V0U29sZFNjaElkKHRoaXMuc29sZFN0YXR1cywgdmlldyk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnNvbGUubG9nKHJlcU9iaik7XHJcbiAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShyZXFPYmopKTtcclxuXHJcbiAgICB0aGlzLl9zcGlubmVyU2VydmljZS5zaG93KCk7XHJcbiAgICB0aGlzLmJpcy5kYXRhKHJlcU9iaiwgJ3NlYXJjaENvdW50JywgJ21hcmtldGluZy9zZWFyY2gnKVxyXG4gICAgICAuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcclxuXHJcbiAgICAgICAgY29uc29sZS5sb2cocmVzcG9uc2UpO1xyXG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gJ1NVQ0NFU1MnKSB7XHJcbiAgICAgICAgICB0aGlzLl9zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgICBsZXQgcmVzdWx0ID0gcmVzcG9uc2UucmVzdWx0O1xyXG4gICAgICAgICAgdGhpcy5zY2hJZCA9IHJlc3VsdC5zZWFyY2hJZG47XHJcbiAgICAgICAgICB0aGlzLnNjaElkID0gJyc7XHJcbiAgICAgICAgICBpZih0aGlzLmF0dHIuaW5kZXhPZigndm5tJyk9PS0xKVxyXG4gICAgICAgICAgdGhpcy5zZWFyY2hJZC5wdXNoKHJlc3BvbnNlLnNlYXJjaElkbik7XHJcbiAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaElkPVtdO1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaElkLnB1c2gocmVzcG9uc2Uuc2VhcmNoSWRuKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChzdGF0dXMubGVuZ3RoICE9IDApIHtcclxuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3NyY0lkbnMnLCB0aGlzLnNlYXJjaElkKTtcclxuICAgICAgICAgICAgaWYgKHZpZXcgPT0gJ2cnKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuc29sZFN0YXR1cy5sZW5ndGggIT0gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRTb2xkU2NoSWQodGhpcy5zb2xkU3RhdHVzLCB2aWV3KTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMubW9kdWxlbmFtZSsnL2FuYWx5c2lzLXJlc3VsdC8nK3RoaXMucm91dGUuc25hcHNob3QucGFyYW1zWydmcm1ubWUnXV0pO1xyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodmlldyA9PSAncCcpIHtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5zb2xkU3RhdHVzLmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdldFNvbGRTY2hJZCh0aGlzLnNvbGRTdGF0dXMsIHZpZXcpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy5tb2R1bGVuYW1lKycvcGt0LWxpc3QvJyt0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtc1snZnJtbm1lJ11dKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5fc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gIH1cclxuICBnZXRTb2xkU2NoSWQoc3RhdHVzLCB2aWV3KSB7XHJcblxyXG4gICAgbGV0IGNydGZybSA9IChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY3J0d3QwJykgYXMgYW55KS52YWx1ZTtcclxuICAgIGxldCBjcnR0byA9IChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY3J0d3QxJykgYXMgYW55KS52YWx1ZTtcclxuXHJcbiAgICBpZiAoY3J0ZnJtICE9IG51bGwgJiYgY3J0ZnJtICE9IHVuZGVmaW5lZCAmJiBjcnRmcm0gIT0gXCJcIiAmJiBjcnR0byAhPSBudWxsICYmIGNydHRvICE9IHVuZGVmaW5lZCAmJiBjcnR0byAhPSBcIlwiICYmIGNydGZybSA+IDAgJiYgY3J0dG8gPiAwKSB7XHJcbiAgICAgIGNydGZybSA9IHBhcnNlRmxvYXQoY3J0ZnJtKTtcclxuICAgICAgY3J0dG8gPSBwYXJzZUZsb2F0KGNydHRvKTtcclxuICAgICAgdGhpcy5hdHRyU3RydWN0dXJlRHRsLmZvckVhY2goZWxlMSA9PiB7XHJcbiAgICAgICAgZWxlMS5jb21wb25lbnQuZm9yRWFjaChlbGUyID0+IHtcclxuICAgICAgICAgIGlmIChlbGUyLmF0dHIgPT0gJ2NydHd0Jykge1xyXG4gICAgICAgICAgICBlbGUyLnZhbHVlcyA9IFtjcnRmcm0sIGNydHRvXTtcclxuICAgICAgICAgICAgLy8gdGhpcy5hdHRyICs9IGVsZTIuYXR0ciArIFwiI1wiO1xyXG4gICAgICAgICAgICAvLyB0aGlzLmF0dHJUeXBlICs9IGVsZTIuZGF0YVR5cGUgKyBcIiNcIjtcclxuICAgICAgICAgICAgLy8gdGhpcy5hdHRyVmFsICs9IGVsZTIudmFsdWVzLmpvaW4oXCJAXCIpICsgXCIjXCI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmF0dHJNYWtlcignYycpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnQklQZXJpb2QnLCB0aGlzLnBlcmlvZCk7XHJcbiAgICAvLyBpZiAodGhpcy5wT2JqICE9IG51bGwgJiYgdGhpcy5wT2JqICE9IHt9ICYmIHRoaXMuc2NoSWQucE9iaiAhPSB1bmRlZmluZWQpIHtcclxuICAgIC8vICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ0JJcEZyb20nLCBKU09OLnN0cmluZ2lmeSh0aGlzLnBPYmopKTtcclxuICAgIC8vIH1cclxuICAgIGNvbnNvbGUubG9nKHN0YXR1cyk7XHJcbiAgICBsZXQgcmVxT2JqID0ge307XHJcbiAgICByZXFPYmpbJ2Zvcm1ObWUnXSA9dGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXNbJ2ZybW5tZSddO1xyXG5cclxuICAgIC8vIGlmICh0aGlzLnNlbGVjdGVkU3VnZyAhPSB1bmRlZmluZWQpIHtcclxuICAgIC8vICAgcmVxT2JqWydidXllcklkbiddID0gdGhpcy5zZWxlY3RlZFN1Z2c7XHJcbiAgICAvLyB9XHJcblxyXG4gICAgcmVxT2JqWydjb3VudCddID0gJ04nO1xyXG4gICAgcmVxT2JqWydzdGF0dXNMaXN0J10gPSBzdGF0dXM7XHJcbiAgICBpZiAoc3RhdHVzLmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgIGRlYnVnZ2VyXHJcbiAgICAgIGlmICh0aGlzLnBhdHRyICE9ICcnKSB7XHJcbiAgICAgICAgbGV0IHBmcm0gPSAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BGcm9tJykgYXMgYW55KS52YWx1ZTtcclxuICAgICAgICBsZXQgcHRvID0gKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwVG8nKSBhcyBhbnkpLnZhbHVlO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiaW5kZXh2bm1cIix0aGlzLmF0dHIuaW5kZXhPZihcInZubVwiKSlcclxuICAgICAgICBpZiAodGhpcy5wYXR0ciA9PSAnc2FsX2R0ZScgJiYgdGhpcy5hdHRyLmluZGV4T2YoJ3NhbF9kdGUnKSA9PS0xICYmIHRoaXMuYXR0ci5pbmRleE9mKFwidm5tXCIpPT0tMSkge1xyXG4gICAgICAgICAgdGhpcy5hdHRyICs9IHRoaXMucGF0dHI7XHJcbiAgICAgICAgICB0aGlzLmF0dHJUeXBlICs9IHRoaXMucGF0dHJUeXBlO1xyXG5cclxuICAgICAgICAgIGxldCBwMSA9IHBmcm0ucmVwbGFjZSgvLS9nLCAnJyk7XHJcbiAgICAgICAgICBsZXQgcDIgPSBwdG8ucmVwbGFjZSgvLS9nLCAnJyk7XHJcblxyXG5cclxuICAgICAgICAgIHRoaXMuYXR0clZhbCArPSBwMSArICdAJyArIHAyO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuYXR0ci5pbmRleE9mKFwidm5tXCIpPT0tMSAgJiYgdGhpcy5wYXR0ciAhPSAnc2FsX2R0ZScgICYmIHRoaXMucGF0dHIgIT0gJyNzYWxfZHRlJykge1xyXG4gICAgICAgICAgdGhpcy5hdHRyICs9IHRoaXMucGF0dHI7XHJcbiAgICAgICAgICB0aGlzLmF0dHJUeXBlICs9IHRoaXMucGF0dHJUeXBlO1xyXG4gICAgICAgICAgdGhpcy5hdHRyVmFsICs9IHRoaXMucGF0dHJWYWw7XHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgLy8gaWYgKHRoaXMuZ1Bmcm9tICE9IG51bGwgJiYgdGhpcy5nUGZyb20gIT0gXCJcIiAmJiB0aGlzLmdQZnJvbSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAvLyAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdCSXBGcm9tJywgSlNPTi5zdHJpbmdpZnkodGhpcy5nUGZyb20pKTtcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgLy8gaWYgKHRoaXMuZ1B0byAhPSBudWxsICYmIHRoaXMuZ1B0byAhPSBcIlwiICYmIHRoaXMuZ1B0byAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAvLyAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdCSXBUbycsIEpTT04uc3RyaW5naWZ5KHRoaXMuZ1B0bykpO1xyXG4gICAgICAgIC8vIH1cclxuXHJcblxyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdCSXBGcm9tJywgSlNPTi5zdHJpbmdpZnkocGZybSkpO1xyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdCSXBUbycsIEpTT04uc3RyaW5naWZ5KHB0bykpO1xyXG5cclxuXHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRTdWdnICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHRoaXMuYXR0ciArPSAnI3NhbF9ieXInO1xyXG4gICAgICAgIHRoaXMuYXR0clR5cGUgKz0gJyN0JztcclxuICAgICAgICB0aGlzLmF0dHJWYWwgKz0gJyMnICsgdGhpcy5zZWxlY3RlZFN1Z2c7XHJcblxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5lbXBJZCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAvL3JlcU9ialsnZW1wSWRuJ10gPSB0aGlzLmVtcElkO1xyXG4gICAgICAgIHRoaXMuYXR0ciArPSAnI3NhbF9lbXAnO1xyXG4gICAgICAgIHRoaXMuYXR0clR5cGUgKz0gJyN0JztcclxuICAgICAgICB0aGlzLmF0dHJWYWwgKz0gJyMnICsgdGhpcy5lbXBJZDtcclxuXHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ0JJRW1wJywgSlNPTi5zdHJpbmdpZnkodGhpcy5lbXBJZCkpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXFPYmpbJ2F0dHInXSA9IHRoaXMuYXR0ci5lbmRzV2l0aCgnIycpID8gdGhpcy5hdHRyLnNsaWNlKDAsIC0xKSA6IHRoaXMuYXR0cjtcclxuICAgICAgcmVxT2JqWydhdHRyVHlwZSddID0gdGhpcy5hdHRyVHlwZS5lbmRzV2l0aCgnIycpID8gdGhpcy5hdHRyVHlwZS5zbGljZSgwLCAtMSkgOiB0aGlzLmF0dHJUeXBlO1xyXG4gICAgICByZXFPYmpbJ2F0dHJWYWwnXSA9IHRoaXMuYXR0clZhbC5lbmRzV2l0aCgnIycpID8gdGhpcy5hdHRyVmFsLnNsaWNlKDAsIC0xKSA6IHRoaXMuYXR0clZhbDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuc2VhcmNoSWQ9dGhpcy5zZWFyY2hJZHx8W107XHJcbiAgICBjb25zb2xlLmxvZyhyZXFPYmopO1xyXG4gICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkocmVxT2JqKSk7XHJcbiAgICB2YXIgaXNFeGN1dGUgPXRydWU7XHJcbiAgICBpZih0aGlzLmF0dHIuaW5kZXhPZihcInZubVwiKSE9LTEgJiYgdGhpcy5zZWFyY2hJZC5sZW5ndGg+MClcclxuICAgICAgaXNFeGN1dGUgPWZhbHNlO1xyXG4gICAgaWYoaXNFeGN1dGUpe1xyXG4gICAgdGhpcy5fc3Bpbm5lclNlcnZpY2Uuc2hvdygpO1xyXG4gICAgdGhpcy5iaXMuZGF0YShyZXFPYmosICdzZWFyY2hDb3VudCcsICdtYXJrZXRpbmcvc2VhcmNoJylcclxuICAgICAgLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2cocmVzcG9uc2UpO1xyXG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gJ1NVQ0NFU1MnKSB7XHJcbiAgICAgICAgICB0aGlzLl9zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgICBsZXQgcmVzdWx0ID0gcmVzcG9uc2UucmVzdWx0O1xyXG4gICAgICAgICAgdGhpcy5zY2hJZCA9IHJlc3VsdC5zZWFyY2hJZG47XHJcbiAgICAgICAgICAvL3RoaXMuc2NoSWQgPSAnJztcclxuICAgICAgICAgIHRoaXMuY250Kys7XHJcbiAgICAgICAgICB0aGlzLnNlYXJjaElkLnB1c2gocmVzcG9uc2Uuc2VhcmNoSWRuKTtcclxuICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdzcmNJZG5zJywgdGhpcy5zZWFyY2hJZCk7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcInZpZXdcIiwgdmlldyk7XHJcbiAgICAgICAgICBpZiAodmlldyA9PSAnZycpIHtcclxuXHJcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt0aGlzLm1vZHVsZW5hbWUrJy9hbmFseXNpcy1yZXN1bHQvJyt0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtc1snZnJtbm1lJ11dKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAodmlldyA9PSAncCcpIHtcclxuXHJcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt0aGlzLm1vZHVsZW5hbWUrJy9wa3QtbGlzdC8nK3RoaXMucm91dGUuc25hcHNob3QucGFyYW1zWydmcm1ubWUnXV0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLl9zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihyZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcblxyXG4gICAgfWVsc2V7XHJcbiAgICAgIGlmICh2aWV3ID09ICdnJykge1xyXG5cclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy5tb2R1bGVuYW1lKycvYW5hbHlzaXMtcmVzdWx0LycrdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXNbJ2ZybW5tZSddXSk7XHJcbiAgICAgIH0gZWxzZSBpZiAodmlldyA9PSAncCcpIHtcclxuXHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMubW9kdWxlbmFtZSsnL3BrdC1saXN0LycrdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXNbJ2ZybW5tZSddXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIFxyXG4gIH1cclxuXHJcbiAgYXJyYXlDb252ZXJzaW9uID0gdmFsdWUgPT4gdmFsdWUuc3BsaXQoKTtcclxuXHJcblxyXG4gIGNsZWFyTG9jYWxTdG9yYWdlcygpIHtcclxuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdCSVBlcmlvZCcpO1xyXG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ0JJYWN3dCcpO1xyXG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ0JJYW5hU3R0Jyk7XHJcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnQklhbmFTdHRMQkwnKTtcclxuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdCSW1vZGlmeVNlYXJjaFN0cmluZycpO1xyXG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ0JJcEZyb20nKTtcclxuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdCSXBUbycpO1xyXG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ0JJc2FsZVBlcmlvZCcpO1xyXG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ3N0dCcpO1xyXG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2RpZmYnKTtcclxuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdCSWVJZCcpO1xyXG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ0JJRW1wJyk7XHJcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnQklieXInKTtcclxuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdCSWNhbGwnKTtcclxuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdCSUxlZ2VuZHMnKTtcclxuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdCSWNydHd0Jyk7XHJcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnQkktUEtUX0dST1VQX0JZJyk7XHJcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnQkktZ3JpZEF2ZycpOyBcclxuICB9XHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnJvdXRlLnBhcmFtcy5zdWJzY3JpYmUoKHBhcmFtczogUGFyYW1zKSA9PiB7XHJcbiAgICB0aGlzLmRyb3Bkb3duU2V0dGluZ3MgPSB7XHJcbiAgICAgIGVuYWJsZUZpbHRlclNlbGVjdEFsbDogZmFsc2UsXHJcbiAgICAgIHNpbmdsZVNlbGVjdGlvbjogZmFsc2UsXHJcbiAgICAgIHRleHQ6IFwiU2VsZWN0IHNpemVzXCIsXHJcbiAgICAgIHNlbGVjdEFsbFRleHQ6ICdTZWxlY3QgQWxsJyxcclxuICAgICAgdW5TZWxlY3RBbGxUZXh0OiAnVW5TZWxlY3QgQWxsJyxcclxuICAgICAgZW5hYmxlU2VhcmNoRmlsdGVyOiB0cnVlLFxyXG4gICAgICBjbGFzc2VzOiBcIm15Y2xhc3MgY3VzdG9tLWNsYXNzXCIsXHJcbiAgICAgIGVzY2FwZVRvQ2xvc2U6IHRydWVcclxuICAgIH07XHJcbiAgICB0aGlzLmNVcmwgPSB0aGlzLnJvdXRlci51cmw7XHJcbiAgICB0aGlzLm1vZHVsZW5hbWU9dGhpcy5jVXJsLnNwbGl0KCcvJylbMV07XHJcbmxldCBiaUNhbGwgPWxvY2FsU3RvcmFnZS5nZXRJdGVtKCdCSWNhbGwnKSB8fCcnO1xyXG4gICAgaWYgKGJpQ2FsbCAhPSAnJykge1xyXG4gICAgICBpZiAobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ0JJbW9kaWZ5U2VhcmNoU3RyaW5nJykgIT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMubW9kaWZ5ID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ0JJbW9kaWZ5U2VhcmNoU3RyaW5nJykuc3BsaXQoJywnKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ0JJbW9kaWZ5U2NoVHh0JykgIT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMubW9kZnl0eHQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdCSW1vZGlmeVNjaFR4dCcpKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ0JJbW9kaWZ5c3RhdCcpICE9IG51bGwpIHtcclxuICAgICAgICB0aGlzLm1vZGZ5c3RhdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdCSW1vZGlmeXN0YXQnKTtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgIH1cclxuXHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5jbGVhckxvY2FsU3RvcmFnZXMoKTtcclxuICAgIH1cclxuICAgIGNvbnNvbGUubG9nKHRoaXMuYW5hQWxsR3JwU3R0KTtcclxuXHJcbiAgICB0aGlzLmxvYWRBbmFseXNpc1NlYXJjaFBhZ2UoKTtcclxuICB9KTtcclxuXHJcbiAgfVxyXG5cclxufVxyXG5cclxuXHJcbi8vIGxldCByZXNvYmogPSB7fVxyXG4vLyByZXNvYmpbJ2VtcGlkJ10gPSB0aGlzLmVtcElkO1xyXG4vLyByZXNvYmpbJ2J1eWVyaWQnXSA9IHRoaXMuc2VsZWN0ZWRTdWdnO1xyXG4vLyAvLyByZXNvYmpbJ3RybWlkJ10gPSB0aGlzLnRybS5idXllcl90ZXJtc19pZG47XHJcbi8vIHJlc29ialsnZXhyYXRlJ10gPSB0aGlzLnRybS54cnRlO1xyXG4vLyBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgncmVzcmVxcGFyYScsIEpTT04uc3RyaW5naWZ5KHJlc29iaikpO1xyXG4vLyBpZiAodGhpcy5zZWFyY2hEZXNjLmxlbmd0aCA+IDEpIHtcclxuLy8gICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnc3JjSWRucycsIEpTT04uc3RyaW5naWZ5KHRoaXMuc2VhcmNoRGVzYykpO1xyXG4vLyAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdyZXNyZXFwYXJhJywgSlNPTi5zdHJpbmdpZnkocmVzb2JqKSlcclxuLy8gICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9zb2xpdGFpcmVzL3Jlc3VsdC8nLCAnc3RvY2tSZXN1bHRGb3JtJ10pOy8vdGhpcy5zY2hJZFxyXG4vLyB9XHJcbi8vIGVsc2Uge1xyXG4vLyAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdyZXNyZXFwYXJhJywgSlNPTi5zdHJpbmdpZnkocmVzb2JqKSlcclxuLy8gICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnc3JjSWRucycsIEpTT04uc3RyaW5naWZ5KHRoaXMuc2VhcmNoRGVzYykpO1xyXG4vLyAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL3NvbGl0YWlyZXMvcmVzdWx0LycsICdzdG9ja1Jlc3VsdEZvcm0nXSk7XHJcbi8vIH0iLCI8ZGl2IGNsYXNzPVwibXRcIj5cclxuICA8ZGl2IGNsYXNzPVwicGFuZWwgcGFuZWwtZGVmYXVsdFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInBhbmVsLWhlYWRpbmdcIj5cclxuICAgICAgPGgzIGNsYXNzPVwicGFuZWwtdGl0bGVcIj5BbmFseXNpcyBTZWFyY2hcclxuICAgICAgICA8c3BhbiBjbGFzcz1cImYtMTJcIj4oe3tjcy5jRGF0ZSB8IGRhdGU6J21lZGl1bSd9fSk8L3NwYW4+XHJcbiAgICAgIDwvaDM+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwiY29udGVudC1mcmFtZVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtZnJhbWUtYm9keVwiIHN0eWxlPVwibWFyZ2luLWxlZnQ6MDtcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInBhbmVsIHBhbmVsLWRlZmF1bHRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicGFuZWwtYm9keVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImluZm9TZWNcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTJcIj5cclxuICAgICAgICAgICAgICAgIDxmb3JtIGNsYXNzPVwiZm9ybS1pbmxpbmVcIiB0YXJnZXQ9XCJfYmxhbmtcIj5cclxuICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidGV4dC1jYXBpdGFsaXplIGxibGNvbG9yXCI+IDxzdHJvbmc+U3RhdHVzOiA8L3N0cm9uZz4gPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwidWxjbGFzc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgc3RhdHVzIG9mIHN0YXR1c0xpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdGF0dXMuayAhPSAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJ7e3N0YXR1cz8ua319XCIgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cImFuYVN0YXR1c1wiIHZhbHVlPVwie3tzdGF0dXM/LnZ9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJnZXRWYWwoc3RhdHVzLCAkZXZlbnQudGFyZ2V0LmNoZWNrZWQpO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwie3tzdGF0dXM/LnZ9fVwiIGNsYXNzPVwidGV4dC1jYXBpdGFsaXplXCI+ICZuYnNwO3t7c3RhdHVzPy5rfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgJm5ic3A7XHJcbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInRleHQtY2FwaXRhbGl6ZSBsYmxjb2xvclwiPiA8c3Ryb25nPkVtcGxveWVlOiA8L3N0cm9uZz4gPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgJm5ic3A7XHJcbiAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBuYW1lPVwiZW1wbG95ZWVcIiBbKG5nTW9kZWwpXT1cImVtcElkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbj5TZWxlY3QgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgZW1wbG95ZWUgb2YgZW1wbG95ZWVzXCIgdmFsdWU9XCJ7e2VtcGxveWVlPy5rfX1cIj57e2VtcGxveWVlPy52fX1cclxuICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICZuYnNwO1xyXG4gICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ0ZXh0LWNhcGl0YWxpemUgbGJsY29sb3JcIj4gPHN0cm9uZz5CdXllcjogPC9zdHJvbmc+IDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICZuYnNwO1xyXG4gICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwid2lkdGg6MjAwcHg7ZGlzcGxheTogaW5saW5lLWJsb2NrO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1zZWxlY3Qgc3R5bGU9XCJ6LWluZGV4OiA1O1wiIHBsYWNlaG9sZGVyPVwiU2VsZWN0IEJ1eWVyc1wiIFthbGxvd0NsZWFyXT1cInRydWVcIiBbb3B0aW9uc109XCJidXllcnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFN1Z2dcIiBuYW1lPVwiYnV5ZXJcIiAoZmlsdGVySW5wdXRDaGFuZ2VkKT1cImdldEJ1eWVycygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3RlZCk9XCJvbnNlbGVjdChzZWxlY3RlZFN1Z2cpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAmbmJzcDtcclxuICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidGV4dC1jYXBpdGFsaXplIGxibGNvbG9yXCIgKm5nSWY9XCJzaG93dmVuZGVyXCI+IDxzdHJvbmc+VmVuZG9yOiA8L3N0cm9uZz4gPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgJm5ic3A7XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJ3aWR0aDoyMDBweDtkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XCIgKm5nSWY9XCJzaG93dmVuZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXNlbGVjdCBzdHlsZT1cInotaW5kZXg6IDU7XCIgcGxhY2Vob2xkZXI9XCJTZWxlY3QgVmVuZG9yXCIgW2FsbG93Q2xlYXJdPVwidHJ1ZVwiIFtvcHRpb25zXT1cInZlbmRlckxpc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ2ZW5kZXJcIiBuYW1lPVwidmVuZGVyXCIgKGZpbHRlcklucHV0Q2hhbmdlZCk9XCJnZXRWZW5kZXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8IS0tIChzZWxlY3RlZCk9XCJnZXRUZXJtcyhzZWxlY3RlZFN1Z2cpXCIgLS0+XHJcbiAgICAgICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+IDxzdHJvbmc+IFBlcmlvZDogPC9zdHJvbmc+IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJ3aWR0aDogMTE1cHg7ZGlzcGxheTogaW5saW5lLWJsb2NrO1wiPlxyXG4gICAgICAgICAgICAgICAgICA8IS0tIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiB2YWx1ZT1cIjFcIiBbKG5nTW9kZWwpXT1cInBlcmlvZFwiIC8+IC0tPlxyXG4gICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgWyhuZ01vZGVsKV09XCJwZXJpb2RcIiAoY2hhbmdlKT1cIm9uUGVyaW9kQ2hhbmdlKHBlcmlvZClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uPlNlbGVjdCA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBiaSBvZiBiaVBlcmlvZExpc3RcIiB2YWx1ZT1cInt7Ymk/Lmt9fVwiPnt7Ymk/LnZ9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBlcmlvZGljc2NoXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwZXJpb2RpY2RhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPlAxPC9zdHJvbmc+XHJcbiAgICAgICAgICAgICAgICAgICAgRnJvbSA8aW5wdXQgdHlwZT1cImRhdGVcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwicEZyb21cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwiYWRkRGF0ZSgkZXZlbnQudGFyZ2V0LnZhbHVlLDAsJ3AxJyk7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgVG8gPGlucHV0IHR5cGU9XCJkYXRlXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cInBUb1wiIChibHVyKT1cImFkZERhdGUoJGV2ZW50LnRhcmdldC52YWx1ZSwxLCdwMScpO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICZuYnNwOyZuYnNwO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxzdHJvbmc+UDI8L3N0cm9uZz5cclxuICAgICAgICAgICAgICAgICAgICBGcm9tIDxpbnB1dCB0eXBlPVwiZGF0ZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgKGNoYW5nZSk9XCJhZGREYXRlKCRldmVudC50YXJnZXQudmFsdWUsMCwncDInKTtcIj5cclxuICAgICAgICAgICAgICAgICAgICBUbyA8aW5wdXQgdHlwZT1cImRhdGVcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIChjaGFuZ2UpPVwiYWRkRGF0ZSgkZXZlbnQudGFyZ2V0LnZhbHVlLDEsJ3AyJyk7XCI+IC0tPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInBlcmlvZGljZGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+UDM8L3N0cm9uZz5cclxuICAgICAgICAgICAgICAgICAgICBGcm9tIDxpbnB1dCB0eXBlPVwiZGF0ZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgKGNoYW5nZSk9XCJhZGREYXRlKCRldmVudC50YXJnZXQudmFsdWUsMCwncDMnKTtcIj5cclxuICAgICAgICAgICAgICAgICAgICBUbyA8aW5wdXQgdHlwZT1cImRhdGVcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIChjaGFuZ2UpPVwiYWRkRGF0ZSgkZXZlbnQudGFyZ2V0LnZhbHVlLDEsICdwMycpO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICZuYnNwOyZuYnNwO1xyXG4gICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+UDQ8L3N0cm9uZz5cclxuICAgICAgICAgICAgICAgICAgICBGcm9tIDxpbnB1dCB0eXBlPVwiZGF0ZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgKGNoYW5nZSk9XCJhZGREYXRlKCRldmVudC50YXJnZXQudmFsdWUsMCwncDQnKTtcIj5cclxuICAgICAgICAgICAgICAgICAgICBUbyA8aW5wdXQgdHlwZT1cImRhdGVcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIChjaGFuZ2UpPVwiYWRkRGF0ZSgkZXZlbnQudGFyZ2V0LnZhbHVlLDEsJ3A0Jyk7XCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBlcmlvZGljc2NoXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzdHJvbmc+U2FsZSBEYXlzPC9zdHJvbmc+XHJcbiAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cInNhbGVQZXJpb2RcIiBbKG5nTW9kZWwpXT1cInNhbGVQZXJpb2RcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPW9uQ2hhbmdlU2FsZVBlcmlvZChzYWxlUGVyaW9kKT5cclxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBkYXlzIG9mIGJpX3NhbGVfZHlzXCIgdmFsdWU9XCJ7e2RheXMua319XCI+e3tkYXlzLnZ9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoc2VjXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFic3NlY1wiPlxyXG4gICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJuYXYgbmF2LXRhYnNcIiBzdHlsZT1cIm1hcmdpbjogMTBweCAwO1wiIHJvbGU9XCJ0YWJsaXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIHJvbGU9XCJwcmVzZW50YXRpb25cIiAqbmdGb3I9XCJsZXQgYXR0clN0cnVjdHVyZSBvZiBhdHRyU3RydWN0dXJlRHRsO1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY3Muc2Nyb2xsVG9EaXYoYXR0clN0cnVjdHVyZS5ncnApXCI+PGEgaHJlZj1cIiN7e2F0dHJTdHJ1Y3R1cmUuZ3JwfX1cIiBhcmlhLWNvbnRyb2xzPVwiaG9tZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJ0YWJcIiBkYXRhLXRvZ2dsZT1cInRhYlwiPnt7YXR0clN0cnVjdHVyZS5ncnB9fTwvYT48L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2NoY3JhdGVyaWFcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDEwcHg7XCIgaWQ9XCJ7e2F0dHJTdHJ1Y3R1cmUuZ3JwfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhdHRyU3RydWN0dXJlIG9mIGF0dHJTdHJ1Y3R1cmVEdGw7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdycGhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGg2Pnt7YXR0clN0cnVjdHVyZS5ncnB9fTwvaDY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYXR0Y29tcG8gb2YgYXR0clN0cnVjdHVyZS5jb21wb25lbnQ7bGV0IGkgPSBpbmRleFwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD1cInt7YXR0clN0cnVjdHVyZS5ncnB9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbnRyb2wtbGFiZWwgaGVhZGVycyBjb2wtbWQtMSB0ZXh0LXJpZ2h0XCIgKm5nSWY9XCJhdHRjb21wby5hdHRyID09ICdjdCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW4tdG9wOiAxMHB4O1wiPkNQUzwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMVwiICpuZ0lmPVwiYXR0Y29tcG8uYXR0ciA9PSAnY3QnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwib3ZlcmZsb3cteDogYXV0bzt3aGl0ZS1zcGFjZTogbm93cmFwO21hcmdpbi10b3A6IDEwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2stYnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvdXRDaGtDbHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAwO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGlkPVwib25lXCIgY2xhc3M9XCJwcm50Y2hrXCIgW2Rpc2FibGVkXT1cIm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RFbGUoMCAsICRldmVudC50YXJnZXQuY2hlY2tlZCk7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4zRVg8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNrLWJ1dHRvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvdXRDaGtDbHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDA7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBpZD1cInR3b1wiIGNsYXNzPVwicHJudGNoa1wiIFtkaXNhYmxlZF09XCJ0d29cIiAoY2xpY2spPVwic2VsZWN0RWxlKDEgLCAkZXZlbnQudGFyZ2V0LmNoZWNrZWQpO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4yRVg8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2stYnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvdXRDaGtDbHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAwO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGlkPVwidGh2Z3VwXCIgY2xhc3M9XCJwcm50Y2hrXCIgW2Rpc2FibGVkXT1cInRodmd1cFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RFbGUoMyAsICRldmVudC50YXJnZXQuY2hlY2tlZCk7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48Yj4gJnVhcnI7PC9iPiAzVkc8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgc3R5bGU9XCJtYXJnaW4tdG9wOjE1cHg7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsnbWFyZ2luLXRvcCc6KChhdHRjb21wby5kYXRhVHlwZSA9PSAndCcgJiYgYXR0Y29tcG8uYXR0cj09J3ZubScpIHx8IGF0dGNvbXBvLmRhdGFUeXBlID09ICdkJyB8fCBhdHRjb21wby5kYXRhVHlwZSA9PSAnbicgKT8nMzBweCc6JzE1cHgnfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInB1bGwtcmlnaHRcIj57e2F0dGNvbXBvLnByaW50fX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC17e2F0dGNvbXBvLmRpc3BsYXlUeXBlfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsnb3ZlcmZsb3cteCcgOiBhdHRjb21wby5hdHRyID09ICdzeicgPyAndW5zZXQnOiAnYXV0byd9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIm1hcmdpbi10b3A6IDEwcHg7d2hpdGUtc3BhY2U6IG5vd3JhcDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxzcGFuIGlkPVwibHt7YXR0Y29tcG8uYXR0cn19XCIgY2xhc3M9XCJidXR0b24gbGFyclwiICpuZ0lmPVwiYXR0Y29tcG8uZGF0YVR5cGUgPT0gJ2MnICYmIGF0dGNvbXBvLmF0dHIgIT0gJ3N6J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwibGVmdFNjcm9sbChhdHRjb21wby5hdHRyKycnK2F0dGNvbXBvLmRhdGFUeXBlKVwiPjxpIHN0eWxlPVwiZm9udC1zaXplOiAxNnB4O2NvbG9yOiAjM2I1OTk4O1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmEgZmEtY2hldnJvbi1sZWZ0XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwib3ZlcmZsb3cteDogYXV0bztcIiBjbGFzcz1cInt7YXR0Y29tcG8uYXR0cisnJythdHRjb21wby5kYXRhVHlwZX19XCIgaWQ9XCJzY3Jfe3thdHRjb21wby5kaXNwbGF5VHlwZSsnJythdHRjb21wby5hdHRyKycnK2F0dGNvbXBvLmRhdGFUeXBlfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHBycExzdCBvZiBhdHRjb21wby5wcnBMaXN0O2xldCBpID1pbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogaW5saW5lLWJsb2NrO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjay1idXR0b25cIiAqbmdJZj1cImF0dGNvbXBvLmRhdGFUeXBlID09ICdjJyAmJiBhdHRjb21wby5hdHRyICE9ICdzeidcIiBpZD1cInt7YXR0Y29tcG8uYXR0cisnXycrcHJwTHN0LnNvcnR9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm91dENoa0Nsc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAwO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiB2YWx1ZT1cInt7cHJwTHN0LnNvcnR9fVwiIG5hbWU9XCJ7e3BycExzdC5zb3J0fX1cIiBpZD1cInt7YXR0Y29tcG8uYXR0cisnXycrcHJwTHN0LnZhbH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjaGVja0JveEZ1bihhdHRjb21wbywgcHJwTHN0LnNvcnQsICRldmVudC50YXJnZXQuY2hlY2tlZCxhdHRjb21wby5hdHRyKydfJytwcnBMc3QudmFsKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7cHJwTHN0LnByaW50fX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBpZD1cInJ7e2F0dGNvbXBvLmF0dHJ9fVwiIGNsYXNzPVwiYnV0dG9uIHJhcnJcIiAqbmdJZj1cImF0dGNvbXBvLmRhdGFUeXBlID09ICdjJyAmJiBhdHRjb21wby5hdHRyICE9ICdzeidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJpZ2h0U2Nyb2xsKGF0dGNvbXBvLmF0dHIrJycrYXR0Y29tcG8uZGF0YVR5cGUpXCI+PGkgc3R5bGU9XCJmb250LXNpemU6IDE2cHg7Y29sb3I6ICMzYjU5OTg7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmYSBmYS1jaGV2cm9uLXJpZ2h0XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPjwvc3Bhbj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gaWQ9XCJse3thdHRjb21wby5hdHRyfX1cIiBjbGFzcz1cImJ1dHRvbiBsYXJyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYXR0Y29tcG8uZGF0YVR5cGUgPT0gJ2MnICYmIGF0dGNvbXBvLmF0dHIgIT0gJ3N6J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwibGVmdFNjcm9sbChhdHRjb21wby5hdHRyKycnK2F0dGNvbXBvLmRhdGFUeXBlKVwiPjxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiZm9udC1zaXplOiAxNnB4O2NvbG9yOiAjM2I1OTk4O1wiIGNsYXNzPVwiZmEgZmEtY2hldnJvbi1sZWZ0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwib3ZlcmZsb3cteDogaGlkZGVuO1wiIGNsYXNzPVwie3thdHRjb21wby5hdHRyKycnK2F0dGNvbXBvLmRhdGFUeXBlfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJzY3Jfe3thdHRjb21wby5kaXNwbGF5VHlwZSsnJythdHRjb21wby5hdHRyKycnK2F0dGNvbXBvLmRhdGFUeXBlfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjay1idXR0b25cIiAqbmdJZj1cImF0dGNvbXBvLmRhdGFUeXBlID09ICdjJyAmJiBhdHRjb21wby5hdHRyICE9ICdzeidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3V0Q2hrQ2xzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAwO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgW2NoZWNrZWRdPVwiY2hrXCIgaWQ9XCJhbGx7e2F0dGNvbXBvLmF0dHJ9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdEFsbChhdHRjb21wbywgJGV2ZW50KTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+QWxsPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHBycExzdCBvZiBhdHRjb21wby5wcnBMaXN0O2xldCBpID1pbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogaW5saW5lLWJsb2NrO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjay1idXR0b25cIiAqbmdJZj1cImF0dGNvbXBvLmRhdGFUeXBlID09ICdjJyAmJiBhdHRjb21wby5hdHRyICE9ICdzeidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJ7e2F0dGNvbXBvLmF0dHIrJ18nK3BycExzdC5zb3J0fX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvdXRDaGtDbHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgdmFsdWU9XCJ7e3BycExzdC5zb3J0fX1cIiBuYW1lPVwie3twcnBMc3Quc29ydH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwie3thdHRjb21wby5hdHRyKydfJytwcnBMc3QudmFsfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNoZWNrQm94RnVuKGF0dGNvbXBvLCBwcnBMc3Quc29ydCwgJGV2ZW50LnRhcmdldC5jaGVja2VkLGF0dGNvbXBvLmF0dHIrJ18nK3BycExzdC52YWwpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3twcnBMc3QucHJpbnR9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGlkPVwicnt7YXR0Y29tcG8uYXR0cn19XCIgY2xhc3M9XCJidXR0b24gcmFyclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImF0dGNvbXBvLmRhdGFUeXBlID09ICdjJyAmJiBhdHRjb21wby5hdHRyICE9ICdzeidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJpZ2h0U2Nyb2xsKGF0dGNvbXBvLmF0dHIrJycrYXR0Y29tcG8uZGF0YVR5cGUpXCI+PGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJmb250LXNpemU6IDE2cHg7Y29sb3I6ICMzYjU5OTg7XCIgY2xhc3M9XCJmYSBmYS1jaGV2cm9uLXJpZ2h0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYXR0Y29tcG8uYXR0ciA9PSAnc3onXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsnbWFyZ2luLXRvcCcgOiBhdHRjb21wby5hdHRyID09ICdzeicgPyAnLTIwcHgnIDogJzAnfVwiPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxuZy1zZWxlY3QgcGxhY2Vob2xkZXI9XCJTZWxlY3QgU2l6ZXNcIiBpZD1cInt7YXR0Y29tcG8uYXR0cn19XCIgW29wdGlvbnNdPVwiYXR0Y29tcG8ucHJwTGlzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic3pwcnBcIiBuYW1lPVwie3thdHRjb21wby5hdHRyfX1cIiBbbXVsdGlwbGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZXNlbGVjdGVkKT1cIm11bHRpc2VsZWN0KGF0dGNvbXBvLHN6cHJwKVwiIChzZWxlY3RlZCk9XCJtdWx0aXNlbGVjdChhdHRjb21wbyxzenBycClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWxsb3dDbGVhcl09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjb3B0aW9uVGVtcGxhdGUgbGV0LW9wdGlvbj1cIm9wdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmYW1mYW1mYW0tZmxhZ3Mge3tvcHRpb24/LnZhbHVlLnRvTG93ZXJDYXNlKCl9fVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7b3B0aW9uPy5sYWJlbH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXNlbGVjdD4gLS0+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhbmd1bGFyMi1tdWx0aXNlbGVjdCBbZGF0YV09XCJhdHRjb21wby5wcnBMaXN0XCIgWyhuZ01vZGVsKV09XCJzenBycFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZXR0aW5nc109XCJkcm9wZG93blNldHRpbmdzXCIgKG9uU2VsZWN0KT1cIm11bHRpc2VsZWN0KGF0dGNvbXBvLHN6cHJwKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkRlU2VsZWN0KT1cIm11bHRpc2VsZWN0KGF0dGNvbXBvLHN6cHJwKVwiIChvblNlbGVjdEFsbCk9XCJtdWx0aXNlbGVjdChhdHRjb21wbyxzenBycClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25EZVNlbGVjdEFsbCk9XCJkZXNlbGVjdChhdHRjb21wbyxzenBycClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYW5ndWxhcjItbXVsdGlzZWxlY3Q+XHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cIm92ZXJmbG93LXg6IGhpZGRlbjtcIiAqbmdJZj1cImF0dGNvbXBvLmRhdGFUeXBlID09ICduJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCIgaWQ9XCJ7e2F0dGNvbXBvLmF0dHIrJycrMH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwie3thdHRjb21wby5hdHRyfX1cIiAoY2hhbmdlKT1cImFkZGl0aW9uYWwoYXR0Y29tcG8sJGV2ZW50LDAsICdjd3J0bScpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkZyb21cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCIgc3R5bGU9XCJtYXJnaW46IDA7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCIgaWQ9XCJ7e2F0dGNvbXBvLmF0dHIrMX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwie3thdHRjb21wby5hdHRyfX1cIiAoY2hhbmdlKT1cImFkZGl0aW9uYWwoYXR0Y29tcG8sJGV2ZW50LDEsICdjd3J0bScpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlRvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPHNwYW4gKm5nSWY9XCJhdHRjb21wby5hdHRyID09ICdjcnR3dCdcIiBjbGFzcz1cImFkZGJ0blwiIChjbGljayk9XCJhZGRDd3J0KCk7XCI+PGkgW25nQ2xhc3NdPVwidGcgPT0gdHJ1ZSA/ICdmYSBmYS1taW51cycgOiAnZmEgZmEtcGx1cydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYXR0Y29tcG8uYXR0ciA9PSAnY3J0d3QnICYmIHRnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFkZGl0aW9uYWxEaXZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IHd0ZyBvZiB3dGdBcnJ5O2xldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7aSsxfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIChjaGFuZ2UpPVwiYWRkaXRpb25hbCh3dGcsICRldmVudCwgMCwgJ2N3cnRjJylcIiBzdHlsZT1cImJvcmRlci1yYWRpdXM6IDJweDtib3JkZXI6IDFweCBzb2xpZCAjYzljOWM5O2hlaWdodDogMjVweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuYnNwOyZuYnNwOyZuYnNwOyA8aW5wdXQgdHlwZT1cInRleHRcIiAoY2hhbmdlKT1cImFkZGl0aW9uYWwod3RnLCAkZXZlbnQsIDEsJ2N3cnRjJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImJvcmRlci1yYWRpdXM6IDJweDtib3JkZXI6IDFweCBzb2xpZCAjYzljOWM5O2hlaWdodDogMjVweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJhdHRjb21wby5kYXRhVHlwZSA9PSAndCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCIgaWQ9XCJ7e2F0dGNvbXBvLmF0dHIrJycrMH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwie3thdHRjb21wby5hdHRyfX1cIiAoY2hhbmdlKT1cInNpbmdsZVZhbChhdHRjb21wbywkZXZlbnQudGFyZ2V0LnZhbHVlLCAndCcpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xzPVwiNTBcIiByb3dzPVwiM1wiPjwvdGV4dGFyZWE+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxpbnB1dCB0eXBlPVwidGV4dFwiIGlkPVwie3thdHRjb21wby5hdHRyKycnKzB9fVwiIHN0eWxlPVwid2lkdGg6MjAlXCIgbmFtZT1cInt7YXR0Y29tcG8uYXR0cn19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInNpbmdsZVZhbChhdHRjb21wbywkZXZlbnQudGFyZ2V0LnZhbHVlLCAndCcpXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCI+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgKm5nSWY9XCJhdHRjb21wby5kYXRhVHlwZSA9PSAnZCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiZGF0ZVwiIGlkPVwie3thdHRjb21wby5hdHRyKycnKzB9fVwiIG5hbWU9XCJ7e2F0dGNvbXBvLmF0dHJ9fVwiIChibHVyKT1cInNpbmdsZVZhbChhdHRjb21wbywkZXZlbnQudGFyZ2V0LnZhbHVlLCAwKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYXR0Y29tcG8uZGF0YVR5cGUgPT0gJ2QnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1yb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImRhdGVcIiAjdG9kdGUgaWQ9XCJ7e2F0dGNvbXBvLmF0dHIrJycrMH19XCIgbmFtZT1cInt7YXR0Y29tcG8uYXR0cn19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRnJvbVwiIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgY29sLW1kLTZcIiBzdHlsZT1cIm1hcmdpbjogMDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImRhdGVcIiBpZD1cInt7YXR0Y29tcG8uYXR0cisnJysxfX1cIiBuYW1lPVwie3thdHRjb21wby5hdHRyfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwib25EYXRlQ2hhbmdlKGF0dGNvbXBvLCRldmVudC50YXJnZXQudmFsdWUsMSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCIgcGxhY2Vob2xkZXI9XCJUb1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiKGkrMSklMz09MFwiIHN0eWxlPVwiY2xlYXI6Ym90aFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGFnZWZvb3RlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICA8Zm9ybSBjbGFzcz1cImZvcm0taW5saW5lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB1bGwtcmlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2NoQ291bnRcIiAqbmdJZj1cImNvdW50ID4gJzAnXCI+Q291bnQgOiB7e2NvdW50fX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbmFtZT1cInZpZXdHcnBcIiBbKG5nTW9kZWwpXT1cInZpZXdHcnBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbj5TZWxlY3QgR3JvdXA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgZ3JvdXAgb2YgZ3JvdXBzXCIgW25nVmFsdWVdPVwiZ3JvdXBcIj57e2dyb3VwLm5hbWV9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+ICZuYnNwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgPCEtLSA8c2VsZWN0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbmFtZT1cInZpZXdGb3JtYXRlXCIgWyhuZ01vZGVsKV09XCJ2aWV3Rm9ybWF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uPlNlbGVjdCA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgdmlldyBvZiB2aWV3T3B0aW9uc1wiIHZhbHVlPVwie3t2aWV3Py5mb3JtX2ZpZWxkfX1cIj57e3ZpZXc/LmZvcm1fZmllbGRfdGl0bGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PiAmbmJzcDsgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxhIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzXCIgKGNsaWNrKT1cInZpZXdSZXN1bHQoKTtcIiB0YXJnZXQ9XCJfYmxhbmtcIj5TdWJtaXQ8L2E+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPCEtLSBbKG5nTW9kZWwpXT1cInZpZXdGb3JtYXRlXCIgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB2aWV3IG9mIHZpZXdPcHRpb25zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzXCIgKGNsaWNrKT1cInZpZXdSZXN1bHQodmlldy5mb3JtX2ZpZWxkKTtcIiAgdGFyZ2V0PVwiX2JsYW5rXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIm1hcmdpbi1yaWdodDogMTVweDtcIj57e3ZpZXc/LmZvcm1fZmllbGRfdGl0bGV9fTwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PiJdfQ==
1089
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHlzaXMtc2VhcmNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V6bGliL3NyYy9saWIvYW5hbHlzaXMtc2VhcmNoL2FuYWx5c2lzLXNlYXJjaC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lemxpYi9zcmMvbGliL2FuYWx5c2lzLXNlYXJjaC9hbmFseXNpcy1zZWFyY2guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMzQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDaEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQVMsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7Ozs7QUFRaEUsTUFBTSxPQUFPLHVCQUF1QjtJQUVsQyxZQUNTLEVBQXdCLEVBQ3ZCLEdBQWMsRUFDZCxlQUFrQyxFQUNsQyxNQUFxQixFQUNyQixNQUFjLEVBQ2QsS0FBcUI7UUFMdEIsT0FBRSxHQUFGLEVBQUUsQ0FBc0I7UUFDdkIsUUFBRyxHQUFILEdBQUcsQ0FBVztRQUNkLG9CQUFlLEdBQWYsZUFBZSxDQUFtQjtRQUNsQyxXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQ3JCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUkvQixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUVqQixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLFlBQU8sR0FBRyxFQUFFLENBQUM7UUFDYixpQkFBWSxHQUFHLEVB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QVksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLElBQUksSUFBSSxFQUFFO29CQUNoRCxJQUFJLENBQUMsU0FBUyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7aUJBQ3ZEO2FBRUY7aUJBRUk7Z0JBQ0gsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7YUFDM0I7WUFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUUvQixJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FBQztJQUVILENBQUM7O3VJQTFyQ1UsdUJBQXVCOzJIQUF2Qix1QkFBdUIsMkRDYnBDLHFoc0JBaVdROzJGRHBWSyx1QkFBdUI7a0JBTG5DLFNBQVM7K0JBQ0UscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gJ25neC10b2FzdHInO1xyXG5pbXBvcnQgeyBOZ3hTcGlubmVyU2VydmljZSB9IGZyb20gXCJuZ3gtc3Bpbm5lclwiO1xyXG5pbXBvcnQgeyBCaVNlcnZpY2UgfSBmcm9tICcuLy4uL2JpLXNlcnZpY2UvYmkuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbW1hblNlcnZpY2VTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbWFuLXNlcnZpY2UvY29tbWFuLXNlcnZpY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJvdXRlciwgQWN0aXZhdGVkUm91dGUgLFBhcmFtc30gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1hbmFseXNpcy1zZWFyY2gnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hbmFseXNpcy1zZWFyY2guY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2FuYWx5c2lzLXNlYXJjaC5jb21wb25lbnQuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEFuYWx5c2lzU2VhcmNoQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgY3M6IENvbW1hblNlcnZpY2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBiaXM6IEJpU2VydmljZSxcclxuICAgIHByaXZhdGUgX3NwaW5uZXJTZXJ2aWNlOiBOZ3hTcGlubmVyU2VydmljZSAsXHJcbiAgICBwcml2YXRlIHRvYXN0cjogVG9hc3RyU2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVxyXG4gICkgeyB9XHJcblxyXG4gIGF0dHJTdHJ1Y3R1cmVEdGw7XHJcbiAgYmlfc2FsZV9keXMgPSBbXTtcclxuICBzYWxlUGVyaW9kO1xyXG4gIHN0YXR1c0xpc3QgPSBbXTtcclxuICBzaXplUHJwID0gW107XHJcbiAgYmlQZXJpb2RMaXN0ID0gW107XHJcbiAgdmlld09wdGlvbnM7XHJcbiAgZW1wbG95ZWVzO1xyXG4gIGVtcElkO1xyXG4gIGJ1eWVycztcclxuICBzZWxlY3RlZFN1Z2c7XHJcbiAgaGVhZGVyO1xyXG4gIHNjaElkO1xyXG4gIGNvdW50O1xyXG4gIGRlZmF1bHRTdGF0dXNMaXN0O1xyXG4gIHNlbGVjdGVkU3RhdHVzID0gW107XHJcbiAgLy8gYW5hQWxsR3JwU3R0ID0gWydNYXJrZXRpbmcnLCAnU29sZCddO1xyXG4gIGFuYUFsbEdycFN0dCA9IFtdO1xyXG4gIGNoaztcclxuXHJcblxyXG4gIG5ld0Fyck9iajtcclxuICBhdHRyO1xyXG4gIGF0dHJUeXBlO1xyXG4gIGF0dHJWYWw7XHJcbiAgYXR0cnQ7XHJcbiAgYXR0clR5cGV0XHJcbiAgYXR0clZhbHQ7XHJcbiAgY2FsbEZyb20gPSAnJztcclxuICB0cm06IGFueSA9IFwiXCI7XHJcbiAgc2VsZWN0ZWRDcml0ZXJpYSA9IFtdO1xyXG4gIHNlYXJjaElkOiBhbnkgPSBbXTtcclxuICBwZXJpb2Q6IGFueSA9IDE7XHJcbiAgcDE6IGFueSA9IG5ldyBBcnJheSgyKTtcclxuICBwMiA9IG5ldyBBcnJheSgyKTtcclxuICBwMyA9IG5ldyBBcnJheSgyKTtcclxuICBwNCA9IG5ldyBBcnJheSgyKTtcclxuICB2aWV3Rm9ybWF0ZSA9ICdncmlkJztcclxuICBncm91cHMgPSBbXTtcclxuICB2aWV3R3JwO1xyXG4gIC8vIHAxZGF0ZSA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKS5zdWJzdHIoMCwgMTApO1xyXG4gIC8vIHAyZGF0ZSA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKS5zdWJzdHIoMCwgMTApO1xyXG4gIGNudCA9IDE7XHJcbiAgbW9kZnl0eHQ7XHJcbiAgbW9kaWZ5O1xyXG4gIDtcclxuICBtb2RpZnlTY2g6IGFueSA9IFtdOyBtb2RmeXN0YXRcclxuICB0ZXJtcyA9IFtdO1xyXG5cclxuICBmb3JtbmFtZTtcclxuICBkcm9wZG93bkxpc3QgPSBbXTtcclxuICBzZWxlY3RlZEl0ZW1zID0gW107XHJcbiAgZHJvcGRvd25TZXR0aW5ncyA9IHt9O1xyXG4gIHZlbmRlckxpc3Q9W107XHJcbiAgdmVuZGVyO1xyXG4gIHN6cHJwO1xyXG4gIGF0dHJpYnV0ZTtcclxuICBtb2R1bGVuYW1lO1xyXG4gIGNVcmw7XHJcbiAgc2hvd3ZlbmRlcj1mYWxzZTtcclxuICBvbkl0ZW1TZWxlY3QoaXRlbTogYW55KSB7XHJcbiAgICBjb25zb2xlLmxvZyhpdGVtKTtcclxuICAgIGNvbnNvbGUubG9nKHRoaXMuc2VsZWN0ZWRJdGVtcyk7XHJcbiAgfVxyXG4gIE9uSXRlbURlU2VsZWN0KGl0ZW06IGFueSkge1xyXG4gICAgY29uc29sZS5sb2coaXRlbSk7XHJcbiAgICBjb25zb2xlLmxvZyh0aGlzLnNlbGVjdGVkSXRlbXMpO1xyXG4gIH1cclxuICBvblNlbGVjdEFsbChpdGVtczogYW55KSB7XHJcbiAgICBjb25zb2xlLmxvZyhpdGVtcyk7XHJcbiAgfVxyXG4gIG9uRGVTZWxlY3RBbGwoaXRlbXM6IGFueSkge1xyXG4gICAgY29uc29sZS5sb2coaXRlbXMpO1xyXG4gIH1cclxuICBsb2FkQW5hbHlzaXNTZWFyY2hQYWdlKCkge1xyXG4gICB0aGlzLmZvcm1uYW1lPXRoaXMucm91dGUuc25hcHNob3QucGFyYW1zWydmcm1ubWUnXTtcclxuICAgIHRoaXMuc2hvd3ZlbmRlcj1mYWxzZTtcclxuICAgIHRoaXMuc2VhcmNoSWQ9W107XHJcbiAgICBsZXQgcmVxT2JqID0ge307XHJcbiAgICByZXFPYmpbJ2Zvcm1ObWUnXSA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1zWydmcm1ubWUnXTtcclxuICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHJlcU9iaikpO1xyXG4gICAgdGhpcy5iaXMuZGF0YShyZXFPYmosICdsb2FkJywgJ21hcmtldGluZy9zZWFyY2gnKVxyXG4gICAgICAuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gICAgICAgIHRoaXMuX3NwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICBpZiAoZGF0YS5zdGF0dXMgPT0gJ1NVQ0NFU1MnKSB7XHJcbiAgICAgICAgICBsZXQgcmVzID0gZGF0YS5yZXN1bHQ7XHJcbiAgICAgICAgICBkZWJ1Z2dlclxyXG4gICAgICAgICAgY29uc29sZS5sb2cocmVzKTtcclxuICAgICAgICAgIHRoaXMuYmlfc2FsZV9keXMgPSByZXMuYmlfc2FsZV9keXM7XHJcbiAgICAgICAgICB0aGlzLmF0dHJTdHJ1Y3R1cmVEdGwgPSByZXMuYXR0clN0cnVjdHVyZUR0bDtcclxuICAgICAgICAgIHRoaXMuYXR0clN0cnVjdHVyZUR0bC5mb3JFYWNoKGVsZTEgPT4ge1xyXG4gICAgICAgICAgICBlbGUxLmNvbXBvbmVudC5mb3JFYWNoKGVsZTIgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChlbGUyLmF0dHIgPT0gJ3N6Jykge1xyXG4gICAgICAgICAgICAgICAgZWxlMi5wcnBMaXN0LmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBzdWJPYmogPSB7fTtcclxuICAgICAgICAgICAgICAgICAgLy8gc3ViT2JqWydsYWJlbCddID0gZWxlbWVudC5wcmludDtcclxuICAgICAgICAgICAgICAgICAgLy8gc3ViT2JqWyd2YWwnXSA9IGVsZW1lbnQudmFsO1xyXG4gICAgICAgICAgICAgICAgICAvLyBzdWJPYmpbJ3ZhbHVlJ10gPSBlbGVtZW50LnNvcnQ7XHJcblxyXG4gICAgICAgICAgICAgICAgICBzdWJPYmpbJ2l0ZW1OYW1lJ10gPSBlbGVtZW50LnByaW50O1xyXG4gICAgICAgICAgICAgICAgICBzdWJPYmpbJ2lkJ10gPSBlbGVtZW50LnNvcnQ7XHJcblxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNpemVQcnAucHVzaChzdWJPYmopO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBlbGUyLnBycExpc3QgPSB0aGlzLnNpemVQcnA7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsZTIudmFsdWVzID0gW107XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLnN0YXR1c0xpc3QgPSByZXMuc3RhdHVzTGlzdDtcclxuICAgICAgICAgIHRoaXMuZ3JvdXBzID0gcmVzLmF0dHJHcmlkRm9ybWF0O1xyXG4gICAgICAgICAgdGhpcy52aWV3R3JwID0gdGhpcy5ncm91cHNbMF07XHJcbiAgICAgICAgICB0aGlzLnZpZXdPcHRpb25zID0gcmVzLnBhZ2VEZWZpbmF0aW9uLnRybnNfYnV0dG9ucztcclxuICAgICAgICAgIGxldCB2ZW5kZXIgPSByZXMucGFnZURlZmluYXRpb24uYWRkX25ld3x8W107XHJcbiAgICAgICAgICBpZih2ZW5kZXIubGVuZ3RoPjApe1xyXG4gICAgICAgICAgICB0aGlzLnNob3d2ZW5kZXI9dHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuZW1wbG95ZWVzID0gcmVzLmVtcGxveWVlTGlzdDtcclxuICAgICAgICAgIHRoaXMuYmlQZXJpb2RMaXN0ID0gcmVzLmJpX3BlcmlvZDtcclxuICAgICAgICAgIHRoaXMub25DaGFuZ2VTYWxlUGVyaW9kKDApO1xyXG4gICAgICAgICAgdGhpcy5zYWxlUGVyaW9kID0gXCIwXCI7XHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuYXR0clN0cnVjdHVyZUR0bC5sZW5ndGggIT0gbnVsbCkge1xyXG5cclxuICAgICAgICAgICAgICBsZXQgc3R0cyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ0JJYW5hU3R0JykpO1xyXG4gICAgICAgICAgICAgIGlmIChsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnQkljYWxsJykgIT0gbnVsbCAmJiB0aGlzLmF0dHJTdHJ1Y3R1cmVEdGwubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tb2RpZnlTZWFyY2hGdW4oKTtcclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgY3J0d3QgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnQkljcnR3dCcpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNydHd0ICE9IG51bGwgJiYgY3J0d3QgIT0gdW5kZWZpbmVkICYmIGNydHd0ICE9IFwiXCIpIHtcclxuICAgICAgICAgICAgICAgICAgbGV0IHd0ID0gSlNPTi5wYXJzZShjcnR3dClcclxuICAgICAgICAgICAgICAgICAgaWYgKHd0ICE9IG51bGwgJiYgd3QgIT0gdW5kZWZpbmVkICYmIHd0ICE9IFwiXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NydHd0MCcpIGFzIGFueSkudmFsdWUgPSB3dFswXTtcclxuICAgICAgICAgICAgICAgICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NydHd0MScpIGFzIGFueSkudmFsdWUgPSB3dFsxXTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IGJ5ciA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ0JJYnlyJykpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGJ5ciAhPSBudWxsICYmIGJ5ciAhPSB1bmRlZmluZWQgJiYgYnlyICE9IFwiXCIpIHtcclxuICAgICAgICAgICAgICAgICAgbGV0IGJ1eWVyTGlzdCA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICBidXllckxpc3QucHVzaChieXIpO1xyXG4gICAgICAgICAgICAgICAgICBsZXQgaWQgPSBieXJbJ3ZhbHVlJ107XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuYnV5ZXJzID0gYnV5ZXJMaXN0O1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkU3VnZyA9IGlkOy8vSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnYnlyJykpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGxldCBlbXAgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnQkllSWQnKTtcclxuICAgICAgICAgICAgICAgIGlmIChlbXAgIT0gbnVsbCAmJiBlbXAgIT0gdW5kZWZpbmVkICYmIGVtcCAhPSBcIlwiKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZW1wSWQgPSBlbXA7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBsZXQgcGZybSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdCSXBGcm9tJyk7XHJcbiAgICAgICAgICAgICAgICBpZiAocGZybSAhPSBudWxsICYmIHBmcm0gIT0gdW5kZWZpbmVkICYmIHBmcm0gIT0gXCJcIikge1xyXG4gICAgICAgICAgICAgICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BGcm9tJykgYXMgYW55KS52YWx1ZSA9IEpTT04ucGFyc2UocGZybSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IHB0byA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdCSXBUbycpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHB0byAhPSBudWxsICYmIHB0byAhPSB1bmRlZmluZWQgJiYgcHRvICE9IFwiXCIpIHtcclxuICAgICAgICAgICAgICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwVG8nKSBhcyBhbnkpLnZhbHVlID0gSlNPTi5wYXJzZShwdG8pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICBcclxuXHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IHNhbGVQID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ0JJc2FsZVBlcmlvZCcpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHNhbGVQICE9IG51bGwgJiYgc2FsZVAgIT0gdW5kZWZpbmVkICYmIHNhbGVQICE9IFwiXCIpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zYWxlUGVyaW9kID0gc2FsZVA7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IHBlcmlvZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdCSVBlcmlvZCcpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHBlcmlvZCAhPSBudWxsICYmIHBlcmlvZCAhPSB1bmRlZmluZWQgJiYgcGVyaW9kICE9IFwiXCIpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wZXJpb2QgPSBwZXJpb2Q7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgc3R0cyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ0JJYW5hU3R0JykpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHN0dHMgIT0gbnVsbCAmJiBzdHRzICE9IHVuZGVmaW5lZCAmJiBzdHRzLmxlbmd0aCA8IDEpIHtcclxuICAgICAgICAgICAgICAgICAgc3R0cy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICgoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudCkgYXMgYW55KS5jaGVja2VkID09ICdmYWxzZScpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnQpLmNsaWNrKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGxldCBzenMgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdCSXNpemUnKSlcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHN6cyAhPSBudWxsICYmIHN6cyAhPSB1bmRlZmluZWQgJiYgc3pzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnN6cHJwID0gc3pzO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoc3R0cyAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChzdHRzLmluY2x1ZGVzKCdta3QnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdNYXJrZXRpbmcnKS5jbGljaygpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIGlmIChzdHRzLmluY2x1ZGVzKCdzb2xkJykpIHtcclxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnU29sZCcpLmNsaWNrKCk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgaWYgKHN0dHMuaW5jbHVkZXMoJ2NzJykpIHtcclxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnQ29uc2lnbm1lbnQnKS5jbGljaygpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIGlmIChzdHRzLmluY2x1ZGVzKCdhc3J0JykpIHtcclxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnQXNzb3J0JykuY2xpY2soKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBpZiAoc3R0cy5pbmNsdWRlcygnbGFiJykpIHtcclxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnTGFiJykuY2xpY2soKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnTWFya2V0aW5nJykuY2xpY2soKTtcclxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdTb2xkJykuY2xpY2soKTtcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIC8vIGVsc2Uge1xyXG4gICAgICAgICAgICAgIC8vICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ01hcmtldGluZycpLmNsaWNrKCk7XHJcbiAgICAgICAgICAgICAgLy8gICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnU29sZCcpLmNsaWNrKCk7XHJcblxyXG4gICAgICAgICAgICAgIC8vIH1cclxuXHJcblxyXG4gICAgICAgICAgICAgIC8vIGlmICh0aGlzLnNlbGVjdGVkU3VnZyAhPSB1bmRlZmluZWQgfHwgdGhpcy5zZWxlY3RlZFN1Z2cgIT0gbnVsbCB8fCB0aGlzLnNlbGVjdGVkU3VnZyAhPSBcIlwiKSB7XHJcbiAgICAgICAgICAgICAgLy8gICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnQklieXInKTtcclxuICAgICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICAgICAgLy8gaWYgKHRoaXMuZW1wSWQgIT0gdW5kZWZpbmVkIHx8IHRoaXMuZW1wSWQgIT0gbnVsbCB8fCB0aGlzLmVtcElkICE9IFwiXCIpIHtcclxuICAgICAgICAgICAgICAvLyAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdCSWVJZCcpO1xyXG4gICAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgICAvLyBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnQkljcnR3dCcpO1xyXG5cclxuICAgICAgICAgICAgICAvLyBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnQklzaXplJyk7XHJcblxyXG5cclxuICAgICAgICAgICAgICB0aGlzLmFkZFNjcm9sbEJhcigpO1xyXG4gICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdCSWNhbGwnKTtcclxuICAgICAgICAgICAgICAvLy8vLy8gIHRoaXMuY2xlYXJMb2NhbFN0b3JhZ2VzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sIDUwMCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuX3NwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKGRhdGEubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgdGhpcy5fc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVycm9yKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RBbGwoYXR0Y29tcG9PYmosIGUpIHtcclxuICAgIGlmIChlLnRhcmdldC5jaGVja2VkID09IGZhbHNlKSB7XHJcbiAgICAgIGF0dGNvbXBvT2JqLnBycExpc3QubWFwKHZhbHVlID0+IHsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYXR0Y29tcG9PYmouYXR0ciArICdfJyArIHZhbHVlLnZhbCkuY2xpY2soKTsgfSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGF0dGNvbXBvT2JqLnBycExpc3QubWFwKHZhbHVlID0+IHtcclxuICAgICAgICBpZiAoYXR0Y29tcG9PYmoudmFsdWVzLmluZGV4T2YodmFsdWUuc29ydCkgIT0gLTEpIHtcclxuICAgICAgICB9IGVsc2UgeyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChhdHRjb21wb09iai5hdHRyICsgJ18nICsgdmFsdWUudmFsKS5jbGljaygpOyB9XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhZGRTY3JvbGxCYXIoKSB7XHJcbiAgICBsZXQgZGl2cyA9IChkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbaWRePVwic2NyX1wiXScpIGFzIGFueSk7XHJcbiAgICBkaXZzLmZvckVhY2goKGVsZW1lbnQsIGluZGV4KSA9PiB7XHJcbiAgICAgIGxldCBvZmZzZXR3aSA9IDA7XHJcbiAgICAgIGxldCBzY3JvbGx3aSA9IDA7XHJcbiAgICAgIGxldCBkaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50LmlkKTtcclxuICAgICAgb2Zmc2V0d2kgPSBkaXYub2Zmc2V0V2lkdGg7XHJcbiAgICAgIHNjcm9sbHdpID0gZGl2LnNjcm9sbFdpZHRoO1xyXG4gICAgICBpZiAob2Zmc2V0d2kgIT0gc2Nyb2xsd2kpIHtcclxuICAgICAgICBsZXQgcGVsZSA9IGRpdi5wYXJlbnRFbGVtZW50O1xyXG4gICAgICAgIGxldCBmY2hpbGQ6IGFueSA9IHBlbGUuZmlyc3RFbGVtZW50Q2hpbGQ7XHJcbiAgICAgICAgbGV0IGxjaGlsZDogYW55ID0gcGVsZS5sYXN0RWxlbWVudENoaWxkO1xyXG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGZjaGlsZC5pZCkuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XHJcbiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobGNoaWxkLmlkKS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcclxuICAgICAgICBwZWxlLnN0eWxlLnBhZGRpbmdMZWZ0ID0gXCIzMHB4XCI7XHJcbiAgICAgICAgcGVsZS5zdHlsZS5wYWRkaW5nUmlnaHQgPSBcIjMwcHhcIjtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbnNlbGVjdChiSWQpIHtcclxuICAgIC8vIGNvbnNvbGUubG9nKGJJZCk7XHJcbiAgICBsZXQgb2JqID0gdGhpcy5idXllcnMuZmluZCh4ID0+IHgudmFsdWUgPT0gYklkKTtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdCSWJ5cicsIEpTT04uc3RyaW5naWZ5KG9iaikpO1xyXG4gIH1cclxuXHJcbiAgZ2V0QnV5ZXJzKGVtcGxveWVlKSB7XHJcbiAgICAvLyB0aGlzLmJ1eWVycyA9IFtdO1xyXG4gICAgaWYgKGVtcGxveWVlID09IHVuZGVmaW5lZCB8fCBlbXBsb3llZSA9PSAnJykgcmV0dXJuO1xyXG4gICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqWydlbXBJZG4nXSA9IHRoaXMuZW1wSWQ7XHJcbiAgICByZXFPYmpbJ2xpa2VTdHInXSA9IGVtcGxveWVlO1xyXG4gICAgcmVxT2JqWydmb3JtTm1lJ10gPXRoaXMucm91dGUuc25hcHNob3QucGFyYW1zWydmcm1ubWUnXTtcclxuICAgIHJlcU9ialsna2V5J10gPSAnYnV5ZXJuYW1lJztcclxuICAgIHJlcU9ialsnc3R0J10gPSAnLTEnO1xyXG4gICAgY29uc29sZS5sb2cocmVxT2JqKTtcclxuICAgIHRoaXMuYmlzLmRhdGEocmVxT2JqLCAnbG9hZEJ1eWVyJywgJ21hcmtldGluZy9zZWFyY2gnKVxyXG4gICAgICAuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gICAgICAgIGxldCByZXMgPSBkYXRhLnJlc3VsdDtcclxuICAgICAgICB0aGlzLmJ1eWVycyA9IHJlcy5idXllckxpc3QubWFwKG9wdGlvbiA9PiAoe1xyXG4gICAgICAgICAgdmFsdWU6IG9wdGlvbi5rLFxyXG4gICAgICAgICAgbGFiZWw6IG9wdGlvbi52XHJcbiAgICAgICAgfSkpO1xyXG4gICAgICAgIHRoaXMuX3NwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgIHRoaXMuX3NwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnJvcik7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0VmVuZGVyKGUpIHtcclxuICAgIC8vIHRoaXMuYnV5ZXJzID0gW107XHJcbiAgICBsZXQgcmVxT2JqID0ge307XHJcbiAgICByZXFPYmpbJ2xpa2VTdHInXSA9IGVcclxuICAgIHJlcU9ialsnZm9ybU5tZSddID10aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtc1snZnJtbm1lJ107XHJcbiAgICByZXFPYmpbJ3R5cCddID0gJ3ZlbmRvcic7XHJcbiAgICBjb25zb2xlLmxvZyhyZXFPYmopO1xyXG4gICAgdGhpcy5iaXMuZGF0YShyZXFPYmosICdsb2FkQnV5ZXInLCAnbWFya2V0aW5nL3NlYXJjaCcpXHJcbiAgICAgIC5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgICAgaWYoZGF0YS5zdGF0dXMgPT0gJ1NVQ0NFU1MnKSB7XHJcbiAgICAgICAgICBsZXQgcmVzID0gZGF0YS5yZXN1bHQ7XHJcbiAgICAgICAgICB0aGlzLnZlbmRlckxpc3QgPSByZXMuYnV5ZXJMaXN0Lm1hcChvcHRpb24gPT4gKHtcclxuICAgICAgICAgICAgdmFsdWU6IG9wdGlvbi5rLFxyXG4gICAgICAgICAgICBsYWJlbDogb3B0aW9uLnZcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICAgIHRoaXMuX3NwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLl9zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihkYXRhLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgIHRoaXMuX3NwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnJvcik7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbGVmdFNjcm9sbChkaXYpIHtcclxuICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2Rpdi4nICsgZGl2KS5zY3JvbGxMZWZ0IC09IDI1MDtcclxuICB9XHJcblxyXG4gIHJpZ2h0U2Nyb2xsKGRpdikge1xyXG4gICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZGl2LicgKyBkaXYpLnNjcm9sbExlZnQgKz0gMjUwO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tCb3hGdW4oYXR0T2osIHZhbCwgc3RhdHVzLCBpZCkge1xyXG4gICAgY29uc29sZS5sb2coYXR0T2ouYXR0cik7XHJcbiAgICBpZiAoaWQgPT0gJ3RpbmdlX05vIEJHTScgJiYgc3RhdHVzID09IHRydWUpIHtcclxuICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtaWxreV9uYScpIGFzIGFueSkuY2xpY2soKTtcclxuICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0aW5nZV9CUicpIGFzIGFueSkuZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RpbmdlX0dSJykgYXMgYW55KS5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGluZ2VfTVQnKSBhcyBhbnkpLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtaWxreV9tbDEnKSBhcyBhbnkpLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtaWxreV9tbDInKSBhcyBhbnkpLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtaWxreV9tbDMnKSBhcyBhbnkpLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtaWxreV9tbDQnKSBhcyBhbnkpLmRpc2FibGVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGluZ2VfMTVAMjBAMjUnKSBhcyBhbnkpLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICcjZGRkJztcclxuICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0aW5nZV8zNUA0MEA0NUA1MEA1NScpIGFzIGFueSkuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJyNkZGQnO1xyXG4gICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RpbmdlXzYwQDYxQDYyQDYzJykgYXMgYW55KS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnI2RkZCc7XHJcbiAgICAgIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWlsa3lfNycpIGFzIGFueSkuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJyNkZGQnO1xyXG4gICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21pbGt5XzE1JykgYXMgYW55KS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnI2RkZCc7XHJcbiAgICAgIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWlsa3lfMjAnKSBhcyBhbnkpLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICcjZGRkJztcclxuICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtaWxreV8zMCcpIGFzIGFueSkuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJyNkZGQnO1xyXG4gICAgfSBlbHNlIGlmIChpZCA9PSAndGluZ2VfTm8gQkdNJyAmJiBzdGF0dXMgPT0gZmFsc2UpIHtcclxuICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtaWxreV9uYScpIGFzIGFueSkuY2xpY2soKTtcclxuICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0aW5nZV9CUicpIGFzIGFueSkuZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0aW5nZV9HUicpIGFzIGFueSkuZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0aW5nZV9NVCcpIGFzIGFueSkuZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtaWxreV9tbDEnKSBhcyBhbnkpLmRpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWlsa3lfbWwyJykgYXMgYW55KS5kaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21pbGt5X21sMycpIGFzIGFueSkuZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtaWxreV9tbDQnKSBhcyBhbnkpLmRpc2FibGVkID0gZmFsc2U7XHJcblxyXG4gICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RpbmdlXzE1QDIwQDI1JykgYXMgYW55KS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnI2ZmZic7XHJcbiAgICAgIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGluZ2VfMzVANDBANDVANTBANTUnKSBhcyBhbnkpLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICcjZmZmJztcclxuICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0aW5nZV82MEA2MUA2MkA2MycpIGFzIGFueSkuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJyNmZmYnO1xyXG4gICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21pbGt5XzcnKSBhcyBhbnkpLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICcjZmZmJztcclxuICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtaWxreV8xNScpIGFzIGFueSkuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJyNmZmYnO1xyXG4gICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21pbGt5XzIwJykgYXMgYW55KS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnI2ZmZic7XHJcbiAgICAgIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWlsa3lfMzAnKSBhcyBhbnkpLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICcjZmZmJztcclxuICAgIH1cclxuICAgIC8vIHRoaXMuYWN0aXZlID0gdHJ1ZTtcclxuICAgIC8vIGxldCBlbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncHJfJyArIHZhbCk7XHJcbiAgICAvLyBpZiAoYXR0T2ouYXR0ciA9PSAnc2gnKSB7XHJcbiAgICAvLyAgIGlmIChzdGF0dXMgPT0gdHJ1ZSkge1xyXG4gICAgLy8gICAgIGVsZS5jbGFzc0xpc3QuYWRkKFwic2VsZWN0ZWRSb3dcIik7XHJcbiAgICAvLyAgIH0gZWxzZSB7XHJcbiAgICAvLyAgICAgZWxlLmNsYXNzTGlzdC5yZW1vdmUoXCJzZWxlY3RlZFJvd1wiKTtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfVxyXG4gICAgbGV0IGZvdW5kID0gMDtcclxuICAgIGxldCBmb3VuZDIgPSAwO1xyXG4gICAgYXR0T2oudmFsdWVzLmZvckVhY2goKGVsZW1lbnQsIGluZGV4KSA9PiB7XHJcbiAgICAgIGlmIChzdGF0dXMgPT0gZmFsc2UgJiYgZWxlbWVudCA9PSB2YWwpIHtcclxuICAgICAgICBhdHRPai52YWx1ZXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FsbCcgKyBhdHRPai5hdHRyKSBhcyBhbnkpLmNoZWNrZWQgPSBmYWxzZTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH0gZWxzZSBpZiAoc3RhdHVzID09IHRydWUgJiYgZWxlbWVudCA9PSB2YWwpIHtcclxuICAgICAgICBmb3VuZCA9IDE7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMubW9kaWZ5U2NoLmZvckVhY2goKGVsZW1lbnQsIGluZGV4KSA9PiB7XHJcbiAgICAgIGlmIChzdGF0dXMgPT0gZmFsc2UgJiYgZWxlbWVudCA9PSBpZCkge1xyXG4gICAgICAgIHRoaXMubW9kaWZ5U2NoLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9IGVsc2UgaWYgKHN0YXR1cyA9PSB0cnVlICYmIGVsZW1lbnQgPT0gaWQpIHtcclxuICAgICAgICBmb3VuZDIgPSAxO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBpZiAoc3RhdHVzKSB7XHJcbiAgICAgIGlmIChhdHRPai5hdHRyID09ICdzeicpIHtcclxuICAgICAgICBhdHRPai52YWx1ZXMucHVzaCh2YWxbdmFsLmxlbmd0aCAtIDFdKTtcclxuICAgICAgICB0aGlzLm1vZGlmeVNjaC5wdXNoKGlkW2lkLmxlbmd0aCAtIDFdKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBhdHRPai52YWx1ZXMucHVzaCh2YWwpO1xyXG4gICAgICAgIHRoaXMubW9kaWZ5U2NoLnB1c2goaWQpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnQkltb2RpZnlTZWFyY2hTdHJpbmcnLCB0aGlzLm1vZGlmeVNjaCk7XHJcblxyXG4gICAgLy8gY29uc29sZS5sb2coYXR0T2osIHZhbCwgc3RhdHVzLCBpZCk7XHJcbiAgICB0aGlzLmF0dHJNYWtlcignYycpO1xyXG4gIH1cclxuXHJcbiAgb25lO1xyXG4gIHR3bztcclxuICB0aHJlZTtcclxuICB0aHZndXA7XHJcbiAgZXhSYXRlO1xyXG4gIHNlbGVjdEVsZShjLCBzKSB7XHJcbiAgICBpZiAoYyA9PSAwKSB7XHJcbiAgICAgIGlmIChzID09IHRydWUpIHtcclxuICAgICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2N0X2V4JykgYXMgYW55KS5jbGljaygpO1xyXG4gICAgICAgIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncG9fZXgnKSBhcyBhbnkpLmNsaWNrKCk7XHJcbiAgICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzeV9leCcpIGFzIGFueSkuY2xpY2soKTtcclxuICAgICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJ0d29cIikgYXMgYW55KS5jaGVja2VkID0gZmFsc2U7XHJcbiAgICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwidGhyZWVcIikgYXMgYW55KS5jaGVja2VkID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy50d28gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMudGhyZWUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMudGh2Z3VwID0gdHJ1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2N0X2V4JykgYXMgYW55KS5jbGljaygpO1xyXG4gICAgICAgIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncG9fZXgnKSBhcyBhbnkpLmNsaWNrKCk7XHJcbiAgICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzeV9leCcpIGFzIGFueSkuY2xpY2soKTtcclxuICAgICAgICB0aGlzLnR3byA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudGhyZWUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnRodmd1cCA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKGMgPT0gMSkge1xyXG4gICAgICBpZiAocyA9PSB0cnVlKSB7XHJcbiAgICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjdF9leCcpIGFzIGFueSkuY2xpY2soKTtcclxuICAgICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BvX2V4JykgYXMgYW55KS5jbGljaygpO1xyXG4gICAgICAgIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIm9uZVwiKSBhcyBhbnkpLmNoZWNrZWQgPSBmYWxzZTtcclxuICAgICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJ0aHJlZVwiKSBhcyBhbnkpLmNoZWNrZWQgPSBmYWxzZTtcclxuICAgICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJ0aHZndXBcIikgYXMgYW55KS5jaGVja2VkID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5vbmUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMudGhyZWUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMudGh2Z3VwID0gdHJ1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2N0X2V4JykgYXMgYW55KS5jbGljaygpO1xyXG4gICAgICAgIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncG9fZXgnKSBhcyBhbnkpLmNsaWNrKCk7XHJcbiAgICAgICAgdGhpcy5vbmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnRocmVlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy50aHZndXAgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChjID09IDIpIHtcclxuICAgICAgaWYgKHMgPT0gdHJ1ZSkge1xyXG4gICAgICAgIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY3RfdmcnKSBhcyBhbnkpLmNsaWNrKCk7XHJcbiAgICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwb192ZycpIGFzIGFueSkuY2xpY2soKTtcclxuICAgICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N5X3ZnJykgYXMgYW55KS5jbGljaygpO1xyXG4gICAgICAgIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIm9uZVwiKSBhcyBhbnkpLmNoZWNrZWQgPSBmYWxzZTtcclxuICAgICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJ0d29cIikgYXMgYW55KS5jaGVja2VkID0gZmFsc2U7XHJcbiAgICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwidGh2Z3VwXCIpIGFzIGFueSkuY2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMub25lID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnR3byA9IHRydWU7XHJcbiAgICAgICAgdGhpcy50aHZndXAgPSB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY3RfdmcnKSBhcyBhbnkpLmNsaWNrKCk7XHJcbiAgICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwb192ZycpIGFzIGFueSkuY2xpY2soKTtcclxuICAgICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N5X3ZnJykgYXMgYW55KS5jbGljaygpO1xyXG4gICAgICAgIHRoaXMub25lID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy50d28gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnRodmd1cCA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKGMgPT0gMykge1xyXG4gICAgICBpZiAocyA9PSB0cnVlKSB7XHJcbiAgICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjdF9leCcpIGFzIGFueSkuY2xpY2soKTtcclxuICAgICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BvX2V4JykgYXMgYW55KS5jbGljaygpO1xyXG4gICAgICAgIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3lfZXgnKSBhcyBhbnkpLmNsaWNrKCk7XHJcbiAgICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjdF92ZycpIGFzIGFueSkuY2xpY2soKTtcclxuICAgICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BvX3ZnJykgYXMgYW55KS5jbGljaygpO1xyXG4gICAgICAgIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3lfdmcnKSBhcyBhbnkpLmNsaWNrKCk7XHJcbiAgICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwib25lXCIpIGFzIGFueSkuY2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICAgIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInR3b1wiKSBhcyBhbnkpLmNoZWNrZWQgPSBmYWxzZTtcclxuICAgICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJ0aHJlZVwiKSBhcyBhbnkpLmNoZWNrZWQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm9uZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy50d28gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMudGhyZWUgPSB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY3RfZXgnKSBhcyBhbnkpLmNsaWNrKCk7XHJcbiAgICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwb19leCcpIGFzIGFueSkuY2xpY2soKTtcclxuICAgICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N5X2V4JykgYXMgYW55KS5jbGljaygpO1xyXG4gICAgICAgIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY3RfdmcnKSBhcyBhbnkpLmNsaWNrKCk7XHJcbiAgICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwb192ZycpIGFzIGFueSkuY2xpY2soKTtcclxuICAgICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N5X3ZnJykgYXMgYW55KS5jbGljaygpO1xyXG4gICAgICAgIHRoaXMub25lID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy50d28gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnRocmVlID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgc2luZ2xlVmFsKGF0dE9qLCB2YWwsIGkpIHtcclxuXHJcbiAgICBpZiAoaSA9PSBcInRcIikge1xyXG4gICAgICBsZXQgc3BhY2VUb2NvbW1hID0gdmFsLnJlcGxhY2UoL1sgLF0rL2csIFwiLFwiKTtcclxuICAgICAgbGV0IG5ld0xpbmVUb0NvbW1hID0gc3BhY2VUb2NvbW1hLnJlcGxhY2UoL1xcbi9nLCBcIixcIik7XHJcbiAgICAgIGxldCBwbGluZXMgPSBuZXdMaW5lVG9Db21tYS5zcGxpdCgnLCcpO1xyXG4gICAgICBwbGluZXMgPSBwbGluZXMuZmlsdGVyKHYgPT4gdiAhPSAnJyk7XHJcbiAgICAgIHBsaW5lcyA9IHBsaW5lcy5maWx0ZXIodiA9PiB2ICE9ICcgJyk7XHJcbiAgICAgIGF0dE9qLnZhbHVlcyA9IFsuLi5wbGluZXNdO1xyXG4gICAgICB0aGlzLmF0dHJNYWtlcignYycpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGlmICh2YWwgIT0gJycpIHtcclxuICAgICAgYXR0T2oudmFsdWVzLnB1c2godmFsKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGF0dE9qLnZhbHVlcy5zcGxpY2UoaSwgMSk7XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZyhhdHRPaik7XHJcbiAgICB0aGlzLmF0dHJNYWtlcigndCcpO1xyXG4gIH1cclxuXHJcbiAgb25EYXRlQ2hhbmdlKGF0dHJPYmosIHZhbCwgaSkge1xyXG4gICAgbGV0IGF0dHIgPSBhdHRyT2JqLmF0dHI7XHJcbiAgICBsZXQgZnJtSWQgPSBhdHRyICsgMDtcclxuICAgIGxldCBmcm1WYWwgPSAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZnJtSWQpIGFzIGFueSkudmFsdWU7XHJcbiAgICBhdHRyT2JqLnZhbHVlcy5wdXNoKGZybVZhbCk7XHJcblxyXG4gICAgYXR0ck9iai52YWx1ZXMucHVzaCh2YWwpOyAvL3RvdmFsdWVcclxuXHJcblxyXG4gICAgdGhpcy5hdHRyTWFrZXIoJ3QnKTtcclxuICB9XHJcblxyXG4gIG1vZGlmeVNlYXJjaEZ1bigpIHtcclxuICAgIC8vIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdNZm9vZ2xlJyk7XHJcbiAgICAvLyBsZXQgYnlyID0gIEpTT04ucGFyc2UoIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdieXInKSk7XHJcblxyXG4gICAgLy8gdGhpcy50cm0gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndHJtJyk7XHJcbiAgICB2YXIgZXZlbnQgPSBuZXcgRXZlbnQoJ2NoYW5nZScpO1xyXG4gICAgaWYgKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdCSWNhbGwnKSAhPSBudWxsID09IG51bGwpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdCSW1vZGlmeVNjaFR4dCcpICE9IG51bGwpIHtcclxuICAgICAgICB0aGlzLm1vZGZ5dHh0LmZvckVhY2goKGVsZSwgaW5kZXgpID0+IHtcclxuICAgICAgICAgIGlmIChlbGUuaWQgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlLmlkKSBhcyBhbnkpLnZhbHVlID0gZWxlLnZhbFxyXG4gICAgICAgICAgICBsZXQgaWQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGUuaWQpO1xyXG4gICAgICAgICAgICBpZC5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMubW9kaWZ5LmZvckVhY2goKGVsZSwgaW5kZXgpID0+IHtcclxuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGUpLmNsaWNrKCk7XHJcbiAgICAgICAgaWYgKGluZGV4ICsgMSA9PSB0aGlzLm1vZGlmeS5sZW5ndGgpIHtcclxuICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdCSWNhbGwnKTtcclxuICAgICAgICAgIC8vIHNldFRpbWVvdXQoZnVuY3Rpb24gcmVtb3ZlbG9jYWxzKCkge1xyXG4gICAgICAgICAgLy8gICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnbW9kaWZ5U2VhcmNoU3RyaW5nJyk7XHJcbiAgICAgICAgICAvLyAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdtb2RpZnlTY2hUeHQnKTtcclxuICAgICAgICAgIC8vICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ21vZGlmeXN0YXQnKTtcclxuICAgICAgICAgIC8vIH0sIDUwMClcclxuICAgICAgICB9XHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ0JJY2FsbCcpOyAgLy8gZm9yIHJlc2V0dGluZyBhZnRlciBtb2RpZnkgc2VhcmNoXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG4gIHJhbmdlKGF0dE9qLCB2YWwsIGluZGV4KSB7XHJcbiAgICBsZXQgdHh0T2JqID0ge31cclxuICAgIGxldCB2YWx1ID0gdmFsLnRhcmdldC52YWx1ZTtcclxuICAgIGxldCBmaXJzdCA9IGF0dE9qLnZhbHVlc1swXTtcclxuICAgIGxldCBzZWNvbmQgPSBhdHRPai52YWx1ZXNbMV07XHJcbiAgICAvLyBjb25zb2xlLmxvZyhzZWNvbmQpO1xyXG4gICAgLy8gaWYgKGluZGV4ID09IDAgJiYgc2Vjb25kID09IHVuZGVmaW5lZCkge1xyXG4gICAgLy8gICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQob3BwaWQpIGFzIGFueSkudmFsdWUgPSB2YWx1O1xyXG4gICAgLy8gICBhdHRPai52YWx1ZXNbaW5kZXhdID0gdmFsdTtcclxuICAgIC8vICAgYXR0T2oudmFsdWVzW29wcF0gPSB2YWx1O1xyXG4gICAgLy8gfSBlbHNlIGlmIChpbmRleCA9PSAxICYmIGZpcnN0ID09IHVuZGVmaW5lZCkge1xyXG4gICAgLy8gICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQob3BwaWQpIGFzIGFueSkudmFsdWUgPSB2YWx1O1xyXG4gICAgLy8gICBhdHRPai52YWx1ZXNbaW5kZXhdID0gdmFsdTtcclxuICAgIC8vICAgYXR0T2oudmFsdWVzW29wcF0gPSB2YWx1O1xyXG4gICAgLy8gfSBlbHNlIHtcclxuICAgIC8vICAgYXR0T2oudmFsdWVzW2luZGV4XSA9IHZhbHU7XHJcbiAgICAvLyB9XHJcbiAgICAvLyBhdHRPai52YWx1ZXNbaW5kZXhdID0gdmFsdTtcclxuICAgIGlmICh2YWx1ICE9ICcnKSB7XHJcbiAgICAgIGF0dE9qLnZhbHVlc1tpbmRleF0gPSB2YWx1O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgYXR0T2oudmFsdWVzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICB9XHJcbiAgICAvLyBjb25zb2xlLmxvZyhhdHRPai52YWx1ZXMpO1xyXG4gICAgLy8gaWYgKHZhbC50YXJnZXQudmFsdWUgPT0gJycpIHtcclxuICAgIC8vICAgdGhpcy5tb2RpZnlUeHQuZm9yRWFjaCgoZWxlbWVudCwgaW5kZXgpID0+IHtcclxuICAgIC8vICAgICBpZiAoZWxlbWVudC5pZCA9PSBpZCkge1xyXG4gICAgLy8gICAgICAgdGhpcy5tb2RpZnlUeHQuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIC8vICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdtb2RpZnlTY2hUeHQnLCBKU09OLnN0cmluZ2lmeSh0aGlzLm1vZGlmeVR4dCkpO1xyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgfSk7XHJcbiAgICAvLyB9IGVsc2Uge1xyXG4gICAgLy8gICB0eHRPYmpbJ2lkJ10gPSBpZDtcclxuICAgIC8vICAgdHh0T2JqWyd2YWwnXSA9IGF0dE9qLnZhbHVlc1tpbmRleF07XHJcbiAgICAvLyAgIHRoaXMubW9kaWZ5VHh0LnB1c2godHh0T2JqKTtcclxuICAgIC8vICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ21vZGlmeVNjaFR4dCcsIEpTT04uc3RyaW5naWZ5KHRoaXMubW9kaWZ5VHh0KSk7XHJcbiAgICAvLyB9XHJcbiAgICB0aGlzLmF0dHJNYWtlcignYycpO1xyXG4gIH1cclxuXHJcbiAgYWRkaXRpb25hbChhdHRPaiwgdmFsLCBpbmRleCwgY2FsbCkge1xyXG4gICAgdGhpcy5jYWxsRnJvbSA9IGNhbGw7XHJcbiAgICBsZXQgdHh0T2JqID0ge31cclxuICAgIGxldCB2YWx1ID0gdmFsLnRhcmdldC52YWx1ZTtcclxuICAgIGxldCBmaXJzdCA9IGF0dE9qLnZhbHVlc1swXTtcclxuICAgIGxldCBzZWNvbmQgPSBhdHRPai52YWx1ZXNbMV07XHJcbiAgICBpZiAodmFsdSAhPSAnJykge1xyXG4gICAgICBhdHRPai52YWx1ZXNbaW5kZXhdID0gdmFsdTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGF0dE9qLnZhbHVlcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBmY3cgPSAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NydHd0MCcpIGFzIGFueSkudmFsdWU7XHJcbiAgICBsZXQgdGN3ID0gKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjcnR3dDEnKSBhcyBhbnkpLnZhbHVlO1xyXG5cclxuICAgIC8vIGlmIChhdHRPai52YWx1ZXMubGVuZ3RoID09IDIpIHtcclxuICAgIGlmIChmY3cgIT0gbnVsbCAmJiBmY3cgIT0gdW5kZWZpbmVkICYmIGZjdyAhPSBcIlwiICYmIHRjdyAhPSBudWxsICYmIHRjdyAhPSB1bmRlZmluZWQgJiYgdGN3ICE9IFwiXCIpIHtcclxuXHJcblxyXG4gICAgICAvLyBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnQkljcnR3dCcsIEpTT04uc3RyaW5naWZ5KGF0dE9qLnZhbHVlcykpO1xyXG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnQkljcnR3dCcsIEpTT04uc3RyaW5naWZ5KFtmY3csIHRjd10pKTtcclxuXHJcbiAgICAgIHRoaXMuYXR0ck1ha2VyKCdjJyk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgbXVsdGlzZWxlY3QoYXR0T2osIHZhbCkge1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3NpemUnLCB2YWwpO1xyXG4gICAgYXR0T2oudmFsdWVzID0gW107XHJcbiAgICB2YXIgdGVtcEFyciA9IFtdO1xyXG4gICAgdmFsLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgIGlmIChlbGVtZW50ICE9ICcnICYmIGVsZW1lbnQgIT0gbnVsbCkge1xyXG4gICAgICAgIGlmIChhdHRPai52YWx1ZXMuaW5kZXhPZih2YWwpICE9IC0xKSB7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIC8vIGF0dE9qLnZhbHVlcy5wdXNoKGVsZW1lbnQpO1xyXG4gICAgICAgICAgYXR0T2oudmFsdWVzLnB1c2goZWxlbWVudC5pZCk7XHJcbiAgICAgICAgICB0ZW1wQXJyLnB1c2goZWxlbWVudCk7XHJcbiAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnQklzaXplJywgSlNPTi5zdHJpbmdpZnkodGVtcEFycikpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmF0dHJNYWtlcignYycpO1xyXG4gIH1cclxuXHJcbiAgZGVzZWxlY3QoYXR0T2osIHZhbCkge1xyXG4gICAgYXR0T2oudmFsdWVzID0gW107XHJcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnQklzaXplJyk7XHJcbiAgICB0aGlzLmF0dHJNYWtlcignYycpO1xyXG4gIH1cclxuXHJcbiAgYXR0ck1ha2VyKGMpIHtcclxuICAgIGlmIChjID09ICdjJykge1xyXG4gICAgICB0aGlzLmF0dHIgPSAnJztcclxuICAgICAgdGhpcy5hdHRyVHlwZSA9ICcnO1xyXG4gICAgICB0aGlzLmF0dHJWYWwgPSAnJztcclxuICAgICAgdGhpcy5hdHRyU3RydWN0dXJlRHRsLmZvckVhY2goZWxlMSA9PiB7XHJcbiAgICAgICAgZWxlMS5jb21wb25lbnQuZm9yRWFjaChlbGUyID0+IHtcclxuICAgICAgICAgIGlmIChlbGUyLnZhbHVlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXR0ciArPSBlbGUyLmF0dHIgKyBcIiNcIjtcclxuICAgICAgICAgICAgdGhpcy5hdHRyVHlwZSArPSBlbGUyLmRhdGFUeXBlICsgXCIjXCI7XHJcbiAgICAgICAgICAgIGlmKGVsZTIuZGF0YVR5cGU9PSdkJylcclxuICAgICAgICAgICAgdGhpcy5hdHRyVmFsICs9IGVsZTIudmFsdWVzLmpvaW4oXCJAXCIpLnJlcGxhY2UoLy0vZywgJycpICsgXCIjXCI7XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgdGhpcy5hdHRyVmFsICs9IGVsZTIudmFsdWVzLmpvaW4oXCJAXCIpICsgXCIjXCI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmIChjID09ICd0Jykge1xyXG4gICAgICB0aGlzLmF0dHIgPSAnJztcclxuICAgICAgdGhpcy5hdHRyVHlwZSA9ICcnO1xyXG4gICAgICB0aGlzLmF0dHJWYWwgPSAnJztcclxuICAgICAgdGhpcy5hdHRyU3RydWN0dXJlRHRsLmZvckVhY2goZWxlMSA9PiB7XHJcbiAgICAgICAgZWxlMS5jb21wb25lbnQuZm9yRWFjaChlbGUyID0+IHtcclxuICAgICAgICAgIGlmIChlbGUyLnZhbHVlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIC8vIHRoaXMuYXR0ciArPSBlbGUyLmF0dHIgKyBcIiNcIjtcclxuICAgICAgICAgICAgLy8gdGhpcy5hdHRyVHlwZSArPSBlbGUyLmRhdGFUeXBlICsgXCIjXCI7XHJcbiAgICAgICAgICAgIC8vIHRoaXMuYXR0clZhbCArPSBlbGUyLnZhbHVlc1swXS5zcGxpdCgnICcpLmpvaW4oJ0AnKSArIFwiI1wiO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5hdHRyICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuYXR0ciArPSBlbGUyLmF0dHIgKyBcIiNcIjtcclxuICAgICAgICAgICAgICB0aGlzLmF0dHJUeXBlICs9IGVsZTIuZGF0YVR5cGUgKyBcIiNcIjtcclxuICAgICAgICAgICAgICB0aGlzLmF0dHJWYWwgKz0gZWxlMi52YWx1ZXMuam9pbihcIkBcIikucmVwbGFjZSgvLS9nLCAnJykgKyBcIiNcIjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLmF0dHIgPSBlbGUyLmF0dHIgKyBcIiNcIjtcclxuICAgICAgICAgICAgICB0aGlzLmF0dHJUeXBlID0gZWxlMi5kYXRhVHlwZSArIFwiI1wiO1xyXG4gICAgICAgICAgICAgIHRoaXMuYXR0clZhbCA9IGVsZTIudmFsdWVzLmpvaW4oXCJAXCIpLnJlcGxhY2UoLy0vZywgJycpICsgXCIjXCI7XHJcblxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhlbGUyLnZhbHVlcyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgY29uc29sZS5sb2codGhpcy5hdHRyLCB0aGlzLmF0dHJUeXBlLCB0aGlzLmF0dHJWYWwpO1xyXG4gIH1cclxuXHJcbiAgZ2V0VmFsKHYsIHMpIHtcclxuICAgIGlmIChzID09IHRydWUpIHtcclxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRTdGF0dXMuaW5kZXhPZih2KSAhPSAtMSkge1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRTdGF0dXMucHVzaCh2KVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgaW5kZXggPSB0aGlzLnNlbGVjdGVkU3RhdHVzLmluZGV4T2Yodik7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRTdGF0dXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNldFN0dCh2LCBzKVxyXG5cclxuXHJcbiAgICBjb25zb2xlLmxvZyh0aGlzLnNlbGVjdGVkU3RhdHVzKTtcclxuXHJcbiAgfVxyXG4gIGFuYUFsbEdycFN0dExCTCA9IFtdO1xyXG4gIHNldFN0dCh2LCBzKSB7XHJcbiAgICBpZiAocyA9PSB0cnVlKSB7XHJcbiAgICAgIGlmICh0aGlzLmFuYUFsbEdycFN0dC5pbmRleE9mKHYua2V5KSAhPSAtMSkge1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMuYW5hQWxsR3JwU3R0LnB1c2godi5rZXkpO1xyXG4gICAgICAgIHRoaXMuYW5hQWxsR3JwU3R0TEJMLnB1c2godi5sYWJlbCk7XHJcblxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgYW5haW5kZXggPSB0aGlzLmFuYUFsbEdycFN0dC5pbmRleE9mKHYua2V5KTtcclxuICAgICAgbGV0IGFuYWxibGluZGV4ID0gdGhpcy5hbmFBbGxHcnBTdHRMQkwuaW5kZXhPZih2LmxhYmVsKTtcclxuICAgICAgdGhpcy5hbmFBbGxHcnBTdHRMQkwuc3BsaWNlKGFuYWxibGluZGV4LCAxKTtcclxuICAgICAgdGhpcy5hbmFBbGxHcnBTdHQuc3BsaWNlKGFuYWluZGV4LCAxKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ0JJYW5hU3R0JywgSlNPTi5zdHJpbmdpZnkodGhpcy5hbmFBbGxHcnBTdHQpKTtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdCSWFuYVN0dExCTCcsIEpTT04uc3RyaW5naWZ5KHRoaXMuYW5hQWxsR3JwU3R0TEJMKSk7XHJcblxyXG4gICAgY29uc29sZS5sb2codGhpcy5hbmFBbGxHcnBTdHQpO1xyXG5cclxuICB9XHJcblxyXG4gIHNvbGRTdGF0dXMgPSBbXTtcclxuICBvdGhlclN0YXR1cyA9IFtdO1xyXG5cclxuICBwYXR0ciA9ICcnO1xyXG4gIHBhdHRyVHlwZSA9ICcnO1xyXG4gIHBhdHRyVmFsID0gJyc7XHJcbiAgZmlyc3Q7XHJcbiAgc2Vjb25kO1xyXG4gIGdQZnJvbTtcclxuICBnUHRvO1xyXG4gIGFkZERhdGUodmFsLCBpbmRleCwgY2FsbCkge1xyXG4gICAgaWYgKGluZGV4ID09IDApIHtcclxuICAgICAgdGhpcy5maXJzdCA9IG5ldyBEYXRlKHZhbCk7XHJcbiAgICAgIHRoaXMuZ1Bmcm9tID0gdmFsO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWNvbmQgPSBuZXcgRGF0ZSh2YWwpO1xyXG4gICAgICB0aGlzLmdQdG8gPSB2YWw7XHJcbiAgICB9XHJcbiAgICB0aGlzLnBhdHRyID0gJyc7XHJcbiAgICB0aGlzLnBhdHRyVHlwZSA9ICcnO1xyXG4gICAgLy8gdGhpcy5wYXR0clZhbCA9ICcnO1xyXG4gICAgdGhpcy5wMVxyXG4gICAgaWYgKHZhbCAhPSAnJyAmJiB2YWwgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLnBhdHRyID0gJ3NhbF9kdGUnO1xyXG4gICAgICB0aGlzLnBhdHRyVHlwZSA9ICdkJztcclxuICAgICAgaWYgKGNhbGwgPT0gJ3AxJykge1xyXG4gICAgICAgIHRoaXMucDFbaW5kZXhdID0gdmFsLnJlcGxhY2UoLy0vZywgJycpO1xyXG4gICAgICAgIHRoaXMucGF0dHJWYWwgPSB0aGlzLnAxLmpvaW4oXCJAXCIpO1xyXG4gICAgICB9IGVsc2UgaWYgKGNhbGwgPT0gJ3AyJykge1xyXG4gICAgICAgIHRoaXMucDJbaW5kZXhdID0gdmFsLnJlcGxhY2UoLy0vZywgJycpO1xyXG4gICAgICAgIHRoaXMucGF0dHJWYWwgKz0gdGhpcy5wMi5qb2luKFwiQFwiKSArICd+JztcclxuICAgICAgfSBlbHNlIGlmIChjYWxsID09ICdwMycpIHtcclxuICAgICAgICB0aGlzLnAzW2luZGV4XSA9IHZhbC5yZXBsYWNlKC8tL2csICcnKTtcclxuICAgICAgICB0aGlzLnBhdHRyVmFsICs9IHRoaXMucDMuam9pbihcIkBcIikgKyAnfic7XHJcbiAgICAgIH0gZWxzZSBpZiAoY2FsbCA9PSAncDQnKSB7XHJcbiAgICAgICAgdGhpcy5wNFtpbmRleF0gPSB2YWwucmVwbGFjZSgvLS9nLCAnJyk7XHJcbiAgICAgICAgdGhpcy5wYXR0clZhbCArPSB0aGlzLnA0LmpvaW4oXCJAXCIpICsgJ34nO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBjb25zb2xlLmxvZyh0aGlzLnBhdHRyVmFsKTtcclxuICAgIHRoaXMuYXR0ck1ha2VyKCdjJyk7XHJcblxyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2VTYWxlUGVyaW9kKGRheXMpIHtcclxuICAgIC8vIHRoaXMucGVyaW9kID0gMTtcclxuICAgIGxldCBkdCA9IG5ldyBEYXRlKCk7XHJcbiAgICBkdC5zZXREYXRlKGR0LmdldERhdGUoKSAtIGRheXMpO1xyXG4gICAgbGV0IG1vbnRoID0gJycgKyAoZHQuZ2V0TW9udGgoKSArIDEpLFxyXG4gICAgICBkYXkgPSAnJyArIGR0LmdldERhdGUoKSxcclxuICAgICAgeWVhciA9IGR0LmdldEZ1bGxZZWFyKCk7XHJcbiAgICBpZiAobW9udGgubGVuZ3RoIDwgMikgbW9udGggPSAnMCcgKyBtb250aDtcclxuICAgIGlmIChkYXkubGVuZ3RoIDwgMikgZGF5ID0gJzAnICsgZGF5O1xyXG4gICAgbGV0IGJhY2tEdCA9IFt5ZWFyLCBtb250aCwgZGF5XS5qb2luKCctJyk7XHJcblxyXG4gICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwRnJvbScpIGFzIGFueSkudmFsdWUgPSBiYWNrRHQ7XHJcblxyXG5cclxuICAgIGxldCBkID0gbmV3IERhdGUoKSxcclxuICAgICAgdG1vbnRoID0gJycgKyAoZC5nZXRNb250aCgpICsgMSksXHJcbiAgICAgIHRkYXkgPSAnJyArIGQuZ2V0RGF0ZSgpLFxyXG4gICAgICB0eWVhciA9IGQuZ2V0RnVsbFllYXIoKTtcclxuICAgIGlmICh0bW9udGgubGVuZ3RoIDwgMikgdG1vbnRoID0gJzAnICsgdG1vbnRoO1xyXG4gICAgaWYgKHRkYXkubGVuZ3RoIDwgMikgdGRheSA9ICcwJyArIHRkYXk7XHJcbiAgICBsZXQgdGRhdGUgPSBbdHllYXIsIHRtb250aCwgdGRheV0uam9pbignLScpO1xyXG4gICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwVG8nKSBhcyBhbnkpLnZhbHVlID0gdGRhdGU7XHJcblxyXG5cclxuICAgIHRoaXMuYWRkRGF0ZShiYWNrRHQsIDAsICdwMScpO1xyXG4gICAgdGhpcy5hZGREYXRlKHRkYXRlLCAxLCAncDEnKTtcclxuXHJcblxyXG4gIH1cclxuXHJcbiAgdmlld1Jlc3VsdCh0eXBlKSB7XHJcbiBcclxuICAgIGlmICh0eXBlID09ICdncmlkJykge1xyXG4gICAgICB0aGlzLmdldFNjaFJlc3VsdCgnZycpO1xyXG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndmlld1R5cGUnLCAnZ3JpZFZpZXcnKTtcclxuICAgICAgaWYgKHRoaXMudmlld0dycCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnYW5hR3JwVHlwZScsIEpTT04uc3RyaW5naWZ5KHRoaXMudmlld0dycCkpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT0gJ3BhY2tldFZpZXcnKSB7XHJcbiAgICAgIHRoaXMuZ2V0U2NoUmVzdWx0KCdwJyk7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd2aWV3VHlwZScsICdsaXN0VmlldycpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZW1wSWQgIT0gbnVsbCAmJiB0aGlzLmVtcElkICE9IHVuZGVmaW5lZCAmJiB0aGlzLmVtcElkICE9IFwiXCIpIHtcclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ0JJZUlkJywgdGhpcy5lbXBJZCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGlmICh0aGlzLnNhbGVQZXJpb2QgIT0gdW5kZWZpbmVkICYmIHRoaXMuc2FsZVBlcmlvZCAhPSBudWxsICYmIHRoaXMuc2FsZVBlcmlvZCAhPSBcIlwiKSB7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdCSXNhbGVQZXJpb2QnLCB0aGlzLnNhbGVQZXJpb2QpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvLyBpZiAodGhpcy5wZXJpb2QgIT0gdW5kZWZpbmVkICYmIHRoaXMucGVyaW9kICE9IG51bGwgJiYgdGhpcy5wZXJpb2QgIT0gXCJcIikge1xyXG4gICAgLy8gICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnQklQZXJpb2QnLCB0aGlzLnNhbGVQZXJpb2QpO1xyXG4gICAgLy8gfVxyXG5cclxuICAgXHJcblxyXG5cclxuICB9XHJcblxyXG4gIG9hYyA9IHt9O1xyXG4gIGdldFNjaFJlc3VsdCh2aWV3KSB7XHJcbiAgICBcclxuICAgIGxldCBmcm1kdCA9IChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncEZyb20nKSBhcyBhbnkpLnZhbHVlO1xyXG4gICAgbGV0IHRvZHQgPSAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BUbycpIGFzIGFueSkudmFsdWU7XHJcblxyXG4gICAgbGV0IGZyb21EYXRlOiBhbnkgPSBuZXcgRGF0ZShmcm1kdCk7XHJcbiAgICBsZXQgdG9EYXRlOiBhbnkgPSBuZXcgRGF0ZSh0b2R0KTtcclxuICAgIFxyXG4gICBcclxuICAgIGxldCBkaWZmRGF5czogYW55ID0gTWF0aC5yb3VuZChNYXRoLmFicygoZnJvbURhdGUgLSB0b0RhdGUpIC8gKDI0ICogNjAgKiA2MCAqIDEwMDApKSk7XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZGlmZicsIGRpZmZEYXlzKTtcclxuXHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnc3R0JywgSlNPTi5zdHJpbmdpZnkodGhpcy5kZWZhdWx0U3RhdHVzTGlzdCkpO1xyXG4gICAgaWYgKHRoaXMub2FjICYmIHRoaXMub2FjICE9IG51bGwgJiYgT2JqZWN0LmtleXModGhpcy5vYWMpLmxlbmd0aCA+IDApIHtcclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ0JJYWN3dCcsIEpTT04uc3RyaW5naWZ5KHRoaXMub2FjKSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNlbGVjdGVkU3RhdHVzLmZvckVhY2goZWxlMSA9PiB7XHJcbiAgICAgIGxldCBsS2V5ID0gKGVsZTEuaykudG9Mb3dlckNhc2UoKTtcclxuICAgICAgbGV0IGxWYWwgPSBlbGUxLnY7XHJcbiAgICAgIGlmIChsS2V5ID09ICdzb2xkJykge1xyXG4gICAgICAgIHRoaXMuc29sZFN0YXR1cyA9IFsuLi5sVmFsLnNwbGl0KCldO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGxldCB0ZW1wID0gdGhpcy5hcnJheUNvbnZlcnNpb24obFZhbCk7XHJcbiAgICAgICAgdGhpcy5vdGhlclN0YXR1cyA9IHRoaXMub3RoZXJTdGF0dXMuY29uY2F0KHRlbXApO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIFxyXG4gICAgdGhpcy5nZXRTY2hJZCh0aGlzLm90aGVyU3RhdHVzLCB2aWV3KTtcclxuICB9XHJcblxyXG4gIG9uUGVyaW9kQ2hhbmdlKHBlcmlvZCkge1xyXG4gICAgdGhpcy5wZXJpb2QgPSBwZXJpb2Q7XHJcbiAgfVxyXG5cclxuICBnZXRTY2hJZChzdGF0dXMsIHZpZXcpIHtcclxuXHJcbiAvLyBkZWJ1Z2dlclxyXG4gICAgLy8gbGV0IGZyb21EYXRlOiBhbnkgPSBuZXcgRGF0ZSh0aGlzLmZpcnN0LmdldEZ1bGxZZWFyKCksIHRoaXMuZmlyc3QuZ2V0TW9udGgoKSwgdGhpcy5maXJzdC5nZXREYXRlKCkpO1xyXG4gICAgLy8gbGV0IHRvRGF0ZTogYW55ID0gbmV3IERhdGUodGhpcy5zZWNvbmQuZ2V0RnVsbFllYXIoKSwgdGhpcy5zZWNvbmQuZ2V0TW9udGgoKSwgdGhpcy5zZWNvbmQuZ2V0RGF0ZSgpKTtcclxuICAgIC8vIGxldCBmcm1kdCA9IChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncEZyb20nKSBhcyBhbnkpLnZhbHVlO1xyXG4gICAgLy8gbGV0IHRvZHQgPSAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BUbycpIGFzIGFueSkudmFsdWU7XHJcblxyXG4gICAgLy8gbGV0IGRpZmZEYXlzOiBhbnkgPSBNYXRoLnJvdW5kKE1hdGguYWJzKChmcm1kdCAtIHRvZHQpIC8gKDI0ICogNjAgKiA2MCAqIDEwMDApKSk7XHJcbiAgICAvLyBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZGlmZicsIGRpZmZEYXlzKTtcclxuXHJcbiAgICBsZXQgY3J0ZnJtID0gKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjcnR3dDAnKSBhcyBhbnkpLnZhbHVlO1xyXG4gICAgbGV0IGNydHRvID0gKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjcnR3dDEnKSBhcyBhbnkpLnZhbHVlO1xyXG5cclxuICAgIGlmIChjcnRmcm0gIT0gbnVsbCAmJiBjcnRmcm0gIT0gdW5kZWZpbmVkICYmIGNydGZybSAhPSBcIlwiICYmIGNydHRvICE9IG51bGwgJiYgY3J0dG8gIT0gdW5kZWZpbmVkICYmIGNydHRvICE9IFwiXCIgJiYgY3J0ZnJtID4gMCAmJiBjcnR0byA+IDApIHtcclxuICAgICAgY3J0ZnJtID0gcGFyc2VGbG9hdChjcnRmcm0pO1xyXG4gICAgICBjcnR0byA9IHBhcnNlRmxvYXQoY3J0dG8pO1xyXG4gICAgICB0aGlzLmF0dHJTdHJ1Y3R1cmVEdGwuZm9yRWFjaChlbGUxID0+IHtcclxuICAgICAgICBlbGUxLmNvbXBvbmVudC5mb3JFYWNoKGVsZTIgPT4ge1xyXG4gICAgICAgICAgaWYgKGVsZTIuYXR0ciA9PSAnY3J0d3QnKSB7XHJcbiAgICAgICAgICAgIGVsZTIudmFsdWVzID0gW2NydGZybSwgY3J0dG9dO1xyXG4gICAgICAgICAgICAvLyB0aGlzLmF0dHIgKz0gZWxlMi5hdHRyICsgXCIjXCI7XHJcbiAgICAgICAgICAgIC8vIHRoaXMuYXR0clR5cGUgKz0gZWxlMi5kYXRhVHlwZSArIFwiI1wiO1xyXG4gICAgICAgICAgICAvLyB0aGlzLmF0dHJWYWwgKz0gZWxlMi52YWx1ZXMuam9pbihcIkBcIikgKyBcIiNcIjtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5hdHRyTWFrZXIoJ2MnKTtcclxuXHJcbiAgICB9XHJcblxyXG5cclxuICAgZGVidWdnZXJcclxuICAgIGNvbnNvbGUubG9nKFwic3RhdHVzXCIsc3RhdHVzKTtcclxuICAgIGxldCByZXFPYmogPSB7fTtcclxuICAgIHJlcU9ialsnZm9ybU5tZSddID10aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtc1snZnJtbm1lJ107XHJcbiAgICByZXFPYmpbJ2NvdW50J10gPSAnTic7XHJcbiAgICBpZih0aGlzLmF0dHIuaW5kZXhPZigndm5tJyk9PS0xKVxyXG4gICAgICByZXFPYmpbJ3N0YXR1c0xpc3QnXSA9IHN0YXR1cztcclxuICAgICAgaWYodGhpcy5tb2R1bGVuYW1lPT0naW53YXJkJyl7XHJcbiAgICAgIHRoaXMuYXR0cj10aGlzLmF0dHIrXCJwdXIjXCI7XHJcbiAgICAgIHRoaXMuYXR0clR5cGU9dGhpcy5hdHRyVHlwZStcImMjXCI7XHJcbiAgICAgIHRoaXMuYXR0clZhbD10aGlzLmF0dHJWYWwrXCI2MCNcIjtcclxuICAgICAgfVxyXG4gICAgaWYgKHN0YXR1cy5sZW5ndGggIT0gMCkge1xyXG4gICAgIFxyXG4gICAgICByZXFPYmpbJ2F0dHInXSA9IHRoaXMuYXR0ci5lbmRzV2l0aCgnIycpID8gdGhpcy5hdHRyLnNsaWNlKDAsIC0xKSA6IHRoaXMuYXR0cjtcclxuICAgICAgcmVxT2JqWydhdHRyVHlwZSddID0gdGhpcy5hdHRyVHlwZS5lbmRzV2l0aCgnIycpID8gdGhpcy5hdHRyVHlwZS5zbGljZSgwLCAtMSkgOiB0aGlzLmF0dHJUeXBlO1xyXG4gICAgICByZXFPYmpbJ2F0dHJWYWwnXSA9IHRoaXMuYXR0clZhbC5lbmRzV2l0aCgnIycpID8gdGhpcy5hdHRyVmFsLnNsaWNlKDAsIC0xKSA6IHRoaXMuYXR0clZhbDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZ2V0U29sZFNjaElkKHRoaXMuc29sZFN0YXR1cywgdmlldyk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnNvbGUubG9nKHJlcU9iaik7XHJcbiAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShyZXFPYmopKTtcclxuXHJcbiAgICB0aGlzLl9zcGlubmVyU2VydmljZS5zaG93KCk7XHJcbiAgICB0aGlzLmJpcy5kYXRhKHJlcU9iaiwgJ3NlYXJjaENvdW50JywgJ21hcmtldGluZy9zZWFyY2gnKVxyXG4gICAgICAuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcclxuXHJcbiAgICAgICAgY29uc29sZS5sb2cocmVzcG9uc2UpO1xyXG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gJ1NVQ0NFU1MnKSB7XHJcbiAgICAgICAgICB0aGlzLl9zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgICBsZXQgcmVzdWx0ID0gcmVzcG9uc2UucmVzdWx0O1xyXG4gICAgICAgICAgdGhpcy5zY2hJZCA9IHJlc3VsdC5zZWFyY2hJZG47XHJcbiAgICAgICAgICB0aGlzLnNjaElkID0gJyc7XHJcbiAgICAgICAgICBpZih0aGlzLmF0dHIuaW5kZXhPZigndm5tJyk9PS0xKVxyXG4gICAgICAgICAgdGhpcy5zZWFyY2hJZC5wdXNoKHJlc3BvbnNlLnNlYXJjaElkbik7XHJcbiAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaElkPVtdO1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaElkLnB1c2gocmVzcG9uc2Uuc2VhcmNoSWRuKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChzdGF0dXMubGVuZ3RoICE9IDApIHtcclxuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3NyY0lkbnMnLCB0aGlzLnNlYXJjaElkKTtcclxuICAgICAgICAgICAgaWYgKHZpZXcgPT0gJ2cnKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuc29sZFN0YXR1cy5sZW5ndGggIT0gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRTb2xkU2NoSWQodGhpcy5zb2xkU3RhdHVzLCB2aWV3KTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMubW9kdWxlbmFtZSsnL2FuYWx5c2lzLXJlc3VsdC8nK3RoaXMucm91dGUuc25hcHNob3QucGFyYW1zWydmcm1ubWUnXV0pO1xyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodmlldyA9PSAncCcpIHtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5zb2xkU3RhdHVzLmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdldFNvbGRTY2hJZCh0aGlzLnNvbGRTdGF0dXMsIHZpZXcpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy5tb2R1bGVuYW1lKycvcGt0LWxpc3QvJyt0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtc1snZnJtbm1lJ11dKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5fc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gIH1cclxuICBnZXRTb2xkU2NoSWQoc3RhdHVzLCB2aWV3KSB7XHJcblxyXG4gICAgbGV0IGNydGZybSA9IChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY3J0d3QwJykgYXMgYW55KS52YWx1ZTtcclxuICAgIGxldCBjcnR0byA9IChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY3J0d3QxJykgYXMgYW55KS52YWx1ZTtcclxuXHJcbiAgICBpZiAoY3J0ZnJtICE9IG51bGwgJiYgY3J0ZnJtICE9IHVuZGVmaW5lZCAmJiBjcnRmcm0gIT0gXCJcIiAmJiBjcnR0byAhPSBudWxsICYmIGNydHRvICE9IHVuZGVmaW5lZCAmJiBjcnR0byAhPSBcIlwiICYmIGNydGZybSA+IDAgJiYgY3J0dG8gPiAwKSB7XHJcbiAgICAgIGNydGZybSA9IHBhcnNlRmxvYXQoY3J0ZnJtKTtcclxuICAgICAgY3J0dG8gPSBwYXJzZUZsb2F0KGNydHRvKTtcclxuICAgICAgdGhpcy5hdHRyU3RydWN0dXJlRHRsLmZvckVhY2goZWxlMSA9PiB7XHJcbiAgICAgICAgZWxlMS5jb21wb25lbnQuZm9yRWFjaChlbGUyID0+IHtcclxuICAgICAgICAgIGlmIChlbGUyLmF0dHIgPT0gJ2NydHd0Jykge1xyXG4gICAgICAgICAgICBlbGUyLnZhbHVlcyA9IFtjcnRmcm0sIGNydHRvXTtcclxuICAgICAgICAgICAgLy8gdGhpcy5hdHRyICs9IGVsZTIuYXR0ciArIFwiI1wiO1xyXG4gICAgICAgICAgICAvLyB0aGlzLmF0dHJUeXBlICs9IGVsZTIuZGF0YVR5cGUgKyBcIiNcIjtcclxuICAgICAgICAgICAgLy8gdGhpcy5hdHRyVmFsICs9IGVsZTIudmFsdWVzLmpvaW4oXCJAXCIpICsgXCIjXCI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmF0dHJNYWtlcignYycpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnQklQZXJpb2QnLCB0aGlzLnBlcmlvZCk7XHJcbiAgICAvLyBpZiAodGhpcy5wT2JqICE9IG51bGwgJiYgdGhpcy5wT2JqICE9IHt9ICYmIHRoaXMuc2NoSWQucE9iaiAhPSB1bmRlZmluZWQpIHtcclxuICAgIC8vICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ0JJcEZyb20nLCBKU09OLnN0cmluZ2lmeSh0aGlzLnBPYmopKTtcclxuICAgIC8vIH1cclxuICAgIGNvbnNvbGUubG9nKHN0YXR1cyk7XHJcbiAgICBsZXQgcmVxT2JqID0ge307XHJcbiAgICByZXFPYmpbJ2Zvcm1ObWUnXSA9dGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXNbJ2ZybW5tZSddO1xyXG5cclxuICAgIC8vIGlmICh0aGlzLnNlbGVjdGVkU3VnZyAhPSB1bmRlZmluZWQpIHtcclxuICAgIC8vICAgcmVxT2JqWydidXllcklkbiddID0gdGhpcy5zZWxlY3RlZFN1Z2c7XHJcbiAgICAvLyB9XHJcblxyXG4gICAgcmVxT2JqWydjb3VudCddID0gJ04nO1xyXG4gICAgcmVxT2JqWydzdGF0dXNMaXN0J10gPSBzdGF0dXM7XHJcbiAgICBpZiAoc3RhdHVzLmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgIGRlYnVnZ2VyXHJcbiAgICAgIGlmICh0aGlzLnBhdHRyICE9ICcnKSB7XHJcbiAgICAgICAgbGV0IHBmcm0gPSAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BGcm9tJykgYXMgYW55KS52YWx1ZTtcclxuICAgICAgICBsZXQgcHRvID0gKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwVG8nKSBhcyBhbnkpLnZhbHVlO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiaW5kZXh2bm1cIix0aGlzLmF0dHIuaW5kZXhPZihcInZubVwiKSlcclxuICAgICAgICBpZiAodGhpcy5wYXR0ciA9PSAnc2FsX2R0ZScgJiYgdGhpcy5hdHRyLmluZGV4T2YoJ3NhbF9kdGUnKSA9PS0xICYmIHRoaXMuYXR0ci5pbmRleE9mKFwidm5tXCIpPT0tMSkge1xyXG4gICAgICAgICAgdGhpcy5hdHRyICs9IHRoaXMucGF0dHI7XHJcbiAgICAgICAgICB0aGlzLmF0dHJUeXBlICs9IHRoaXMucGF0dHJUeXBlO1xyXG5cclxuICAgICAgICAgIGxldCBwMSA9IHBmcm0ucmVwbGFjZSgvLS9nLCAnJyk7XHJcbiAgICAgICAgICBsZXQgcDIgPSBwdG8ucmVwbGFjZSgvLS9nLCAnJyk7XHJcblxyXG5cclxuICAgICAgICAgIHRoaXMuYXR0clZhbCArPSBwMSArICdAJyArIHAyO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuYXR0ci5pbmRleE9mKFwidm5tXCIpPT0tMSAgJiYgdGhpcy5wYXR0ciAhPSAnc2FsX2R0ZScgICYmIHRoaXMucGF0dHIgIT0gJyNzYWxfZHRlJykge1xyXG4gICAgICAgICAgdGhpcy5hdHRyICs9IHRoaXMucGF0dHI7XHJcbiAgICAgICAgICB0aGlzLmF0dHJUeXBlICs9IHRoaXMucGF0dHJUeXBlO1xyXG4gICAgICAgICAgdGhpcy5hdHRyVmFsICs9IHRoaXMucGF0dHJWYWw7XHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgLy8gaWYgKHRoaXMuZ1Bmcm9tICE9IG51bGwgJiYgdGhpcy5nUGZyb20gIT0gXCJcIiAmJiB0aGlzLmdQZnJvbSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAvLyAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdCSXBGcm9tJywgSlNPTi5zdHJpbmdpZnkodGhpcy5nUGZyb20pKTtcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgLy8gaWYgKHRoaXMuZ1B0byAhPSBudWxsICYmIHRoaXMuZ1B0byAhPSBcIlwiICYmIHRoaXMuZ1B0byAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAvLyAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdCSXBUbycsIEpTT04uc3RyaW5naWZ5KHRoaXMuZ1B0bykpO1xyXG4gICAgICAgIC8vIH1cclxuXHJcblxyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdCSXBGcm9tJywgSlNPTi5zdHJpbmdpZnkocGZybSkpO1xyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdCSXBUbycsIEpTT04uc3RyaW5naWZ5KHB0bykpO1xyXG5cclxuXHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRTdWdnICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHRoaXMuYXR0ciArPSAnI3NhbF9ieXInO1xyXG4gICAgICAgIHRoaXMuYXR0clR5cGUgKz0gJyN0JztcclxuICAgICAgICB0aGlzLmF0dHJWYWwgKz0gJyMnICsgdGhpcy5zZWxlY3RlZFN1Z2c7XHJcblxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5lbXBJZCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAvL3JlcU9ialsnZW1wSWRuJ10gPSB0aGlzLmVtcElkO1xyXG4gICAgICAgIHRoaXMuYXR0ciArPSAnI3NhbF9lbXAnO1xyXG4gICAgICAgIHRoaXMuYXR0clR5cGUgKz0gJyN0JztcclxuICAgICAgICB0aGlzLmF0dHJWYWwgKz0gJyMnICsgdGhpcy5lbXBJZDtcclxuXHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ0JJRW1wJywgSlNPTi5zdHJpbmdpZnkodGhpcy5lbXBJZCkpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXFPYmpbJ2F0dHInXSA9IHRoaXMuYXR0ci5lbmRzV2l0aCgnIycpID8gdGhpcy5hdHRyLnNsaWNlKDAsIC0xKSA6IHRoaXMuYXR0cjtcclxuICAgICAgcmVxT2JqWydhdHRyVHlwZSddID0gdGhpcy5hdHRyVHlwZS5lbmRzV2l0aCgnIycpID8gdGhpcy5hdHRyVHlwZS5zbGljZSgwLCAtMSkgOiB0aGlzLmF0dHJUeXBlO1xyXG4gICAgICByZXFPYmpbJ2F0dHJWYWwnXSA9IHRoaXMuYXR0clZhbC5lbmRzV2l0aCgnIycpID8gdGhpcy5hdHRyVmFsLnNsaWNlKDAsIC0xKSA6IHRoaXMuYXR0clZhbDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuc2VhcmNoSWQ9dGhpcy5zZWFyY2hJZHx8W107XHJcbiAgICBjb25zb2xlLmxvZyhyZXFPYmopO1xyXG4gICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkocmVxT2JqKSk7XHJcbiAgICB2YXIgaXNFeGN1dGUgPXRydWU7XHJcbiAgICBpZih0aGlzLmF0dHIuaW5kZXhPZihcInZubVwiKSE9LTEgJiYgdGhpcy5zZWFyY2hJZC5sZW5ndGg+MClcclxuICAgICAgaXNFeGN1dGUgPWZhbHNlO1xyXG4gICAgaWYoaXNFeGN1dGUpe1xyXG4gICAgdGhpcy5fc3Bpbm5lclNlcnZpY2Uuc2hvdygpO1xyXG4gICAgdGhpcy5iaXMuZGF0YShyZXFPYmosICdzZWFyY2hDb3VudCcsICdtYXJrZXRpbmcvc2VhcmNoJylcclxuICAgICAgLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2cocmVzcG9uc2UpO1xyXG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gJ1NVQ0NFU1MnKSB7XHJcbiAgICAgICAgICB0aGlzLl9zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgICBsZXQgcmVzdWx0ID0gcmVzcG9uc2UucmVzdWx0O1xyXG4gICAgICAgICAgdGhpcy5zY2hJZCA9IHJlc3VsdC5zZWFyY2hJZG47XHJcbiAgICAgICAgICAvL3RoaXMuc2NoSWQgPSAnJztcclxuICAgICAgICAgIHRoaXMuY250Kys7XHJcbiAgICAgICAgICB0aGlzLnNlYXJjaElkLnB1c2gocmVzcG9uc2Uuc2VhcmNoSWRuKTtcclxuICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdzcmNJZG5zJywgdGhpcy5zZWFyY2hJZCk7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcInZpZXdcIiwgdmlldyk7XHJcbiAgICAgICAgICBpZiAodmlldyA9PSAnZycpIHtcclxuXHJcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt0aGlzLm1vZHVsZW5hbWUrJy9hbmFseXNpcy1yZXN1bHQvJyt0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtc1snZnJtbm1lJ11dKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAodmlldyA9PSAncCcpIHtcclxuXHJcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt0aGlzLm1vZHVsZW5hbWUrJy9wa3QtbGlzdC8nK3RoaXMucm91dGUuc25hcHNob3QucGFyYW1zWydmcm1ubWUnXV0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLl9zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihyZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcblxyXG4gICAgfWVsc2V7XHJcbiAgICAgIGlmICh2aWV3ID09ICdnJykge1xyXG5cclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy5tb2R1bGVuYW1lKycvYW5hbHlzaXMtcmVzdWx0LycrdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXNbJ2ZybW5tZSddXSk7XHJcbiAgICAgIH0gZWxzZSBpZiAodmlldyA9PSAncCcpIHtcclxuXHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMubW9kdWxlbmFtZSsnL3BrdC1saXN0LycrdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXNbJ2ZybW5tZSddXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIFxyXG4gIH1cclxuXHJcbiAgYXJyYXlDb252ZXJzaW9uID0gdmFsdWUgPT4gdmFsdWUuc3BsaXQoKTtcclxuXHJcblxyXG4gIGNsZWFyTG9jYWxTdG9yYWdlcygpIHtcclxuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdCSVBlcmlvZCcpO1xyXG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ0JJYWN3dCcpO1xyXG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ0JJYW5hU3R0Jyk7XHJcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnQklhbmFTdHRMQkwnKTtcclxuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdCSW1vZGlmeVNlYXJjaFN0cmluZycpO1xyXG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ0JJcEZyb20nKTtcclxuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdCSXBUbycpO1xyXG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ0JJc2FsZVBlcmlvZCcpO1xyXG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ3N0dCcpO1xyXG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2RpZmYnKTtcclxuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdCSWVJZCcpO1xyXG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ0JJRW1wJyk7XHJcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnQklieXInKTtcclxuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdCSWNhbGwnKTtcclxuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdCSUxlZ2VuZHMnKTtcclxuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdCSWNydHd0Jyk7XHJcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnQkktUEtUX0dST1VQX0JZJyk7XHJcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnQkktZ3JpZEF2ZycpOyBcclxuICB9XHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnJvdXRlLnBhcmFtcy5zdWJzY3JpYmUoKHBhcmFtczogUGFyYW1zKSA9PiB7XHJcbiAgICB0aGlzLmRyb3Bkb3duU2V0dGluZ3MgPSB7XHJcbiAgICAgIGVuYWJsZUZpbHRlclNlbGVjdEFsbDogZmFsc2UsXHJcbiAgICAgIHNpbmdsZVNlbGVjdGlvbjogZmFsc2UsXHJcbiAgICAgIHRleHQ6IFwiU2VsZWN0IHNpemVzXCIsXHJcbiAgICAgIHNlbGVjdEFsbFRleHQ6ICdTZWxlY3QgQWxsJyxcclxuICAgICAgdW5TZWxlY3RBbGxUZXh0OiAnVW5TZWxlY3QgQWxsJyxcclxuICAgICAgZW5hYmxlU2VhcmNoRmlsdGVyOiB0cnVlLFxyXG4gICAgICBjbGFzc2VzOiBcIm15Y2xhc3MgY3VzdG9tLWNsYXNzXCIsXHJcbiAgICAgIGVzY2FwZVRvQ2xvc2U6IHRydWVcclxuICAgIH07XHJcbiAgICB0aGlzLmNVcmwgPSB0aGlzLnJvdXRlci51cmw7XHJcbiAgICB0aGlzLm1vZHVsZW5hbWU9dGhpcy5jVXJsLnNwbGl0KCcvJylbMV07XHJcbmxldCBiaUNhbGwgPWxvY2FsU3RvcmFnZS5nZXRJdGVtKCdCSWNhbGwnKSB8fCcnO1xyXG4gICAgaWYgKGJpQ2FsbCAhPSAnJykge1xyXG4gICAgICBpZiAobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ0JJbW9kaWZ5U2VhcmNoU3RyaW5nJykgIT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMubW9kaWZ5ID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ0JJbW9kaWZ5U2VhcmNoU3RyaW5nJykuc3BsaXQoJywnKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ0JJbW9kaWZ5U2NoVHh0JykgIT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMubW9kZnl0eHQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdCSW1vZGlmeVNjaFR4dCcpKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ0JJbW9kaWZ5c3RhdCcpICE9IG51bGwpIHtcclxuICAgICAgICB0aGlzLm1vZGZ5c3RhdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdCSW1vZGlmeXN0YXQnKTtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgIH1cclxuXHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5jbGVhckxvY2FsU3RvcmFnZXMoKTtcclxuICAgIH1cclxuICAgIGNvbnNvbGUubG9nKHRoaXMuYW5hQWxsR3JwU3R0KTtcclxuXHJcbiAgICB0aGlzLmxvYWRBbmFseXNpc1NlYXJjaFBhZ2UoKTtcclxuICB9KTtcclxuXHJcbiAgfVxyXG5cclxufVxyXG5cclxuXHJcbi8vIGxldCByZXNvYmogPSB7fVxyXG4vLyByZXNvYmpbJ2VtcGlkJ10gPSB0aGlzLmVtcElkO1xyXG4vLyByZXNvYmpbJ2J1eWVyaWQnXSA9IHRoaXMuc2VsZWN0ZWRTdWdnO1xyXG4vLyAvLyByZXNvYmpbJ3RybWlkJ10gPSB0aGlzLnRybS5idXllcl90ZXJtc19pZG47XHJcbi8vIHJlc29ialsnZXhyYXRlJ10gPSB0aGlzLnRybS54cnRlO1xyXG4vLyBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgncmVzcmVxcGFyYScsIEpTT04uc3RyaW5naWZ5KHJlc29iaikpO1xyXG4vLyBpZiAodGhpcy5zZWFyY2hEZXNjLmxlbmd0aCA+IDEpIHtcclxuLy8gICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnc3JjSWRucycsIEpTT04uc3RyaW5naWZ5KHRoaXMuc2VhcmNoRGVzYykpO1xyXG4vLyAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdyZXNyZXFwYXJhJywgSlNPTi5zdHJpbmdpZnkocmVzb2JqKSlcclxuLy8gICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9zb2xpdGFpcmVzL3Jlc3VsdC8nLCAnc3RvY2tSZXN1bHRGb3JtJ10pOy8vdGhpcy5zY2hJZFxyXG4vLyB9XHJcbi8vIGVsc2Uge1xyXG4vLyAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdyZXNyZXFwYXJhJywgSlNPTi5zdHJpbmdpZnkocmVzb2JqKSlcclxuLy8gICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnc3JjSWRucycsIEpTT04uc3RyaW5naWZ5KHRoaXMuc2VhcmNoRGVzYykpO1xyXG4vLyAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL3NvbGl0YWlyZXMvcmVzdWx0LycsICdzdG9ja1Jlc3VsdEZvcm0nXSk7XHJcbi8vIH0iLCI8ZGl2IGNsYXNzPVwibXRcIj5cclxuICA8ZGl2IGNsYXNzPVwicGFuZWwgcGFuZWwtZGVmYXVsdFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInBhbmVsLWhlYWRpbmdcIj5cclxuICAgICAgPGgzIGNsYXNzPVwicGFuZWwtdGl0bGVcIj5BbmFseXNpcyBTZWFyY2hcclxuICAgICAgICA8c3BhbiBjbGFzcz1cImYtMTJcIj4oe3tjcy5jRGF0ZSB8IGRhdGU6J21lZGl1bSd9fSk8L3NwYW4+XHJcbiAgICAgIDwvaDM+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwiY29udGVudC1mcmFtZVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtZnJhbWUtYm9keVwiIHN0eWxlPVwibWFyZ2luLWxlZnQ6MDtcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInBhbmVsIHBhbmVsLWRlZmF1bHRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicGFuZWwtYm9keVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImluZm9TZWNcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTJcIj5cclxuICAgICAgICAgICAgICAgIDxmb3JtIGNsYXNzPVwiZm9ybS1pbmxpbmVcIiB0YXJnZXQ9XCJfYmxhbmtcIj5cclxuICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidGV4dC1jYXBpdGFsaXplIGxibGNvbG9yXCI+IDxzdHJvbmc+U3RhdHVzOiA8L3N0cm9uZz4gPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwidWxjbGFzc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgc3RhdHVzIG9mIHN0YXR1c0xpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdGF0dXMuayAhPSAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJ7e3N0YXR1cz8ua319XCIgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cImFuYVN0YXR1c1wiIHZhbHVlPVwie3tzdGF0dXM/LnZ9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJnZXRWYWwoc3RhdHVzLCAkZXZlbnQudGFyZ2V0LmNoZWNrZWQpO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwie3tzdGF0dXM/LnZ9fVwiIGNsYXNzPVwidGV4dC1jYXBpdGFsaXplXCI+ICZuYnNwO3t7c3RhdHVzPy5rfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgJm5ic3A7XHJcbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInRleHQtY2FwaXRhbGl6ZSBsYmxjb2xvclwiPiA8c3Ryb25nPkVtcGxveWVlOiA8L3N0cm9uZz4gPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgJm5ic3A7XHJcbiAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBuYW1lPVwiZW1wbG95ZWVcIiBbKG5nTW9kZWwpXT1cImVtcElkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbj5TZWxlY3QgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgZW1wbG95ZWUgb2YgZW1wbG95ZWVzXCIgdmFsdWU9XCJ7e2VtcGxveWVlPy5rfX1cIj57e2VtcGxveWVlPy52fX1cclxuICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICZuYnNwO1xyXG4gICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ0ZXh0LWNhcGl0YWxpemUgbGJsY29sb3JcIj4gPHN0cm9uZz5CdXllcjogPC9zdHJvbmc+IDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICZuYnNwO1xyXG4gICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwid2lkdGg6MjAwcHg7ZGlzcGxheTogaW5saW5lLWJsb2NrO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1zZWxlY3Qgc3R5bGU9XCJ6LWluZGV4OiA1O1wiIHBsYWNlaG9sZGVyPVwiU2VsZWN0IEJ1eWVyc1wiIFthbGxvd0NsZWFyXT1cInRydWVcIiBbb3B0aW9uc109XCJidXllcnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFN1Z2dcIiBuYW1lPVwiYnV5ZXJcIiAoZmlsdGVySW5wdXRDaGFuZ2VkKT1cImdldEJ1eWVycygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3RlZCk9XCJvbnNlbGVjdChzZWxlY3RlZFN1Z2cpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAmbmJzcDtcclxuICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidGV4dC1jYXBpdGFsaXplIGxibGNvbG9yXCIgKm5nSWY9XCJzaG93dmVuZGVyXCI+IDxzdHJvbmc+VmVuZG9yOiA8L3N0cm9uZz4gPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgJm5ic3A7XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJ3aWR0aDoyMDBweDtkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XCIgKm5nSWY9XCJzaG93dmVuZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXNlbGVjdCBzdHlsZT1cInotaW5kZXg6IDU7XCIgcGxhY2Vob2xkZXI9XCJTZWxlY3QgVmVuZG9yXCIgW2FsbG93Q2xlYXJdPVwidHJ1ZVwiIFtvcHRpb25zXT1cInZlbmRlckxpc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ2ZW5kZXJcIiBuYW1lPVwidmVuZGVyXCIgKGZpbHRlcklucHV0Q2hhbmdlZCk9XCJnZXRWZW5kZXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8IS0tIChzZWxlY3RlZCk9XCJnZXRUZXJtcyhzZWxlY3RlZFN1Z2cpXCIgLS0+XHJcbiAgICAgICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+IDxzdHJvbmc+IFBlcmlvZDogPC9zdHJvbmc+IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJ3aWR0aDogMTE1cHg7ZGlzcGxheTogaW5saW5lLWJsb2NrO1wiPlxyXG4gICAgICAgICAgICAgICAgICA8IS0tIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiB2YWx1ZT1cIjFcIiBbKG5nTW9kZWwpXT1cInBlcmlvZFwiIC8+IC0tPlxyXG4gICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgWyhuZ01vZGVsKV09XCJwZXJpb2RcIiAoY2hhbmdlKT1cIm9uUGVyaW9kQ2hhbmdlKHBlcmlvZClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uPlNlbGVjdCA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBiaSBvZiBiaVBlcmlvZExpc3RcIiB2YWx1ZT1cInt7Ymk/Lmt9fVwiPnt7Ymk/LnZ9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBlcmlvZGljc2NoXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwZXJpb2RpY2RhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPlAxPC9zdHJvbmc+XHJcbiAgICAgICAgICAgICAgICAgICAgRnJvbSA8aW5wdXQgdHlwZT1cImRhdGVcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwicEZyb21cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwiYWRkRGF0ZSgkZXZlbnQudGFyZ2V0LnZhbHVlLDAsJ3AxJyk7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgVG8gPGlucHV0IHR5cGU9XCJkYXRlXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cInBUb1wiIChibHVyKT1cImFkZERhdGUoJGV2ZW50LnRhcmdldC52YWx1ZSwxLCdwMScpO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICZuYnNwOyZuYnNwO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxzdHJvbmc+UDI8L3N0cm9uZz5cclxuICAgICAgICAgICAgICAgICAgICBGcm9tIDxpbnB1dCB0eXBlPVwiZGF0ZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgKGNoYW5nZSk9XCJhZGREYXRlKCRldmVudC50YXJnZXQudmFsdWUsMCwncDInKTtcIj5cclxuICAgICAgICAgICAgICAgICAgICBUbyA8aW5wdXQgdHlwZT1cImRhdGVcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIChjaGFuZ2UpPVwiYWRkRGF0ZSgkZXZlbnQudGFyZ2V0LnZhbHVlLDEsJ3AyJyk7XCI+IC0tPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInBlcmlvZGljZGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+UDM8L3N0cm9uZz5cclxuICAgICAgICAgICAgICAgICAgICBGcm9tIDxpbnB1dCB0eXBlPVwiZGF0ZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgKGNoYW5nZSk9XCJhZGREYXRlKCRldmVudC50YXJnZXQudmFsdWUsMCwncDMnKTtcIj5cclxuICAgICAgICAgICAgICAgICAgICBUbyA8aW5wdXQgdHlwZT1cImRhdGVcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIChjaGFuZ2UpPVwiYWRkRGF0ZSgkZXZlbnQudGFyZ2V0LnZhbHVlLDEsICdwMycpO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICZuYnNwOyZuYnNwO1xyXG4gICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+UDQ8L3N0cm9uZz5cclxuICAgICAgICAgICAgICAgICAgICBGcm9tIDxpbnB1dCB0eXBlPVwiZGF0ZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgKGNoYW5nZSk9XCJhZGREYXRlKCRldmVudC50YXJnZXQudmFsdWUsMCwncDQnKTtcIj5cclxuICAgICAgICAgICAgICAgICAgICBUbyA8aW5wdXQgdHlwZT1cImRhdGVcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIChjaGFuZ2UpPVwiYWRkRGF0ZSgkZXZlbnQudGFyZ2V0LnZhbHVlLDEsJ3A0Jyk7XCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBlcmlvZGljc2NoXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzdHJvbmc+U2FsZSBEYXlzPC9zdHJvbmc+XHJcbiAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cInNhbGVQZXJpb2RcIiBbKG5nTW9kZWwpXT1cInNhbGVQZXJpb2RcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPW9uQ2hhbmdlU2FsZVBlcmlvZChzYWxlUGVyaW9kKT5cclxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBkYXlzIG9mIGJpX3NhbGVfZHlzXCIgdmFsdWU9XCJ7e2RheXMua319XCI+e3tkYXlzLnZ9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoc2VjXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFic3NlY1wiPlxyXG4gICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJuYXYgbmF2LXRhYnNcIiBzdHlsZT1cIm1hcmdpbjogMTBweCAwO1wiIHJvbGU9XCJ0YWJsaXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIHJvbGU9XCJwcmVzZW50YXRpb25cIiAqbmdGb3I9XCJsZXQgYXR0clN0cnVjdHVyZSBvZiBhdHRyU3RydWN0dXJlRHRsO1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY3Muc2Nyb2xsVG9EaXYoYXR0clN0cnVjdHVyZS5ncnApXCI+PGEgaHJlZj1cIiN7e2F0dHJTdHJ1Y3R1cmUuZ3JwfX1cIiBhcmlhLWNvbnRyb2xzPVwiaG9tZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJ0YWJcIiBkYXRhLXRvZ2dsZT1cInRhYlwiPnt7YXR0clN0cnVjdHVyZS5ncnB9fTwvYT48L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2NoY3JhdGVyaWFcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDEwcHg7XCIgaWQ9XCJ7e2F0dHJTdHJ1Y3R1cmUuZ3JwfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhdHRyU3RydWN0dXJlIG9mIGF0dHJTdHJ1Y3R1cmVEdGw7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdycGhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGg2Pnt7YXR0clN0cnVjdHVyZS5ncnB9fTwvaDY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYXR0Y29tcG8gb2YgYXR0clN0cnVjdHVyZS5jb21wb25lbnQ7bGV0IGkgPSBpbmRleFwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD1cInt7YXR0clN0cnVjdHVyZS5ncnB9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbnRyb2wtbGFiZWwgaGVhZGVycyBjb2wtbWQtMSB0ZXh0LXJpZ2h0XCIgKm5nSWY9XCJhdHRjb21wby5hdHRyID09ICdjdCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW4tdG9wOiAxMHB4O1wiPkNQUzwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMVwiICpuZ0lmPVwiYXR0Y29tcG8uYXR0ciA9PSAnY3QnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwib3ZlcmZsb3cteDogYXV0bzt3aGl0ZS1zcGFjZTogbm93cmFwO21hcmdpbi10b3A6IDEwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2stYnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvdXRDaGtDbHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAwO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGlkPVwib25lXCIgY2xhc3M9XCJwcm50Y2hrXCIgW2Rpc2FibGVkXT1cIm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RFbGUoMCAsICRldmVudC50YXJnZXQuY2hlY2tlZCk7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4zRVg8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNrLWJ1dHRvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvdXRDaGtDbHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDA7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBpZD1cInR3b1wiIGNsYXNzPVwicHJudGNoa1wiIFtkaXNhYmxlZF09XCJ0d29cIiAoY2xpY2spPVwic2VsZWN0RWxlKDEgLCAkZXZlbnQudGFyZ2V0LmNoZWNrZWQpO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4yRVg8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2stYnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvdXRDaGtDbHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAwO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGlkPVwidGh2Z3VwXCIgY2xhc3M9XCJwcm50Y2hrXCIgW2Rpc2FibGVkXT1cInRodmd1cFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RFbGUoMyAsICRldmVudC50YXJnZXQuY2hlY2tlZCk7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48Yj4gJnVhcnI7PC9iPiAzVkc8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgc3R5bGU9XCJtYXJnaW4tdG9wOjE1cHg7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsnbWFyZ2luLXRvcCc6KChhdHRjb21wby5kYXRhVHlwZSA9PSAndCcgJiYgYXR0Y29tcG8uYXR0cj09J3ZubScpIHx8IGF0dGNvbXBvLmRhdGFUeXBlID09ICdkJyB8fCBhdHRjb21wby5kYXRhVHlwZSA9PSAnbicgKT8nMzBweCc6JzE1cHgnfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInB1bGwtcmlnaHRcIj57e2F0dGNvbXBvLnByaW50fX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC17e2F0dGNvbXBvLmRpc3BsYXlUeXBlfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsnb3ZlcmZsb3cteCcgOiBhdHRjb21wby5hdHRyID09ICdzeicgPyAndW5zZXQnOiAnYXV0byd9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIm1hcmdpbi10b3A6IDEwcHg7d2hpdGUtc3BhY2U6IG5vd3JhcDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxzcGFuIGlkPVwibHt7YXR0Y29tcG8uYXR0cn19XCIgY2xhc3M9XCJidXR0b24gbGFyclwiICpuZ0lmPVwiYXR0Y29tcG8uZGF0YVR5cGUgPT0gJ2MnICYmIGF0dGNvbXBvLmF0dHIgIT0gJ3N6J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwibGVmdFNjcm9sbChhdHRjb21wby5hdHRyKycnK2F0dGNvbXBvLmRhdGFUeXBlKVwiPjxpIHN0eWxlPVwiZm9udC1zaXplOiAxNnB4O2NvbG9yOiAjM2I1OTk4O1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmEgZmEtY2hldnJvbi1sZWZ0XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwib3ZlcmZsb3cteDogYXV0bztcIiBjbGFzcz1cInt7YXR0Y29tcG8uYXR0cisnJythdHRjb21wby5kYXRhVHlwZX19XCIgaWQ9XCJzY3Jfe3thdHRjb21wby5kaXNwbGF5VHlwZSsnJythdHRjb21wby5hdHRyKycnK2F0dGNvbXBvLmRhdGFUeXBlfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHBycExzdCBvZiBhdHRjb21wby5wcnBMaXN0O2xldCBpID1pbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogaW5saW5lLWJsb2NrO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjay1idXR0b25cIiAqbmdJZj1cImF0dGNvbXBvLmRhdGFUeXBlID09ICdjJyAmJiBhdHRjb21wby5hdHRyICE9ICdzeidcIiBpZD1cInt7YXR0Y29tcG8uYXR0cisnXycrcHJwTHN0LnNvcnR9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm91dENoa0Nsc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAwO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiB2YWx1ZT1cInt7cHJwTHN0LnNvcnR9fVwiIG5hbWU9XCJ7e3BycExzdC5zb3J0fX1cIiBpZD1cInt7YXR0Y29tcG8uYXR0cisnXycrcHJwTHN0LnZhbH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjaGVja0JveEZ1bihhdHRjb21wbywgcHJwTHN0LnNvcnQsICRldmVudC50YXJnZXQuY2hlY2tlZCxhdHRjb21wby5hdHRyKydfJytwcnBMc3QudmFsKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7cHJwTHN0LnByaW50fX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBpZD1cInJ7e2F0dGNvbXBvLmF0dHJ9fVwiIGNsYXNzPVwiYnV0dG9uIHJhcnJcIiAqbmdJZj1cImF0dGNvbXBvLmRhdGFUeXBlID09ICdjJyAmJiBhdHRjb21wby5hdHRyICE9ICdzeidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJpZ2h0U2Nyb2xsKGF0dGNvbXBvLmF0dHIrJycrYXR0Y29tcG8uZGF0YVR5cGUpXCI+PGkgc3R5bGU9XCJmb250LXNpemU6IDE2cHg7Y29sb3I6ICMzYjU5OTg7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmYSBmYS1jaGV2cm9uLXJpZ2h0XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPjwvc3Bhbj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gaWQ9XCJse3thdHRjb21wby5hdHRyfX1cIiBjbGFzcz1cImJ1dHRvbiBsYXJyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYXR0Y29tcG8uZGF0YVR5cGUgPT0gJ2MnICYmIGF0dGNvbXBvLmF0dHIgIT0gJ3N6J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwibGVmdFNjcm9sbChhdHRjb21wby5hdHRyKycnK2F0dGNvbXBvLmRhdGFUeXBlKVwiPjxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiZm9udC1zaXplOiAxNnB4O2NvbG9yOiAjM2I1OTk4O1wiIGNsYXNzPVwiZmEgZmEtY2hldnJvbi1sZWZ0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwib3ZlcmZsb3cteDogaGlkZGVuO1wiIGNsYXNzPVwie3thdHRjb21wby5hdHRyKycnK2F0dGNvbXBvLmRhdGFUeXBlfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJzY3Jfe3thdHRjb21wby5kaXNwbGF5VHlwZSsnJythdHRjb21wby5hdHRyKycnK2F0dGNvbXBvLmRhdGFUeXBlfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjay1idXR0b25cIiAqbmdJZj1cImF0dGNvbXBvLmRhdGFUeXBlID09ICdjJyAmJiBhdHRjb21wby5hdHRyICE9ICdzeidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3V0Q2hrQ2xzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAwO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgW2NoZWNrZWRdPVwiY2hrXCIgaWQ9XCJhbGx7e2F0dGNvbXBvLmF0dHJ9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdEFsbChhdHRjb21wbywgJGV2ZW50KTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+QWxsPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHBycExzdCBvZiBhdHRjb21wby5wcnBMaXN0O2xldCBpID1pbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogaW5saW5lLWJsb2NrO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjay1idXR0b25cIiAqbmdJZj1cImF0dGNvbXBvLmRhdGFUeXBlID09ICdjJyAmJiBhdHRjb21wby5hdHRyICE9ICdzeidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJ7e2F0dGNvbXBvLmF0dHIrJ18nK3BycExzdC5zb3J0fX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvdXRDaGtDbHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgdmFsdWU9XCJ7e3BycExzdC5zb3J0fX1cIiBuYW1lPVwie3twcnBMc3Quc29ydH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwie3thdHRjb21wby5hdHRyKydfJytwcnBMc3QudmFsfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNoZWNrQm94RnVuKGF0dGNvbXBvLCBwcnBMc3Quc29ydCwgJGV2ZW50LnRhcmdldC5jaGVja2VkLGF0dGNvbXBvLmF0dHIrJ18nK3BycExzdC52YWwpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3twcnBMc3QucHJpbnR9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGlkPVwicnt7YXR0Y29tcG8uYXR0cn19XCIgY2xhc3M9XCJidXR0b24gcmFyclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImF0dGNvbXBvLmRhdGFUeXBlID09ICdjJyAmJiBhdHRjb21wby5hdHRyICE9ICdzeidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJpZ2h0U2Nyb2xsKGF0dGNvbXBvLmF0dHIrJycrYXR0Y29tcG8uZGF0YVR5cGUpXCI+PGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJmb250LXNpemU6IDE2cHg7Y29sb3I6ICMzYjU5OTg7XCIgY2xhc3M9XCJmYSBmYS1jaGV2cm9uLXJpZ2h0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYXR0Y29tcG8uYXR0ciA9PSAnc3onXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsnbWFyZ2luLXRvcCcgOiBhdHRjb21wby5hdHRyID09ICdzeicgPyAnLTIwcHgnIDogJzAnfVwiPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxuZy1zZWxlY3QgcGxhY2Vob2xkZXI9XCJTZWxlY3QgU2l6ZXNcIiBpZD1cInt7YXR0Y29tcG8uYXR0cn19XCIgW29wdGlvbnNdPVwiYXR0Y29tcG8ucHJwTGlzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic3pwcnBcIiBuYW1lPVwie3thdHRjb21wby5hdHRyfX1cIiBbbXVsdGlwbGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZXNlbGVjdGVkKT1cIm11bHRpc2VsZWN0KGF0dGNvbXBvLHN6cHJwKVwiIChzZWxlY3RlZCk9XCJtdWx0aXNlbGVjdChhdHRjb21wbyxzenBycClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWxsb3dDbGVhcl09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjb3B0aW9uVGVtcGxhdGUgbGV0LW9wdGlvbj1cIm9wdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmYW1mYW1mYW0tZmxhZ3Mge3tvcHRpb24/LnZhbHVlLnRvTG93ZXJDYXNlKCl9fVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7b3B0aW9uPy5sYWJlbH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXNlbGVjdD4gLS0+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhbmd1bGFyMi1tdWx0aXNlbGVjdCBbZGF0YV09XCJhdHRjb21wby5wcnBMaXN0XCIgWyhuZ01vZGVsKV09XCJzenBycFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZXR0aW5nc109XCJkcm9wZG93blNldHRpbmdzXCIgKG9uU2VsZWN0KT1cIm11bHRpc2VsZWN0KGF0dGNvbXBvLHN6cHJwKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkRlU2VsZWN0KT1cIm11bHRpc2VsZWN0KGF0dGNvbXBvLHN6cHJwKVwiIChvblNlbGVjdEFsbCk9XCJtdWx0aXNlbGVjdChhdHRjb21wbyxzenBycClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25EZVNlbGVjdEFsbCk9XCJkZXNlbGVjdChhdHRjb21wbyxzenBycClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYW5ndWxhcjItbXVsdGlzZWxlY3Q+XHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cIm92ZXJmbG93LXg6IGhpZGRlbjtcIiAqbmdJZj1cImF0dGNvbXBvLmRhdGFUeXBlID09ICduJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCIgaWQ9XCJ7e2F0dGNvbXBvLmF0dHIrJycrMH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwie3thdHRjb21wby5hdHRyfX1cIiAoY2hhbmdlKT1cImFkZGl0aW9uYWwoYXR0Y29tcG8sJGV2ZW50LDAsICdjd3J0bScpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkZyb21cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCIgc3R5bGU9XCJtYXJnaW46IDA7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCIgaWQ9XCJ7e2F0dGNvbXBvLmF0dHIrMX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwie3thdHRjb21wby5hdHRyfX1cIiAoY2hhbmdlKT1cImFkZGl0aW9uYWwoYXR0Y29tcG8sJGV2ZW50LDEsICdjd3J0bScpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlRvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPHNwYW4gKm5nSWY9XCJhdHRjb21wby5hdHRyID09ICdjcnR3dCdcIiBjbGFzcz1cImFkZGJ0blwiIChjbGljayk9XCJhZGRDd3J0KCk7XCI+PGkgW25nQ2xhc3NdPVwidGcgPT0gdHJ1ZSA/ICdmYSBmYS1taW51cycgOiAnZmEgZmEtcGx1cydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYXR0Y29tcG8uYXR0ciA9PSAnY3J0d3QnICYmIHRnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFkZGl0aW9uYWxEaXZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IHd0ZyBvZiB3dGdBcnJ5O2xldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7aSsxfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIChjaGFuZ2UpPVwiYWRkaXRpb25hbCh3dGcsICRldmVudCwgMCwgJ2N3cnRjJylcIiBzdHlsZT1cImJvcmRlci1yYWRpdXM6IDJweDtib3JkZXI6IDFweCBzb2xpZCAjYzljOWM5O2hlaWdodDogMjVweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuYnNwOyZuYnNwOyZuYnNwOyA8aW5wdXQgdHlwZT1cInRleHRcIiAoY2hhbmdlKT1cImFkZGl0aW9uYWwod3RnLCAkZXZlbnQsIDEsJ2N3cnRjJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImJvcmRlci1yYWRpdXM6IDJweDtib3JkZXI6IDFweCBzb2xpZCAjYzljOWM5O2hlaWdodDogMjVweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJhdHRjb21wby5kYXRhVHlwZSA9PSAndCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCIgaWQ9XCJ7e2F0dGNvbXBvLmF0dHIrJycrMH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwie3thdHRjb21wby5hdHRyfX1cIiAoY2hhbmdlKT1cInNpbmdsZVZhbChhdHRjb21wbywkZXZlbnQudGFyZ2V0LnZhbHVlLCAndCcpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xzPVwiNTBcIiByb3dzPVwiM1wiPjwvdGV4dGFyZWE+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxpbnB1dCB0eXBlPVwidGV4dFwiIGlkPVwie3thdHRjb21wby5hdHRyKycnKzB9fVwiIHN0eWxlPVwid2lkdGg6MjAlXCIgbmFtZT1cInt7YXR0Y29tcG8uYXR0cn19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInNpbmdsZVZhbChhdHRjb21wbywkZXZlbnQudGFyZ2V0LnZhbHVlLCAndCcpXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCI+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgKm5nSWY9XCJhdHRjb21wby5kYXRhVHlwZSA9PSAnZCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiZGF0ZVwiIGlkPVwie3thdHRjb21wby5hdHRyKycnKzB9fVwiIG5hbWU9XCJ7e2F0dGNvbXBvLmF0dHJ9fVwiIChibHVyKT1cInNpbmdsZVZhbChhdHRjb21wbywkZXZlbnQudGFyZ2V0LnZhbHVlLCAwKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYXR0Y29tcG8uZGF0YVR5cGUgPT0gJ2QnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1yb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImRhdGVcIiAjdG9kdGUgaWQ9XCJ7e2F0dGNvbXBvLmF0dHIrJycrMH19XCIgbmFtZT1cInt7YXR0Y29tcG8uYXR0cn19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRnJvbVwiIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgY29sLW1kLTZcIiBzdHlsZT1cIm1hcmdpbjogMDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImRhdGVcIiBpZD1cInt7YXR0Y29tcG8uYXR0cisnJysxfX1cIiBuYW1lPVwie3thdHRjb21wby5hdHRyfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwib25EYXRlQ2hhbmdlKGF0dGNvbXBvLCRldmVudC50YXJnZXQudmFsdWUsMSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCIgcGxhY2Vob2xkZXI9XCJUb1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiKGkrMSklMz09MFwiIHN0eWxlPVwiY2xlYXI6Ym90aFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGFnZWZvb3RlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICA8Zm9ybSBjbGFzcz1cImZvcm0taW5saW5lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB1bGwtcmlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2NoQ291bnRcIiAqbmdJZj1cImNvdW50ID4gJzAnXCI+Q291bnQgOiB7e2NvdW50fX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbmFtZT1cInZpZXdHcnBcIiBbKG5nTW9kZWwpXT1cInZpZXdHcnBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbj5TZWxlY3QgR3JvdXA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgZ3JvdXAgb2YgZ3JvdXBzXCIgW25nVmFsdWVdPVwiZ3JvdXBcIj57e2dyb3VwLm5hbWV9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+ICZuYnNwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgPCEtLSA8c2VsZWN0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbmFtZT1cInZpZXdGb3JtYXRlXCIgWyhuZ01vZGVsKV09XCJ2aWV3Rm9ybWF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uPlNlbGVjdCA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgdmlldyBvZiB2aWV3T3B0aW9uc1wiIHZhbHVlPVwie3t2aWV3Py5mb3JtX2ZpZWxkfX1cIj57e3ZpZXc/LmZvcm1fZmllbGRfdGl0bGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PiAmbmJzcDsgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxhIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzXCIgKGNsaWNrKT1cInZpZXdSZXN1bHQoKTtcIiB0YXJnZXQ9XCJfYmxhbmtcIj5TdWJtaXQ8L2E+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPCEtLSBbKG5nTW9kZWwpXT1cInZpZXdGb3JtYXRlXCIgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB2aWV3IG9mIHZpZXdPcHRpb25zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzXCIgKGNsaWNrKT1cInZpZXdSZXN1bHQodmlldy5mb3JtX2ZpZWxkKTtcIiAgdGFyZ2V0PVwiX2JsYW5rXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIm1hcmdpbi1yaWdodDogMTVweDtcIj57e3ZpZXc/LmZvcm1fZmllbGRfdGl0bGV9fTwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PiJdfQ==