info-library 2.10.46 → 2.10.48
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/bundles/info-library.umd.js +6 -1
- package/bundles/info-library.umd.js.map +1 -1
- package/bundles/info-library.umd.min.js +1 -1
- package/bundles/info-library.umd.min.js.map +1 -1
- package/controls/grid/grid.component.d.ts +1 -0
- package/esm2015/controls/grid/grid.component.js +7 -2
- package/fesm2015/info-library.js +6 -1
- package/fesm2015/info-library.js.map +1 -1
- package/info-library.metadata.json +1 -1
- package/package.json +1 -1
|
@@ -79,6 +79,7 @@ export declare class InfoGridComponent implements OnInit, AfterViewInit {
|
|
|
79
79
|
buttons: InfoGridButtonModel[];
|
|
80
80
|
searchbuttons: InfoMethodGridButtonModel[];
|
|
81
81
|
showmessageerror: boolean;
|
|
82
|
+
defaultnewobject: any;
|
|
82
83
|
formModel: QueryList<NgModel>;
|
|
83
84
|
formSearch: NgForm;
|
|
84
85
|
messages: String[];
|
|
@@ -99,6 +99,7 @@ export class InfoGridComponent {
|
|
|
99
99
|
this.buttons = [];
|
|
100
100
|
this.searchbuttons = [];
|
|
101
101
|
this.showmessageerror = false;
|
|
102
|
+
this.defaultnewobject = null;
|
|
102
103
|
this.messages = [];
|
|
103
104
|
this.resultTitle = '';
|
|
104
105
|
this.enabledSearch = false;
|
|
@@ -474,7 +475,7 @@ export class InfoGridComponent {
|
|
|
474
475
|
*/
|
|
475
476
|
add() {
|
|
476
477
|
if (this.form != null) {
|
|
477
|
-
this._prop.set(InfoPageAction.New,
|
|
478
|
+
this._prop.set(InfoPageAction.New, this.defaultnewobject);
|
|
478
479
|
this.openModal();
|
|
479
480
|
}
|
|
480
481
|
else {
|
|
@@ -732,6 +733,7 @@ export class InfoGridComponent {
|
|
|
732
733
|
download(arquivoId) {
|
|
733
734
|
if (this.apidownload == null)
|
|
734
735
|
alert('API Download está null');
|
|
736
|
+
this.loading = true;
|
|
735
737
|
this._dataAccessService.get(this.apidownload, (this.methoddownload != null ? this.methoddownload : 'Get'), "id=" + arquivoId).subscribe((/**
|
|
736
738
|
* @param {?} r
|
|
737
739
|
* @return {?}
|
|
@@ -894,6 +896,7 @@ InfoGridComponent.propDecorators = {
|
|
|
894
896
|
buttons: [{ type: Input }],
|
|
895
897
|
searchbuttons: [{ type: Input }],
|
|
896
898
|
showmessageerror: [{ type: Input }],
|
|
899
|
+
defaultnewobject: [{ type: Input }],
|
|
897
900
|
formModel: [{ type: ContentChildren, args: [NgModel,] }],
|
|
898
901
|
formSearch: [{ type: ViewChild, args: [NgForm, { static: false },] }],
|
|
899
902
|
paginator: [{ type: ViewChild, args: ['paginator', { static: false },] }],
|
|
@@ -1005,6 +1008,8 @@ if (false) {
|
|
|
1005
1008
|
/** @type {?} */
|
|
1006
1009
|
InfoGridComponent.prototype.showmessageerror;
|
|
1007
1010
|
/** @type {?} */
|
|
1011
|
+
InfoGridComponent.prototype.defaultnewobject;
|
|
1012
|
+
/** @type {?} */
|
|
1008
1013
|
InfoGridComponent.prototype.formModel;
|
|
1009
1014
|
/** @type {?} */
|
|
1010
1015
|
InfoGridComponent.prototype.formSearch;
|
|
@@ -1112,4 +1117,4 @@ if (false) {
|
|
|
1112
1117
|
*/
|
|
1113
1118
|
InfoGridComponent.prototype._element;
|
|
1114
1119
|
}
|
|
1115
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiRDovZGV2L0luZm8gVXRpbGl0aWVzL0luZm8gTGlicmFyeSAtIEFuZ3VsYXIvcHJvamVjdHMvaW5mby1saWJyYXJ5L3NyYy8iLCJzb3VyY2VzIjpbImNvbnRyb2xzL2dyaWQvZ3JpZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBaUIsWUFBWSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEssT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNqRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXBFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1B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QzlCLGdEQUFxQzs7SUFDckMsOENBQW1DOztJQUNuQyx3Q0FBNkI7O0lBQzdCLHdDQUEwQjs7SUFDMUIsdUNBQXNDOztJQUV0Qyx1Q0FBMkI7O0lBQzNCLGlDQUFxQjs7SUFDckIsd0NBQWlDOztJQUVqQywyQ0FBOEM7O0lBQzlDLDJDQUE4Qzs7SUFDOUMseUNBQTRDOztJQUM1QyxrQ0FBcUM7O0lBQ3JDLG1DQUFzQzs7SUFDdEMsbUNBQXNDOztJQUN0QyxxQ0FBd0M7O0lBQ3hDLHlDQUE0Qzs7SUFFNUMsd0NBQW9DOztJQUNwQyxvQ0FBNkM7O0lBQzdDLDBDQUF5RDs7SUFFekQsNkNBQWtDOztJQUVsQyxzQ0FBd0Q7O0lBQ3hELHVDQUF5RDs7SUFFekQscUNBQXdCOztJQUN4Qix3Q0FBaUI7O0lBQ2pCLDBDQUFzQjs7SUFDdEIsNkNBQTZCOztJQUU3Qix3Q0FBb0I7O0lBQ3BCLDZDQUF5Qjs7SUFDekIsOENBQTBCOztJQUMxQixnREFBNEI7O0lBRTVCLHdDQUFnQjs7SUFDaEIsb0NBQWdCOztJQUNoQix5Q0FBa0I7O0lBQ2xCLGtDQUFrQjs7SUFDbEIseUNBQWtCOztJQUNsQiwyQ0FBb0I7O0lBQ3BCLHdDQUFpQjs7SUFDakIseUNBQWtCOztJQUNsQix1Q0FBMEI7O0lBQzFCLGdDQUFtQjs7SUFFbkIsc0NBQTZFOztJQUM3RSw4Q0FBaUQ7O0lBRWpELDZDQUFnQzs7SUFXaEMsa0NBQW1COzs7OztJQVdQLG9DQUFnQzs7SUFDaEMsc0NBQW1DOztJQUNuQyxrQ0FBdUI7Ozs7O0lBQ3ZCLGtDQUFnQzs7Ozs7SUFDaEMsK0NBQTJDOzs7OztJQUMzQyxvQ0FBdUI7Ozs7O0lBQ3ZCLDRDQUF1Qzs7Ozs7SUFDdkMsbURBQXlEOzs7OztJQUN6RCwrQ0FBNkM7Ozs7O0lBQzdDLHVDQUF3Qzs7Ozs7SUFDeEMsd0NBQXdDOzs7OztJQUN4QyxzQ0FBNEI7Ozs7O0lBQzVCLHFDQUE0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgQWZ0ZXJWaWV3SW5pdCwgRXZlbnRFbWl0dGVyLCBPdXRwdXQsIFZpZXdDaGlsZCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbnRlbnRDaGlsZHJlbiwgUmVuZGVyZXIyLCBFbGVtZW50UmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgSW5mb0RhdGFTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2UvZGF0YS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEluZm9Gb3JtUHJvcE1vZGVsIH0gZnJvbSBcIi4uLy4uL21vZGVsL2Zvcm0tcHJvcC5tb2RlbFwiO1xyXG5pbXBvcnQgeyBJbmZvUGFnaW5hdG9yQ29tcG9uZW50IH0gZnJvbSBcIi4uL3BhZ2luYXRvci9wYWdpbmF0b3IuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IEluZm9EaWFsb2dNb2RhbCB9IGZyb20gXCIuLi8uLi9sYXlvdXRzL2RpYWxvZy9kaWFsb2cuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2dcIjtcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHsgSW5mb0F1dGhlbnRpY2F0aW9uU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlL2F1dGhlbnRpY2F0aW9uLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgSW5mb1RyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZS90cmFuc2xhdGUuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBJbmZvRGlhbG9nQnV0dG9ucyB9IGZyb20gXCIuLi8uLi9lbnVtL2RpYWxvZy1idXR0b25zLmVudW1cIjtcclxuaW1wb3J0IHsgSW5mb01vZGFsQWN0aW9uIH0gZnJvbSBcIi4uLy4uL2VudW0vbW9kYWwtYWN0aW9uLmVudW1cIjtcclxuaW1wb3J0IHsgSW5mb1BhZ2VBY3Rpb24gfSBmcm9tIFwiLi4vLi4vZW51bS9wYWdlLWFjdGlvbi5lbnVtXCI7XHJcbmltcG9ydCB7IEluZm9QYWdlYmFyQnV0dG9uTW9kZWwgfSBmcm9tIFwiLi4vLi4vbW9kZWwvcGFnZWJhci1idXR0b25zLm1vZGVsXCI7XHJcbmltcG9ydCB7IEluZm9HcmlkQnV0dG9uTW9kZWwgfSBmcm9tIFwiLi4vLi4vbW9kZWwvZ3JpZC1idXR0b24ubW9kZWxcIjtcclxuaW1wb3J0IHsgSW5mb0xhc3RTZWFyY2hNb2RlbCB9IGZyb20gXCIuLi8uLi9tb2RlbC9sYXN0LXNlYXJjaC5tb2RlbFwiO1xyXG5pbXBvcnQgeyBJbmZvTWV0aG9kR3JpZEJ1dHRvbk1vZGVsIH0gZnJvbSBcIi4uLy4uL21vZGVsL21ldGhvZC1ncmlkLWJ1dHRvbi5tb2RlbFwiO1xyXG5pbXBvcnQgeyBOZ01vZGVsLCBOZ0Zvcm0gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFF1ZXJ5TGlzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBJbmZvUGxhdGZvcm1Nb2RlbCB9IGZyb20gXCIuLi8uLi9tb2RlbC9wbGF0Zm9ybS5tb2RlbFwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2luZm8tZ3JpZCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJ2dyaWQuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJ2dyaWQuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIHByb3ZpZGVyczogW0luZm9Gb3JtUHJvcE1vZGVsXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW5mb0dyaWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xyXG5cclxuICAgIEBJbnB1dCgpIHBhZ2V0aXRsZSA9ICcnO1xyXG4gICAgQElucHV0KCkgcHJlZml4dGl0bGUgPSAnJztcclxuICAgIEBJbnB1dCgpIGRlc2NyaXB0aW9uID0gJyc7XHJcbiAgICBASW5wdXQoKSBwYWdlYmFyYnV0dG9uczogSW5mb1BhZ2ViYXJCdXR0b25Nb2RlbFtdID0gW107XHJcbiAgICBASW5wdXQoKSBmdWxsYXJlYSA9IGZhbHNlO1xyXG5cclxuICAgIEBJbnB1dCgpIGFwaTogYW55ID0gbnVsbDtcclxuICAgIEBJbnB1dCgpIG1ldGhvZDogc3RyaW5nID0gbnVsbDtcclxuICAgIEBJbnB1dCgpIGZvcm06IGFueSA9IG51bGw7XHJcbiAgICBASW5wdXQoKSB3aWR0aDogbnVtYmVyID0gODAwO1xyXG4gICAgQElucHV0KCkgcGFyZW50OiBhbnkgPSBudWxsO1xyXG4gICAgQElucHV0KCkgYXBpZG93bmxvYWQ6IGFueSA9IG51bGw7XHJcbiAgICBASW5wdXQoKSBtZXRob2Rkb3dubG9hZDogc3RyaW5nID0gbnVsbDtcclxuXHJcbiAgICBASW5wdXQoKSBiYWNrdXJsID0gJyc7XHJcbiAgICBASW5wdXQoKSBuZXd1cmwgPSAnJztcclxuICAgIEBJbnB1dCgpIG5ld2xhYmVsID0gJ05vdm8nO1xyXG4gICAgQElucHV0KCkgZWRpdHVybCA9ICcnO1xyXG4gICAgQElucHV0KCkgdmlld3VybCA9ICcnO1xyXG4gICAgQElucHV0KCkgdGVtcGxhdGV1cmwgPSAnJztcclxuXHJcbiAgICBASW5wdXQoKSBwYWdlZCA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgc2l6ZSA9IDE1O1xyXG4gICAgQElucHV0KCkgYXV0b3JlZnJlc2ggPSAwO1xyXG5cclxuICAgIEBJbnB1dCgpIGVuYWJsZWRuZXcgPSB0cnVlO1xyXG4gICAgQElucHV0KCkgZW5hYmxlZGVkaXQgPSB0cnVlO1xyXG4gICAgQElucHV0KCkgZW5hYmxlZGRlbGV0ZSA9IHRydWU7XHJcbiAgICBASW5wdXQoKSBlbmFibGVkdmlldyA9IHRydWU7XHJcbiAgICBASW5wdXQoKSBlbmFibGVkY2FuY2Vsc2VhcmNoID0gdHJ1ZTtcclxuICAgIEBJbnB1dCgpIGVuYWJsZWRkZXRhaWwgPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIGVuYWJsZWRjbGFzc2ljb25zID0gdHJ1ZTtcclxuICAgIEBJbnB1dCgpIGVuYWJsZWRjbGlja2FjY2VzcyA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgZW5hYmxlZGNsaWNrZXZlbnQgPSBmYWxzZTtcclxuXHJcbiAgICBASW5wdXQoKSBzZWFyY2hvcGVuZWQgPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIHNlYXJjaG9ubHlvbmVidXR0b24gPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIGRpc2FibGVzZWFyY2hsYXN0ID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBzdGF0aWN0aXRsZSA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgZGlzYWJsZWRjb2wgPSAnJztcclxuICAgIEBJbnB1dCgpIGFjY2Vzc2ljb24gPSAnYXJyb3dfZm9yd2FyZCc7XHJcblxyXG4gICAgQElucHV0KCkgbG9hZG9uaW5pdCA9IHRydWU7XHJcbiAgICBASW5wdXQoKSBkYXRhOiBhbnlbXTtcclxuICAgIEBJbnB1dCgpIHNlYXJjaG1vZGVsOiBhbnkgPSBudWxsO1xyXG5cclxuICAgIEBPdXRwdXQoKSBvbmJlZm9yZXNlYXJjaCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAgIEBPdXRwdXQoKSBvbmxvYWRjb21wbGV0ZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAgIEBPdXRwdXQoKSBvbmNsb3NlbW9kYWwgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICBAT3V0cHV0KCkgb25uZXcgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICBAT3V0cHV0KCkgb25lZGl0ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgQE91dHB1dCgpIG9udmlldyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAgIEBPdXRwdXQoKSBvbmRlbGV0ZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAgIEBPdXRwdXQoKSBjdXN0b21kZWxldGUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gICAgQElucHV0KCkgZHluYW1pY2NvbHM6IHN0cmluZyA9IG51bGw7XHJcbiAgICBASW5wdXQoKSBidXR0b25zOiBJbmZvR3JpZEJ1dHRvbk1vZGVsW10gPSBbXTtcclxuICAgIEBJbnB1dCgpIHNlYXJjaGJ1dHRvbnM6IEluZm9NZXRob2RHcmlkQnV0dG9uTW9kZWxbXSA9IFtdO1xyXG5cclxuICAgIEBJbnB1dCgpIHNob3dtZXNzYWdlZXJyb3IgPSBmYWxzZTtcclxuICAgIFxyXG4gICAgQENvbnRlbnRDaGlsZHJlbihOZ01vZGVsKSBmb3JtTW9kZWw6IFF1ZXJ5TGlzdDxOZ01vZGVsPjtcclxuICAgIEBWaWV3Q2hpbGQoTmdGb3JtLCB7IHN0YXRpYzogZmFsc2UgfSkgZm9ybVNlYXJjaDogTmdGb3JtO1xyXG4gICAgXHJcbiAgICBtZXNzYWdlczogU3RyaW5nW10gPSBbXTtcclxuICAgIHJlc3VsdFRpdGxlID0gJyc7XHJcbiAgICBlbmFibGVkU2VhcmNoID0gZmFsc2U7XHJcbiAgICBzZWFyY2hNb2RlbFJlc2V0OiBhbnkgPSBudWxsO1xyXG5cclxuICAgIHNob3dQYWdlYmFyID0gZmFsc2U7XHJcbiAgICBoYXNQZXJtaXNzaW9uTmV3ID0gZmFsc2U7XHJcbiAgICBoYXNQZXJtaXNzaW9uRWRpdCA9IGZhbHNlO1xyXG4gICAgaGFzUGVybWlzc2lvbkRlbGV0ZSA9IGZhbHNlO1xyXG5cclxuICAgIHRhYmxlSGVpZ2h0ID0gMDtcclxuICAgIGxvYWRpbmcgPSBmYWxzZTtcclxuICAgIHBhZ2ViYXJUaXRsZSA9ICcnO1xyXG4gICAgaWNvbnM6IGFueVtdID0gW107XHJcbiAgICBjb2x1bmFzSXRlbnMgPSBbXTtcclxuICAgIGNvbHVuYXNIZWFkZXJzID0gW107XHJcbiAgICBjb2x1bmFzVHlwZSA9IFtdO1xyXG4gICAgY29sdW5hc1dpZHRoID0gW107XHJcbiAgICBjdXJyZW50VXJsOiBzdHJpbmcgPSBudWxsO1xyXG4gICAgdXJsOiBzdHJpbmcgPSBudWxsO1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ3BhZ2luYXRvcicsIHsgc3RhdGljOiBmYWxzZSB9KSBwYWdpbmF0b3I6IEluZm9QYWdpbmF0b3JDb21wb25lbnQ7XHJcbiAgICBAT3V0cHV0KCkgcGFyZW50SWRVcmxDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gICAgcGFyZW50SWRVcmxWYWx1ZTogbnVtYmVyID0gbnVsbDtcclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgcGFyZW50SWRVcmwoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyZW50SWRVcmxWYWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBzZXQgcGFyZW50SWRVcmwodmFsdWUpIHtcclxuICAgICAgICB0aGlzLnBhcmVudElkVXJsVmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLnBhcmVudElkVXJsQ2hhbmdlLmVtaXQodGhpcy5wYXJlbnRJZFVybFZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBfY29sczogc3RyaW5nID0gJyc7XHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IGNvbHMoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbHM7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0IGNvbHModmFsdWUpIHtcclxuICAgICAgICB0aGlzLl9jb2xzID0gdmFsdWU7XHJcbiAgICAgICAgdGhpcy5zZXRDb2x1bW5zKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfZGlhbG9nOiBJbmZvRGlhbG9nTW9kYWwsIFxyXG4gICAgICAgICAgICAgICAgcHVibGljIF9wbGF0Zm9ybTogSW5mb1BsYXRmb3JtTW9kZWwsXHJcbiAgICAgICAgICAgICAgICBwdWJsaWMgbW9kYWw6IE1hdERpYWxvZywgXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9wcm9wOiBJbmZvRm9ybVByb3BNb2RlbCwgXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9kYXRhQWNjZXNzU2VydmljZTogSW5mb0RhdGFTZXJ2aWNlLCBcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgX3JvdXRlcjogUm91dGVyLFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfYXV0aGVudGljYXRpb25TZXJ2aWNlOiBJbmZvQXV0aGVudGljYXRpb25TZXJ2aWNlLCBcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZiwgXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIF90cmFuc2xhdGU6IEluZm9UcmFuc2xhdGVTZXJ2aWNlLCBcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgX2xhc3RTZWFyY2g6IEluZm9MYXN0U2VhcmNoTW9kZWwsXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9yZW5kZXJlcjogUmVuZGVyZXIyLCBcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgX2VsZW1lbnQ6IEVsZW1lbnRSZWYpIHsgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHRoaXMudXJsID0gKHRoaXMuX2FjdGl2YXRlZFJvdXRlLnNuYXBzaG90LmRhdGFbJ1VSTCddIHx8IHRoaXMuX3JvdXRlci51cmwpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LCAndXhjJyArIHRoaXMuX3BsYXRmb3JtLkNvbmZpZy51eCk7XHJcbiAgICAgICAgdGhpcy5zZXRQYWdlYmFyVGl0bGUoKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNobW9kZWwgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5tZXRob2QgPT0gbnVsbClcclxuICAgICAgICAgICAgICAgIHRoaXMubWV0aG9kID0gJ1NlYXJjaCc7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaE1vZGVsUmVzZXQgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLnNlYXJjaG1vZGVsKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGVsc2UgaWYgKHRoaXMucGFyZW50ICE9IG51bGwgJiYgKHRoaXMubWV0aG9kID09IG51bGwgfHwgdGhpcy5tZXRob2QgPT0gJycpKVxyXG4gICAgICAgICAgICB0aGlzLm1ldGhvZCA9ICdHZXRCeVBhcmVudElkJztcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVzZWFyY2hsYXN0ICYmIHRoaXMuX2F1dGhlbnRpY2F0aW9uU2VydmljZS5nZXRVcmxHZW5lcmljYSh0aGlzLl9sYXN0U2VhcmNoLnVybCkgPT0gdGhpcy5fYXV0aGVudGljYXRpb25TZXJ2aWNlLmdldFVybEdlbmVyaWNhKHRoaXMudXJsKSkge1xyXG4gICAgICAgICAgICB0aGlzLmVuYWJsZWRTZWFyY2ggPSB0aGlzLl9sYXN0U2VhcmNoLmVuYWJsZWRTZWFyY2g7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZiAodGhpcy5zZWFyY2htb2RlbCAhPSBudWxsICYmIHRoaXMuX2xhc3RTZWFyY2gubW9kZWwgIT0gbnVsbClcclxuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5zZWFyY2htb2RlbCwgdGhpcy5fbGFzdFNlYXJjaC5tb2RlbCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5zZWFyY2hvcGVuZWQpXHJcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlZFNlYXJjaCA9IHRydWU7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmF1dG9yZWZyZXNoID4gMClcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50VXJsID0gbG9jYXRpb24uaHJlZjtcclxuXHJcbiAgICAgICAgdGhpcy5fcHJvcC5hcGkgPSB0aGlzLmFwaTtcclxuICAgICAgICB0aGlzLl9wcm9wLm1vZGFsQ29tcG9uZW50ID0gdGhpcy5mb3JtO1xyXG4gICAgfVxyXG5cclxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgICAgICB0aGlzLnNob3dQYWdlYmFyID0gdGhpcy5wYWdldGl0bGUgIT0gJycgfHwgdGhpcy5wcmVmaXh0aXRsZSAhPSAnJztcclxuICAgICAgICBcclxuICAgICAgICBpZiAoIXRoaXMuZnVsbGFyZWEgJiYgdGhpcy5fcGxhdGZvcm0uQ29uZmlnLnV4IDw9IDIpXHJcbiAgICAgICAgICAgIHRoaXMuZnVsbGFyZWEgPSB0aGlzLnNob3dQYWdlYmFyO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5zZWFyY2htb2RlbCAmJiB0aGlzLmZvcm1Nb2RlbC5sZW5ndGggPiAwICYmIHRoaXMuZm9ybVNlYXJjaClcclxuICAgICAgICAgICAgdGhpcy5mb3JtTW9kZWwudG9BcnJheSgpLmZvckVhY2gobW9kZWwgPT4gdGhpcy5mb3JtU2VhcmNoLmFkZENvbnRyb2wobW9kZWwpKTtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVzZWFyY2hsYXN0ICYmIHRoaXMucGFnZWQgJiYgdGhpcy5fYXV0aGVudGljYXRpb25TZXJ2aWNlLmdldFVybEdlbmVyaWNhKHRoaXMuX2xhc3RTZWFyY2gudXJsKSA9PSB0aGlzLl9hdXRoZW50aWNhdGlvblNlcnZpY2UuZ2V0VXJsR2VuZXJpY2EodGhpcy51cmwpKVxyXG4gICAgICAgICAgICB0aGlzLnBhZ2luYXRvci5pbmRleCA9IHRoaXMuX2xhc3RTZWFyY2guaW5kZXg7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmR5bmFtaWNjb2xzID09IG51bGwpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXRDb2x1bW5zKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0UGVybWlzc2lvbigpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMubG9hZG9uaW5pdClcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0RGF0YSgpO1xyXG5cclxuICAgICAgICAgICAgZWxzZSB0aGlzLmhpZGVMb2FkKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBlbHNlIHRoaXMuX2RhdGFBY2Nlc3NTZXJ2aWNlXHJcbiAgICAgICAgICAgIC5nZXQodGhpcy5hcGksIHRoaXMuZHluYW1pY2NvbHMpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUociA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbHMgPSByLmRhdGE7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldENvbHVtbnMoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0UGVybWlzc2lvbigpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmxvYWRvbmluaXQpXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXREYXRhKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgZWxzZSB0aGlzLmhpZGVMb2FkKCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5lbmFibGVkY2xpY2tldmVudClcclxuICAgICAgICAgICAgdGhpcy5lbmFibGVkY2xpY2thY2Nlc3MgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHNldENvbHVtbnMoKSB7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmNvbHMgPT0gJycpXHJcbiAgICAgICAgICAgIGFsZXJ0KCdOZW5odW1hIGNvbHVuYSBpbmZvcm1hZGEnKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuY29scyAhPSAnJykge1xyXG4gICAgICAgICAgICB0aGlzLmNvbHVuYXNJdGVucyA9IFtdO1xyXG4gICAgICAgICAgICB0aGlzLmNvbHVuYXNIZWFkZXJzID0gW107XHJcbiAgICAgICAgICAgIHRoaXMuY29sdW5hc1R5cGUgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5jb2x1bmFzV2lkdGggPSBbXTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHRoaXMuY29scy5zcGxpdCgnLCcpLmZvckVhY2gocmVnaXN0cm8gPT4ge1xyXG5cclxuICAgICAgICAgICAgICAgIGxldCBjb2x1bW46IHN0cmluZyA9IHJlZ2lzdHJvO1xyXG4gICAgICAgICAgICAgICAgbGV0IGhlYWRlcjogc3RyaW5nID0gcmVnaXN0cm87XHJcbiAgICAgICAgICAgICAgICBsZXQgdHlwZTogc3RyaW5nID0gJyc7XHJcbiAgICAgICAgICAgICAgICBsZXQgd2lkdGg6IHN0cmluZyA9ICcnO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChoZWFkZXIuaW5kZXhPZignOicpID4gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgZGFkb3MgPSByZWdpc3Ryby5zcGxpdCgnOicpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbiA9IGRhZG9zWzBdO1xyXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlciA9IGRhZG9zWzFdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChoZWFkZXIuaW5kZXhPZignPScpID4gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcGFydHMgPSBoZWFkZXIuc3BsaXQoJz0nKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbHVtbiA9PSBoZWFkZXIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbiA9IHBhcnRzWzBdO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBoZWFkZXIgPSBwYXJ0c1swXTtcclxuICAgICAgICAgICAgICAgICAgICB0eXBlID0gcGFydHNbMV07XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IGF1eCA9IHR5cGUgPT0gJycgPyBoZWFkZXIgOiB0eXBlO1xyXG4gICAgICAgICAgICAgICAgaWYgKGF1eC5pbmRleE9mKCcqJykgPiAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBoZWFkZXJJbmZvID0gYXV4LnNwbGl0KCcqJyk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlID09ICcnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb2x1bW4gPT0gaGVhZGVyKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uID0gaGVhZGVySW5mb1swXTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlciA9IGhlYWRlckluZm9bMF07XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB0eXBlID0gaGVhZGVySW5mb1swXTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgd2lkdGggPSBoZWFkZXJJbmZvWzFdO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAod2lkdGguaW5kZXhPZignJScpIDwgMCAmJiB3aWR0aC5pbmRleE9mKCdweCcpIDwgMClcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGggKz0gJ3B4JztcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbHVuYXNJdGVucy5wdXNoKGNvbHVtbik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbHVuYXNIZWFkZXJzLnB1c2goaGVhZGVyKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29sdW5hc1R5cGUucHVzaCh0eXBlID09ICcnID8gJ2xhYmVsJyA6IHR5cGUpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb2x1bmFzV2lkdGgucHVzaCh3aWR0aCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzZXRQYWdlYmFyVGl0bGUoKSB7XHJcbiAgICAgICAgbGV0IGF1eCA9ICcnO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5wcmVmaXh0aXRsZSAhPSAnJylcclxuICAgICAgICAgICAgYXV4ID0gdGhpcy5fdHJhbnNsYXRlLnRyYW5zbGF0ZSh0aGlzLnByZWZpeHRpdGxlKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMucmVzdWx0VGl0bGUgIT0gJycpXHJcbiAgICAgICAgICAgIGF1eCArPSAodGhpcy5wcmVmaXh0aXRsZSAhPSAnJyA/ICcgLyAnIDogJycpICsgdGhpcy5fdHJhbnNsYXRlLnRyYW5zbGF0ZSh0aGlzLnJlc3VsdFRpdGxlKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMucGFnZXRpdGxlICE9ICcnKVxyXG4gICAgICAgICAgICBhdXggKz0gKHRoaXMucmVzdWx0VGl0bGUgIT0gJycgfHwgdGhpcy5wcmVmaXh0aXRsZSAhPSAnJyA/ICcgLyAnIDogJycpICsgdGhpcy5fdHJhbnNsYXRlLnRyYW5zbGF0ZSh0aGlzLnBhZ2V0aXRsZSk7XHJcblxyXG4gICAgICAgIHRoaXMucGFnZWJhclRpdGxlID0gYXV4O1xyXG4gICAgfVxyXG5cclxuICAgIG5hdmlnYXRlVG8odXJsOiBzdHJpbmcsIHBhc3NJZDogYm9vbGVhbiwgaWQ/OiBzdHJpbmcpIHtcclxuXHJcbiAgICAgICAgaWYgKHBhc3NJZCkge1xyXG4gICAgICAgICAgICBpZiAodXJsLmluZGV4T2YoXCI6aWRcIikgPiAtMSlcclxuICAgICAgICAgICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKHVybC5yZXBsYWNlKCc6aWQnLCBpZCkpO1xyXG4gICAgICAgICAgICBlbHNlIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShbdXJsLCBpZF0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZWxzZSB0aGlzLl9yb3V0ZXIubmF2aWdhdGVCeVVybCh1cmwpO1xyXG4gICAgfVxyXG5cclxuICAgIG9wZW5DdXN0b21Nb2RhbChtb2RhbENvbXBvbmVudDogYW55LCB3aWR0aDogTnVtYmVyLCBtb2RlbDogYW55ID0gbnVsbCkge1xyXG5cclxuICAgICAgICB0aGlzLl9wcm9wLnNldChJbmZvUGFnZUFjdGlvbi5Ob25lLCBtb2RlbCk7XHJcbiAgICAgICAgdGhpcy5vcGVuTW9kYWwobW9kYWxDb21wb25lbnQsIHdpZHRoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXREYXRhKCkge1xyXG4gICAgICAgIHRoaXMubWVzc2FnZXMgPSBbXTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuYXBpID09IG51bGwgfHwgdGhpcy5hcGkgPT0gJycpIHtcclxuICAgICAgICAgICAgdGhpcy5oaWRlTG9hZCgpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zZWFyY2htb2RlbCAhPSBudWxsKVxyXG4gICAgICAgICAgICB0aGlzLmdldFNlYXJjaCgpO1xyXG5cclxuICAgICAgICBlbHNlIGlmICh0aGlzLnBhZ2VkKVxyXG4gICAgICAgICAgICB0aGlzLmdldFBhZ2VkKCk7XHJcblxyXG4gICAgICAgIGVsc2UgaWYgKHRoaXMucGFyZW50ID09IG51bGwpXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0QWxsKCk7XHJcblxyXG4gICAgICAgIGVsc2UgdGhpcy5nZXRCeVBhcmVudElkKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0QWxsKCk6IGFueSB7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnNlYXJjaG1vZGVsID09IG51bGwpXHJcbiAgICAgICAgICAgIHRoaXMuX2RhdGFBY2Nlc3NTZXJ2aWNlXHJcbiAgICAgICAgICAgICAgICAuZ2V0KHRoaXMuYXBpLCB0aGlzLm1ldGhvZClcclxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUociA9PiB0aGlzLmdldERhdGFSZXR1cm4ocikpO1xyXG5cclxuICAgICAgICBlbHNlIHRoaXMuX2RhdGFBY2Nlc3NTZXJ2aWNlXHJcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuYXBpLCB0aGlzLnNlYXJjaG1vZGVsLCB0aGlzLm1ldGhvZClcclxuICAgICAgICAgICAgLnN1YnNjcmliZShyID0+IHRoaXMuZ2V0RGF0YVJldHVybihyKSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UGFnZWQoKTogYW55IHtcclxuXHJcbiAgICAgICAgbGV0IHBhcmFtcyA9IHRoaXMucGFyZW50ID09IG51bGwgPyBcIlwiIDogXCJpZD1cIiArIHRoaXMucGFyZW50ICsgXCImXCI7XHJcbiAgICAgICAgcGFyYW1zICs9ICdpbmRleD0nICsgdGhpcy5wYWdpbmF0b3IuaW5kZXggKyAnJnNpemU9JyArIHRoaXMuc2l6ZTtcclxuXHJcbiAgICAgICAgdGhpcy5fZGF0YUFjY2Vzc1NlcnZpY2VcclxuICAgICAgICAgICAgLmdldCh0aGlzLmFwaSwgdGhpcy5tZXRob2QsIHBhcmFtcylcclxuICAgICAgICAgICAgLnN1YnNjcmliZShyID0+IHRoaXMuZ2V0RGF0YVJldHVybihyLCB0cnVlKSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U2VhcmNoKCk6IGFueSB7XHJcbiAgICAgICAgdGhpcy5vbmJlZm9yZXNlYXJjaC5lbWl0KCk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnBhZ2VkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNobW9kZWwuSW5kZXggPSB0aGlzLnBhZ2luYXRvci5pbmRleDtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2htb2RlbC5TaXplID0gdGhpcy5zaXplO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5fZGF0YUFjY2Vzc1NlcnZpY2VcclxuICAgICAgICAgICAgLnBvc3QodGhpcy5hcGksIHRoaXMuc2VhcmNobW9kZWwsIHRoaXMubWV0aG9kKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHIgPT4gdGhpcy5nZXREYXRhUmV0dXJuKHIsIHRoaXMucGFnZWQpKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRCeVBhcmVudElkKCk6IGFueSB7XHJcbiAgICAgICAgdGhpcy5fZGF0YUFjY2Vzc1NlcnZpY2VcclxuICAgICAgICAgICAgLmdldCh0aGlzLmFwaSwgdGhpcy5tZXRob2QsICdpZD0nICsgdGhpcy5wYXJlbnQpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUociA9PiB0aGlzLmdldERhdGFSZXR1cm4ociwgZmFsc2UpKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXREYXRhUmV0dXJuKHJlc3VsdDogYW55LCByZWZyZXNoUGFnaW5hdG9yOiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgICAgICBcclxuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZXNlYXJjaGxhc3QpIHtcclxuICAgICAgICAgICAgdGhpcy5fbGFzdFNlYXJjaC51cmwgPSB0aGlzLl9hdXRoZW50aWNhdGlvblNlcnZpY2UuZ2V0VXJsR2VuZXJpY2EodGhpcy51cmwpO1xyXG4gICAgICAgICAgICB0aGlzLl9sYXN0U2VhcmNoLmVuYWJsZWRTZWFyY2ggPSB0aGlzLmVuYWJsZWRTZWFyY2g7XHJcbiAgICAgICAgICAgIHRoaXMuX2xhc3RTZWFyY2gubW9kZWwgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLnNlYXJjaG1vZGVsKTtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLnBhZ2VkKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5fbGFzdFNlYXJjaC5pbmRleCA9IHRoaXMucGFnaW5hdG9yLmluZGV4O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHJlc3VsdC5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0YSA9IHJlc3VsdC5kYXRhO1xyXG5cclxuICAgICAgICAgICAgaWYgKCF0aGlzLnN0YXRpY3RpdGxlICYmIHJlc3VsdC5uYW1lICE9IG51bGwpXHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlc3VsdFRpdGxlID0gdGhpcy5fdHJhbnNsYXRlLnRyYW5zbGF0ZShyZXN1bHQubmFtZSk7XHJcblxyXG4gICAgICAgICAgICBpZiAocmVzdWx0LmRlc2NyaXB0aW9uICE9IG51bGwpXHJcbiAgICAgICAgICAgICAgICB0aGlzLmRlc2NyaXB0aW9uID0gcmVzdWx0LmRlc2NyaXB0aW9uO1xyXG5cclxuICAgICAgICAgICAgaWYgKHJlc3VsdC5wYXJlbnRJZCAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5wYXJlbnRJZFVybCA9IHJlc3VsdC5wYXJlbnRJZDtcclxuXHJcbiAgICAgICAgICAgIGlmIChyZWZyZXNoUGFnaW5hdG9yKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5wYWdpbmF0b3IucmVmcmVzaChyZXN1bHQudG90YWwpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuYXV0b3JlZnJlc2ggPiAwICYmIHRoaXMuY3VycmVudFVybCA9PSBsb2NhdGlvbi5ocmVmKVxyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7IHRoaXMuZ2V0RGF0YSgpOyB9LCB0aGlzLmF1dG9yZWZyZXNoICogMTAwMCk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmZpbGxJY29ucygpO1xyXG5cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmRhdGEgPSBbXTtcclxuICAgICAgICAgICAgaWYodGhpcy5zaG93bWVzc2FnZWVycm9yKSB0aGlzLm1lc3NhZ2VzID0gcmVzdWx0Lm1lc3NhZ2VzO1xyXG4gICAgICAgIH0gXHJcblxyXG4gICAgICAgIHRoaXMuaGlkZUxvYWQoKTtcclxuICAgICAgICB0aGlzLm9ubG9hZGNvbXBsZXRlLmVtaXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBjaGFuZ2VQYWdlKGluZGV4OiBudW1iZXIpIHtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucGFnaW5hdG9yLmluZGV4ID0gaW5kZXg7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnNlYXJjaG1vZGVsICE9IG51bGwpXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0U2VhcmNoKCk7XHJcblxyXG4gICAgICAgIGVsc2UgdGhpcy5nZXRQYWdlZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNhbmNlbFNlYXJjaCgpIHtcclxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMuc2VhcmNobW9kZWwsIHRoaXMuc2VhcmNoTW9kZWxSZXNldCk7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5zZWFyY2hvcGVuZWQpXHJcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlZFNlYXJjaCA9IGZhbHNlO1xyXG5cclxuICAgICAgICB0aGlzLnNlYXJjaCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHNlYXJjaCgpIHtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmICh0aGlzLnBhZ2VkKVxyXG4gICAgICAgICAgICB0aGlzLnBhZ2luYXRvci5pbmRleCA9IDA7XHJcblxyXG4gICAgICAgIHRoaXMuZ2V0RGF0YSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZCgpIHtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZm9ybSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3Byb3Auc2V0KEluZm9QYWdlQWN0aW9uLk5ldywgbnVsbCk7XHJcbiAgICAgICAgICAgIHRoaXMub3Blbk1vZGFsKCk7XHJcblxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm5ld3VybCA9PSBudWxsIHx8IHRoaXMubmV3dXJsID09ICcnKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5uZXd1cmwgPSB0aGlzLnVybDtcclxuXHJcbiAgICAgICAgICAgIHRoaXMubmV3dXJsICs9ICcvbm92byc7XHJcbiAgICAgICAgICAgIHRoaXMubmV3dXJsID0gdGhpcy5uZXd1cmwucmVwbGFjZSgnLy8nLCAnLycpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlQnlVcmwodGhpcy5uZXd1cmwpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5vbm5ldy5lbWl0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgZGV0YWlsKG1vZGVsOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9wcm9wLnNldChJbmZvUGFnZUFjdGlvbi5TZWFyY2gsIG1vZGVsKTtcclxuICAgICAgICB0aGlzLm9wZW5Nb2RhbCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGFjY2Vzcyhtb2RlbDogYW55KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuZW5hYmxlZGNsaWNrYWNjZXNzKXtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZW5hYmxlZGNsaWNrZXZlbnQpXHJcbiAgICAgICAgICAgICAgICB0aGlzLm9udmlldy5lbWl0KG1vZGVsKTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBlbHNlIHRoaXMuZWRpdChtb2RlbCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHZpZXcobW9kZWw6IGFueSk6IHZvaWQge1xyXG5cclxuICAgICAgICBpZiAodGhpcy5mb3JtICE9IG51bGwpIHtcclxuICAgICAgICAgICAgdGhpcy5fcHJvcC5zZXQoSW5mb1BhZ2VBY3Rpb24uVmlldywgbW9kZWwpO1xyXG4gICAgICAgICAgICB0aGlzLm9wZW5Nb2RhbCgpO1xyXG5cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAodGhpcy52aWV3dXJsID09IG51bGwgfHwgdGhpcy52aWV3dXJsID09ICcnKVxyXG4gICAgICAgICAgICAgICAgdGhpcy52aWV3dXJsID0gdGhpcy51cmw7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgdGhpcy52aWV3dXJsICs9ICcvJyArIG1vZGVsLklkICsgKHRoaXMuZW5hYmxlZGNsaWNrYWNjZXNzID8gJycgOiAnL3Zpc3VhbGl6YXInKTtcclxuICAgICAgICAgICAgdGhpcy52aWV3dXJsID0gdGhpcy52aWV3dXJsLnJlcGxhY2UoJy8vJywgJy8nKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRoaXMudmlld3VybCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLm9udmlldy5lbWl0KG1vZGVsKTtcclxuICAgIH1cclxuXHJcbiAgICBlZGl0KG1vZGVsOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5oYXNQZXJtaXNzaW9uRWRpdCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5mb3JtICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3Byb3Auc2V0KEluZm9QYWdlQWN0aW9uLkVkaXQsIG1vZGVsKTtcclxuICAgICAgICAgICAgICAgIHRoaXMub3Blbk1vZGFsKCk7XHJcblxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZWRpdHVybCA9PSBudWxsIHx8IHRoaXMuZWRpdHVybCA9PSAnJylcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVkaXR1cmwgPSB0aGlzLnVybDtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmVkaXR1cmwgPSB0aGlzLmVkaXR1cmwucmVwbGFjZSgnLy8nLCAnLycpO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShbdGhpcy5lZGl0dXJsLCBtb2RlbC5JZF0pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLm9uZWRpdC5lbWl0KG1vZGVsKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5mb3JtICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3Byb3Auc2V0KEluZm9QYWdlQWN0aW9uLlZpZXcsIG1vZGVsKTtcclxuICAgICAgICAgICAgICAgIHRoaXMub3Blbk1vZGFsKCk7XHJcbiAgICBcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnZpZXd1cmwgPT0gbnVsbCB8fCB0aGlzLnZpZXd1cmwgPT0gJycpXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3dXJsID0gdGhpcy51cmw7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB0aGlzLnZpZXd1cmwgKz0gJy8nICsgbW9kZWwuSWQgKyAodGhpcy5lbmFibGVkY2xpY2thY2Nlc3MgPyAnJyA6ICcvdmlzdWFsaXphcicpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy52aWV3dXJsID0gdGhpcy52aWV3dXJsLnJlcGxhY2UoJy8vJywgJy8nKTtcclxuICAgIFxyXG4gICAgICAgICAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlQnlVcmwodGhpcy52aWV3dXJsKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgXHJcbiAgICAgICAgICAgIHRoaXMub252aWV3LmVtaXQobW9kZWwpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBkZWxldGUobW9kZWw6IGFueSkge1xyXG4gICAgICAgIGlmKHRoaXMuY3VzdG9tZGVsZXRlLm9ic2VydmVycy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VzdG9tZGVsZXRlLmVtaXQobW9kZWwpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLl9kaWFsb2cuWWVzT3JObygnTWVuc2FnZW1FeGNsdWlyJykuc3Vic2NyaWJlKHIgPT4ge1xyXG4gICAgICAgICAgICBpZiAoci5idXR0b24gPT0gSW5mb0RpYWxvZ0J1dHRvbnMuWWVzKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuX2RhdGFBY2Nlc3NTZXJ2aWNlLmRlbGV0ZSh0aGlzLmFwaSwgbW9kZWwuSWQpLnN1YnNjcmliZShkID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uZGVsZXRlLmVtaXQoZCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChkLnN1Y2Nlc3MpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0RGF0YSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGVMb2FkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNob3dtZXNzYWdlZXJyb3IpIHRoaXMubWVzc2FnZXMgPSBkLm1lc3NhZ2VzO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZmlsbEljb25zKCkge1xyXG4gICAgICAgIHRoaXMuaWNvbnMgPSBbXTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZGF0YSA9PSBudWxsKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIHRoaXMuZGF0YS5mb3JFYWNoKHJldCA9PiB7XHJcblxyXG4gICAgICAgICAgICBsZXQgaXRlbSA9IHJldFsnSWNvbiddO1xyXG4gICAgICAgICAgICBpZiAoaXRlbSA9PSBudWxsKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICAgICAgaWYgKGl0ZW0uaW5kZXhPZignfCcpID4gLTEpIHtcclxuICAgICAgICAgICAgICAgIGxldCByZXRvcm5vID0gaXRlbVxyXG4gICAgICAgICAgICAgICAgICAgIC5zcGxpdCgnfCcpXHJcbiAgICAgICAgICAgICAgICAgICAgLm1hcChpY29uZSA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaWNvbmUuaW5kZXhPZignOicpID4gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkYWRvcyA9IGljb25lLnNwbGl0KCc6Jyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBOYW1lOiBpdGVtLCBJY29uOiBkYWRvc1swXSwgVG9vbHRpcDogZGFkb3NbMV0sIFByaW5jaXBhbDogdHJ1ZSB9O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHJldHVybiB7IE5hbWU6IGl0ZW0sIEljb246IGljb25lLCBUb29sdGlwOiAnJywgUHJpbmNpcGFsOiB0cnVlIH07XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIH0pLmZpbHRlcihhID0+IGEuSWNvbiAhPSBudWxsICYmIGEuSWNvbiAhPSAnJyk7XHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IGluZGV4ID0gMDtcclxuICAgICAgICAgICAgICAgIHJldG9ybm8uZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pY29ucy5maW5kKGEgPT4gYS5OYW1lID09IGVsZW1lbnQuTmFtZSAmJiBhLkljb24gPT0gZWxlbWVudC5JY29uKSA9PSBudWxsKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5QcmluY2lwYWwgPSBpbmRleCA9PSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmljb25zLnB1c2goZWxlbWVudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBpbmRleCsrO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgZWxlbWVudDogYW55ID0gW107XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uaW5kZXhPZignOicpID4gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgZGFkb3MgPSBpdGVtLnNwbGl0KCc6Jyk7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudCA9IHsgTmFtZTogaXRlbSwgSWNvbjogZGFkb3NbMF0sIFRvb2x0aXA6IGRhZG9zWzFdLCBQcmluY2lwYWw6IHRydWUgfTtcclxuXHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgZWxlbWVudCA9IHsgTmFtZTogaXRlbSwgSWNvbjogaXRlbSwgVG9vbHRpcDogXCJcIiwgUHJpbmNpcGFsOiB0cnVlIH07XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaWNvbnMuZmluZChhID0+IGEuTmFtZSA9PSBlbGVtZW50Lk5hbWUpID09IG51bGwpXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pY29ucy5wdXNoKGVsZW1lbnQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaW5mbyh2YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuX2RpYWxvZy5hbGVydCh2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgYmFjaygpIHtcclxuICAgICAgICB0aGlzLm5hdmlnYXRlVG8odGhpcy5iYWNrdXJsICsgKHRoaXMucGFyZW50SWRVcmwgPT0gbnVsbCA/IFwiXCIgOiBcIi9cIiArIHRoaXMucGFyZW50SWRVcmwpLCBmYWxzZSk7XHJcbiAgICB9XHJcblxyXG4gICAgb3Blbk1vZGFsKG1vZGFsQ29tcG9uZW50OiBhbnkgPSB0aGlzLmZvcm0sIHdpZHRoOiBOdW1iZXIgPSB0aGlzLndpZHRoKSB7XHJcblxyXG4gICAgICAgIGxldCByZWYgPSB0aGlzLm1vZGFsLm9wZW4obW9kYWxDb21wb25lbnQsIHtcclxuICAgICAgICAgICAgZGF0YTogdGhpcy5fcHJvcCxcclxuICAgICAgICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG4gICAgICAgICAgICB3aWR0aDogd2lkdGggKyAncHgnXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocjogSW5mb0Zvcm1Qcm9wTW9kZWwpID0+IHtcclxuICAgICAgICAgICAgaWYgKHIgPT0gbnVsbClcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgICAgIGlmIChyLm1vZGFsQWN0aW9uID09IEluZm9Nb2RhbEFjdGlvbi5TYXZlKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5nZXREYXRhKCk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLm9uY2xvc2Vtb2RhbC5lbWl0KHIpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZWYua2V5ZG93bkV2ZW50cygpLnN1YnNjcmliZSgocikgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMubG9hZGluZyAmJiAoci5rZXkgPT0gXCJFc2NhcGVcIiB8fCByLmtleSA9PSBcIkVzY1wiIHx8IHIua2V5ID09IFwiMjdcIikpXHJcbiAgICAgICAgICAgICAgICByZWYuY2xvc2UoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBoaWRlTG9hZCgpIHtcclxuICAgICAgICB0aGlzLnNldFBhZ2ViYXJUaXRsZSgpO1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFBlcm1pc3Npb24oKSB7XHJcbiAgICAgICAgdGhpcy5oYXNQZXJtaXNzaW9uTmV3ID0gdGhpcy5fYXV0aGVudGljYXRpb25TZXJ2aWNlLmhhc1Blcm1pc3Npb24odGhpcy51cmwsICduZXcnKTtcclxuICAgICAgICB0aGlzLmhhc1Blcm1pc3Npb25FZGl0ID0gdGhpcy5fYXV0aGVudGljYXRpb25TZXJ2aWNlLmhhc1Blcm1pc3Npb24odGhpcy51cmwsICdlZGl0Jyk7XHJcbiAgICAgICAgdGhpcy5oYXNQZXJtaXNzaW9uRGVsZXRlID0gdGhpcy5fYXV0aGVudGljYXRpb25TZXJ2aWNlLmhhc1Blcm1pc3Npb24odGhpcy51cmwsICdyZW1vdmUnKTtcclxuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZG93bmxvYWQoYXJxdWl2b0lkOiBhbnkpIHtcclxuICAgICAgICBpZiAodGhpcy5hcGlkb3dubG9hZCA9PSBudWxsKVxyXG4gICAgICAgICAgICBhbGVydCgnQVBJIERvd25sb2FkIGVzdMOhIG51bGwnKTtcclxuXHJcbiAgICAgICAgdGhpcy5fZGF0YUFjY2Vzc1NlcnZpY2UuZ2V0KHRoaXMuYXBpZG93bmxvYWQsICh0aGlzLm1ldGhvZGRvd25sb2FkICE9IG51bGwgPyB0aGlzLm1ldGhvZGRvd25sb2FkIDogJ0dldCcpLCBcImlkPVwiICsgYXJxdWl2b0lkKS5zdWJzY3JpYmUociA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZXMgPSByLm1lc3NhZ2VzO1xyXG5cclxuICAgICAgICAgICAgaWYgKHIuc3VjY2VzcyAmJiByLmRhdGEgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIGJpbmFyeVN0cmluZyA9IHdpbmRvdy5hdG9iKHIuZGF0YS5Db250ZXVkbyk7XHJcbiAgICAgICAgICAgICAgICB2YXIgYmluYXJ5TGVuID0gYmluYXJ5U3RyaW5nLmxlbmd0aDtcclxuICAgICAgICAgICAgICAgIHZhciBieXRlcyA9IG5ldyBVaW50OEFycmF5KGJpbmFyeUxlbik7XHJcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJpbmFyeUxlbjsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICB2YXIgYXNjaWkgPSBiaW5hcnlTdHJpbmcuY2hhckNvZGVBdChpKTtcclxuICAgICAgICAgICAgICAgICAgIGJ5dGVzW2ldID0gYXNjaWk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgdmFyIGJsb2IgPSBuZXcgQmxvYihbYnl0ZXNdKTtcclxuICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubmF2aWdhdG9yICYmIHdpbmRvdy5uYXZpZ2F0b3IubXNTYXZlT3JPcGVuQmxvYikge1xyXG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5uYXZpZ2F0b3IubXNTYXZlT3JPcGVuQmxvYihibG9iLCByLmRhdGEuTm9tZSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBmaWxlVVJMID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgZWxlbWVudEE6IEhUTUxBbmNob3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpIGFzIEhUTUxBbmNob3JFbGVtZW50O1xyXG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnRBLmhyZWYgPSBmaWxlVVJMO1xyXG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnRBLmRvd25sb2FkID0gci5kYXRhLk5vbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtZW50QSk7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudEEuY2xpY2soKTsgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZWxlbWVudEEpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGV2ZW50QnV0dG9uKG1vZGVsOiBhbnksIGFwaTogYW55LCBtZXRob2Q6IHN0cmluZywgY29uZmlybTogYm9vbGVhbiA9IHRydWUpIHtcclxuICAgICAgICBpZiAoY29uZmlybSkge1xyXG4gICAgICAgICAgICB0aGlzLl9kaWFsb2dcclxuICAgICAgICAgICAgICAgIC5ZZXNPck5vKCdNZW5zYWdlbUNvbmZpcm1hcicpXHJcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKHJldCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJldC5idXR0b24gPT0gSW5mb0RpYWxvZ0J1dHRvbnMuWWVzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2RhdGFBY2Nlc3NTZXJ2aWNlLnBvc3QoYXBpLCBtb2RlbCwgbWV0aG9kKS5zdWJzY3JpYmUociA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoci5zdWNjZXNzKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0RGF0YSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZih0aGlzLnNob3dtZXNzYWdlZXJyb3IpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlcyA9IHIubWVzc2FnZXM7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuX2RhdGFBY2Nlc3NTZXJ2aWNlLnBvc3QoYXBpLCBtb2RlbCwgbWV0aG9kKS5zdWJzY3JpYmUociA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoci5zdWNjZXNzKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0RGF0YSgpO1xyXG4gICAgICAgICAgICAgICAgZWxzZSBpZih0aGlzLnNob3dtZXNzYWdlZXJyb3IpXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlcyA9IHIubWVzc2FnZXM7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufSJdfQ==
|
|
1120
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiRDovZGV2L0luZm8gVXRpbGl0aWVzL0luZm8gTGlicmFyeSAtIEFuZ3VsYXIvcHJvamVjdHMvaW5mby1saWJyYXJ5L3NyYy8iLCJzb3VyY2VzIjpbImNvbnRyb2xzL2dyaWQvZ3JpZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBaUIsWUFBWSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEssT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNqRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXBFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1B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Q3hDLHNDQUE0Qjs7Ozs7SUFDNUIscUNBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBBZnRlclZpZXdJbml0LCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgVmlld0NoaWxkLCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29udGVudENoaWxkcmVuLCBSZW5kZXJlcjIsIEVsZW1lbnRSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBJbmZvRGF0YVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZS9kYXRhLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgSW5mb0Zvcm1Qcm9wTW9kZWwgfSBmcm9tIFwiLi4vLi4vbW9kZWwvZm9ybS1wcm9wLm1vZGVsXCI7XHJcbmltcG9ydCB7IEluZm9QYWdpbmF0b3JDb21wb25lbnQgfSBmcm9tIFwiLi4vcGFnaW5hdG9yL3BhZ2luYXRvci5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgSW5mb0RpYWxvZ01vZGFsIH0gZnJvbSBcIi4uLy4uL2xheW91dHMvZGlhbG9nL2RpYWxvZy5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQgeyBJbmZvQXV0aGVudGljYXRpb25TZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2UvYXV0aGVudGljYXRpb24uc2VydmljZVwiO1xyXG5pbXBvcnQgeyBJbmZvVHJhbnNsYXRlU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlL3RyYW5zbGF0ZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEluZm9EaWFsb2dCdXR0b25zIH0gZnJvbSBcIi4uLy4uL2VudW0vZGlhbG9nLWJ1dHRvbnMuZW51bVwiO1xyXG5pbXBvcnQgeyBJbmZvTW9kYWxBY3Rpb24gfSBmcm9tIFwiLi4vLi4vZW51bS9tb2RhbC1hY3Rpb24uZW51bVwiO1xyXG5pbXBvcnQgeyBJbmZvUGFnZUFjdGlvbiB9IGZyb20gXCIuLi8uLi9lbnVtL3BhZ2UtYWN0aW9uLmVudW1cIjtcclxuaW1wb3J0IHsgSW5mb1BhZ2ViYXJCdXR0b25Nb2RlbCB9IGZyb20gXCIuLi8uLi9tb2RlbC9wYWdlYmFyLWJ1dHRvbnMubW9kZWxcIjtcclxuaW1wb3J0IHsgSW5mb0dyaWRCdXR0b25Nb2RlbCB9IGZyb20gXCIuLi8uLi9tb2RlbC9ncmlkLWJ1dHRvbi5tb2RlbFwiO1xyXG5pbXBvcnQgeyBJbmZvTGFzdFNlYXJjaE1vZGVsIH0gZnJvbSBcIi4uLy4uL21vZGVsL2xhc3Qtc2VhcmNoLm1vZGVsXCI7XHJcbmltcG9ydCB7IEluZm9NZXRob2RHcmlkQnV0dG9uTW9kZWwgfSBmcm9tIFwiLi4vLi4vbW9kZWwvbWV0aG9kLWdyaWQtYnV0dG9uLm1vZGVsXCI7XHJcbmltcG9ydCB7IE5nTW9kZWwsIE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgUXVlcnlMaXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEluZm9QbGF0Zm9ybU1vZGVsIH0gZnJvbSBcIi4uLy4uL21vZGVsL3BsYXRmb3JtLm1vZGVsXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnaW5mby1ncmlkJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnZ3JpZC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnZ3JpZC5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgcHJvdmlkZXJzOiBbSW5mb0Zvcm1Qcm9wTW9kZWxdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbmZvR3JpZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XHJcblxyXG4gICAgQElucHV0KCkgcGFnZXRpdGxlID0gJyc7XHJcbiAgICBASW5wdXQoKSBwcmVmaXh0aXRsZSA9ICcnO1xyXG4gICAgQElucHV0KCkgZGVzY3JpcHRpb24gPSAnJztcclxuICAgIEBJbnB1dCgpIHBhZ2ViYXJidXR0b25zOiBJbmZvUGFnZWJhckJ1dHRvbk1vZGVsW10gPSBbXTtcclxuICAgIEBJbnB1dCgpIGZ1bGxhcmVhID0gZmFsc2U7XHJcblxyXG4gICAgQElucHV0KCkgYXBpOiBhbnkgPSBudWxsO1xyXG4gICAgQElucHV0KCkgbWV0aG9kOiBzdHJpbmcgPSBudWxsO1xyXG4gICAgQElucHV0KCkgZm9ybTogYW55ID0gbnVsbDtcclxuICAgIEBJbnB1dCgpIHdpZHRoOiBudW1iZXIgPSA4MDA7XHJcbiAgICBASW5wdXQoKSBwYXJlbnQ6IGFueSA9IG51bGw7XHJcbiAgICBASW5wdXQoKSBhcGlkb3dubG9hZDogYW55ID0gbnVsbDtcclxuICAgIEBJbnB1dCgpIG1ldGhvZGRvd25sb2FkOiBzdHJpbmcgPSBudWxsO1xyXG5cclxuICAgIEBJbnB1dCgpIGJhY2t1cmwgPSAnJztcclxuICAgIEBJbnB1dCgpIG5ld3VybCA9ICcnO1xyXG4gICAgQElucHV0KCkgbmV3bGFiZWwgPSAnTm92byc7XHJcbiAgICBASW5wdXQoKSBlZGl0dXJsID0gJyc7XHJcbiAgICBASW5wdXQoKSB2aWV3dXJsID0gJyc7XHJcbiAgICBASW5wdXQoKSB0ZW1wbGF0ZXVybCA9ICcnO1xyXG5cclxuICAgIEBJbnB1dCgpIHBhZ2VkID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBzaXplID0gMTU7XHJcbiAgICBASW5wdXQoKSBhdXRvcmVmcmVzaCA9IDA7XHJcblxyXG4gICAgQElucHV0KCkgZW5hYmxlZG5ldyA9IHRydWU7XHJcbiAgICBASW5wdXQoKSBlbmFibGVkZWRpdCA9IHRydWU7XHJcbiAgICBASW5wdXQoKSBlbmFibGVkZGVsZXRlID0gdHJ1ZTtcclxuICAgIEBJbnB1dCgpIGVuYWJsZWR2aWV3ID0gdHJ1ZTtcclxuICAgIEBJbnB1dCgpIGVuYWJsZWRjYW5jZWxzZWFyY2ggPSB0cnVlO1xyXG4gICAgQElucHV0KCkgZW5hYmxlZGRldGFpbCA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgZW5hYmxlZGNsYXNzaWNvbnMgPSB0cnVlO1xyXG4gICAgQElucHV0KCkgZW5hYmxlZGNsaWNrYWNjZXNzID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBlbmFibGVkY2xpY2tldmVudCA9IGZhbHNlO1xyXG5cclxuICAgIEBJbnB1dCgpIHNlYXJjaG9wZW5lZCA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgc2VhcmNob25seW9uZWJ1dHRvbiA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgZGlzYWJsZXNlYXJjaGxhc3QgPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIHN0YXRpY3RpdGxlID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBkaXNhYmxlZGNvbCA9ICcnO1xyXG4gICAgQElucHV0KCkgYWNjZXNzaWNvbiA9ICdhcnJvd19mb3J3YXJkJztcclxuXHJcbiAgICBASW5wdXQoKSBsb2Fkb25pbml0ID0gdHJ1ZTtcclxuICAgIEBJbnB1dCgpIGRhdGE6IGFueVtdO1xyXG4gICAgQElucHV0KCkgc2VhcmNobW9kZWw6IGFueSA9IG51bGw7XHJcblxyXG4gICAgQE91dHB1dCgpIG9uYmVmb3Jlc2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgQE91dHB1dCgpIG9ubG9hZGNvbXBsZXRlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgQE91dHB1dCgpIG9uY2xvc2Vtb2RhbCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAgIEBPdXRwdXQoKSBvbm5ldyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAgIEBPdXRwdXQoKSBvbmVkaXQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICBAT3V0cHV0KCkgb252aWV3ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgQE91dHB1dCgpIG9uZGVsZXRlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgQE91dHB1dCgpIGN1c3RvbWRlbGV0ZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgICBASW5wdXQoKSBkeW5hbWljY29sczogc3RyaW5nID0gbnVsbDtcclxuICAgIEBJbnB1dCgpIGJ1dHRvbnM6IEluZm9HcmlkQnV0dG9uTW9kZWxbXSA9IFtdO1xyXG4gICAgQElucHV0KCkgc2VhcmNoYnV0dG9uczogSW5mb01ldGhvZEdyaWRCdXR0b25Nb2RlbFtdID0gW107XHJcblxyXG4gICAgQElucHV0KCkgc2hvd21lc3NhZ2VlcnJvciA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgZGVmYXVsdG5ld29iamVjdDogYW55ID0gbnVsbDtcclxuICAgIFxyXG4gICAgQENvbnRlbnRDaGlsZHJlbihOZ01vZGVsKSBmb3JtTW9kZWw6IFF1ZXJ5TGlzdDxOZ01vZGVsPjtcclxuICAgIEBWaWV3Q2hpbGQoTmdGb3JtLCB7IHN0YXRpYzogZmFsc2UgfSkgZm9ybVNlYXJjaDogTmdGb3JtO1xyXG4gICAgXHJcbiAgICBtZXNzYWdlczogU3RyaW5nW10gPSBbXTtcclxuICAgIHJlc3VsdFRpdGxlID0gJyc7XHJcbiAgICBlbmFibGVkU2VhcmNoID0gZmFsc2U7XHJcbiAgICBzZWFyY2hNb2RlbFJlc2V0OiBhbnkgPSBudWxsO1xyXG5cclxuICAgIHNob3dQYWdlYmFyID0gZmFsc2U7XHJcbiAgICBoYXNQZXJtaXNzaW9uTmV3ID0gZmFsc2U7XHJcbiAgICBoYXNQZXJtaXNzaW9uRWRpdCA9IGZhbHNlO1xyXG4gICAgaGFzUGVybWlzc2lvbkRlbGV0ZSA9IGZhbHNlO1xyXG5cclxuICAgIHRhYmxlSGVpZ2h0ID0gMDtcclxuICAgIGxvYWRpbmcgPSBmYWxzZTtcclxuICAgIHBhZ2ViYXJUaXRsZSA9ICcnO1xyXG4gICAgaWNvbnM6IGFueVtdID0gW107XHJcbiAgICBjb2x1bmFzSXRlbnMgPSBbXTtcclxuICAgIGNvbHVuYXNIZWFkZXJzID0gW107XHJcbiAgICBjb2x1bmFzVHlwZSA9IFtdO1xyXG4gICAgY29sdW5hc1dpZHRoID0gW107XHJcbiAgICBjdXJyZW50VXJsOiBzdHJpbmcgPSBudWxsO1xyXG4gICAgdXJsOiBzdHJpbmcgPSBudWxsO1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ3BhZ2luYXRvcicsIHsgc3RhdGljOiBmYWxzZSB9KSBwYWdpbmF0b3I6IEluZm9QYWdpbmF0b3JDb21wb25lbnQ7XHJcbiAgICBAT3V0cHV0KCkgcGFyZW50SWRVcmxDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gICAgcGFyZW50SWRVcmxWYWx1ZTogbnVtYmVyID0gbnVsbDtcclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgcGFyZW50SWRVcmwoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyZW50SWRVcmxWYWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBzZXQgcGFyZW50SWRVcmwodmFsdWUpIHtcclxuICAgICAgICB0aGlzLnBhcmVudElkVXJsVmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLnBhcmVudElkVXJsQ2hhbmdlLmVtaXQodGhpcy5wYXJlbnRJZFVybFZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBfY29sczogc3RyaW5nID0gJyc7XHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IGNvbHMoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbHM7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0IGNvbHModmFsdWUpIHtcclxuICAgICAgICB0aGlzLl9jb2xzID0gdmFsdWU7XHJcbiAgICAgICAgdGhpcy5zZXRDb2x1bW5zKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfZGlhbG9nOiBJbmZvRGlhbG9nTW9kYWwsIFxyXG4gICAgICAgICAgICAgICAgcHVibGljIF9wbGF0Zm9ybTogSW5mb1BsYXRmb3JtTW9kZWwsXHJcbiAgICAgICAgICAgICAgICBwdWJsaWMgbW9kYWw6IE1hdERpYWxvZywgXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9wcm9wOiBJbmZvRm9ybVByb3BNb2RlbCwgXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9kYXRhQWNjZXNzU2VydmljZTogSW5mb0RhdGFTZXJ2aWNlLCBcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgX3JvdXRlcjogUm91dGVyLFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfYXV0aGVudGljYXRpb25TZXJ2aWNlOiBJbmZvQXV0aGVudGljYXRpb25TZXJ2aWNlLCBcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZiwgXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIF90cmFuc2xhdGU6IEluZm9UcmFuc2xhdGVTZXJ2aWNlLCBcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgX2xhc3RTZWFyY2g6IEluZm9MYXN0U2VhcmNoTW9kZWwsXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9yZW5kZXJlcjogUmVuZGVyZXIyLCBcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgX2VsZW1lbnQ6IEVsZW1lbnRSZWYpIHsgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHRoaXMudXJsID0gKHRoaXMuX2FjdGl2YXRlZFJvdXRlLnNuYXBzaG90LmRhdGFbJ1VSTCddIHx8IHRoaXMuX3JvdXRlci51cmwpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LCAndXhjJyArIHRoaXMuX3BsYXRmb3JtLkNvbmZpZy51eCk7XHJcbiAgICAgICAgdGhpcy5zZXRQYWdlYmFyVGl0bGUoKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNobW9kZWwgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5tZXRob2QgPT0gbnVsbClcclxuICAgICAgICAgICAgICAgIHRoaXMubWV0aG9kID0gJ1NlYXJjaCc7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaE1vZGVsUmVzZXQgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLnNlYXJjaG1vZGVsKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGVsc2UgaWYgKHRoaXMucGFyZW50ICE9IG51bGwgJiYgKHRoaXMubWV0aG9kID09IG51bGwgfHwgdGhpcy5tZXRob2QgPT0gJycpKVxyXG4gICAgICAgICAgICB0aGlzLm1ldGhvZCA9ICdHZXRCeVBhcmVudElkJztcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVzZWFyY2hsYXN0ICYmIHRoaXMuX2F1dGhlbnRpY2F0aW9uU2VydmljZS5nZXRVcmxHZW5lcmljYSh0aGlzLl9sYXN0U2VhcmNoLnVybCkgPT0gdGhpcy5fYXV0aGVudGljYXRpb25TZXJ2aWNlLmdldFVybEdlbmVyaWNhKHRoaXMudXJsKSkge1xyXG4gICAgICAgICAgICB0aGlzLmVuYWJsZWRTZWFyY2ggPSB0aGlzLl9sYXN0U2VhcmNoLmVuYWJsZWRTZWFyY2g7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZiAodGhpcy5zZWFyY2htb2RlbCAhPSBudWxsICYmIHRoaXMuX2xhc3RTZWFyY2gubW9kZWwgIT0gbnVsbClcclxuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5zZWFyY2htb2RlbCwgdGhpcy5fbGFzdFNlYXJjaC5tb2RlbCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5zZWFyY2hvcGVuZWQpXHJcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlZFNlYXJjaCA9IHRydWU7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmF1dG9yZWZyZXNoID4gMClcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50VXJsID0gbG9jYXRpb24uaHJlZjtcclxuXHJcbiAgICAgICAgdGhpcy5fcHJvcC5hcGkgPSB0aGlzLmFwaTtcclxuICAgICAgICB0aGlzLl9wcm9wLm1vZGFsQ29tcG9uZW50ID0gdGhpcy5mb3JtO1xyXG4gICAgfVxyXG5cclxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgICAgICB0aGlzLnNob3dQYWdlYmFyID0gdGhpcy5wYWdldGl0bGUgIT0gJycgfHwgdGhpcy5wcmVmaXh0aXRsZSAhPSAnJztcclxuICAgICAgICBcclxuICAgICAgICBpZiAoIXRoaXMuZnVsbGFyZWEgJiYgdGhpcy5fcGxhdGZvcm0uQ29uZmlnLnV4IDw9IDIpXHJcbiAgICAgICAgICAgIHRoaXMuZnVsbGFyZWEgPSB0aGlzLnNob3dQYWdlYmFyO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5zZWFyY2htb2RlbCAmJiB0aGlzLmZvcm1Nb2RlbC5sZW5ndGggPiAwICYmIHRoaXMuZm9ybVNlYXJjaClcclxuICAgICAgICAgICAgdGhpcy5mb3JtTW9kZWwudG9BcnJheSgpLmZvckVhY2gobW9kZWwgPT4gdGhpcy5mb3JtU2VhcmNoLmFkZENvbnRyb2wobW9kZWwpKTtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVzZWFyY2hsYXN0ICYmIHRoaXMucGFnZWQgJiYgdGhpcy5fYXV0aGVudGljYXRpb25TZXJ2aWNlLmdldFVybEdlbmVyaWNhKHRoaXMuX2xhc3RTZWFyY2gudXJsKSA9PSB0aGlzLl9hdXRoZW50aWNhdGlvblNlcnZpY2UuZ2V0VXJsR2VuZXJpY2EodGhpcy51cmwpKVxyXG4gICAgICAgICAgICB0aGlzLnBhZ2luYXRvci5pbmRleCA9IHRoaXMuX2xhc3RTZWFyY2guaW5kZXg7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmR5bmFtaWNjb2xzID09IG51bGwpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXRDb2x1bW5zKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0UGVybWlzc2lvbigpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMubG9hZG9uaW5pdClcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0RGF0YSgpO1xyXG5cclxuICAgICAgICAgICAgZWxzZSB0aGlzLmhpZGVMb2FkKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBlbHNlIHRoaXMuX2RhdGFBY2Nlc3NTZXJ2aWNlXHJcbiAgICAgICAgICAgIC5nZXQodGhpcy5hcGksIHRoaXMuZHluYW1pY2NvbHMpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUociA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbHMgPSByLmRhdGE7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldENvbHVtbnMoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0UGVybWlzc2lvbigpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmxvYWRvbmluaXQpXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXREYXRhKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgZWxzZSB0aGlzLmhpZGVMb2FkKCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5lbmFibGVkY2xpY2tldmVudClcclxuICAgICAgICAgICAgdGhpcy5lbmFibGVkY2xpY2thY2Nlc3MgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHNldENvbHVtbnMoKSB7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmNvbHMgPT0gJycpXHJcbiAgICAgICAgICAgIGFsZXJ0KCdOZW5odW1hIGNvbHVuYSBpbmZvcm1hZGEnKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuY29scyAhPSAnJykge1xyXG4gICAgICAgICAgICB0aGlzLmNvbHVuYXNJdGVucyA9IFtdO1xyXG4gICAgICAgICAgICB0aGlzLmNvbHVuYXNIZWFkZXJzID0gW107XHJcbiAgICAgICAgICAgIHRoaXMuY29sdW5hc1R5cGUgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5jb2x1bmFzV2lkdGggPSBbXTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHRoaXMuY29scy5zcGxpdCgnLCcpLmZvckVhY2gocmVnaXN0cm8gPT4ge1xyXG5cclxuICAgICAgICAgICAgICAgIGxldCBjb2x1bW46IHN0cmluZyA9IHJlZ2lzdHJvO1xyXG4gICAgICAgICAgICAgICAgbGV0IGhlYWRlcjogc3RyaW5nID0gcmVnaXN0cm87XHJcbiAgICAgICAgICAgICAgICBsZXQgdHlwZTogc3RyaW5nID0gJyc7XHJcbiAgICAgICAgICAgICAgICBsZXQgd2lkdGg6IHN0cmluZyA9ICcnO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChoZWFkZXIuaW5kZXhPZignOicpID4gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgZGFkb3MgPSByZWdpc3Ryby5zcGxpdCgnOicpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbiA9IGRhZG9zWzBdO1xyXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlciA9IGRhZG9zWzFdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChoZWFkZXIuaW5kZXhPZignPScpID4gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcGFydHMgPSBoZWFkZXIuc3BsaXQoJz0nKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbHVtbiA9PSBoZWFkZXIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbiA9IHBhcnRzWzBdO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBoZWFkZXIgPSBwYXJ0c1swXTtcclxuICAgICAgICAgICAgICAgICAgICB0eXBlID0gcGFydHNbMV07XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IGF1eCA9IHR5cGUgPT0gJycgPyBoZWFkZXIgOiB0eXBlO1xyXG4gICAgICAgICAgICAgICAgaWYgKGF1eC5pbmRleE9mKCcqJykgPiAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBoZWFkZXJJbmZvID0gYXV4LnNwbGl0KCcqJyk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlID09ICcnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb2x1bW4gPT0gaGVhZGVyKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uID0gaGVhZGVySW5mb1swXTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlciA9IGhlYWRlckluZm9bMF07XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB0eXBlID0gaGVhZGVySW5mb1swXTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgd2lkdGggPSBoZWFkZXJJbmZvWzFdO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAod2lkdGguaW5kZXhPZignJScpIDwgMCAmJiB3aWR0aC5pbmRleE9mKCdweCcpIDwgMClcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGggKz0gJ3B4JztcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbHVuYXNJdGVucy5wdXNoKGNvbHVtbik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbHVuYXNIZWFkZXJzLnB1c2goaGVhZGVyKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29sdW5hc1R5cGUucHVzaCh0eXBlID09ICcnID8gJ2xhYmVsJyA6IHR5cGUpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb2x1bmFzV2lkdGgucHVzaCh3aWR0aCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzZXRQYWdlYmFyVGl0bGUoKSB7XHJcbiAgICAgICAgbGV0IGF1eCA9ICcnO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5wcmVmaXh0aXRsZSAhPSAnJylcclxuICAgICAgICAgICAgYXV4ID0gdGhpcy5fdHJhbnNsYXRlLnRyYW5zbGF0ZSh0aGlzLnByZWZpeHRpdGxlKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMucmVzdWx0VGl0bGUgIT0gJycpXHJcbiAgICAgICAgICAgIGF1eCArPSAodGhpcy5wcmVmaXh0aXRsZSAhPSAnJyA/ICcgLyAnIDogJycpICsgdGhpcy5fdHJhbnNsYXRlLnRyYW5zbGF0ZSh0aGlzLnJlc3VsdFRpdGxlKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMucGFnZXRpdGxlICE9ICcnKVxyXG4gICAgICAgICAgICBhdXggKz0gKHRoaXMucmVzdWx0VGl0bGUgIT0gJycgfHwgdGhpcy5wcmVmaXh0aXRsZSAhPSAnJyA/ICcgLyAnIDogJycpICsgdGhpcy5fdHJhbnNsYXRlLnRyYW5zbGF0ZSh0aGlzLnBhZ2V0aXRsZSk7XHJcblxyXG4gICAgICAgIHRoaXMucGFnZWJhclRpdGxlID0gYXV4O1xyXG4gICAgfVxyXG5cclxuICAgIG5hdmlnYXRlVG8odXJsOiBzdHJpbmcsIHBhc3NJZDogYm9vbGVhbiwgaWQ/OiBzdHJpbmcpIHtcclxuXHJcbiAgICAgICAgaWYgKHBhc3NJZCkge1xyXG4gICAgICAgICAgICBpZiAodXJsLmluZGV4T2YoXCI6aWRcIikgPiAtMSlcclxuICAgICAgICAgICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKHVybC5yZXBsYWNlKCc6aWQnLCBpZCkpO1xyXG4gICAgICAgICAgICBlbHNlIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShbdXJsLCBpZF0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZWxzZSB0aGlzLl9yb3V0ZXIubmF2aWdhdGVCeVVybCh1cmwpO1xyXG4gICAgfVxyXG5cclxuICAgIG9wZW5DdXN0b21Nb2RhbChtb2RhbENvbXBvbmVudDogYW55LCB3aWR0aDogTnVtYmVyLCBtb2RlbDogYW55ID0gbnVsbCkge1xyXG5cclxuICAgICAgICB0aGlzLl9wcm9wLnNldChJbmZvUGFnZUFjdGlvbi5Ob25lLCBtb2RlbCk7XHJcbiAgICAgICAgdGhpcy5vcGVuTW9kYWwobW9kYWxDb21wb25lbnQsIHdpZHRoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXREYXRhKCkge1xyXG4gICAgICAgIHRoaXMubWVzc2FnZXMgPSBbXTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuYXBpID09IG51bGwgfHwgdGhpcy5hcGkgPT0gJycpIHtcclxuICAgICAgICAgICAgdGhpcy5oaWRlTG9hZCgpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zZWFyY2htb2RlbCAhPSBudWxsKVxyXG4gICAgICAgICAgICB0aGlzLmdldFNlYXJjaCgpO1xyXG5cclxuICAgICAgICBlbHNlIGlmICh0aGlzLnBhZ2VkKVxyXG4gICAgICAgICAgICB0aGlzLmdldFBhZ2VkKCk7XHJcblxyXG4gICAgICAgIGVsc2UgaWYgKHRoaXMucGFyZW50ID09IG51bGwpXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0QWxsKCk7XHJcblxyXG4gICAgICAgIGVsc2UgdGhpcy5nZXRCeVBhcmVudElkKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0QWxsKCk6IGFueSB7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnNlYXJjaG1vZGVsID09IG51bGwpXHJcbiAgICAgICAgICAgIHRoaXMuX2RhdGFBY2Nlc3NTZXJ2aWNlXHJcbiAgICAgICAgICAgICAgICAuZ2V0KHRoaXMuYXBpLCB0aGlzLm1ldGhvZClcclxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUociA9PiB0aGlzLmdldERhdGFSZXR1cm4ocikpO1xyXG5cclxuICAgICAgICBlbHNlIHRoaXMuX2RhdGFBY2Nlc3NTZXJ2aWNlXHJcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuYXBpLCB0aGlzLnNlYXJjaG1vZGVsLCB0aGlzLm1ldGhvZClcclxuICAgICAgICAgICAgLnN1YnNjcmliZShyID0+IHRoaXMuZ2V0RGF0YVJldHVybihyKSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UGFnZWQoKTogYW55IHtcclxuXHJcbiAgICAgICAgbGV0IHBhcmFtcyA9IHRoaXMucGFyZW50ID09IG51bGwgPyBcIlwiIDogXCJpZD1cIiArIHRoaXMucGFyZW50ICsgXCImXCI7XHJcbiAgICAgICAgcGFyYW1zICs9ICdpbmRleD0nICsgdGhpcy5wYWdpbmF0b3IuaW5kZXggKyAnJnNpemU9JyArIHRoaXMuc2l6ZTtcclxuXHJcbiAgICAgICAgdGhpcy5fZGF0YUFjY2Vzc1NlcnZpY2VcclxuICAgICAgICAgICAgLmdldCh0aGlzLmFwaSwgdGhpcy5tZXRob2QsIHBhcmFtcylcclxuICAgICAgICAgICAgLnN1YnNjcmliZShyID0+IHRoaXMuZ2V0RGF0YVJldHVybihyLCB0cnVlKSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U2VhcmNoKCk6IGFueSB7XHJcbiAgICAgICAgdGhpcy5vbmJlZm9yZXNlYXJjaC5lbWl0KCk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnBhZ2VkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNobW9kZWwuSW5kZXggPSB0aGlzLnBhZ2luYXRvci5pbmRleDtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2htb2RlbC5TaXplID0gdGhpcy5zaXplO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5fZGF0YUFjY2Vzc1NlcnZpY2VcclxuICAgICAgICAgICAgLnBvc3QodGhpcy5hcGksIHRoaXMuc2VhcmNobW9kZWwsIHRoaXMubWV0aG9kKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHIgPT4gdGhpcy5nZXREYXRhUmV0dXJuKHIsIHRoaXMucGFnZWQpKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRCeVBhcmVudElkKCk6IGFueSB7XHJcbiAgICAgICAgdGhpcy5fZGF0YUFjY2Vzc1NlcnZpY2VcclxuICAgICAgICAgICAgLmdldCh0aGlzLmFwaSwgdGhpcy5tZXRob2QsICdpZD0nICsgdGhpcy5wYXJlbnQpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUociA9PiB0aGlzLmdldERhdGFSZXR1cm4ociwgZmFsc2UpKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXREYXRhUmV0dXJuKHJlc3VsdDogYW55LCByZWZyZXNoUGFnaW5hdG9yOiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgICAgICBcclxuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZXNlYXJjaGxhc3QpIHtcclxuICAgICAgICAgICAgdGhpcy5fbGFzdFNlYXJjaC51cmwgPSB0aGlzLl9hdXRoZW50aWNhdGlvblNlcnZpY2UuZ2V0VXJsR2VuZXJpY2EodGhpcy51cmwpO1xyXG4gICAgICAgICAgICB0aGlzLl9sYXN0U2VhcmNoLmVuYWJsZWRTZWFyY2ggPSB0aGlzLmVuYWJsZWRTZWFyY2g7XHJcbiAgICAgICAgICAgIHRoaXMuX2xhc3RTZWFyY2gubW9kZWwgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLnNlYXJjaG1vZGVsKTtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLnBhZ2VkKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5fbGFzdFNlYXJjaC5pbmRleCA9IHRoaXMucGFnaW5hdG9yLmluZGV4O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHJlc3VsdC5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0YSA9IHJlc3VsdC5kYXRhO1xyXG5cclxuICAgICAgICAgICAgaWYgKCF0aGlzLnN0YXRpY3RpdGxlICYmIHJlc3VsdC5uYW1lICE9IG51bGwpXHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlc3VsdFRpdGxlID0gdGhpcy5fdHJhbnNsYXRlLnRyYW5zbGF0ZShyZXN1bHQubmFtZSk7XHJcblxyXG4gICAgICAgICAgICBpZiAocmVzdWx0LmRlc2NyaXB0aW9uICE9IG51bGwpXHJcbiAgICAgICAgICAgICAgICB0aGlzLmRlc2NyaXB0aW9uID0gcmVzdWx0LmRlc2NyaXB0aW9uO1xyXG5cclxuICAgICAgICAgICAgaWYgKHJlc3VsdC5wYXJlbnRJZCAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5wYXJlbnRJZFVybCA9IHJlc3VsdC5wYXJlbnRJZDtcclxuXHJcbiAgICAgICAgICAgIGlmIChyZWZyZXNoUGFnaW5hdG9yKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5wYWdpbmF0b3IucmVmcmVzaChyZXN1bHQudG90YWwpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuYXV0b3JlZnJlc2ggPiAwICYmIHRoaXMuY3VycmVudFVybCA9PSBsb2NhdGlvbi5ocmVmKVxyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7IHRoaXMuZ2V0RGF0YSgpOyB9LCB0aGlzLmF1dG9yZWZyZXNoICogMTAwMCk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmZpbGxJY29ucygpO1xyXG5cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmRhdGEgPSBbXTtcclxuICAgICAgICAgICAgaWYodGhpcy5zaG93bWVzc2FnZWVycm9yKSB0aGlzLm1lc3NhZ2VzID0gcmVzdWx0Lm1lc3NhZ2VzO1xyXG4gICAgICAgIH0gXHJcblxyXG4gICAgICAgIHRoaXMuaGlkZUxvYWQoKTtcclxuICAgICAgICB0aGlzLm9ubG9hZGNvbXBsZXRlLmVtaXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBjaGFuZ2VQYWdlKGluZGV4OiBudW1iZXIpIHtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucGFnaW5hdG9yLmluZGV4ID0gaW5kZXg7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnNlYXJjaG1vZGVsICE9IG51bGwpXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0U2VhcmNoKCk7XHJcblxyXG4gICAgICAgIGVsc2UgdGhpcy5nZXRQYWdlZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNhbmNlbFNlYXJjaCgpIHtcclxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMuc2VhcmNobW9kZWwsIHRoaXMuc2VhcmNoTW9kZWxSZXNldCk7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5zZWFyY2hvcGVuZWQpXHJcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlZFNlYXJjaCA9IGZhbHNlO1xyXG5cclxuICAgICAgICB0aGlzLnNlYXJjaCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHNlYXJjaCgpIHtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmICh0aGlzLnBhZ2VkKVxyXG4gICAgICAgICAgICB0aGlzLnBhZ2luYXRvci5pbmRleCA9IDA7XHJcblxyXG4gICAgICAgIHRoaXMuZ2V0RGF0YSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZCgpIHtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZm9ybSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3Byb3Auc2V0KEluZm9QYWdlQWN0aW9uLk5ldywgdGhpcy5kZWZhdWx0bmV3b2JqZWN0KTtcclxuICAgICAgICAgICAgdGhpcy5vcGVuTW9kYWwoKTtcclxuXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMubmV3dXJsID09IG51bGwgfHwgdGhpcy5uZXd1cmwgPT0gJycpXHJcbiAgICAgICAgICAgICAgICB0aGlzLm5ld3VybCA9IHRoaXMudXJsO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5uZXd1cmwgKz0gJy9ub3ZvJztcclxuICAgICAgICAgICAgdGhpcy5uZXd1cmwgPSB0aGlzLm5ld3VybC5yZXBsYWNlKCcvLycsICcvJyk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLm5ld3VybCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLm9ubmV3LmVtaXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBkZXRhaWwobW9kZWw6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3Byb3Auc2V0KEluZm9QYWdlQWN0aW9uLlNlYXJjaCwgbW9kZWwpO1xyXG4gICAgICAgIHRoaXMub3Blbk1vZGFsKCk7XHJcbiAgICB9XHJcblxyXG4gICAgYWNjZXNzKG1vZGVsOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5lbmFibGVkY2xpY2thY2Nlc3Mpe1xyXG4gICAgICAgICAgICBpZiAodGhpcy5lbmFibGVkY2xpY2tldmVudClcclxuICAgICAgICAgICAgICAgIHRoaXMub252aWV3LmVtaXQobW9kZWwpO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGVsc2UgdGhpcy5lZGl0KG1vZGVsKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdmlldyhtb2RlbDogYW55KTogdm9pZCB7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmZvcm0gIT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aGlzLl9wcm9wLnNldChJbmZvUGFnZUFjdGlvbi5WaWV3LCBtb2RlbCk7XHJcbiAgICAgICAgICAgIHRoaXMub3Blbk1vZGFsKCk7XHJcblxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnZpZXd1cmwgPT0gbnVsbCB8fCB0aGlzLnZpZXd1cmwgPT0gJycpXHJcbiAgICAgICAgICAgICAgICB0aGlzLnZpZXd1cmwgPSB0aGlzLnVybDtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB0aGlzLnZpZXd1cmwgKz0gJy8nICsgbW9kZWwuSWQgKyAodGhpcy5lbmFibGVkY2xpY2thY2Nlc3MgPyAnJyA6ICcvdmlzdWFsaXphcicpO1xyXG4gICAgICAgICAgICB0aGlzLnZpZXd1cmwgPSB0aGlzLnZpZXd1cmwucmVwbGFjZSgnLy8nLCAnLycpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlQnlVcmwodGhpcy52aWV3dXJsKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMub252aWV3LmVtaXQobW9kZWwpO1xyXG4gICAgfVxyXG5cclxuICAgIGVkaXQobW9kZWw6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmhhc1Blcm1pc3Npb25FZGl0KSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmZvcm0gIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fcHJvcC5zZXQoSW5mb1BhZ2VBY3Rpb24uRWRpdCwgbW9kZWwpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuTW9kYWwoKTtcclxuXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5lZGl0dXJsID09IG51bGwgfHwgdGhpcy5lZGl0dXJsID09ICcnKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWRpdHVybCA9IHRoaXMudXJsO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuZWRpdHVybCA9IHRoaXMuZWRpdHVybC5yZXBsYWNlKCcvLycsICcvJyk7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlKFt0aGlzLmVkaXR1cmwsIG1vZGVsLklkXSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMub25lZGl0LmVtaXQobW9kZWwpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmZvcm0gIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fcHJvcC5zZXQoSW5mb1BhZ2VBY3Rpb24uVmlldywgbW9kZWwpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuTW9kYWwoKTtcclxuICAgIFxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudmlld3VybCA9PSBudWxsIHx8IHRoaXMudmlld3VybCA9PSAnJylcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXd1cmwgPSB0aGlzLnVybDtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHRoaXMudmlld3VybCArPSAnLycgKyBtb2RlbC5JZCArICh0aGlzLmVuYWJsZWRjbGlja2FjY2VzcyA/ICcnIDogJy92aXN1YWxpemFyJyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZpZXd1cmwgPSB0aGlzLnZpZXd1cmwucmVwbGFjZSgnLy8nLCAnLycpO1xyXG4gICAgXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLnZpZXd1cmwpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICBcclxuICAgICAgICAgICAgdGhpcy5vbnZpZXcuZW1pdChtb2RlbCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGRlbGV0ZShtb2RlbDogYW55KSB7XHJcbiAgICAgICAgaWYodGhpcy5jdXN0b21kZWxldGUub2JzZXJ2ZXJzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5jdXN0b21kZWxldGUuZW1pdChtb2RlbCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuX2RpYWxvZy5ZZXNPck5vKCdNZW5zYWdlbUV4Y2x1aXInKS5zdWJzY3JpYmUociA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyLmJ1dHRvbiA9PSBJbmZvRGlhbG9nQnV0dG9ucy5ZZXMpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5fZGF0YUFjY2Vzc1NlcnZpY2UuZGVsZXRlKHRoaXMuYXBpLCBtb2RlbC5JZCkuc3Vic2NyaWJlKGQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25kZWxldGUuZW1pdChkKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGQuc3VjY2VzcylcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXREYXRhKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZUxvYWQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2hvd21lc3NhZ2VlcnJvcikgdGhpcy5tZXNzYWdlcyA9IGQubWVzc2FnZXM7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBmaWxsSWNvbnMoKSB7XHJcbiAgICAgICAgdGhpcy5pY29ucyA9IFtdO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5kYXRhID09IG51bGwpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgdGhpcy5kYXRhLmZvckVhY2gocmV0ID0+IHtcclxuXHJcbiAgICAgICAgICAgIGxldCBpdGVtID0gcmV0WydJY29uJ107XHJcbiAgICAgICAgICAgIGlmIChpdGVtID09IG51bGwpXHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgICAgICBpZiAoaXRlbS5pbmRleE9mKCd8JykgPiAtMSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IHJldG9ybm8gPSBpdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgLnNwbGl0KCd8JylcclxuICAgICAgICAgICAgICAgICAgICAubWFwKGljb25lID0+IHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpY29uZS5pbmRleE9mKCc6JykgPiAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRhZG9zID0gaWNvbmUuc3BsaXQoJzonKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IE5hbWU6IGl0ZW0sIEljb246IGRhZG9zWzBdLCBUb29sdGlwOiBkYWRvc1sxXSwgUHJpbmNpcGFsOiB0cnVlIH07XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgcmV0dXJuIHsgTmFtZTogaXRlbSwgSWNvbjogaWNvbmUsIFRvb2x0aXA6ICcnLCBQcmluY2lwYWw6IHRydWUgfTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgfSkuZmlsdGVyKGEgPT4gYS5JY29uICE9IG51bGwgJiYgYS5JY29uICE9ICcnKTtcclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgaW5kZXggPSAwO1xyXG4gICAgICAgICAgICAgICAgcmV0b3Juby5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmljb25zLmZpbmQoYSA9PiBhLk5hbWUgPT0gZWxlbWVudC5OYW1lICYmIGEuSWNvbiA9PSBlbGVtZW50Lkljb24pID09IG51bGwpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LlByaW5jaXBhbCA9IGluZGV4ID09IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaWNvbnMucHVzaChlbGVtZW50KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGluZGV4Kys7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGxldCBlbGVtZW50OiBhbnkgPSBbXTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5pbmRleE9mKCc6JykgPiAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBkYWRvcyA9IGl0ZW0uc3BsaXQoJzonKTtcclxuICAgICAgICAgICAgICAgICAgICBlbGVtZW50ID0geyBOYW1lOiBpdGVtLCBJY29uOiBkYWRvc1swXSwgVG9vbHRpcDogZGFkb3NbMV0sIFByaW5jaXBhbDogdHJ1ZSB9O1xyXG5cclxuICAgICAgICAgICAgICAgIH0gZWxzZSBlbGVtZW50ID0geyBOYW1lOiBpdGVtLCBJY29uOiBpdGVtLCBUb29sdGlwOiBcIlwiLCBQcmluY2lwYWw6IHRydWUgfTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pY29ucy5maW5kKGEgPT4gYS5OYW1lID09IGVsZW1lbnQuTmFtZSkgPT0gbnVsbClcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmljb25zLnB1c2goZWxlbWVudCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBpbmZvKHZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5fZGlhbG9nLmFsZXJ0KHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBiYWNrKCkge1xyXG4gICAgICAgIHRoaXMubmF2aWdhdGVUbyh0aGlzLmJhY2t1cmwgKyAodGhpcy5wYXJlbnRJZFVybCA9PSBudWxsID8gXCJcIiA6IFwiL1wiICsgdGhpcy5wYXJlbnRJZFVybCksIGZhbHNlKTtcclxuICAgIH1cclxuXHJcbiAgICBvcGVuTW9kYWwobW9kYWxDb21wb25lbnQ6IGFueSA9IHRoaXMuZm9ybSwgd2lkdGg6IE51bWJlciA9IHRoaXMud2lkdGgpIHtcclxuXHJcbiAgICAgICAgbGV0IHJlZiA9IHRoaXMubW9kYWwub3Blbihtb2RhbENvbXBvbmVudCwge1xyXG4gICAgICAgICAgICBkYXRhOiB0aGlzLl9wcm9wLFxyXG4gICAgICAgICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXHJcbiAgICAgICAgICAgIHdpZHRoOiB3aWR0aCArICdweCdcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyOiBJbmZvRm9ybVByb3BNb2RlbCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAociA9PSBudWxsKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICAgICAgaWYgKHIubW9kYWxBY3Rpb24gPT0gSW5mb01vZGFsQWN0aW9uLlNhdmUpXHJcbiAgICAgICAgICAgICAgICB0aGlzLmdldERhdGEoKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMub25jbG9zZW1vZGFsLmVtaXQocik7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJlZi5rZXlkb3duRXZlbnRzKCkuc3Vic2NyaWJlKChyKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5sb2FkaW5nICYmIChyLmtleSA9PSBcIkVzY2FwZVwiIHx8IHIua2V5ID09IFwiRXNjXCIgfHwgci5rZXkgPT0gXCIyN1wiKSlcclxuICAgICAgICAgICAgICAgIHJlZi5jbG9zZSgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGhpZGVMb2FkKCkge1xyXG4gICAgICAgIHRoaXMuc2V0UGFnZWJhclRpdGxlKCk7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UGVybWlzc2lvbigpIHtcclxuICAgICAgICB0aGlzLmhhc1Blcm1pc3Npb25OZXcgPSB0aGlzLl9hdXRoZW50aWNhdGlvblNlcnZpY2UuaGFzUGVybWlzc2lvbih0aGlzLnVybCwgJ25ldycpO1xyXG4gICAgICAgIHRoaXMuaGFzUGVybWlzc2lvbkVkaXQgPSB0aGlzLl9hdXRoZW50aWNhdGlvblNlcnZpY2UuaGFzUGVybWlzc2lvbih0aGlzLnVybCwgJ2VkaXQnKTtcclxuICAgICAgICB0aGlzLmhhc1Blcm1pc3Npb25EZWxldGUgPSB0aGlzLl9hdXRoZW50aWNhdGlvblNlcnZpY2UuaGFzUGVybWlzc2lvbih0aGlzLnVybCwgJ3JlbW92ZScpO1xyXG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICBkb3dubG9hZChhcnF1aXZvSWQ6IGFueSkge1xyXG4gICAgICAgIGlmICh0aGlzLmFwaWRvd25sb2FkID09IG51bGwpXHJcbiAgICAgICAgICAgIGFsZXJ0KCdBUEkgRG93bmxvYWQgZXN0w6EgbnVsbCcpO1xyXG5cclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuX2RhdGFBY2Nlc3NTZXJ2aWNlLmdldCh0aGlzLmFwaWRvd25sb2FkLCAodGhpcy5tZXRob2Rkb3dubG9hZCAhPSBudWxsID8gdGhpcy5tZXRob2Rkb3dubG9hZCA6ICdHZXQnKSwgXCJpZD1cIiArIGFycXVpdm9JZCkuc3Vic2NyaWJlKHIgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VzID0gci5tZXNzYWdlcztcclxuXHJcbiAgICAgICAgICAgIGlmIChyLnN1Y2Nlc3MgJiYgci5kYXRhICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHZhciBiaW5hcnlTdHJpbmcgPSB3aW5kb3cuYXRvYihyLmRhdGEuQ29udGV1ZG8pO1xyXG4gICAgICAgICAgICAgICAgdmFyIGJpbmFyeUxlbiA9IGJpbmFyeVN0cmluZy5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICB2YXIgYnl0ZXMgPSBuZXcgVWludDhBcnJheShiaW5hcnlMZW4pO1xyXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiaW5hcnlMZW47IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgdmFyIGFzY2lpID0gYmluYXJ5U3RyaW5nLmNoYXJDb2RlQXQoaSk7XHJcbiAgICAgICAgICAgICAgICAgICBieXRlc1tpXSA9IGFzY2lpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHZhciBibG9iID0gbmV3IEJsb2IoW2J5dGVzXSk7XHJcbiAgICAgICAgICAgICAgICBpZiAod2luZG93Lm5hdmlnYXRvciAmJiB3aW5kb3cubmF2aWdhdG9yLm1zU2F2ZU9yT3BlbkJsb2IpIHtcclxuICAgICAgICAgICAgICAgICAgICB3aW5kb3cubmF2aWdhdG9yLm1zU2F2ZU9yT3BlbkJsb2IoYmxvYiwgci5kYXRhLk5vbWUpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgZmlsZVVSTCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGVsZW1lbnRBOiBIVE1MQW5jaG9yRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKSBhcyBIVE1MQW5jaG9yRWxlbWVudDtcclxuICAgICAgICAgICAgICAgICAgICBlbGVtZW50QS5ocmVmID0gZmlsZVVSTDtcclxuICAgICAgICAgICAgICAgICAgICBlbGVtZW50QS5kb3dubG9hZCA9IHIuZGF0YS5Ob21lO1xyXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWxlbWVudEEpO1xyXG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnRBLmNsaWNrKCk7ICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGVsZW1lbnRBKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBldmVudEJ1dHRvbihtb2RlbDogYW55LCBhcGk6IGFueSwgbWV0aG9kOiBzdHJpbmcsIGNvbmZpcm06IGJvb2xlYW4gPSB0cnVlKSB7XHJcbiAgICAgICAgaWYgKGNvbmZpcm0pIHtcclxuICAgICAgICAgICAgdGhpcy5fZGlhbG9nXHJcbiAgICAgICAgICAgICAgICAuWWVzT3JObygnTWVuc2FnZW1Db25maXJtYXInKVxyXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZShyZXQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXQuYnV0dG9uID09IEluZm9EaWFsb2dCdXR0b25zLlllcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9kYXRhQWNjZXNzU2VydmljZS5wb3N0KGFwaSwgbW9kZWwsIG1ldGhvZCkuc3Vic2NyaWJlKHIgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIuc3VjY2VzcylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdldERhdGEoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYodGhpcy5zaG93bWVzc2FnZWVycm9yKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZXMgPSByLm1lc3NhZ2VzO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLl9kYXRhQWNjZXNzU2VydmljZS5wb3N0KGFwaSwgbW9kZWwsIG1ldGhvZCkuc3Vic2NyaWJlKHIgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHIuc3VjY2VzcylcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldERhdGEoKTtcclxuICAgICAgICAgICAgICAgIGVsc2UgaWYodGhpcy5zaG93bWVzc2FnZWVycm9yKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZXMgPSByLm1lc3NhZ2VzO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn0iXX0=
|
package/fesm2015/info-library.js
CHANGED
|
@@ -3681,6 +3681,7 @@ class InfoGridComponent {
|
|
|
3681
3681
|
this.buttons = [];
|
|
3682
3682
|
this.searchbuttons = [];
|
|
3683
3683
|
this.showmessageerror = false;
|
|
3684
|
+
this.defaultnewobject = null;
|
|
3684
3685
|
this.messages = [];
|
|
3685
3686
|
this.resultTitle = '';
|
|
3686
3687
|
this.enabledSearch = false;
|
|
@@ -4056,7 +4057,7 @@ class InfoGridComponent {
|
|
|
4056
4057
|
*/
|
|
4057
4058
|
add() {
|
|
4058
4059
|
if (this.form != null) {
|
|
4059
|
-
this._prop.set(InfoPageAction.New,
|
|
4060
|
+
this._prop.set(InfoPageAction.New, this.defaultnewobject);
|
|
4060
4061
|
this.openModal();
|
|
4061
4062
|
}
|
|
4062
4063
|
else {
|
|
@@ -4314,6 +4315,7 @@ class InfoGridComponent {
|
|
|
4314
4315
|
download(arquivoId) {
|
|
4315
4316
|
if (this.apidownload == null)
|
|
4316
4317
|
alert('API Download está null');
|
|
4318
|
+
this.loading = true;
|
|
4317
4319
|
this._dataAccessService.get(this.apidownload, (this.methoddownload != null ? this.methoddownload : 'Get'), "id=" + arquivoId).subscribe((/**
|
|
4318
4320
|
* @param {?} r
|
|
4319
4321
|
* @return {?}
|
|
@@ -4476,6 +4478,7 @@ InfoGridComponent.propDecorators = {
|
|
|
4476
4478
|
buttons: [{ type: Input }],
|
|
4477
4479
|
searchbuttons: [{ type: Input }],
|
|
4478
4480
|
showmessageerror: [{ type: Input }],
|
|
4481
|
+
defaultnewobject: [{ type: Input }],
|
|
4479
4482
|
formModel: [{ type: ContentChildren, args: [NgModel,] }],
|
|
4480
4483
|
formSearch: [{ type: ViewChild, args: [NgForm, { static: false },] }],
|
|
4481
4484
|
paginator: [{ type: ViewChild, args: ['paginator', { static: false },] }],
|
|
@@ -4587,6 +4590,8 @@ if (false) {
|
|
|
4587
4590
|
/** @type {?} */
|
|
4588
4591
|
InfoGridComponent.prototype.showmessageerror;
|
|
4589
4592
|
/** @type {?} */
|
|
4593
|
+
InfoGridComponent.prototype.defaultnewobject;
|
|
4594
|
+
/** @type {?} */
|
|
4590
4595
|
InfoGridComponent.prototype.formModel;
|
|
4591
4596
|
/** @type {?} */
|
|
4592
4597
|
InfoGridComponent.prototype.formSearch;
|