@bnsights/bbsf-controls 1.0.67 → 1.0.69
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 +13 -0
- package/bnsights-bbsf-controls-1.0.69.tgz +0 -0
- package/bnsights-bbsf-controls.metadata.json +1 -1
- package/bundles/bnsights-bbsf-controls.umd.js +359 -33
- package/bundles/bnsights-bbsf-controls.umd.js.map +1 -1
- package/esm2015/lib/Shared/Models/bread-crumb.js +8 -0
- package/esm2015/lib/Shared/Models/control-filter-Item.js +6 -0
- package/esm2015/lib/Shared/Models/filter-options.js +9 -0
- package/esm2015/lib/Shared/Models/page-header-options.js +78 -0
- package/esm2015/lib/Shared/components/app-base-component.js +168 -0
- package/esm2015/lib/controls/DateTimePicker/DateTimePicker.component.js +3 -4
- package/esm2015/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.js +2 -2
- package/esm2015/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.js +2 -2
- package/esm2015/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.js +5 -3
- package/esm2015/lib/controls/bbsf-controls.module.js +6 -3
- package/esm2015/lib/controls/page-header-component/page-header-component.component.js +32 -0
- package/esm2015/public-api.js +7 -1
- package/fesm2015/bnsights-bbsf-controls.js +317 -25
- package/fesm2015/bnsights-bbsf-controls.js.map +1 -1
- package/lib/Shared/Models/bread-crumb.d.ts +6 -0
- package/lib/Shared/Models/control-filter-Item.d.ts +6 -0
- package/lib/Shared/Models/filter-options.d.ts +7 -0
- package/lib/Shared/Models/page-header-options.d.ts +71 -0
- package/lib/Shared/components/app-base-component.d.ts +47 -0
- package/lib/controls/page-header-component/page-header-component.component.d.ts +17 -0
- package/package.json +4 -3
- package/public-api.d.ts +6 -0
- package/src/lib/assets/Style-rtl.scss +51 -54
- package/src/lib/assets/Style.scss +4 -0
- package/src/lib/assets/images/Bg-pattern.png +0 -0
- package/src/lib/assets/sass/base.scss +5 -1
- package/src/lib/assets/sass/datetime-picker.scss +123 -0
- package/bnsights-bbsf-controls-1.0.67.tgz +0 -0
|
@@ -411,7 +411,7 @@ MultiLingualTextAreaComponent.controlContainerstatic = null;
|
|
|
411
411
|
MultiLingualTextAreaComponent.decorators = [
|
|
412
412
|
{ type: Component, args: [{
|
|
413
413
|
selector: 'BBSF-MultiLingualTextArea',
|
|
414
|
-
template: "<div [formGroup]=\"group\">\r\n <div class=\"
|
|
414
|
+
template: "<div [formGroup]=\"group\">\r\n <div class=\"bbsf-control bbsf-multilang-textarea\" [formGroup]=\"MultiLanguageTextAreagroup\">\r\n <div class=\"row\">\r\n <!--English textarea-->\r\n <div [ngClass]=\"(options.MultiControlPlacementType==1)?'col-md-12':'col-md-6'\" *ngIf=\"ShowEngishTextArea\" class=\"bbsf-multilang-form-group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label class=\"bbsf-label {{options.LabelExtraClasses}}\" [hidden]=\"options.IsHideEnglishLabel\">\r\n {{(options.EnglishLabelValue!=null&&options.EnglishLabelValue!=\"\")?options.EnglishLabelValue:options.LabelValue+\"in English\"}} <!--Asterisk-->\r\n <span *ngIf=\"((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired))&&IsShowAsteriskInEnglish\" class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\" [ngClass]=\"options.EnableCopyToClipboard? 'p-40px' : '' \">\r\n <!--input-->\r\n <textarea class=\"form-control\" dir=\"ltr\" rows=\"{{options.Rows}}\" cols=\"{{options.Cols}}\"\r\n (focus)=\"onEnglishFocus(true)\" (focusout)=\"onEnglishFocus(false)\"\r\n maxlength=\"{{options.MaxLength}}\" minlength=\"{{options.MinLength}}\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n formControlName=\"English\" [hidden]=\"options.IsHideEnglishFields\"\r\n [class.is-invalid]=\"EnglishTextAreaFormControl.invalid && EnglishTextAreaFormControl.touched\"\r\n placeholder=\"{{options.EnglishPlaceholder}}\" (change)=\"trimControlValue('En')\"\r\n (keyup)=\"onTextChange()\" [(ngModel)]=\"options.Value.English\"\r\n (keydown)=\"EnglishWordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n #userinputTextAreaEnglish>\r\n </textarea>\r\n <!--CopyToClipboard-->\r\n <div class=\"copy-clipboard\" [hidden]=\"options.IsHideEnglishFields\" *ngIf=\"options.EnableCopyToClipboard\" (click)=\"copyInputMessage(userinputTextAreaEnglish)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!--wordCount-->\r\n <div class=\"bbsf-word-count\" *ngIf=\"options.MaxWordCount>0&&IsShowEnglishWordCount\">{{EnglishWordCount}}/{{options.MaxWordCount}} Words</div>\r\n <!-- CharsLimitMsg-->\r\n <div class=\"bbsf-character-count\" *ngIf=\"showEnglishCharsLimitMsg\" [ngClass]=\"{'badge-light-warning': englishCharsLimitMsgClass === 'warning', 'badge-light-danger' : englishCharsLimitMsgClass === 'danger' }\">\r\n {{englishMaxLimitWarningMsg}}\r\n </div>\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"(options.LabelDescription!=null&&options.LabelDescription!='') ||(options.EnglishLabelDescription!=null&&options.EnglishLabelDescription!='')\">\r\n {{(options.EnglishLabelDescription!=null&&options.EnglishLabelDescription!=\"\")?options.EnglishLabelDescription:options.LabelDescription}}\r\n </div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(EnglishTextAreaFormControl.invalid && EnglishTextAreaFormControl.touched)\">\r\n {{getErrorValidation(EnglishTextAreaFormControl.errors|keyvalue)}}\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n </div>\r\n </div>\r\n <!--Arabic textbox-->\r\n <div [ngClass]=\"(options.MultiControlPlacementType==1)?'col-md-12':'col-md-6'\" *ngIf=\"ShowArabicTextArea\" class=\"bbsf-multilang-form-group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label class=\"bbsf-label {{options.LabelExtraClasses}}\" [hidden]=\"options.IsHideArabicLabel\">\r\n {{(options.ArabicLabelValue!=null&&options.ArabicLabelValue!=\"\")?options.ArabicLabelValue:options.LabelValue+\"in Arabic\"}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired))&&IsShowAsteriskInArabic\" class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\" [ngClass]=\"options.EnableCopyToClipboard? 'p-40px' : '' \">\r\n <!--input-->\r\n <textarea class=\"form-control bnsights-control\" dir=\"rtl\" rows=\"{{options.Rows}}\" cols=\"{{options.Cols}}\"\r\n (focus)=\"onArabicFocus(true)\" (focusout)=\"onArabicFocus(false)\"\r\n [hidden]=\"options.IsHideArabicFields\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n formControlName=\"Arabic\" rows=\"{{options.Rows}}\"\r\n maxlength=\"{{options.MaxLength}}\" minlength=\"{{options.MinLength}}\"\r\n [class.is-invalid]=\"ArabicTextAreaFormControl.invalid && ArabicTextAreaFormControl.touched\"\r\n placeholder=\"{{options.ArabicPlaceholder}}\" (change)=\"trimControlValue('Ar')\"\r\n (keyup)=\"onTextChange()\" [(ngModel)]=\"options.Value.Arabic\"\r\n (keydown)=\"ArabicWordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n #userinputTextAreaArabic>\r\n </textarea>\r\n <!--CopyToClipboard-->\r\n <div class=\"copy-clipboard\" [hidden]=\"options.IsHideArabicFields\" *ngIf=\"options.EnableCopyToClipboard\" (click)=\"copyInputMessage(userinputTextAreaArabic)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!--wordCount-->\r\n <div class=\"bbsf-word-count\" *ngIf=\"options.MaxWordCount>0&&IsShowArabicWordCount\">{{ArabicWordCount}}/{{options.MaxWordCount}} Words</div>\r\n <!-- CharsLimitMsg-->\r\n <div class=\"bbsf-character-count\" *ngIf=\"showArabicCharsLimitMsg\" [ngClass]=\"{'badge-light-warning': arabicCharsLimitMsgClass === 'warning', 'badge-light-danger' : arabicCharsLimitMsgClass === 'danger' }\">\r\n {{arabicMaxLimitWarningMsg}}\r\n </div>\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"(options.LabelDescription!=null&&options.LabelDescription!='')||(options.ArabicLabelDescription!=null&&options.ArabicLabelDescription!='')\">\r\n {{(options.ArabicLabelDescription!=null&&options.ArabicLabelDescription!=\"\")?options.ArabicLabelDescription:options.LabelDescription}}\r\n </div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(ArabicTextAreaFormControl.invalid && ArabicTextAreaFormControl.touched)\">\r\n {{getErrorValidation(ArabicTextAreaFormControl.errors|keyvalue)}}\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n"
|
|
415
415
|
},] }
|
|
416
416
|
];
|
|
417
417
|
MultiLingualTextAreaComponent.ctorParameters = () => [
|
|
@@ -427,4 +427,4 @@ MultiLingualTextAreaComponent.propDecorators = {
|
|
|
427
427
|
options: [{ type: Input }],
|
|
428
428
|
OnChange: [{ type: Output }]
|
|
429
429
|
};
|
|
430
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTXVsdGlMaW5ndWFsVGV4dEFyZWEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1jb250cm9scy9zcmMvbGliL2NvbnRyb2xzL011bHRpTGluZ3VhbFRleHRBcmVhL011bHRpTGluZ3VhbFRleHRBcmVhLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQVcsUUFBUSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEcsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFtQixnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNILE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUV4RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxjQUFjLEVBQUUsTUFBTywwQkFBMEIsQ0FBQztBQUNyRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOENBQThDLENBQUM7QUFFOUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBT2pFLE1BQU0sT0FBTyw2QkFBNkI7SUFLeEMsWUFBbUIsbUNBQXVELEVBQXNCLGdCQUFrQyxFQUN4SCxjQUE4QixFQUFVLGNBQThCLEVBQVUsd0JBQWtELEVBQ2xJLGNBQThCO1FBRnJCLHdDQUFtQyxHQUFuQyxtQ0FBbUMsQ0FBb0I7UUFBc0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUN4SCxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7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Q0FBOEM7Z0JBQzFGLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUM7U0FDeEM7YUFDSSxZQUFZO1lBQ2YsSUFBSSxDQUFDLHdCQUF3QixHQUFHLEtBQUssQ0FBQztJQUMxQyxDQUFDOztBQW5jTSxvREFBc0IsR0FBRyxJQUFJLENBQUM7O1lBTnRDLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsMkJBQTJCO2dCQUNyQyxxMU9BQW9EO2FBQ3JEOzs7WUFmK0Usa0JBQWtCO1lBQXBDLGdCQUFnQix1QkFxQkMsUUFBUTtZQWpCOUUsY0FBYztZQUVZLGNBQWM7WUFBeEMsd0JBQXdCO1lBQ3hCLGNBQWM7OztvQkFvQnBCLEtBQUs7c0JBQ0wsS0FBSzt1QkFDTCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBEb0NoZWNrLCBPcHRpb25hbCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMsIEZvcm1Hcm91cCwgQWJzdHJhY3RDb250cm9sLCBDb250cm9sQ29udGFpbmVyLCBGb3JtR3JvdXBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IElucHV0VHlwZSB9IGZyb20gJy4uLy4uL1NoYXJlZC9FbnVtcy9JbnB1dFR5cGUnO1xyXG5pbXBvcnQgeyBFbmdsaXNoQXJhYmljRFRPIH0gZnJvbSAnLi4vLi4vU2hhcmVkL01vZGVscy9FbmdsaXNoQXJhYmljRFRPJztcclxuaW1wb3J0IHsgTXVsdGlMaW5ndWFsVGV4dEFyZWFPcHRpb25zIH0gZnJvbSAnLi4vLi4vU2hhcmVkL01vZGVscy9NdWx0aUxpbmd1YWxUZXh0QXJlYU9wdGlvbnMnO1xyXG5pbXBvcnQgeyBDb250cm9sVXRpbGl0eSB9IGZyb20gJy4uLy4uL1NoYXJlZC9zZXJ2aWNlcy9Db250cm9sVXRpbGl0eSc7XHJcbmltcG9ydCB7IExhbmd1YWdlTW9kZSB9IGZyb20gJy4uLy4uL1NoYXJlZC9FbnVtcy9MYW5ndWFnZU1vZGUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsaWRhdGlvblNlcnZpY2UsIFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAgJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcbmltcG9ydCB7IEdsb2JhbFNldHRpbmdzIH0gZnJvbSAnLi4vLi4vU2hhcmVkL3NlcnZpY2VzL0dsb2JhbFNldHRpbmdzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvbnRyb2xMYXlvdXQgfSBmcm9tICcuLi8uLi9TaGFyZWQvRW51bXMvQ29udHJvbExheW91dCc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdCQlNGLU11bHRpTGluZ3VhbFRleHRBcmVhJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vTXVsdGlMaW5ndWFsVGV4dEFyZWEuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNdWx0aUxpbmd1YWxUZXh0QXJlYUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIHN0YXRpYyBjb250cm9sQ29udGFpbmVyc3RhdGljID0gbnVsbDtcclxuICBJc1Nob3dBc3Rlcmlza0luQXJhYmljOiBib29sZWFuO1xyXG4gIElzU2hvd0FzdGVyaXNrSW5FbmdsaXNoOiBib29sZWFuO1xyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBNdWx0aUxpbmd1YWxUZXh0QXJlYUZvcm1Db250cm9sSG9zdDogRm9ybUdyb3VwRGlyZWN0aXZlLCBAT3B0aW9uYWwoKSBwcml2YXRlIGNvbnRyb2xDb250YWluZXI6IENvbnRyb2xDb250YWluZXIsXHJcbiAgICBwcml2YXRlIGNvbnRyb2xVdGlsaXR5OiBDb250cm9sVXRpbGl0eSwgcHJpdmF0ZSBVdGlsaXR5U2VydmljZTogVXRpbGl0eVNlcnZpY2UsIHByaXZhdGUgY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlOiBDb250cm9sVmFsaWRhdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGdsb2JhbFNldHRpbmdzOiBHbG9iYWxTZXR0aW5nc1xyXG4gICkge1xyXG4gICAgTXVsdGlMaW5ndWFsVGV4dEFyZWFDb21wb25lbnQuY29udHJvbENvbnRhaW5lcnN0YXRpYyA9IHRoaXMuY29udHJvbENvbnRhaW5lcjtcclxuICB9XHJcbiAgQElucHV0KCkgZ3JvdXA6IEZvcm1Hcm91cDtcclxuICBASW5wdXQoKSBvcHRpb25zOiBNdWx0aUxpbmd1YWxUZXh0QXJlYU9wdGlvbnM7XHJcbiAgQE91dHB1dCgpIE9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBBcmFiaWNUZXh0QXJlYUZvcm1Db250cm9sOiBBYnN0cmFjdENvbnRyb2w7XHJcbiAgRW5nbGlzaFRleHRBcmVhRm9ybUNvbnRyb2w6IEFic3RyYWN0Q29udHJvbDtcclxuICBNdWx0aVRleHRBcmVhRm9ybUNvbnRyb2w6IEFic3RyYWN0Q29udHJvbDtcclxuICBNdWx0aUxhbmd1YWdlVGV4dEFyZWFncm91cDogRm9ybUdyb3VwO1xyXG4gIEFyYWJpY1dvcmRDb3VudDogbnVtYmVyID0gMDtcclxuICBBcmFiaWNXb3JkQ291bnRBcnJheTogbnVtYmVyID0gMDtcclxuICBFbmdsaXNoV29yZENvdW50OiBudW1iZXIgPSAwO1xyXG4gIEVuZ2xpc2hXb3JkQ291bnRBcnJheTogbnVtYmVyID0gMDtcclxuICBDdXJyZW50TGFuZ3VhZ2U6IHN0cmluZyA9IFwiXCI7XHJcbiAgU2hvd0FyYWJpY1RleHRBcmVhOiBib29sZWFuXHJcbiAgU2hvd0VuZ2lzaFRleHRBcmVhOiBib29sZWFuXHJcbiAgQXJhYmljVmFsaWRhdGlvblJ1bGVzID0gW107XHJcbiAgQXJhYmljVmFsaWRhdGlvblJ1bGVzYXN5bmMgPSBbXTtcclxuICBFbmdsaXNoVmFsaWRhdGlvblJ1bGVzID0gW107XHJcbiAgRW5nbGlzaFZhbGlkYXRpb25SdWxlc2FzeW5jID0gW107XHJcbiAgdmFsaWRhdGlvblJ1bGVzID0gW107XHJcbiAgdmFsaWRhdGlvblJ1bGVzYXN5bmMgPSBbXTtcclxuICBJc1Nob3dBcmFiaWNXb3JkQ291bnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBJc1Nob3dFbmdsaXNoV29yZENvdW50OiBib29sZWFuID0gZmFsc2U7XHJcbiAgbWFya0FsbEFzVG91Y2hlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBcclxuICBBcmFiaWNMZXR0ZXJPbmx5OnN0cmluZz1cIlwiXHJcbiAgRW5nbGlzaExldHRlck9ubHk6c3RyaW5nPVwiXCJcclxuXHJcbiAgLy9Gb3IgU2hvdyB3YXJuaW5nIG1lc3NhZ2Ugb2YgbWF4IGxlbmd0aCBsaW1pdFxyXG4gIG1pbkNoYXJzTGltaXQ6IG51bWJlciA9IC0xOyAvL1RvIGRpc2FibGUgY2hhcnMgbGltaXQgZmVhdHVyZSBieSBkZWZhdWx0XHJcbiAgZW5nbGlzaEN1cnJlbnRDaGFyc0NvdW50OiBudW1iZXIgPSAwO1xyXG4gIGFyYWJpY0N1cnJlbnRDaGFyc0NvdW50OiBudW1iZXIgPSAwO1xyXG4gIHNob3dFbmdsaXNoQ2hhcnNMaW1pdE1zZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNob3dBcmFiaWNDaGFyc0xpbWl0TXNnOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaGFzRW5nbGlzaENoYXJzTGltaXRWYWxpZGF0aW9uRXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBoYXNBcmFiaWNDaGFyc0xpbWl0VmFsaWRhdGlvbkVycm9yOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZW5nbGlzaENoYXJzTGltaXRNc2dDbGFzczogc3RyaW5nO1xyXG4gIGFyYWJpY0NoYXJzTGltaXRNc2dDbGFzczogc3RyaW5nO1xyXG4gIGVuZ2xpc2hNYXhMaW1pdFdhcm5pbmdNc2c6IHN0cmluZyA9IFwiXCI7XHJcbiAgYXJhYmljTWF4TGltaXRXYXJuaW5nTXNnOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuIGdldEN1c3RvbUVycm9yc01hc3NhZ2VzKCkge1xyXG4gICB0aGlzLkFyYWJpY0xldHRlck9ubHkgPSB0aGlzLlV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBcmFiaWNJc1JlcXVpcmVkQW5kT25seTUwQ2hhcmFjdGVyc0VuZ2xpc2hcIik7XHJcbiAgICB0aGlzLkVuZ2xpc2hMZXR0ZXJPbmx5ID0gdGhpcy5VdGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRW5nbGlzaExldHRlck9ubHlcIik7XHJcblxyXG5cclxuICB9XHJcblxyXG4gIGFzeW5jIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5jb250cm9sVmFsaWRhdGlvblNlcnZpY2UuaXNDcmVhdGVkQmVmb3IgPSBmYWxzZVxyXG4gICAgdGhpcy5DdXJyZW50TGFuZ3VhZ2UgPSBhd2FpdCB0aGlzLlV0aWxpdHlTZXJ2aWNlLmdldEN1cnJlbnRMYW5ndWFnZSgpO1xyXG4gICAgLy8gVXRpbGl0eVNlcnZpY2UuVHJhbnNsYXRvci5vbkxhbmdDaGFuZ2Uuc3Vic2NyaWJlKChldmVudDogTGFuZ0NoYW5nZUV2ZW50KSA9PiB7XHJcbiAgICAvLyAgIHRoaXMuQ3VycmVudExhbmd1YWdlID0gZXZlbnQubGFuZ1xyXG4gICAgLy8gICB0aGlzLnNob3dJbnB1dFVzaW5nTGFuZ3VhZ2VNb2RlKCk7XHJcblxyXG4gICAgLy8gfSk7XHJcbiAgICBpZiAoIXRoaXMub3B0aW9ucy5WaWV3VHlwZSlcclxuICAgICAgdGhpcy5vcHRpb25zLlZpZXdUeXBlID0gdGhpcy5nbG9iYWxTZXR0aW5ncy5WaWV3VHlwZTtcclxuICAgIGlmICghdGhpcy5vcHRpb25zLkxhbmd1YWdlTW9kZSlcclxuICAgICAgdGhpcy5vcHRpb25zLkxhbmd1YWdlTW9kZSA9IHRoaXMuZ2xvYmFsU2V0dGluZ3MuTGFuZ3VhZ2VNb2RlO1xyXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMuTXVsdGlDb250cm9sUGxhY2VtZW50VHlwZSlcclxuICAgICAgdGhpcy5vcHRpb25zLk11bHRpQ29udHJvbFBsYWNlbWVudFR5cGUgPSB0aGlzLmdsb2JhbFNldHRpbmdzLk11bHRpQ29udHJvbFBsYWNlbWVudFR5cGU7XHJcbiAgICBpZiAoIXRoaXMub3B0aW9ucy5NYXhMZW5ndGgpXHJcbiAgICAgIHRoaXMub3B0aW9ucy5NYXhMZW5ndGggPSB0aGlzLmdsb2JhbFNldHRpbmdzLk1heExlbmd0aFRleHRBcmVhO1xyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuTGFiZWxLZXkgIT0gbnVsbCAmJiB0aGlzLm9wdGlvbnMuTGFiZWxLZXkgIT0gXCJcIikge1xyXG4gICAgICB0aGlzLm9wdGlvbnMuQXJhYmljTGFiZWxWYWx1ZSA9IHRoaXMuVXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSh0aGlzLm9wdGlvbnMuTGFiZWxLZXkpICsgXCIgXCIgKyB0aGlzLlV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJJbkFyYWJpY1wiKTtcclxuICAgICAgdGhpcy5vcHRpb25zLkVuZ2xpc2hMYWJlbFZhbHVlID0gdGhpcy5VdGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKHRoaXMub3B0aW9ucy5MYWJlbEtleSkgKyBcIiBcIiArIHRoaXMuVXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkluRW5nbGlzaFwiKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLkFyYWJpY0xhYmVsS2V5ICE9IG51bGwgJiYgdGhpcy5vcHRpb25zLkFyYWJpY0xhYmVsS2V5ICE9IFwiXCIpXHJcbiAgICAgICAgdGhpcy5vcHRpb25zLkFyYWJpY0xhYmVsVmFsdWUgPSB0aGlzLlV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUodGhpcy5vcHRpb25zLkFyYWJpY0xhYmVsS2V5KTtcclxuXHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuRW5nbGlzaExhYmVsS2V5ICE9IG51bGwgJiYgdGhpcy5vcHRpb25zLkVuZ2xpc2hMYWJlbEtleSAhPSBcIlwiKVxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5FbmdsaXNoTGFiZWxWYWx1ZSA9IHRoaXMuVXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSh0aGlzLm9wdGlvbnMuRW5nbGlzaExhYmVsS2V5KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLk11bHRpTGFuZ3VhZ2VUZXh0QXJlYWdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgICB0aGlzLk11bHRpTGFuZ3VhZ2VUZXh0QXJlYWdyb3VwLmFkZENvbnRyb2woXCJBcmFiaWNcIiwgbmV3IEZvcm1Db250cm9sKCcnKSk7XHJcbiAgICB0aGlzLk11bHRpTGFuZ3VhZ2VUZXh0QXJlYWdyb3VwLmFkZENvbnRyb2woXCJFbmdsaXNoXCIsIG5ldyBGb3JtQ29udHJvbCgnJykpO1xyXG4gICAgdGhpcy5BcmFiaWNUZXh0QXJlYUZvcm1Db250cm9sID0gdGhpcy5NdWx0aUxhbmd1YWdlVGV4dEFyZWFncm91cC5jb250cm9sc1tcIkFyYWJpY1wiXTsgLy8gIG5ldyBGb3JtQ29udHJvbCgnJyx2YWxpZGF0aW9uUnVsZXMpO1xyXG4gICAgdGhpcy5FbmdsaXNoVGV4dEFyZWFGb3JtQ29udHJvbCA9IHRoaXMuTXVsdGlMYW5ndWFnZVRleHRBcmVhZ3JvdXAuY29udHJvbHNbXCJFbmdsaXNoXCJdOyAvLyAgbmV3IEZvcm1Db250cm9sKCcnLHZhbGlkYXRpb25SdWxlcyk7XHJcbiAgICB0aGlzLmdyb3VwLmFkZENvbnRyb2wodGhpcy5vcHRpb25zLk5hbWUsIG5ldyBGb3JtR3JvdXAodGhpcy5NdWx0aUxhbmd1YWdlVGV4dEFyZWFncm91cC5jb250cm9scykpO1xyXG4gICAgdGhpcy5nZXRDdXN0b21FcnJvcnNNYXNzYWdlcygpXHJcblxyXG4gICAgc3dpdGNoICh0aGlzLm9wdGlvbnMuVHlwZSkge1xyXG4gICAgICBjYXNlIElucHV0VHlwZS5FbWFpbDpcclxuICAgICAgICB0aGlzLkVuZ2xpc2hWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLmNvbXBvc2UoW1xyXG4gICAgICAgICAgdGhpcy5jb250cm9sVXRpbGl0eS5wYXR0ZXJuVmFsaWRhdG9yKC9eW2EtejAtOS5fJSstXStAW2EtejAtOS4tXStcXC5bYS16XXsyLDR9JC8sIHsgRW1haWxWYWxpZGF0aW9uS2V5OiBcIlwiIH0pLFxyXG5cclxuICAgICAgICBdKSk7XHJcbiAgICAgICAgdGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLmNvbXBvc2UoW1xyXG4gICAgICAgICAgdGhpcy5jb250cm9sVXRpbGl0eS5wYXR0ZXJuVmFsaWRhdG9yKC9eW2EtejAtOS5fJSstXStAW2EtejAtOS4tXStcXC5bYS16XXsyLDR9JC8sIHsgRW1haWxWYWxpZGF0aW9uS2V5OiBcIlwiIH0pLFxyXG5cclxuICAgICAgICBdKSk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIElucHV0VHlwZS5OdW1iZXI6XHJcbiAgICAgICAgdGhpcy5FbmdsaXNoVmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5wYXR0ZXJuKCdeWzAtOV0rKFxcLj9bMC05XSspPyQnKSk7XHJcbiAgICAgICAgdGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLnBhdHRlcm4oJ15bMC05XSsoXFwuP1swLTldKyk/JCcpKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcblxyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuQ3VzdG9tVmFsaWRhdGlvbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCBWYWxpZGF0aW9ucyA9IHRoaXMub3B0aW9ucy5DdXN0b21WYWxpZGF0aW9uXHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBWYWxpZGF0aW9ucy5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBjb25zdCBWYWxpZGF0aW9uID0gVmFsaWRhdGlvbnNbaW5kZXhdO1xyXG4gICAgICAgIHRoaXMuRW5nbGlzaFZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRpb24uZnVuY3Rpb25Cb2R5KTtcclxuICAgICAgICB0aGlzLkFyYWJpY1ZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRpb24uZnVuY3Rpb25Cb2R5KTtcclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLk1pbkxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLm1pbkxlbmd0aCh0aGlzLm9wdGlvbnMuTWluTGVuZ3RoKSk7XHJcbiAgICAgIHRoaXMuRW5nbGlzaFZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMubWluTGVuZ3RoKHRoaXMub3B0aW9ucy5NaW5MZW5ndGgpKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuTWF4TGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLkVuZ2xpc2hWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLm1heExlbmd0aCh0aGlzLm9wdGlvbnMuTWF4TGVuZ3RoKSk7XHJcbiAgICAgIHRoaXMuQXJhYmljVmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5tYXhMZW5ndGgodGhpcy5vcHRpb25zLk1heExlbmd0aCkpO1xyXG5cclxuICAgICAgaWYgKCF0aGlzLm9wdGlvbnMuTWF4TGVuZ3RoV2FybmluZ0xpbWl0KVxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5NYXhMZW5ndGhXYXJuaW5nTGltaXQgPSB0aGlzLmdsb2JhbFNldHRpbmdzLk1heExlbmd0aFdhcm5pbmdMaW1pdDtcclxuXHJcbiAgICAgIHRoaXMubWluQ2hhcnNMaW1pdCA9IHRoaXMub3B0aW9ucy5NYXhMZW5ndGggLSB0aGlzLm9wdGlvbnMuTWF4TGVuZ3RoV2FybmluZ0xpbWl0O1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2hvd0lucHV0VXNpbmdMYW5ndWFnZU1vZGUoKTtcclxuXHJcbiAgICB0aGlzLkFyYWJpY1ZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMuY29tcG9zZShbXHJcbiAgICAgIHRoaXMuY29udHJvbFV0aWxpdHkuYXJhYmljVmFsaWRhdG9yKHsgQXJhYmljSXNSZXF1aXJlZEFuZE9ubHk1MENoYXJhY3RlcnNFbmdsaXNoOiB0aGlzLkFyYWJpY0xldHRlck9ubHkgfSksXHJcblxyXG4gICAgXSkpO1xyXG4gICAgdGhpcy5FbmdsaXNoVmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5jb21wb3NlKFtcclxuICAgICAgdGhpcy5jb250cm9sVXRpbGl0eS5wYXR0ZXJuVmFsaWRhdG9yKC9eW1xceDAwLVxceDdGXSokLywgeyBFbmdsaXNoTGV0dGVyT25seTogdGhpcy5FbmdsaXNoTGV0dGVyT25seSB9KSxcclxuICAgICAgIFxyXG4gICAgXSkpO1xyXG5cclxuICAgIHRoaXMuQXJhYmljVGV4dEFyZWFGb3JtQ29udHJvbC5zZXRWYWxpZGF0b3JzKHRoaXMuQXJhYmljVmFsaWRhdGlvblJ1bGVzKTtcclxuICAgIHRoaXMuQXJhYmljVGV4dEFyZWFGb3JtQ29udHJvbC5zZXRBc3luY1ZhbGlkYXRvcnModGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXNhc3luYyk7XHJcbiAgICB0aGlzLkVuZ2xpc2hUZXh0QXJlYUZvcm1Db250cm9sLnNldFZhbGlkYXRvcnModGhpcy5FbmdsaXNoVmFsaWRhdGlvblJ1bGVzKTtcclxuICAgIHRoaXMuRW5nbGlzaFRleHRBcmVhRm9ybUNvbnRyb2wuc2V0QXN5bmNWYWxpZGF0b3JzKHRoaXMuRW5nbGlzaFZhbGlkYXRpb25SdWxlc2FzeW5jKTtcclxuXHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5Jc0Rpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMuRW5nbGlzaFRleHRBcmVhRm9ybUNvbnRyb2wuZGlzYWJsZSgpO1xyXG4gICAgICB0aGlzLkFyYWJpY1RleHRBcmVhRm9ybUNvbnRyb2wuZGlzYWJsZSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5BcmFiaWNUZXh0QXJlYUZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMub3B0aW9ucy5WYWx1ZS5BcmFiaWMpXHJcbiAgICB0aGlzLkVuZ2xpc2hUZXh0QXJlYUZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMub3B0aW9ucy5WYWx1ZS5FbmdsaXNoKVxyXG5cclxuICAgIHRoaXMuTXVsdGlMaW5ndWFsVGV4dEFyZWFGb3JtQ29udHJvbEhvc3QubmdTdWJtaXQuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICB0aGlzLmdyb3VwLm1hcmtBbGxBc1RvdWNoZWQoKVxyXG4gICAgICB0aGlzLm1hcmtBbGxBc1RvdWNoZWQgPSB0cnVlXHJcbiAgICB9KVxyXG5cclxuICB9XHJcblxyXG5cclxuICBvblRleHRDaGFuZ2UoKSB7XHJcbiAgICBsZXQgYXJhYmljVmFsdWUgPSBcIlwiO1xyXG4gICAgbGV0IGVuZ2xpc2hWYWx1ZSA9IFwiXCI7XHJcbiAgICBpZiAodGhpcy5FbmdsaXNoVGV4dEFyZWFGb3JtQ29udHJvbC52YWx1ZSA9PSBcIlwiKSB7XHJcbiAgICAgIHRoaXMuRW5nbGlzaFdvcmRDb3VudEFycmF5ID0gMDtcclxuICAgICAgdGhpcy5FbmdsaXNoV29yZENvdW50ID0gMDtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5FbmdsaXNoVGV4dEFyZWFGb3JtQ29udHJvbC52YWx1ZSAhPSBudWxsIHx8IHRoaXMuRW5nbGlzaFRleHRBcmVhRm9ybUNvbnRyb2wudmFsdWUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgdGhpcy5FbmdsaXNoV29yZENvdW50QXJyYXkgPSB0aGlzLkVuZ2xpc2hUZXh0QXJlYUZvcm1Db250cm9sLnZhbHVlLnNwbGl0KFwiIFwiKS5sZW5ndGg7XHJcbiAgICAgICAgaWYgKHRoaXMuRW5nbGlzaFdvcmRDb3VudEFycmF5ID4gMCkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuRW5nbGlzaFdvcmRDb3VudEFycmF5ID4gdGhpcy5vcHRpb25zLk1heFdvcmRDb3VudCkge1xyXG4gICAgICAgICAgICB0aGlzLkVuZ2xpc2hXb3JkQ291bnQgPSB0aGlzLm9wdGlvbnMuTWF4V29yZENvdW50O1xyXG4gICAgICAgICAgICB0aGlzLk11bHRpTGFuZ3VhZ2VUZXh0QXJlYWdyb3VwLmNvbnRyb2xzW1wiRW5nbGlzaFwiXS5zZXRFcnJvcnMoeyBNYXhXb3JkQ291bnRWYWxpZGF0aW9uS2V5OiB0aGlzLm9wdGlvbnMuTWF4V29yZENvdW50IH0pO1xyXG4gICAgICAgICAgICB0aGlzLk11bHRpTGFuZ3VhZ2VUZXh0QXJlYWdyb3VwLmNvbnRyb2xzW1wiRW5nbGlzaFwiXS5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICAgICAgICAgIHRoaXMuTXVsdGlMYW5ndWFnZVRleHRBcmVhZ3JvdXAuY29udHJvbHNbXCJFbmdsaXNoXCJdLmludmFsaWQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5FbmdsaXNoV29yZENvdW50ID0gdGhpcy5FbmdsaXNoV29yZENvdW50QXJyYXk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbmdsaXNoVmFsdWU9dGhpcy5FbmdsaXNoVGV4dEFyZWFGb3JtQ29udHJvbC52YWx1ZTtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAvL0NoZWNrIGZvciBtYXhsZW5ndGggbGltaXQgY291bnRcclxuICAgICAgLy9NYXhMZW5ndGggc2hvdWxkIGJlIGdyZXRhZXIgdGhhbiBvciBlcXVhbHMgY2hhcnMgbGltaXQgc28gdGhhdCBtaW5DaGFyc0xpbWl0IHdvdWxkIGJlID49IDBcclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5NYXhMZW5ndGggJiYgdGhpcy5taW5DaGFyc0xpbWl0ID49IDApIHtcclxuICAgICAgICB0aGlzLmVuZ2xpc2hDdXJyZW50Q2hhcnNDb3VudCA9IHRoaXMuRW5nbGlzaFRleHRBcmVhRm9ybUNvbnRyb2wudmFsdWUubGVuZ3RoO1xyXG4gICAgICAgIGlmICh0aGlzLmVuZ2xpc2hDdXJyZW50Q2hhcnNDb3VudCA+IHRoaXMubWluQ2hhcnNMaW1pdCkge1xyXG4gICAgICAgICAgdGhpcy5zaG93RW5nbGlzaENoYXJzTGltaXRNc2cgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5oYXNFbmdsaXNoQ2hhcnNMaW1pdFZhbGlkYXRpb25FcnJvciA9IHRydWU7XHJcbiAgICAgICAgICBpZiAodGhpcy5lbmdsaXNoQ3VycmVudENoYXJzQ291bnQgPT0gdGhpcy5vcHRpb25zLk1heExlbmd0aClcclxuICAgICAgICAgICAgdGhpcy5lbmdsaXNoQ2hhcnNMaW1pdE1zZ0NsYXNzID0gXCJkYW5nZXJcIjtcclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgdGhpcy5lbmdsaXNoQ2hhcnNMaW1pdE1zZ0NsYXNzID0gXCJ3YXJuaW5nXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zaG93RW5nbGlzaENoYXJzTGltaXRNc2cgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuaGFzRW5nbGlzaENoYXJzTGltaXRWYWxpZGF0aW9uRXJyb3IgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIG1heDogbnVtYmVyID0gdGhpcy5vcHRpb25zLk1heExlbmd0aDtcclxuICAgICAgICB2YXIgY3VycmVudDogbnVtYmVyID0gdGhpcy5lbmdsaXNoQ3VycmVudENoYXJzQ291bnQ7XHJcblxyXG4gICAgICAgIHZhciByZXNvdXJjZSA9IHRoaXMuVXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIk1heExlbmd0aExpbWl0V2FybmluZ1wiKTtcclxuICAgICAgICB0aGlzLmVuZ2xpc2hNYXhMaW1pdFdhcm5pbmdNc2cgPSBldmFsKCdgJyArIHJlc291cmNlICsgJ2AnKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuQXJhYmljVGV4dEFyZWFGb3JtQ29udHJvbC52YWx1ZSA9PSBcIlwiKSB7XHJcbiAgICAgIHRoaXMuQXJhYmljV29yZENvdW50QXJyYXkgPSAwO1xyXG4gICAgICB0aGlzLkFyYWJpY1dvcmRDb3VudCA9IDA7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuQXJhYmljVGV4dEFyZWFGb3JtQ29udHJvbC52YWx1ZSAhPSBudWxsIHx8IHRoaXMuQXJhYmljVGV4dEFyZWFGb3JtQ29udHJvbC52YWx1ZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICB0aGlzLkFyYWJpY1dvcmRDb3VudEFycmF5ID0gdGhpcy5BcmFiaWNUZXh0QXJlYUZvcm1Db250cm9sLnZhbHVlLnNwbGl0KFwiIFwiKS5sZW5ndGg7XHJcbiAgICAgICAgaWYgKHRoaXMuQXJhYmljV29yZENvdW50QXJyYXkgPiAwKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5BcmFiaWNXb3JkQ291bnRBcnJheSA+IHRoaXMub3B0aW9ucy5NYXhXb3JkQ291bnQpIHtcclxuICAgICAgICAgICAgdGhpcy5BcmFiaWNXb3JkQ291bnQgPSB0aGlzLm9wdGlvbnMuTWF4V29yZENvdW50O1xyXG4gICAgICAgICAgICB0aGlzLk11bHRpTGFuZ3VhZ2VUZXh0QXJlYWdyb3VwLmNvbnRyb2xzW1wiQXJhYmljXCJdLnNldEVycm9ycyh7IE1heFdvcmRDb3VudFZhbGlkYXRpb25LZXk6IHRoaXMub3B0aW9ucy5NYXhXb3JkQ291bnQgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuTXVsdGlMYW5ndWFnZVRleHRBcmVhZ3JvdXAuY29udHJvbHNbXCJBcmFiaWNcIl0ubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICAgICAgICB0aGlzLk11bHRpTGFuZ3VhZ2VUZXh0QXJlYWdyb3VwLmNvbnRyb2xzW1wiQXJhYmljXCJdLmludmFsaWQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5BcmFiaWNXb3JkQ291bnQgPSB0aGlzLkFyYWJpY1dvcmRDb3VudEFycmF5O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYXJhYmljVmFsdWU9dGhpcy5BcmFiaWNUZXh0QXJlYUZvcm1Db250cm9sLnZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLy9DaGVjayBmb3IgbWF4bGVuZ3RoIGxpbWl0IGNvdW50XHJcbiAgICAgIC8vTWF4TGVuZ3RoIHNob3VsZCBiZSBncmV0YWVyIHRoYW4gb3IgZXF1YWxzIGNoYXJzIGxpbWl0IHNvIHRoYXQgbWluQ2hhcnNMaW1pdCB3b3VsZCBiZSA+PSAwXHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuTWF4TGVuZ3RoICYmIHRoaXMubWluQ2hhcnNMaW1pdCA+PSAwKSB7XHJcbiAgICAgICAgdGhpcy5hcmFiaWNDdXJyZW50Q2hhcnNDb3VudCA9IHRoaXMuQXJhYmljVGV4dEFyZWFGb3JtQ29udHJvbC52YWx1ZS5sZW5ndGg7XHJcbiAgICAgICAgaWYgKHRoaXMuYXJhYmljQ3VycmVudENoYXJzQ291bnQgPiB0aGlzLm1pbkNoYXJzTGltaXQpIHtcclxuICAgICAgICAgIHRoaXMuc2hvd0FyYWJpY0NoYXJzTGltaXRNc2cgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5oYXNBcmFiaWNDaGFyc0xpbWl0VmFsaWRhdGlvbkVycm9yID0gdHJ1ZTtcclxuICAgICAgICAgIGlmICh0aGlzLmFyYWJpY0N1cnJlbnRDaGFyc0NvdW50ID09IHRoaXMub3B0aW9ucy5NYXhMZW5ndGgpXHJcbiAgICAgICAgICAgIHRoaXMuYXJhYmljQ2hhcnNMaW1pdE1zZ0NsYXNzID0gXCJkYW5nZXJcIjtcclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgdGhpcy5hcmFiaWNDaGFyc0xpbWl0TXNnQ2xhc3MgPSBcIndhcm5pbmdcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNob3dBcmFiaWNDaGFyc0xpbWl0TXNnID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmhhc0FyYWJpY0NoYXJzTGltaXRWYWxpZGF0aW9uRXJyb3IgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIG1heDogbnVtYmVyID0gdGhpcy5vcHRpb25zLk1heExlbmd0aDtcclxuICAgICAgICB2YXIgY3VycmVudDogbnVtYmVyID0gdGhpcy5hcmFiaWNDdXJyZW50Q2hhcnNDb3VudDtcclxuXHJcbiAgICAgICAgdmFyIHJlc291cmNlID0gdGhpcy5VdGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTWF4TGVuZ3RoTGltaXRXYXJuaW5nXCIpO1xyXG4gICAgICAgIHRoaXMuYXJhYmljTWF4TGltaXRXYXJuaW5nTXNnID0gZXZhbCgnYCcgKyByZXNvdXJjZSArICdgJyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGxldCBtdWxpdExhbmdNb2RlbCA9IG5ldyBFbmdsaXNoQXJhYmljRFRPKCk7XHJcbiAgICBtdWxpdExhbmdNb2RlbC5BcmFiaWMgPSBhcmFiaWNWYWx1ZTtcclxuICAgIG11bGl0TGFuZ01vZGVsLkVuZ2xpc2ggPSBlbmdsaXNoVmFsdWU7XHJcbiAgICB0aGlzLk9uQ2hhbmdlLmVtaXQobXVsaXRMYW5nTW9kZWwpXHJcbiAgICB0aGlzLmdyb3VwLmdldCh0aGlzLm9wdGlvbnMuTmFtZSkuc2V0VmFsdWUobXVsaXRMYW5nTW9kZWwpO1xyXG4gICAgIC8vVXNlIHRoaXMgbGluZSB0byBlbmFibGUgdHdvIHdheSBiaW5kaW5nLlxyXG4gICAgIHRoaXMub3B0aW9ucy5WYWx1ZT1tdWxpdExhbmdNb2RlbDtcclxuICAgIFxyXG4gIH1cclxuXHJcbiAgcmVzZXRFcnJvciA9ICgpID0+IHtcclxuICAgIHRoaXMuY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLlJlbW92ZUdsb2JhbEVycm9yKCk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIHNob3dHbG9iYWxFcnJvcigpIHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuc2hvd0dsb2JhbEVycm9yKClcclxuICB9XHJcblxyXG4gIGdldEVycm9yVmFsaWRhdGlvbihFcnJvckxpc3QpIHtcclxuICAgIGlmICh0aGlzLm1hcmtBbGxBc1RvdWNoZWQgJiYgdGhpcy5ncm91cC5pbnZhbGlkKSB7XHJcbiAgICAgIHRoaXMuc2hvd0dsb2JhbEVycm9yKClcclxuICAgICAgdGhpcy5tYXJrQWxsQXNUb3VjaGVkID0gZmFsc2VcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmNvbnRyb2xVdGlsaXR5LmdldEVycm9yVmFsaWRhdGlvbk1hc3NhZ2UoRXJyb3JMaXN0LCB0aGlzLmdyb3VwLCB0aGlzLm9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgZ2V0SW5wdXRUeXBlKHR5cGU6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIElucHV0VHlwZVt0eXBlXVxyXG4gIH1cclxuXHJcbiAgdHJpbUNvbnRyb2xWYWx1ZSh0eXBlOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHdoaXRlc3BhY2U6IHN0cmluZyA9ICcgJztcclxuICAgIGlmICh0eXBlID09IFwiRW5cIikge1xyXG4gICAgICBsZXQgb3JpZ2luYWxWYWx1ZSA9dGhpcy5FbmdsaXNoVGV4dEFyZWFGb3JtQ29udHJvbC52YWx1ZTtcclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5QYXRjaEZ1bmN0aW9uICYmIHRoaXMub3B0aW9ucy5QYXRjaFBhdGggJiYgdGhpcy5FbmdsaXNoVGV4dEFyZWFGb3JtQ29udHJvbC52YWxpZCkge1xyXG4gICAgICAgIHRoaXMuY29udHJvbFV0aWxpdHkucGF0Y2hDb250cm9sVmFsdWUob3JpZ2luYWxWYWx1ZSx0aGlzLm9wdGlvbnMuUGF0Y2hGdW5jdGlvbiAsdGhpcy5vcHRpb25zLlBhdGNoUGF0aClcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5FbmdsaXNoVGV4dEFyZWFGb3JtQ29udHJvbC52YWx1ZS5zdGFydHNXaXRoKHdoaXRlc3BhY2UpIHx8IHRoaXMuRW5nbGlzaFRleHRBcmVhRm9ybUNvbnRyb2wudmFsdWUuZW5kc1dpdGgod2hpdGVzcGFjZSkpIHtcclxuICAgICAgICB0aGlzLkVuZ2xpc2hUZXh0QXJlYUZvcm1Db250cm9sLnBhdGNoVmFsdWUob3JpZ2luYWxWYWx1ZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0eXBlID09IFwiQXJcIikge1xyXG4gICAgICBsZXQgb3JpZ2luYWxWYWx1ZSA9dGhpcy5BcmFiaWNUZXh0QXJlYUZvcm1Db250cm9sLnZhbHVlO1xyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLlBhdGNoRnVuY3Rpb24gJiYgdGhpcy5vcHRpb25zLlBhdGNoUGF0aCAmJiB0aGlzLkFyYWJpY1RleHRBcmVhRm9ybUNvbnRyb2wudmFsaWQpIHtcclxuICAgICAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LnBhdGNoQ29udHJvbFZhbHVlKG9yaWdpbmFsVmFsdWUsdGhpcy5vcHRpb25zLlBhdGNoRnVuY3Rpb24gLHRoaXMub3B0aW9ucy5QYXRjaFBhdGgpXHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuQXJhYmljVGV4dEFyZWFGb3JtQ29udHJvbC52YWx1ZS5zdGFydHNXaXRoKHdoaXRlc3BhY2UpIHx8IHRoaXMuQXJhYmljVGV4dEFyZWFGb3JtQ29udHJvbC52YWx1ZS5lbmRzV2l0aCh3aGl0ZXNwYWNlKSkge1xyXG4gICAgICAgIHRoaXMuQXJhYmljVGV4dEFyZWFGb3JtQ29udHJvbC5wYXRjaFZhbHVlKG9yaWdpbmFsVmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgY29weUlucHV0TWVzc2FnZShpbnB1dEVsZW1lbnQpIHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuQ29weUlucHV0TWVzc2FnZShpbnB1dEVsZW1lbnQpXHJcbiAgfVxyXG5cclxuXHJcbiAgc2hvd0lucHV0VXNpbmdMYW5ndWFnZU1vZGUoKSB7XHJcblxyXG4gICAgdGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXMgPSB0aGlzLkFyYWJpY1ZhbGlkYXRpb25SdWxlcy5maWx0ZXIoaXRlbSA9PiBpdGVtICE9PSBWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgIHRoaXMuRW5nbGlzaFZhbGlkYXRpb25SdWxlcyA9IHRoaXMuRW5nbGlzaFZhbGlkYXRpb25SdWxlcy5maWx0ZXIoaXRlbSA9PiBpdGVtICE9PSBWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuXHJcbiAgICB0aGlzLkFyYWJpY1RleHRBcmVhRm9ybUNvbnRyb2wuY2xlYXJWYWxpZGF0b3JzKCk7XHJcbiAgICB0aGlzLkVuZ2xpc2hUZXh0QXJlYUZvcm1Db250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xyXG5cclxuICAgIHRoaXMuQXJhYmljVGV4dEFyZWFGb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB0aGlzLkVuZ2xpc2hUZXh0QXJlYUZvcm1Db250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuXHJcbiAgICBzd2l0Y2ggKHRoaXMub3B0aW9ucy5MYW5ndWFnZU1vZGUpIHtcclxuICAgICAgY2FzZSBMYW5ndWFnZU1vZGUuQm90aF9MYW5ndWFnZXNfYXJlX3Zpc2libGU6XHJcbiAgICAgICAgdGhpcy5TaG93QXJhYmljVGV4dEFyZWEgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuU2hvd0VuZ2lzaFRleHRBcmVhID0gdHJ1ZTtcclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLklzUmVxdWlyZWQgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgdGhpcy5FbmdsaXNoVmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICAgICAgICB0aGlzLkFyYWJpY1ZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICAgICAgdGhpcy5Jc1Nob3dBc3Rlcmlza0luQXJhYmljPXRydWU7XHJcbiAgICAgICAgICB0aGlzLklzU2hvd0FzdGVyaXNrSW5FbmdsaXNoPXRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIExhbmd1YWdlTW9kZS5BcmFiaWNfTGFuZ3VhZ2Vfb25seV9pc192aXNpYmxlOlxyXG4gICAgICAgIHRoaXMuU2hvd0FyYWJpY1RleHRBcmVhID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm9wdGlvbnMuTXVsdGlDb250cm9sUGxhY2VtZW50VHlwZT1Db250cm9sTGF5b3V0LlZlcnRpY2FsO1xyXG5cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBMYW5ndWFnZU1vZGUuRW5nbGlzaF9MYW5ndWFnZV9vbmx5X2lzX3Zpc2libGU6XHJcbiAgICAgICAgdGhpcy5TaG93RW5naXNoVGV4dEFyZWEgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy5NdWx0aUNvbnRyb2xQbGFjZW1lbnRUeXBlPUNvbnRyb2xMYXlvdXQuVmVydGljYWw7XHJcblxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIExhbmd1YWdlTW9kZS5Cb3RoX0xhbmd1YWdlc19hcmVfdmlzaWJsZV9idXRfb25seV9jdXJyZW50X2xhbmd1YWdlX2lzX3JlcXVpcmVkOlxyXG4gICAgICAgIHRoaXMuU2hvd0FyYWJpY1RleHRBcmVhID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLlNob3dFbmdpc2hUZXh0QXJlYSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLk11bHRpQ29udHJvbFBsYWNlbWVudFR5cGU9dGhpcy5nbG9iYWxTZXR0aW5ncy5NdWx0aUNvbnRyb2xQbGFjZW1lbnRUeXBlXHJcblxyXG4gICAgICAgIGlmICh0aGlzLkN1cnJlbnRMYW5ndWFnZSA9PSAnYXInKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLklzUmVxdWlyZWQgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLkFyYWJpY1ZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICAgICAgICB0aGlzLklzU2hvd0FzdGVyaXNrSW5BcmFiaWM9dHJ1ZTtcclxuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLkN1cnJlbnRMYW5ndWFnZSA9PSAnZW4nKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLklzUmVxdWlyZWQgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLkVuZ2xpc2hWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgICAgICAgdGhpcy5Jc1Nob3dBc3Rlcmlza0luRW5nbGlzaD10cnVlO1xyXG5cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgTGFuZ3VhZ2VNb2RlLkJvdGhfTGFuZ3VhZ2VzX2J1dF9vbmx5X0FyYWJpY19pc19yZXF1aXJlZDpcclxuICAgICAgICB0aGlzLlNob3dBcmFiaWNUZXh0QXJlYSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5TaG93RW5naXNoVGV4dEFyZWEgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy5NdWx0aUNvbnRyb2xQbGFjZW1lbnRUeXBlPXRoaXMuZ2xvYmFsU2V0dGluZ3MuTXVsdGlDb250cm9sUGxhY2VtZW50VHlwZVxyXG5cclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLklzUmVxdWlyZWQgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgdGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgICAgIHRoaXMuSXNTaG93QXN0ZXJpc2tJbkFyYWJpYz10cnVlO1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgTGFuZ3VhZ2VNb2RlLkJvdGhfTGFuZ3VhZ2VzX2J1dF9vbmx5X0VuZ2xpc2hfaXNfcmVxdWlyZWQ6XHJcbiAgICAgICAgdGhpcy5TaG93QXJhYmljVGV4dEFyZWEgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuU2hvd0VuZ2lzaFRleHRBcmVhID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm9wdGlvbnMuTXVsdGlDb250cm9sUGxhY2VtZW50VHlwZT10aGlzLmdsb2JhbFNldHRpbmdzLk11bHRpQ29udHJvbFBsYWNlbWVudFR5cGVcclxuXHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5Jc1JlcXVpcmVkID09IHRydWUpIHtcclxuICAgICAgICAgIHRoaXMuRW5nbGlzaFZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICAgICAgdGhpcy5Jc1Nob3dBc3Rlcmlza0luRW5nbGlzaD10cnVlO1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgTGFuZ3VhZ2VNb2RlLkN1cnJlbnRfTGFuZ3VhZ2Vfb25seV9pc192aXNpYmxlX2FuZF9yZXF1aXJlZDpcclxuICAgICAgICB0aGlzLm9wdGlvbnMuTXVsdGlDb250cm9sUGxhY2VtZW50VHlwZT1Db250cm9sTGF5b3V0LlZlcnRpY2FsO1xyXG4gICAgICAgIGlmICh0aGlzLkN1cnJlbnRMYW5ndWFnZSA9PSAnYXInKSB7XHJcbiAgICAgICAgICB0aGlzLlNob3dBcmFiaWNUZXh0QXJlYSA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLlNob3dFbmdpc2hUZXh0QXJlYSA9IGZhbHNlO1xyXG4gICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5Jc1JlcXVpcmVkID09IHRydWUpIHtcclxuICAgICAgICAgICAgdGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgICAgICAgdGhpcy5Jc1Nob3dBc3Rlcmlza0luQXJhYmljPXRydWU7XHJcblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5DdXJyZW50TGFuZ3VhZ2UgPT0gJ2VuJykge1xyXG4gICAgICAgICAgdGhpcy5TaG93QXJhYmljVGV4dEFyZWEgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuU2hvd0VuZ2lzaFRleHRBcmVhID0gdHJ1ZTtcclxuICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuSXNSZXF1aXJlZCA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuRW5nbGlzaFZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICAgICAgICB0aGlzLklzU2hvd0FzdGVyaXNrSW5FbmdsaXNoPXRydWU7XHJcblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLkFyYWJpY1RleHRBcmVhRm9ybUNvbnRyb2wuc2V0VmFsaWRhdG9ycyh0aGlzLkFyYWJpY1ZhbGlkYXRpb25SdWxlcyk7XHJcbiAgICB0aGlzLkVuZ2xpc2hUZXh0QXJlYUZvcm1Db250cm9sLnNldFZhbGlkYXRvcnModGhpcy5FbmdsaXNoVmFsaWRhdGlvblJ1bGVzKTtcclxuICAgIHRoaXMuQXJhYmljVGV4dEFyZWFGb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB0aGlzLkVuZ2xpc2hUZXh0QXJlYUZvcm1Db250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICB9XHJcblxyXG5cclxuICBvbkFyYWJpY0ZvY3VzKGlzRm9jdXM6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuSXNTaG93QXJhYmljV29yZENvdW50ID0gaXNGb2N1c1xyXG5cclxuICAgIC8vb25Gb2N1c1xyXG4gICAgaWYgKGlzRm9jdXMpIHtcclxuICAgICAgaWYgKHRoaXMuaGFzQXJhYmljQ2hhcnNMaW1pdFZhbGlkYXRpb25FcnJvcikgLy9jaGVjayBpZiB0aGVyZSB3YXMgcHJldmlvdXMgdmFsaWRhdGlvbiBlcnJvclxyXG4gICAgICAgIHRoaXMuc2hvd0FyYWJpY0NoYXJzTGltaXRNc2cgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgZWxzZSAvL29uRm9jdXNPdXRcclxuICAgICAgdGhpcy5zaG93QXJhYmljQ2hhcnNMaW1pdE1zZyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgb25FbmdsaXNoRm9jdXMoaXNGb2N1czogYm9vbGVhbikge1xyXG4gICAgdGhpcy5Jc1Nob3dFbmdsaXNoV29yZENvdW50ID0gaXNGb2N1c1xyXG5cclxuICAgIC8vb25Gb2N1c1xyXG4gICAgaWYgKGlzRm9jdXMpIHtcclxuICAgICAgaWYgKHRoaXMuaGFzRW5nbGlzaENoYXJzTGltaXRWYWxpZGF0aW9uRXJyb3IpIC8vY2hlY2sgaWYgdGhlcmUgd2FzIHByZXZpb3VzIHZhbGlkYXRpb24gZXJyb3JcclxuICAgICAgICB0aGlzLnNob3dFbmdsaXNoQ2hhcnNMaW1pdE1zZyA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBlbHNlIC8vb25Gb2N1c091dFxyXG4gICAgICB0aGlzLnNob3dFbmdsaXNoQ2hhcnNMaW1pdE1zZyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICBSZW1vdmVSZXF1aXJlZFZhbGlkYXRpb24gPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LlJlbW92ZVJlcXVpcmVkVmFsaWRhdGlvbih0aGlzLkVuZ2xpc2hUZXh0QXJlYUZvcm1Db250cm9sLCB0aGlzLkVuZ2xpc2hWYWxpZGF0aW9uUnVsZXMsIHRoaXMub3B0aW9ucylcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuUmVtb3ZlUmVxdWlyZWRWYWxpZGF0aW9uKHRoaXMuQXJhYmljVGV4dEFyZWFGb3JtQ29udHJvbCwgdGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXMsIHRoaXMub3B0aW9ucylcclxuICB9XHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICBBZGRSZXF1aXJlZFZhbGlkYXRpb24gPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LkFkZFJlcXVpcmVkVmFsaWRhdGlvbih0aGlzLkVuZ2xpc2hUZXh0QXJlYUZvcm1Db250cm9sLCB0aGlzLkVuZ2xpc2hWYWxpZGF0aW9uUnVsZXMsIHRoaXMub3B0aW9ucylcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuQWRkUmVxdWlyZWRWYWxpZGF0aW9uKHRoaXMuQXJhYmljVGV4dEFyZWFGb3JtQ29udHJvbCwgdGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXMsIHRoaXMub3B0aW9ucylcclxuICB9XHJcblxyXG5cclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG4gIFJlbW92ZUN1c3RvbVZhbGlkYXRpb24gPSAoQ3VzdG9tVmFsaWRhdGlvbikgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5SZW1vdmVDdXN0b21WYWxpZGF0aW9uKHRoaXMuRW5nbGlzaFRleHRBcmVhRm9ybUNvbnRyb2wsIHRoaXMuRW5nbGlzaFZhbGlkYXRpb25SdWxlcywgQ3VzdG9tVmFsaWRhdGlvbilcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuUmVtb3ZlQ3VzdG9tVmFsaWRhdGlvbih0aGlzLkFyYWJpY1RleHRBcmVhRm9ybUNvbnRyb2wsIHRoaXMuQXJhYmljVmFsaWRhdGlvblJ1bGVzLCBDdXN0b21WYWxpZGF0aW9uKVxyXG4gIH1cclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG4gIEFkZEN1c3RvbVZhbGlkYXRpb24gPSAoQ3VzdG9tVmFsaWRhdGlvbikgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5BZGRDdXN0b21WYWxpZGF0aW9uKHRoaXMuRW5nbGlzaFRleHRBcmVhRm9ybUNvbnRyb2wsIHRoaXMuRW5nbGlzaFZhbGlkYXRpb25SdWxlcywgQ3VzdG9tVmFsaWRhdGlvbilcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuQWRkQ3VzdG9tVmFsaWRhdGlvbih0aGlzLkFyYWJpY1RleHRBcmVhRm9ybUNvbnRyb2wsIHRoaXMuQXJhYmljVmFsaWRhdGlvblJ1bGVzLCBDdXN0b21WYWxpZGF0aW9uKVxyXG4gIH1cclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG4gIElzVmFsaWQgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LklzVmFsaWQodGhpcy5FbmdsaXNoVGV4dEFyZWFGb3JtQ29udHJvbClcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuSXNWYWxpZCh0aGlzLkFyYWJpY1RleHRBcmVhRm9ybUNvbnRyb2wpXHJcbiAgfVxyXG5cclxufVxyXG5cclxuIl19
|
|
430
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTXVsdGlMaW5ndWFsVGV4dEFyZWEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1jb250cm9scy9zcmMvbGliL2NvbnRyb2xzL011bHRpTGluZ3VhbFRleHRBcmVhL011bHRpTGluZ3VhbFRleHRBcmVhLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQVcsUUFBUSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEcsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFtQixnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNILE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUV4RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxjQUFjLEVBQUUsTUFBTywwQkFBMEIsQ0FBQztBQUNyRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOENBQThDLENBQUM7QUFFOUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBT2pFLE1BQU0sT0FBTyw2QkFBNkI7SUFLeEMsWUFBbUIsbUNBQXVELEVBQXNCLGdCQUFrQyxFQUN4SCxjQUE4QixFQUFVLGNBQThCLEVBQVUsd0JBQWtELEVBQ2xJLGNBQThCO1FBRnJCLHdDQUFtQyxHQUFuQyxtQ0FBbUMsQ0FBb0I7UUFBc0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUN4SCxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7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Q0FBOEM7Z0JBQzFGLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUM7U0FDeEM7YUFDSSxZQUFZO1lBQ2YsSUFBSSxDQUFDLHdCQUF3QixHQUFHLEtBQUssQ0FBQztJQUMxQyxDQUFDOztBQW5jTSxvREFBc0IsR0FBRyxJQUFJLENBQUM7O1lBTnRDLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsMkJBQTJCO2dCQUNyQyw4NU9BQW9EO2FBQ3JEOzs7WUFmK0Usa0JBQWtCO1lBQXBDLGdCQUFnQix1QkFxQkMsUUFBUTtZQWpCOUUsY0FBYztZQUVZLGNBQWM7WUFBeEMsd0JBQXdCO1lBQ3hCLGNBQWM7OztvQkFvQnBCLEtBQUs7c0JBQ0wsS0FBSzt1QkFDTCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBEb0NoZWNrLCBPcHRpb25hbCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMsIEZvcm1Hcm91cCwgQWJzdHJhY3RDb250cm9sLCBDb250cm9sQ29udGFpbmVyLCBGb3JtR3JvdXBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IElucHV0VHlwZSB9IGZyb20gJy4uLy4uL1NoYXJlZC9FbnVtcy9JbnB1dFR5cGUnO1xyXG5pbXBvcnQgeyBFbmdsaXNoQXJhYmljRFRPIH0gZnJvbSAnLi4vLi4vU2hhcmVkL01vZGVscy9FbmdsaXNoQXJhYmljRFRPJztcclxuaW1wb3J0IHsgTXVsdGlMaW5ndWFsVGV4dEFyZWFPcHRpb25zIH0gZnJvbSAnLi4vLi4vU2hhcmVkL01vZGVscy9NdWx0aUxpbmd1YWxUZXh0QXJlYU9wdGlvbnMnO1xyXG5pbXBvcnQgeyBDb250cm9sVXRpbGl0eSB9IGZyb20gJy4uLy4uL1NoYXJlZC9zZXJ2aWNlcy9Db250cm9sVXRpbGl0eSc7XHJcbmltcG9ydCB7IExhbmd1YWdlTW9kZSB9IGZyb20gJy4uLy4uL1NoYXJlZC9FbnVtcy9MYW5ndWFnZU1vZGUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsaWRhdGlvblNlcnZpY2UsIFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAgJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcbmltcG9ydCB7IEdsb2JhbFNldHRpbmdzIH0gZnJvbSAnLi4vLi4vU2hhcmVkL3NlcnZpY2VzL0dsb2JhbFNldHRpbmdzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvbnRyb2xMYXlvdXQgfSBmcm9tICcuLi8uLi9TaGFyZWQvRW51bXMvQ29udHJvbExheW91dCc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdCQlNGLU11bHRpTGluZ3VhbFRleHRBcmVhJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vTXVsdGlMaW5ndWFsVGV4dEFyZWEuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNdWx0aUxpbmd1YWxUZXh0QXJlYUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIHN0YXRpYyBjb250cm9sQ29udGFpbmVyc3RhdGljID0gbnVsbDtcclxuICBJc1Nob3dBc3Rlcmlza0luQXJhYmljOiBib29sZWFuO1xyXG4gIElzU2hvd0FzdGVyaXNrSW5FbmdsaXNoOiBib29sZWFuO1xyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBNdWx0aUxpbmd1YWxUZXh0QXJlYUZvcm1Db250cm9sSG9zdDogRm9ybUdyb3VwRGlyZWN0aXZlLCBAT3B0aW9uYWwoKSBwcml2YXRlIGNvbnRyb2xDb250YWluZXI6IENvbnRyb2xDb250YWluZXIsXHJcbiAgICBwcml2YXRlIGNvbnRyb2xVdGlsaXR5OiBDb250cm9sVXRpbGl0eSwgcHJpdmF0ZSBVdGlsaXR5U2VydmljZTogVXRpbGl0eVNlcnZpY2UsIHByaXZhdGUgY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlOiBDb250cm9sVmFsaWRhdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGdsb2JhbFNldHRpbmdzOiBHbG9iYWxTZXR0aW5nc1xyXG4gICkge1xyXG4gICAgTXVsdGlMaW5ndWFsVGV4dEFyZWFDb21wb25lbnQuY29udHJvbENvbnRhaW5lcnN0YXRpYyA9IHRoaXMuY29udHJvbENvbnRhaW5lcjtcclxuICB9XHJcbiAgQElucHV0KCkgZ3JvdXA6IEZvcm1Hcm91cDtcclxuICBASW5wdXQoKSBvcHRpb25zOiBNdWx0aUxpbmd1YWxUZXh0QXJlYU9wdGlvbnM7XHJcbiAgQE91dHB1dCgpIE9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBBcmFiaWNUZXh0QXJlYUZvcm1Db250cm9sOiBBYnN0cmFjdENvbnRyb2w7XHJcbiAgRW5nbGlzaFRleHRBcmVhRm9ybUNvbnRyb2w6IEFic3RyYWN0Q29udHJvbDtcclxuICBNdWx0aVRleHRBcmVhRm9ybUNvbnRyb2w6IEFic3RyYWN0Q29udHJvbDtcclxuICBNdWx0aUxhbmd1YWdlVGV4dEFyZWFncm91cDogRm9ybUdyb3VwO1xyXG4gIEFyYWJpY1dvcmRDb3VudDogbnVtYmVyID0gMDtcclxuICBBcmFiaWNXb3JkQ291bnRBcnJheTogbnVtYmVyID0gMDtcclxuICBFbmdsaXNoV29yZENvdW50OiBudW1iZXIgPSAwO1xyXG4gIEVuZ2xpc2hXb3JkQ291bnRBcnJheTogbnVtYmVyID0gMDtcclxuICBDdXJyZW50TGFuZ3VhZ2U6IHN0cmluZyA9IFwiXCI7XHJcbiAgU2hvd0FyYWJpY1RleHRBcmVhOiBib29sZWFuXHJcbiAgU2hvd0VuZ2lzaFRleHRBcmVhOiBib29sZWFuXHJcbiAgQXJhYmljVmFsaWRhdGlvblJ1bGVzID0gW107XHJcbiAgQXJhYmljVmFsaWRhdGlvblJ1bGVzYXN5bmMgPSBbXTtcclxuICBFbmdsaXNoVmFsaWRhdGlvblJ1bGVzID0gW107XHJcbiAgRW5nbGlzaFZhbGlkYXRpb25SdWxlc2FzeW5jID0gW107XHJcbiAgdmFsaWRhdGlvblJ1bGVzID0gW107XHJcbiAgdmFsaWRhdGlvblJ1bGVzYXN5bmMgPSBbXTtcclxuICBJc1Nob3dBcmFiaWNXb3JkQ291bnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBJc1Nob3dFbmdsaXNoV29yZENvdW50OiBib29sZWFuID0gZmFsc2U7XHJcbiAgbWFya0FsbEFzVG91Y2hlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBcclxuICBBcmFiaWNMZXR0ZXJPbmx5OnN0cmluZz1cIlwiXHJcbiAgRW5nbGlzaExldHRlck9ubHk6c3RyaW5nPVwiXCJcclxuXHJcbiAgLy9Gb3IgU2hvdyB3YXJuaW5nIG1lc3NhZ2Ugb2YgbWF4IGxlbmd0aCBsaW1pdFxyXG4gIG1pbkNoYXJzTGltaXQ6IG51bWJlciA9IC0xOyAvL1RvIGRpc2FibGUgY2hhcnMgbGltaXQgZmVhdHVyZSBieSBkZWZhdWx0XHJcbiAgZW5nbGlzaEN1cnJlbnRDaGFyc0NvdW50OiBudW1iZXIgPSAwO1xyXG4gIGFyYWJpY0N1cnJlbnRDaGFyc0NvdW50OiBudW1iZXIgPSAwO1xyXG4gIHNob3dFbmdsaXNoQ2hhcnNMaW1pdE1zZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNob3dBcmFiaWNDaGFyc0xpbWl0TXNnOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaGFzRW5nbGlzaENoYXJzTGltaXRWYWxpZGF0aW9uRXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBoYXNBcmFiaWNDaGFyc0xpbWl0VmFsaWRhdGlvbkVycm9yOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZW5nbGlzaENoYXJzTGltaXRNc2dDbGFzczogc3RyaW5nO1xyXG4gIGFyYWJpY0NoYXJzTGltaXRNc2dDbGFzczogc3RyaW5nO1xyXG4gIGVuZ2xpc2hNYXhMaW1pdFdhcm5pbmdNc2c6IHN0cmluZyA9IFwiXCI7XHJcbiAgYXJhYmljTWF4TGltaXRXYXJuaW5nTXNnOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuIGdldEN1c3RvbUVycm9yc01hc3NhZ2VzKCkge1xyXG4gICB0aGlzLkFyYWJpY0xldHRlck9ubHkgPSB0aGlzLlV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBcmFiaWNJc1JlcXVpcmVkQW5kT25seTUwQ2hhcmFjdGVyc0VuZ2xpc2hcIik7XHJcbiAgICB0aGlzLkVuZ2xpc2hMZXR0ZXJPbmx5ID0gdGhpcy5VdGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRW5nbGlzaExldHRlck9ubHlcIik7XHJcblxyXG5cclxuICB9XHJcblxyXG4gIGFzeW5jIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5jb250cm9sVmFsaWRhdGlvblNlcnZpY2UuaXNDcmVhdGVkQmVmb3IgPSBmYWxzZVxyXG4gICAgdGhpcy5DdXJyZW50TGFuZ3VhZ2UgPSBhd2FpdCB0aGlzLlV0aWxpdHlTZXJ2aWNlLmdldEN1cnJlbnRMYW5ndWFnZSgpO1xyXG4gICAgLy8gVXRpbGl0eVNlcnZpY2UuVHJhbnNsYXRvci5vbkxhbmdDaGFuZ2Uuc3Vic2NyaWJlKChldmVudDogTGFuZ0NoYW5nZUV2ZW50KSA9PiB7XHJcbiAgICAvLyAgIHRoaXMuQ3VycmVudExhbmd1YWdlID0gZXZlbnQubGFuZ1xyXG4gICAgLy8gICB0aGlzLnNob3dJbnB1dFVzaW5nTGFuZ3VhZ2VNb2RlKCk7XHJcblxyXG4gICAgLy8gfSk7XHJcbiAgICBpZiAoIXRoaXMub3B0aW9ucy5WaWV3VHlwZSlcclxuICAgICAgdGhpcy5vcHRpb25zLlZpZXdUeXBlID0gdGhpcy5nbG9iYWxTZXR0aW5ncy5WaWV3VHlwZTtcclxuICAgIGlmICghdGhpcy5vcHRpb25zLkxhbmd1YWdlTW9kZSlcclxuICAgICAgdGhpcy5vcHRpb25zLkxhbmd1YWdlTW9kZSA9IHRoaXMuZ2xvYmFsU2V0dGluZ3MuTGFuZ3VhZ2VNb2RlO1xyXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMuTXVsdGlDb250cm9sUGxhY2VtZW50VHlwZSlcclxuICAgICAgdGhpcy5vcHRpb25zLk11bHRpQ29udHJvbFBsYWNlbWVudFR5cGUgPSB0aGlzLmdsb2JhbFNldHRpbmdzLk11bHRpQ29udHJvbFBsYWNlbWVudFR5cGU7XHJcbiAgICBpZiAoIXRoaXMub3B0aW9ucy5NYXhMZW5ndGgpXHJcbiAgICAgIHRoaXMub3B0aW9ucy5NYXhMZW5ndGggPSB0aGlzLmdsb2JhbFNldHRpbmdzLk1heExlbmd0aFRleHRBcmVhO1xyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuTGFiZWxLZXkgIT0gbnVsbCAmJiB0aGlzLm9wdGlvbnMuTGFiZWxLZXkgIT0gXCJcIikge1xyXG4gICAgICB0aGlzLm9wdGlvbnMuQXJhYmljTGFiZWxWYWx1ZSA9IHRoaXMuVXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSh0aGlzLm9wdGlvbnMuTGFiZWxLZXkpICsgXCIgXCIgKyB0aGlzLlV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJJbkFyYWJpY1wiKTtcclxuICAgICAgdGhpcy5vcHRpb25zLkVuZ2xpc2hMYWJlbFZhbHVlID0gdGhpcy5VdGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKHRoaXMub3B0aW9ucy5MYWJlbEtleSkgKyBcIiBcIiArIHRoaXMuVXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkluRW5nbGlzaFwiKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLkFyYWJpY0xhYmVsS2V5ICE9IG51bGwgJiYgdGhpcy5vcHRpb25zLkFyYWJpY0xhYmVsS2V5ICE9IFwiXCIpXHJcbiAgICAgICAgdGhpcy5vcHRpb25zLkFyYWJpY0xhYmVsVmFsdWUgPSB0aGlzLlV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUodGhpcy5vcHRpb25zLkFyYWJpY0xhYmVsS2V5KTtcclxuXHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuRW5nbGlzaExhYmVsS2V5ICE9IG51bGwgJiYgdGhpcy5vcHRpb25zLkVuZ2xpc2hMYWJlbEtleSAhPSBcIlwiKVxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5FbmdsaXNoTGFiZWxWYWx1ZSA9IHRoaXMuVXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSh0aGlzLm9wdGlvbnMuRW5nbGlzaExhYmVsS2V5KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLk11bHRpTGFuZ3VhZ2VUZXh0QXJlYWdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgICB0aGlzLk11bHRpTGFuZ3VhZ2VUZXh0QXJlYWdyb3VwLmFkZENvbnRyb2woXCJBcmFiaWNcIiwgbmV3IEZvcm1Db250cm9sKCcnKSk7XHJcbiAgICB0aGlzLk11bHRpTGFuZ3VhZ2VUZXh0QXJlYWdyb3VwLmFkZENvbnRyb2woXCJFbmdsaXNoXCIsIG5ldyBGb3JtQ29udHJvbCgnJykpO1xyXG4gICAgdGhpcy5BcmFiaWNUZXh0QXJlYUZvcm1Db250cm9sID0gdGhpcy5NdWx0aUxhbmd1YWdlVGV4dEFyZWFncm91cC5jb250cm9sc1tcIkFyYWJpY1wiXTsgLy8gIG5ldyBGb3JtQ29udHJvbCgnJyx2YWxpZGF0aW9uUnVsZXMpO1xyXG4gICAgdGhpcy5FbmdsaXNoVGV4dEFyZWFGb3JtQ29udHJvbCA9IHRoaXMuTXVsdGlMYW5ndWFnZVRleHRBcmVhZ3JvdXAuY29udHJvbHNbXCJFbmdsaXNoXCJdOyAvLyAgbmV3IEZvcm1Db250cm9sKCcnLHZhbGlkYXRpb25SdWxlcyk7XHJcbiAgICB0aGlzLmdyb3VwLmFkZENvbnRyb2wodGhpcy5vcHRpb25zLk5hbWUsIG5ldyBGb3JtR3JvdXAodGhpcy5NdWx0aUxhbmd1YWdlVGV4dEFyZWFncm91cC5jb250cm9scykpO1xyXG4gICAgdGhpcy5nZXRDdXN0b21FcnJvcnNNYXNzYWdlcygpXHJcblxyXG4gICAgc3dpdGNoICh0aGlzLm9wdGlvbnMuVHlwZSkge1xyXG4gICAgICBjYXNlIElucHV0VHlwZS5FbWFpbDpcclxuICAgICAgICB0aGlzLkVuZ2xpc2hWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLmNvbXBvc2UoW1xyXG4gICAgICAgICAgdGhpcy5jb250cm9sVXRpbGl0eS5wYXR0ZXJuVmFsaWRhdG9yKC9eW2EtejAtOS5fJSstXStAW2EtejAtOS4tXStcXC5bYS16XXsyLDR9JC8sIHsgRW1haWxWYWxpZGF0aW9uS2V5OiBcIlwiIH0pLFxyXG5cclxuICAgICAgICBdKSk7XHJcbiAgICAgICAgdGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLmNvbXBvc2UoW1xyXG4gICAgICAgICAgdGhpcy5jb250cm9sVXRpbGl0eS5wYXR0ZXJuVmFsaWRhdG9yKC9eW2EtejAtOS5fJSstXStAW2EtejAtOS4tXStcXC5bYS16XXsyLDR9JC8sIHsgRW1haWxWYWxpZGF0aW9uS2V5OiBcIlwiIH0pLFxyXG5cclxuICAgICAgICBdKSk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIElucHV0VHlwZS5OdW1iZXI6XHJcbiAgICAgICAgdGhpcy5FbmdsaXNoVmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5wYXR0ZXJuKCdeWzAtOV0rKFxcLj9bMC05XSspPyQnKSk7XHJcbiAgICAgICAgdGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLnBhdHRlcm4oJ15bMC05XSsoXFwuP1swLTldKyk/JCcpKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcblxyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuQ3VzdG9tVmFsaWRhdGlvbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCBWYWxpZGF0aW9ucyA9IHRoaXMub3B0aW9ucy5DdXN0b21WYWxpZGF0aW9uXHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBWYWxpZGF0aW9ucy5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBjb25zdCBWYWxpZGF0aW9uID0gVmFsaWRhdGlvbnNbaW5kZXhdO1xyXG4gICAgICAgIHRoaXMuRW5nbGlzaFZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRpb24uZnVuY3Rpb25Cb2R5KTtcclxuICAgICAgICB0aGlzLkFyYWJpY1ZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRpb24uZnVuY3Rpb25Cb2R5KTtcclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLk1pbkxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLm1pbkxlbmd0aCh0aGlzLm9wdGlvbnMuTWluTGVuZ3RoKSk7XHJcbiAgICAgIHRoaXMuRW5nbGlzaFZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMubWluTGVuZ3RoKHRoaXMub3B0aW9ucy5NaW5MZW5ndGgpKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuTWF4TGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLkVuZ2xpc2hWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLm1heExlbmd0aCh0aGlzLm9wdGlvbnMuTWF4TGVuZ3RoKSk7XHJcbiAgICAgIHRoaXMuQXJhYmljVmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5tYXhMZW5ndGgodGhpcy5vcHRpb25zLk1heExlbmd0aCkpO1xyXG5cclxuICAgICAgaWYgKCF0aGlzLm9wdGlvbnMuTWF4TGVuZ3RoV2FybmluZ0xpbWl0KVxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5NYXhMZW5ndGhXYXJuaW5nTGltaXQgPSB0aGlzLmdsb2JhbFNldHRpbmdzLk1heExlbmd0aFdhcm5pbmdMaW1pdDtcclxuXHJcbiAgICAgIHRoaXMubWluQ2hhcnNMaW1pdCA9IHRoaXMub3B0aW9ucy5NYXhMZW5ndGggLSB0aGlzLm9wdGlvbnMuTWF4TGVuZ3RoV2FybmluZ0xpbWl0O1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2hvd0lucHV0VXNpbmdMYW5ndWFnZU1vZGUoKTtcclxuXHJcbiAgICB0aGlzLkFyYWJpY1ZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMuY29tcG9zZShbXHJcbiAgICAgIHRoaXMuY29udHJvbFV0aWxpdHkuYXJhYmljVmFsaWRhdG9yKHsgQXJhYmljSXNSZXF1aXJlZEFuZE9ubHk1MENoYXJhY3RlcnNFbmdsaXNoOiB0aGlzLkFyYWJpY0xldHRlck9ubHkgfSksXHJcblxyXG4gICAgXSkpO1xyXG4gICAgdGhpcy5FbmdsaXNoVmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5jb21wb3NlKFtcclxuICAgICAgdGhpcy5jb250cm9sVXRpbGl0eS5wYXR0ZXJuVmFsaWRhdG9yKC9eW1xceDAwLVxceDdGXSokLywgeyBFbmdsaXNoTGV0dGVyT25seTogdGhpcy5FbmdsaXNoTGV0dGVyT25seSB9KSxcclxuICAgICAgIFxyXG4gICAgXSkpO1xyXG5cclxuICAgIHRoaXMuQXJhYmljVGV4dEFyZWFGb3JtQ29udHJvbC5zZXRWYWxpZGF0b3JzKHRoaXMuQXJhYmljVmFsaWRhdGlvblJ1bGVzKTtcclxuICAgIHRoaXMuQXJhYmljVGV4dEFyZWFGb3JtQ29udHJvbC5zZXRBc3luY1ZhbGlkYXRvcnModGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXNhc3luYyk7XHJcbiAgICB0aGlzLkVuZ2xpc2hUZXh0QXJlYUZvcm1Db250cm9sLnNldFZhbGlkYXRvcnModGhpcy5FbmdsaXNoVmFsaWRhdGlvblJ1bGVzKTtcclxuICAgIHRoaXMuRW5nbGlzaFRleHRBcmVhRm9ybUNvbnRyb2wuc2V0QXN5bmNWYWxpZGF0b3JzKHRoaXMuRW5nbGlzaFZhbGlkYXRpb25SdWxlc2FzeW5jKTtcclxuXHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5Jc0Rpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMuRW5nbGlzaFRleHRBcmVhRm9ybUNvbnRyb2wuZGlzYWJsZSgpO1xyXG4gICAgICB0aGlzLkFyYWJpY1RleHRBcmVhRm9ybUNvbnRyb2wuZGlzYWJsZSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5BcmFiaWNUZXh0QXJlYUZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMub3B0aW9ucy5WYWx1ZS5BcmFiaWMpXHJcbiAgICB0aGlzLkVuZ2xpc2hUZXh0QXJlYUZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMub3B0aW9ucy5WYWx1ZS5FbmdsaXNoKVxyXG5cclxuICAgIHRoaXMuTXVsdGlMaW5ndWFsVGV4dEFyZWFGb3JtQ29udHJvbEhvc3QubmdTdWJtaXQuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICB0aGlzLmdyb3VwLm1hcmtBbGxBc1RvdWNoZWQoKVxyXG4gICAgICB0aGlzLm1hcmtBbGxBc1RvdWNoZWQgPSB0cnVlXHJcbiAgICB9KVxyXG5cclxuICB9XHJcblxyXG5cclxuICBvblRleHRDaGFuZ2UoKSB7XHJcbiAgICBsZXQgYXJhYmljVmFsdWUgPSBcIlwiO1xyXG4gICAgbGV0IGVuZ2xpc2hWYWx1ZSA9IFwiXCI7XHJcbiAgICBpZiAodGhpcy5FbmdsaXNoVGV4dEFyZWFGb3JtQ29udHJvbC52YWx1ZSA9PSBcIlwiKSB7XHJcbiAgICAgIHRoaXMuRW5nbGlzaFdvcmRDb3VudEFycmF5ID0gMDtcclxuICAgICAgdGhpcy5FbmdsaXNoV29yZENvdW50ID0gMDtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5FbmdsaXNoVGV4dEFyZWFGb3JtQ29udHJvbC52YWx1ZSAhPSBudWxsIHx8IHRoaXMuRW5nbGlzaFRleHRBcmVhRm9ybUNvbnRyb2wudmFsdWUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgdGhpcy5FbmdsaXNoV29yZENvdW50QXJyYXkgPSB0aGlzLkVuZ2xpc2hUZXh0QXJlYUZvcm1Db250cm9sLnZhbHVlLnNwbGl0KFwiIFwiKS5sZW5ndGg7XHJcbiAgICAgICAgaWYgKHRoaXMuRW5nbGlzaFdvcmRDb3VudEFycmF5ID4gMCkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuRW5nbGlzaFdvcmRDb3VudEFycmF5ID4gdGhpcy5vcHRpb25zLk1heFdvcmRDb3VudCkge1xyXG4gICAgICAgICAgICB0aGlzLkVuZ2xpc2hXb3JkQ291bnQgPSB0aGlzLm9wdGlvbnMuTWF4V29yZENvdW50O1xyXG4gICAgICAgICAgICB0aGlzLk11bHRpTGFuZ3VhZ2VUZXh0QXJlYWdyb3VwLmNvbnRyb2xzW1wiRW5nbGlzaFwiXS5zZXRFcnJvcnMoeyBNYXhXb3JkQ291bnRWYWxpZGF0aW9uS2V5OiB0aGlzLm9wdGlvbnMuTWF4V29yZENvdW50IH0pO1xyXG4gICAgICAgICAgICB0aGlzLk11bHRpTGFuZ3VhZ2VUZXh0QXJlYWdyb3VwLmNvbnRyb2xzW1wiRW5nbGlzaFwiXS5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICAgICAgICAgIHRoaXMuTXVsdGlMYW5ndWFnZVRleHRBcmVhZ3JvdXAuY29udHJvbHNbXCJFbmdsaXNoXCJdLmludmFsaWQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5FbmdsaXNoV29yZENvdW50ID0gdGhpcy5FbmdsaXNoV29yZENvdW50QXJyYXk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbmdsaXNoVmFsdWU9dGhpcy5FbmdsaXNoVGV4dEFyZWFGb3JtQ29udHJvbC52YWx1ZTtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAvL0NoZWNrIGZvciBtYXhsZW5ndGggbGltaXQgY291bnRcclxuICAgICAgLy9NYXhMZW5ndGggc2hvdWxkIGJlIGdyZXRhZXIgdGhhbiBvciBlcXVhbHMgY2hhcnMgbGltaXQgc28gdGhhdCBtaW5DaGFyc0xpbWl0IHdvdWxkIGJlID49IDBcclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5NYXhMZW5ndGggJiYgdGhpcy5taW5DaGFyc0xpbWl0ID49IDApIHtcclxuICAgICAgICB0aGlzLmVuZ2xpc2hDdXJyZW50Q2hhcnNDb3VudCA9IHRoaXMuRW5nbGlzaFRleHRBcmVhRm9ybUNvbnRyb2wudmFsdWUubGVuZ3RoO1xyXG4gICAgICAgIGlmICh0aGlzLmVuZ2xpc2hDdXJyZW50Q2hhcnNDb3VudCA+IHRoaXMubWluQ2hhcnNMaW1pdCkge1xyXG4gICAgICAgICAgdGhpcy5zaG93RW5nbGlzaENoYXJzTGltaXRNc2cgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5oYXNFbmdsaXNoQ2hhcnNMaW1pdFZhbGlkYXRpb25FcnJvciA9IHRydWU7XHJcbiAgICAgICAgICBpZiAodGhpcy5lbmdsaXNoQ3VycmVudENoYXJzQ291bnQgPT0gdGhpcy5vcHRpb25zLk1heExlbmd0aClcclxuICAgICAgICAgICAgdGhpcy5lbmdsaXNoQ2hhcnNMaW1pdE1zZ0NsYXNzID0gXCJkYW5nZXJcIjtcclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgdGhpcy5lbmdsaXNoQ2hhcnNMaW1pdE1zZ0NsYXNzID0gXCJ3YXJuaW5nXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zaG93RW5nbGlzaENoYXJzTGltaXRNc2cgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuaGFzRW5nbGlzaENoYXJzTGltaXRWYWxpZGF0aW9uRXJyb3IgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIG1heDogbnVtYmVyID0gdGhpcy5vcHRpb25zLk1heExlbmd0aDtcclxuICAgICAgICB2YXIgY3VycmVudDogbnVtYmVyID0gdGhpcy5lbmdsaXNoQ3VycmVudENoYXJzQ291bnQ7XHJcblxyXG4gICAgICAgIHZhciByZXNvdXJjZSA9IHRoaXMuVXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIk1heExlbmd0aExpbWl0V2FybmluZ1wiKTtcclxuICAgICAgICB0aGlzLmVuZ2xpc2hNYXhMaW1pdFdhcm5pbmdNc2cgPSBldmFsKCdgJyArIHJlc291cmNlICsgJ2AnKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuQXJhYmljVGV4dEFyZWFGb3JtQ29udHJvbC52YWx1ZSA9PSBcIlwiKSB7XHJcbiAgICAgIHRoaXMuQXJhYmljV29yZENvdW50QXJyYXkgPSAwO1xyXG4gICAgICB0aGlzLkFyYWJpY1dvcmRDb3VudCA9IDA7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuQXJhYmljVGV4dEFyZWFGb3JtQ29udHJvbC52YWx1ZSAhPSBudWxsIHx8IHRoaXMuQXJhYmljVGV4dEFyZWFGb3JtQ29udHJvbC52YWx1ZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICB0aGlzLkFyYWJpY1dvcmRDb3VudEFycmF5ID0gdGhpcy5BcmFiaWNUZXh0QXJlYUZvcm1Db250cm9sLnZhbHVlLnNwbGl0KFwiIFwiKS5sZW5ndGg7XHJcbiAgICAgICAgaWYgKHRoaXMuQXJhYmljV29yZENvdW50QXJyYXkgPiAwKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5BcmFiaWNXb3JkQ291bnRBcnJheSA+IHRoaXMub3B0aW9ucy5NYXhXb3JkQ291bnQpIHtcclxuICAgICAgICAgICAgdGhpcy5BcmFiaWNXb3JkQ291bnQgPSB0aGlzLm9wdGlvbnMuTWF4V29yZENvdW50O1xyXG4gICAgICAgICAgICB0aGlzLk11bHRpTGFuZ3VhZ2VUZXh0QXJlYWdyb3VwLmNvbnRyb2xzW1wiQXJhYmljXCJdLnNldEVycm9ycyh7IE1heFdvcmRDb3VudFZhbGlkYXRpb25LZXk6IHRoaXMub3B0aW9ucy5NYXhXb3JkQ291bnQgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuTXVsdGlMYW5ndWFnZVRleHRBcmVhZ3JvdXAuY29udHJvbHNbXCJBcmFiaWNcIl0ubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICAgICAgICB0aGlzLk11bHRpTGFuZ3VhZ2VUZXh0QXJlYWdyb3VwLmNvbnRyb2xzW1wiQXJhYmljXCJdLmludmFsaWQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5BcmFiaWNXb3JkQ291bnQgPSB0aGlzLkFyYWJpY1dvcmRDb3VudEFycmF5O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYXJhYmljVmFsdWU9dGhpcy5BcmFiaWNUZXh0QXJlYUZvcm1Db250cm9sLnZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLy9DaGVjayBmb3IgbWF4bGVuZ3RoIGxpbWl0IGNvdW50XHJcbiAgICAgIC8vTWF4TGVuZ3RoIHNob3VsZCBiZSBncmV0YWVyIHRoYW4gb3IgZXF1YWxzIGNoYXJzIGxpbWl0IHNvIHRoYXQgbWluQ2hhcnNMaW1pdCB3b3VsZCBiZSA+PSAwXHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuTWF4TGVuZ3RoICYmIHRoaXMubWluQ2hhcnNMaW1pdCA+PSAwKSB7XHJcbiAgICAgICAgdGhpcy5hcmFiaWNDdXJyZW50Q2hhcnNDb3VudCA9IHRoaXMuQXJhYmljVGV4dEFyZWFGb3JtQ29udHJvbC52YWx1ZS5sZW5ndGg7XHJcbiAgICAgICAgaWYgKHRoaXMuYXJhYmljQ3VycmVudENoYXJzQ291bnQgPiB0aGlzLm1pbkNoYXJzTGltaXQpIHtcclxuICAgICAgICAgIHRoaXMuc2hvd0FyYWJpY0NoYXJzTGltaXRNc2cgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5oYXNBcmFiaWNDaGFyc0xpbWl0VmFsaWRhdGlvbkVycm9yID0gdHJ1ZTtcclxuICAgICAgICAgIGlmICh0aGlzLmFyYWJpY0N1cnJlbnRDaGFyc0NvdW50ID09IHRoaXMub3B0aW9ucy5NYXhMZW5ndGgpXHJcbiAgICAgICAgICAgIHRoaXMuYXJhYmljQ2hhcnNMaW1pdE1zZ0NsYXNzID0gXCJkYW5nZXJcIjtcclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgdGhpcy5hcmFiaWNDaGFyc0xpbWl0TXNnQ2xhc3MgPSBcIndhcm5pbmdcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNob3dBcmFiaWNDaGFyc0xpbWl0TXNnID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmhhc0FyYWJpY0NoYXJzTGltaXRWYWxpZGF0aW9uRXJyb3IgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIG1heDogbnVtYmVyID0gdGhpcy5vcHRpb25zLk1heExlbmd0aDtcclxuICAgICAgICB2YXIgY3VycmVudDogbnVtYmVyID0gdGhpcy5hcmFiaWNDdXJyZW50Q2hhcnNDb3VudDtcclxuXHJcbiAgICAgICAgdmFyIHJlc291cmNlID0gdGhpcy5VdGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTWF4TGVuZ3RoTGltaXRXYXJuaW5nXCIpO1xyXG4gICAgICAgIHRoaXMuYXJhYmljTWF4TGltaXRXYXJuaW5nTXNnID0gZXZhbCgnYCcgKyByZXNvdXJjZSArICdgJyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGxldCBtdWxpdExhbmdNb2RlbCA9IG5ldyBFbmdsaXNoQXJhYmljRFRPKCk7XHJcbiAgICBtdWxpdExhbmdNb2RlbC5BcmFiaWMgPSBhcmFiaWNWYWx1ZTtcclxuICAgIG11bGl0TGFuZ01vZGVsLkVuZ2xpc2ggPSBlbmdsaXNoVmFsdWU7XHJcbiAgICB0aGlzLk9uQ2hhbmdlLmVtaXQobXVsaXRMYW5nTW9kZWwpXHJcbiAgICB0aGlzLmdyb3VwLmdldCh0aGlzLm9wdGlvbnMuTmFtZSkuc2V0VmFsdWUobXVsaXRMYW5nTW9kZWwpO1xyXG4gICAgIC8vVXNlIHRoaXMgbGluZSB0byBlbmFibGUgdHdvIHdheSBiaW5kaW5nLlxyXG4gICAgIHRoaXMub3B0aW9ucy5WYWx1ZT1tdWxpdExhbmdNb2RlbDtcclxuICAgIFxyXG4gIH1cclxuXHJcbiAgcmVzZXRFcnJvciA9ICgpID0+IHtcclxuICAgIHRoaXMuY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLlJlbW92ZUdsb2JhbEVycm9yKCk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIHNob3dHbG9iYWxFcnJvcigpIHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuc2hvd0dsb2JhbEVycm9yKClcclxuICB9XHJcblxyXG4gIGdldEVycm9yVmFsaWRhdGlvbihFcnJvckxpc3QpIHtcclxuICAgIGlmICh0aGlzLm1hcmtBbGxBc1RvdWNoZWQgJiYgdGhpcy5ncm91cC5pbnZhbGlkKSB7XHJcbiAgICAgIHRoaXMuc2hvd0dsb2JhbEVycm9yKClcclxuICAgICAgdGhpcy5tYXJrQWxsQXNUb3VjaGVkID0gZmFsc2VcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmNvbnRyb2xVdGlsaXR5LmdldEVycm9yVmFsaWRhdGlvbk1hc3NhZ2UoRXJyb3JMaXN0LCB0aGlzLmdyb3VwLCB0aGlzLm9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgZ2V0SW5wdXRUeXBlKHR5cGU6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIElucHV0VHlwZVt0eXBlXVxyXG4gIH1cclxuXHJcbiAgdHJpbUNvbnRyb2xWYWx1ZSh0eXBlOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHdoaXRlc3BhY2U6IHN0cmluZyA9ICcgJztcclxuICAgIGlmICh0eXBlID09IFwiRW5cIikge1xyXG4gICAgICBsZXQgb3JpZ2luYWxWYWx1ZSA9dGhpcy5FbmdsaXNoVGV4dEFyZWFGb3JtQ29udHJvbC52YWx1ZTtcclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5QYXRjaEZ1bmN0aW9uICYmIHRoaXMub3B0aW9ucy5QYXRjaFBhdGggJiYgdGhpcy5FbmdsaXNoVGV4dEFyZWFGb3JtQ29udHJvbC52YWxpZCkge1xyXG4gICAgICAgIHRoaXMuY29udHJvbFV0aWxpdHkucGF0Y2hDb250cm9sVmFsdWUob3JpZ2luYWxWYWx1ZSx0aGlzLm9wdGlvbnMuUGF0Y2hGdW5jdGlvbiAsdGhpcy5vcHRpb25zLlBhdGNoUGF0aClcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5FbmdsaXNoVGV4dEFyZWFGb3JtQ29udHJvbC52YWx1ZS5zdGFydHNXaXRoKHdoaXRlc3BhY2UpIHx8IHRoaXMuRW5nbGlzaFRleHRBcmVhRm9ybUNvbnRyb2wudmFsdWUuZW5kc1dpdGgod2hpdGVzcGFjZSkpIHtcclxuICAgICAgICB0aGlzLkVuZ2xpc2hUZXh0QXJlYUZvcm1Db250cm9sLnBhdGNoVmFsdWUob3JpZ2luYWxWYWx1ZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0eXBlID09IFwiQXJcIikge1xyXG4gICAgICBsZXQgb3JpZ2luYWxWYWx1ZSA9dGhpcy5BcmFiaWNUZXh0QXJlYUZvcm1Db250cm9sLnZhbHVlO1xyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLlBhdGNoRnVuY3Rpb24gJiYgdGhpcy5vcHRpb25zLlBhdGNoUGF0aCAmJiB0aGlzLkFyYWJpY1RleHRBcmVhRm9ybUNvbnRyb2wudmFsaWQpIHtcclxuICAgICAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LnBhdGNoQ29udHJvbFZhbHVlKG9yaWdpbmFsVmFsdWUsdGhpcy5vcHRpb25zLlBhdGNoRnVuY3Rpb24gLHRoaXMub3B0aW9ucy5QYXRjaFBhdGgpXHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuQXJhYmljVGV4dEFyZWFGb3JtQ29udHJvbC52YWx1ZS5zdGFydHNXaXRoKHdoaXRlc3BhY2UpIHx8IHRoaXMuQXJhYmljVGV4dEFyZWFGb3JtQ29udHJvbC52YWx1ZS5lbmRzV2l0aCh3aGl0ZXNwYWNlKSkge1xyXG4gICAgICAgIHRoaXMuQXJhYmljVGV4dEFyZWFGb3JtQ29udHJvbC5wYXRjaFZhbHVlKG9yaWdpbmFsVmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgY29weUlucHV0TWVzc2FnZShpbnB1dEVsZW1lbnQpIHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuQ29weUlucHV0TWVzc2FnZShpbnB1dEVsZW1lbnQpXHJcbiAgfVxyXG5cclxuXHJcbiAgc2hvd0lucHV0VXNpbmdMYW5ndWFnZU1vZGUoKSB7XHJcblxyXG4gICAgdGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXMgPSB0aGlzLkFyYWJpY1ZhbGlkYXRpb25SdWxlcy5maWx0ZXIoaXRlbSA9PiBpdGVtICE9PSBWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgIHRoaXMuRW5nbGlzaFZhbGlkYXRpb25SdWxlcyA9IHRoaXMuRW5nbGlzaFZhbGlkYXRpb25SdWxlcy5maWx0ZXIoaXRlbSA9PiBpdGVtICE9PSBWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuXHJcbiAgICB0aGlzLkFyYWJpY1RleHRBcmVhRm9ybUNvbnRyb2wuY2xlYXJWYWxpZGF0b3JzKCk7XHJcbiAgICB0aGlzLkVuZ2xpc2hUZXh0QXJlYUZvcm1Db250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xyXG5cclxuICAgIHRoaXMuQXJhYmljVGV4dEFyZWFGb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB0aGlzLkVuZ2xpc2hUZXh0QXJlYUZvcm1Db250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuXHJcbiAgICBzd2l0Y2ggKHRoaXMub3B0aW9ucy5MYW5ndWFnZU1vZGUpIHtcclxuICAgICAgY2FzZSBMYW5ndWFnZU1vZGUuQm90aF9MYW5ndWFnZXNfYXJlX3Zpc2libGU6XHJcbiAgICAgICAgdGhpcy5TaG93QXJhYmljVGV4dEFyZWEgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuU2hvd0VuZ2lzaFRleHRBcmVhID0gdHJ1ZTtcclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLklzUmVxdWlyZWQgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgdGhpcy5FbmdsaXNoVmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICAgICAgICB0aGlzLkFyYWJpY1ZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICAgICAgdGhpcy5Jc1Nob3dBc3Rlcmlza0luQXJhYmljPXRydWU7XHJcbiAgICAgICAgICB0aGlzLklzU2hvd0FzdGVyaXNrSW5FbmdsaXNoPXRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIExhbmd1YWdlTW9kZS5BcmFiaWNfTGFuZ3VhZ2Vfb25seV9pc192aXNpYmxlOlxyXG4gICAgICAgIHRoaXMuU2hvd0FyYWJpY1RleHRBcmVhID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm9wdGlvbnMuTXVsdGlDb250cm9sUGxhY2VtZW50VHlwZT1Db250cm9sTGF5b3V0LlZlcnRpY2FsO1xyXG5cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBMYW5ndWFnZU1vZGUuRW5nbGlzaF9MYW5ndWFnZV9vbmx5X2lzX3Zpc2libGU6XHJcbiAgICAgICAgdGhpcy5TaG93RW5naXNoVGV4dEFyZWEgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy5NdWx0aUNvbnRyb2xQbGFjZW1lbnRUeXBlPUNvbnRyb2xMYXlvdXQuVmVydGljYWw7XHJcblxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIExhbmd1YWdlTW9kZS5Cb3RoX0xhbmd1YWdlc19hcmVfdmlzaWJsZV9idXRfb25seV9jdXJyZW50X2xhbmd1YWdlX2lzX3JlcXVpcmVkOlxyXG4gICAgICAgIHRoaXMuU2hvd0FyYWJpY1RleHRBcmVhID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLlNob3dFbmdpc2hUZXh0QXJlYSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLk11bHRpQ29udHJvbFBsYWNlbWVudFR5cGU9dGhpcy5nbG9iYWxTZXR0aW5ncy5NdWx0aUNvbnRyb2xQbGFjZW1lbnRUeXBlXHJcblxyXG4gICAgICAgIGlmICh0aGlzLkN1cnJlbnRMYW5ndWFnZSA9PSAnYXInKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLklzUmVxdWlyZWQgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLkFyYWJpY1ZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICAgICAgICB0aGlzLklzU2hvd0FzdGVyaXNrSW5BcmFiaWM9dHJ1ZTtcclxuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLkN1cnJlbnRMYW5ndWFnZSA9PSAnZW4nKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLklzUmVxdWlyZWQgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLkVuZ2xpc2hWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgICAgICAgdGhpcy5Jc1Nob3dBc3Rlcmlza0luRW5nbGlzaD10cnVlO1xyXG5cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgTGFuZ3VhZ2VNb2RlLkJvdGhfTGFuZ3VhZ2VzX2J1dF9vbmx5X0FyYWJpY19pc19yZXF1aXJlZDpcclxuICAgICAgICB0aGlzLlNob3dBcmFiaWNUZXh0QXJlYSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5TaG93RW5naXNoVGV4dEFyZWEgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy5NdWx0aUNvbnRyb2xQbGFjZW1lbnRUeXBlPXRoaXMuZ2xvYmFsU2V0dGluZ3MuTXVsdGlDb250cm9sUGxhY2VtZW50VHlwZVxyXG5cclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLklzUmVxdWlyZWQgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgdGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgICAgIHRoaXMuSXNTaG93QXN0ZXJpc2tJbkFyYWJpYz10cnVlO1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgTGFuZ3VhZ2VNb2RlLkJvdGhfTGFuZ3VhZ2VzX2J1dF9vbmx5X0VuZ2xpc2hfaXNfcmVxdWlyZWQ6XHJcbiAgICAgICAgdGhpcy5TaG93QXJhYmljVGV4dEFyZWEgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuU2hvd0VuZ2lzaFRleHRBcmVhID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm9wdGlvbnMuTXVsdGlDb250cm9sUGxhY2VtZW50VHlwZT10aGlzLmdsb2JhbFNldHRpbmdzLk11bHRpQ29udHJvbFBsYWNlbWVudFR5cGVcclxuXHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5Jc1JlcXVpcmVkID09IHRydWUpIHtcclxuICAgICAgICAgIHRoaXMuRW5nbGlzaFZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICAgICAgdGhpcy5Jc1Nob3dBc3Rlcmlza0luRW5nbGlzaD10cnVlO1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgTGFuZ3VhZ2VNb2RlLkN1cnJlbnRfTGFuZ3VhZ2Vfb25seV9pc192aXNpYmxlX2FuZF9yZXF1aXJlZDpcclxuICAgICAgICB0aGlzLm9wdGlvbnMuTXVsdGlDb250cm9sUGxhY2VtZW50VHlwZT1Db250cm9sTGF5b3V0LlZlcnRpY2FsO1xyXG4gICAgICAgIGlmICh0aGlzLkN1cnJlbnRMYW5ndWFnZSA9PSAnYXInKSB7XHJcbiAgICAgICAgICB0aGlzLlNob3dBcmFiaWNUZXh0QXJlYSA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLlNob3dFbmdpc2hUZXh0QXJlYSA9IGZhbHNlO1xyXG4gICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5Jc1JlcXVpcmVkID09IHRydWUpIHtcclxuICAgICAgICAgICAgdGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgICAgICAgdGhpcy5Jc1Nob3dBc3Rlcmlza0luQXJhYmljPXRydWU7XHJcblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5DdXJyZW50TGFuZ3VhZ2UgPT0gJ2VuJykge1xyXG4gICAgICAgICAgdGhpcy5TaG93QXJhYmljVGV4dEFyZWEgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuU2hvd0VuZ2lzaFRleHRBcmVhID0gdHJ1ZTtcclxuICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuSXNSZXF1aXJlZCA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuRW5nbGlzaFZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICAgICAgICB0aGlzLklzU2hvd0FzdGVyaXNrSW5FbmdsaXNoPXRydWU7XHJcblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLkFyYWJpY1RleHRBcmVhRm9ybUNvbnRyb2wuc2V0VmFsaWRhdG9ycyh0aGlzLkFyYWJpY1ZhbGlkYXRpb25SdWxlcyk7XHJcbiAgICB0aGlzLkVuZ2xpc2hUZXh0QXJlYUZvcm1Db250cm9sLnNldFZhbGlkYXRvcnModGhpcy5FbmdsaXNoVmFsaWRhdGlvblJ1bGVzKTtcclxuICAgIHRoaXMuQXJhYmljVGV4dEFyZWFGb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB0aGlzLkVuZ2xpc2hUZXh0QXJlYUZvcm1Db250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICB9XHJcblxyXG5cclxuICBvbkFyYWJpY0ZvY3VzKGlzRm9jdXM6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuSXNTaG93QXJhYmljV29yZENvdW50ID0gaXNGb2N1c1xyXG5cclxuICAgIC8vb25Gb2N1c1xyXG4gICAgaWYgKGlzRm9jdXMpIHtcclxuICAgICAgaWYgKHRoaXMuaGFzQXJhYmljQ2hhcnNMaW1pdFZhbGlkYXRpb25FcnJvcikgLy9jaGVjayBpZiB0aGVyZSB3YXMgcHJldmlvdXMgdmFsaWRhdGlvbiBlcnJvclxyXG4gICAgICAgIHRoaXMuc2hvd0FyYWJpY0NoYXJzTGltaXRNc2cgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgZWxzZSAvL29uRm9jdXNPdXRcclxuICAgICAgdGhpcy5zaG93QXJhYmljQ2hhcnNMaW1pdE1zZyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgb25FbmdsaXNoRm9jdXMoaXNGb2N1czogYm9vbGVhbikge1xyXG4gICAgdGhpcy5Jc1Nob3dFbmdsaXNoV29yZENvdW50ID0gaXNGb2N1c1xyXG5cclxuICAgIC8vb25Gb2N1c1xyXG4gICAgaWYgKGlzRm9jdXMpIHtcclxuICAgICAgaWYgKHRoaXMuaGFzRW5nbGlzaENoYXJzTGltaXRWYWxpZGF0aW9uRXJyb3IpIC8vY2hlY2sgaWYgdGhlcmUgd2FzIHByZXZpb3VzIHZhbGlkYXRpb24gZXJyb3JcclxuICAgICAgICB0aGlzLnNob3dFbmdsaXNoQ2hhcnNMaW1pdE1zZyA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBlbHNlIC8vb25Gb2N1c091dFxyXG4gICAgICB0aGlzLnNob3dFbmdsaXNoQ2hhcnNMaW1pdE1zZyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICBSZW1vdmVSZXF1aXJlZFZhbGlkYXRpb24gPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LlJlbW92ZVJlcXVpcmVkVmFsaWRhdGlvbih0aGlzLkVuZ2xpc2hUZXh0QXJlYUZvcm1Db250cm9sLCB0aGlzLkVuZ2xpc2hWYWxpZGF0aW9uUnVsZXMsIHRoaXMub3B0aW9ucylcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuUmVtb3ZlUmVxdWlyZWRWYWxpZGF0aW9uKHRoaXMuQXJhYmljVGV4dEFyZWFGb3JtQ29udHJvbCwgdGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXMsIHRoaXMub3B0aW9ucylcclxuICB9XHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICBBZGRSZXF1aXJlZFZhbGlkYXRpb24gPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LkFkZFJlcXVpcmVkVmFsaWRhdGlvbih0aGlzLkVuZ2xpc2hUZXh0QXJlYUZvcm1Db250cm9sLCB0aGlzLkVuZ2xpc2hWYWxpZGF0aW9uUnVsZXMsIHRoaXMub3B0aW9ucylcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuQWRkUmVxdWlyZWRWYWxpZGF0aW9uKHRoaXMuQXJhYmljVGV4dEFyZWFGb3JtQ29udHJvbCwgdGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXMsIHRoaXMub3B0aW9ucylcclxuICB9XHJcblxyXG5cclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG4gIFJlbW92ZUN1c3RvbVZhbGlkYXRpb24gPSAoQ3VzdG9tVmFsaWRhdGlvbikgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5SZW1vdmVDdXN0b21WYWxpZGF0aW9uKHRoaXMuRW5nbGlzaFRleHRBcmVhRm9ybUNvbnRyb2wsIHRoaXMuRW5nbGlzaFZhbGlkYXRpb25SdWxlcywgQ3VzdG9tVmFsaWRhdGlvbilcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuUmVtb3ZlQ3VzdG9tVmFsaWRhdGlvbih0aGlzLkFyYWJpY1RleHRBcmVhRm9ybUNvbnRyb2wsIHRoaXMuQXJhYmljVmFsaWRhdGlvblJ1bGVzLCBDdXN0b21WYWxpZGF0aW9uKVxyXG4gIH1cclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG4gIEFkZEN1c3RvbVZhbGlkYXRpb24gPSAoQ3VzdG9tVmFsaWRhdGlvbikgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5BZGRDdXN0b21WYWxpZGF0aW9uKHRoaXMuRW5nbGlzaFRleHRBcmVhRm9ybUNvbnRyb2wsIHRoaXMuRW5nbGlzaFZhbGlkYXRpb25SdWxlcywgQ3VzdG9tVmFsaWRhdGlvbilcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuQWRkQ3VzdG9tVmFsaWRhdGlvbih0aGlzLkFyYWJpY1RleHRBcmVhRm9ybUNvbnRyb2wsIHRoaXMuQXJhYmljVmFsaWRhdGlvblJ1bGVzLCBDdXN0b21WYWxpZGF0aW9uKVxyXG4gIH1cclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG4gIElzVmFsaWQgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LklzVmFsaWQodGhpcy5FbmdsaXNoVGV4dEFyZWFGb3JtQ29udHJvbClcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuSXNWYWxpZCh0aGlzLkFyYWJpY1RleHRBcmVhRm9ybUNvbnRyb2wpXHJcbiAgfVxyXG5cclxufVxyXG5cclxuIl19
|
|
@@ -407,7 +407,7 @@ MultiLingualTextBoxComponent.controlContainerstatic = null;
|
|
|
407
407
|
MultiLingualTextBoxComponent.decorators = [
|
|
408
408
|
{ type: Component, args: [{
|
|
409
409
|
selector: 'BBSF-MultiLingualTextBox',
|
|
410
|
-
template: "\r\n<div [formGroup]=\"group\">\r\n <div class=\"
|
|
410
|
+
template: "\r\n<div [formGroup]=\"group\">\r\n <div class=\"bbsf-control bbsf-multilang-textbox\" [formGroup]=\"MultiLanguagegroup\">\r\n <div class=\"row\">\r\n <!--English textbox-->\r\n <div [ngClass]=\"(options.MultiControlPlacementType==1)?'col-md-12':'col-md-6'\" *ngIf=\"ShowEnglishTextBox\" class=\"bbsf-multilang-form-group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label class=\"bbsf-label {{options.LabelExtraClasses}}\" [hidden]=\"options.IsHideEnglishLabel\">\r\n {{(options.EnglishLabelValue!=null&&options.EnglishLabelValue!=\"\")?options.EnglishLabelValue:options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)&&IsShowAsteriskInEnglish)\" class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\" [ngClass]=\"options.EnableCopyToClipboard? 'p-40px' : '' \">\r\n <!--Icon-->\r\n <div class=\"svg svg-icon-grey bbsf-icon\" [ngClass]=\"(options.IconPositionEN==1)?'left-icon':'right-icon'\" *ngIf=\"options.Icon!=null\">\r\n <span [inlineSVG]=\"options.Icon\"></span>\r\n </div>\r\n <!--input-->\r\n <input class=\"form-control\" dir=\"ltr\"\r\n (focus)=\"onEnglishFocus(true)\" (focusout)=\"onEnglishFocus(false)\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\" formControlName=\"English\"\r\n [hidden]=\"options.IsHideEnglishFields\" maxlength=\"{{options.MaxLength}}\" minlength=\"{{options.MinLength}}\"\r\n [class.is-invalid]=\"EnglishFormControl.invalid && EnglishFormControl.touched\"\r\n placeholder=\"{{options.EnglishPlaceholder}}\" (change)=\"trimControlValue('En')\"\r\n (keyup)=\"onTextChange()\"\r\n (keydown)=\"EnglishWordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n autocomplete=\"{{options.AutoComplete}}\"\r\n id=\"{{options.Name}}.English\" [(ngModel)]=\"options.Value.English\"\r\n #userinputEnglish>\r\n <!--CopyToClipboard-->\r\n <div class=\"copy-clipboard\" [hidden]=\"options.IsHideEnglishFields\" *ngIf=\"options.EnableCopyToClipboard\" (click)=\"copyInputMessage(userinputEnglish)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!--wordCount-->\r\n <div class=\"bbsf-word-count\" *ngIf=\"options.MaxWordCount>0&&IsShowEnglishWordCount\">{{EnglishWordCount}}/{{options.MaxWordCount}} Words</div>\r\n <!-- CharsLimitMsg-->\r\n <div class=\"bbsf-character-count\" *ngIf=\"showEnglishCharsLimitMsg\" [ngClass]=\"{'badge-light-warning': englishCharsLimitMsgClass === 'warning', 'badge-light-danger' : englishCharsLimitMsgClass === 'danger' }\">\r\n {{englishMaxLimitWarningMsg}}\r\n </div>\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"(options.LabelDescription!=null&&options.LabelDescription!='') ||(options.EnglishLabelDescription!=null&&options.EnglishLabelDescription!='')\">\r\n {{(options.EnglishLabelDescription!=null&&options.EnglishLabelDescription!=\"\")?options.EnglishLabelDescription:options.LabelDescription}}\r\n </div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(EnglishFormControl.invalid && EnglishFormControl.touched)\">\r\n {{getErrorValidation(EnglishFormControl.errors|keyvalue)}}\r\n </div>\r\n <div *ngIf=\"group.valid\">{{resetError()}}</div>\r\n </div>\r\n </div>\r\n\r\n <!--Arabic textbox-->\r\n <div [ngClass]=\"(options.MultiControlPlacementType==1)?'col-md-12':'col-md-6'\" *ngIf=\"ShowArabicTextBox\" class=\"bbsf-multilang-form-group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label class=\"bbsf-label {{options.LabelExtraClasses}}\" [hidden]=\"options.IsHideArabicLabel\">\r\n {{(options.ArabicLabelValue!=null&&options.ArabicLabelValue!=\"\")?options.ArabicLabelValue:options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired))&&IsShowAsteriskInArabic\" class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\" [ngClass]=\"options.EnableCopyToClipboard? 'p-40px' : '' \">\r\n <!--Icon-->\r\n <div *ngIf=\"options.Icon!=null\" class=\"svg svg-icon-grey bbsf-icon\" [ngClass]=\"(options.IconPositionEN==1)?'right-icon':'left-icon'\">\r\n <span [inlineSVG]=\"options.Icon\"></span>\r\n </div>\r\n <!--input-->\r\n <input class=\"form-control\" dir=\"rtl\"\r\n (focus)=\"onArabicFocus(true)\" (focusout)=\"onArabicFocus(false)\"\r\n [hidden]=\"options.IsHideArabicFields\" aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n formControlName=\"Arabic\" maxlength=\"{{options.MaxLength}}\" minlength=\"{{options.MinLength}}\"\r\n [class.is-invalid]=\"ArabicFormControl.invalid && ArabicFormControl.touched\"\r\n placeholder=\"{{options.ArabicPlaceholder}}\" (keyup)=\"onTextChange()\"\r\n (keydown)=\"ArabicWordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n autocomplete=\"{{options.AutoComplete}}\"\r\n id=\"{{options.Name}}.Arabic\"\r\n (change)=\"trimControlValue('Ar')\" #userinputArabic>\r\n <!--CopyToClipboard-->\r\n <div class=\"copy-clipboard\" [hidden]=\"options.IsHideArabicFields\" *ngIf=\"options.EnableCopyToClipboard\"(click)=\"copyInputMessage(userinputArabic)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!--wordCount-->\r\n <div class=\"bbsf-word-count\" *ngIf=\"options.MaxWordCount>0&&IsShowArabicWordCount\">{{ArabicWordCount}}/{{options.MaxWordCount}} Words</div>\r\n <!-- CharsLimitMsg-->\r\n <div class=\"bbsf-character-count\" *ngIf=\"showArabicCharsLimitMsg\" [ngClass]=\"{'badge-light-warning': arabicCharsLimitMsgClass === 'warning', 'badge-light-danger' : arabicCharsLimitMsgClass === 'danger' }\">\r\n {{arabicMaxLimitWarningMsg}}\r\n </div>\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"(options.LabelDescription!=null&&options.LabelDescription!='')||(options.ArabicLabelDescription!=null&&options.ArabicLabelDescription!='')\">\r\n {{(options.ArabicLabelDescription!=null&&options.ArabicLabelDescription!=\"\")?options.ArabicLabelDescription:options.LabelDescription}}\r\n </div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(ArabicFormControl.invalid && ArabicFormControl.touched)\">\r\n {{getErrorValidation(ArabicFormControl.errors|keyvalue)}}\r\n </div>\r\n <div *ngIf=\"group.valid\">{{resetError()}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n"
|
|
411
411
|
},] }
|
|
412
412
|
];
|
|
413
413
|
MultiLingualTextBoxComponent.ctorParameters = () => [
|
|
@@ -424,4 +424,4 @@ MultiLingualTextBoxComponent.propDecorators = {
|
|
|
424
424
|
options: [{ type: Input }],
|
|
425
425
|
OnChange: [{ type: Output }]
|
|
426
426
|
};
|
|
427
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTXVsdGlMaW5ndWFsVGV4dEJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWNvbnRyb2xzL3NyYy9saWIvY29udHJvbHMvTXVsdGlMaW5ndWFsVGV4dEJveC9NdWx0aUxpbmd1YWxUZXh0Qm94LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekYsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFtQixnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNILE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSx3QkFBd0IsRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOENBQThDLENBQUM7QUFFOUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBTWpFLE1BQU0sT0FBTyw0QkFBNEI7SUFJdkMsWUFBbUIsa0NBQXNELEVBQXNCLGdCQUFrQyxFQUN2SCxjQUE4QixFQUFVLGNBQThCLEVBQVUsU0FBK0IsRUFDL0csd0JBQWtELEVBQVUsY0FBOEI7UUFGakYsdUNBQWtDLEdBQWxDLGtDQUFrQyxDQUFvQjtRQUFzQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ3ZILG1C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WUFFa0MsY0FBYztZQUE5RCxvQkFBb0I7WUFBRSx3QkFBd0I7WUFDOUMsY0FBYzs7O29CQWtCcEIsS0FBSztzQkFDTCxLQUFLO3VCQUNMLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE9wdGlvbmFsLCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgVmFsaWRhdG9ycywgRm9ybUdyb3VwLCBBYnN0cmFjdENvbnRyb2wsIENvbnRyb2xDb250YWluZXIsIEZvcm1Hcm91cERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnMgfSBmcm9tICcuLi8uLi9TaGFyZWQvTW9kZWxzL011bHRpbGluZ3VhbFRleHRCb3hPcHRpb25zJztcclxuaW1wb3J0IHsgSW5wdXRUeXBlIH0gZnJvbSAnLi4vLi4vU2hhcmVkL0VudW1zL0lucHV0VHlwZSc7XHJcbmltcG9ydCB7IEVuZ2xpc2hBcmFiaWNEVE8gfSBmcm9tICcuLi8uLi9TaGFyZWQvTW9kZWxzL0VuZ2xpc2hBcmFiaWNEVE8nO1xyXG5pbXBvcnQgeyBDb250cm9sVXRpbGl0eSB9IGZyb20gJy4uLy4uL1NoYXJlZC9zZXJ2aWNlcy9Db250cm9sVXRpbGl0eSc7XHJcbmltcG9ydCB7IExhbmd1YWdlTW9kZSB9IGZyb20gJy4uLy4uL1NoYXJlZC9FbnVtcy9MYW5ndWFnZU1vZGUnO1xyXG5pbXBvcnQgeyBCQlNGVHJhbnNsYXRlU2VydmljZSwgQ29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLCBVdGlsaXR5U2VydmljZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcbmltcG9ydCB7IEdsb2JhbFNldHRpbmdzIH0gZnJvbSAnLi4vLi4vU2hhcmVkL3NlcnZpY2VzL0dsb2JhbFNldHRpbmdzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvbnRyb2xMYXlvdXQgfSBmcm9tICcuLi8uLi9TaGFyZWQvRW51bXMvQ29udHJvbExheW91dCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ0JCU0YtTXVsdGlMaW5ndWFsVGV4dEJveCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL011bHRpTGluZ3VhbFRleHRCb3guY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNdWx0aUxpbmd1YWxUZXh0Qm94Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgc3RhdGljIGNvbnRyb2xDb250YWluZXJzdGF0aWMgPSBudWxsO1xyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgTXVsdGlMaW5ndWFsVGV4dEJveEZvcm1Db250cm9sSG9zdDogRm9ybUdyb3VwRGlyZWN0aXZlLCBAT3B0aW9uYWwoKSBwcml2YXRlIGNvbnRyb2xDb250YWluZXI6IENvbnRyb2xDb250YWluZXIsXHJcbiAgICBwcml2YXRlIGNvbnRyb2xVdGlsaXR5OiBDb250cm9sVXRpbGl0eSwgcHJpdmF0ZSBVdGlsaXR5U2VydmljZTogVXRpbGl0eVNlcnZpY2UsIHByaXZhdGUgdHJhbnNsYXRlOiBCQlNGVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlOiBDb250cm9sVmFsaWRhdGlvblNlcnZpY2UsIHByaXZhdGUgZ2xvYmFsU2V0dGluZ3M6IEdsb2JhbFNldHRpbmdzKSB7XHJcbiAgICBNdWx0aUxpbmd1YWxUZXh0Qm94Q29tcG9uZW50LmNvbnRyb2xDb250YWluZXJzdGF0aWMgPSB0aGlzLmNvbnRyb2xDb250YWluZXI7XHJcbiAgICB0aGlzLkN1cnJlbnRMYW5ndWFnZSA9IHRyYW5zbGF0ZS5jdXJyZW50TGFuZyAhPSB1bmRlZmluZWQgPyB0cmFuc2xhdGUuY3VycmVudExhbmcgOiB0cmFuc2xhdGUuZGVmYXVsdExhbmdcclxuICB9XHJcbiAgQElucHV0KCkgZ3JvdXA6IEZvcm1Hcm91cDtcclxuICBASW5wdXQoKSBvcHRpb25zOiBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucztcclxuICBAT3V0cHV0KCkgT25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEFyYWJpY0Zvcm1Db250cm9sOiBBYnN0cmFjdENvbnRyb2w7XHJcbiAgRW5nbGlzaEZvcm1Db250cm9sOiBBYnN0cmFjdENvbnRyb2w7XHJcbiAgTXVsdGlGb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sO1xyXG4gIE11bHRpTGFuZ3VhZ2Vncm91cDogRm9ybUdyb3VwO1xyXG4gIEFyYWJpY1dvcmRDb3VudDogbnVtYmVyID0gMDtcclxuICBBcmFiaWNXb3JkQ291bnRBcnJheTogbnVtYmVyID0gMDtcclxuICBFbmdsaXNoV29yZENvdW50OiBudW1iZXIgPSAwO1xyXG4gIEVuZ2xpc2hXb3JkQ291bnRBcnJheTogbnVtYmVyID0gMDtcclxuICBDdXJyZW50TGFuZ3VhZ2U6IHN0cmluZyA9IFwiXCI7XHJcbiAgU2hvd0FyYWJpY1RleHRCb3g6IGJvb2xlYW5cclxuICBTaG93RW5nbGlzaFRleHRCb3g6IGJvb2xlYW5cclxuICBBcmFiaWNWYWxpZGF0aW9uUnVsZXMgPSBbXTtcclxuICBBcmFiaWNWYWxpZGF0aW9uUnVsZXNhc3luYyA9IFtdO1xyXG4gIEVuZ2xpc2hWYWxpZGF0aW9uUnVsZXMgPSBbXTtcclxuICBFbmdsaXNoVmFsaWRhdGlvblJ1bGVzYXN5bmMgPSBbXTtcclxuXHJcbiAgSXNTaG93QXJhYmljV29yZENvdW50OiBib29sZWFuID0gZmFsc2U7XHJcbiAgSXNTaG93RW5nbGlzaFdvcmRDb3VudDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBJc1Nob3dBc3Rlcmlza0luQXJhYmljOiBib29sZWFuID0gZmFsc2U7XHJcbiAgSXNTaG93QXN0ZXJpc2tJbkVuZ2xpc2g6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBtYXJrQWxsQXNUb3VjaGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cclxuICBBcmFiaWNMZXR0ZXJPbmx5OiBzdHJpbmcgPSBcIlwiXHJcbiAgRW5nbGlzaExldHRlck9ubHk6IHN0cmluZyA9IFwiXCJcclxuXHJcbiAgLy9Gb3IgU2hvdyB3YXJuaW5nIG1lc3NhZ2Ugb2YgbWF4IGxlbmd0aCBsaW1pdFxyXG4gIG1pbkNoYXJzTGltaXQ6IG51bWJlciA9IC0xOyAvL1RvIGRpc2FibGUgY2hhcnMgbGltaXQgZmVhdHVyZSBieSBkZWZhdWx0XHJcbiAgZW5nbGlzaEN1cnJlbnRDaGFyc0NvdW50OiBudW1iZXIgPSAwO1xyXG4gIGFyYWJpY0N1cnJlbnRDaGFyc0NvdW50OiBudW1iZXIgPSAwO1xyXG4gIHNob3dFbmdsaXNoQ2hhcnNMaW1pdE1zZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNob3dBcmFiaWNDaGFyc0xpbWl0TXNnOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaGFzRW5nbGlzaENoYXJzTGltaXRWYWxpZGF0aW9uRXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBoYXNBcmFiaWNDaGFyc0xpbWl0VmFsaWRhdGlvbkVycm9yOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZW5nbGlzaENoYXJzTGltaXRNc2dDbGFzczogc3RyaW5nO1xyXG4gIGFyYWJpY0NoYXJzTGltaXRNc2dDbGFzczogc3RyaW5nO1xyXG4gIGVuZ2xpc2hNYXhMaW1pdFdhcm5pbmdNc2c6IHN0cmluZyA9IFwiXCI7XHJcbiAgYXJhYmljTWF4TGltaXRXYXJuaW5nTXNnOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICBnZXRDdXN0b21FcnJvcnNNYXNzYWdlcygpIHtcclxuICAgIHRoaXMuQXJhYmljTGV0dGVyT25seSA9IHRoaXMuVXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFyYWJpY0lzUmVxdWlyZWRBbmRPbmx5NTBDaGFyYWN0ZXJzRW5nbGlzaFwiKTtcclxuICAgIHRoaXMuRW5nbGlzaExldHRlck9ubHkgPSB0aGlzLlV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJFbmdsaXNoTGV0dGVyT25seVwiKTtcclxuXHJcblxyXG4gIH1cclxuICBhc3luYyBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLmlzQ3JlYXRlZEJlZm9yID0gZmFsc2VcclxuICAgIHRoaXMuQ3VycmVudExhbmd1YWdlID0gYXdhaXQgdGhpcy5VdGlsaXR5U2VydmljZS5nZXRDdXJyZW50TGFuZ3VhZ2UoKTtcclxuXHJcbiAgICAvLyB0aGlzLnRyYW5zbGF0ZS5vbkxhbmdDaGFuZ2Uuc3Vic2NyaWJlKChldmVudDogTGFuZ0NoYW5nZUV2ZW50KSA9PiB7XHJcbiAgICAvLyAgIHRoaXMuQ3VycmVudExhbmd1YWdlID0gZXZlbnQubGFuZztcclxuICAgIC8vICAgdGhpcy5zaG93SW5wdXRVc2luZ0xhbmd1YWdlTW9kZSgpXHJcbiAgICAvLyB9KTtcclxuICAgIHRoaXMuTXVsdGlMYW5ndWFnZWdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSk7O1xyXG4gICAgdGhpcy5NdWx0aUxhbmd1YWdlZ3JvdXAuYWRkQ29udHJvbChcIkFyYWJpY1wiLCBuZXcgRm9ybUNvbnRyb2woJycpKTtcclxuICAgIHRoaXMuTXVsdGlMYW5ndWFnZWdyb3VwLmFkZENvbnRyb2woXCJFbmdsaXNoXCIsIG5ldyBGb3JtQ29udHJvbCgnJykpO1xyXG4gICAgdGhpcy5BcmFiaWNGb3JtQ29udHJvbCA9IHRoaXMuTXVsdGlMYW5ndWFnZWdyb3VwLmNvbnRyb2xzW1wiQXJhYmljXCJdOyAvLyAgbmV3IEZvcm1Db250cm9sKCcnLHZhbGlkYXRpb25SdWxlcyk7XHJcbiAgICB0aGlzLkVuZ2xpc2hGb3JtQ29udHJvbCA9IHRoaXMuTXVsdGlMYW5ndWFnZWdyb3VwLmNvbnRyb2xzW1wiRW5nbGlzaFwiXTsgLy8gIG5ldyBGb3JtQ29udHJvbCgnJyx2YWxpZGF0aW9uUnVsZXMpO1xyXG4gICAgdGhpcy5ncm91cC5hZGRDb250cm9sKHRoaXMub3B0aW9ucy5OYW1lLCBuZXcgRm9ybUdyb3VwKHRoaXMuTXVsdGlMYW5ndWFnZWdyb3VwLmNvbnRyb2xzKSk7XHJcbiAgICB0aGlzLmdldEN1c3RvbUVycm9yc01hc3NhZ2VzKClcclxuXHJcbiAgICBpZiAoIXRoaXMub3B0aW9ucy5WaWV3VHlwZSlcclxuICAgICAgdGhpcy5vcHRpb25zLlZpZXdUeXBlID0gdGhpcy5nbG9iYWxTZXR0aW5ncy5WaWV3VHlwZTtcclxuICAgIGlmICghdGhpcy5vcHRpb25zLkxhbmd1YWdlTW9kZSlcclxuICAgICAgdGhpcy5vcHRpb25zLkxhbmd1YWdlTW9kZSA9IHRoaXMuZ2xvYmFsU2V0dGluZ3MuTGFuZ3VhZ2VNb2RlO1xyXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMuTXVsdGlDb250cm9sUGxhY2VtZW50VHlwZSlcclxuICAgICAgdGhpcy5vcHRpb25zLk11bHRpQ29udHJvbFBsYWNlbWVudFR5cGUgPSB0aGlzLmdsb2JhbFNldHRpbmdzLk11bHRpQ29udHJvbFBsYWNlbWVudFR5cGU7XHJcbiAgICBpZiAoIXRoaXMub3B0aW9ucy5NYXhMZW5ndGgpXHJcbiAgICAgIHRoaXMub3B0aW9ucy5NYXhMZW5ndGggPSB0aGlzLmdsb2JhbFNldHRpbmdzLk1heExlbmd0aFRleHRCb3g7XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5MYWJlbEtleSAhPSBudWxsICYmIHRoaXMub3B0aW9ucy5MYWJlbEtleSAhPSBcIlwiKSB7XHJcbiAgICAgIHRoaXMub3B0aW9ucy5BcmFiaWNMYWJlbFZhbHVlID0gdGhpcy5VdGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKHRoaXMub3B0aW9ucy5MYWJlbEtleSkgKyBcIiBcIiArIHRoaXMuVXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkluQXJhYmljXCIpO1xyXG4gICAgICB0aGlzLm9wdGlvbnMuRW5nbGlzaExhYmVsVmFsdWUgPSB0aGlzLlV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUodGhpcy5vcHRpb25zLkxhYmVsS2V5KSArIFwiIFwiICsgdGhpcy5VdGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiSW5FbmdsaXNoXCIpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuQXJhYmljTGFiZWxLZXkgIT0gbnVsbCAmJiB0aGlzLm9wdGlvbnMuQXJhYmljTGFiZWxLZXkgIT0gXCJcIilcclxuICAgICAgICB0aGlzLm9wdGlvbnMuQXJhYmljTGFiZWxWYWx1ZSA9IHRoaXMuVXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSh0aGlzLm9wdGlvbnMuQXJhYmljTGFiZWxLZXkpO1xyXG5cclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5FbmdsaXNoTGFiZWxLZXkgIT0gbnVsbCAmJiB0aGlzLm9wdGlvbnMuRW5nbGlzaExhYmVsS2V5ICE9IFwiXCIpXHJcbiAgICAgICAgdGhpcy5vcHRpb25zLkVuZ2xpc2hMYWJlbFZhbHVlID0gdGhpcy5VdGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKHRoaXMub3B0aW9ucy5FbmdsaXNoTGFiZWxLZXkpO1xyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5DdXN0b21WYWxpZGF0aW9uLmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IFZhbGlkYXRpb25zID0gdGhpcy5vcHRpb25zLkN1c3RvbVZhbGlkYXRpb25cclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IFZhbGlkYXRpb25zLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgIGNvbnN0IFZhbGlkYXRpb24gPSBWYWxpZGF0aW9uc1tpbmRleF07XHJcbiAgICAgICAgdGhpcy5FbmdsaXNoVmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdGlvbi5mdW5jdGlvbkJvZHkpO1xyXG4gICAgICAgIHRoaXMuQXJhYmljVmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdGlvbi5mdW5jdGlvbkJvZHkpO1xyXG5cclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcblxyXG5cclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLk1pbkxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLm1pbkxlbmd0aCh0aGlzLm9wdGlvbnMuTWluTGVuZ3RoKSk7XHJcbiAgICAgIHRoaXMuRW5nbGlzaFZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMubWluTGVuZ3RoKHRoaXMub3B0aW9ucy5NaW5MZW5ndGgpKTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5NYXhMZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuRW5nbGlzaFZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMubWF4TGVuZ3RoKHRoaXMub3B0aW9ucy5NYXhMZW5ndGgpKTtcclxuICAgICAgdGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLm1heExlbmd0aCh0aGlzLm9wdGlvbnMuTWF4TGVuZ3RoKSk7XHJcblxyXG4gICAgICBpZiAoIXRoaXMub3B0aW9ucy5NYXhMZW5ndGhXYXJuaW5nTGltaXQpXHJcbiAgICAgICAgdGhpcy5vcHRpb25zLk1heExlbmd0aFdhcm5pbmdMaW1pdCA9IHRoaXMuZ2xvYmFsU2V0dGluZ3MuTWF4TGVuZ3RoV2FybmluZ0xpbWl0O1xyXG5cclxuICAgICAgdGhpcy5taW5DaGFyc0xpbWl0ID0gdGhpcy5vcHRpb25zLk1heExlbmd0aCAtIHRoaXMub3B0aW9ucy5NYXhMZW5ndGhXYXJuaW5nTGltaXQ7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zaG93SW5wdXRVc2luZ0xhbmd1YWdlTW9kZSgpO1xyXG5cclxuICAgIHRoaXMuQXJhYmljVmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5jb21wb3NlKFtcclxuICAgICAgdGhpcy5jb250cm9sVXRpbGl0eS5hcmFiaWNWYWxpZGF0b3IoeyBBcmFiaWNJc1JlcXVpcmVkQW5kT25seTUwQ2hhcmFjdGVyc0VuZ2xpc2g6IHRoaXMuQXJhYmljTGV0dGVyT25seSB9KSxcclxuXHJcbiAgICBdKSk7XHJcbiAgICB0aGlzLkVuZ2xpc2hWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLmNvbXBvc2UoW1xyXG4gICAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LnBhdHRlcm5WYWxpZGF0b3IoL15bXFx4MDAtXFx4N0ZdKiQvLCB7IEVuZ2xpc2hMZXR0ZXJPbmx5OiB0aGlzLkVuZ2xpc2hMZXR0ZXJPbmx5IH0pLFxyXG5cclxuICAgIF0pKTtcclxuXHJcbiAgICB0aGlzLkFyYWJpY0Zvcm1Db250cm9sLnNldFZhbGlkYXRvcnModGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXMpO1xyXG4gICAgdGhpcy5BcmFiaWNGb3JtQ29udHJvbC5zZXRBc3luY1ZhbGlkYXRvcnModGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXNhc3luYyk7XHJcbiAgICB0aGlzLkVuZ2xpc2hGb3JtQ29udHJvbC5zZXRWYWxpZGF0b3JzKHRoaXMuRW5nbGlzaFZhbGlkYXRpb25SdWxlcyk7XHJcbiAgICB0aGlzLkVuZ2xpc2hGb3JtQ29udHJvbC5zZXRBc3luY1ZhbGlkYXRvcnModGhpcy5FbmdsaXNoVmFsaWRhdGlvblJ1bGVzYXN5bmMpO1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5Jc0Rpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMuRW5nbGlzaEZvcm1Db250cm9sLmRpc2FibGUoKTtcclxuICAgICAgdGhpcy5BcmFiaWNGb3JtQ29udHJvbC5kaXNhYmxlKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLkFyYWJpY0Zvcm1Db250cm9sLnNldFZhbHVlKHRoaXMub3B0aW9ucy5WYWx1ZS5BcmFiaWMpXHJcbiAgICB0aGlzLkVuZ2xpc2hGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLm9wdGlvbnMuVmFsdWUuRW5nbGlzaClcclxuXHJcbiAgICB0aGlzLk11bHRpTGluZ3VhbFRleHRCb3hGb3JtQ29udHJvbEhvc3QubmdTdWJtaXQuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICB0aGlzLmdyb3VwLm1hcmtBbGxBc1RvdWNoZWQoKVxyXG4gICAgICB0aGlzLm1hcmtBbGxBc1RvdWNoZWQgPSB0cnVlXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcblxyXG4gIG9uVGV4dENoYW5nZSgpIHtcclxuICAgIC8vIHRoaXMudHJpbUNvbnRyb2xWYWx1ZSh0eXBlKVxyXG4gICAgbGV0IGFyYWJpY1ZhbHVlID0gXCJcIjtcclxuICAgIGxldCBlbmdsaXNoVmFsdWUgPSBcIlwiO1xyXG4gICAgaWYgKHRoaXMuRW5nbGlzaEZvcm1Db250cm9sLnZhbHVlID09IFwiXCIpIHtcclxuICAgICAgdGhpcy5FbmdsaXNoV29yZENvdW50QXJyYXkgPSAwO1xyXG4gICAgICB0aGlzLkVuZ2xpc2hXb3JkQ291bnQgPSAwO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLkVuZ2xpc2hGb3JtQ29udHJvbC52YWx1ZSAhPSBudWxsICYmIHRoaXMuRW5nbGlzaEZvcm1Db250cm9sLnZhbHVlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHRoaXMuRW5nbGlzaFdvcmRDb3VudEFycmF5ID0gdGhpcy5FbmdsaXNoRm9ybUNvbnRyb2wudmFsdWUuc3BsaXQoXCIgXCIpLmxlbmd0aDtcclxuICAgICAgICBpZiAodGhpcy5FbmdsaXNoV29yZENvdW50QXJyYXkgPiAwKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5FbmdsaXNoV29yZENvdW50QXJyYXkgPiB0aGlzLm9wdGlvbnMuTWF4V29yZENvdW50KSB7XHJcbiAgICAgICAgICAgIHRoaXMuRW5nbGlzaFdvcmRDb3VudCA9IHRoaXMub3B0aW9ucy5NYXhXb3JkQ291bnQ7XHJcbiAgICAgICAgICAgIHRoaXMuTXVsdGlMYW5ndWFnZWdyb3VwLmNvbnRyb2xzW1wiRW5nbGlzaFwiXS5zZXRFcnJvcnMoeyBNYXhXb3JkQ291bnRWYWxpZGF0aW9uS2V5OiB0aGlzLm9wdGlvbnMuTWF4V29yZENvdW50IH0pO1xyXG4gICAgICAgICAgICB0aGlzLk11bHRpTGFuZ3VhZ2Vncm91cC5jb250cm9sc1tcIkVuZ2xpc2hcIl0ubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICAgICAgICB0aGlzLk11bHRpTGFuZ3VhZ2Vncm91cC5jb250cm9sc1tcIkVuZ2xpc2hcIl0uaW52YWxpZDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLkVuZ2xpc2hXb3JkQ291bnQgPSB0aGlzLkVuZ2xpc2hXb3JkQ291bnRBcnJheTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVuZ2xpc2hWYWx1ZSA9IHRoaXMuRW5nbGlzaEZvcm1Db250cm9sLnZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLy9DaGVjayBmb3IgbWF4bGVuZ3RoIGxpbWl0IGNvdW50XHJcbiAgICAgIC8vTWF4TGVuZ3RoIHNob3VsZCBiZSBncmV0YWVyIHRoYW4gb3IgZXF1YWxzIGNoYXJzIGxpbWl0IHNvIHRoYXQgbWluQ2hhcnNMaW1pdCB3b3VsZCBiZSA+PSAwXHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuTWF4TGVuZ3RoICYmIHRoaXMubWluQ2hhcnNMaW1pdCA+PSAwKSB7XHJcbiAgICAgICAgdGhpcy5lbmdsaXNoQ3VycmVudENoYXJzQ291bnQgPSB0aGlzLkVuZ2xpc2hGb3JtQ29udHJvbC52YWx1ZS5sZW5ndGg7XHJcbiAgICAgICAgaWYgKHRoaXMuZW5nbGlzaEN1cnJlbnRDaGFyc0NvdW50ID4gdGhpcy5taW5DaGFyc0xpbWl0KSB7XHJcbiAgICAgICAgICB0aGlzLnNob3dFbmdsaXNoQ2hhcnNMaW1pdE1zZyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmhhc0VuZ2xpc2hDaGFyc0xpbWl0VmFsaWRhdGlvbkVycm9yID0gdHJ1ZTtcclxuICAgICAgICAgIGlmICh0aGlzLmVuZ2xpc2hDdXJyZW50Q2hhcnNDb3VudCA9PSB0aGlzLm9wdGlvbnMuTWF4TGVuZ3RoKVxyXG4gICAgICAgICAgICB0aGlzLmVuZ2xpc2hDaGFyc0xpbWl0TXNnQ2xhc3MgPSBcImRhbmdlclwiO1xyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICB0aGlzLmVuZ2xpc2hDaGFyc0xpbWl0TXNnQ2xhc3MgPSBcIndhcm5pbmdcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNob3dFbmdsaXNoQ2hhcnNMaW1pdE1zZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5oYXNFbmdsaXNoQ2hhcnNMaW1pdFZhbGlkYXRpb25FcnJvciA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgbWF4OiBudW1iZXIgPSB0aGlzLm9wdGlvbnMuTWF4TGVuZ3RoO1xyXG4gICAgICAgIHZhciBjdXJyZW50OiBudW1iZXIgPSB0aGlzLmVuZ2xpc2hDdXJyZW50Q2hhcnNDb3VudDtcclxuXHJcbiAgICAgICAgdmFyIHJlc291cmNlID0gdGhpcy5VdGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTWF4TGVuZ3RoTGltaXRXYXJuaW5nXCIpO1xyXG4gICAgICAgIHRoaXMuZW5nbGlzaE1heExpbWl0V2FybmluZ01zZyA9IGV2YWwoJ2AnICsgcmVzb3VyY2UgKyAnYCcpO1xyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuQXJhYmljRm9ybUNvbnRyb2wudmFsdWUgPT0gXCJcIikge1xyXG4gICAgICB0aGlzLkFyYWJpY1dvcmRDb3VudEFycmF5ID0gMDtcclxuICAgICAgdGhpcy5BcmFiaWNXb3JkQ291bnQgPSAwO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLkFyYWJpY0Zvcm1Db250cm9sLnZhbHVlICE9IG51bGwgJiYgdGhpcy5BcmFiaWNGb3JtQ29udHJvbC52YWx1ZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICB0aGlzLkFyYWJpY1dvcmRDb3VudEFycmF5ID0gdGhpcy5BcmFiaWNGb3JtQ29udHJvbC52YWx1ZS5zcGxpdChcIiBcIikubGVuZ3RoO1xyXG4gICAgICAgIGlmICh0aGlzLkFyYWJpY1dvcmRDb3VudEFycmF5ID4gMCkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuQXJhYmljV29yZENvdW50QXJyYXkgPiB0aGlzLm9wdGlvbnMuTWF4V29yZENvdW50KSB7XHJcbiAgICAgICAgICAgIHRoaXMuQXJhYmljV29yZENvdW50ID0gdGhpcy5vcHRpb25zLk1heFdvcmRDb3VudDtcclxuICAgICAgICAgICAgdGhpcy5NdWx0aUxhbmd1YWdlZ3JvdXAuY29udHJvbHNbXCJBcmFiaWNcIl0uc2V0RXJyb3JzKHsgTWF4V29yZENvdW50VmFsaWRhdGlvbktleTogdGhpcy5vcHRpb25zLk1heFdvcmRDb3VudCB9KTtcclxuICAgICAgICAgICAgdGhpcy5NdWx0aUxhbmd1YWdlZ3JvdXAuY29udHJvbHNbXCJBcmFiaWNcIl0ubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICAgICAgICB0aGlzLk11bHRpTGFuZ3VhZ2Vncm91cC5jb250cm9sc1tcIkFyYWJpY1wiXS5pbnZhbGlkO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuQXJhYmljV29yZENvdW50ID0gdGhpcy5BcmFiaWNXb3JkQ291bnRBcnJheTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGFyYWJpY1ZhbHVlID0gdGhpcy5BcmFiaWNGb3JtQ29udHJvbC52YWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vQ2hlY2sgZm9yIG1heGxlbmd0aCBsaW1pdCBjb3VudFxyXG4gICAgICAvL01heExlbmd0aCBzaG91bGQgYmUgZ3JldGFlciB0aGFuIG9yIGVxdWFscyBjaGFycyBsaW1pdCBzbyB0aGF0IG1pbkNoYXJzTGltaXQgd291bGQgYmUgPj0gMFxyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLk1heExlbmd0aCAmJiB0aGlzLm1pbkNoYXJzTGltaXQgPj0gMCkge1xyXG4gICAgICAgIHRoaXMuYXJhYmljQ3VycmVudENoYXJzQ291bnQgPSB0aGlzLkFyYWJpY0Zvcm1Db250cm9sLnZhbHVlLmxlbmd0aDtcclxuICAgICAgICBpZiAodGhpcy5hcmFiaWNDdXJyZW50Q2hhcnNDb3VudCA+IHRoaXMubWluQ2hhcnNMaW1pdCkge1xyXG4gICAgICAgICAgdGhpcy5zaG93QXJhYmljQ2hhcnNMaW1pdE1zZyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmhhc0FyYWJpY0NoYXJzTGltaXRWYWxpZGF0aW9uRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgICAgaWYgKHRoaXMuYXJhYmljQ3VycmVudENoYXJzQ291bnQgPT0gdGhpcy5vcHRpb25zLk1heExlbmd0aClcclxuICAgICAgICAgICAgdGhpcy5hcmFiaWNDaGFyc0xpbWl0TXNnQ2xhc3MgPSBcImRhbmdlclwiO1xyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICB0aGlzLmFyYWJpY0NoYXJzTGltaXRNc2dDbGFzcyA9IFwid2FybmluZ1wiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc2hvd0FyYWJpY0NoYXJzTGltaXRNc2cgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuaGFzQXJhYmljQ2hhcnNMaW1pdFZhbGlkYXRpb25FcnJvciA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdmFyIG1heDogbnVtYmVyID0gdGhpcy5vcHRpb25zLk1heExlbmd0aDtcclxuICAgICAgICB2YXIgY3VycmVudDogbnVtYmVyID0gdGhpcy5hcmFiaWNDdXJyZW50Q2hhcnNDb3VudDtcclxuXHJcbiAgICAgICAgdmFyIHJlc291cmNlID0gdGhpcy5VdGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTWF4TGVuZ3RoTGltaXRXYXJuaW5nXCIpO1xyXG4gICAgICAgIHRoaXMuYXJhYmljTWF4TGltaXRXYXJuaW5nTXNnID0gZXZhbCgnYCcgKyByZXNvdXJjZSArICdgJyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGxldCBtdWxpdExhbmdNb2RlbCA9IG5ldyBFbmdsaXNoQXJhYmljRFRPKCk7XHJcbiAgICBtdWxpdExhbmdNb2RlbC5BcmFiaWMgPSBhcmFiaWNWYWx1ZTtcclxuICAgIG11bGl0TGFuZ01vZGVsLkVuZ2xpc2ggPSBlbmdsaXNoVmFsdWU7XHJcbiAgICAvLyB0aGlzLkFyYWJpY0Zvcm1Db250cm9sID0gYXJhYmljVmFsdWU7XHJcbiAgICAvLyB0aGlzLkVuZ2xpc2hGb3JtQ29udHJvbCA9IGVuZ2xpc2hWYWx1ZTtcclxuICAgIHRoaXMuT25DaGFuZ2UuZW1pdChtdWxpdExhbmdNb2RlbClcclxuICAgIHRoaXMuZ3JvdXAuZ2V0KHRoaXMub3B0aW9ucy5OYW1lKS5zZXRWYWx1ZShtdWxpdExhbmdNb2RlbCk7XHJcbiAgICAvL1VzZSB0aGlzIGxpbmUgdG8gZW5hYmxlIHR3byB3YXkgYmluZGluZy5cclxuICAgIHRoaXMub3B0aW9ucy5WYWx1ZSA9IG11bGl0TGFuZ01vZGVsO1xyXG4gICAgdGhpcy5NdWx0aUxpbmd1YWxUZXh0Qm94Rm9ybUNvbnRyb2xIb3N0Lm5nU3VibWl0LnN1YnNjcmliZSgodmFsdWUpID0+IHtcclxuICAgICAgdGhpcy5ncm91cC5tYXJrQWxsQXNUb3VjaGVkKClcclxuICAgICAgdGhpcy5tYXJrQWxsQXNUb3VjaGVkID0gdHJ1ZVxyXG4gICAgfSlcclxuICB9XHJcblxyXG5cclxuXHJcbiAgcmVzZXRFcnJvcigpIHtcclxuICAgIHRoaXMuY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLlJlbW92ZUdsb2JhbEVycm9yKCk7XHJcbiAgfVxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgUmVtb3ZlUmVxdWlyZWRWYWxpZGF0aW9uID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5SZW1vdmVSZXF1aXJlZFZhbGlkYXRpb24odGhpcy5BcmFiaWNGb3JtQ29udHJvbCwgdGhpcy5FbmdsaXNoVmFsaWRhdGlvblJ1bGVzLCB0aGlzLm9wdGlvbnMpXHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LlJlbW92ZVJlcXVpcmVkVmFsaWRhdGlvbih0aGlzLkVuZ2xpc2hGb3JtQ29udHJvbCwgdGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXMsIHRoaXMub3B0aW9ucylcclxuICB9XHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICBBZGRSZXF1aXJlZFZhbGlkYXRpb24gPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LkFkZFJlcXVpcmVkVmFsaWRhdGlvbih0aGlzLkFyYWJpY0Zvcm1Db250cm9sLCB0aGlzLkVuZ2xpc2hWYWxpZGF0aW9uUnVsZXMsIHRoaXMub3B0aW9ucylcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuQWRkUmVxdWlyZWRWYWxpZGF0aW9uKHRoaXMuRW5nbGlzaEZvcm1Db250cm9sLCB0aGlzLkFyYWJpY1ZhbGlkYXRpb25SdWxlcywgdGhpcy5vcHRpb25zKVxyXG4gIH1cclxuXHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICBSZW1vdmVDdXN0b21WYWxpZGF0aW9uID0gKEN1c3RvbVZhbGlkYXRpb24pID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuUmVtb3ZlQ3VzdG9tVmFsaWRhdGlvbih0aGlzLkFyYWJpY0Zvcm1Db250cm9sLCB0aGlzLkVuZ2xpc2hWYWxpZGF0aW9uUnVsZXMsIEN1c3RvbVZhbGlkYXRpb24pXHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LlJlbW92ZUN1c3RvbVZhbGlkYXRpb24odGhpcy5FbmdsaXNoRm9ybUNvbnRyb2wsIHRoaXMuQXJhYmljVmFsaWRhdGlvblJ1bGVzLCBDdXN0b21WYWxpZGF0aW9uKVxyXG4gIH1cclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG4gIEFkZEN1c3RvbVZhbGlkYXRpb24gPSAoQ3VzdG9tVmFsaWRhdGlvbikgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5BZGRDdXN0b21WYWxpZGF0aW9uKHRoaXMuQXJhYmljRm9ybUNvbnRyb2wsIHRoaXMuRW5nbGlzaFZhbGlkYXRpb25SdWxlcywgQ3VzdG9tVmFsaWRhdGlvbilcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuQWRkQ3VzdG9tVmFsaWRhdGlvbih0aGlzLkVuZ2xpc2hGb3JtQ29udHJvbCwgdGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXMsIEN1c3RvbVZhbGlkYXRpb24pXHJcbiAgfVxyXG5cclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG4gIElzVmFsaWQgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LklzVmFsaWQodGhpcy5BcmFiaWNGb3JtQ29udHJvbClcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuSXNWYWxpZCh0aGlzLkVuZ2xpc2hGb3JtQ29udHJvbClcclxuICB9XHJcblxyXG4gIHNob3dHbG9iYWxFcnJvcigpIHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuc2hvd0dsb2JhbEVycm9yKClcclxuICB9XHJcblxyXG4gIGdldEVycm9yVmFsaWRhdGlvbihFcnJvckxpc3QpIHtcclxuICAgIGlmICh0aGlzLm1hcmtBbGxBc1RvdWNoZWQgJiYgdGhpcy5ncm91cC5pbnZhbGlkKSB7XHJcbiAgICAgIHRoaXMuc2hvd0dsb2JhbEVycm9yKClcclxuICAgICAgdGhpcy5tYXJrQWxsQXNUb3VjaGVkID0gZmFsc2VcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmNvbnRyb2xVdGlsaXR5LmdldEVycm9yVmFsaWRhdGlvbk1hc3NhZ2UoRXJyb3JMaXN0LCB0aGlzLmdyb3VwLCB0aGlzLm9wdGlvbnMpO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldElucHV0VHlwZSh0eXBlOiBudW1iZXIpIHtcclxuICAgIHJldHVybiBJbnB1dFR5cGVbdHlwZV1cclxuICB9XHJcblxyXG4gIHRyaW1Db250cm9sVmFsdWUodHlwZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCB3aGl0ZXNwYWNlOiBzdHJpbmcgPSAnICc7XHJcbiAgICBpZiAodHlwZSA9PSBcIkVuXCIpIHtcclxuICAgICAgbGV0IG9yaWdpbmFsVmFsdWUgPSB0aGlzLkVuZ2xpc2hGb3JtQ29udHJvbC52YWx1ZTtcclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5QYXRjaEZ1bmN0aW9uICYmIHRoaXMub3B0aW9ucy5QYXRjaFBhdGggJiYgdGhpcy5FbmdsaXNoRm9ybUNvbnRyb2wudmFsaWQpIHtcclxuICAgICAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LnBhdGNoQ29udHJvbFZhbHVlKG9yaWdpbmFsVmFsdWUsIHRoaXMub3B0aW9ucy5QYXRjaEZ1bmN0aW9uLCB0aGlzLm9wdGlvbnMuUGF0Y2hQYXRoKVxyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLkVuZ2xpc2hGb3JtQ29udHJvbC52YWx1ZS5zdGFydHNXaXRoKHdoaXRlc3BhY2UpIHx8IHRoaXMuRW5nbGlzaEZvcm1Db250cm9sLnZhbHVlLmVuZHNXaXRoKHdoaXRlc3BhY2UpKSB7XHJcbiAgICAgICAgdGhpcy5FbmdsaXNoRm9ybUNvbnRyb2wucGF0Y2hWYWx1ZShvcmlnaW5hbFZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHR5cGUgPT0gXCJBclwiKSB7XHJcbiAgICAgIGxldCBvcmlnaW5hbFZhbHVlID0gdGhpcy5BcmFiaWNGb3JtQ29udHJvbC52YWx1ZTtcclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5QYXRjaEZ1bmN0aW9uICYmIHRoaXMub3B0aW9ucy5QYXRjaFBhdGggJiYgdGhpcy5BcmFiaWNGb3JtQ29udHJvbC52YWxpZCkge1xyXG4gICAgICAgIHRoaXMuY29udHJvbFV0aWxpdHkucGF0Y2hDb250cm9sVmFsdWUob3JpZ2luYWxWYWx1ZSwgdGhpcy5vcHRpb25zLlBhdGNoRnVuY3Rpb24sIHRoaXMub3B0aW9ucy5QYXRjaFBhdGgpXHJcblxyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLkFyYWJpY0Zvcm1Db250cm9sLnZhbHVlLnN0YXJ0c1dpdGgod2hpdGVzcGFjZSkgfHwgdGhpcy5BcmFiaWNGb3JtQ29udHJvbC52YWx1ZS5lbmRzV2l0aCh3aGl0ZXNwYWNlKSkge1xyXG4gICAgICAgIHRoaXMuQXJhYmljRm9ybUNvbnRyb2wucGF0Y2hWYWx1ZShvcmlnaW5hbFZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGNvcHlJbnB1dE1lc3NhZ2UoaW5wdXRFbGVtZW50KSB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LkNvcHlJbnB1dE1lc3NhZ2UoaW5wdXRFbGVtZW50KVxyXG4gIH1cclxuXHJcbiAgc2hvd0lucHV0VXNpbmdMYW5ndWFnZU1vZGUoKSB7XHJcbiAgICB0aGlzLkFyYWJpY1ZhbGlkYXRpb25SdWxlcyA9IHRoaXMuQXJhYmljVmFsaWRhdGlvblJ1bGVzLmZpbHRlcihpdGVtID0+IGl0ZW0gIT09IFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgdGhpcy5FbmdsaXNoVmFsaWRhdGlvblJ1bGVzID0gdGhpcy5FbmdsaXNoVmFsaWRhdGlvblJ1bGVzLmZpbHRlcihpdGVtID0+IGl0ZW0gIT09IFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG5cclxuICAgIHRoaXMuQXJhYmljRm9ybUNvbnRyb2wuY2xlYXJWYWxpZGF0b3JzKCk7XHJcbiAgICB0aGlzLkVuZ2xpc2hGb3JtQ29udHJvbC5jbGVhclZhbGlkYXRvcnMoKTtcclxuXHJcbiAgICB0aGlzLkFyYWJpY0Zvcm1Db250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIHRoaXMuRW5nbGlzaEZvcm1Db250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuXHJcbiAgICBzd2l0Y2ggKHRoaXMub3B0aW9ucy5MYW5ndWFnZU1vZGUpIHtcclxuICAgICAgY2FzZSBMYW5ndWFnZU1vZGUuQm90aF9MYW5ndWFnZXNfYXJlX3Zpc2libGU6XHJcbiAgICAgICAgdGhpcy5TaG93QXJhYmljVGV4dEJveCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5TaG93RW5nbGlzaFRleHRCb3ggPSB0cnVlO1xyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuSXNSZXF1aXJlZCA9PSB0cnVlKSB7XHJcbiAgICAgICAgICB0aGlzLkVuZ2xpc2hWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgICAgIHRoaXMuQXJhYmljVmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICAgICAgICB0aGlzLklzU2hvd0FzdGVyaXNrSW5BcmFiaWMgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5Jc1Nob3dBc3Rlcmlza0luRW5nbGlzaCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIExhbmd1YWdlTW9kZS5BcmFiaWNfTGFuZ3VhZ2Vfb25seV9pc192aXNpYmxlOlxyXG4gICAgICAgIHRoaXMuU2hvd0FyYWJpY1RleHRCb3ggPSB0cnVlO1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy5NdWx0aUNvbnRyb2xQbGFjZW1lbnRUeXBlID0gQ29udHJvbExheW91dC5WZXJ0aWNhbDtcclxuXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgTGFuZ3VhZ2VNb2RlLkVuZ2xpc2hfTGFuZ3VhZ2Vfb25seV9pc192aXNpYmxlOlxyXG4gICAgICAgIHRoaXMuU2hvd0VuZ2xpc2hUZXh0Qm94ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm9wdGlvbnMuTXVsdGlDb250cm9sUGxhY2VtZW50VHlwZSA9IENvbnRyb2xMYXlvdXQuVmVydGljYWw7XHJcblxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIExhbmd1YWdlTW9kZS5Cb3RoX0xhbmd1YWdlc19hcmVfdmlzaWJsZV9idXRfb25seV9jdXJyZW50X2xhbmd1YWdlX2lzX3JlcXVpcmVkOlxyXG4gICAgICAgIHRoaXMuU2hvd0FyYWJpY1RleHRCb3ggPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuU2hvd0VuZ2xpc2hUZXh0Qm94ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm9wdGlvbnMuTXVsdGlDb250cm9sUGxhY2VtZW50VHlwZSA9IHRoaXMuZ2xvYmFsU2V0dGluZ3MuTXVsdGlDb250cm9sUGxhY2VtZW50VHlwZVxyXG5cclxuICAgICAgICBpZiAodGhpcy5DdXJyZW50TGFuZ3VhZ2UgPT0gJ2FyJykge1xyXG4gICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5Jc1JlcXVpcmVkID09IHRydWUpIHtcclxuICAgICAgICAgICAgdGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgICAgICAgdGhpcy5Jc1Nob3dBc3Rlcmlza0luQXJhYmljID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLkN1cnJlbnRMYW5ndWFnZSA9PSAnZW4nKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLklzUmVxdWlyZWQgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLkVuZ2xpc2hWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgICAgICAgdGhpcy5Jc1Nob3dBc3Rlcmlza0luRW5nbGlzaCA9IHRydWU7XHJcblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBMYW5ndWFnZU1vZGUuQm90aF9MYW5ndWFnZXNfYnV0X29ubHlfQXJhYmljX2lzX3JlcXVpcmVkOlxyXG4gICAgICAgIHRoaXMuU2hvd0FyYWJpY1RleHRCb3ggPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuU2hvd0VuZ2xpc2hUZXh0Qm94ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm9wdGlvbnMuTXVsdGlDb250cm9sUGxhY2VtZW50VHlwZSA9IHRoaXMuZ2xvYmFsU2V0dGluZ3MuTXVsdGlDb250cm9sUGxhY2VtZW50VHlwZVxyXG5cclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLklzUmVxdWlyZWQgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgdGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgICAgIHRoaXMuSXNTaG93QXN0ZXJpc2tJbkFyYWJpYyA9IHRydWU7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBMYW5ndWFnZU1vZGUuQm90aF9MYW5ndWFnZXNfYnV0X29ubHlfRW5nbGlzaF9pc19yZXF1aXJlZDpcclxuICAgICAgICB0aGlzLlNob3dBcmFiaWNUZXh0Qm94ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLlNob3dFbmdsaXNoVGV4dEJveCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLk11bHRpQ29udHJvbFBsYWNlbWVudFR5cGUgPSB0aGlzLmdsb2JhbFNldHRpbmdzLk11bHRpQ29udHJvbFBsYWNlbWVudFR5cGVcclxuXHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5Jc1JlcXVpcmVkID09IHRydWUpIHtcclxuICAgICAgICAgIHRoaXMuRW5nbGlzaFZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICAgICAgdGhpcy5Jc1Nob3dBc3Rlcmlza0luRW5nbGlzaCA9IHRydWU7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBMYW5ndWFnZU1vZGUuQ3VycmVudF9MYW5ndWFnZV9vbmx5X2lzX3Zpc2libGVfYW5kX3JlcXVpcmVkOlxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5NdWx0aUNvbnRyb2xQbGFjZW1lbnRUeXBlID0gQ29udHJvbExheW91dC5WZXJ0aWNhbDtcclxuICAgICAgICBpZiAodGhpcy5DdXJyZW50TGFuZ3VhZ2UgPT0gJ2FyJykge1xyXG4gICAgICAgICAgdGhpcy5TaG93QXJhYmljVGV4dEJveCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLlNob3dFbmdsaXNoVGV4dEJveCA9IGZhbHNlO1xyXG4gICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5Jc1JlcXVpcmVkID09IHRydWUpIHtcclxuICAgICAgICAgICAgdGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgICAgICAgdGhpcy5Jc1Nob3dBc3Rlcmlza0luQXJhYmljID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLkN1cnJlbnRMYW5ndWFnZSA9PSAnZW4nKSB7XHJcbiAgICAgICAgICB0aGlzLlNob3dBcmFiaWNUZXh0Qm94ID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLlNob3dFbmdsaXNoVGV4dEJveCA9IHRydWU7XHJcbiAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLklzUmVxdWlyZWQgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLkVuZ2xpc2hWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgICAgICAgdGhpcy5Jc1Nob3dBc3Rlcmlza0luRW5nbGlzaCA9IHRydWU7XHJcblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLkFyYWJpY0Zvcm1Db250cm9sLnNldFZhbGlkYXRvcnModGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXMpO1xyXG4gICAgdGhpcy5FbmdsaXNoRm9ybUNvbnRyb2wuc2V0VmFsaWRhdG9ycyh0aGlzLkVuZ2xpc2hWYWxpZGF0aW9uUnVsZXMpO1xyXG4gICAgdGhpcy5BcmFiaWNGb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB0aGlzLkVuZ2xpc2hGb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcblxyXG4gIH1cclxuXHJcbiAgb25BcmFiaWNGb2N1cyhpc0ZvY3VzOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLklzU2hvd0FyYWJpY1dvcmRDb3VudCA9IGlzRm9jdXNcclxuXHJcbiAgICAvL29uRm9jdXNcclxuICAgIGlmIChpc0ZvY3VzKSB7XHJcbiAgICAgIGlmICh0aGlzLmhhc0FyYWJpY0NoYXJzTGltaXRWYWxpZGF0aW9uRXJyb3IpIC8vY2hlY2sgaWYgdGhlcmUgd2FzIHByZXZpb3VzIHZhbGlkYXRpb24gZXJyb3JcclxuICAgICAgICB0aGlzLnNob3dBcmFiaWNDaGFyc0xpbWl0TXNnID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGVsc2UgLy9vbkZvY3VzT3V0XHJcbiAgICAgIHRoaXMuc2hvd0FyYWJpY0NoYXJzTGltaXRNc2cgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIG9uRW5nbGlzaEZvY3VzKGlzRm9jdXM6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuSXNTaG93RW5nbGlzaFdvcmRDb3VudCA9IGlzRm9jdXNcclxuXHJcbiAgICAvL29uRm9jdXNcclxuICAgIGlmIChpc0ZvY3VzKSB7XHJcbiAgICAgIGlmICh0aGlzLmhhc0VuZ2xpc2hDaGFyc0xpbWl0VmFsaWRhdGlvbkVycm9yKSAvL2NoZWNrIGlmIHRoZXJlIHdhcyBwcmV2aW91cyB2YWxpZGF0aW9uIGVycm9yXHJcbiAgICAgICAgdGhpcy5zaG93RW5nbGlzaENoYXJzTGltaXRNc2cgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgZWxzZSAvL29uRm9jdXNPdXRcclxuICAgICAgdGhpcy5zaG93RW5nbGlzaENoYXJzTGltaXRNc2cgPSBmYWxzZTtcclxuICB9XHJcblxyXG5cclxufVxyXG5cclxuIl19
|
|
427
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTXVsdGlMaW5ndWFsVGV4dEJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWNvbnRyb2xzL3NyYy9saWIvY29udHJvbHMvTXVsdGlMaW5ndWFsVGV4dEJveC9NdWx0aUxpbmd1YWxUZXh0Qm94LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekYsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFtQixnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNILE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSx3QkFBd0IsRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOENBQThDLENBQUM7QUFFOUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBTWpFLE1BQU0sT0FBTyw0QkFBNEI7SUFJdkMsWUFBbUIsa0NBQXNELEVBQXNCLGdCQUFrQyxFQUN2SCxjQUE4QixFQUFVLGNBQThCLEVBQVUsU0FBK0IsRUFDL0csd0JBQWtELEVBQVUsY0FBOEI7UUFGakYsdUNBQWtDLEdBQWxDLGtDQUFrQyxDQUFvQjtRQUFzQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ3ZILG1C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WUFFa0MsY0FBYztZQUE5RCxvQkFBb0I7WUFBRSx3QkFBd0I7WUFDOUMsY0FBYzs7O29CQWtCcEIsS0FBSztzQkFDTCxLQUFLO3VCQUNMLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE9wdGlvbmFsLCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgVmFsaWRhdG9ycywgRm9ybUdyb3VwLCBBYnN0cmFjdENvbnRyb2wsIENvbnRyb2xDb250YWluZXIsIEZvcm1Hcm91cERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnMgfSBmcm9tICcuLi8uLi9TaGFyZWQvTW9kZWxzL011bHRpbGluZ3VhbFRleHRCb3hPcHRpb25zJztcclxuaW1wb3J0IHsgSW5wdXRUeXBlIH0gZnJvbSAnLi4vLi4vU2hhcmVkL0VudW1zL0lucHV0VHlwZSc7XHJcbmltcG9ydCB7IEVuZ2xpc2hBcmFiaWNEVE8gfSBmcm9tICcuLi8uLi9TaGFyZWQvTW9kZWxzL0VuZ2xpc2hBcmFiaWNEVE8nO1xyXG5pbXBvcnQgeyBDb250cm9sVXRpbGl0eSB9IGZyb20gJy4uLy4uL1NoYXJlZC9zZXJ2aWNlcy9Db250cm9sVXRpbGl0eSc7XHJcbmltcG9ydCB7IExhbmd1YWdlTW9kZSB9IGZyb20gJy4uLy4uL1NoYXJlZC9FbnVtcy9MYW5ndWFnZU1vZGUnO1xyXG5pbXBvcnQgeyBCQlNGVHJhbnNsYXRlU2VydmljZSwgQ29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLCBVdGlsaXR5U2VydmljZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcbmltcG9ydCB7IEdsb2JhbFNldHRpbmdzIH0gZnJvbSAnLi4vLi4vU2hhcmVkL3NlcnZpY2VzL0dsb2JhbFNldHRpbmdzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvbnRyb2xMYXlvdXQgfSBmcm9tICcuLi8uLi9TaGFyZWQvRW51bXMvQ29udHJvbExheW91dCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ0JCU0YtTXVsdGlMaW5ndWFsVGV4dEJveCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL011bHRpTGluZ3VhbFRleHRCb3guY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNdWx0aUxpbmd1YWxUZXh0Qm94Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgc3RhdGljIGNvbnRyb2xDb250YWluZXJzdGF0aWMgPSBudWxsO1xyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgTXVsdGlMaW5ndWFsVGV4dEJveEZvcm1Db250cm9sSG9zdDogRm9ybUdyb3VwRGlyZWN0aXZlLCBAT3B0aW9uYWwoKSBwcml2YXRlIGNvbnRyb2xDb250YWluZXI6IENvbnRyb2xDb250YWluZXIsXHJcbiAgICBwcml2YXRlIGNvbnRyb2xVdGlsaXR5OiBDb250cm9sVXRpbGl0eSwgcHJpdmF0ZSBVdGlsaXR5U2VydmljZTogVXRpbGl0eVNlcnZpY2UsIHByaXZhdGUgdHJhbnNsYXRlOiBCQlNGVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlOiBDb250cm9sVmFsaWRhdGlvblNlcnZpY2UsIHByaXZhdGUgZ2xvYmFsU2V0dGluZ3M6IEdsb2JhbFNldHRpbmdzKSB7XHJcbiAgICBNdWx0aUxpbmd1YWxUZXh0Qm94Q29tcG9uZW50LmNvbnRyb2xDb250YWluZXJzdGF0aWMgPSB0aGlzLmNvbnRyb2xDb250YWluZXI7XHJcbiAgICB0aGlzLkN1cnJlbnRMYW5ndWFnZSA9IHRyYW5zbGF0ZS5jdXJyZW50TGFuZyAhPSB1bmRlZmluZWQgPyB0cmFuc2xhdGUuY3VycmVudExhbmcgOiB0cmFuc2xhdGUuZGVmYXVsdExhbmdcclxuICB9XHJcbiAgQElucHV0KCkgZ3JvdXA6IEZvcm1Hcm91cDtcclxuICBASW5wdXQoKSBvcHRpb25zOiBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucztcclxuICBAT3V0cHV0KCkgT25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEFyYWJpY0Zvcm1Db250cm9sOiBBYnN0cmFjdENvbnRyb2w7XHJcbiAgRW5nbGlzaEZvcm1Db250cm9sOiBBYnN0cmFjdENvbnRyb2w7XHJcbiAgTXVsdGlGb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sO1xyXG4gIE11bHRpTGFuZ3VhZ2Vncm91cDogRm9ybUdyb3VwO1xyXG4gIEFyYWJpY1dvcmRDb3VudDogbnVtYmVyID0gMDtcclxuICBBcmFiaWNXb3JkQ291bnRBcnJheTogbnVtYmVyID0gMDtcclxuICBFbmdsaXNoV29yZENvdW50OiBudW1iZXIgPSAwO1xyXG4gIEVuZ2xpc2hXb3JkQ291bnRBcnJheTogbnVtYmVyID0gMDtcclxuICBDdXJyZW50TGFuZ3VhZ2U6IHN0cmluZyA9IFwiXCI7XHJcbiAgU2hvd0FyYWJpY1RleHRCb3g6IGJvb2xlYW5cclxuICBTaG93RW5nbGlzaFRleHRCb3g6IGJvb2xlYW5cclxuICBBcmFiaWNWYWxpZGF0aW9uUnVsZXMgPSBbXTtcclxuICBBcmFiaWNWYWxpZGF0aW9uUnVsZXNhc3luYyA9IFtdO1xyXG4gIEVuZ2xpc2hWYWxpZGF0aW9uUnVsZXMgPSBbXTtcclxuICBFbmdsaXNoVmFsaWRhdGlvblJ1bGVzYXN5bmMgPSBbXTtcclxuXHJcbiAgSXNTaG93QXJhYmljV29yZENvdW50OiBib29sZWFuID0gZmFsc2U7XHJcbiAgSXNTaG93RW5nbGlzaFdvcmRDb3VudDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBJc1Nob3dBc3Rlcmlza0luQXJhYmljOiBib29sZWFuID0gZmFsc2U7XHJcbiAgSXNTaG93QXN0ZXJpc2tJbkVuZ2xpc2g6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBtYXJrQWxsQXNUb3VjaGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cclxuICBBcmFiaWNMZXR0ZXJPbmx5OiBzdHJpbmcgPSBcIlwiXHJcbiAgRW5nbGlzaExldHRlck9ubHk6IHN0cmluZyA9IFwiXCJcclxuXHJcbiAgLy9Gb3IgU2hvdyB3YXJuaW5nIG1lc3NhZ2Ugb2YgbWF4IGxlbmd0aCBsaW1pdFxyXG4gIG1pbkNoYXJzTGltaXQ6IG51bWJlciA9IC0xOyAvL1RvIGRpc2FibGUgY2hhcnMgbGltaXQgZmVhdHVyZSBieSBkZWZhdWx0XHJcbiAgZW5nbGlzaEN1cnJlbnRDaGFyc0NvdW50OiBudW1iZXIgPSAwO1xyXG4gIGFyYWJpY0N1cnJlbnRDaGFyc0NvdW50OiBudW1iZXIgPSAwO1xyXG4gIHNob3dFbmdsaXNoQ2hhcnNMaW1pdE1zZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNob3dBcmFiaWNDaGFyc0xpbWl0TXNnOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaGFzRW5nbGlzaENoYXJzTGltaXRWYWxpZGF0aW9uRXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBoYXNBcmFiaWNDaGFyc0xpbWl0VmFsaWRhdGlvbkVycm9yOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZW5nbGlzaENoYXJzTGltaXRNc2dDbGFzczogc3RyaW5nO1xyXG4gIGFyYWJpY0NoYXJzTGltaXRNc2dDbGFzczogc3RyaW5nO1xyXG4gIGVuZ2xpc2hNYXhMaW1pdFdhcm5pbmdNc2c6IHN0cmluZyA9IFwiXCI7XHJcbiAgYXJhYmljTWF4TGltaXRXYXJuaW5nTXNnOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICBnZXRDdXN0b21FcnJvcnNNYXNzYWdlcygpIHtcclxuICAgIHRoaXMuQXJhYmljTGV0dGVyT25seSA9IHRoaXMuVXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFyYWJpY0lzUmVxdWlyZWRBbmRPbmx5NTBDaGFyYWN0ZXJzRW5nbGlzaFwiKTtcclxuICAgIHRoaXMuRW5nbGlzaExldHRlck9ubHkgPSB0aGlzLlV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJFbmdsaXNoTGV0dGVyT25seVwiKTtcclxuXHJcblxyXG4gIH1cclxuICBhc3luYyBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLmlzQ3JlYXRlZEJlZm9yID0gZmFsc2VcclxuICAgIHRoaXMuQ3VycmVudExhbmd1YWdlID0gYXdhaXQgdGhpcy5VdGlsaXR5U2VydmljZS5nZXRDdXJyZW50TGFuZ3VhZ2UoKTtcclxuXHJcbiAgICAvLyB0aGlzLnRyYW5zbGF0ZS5vbkxhbmdDaGFuZ2Uuc3Vic2NyaWJlKChldmVudDogTGFuZ0NoYW5nZUV2ZW50KSA9PiB7XHJcbiAgICAvLyAgIHRoaXMuQ3VycmVudExhbmd1YWdlID0gZXZlbnQubGFuZztcclxuICAgIC8vICAgdGhpcy5zaG93SW5wdXRVc2luZ0xhbmd1YWdlTW9kZSgpXHJcbiAgICAvLyB9KTtcclxuICAgIHRoaXMuTXVsdGlMYW5ndWFnZWdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSk7O1xyXG4gICAgdGhpcy5NdWx0aUxhbmd1YWdlZ3JvdXAuYWRkQ29udHJvbChcIkFyYWJpY1wiLCBuZXcgRm9ybUNvbnRyb2woJycpKTtcclxuICAgIHRoaXMuTXVsdGlMYW5ndWFnZWdyb3VwLmFkZENvbnRyb2woXCJFbmdsaXNoXCIsIG5ldyBGb3JtQ29udHJvbCgnJykpO1xyXG4gICAgdGhpcy5BcmFiaWNGb3JtQ29udHJvbCA9IHRoaXMuTXVsdGlMYW5ndWFnZWdyb3VwLmNvbnRyb2xzW1wiQXJhYmljXCJdOyAvLyAgbmV3IEZvcm1Db250cm9sKCcnLHZhbGlkYXRpb25SdWxlcyk7XHJcbiAgICB0aGlzLkVuZ2xpc2hGb3JtQ29udHJvbCA9IHRoaXMuTXVsdGlMYW5ndWFnZWdyb3VwLmNvbnRyb2xzW1wiRW5nbGlzaFwiXTsgLy8gIG5ldyBGb3JtQ29udHJvbCgnJyx2YWxpZGF0aW9uUnVsZXMpO1xyXG4gICAgdGhpcy5ncm91cC5hZGRDb250cm9sKHRoaXMub3B0aW9ucy5OYW1lLCBuZXcgRm9ybUdyb3VwKHRoaXMuTXVsdGlMYW5ndWFnZWdyb3VwLmNvbnRyb2xzKSk7XHJcbiAgICB0aGlzLmdldEN1c3RvbUVycm9yc01hc3NhZ2VzKClcclxuXHJcbiAgICBpZiAoIXRoaXMub3B0aW9ucy5WaWV3VHlwZSlcclxuICAgICAgdGhpcy5vcHRpb25zLlZpZXdUeXBlID0gdGhpcy5nbG9iYWxTZXR0aW5ncy5WaWV3VHlwZTtcclxuICAgIGlmICghdGhpcy5vcHRpb25zLkxhbmd1YWdlTW9kZSlcclxuICAgICAgdGhpcy5vcHRpb25zLkxhbmd1YWdlTW9kZSA9IHRoaXMuZ2xvYmFsU2V0dGluZ3MuTGFuZ3VhZ2VNb2RlO1xyXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMuTXVsdGlDb250cm9sUGxhY2VtZW50VHlwZSlcclxuICAgICAgdGhpcy5vcHRpb25zLk11bHRpQ29udHJvbFBsYWNlbWVudFR5cGUgPSB0aGlzLmdsb2JhbFNldHRpbmdzLk11bHRpQ29udHJvbFBsYWNlbWVudFR5cGU7XHJcbiAgICBpZiAoIXRoaXMub3B0aW9ucy5NYXhMZW5ndGgpXHJcbiAgICAgIHRoaXMub3B0aW9ucy5NYXhMZW5ndGggPSB0aGlzLmdsb2JhbFNldHRpbmdzLk1heExlbmd0aFRleHRCb3g7XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5MYWJlbEtleSAhPSBudWxsICYmIHRoaXMub3B0aW9ucy5MYWJlbEtleSAhPSBcIlwiKSB7XHJcbiAgICAgIHRoaXMub3B0aW9ucy5BcmFiaWNMYWJlbFZhbHVlID0gdGhpcy5VdGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKHRoaXMub3B0aW9ucy5MYWJlbEtleSkgKyBcIiBcIiArIHRoaXMuVXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkluQXJhYmljXCIpO1xyXG4gICAgICB0aGlzLm9wdGlvbnMuRW5nbGlzaExhYmVsVmFsdWUgPSB0aGlzLlV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUodGhpcy5vcHRpb25zLkxhYmVsS2V5KSArIFwiIFwiICsgdGhpcy5VdGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiSW5FbmdsaXNoXCIpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuQXJhYmljTGFiZWxLZXkgIT0gbnVsbCAmJiB0aGlzLm9wdGlvbnMuQXJhYmljTGFiZWxLZXkgIT0gXCJcIilcclxuICAgICAgICB0aGlzLm9wdGlvbnMuQXJhYmljTGFiZWxWYWx1ZSA9IHRoaXMuVXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSh0aGlzLm9wdGlvbnMuQXJhYmljTGFiZWxLZXkpO1xyXG5cclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5FbmdsaXNoTGFiZWxLZXkgIT0gbnVsbCAmJiB0aGlzLm9wdGlvbnMuRW5nbGlzaExhYmVsS2V5ICE9IFwiXCIpXHJcbiAgICAgICAgdGhpcy5vcHRpb25zLkVuZ2xpc2hMYWJlbFZhbHVlID0gdGhpcy5VdGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKHRoaXMub3B0aW9ucy5FbmdsaXNoTGFiZWxLZXkpO1xyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5DdXN0b21WYWxpZGF0aW9uLmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IFZhbGlkYXRpb25zID0gdGhpcy5vcHRpb25zLkN1c3RvbVZhbGlkYXRpb25cclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IFZhbGlkYXRpb25zLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgIGNvbnN0IFZhbGlkYXRpb24gPSBWYWxpZGF0aW9uc1tpbmRleF07XHJcbiAgICAgICAgdGhpcy5FbmdsaXNoVmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdGlvbi5mdW5jdGlvbkJvZHkpO1xyXG4gICAgICAgIHRoaXMuQXJhYmljVmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdGlvbi5mdW5jdGlvbkJvZHkpO1xyXG5cclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcblxyXG5cclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLk1pbkxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLm1pbkxlbmd0aCh0aGlzLm9wdGlvbnMuTWluTGVuZ3RoKSk7XHJcbiAgICAgIHRoaXMuRW5nbGlzaFZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMubWluTGVuZ3RoKHRoaXMub3B0aW9ucy5NaW5MZW5ndGgpKTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5NYXhMZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuRW5nbGlzaFZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMubWF4TGVuZ3RoKHRoaXMub3B0aW9ucy5NYXhMZW5ndGgpKTtcclxuICAgICAgdGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLm1heExlbmd0aCh0aGlzLm9wdGlvbnMuTWF4TGVuZ3RoKSk7XHJcblxyXG4gICAgICBpZiAoIXRoaXMub3B0aW9ucy5NYXhMZW5ndGhXYXJuaW5nTGltaXQpXHJcbiAgICAgICAgdGhpcy5vcHRpb25zLk1heExlbmd0aFdhcm5pbmdMaW1pdCA9IHRoaXMuZ2xvYmFsU2V0dGluZ3MuTWF4TGVuZ3RoV2FybmluZ0xpbWl0O1xyXG5cclxuICAgICAgdGhpcy5taW5DaGFyc0xpbWl0ID0gdGhpcy5vcHRpb25zLk1heExlbmd0aCAtIHRoaXMub3B0aW9ucy5NYXhMZW5ndGhXYXJuaW5nTGltaXQ7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zaG93SW5wdXRVc2luZ0xhbmd1YWdlTW9kZSgpO1xyXG5cclxuICAgIHRoaXMuQXJhYmljVmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5jb21wb3NlKFtcclxuICAgICAgdGhpcy5jb250cm9sVXRpbGl0eS5hcmFiaWNWYWxpZGF0b3IoeyBBcmFiaWNJc1JlcXVpcmVkQW5kT25seTUwQ2hhcmFjdGVyc0VuZ2xpc2g6IHRoaXMuQXJhYmljTGV0dGVyT25seSB9KSxcclxuXHJcbiAgICBdKSk7XHJcbiAgICB0aGlzLkVuZ2xpc2hWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLmNvbXBvc2UoW1xyXG4gICAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LnBhdHRlcm5WYWxpZGF0b3IoL15bXFx4MDAtXFx4N0ZdKiQvLCB7IEVuZ2xpc2hMZXR0ZXJPbmx5OiB0aGlzLkVuZ2xpc2hMZXR0ZXJPbmx5IH0pLFxyXG5cclxuICAgIF0pKTtcclxuXHJcbiAgICB0aGlzLkFyYWJpY0Zvcm1Db250cm9sLnNldFZhbGlkYXRvcnModGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXMpO1xyXG4gICAgdGhpcy5BcmFiaWNGb3JtQ29udHJvbC5zZXRBc3luY1ZhbGlkYXRvcnModGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXNhc3luYyk7XHJcbiAgICB0aGlzLkVuZ2xpc2hGb3JtQ29udHJvbC5zZXRWYWxpZGF0b3JzKHRoaXMuRW5nbGlzaFZhbGlkYXRpb25SdWxlcyk7XHJcbiAgICB0aGlzLkVuZ2xpc2hGb3JtQ29udHJvbC5zZXRBc3luY1ZhbGlkYXRvcnModGhpcy5FbmdsaXNoVmFsaWRhdGlvblJ1bGVzYXN5bmMpO1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5Jc0Rpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMuRW5nbGlzaEZvcm1Db250cm9sLmRpc2FibGUoKTtcclxuICAgICAgdGhpcy5BcmFiaWNGb3JtQ29udHJvbC5kaXNhYmxlKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLkFyYWJpY0Zvcm1Db250cm9sLnNldFZhbHVlKHRoaXMub3B0aW9ucy5WYWx1ZS5BcmFiaWMpXHJcbiAgICB0aGlzLkVuZ2xpc2hGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLm9wdGlvbnMuVmFsdWUuRW5nbGlzaClcclxuXHJcbiAgICB0aGlzLk11bHRpTGluZ3VhbFRleHRCb3hGb3JtQ29udHJvbEhvc3QubmdTdWJtaXQuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICB0aGlzLmdyb3VwLm1hcmtBbGxBc1RvdWNoZWQoKVxyXG4gICAgICB0aGlzLm1hcmtBbGxBc1RvdWNoZWQgPSB0cnVlXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcblxyXG4gIG9uVGV4dENoYW5nZSgpIHtcclxuICAgIC8vIHRoaXMudHJpbUNvbnRyb2xWYWx1ZSh0eXBlKVxyXG4gICAgbGV0IGFyYWJpY1ZhbHVlID0gXCJcIjtcclxuICAgIGxldCBlbmdsaXNoVmFsdWUgPSBcIlwiO1xyXG4gICAgaWYgKHRoaXMuRW5nbGlzaEZvcm1Db250cm9sLnZhbHVlID09IFwiXCIpIHtcclxuICAgICAgdGhpcy5FbmdsaXNoV29yZENvdW50QXJyYXkgPSAwO1xyXG4gICAgICB0aGlzLkVuZ2xpc2hXb3JkQ291bnQgPSAwO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLkVuZ2xpc2hGb3JtQ29udHJvbC52YWx1ZSAhPSBudWxsICYmIHRoaXMuRW5nbGlzaEZvcm1Db250cm9sLnZhbHVlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHRoaXMuRW5nbGlzaFdvcmRDb3VudEFycmF5ID0gdGhpcy5FbmdsaXNoRm9ybUNvbnRyb2wudmFsdWUuc3BsaXQoXCIgXCIpLmxlbmd0aDtcclxuICAgICAgICBpZiAodGhpcy5FbmdsaXNoV29yZENvdW50QXJyYXkgPiAwKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5FbmdsaXNoV29yZENvdW50QXJyYXkgPiB0aGlzLm9wdGlvbnMuTWF4V29yZENvdW50KSB7XHJcbiAgICAgICAgICAgIHRoaXMuRW5nbGlzaFdvcmRDb3VudCA9IHRoaXMub3B0aW9ucy5NYXhXb3JkQ291bnQ7XHJcbiAgICAgICAgICAgIHRoaXMuTXVsdGlMYW5ndWFnZWdyb3VwLmNvbnRyb2xzW1wiRW5nbGlzaFwiXS5zZXRFcnJvcnMoeyBNYXhXb3JkQ291bnRWYWxpZGF0aW9uS2V5OiB0aGlzLm9wdGlvbnMuTWF4V29yZENvdW50IH0pO1xyXG4gICAgICAgICAgICB0aGlzLk11bHRpTGFuZ3VhZ2Vncm91cC5jb250cm9sc1tcIkVuZ2xpc2hcIl0ubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICAgICAgICB0aGlzLk11bHRpTGFuZ3VhZ2Vncm91cC5jb250cm9sc1tcIkVuZ2xpc2hcIl0uaW52YWxpZDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLkVuZ2xpc2hXb3JkQ291bnQgPSB0aGlzLkVuZ2xpc2hXb3JkQ291bnRBcnJheTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVuZ2xpc2hWYWx1ZSA9IHRoaXMuRW5nbGlzaEZvcm1Db250cm9sLnZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLy9DaGVjayBmb3IgbWF4bGVuZ3RoIGxpbWl0IGNvdW50XHJcbiAgICAgIC8vTWF4TGVuZ3RoIHNob3VsZCBiZSBncmV0YWVyIHRoYW4gb3IgZXF1YWxzIGNoYXJzIGxpbWl0IHNvIHRoYXQgbWluQ2hhcnNMaW1pdCB3b3VsZCBiZSA+PSAwXHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuTWF4TGVuZ3RoICYmIHRoaXMubWluQ2hhcnNMaW1pdCA+PSAwKSB7XHJcbiAgICAgICAgdGhpcy5lbmdsaXNoQ3VycmVudENoYXJzQ291bnQgPSB0aGlzLkVuZ2xpc2hGb3JtQ29udHJvbC52YWx1ZS5sZW5ndGg7XHJcbiAgICAgICAgaWYgKHRoaXMuZW5nbGlzaEN1cnJlbnRDaGFyc0NvdW50ID4gdGhpcy5taW5DaGFyc0xpbWl0KSB7XHJcbiAgICAgICAgICB0aGlzLnNob3dFbmdsaXNoQ2hhcnNMaW1pdE1zZyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmhhc0VuZ2xpc2hDaGFyc0xpbWl0VmFsaWRhdGlvbkVycm9yID0gdHJ1ZTtcclxuICAgICAgICAgIGlmICh0aGlzLmVuZ2xpc2hDdXJyZW50Q2hhcnNDb3VudCA9PSB0aGlzLm9wdGlvbnMuTWF4TGVuZ3RoKVxyXG4gICAgICAgICAgICB0aGlzLmVuZ2xpc2hDaGFyc0xpbWl0TXNnQ2xhc3MgPSBcImRhbmdlclwiO1xyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICB0aGlzLmVuZ2xpc2hDaGFyc0xpbWl0TXNnQ2xhc3MgPSBcIndhcm5pbmdcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNob3dFbmdsaXNoQ2hhcnNMaW1pdE1zZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5oYXNFbmdsaXNoQ2hhcnNMaW1pdFZhbGlkYXRpb25FcnJvciA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgbWF4OiBudW1iZXIgPSB0aGlzLm9wdGlvbnMuTWF4TGVuZ3RoO1xyXG4gICAgICAgIHZhciBjdXJyZW50OiBudW1iZXIgPSB0aGlzLmVuZ2xpc2hDdXJyZW50Q2hhcnNDb3VudDtcclxuXHJcbiAgICAgICAgdmFyIHJlc291cmNlID0gdGhpcy5VdGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTWF4TGVuZ3RoTGltaXRXYXJuaW5nXCIpO1xyXG4gICAgICAgIHRoaXMuZW5nbGlzaE1heExpbWl0V2FybmluZ01zZyA9IGV2YWwoJ2AnICsgcmVzb3VyY2UgKyAnYCcpO1xyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuQXJhYmljRm9ybUNvbnRyb2wudmFsdWUgPT0gXCJcIikge1xyXG4gICAgICB0aGlzLkFyYWJpY1dvcmRDb3VudEFycmF5ID0gMDtcclxuICAgICAgdGhpcy5BcmFiaWNXb3JkQ291bnQgPSAwO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLkFyYWJpY0Zvcm1Db250cm9sLnZhbHVlICE9IG51bGwgJiYgdGhpcy5BcmFiaWNGb3JtQ29udHJvbC52YWx1ZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICB0aGlzLkFyYWJpY1dvcmRDb3VudEFycmF5ID0gdGhpcy5BcmFiaWNGb3JtQ29udHJvbC52YWx1ZS5zcGxpdChcIiBcIikubGVuZ3RoO1xyXG4gICAgICAgIGlmICh0aGlzLkFyYWJpY1dvcmRDb3VudEFycmF5ID4gMCkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuQXJhYmljV29yZENvdW50QXJyYXkgPiB0aGlzLm9wdGlvbnMuTWF4V29yZENvdW50KSB7XHJcbiAgICAgICAgICAgIHRoaXMuQXJhYmljV29yZENvdW50ID0gdGhpcy5vcHRpb25zLk1heFdvcmRDb3VudDtcclxuICAgICAgICAgICAgdGhpcy5NdWx0aUxhbmd1YWdlZ3JvdXAuY29udHJvbHNbXCJBcmFiaWNcIl0uc2V0RXJyb3JzKHsgTWF4V29yZENvdW50VmFsaWRhdGlvbktleTogdGhpcy5vcHRpb25zLk1heFdvcmRDb3VudCB9KTtcclxuICAgICAgICAgICAgdGhpcy5NdWx0aUxhbmd1YWdlZ3JvdXAuY29udHJvbHNbXCJBcmFiaWNcIl0ubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICAgICAgICB0aGlzLk11bHRpTGFuZ3VhZ2Vncm91cC5jb250cm9sc1tcIkFyYWJpY1wiXS5pbnZhbGlkO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuQXJhYmljV29yZENvdW50ID0gdGhpcy5BcmFiaWNXb3JkQ291bnRBcnJheTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGFyYWJpY1ZhbHVlID0gdGhpcy5BcmFiaWNGb3JtQ29udHJvbC52YWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vQ2hlY2sgZm9yIG1heGxlbmd0aCBsaW1pdCBjb3VudFxyXG4gICAgICAvL01heExlbmd0aCBzaG91bGQgYmUgZ3JldGFlciB0aGFuIG9yIGVxdWFscyBjaGFycyBsaW1pdCBzbyB0aGF0IG1pbkNoYXJzTGltaXQgd291bGQgYmUgPj0gMFxyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLk1heExlbmd0aCAmJiB0aGlzLm1pbkNoYXJzTGltaXQgPj0gMCkge1xyXG4gICAgICAgIHRoaXMuYXJhYmljQ3VycmVudENoYXJzQ291bnQgPSB0aGlzLkFyYWJpY0Zvcm1Db250cm9sLnZhbHVlLmxlbmd0aDtcclxuICAgICAgICBpZiAodGhpcy5hcmFiaWNDdXJyZW50Q2hhcnNDb3VudCA+IHRoaXMubWluQ2hhcnNMaW1pdCkge1xyXG4gICAgICAgICAgdGhpcy5zaG93QXJhYmljQ2hhcnNMaW1pdE1zZyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmhhc0FyYWJpY0NoYXJzTGltaXRWYWxpZGF0aW9uRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgICAgaWYgKHRoaXMuYXJhYmljQ3VycmVudENoYXJzQ291bnQgPT0gdGhpcy5vcHRpb25zLk1heExlbmd0aClcclxuICAgICAgICAgICAgdGhpcy5hcmFiaWNDaGFyc0xpbWl0TXNnQ2xhc3MgPSBcImRhbmdlclwiO1xyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICB0aGlzLmFyYWJpY0NoYXJzTGltaXRNc2dDbGFzcyA9IFwid2FybmluZ1wiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc2hvd0FyYWJpY0NoYXJzTGltaXRNc2cgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuaGFzQXJhYmljQ2hhcnNMaW1pdFZhbGlkYXRpb25FcnJvciA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdmFyIG1heDogbnVtYmVyID0gdGhpcy5vcHRpb25zLk1heExlbmd0aDtcclxuICAgICAgICB2YXIgY3VycmVudDogbnVtYmVyID0gdGhpcy5hcmFiaWNDdXJyZW50Q2hhcnNDb3VudDtcclxuXHJcbiAgICAgICAgdmFyIHJlc291cmNlID0gdGhpcy5VdGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTWF4TGVuZ3RoTGltaXRXYXJuaW5nXCIpO1xyXG4gICAgICAgIHRoaXMuYXJhYmljTWF4TGltaXRXYXJuaW5nTXNnID0gZXZhbCgnYCcgKyByZXNvdXJjZSArICdgJyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGxldCBtdWxpdExhbmdNb2RlbCA9IG5ldyBFbmdsaXNoQXJhYmljRFRPKCk7XHJcbiAgICBtdWxpdExhbmdNb2RlbC5BcmFiaWMgPSBhcmFiaWNWYWx1ZTtcclxuICAgIG11bGl0TGFuZ01vZGVsLkVuZ2xpc2ggPSBlbmdsaXNoVmFsdWU7XHJcbiAgICAvLyB0aGlzLkFyYWJpY0Zvcm1Db250cm9sID0gYXJhYmljVmFsdWU7XHJcbiAgICAvLyB0aGlzLkVuZ2xpc2hGb3JtQ29udHJvbCA9IGVuZ2xpc2hWYWx1ZTtcclxuICAgIHRoaXMuT25DaGFuZ2UuZW1pdChtdWxpdExhbmdNb2RlbClcclxuICAgIHRoaXMuZ3JvdXAuZ2V0KHRoaXMub3B0aW9ucy5OYW1lKS5zZXRWYWx1ZShtdWxpdExhbmdNb2RlbCk7XHJcbiAgICAvL1VzZSB0aGlzIGxpbmUgdG8gZW5hYmxlIHR3byB3YXkgYmluZGluZy5cclxuICAgIHRoaXMub3B0aW9ucy5WYWx1ZSA9IG11bGl0TGFuZ01vZGVsO1xyXG4gICAgdGhpcy5NdWx0aUxpbmd1YWxUZXh0Qm94Rm9ybUNvbnRyb2xIb3N0Lm5nU3VibWl0LnN1YnNjcmliZSgodmFsdWUpID0+IHtcclxuICAgICAgdGhpcy5ncm91cC5tYXJrQWxsQXNUb3VjaGVkKClcclxuICAgICAgdGhpcy5tYXJrQWxsQXNUb3VjaGVkID0gdHJ1ZVxyXG4gICAgfSlcclxuICB9XHJcblxyXG5cclxuXHJcbiAgcmVzZXRFcnJvcigpIHtcclxuICAgIHRoaXMuY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLlJlbW92ZUdsb2JhbEVycm9yKCk7XHJcbiAgfVxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgUmVtb3ZlUmVxdWlyZWRWYWxpZGF0aW9uID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5SZW1vdmVSZXF1aXJlZFZhbGlkYXRpb24odGhpcy5BcmFiaWNGb3JtQ29udHJvbCwgdGhpcy5FbmdsaXNoVmFsaWRhdGlvblJ1bGVzLCB0aGlzLm9wdGlvbnMpXHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LlJlbW92ZVJlcXVpcmVkVmFsaWRhdGlvbih0aGlzLkVuZ2xpc2hGb3JtQ29udHJvbCwgdGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXMsIHRoaXMub3B0aW9ucylcclxuICB9XHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICBBZGRSZXF1aXJlZFZhbGlkYXRpb24gPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LkFkZFJlcXVpcmVkVmFsaWRhdGlvbih0aGlzLkFyYWJpY0Zvcm1Db250cm9sLCB0aGlzLkVuZ2xpc2hWYWxpZGF0aW9uUnVsZXMsIHRoaXMub3B0aW9ucylcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuQWRkUmVxdWlyZWRWYWxpZGF0aW9uKHRoaXMuRW5nbGlzaEZvcm1Db250cm9sLCB0aGlzLkFyYWJpY1ZhbGlkYXRpb25SdWxlcywgdGhpcy5vcHRpb25zKVxyXG4gIH1cclxuXHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICBSZW1vdmVDdXN0b21WYWxpZGF0aW9uID0gKEN1c3RvbVZhbGlkYXRpb24pID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuUmVtb3ZlQ3VzdG9tVmFsaWRhdGlvbih0aGlzLkFyYWJpY0Zvcm1Db250cm9sLCB0aGlzLkVuZ2xpc2hWYWxpZGF0aW9uUnVsZXMsIEN1c3RvbVZhbGlkYXRpb24pXHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LlJlbW92ZUN1c3RvbVZhbGlkYXRpb24odGhpcy5FbmdsaXNoRm9ybUNvbnRyb2wsIHRoaXMuQXJhYmljVmFsaWRhdGlvblJ1bGVzLCBDdXN0b21WYWxpZGF0aW9uKVxyXG4gIH1cclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG4gIEFkZEN1c3RvbVZhbGlkYXRpb24gPSAoQ3VzdG9tVmFsaWRhdGlvbikgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5BZGRDdXN0b21WYWxpZGF0aW9uKHRoaXMuQXJhYmljRm9ybUNvbnRyb2wsIHRoaXMuRW5nbGlzaFZhbGlkYXRpb25SdWxlcywgQ3VzdG9tVmFsaWRhdGlvbilcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuQWRkQ3VzdG9tVmFsaWRhdGlvbih0aGlzLkVuZ2xpc2hGb3JtQ29udHJvbCwgdGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXMsIEN1c3RvbVZhbGlkYXRpb24pXHJcbiAgfVxyXG5cclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG4gIElzVmFsaWQgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LklzVmFsaWQodGhpcy5BcmFiaWNGb3JtQ29udHJvbClcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuSXNWYWxpZCh0aGlzLkVuZ2xpc2hGb3JtQ29udHJvbClcclxuICB9XHJcblxyXG4gIHNob3dHbG9iYWxFcnJvcigpIHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuc2hvd0dsb2JhbEVycm9yKClcclxuICB9XHJcblxyXG4gIGdldEVycm9yVmFsaWRhdGlvbihFcnJvckxpc3QpIHtcclxuICAgIGlmICh0aGlzLm1hcmtBbGxBc1RvdWNoZWQgJiYgdGhpcy5ncm91cC5pbnZhbGlkKSB7XHJcbiAgICAgIHRoaXMuc2hvd0dsb2JhbEVycm9yKClcclxuICAgICAgdGhpcy5tYXJrQWxsQXNUb3VjaGVkID0gZmFsc2VcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmNvbnRyb2xVdGlsaXR5LmdldEVycm9yVmFsaWRhdGlvbk1hc3NhZ2UoRXJyb3JMaXN0LCB0aGlzLmdyb3VwLCB0aGlzLm9wdGlvbnMpO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldElucHV0VHlwZSh0eXBlOiBudW1iZXIpIHtcclxuICAgIHJldHVybiBJbnB1dFR5cGVbdHlwZV1cclxuICB9XHJcblxyXG4gIHRyaW1Db250cm9sVmFsdWUodHlwZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCB3aGl0ZXNwYWNlOiBzdHJpbmcgPSAnICc7XHJcbiAgICBpZiAodHlwZSA9PSBcIkVuXCIpIHtcclxuICAgICAgbGV0IG9yaWdpbmFsVmFsdWUgPSB0aGlzLkVuZ2xpc2hGb3JtQ29udHJvbC52YWx1ZTtcclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5QYXRjaEZ1bmN0aW9uICYmIHRoaXMub3B0aW9ucy5QYXRjaFBhdGggJiYgdGhpcy5FbmdsaXNoRm9ybUNvbnRyb2wudmFsaWQpIHtcclxuICAgICAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LnBhdGNoQ29udHJvbFZhbHVlKG9yaWdpbmFsVmFsdWUsIHRoaXMub3B0aW9ucy5QYXRjaEZ1bmN0aW9uLCB0aGlzLm9wdGlvbnMuUGF0Y2hQYXRoKVxyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLkVuZ2xpc2hGb3JtQ29udHJvbC52YWx1ZS5zdGFydHNXaXRoKHdoaXRlc3BhY2UpIHx8IHRoaXMuRW5nbGlzaEZvcm1Db250cm9sLnZhbHVlLmVuZHNXaXRoKHdoaXRlc3BhY2UpKSB7XHJcbiAgICAgICAgdGhpcy5FbmdsaXNoRm9ybUNvbnRyb2wucGF0Y2hWYWx1ZShvcmlnaW5hbFZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHR5cGUgPT0gXCJBclwiKSB7XHJcbiAgICAgIGxldCBvcmlnaW5hbFZhbHVlID0gdGhpcy5BcmFiaWNGb3JtQ29udHJvbC52YWx1ZTtcclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5QYXRjaEZ1bmN0aW9uICYmIHRoaXMub3B0aW9ucy5QYXRjaFBhdGggJiYgdGhpcy5BcmFiaWNGb3JtQ29udHJvbC52YWxpZCkge1xyXG4gICAgICAgIHRoaXMuY29udHJvbFV0aWxpdHkucGF0Y2hDb250cm9sVmFsdWUob3JpZ2luYWxWYWx1ZSwgdGhpcy5vcHRpb25zLlBhdGNoRnVuY3Rpb24sIHRoaXMub3B0aW9ucy5QYXRjaFBhdGgpXHJcblxyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLkFyYWJpY0Zvcm1Db250cm9sLnZhbHVlLnN0YXJ0c1dpdGgod2hpdGVzcGFjZSkgfHwgdGhpcy5BcmFiaWNGb3JtQ29udHJvbC52YWx1ZS5lbmRzV2l0aCh3aGl0ZXNwYWNlKSkge1xyXG4gICAgICAgIHRoaXMuQXJhYmljRm9ybUNvbnRyb2wucGF0Y2hWYWx1ZShvcmlnaW5hbFZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGNvcHlJbnB1dE1lc3NhZ2UoaW5wdXRFbGVtZW50KSB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LkNvcHlJbnB1dE1lc3NhZ2UoaW5wdXRFbGVtZW50KVxyXG4gIH1cclxuXHJcbiAgc2hvd0lucHV0VXNpbmdMYW5ndWFnZU1vZGUoKSB7XHJcbiAgICB0aGlzLkFyYWJpY1ZhbGlkYXRpb25SdWxlcyA9IHRoaXMuQXJhYmljVmFsaWRhdGlvblJ1bGVzLmZpbHRlcihpdGVtID0+IGl0ZW0gIT09IFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgdGhpcy5FbmdsaXNoVmFsaWRhdGlvblJ1bGVzID0gdGhpcy5FbmdsaXNoVmFsaWRhdGlvblJ1bGVzLmZpbHRlcihpdGVtID0+IGl0ZW0gIT09IFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG5cclxuICAgIHRoaXMuQXJhYmljRm9ybUNvbnRyb2wuY2xlYXJWYWxpZGF0b3JzKCk7XHJcbiAgICB0aGlzLkVuZ2xpc2hGb3JtQ29udHJvbC5jbGVhclZhbGlkYXRvcnMoKTtcclxuXHJcbiAgICB0aGlzLkFyYWJpY0Zvcm1Db250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIHRoaXMuRW5nbGlzaEZvcm1Db250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuXHJcbiAgICBzd2l0Y2ggKHRoaXMub3B0aW9ucy5MYW5ndWFnZU1vZGUpIHtcclxuICAgICAgY2FzZSBMYW5ndWFnZU1vZGUuQm90aF9MYW5ndWFnZXNfYXJlX3Zpc2libGU6XHJcbiAgICAgICAgdGhpcy5TaG93QXJhYmljVGV4dEJveCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5TaG93RW5nbGlzaFRleHRCb3ggPSB0cnVlO1xyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuSXNSZXF1aXJlZCA9PSB0cnVlKSB7XHJcbiAgICAgICAgICB0aGlzLkVuZ2xpc2hWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgICAgIHRoaXMuQXJhYmljVmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICAgICAgICB0aGlzLklzU2hvd0FzdGVyaXNrSW5BcmFiaWMgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5Jc1Nob3dBc3Rlcmlza0luRW5nbGlzaCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIExhbmd1YWdlTW9kZS5BcmFiaWNfTGFuZ3VhZ2Vfb25seV9pc192aXNpYmxlOlxyXG4gICAgICAgIHRoaXMuU2hvd0FyYWJpY1RleHRCb3ggPSB0cnVlO1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy5NdWx0aUNvbnRyb2xQbGFjZW1lbnRUeXBlID0gQ29udHJvbExheW91dC5WZXJ0aWNhbDtcclxuXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgTGFuZ3VhZ2VNb2RlLkVuZ2xpc2hfTGFuZ3VhZ2Vfb25seV9pc192aXNpYmxlOlxyXG4gICAgICAgIHRoaXMuU2hvd0VuZ2xpc2hUZXh0Qm94ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm9wdGlvbnMuTXVsdGlDb250cm9sUGxhY2VtZW50VHlwZSA9IENvbnRyb2xMYXlvdXQuVmVydGljYWw7XHJcblxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIExhbmd1YWdlTW9kZS5Cb3RoX0xhbmd1YWdlc19hcmVfdmlzaWJsZV9idXRfb25seV9jdXJyZW50X2xhbmd1YWdlX2lzX3JlcXVpcmVkOlxyXG4gICAgICAgIHRoaXMuU2hvd0FyYWJpY1RleHRCb3ggPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuU2hvd0VuZ2xpc2hUZXh0Qm94ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm9wdGlvbnMuTXVsdGlDb250cm9sUGxhY2VtZW50VHlwZSA9IHRoaXMuZ2xvYmFsU2V0dGluZ3MuTXVsdGlDb250cm9sUGxhY2VtZW50VHlwZVxyXG5cclxuICAgICAgICBpZiAodGhpcy5DdXJyZW50TGFuZ3VhZ2UgPT0gJ2FyJykge1xyXG4gICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5Jc1JlcXVpcmVkID09IHRydWUpIHtcclxuICAgICAgICAgICAgdGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgICAgICAgdGhpcy5Jc1Nob3dBc3Rlcmlza0luQXJhYmljID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLkN1cnJlbnRMYW5ndWFnZSA9PSAnZW4nKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLklzUmVxdWlyZWQgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLkVuZ2xpc2hWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgICAgICAgdGhpcy5Jc1Nob3dBc3Rlcmlza0luRW5nbGlzaCA9IHRydWU7XHJcblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBMYW5ndWFnZU1vZGUuQm90aF9MYW5ndWFnZXNfYnV0X29ubHlfQXJhYmljX2lzX3JlcXVpcmVkOlxyXG4gICAgICAgIHRoaXMuU2hvd0FyYWJpY1RleHRCb3ggPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuU2hvd0VuZ2xpc2hUZXh0Qm94ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm9wdGlvbnMuTXVsdGlDb250cm9sUGxhY2VtZW50VHlwZSA9IHRoaXMuZ2xvYmFsU2V0dGluZ3MuTXVsdGlDb250cm9sUGxhY2VtZW50VHlwZVxyXG5cclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLklzUmVxdWlyZWQgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgdGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgICAgIHRoaXMuSXNTaG93QXN0ZXJpc2tJbkFyYWJpYyA9IHRydWU7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBMYW5ndWFnZU1vZGUuQm90aF9MYW5ndWFnZXNfYnV0X29ubHlfRW5nbGlzaF9pc19yZXF1aXJlZDpcclxuICAgICAgICB0aGlzLlNob3dBcmFiaWNUZXh0Qm94ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLlNob3dFbmdsaXNoVGV4dEJveCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLk11bHRpQ29udHJvbFBsYWNlbWVudFR5cGUgPSB0aGlzLmdsb2JhbFNldHRpbmdzLk11bHRpQ29udHJvbFBsYWNlbWVudFR5cGVcclxuXHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5Jc1JlcXVpcmVkID09IHRydWUpIHtcclxuICAgICAgICAgIHRoaXMuRW5nbGlzaFZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICAgICAgdGhpcy5Jc1Nob3dBc3Rlcmlza0luRW5nbGlzaCA9IHRydWU7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBMYW5ndWFnZU1vZGUuQ3VycmVudF9MYW5ndWFnZV9vbmx5X2lzX3Zpc2libGVfYW5kX3JlcXVpcmVkOlxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5NdWx0aUNvbnRyb2xQbGFjZW1lbnRUeXBlID0gQ29udHJvbExheW91dC5WZXJ0aWNhbDtcclxuICAgICAgICBpZiAodGhpcy5DdXJyZW50TGFuZ3VhZ2UgPT0gJ2FyJykge1xyXG4gICAgICAgICAgdGhpcy5TaG93QXJhYmljVGV4dEJveCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLlNob3dFbmdsaXNoVGV4dEJveCA9IGZhbHNlO1xyXG4gICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5Jc1JlcXVpcmVkID09IHRydWUpIHtcclxuICAgICAgICAgICAgdGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgICAgICAgdGhpcy5Jc1Nob3dBc3Rlcmlza0luQXJhYmljID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLkN1cnJlbnRMYW5ndWFnZSA9PSAnZW4nKSB7XHJcbiAgICAgICAgICB0aGlzLlNob3dBcmFiaWNUZXh0Qm94ID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLlNob3dFbmdsaXNoVGV4dEJveCA9IHRydWU7XHJcbiAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLklzUmVxdWlyZWQgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLkVuZ2xpc2hWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgICAgICAgdGhpcy5Jc1Nob3dBc3Rlcmlza0luRW5nbGlzaCA9IHRydWU7XHJcblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLkFyYWJpY0Zvcm1Db250cm9sLnNldFZhbGlkYXRvcnModGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXMpO1xyXG4gICAgdGhpcy5FbmdsaXNoRm9ybUNvbnRyb2wuc2V0VmFsaWRhdG9ycyh0aGlzLkVuZ2xpc2hWYWxpZGF0aW9uUnVsZXMpO1xyXG4gICAgdGhpcy5BcmFiaWNGb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB0aGlzLkVuZ2xpc2hGb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcblxyXG4gIH1cclxuXHJcbiAgb25BcmFiaWNGb2N1cyhpc0ZvY3VzOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLklzU2hvd0FyYWJpY1dvcmRDb3VudCA9IGlzRm9jdXNcclxuXHJcbiAgICAvL29uRm9jdXNcclxuICAgIGlmIChpc0ZvY3VzKSB7XHJcbiAgICAgIGlmICh0aGlzLmhhc0FyYWJpY0NoYXJzTGltaXRWYWxpZGF0aW9uRXJyb3IpIC8vY2hlY2sgaWYgdGhlcmUgd2FzIHByZXZpb3VzIHZhbGlkYXRpb24gZXJyb3JcclxuICAgICAgICB0aGlzLnNob3dBcmFiaWNDaGFyc0xpbWl0TXNnID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGVsc2UgLy9vbkZvY3VzT3V0XHJcbiAgICAgIHRoaXMuc2hvd0FyYWJpY0NoYXJzTGltaXRNc2cgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIG9uRW5nbGlzaEZvY3VzKGlzRm9jdXM6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuSXNTaG93RW5nbGlzaFdvcmRDb3VudCA9IGlzRm9jdXNcclxuXHJcbiAgICAvL29uRm9jdXNcclxuICAgIGlmIChpc0ZvY3VzKSB7XHJcbiAgICAgIGlmICh0aGlzLmhhc0VuZ2xpc2hDaGFyc0xpbWl0VmFsaWRhdGlvbkVycm9yKSAvL2NoZWNrIGlmIHRoZXJlIHdhcyBwcmV2aW91cyB2YWxpZGF0aW9uIGVycm9yXHJcbiAgICAgICAgdGhpcy5zaG93RW5nbGlzaENoYXJzTGltaXRNc2cgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgZWxzZSAvL29uRm9jdXNPdXRcclxuICAgICAgdGhpcy5zaG93RW5nbGlzaENoYXJzTGltaXRNc2cgPSBmYWxzZTtcclxuICB9XHJcblxyXG5cclxufVxyXG5cclxuIl19
|