barsa-novin-ray-core 2.2.39 → 2.2.41
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/esm2022/lib/abstract-classes/base-column-props.mjs +4 -2
- package/esm2022/lib/barsa-novin-ray-core-routing.module.mjs +1 -1
- package/esm2022/lib/barsa-novin-ray-core.module.mjs +1 -1
- package/esm2022/lib/button-loading/button-loading.component.mjs +5 -3
- package/esm2022/lib/dynamic-component/base-view-item-props.mjs +4 -2
- package/esm2022/lib/resolvers/index.mjs +2 -1
- package/esm2022/lib/resolvers/login-settings.resolver.mjs +18 -0
- package/fesm2022/barsa-novin-ray-core.mjs +26 -5
- package/fesm2022/barsa-novin-ray-core.mjs.map +1 -1
- package/lib/abstract-classes/base-column-props.d.ts +2 -1
- package/lib/button-loading/button-loading.component.d.ts +2 -1
- package/lib/dynamic-component/base-view-item-props.d.ts +2 -1
- package/lib/resolvers/index.d.ts +1 -0
- package/lib/resolvers/login-settings.resolver.d.ts +29 -0
- package/package.json +1 -1
|
@@ -430,7 +430,7 @@ export class BaseViewItemPropsComponent extends BaseViewPropsComponent {
|
|
|
430
430
|
});
|
|
431
431
|
}
|
|
432
432
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BaseViewItemPropsComponent, deps: [{ token: i0.ElementRef }, { token: i1.DomSanitizer }, { token: i0.ChangeDetectorRef }, { token: i2.MoReportValuePipe }, { token: i3.FormPanelService, optional: true, skipSelf: true }, { token: i3.FormPanelService, optional: true, self: true }, { token: i3.UlvMainService, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
433
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BaseViewItemPropsComponent, selector: "bnrc-base-view-item-props", inputs: { checkboxComponent: "checkboxComponent", disableEllapsis: "disableEllapsis", contextMenuOverflowText: "contextMenuOverflowText", detailsComponent: "detailsComponent", detailsColumns: "detailsColumns", detailsText: "detailsText", mo: "mo", moDataListCount: "moDataListCount", index: "index", last: "last", isdirty: "isdirty", isChecked: "isChecked", hideDetailsText: "hideDetailsText", showViewButton: "showViewButton", isNewInlineMo: "isNewInlineMo", extraRelation: "extraRelation", hideOpenIcon: "hideOpenIcon", inlineEditWithoutSelection: "inlineEditWithoutSelection", inDialog: "inDialog", isMobile: "isMobile", isMultiSelect: "isMultiSelect", rowIndicator: "rowIndicator", groupSummary: "groupSummary", isLastChildGroup: "isLastChildGroup", showRowNumber: "showRowNumber", rowNumber: "rowNumber", coloringRow: "coloringRow", noSaveInlineEditInServer: "noSaveInlineEditInServer", rowIndicatorColor: "rowIndicatorColor", UlvMainCtrlr: "UlvMainCtrlr", fieldDict: "fieldDict", actionList: "actionList", serializedRelatedMo: "serializedRelatedMo", cartableTemplate: "cartableTemplate", cartableMo: "cartableMo", cartableWorkflowData: "cartableWorkflowData" }, outputs: { actionListClick: "actionListClick", events: "events" }, viewQueries: [{ propertyName: "_cartableFormRef", first: true, predicate: ["cartableFormRef"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
433
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BaseViewItemPropsComponent, selector: "bnrc-base-view-item-props", inputs: { checkboxComponent: "checkboxComponent", disableEllapsis: "disableEllapsis", attachmentViewType: "attachmentViewType", contextMenuOverflowText: "contextMenuOverflowText", detailsComponent: "detailsComponent", detailsColumns: "detailsColumns", detailsText: "detailsText", mo: "mo", moDataListCount: "moDataListCount", index: "index", last: "last", isdirty: "isdirty", isChecked: "isChecked", hideDetailsText: "hideDetailsText", showViewButton: "showViewButton", isNewInlineMo: "isNewInlineMo", extraRelation: "extraRelation", hideOpenIcon: "hideOpenIcon", inlineEditWithoutSelection: "inlineEditWithoutSelection", inDialog: "inDialog", isMobile: "isMobile", isMultiSelect: "isMultiSelect", rowIndicator: "rowIndicator", groupSummary: "groupSummary", isLastChildGroup: "isLastChildGroup", showRowNumber: "showRowNumber", rowNumber: "rowNumber", coloringRow: "coloringRow", noSaveInlineEditInServer: "noSaveInlineEditInServer", rowIndicatorColor: "rowIndicatorColor", UlvMainCtrlr: "UlvMainCtrlr", fieldDict: "fieldDict", actionList: "actionList", serializedRelatedMo: "serializedRelatedMo", cartableTemplate: "cartableTemplate", cartableMo: "cartableMo", cartableWorkflowData: "cartableWorkflowData" }, outputs: { actionListClick: "actionListClick", events: "events" }, viewQueries: [{ propertyName: "_cartableFormRef", first: true, predicate: ["cartableFormRef"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
434
434
|
}
|
|
435
435
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BaseViewItemPropsComponent, decorators: [{
|
|
436
436
|
type: Component,
|
|
@@ -461,6 +461,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
461
461
|
type: Input
|
|
462
462
|
}], disableEllapsis: [{
|
|
463
463
|
type: Input
|
|
464
|
+
}], attachmentViewType: [{
|
|
465
|
+
type: Input
|
|
464
466
|
}], contextMenuOverflowText: [{
|
|
465
467
|
type: Input
|
|
466
468
|
}], detailsComponent: [{
|
|
@@ -530,4 +532,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
530
532
|
}], cartableWorkflowData: [{
|
|
531
533
|
type: Input
|
|
532
534
|
}] } });
|
|
533
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS12aWV3LWl0ZW0tcHJvcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1ub3Zpbi1yYXktY29yZS9zcmMvbGliL2R5bmFtaWMtY29tcG9uZW50L2Jhc2Utdmlldy1pdGVtLXByb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFFdkIsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixJQUFJLEVBRUosUUFBUSxFQUNSLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQWMsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVsSCxPQUFPLEVBSUgsUUFBUSxFQUtYLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLGtCQUFrQixFQUFFLHlCQUF5QixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTdFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7OztBQVUzRCxNQUFNLE9BQU8sMEJBQTJCLFNBQVEsc0JBQXNCO0lBcUNsRSxJQUFhLG1CQUFtQixDQUFDLEdBQVc7UUFDeEMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEdBQUcsQ0FBQztRQUNoQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDakMsQ0FBQztJQUNELElBQWEsZ0JBQWdCLENBQUMsR0FBZ0I7UUFDMUMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEdBQUcsQ0FBQztRQUM3QixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBQ0QsSUFBYSxVQUFVLENBQUMsR0FBd0I7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QkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csd0JBQXdCO3NCQUFoQyxLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFFTyxtQkFBbUI7c0JBQS9CLEtBQUs7Z0JBS08sZ0JBQWdCO3NCQUE1QixLQUFLO2dCQUlPLFVBQVU7c0JBQXRCLEtBQUs7Z0JBTU8sb0JBQW9CO3NCQUFoQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBFbGVtZW50UmVmLFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkNoYW5nZXMsXHJcbiAgICBPbkluaXQsXHJcbiAgICBPcHRpb25hbCxcclxuICAgIE91dHB1dCxcclxuICAgIFNlbGYsXHJcbiAgICBTaW1wbGVDaGFuZ2VzLFxyXG4gICAgU2tpcFNlbGYsXHJcbiAgICBWaWV3Q2hpbGRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZyb20sIHRhcCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgc3dpdGNoTWFwLCB0YWtlVW50aWwsIHRocm93RXJyb3IsIGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHtcclxuICAgIE1ldGFvYmplY3REYXRhTW9kZWwsXHJcbiAgICBSZXBvcnRWaWV3Q29sdW1uLFxyXG4gICAgRm9ybVNldHRpbmcsXHJcbiAgICBCYXJzYUFwaSxcclxuICAgIENob2ljZURlZixcclxuICAgIFR5cGVVbHZNYWluQ3RybHIsXHJcbiAgICBCcnVsZUFjdGlvbk1lc3NhZ2UsXHJcbiAgICBFanJheU9sZ29cclxufSBmcm9tICcuLi9hYnN0cmFjdC1jbGFzc2VzJztcclxuaW1wb3J0IHsgUHJldmVudERlZmF1bEV2ZW50LCBjcmVhdGVHcmlkRWRpdG9yRm9ybVBhbmVsIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcclxuaW1wb3J0IHsgRm9ybVBhbmVsU2VydmljZSwgVWx2TWFpblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IEJhc2VWaWV3UHJvcHNDb21wb25lbnQgfSBmcm9tICcuL2Jhc2Utdmlldy1wcm9wcyc7XHJcbmltcG9ydCB7IE1vUmVwb3J0VmFsdWVQaXBlIH0gZnJvbSAnLi4vcGlwZXMnO1xyXG5pbXBvcnQgeyBGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi4vZm9ybS9mb3JtLmNvbXBvbmVudCc7XHJcbnR5cGUgUmVhc29uVG9TYXZlID0gJ1RBQicgfCAnQ1RSTCtFTlRFUicgfCAnQ0hFQ0tfQ0hBTkdFRCcgfCAnRVNDJyB8ICdNT1VTRURPV05fT1VUU0lERSc7XHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdibnJjLWJhc2Utdmlldy1pdGVtLXByb3BzJyxcclxuICAgIHRlbXBsYXRlOiBgYCxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgc3RhbmRhbG9uZTogZmFsc2VcclxufSlcclxuZXhwb3J0IGNsYXNzIEJhc2VWaWV3SXRlbVByb3BzQ29tcG9uZW50IGV4dGVuZHMgQmFzZVZpZXdQcm9wc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICAgIEBPdXRwdXQoKSBhY3Rpb25MaXN0Q2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICAgIEBPdXRwdXQoKSBldmVudHMgPSBuZXcgRXZlbnRFbWl0dGVyPHsgdGl0bGU6IHN0cmluZzsgZGF0YT86IGFueSB9PigpO1xyXG4gICAgQFZpZXdDaGlsZCgnY2FydGFibGVGb3JtUmVmJywgeyBzdGF0aWM6IGZhbHNlIH0pIF9jYXJ0YWJsZUZvcm1SZWY6IEZvcm1Db21wb25lbnQ7XHJcbiAgICBASW5wdXQoKSBjaGVja2JveENvbXBvbmVudDogRWpyYXlPbGdvO1xyXG4gICAgQElucHV0KCkgZGlzYWJsZUVsbGFwc2lzOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgY29udGV4dE1lbnVPdmVyZmxvd1RleHQ6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIGRldGFpbHNDb21wb25lbnQ/OiBFanJheU9sZ287XHJcbiAgICBASW5wdXQoKSBkZXRhaWxzQ29sdW1uczogUmVwb3J0Vmlld0NvbHVtbltdO1xyXG4gICAgQElucHV0KCkgZGV0YWlsc1RleHQ6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIG1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsO1xyXG4gICAgQElucHV0KCkgbW9EYXRhTGlzdENvdW50OiBudW1iZXI7XHJcbiAgICBASW5wdXQoKSBpbmRleDogbnVtYmVyO1xyXG4gICAgQElucHV0KCkgbGFzdDogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGlzZGlydHk6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBpc0NoZWNrZWQ6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBoaWRlRGV0YWlsc1RleHQ6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBzaG93Vmlld0J1dHRvbjogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGlzTmV3SW5saW5lTW86IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBleHRyYVJlbGF0aW9uOiBhbnk7XHJcbiAgICBASW5wdXQoKSBoaWRlT3Blbkljb246IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBpbmxpbmVFZGl0V2l0aG91dFNlbGVjdGlvbjogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGluRGlhbG9nOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgaXNNb2JpbGU6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBpc011bHRpU2VsZWN0OiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgcm93SW5kaWNhdG9yOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgZ3JvdXBTdW1tYXJ5OiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgaXNMYXN0Q2hpbGRHcm91cDogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIHNob3dSb3dOdW1iZXI6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSByb3dOdW1iZXI6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIGNvbG9yaW5nUm93OiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgbm9TYXZlSW5saW5lRWRpdEluU2VydmVyOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgcm93SW5kaWNhdG9yQ29sb3I6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIFVsdk1haW5DdHJscjogVHlwZVVsdk1haW5DdHJscjtcclxuICAgIEBJbnB1dCgpIGZpZWxkRGljdDogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcclxuICAgIEBJbnB1dCgpIGFjdGlvbkxpc3Q6IGFueVtdO1xyXG5cclxuICAgIEBJbnB1dCgpIHNldCBzZXJpYWxpemVkUmVsYXRlZE1vKHZhbDogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5fc2VyaWFsaXplZFJlbGF0ZWRNbyA9IHZhbDtcclxuICAgICAgICB0aGlzLl91cGRhdGVDYXJ0YWJsZU1vKHZhbCk7XHJcbiAgICAgICAgdGhpcy5fY3JlYXRlQ2FydGFibGVQYXJhbXMoKTtcclxuICAgIH1cclxuICAgIEBJbnB1dCgpIHNldCBjYXJ0YWJsZVRlbXBsYXRlKHZhbDogRm9ybVNldHRpbmcpIHtcclxuICAgICAgICB0aGlzLl9jYXJ0YWJsZVRlbXBsYXRlID0gdmFsO1xyXG4gICAgICAgIHRoaXMuX2NyZWF0ZUNhcnRhYmxlUGFyYW1zKCk7XHJcbiAgICB9XHJcbiAgICBASW5wdXQoKSBzZXQgY2FydGFibGVNbyh2YWw6IE1ldGFvYmplY3REYXRhTW9kZWwpIHtcclxuICAgICAgICB0aGlzLl9jYXJ0YWJsZU1vID0gdmFsO1xyXG4gICAgICAgIHRoaXMuX3VwZGF0ZUNhcnRhYmxlTW8odGhpcy5fc2VyaWFsaXplZFJlbGF0ZWRNbyk7XHJcblxyXG4gICAgICAgIHRoaXMuX2NyZWF0ZUNhcnRhYmxlUGFyYW1zKCk7XHJcbiAgICB9XHJcbiAgICBASW5wdXQoKSBzZXQgY2FydGFibGVXb3JrZmxvd0RhdGEodmFsOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLl9jYXJ0YWJsZVdvcmtmbG93RGF0YSA9IHZhbDtcclxuICAgICAgICB0aGlzLl9jcmVhdGVDYXJ0YWJsZVBhcmFtcygpO1xyXG4gICAgfVxyXG4gICAgLy8gQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6bW91c2Vkb3duJywgWyckZXZlbnQnXSlcclxuICAgIC8vIG9uTW91c2VEb3duKGUpOiB2b2lkIHtcclxuICAgIC8vICAgICAvLyB3ZSBtYWtlIHN1cmUgb25seSBkcmFnZ2FibGVzIG9uIHRoZSBkb2N1bWVudCBlbGVtZW50cyBhcmUgc2VsZWN0ZWRcclxuICAgIC8vICAgICBpZiAoXHJcbiAgICAvLyAgICAgICAgICF0aGlzLl9lbC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGUudGFyZ2V0KSAmJlxyXG4gICAgLy8gICAgICAgICB0aGlzLmlubGluZUVkaXRNb2RlICYmXHJcbiAgICAvLyAgICAgICAgIHRoaXMuYWxsb3dJbmxpbmVFZGl0ICYmXHJcbiAgICAvLyAgICAgICAgIHRoaXMuaXNDaGVja2VkICYmXHJcbiAgICAvLyAgICAgICAgIGUudGFyZ2V0LnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2J1dHRvbidcclxuICAgIC8vICAgICApIHtcclxuICAgIC8vICAgICAgICAgdGhpcy5kZXNlbGVjdEFsbC5lbWl0KCk7XHJcbiAgICAvLyAgICAgICAgIC8vIHRoaXMuX3NhdmVFZGl0ZWRNbyQubmV4dCgnTU9VU0VET1dOX09VVFNJREUnKTtcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyB9XHJcbiAgICBoYXNFcnJvciA9IGZhbHNlO1xyXG4gICAgX2ZvY3VzVG9GaXJzdEVpZHRhYmxlQ29sdW1uID0gZmFsc2U7XHJcbiAgICBfbGFzdEVkaXRhYmxlQ29sdW1uSW5kZXg6IG51bWJlcjtcclxuICAgIGlubGluZUVkaXRJblJlcG9ydCA9IHRydWU7XHJcbiAgICBsYXlvdXQkOiBPYnNlcnZhYmxlPGFueT47XHJcbiAgICBmb3JtUGFuZWxDdHJscjogYW55O1xyXG4gICAgc2F2aW5nOiBib29sZWFuO1xyXG4gICAgc2F2ZWQ6IGJvb2xlYW47XHJcbiAgICByZXdyaXRlTGF5b3V0ID0gdHJ1ZTtcclxuICAgIGhhc0NhcnRhYmxlVGVtcGxhdGUgPSBmYWxzZTtcclxuICAgIGNhcnRhYmxlUGFyYW1zOiB7XHJcbiAgICAgICAgZm9ybVNldHRpbmc6IEZvcm1TZXR0aW5nO1xyXG4gICAgICAgIG1vSWQ6IHN0cmluZztcclxuICAgICAgICB0eXBlRGVmSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICAgICAgICB2aWV3SWQ6IGFueTtcclxuICAgICAgICBpbkRpYWxvZzogYm9vbGVhbjtcclxuICAgICAgICBsb2FkQWN0aXZpdHlWaWV3OiBib29sZWFuO1xyXG4gICAgfTtcclxuICAgIHdvcmtmbG93U3RhdGU6IHsgZXJyb3I6IGFueTsgc3RhdGU6ICdQZW5kaW5nJyB8ICdGaW5pc2gnIHwgJycgfTtcclxuICAgIGJydWxlQWN0aW9uTWVzc2FnZTogQnJ1bGVBY3Rpb25NZXNzYWdlIHwgbnVsbCA9IG51bGw7XHJcbiAgICBwcml2YXRlIF9zYXZlRWRpdGVkTW8kID0gbmV3IFN1YmplY3Q8UmVhc29uVG9TYXZlPigpO1xyXG4gICAgcHJpdmF0ZSBfZm9ybXBhbmVsVmFsdWVDaGFuZ2VkJCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcclxuICAgIHByaXZhdGUgX2Zvcm1QYW5lbExvYWRlZDogYm9vbGVhbjtcclxuICAgIHByaXZhdGUgX2NhcnRhYmxlTW86IE1ldGFvYmplY3REYXRhTW9kZWw7XHJcbiAgICBwcml2YXRlIF9jYXJ0YWJsZVRlbXBsYXRlOiBGb3JtU2V0dGluZztcclxuICAgIHByaXZhdGUgX2NhcnRhYmxlV29ya2Zsb3dEYXRhOiBzdHJpbmc7XHJcbiAgICBwcml2YXRlIF9zZXJpYWxpemVkUmVsYXRlZE1vOiBzdHJpbmc7XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcm90ZWN0ZWQgX2VsOiBFbGVtZW50UmVmLFxyXG4gICAgICAgIHByb3RlY3RlZCBfZG9tU2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXHJcbiAgICAgICAgcHJvdGVjdGVkIF9jZHI6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgICAgIHByb3RlY3RlZCBfcmVwb3J0VmFsdWVQaXBlOiBNb1JlcG9ydFZhbHVlUGlwZSxcclxuICAgICAgICBAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKSBwcm90ZWN0ZWQgX3BhcmVudEZvcm1QYW5lbFNlcnZpY2U6IEZvcm1QYW5lbFNlcnZpY2UsXHJcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBwcm90ZWN0ZWQgX2Zvcm1QYW5lbFNlcnZpY2U6IEZvcm1QYW5lbFNlcnZpY2UsXHJcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJvdGVjdGVkIF91bHZNYWluU2VydmljZTogVWx2TWFpblNlcnZpY2VcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgdGhpcy5fc2F2ZUVkaXRlZE1vJFxyXG4gICAgICAgICAgICAuYXNPYnNlcnZhYmxlKClcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCksXHJcbiAgICAgICAgICAgICAgICBkZWJvdW5jZVRpbWUoNTAwKSxcclxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgocmVhc29uOiBSZWFzb25Ub1NhdmUpID0+IHRoaXMuX2lubGluZUVkaXRTYXZlRm9ybVBhbmVsKHJlYXNvbikpLFxyXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB0aHJvd0Vycm9yKCgpID0+IGVycikpXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzOiB7IHJlYXNvbjogUmVhc29uVG9TYXZlOyBzdWNjZWVkOiBib29sZWFuOyBzYXZlZDogYm9vbGVhbiB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzLnNhdmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tby4kSXNDaGVja2VkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZm9ybXBhbmVsVmFsdWVDaGFuZ2VkJC5uZXh0KCcnKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzLnJlYXNvbiA9PT0gJ1RBQicgfHwgcmVzLnJlYXNvbiA9PT0gJ0NUUkwrRU5URVInKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3ROZXh0SW5saW5lUmVjb3JkLmVtaXQodGhpcy5tbyk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlcy5yZWFzb24gPT09ICdFU0MnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lZGl0Rm9ybVBhbmVsQ2FuY2VsLmVtaXQodGhpcy5tbyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuX2Zvcm1wYW5lbFZhbHVlQ2hhbmdlZCRcclxuICAgICAgICAgICAgLmFzT2JzZXJ2YWJsZSgpXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpLFxyXG4gICAgICAgICAgICAgICAgLy8gc3dpdGNoTWFwKCgpID0+IHRoaXMuX3N5bmNNbygpKSxcclxuICAgICAgICAgICAgICAgIHRhcCgoYykgPT4gdGhpcy5fc3luY01vKCkpLFxyXG4gICAgICAgICAgICAgICAgdGFwKChjKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm1vLiRJbmxpbmVNb0NoYW5nZWQgPT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW8uJElubGluZU1vQ2hhbmdlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChjKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmVkaXRGb3JtUGFuZWxWYWx1ZUNoYW5nZS5lbWl0KHsgbW86IHRoaXMubW8sIGZpZWxkRGJOYW1lOiBjIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIHByaXZhdGUgZ2V0IF9oYXNGb3JtUGFuZWxTZXJ2aWNlKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9mb3JtUGFuZWxTZXJ2aWNlICE9PSBudWxsICYmIHRoaXMuZm9ybVNldHRpbmc7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX2hhc0Zvcm1QYW5lbFNlcnZpY2UpIHtcclxuICAgICAgICAgICAgdGhpcy5fZm9ybVBhbmVsU2VydmljZS5jb250ZXh0JC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgICAgIHRoaXMuX2Zvcm1QYW5lbFNlcnZpY2UudmlldyQucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgICB0aGlzLmxheW91dCQgPSB0aGlzLl9mb3JtUGFuZWxTZXJ2aWNlLmxheW91dCQ7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmlubGluZUVkaXRXaXRob3V0U2VsZWN0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2FkQW5kQ3JlYXRlRm9ybVBhbmVsQ3RybHIoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgICAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcclxuICAgICAgICBjb25zdCB7IGlzQ2hlY2tlZCwgaW5saW5lRWRpdE1vZGUgfSA9IGNoYW5nZXM7XHJcbiAgICAgICAgbGV0IG5lZWRUb0xvYWRGb3JtID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKHRoaXMuaW5saW5lRWRpdE1vZGUpIHtcclxuICAgICAgICAgICAgaWYgKGlzQ2hlY2tlZCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFpc0NoZWNrZWQuY3VycmVudFZhbHVlICYmIGlzQ2hlY2tlZC5wcmV2aW91c1ZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX25lZWRUb1NhdmUoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zYXZlRWRpdGVkTW8kLm5leHQoJ0NIRUNLX0NIQU5HRUQnKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzQ2hlY2tlZC5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICBuZWVkVG9Mb2FkRm9ybSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGlzQ2hlY2tlZCAmJiAhaXNDaGVja2VkLmZpcnN0Q2hhbmdlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3JhaXNlV29ya2Zsb3dTaGFyZUJ1dHRvbnMoaXNDaGVja2VkLmN1cnJlbnRWYWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpbmxpbmVFZGl0TW9kZT8uY3VycmVudFZhbHVlICYmICFpbmxpbmVFZGl0TW9kZT8ucHJldmlvdXNWYWx1ZSAmJiB0aGlzLmlzQ2hlY2tlZCkge1xyXG4gICAgICAgICAgICBuZWVkVG9Mb2FkRm9ybSA9IHRydWU7XHJcbiAgICAgICAgfSBlbHNlIGlmICghaW5saW5lRWRpdE1vZGU/LmN1cnJlbnRWYWx1ZSAmJiBpbmxpbmVFZGl0TW9kZT8ucHJldmlvdXNWYWx1ZSAmJiB0aGlzLmlzQ2hlY2tlZCkge1xyXG4gICAgICAgICAgICB0aGlzLl9zYXZlRWRpdGVkTW8kLm5leHQoJ0VTQycpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobmVlZFRvTG9hZEZvcm0gJiYgIXRoaXMuaW5saW5lRWRpdFdpdGhvdXRTZWxlY3Rpb24pIHtcclxuICAgICAgICAgICAgdGhpcy5fbG9hZEFuZENyZWF0ZUZvcm1QYW5lbEN0cmxyKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjaGFuZ2VzLm1vICYmICFjaGFuZ2VzLm1vLmZpcnN0Q2hhbmdlICYmIHRoaXMuaW5saW5lRWRpdE1vZGUpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuX2Zvcm1QYW5lbExvYWRlZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtUGFuZWxDdHJsci5TZXRWYWx1ZShjaGFuZ2VzLm1vLmN1cnJlbnRWYWx1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gaWYgKG1vICYmICFtby5maXJzdENoYW5nZSAmJiB0aGlzLl9oYXNGb3JtUGFuZWxTZXJ2aWNlICYmIHRoaXMuaXNDaGVja2VkICYmIHRoaXMuaW5saW5lRWRpdE1vZGUpIHtcclxuICAgICAgICAvLyAgICAgLy90aGlzLmZvcm1QYW5lbEN0cmxyLlNldFZhbHVlKGNoYW5nZXMubW8uY3VycmVudFZhbHVlKTtcclxuICAgICAgICAvLyB9XHJcbiAgICB9XHJcbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xyXG4gICAgICAgIGlmICh0aGlzLmZvcm1QYW5lbEN0cmxyKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybVBhbmVsQ3RybHIudW4oJ2JydWxlU2hvd01lc3NhZ2VBY3Rpb24nLCB0aGlzLl9oYW5kbGVCcnVsZVNob3dNZXNzYWdlQWN0aW9uKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBPbkNhcnRhYmxlRm9ybUNsaWNrKGUpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5pc0NoZWNrZWQpIHtcclxuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvblJvd0NoZWNrKG9ubHlDaGVjaz86IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9yb3dDaGVjayhvbmx5Q2hlY2spO1xyXG4gICAgfVxyXG4gICAgb25Sb3dDbGljaygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnJvd0NsaWNrLmVtaXQoeyBtbzogdGhpcy5tbywgaW5kZXg6IHRoaXMuaW5kZXggfSk7XHJcbiAgICB9XHJcbiAgICBvbkNvbHVtbkNoYW5nZVRvRWRpdE1vZGUoZWxEb206IEhUTUxFbGVtZW50LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgZm9jdXNhYmxlcyA9IGVsRG9tLnF1ZXJ5U2VsZWN0b3JBbGwoXHJcbiAgICAgICAgICAgIGBidXR0b24sYnV0dG9uOm5vdChbZGlzYWJsZWRdKSxbaHJlZl0saW5wdXQ6bm90KFtkaXNhYmxlZF0pLGlucHV0LFxyXG4gICAgICAgICAgICAgICAgc2VsZWN0LHNlbGVjdDpub3QoW2Rpc2FibGVkXSksdGV4dGFyZWEsdGV4dGFyZWE6bm90KFtkaXNhYmxlZF0pLFt0YWJpbmRleF06bm90KFt0YWJpbmRleD1cIi0xXCJdKWBcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuX2xhc3RFZGl0YWJsZUNvbHVtbkluZGV4ID0gaW5kZXg7XHJcbiAgICAgICAgaWYgKCFmb2N1c2FibGVzLmxlbmd0aCB8fCB0aGlzLl9mb2N1c1RvRmlyc3RFaWR0YWJsZUNvbHVtbikge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX2ZvY3VzVG9GaXJzdEVpZHRhYmxlQ29sdW1uID0gdHJ1ZTtcclxuICAgICAgICBjb25zdCBsYXN0Rm9jdXNhYmxlID0gZm9jdXNhYmxlc1swXTtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgKGxhc3RGb2N1c2FibGUgYXMgSFRNTEVsZW1lbnQpPy5mb2N1cygpO1xyXG4gICAgICAgIH0sIDApO1xyXG4gICAgfVxyXG4gICAgb25UYWJLZXlEb3duKGUsIGluZGV4KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKGluZGV4ID09PSB0aGlzLl9sYXN0RWRpdGFibGVDb2x1bW5JbmRleCkge1xyXG4gICAgICAgICAgICBQcmV2ZW50RGVmYXVsRXZlbnQoZSk7XHJcbiAgICAgICAgICAgIHRoaXMuX3NhdmVFZGl0ZWRNbyQubmV4dCgnVEFCJyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgb25FZGl0Rm9ybVBhbmVsU2F2ZShlKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fc2F2ZUVkaXRlZE1vJC5uZXh0KCdDVFJMK0VOVEVSJyk7XHJcbiAgICB9XHJcbiAgICBvbkVkaXRGb3JtUGFuZWxDYW5jZWwoZSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZXNjYXBlS2V5LmVtaXQodGhpcy5tbyk7XHJcbiAgICB9XHJcbiAgICBvblVsdkNvbW1hbmQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy51bHZDb21tYW5kLmVtaXQoeyBtbzogdGhpcy5tbywgaW5kZXg6IHRoaXMuaW5kZXggfSk7XHJcbiAgICB9XHJcbiAgICBvbkFjdGlvbihjb21tYW5kQm9keTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5hY3Rpb24uZW1pdChjb21tYW5kQm9keSk7XHJcbiAgICB9XHJcbiAgICBvbkV4cGFuZENsaWNrKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZXhwYW5kQ2xpY2suZW1pdCh0aGlzLm1vKTtcclxuICAgIH1cclxuICAgIG9uRHluYW1pY0NvbXBvbmVudEV2ZW50cyhlOiB7IHRpdGxlOiBzdHJpbmc7IGRhdGE/OiBhbnkgfSk6IHZvaWQge1xyXG4gICAgICAgIHN3aXRjaCAoZS50aXRsZSkge1xyXG4gICAgICAgICAgICBjYXNlICdyb3dDaGVjayc6XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uUm93Q2hlY2soKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdyb3dDbGljayc6XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uUm93Q2xpY2soKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICd1bHZDb21tYW5kJzpcclxuICAgICAgICAgICAgICAgIHRoaXMub25VbHZDb21tYW5kKCk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb25DYXJ0YWJsZUZvcm1DbG9zZWQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jYXJ0YWJsZUZvcm1DbG9zZWQuZW1pdCh7IG1vOiB0aGlzLm1vLCBpbmRleDogdGhpcy5pbmRleCB9KTtcclxuICAgIH1cclxuXHJcbiAgICBvbkNhcnRhYmxlQnJ1bGVBY3Rpb24oYnJ1bGVBY3Rpb246IEJydWxlQWN0aW9uTWVzc2FnZSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2hhbmRsZUJydWxlU2hvd01lc3NhZ2VBY3Rpb24oYnJ1bGVBY3Rpb24pO1xyXG4gICAgfVxyXG4gICAgb25DYXJ0YWJsZUFmdGVyVGFuc2l0aW9uKGUpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLndvcmtmbG93U3RhdGUgPSB7XHJcbiAgICAgICAgICAgIGVycm9yOiB0aGlzLmJydWxlQWN0aW9uTWVzc2FnZSA/IHRoaXMuYnJ1bGVBY3Rpb25NZXNzYWdlIDogZS5lcnJvcixcclxuICAgICAgICAgICAgc3RhdGU6ICdGaW5pc2gnXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuICAgIG9uQ2FydGFibGVCZWZvcmVUYW5zaXRpb24oKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy53b3JrZmxvd1N0YXRlID0geyBzdGF0ZTogJ1BlbmRpbmcnLCBlcnJvcjogbnVsbCB9O1xyXG4gICAgICAgIC8vIHRoaXMud29ya2Zsb3dTdGF0ZUNoYW5nZWQuZW1pdCh0aGlzLndvcmtmbG93U3RhdGUpO1xyXG4gICAgfVxyXG4gICAgb25SZXNldFdvcmtmbG93U3RhdGUoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5faGFuZGxlUmVzZXRXb3JrZmxvd1N0YXRlKCk7XHJcbiAgICB9XHJcbiAgICBfdHJhY2tCeUNvbHVtbihpbmRleDogbnVtYmVyLCBjb2x1bW46IFJlcG9ydFZpZXdDb2x1bW4pOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBgJHtjb2x1bW4uTmFtZX0ke2luZGV4fWA7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX2hhbmRsZVJlc2V0V29ya2Zsb3dTdGF0ZSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmJydWxlQWN0aW9uTWVzc2FnZSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy53b3JrZmxvd1N0YXRlID0geyBzdGF0ZTogJycsIGVycm9yOiBudWxsIH07XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX3VwZGF0ZUNhcnRhYmxlTW8oc2VyaWFsaXplTW86IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIGlmIChzZXJpYWxpemVNbyAmJiB0aGlzLl9jYXJ0YWJsZU1vKSB7XHJcbiAgICAgICAgICAgIHNlcmlhbGl6ZU1vID0gYCR7c2VyaWFsaXplTW99YDtcclxuICAgICAgICAgICAgY29uc3QgbW8gPSBCYXJzYUFwaS5FeHQuZGVjb2RlKHNlcmlhbGl6ZU1vKTtcclxuICAgICAgICAgICAgdGhpcy5fY2FydGFibGVNbyA9IHsgLi4udGhpcy5fY2FydGFibGVNbywgLi4ubW8gfTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX2NyZWF0ZUNhcnRhYmxlUGFyYW1zKCk6IHZvaWQge1xyXG4gICAgICAgIGxldCBjYXJ0YWJsZVRlbXBsYXRlID0gdGhpcy5fY2FydGFibGVUZW1wbGF0ZTtcclxuICAgICAgICBjb25zdCBjYXJ0YWJsZU1vID0gdGhpcy5fY2FydGFibGVNbztcclxuICAgICAgICBjb25zdCBjYXJ0YWJsZVdvcmtmbG93RGF0YSA9IHRoaXMuX2NhcnRhYmxlV29ya2Zsb3dEYXRhO1xyXG4gICAgICAgIGlmICh0aGlzLmhhc0NhcnRhYmxlVGVtcGxhdGUpIHtcclxuICAgICAgICAgICAgLy8gVE9ETyB1cGRhdGUgY2FydGFibGUgbW87XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICBjYXJ0YWJsZVRlbXBsYXRlICYmXHJcbiAgICAgICAgICAgIGNhcnRhYmxlTW8gJiZcclxuICAgICAgICAgICAgdHlwZW9mIGNhcnRhYmxlV29ya2Zsb3dEYXRhICE9PSAndW5kZWZpbmVkJyAmJlxyXG4gICAgICAgICAgICB0aGlzLl9zZXJpYWxpemVkUmVsYXRlZE1vXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIGNhcnRhYmxlVGVtcGxhdGUgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGNhcnRhYmxlVGVtcGxhdGUpKTtcclxuICAgICAgICAgICAgY29uc3QgdmlldyA9IGNhcnRhYmxlVGVtcGxhdGUuVmlldztcclxuICAgICAgICAgICAgY2FydGFibGVUZW1wbGF0ZS5EYXRhID0geyBNbzogeyAuLi5jYXJ0YWJsZU1vIH0gfTtcclxuICAgICAgICAgICAgY2FydGFibGVUZW1wbGF0ZS5Xb3JrZmxvdyA9IGNhcnRhYmxlV29ya2Zsb3dEYXRhID09PSAnJyA/IG51bGwgOiBKU09OLnBhcnNlKGNhcnRhYmxlV29ya2Zsb3dEYXRhKTtcclxuICAgICAgICAgICAgaWYgKCF2aWV3LkV4dHJhSnNvblByb3ApIHtcclxuICAgICAgICAgICAgICAgIHZpZXcuRXh0cmFKc29uUHJvcCA9IHt9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHZpZXcuRXh0cmFKc29uUHJvcC5Jc1NpbXBsZSA9IHRydWU7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmNhcnRhYmxlUGFyYW1zID0ge1xyXG4gICAgICAgICAgICAgICAgZm9ybVNldHRpbmc6IGNhcnRhYmxlVGVtcGxhdGUsXHJcbiAgICAgICAgICAgICAgICBtb0lkOiBjYXJ0YWJsZU1vLklkLFxyXG4gICAgICAgICAgICAgICAgdHlwZURlZklkOiBjYXJ0YWJsZU1vLiRUeXBlRGVmSWQsXHJcbiAgICAgICAgICAgICAgICB2aWV3SWQ6IHZpZXcuVHlwZVZpZXdJZCxcclxuICAgICAgICAgICAgICAgIGluRGlhbG9nOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGxvYWRBY3Rpdml0eVZpZXc6IHRydWVcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgdGhpcy5oYXNDYXJ0YWJsZVRlbXBsYXRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfbmVlZFRvU2F2ZSgpOiBib29sZWFuIHtcclxuICAgICAgICAvLyBpZiAoIXRoaXMuaXNDaGVja2VkKSB7XHJcbiAgICAgICAgLy8gICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgLy8gY29uc3QgaXNDaGlsZE5vZGUgPSAodGhpcy5fZWwubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuY29udGFpbnMoZS50YXJnZXQpO1xyXG4gICAgICAgIC8vIGlmIChpc0NoaWxkTm9kZSkge1xyXG4gICAgICAgIC8vICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIGNvbnN0IHQgPSB0aGlzLmlubGluZUVkaXRNb2RlICYmIHRoaXMuX2hhc0Zvcm1QYW5lbFNlcnZpY2U7XHJcbiAgICAgICAgaWYgKCF0KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1QYW5lbEN0cmxyICYmIHRoaXMuZm9ybVBhbmVsQ3RybHIuSXNNb0NoYW5nZWQoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgX2NoZWNrZm9jdXNPdXRGcm9tUm93KHRhcmdldCk6IHZvaWQge1xyXG4gICAgICAgIC8vIGNvbnN0IGZvY3VzYWJsZTogTm9kZUxpc3QgPSB0aGlzLl9mb2N1c2FibGVDb250cm9scztcclxuICAgICAgICAvLyBsZXQgZm91bmRJbkZvY3VzYWJsZSA9IGZhbHNlO1xyXG4gICAgICAgIC8vIGZvY3VzYWJsZS5mb3JFYWNoKChjKSA9PiB7XHJcbiAgICAgICAgLy8gICAgIGlmIChjID09PSB0YXJnZXQpIHtcclxuICAgICAgICAvLyAgICAgICAgIGZvdW5kSW5Gb2N1c2FibGUgPSB0cnVlO1xyXG4gICAgICAgIC8vICAgICB9XHJcbiAgICAgICAgLy8gfSk7XHJcbiAgICAgICAgLy8gaWYgKCFmb3VuZEluRm9jdXNhYmxlKSB7XHJcbiAgICAgICAgLy8gICAgIHRoaXMuX3NhdmVFZGl0ZWRNbyQubmV4dCgnVEFCJyk7XHJcbiAgICAgICAgLy8gfVxyXG4gICAgfVxyXG4gICAgcHJvdGVjdGVkIF9yb3dDaGVjayhvbmx5Q2hlY2s/OiBib29sZWFuKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5yb3dDaGVjay5lbWl0KHsgbW86IHRoaXMubW8sIGluZGV4OiB0aGlzLmluZGV4LCBvbmx5Q2hlY2sgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIF9yYWlzZVdvcmtmbG93U2hhcmVCdXR0b25zKGlzQ2hlY2tlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmNhcnRhYmxlUGFyYW1zKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNob2ljZUxpc3Q6IENob2ljZURlZltdID0gdGhpcy5jYXJ0YWJsZVBhcmFtcy5mb3JtU2V0dGluZz8uV29ya2Zsb3c/LkNob2ljZUxpc3Q7XHJcbiAgICAgICAgICAgIGlmIChjaG9pY2VMaXN0Py5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMud29ya2Zsb3dTaGFyZUJ1dHRvbnMuZW1pdCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1QYW5lbEN0cmxyOiB0aGlzLl9jYXJ0YWJsZUZvcm1SZWYuZm9ybVBhbmVsQ3RybCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbW86IHRoaXMubW8sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNob2ljZUxpc3QsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZDogaXNDaGVja2VkXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgX2hhbmRsZVZhbHVlQ2hhbmdlKGZvcm1QYW5lbEN0cmwsIGZpZWxkQ3RybHIpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMuaXNDaGVja2VkKSB7XHJcbiAgICAgICAgICAgIHRoaXMub25Sb3dDaGVjaygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9mb3JtcGFuZWxWYWx1ZUNoYW5nZWQkLm5leHQoZmllbGRDdHJscj8uU2V0dGluZz8uQ29udHJvbE5hbWUpO1xyXG4gICAgfVxyXG4gICAgcHJvdGVjdGVkIF9zeW5jTW8oKTogT2JzZXJ2YWJsZTx2b2lkPiB7XHJcbiAgICAgICAgY29uc3Qgc3luY1dpdGhGb3JtcGFuZWxNbyA9IHRoaXMubW87XHJcbiAgICAgICAgY29uc3QgX2lzQ2hlY2tlZCA9IHRoaXMubW8uJElzQ2hlY2tlZDtcclxuICAgICAgICBjb25zdCBmb3JtUGFuZWxDdHJsck1vID0gdGhpcy5mb3JtUGFuZWxDdHJsci5NbztcclxuICAgICAgICB0aGlzLl91cGRhdGVXaXRoT3JpZ2luYWxWYWx1ZXMoZm9ybVBhbmVsQ3RybHJNbywgc3luY1dpdGhGb3JtcGFuZWxNbyk7XHJcbiAgICAgICAgc3luY1dpdGhGb3JtcGFuZWxNb1snJE9yaWdpbmFsVmFsdWVzJ10gPSBmb3JtUGFuZWxDdHJsck1vWyckT3JpZ2luYWxWYWx1ZXMnXTtcclxuICAgICAgICBzeW5jV2l0aEZvcm1wYW5lbE1vWyckRmllbGREaWN0J10gPSBmb3JtUGFuZWxDdHJsck1vWyckRmllbGREaWN0J107XHJcbiAgICAgICAgc3luY1dpdGhGb3JtcGFuZWxNb1snJFN0YXRlJ10gPSBmb3JtUGFuZWxDdHJsck1vWyckU3RhdGUnXTsgLy8gdGhpcyBhZGQgYmVjYXVzZSBpZiB3ZSBlZGl0IHVuY2hhbmdlZCBtbyBpdCBkb2VzIG5vdCByZWZsZWN0IHRvIG1vIG9mIHVsdi5cclxuICAgICAgICB0aGlzLm1vID0geyAuLi5zeW5jV2l0aEZvcm1wYW5lbE1vIH07XHJcbiAgICAgICAgdGhpcy5tby4kSXNDaGVja2VkID0gX2lzQ2hlY2tlZDtcclxuICAgICAgICByZXR1cm4gZnJvbShQcm9taXNlLnJlc29sdmUoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIF91cGRhdGVXaXRoT3JpZ2luYWxWYWx1ZXMoc291cmNlOiBNZXRhb2JqZWN0RGF0YU1vZGVsLCBkZXN0OiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCB7XHJcbiAgICAgICAgT2JqZWN0LmtleXMoc291cmNlLiRPcmlnaW5hbFZhbHVlcykuZm9yRWFjaCgoYzogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGRlc3RbY10gPSBzb3VyY2VbY107XHJcbiAgICAgICAgICAgIGlmIChzb3VyY2VbYyArICckQ2FwdGlvbiddKSB7XHJcbiAgICAgICAgICAgICAgICBkZXN0W2MgKyAnJENhcHRpb24nXSA9IHNvdXJjZVtjICsgJyRDYXB0aW9uJ107XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHNvdXJjZVtjICsgJyRJY29uJ10pIHtcclxuICAgICAgICAgICAgICAgIGRlc3RbYyArICckSWNvbiddID0gc291cmNlW2MgKyAnJEljb24nXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfcmFpc2VGb3JtUGFuZWxWYWx1ZUNoYW5nZWQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5lZGl0Rm9ybVBhbmVsVmFsdWVDaGFuZ2UuZW1pdCh7IG1vOiB0aGlzLm1vIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfaGFuZGxlQnJ1bGVTaG93TWVzc2FnZUFjdGlvbihhY3Rpb246IEJydWxlQWN0aW9uTWVzc2FnZSk6IHZvaWQge1xyXG4gICAgICAgIGFjdGlvbi5NZXNzYWdlRXhwcmVzc2lvbkh0bWwgPSB0aGlzLl9kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoYWN0aW9uLk1lc3NhZ2VFeHByZXNzaW9uKTtcclxuICAgICAgICB0aGlzLmJydWxlQWN0aW9uTWVzc2FnZSA9IGFjdGlvbjtcclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfY3JlYXRlRm9ybVBhbmVsQ3RybHIobW86IE1ldGFvYmplY3REYXRhTW9kZWwsIHR5cGVEZWZJZDogc3RyaW5nKTogYW55IHtcclxuICAgICAgICBpZiAoIXRoaXMuZm9ybVBhbmVsQ3RybHIpIHtcclxuICAgICAgICAgICAgdGhpcy5mb3JtUGFuZWxDdHJsciA9IGNyZWF0ZUdyaWRFZGl0b3JGb3JtUGFuZWwoXHJcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1TZXR0aW5nLFxyXG4gICAgICAgICAgICAgICAgeyAuLi5tbyB9LFxyXG4gICAgICAgICAgICAgICAgdHlwZURlZklkLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5leHRyYVJlbGF0aW9uLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5yZXdyaXRlTGF5b3V0LFxyXG4gICAgICAgICAgICAgICAgdGhpcy5VbHZNYWluQ3RybHJcclxuICAgICAgICAgICAgICAgIC8vIEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKHRoaXMuY29udGV4dC5TZXR0aW5nLCAnRXh0cmEuUmVsYXRpb24nKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmZvcm1QYW5lbEN0cmxyLklubGluZUVkaXRJblJlcG9ydCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5mb3JtUGFuZWxDdHJsci5vbih7XHJcbiAgICAgICAgICAgIGJydWxlU2hvd01lc3NhZ2VBY3Rpb246IHRoaXMuX2hhbmRsZUJydWxlU2hvd01lc3NhZ2VBY3Rpb24uYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgdmFsdWVDaGFuZ2U6IHRoaXMuX2hhbmRsZVZhbHVlQ2hhbmdlLmJpbmQodGhpcylcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybVBhbmVsQ3RybHI7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIF9sb2FkQW5kQ3JlYXRlRm9ybVBhbmVsQ3RybHIoKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgZm9ybVNldHRpbmdEYXRhID0gdGhpcy5mb3JtU2V0dGluZy5EYXRhO1xyXG4gICAgICAgIGNvbnN0IGZvcm1NbyA9IHtcclxuICAgICAgICAgICAgLi4udGhpcy5tbyxcclxuICAgICAgICAgICAgJEZpZWxkRGljdDogZm9ybVNldHRpbmdEYXRhLk1vLiRGaWVsZERpY3QsXHJcbiAgICAgICAgICAgICRUeXBlRGVmSWQ6IGZvcm1TZXR0aW5nRGF0YS5Nby4kVHlwZURlZklkLFxyXG4gICAgICAgICAgICAkT3JpZ2luYWxWYWx1ZXM6IHt9XHJcbiAgICAgICAgfTtcclxuICAgICAgICBpZiAodGhpcy5fZm9ybVBhbmVsTG9hZGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybVBhbmVsQ3RybHIuU2V0VmFsdWUoZm9ybU1vKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5fY3JlYXRlRm9ybVBhbmVsQ3RybHIoZm9ybU1vLCB0aGlzLnR5cGVEZWZJZCk7XHJcbiAgICAgICAgdGhpcy5fZm9ybVBhbmVsTG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICBjb25zdCBmb3JtUGFuZWxDdHJsciA9IHRoaXMuZm9ybVBhbmVsQ3RybHI7XHJcbiAgICAgICAgdGhpcy5mb3JtUGFuZWxDdHJsci5VbHZNb0RhdGFMaXN0Q291bnQgPSB0aGlzLm1vRGF0YUxpc3RDb3VudCAtIDE7XHJcbiAgICAgICAgZm9ybVBhbmVsQ3RybHIuTG9hZEFuZENyZWF0ZShudWxsLCBmYWxzZSwgZmFsc2UsICgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgY3VzdG9tRm9ybVBhbmVsVWkgPSBmb3JtUGFuZWxDdHJsci5BZGFwdGVyLkNvbnRyb2w7XHJcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudE1vID0gdGhpcy5fcGFyZW50Rm9ybVBhbmVsU2VydmljZSA/IHRoaXMuX3BhcmVudEZvcm1QYW5lbFNlcnZpY2UubW8gOiBudWxsO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5leHRyYVJlbGF0aW9uICYmIHBhcmVudE1vICYmIHRoaXMuZXh0cmFSZWxhdGlvbi5SZWxhdGlvblR5cGUgPT09ICdDb21wb3NpdGlvbicpIHtcclxuICAgICAgICAgICAgICAgIGZvcm1QYW5lbEN0cmxyLk1vLlNldEZWYWx1ZSh0aGlzLmV4dHJhUmVsYXRpb24uUGFyZW50RmROYW1lLCBwYXJlbnRNbyk7XHJcbiAgICAgICAgICAgICAgICAvLyBuZXdGb3JtU2V0dGluZ3MuRGF0YS5Nb1tyZWxhdGlvbi5QYXJlbnRGZE5hbWVdID0gcGFyZW50TW8uR2V0Q2hhbmdlZE9iamVjdCgpO1xyXG4gICAgICAgICAgICAgICAgLy8gbmV3Rm9ybVNldHRpbmdzLkRhdGEuTW9bcmVsYXRpb24uUGFyZW50RmROYW1lXS4kU3RhdGUgPSBwYXJlbnRNby4kU3RhdGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY3VzdG9tRm9ybVBhbmVsVWkuUmVmcmVzaCA9ICgpID0+IHt9O1xyXG4gICAgICAgICAgICB0aGlzLl9mb3JtUGFuZWxTZXJ2aWNlLmNvbnRleHQgPSBmb3JtUGFuZWxDdHJsci5BZGFwdGVyLkNvbnRyb2w7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX3Jlc2V0U2F2aW5nU3RhdGVzKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaGFzRXJyb3IgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmJydWxlQWN0aW9uTWVzc2FnZSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5zYXZlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfc2V0U2F2aW5nU3RhdGUoZXJyKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICB0aGlzLmhhc0Vycm9yID0gdHJ1ZTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmhhc0Vycm9yID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zYXZlZCA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX2lubGluZUVkaXRTYXZlRm9ybVBhbmVsKHJlYXNvbik6IFByb21pc2U8eyByZWFzb246IFJlYXNvblRvU2F2ZTsgc3VjY2VlZDogYm9vbGVhbjsgc2F2ZWQ6IGJvb2xlYW4gfT4ge1xyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8eyByZWFzb246IFJlYXNvblRvU2F2ZTsgc3VjY2VlZDogYm9vbGVhbjsgc2F2ZWQ6IGJvb2xlYW4gfT4oKHJlc29sdmUsIF8pID0+IHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmZvcm1QYW5lbEN0cmxyLklzTW9DaGFuZ2VkKCkpIHtcclxuICAgICAgICAgICAgICAgIC8vIGlmIHN0YXRlIG9mIG1vIGlzIG5ldyBvciBtb2RpZGZpZWQgdGhlbiBpdCBuZWVkcyB0byB1cGRhdGVcclxuICAgICAgICAgICAgICAgIHJlc29sdmUoeyByZWFzb24sIHN1Y2NlZWQ6IHRydWUsIHNhdmVkOiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBmb3JtUGFuZWxDdHJsck1vID0gdGhpcy5mb3JtUGFuZWxDdHJsci5NbztcclxuICAgICAgICAgICAgZGVsZXRlIGZvcm1QYW5lbEN0cmxyTW8uanNvbjtcclxuICAgICAgICAgICAgLy8gdGhpcy5zYXZpbmcgPSB0cnVlO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5tby4kSW5saW5lTW9DaGFuZ2VkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuZWRpdEZvcm1QYW5lbFNhdmUuZW1pdCh0aGlzLm1vKTtcclxuICAgICAgICAgICAgdGhpcy5icnVsZUFjdGlvbk1lc3NhZ2UgPSBudWxsO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5ub1NhdmVJbmxpbmVFZGl0SW5TZXJ2ZXIpIHtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUoeyByZWFzb24sIHN1Y2NlZWQ6IHRydWUsIHNhdmVkOiB0cnVlIH0pO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybVBhbmVsQ3RybHIuU2F2ZShmYWxzZSwgKGVycikgPT4ge1xyXG4gICAgICAgICAgICAgICAgLy8gdGhpcy5zYXZpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZm9ybVBhbmVsQ3RybHIuU2V0SXNDaGFuZ2VkKGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3NldFNhdmluZ1N0YXRlKGVycik7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKHsgcmVhc29uLCBzdWNjZWVkOiB0cnVlLCBzYXZlZDogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
535
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS12aWV3LWl0ZW0tcHJvcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1ub3Zpbi1yYXktY29yZS9zcmMvbGliL2R5bmFtaWMtY29tcG9uZW50L2Jhc2Utdmlldy1pdGVtLXByb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFFdkIsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixJQUFJLEVBRUosUUFBUSxFQUNSLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQWMsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVsSCxPQUFPLEVBSUgsUUFBUSxFQUtYLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLGtCQUFrQixFQUFFLHlCQUF5QixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTdFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7OztBQVUzRCxNQUFNLE9BQU8sMEJBQTJCLFNBQVEsc0JBQXNCO0lBc0NsRSxJQUFhLG1CQUFtQixDQUFDLEdBQVc7UUFDeEMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEdBQUcsQ0FBQztRQUNoQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDakMsQ0FBQztJQUNELElBQWEsZ0JBQWdCLENBQUMsR0FBZ0I7UUFDMUMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEdBQUcsQ0FBQztRQUM3QixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBQ0QsSUFBYSxVQUFVLENBQUMsR0FBd0I7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LFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLHdCQUF3QjtzQkFBaEMsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRU8sbUJBQW1CO3NCQUEvQixLQUFLO2dCQUtPLGdCQUFnQjtzQkFBNUIsS0FBSztnQkFJTyxVQUFVO3NCQUF0QixLQUFLO2dCQU1PLG9CQUFvQjtzQkFBaEMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICAgIENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgRWxlbWVudFJlZixcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIElucHV0LFxyXG4gICAgT25DaGFuZ2VzLFxyXG4gICAgT25Jbml0LFxyXG4gICAgT3B0aW9uYWwsXHJcbiAgICBPdXRwdXQsXHJcbiAgICBTZWxmLFxyXG4gICAgU2ltcGxlQ2hhbmdlcyxcclxuICAgIFNraXBTZWxmLFxyXG4gICAgVmlld0NoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmcm9tLCB0YXAsIE9ic2VydmFibGUsIFN1YmplY3QsIHN3aXRjaE1hcCwgdGFrZVVudGlsLCB0aHJvd0Vycm9yLCBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7XHJcbiAgICBNZXRhb2JqZWN0RGF0YU1vZGVsLFxyXG4gICAgUmVwb3J0Vmlld0NvbHVtbixcclxuICAgIEZvcm1TZXR0aW5nLFxyXG4gICAgQmFyc2FBcGksXHJcbiAgICBDaG9pY2VEZWYsXHJcbiAgICBUeXBlVWx2TWFpbkN0cmxyLFxyXG4gICAgQnJ1bGVBY3Rpb25NZXNzYWdlLFxyXG4gICAgRWpyYXlPbGdvXHJcbn0gZnJvbSAnLi4vYWJzdHJhY3QtY2xhc3Nlcyc7XHJcbmltcG9ydCB7IFByZXZlbnREZWZhdWxFdmVudCwgY3JlYXRlR3JpZEVkaXRvckZvcm1QYW5lbCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IEZvcm1QYW5lbFNlcnZpY2UsIFVsdk1haW5TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBCYXNlVmlld1Byb3BzQ29tcG9uZW50IH0gZnJvbSAnLi9iYXNlLXZpZXctcHJvcHMnO1xyXG5pbXBvcnQgeyBNb1JlcG9ydFZhbHVlUGlwZSB9IGZyb20gJy4uL3BpcGVzJztcclxuaW1wb3J0IHsgRm9ybUNvbXBvbmVudCB9IGZyb20gJy4uL2Zvcm0vZm9ybS5jb21wb25lbnQnO1xyXG50eXBlIFJlYXNvblRvU2F2ZSA9ICdUQUInIHwgJ0NUUkwrRU5URVInIHwgJ0NIRUNLX0NIQU5HRUQnIHwgJ0VTQycgfCAnTU9VU0VET1dOX09VVFNJREUnO1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYm5yYy1iYXNlLXZpZXctaXRlbS1wcm9wcycsXHJcbiAgICB0ZW1wbGF0ZTogYGAsXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICAgIHN0YW5kYWxvbmU6IGZhbHNlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCYXNlVmlld0l0ZW1Qcm9wc0NvbXBvbmVudCBleHRlbmRzIEJhc2VWaWV3UHJvcHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XHJcbiAgICBAT3V0cHV0KCkgYWN0aW9uTGlzdENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgICBAT3V0cHV0KCkgZXZlbnRzID0gbmV3IEV2ZW50RW1pdHRlcjx7IHRpdGxlOiBzdHJpbmc7IGRhdGE/OiBhbnkgfT4oKTtcclxuICAgIEBWaWV3Q2hpbGQoJ2NhcnRhYmxlRm9ybVJlZicsIHsgc3RhdGljOiBmYWxzZSB9KSBfY2FydGFibGVGb3JtUmVmOiBGb3JtQ29tcG9uZW50O1xyXG4gICAgQElucHV0KCkgY2hlY2tib3hDb21wb25lbnQ6IEVqcmF5T2xnbztcclxuICAgIEBJbnB1dCgpIGRpc2FibGVFbGxhcHNpczogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGF0dGFjaG1lbnRWaWV3VHlwZTogbnVtYmVyO1xyXG4gICAgQElucHV0KCkgY29udGV4dE1lbnVPdmVyZmxvd1RleHQ6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIGRldGFpbHNDb21wb25lbnQ/OiBFanJheU9sZ287XHJcbiAgICBASW5wdXQoKSBkZXRhaWxzQ29sdW1uczogUmVwb3J0Vmlld0NvbHVtbltdO1xyXG4gICAgQElucHV0KCkgZGV0YWlsc1RleHQ6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIG1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsO1xyXG4gICAgQElucHV0KCkgbW9EYXRhTGlzdENvdW50OiBudW1iZXI7XHJcbiAgICBASW5wdXQoKSBpbmRleDogbnVtYmVyO1xyXG4gICAgQElucHV0KCkgbGFzdDogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGlzZGlydHk6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBpc0NoZWNrZWQ6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBoaWRlRGV0YWlsc1RleHQ6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBzaG93Vmlld0J1dHRvbjogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGlzTmV3SW5saW5lTW86IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBleHRyYVJlbGF0aW9uOiBhbnk7XHJcbiAgICBASW5wdXQoKSBoaWRlT3Blbkljb246IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBpbmxpbmVFZGl0V2l0aG91dFNlbGVjdGlvbjogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGluRGlhbG9nOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgaXNNb2JpbGU6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBpc011bHRpU2VsZWN0OiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgcm93SW5kaWNhdG9yOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgZ3JvdXBTdW1tYXJ5OiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgaXNMYXN0Q2hpbGRHcm91cDogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIHNob3dSb3dOdW1iZXI6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSByb3dOdW1iZXI6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIGNvbG9yaW5nUm93OiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgbm9TYXZlSW5saW5lRWRpdEluU2VydmVyOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgcm93SW5kaWNhdG9yQ29sb3I6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIFVsdk1haW5DdHJscjogVHlwZVVsdk1haW5DdHJscjtcclxuICAgIEBJbnB1dCgpIGZpZWxkRGljdDogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcclxuICAgIEBJbnB1dCgpIGFjdGlvbkxpc3Q6IGFueVtdO1xyXG5cclxuICAgIEBJbnB1dCgpIHNldCBzZXJpYWxpemVkUmVsYXRlZE1vKHZhbDogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5fc2VyaWFsaXplZFJlbGF0ZWRNbyA9IHZhbDtcclxuICAgICAgICB0aGlzLl91cGRhdGVDYXJ0YWJsZU1vKHZhbCk7XHJcbiAgICAgICAgdGhpcy5fY3JlYXRlQ2FydGFibGVQYXJhbXMoKTtcclxuICAgIH1cclxuICAgIEBJbnB1dCgpIHNldCBjYXJ0YWJsZVRlbXBsYXRlKHZhbDogRm9ybVNldHRpbmcpIHtcclxuICAgICAgICB0aGlzLl9jYXJ0YWJsZVRlbXBsYXRlID0gdmFsO1xyXG4gICAgICAgIHRoaXMuX2NyZWF0ZUNhcnRhYmxlUGFyYW1zKCk7XHJcbiAgICB9XHJcbiAgICBASW5wdXQoKSBzZXQgY2FydGFibGVNbyh2YWw6IE1ldGFvYmplY3REYXRhTW9kZWwpIHtcclxuICAgICAgICB0aGlzLl9jYXJ0YWJsZU1vID0gdmFsO1xyXG4gICAgICAgIHRoaXMuX3VwZGF0ZUNhcnRhYmxlTW8odGhpcy5fc2VyaWFsaXplZFJlbGF0ZWRNbyk7XHJcblxyXG4gICAgICAgIHRoaXMuX2NyZWF0ZUNhcnRhYmxlUGFyYW1zKCk7XHJcbiAgICB9XHJcbiAgICBASW5wdXQoKSBzZXQgY2FydGFibGVXb3JrZmxvd0RhdGEodmFsOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLl9jYXJ0YWJsZVdvcmtmbG93RGF0YSA9IHZhbDtcclxuICAgICAgICB0aGlzLl9jcmVhdGVDYXJ0YWJsZVBhcmFtcygpO1xyXG4gICAgfVxyXG4gICAgLy8gQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6bW91c2Vkb3duJywgWyckZXZlbnQnXSlcclxuICAgIC8vIG9uTW91c2VEb3duKGUpOiB2b2lkIHtcclxuICAgIC8vICAgICAvLyB3ZSBtYWtlIHN1cmUgb25seSBkcmFnZ2FibGVzIG9uIHRoZSBkb2N1bWVudCBlbGVtZW50cyBhcmUgc2VsZWN0ZWRcclxuICAgIC8vICAgICBpZiAoXHJcbiAgICAvLyAgICAgICAgICF0aGlzLl9lbC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGUudGFyZ2V0KSAmJlxyXG4gICAgLy8gICAgICAgICB0aGlzLmlubGluZUVkaXRNb2RlICYmXHJcbiAgICAvLyAgICAgICAgIHRoaXMuYWxsb3dJbmxpbmVFZGl0ICYmXHJcbiAgICAvLyAgICAgICAgIHRoaXMuaXNDaGVja2VkICYmXHJcbiAgICAvLyAgICAgICAgIGUudGFyZ2V0LnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2J1dHRvbidcclxuICAgIC8vICAgICApIHtcclxuICAgIC8vICAgICAgICAgdGhpcy5kZXNlbGVjdEFsbC5lbWl0KCk7XHJcbiAgICAvLyAgICAgICAgIC8vIHRoaXMuX3NhdmVFZGl0ZWRNbyQubmV4dCgnTU9VU0VET1dOX09VVFNJREUnKTtcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyB9XHJcbiAgICBoYXNFcnJvciA9IGZhbHNlO1xyXG4gICAgX2ZvY3VzVG9GaXJzdEVpZHRhYmxlQ29sdW1uID0gZmFsc2U7XHJcbiAgICBfbGFzdEVkaXRhYmxlQ29sdW1uSW5kZXg6IG51bWJlcjtcclxuICAgIGlubGluZUVkaXRJblJlcG9ydCA9IHRydWU7XHJcbiAgICBsYXlvdXQkOiBPYnNlcnZhYmxlPGFueT47XHJcbiAgICBmb3JtUGFuZWxDdHJscjogYW55O1xyXG4gICAgc2F2aW5nOiBib29sZWFuO1xyXG4gICAgc2F2ZWQ6IGJvb2xlYW47XHJcbiAgICByZXdyaXRlTGF5b3V0ID0gdHJ1ZTtcclxuICAgIGhhc0NhcnRhYmxlVGVtcGxhdGUgPSBmYWxzZTtcclxuICAgIGNhcnRhYmxlUGFyYW1zOiB7XHJcbiAgICAgICAgZm9ybVNldHRpbmc6IEZvcm1TZXR0aW5nO1xyXG4gICAgICAgIG1vSWQ6IHN0cmluZztcclxuICAgICAgICB0eXBlRGVmSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICAgICAgICB2aWV3SWQ6IGFueTtcclxuICAgICAgICBpbkRpYWxvZzogYm9vbGVhbjtcclxuICAgICAgICBsb2FkQWN0aXZpdHlWaWV3OiBib29sZWFuO1xyXG4gICAgfTtcclxuICAgIHdvcmtmbG93U3RhdGU6IHsgZXJyb3I6IGFueTsgc3RhdGU6ICdQZW5kaW5nJyB8ICdGaW5pc2gnIHwgJycgfTtcclxuICAgIGJydWxlQWN0aW9uTWVzc2FnZTogQnJ1bGVBY3Rpb25NZXNzYWdlIHwgbnVsbCA9IG51bGw7XHJcbiAgICBwcml2YXRlIF9zYXZlRWRpdGVkTW8kID0gbmV3IFN1YmplY3Q8UmVhc29uVG9TYXZlPigpO1xyXG4gICAgcHJpdmF0ZSBfZm9ybXBhbmVsVmFsdWVDaGFuZ2VkJCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcclxuICAgIHByaXZhdGUgX2Zvcm1QYW5lbExvYWRlZDogYm9vbGVhbjtcclxuICAgIHByaXZhdGUgX2NhcnRhYmxlTW86IE1ldGFvYmplY3REYXRhTW9kZWw7XHJcbiAgICBwcml2YXRlIF9jYXJ0YWJsZVRlbXBsYXRlOiBGb3JtU2V0dGluZztcclxuICAgIHByaXZhdGUgX2NhcnRhYmxlV29ya2Zsb3dEYXRhOiBzdHJpbmc7XHJcbiAgICBwcml2YXRlIF9zZXJpYWxpemVkUmVsYXRlZE1vOiBzdHJpbmc7XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcm90ZWN0ZWQgX2VsOiBFbGVtZW50UmVmLFxyXG4gICAgICAgIHByb3RlY3RlZCBfZG9tU2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXHJcbiAgICAgICAgcHJvdGVjdGVkIF9jZHI6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgICAgIHByb3RlY3RlZCBfcmVwb3J0VmFsdWVQaXBlOiBNb1JlcG9ydFZhbHVlUGlwZSxcclxuICAgICAgICBAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKSBwcm90ZWN0ZWQgX3BhcmVudEZvcm1QYW5lbFNlcnZpY2U6IEZvcm1QYW5lbFNlcnZpY2UsXHJcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBwcm90ZWN0ZWQgX2Zvcm1QYW5lbFNlcnZpY2U6IEZvcm1QYW5lbFNlcnZpY2UsXHJcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJvdGVjdGVkIF91bHZNYWluU2VydmljZTogVWx2TWFpblNlcnZpY2VcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgdGhpcy5fc2F2ZUVkaXRlZE1vJFxyXG4gICAgICAgICAgICAuYXNPYnNlcnZhYmxlKClcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCksXHJcbiAgICAgICAgICAgICAgICBkZWJvdW5jZVRpbWUoNTAwKSxcclxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgocmVhc29uOiBSZWFzb25Ub1NhdmUpID0+IHRoaXMuX2lubGluZUVkaXRTYXZlRm9ybVBhbmVsKHJlYXNvbikpLFxyXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB0aHJvd0Vycm9yKCgpID0+IGVycikpXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzOiB7IHJlYXNvbjogUmVhc29uVG9TYXZlOyBzdWNjZWVkOiBib29sZWFuOyBzYXZlZDogYm9vbGVhbiB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzLnNhdmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tby4kSXNDaGVja2VkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZm9ybXBhbmVsVmFsdWVDaGFuZ2VkJC5uZXh0KCcnKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzLnJlYXNvbiA9PT0gJ1RBQicgfHwgcmVzLnJlYXNvbiA9PT0gJ0NUUkwrRU5URVInKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3ROZXh0SW5saW5lUmVjb3JkLmVtaXQodGhpcy5tbyk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlcy5yZWFzb24gPT09ICdFU0MnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lZGl0Rm9ybVBhbmVsQ2FuY2VsLmVtaXQodGhpcy5tbyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuX2Zvcm1wYW5lbFZhbHVlQ2hhbmdlZCRcclxuICAgICAgICAgICAgLmFzT2JzZXJ2YWJsZSgpXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpLFxyXG4gICAgICAgICAgICAgICAgLy8gc3dpdGNoTWFwKCgpID0+IHRoaXMuX3N5bmNNbygpKSxcclxuICAgICAgICAgICAgICAgIHRhcCgoYykgPT4gdGhpcy5fc3luY01vKCkpLFxyXG4gICAgICAgICAgICAgICAgdGFwKChjKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm1vLiRJbmxpbmVNb0NoYW5nZWQgPT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW8uJElubGluZU1vQ2hhbmdlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChjKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmVkaXRGb3JtUGFuZWxWYWx1ZUNoYW5nZS5lbWl0KHsgbW86IHRoaXMubW8sIGZpZWxkRGJOYW1lOiBjIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIHByaXZhdGUgZ2V0IF9oYXNGb3JtUGFuZWxTZXJ2aWNlKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9mb3JtUGFuZWxTZXJ2aWNlICE9PSBudWxsICYmIHRoaXMuZm9ybVNldHRpbmc7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX2hhc0Zvcm1QYW5lbFNlcnZpY2UpIHtcclxuICAgICAgICAgICAgdGhpcy5fZm9ybVBhbmVsU2VydmljZS5jb250ZXh0JC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgICAgIHRoaXMuX2Zvcm1QYW5lbFNlcnZpY2UudmlldyQucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgICB0aGlzLmxheW91dCQgPSB0aGlzLl9mb3JtUGFuZWxTZXJ2aWNlLmxheW91dCQ7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmlubGluZUVkaXRXaXRob3V0U2VsZWN0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2FkQW5kQ3JlYXRlRm9ybVBhbmVsQ3RybHIoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgICAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcclxuICAgICAgICBjb25zdCB7IGlzQ2hlY2tlZCwgaW5saW5lRWRpdE1vZGUgfSA9IGNoYW5nZXM7XHJcbiAgICAgICAgbGV0IG5lZWRUb0xvYWRGb3JtID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKHRoaXMuaW5saW5lRWRpdE1vZGUpIHtcclxuICAgICAgICAgICAgaWYgKGlzQ2hlY2tlZCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFpc0NoZWNrZWQuY3VycmVudFZhbHVlICYmIGlzQ2hlY2tlZC5wcmV2aW91c1ZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX25lZWRUb1NhdmUoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zYXZlRWRpdGVkTW8kLm5leHQoJ0NIRUNLX0NIQU5HRUQnKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzQ2hlY2tlZC5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICBuZWVkVG9Mb2FkRm9ybSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGlzQ2hlY2tlZCAmJiAhaXNDaGVja2VkLmZpcnN0Q2hhbmdlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3JhaXNlV29ya2Zsb3dTaGFyZUJ1dHRvbnMoaXNDaGVja2VkLmN1cnJlbnRWYWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpbmxpbmVFZGl0TW9kZT8uY3VycmVudFZhbHVlICYmICFpbmxpbmVFZGl0TW9kZT8ucHJldmlvdXNWYWx1ZSAmJiB0aGlzLmlzQ2hlY2tlZCkge1xyXG4gICAgICAgICAgICBuZWVkVG9Mb2FkRm9ybSA9IHRydWU7XHJcbiAgICAgICAgfSBlbHNlIGlmICghaW5saW5lRWRpdE1vZGU/LmN1cnJlbnRWYWx1ZSAmJiBpbmxpbmVFZGl0TW9kZT8ucHJldmlvdXNWYWx1ZSAmJiB0aGlzLmlzQ2hlY2tlZCkge1xyXG4gICAgICAgICAgICB0aGlzLl9zYXZlRWRpdGVkTW8kLm5leHQoJ0VTQycpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobmVlZFRvTG9hZEZvcm0gJiYgIXRoaXMuaW5saW5lRWRpdFdpdGhvdXRTZWxlY3Rpb24pIHtcclxuICAgICAgICAgICAgdGhpcy5fbG9hZEFuZENyZWF0ZUZvcm1QYW5lbEN0cmxyKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjaGFuZ2VzLm1vICYmICFjaGFuZ2VzLm1vLmZpcnN0Q2hhbmdlICYmIHRoaXMuaW5saW5lRWRpdE1vZGUpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuX2Zvcm1QYW5lbExvYWRlZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtUGFuZWxDdHJsci5TZXRWYWx1ZShjaGFuZ2VzLm1vLmN1cnJlbnRWYWx1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gaWYgKG1vICYmICFtby5maXJzdENoYW5nZSAmJiB0aGlzLl9oYXNGb3JtUGFuZWxTZXJ2aWNlICYmIHRoaXMuaXNDaGVja2VkICYmIHRoaXMuaW5saW5lRWRpdE1vZGUpIHtcclxuICAgICAgICAvLyAgICAgLy90aGlzLmZvcm1QYW5lbEN0cmxyLlNldFZhbHVlKGNoYW5nZXMubW8uY3VycmVudFZhbHVlKTtcclxuICAgICAgICAvLyB9XHJcbiAgICB9XHJcbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xyXG4gICAgICAgIGlmICh0aGlzLmZvcm1QYW5lbEN0cmxyKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybVBhbmVsQ3RybHIudW4oJ2JydWxlU2hvd01lc3NhZ2VBY3Rpb24nLCB0aGlzLl9oYW5kbGVCcnVsZVNob3dNZXNzYWdlQWN0aW9uKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBPbkNhcnRhYmxlRm9ybUNsaWNrKGUpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5pc0NoZWNrZWQpIHtcclxuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvblJvd0NoZWNrKG9ubHlDaGVjaz86IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9yb3dDaGVjayhvbmx5Q2hlY2spO1xyXG4gICAgfVxyXG4gICAgb25Sb3dDbGljaygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnJvd0NsaWNrLmVtaXQoeyBtbzogdGhpcy5tbywgaW5kZXg6IHRoaXMuaW5kZXggfSk7XHJcbiAgICB9XHJcbiAgICBvbkNvbHVtbkNoYW5nZVRvRWRpdE1vZGUoZWxEb206IEhUTUxFbGVtZW50LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgZm9jdXNhYmxlcyA9IGVsRG9tLnF1ZXJ5U2VsZWN0b3JBbGwoXHJcbiAgICAgICAgICAgIGBidXR0b24sYnV0dG9uOm5vdChbZGlzYWJsZWRdKSxbaHJlZl0saW5wdXQ6bm90KFtkaXNhYmxlZF0pLGlucHV0LFxyXG4gICAgICAgICAgICAgICAgc2VsZWN0LHNlbGVjdDpub3QoW2Rpc2FibGVkXSksdGV4dGFyZWEsdGV4dGFyZWE6bm90KFtkaXNhYmxlZF0pLFt0YWJpbmRleF06bm90KFt0YWJpbmRleD1cIi0xXCJdKWBcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuX2xhc3RFZGl0YWJsZUNvbHVtbkluZGV4ID0gaW5kZXg7XHJcbiAgICAgICAgaWYgKCFmb2N1c2FibGVzLmxlbmd0aCB8fCB0aGlzLl9mb2N1c1RvRmlyc3RFaWR0YWJsZUNvbHVtbikge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX2ZvY3VzVG9GaXJzdEVpZHRhYmxlQ29sdW1uID0gdHJ1ZTtcclxuICAgICAgICBjb25zdCBsYXN0Rm9jdXNhYmxlID0gZm9jdXNhYmxlc1swXTtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgKGxhc3RGb2N1c2FibGUgYXMgSFRNTEVsZW1lbnQpPy5mb2N1cygpO1xyXG4gICAgICAgIH0sIDApO1xyXG4gICAgfVxyXG4gICAgb25UYWJLZXlEb3duKGUsIGluZGV4KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKGluZGV4ID09PSB0aGlzLl9sYXN0RWRpdGFibGVDb2x1bW5JbmRleCkge1xyXG4gICAgICAgICAgICBQcmV2ZW50RGVmYXVsRXZlbnQoZSk7XHJcbiAgICAgICAgICAgIHRoaXMuX3NhdmVFZGl0ZWRNbyQubmV4dCgnVEFCJyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgb25FZGl0Rm9ybVBhbmVsU2F2ZShlKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fc2F2ZUVkaXRlZE1vJC5uZXh0KCdDVFJMK0VOVEVSJyk7XHJcbiAgICB9XHJcbiAgICBvbkVkaXRGb3JtUGFuZWxDYW5jZWwoZSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZXNjYXBlS2V5LmVtaXQodGhpcy5tbyk7XHJcbiAgICB9XHJcbiAgICBvblVsdkNvbW1hbmQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy51bHZDb21tYW5kLmVtaXQoeyBtbzogdGhpcy5tbywgaW5kZXg6IHRoaXMuaW5kZXggfSk7XHJcbiAgICB9XHJcbiAgICBvbkFjdGlvbihjb21tYW5kQm9keTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5hY3Rpb24uZW1pdChjb21tYW5kQm9keSk7XHJcbiAgICB9XHJcbiAgICBvbkV4cGFuZENsaWNrKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZXhwYW5kQ2xpY2suZW1pdCh0aGlzLm1vKTtcclxuICAgIH1cclxuICAgIG9uRHluYW1pY0NvbXBvbmVudEV2ZW50cyhlOiB7IHRpdGxlOiBzdHJpbmc7IGRhdGE/OiBhbnkgfSk6IHZvaWQge1xyXG4gICAgICAgIHN3aXRjaCAoZS50aXRsZSkge1xyXG4gICAgICAgICAgICBjYXNlICdyb3dDaGVjayc6XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uUm93Q2hlY2soKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdyb3dDbGljayc6XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uUm93Q2xpY2soKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICd1bHZDb21tYW5kJzpcclxuICAgICAgICAgICAgICAgIHRoaXMub25VbHZDb21tYW5kKCk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb25DYXJ0YWJsZUZvcm1DbG9zZWQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jYXJ0YWJsZUZvcm1DbG9zZWQuZW1pdCh7IG1vOiB0aGlzLm1vLCBpbmRleDogdGhpcy5pbmRleCB9KTtcclxuICAgIH1cclxuXHJcbiAgICBvbkNhcnRhYmxlQnJ1bGVBY3Rpb24oYnJ1bGVBY3Rpb246IEJydWxlQWN0aW9uTWVzc2FnZSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2hhbmRsZUJydWxlU2hvd01lc3NhZ2VBY3Rpb24oYnJ1bGVBY3Rpb24pO1xyXG4gICAgfVxyXG4gICAgb25DYXJ0YWJsZUFmdGVyVGFuc2l0aW9uKGUpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLndvcmtmbG93U3RhdGUgPSB7XHJcbiAgICAgICAgICAgIGVycm9yOiB0aGlzLmJydWxlQWN0aW9uTWVzc2FnZSA/IHRoaXMuYnJ1bGVBY3Rpb25NZXNzYWdlIDogZS5lcnJvcixcclxuICAgICAgICAgICAgc3RhdGU6ICdGaW5pc2gnXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuICAgIG9uQ2FydGFibGVCZWZvcmVUYW5zaXRpb24oKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy53b3JrZmxvd1N0YXRlID0geyBzdGF0ZTogJ1BlbmRpbmcnLCBlcnJvcjogbnVsbCB9O1xyXG4gICAgICAgIC8vIHRoaXMud29ya2Zsb3dTdGF0ZUNoYW5nZWQuZW1pdCh0aGlzLndvcmtmbG93U3RhdGUpO1xyXG4gICAgfVxyXG4gICAgb25SZXNldFdvcmtmbG93U3RhdGUoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5faGFuZGxlUmVzZXRXb3JrZmxvd1N0YXRlKCk7XHJcbiAgICB9XHJcbiAgICBfdHJhY2tCeUNvbHVtbihpbmRleDogbnVtYmVyLCBjb2x1bW46IFJlcG9ydFZpZXdDb2x1bW4pOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBgJHtjb2x1bW4uTmFtZX0ke2luZGV4fWA7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX2hhbmRsZVJlc2V0V29ya2Zsb3dTdGF0ZSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmJydWxlQWN0aW9uTWVzc2FnZSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy53b3JrZmxvd1N0YXRlID0geyBzdGF0ZTogJycsIGVycm9yOiBudWxsIH07XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX3VwZGF0ZUNhcnRhYmxlTW8oc2VyaWFsaXplTW86IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIGlmIChzZXJpYWxpemVNbyAmJiB0aGlzLl9jYXJ0YWJsZU1vKSB7XHJcbiAgICAgICAgICAgIHNlcmlhbGl6ZU1vID0gYCR7c2VyaWFsaXplTW99YDtcclxuICAgICAgICAgICAgY29uc3QgbW8gPSBCYXJzYUFwaS5FeHQuZGVjb2RlKHNlcmlhbGl6ZU1vKTtcclxuICAgICAgICAgICAgdGhpcy5fY2FydGFibGVNbyA9IHsgLi4udGhpcy5fY2FydGFibGVNbywgLi4ubW8gfTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX2NyZWF0ZUNhcnRhYmxlUGFyYW1zKCk6IHZvaWQge1xyXG4gICAgICAgIGxldCBjYXJ0YWJsZVRlbXBsYXRlID0gdGhpcy5fY2FydGFibGVUZW1wbGF0ZTtcclxuICAgICAgICBjb25zdCBjYXJ0YWJsZU1vID0gdGhpcy5fY2FydGFibGVNbztcclxuICAgICAgICBjb25zdCBjYXJ0YWJsZVdvcmtmbG93RGF0YSA9IHRoaXMuX2NhcnRhYmxlV29ya2Zsb3dEYXRhO1xyXG4gICAgICAgIGlmICh0aGlzLmhhc0NhcnRhYmxlVGVtcGxhdGUpIHtcclxuICAgICAgICAgICAgLy8gVE9ETyB1cGRhdGUgY2FydGFibGUgbW87XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICBjYXJ0YWJsZVRlbXBsYXRlICYmXHJcbiAgICAgICAgICAgIGNhcnRhYmxlTW8gJiZcclxuICAgICAgICAgICAgdHlwZW9mIGNhcnRhYmxlV29ya2Zsb3dEYXRhICE9PSAndW5kZWZpbmVkJyAmJlxyXG4gICAgICAgICAgICB0aGlzLl9zZXJpYWxpemVkUmVsYXRlZE1vXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIGNhcnRhYmxlVGVtcGxhdGUgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGNhcnRhYmxlVGVtcGxhdGUpKTtcclxuICAgICAgICAgICAgY29uc3QgdmlldyA9IGNhcnRhYmxlVGVtcGxhdGUuVmlldztcclxuICAgICAgICAgICAgY2FydGFibGVUZW1wbGF0ZS5EYXRhID0geyBNbzogeyAuLi5jYXJ0YWJsZU1vIH0gfTtcclxuICAgICAgICAgICAgY2FydGFibGVUZW1wbGF0ZS5Xb3JrZmxvdyA9IGNhcnRhYmxlV29ya2Zsb3dEYXRhID09PSAnJyA/IG51bGwgOiBKU09OLnBhcnNlKGNhcnRhYmxlV29ya2Zsb3dEYXRhKTtcclxuICAgICAgICAgICAgaWYgKCF2aWV3LkV4dHJhSnNvblByb3ApIHtcclxuICAgICAgICAgICAgICAgIHZpZXcuRXh0cmFKc29uUHJvcCA9IHt9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHZpZXcuRXh0cmFKc29uUHJvcC5Jc1NpbXBsZSA9IHRydWU7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmNhcnRhYmxlUGFyYW1zID0ge1xyXG4gICAgICAgICAgICAgICAgZm9ybVNldHRpbmc6IGNhcnRhYmxlVGVtcGxhdGUsXHJcbiAgICAgICAgICAgICAgICBtb0lkOiBjYXJ0YWJsZU1vLklkLFxyXG4gICAgICAgICAgICAgICAgdHlwZURlZklkOiBjYXJ0YWJsZU1vLiRUeXBlRGVmSWQsXHJcbiAgICAgICAgICAgICAgICB2aWV3SWQ6IHZpZXcuVHlwZVZpZXdJZCxcclxuICAgICAgICAgICAgICAgIGluRGlhbG9nOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGxvYWRBY3Rpdml0eVZpZXc6IHRydWVcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgdGhpcy5oYXNDYXJ0YWJsZVRlbXBsYXRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfbmVlZFRvU2F2ZSgpOiBib29sZWFuIHtcclxuICAgICAgICAvLyBpZiAoIXRoaXMuaXNDaGVja2VkKSB7XHJcbiAgICAgICAgLy8gICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgLy8gY29uc3QgaXNDaGlsZE5vZGUgPSAodGhpcy5fZWwubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuY29udGFpbnMoZS50YXJnZXQpO1xyXG4gICAgICAgIC8vIGlmIChpc0NoaWxkTm9kZSkge1xyXG4gICAgICAgIC8vICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIGNvbnN0IHQgPSB0aGlzLmlubGluZUVkaXRNb2RlICYmIHRoaXMuX2hhc0Zvcm1QYW5lbFNlcnZpY2U7XHJcbiAgICAgICAgaWYgKCF0KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1QYW5lbEN0cmxyICYmIHRoaXMuZm9ybVBhbmVsQ3RybHIuSXNNb0NoYW5nZWQoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgX2NoZWNrZm9jdXNPdXRGcm9tUm93KHRhcmdldCk6IHZvaWQge1xyXG4gICAgICAgIC8vIGNvbnN0IGZvY3VzYWJsZTogTm9kZUxpc3QgPSB0aGlzLl9mb2N1c2FibGVDb250cm9scztcclxuICAgICAgICAvLyBsZXQgZm91bmRJbkZvY3VzYWJsZSA9IGZhbHNlO1xyXG4gICAgICAgIC8vIGZvY3VzYWJsZS5mb3JFYWNoKChjKSA9PiB7XHJcbiAgICAgICAgLy8gICAgIGlmIChjID09PSB0YXJnZXQpIHtcclxuICAgICAgICAvLyAgICAgICAgIGZvdW5kSW5Gb2N1c2FibGUgPSB0cnVlO1xyXG4gICAgICAgIC8vICAgICB9XHJcbiAgICAgICAgLy8gfSk7XHJcbiAgICAgICAgLy8gaWYgKCFmb3VuZEluRm9jdXNhYmxlKSB7XHJcbiAgICAgICAgLy8gICAgIHRoaXMuX3NhdmVFZGl0ZWRNbyQubmV4dCgnVEFCJyk7XHJcbiAgICAgICAgLy8gfVxyXG4gICAgfVxyXG4gICAgcHJvdGVjdGVkIF9yb3dDaGVjayhvbmx5Q2hlY2s/OiBib29sZWFuKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5yb3dDaGVjay5lbWl0KHsgbW86IHRoaXMubW8sIGluZGV4OiB0aGlzLmluZGV4LCBvbmx5Q2hlY2sgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIF9yYWlzZVdvcmtmbG93U2hhcmVCdXR0b25zKGlzQ2hlY2tlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmNhcnRhYmxlUGFyYW1zKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNob2ljZUxpc3Q6IENob2ljZURlZltdID0gdGhpcy5jYXJ0YWJsZVBhcmFtcy5mb3JtU2V0dGluZz8uV29ya2Zsb3c/LkNob2ljZUxpc3Q7XHJcbiAgICAgICAgICAgIGlmIChjaG9pY2VMaXN0Py5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMud29ya2Zsb3dTaGFyZUJ1dHRvbnMuZW1pdCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1QYW5lbEN0cmxyOiB0aGlzLl9jYXJ0YWJsZUZvcm1SZWYuZm9ybVBhbmVsQ3RybCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbW86IHRoaXMubW8sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNob2ljZUxpc3QsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZDogaXNDaGVja2VkXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgX2hhbmRsZVZhbHVlQ2hhbmdlKGZvcm1QYW5lbEN0cmwsIGZpZWxkQ3RybHIpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMuaXNDaGVja2VkKSB7XHJcbiAgICAgICAgICAgIHRoaXMub25Sb3dDaGVjaygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9mb3JtcGFuZWxWYWx1ZUNoYW5nZWQkLm5leHQoZmllbGRDdHJscj8uU2V0dGluZz8uQ29udHJvbE5hbWUpO1xyXG4gICAgfVxyXG4gICAgcHJvdGVjdGVkIF9zeW5jTW8oKTogT2JzZXJ2YWJsZTx2b2lkPiB7XHJcbiAgICAgICAgY29uc3Qgc3luY1dpdGhGb3JtcGFuZWxNbyA9IHRoaXMubW87XHJcbiAgICAgICAgY29uc3QgX2lzQ2hlY2tlZCA9IHRoaXMubW8uJElzQ2hlY2tlZDtcclxuICAgICAgICBjb25zdCBmb3JtUGFuZWxDdHJsck1vID0gdGhpcy5mb3JtUGFuZWxDdHJsci5NbztcclxuICAgICAgICB0aGlzLl91cGRhdGVXaXRoT3JpZ2luYWxWYWx1ZXMoZm9ybVBhbmVsQ3RybHJNbywgc3luY1dpdGhGb3JtcGFuZWxNbyk7XHJcbiAgICAgICAgc3luY1dpdGhGb3JtcGFuZWxNb1snJE9yaWdpbmFsVmFsdWVzJ10gPSBmb3JtUGFuZWxDdHJsck1vWyckT3JpZ2luYWxWYWx1ZXMnXTtcclxuICAgICAgICBzeW5jV2l0aEZvcm1wYW5lbE1vWyckRmllbGREaWN0J10gPSBmb3JtUGFuZWxDdHJsck1vWyckRmllbGREaWN0J107XHJcbiAgICAgICAgc3luY1dpdGhGb3JtcGFuZWxNb1snJFN0YXRlJ10gPSBmb3JtUGFuZWxDdHJsck1vWyckU3RhdGUnXTsgLy8gdGhpcyBhZGQgYmVjYXVzZSBpZiB3ZSBlZGl0IHVuY2hhbmdlZCBtbyBpdCBkb2VzIG5vdCByZWZsZWN0IHRvIG1vIG9mIHVsdi5cclxuICAgICAgICB0aGlzLm1vID0geyAuLi5zeW5jV2l0aEZvcm1wYW5lbE1vIH07XHJcbiAgICAgICAgdGhpcy5tby4kSXNDaGVja2VkID0gX2lzQ2hlY2tlZDtcclxuICAgICAgICByZXR1cm4gZnJvbShQcm9taXNlLnJlc29sdmUoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIF91cGRhdGVXaXRoT3JpZ2luYWxWYWx1ZXMoc291cmNlOiBNZXRhb2JqZWN0RGF0YU1vZGVsLCBkZXN0OiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCB7XHJcbiAgICAgICAgT2JqZWN0LmtleXMoc291cmNlLiRPcmlnaW5hbFZhbHVlcykuZm9yRWFjaCgoYzogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGRlc3RbY10gPSBzb3VyY2VbY107XHJcbiAgICAgICAgICAgIGlmIChzb3VyY2VbYyArICckQ2FwdGlvbiddKSB7XHJcbiAgICAgICAgICAgICAgICBkZXN0W2MgKyAnJENhcHRpb24nXSA9IHNvdXJjZVtjICsgJyRDYXB0aW9uJ107XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHNvdXJjZVtjICsgJyRJY29uJ10pIHtcclxuICAgICAgICAgICAgICAgIGRlc3RbYyArICckSWNvbiddID0gc291cmNlW2MgKyAnJEljb24nXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfcmFpc2VGb3JtUGFuZWxWYWx1ZUNoYW5nZWQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5lZGl0Rm9ybVBhbmVsVmFsdWVDaGFuZ2UuZW1pdCh7IG1vOiB0aGlzLm1vIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfaGFuZGxlQnJ1bGVTaG93TWVzc2FnZUFjdGlvbihhY3Rpb246IEJydWxlQWN0aW9uTWVzc2FnZSk6IHZvaWQge1xyXG4gICAgICAgIGFjdGlvbi5NZXNzYWdlRXhwcmVzc2lvbkh0bWwgPSB0aGlzLl9kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoYWN0aW9uLk1lc3NhZ2VFeHByZXNzaW9uKTtcclxuICAgICAgICB0aGlzLmJydWxlQWN0aW9uTWVzc2FnZSA9IGFjdGlvbjtcclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfY3JlYXRlRm9ybVBhbmVsQ3RybHIobW86IE1ldGFvYmplY3REYXRhTW9kZWwsIHR5cGVEZWZJZDogc3RyaW5nKTogYW55IHtcclxuICAgICAgICBpZiAoIXRoaXMuZm9ybVBhbmVsQ3RybHIpIHtcclxuICAgICAgICAgICAgdGhpcy5mb3JtUGFuZWxDdHJsciA9IGNyZWF0ZUdyaWRFZGl0b3JGb3JtUGFuZWwoXHJcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1TZXR0aW5nLFxyXG4gICAgICAgICAgICAgICAgeyAuLi5tbyB9LFxyXG4gICAgICAgICAgICAgICAgdHlwZURlZklkLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5leHRyYVJlbGF0aW9uLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5yZXdyaXRlTGF5b3V0LFxyXG4gICAgICAgICAgICAgICAgdGhpcy5VbHZNYWluQ3RybHJcclxuICAgICAgICAgICAgICAgIC8vIEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKHRoaXMuY29udGV4dC5TZXR0aW5nLCAnRXh0cmEuUmVsYXRpb24nKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmZvcm1QYW5lbEN0cmxyLklubGluZUVkaXRJblJlcG9ydCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5mb3JtUGFuZWxDdHJsci5vbih7XHJcbiAgICAgICAgICAgIGJydWxlU2hvd01lc3NhZ2VBY3Rpb246IHRoaXMuX2hhbmRsZUJydWxlU2hvd01lc3NhZ2VBY3Rpb24uYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgdmFsdWVDaGFuZ2U6IHRoaXMuX2hhbmRsZVZhbHVlQ2hhbmdlLmJpbmQodGhpcylcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybVBhbmVsQ3RybHI7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIF9sb2FkQW5kQ3JlYXRlRm9ybVBhbmVsQ3RybHIoKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgZm9ybVNldHRpbmdEYXRhID0gdGhpcy5mb3JtU2V0dGluZy5EYXRhO1xyXG4gICAgICAgIGNvbnN0IGZvcm1NbyA9IHtcclxuICAgICAgICAgICAgLi4udGhpcy5tbyxcclxuICAgICAgICAgICAgJEZpZWxkRGljdDogZm9ybVNldHRpbmdEYXRhLk1vLiRGaWVsZERpY3QsXHJcbiAgICAgICAgICAgICRUeXBlRGVmSWQ6IGZvcm1TZXR0aW5nRGF0YS5Nby4kVHlwZURlZklkLFxyXG4gICAgICAgICAgICAkT3JpZ2luYWxWYWx1ZXM6IHt9XHJcbiAgICAgICAgfTtcclxuICAgICAgICBpZiAodGhpcy5fZm9ybVBhbmVsTG9hZGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybVBhbmVsQ3RybHIuU2V0VmFsdWUoZm9ybU1vKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5fY3JlYXRlRm9ybVBhbmVsQ3RybHIoZm9ybU1vLCB0aGlzLnR5cGVEZWZJZCk7XHJcbiAgICAgICAgdGhpcy5fZm9ybVBhbmVsTG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICBjb25zdCBmb3JtUGFuZWxDdHJsciA9IHRoaXMuZm9ybVBhbmVsQ3RybHI7XHJcbiAgICAgICAgdGhpcy5mb3JtUGFuZWxDdHJsci5VbHZNb0RhdGFMaXN0Q291bnQgPSB0aGlzLm1vRGF0YUxpc3RDb3VudCAtIDE7XHJcbiAgICAgICAgZm9ybVBhbmVsQ3RybHIuTG9hZEFuZENyZWF0ZShudWxsLCBmYWxzZSwgZmFsc2UsICgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgY3VzdG9tRm9ybVBhbmVsVWkgPSBmb3JtUGFuZWxDdHJsci5BZGFwdGVyLkNvbnRyb2w7XHJcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudE1vID0gdGhpcy5fcGFyZW50Rm9ybVBhbmVsU2VydmljZSA/IHRoaXMuX3BhcmVudEZvcm1QYW5lbFNlcnZpY2UubW8gOiBudWxsO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5leHRyYVJlbGF0aW9uICYmIHBhcmVudE1vICYmIHRoaXMuZXh0cmFSZWxhdGlvbi5SZWxhdGlvblR5cGUgPT09ICdDb21wb3NpdGlvbicpIHtcclxuICAgICAgICAgICAgICAgIGZvcm1QYW5lbEN0cmxyLk1vLlNldEZWYWx1ZSh0aGlzLmV4dHJhUmVsYXRpb24uUGFyZW50RmROYW1lLCBwYXJlbnRNbyk7XHJcbiAgICAgICAgICAgICAgICAvLyBuZXdGb3JtU2V0dGluZ3MuRGF0YS5Nb1tyZWxhdGlvbi5QYXJlbnRGZE5hbWVdID0gcGFyZW50TW8uR2V0Q2hhbmdlZE9iamVjdCgpO1xyXG4gICAgICAgICAgICAgICAgLy8gbmV3Rm9ybVNldHRpbmdzLkRhdGEuTW9bcmVsYXRpb24uUGFyZW50RmROYW1lXS4kU3RhdGUgPSBwYXJlbnRNby4kU3RhdGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY3VzdG9tRm9ybVBhbmVsVWkuUmVmcmVzaCA9ICgpID0+IHt9O1xyXG4gICAgICAgICAgICB0aGlzLl9mb3JtUGFuZWxTZXJ2aWNlLmNvbnRleHQgPSBmb3JtUGFuZWxDdHJsci5BZGFwdGVyLkNvbnRyb2w7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX3Jlc2V0U2F2aW5nU3RhdGVzKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaGFzRXJyb3IgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmJydWxlQWN0aW9uTWVzc2FnZSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5zYXZlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfc2V0U2F2aW5nU3RhdGUoZXJyKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICB0aGlzLmhhc0Vycm9yID0gdHJ1ZTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmhhc0Vycm9yID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zYXZlZCA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX2lubGluZUVkaXRTYXZlRm9ybVBhbmVsKHJlYXNvbik6IFByb21pc2U8eyByZWFzb246IFJlYXNvblRvU2F2ZTsgc3VjY2VlZDogYm9vbGVhbjsgc2F2ZWQ6IGJvb2xlYW4gfT4ge1xyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8eyByZWFzb246IFJlYXNvblRvU2F2ZTsgc3VjY2VlZDogYm9vbGVhbjsgc2F2ZWQ6IGJvb2xlYW4gfT4oKHJlc29sdmUsIF8pID0+IHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmZvcm1QYW5lbEN0cmxyLklzTW9DaGFuZ2VkKCkpIHtcclxuICAgICAgICAgICAgICAgIC8vIGlmIHN0YXRlIG9mIG1vIGlzIG5ldyBvciBtb2RpZGZpZWQgdGhlbiBpdCBuZWVkcyB0byB1cGRhdGVcclxuICAgICAgICAgICAgICAgIHJlc29sdmUoeyByZWFzb24sIHN1Y2NlZWQ6IHRydWUsIHNhdmVkOiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBmb3JtUGFuZWxDdHJsck1vID0gdGhpcy5mb3JtUGFuZWxDdHJsci5NbztcclxuICAgICAgICAgICAgZGVsZXRlIGZvcm1QYW5lbEN0cmxyTW8uanNvbjtcclxuICAgICAgICAgICAgLy8gdGhpcy5zYXZpbmcgPSB0cnVlO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5tby4kSW5saW5lTW9DaGFuZ2VkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuZWRpdEZvcm1QYW5lbFNhdmUuZW1pdCh0aGlzLm1vKTtcclxuICAgICAgICAgICAgdGhpcy5icnVsZUFjdGlvbk1lc3NhZ2UgPSBudWxsO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5ub1NhdmVJbmxpbmVFZGl0SW5TZXJ2ZXIpIHtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUoeyByZWFzb24sIHN1Y2NlZWQ6IHRydWUsIHNhdmVkOiB0cnVlIH0pO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybVBhbmVsQ3RybHIuU2F2ZShmYWxzZSwgKGVycikgPT4ge1xyXG4gICAgICAgICAgICAgICAgLy8gdGhpcy5zYXZpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZm9ybVBhbmVsQ3RybHIuU2V0SXNDaGFuZ2VkKGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3NldFNhdmluZ1N0YXRlKGVycik7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKHsgcmVhc29uLCBzdWNjZWVkOiB0cnVlLCBzYXZlZDogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -3,4 +3,5 @@ export * from './portal-form-page.resolver';
|
|
|
3
3
|
export * from './portal-page.resolver';
|
|
4
4
|
export * from './portal-report-page.resolver';
|
|
5
5
|
export * from './tile-group-breadcrumb.resolver';
|
|
6
|
-
|
|
6
|
+
export * from './login-settings.resolver';
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1ub3Zpbi1yYXktY29yZS9zcmMvbGliL3Jlc29sdmVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYywyQkFBMkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vcG9ydGFsLWR5bmFtaWMtcGFnZS5yZXNvbHZlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vcG9ydGFsLWZvcm0tcGFnZS5yZXNvbHZlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vcG9ydGFsLXBhZ2UucmVzb2x2ZXInO1xyXG5leHBvcnQgKiBmcm9tICcuL3BvcnRhbC1yZXBvcnQtcGFnZS5yZXNvbHZlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vdGlsZS1ncm91cC1icmVhZGNydW1iLnJlc29sdmVyJztcclxuZXhwb3J0ICogZnJvbSAnLi9sb2dpbi1zZXR0aW5ncy5yZXNvbHZlcic7XHJcbiJdfQ==
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { BarsaApi } from '../abstract-classes';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class LoginSettingsResolver {
|
|
5
|
+
constructor() { }
|
|
6
|
+
resolve(route) {
|
|
7
|
+
return fetch(`/assets/app-settings.json?x=${BarsaApi.LoginFormData.ChangeKeyVersion}`).then(function (res) {
|
|
8
|
+
return res.text().then((c) => BarsaApi.Ext.decode(BarsaApi.Common.Util.ReplaceArabicCharchter(c))?.LoginSettings);
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LoginSettingsResolver, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
12
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LoginSettingsResolver, providedIn: 'root' }); }
|
|
13
|
+
}
|
|
14
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LoginSettingsResolver, decorators: [{
|
|
15
|
+
type: Injectable,
|
|
16
|
+
args: [{ providedIn: 'root' }]
|
|
17
|
+
}], ctorParameters: () => [] });
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4tc2V0dGluZ3MucmVzb2x2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1ub3Zpbi1yYXktY29yZS9zcmMvbGliL3Jlc29sdmVycy9sb2dpbi1zZXR0aW5ncy5yZXNvbHZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxRQUFRLEVBQXdCLE1BQU0scUJBQXFCLENBQUM7O0FBSXJFLE1BQU0sT0FBTyxxQkFBcUI7SUFDOUIsZ0JBQWUsQ0FBQztJQUNoQixPQUFPLENBQUMsS0FBNkI7UUFDakMsT0FBTyxLQUFLLENBQUMsK0JBQStCLFFBQVEsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUc7WUFDckcsT0FBTyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ3RILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzsrR0FOUSxxQkFBcUI7bUhBQXJCLHFCQUFxQixjQURSLE1BQU07OzRGQUNuQixxQkFBcUI7a0JBRGpDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgQmFyc2FBcGksIEZpbGVQaWN0dXJlSW5mb01vZGVsIH0gZnJvbSAnLi4vYWJzdHJhY3QtY2xhc3Nlcyc7XHJcblxyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIExvZ2luU2V0dGluZ3NSZXNvbHZlciB7XHJcbiAgICBjb25zdHJ1Y3RvcigpIHt9XHJcbiAgICByZXNvbHZlKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogUHJvbWlzZTxJTG9naW5TZXR0aW5ncz4ge1xyXG4gICAgICAgIHJldHVybiBmZXRjaChgL2Fzc2V0cy9hcHAtc2V0dGluZ3MuanNvbj94PSR7QmFyc2FBcGkuTG9naW5Gb3JtRGF0YS5DaGFuZ2VLZXlWZXJzaW9ufWApLnRoZW4oZnVuY3Rpb24gKHJlcykge1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzLnRleHQoKS50aGVuKChjKSA9PiBCYXJzYUFwaS5FeHQuZGVjb2RlKEJhcnNhQXBpLkNvbW1vbi5VdGlsLlJlcGxhY2VBcmFiaWNDaGFyY2h0ZXIoYykpPy5Mb2dpblNldHRpbmdzKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG5pbnRlcmZhY2UgSUxvZ2luU2V0dGluZ3Mge1xyXG4gICAgVGl0bGU6IHN0cmluZztcclxuICAgIFN1YnRpdGxlOiBzdHJpbmc7XHJcbiAgICBTZWN0aW9uMVRpdGxlOiBzdHJpbmc7XHJcbiAgICBTZWN0aW9uMURlc2NyaXB0aW9uOiBzdHJpbmc7XHJcbiAgICBIaWRlR292U3NvOiBib29sZWFuO1xyXG4gICAgTG9nb09uVG9wOiBib29sZWFuO1xyXG4gICAgVXNlclBhc3NFbmFibGU6IGJvb2xlYW47XHJcbiAgICBHb3ZTU09IcmVmOiBzdHJpbmc7XHJcbiAgICBEZWZhdWx0U3RhdGU6IHN0cmluZztcclxuICAgIE90cFByb3ZpZGVyOiBzdHJpbmc7XHJcbiAgICBCYWNrZ3JvdW5kUGljdHVyZT86IEZpbGVQaWN0dXJlSW5mb01vZGVsO1xyXG4gICAgSGVpZ2h0T2ZCYWNrZ3JvdW5kPzogbnVtYmVyO1xyXG4gICAgSGVpZ2h0T2ZMb2dvPzogbnVtYmVyO1xyXG4gICAgTG9naW5UeXBlOiBudW1iZXI7XHJcbiAgICBMb2dvOiBGaWxlUGljdHVyZUluZm9Nb2RlbCB8IG51bGw7XHJcbiAgICBXaWR0aE9mQmFja2dyb3VuZD86IG51bWJlcjtcclxuICAgIFdpZHRoT2ZMb2dvPzogbnVtYmVyO1xyXG59XHJcbiJdfQ==
|
|
@@ -10303,7 +10303,7 @@ class BaseColumnPropsComponent extends BaseComponent {
|
|
|
10303
10303
|
this.changeToEditMode.emit(this._el.nativeElement);
|
|
10304
10304
|
}
|
|
10305
10305
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BaseColumnPropsComponent, deps: [{ token: ColumnService, optional: true, self: true }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
10306
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BaseColumnPropsComponent, selector: "bnrc-base-column-props", inputs: { allColumns: "allColumns", column: "column", mo: "mo", index: "index", editMode: "editMode", isMobile: "isMobile", customRowHeight: "customRowHeight", controlUi: "controlUi", formLayoutShowLabel: "formLayoutShowLabel", isChecked: "isChecked", isdirty: "isdirty", isNewInlineMo: "isNewInlineMo", layout94: "layout94", detailsComponentSetting: "detailsComponentSetting", value: "value", icon: "icon", rtl: "rtl", deviceName: "deviceName", deviceSize: "deviceSize", customComponent: "customComponent" }, outputs: { save: "save", cancel: "cancel", tab: "tab", changeToEditMode: "changeToEditMode" }, usesInheritance: true, ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
10306
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BaseColumnPropsComponent, selector: "bnrc-base-column-props", inputs: { allColumns: "allColumns", column: "column", attachmentViewType: "attachmentViewType", mo: "mo", index: "index", editMode: "editMode", isMobile: "isMobile", customRowHeight: "customRowHeight", controlUi: "controlUi", formLayoutShowLabel: "formLayoutShowLabel", isChecked: "isChecked", isdirty: "isdirty", isNewInlineMo: "isNewInlineMo", layout94: "layout94", detailsComponentSetting: "detailsComponentSetting", value: "value", icon: "icon", rtl: "rtl", deviceName: "deviceName", deviceSize: "deviceSize", customComponent: "customComponent" }, outputs: { save: "save", cancel: "cancel", tab: "tab", changeToEditMode: "changeToEditMode" }, usesInheritance: true, ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
10307
10307
|
}
|
|
10308
10308
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BaseColumnPropsComponent, decorators: [{
|
|
10309
10309
|
type: Component,
|
|
@@ -10329,6 +10329,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
10329
10329
|
type: Input
|
|
10330
10330
|
}], column: [{
|
|
10331
10331
|
type: Input
|
|
10332
|
+
}], attachmentViewType: [{
|
|
10333
|
+
type: Input
|
|
10332
10334
|
}], mo: [{
|
|
10333
10335
|
type: Input
|
|
10334
10336
|
}], index: [{
|
|
@@ -11482,7 +11484,7 @@ class BaseViewItemPropsComponent extends BaseViewPropsComponent {
|
|
|
11482
11484
|
});
|
|
11483
11485
|
}
|
|
11484
11486
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BaseViewItemPropsComponent, deps: [{ token: i0.ElementRef }, { token: i4.DomSanitizer }, { token: i0.ChangeDetectorRef }, { token: MoReportValuePipe }, { token: FormPanelService, optional: true, skipSelf: true }, { token: FormPanelService, optional: true, self: true }, { token: UlvMainService, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
11485
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BaseViewItemPropsComponent, selector: "bnrc-base-view-item-props", inputs: { checkboxComponent: "checkboxComponent", disableEllapsis: "disableEllapsis", contextMenuOverflowText: "contextMenuOverflowText", detailsComponent: "detailsComponent", detailsColumns: "detailsColumns", detailsText: "detailsText", mo: "mo", moDataListCount: "moDataListCount", index: "index", last: "last", isdirty: "isdirty", isChecked: "isChecked", hideDetailsText: "hideDetailsText", showViewButton: "showViewButton", isNewInlineMo: "isNewInlineMo", extraRelation: "extraRelation", hideOpenIcon: "hideOpenIcon", inlineEditWithoutSelection: "inlineEditWithoutSelection", inDialog: "inDialog", isMobile: "isMobile", isMultiSelect: "isMultiSelect", rowIndicator: "rowIndicator", groupSummary: "groupSummary", isLastChildGroup: "isLastChildGroup", showRowNumber: "showRowNumber", rowNumber: "rowNumber", coloringRow: "coloringRow", noSaveInlineEditInServer: "noSaveInlineEditInServer", rowIndicatorColor: "rowIndicatorColor", UlvMainCtrlr: "UlvMainCtrlr", fieldDict: "fieldDict", actionList: "actionList", serializedRelatedMo: "serializedRelatedMo", cartableTemplate: "cartableTemplate", cartableMo: "cartableMo", cartableWorkflowData: "cartableWorkflowData" }, outputs: { actionListClick: "actionListClick", events: "events" }, viewQueries: [{ propertyName: "_cartableFormRef", first: true, predicate: ["cartableFormRef"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
11487
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BaseViewItemPropsComponent, selector: "bnrc-base-view-item-props", inputs: { checkboxComponent: "checkboxComponent", disableEllapsis: "disableEllapsis", attachmentViewType: "attachmentViewType", contextMenuOverflowText: "contextMenuOverflowText", detailsComponent: "detailsComponent", detailsColumns: "detailsColumns", detailsText: "detailsText", mo: "mo", moDataListCount: "moDataListCount", index: "index", last: "last", isdirty: "isdirty", isChecked: "isChecked", hideDetailsText: "hideDetailsText", showViewButton: "showViewButton", isNewInlineMo: "isNewInlineMo", extraRelation: "extraRelation", hideOpenIcon: "hideOpenIcon", inlineEditWithoutSelection: "inlineEditWithoutSelection", inDialog: "inDialog", isMobile: "isMobile", isMultiSelect: "isMultiSelect", rowIndicator: "rowIndicator", groupSummary: "groupSummary", isLastChildGroup: "isLastChildGroup", showRowNumber: "showRowNumber", rowNumber: "rowNumber", coloringRow: "coloringRow", noSaveInlineEditInServer: "noSaveInlineEditInServer", rowIndicatorColor: "rowIndicatorColor", UlvMainCtrlr: "UlvMainCtrlr", fieldDict: "fieldDict", actionList: "actionList", serializedRelatedMo: "serializedRelatedMo", cartableTemplate: "cartableTemplate", cartableMo: "cartableMo", cartableWorkflowData: "cartableWorkflowData" }, outputs: { actionListClick: "actionListClick", events: "events" }, viewQueries: [{ propertyName: "_cartableFormRef", first: true, predicate: ["cartableFormRef"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
11486
11488
|
}
|
|
11487
11489
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BaseViewItemPropsComponent, decorators: [{
|
|
11488
11490
|
type: Component,
|
|
@@ -11513,6 +11515,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
11513
11515
|
type: Input
|
|
11514
11516
|
}], disableEllapsis: [{
|
|
11515
11517
|
type: Input
|
|
11518
|
+
}], attachmentViewType: [{
|
|
11519
|
+
type: Input
|
|
11516
11520
|
}], contextMenuOverflowText: [{
|
|
11517
11521
|
type: Input
|
|
11518
11522
|
}], detailsComponent: [{
|
|
@@ -13749,6 +13753,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
13749
13753
|
args: [{ providedIn: 'root' }]
|
|
13750
13754
|
}], ctorParameters: () => [{ type: LocalStorageService }] });
|
|
13751
13755
|
|
|
13756
|
+
class LoginSettingsResolver {
|
|
13757
|
+
constructor() { }
|
|
13758
|
+
resolve(route) {
|
|
13759
|
+
return fetch(`/assets/app-settings.json?x=${BarsaApi.LoginFormData.ChangeKeyVersion}`).then(function (res) {
|
|
13760
|
+
return res.text().then((c) => BarsaApi.Ext.decode(BarsaApi.Common.Util.ReplaceArabicCharchter(c))?.LoginSettings);
|
|
13761
|
+
});
|
|
13762
|
+
}
|
|
13763
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LoginSettingsResolver, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
13764
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LoginSettingsResolver, providedIn: 'root' }); }
|
|
13765
|
+
}
|
|
13766
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LoginSettingsResolver, decorators: [{
|
|
13767
|
+
type: Injectable,
|
|
13768
|
+
args: [{ providedIn: 'root' }]
|
|
13769
|
+
}], ctorParameters: () => [] });
|
|
13770
|
+
|
|
13752
13771
|
class FormNewComponent extends BaseComponent {
|
|
13753
13772
|
constructor() {
|
|
13754
13773
|
super();
|
|
@@ -14109,17 +14128,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
14109
14128
|
|
|
14110
14129
|
class ButtonLoadingComponent {
|
|
14111
14130
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ButtonLoadingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
14112
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ButtonLoadingComponent, selector: "bnrc-button-loading", inputs: { valid: "valid", loading: "loading", text: "text" }, ngImport: i0, template: "<!-- <button class=\"button\" [disabled]=\"loading\">\r\n <i [class.!tw-hidden]=\"!loading\" class=\"fa fa-circle-o-notch fa-spin\"></i\r\n >{{ (loading ? 'Wait' : text) | bbbTranslate }}\r\n</button> -->\r\n<button
|
|
14131
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ButtonLoadingComponent, selector: "bnrc-button-loading", inputs: { valid: "valid", loading: "loading", text: "text", transparent: "transparent" }, ngImport: i0, template: "<!-- <button class=\"button\" [disabled]=\"loading\">\r\n <i [class.!tw-hidden]=\"!loading\" class=\"fa fa-circle-o-notch fa-spin\"></i\r\n >{{ (loading ? 'Wait' : text) | bbbTranslate }}\r\n</button> -->\r\n<button\r\n type=\"button\"\r\n class=\"button tw-rounded-lg\"\r\n [class.button--loading]=\"loading\"\r\n [disabled]=\"loading\"\r\n [class.transparent]=\"transparent\"\r\n>\r\n <span class=\"button__text\">{{ text | bbbTranslate }}</span>\r\n</button>\r\n", styles: [":host{display:block;width:100%}.button{width:100%;position:relative;padding:8px 16px;background:var(--button-loading);border:none;outline:none;cursor:pointer}.button .button__text{font:700 1rem IranYekanDigits,B-Font;color:var(--button-loading-text-color);transition:all .2s}.button.transparent{background:transparent;border:1px solid var(--button-loading)}.button.transparent .button__text{color:var(--button-loading)}.button.transparent .button:active{background:var(--button-loading-transparent-active)}.button:active{background:var(--button-loading-active)}.button--loading .button__text{visibility:hidden;opacity:0}.button--loading:after{content:\"\";position:absolute;width:16px;height:16px;inset:0;margin:auto;border:4px solid transparent;border-top-color:var(--button-loading-border-top-color);border-radius:50%;animation:button-loading-spinner 1s ease infinite}.transparent.button--loading:after{border-top-color:var(--button-loading-transparent-border-top-color)}@keyframes button-loading-spinner{0%{transform:rotate(0)}to{transform:rotate(1turn)}}\n"], dependencies: [{ kind: "pipe", type: BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
14113
14132
|
}
|
|
14114
14133
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ButtonLoadingComponent, decorators: [{
|
|
14115
14134
|
type: Component,
|
|
14116
|
-
args: [{ selector: 'bnrc-button-loading', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<!-- <button class=\"button\" [disabled]=\"loading\">\r\n <i [class.!tw-hidden]=\"!loading\" class=\"fa fa-circle-o-notch fa-spin\"></i\r\n >{{ (loading ? 'Wait' : text) | bbbTranslate }}\r\n</button> -->\r\n<button
|
|
14135
|
+
args: [{ selector: 'bnrc-button-loading', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<!-- <button class=\"button\" [disabled]=\"loading\">\r\n <i [class.!tw-hidden]=\"!loading\" class=\"fa fa-circle-o-notch fa-spin\"></i\r\n >{{ (loading ? 'Wait' : text) | bbbTranslate }}\r\n</button> -->\r\n<button\r\n type=\"button\"\r\n class=\"button tw-rounded-lg\"\r\n [class.button--loading]=\"loading\"\r\n [disabled]=\"loading\"\r\n [class.transparent]=\"transparent\"\r\n>\r\n <span class=\"button__text\">{{ text | bbbTranslate }}</span>\r\n</button>\r\n", styles: [":host{display:block;width:100%}.button{width:100%;position:relative;padding:8px 16px;background:var(--button-loading);border:none;outline:none;cursor:pointer}.button .button__text{font:700 1rem IranYekanDigits,B-Font;color:var(--button-loading-text-color);transition:all .2s}.button.transparent{background:transparent;border:1px solid var(--button-loading)}.button.transparent .button__text{color:var(--button-loading)}.button.transparent .button:active{background:var(--button-loading-transparent-active)}.button:active{background:var(--button-loading-active)}.button--loading .button__text{visibility:hidden;opacity:0}.button--loading:after{content:\"\";position:absolute;width:16px;height:16px;inset:0;margin:auto;border:4px solid transparent;border-top-color:var(--button-loading-border-top-color);border-radius:50%;animation:button-loading-spinner 1s ease infinite}.transparent.button--loading:after{border-top-color:var(--button-loading-transparent-border-top-color)}@keyframes button-loading-spinner{0%{transform:rotate(0)}to{transform:rotate(1turn)}}\n"] }]
|
|
14117
14136
|
}], propDecorators: { valid: [{
|
|
14118
14137
|
type: Input
|
|
14119
14138
|
}], loading: [{
|
|
14120
14139
|
type: Input
|
|
14121
14140
|
}], text: [{
|
|
14122
14141
|
type: Input
|
|
14142
|
+
}], transparent: [{
|
|
14143
|
+
type: Input
|
|
14123
14144
|
}] } });
|
|
14124
14145
|
|
|
14125
14146
|
class BaseUlvSettingComponent extends BaseComponent {
|
|
@@ -15159,5 +15180,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
15159
15180
|
* Generated bundle index. Do not edit.
|
|
15160
15181
|
*/
|
|
15161
15182
|
|
|
15162
|
-
export { APP_VERSION, AbsoluteDivBodyDirective, AffixRespondEvents, AllFilesMimeType, AnchorScrollDirective, ApiService, ApplicationBaseComponent, AttrRtlDirective, AudioMimeType, AudioRecordingService, AuthGuard, BarsaApi, BarsaDialogService, BarsaIconDictPipe, BarsaNovinRayCoreModule, BarsaSapUiFormPageModule, BarsaStorageService, BaseColumnPropsComponent, BaseComponent, BaseController, BaseDirective, BaseDynamicComponent, BaseFormToolbaritemPropsComponent, BaseItemContentPropsComponent, BaseModule, BaseReportModel, BaseUlvSettingComponent, BaseViewContentPropsComponent, BaseViewItemPropsComponent, BaseViewPropsComponent, BbbTranslatePipe, BodyClickDirective, BoolControlInfoModel, BreadcrumbService, ButtonLoadingComponent, CalculateControlInfoModel, CanUploadFilePipe, ChangeLayoutInfoCustomUi, CodeEditorControlInfoModel, ColSetting, ColumnCustomComponentPipe, ColumnCustomUiPipe, ColumnIconPipe, ColumnResizerDirective, ColumnService, ColumnValueOfParametersPipe, ColumnValuePipe, ComboRowImagePipe, CommandControlInfoModel, ContainerComponent, ContainerService, ContextMenuPipe, ControlUiPipe, ConvertToStylePipe, CopyDirective, CountDownDirective, CustomCommand, CustomInjector, CustomRouteReuseStategy, DIALOG_SERVICE, DateHijriService, DateMiladiService, DateRanges, DateService, DateShamsiService, DateTimeControlInfoModel, DateTimeToCaptionPipe, DeviceWidth, DialogParams, DynamicCommandDirective, DynamicComponentService, DynamicFormComponent, DynamicFormToolbaritemComponent, DynamicItemComponent, DynamicLayoutComponent, DynamicStyleDirective, EllapsisTextDirective, EllipsifyDirective, EmptyPageComponent, EmptyPageWithRouterAndRouterOutletComponent, EnumControlInfoModel, ExecuteDynamicCommand, ExecuteWorkflowChoiceDef, FORM_DIALOG_COMPONENT, FieldBaseComponent, FieldDirective, FieldInfoTypeEnum, FieldUiComponent, FileControlInfoModel, FileInfoCountPipe, FilePictureInfoModel, FilesValidationHelper, FillAllLayoutControls, FillEmptySpaceDirective, FilterColumnsByDetailsPipe, FilterInlineActionListPipe, FilterPipe, FilterStringPipe, FilterTabPipe, FilterToolbarControlPipe, FilterWorkflowInMobilePipe, FindColumnByDbNamePipe, FindGroup, FindLayoutSettingFromLayout94, FindPreviewColumnPipe, FindToolbarItem, FioriIconPipe, FormBaseComponent, FormCloseDirective, FormComponent, FormFieldReportPageComponent, FormNewComponent, FormPageBaseComponent, FormPageComponent, FormPanelService, FormPropsBaseComponent, FormService, FormToolbarBaseComponent, GaugeControlInfoModel, GeneralControlInfoModel, GetAllColumnsSorted, GetDefaultMoObjectInfo, GetImgTags, GetVisibleValue, GridSetting, GroupBy, GroupByPipe, GroupByService, HeaderFacetValuePipe, HideAcceptCancelButtonsPipe, HideColumnsInmobilePipe, HistoryControlInfoModel, HorizontalLayoutService, IconControlInfoModel, ImageLazyDirective, ImageMimeType, ImagetoPrint, IndexedDbService, InputNumber, IntersectionObserverDirective, IntersectionStatus, IsExpandedNodePipe, IsImagePipe, ItemsRendererDirective, LabelmandatoryDirective, LayoutItemBaseComponent, LayoutMainContentService, LayoutPanelBaseComponent, LayoutService, LinearListControlInfoModel, LinearListHelper, ListCountPipe, ListRelationModel, LoadExternalFilesDirective, LocalStorageService, LogService, MergeFieldsToColumnsPipe, MetaobjectDataModel, MetaobjectRelationModel, MoForReportModel, MoInfoUlvMoListPipe, MoInfoUlvPagingPipe, MoReportValueConcatPipe, MoReportValuePipe, MoValuePipe, MobileDirective, ModalRootComponent, MultipleGroupByPipe, NOTIFICATAION_POPUP_SERVER, NOTIFICATION_WEBWORKER_FACTORY, NetworkStatusService, NotFoundComponent, NotificationService, NowraptextDirective, NumberBaseComponent, NumberControlInfoModel, NumbersOnlyInputDirective, NumeralPipe, PageBaseComponent, PageWithFormHandlerBaseComponent, PdfMimeType, PictureFieldSourcePipe, PictureFileControlInfoModel, PlaceHolderDirective, PortalDynamicPageResolver, PortalFormPageResolver, PortalPageComponent, PortalPageResolver, PortalPageSidebarComponent, PortalReportPageResolver, PortalService, PreventDefaulEvent, PreventDefaultDirective, PrintFilesDirective, PrintImage, PromptUpdateService, RabetehAkseTakiListiControlInfoModel, RedirectHomeGuard, RedirectReportNavigatorCommandComponent, RelatedReportControlInfoModel, RelationListControlInfoModel, RemoveNewlinePipe, RenderUlvDirective, RenderUlvPaginDirective, RenderUlvViewerDirective, ReplacePipe, ReportBaseComponent, ReportBaseInfo, ReportCalendarModel, ReportContainerComponent, ReportExtraInfo, ReportField, ReportFormModel, ReportItemBaseComponent, ReportListModel, ReportModel, ReportTreeModel, ReportViewBaseComponent, ReportViewColumn, ResizableComponent, ResizableDirective, ResizableModule, ReversePipe, RichStringControlInfoModel, RootPageComponent, RootPortalComponent, RouteFormChangeDirective, RoutingService, RowDataOption, RowNumberPipe, SanitizeTextPipe, SaveImageDirective, SaveImageToFile, SaveScrollPositionService, SelectionMode, SeperatorFixPipe, ServiceWorkerCommuncationService, ServiceWorkerNotificationService, SingleRelationControlInfoModel, SortDirection, SortPipe, SortSetting, StopPropagationDirective, StringControlInfoModel, StringToNumberPipe, SubformControlInfoModel, SystemBaseComponent, TOAST_SERVICE, TableHeaderWidthMode, TableResizerDirective, ThImageOrIconePipe, TileGroupBreadcrumResolver, TilePropsComponent, TlbButtonsPipe, TotalSummaryPipe, UiService, UlvCommandDirective, UlvMainService, UntilInViewDirective, UploadService, VideoMimeType, VideoRecordingService, ViewBase, VisibleValuePipe, WebOtpDirective, WordMimeType, WorfkflowwChoiceCommandDirective, availablePrefixes, calcContextMenuWidth, calculateColumnContent, calculateColumnWidth, calculateColumnWidthFitToContainer, calculateFreeColumnSize, calculateMoDataListContentWidthByColumnName, cancelRequestAnimationFrame, createFormPanelMetaConditions, createGridEditorFormPanel, easeInOutCubic, elementInViewport2, enumValueToStringSize, executeUlvCommandHandler, forbiddenValidator, formRoutes, formatBytes, fromIntersectionObserver, genrateInlineMoId, getAllItemsPerChildren, getColumnValueOfMoDataList, getComponentDefined, getControlList, getControlSizeMode, getDateService, getDeviceIsDesktop, getDeviceIsMobile, getDeviceIsPhone, getDeviceIsTablet, getFieldValue, getFormSettings, getGridSettings, getHeaderValue, getIcon, getImagePath, getLabelWidth, getLayout94ObjectInfo, getLayoutControl, getNewMoGridEditor, getParentHeight, getRequestAnimationFrame, getResetGridSettings, getTargetRect, getUniqueId, getValidExtension, isFF, isFirefox, isFunction, isImage, isInLocalMode, isSafari, isTargetWindow, measureText, mobile_regex, number_only, requestAnimationFramePolyfill, setColumnWidthByMaxMoContentWidth, setOneDepthLevel, setTableThWidth, shallowEqual, stopPropagation, throwIfAlreadyLoaded, toNumber, validateAllFormFields };
|
|
15183
|
+
export { APP_VERSION, AbsoluteDivBodyDirective, AffixRespondEvents, AllFilesMimeType, AnchorScrollDirective, ApiService, ApplicationBaseComponent, AttrRtlDirective, AudioMimeType, AudioRecordingService, AuthGuard, BarsaApi, BarsaDialogService, BarsaIconDictPipe, BarsaNovinRayCoreModule, BarsaSapUiFormPageModule, BarsaStorageService, BaseColumnPropsComponent, BaseComponent, BaseController, BaseDirective, BaseDynamicComponent, BaseFormToolbaritemPropsComponent, BaseItemContentPropsComponent, BaseModule, BaseReportModel, BaseUlvSettingComponent, BaseViewContentPropsComponent, BaseViewItemPropsComponent, BaseViewPropsComponent, BbbTranslatePipe, BodyClickDirective, BoolControlInfoModel, BreadcrumbService, ButtonLoadingComponent, CalculateControlInfoModel, CanUploadFilePipe, ChangeLayoutInfoCustomUi, CodeEditorControlInfoModel, ColSetting, ColumnCustomComponentPipe, ColumnCustomUiPipe, ColumnIconPipe, ColumnResizerDirective, ColumnService, ColumnValueOfParametersPipe, ColumnValuePipe, ComboRowImagePipe, CommandControlInfoModel, ContainerComponent, ContainerService, ContextMenuPipe, ControlUiPipe, ConvertToStylePipe, CopyDirective, CountDownDirective, CustomCommand, CustomInjector, CustomRouteReuseStategy, DIALOG_SERVICE, DateHijriService, DateMiladiService, DateRanges, DateService, DateShamsiService, DateTimeControlInfoModel, DateTimeToCaptionPipe, DeviceWidth, DialogParams, DynamicCommandDirective, DynamicComponentService, DynamicFormComponent, DynamicFormToolbaritemComponent, DynamicItemComponent, DynamicLayoutComponent, DynamicStyleDirective, EllapsisTextDirective, EllipsifyDirective, EmptyPageComponent, EmptyPageWithRouterAndRouterOutletComponent, EnumControlInfoModel, ExecuteDynamicCommand, ExecuteWorkflowChoiceDef, FORM_DIALOG_COMPONENT, FieldBaseComponent, FieldDirective, FieldInfoTypeEnum, FieldUiComponent, FileControlInfoModel, FileInfoCountPipe, FilePictureInfoModel, FilesValidationHelper, FillAllLayoutControls, FillEmptySpaceDirective, FilterColumnsByDetailsPipe, FilterInlineActionListPipe, FilterPipe, FilterStringPipe, FilterTabPipe, FilterToolbarControlPipe, FilterWorkflowInMobilePipe, FindColumnByDbNamePipe, FindGroup, FindLayoutSettingFromLayout94, FindPreviewColumnPipe, FindToolbarItem, FioriIconPipe, FormBaseComponent, FormCloseDirective, FormComponent, FormFieldReportPageComponent, FormNewComponent, FormPageBaseComponent, FormPageComponent, FormPanelService, FormPropsBaseComponent, FormService, FormToolbarBaseComponent, GaugeControlInfoModel, GeneralControlInfoModel, GetAllColumnsSorted, GetDefaultMoObjectInfo, GetImgTags, GetVisibleValue, GridSetting, GroupBy, GroupByPipe, GroupByService, HeaderFacetValuePipe, HideAcceptCancelButtonsPipe, HideColumnsInmobilePipe, HistoryControlInfoModel, HorizontalLayoutService, IconControlInfoModel, ImageLazyDirective, ImageMimeType, ImagetoPrint, IndexedDbService, InputNumber, IntersectionObserverDirective, IntersectionStatus, IsExpandedNodePipe, IsImagePipe, ItemsRendererDirective, LabelmandatoryDirective, LayoutItemBaseComponent, LayoutMainContentService, LayoutPanelBaseComponent, LayoutService, LinearListControlInfoModel, LinearListHelper, ListCountPipe, ListRelationModel, LoadExternalFilesDirective, LocalStorageService, LogService, LoginSettingsResolver, MergeFieldsToColumnsPipe, MetaobjectDataModel, MetaobjectRelationModel, MoForReportModel, MoInfoUlvMoListPipe, MoInfoUlvPagingPipe, MoReportValueConcatPipe, MoReportValuePipe, MoValuePipe, MobileDirective, ModalRootComponent, MultipleGroupByPipe, NOTIFICATAION_POPUP_SERVER, NOTIFICATION_WEBWORKER_FACTORY, NetworkStatusService, NotFoundComponent, NotificationService, NowraptextDirective, NumberBaseComponent, NumberControlInfoModel, NumbersOnlyInputDirective, NumeralPipe, PageBaseComponent, PageWithFormHandlerBaseComponent, PdfMimeType, PictureFieldSourcePipe, PictureFileControlInfoModel, PlaceHolderDirective, PortalDynamicPageResolver, PortalFormPageResolver, PortalPageComponent, PortalPageResolver, PortalPageSidebarComponent, PortalReportPageResolver, PortalService, PreventDefaulEvent, PreventDefaultDirective, PrintFilesDirective, PrintImage, PromptUpdateService, RabetehAkseTakiListiControlInfoModel, RedirectHomeGuard, RedirectReportNavigatorCommandComponent, RelatedReportControlInfoModel, RelationListControlInfoModel, RemoveNewlinePipe, RenderUlvDirective, RenderUlvPaginDirective, RenderUlvViewerDirective, ReplacePipe, ReportBaseComponent, ReportBaseInfo, ReportCalendarModel, ReportContainerComponent, ReportExtraInfo, ReportField, ReportFormModel, ReportItemBaseComponent, ReportListModel, ReportModel, ReportTreeModel, ReportViewBaseComponent, ReportViewColumn, ResizableComponent, ResizableDirective, ResizableModule, ReversePipe, RichStringControlInfoModel, RootPageComponent, RootPortalComponent, RouteFormChangeDirective, RoutingService, RowDataOption, RowNumberPipe, SanitizeTextPipe, SaveImageDirective, SaveImageToFile, SaveScrollPositionService, SelectionMode, SeperatorFixPipe, ServiceWorkerCommuncationService, ServiceWorkerNotificationService, SingleRelationControlInfoModel, SortDirection, SortPipe, SortSetting, StopPropagationDirective, StringControlInfoModel, StringToNumberPipe, SubformControlInfoModel, SystemBaseComponent, TOAST_SERVICE, TableHeaderWidthMode, TableResizerDirective, ThImageOrIconePipe, TileGroupBreadcrumResolver, TilePropsComponent, TlbButtonsPipe, TotalSummaryPipe, UiService, UlvCommandDirective, UlvMainService, UntilInViewDirective, UploadService, VideoMimeType, VideoRecordingService, ViewBase, VisibleValuePipe, WebOtpDirective, WordMimeType, WorfkflowwChoiceCommandDirective, availablePrefixes, calcContextMenuWidth, calculateColumnContent, calculateColumnWidth, calculateColumnWidthFitToContainer, calculateFreeColumnSize, calculateMoDataListContentWidthByColumnName, cancelRequestAnimationFrame, createFormPanelMetaConditions, createGridEditorFormPanel, easeInOutCubic, elementInViewport2, enumValueToStringSize, executeUlvCommandHandler, forbiddenValidator, formRoutes, formatBytes, fromIntersectionObserver, genrateInlineMoId, getAllItemsPerChildren, getColumnValueOfMoDataList, getComponentDefined, getControlList, getControlSizeMode, getDateService, getDeviceIsDesktop, getDeviceIsMobile, getDeviceIsPhone, getDeviceIsTablet, getFieldValue, getFormSettings, getGridSettings, getHeaderValue, getIcon, getImagePath, getLabelWidth, getLayout94ObjectInfo, getLayoutControl, getNewMoGridEditor, getParentHeight, getRequestAnimationFrame, getResetGridSettings, getTargetRect, getUniqueId, getValidExtension, isFF, isFirefox, isFunction, isImage, isInLocalMode, isSafari, isTargetWindow, measureText, mobile_regex, number_only, requestAnimationFramePolyfill, setColumnWidthByMaxMoContentWidth, setOneDepthLevel, setTableThWidth, shallowEqual, stopPropagation, throwIfAlreadyLoaded, toNumber, validateAllFormFields };
|
|
15163
15184
|
//# sourceMappingURL=barsa-novin-ray-core.mjs.map
|