@ksremp/ngx-ksremp-app-lib 1.0.0 → 1.0.2
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.
- package/README.md +46 -46
- package/esm2022/lib/components/add-employer/add-employer.component.mjs +11 -12
- package/esm2022/lib/components/questionnaire/common-success/common-success.page.mjs +2 -2
- package/esm2022/lib/components/questionnaire/dynamic-form.component.mjs +4 -1
- package/fesm2022/ksremp-ngx-ksremp-app-lib.mjs +16 -14
- package/fesm2022/ksremp-ngx-ksremp-app-lib.mjs.map +1 -1
- package/lib/components/questionnaire/dynamic-form.component.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -363,7 +363,7 @@ export class CommonSuccessPage extends BasePage {
|
|
|
363
363
|
this.successPageElementArr.next([
|
|
364
364
|
{ type: 'header', description: "<h1>¡Ups! No se pudo procesar tu solicitud.</h1>\t\t", indent: 0, fontSize: 0 },
|
|
365
365
|
{ type: 'subhheader', description: '<h4>Por favor, inténtelo de nuevo después de un tiempo.<h4>\t\t', indent: 0, fontSize: 0 },
|
|
366
|
-
{ type: 'buttonText', description: '
|
|
366
|
+
{ type: 'buttonText', description: 'Pagina de inicio', indent: 0, fontSize: 0 }
|
|
367
367
|
]);
|
|
368
368
|
}
|
|
369
369
|
else {
|
|
@@ -525,4 +525,4 @@ export class CommonSuccessPage extends BasePage {
|
|
|
525
525
|
args: [{ selector: 'common-success', template: "<ion-header>\r\n <app-header [secondToolbar]=\"false\"></app-header>\r\n</ion-header>\r\n\r\n<ion-content>\r\n <app-content [showHelp]=\"false\" [hideFooter]=\"true\">\r\n <app-multi-questionnaire [qeQueryModels]=\"qeQueryModels\" *ngIf=\"isOpenQe\" [showClose]=\"false\" \r\n (onComplete)=\"quSuccess()\" [header]=\"popUpHeader\" [showQuestionNumber]=\"true\"></app-multi-questionnaire>\r\n <ion-row class=\"ion-padding\" *ngIf=\"isLoading\">\r\n <ion-col class=\"ion-text-center\">\r\n <ion-label class=\"box\"style=\"color:var(--ion-color-grey); font-size: 24px\">\r\n <div [innerHTML]=\"sanitizer.bypassSecurityTrustHtml(waitingMessage)\"></div></ion-label>\r\n <br>\r\n <ion-spinner name=\"dots\"></ion-spinner>\r\n </ion-col>\r\n </ion-row>\r\n\r\n <div *ngIf=\"elements.getValue() && !isLoading\">\r\n\r\n <div *ngFor=\"let element of elements.getValue(); let i = index\">\r\n <div [innerHTML]=\"element.description\" style=\"text-align: left;\" *ngIf=\"element.type ==='header'\"\r\n style=\"color:var(--ion-color-grey);\" style=\"padding-left: 25px;\">\r\n </div>\r\n </div>\r\n\r\n <ion-grid>\r\n <div *ngFor=\"let element of elements.getValue(); let i = index\">\r\n <ion-row *ngIf=\"element.type ==='subhheader'\">\r\n <ion-col class=\"ion-text-center ion-padding\" size=\"12\" sizeSm=\"12\" sizeXs=\"12\" sizeMd=\"10\" sizeLg=\"8\"\r\n sizeXl=\"8\" offsetMd=\"1\" offsetXl=\"2\" offsetLg=\"2\">\r\n <div [innerHTML]=\"element.description\" class=\"box\" style=\"margin-bottom: 20px;\"\r\n style=\"color:var(--ion-color-grey);\">\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n\r\n <ion-row *ngIf=\"element.type ==='text1'\">\r\n <ion-col class=\"ion-padding\" size=\"12\" sizeSm=\"12\" sizeXs=\"12\" sizeMd=\"10\" sizeLg=\"8\"\r\n sizeXl=\"8\" offsetMd=\"1\" offsetXl=\"2\" offsetLg=\"2\">\r\n <div [innerHTML]=\"element.description\">\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n\r\n <ion-row *ngIf=\"element.type ==='text2'\">\r\n <ion-col class=\"ion-text-justify ion-padding\" size=\"12\" sizeSm=\"12\" sizeXs=\"12\" sizeMd=\"10\" sizeLg=\"8\"\r\n sizeXl=\"8\" offsetMd=\"1\" offsetXl=\"2\" offsetLg=\"2\">\r\n <div [innerHTML]=\"sanitizer.bypassSecurityTrustHtml(element.description)\">\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n\r\n <ion-row *ngIf=\"element.type ==='emailUpdate'\">\r\n <ion-col class=\"ion-text-justify ion-padding\" size=\"12\" sizeSm=\"12\" sizeXs=\"12\" sizeMd=\"10\" sizeLg=\"8\"\r\n sizeXl=\"8\" offsetMd=\"1\" offsetXl=\"2\" offsetLg=\"2\">\r\n <ion-row> \r\n <ion-col>\r\n <div [innerHTML]=\"sanitizer.bypassSecurityTrustHtml(element.description)\">\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n <ion-row> \r\n <ion-col> \r\n <input id=\"emailAddress\" size=\"60\" type=\"input\" pInputText [formControl]=\"emailAddress\" />\r\n </ion-col>\r\n <ion-col> \r\n <ion-button shape=\"round\" (click)=\"submit()\" type=\"submit\">{{'common.submit'| translate}}</ion-button>\r\n </ion-col>\r\n </ion-row>\r\n\r\n </ion-col>\r\n </ion-row>\r\n <ion-row *ngIf=\"element.type ==='resendemail'\">\r\n <ion-col class=\"ion-text-justify ion-padding\" size=\"12\" sizeSm=\"12\" sizeXs=\"12\" sizeMd=\"10\" sizeLg=\"8\"\r\n sizeXl=\"8\" offsetMd=\"1\" offsetXl=\"2\" offsetLg=\"2\">\r\n <div style='text-align:center'>{{'email.no.email'| translate}}\r\n <a href=\"javascript:void(0)\" (click)=\"resendVerificationEmail()\"> {{'email.click.here'| translate}}</a> {{'email.we.will.send'| translate}}</div>\r\n </ion-col>\r\n </ion-row>\r\n <ion-row *ngIf=\"element.type ==='text3'\">\r\n <ion-col class=\"ion-text-justify ion-padding\" size=\"12\" sizeSm=\"12\" sizeXs=\"12\" sizeMd=\"10\" sizeLg=\"8\"\r\n sizeXl=\"8\" offsetMd=\"1\" offsetXl=\"2\" offsetLg=\"2\">\r\n <div [innerHTML]=\"sanitizer.bypassSecurityTrustHtml(element.description)\"></div>\r\n </ion-col>\r\n </ion-row>\r\n\r\n <ion-row *ngIf=\"element.type ==='text4'\">\r\n <ion-col class=\"ion-text-justify ion-padding\" size=\"12\" sizeSm=\"12\" sizeXs=\"12\" sizeMd=\"10\" sizeLg=\"8\"\r\n sizeXl=\"8\" offsetMd=\"1\" offsetXl=\"2\" offsetLg=\"2\">\r\n <div [innerHTML]=\"sanitizer.bypassSecurityTrustHtml(element.description)\"></div>\r\n </ion-col>\r\n </ion-row>\r\n </div>\r\n </ion-grid>\r\n\r\n\r\n <!--For button-->\r\n <ion-grid>\r\n <div *ngFor=\"let element of elements.getValue(); let i = index\">\r\n <ion-row>\r\n <ion-col *ngIf=\"element.type ==='buttonAddjacentText'\" class=\"ion-text-right ion-padding-end\" size=\"12\"\r\n sizeSm=\"12\" sizeXs=\"12\" sizeMd=\"10\" sizeLg=\"8\" sizeXl=\"8\" offsetMd=\"1\" offsetXl=\"2\" offsetLg=\"2\">\r\n <div class=\"ion-text-right\" style=\"color:var(--ion-color-grey);\"\r\n *ngIf=\"element.type ==='buttonAddjacentText'\">\r\n <h3>{{element.description}}</h3>\r\n </div>\r\n </ion-col>\r\n <ion-col *ngIf=\"element.type ==='buttonText'\" class=\"ion-text-right ion-padding-end\" size=\"12\" sizeSm=\"12\"\r\n sizeXs=\"12\" sizeMd=\"10\" sizeLg=\"8\" sizeXl=\"8\" offsetMd=\"1\" offsetXl=\"2\" offsetLg=\"2\">\r\n <div *ngIf=\"element.type ==='buttonText'\" class=\"ion-text-right\">\r\n <ion-button *ngIf=\"element.description === 'Submit'; else defaultButton\" shape=\"round\" (click)=\"openPage()\" color=\"success\" size=\"big\" type=\"submit\">\r\n {{'common.submit' | translate}}\r\n </ion-button>\r\n <ng-template #defaultButton>\r\n <ion-button shape=\"round\" (click)=\"openPage()\" color=\"success\" size=\"big\" type=\"submit\">\r\n {{element.description}}\r\n </ion-button>\r\n </ng-template>\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n\r\n </div>\r\n\r\n </ion-grid>\r\n\r\n\r\n\r\n <!--Button-->\r\n\r\n </div>\r\n\r\n\r\n\r\n\r\n </app-content>\r\n</ion-content>", styles: [".bottom{position:absolute;bottom:15%;right:5%}.centered{position:fixed;top:30%;left:50%;transform:translate(-50%,-50%)}\n"] }]
|
|
526
526
|
}], () => [{ type: i1.Router }, { type: i2.QuestionnaireService }, { type: i3.UntypedFormBuilder }, { type: i4.UtilService }, { type: i5.LoggerService }, { type: i6.ClaimantService }, { type: i1.Router }, { type: i7.NavController }, { type: i8.LoginService }, { type: i9.DomSanitizer }, { type: i10.HttpClient }, { type: i11.Storage }, { type: i12.ValidationService }], null); })();
|
|
527
527
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CommonSuccessPage, { className: "CommonSuccessPage", filePath: "lib\\components\\questionnaire\\common-success\\common-success.page.ts", lineNumber: 28 }); })();
|
|
528
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLXN1Y2Nlc3MucGFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy9xdWVzdGlvbm5haXJlL2NvbW1vbi1zdWNjZXNzL2NvbW1vbi1zdWNjZXNzLnBhZ2UudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmV1c2EtYXBwLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvcXVlc3Rpb25uYWlyZS9jb21tb24tc3VjY2Vzcy9jb21tb24tc3VjY2Vzcy5wYWdlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFHN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQW1DLE1BQU0sTUFBTSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSzVELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQU1uRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFHeEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDWnpDLGtEQUM4RTtJQUE5RSw2TUFBYyxlQUFBLGtCQUFXLENBQUEsSUFBQztJQUFvRCxpQkFBMEI7OztJQUQvRSxvREFBK0Isb0JBQUEsOEJBQUEsNEJBQUE7OztJQUV4RCxrQ0FBK0MsaUJBQUEsbUJBQUE7SUFHekMseUJBQTJFO0lBQUEsaUJBQVk7SUFDekYscUJBQUksc0JBQUE7SUFFTixpQkFBVSxFQUFBOzs7SUFIRCxlQUErRDtJQUEvRCw4R0FBK0Q7OztJQVN0RSwwQkFFTTs7O0lBRkQscUVBQWlDOzs7SUFEeEMsMkJBQWtFO0lBQ2hFLCtF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LENBQUMsRUFBRTtnQkFDSixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztnQkFDdEIsSUFBRyxJQUFJLENBQUMsMEJBQTBCLEVBQUM7b0JBQ2pDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO2lCQUN4RTtZQUNILENBQUMsRUFDRCxHQUFHLENBQUMsRUFBRTtnQkFDSixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzlCLENBQUMsQ0FDRixDQUFDO1NBQ0g7SUFDSixDQUFDO2tGQXRSUyxpQkFBaUI7b0VBQWpCLGlCQUFpQjtZQzNCOUIsa0NBQVk7WUFDVixnQ0FBaUQ7WUFDbkQsaUJBQWE7WUFFYixtQ0FBYSxxQkFBQTtZQUVULDBHQUN3Ryw2REFBQSxxREFBQTtZQWdJMUcsaUJBQWMsRUFBQTs7WUF0SUYsZUFBdUI7WUFBdkIscUNBQXVCO1lBSXRCLGVBQWtCO1lBQWxCLGdDQUFrQixvQkFBQTtZQUM2QixlQUFjO1lBQWQsbUNBQWM7WUFFMUMsZUFBZTtZQUFmLG9DQUFlO1lBU3ZDLGVBQXVDO1lBQXZDLGdFQUF1Qzs7O2lGRFVwQyxpQkFBaUI7Y0FMN0IsU0FBUzsyQkFDRSxnQkFBZ0I7O2tGQUlmLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgaW50ZXJ2YWwsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiwgdGltZXIgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IE5hdkNvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XHJcbmltcG9ydCB7IFVudHlwZWRGb3JtQnVpbGRlciwgVW50eXBlZEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgU3VjY2Vzc1BhZ2VFbGVtZW50IH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL3F1ZXN0aW9ubmFpcmUvU3VjY2Vzc1BhZ2VFbGVtZW50JztcclxuaW1wb3J0IHsgUXVlc3Rpb25uYWlyZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9xdWVzdGlvbm5haXJlL3F1ZXN0aW9ubmFpcmUuc2VydmljZSc7XHJcbmltcG9ydCB7IEJhc2VQYWdlIH0gZnJvbSAnLi4vLi4vLi4vcGFnZXMvQmFzZVBhZ2UnO1xyXG5pbXBvcnQgeyBVdGlsU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3V0aWwvdXRpbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTG9nZ2VyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2xvZ2dlci9sb2dnZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IExvZ2luU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2xvZ2luL2xvZ2luLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDbGFpbWFudFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jbGFpbWFudC1zZXJ2aWNlL2NsYWltYW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBTdGF0dXNNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9xdWVzdGlvbm5haXJlL1N0YXR1c01vZGVsJztcclxuaW1wb3J0IHsgUG9sbGluZ1N0YXR1c01vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL3F1ZXN0aW9ubmFpcmUvUG9sbGluZ1N0YXR1c01vZGVsJztcclxuaW1wb3J0IHsgU3RvcmFnZSB9IGZyb20gJ0Bpb25pYy9zdG9yYWdlLWFuZ3VsYXInO1xyXG5pbXBvcnQgeyBGYkNvbnN0YW50cyB9IGZyb20gJy4uL0ZiQ29uc3RhbnRzJztcclxuaW1wb3J0IHsgUXVlc3Rpb25uYWlyZVF1ZXJ5TW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvcXVlc3Rpb25uYWlyZS9RdWVzdGlvbm5haXJlUXVlcnlNb2RlbCc7XHJcbmltcG9ydCB7IFZhbGlkYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcXVlc3Rpb25uYWlyZS92YWxpZGF0aW9uLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjb21tb24tc3VjY2VzcycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbW1vbi1zdWNjZXNzLnBhZ2UuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY29tbW9uLXN1Y2Nlc3MucGFnZS5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb21tb25TdWNjZXNzUGFnZSBleHRlbmRzIEJhc2VQYWdlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIHB1YmxpYyBjYWxsQ291bnQgOiBudW1iZXIgPSAwO1xyXG4gIHB1YmxpYyBoZWFkaW5nID0gXCJcIjtcclxuICBwdWJsaWMgbWVzc2FnZSA9IFwiXCI7XHJcbiAgcHVibGljIHNob3dMb2FkZXJUaGVtZSA9IGZhbHNlO1xyXG4gIHBhZ2VUb09wZW46IHN0cmluZyA9IFwiXCI7XHJcbiAgdXVpZDogc3RyaW5nID0gXCJcIjtcclxuICB3YWl0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgd2FpdENoZWNrU2VydmljZVVyaTogc3RyaW5nID0gXCJcIjtcclxuICBwdWJsaWMgd2FpdGluZ01lc3NhZ2UgPSBcIlBsZWFzZSBXYWl0Li4uXCI7XHJcbiAgcHVibGljIGlzTG9hZGluZyA9IHRydWU7XHJcbiAgZWxlbWVudHM6IEJlaGF2aW9yU3ViamVjdDxTdWNjZXNzUGFnZUVsZW1lbnRbXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFN1Y2Nlc3NQYWdlRWxlbWVudFtdPihudWxsKTtcclxuICBwdWJsaWMgc3VjY2Vzc1BhZ2VFbGVtZW50QXJyOiBCZWhhdmlvclN1YmplY3Q8U3VjY2Vzc1BhZ2VFbGVtZW50W10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTdWNjZXNzUGFnZUVsZW1lbnRbXT4obnVsbCk7XHJcbiAgcHVibGljIHN1Y2Nlc3NGb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xyXG5cclxuICBwb3BVcEhlYWRlcjogc3RyaW5nO1xyXG5cclxuICBkdXJhdGlvbiA9IDUwMDA7IC8vZGVmaW5lcyBtaWxsaXNlY29uZHMgYWZ0ZXIgd2hpY2ggYSBuZXcgcmVxdWVzdCB0byBiZSBzZW50IG91dFxyXG4gIHB1YmxpYyB0aW1lckludGVydmFsID0gaW50ZXJ2YWwodGhpcy5kdXJhdGlvbik7XHJcbiAgcHVibGljIGNvdW50RG93biA9IHRoaXMudGltZXJJbnRlcnZhbC5waXBlKHRha2UoMzApKTtcclxuXHJcbiAgdGltZXJTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICBjb3VudERvd25TdWJzY3JpcHRpb24gOyBTdWJzY3JpcHRpb247XHJcblxyXG4gIHFlUXVlcnlNb2RlbHMgOiBRdWVzdGlvbm5haXJlUXVlcnlNb2RlbFtdO1xyXG4gIGlzT3BlblFlIDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHFlU3VjY2Vzc1VyaTogc3RyaW5nO1xyXG4gIHFlU3VjY2Vzc1dhaXRDaGVja1NlcnZpY2VVcmk6IHN0cmluZztcclxuICBxZVN1Y2Nlc3NXYWl0Rm9yUHJvY2Vzc2luZyA6IGJvb2xlYW47XHJcbiAgc3RhdHVzTW9kZWwgOiBTdGF0dXNNb2RlbCA9IG5ldyBTdGF0dXNNb2RlbCgpO1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIHB1YmxpYyBxdWVzdGlvbm5haXJlU2VydmljZTogUXVlc3Rpb25uYWlyZVNlcnZpY2UsIHB1YmxpYyBmb3JtQnVpbGRlcjogVW50eXBlZEZvcm1CdWlsZGVyLFxyXG4gICAgcHVibGljIHV0aWw6IFV0aWxTZXJ2aWNlLCBwcml2YXRlIGxvZ2dlcjogTG9nZ2VyU2VydmljZSwgcHVibGljIGNsYWltYW50U2VydmljZTogQ2xhaW1hbnRTZXJ2aWNlLFxyXG4gICAgcHVibGljIHI6IFJvdXRlciwgcHVibGljIG5hdkNvbnRyb2xsZXI6IE5hdkNvbnRyb2xsZXIsIHB1YmxpYyBsczogTG9naW5TZXJ2aWNlLFxyXG4gICAgcHVibGljIHNhbml0aXplcjogRG9tU2FuaXRpemVyLCBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsIHByaXZhdGUgc3RvcmFnZSA6IFN0b3JhZ2UsIFxyXG4gICAgcHJpdmF0ZSB2YWxpZGF0aW9uU2VydmljZSA6IFZhbGlkYXRpb25TZXJ2aWNlKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgbmdPbkluaXQoKSB7XHJcbiAgICBpZihsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImxhbmd1YWdlXCIpID09PSBcImVzXCIpe1xyXG4gICAgICB0aGlzLnBvcFVwSGVhZGVyID0gXCJQcmVndW50YXMgZGUgc2VndWltaWVudG9cIjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucG9wVXBIZWFkZXIgPSBcIkZvbGxvdyB1cCBRdWVzdGlvbnNcIjtcclxuICAgIH1cclxuICAgIHRoaXMubG9nZ2VyLmRlYnVnKFwiY29tbW9uLXN1Y2Nlc3MgcGFnZSAtIG5nIGluaXQgY2FsbGVkXCIpXHJcbiAgICB0aGlzLnV1aWQgPSBhd2FpdCB0aGlzLnN0b3JhZ2UuZ2V0KEZiQ29uc3RhbnRzLnV1aWQpO1xyXG4gICAgdGhpcy53YWl0Q2hlY2tTZXJ2aWNlVXJpID0gYXdhaXQgdGhpcy5zdG9yYWdlLmdldChGYkNvbnN0YW50cy53YWl0Q2hlY2tTZXJ2aWNlVXJpKTtcclxuICAgIHRoaXMucGFnZVRvT3BlbiA9IGF3YWl0IHRoaXMuc3RvcmFnZS5nZXQoRmJDb25zdGFudHMucGFnZVRvT3Blbik7XHJcbiAgICB0aGlzLndhaXQgPSBhd2FpdCB0aGlzLnN0b3JhZ2UuZ2V0KEZiQ29uc3RhbnRzLndhaXRGb3JQcm9jZXNzaW5nKTtcclxuXHJcbiAgICB0aGlzLnN1Y2Nlc3NGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgICdlbWFpbEFkZHJlc3MnOiBbXSxcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuc3VjY2Vzc1BhZ2VFbGVtZW50QXJyLnN1YnNjcmliZShcclxuICAgICAgcmVzID0+IHtcclxuICAgICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgICB0aGlzLmVsZW1lbnRzLm5leHQocmVzKTtcclxuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICBpZiAodGhpcy53YWl0KSB7XHJcbiAgICAgICAgdGhpcy5kb1BvbGxpbmdGb3JSZXF1ZXN0KHRoaXMudXVpZCwgdGhpcy53YWl0Q2hlY2tTZXJ2aWNlVXJpKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAvL2ZvciBvdGhlciBjYXNlcyB3aGVyZSBzdGF0dXMgZW5kIHBvaW50IGlzIG5vdCBzZXQuXHJcbiAgICAgIHRoaXMuZWxlbWVudHMubmV4dChhd2FpdCB0aGlzLnN0b3JhZ2UuZ2V0KEZiQ29uc3RhbnRzLnN1Y2Nlc3NQYWdlRWxlbWVudCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy50aW1lclN1YnNjcmlwdGlvbikge1xyXG4gICAgICB0aGlzLnRpbWVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgICBpZih0aGlzLmNvdW50RG93blN1YnNjcmlwdGlvbil7XHJcbiAgICAgIHRoaXMuY291bnREb3duU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnN0b3JhZ2UucmVtb3ZlKEZiQ29uc3RhbnRzLnN1Y2Nlc3NQYWdlRWxlbWVudCk7XHJcbiAgICB0aGlzLnN0b3JhZ2UucmVtb3ZlKEZiQ29uc3RhbnRzLndhaXRGb3JQcm9jZXNzaW5nKTtcclxuICAgIHRoaXMuc3RvcmFnZS5yZW1vdmUoRmJDb25zdGFudHMud2FpdENoZWNrU2VydmljZVVyaSk7XHJcbiAgICB0aGlzLnN0b3JhZ2UucmVtb3ZlKEZiQ29uc3RhbnRzLnBhZ2VUb09wZW4pO1xyXG4gICAgdGhpcy5zdG9yYWdlLnJlbW92ZShGYkNvbnN0YW50cy51dWlkKTtcclxuICB9XHJcblxyXG4gIGRvUG9sbGluZ0ZvclJlcXVlc3QodXVpZFRlbXA6IHN0cmluZywgd2FpdENoZWNrU2VydmljZVVyaVRlbXA6IHN0cmluZyl7XHJcbiAgICBjb25zb2xlLmxvZygnZG8gUG9sbGluZyBmb3IgcmVxdWVzdCBjYWxsZWQgPSAnLCB3YWl0Q2hlY2tTZXJ2aWNlVXJpVGVtcCk7XHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcbiAgICAgIHRoaXMudGltZXJTdWJzY3JpcHRpb24gPSB0aGlzLnRpbWVySW50ZXJ2YWwucGlwZShcclxuICAgICAgICBzdGFydFdpdGgoMCksXHJcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMucmV0cml2ZVBvbGxpbmdTdGF0dXNGb3JQYWdlKHV1aWRUZW1wLCB3YWl0Q2hlY2tTZXJ2aWNlVXJpVGVtcCkpXHJcbiAgICAgICkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgIGxldCBjb250aW51ZVdhaXRpbmcgPSByZXNbJ2NvbnRpbnVlV2FpdGluZyddO1xyXG4gICAgICAgIHRoaXMud2FpdGluZ01lc3NhZ2UgPSByZXNbJ3dhaXRpbmdNZXNzYWdlJ107XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYoY29udGludWVXYWl0aW5nICYmICsrdGhpcy5jYWxsQ291bnQgPj0gMTUpe1xyXG4gICAgICAgICAgaWYobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJsYW5ndWFnZVwiKSA9PT0gXCJlc1wiKXtcclxuICAgICAgICAgICAgdGhpcy53YWl0aW5nTWVzc2FnZSA9IFwiRXN0w6EgdGFyZGFuZG8gbcOhcyBkZSBsbyBoYWJpdHVhbCBwcm9jZXNhciBzdSBzb2xpY2l0dWQuPGJyLz4gTm8gYWN0dWFsaWNlIGxhIHDDoWdpbmEuXCJcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMud2FpdGluZ01lc3NhZ2UgPSBcIkl0J3MgdGFraW5nIGxvbmdlciB0aGFuIHVzdWFsIHRvIHByb2Nlc3MgeW91ciByZXF1ZXN0LiA8YnIvPiBEbyBub3QgcmVmcmVzaCB0aGUgcGFnZS5cIlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZihjb250aW51ZVdhaXRpbmcgJiYgdGhpcy5jYWxsQ291bnQgPiAyNSl7XHJcbiAgICAgICAgICB0aGlzLnRpbWVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIGlmKHRoaXMubHMuaXNMb2dnZWRJbigpKXtcclxuICAgICAgICAgICAgdGhpcy5wYWdlVG9PcGVuID0gXCJ3ZWxjb21lXCI7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnBhZ2VUb09wZW4gPSBcImxhbmRpbmdcIjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIFxyXG4gICAgICAgICAgaWYobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJsYW5ndWFnZVwiKSA9PT0gXCJlc1wiKXtcclxuICAgICAgICAgICAgdGhpcy5zdWNjZXNzUGFnZUVsZW1lbnRBcnIubmV4dChcclxuICAgICAgICAgICAgICBbXHJcbiAgICAgICAgICAgICAgICAgIHt0eXBlOiAnaGVhZGVyJywgZGVzY3JpcHRpb246IFwiPGgxPsKhVXBzISBObyBzZSBwdWRvIHByb2Nlc2FyIHR1IHNvbGljaXR1ZC48L2gxPlxcdFxcdFwiLCBpbmRlbnQ6IDAsIGZvbnRTaXplOiAwfSxcclxuICAgICAgICAgICAgICAgICAge3R5cGU6ICdzdWJoaGVhZGVyJywgZGVzY3JpcHRpb246ICc8aDQ+UG9yIGZhdm9yLCBpbnTDqW50ZWxvIGRlIG51ZXZvIGRlc3B1w6lzIGRlIHVuIHRpZW1wby48aDQ+XFx0XFx0JywgaW5kZW50OiAwLCBmb250U2l6ZTogMH0sXHJcbiAgICAgICAgICAgICAgICAgIHt0eXBlOiAnYnV0dG9uVGV4dCcsIGRlc2NyaXB0aW9uOiAnQ2FzYScsIGluZGVudDogMCwgZm9udFNpemU6IDB9XHJcbiAgICAgICAgICAgICAgXSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnN1Y2Nlc3NQYWdlRWxlbWVudEFyci5uZXh0KFxyXG4gICAgICAgICAgICAgIFtcclxuICAgICAgICAgICAgICAgICAge3R5cGU6ICdoZWFkZXInLCBkZXNjcmlwdGlvbjogXCI8aDE+T29wcyEgY291bGQgbm90IHByb2Nlc3MgeW91ciByZXF1ZXN0LjwvaDE+XFx0XFx0XCIsIGluZGVudDogMCwgZm9udFNpemU6IDB9LFxyXG4gICAgICAgICAgICAgICAgICB7dHlwZTogJ3N1YmhoZWFkZXInLCBkZXNjcmlwdGlvbjogJzxoND5QbGVhc2UgdHJ5IGFnYWluIGFmdGVyIHNvbWUgdGltZS48aDQ+XFx0XFx0JywgaW5kZW50OiAwLCBmb250U2l6ZTogMH0sXHJcbiAgICAgICAgICAgICAgICAgIHt0eXBlOiAnYnV0dG9uVGV4dCcsIGRlc2NyaXB0aW9uOiAnSG9tZScsIGluZGVudDogMCwgZm9udFNpemU6IDB9XHJcbiAgICAgICAgICAgICAgXSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnRpbWVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICBpZiAoIWNvbnRpbnVlV2FpdGluZykge1xyXG4gICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXCJzZW5kIGFub3RoZXIgcmVxdWVzdCB0byBmZXRjaCBwYWdlIGVsZW1lbnRzXCIpO1xyXG4gICAgICAgICAgbGV0IG1lc3NhZ2VTZXJ2aWNlRXAgPSByZXNbJ21lc3NhZ2VTZXJ2aWNlRXAnXTtcclxuICAgICAgICAgIHRoaXMud2FpdGluZ01lc3NhZ2UgPSByZXNbJ3dhaXRpbmdNZXNzYWdlJ107XHJcbiAgICAgICAgICB0aGlzLmZldGNoUGFnZUVsZW1lbnRzKG1lc3NhZ2VTZXJ2aWNlRXAsIHV1aWRUZW1wKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgIHJlc3AgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuc3RhdHVzTW9kZWwgID0gcmVzcDtcclxuICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcIiB0aGlzLnN0YXR1c01vZGVsIFwiLCB0aGlzLnN0YXR1c01vZGVsKTtcclxuICAgICAgICAgICAgICBpZihyZXNwWyduYXZpZ2F0ZUltbWVkaWF0ZWx5J10pe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuTmV4dFBhZ2UocmVzcFsncGFnZVRvT3BlbiddKTtcclxuICAgICAgICAgICAgICB9IGVsc2UgaWYocmVzcFsnc2hvd1FlJ10pe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXCJPcGVuIFF1ZXN0aW9ubmFpcmUgb3B0aW9uIGVuY291bnRlcmVkXCIpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5xZVN1Y2Nlc3NXYWl0Q2hlY2tTZXJ2aWNlVXJpID0gdGhpcy5zdGF0dXNNb2RlbC5xZVN1Y2Nlc3NXYWl0Q2hlY2tTZXJ2aWNlVXJpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5xZVN1Y2Nlc3NXYWl0Rm9yUHJvY2Vzc2luZyA9IHRoaXMuc3RhdHVzTW9kZWwucWVTdWNjZXNzV2FpdEZvclByb2Nlc3Npbmc7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnFlU3VjY2Vzc1VyaSA9IHRoaXMuc3RhdHVzTW9kZWwucWVTdWNjZXNzVXJpO1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy5xZVN1Y2Nlc3NVcmkgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnFlUXVlcnlNb2RlbHMgPSByZXNwLnFlUXVlcnlNb2RlbHM7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuaXNPcGVuUWUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFwiRGlyZWN0IHBvbGxpbmcgdG8gbmV3IHByb2Nlc3NcIik7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZG9Qb2xsaW5nRm9yUmVxdWVzdCh0aGlzLnV1aWQsIHRoaXMucWVTdWNjZXNzV2FpdENoZWNrU2VydmljZVVyaSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSBlbHNle1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wYWdlVG9PcGVuID0gcmVzcFsncGFnZVRvT3BlbiddO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdWNjZXNzUGFnZUVsZW1lbnRBcnIubmV4dChyZXNwWydzdWNjZXNzUGFnZUVsZW1lbnQnXSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgdGhpcy50aW1lclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgdGhpcy5jb3VudERvd25TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICAgIGVyciA9PiB7XHJcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy51dGlsLmVycm9ySGFuZGxlcihlcnIpO1xyXG4gICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ2h0dHAgZXJyb3IgcmVzcG9uc2UgPSAnLCBlcnIpO1xyXG4gICAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcmV0cml2ZVBvbGxpbmdTdGF0dXNGb3JQYWdlKHV1aTEyOiBzdHJpbmcsIHdhaXRDaGVja1NlcnZpY2VVcmkxMjogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHRoaXMubG9nZ2VyLmRlYnVnKFwiUG9sbGluZyBzZXJ2aWNlIFVSTCAtIFwiICsgd2FpdENoZWNrU2VydmljZVVyaTEyKTtcclxuICAgIHJldHVybiB0aGlzLnZhbGlkYXRpb25TZXJ2aWNlLmdldDxQb2xsaW5nU3RhdHVzTW9kZWw+KHdhaXRDaGVja1NlcnZpY2VVcmkxMiArIHV1aTEyKTtcclxuICB9XHJcblxyXG4gIGZldGNoUGFnZUVsZW1lbnRzKG1lc3NhZ2VTZXJ2aWNlRXA6IHN0cmluZywgdXVpMTI6IHN0cmluZyk6IE9ic2VydmFibGU8U3RhdHVzTW9kZWw+IHtcclxuICAgIHRoaXMubG9nZ2VyLmRlYnVnKFwiUGFnZSBlbGVtZW50IHNlcnZpY2UgVVJMIC0gXCIgKyBtZXNzYWdlU2VydmljZUVwKTtcclxuICAgIHJldHVybiB0aGlzLnZhbGlkYXRpb25TZXJ2aWNlLmdldDxTdGF0dXNNb2RlbD4obWVzc2FnZVNlcnZpY2VFcCArIHV1aTEyKTtcclxuICB9XHJcblxyXG4gIGdldCBlbWFpbEFkZHJlc3MoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdWNjZXNzRm9ybS5jb250cm9sc1snZW1haWxBZGRyZXNzJ107XHJcbiAgfVxyXG5cclxuICByZXNlbmRWZXJpZmljYXRpb25FbWFpbCgpIHtcclxuICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdyZXNlbmRWZXJpZmljYXRpb25FbWFpbCcpO1xyXG4gICAgdGhpcy5zaG93TG9hZGVyVGhlbWUgPSBmYWxzZTtcclxuICAgIHRoaXMucXVlc3Rpb25uYWlyZVNlcnZpY2UudXVpZC5zdWJzY3JpYmUocGFyYW1zID0+IHtcclxuICAgICAgdGhpcy5jbGFpbWFudFNlcnZpY2UucmVzZW5kVmVyaWZpY2F0aW9uRW1haWwocGFyYW1zLnZhbHVlT2YoKSlcclxuICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgcmVzID0+IHtcclxuICAgICAgICAgICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcclxuICAgICAgICAgICAgdGhpcy5zaG93TG9hZGVyVGhlbWUgPSBmYWxzZTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBlcnIgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnRXJyb3InLCBlcnIpO1xyXG4gICAgICAgICAgICB0aGlzLnV0aWwuaGlkZUxvYWRlcigpO1xyXG4gICAgICAgICAgICB0aGlzLnV0aWwuZXJyb3JIYW5kbGVyKGVycik7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd0xvYWRlclRoZW1lID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuICAgICk7XHJcblxyXG4gIH1cclxuXHJcbiAgc2V0Rm9udFNpemUoZm9udHNpemU6IG51bWJlcik6IG9iamVjdCB7XHJcbiAgICBpZiAoZm9udHNpemUgPT09IDApIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5sb2dnZXIuZGVidWcoJ2ZvbnRzaXplJywgZm9udHNpemUpO1xyXG4gICAgbGV0IHN0eWxlT2JqID0ge1xyXG4gICAgICAnZm9udC1zaXplJzogZm9udHNpemUgKyAncHgnXHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHN0eWxlT2JqKTtcclxuICB9XHJcblxyXG4gIG9wZW5OZXh0UGFnZShwYWdlVG9PcGVuKXtcclxuICAgIHdpbmRvdy5vcGVuKGxvY2F0aW9uLm9yaWdpbiArIHBhZ2VUb09wZW4sICdfc2VsZicpO1xyXG4gIH1cclxuXHJcbiAgb3BlblBhZ2UoKSB7XHJcblxyXG4gICAgbGV0IGN1cnJlbnRDb250ZXh0Um9vdCA9IHRoaXMuZ2V0Q29udGV4dFJvb3QoKTtcclxuICAgIGlmICh0aGlzLnBhZ2VUb09wZW4gJiYgdGhpcy5wYWdlVG9PcGVuLnN1YnN0cmluZygwLCA0KSAhPSAnL2NwLycgJiYgdGhpcy5wYWdlVG9PcGVuICYmIHRoaXMucGFnZVRvT3BlbiAhPSAnT3BlblBhZ2UnKSB7XHJcbiAgICAgIHRoaXMubmF2Q29udHJvbGxlci5uYXZpZ2F0ZUZvcndhcmQoW3RoaXMucGFnZVRvT3Blbl0sIHsgcXVlcnlQYXJhbXM6IHsgaWRlbnRpZmllcjogdGhpcy51dWlkIH0gfSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCB1cmw6IHN0cmluZyA9IFwiL2NwL2xhbmRpbmdcIjtcclxuICAgICAgaWYgKHRoaXMucGFnZVRvT3BlbiAmJiB0aGlzLnBhZ2VUb09wZW4gIT0gJ09wZW5QYWdlJykge1xyXG4gICAgICAgIHVybCA9IHRoaXMucGFnZVRvT3BlbjtcclxuICAgICAgfVxyXG4gICAgICB3aW5kb3cub3Blbihsb2NhdGlvbi5vcmlnaW4gKyB1cmwsICdfc2VsZicpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIGdldENvbnRleHRSb290KCkge1xyXG4gICAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5zdWJzdHJpbmcoMCwgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLmluZGV4T2YoXCIvXCIsIDIpKTtcclxuICB9XHJcblxyXG4gIHN1Ym1pdCgpIHtcclxuICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdTdWNjZXNzIGNhbGxlZCcsIHRoaXMuZW1haWxBZGRyZXNzLnZhbHVlLCAnIHV1aWQgJywgdGhpcy51dWlkKTtcclxuICAgIHRoaXMuY2xhaW1hbnRTZXJ2aWNlLnVwZGF0ZUVtYWlsKHRoaXMuZW1haWxBZGRyZXNzLnZhbHVlLCB0aGlzLnV1aWQpXHJcbiAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgcmVzID0+IHtcclxuICAgICAgICAgIHRoaXMudXRpbC5oaWRlTG9hZGVyKCk7XHJcbiAgICAgICAgICB0aGlzLnNob3dMb2FkZXJUaGVtZSA9IGZhbHNlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyID0+IHtcclxuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdFcnJvcicsIGVycik7XHJcbiAgICAgICAgICB0aGlzLnV0aWwuaGlkZUxvYWRlcigpO1xyXG4gICAgICAgICAgdGhpcy51dGlsLmVycm9ySGFuZGxlcihlcnIpO1xyXG4gICAgICAgICAgdGhpcy5zaG93TG9hZGVyVGhlbWUgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBxdVN1Y2Nlc3MoKXtcclxuICAgIHRoaXMubG9nZ2VyLmRlYnVnKFwicWUgc3VjY2VzcyBoZXJlXCIpO1xyXG4gICAgaWYodGhpcy5pc09wZW5RZSl7ICBcclxuICAgICAgdGhpcy52YWxpZGF0aW9uU2VydmljZS5wb3N0KHRoaXMucWVTdWNjZXNzVXJpLCBudWxsKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICByZXMgPT4geyAgXHJcbiAgICAgICAgICAgIHRoaXMuaXNPcGVuUWUgPSBmYWxzZTsgICAgICAgICBcclxuICAgICAgICAgICAgaWYodGhpcy5xZVN1Y2Nlc3NXYWl0Rm9yUHJvY2Vzc2luZyl7XHJcbiAgICAgICAgICAgICAgdGhpcy5kb1BvbGxpbmdGb3JSZXF1ZXN0KHRoaXMudXVpZCwgdGhpcy5xZVN1Y2Nlc3NXYWl0Q2hlY2tTZXJ2aWNlVXJpKTtcclxuICAgICAgICAgICAgfSAgICAgICAgICAgIFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGVyciA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdFcnJvcicsIGVycik7XHJcbiAgICAgICAgICAgIHRoaXMudXRpbC5lcnJvckhhbmRsZXIoZXJyKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgIH1cclxuXHJcbn1cclxuIiwiPGlvbi1oZWFkZXI+XHJcbiAgPGFwcC1oZWFkZXIgW3NlY29uZFRvb2xiYXJdPVwiZmFsc2VcIj48L2FwcC1oZWFkZXI+XHJcbjwvaW9uLWhlYWRlcj5cclxuXHJcbjxpb24tY29udGVudD5cclxuICA8YXBwLWNvbnRlbnQgW3Nob3dIZWxwXT1cImZhbHNlXCIgW2hpZGVGb290ZXJdPVwidHJ1ZVwiPlxyXG4gICAgPGFwcC1tdWx0aS1xdWVzdGlvbm5haXJlIFtxZVF1ZXJ5TW9kZWxzXT1cInFlUXVlcnlNb2RlbHNcIiAqbmdJZj1cImlzT3BlblFlXCIgW3Nob3dDbG9zZV09XCJmYWxzZVwiIFxyXG4gICAgKG9uQ29tcGxldGUpPVwicXVTdWNjZXNzKClcIiBbaGVhZGVyXT1cInBvcFVwSGVhZGVyXCIgW3Nob3dRdWVzdGlvbk51bWJlcl09XCJ0cnVlXCI+PC9hcHAtbXVsdGktcXVlc3Rpb25uYWlyZT5cclxuICAgIDxpb24tcm93IGNsYXNzPVwiaW9uLXBhZGRpbmdcIiAqbmdJZj1cImlzTG9hZGluZ1wiPlxyXG4gICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgIDxpb24tbGFiZWwgIGNsYXNzPVwiYm94XCJzdHlsZT1cImNvbG9yOnZhcigtLWlvbi1jb2xvci1ncmV5KTsgZm9udC1zaXplOiAyNHB4XCI+XHJcbiAgICAgICAgICA8ZGl2IFtpbm5lckhUTUxdPVwic2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKHdhaXRpbmdNZXNzYWdlKVwiPjwvZGl2PjwvaW9uLWxhYmVsPlxyXG4gICAgICAgIDxicj5cclxuICAgICAgICA8aW9uLXNwaW5uZXIgbmFtZT1cImRvdHNcIj48L2lvbi1zcGlubmVyPlxyXG4gICAgICA8L2lvbi1jb2w+XHJcbiAgICA8L2lvbi1yb3c+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cImVsZW1lbnRzLmdldFZhbHVlKCkgJiYgIWlzTG9hZGluZ1wiPlxyXG5cclxuICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZWxlbWVudCBvZiAgZWxlbWVudHMuZ2V0VmFsdWUoKTsgIGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICA8ZGl2IFtpbm5lckhUTUxdPVwiZWxlbWVudC5kZXNjcmlwdGlvblwiIHN0eWxlPVwidGV4dC1hbGlnbjogbGVmdDtcIiAqbmdJZj1cImVsZW1lbnQudHlwZSA9PT0naGVhZGVyJ1wiXHJcbiAgICAgICAgICBzdHlsZT1cImNvbG9yOnZhcigtLWlvbi1jb2xvci1ncmV5KTtcIiBzdHlsZT1cInBhZGRpbmctbGVmdDogMjVweDtcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8aW9uLWdyaWQ+XHJcbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZWxlbWVudCBvZiAgZWxlbWVudHMuZ2V0VmFsdWUoKTsgIGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgIDxpb24tcm93ICpuZ0lmPVwiZWxlbWVudC50eXBlID09PSdzdWJoaGVhZGVyJ1wiPlxyXG4gICAgICAgICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWNlbnRlciAgaW9uLXBhZGRpbmdcIiBzaXplPVwiMTJcIiBzaXplU209XCIxMlwiIHNpemVYcz1cIjEyXCIgc2l6ZU1kPVwiMTBcIiBzaXplTGc9XCI4XCJcclxuICAgICAgICAgICAgICBzaXplWGw9XCI4XCIgb2Zmc2V0TWQ9XCIxXCIgb2Zmc2V0WGw9XCIyXCIgb2Zmc2V0TGc9XCIyXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBbaW5uZXJIVE1MXT1cImVsZW1lbnQuZGVzY3JpcHRpb25cIiBjbGFzcz1cImJveFwiIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMjBweDtcIlxyXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJjb2xvcjp2YXIoLS1pb24tY29sb3ItZ3JleSk7XCI+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgIDwvaW9uLXJvdz5cclxuXHJcbiAgICAgICAgICA8aW9uLXJvdyAqbmdJZj1cImVsZW1lbnQudHlwZSA9PT0ndGV4dDEnXCI+XHJcbiAgICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXBhZGRpbmdcIiBzaXplPVwiMTJcIiBzaXplU209XCIxMlwiIHNpemVYcz1cIjEyXCIgc2l6ZU1kPVwiMTBcIiBzaXplTGc9XCI4XCJcclxuICAgICAgICAgICAgICBzaXplWGw9XCI4XCIgb2Zmc2V0TWQ9XCIxXCIgb2Zmc2V0WGw9XCIyXCIgb2Zmc2V0TGc9XCIyXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBbaW5uZXJIVE1MXT1cImVsZW1lbnQuZGVzY3JpcHRpb25cIj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgPC9pb24tcm93PlxyXG5cclxuICAgICAgICAgIDxpb24tcm93ICpuZ0lmPVwiZWxlbWVudC50eXBlID09PSd0ZXh0MidcIj5cclxuICAgICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1qdXN0aWZ5IGlvbi1wYWRkaW5nXCIgc2l6ZT1cIjEyXCIgc2l6ZVNtPVwiMTJcIiBzaXplWHM9XCIxMlwiIHNpemVNZD1cIjEwXCIgc2l6ZUxnPVwiOFwiXHJcbiAgICAgICAgICAgICAgc2l6ZVhsPVwiOFwiIG9mZnNldE1kPVwiMVwiIG9mZnNldFhsPVwiMlwiIG9mZnNldExnPVwiMlwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgW2lubmVySFRNTF09XCJzYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoZWxlbWVudC5kZXNjcmlwdGlvbilcIj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgPC9pb24tcm93PlxyXG5cclxuICAgICAgICAgIDxpb24tcm93ICpuZ0lmPVwiZWxlbWVudC50eXBlID09PSdlbWFpbFVwZGF0ZSdcIj5cclxuICAgICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1qdXN0aWZ5IGlvbi1wYWRkaW5nXCIgc2l6ZT1cIjEyXCIgc2l6ZVNtPVwiMTJcIiBzaXplWHM9XCIxMlwiIHNpemVNZD1cIjEwXCIgc2l6ZUxnPVwiOFwiXHJcbiAgICAgICAgICAgICAgc2l6ZVhsPVwiOFwiIG9mZnNldE1kPVwiMVwiIG9mZnNldFhsPVwiMlwiIG9mZnNldExnPVwiMlwiPlxyXG4gICAgICAgICAgICAgIDxpb24tcm93PiAgICBcclxuICAgICAgICAgICAgICAgIDxpb24tY29sPlxyXG4gICAgICAgICAgICAgIDxkaXYgW2lubmVySFRNTF09XCJzYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoZWxlbWVudC5kZXNjcmlwdGlvbilcIj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgICAgICAgPGlvbi1yb3c+ICAgIFxyXG4gICAgICAgICAgICAgICA8aW9uLWNvbD4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgPGlucHV0IGlkPVwiZW1haWxBZGRyZXNzXCIgc2l6ZT1cIjYwXCIgdHlwZT1cImlucHV0XCIgcElucHV0VGV4dCBbZm9ybUNvbnRyb2xdPVwiZW1haWxBZGRyZXNzXCIgLz5cclxuICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgPGlvbi1jb2w+IFxyXG4gICAgICAgICAgICAgIDxpb24tYnV0dG9uIHNoYXBlPVwicm91bmRcIiAoY2xpY2spPVwic3VibWl0KClcIiB0eXBlPVwic3VibWl0XCI+e3snY29tbW9uLnN1Ym1pdCd8IHRyYW5zbGF0ZX19PC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgIDwvaW9uLXJvdz5cclxuXHJcbiAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgICAgIDxpb24tcm93ICpuZ0lmPVwiZWxlbWVudC50eXBlID09PSdyZXNlbmRlbWFpbCdcIj5cclxuICAgICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1qdXN0aWZ5IGlvbi1wYWRkaW5nXCIgc2l6ZT1cIjEyXCIgc2l6ZVNtPVwiMTJcIiBzaXplWHM9XCIxMlwiIHNpemVNZD1cIjEwXCIgc2l6ZUxnPVwiOFwiXHJcbiAgICAgICAgICAgICAgc2l6ZVhsPVwiOFwiIG9mZnNldE1kPVwiMVwiIG9mZnNldFhsPVwiMlwiIG9mZnNldExnPVwiMlwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgc3R5bGU9J3RleHQtYWxpZ246Y2VudGVyJz57eydlbWFpbC5uby5lbWFpbCd8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgKGNsaWNrKT1cInJlc2VuZFZlcmlmaWNhdGlvbkVtYWlsKClcIj4ge3snZW1haWwuY2xpY2suaGVyZSd8IHRyYW5zbGF0ZX19PC9hPiB7eydlbWFpbC53ZS53aWxsLnNlbmQnfCB0cmFuc2xhdGV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgICAgIDxpb24tcm93ICpuZ0lmPVwiZWxlbWVudC50eXBlID09PSd0ZXh0MydcIj5cclxuICAgICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1qdXN0aWZ5IGlvbi1wYWRkaW5nXCIgc2l6ZT1cIjEyXCIgc2l6ZVNtPVwiMTJcIiBzaXplWHM9XCIxMlwiIHNpemVNZD1cIjEwXCIgc2l6ZUxnPVwiOFwiXHJcbiAgICAgICAgICAgICAgc2l6ZVhsPVwiOFwiIG9mZnNldE1kPVwiMVwiIG9mZnNldFhsPVwiMlwiIG9mZnNldExnPVwiMlwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgW2lubmVySFRNTF09XCJzYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoZWxlbWVudC5kZXNjcmlwdGlvbilcIj48L2Rpdj5cclxuICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgPC9pb24tcm93PlxyXG5cclxuICAgICAgICAgIDxpb24tcm93ICpuZ0lmPVwiZWxlbWVudC50eXBlID09PSd0ZXh0NCdcIj5cclxuICAgICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1qdXN0aWZ5IGlvbi1wYWRkaW5nXCIgc2l6ZT1cIjEyXCIgc2l6ZVNtPVwiMTJcIiBzaXplWHM9XCIxMlwiIHNpemVNZD1cIjEwXCIgc2l6ZUxnPVwiOFwiXHJcbiAgICAgICAgICAgICAgc2l6ZVhsPVwiOFwiIG9mZnNldE1kPVwiMVwiIG9mZnNldFhsPVwiMlwiIG9mZnNldExnPVwiMlwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgW2lubmVySFRNTF09XCJzYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoZWxlbWVudC5kZXNjcmlwdGlvbilcIj48L2Rpdj5cclxuICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2lvbi1ncmlkPlxyXG5cclxuXHJcbiAgICAgIDwhLS1Gb3IgYnV0dG9uLS0+XHJcbiAgICAgIDxpb24tZ3JpZD5cclxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBlbGVtZW50IG9mICBlbGVtZW50cy5nZXRWYWx1ZSgpOyAgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICAgIDxpb24tY29sICpuZ0lmPVwiZWxlbWVudC50eXBlID09PSdidXR0b25BZGRqYWNlbnRUZXh0J1wiIGNsYXNzPVwiaW9uLXRleHQtcmlnaHQgaW9uLXBhZGRpbmctZW5kXCIgc2l6ZT1cIjEyXCJcclxuICAgICAgICAgICAgICBzaXplU209XCIxMlwiIHNpemVYcz1cIjEyXCIgc2l6ZU1kPVwiMTBcIiBzaXplTGc9XCI4XCIgc2l6ZVhsPVwiOFwiIG9mZnNldE1kPVwiMVwiIG9mZnNldFhsPVwiMlwiIG9mZnNldExnPVwiMlwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpb24tdGV4dC1yaWdodFwiIHN0eWxlPVwiY29sb3I6dmFyKC0taW9uLWNvbG9yLWdyZXkpO1wiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImVsZW1lbnQudHlwZSA9PT0nYnV0dG9uQWRkamFjZW50VGV4dCdcIj5cclxuICAgICAgICAgICAgICAgIDxoMz57e2VsZW1lbnQuZGVzY3JpcHRpb259fTwvaDM+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgPGlvbi1jb2wgKm5nSWY9XCJlbGVtZW50LnR5cGUgPT09J2J1dHRvblRleHQnXCIgY2xhc3M9XCJpb24tdGV4dC1yaWdodCBpb24tcGFkZGluZy1lbmRcIiBzaXplPVwiMTJcIiBzaXplU209XCIxMlwiXHJcbiAgICAgICAgICAgICAgICAgIHNpemVYcz1cIjEyXCIgc2l6ZU1kPVwiMTBcIiBzaXplTGc9XCI4XCIgc2l6ZVhsPVwiOFwiIG9mZnNldE1kPVwiMVwiIG9mZnNldFhsPVwiMlwiIG9mZnNldExnPVwiMlwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZWxlbWVudC50eXBlID09PSdidXR0b25UZXh0J1wiIGNsYXNzPVwiaW9uLXRleHQtcmlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiAqbmdJZj1cImVsZW1lbnQuZGVzY3JpcHRpb24gPT09ICdTdWJtaXQnOyBlbHNlIGRlZmF1bHRCdXR0b25cIiBzaGFwZT1cInJvdW5kXCIgKGNsaWNrKT1cIm9wZW5QYWdlKClcIiBjb2xvcj1cInN1Y2Nlc3NcIiBzaXplPVwiYmlnXCIgdHlwZT1cInN1Ym1pdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3snY29tbW9uLnN1Ym1pdCcgfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRCdXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBzaGFwZT1cInJvdW5kXCIgKGNsaWNrKT1cIm9wZW5QYWdlKClcIiBjb2xvcj1cInN1Y2Nlc3NcIiBzaXplPVwiYmlnXCIgdHlwZT1cInN1Ym1pdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e2VsZW1lbnQuZGVzY3JpcHRpb259fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICA8L2lvbi1yb3c+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPC9pb24tZ3JpZD5cclxuXHJcblxyXG5cclxuICAgICAgPCEtLUJ1dHRvbi0tPlxyXG5cclxuICAgIDwvZGl2PlxyXG5cclxuXHJcblxyXG5cclxuICA8L2FwcC1jb250ZW50PlxyXG48L2lvbi1jb250ZW50PiJdfQ==
|
|
528
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLXN1Y2Nlc3MucGFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy9xdWVzdGlvbm5haXJlL2NvbW1vbi1zdWNjZXNzL2NvbW1vbi1zdWNjZXNzLnBhZ2UudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmV1c2EtYXBwLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvcXVlc3Rpb25uYWlyZS9jb21tb24tc3VjY2Vzcy9jb21tb24tc3VjY2Vzcy5wYWdlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFHN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQW1DLE1BQU0sTUFBTSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSzVELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQU1uRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFHeEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDWnpDLGtEQUM4RTtJQUE5RSw2TUFBYyxlQUFBLGtCQUFXLENBQUEsSUFBQztJQUFvRCxpQkFBMEI7OztJQUQvRSxvREFBK0Isb0JBQUEsOEJBQUEsNEJBQUE7OztJQUV4RCxrQ0FBK0MsaUJBQUEsbUJBQUE7SUFHekMseUJBQTJFO0lBQUEsaUJBQVk7SUFDekYscUJBQUksc0JBQUE7SUFFTixpQkFBVSxFQUFBOzs7SUFIRCxlQUErRDtJQUEvRCw4R0FBK0Q7OztJQVN0RSwwQkFFTTs7O0lBRkQscUVBQWlDOzs7SUFEeEMsMkJBQWtFO0lBQ2hFLCtF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QUcsQ0FBQyxFQUFFO2dCQUNKLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO2dCQUN0QixJQUFHLElBQUksQ0FBQywwQkFBMEIsRUFBQztvQkFDakMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLDRCQUE0QixDQUFDLENBQUM7aUJBQ3hFO1lBQ0gsQ0FBQyxFQUNELEdBQUcsQ0FBQyxFQUFFO2dCQUNKLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDOUIsQ0FBQyxDQUNGLENBQUM7U0FDSDtJQUNKLENBQUM7a0ZBdFJTLGlCQUFpQjtvRUFBakIsaUJBQWlCO1lDM0I5QixrQ0FBWTtZQUNWLGdDQUFpRDtZQUNuRCxpQkFBYTtZQUViLG1DQUFhLHFCQUFBO1lBRVQsMEdBQ3dHLDZEQUFBLHFEQUFBO1lBZ0kxRyxpQkFBYyxFQUFBOztZQXRJRixlQUF1QjtZQUF2QixxQ0FBdUI7WUFJdEIsZUFBa0I7WUFBbEIsZ0NBQWtCLG9CQUFBO1lBQzZCLGVBQWM7WUFBZCxtQ0FBYztZQUUxQyxlQUFlO1lBQWYsb0NBQWU7WUFTdkMsZUFBdUM7WUFBdkMsZ0VBQXVDOzs7aUZEVXBDLGlCQUFpQjtjQUw3QixTQUFTOzJCQUNFLGdCQUFnQjs7a0ZBSWYsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBpbnRlcnZhbCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCB0aW1lciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBzdGFydFdpdGgsIHN3aXRjaE1hcCwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgTmF2Q29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcclxuaW1wb3J0IHsgVW50eXBlZEZvcm1CdWlsZGVyLCBVbnR5cGVkRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBTdWNjZXNzUGFnZUVsZW1lbnQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvcXVlc3Rpb25uYWlyZS9TdWNjZXNzUGFnZUVsZW1lbnQnO1xyXG5pbXBvcnQgeyBRdWVzdGlvbm5haXJlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3F1ZXN0aW9ubmFpcmUvcXVlc3Rpb25uYWlyZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQmFzZVBhZ2UgfSBmcm9tICcuLi8uLi8uLi9wYWdlcy9CYXNlUGFnZSc7XHJcbmltcG9ydCB7IFV0aWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdXRpbC91dGlsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMb2dnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbG9nZ2VyL2xvZ2dlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTG9naW5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbG9naW4vbG9naW4uc2VydmljZSc7XHJcbmltcG9ydCB7IENsYWltYW50U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2NsYWltYW50LXNlcnZpY2UvY2xhaW1hbnQuc2VydmljZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IFN0YXR1c01vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL3F1ZXN0aW9ubmFpcmUvU3RhdHVzTW9kZWwnO1xyXG5pbXBvcnQgeyBQb2xsaW5nU3RhdHVzTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvcXVlc3Rpb25uYWlyZS9Qb2xsaW5nU3RhdHVzTW9kZWwnO1xyXG5pbXBvcnQgeyBTdG9yYWdlIH0gZnJvbSAnQGlvbmljL3N0b3JhZ2UtYW5ndWxhcic7XHJcbmltcG9ydCB7IEZiQ29uc3RhbnRzIH0gZnJvbSAnLi4vRmJDb25zdGFudHMnO1xyXG5pbXBvcnQgeyBRdWVzdGlvbm5haXJlUXVlcnlNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9xdWVzdGlvbm5haXJlL1F1ZXN0aW9ubmFpcmVRdWVyeU1vZGVsJztcclxuaW1wb3J0IHsgVmFsaWRhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9xdWVzdGlvbm5haXJlL3ZhbGlkYXRpb24uc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NvbW1vbi1zdWNjZXNzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29tbW9uLXN1Y2Nlc3MucGFnZS5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jb21tb24tc3VjY2Vzcy5wYWdlLnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIENvbW1vblN1Y2Nlc3NQYWdlIGV4dGVuZHMgQmFzZVBhZ2UgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgcHVibGljIGNhbGxDb3VudCA6IG51bWJlciA9IDA7XHJcbiAgcHVibGljIGhlYWRpbmcgPSBcIlwiO1xyXG4gIHB1YmxpYyBtZXNzYWdlID0gXCJcIjtcclxuICBwdWJsaWMgc2hvd0xvYWRlclRoZW1lID0gZmFsc2U7XHJcbiAgcGFnZVRvT3Blbjogc3RyaW5nID0gXCJcIjtcclxuICB1dWlkOiBzdHJpbmcgPSBcIlwiO1xyXG4gIHdhaXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICB3YWl0Q2hlY2tTZXJ2aWNlVXJpOiBzdHJpbmcgPSBcIlwiO1xyXG4gIHB1YmxpYyB3YWl0aW5nTWVzc2FnZSA9IFwiUGxlYXNlIFdhaXQuLi5cIjtcclxuICBwdWJsaWMgaXNMb2FkaW5nID0gdHJ1ZTtcclxuICBlbGVtZW50czogQmVoYXZpb3JTdWJqZWN0PFN1Y2Nlc3NQYWdlRWxlbWVudFtdPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U3VjY2Vzc1BhZ2VFbGVtZW50W10+KG51bGwpO1xyXG4gIHB1YmxpYyBzdWNjZXNzUGFnZUVsZW1lbnRBcnI6IEJlaGF2aW9yU3ViamVjdDxTdWNjZXNzUGFnZUVsZW1lbnRbXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFN1Y2Nlc3NQYWdlRWxlbWVudFtdPihudWxsKTtcclxuICBwdWJsaWMgc3VjY2Vzc0Zvcm06IFVudHlwZWRGb3JtR3JvdXA7XHJcblxyXG4gIHBvcFVwSGVhZGVyOiBzdHJpbmc7XHJcblxyXG4gIGR1cmF0aW9uID0gNTAwMDsgLy9kZWZpbmVzIG1pbGxpc2Vjb25kcyBhZnRlciB3aGljaCBhIG5ldyByZXF1ZXN0IHRvIGJlIHNlbnQgb3V0XHJcbiAgcHVibGljIHRpbWVySW50ZXJ2YWwgPSBpbnRlcnZhbCh0aGlzLmR1cmF0aW9uKTtcclxuICBwdWJsaWMgY291bnREb3duID0gdGhpcy50aW1lckludGVydmFsLnBpcGUodGFrZSgzMCkpO1xyXG5cclxuICB0aW1lclN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG4gIGNvdW50RG93blN1YnNjcmlwdGlvbiA7IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgcWVRdWVyeU1vZGVscyA6IFF1ZXN0aW9ubmFpcmVRdWVyeU1vZGVsW107XHJcbiAgaXNPcGVuUWUgOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcWVTdWNjZXNzVXJpOiBzdHJpbmc7XHJcbiAgcWVTdWNjZXNzV2FpdENoZWNrU2VydmljZVVyaTogc3RyaW5nO1xyXG4gIHFlU3VjY2Vzc1dhaXRGb3JQcm9jZXNzaW5nIDogYm9vbGVhbjtcclxuICBzdGF0dXNNb2RlbCA6IFN0YXR1c01vZGVsID0gbmV3IFN0YXR1c01vZGVsKCk7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlciwgcHVibGljIHF1ZXN0aW9ubmFpcmVTZXJ2aWNlOiBRdWVzdGlvbm5haXJlU2VydmljZSwgcHVibGljIGZvcm1CdWlsZGVyOiBVbnR5cGVkRm9ybUJ1aWxkZXIsXHJcbiAgICBwdWJsaWMgdXRpbDogVXRpbFNlcnZpY2UsIHByaXZhdGUgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlLCBwdWJsaWMgY2xhaW1hbnRTZXJ2aWNlOiBDbGFpbWFudFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgcjogUm91dGVyLCBwdWJsaWMgbmF2Q29udHJvbGxlcjogTmF2Q29udHJvbGxlciwgcHVibGljIGxzOiBMb2dpblNlcnZpY2UsXHJcbiAgICBwdWJsaWMgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgcHJpdmF0ZSBzdG9yYWdlIDogU3RvcmFnZSwgXHJcbiAgICBwcml2YXRlIHZhbGlkYXRpb25TZXJ2aWNlIDogVmFsaWRhdGlvblNlcnZpY2UpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBuZ09uSW5pdCgpIHtcclxuICAgIGlmKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwibGFuZ3VhZ2VcIikgPT09IFwiZXNcIil7XHJcbiAgICAgIHRoaXMucG9wVXBIZWFkZXIgPSBcIlByZWd1bnRhcyBkZSBzZWd1aW1pZW50b1wiO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5wb3BVcEhlYWRlciA9IFwiRm9sbG93IHVwIFF1ZXN0aW9uc1wiO1xyXG4gICAgfVxyXG4gICAgdGhpcy5sb2dnZXIuZGVidWcoXCJjb21tb24tc3VjY2VzcyBwYWdlIC0gbmcgaW5pdCBjYWxsZWRcIilcclxuICAgIHRoaXMudXVpZCA9IGF3YWl0IHRoaXMuc3RvcmFnZS5nZXQoRmJDb25zdGFudHMudXVpZCk7XHJcbiAgICB0aGlzLndhaXRDaGVja1NlcnZpY2VVcmkgPSBhd2FpdCB0aGlzLnN0b3JhZ2UuZ2V0KEZiQ29uc3RhbnRzLndhaXRDaGVja1NlcnZpY2VVcmkpO1xyXG4gICAgdGhpcy5wYWdlVG9PcGVuID0gYXdhaXQgdGhpcy5zdG9yYWdlLmdldChGYkNvbnN0YW50cy5wYWdlVG9PcGVuKTtcclxuICAgIHRoaXMud2FpdCA9IGF3YWl0IHRoaXMuc3RvcmFnZS5nZXQoRmJDb25zdGFudHMud2FpdEZvclByb2Nlc3NpbmcpO1xyXG5cclxuICAgIHRoaXMuc3VjY2Vzc0Zvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgJ2VtYWlsQWRkcmVzcyc6IFtdLFxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5zdWNjZXNzUGFnZUVsZW1lbnRBcnIuc3Vic2NyaWJlKFxyXG4gICAgICByZXMgPT4ge1xyXG4gICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgIHRoaXMuZWxlbWVudHMubmV4dChyZXMpO1xyXG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIGlmICh0aGlzLndhaXQpIHtcclxuICAgICAgICB0aGlzLmRvUG9sbGluZ0ZvclJlcXVlc3QodGhpcy51dWlkLCB0aGlzLndhaXRDaGVja1NlcnZpY2VVcmkpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIC8vZm9yIG90aGVyIGNhc2VzIHdoZXJlIHN0YXR1cyBlbmQgcG9pbnQgaXMgbm90IHNldC5cclxuICAgICAgdGhpcy5lbGVtZW50cy5uZXh0KGF3YWl0IHRoaXMuc3RvcmFnZS5nZXQoRmJDb25zdGFudHMuc3VjY2Vzc1BhZ2VFbGVtZW50KSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnRpbWVyU3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgIHRoaXMudGltZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICAgIGlmKHRoaXMuY291bnREb3duU3Vic2NyaXB0aW9uKXtcclxuICAgICAgdGhpcy5jb3VudERvd25TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICAgIHRoaXMuc3RvcmFnZS5yZW1vdmUoRmJDb25zdGFudHMuc3VjY2Vzc1BhZ2VFbGVtZW50KTtcclxuICAgIHRoaXMuc3RvcmFnZS5yZW1vdmUoRmJDb25zdGFudHMud2FpdEZvclByb2Nlc3NpbmcpO1xyXG4gICAgdGhpcy5zdG9yYWdlLnJlbW92ZShGYkNvbnN0YW50cy53YWl0Q2hlY2tTZXJ2aWNlVXJpKTtcclxuICAgIHRoaXMuc3RvcmFnZS5yZW1vdmUoRmJDb25zdGFudHMucGFnZVRvT3Blbik7XHJcbiAgICB0aGlzLnN0b3JhZ2UucmVtb3ZlKEZiQ29uc3RhbnRzLnV1aWQpO1xyXG4gIH1cclxuXHJcbiAgZG9Qb2xsaW5nRm9yUmVxdWVzdCh1dWlkVGVtcDogc3RyaW5nLCB3YWl0Q2hlY2tTZXJ2aWNlVXJpVGVtcDogc3RyaW5nKXtcclxuICAgIGNvbnNvbGUubG9nKCdkbyBQb2xsaW5nIGZvciByZXF1ZXN0IGNhbGxlZCA9ICcsIHdhaXRDaGVja1NlcnZpY2VVcmlUZW1wKTtcclxuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgdGhpcy50aW1lclN1YnNjcmlwdGlvbiA9IHRoaXMudGltZXJJbnRlcnZhbC5waXBlKFxyXG4gICAgICAgIHN0YXJ0V2l0aCgwKSxcclxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5yZXRyaXZlUG9sbGluZ1N0YXR1c0ZvclBhZ2UodXVpZFRlbXAsIHdhaXRDaGVja1NlcnZpY2VVcmlUZW1wKSlcclxuICAgICAgKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgbGV0IGNvbnRpbnVlV2FpdGluZyA9IHJlc1snY29udGludWVXYWl0aW5nJ107XHJcbiAgICAgICAgdGhpcy53YWl0aW5nTWVzc2FnZSA9IHJlc1snd2FpdGluZ01lc3NhZ2UnXTtcclxuICAgICAgICBcclxuICAgICAgICBpZihjb250aW51ZVdhaXRpbmcgJiYgKyt0aGlzLmNhbGxDb3VudCA+PSAxNSl7XHJcbiAgICAgICAgICBpZihsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImxhbmd1YWdlXCIpID09PSBcImVzXCIpe1xyXG4gICAgICAgICAgICB0aGlzLndhaXRpbmdNZXNzYWdlID0gXCJFc3TDoSB0YXJkYW5kbyBtw6FzIGRlIGxvIGhhYml0dWFsIHByb2Nlc2FyIHN1IHNvbGljaXR1ZC48YnIvPiBObyBhY3R1YWxpY2UgbGEgcMOhZ2luYS5cIlxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy53YWl0aW5nTWVzc2FnZSA9IFwiSXQncyB0YWtpbmcgbG9uZ2VyIHRoYW4gdXN1YWwgdG8gcHJvY2VzcyB5b3VyIHJlcXVlc3QuIDxici8+IERvIG5vdCByZWZyZXNoIHRoZSBwYWdlLlwiXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKGNvbnRpbnVlV2FpdGluZyAmJiB0aGlzLmNhbGxDb3VudCA+IDI1KXtcclxuICAgICAgICAgIHRoaXMudGltZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgaWYodGhpcy5scy5pc0xvZ2dlZEluKCkpe1xyXG4gICAgICAgICAgICB0aGlzLnBhZ2VUb09wZW4gPSBcIndlbGNvbWVcIjtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMucGFnZVRvT3BlbiA9IFwibGFuZGluZ1wiO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBpZihsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImxhbmd1YWdlXCIpID09PSBcImVzXCIpe1xyXG4gICAgICAgICAgICB0aGlzLnN1Y2Nlc3NQYWdlRWxlbWVudEFyci5uZXh0KFxyXG4gICAgICAgICAgICAgIFtcclxuICAgICAgICAgICAgICAgICAge3R5cGU6ICdoZWFkZXInLCBkZXNjcmlwdGlvbjogXCI8aDE+wqFVcHMhIE5vIHNlIHB1ZG8gcHJvY2VzYXIgdHUgc29saWNpdHVkLjwvaDE+XFx0XFx0XCIsIGluZGVudDogMCwgZm9udFNpemU6IDB9LFxyXG4gICAgICAgICAgICAgICAgICB7dHlwZTogJ3N1YmhoZWFkZXInLCBkZXNjcmlwdGlvbjogJzxoND5Qb3IgZmF2b3IsIGludMOpbnRlbG8gZGUgbnVldm8gZGVzcHXDqXMgZGUgdW4gdGllbXBvLjxoND5cXHRcXHQnLCBpbmRlbnQ6IDAsIGZvbnRTaXplOiAwfSxcclxuICAgICAgICAgICAgICAgICAge3R5cGU6ICdidXR0b25UZXh0JywgZGVzY3JpcHRpb246ICdQYWdpbmEgZGUgaW5pY2lvJywgaW5kZW50OiAwLCBmb250U2l6ZTogMH1cclxuICAgICAgICAgICAgICBdKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3VjY2Vzc1BhZ2VFbGVtZW50QXJyLm5leHQoXHJcbiAgICAgICAgICAgICAgW1xyXG4gICAgICAgICAgICAgICAgICB7dHlwZTogJ2hlYWRlcicsIGRlc2NyaXB0aW9uOiBcIjxoMT5Pb3BzISBjb3VsZCBub3QgcHJvY2VzcyB5b3VyIHJlcXVlc3QuPC9oMT5cXHRcXHRcIiwgaW5kZW50OiAwLCBmb250U2l6ZTogMH0sXHJcbiAgICAgICAgICAgICAgICAgIHt0eXBlOiAnc3ViaGhlYWRlcicsIGRlc2NyaXB0aW9uOiAnPGg0PlBsZWFzZSB0cnkgYWdhaW4gYWZ0ZXIgc29tZSB0aW1lLjxoND5cXHRcXHQnLCBpbmRlbnQ6IDAsIGZvbnRTaXplOiAwfSxcclxuICAgICAgICAgICAgICAgICAge3R5cGU6ICdidXR0b25UZXh0JywgZGVzY3JpcHRpb246ICdIb21lJywgaW5kZW50OiAwLCBmb250U2l6ZTogMH1cclxuICAgICAgICAgICAgICBdKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMudGltZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIGlmICghY29udGludWVXYWl0aW5nKSB7XHJcbiAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcInNlbmQgYW5vdGhlciByZXF1ZXN0IHRvIGZldGNoIHBhZ2UgZWxlbWVudHNcIik7XHJcbiAgICAgICAgICBsZXQgbWVzc2FnZVNlcnZpY2VFcCA9IHJlc1snbWVzc2FnZVNlcnZpY2VFcCddO1xyXG4gICAgICAgICAgdGhpcy53YWl0aW5nTWVzc2FnZSA9IHJlc1snd2FpdGluZ01lc3NhZ2UnXTtcclxuICAgICAgICAgIHRoaXMuZmV0Y2hQYWdlRWxlbWVudHMobWVzc2FnZVNlcnZpY2VFcCwgdXVpZFRlbXApLnN1YnNjcmliZShcclxuICAgICAgICAgICAgcmVzcCA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zdGF0dXNNb2RlbCAgPSByZXNwO1xyXG4gICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFwiIHRoaXMuc3RhdHVzTW9kZWwgXCIsIHRoaXMuc3RhdHVzTW9kZWwpO1xyXG4gICAgICAgICAgICAgIGlmKHJlc3BbJ25hdmlnYXRlSW1tZWRpYXRlbHknXSl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW5OZXh0UGFnZShyZXNwWydwYWdlVG9PcGVuJ10pO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSBpZihyZXNwWydzaG93UWUnXSl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcIk9wZW4gUXVlc3Rpb25uYWlyZSBvcHRpb24gZW5jb3VudGVyZWRcIik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnFlU3VjY2Vzc1dhaXRDaGVja1NlcnZpY2VVcmkgPSB0aGlzLnN0YXR1c01vZGVsLnFlU3VjY2Vzc1dhaXRDaGVja1NlcnZpY2VVcmk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnFlU3VjY2Vzc1dhaXRGb3JQcm9jZXNzaW5nID0gdGhpcy5zdGF0dXNNb2RlbC5xZVN1Y2Nlc3NXYWl0Rm9yUHJvY2Vzc2luZztcclxuICAgICAgICAgICAgICAgIHRoaXMucWVTdWNjZXNzVXJpID0gdGhpcy5zdGF0dXNNb2RlbC5xZVN1Y2Nlc3NVcmk7XHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLnFlU3VjY2Vzc1VyaSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucWVRdWVyeU1vZGVscyA9IHJlc3AucWVRdWVyeU1vZGVscztcclxuICAgICAgICAgICAgICAgICAgdGhpcy5pc09wZW5RZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXCJEaXJlY3QgcG9sbGluZyB0byBuZXcgcHJvY2Vzc1wiKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5kb1BvbGxpbmdGb3JSZXF1ZXN0KHRoaXMudXVpZCwgdGhpcy5xZVN1Y2Nlc3NXYWl0Q2hlY2tTZXJ2aWNlVXJpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9IGVsc2V7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2VUb09wZW4gPSByZXNwWydwYWdlVG9PcGVuJ107XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN1Y2Nlc3NQYWdlRWxlbWVudEFyci5uZXh0KHJlc3BbJ3N1Y2Nlc3NQYWdlRWxlbWVudCddKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLnRpbWVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgICB0aGlzLmNvdW50RG93blN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgICAgZXJyID0+IHtcclxuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnV0aWwuZXJyb3JIYW5kbGVyKGVycik7XHJcbiAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnaHR0cCBlcnJvciByZXNwb25zZSA9ICcsIGVycik7XHJcbiAgICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICByZXRyaXZlUG9sbGluZ1N0YXR1c0ZvclBhZ2UodXVpMTI6IHN0cmluZywgd2FpdENoZWNrU2VydmljZVVyaTEyOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgdGhpcy5sb2dnZXIuZGVidWcoXCJQb2xsaW5nIHNlcnZpY2UgVVJMIC0gXCIgKyB3YWl0Q2hlY2tTZXJ2aWNlVXJpMTIpO1xyXG4gICAgcmV0dXJuIHRoaXMudmFsaWRhdGlvblNlcnZpY2UuZ2V0PFBvbGxpbmdTdGF0dXNNb2RlbD4od2FpdENoZWNrU2VydmljZVVyaTEyICsgdXVpMTIpO1xyXG4gIH1cclxuXHJcbiAgZmV0Y2hQYWdlRWxlbWVudHMobWVzc2FnZVNlcnZpY2VFcDogc3RyaW5nLCB1dWkxMjogc3RyaW5nKTogT2JzZXJ2YWJsZTxTdGF0dXNNb2RlbD4ge1xyXG4gICAgdGhpcy5sb2dnZXIuZGVidWcoXCJQYWdlIGVsZW1lbnQgc2VydmljZSBVUkwgLSBcIiArIG1lc3NhZ2VTZXJ2aWNlRXApO1xyXG4gICAgcmV0dXJuIHRoaXMudmFsaWRhdGlvblNlcnZpY2UuZ2V0PFN0YXR1c01vZGVsPihtZXNzYWdlU2VydmljZUVwICsgdXVpMTIpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGVtYWlsQWRkcmVzcygpIHtcclxuICAgIHJldHVybiB0aGlzLnN1Y2Nlc3NGb3JtLmNvbnRyb2xzWydlbWFpbEFkZHJlc3MnXTtcclxuICB9XHJcblxyXG4gIHJlc2VuZFZlcmlmaWNhdGlvbkVtYWlsKCkge1xyXG4gICAgdGhpcy5sb2dnZXIuZGVidWcoJ3Jlc2VuZFZlcmlmaWNhdGlvbkVtYWlsJyk7XHJcbiAgICB0aGlzLnNob3dMb2FkZXJUaGVtZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5xdWVzdGlvbm5haXJlU2VydmljZS51dWlkLnN1YnNjcmliZShwYXJhbXMgPT4ge1xyXG4gICAgICB0aGlzLmNsYWltYW50U2VydmljZS5yZXNlbmRWZXJpZmljYXRpb25FbWFpbChwYXJhbXMudmFsdWVPZigpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICByZXMgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnV0aWwuaGlkZUxvYWRlcigpO1xyXG4gICAgICAgICAgICB0aGlzLnNob3dMb2FkZXJUaGVtZSA9IGZhbHNlO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGVyciA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdFcnJvcicsIGVycik7XHJcbiAgICAgICAgICAgIHRoaXMudXRpbC5oaWRlTG9hZGVyKCk7XHJcbiAgICAgICAgICAgIHRoaXMudXRpbC5lcnJvckhhbmRsZXIoZXJyKTtcclxuICAgICAgICAgICAgdGhpcy5zaG93TG9hZGVyVGhlbWUgPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgfVxyXG4gICAgKTtcclxuXHJcbiAgfVxyXG5cclxuICBzZXRGb250U2l6ZShmb250c2l6ZTogbnVtYmVyKTogb2JqZWN0IHtcclxuICAgIGlmIChmb250c2l6ZSA9PT0gMCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnZm9udHNpemUnLCBmb250c2l6ZSk7XHJcbiAgICBsZXQgc3R5bGVPYmogPSB7XHJcbiAgICAgICdmb250LXNpemUnOiBmb250c2l6ZSArICdweCdcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oc3R5bGVPYmopO1xyXG4gIH1cclxuXHJcbiAgb3Blbk5leHRQYWdlKHBhZ2VUb09wZW4pe1xyXG4gICAgd2luZG93Lm9wZW4obG9jYXRpb24ub3JpZ2luICsgcGFnZVRvT3BlbiwgJ19zZWxmJyk7XHJcbiAgfVxyXG5cclxuICBvcGVuUGFnZSgpIHtcclxuXHJcbiAgICBsZXQgY3VycmVudENvbnRleHRSb290ID0gdGhpcy5nZXRDb250ZXh0Um9vdCgpO1xyXG4gICAgaWYgKHRoaXMucGFnZVRvT3BlbiAmJiB0aGlzLnBhZ2VUb09wZW4uc3Vic3RyaW5nKDAsIDQpICE9ICcvY3AvJyAmJiB0aGlzLnBhZ2VUb09wZW4gJiYgdGhpcy5wYWdlVG9PcGVuICE9ICdPcGVuUGFnZScpIHtcclxuICAgICAgdGhpcy5uYXZDb250cm9sbGVyLm5hdmlnYXRlRm9yd2FyZChbdGhpcy5wYWdlVG9PcGVuXSwgeyBxdWVyeVBhcmFtczogeyBpZGVudGlmaWVyOiB0aGlzLnV1aWQgfSB9KVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IHVybDogc3RyaW5nID0gXCIvY3AvbGFuZGluZ1wiO1xyXG4gICAgICBpZiAodGhpcy5wYWdlVG9PcGVuICYmIHRoaXMucGFnZVRvT3BlbiAhPSAnT3BlblBhZ2UnKSB7XHJcbiAgICAgICAgdXJsID0gdGhpcy5wYWdlVG9PcGVuO1xyXG4gICAgICB9XHJcbiAgICAgIHdpbmRvdy5vcGVuKGxvY2F0aW9uLm9yaWdpbiArIHVybCwgJ19zZWxmJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0Q29udGV4dFJvb3QoKSB7XHJcbiAgICByZXR1cm4gd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLnN1YnN0cmluZygwLCB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUuaW5kZXhPZihcIi9cIiwgMikpO1xyXG4gIH1cclxuXHJcbiAgc3VibWl0KCkge1xyXG4gICAgdGhpcy5sb2dnZXIuZGVidWcoJ1N1Y2Nlc3MgY2FsbGVkJywgdGhpcy5lbWFpbEFkZHJlc3MudmFsdWUsICcgdXVpZCAnLCB0aGlzLnV1aWQpO1xyXG4gICAgdGhpcy5jbGFpbWFudFNlcnZpY2UudXBkYXRlRW1haWwodGhpcy5lbWFpbEFkZHJlc3MudmFsdWUsIHRoaXMudXVpZClcclxuICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICByZXMgPT4ge1xyXG4gICAgICAgICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcclxuICAgICAgICAgIHRoaXMuc2hvd0xvYWRlclRoZW1lID0gZmFsc2U7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnIgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ0Vycm9yJywgZXJyKTtcclxuICAgICAgICAgIHRoaXMudXRpbC5oaWRlTG9hZGVyKCk7XHJcbiAgICAgICAgICB0aGlzLnV0aWwuZXJyb3JIYW5kbGVyKGVycik7XHJcbiAgICAgICAgICB0aGlzLnNob3dMb2FkZXJUaGVtZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIHF1U3VjY2Vzcygpe1xyXG4gICAgdGhpcy5sb2dnZXIuZGVidWcoXCJxZSBzdWNjZXNzIGhlcmVcIik7XHJcbiAgICBpZih0aGlzLmlzT3BlblFlKXsgIFxyXG4gICAgICB0aGlzLnZhbGlkYXRpb25TZXJ2aWNlLnBvc3QodGhpcy5xZVN1Y2Nlc3NVcmksIG51bGwpXHJcbiAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgIHJlcyA9PiB7ICBcclxuICAgICAgICAgICAgdGhpcy5pc09wZW5RZSA9IGZhbHNlOyAgICAgICAgIFxyXG4gICAgICAgICAgICBpZih0aGlzLnFlU3VjY2Vzc1dhaXRGb3JQcm9jZXNzaW5nKXtcclxuICAgICAgICAgICAgICB0aGlzLmRvUG9sbGluZ0ZvclJlcXVlc3QodGhpcy51dWlkLCB0aGlzLnFlU3VjY2Vzc1dhaXRDaGVja1NlcnZpY2VVcmkpO1xyXG4gICAgICAgICAgICB9ICAgICAgICAgICAgXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZXJyID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ0Vycm9yJywgZXJyKTtcclxuICAgICAgICAgICAgdGhpcy51dGlsLmVycm9ySGFuZGxlcihlcnIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgfVxyXG5cclxufVxyXG4iLCI8aW9uLWhlYWRlcj5cclxuICA8YXBwLWhlYWRlciBbc2Vjb25kVG9vbGJhcl09XCJmYWxzZVwiPjwvYXBwLWhlYWRlcj5cclxuPC9pb24taGVhZGVyPlxyXG5cclxuPGlvbi1jb250ZW50PlxyXG4gIDxhcHAtY29udGVudCBbc2hvd0hlbHBdPVwiZmFsc2VcIiBbaGlkZUZvb3Rlcl09XCJ0cnVlXCI+XHJcbiAgICA8YXBwLW11bHRpLXF1ZXN0aW9ubmFpcmUgW3FlUXVlcnlNb2RlbHNdPVwicWVRdWVyeU1vZGVsc1wiICpuZ0lmPVwiaXNPcGVuUWVcIiBbc2hvd0Nsb3NlXT1cImZhbHNlXCIgXHJcbiAgICAob25Db21wbGV0ZSk9XCJxdVN1Y2Nlc3MoKVwiIFtoZWFkZXJdPVwicG9wVXBIZWFkZXJcIiBbc2hvd1F1ZXN0aW9uTnVtYmVyXT1cInRydWVcIj48L2FwcC1tdWx0aS1xdWVzdGlvbm5haXJlPlxyXG4gICAgPGlvbi1yb3cgY2xhc3M9XCJpb24tcGFkZGluZ1wiICpuZ0lmPVwiaXNMb2FkaW5nXCI+XHJcbiAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgPGlvbi1sYWJlbCAgY2xhc3M9XCJib3hcInN0eWxlPVwiY29sb3I6dmFyKC0taW9uLWNvbG9yLWdyZXkpOyBmb250LXNpemU6IDI0cHhcIj5cclxuICAgICAgICAgIDxkaXYgW2lubmVySFRNTF09XCJzYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwod2FpdGluZ01lc3NhZ2UpXCI+PC9kaXY+PC9pb24tbGFiZWw+XHJcbiAgICAgICAgPGJyPlxyXG4gICAgICAgIDxpb24tc3Bpbm5lciBuYW1lPVwiZG90c1wiPjwvaW9uLXNwaW5uZXI+XHJcbiAgICAgIDwvaW9uLWNvbD5cclxuICAgIDwvaW9uLXJvdz5cclxuXHJcbiAgICA8ZGl2ICpuZ0lmPVwiZWxlbWVudHMuZ2V0VmFsdWUoKSAmJiAhaXNMb2FkaW5nXCI+XHJcblxyXG4gICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBlbGVtZW50IG9mICBlbGVtZW50cy5nZXRWYWx1ZSgpOyAgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgIDxkaXYgW2lubmVySFRNTF09XCJlbGVtZW50LmRlc2NyaXB0aW9uXCIgc3R5bGU9XCJ0ZXh0LWFsaWduOiBsZWZ0O1wiICpuZ0lmPVwiZWxlbWVudC50eXBlID09PSdoZWFkZXInXCJcclxuICAgICAgICAgIHN0eWxlPVwiY29sb3I6dmFyKC0taW9uLWNvbG9yLWdyZXkpO1wiIHN0eWxlPVwicGFkZGluZy1sZWZ0OiAyNXB4O1wiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxpb24tZ3JpZD5cclxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBlbGVtZW50IG9mICBlbGVtZW50cy5nZXRWYWx1ZSgpOyAgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgPGlvbi1yb3cgKm5nSWY9XCJlbGVtZW50LnR5cGUgPT09J3N1YmhoZWFkZXInXCI+XHJcbiAgICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtY2VudGVyICBpb24tcGFkZGluZ1wiIHNpemU9XCIxMlwiIHNpemVTbT1cIjEyXCIgc2l6ZVhzPVwiMTJcIiBzaXplTWQ9XCIxMFwiIHNpemVMZz1cIjhcIlxyXG4gICAgICAgICAgICAgIHNpemVYbD1cIjhcIiBvZmZzZXRNZD1cIjFcIiBvZmZzZXRYbD1cIjJcIiBvZmZzZXRMZz1cIjJcIj5cclxuICAgICAgICAgICAgICA8ZGl2IFtpbm5lckhUTUxdPVwiZWxlbWVudC5kZXNjcmlwdGlvblwiIGNsYXNzPVwiYm94XCIgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAyMHB4O1wiXHJcbiAgICAgICAgICAgICAgICBzdHlsZT1cImNvbG9yOnZhcigtLWlvbi1jb2xvci1ncmV5KTtcIj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgPC9pb24tcm93PlxyXG5cclxuICAgICAgICAgIDxpb24tcm93ICpuZ0lmPVwiZWxlbWVudC50eXBlID09PSd0ZXh0MSdcIj5cclxuICAgICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tcGFkZGluZ1wiIHNpemU9XCIxMlwiIHNpemVTbT1cIjEyXCIgc2l6ZVhzPVwiMTJcIiBzaXplTWQ9XCIxMFwiIHNpemVMZz1cIjhcIlxyXG4gICAgICAgICAgICAgIHNpemVYbD1cIjhcIiBvZmZzZXRNZD1cIjFcIiBvZmZzZXRYbD1cIjJcIiBvZmZzZXRMZz1cIjJcIj5cclxuICAgICAgICAgICAgICA8ZGl2IFtpbm5lckhUTUxdPVwiZWxlbWVudC5kZXNjcmlwdGlvblwiPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICA8L2lvbi1yb3c+XHJcblxyXG4gICAgICAgICAgPGlvbi1yb3cgKm5nSWY9XCJlbGVtZW50LnR5cGUgPT09J3RleHQyJ1wiPlxyXG4gICAgICAgICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWp1c3RpZnkgaW9uLXBhZGRpbmdcIiBzaXplPVwiMTJcIiBzaXplU209XCIxMlwiIHNpemVYcz1cIjEyXCIgc2l6ZU1kPVwiMTBcIiBzaXplTGc9XCI4XCJcclxuICAgICAgICAgICAgICBzaXplWGw9XCI4XCIgb2Zmc2V0TWQ9XCIxXCIgb2Zmc2V0WGw9XCIyXCIgb2Zmc2V0TGc9XCIyXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBbaW5uZXJIVE1MXT1cInNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChlbGVtZW50LmRlc2NyaXB0aW9uKVwiPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICA8L2lvbi1yb3c+XHJcblxyXG4gICAgICAgICAgPGlvbi1yb3cgKm5nSWY9XCJlbGVtZW50LnR5cGUgPT09J2VtYWlsVXBkYXRlJ1wiPlxyXG4gICAgICAgICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWp1c3RpZnkgaW9uLXBhZGRpbmdcIiBzaXplPVwiMTJcIiBzaXplU209XCIxMlwiIHNpemVYcz1cIjEyXCIgc2l6ZU1kPVwiMTBcIiBzaXplTGc9XCI4XCJcclxuICAgICAgICAgICAgICBzaXplWGw9XCI4XCIgb2Zmc2V0TWQ9XCIxXCIgb2Zmc2V0WGw9XCIyXCIgb2Zmc2V0TGc9XCIyXCI+XHJcbiAgICAgICAgICAgICAgPGlvbi1yb3c+ICAgIFxyXG4gICAgICAgICAgICAgICAgPGlvbi1jb2w+XHJcbiAgICAgICAgICAgICAgPGRpdiBbaW5uZXJIVE1MXT1cInNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChlbGVtZW50LmRlc2NyaXB0aW9uKVwiPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgICAgICA8aW9uLXJvdz4gICAgXHJcbiAgICAgICAgICAgICAgIDxpb24tY29sPiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJlbWFpbEFkZHJlc3NcIiBzaXplPVwiNjBcIiB0eXBlPVwiaW5wdXRcIiBwSW5wdXRUZXh0IFtmb3JtQ29udHJvbF09XCJlbWFpbEFkZHJlc3NcIiAvPlxyXG4gICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICA8aW9uLWNvbD4gXHJcbiAgICAgICAgICAgICAgPGlvbi1idXR0b24gc2hhcGU9XCJyb3VuZFwiIChjbGljayk9XCJzdWJtaXQoKVwiIHR5cGU9XCJzdWJtaXRcIj57eydjb21tb24uc3VibWl0J3wgdHJhbnNsYXRlfX08L2lvbi1idXR0b24+XHJcbiAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgPC9pb24tcm93PlxyXG5cclxuICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgICAgPGlvbi1yb3cgKm5nSWY9XCJlbGVtZW50LnR5cGUgPT09J3Jlc2VuZGVtYWlsJ1wiPlxyXG4gICAgICAgICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWp1c3RpZnkgaW9uLXBhZGRpbmdcIiBzaXplPVwiMTJcIiBzaXplU209XCIxMlwiIHNpemVYcz1cIjEyXCIgc2l6ZU1kPVwiMTBcIiBzaXplTGc9XCI4XCJcclxuICAgICAgICAgICAgICBzaXplWGw9XCI4XCIgb2Zmc2V0TWQ9XCIxXCIgb2Zmc2V0WGw9XCIyXCIgb2Zmc2V0TGc9XCIyXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBzdHlsZT0ndGV4dC1hbGlnbjpjZW50ZXInPnt7J2VtYWlsLm5vLmVtYWlsJ3wgdHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiAoY2xpY2spPVwicmVzZW5kVmVyaWZpY2F0aW9uRW1haWwoKVwiPiB7eydlbWFpbC5jbGljay5oZXJlJ3wgdHJhbnNsYXRlfX08L2E+IHt7J2VtYWlsLndlLndpbGwuc2VuZCd8IHRyYW5zbGF0ZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgICAgPGlvbi1yb3cgKm5nSWY9XCJlbGVtZW50LnR5cGUgPT09J3RleHQzJ1wiPlxyXG4gICAgICAgICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWp1c3RpZnkgaW9uLXBhZGRpbmdcIiBzaXplPVwiMTJcIiBzaXplU209XCIxMlwiIHNpemVYcz1cIjEyXCIgc2l6ZU1kPVwiMTBcIiBzaXplTGc9XCI4XCJcclxuICAgICAgICAgICAgICBzaXplWGw9XCI4XCIgb2Zmc2V0TWQ9XCIxXCIgb2Zmc2V0WGw9XCIyXCIgb2Zmc2V0TGc9XCIyXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBbaW5uZXJIVE1MXT1cInNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChlbGVtZW50LmRlc2NyaXB0aW9uKVwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICA8L2lvbi1yb3c+XHJcblxyXG4gICAgICAgICAgPGlvbi1yb3cgKm5nSWY9XCJlbGVtZW50LnR5cGUgPT09J3RleHQ0J1wiPlxyXG4gICAgICAgICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWp1c3RpZnkgaW9uLXBhZGRpbmdcIiBzaXplPVwiMTJcIiBzaXplU209XCIxMlwiIHNpemVYcz1cIjEyXCIgc2l6ZU1kPVwiMTBcIiBzaXplTGc9XCI4XCJcclxuICAgICAgICAgICAgICBzaXplWGw9XCI4XCIgb2Zmc2V0TWQ9XCIxXCIgb2Zmc2V0WGw9XCIyXCIgb2Zmc2V0TGc9XCIyXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBbaW5uZXJIVE1MXT1cInNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChlbGVtZW50LmRlc2NyaXB0aW9uKVwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvaW9uLWdyaWQ+XHJcblxyXG5cclxuICAgICAgPCEtLUZvciBidXR0b24tLT5cclxuICAgICAgPGlvbi1ncmlkPlxyXG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGVsZW1lbnQgb2YgIGVsZW1lbnRzLmdldFZhbHVlKCk7ICBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICA8aW9uLXJvdz5cclxuICAgICAgICAgICAgPGlvbi1jb2wgKm5nSWY9XCJlbGVtZW50LnR5cGUgPT09J2J1dHRvbkFkZGphY2VudFRleHQnXCIgY2xhc3M9XCJpb24tdGV4dC1yaWdodCBpb24tcGFkZGluZy1lbmRcIiBzaXplPVwiMTJcIlxyXG4gICAgICAgICAgICAgIHNpemVTbT1cIjEyXCIgc2l6ZVhzPVwiMTJcIiBzaXplTWQ9XCIxMFwiIHNpemVMZz1cIjhcIiBzaXplWGw9XCI4XCIgb2Zmc2V0TWQ9XCIxXCIgb2Zmc2V0WGw9XCIyXCIgb2Zmc2V0TGc9XCIyXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlvbi10ZXh0LXJpZ2h0XCIgc3R5bGU9XCJjb2xvcjp2YXIoLS1pb24tY29sb3ItZ3JleSk7XCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZWxlbWVudC50eXBlID09PSdidXR0b25BZGRqYWNlbnRUZXh0J1wiPlxyXG4gICAgICAgICAgICAgICAgPGgzPnt7ZWxlbWVudC5kZXNjcmlwdGlvbn19PC9oMz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICA8aW9uLWNvbCAqbmdJZj1cImVsZW1lbnQudHlwZSA9PT0nYnV0dG9uVGV4dCdcIiBjbGFzcz1cImlvbi10ZXh0LXJpZ2h0IGlvbi1wYWRkaW5nLWVuZFwiIHNpemU9XCIxMlwiIHNpemVTbT1cIjEyXCJcclxuICAgICAgICAgICAgICAgICAgc2l6ZVhzPVwiMTJcIiBzaXplTWQ9XCIxMFwiIHNpemVMZz1cIjhcIiBzaXplWGw9XCI4XCIgb2Zmc2V0TWQ9XCIxXCIgb2Zmc2V0WGw9XCIyXCIgb2Zmc2V0TGc9XCIyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJlbGVtZW50LnR5cGUgPT09J2J1dHRvblRleHQnXCIgY2xhc3M9XCJpb24tdGV4dC1yaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uICpuZ0lmPVwiZWxlbWVudC5kZXNjcmlwdGlvbiA9PT0gJ1N1Ym1pdCc7IGVsc2UgZGVmYXVsdEJ1dHRvblwiIHNoYXBlPVwicm91bmRcIiAoY2xpY2spPVwib3BlblBhZ2UoKVwiIGNvbG9yPVwic3VjY2Vzc1wiIHNpemU9XCJiaWdcIiB0eXBlPVwic3VibWl0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eydjb21tb24uc3VibWl0JyB8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIHNoYXBlPVwicm91bmRcIiAoY2xpY2spPVwib3BlblBhZ2UoKVwiIGNvbG9yPVwic3VjY2Vzc1wiIHNpemU9XCJiaWdcIiB0eXBlPVwic3VibWl0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ZWxlbWVudC5kZXNjcmlwdGlvbn19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgIDwvaW9uLXJvdz5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8L2lvbi1ncmlkPlxyXG5cclxuXHJcblxyXG4gICAgICA8IS0tQnV0dG9uLS0+XHJcblxyXG4gICAgPC9kaXY+XHJcblxyXG5cclxuXHJcblxyXG4gIDwvYXBwLWNvbnRlbnQ+XHJcbjwvaW9uLWNvbnRlbnQ+Il19
|