barsa-novin-ray-core 2.2.64 → 2.2.65
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.
|
@@ -372,7 +372,7 @@ export class BaseViewItemPropsComponent extends BaseViewPropsComponent {
|
|
|
372
372
|
...this.mo,
|
|
373
373
|
$FieldDict: formSettingData.Mo.$FieldDict,
|
|
374
374
|
$TypeDefId: formSettingData.Mo.$TypeDefId,
|
|
375
|
-
$OriginalValues: {}
|
|
375
|
+
$OriginalValues: this.extraRelation.RelationType === 'Composition' ? this.mo.$OriginalValues : {}
|
|
376
376
|
};
|
|
377
377
|
if (this._formPanelLoaded) {
|
|
378
378
|
this.formPanelCtrlr.SetValue(formMo);
|
|
@@ -541,4 +541,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
541
541
|
}], cartableWorkflowData: [{
|
|
542
542
|
type: Input
|
|
543
543
|
}] } });
|
|
544
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS12aWV3LWl0ZW0tcHJvcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1ub3Zpbi1yYXktY29yZS9zcmMvbGliL2R5bmFtaWMtY29tcG9uZW50L2Jhc2Utdmlldy1pdGVtLXByb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFFdkIsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixJQUFJLEVBRUosUUFBUSxFQUNSLFNBQVMsRUFFVCxNQUFNLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFjLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFbEgsT0FBTyxFQUlILFFBQVEsRUFLWCxNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSx5QkFBeUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVuRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7QUFVM0QsTUFBTSxPQUFPLDBCQUEyQixTQUFRLHNCQUFzQjtJQXNDbEUsSUFBYSxtQkFBbUIsQ0FBQyxHQUFXO1FBQ3hDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxHQUFHLENBQUM7UUFDaEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFDRCxJQUFhLGdCQUFnQixDQUFDLEdBQWdCO1FBQzFDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxHQUFHLENBQUM7UUFDN0IsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDakMsQ0FBQztJQUNE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dGVjdGlvblN0cmF0ZWd5LFxyXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBFbGVtZW50UmVmLFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkNoYW5nZXMsXHJcbiAgICBPbkluaXQsXHJcbiAgICBPcHRpb25hbCxcclxuICAgIE91dHB1dCxcclxuICAgIFNlbGYsXHJcbiAgICBTaW1wbGVDaGFuZ2VzLFxyXG4gICAgU2tpcFNlbGYsXHJcbiAgICBWaWV3Q2hpbGQsXHJcbiAgICBXcml0YWJsZVNpZ25hbCxcclxuICAgIHNpZ25hbFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZnJvbSwgdGFwLCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBzd2l0Y2hNYXAsIHRha2VVbnRpbCwgdGhyb3dFcnJvciwgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQge1xyXG4gICAgTWV0YW9iamVjdERhdGFNb2RlbCxcclxuICAgIFJlcG9ydFZpZXdDb2x1bW4sXHJcbiAgICBGb3JtU2V0dGluZyxcclxuICAgIEJhcnNhQXBpLFxyXG4gICAgQ2hvaWNlRGVmLFxyXG4gICAgVHlwZVVsdk1haW5DdHJscixcclxuICAgIEJydWxlQWN0aW9uTWVzc2FnZSxcclxuICAgIEVqcmF5T2xnb1xyXG59IGZyb20gJy4uL2Fic3RyYWN0LWNsYXNzZXMnO1xyXG5pbXBvcnQgeyBQcmV2ZW50RGVmYXVsRXZlbnQsIGNyZWF0ZUdyaWRFZGl0b3JGb3JtUGFuZWwsIGdldEZvY3VzYWJsZVRhZ05hbWVzIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcclxuaW1wb3J0IHsgRm9ybVBhbmVsU2VydmljZSwgVWx2TWFpblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IEJhc2VWaWV3UHJvcHNDb21wb25lbnQgfSBmcm9tICcuL2Jhc2Utdmlldy1wcm9wcyc7XHJcbmltcG9ydCB7IE1vUmVwb3J0VmFsdWVQaXBlIH0gZnJvbSAnLi4vcGlwZXMnO1xyXG5pbXBvcnQgeyBGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi4vZm9ybS9mb3JtLmNvbXBvbmVudCc7XHJcbnR5cGUgUmVhc29uVG9TYXZlID0gJ1RBQicgfCAnQ1RSTCtFTlRFUicgfCAnQ0hFQ0tfQ0hBTkdFRCcgfCAnRVNDJyB8ICdNT1VTRURPV05fT1VUU0lERScgfCAnTk9ORSc7XHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdibnJjLWJhc2Utdmlldy1pdGVtLXByb3BzJyxcclxuICAgIHRlbXBsYXRlOiBgYCxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgc3RhbmRhbG9uZTogZmFsc2VcclxufSlcclxuZXhwb3J0IGNsYXNzIEJhc2VWaWV3SXRlbVByb3BzQ29tcG9uZW50IGV4dGVuZHMgQmFzZVZpZXdQcm9wc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICAgIEBPdXRwdXQoKSBhY3Rpb25MaXN0Q2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICAgIEBPdXRwdXQoKSBldmVudHMgPSBuZXcgRXZlbnRFbWl0dGVyPHsgdGl0bGU6IHN0cmluZzsgZGF0YT86IGFueSB9PigpO1xyXG4gICAgQFZpZXdDaGlsZCgnY2FydGFibGVGb3JtUmVmJywgeyBzdGF0aWM6IGZhbHNlIH0pIF9jYXJ0YWJsZUZvcm1SZWY6IEZvcm1Db21wb25lbnQ7XHJcbiAgICBASW5wdXQoKSBjaGVja2JveENvbXBvbmVudDogRWpyYXlPbGdvO1xyXG4gICAgQElucHV0KCkgZGlzYWJsZUVsbGFwc2lzOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgYXR0YWNobWVudFZpZXdUeXBlOiBudW1iZXI7XHJcbiAgICBASW5wdXQoKSBjb250ZXh0TWVudU92ZXJmbG93VGV4dDogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgZGV0YWlsc0NvbXBvbmVudD86IEVqcmF5T2xnbztcclxuICAgIEBJbnB1dCgpIGRldGFpbHNDb2x1bW5zOiBSZXBvcnRWaWV3Q29sdW1uW107XHJcbiAgICBASW5wdXQoKSBkZXRhaWxzVGV4dDogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgbW86IE1ldGFvYmplY3REYXRhTW9kZWw7XHJcbiAgICBASW5wdXQoKSBtb0RhdGFMaXN0Q291bnQ6IG51bWJlcjtcclxuICAgIEBJbnB1dCgpIGluZGV4OiBudW1iZXI7XHJcbiAgICBASW5wdXQoKSBsYXN0OiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgaXNkaXJ0eTogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGlzQ2hlY2tlZDogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGhpZGVEZXRhaWxzVGV4dDogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIHNob3dWaWV3QnV0dG9uOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgaXNOZXdJbmxpbmVNbzogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGV4dHJhUmVsYXRpb246IGFueTtcclxuICAgIEBJbnB1dCgpIGhpZGVPcGVuSWNvbjogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGlubGluZUVkaXRXaXRob3V0U2VsZWN0aW9uOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgaW5EaWFsb2c6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBpc01vYmlsZTogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGlzTXVsdGlTZWxlY3Q6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSByb3dJbmRpY2F0b3I6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBncm91cFN1bW1hcnk6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBpc0xhc3RDaGlsZEdyb3VwOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgc2hvd1Jvd051bWJlcjogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIHJvd051bWJlcjogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgY29sb3JpbmdSb3c6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBub1NhdmVJbmxpbmVFZGl0SW5TZXJ2ZXI6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSByb3dJbmRpY2F0b3JDb2xvcjogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgVWx2TWFpbkN0cmxyOiBUeXBlVWx2TWFpbkN0cmxyO1xyXG4gICAgQElucHV0KCkgZmllbGREaWN0OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xyXG4gICAgQElucHV0KCkgYWN0aW9uTGlzdDogYW55W107XHJcblxyXG4gICAgQElucHV0KCkgc2V0IHNlcmlhbGl6ZWRSZWxhdGVkTW8odmFsOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLl9zZXJpYWxpemVkUmVsYXRlZE1vID0gdmFsO1xyXG4gICAgICAgIHRoaXMuX3VwZGF0ZUNhcnRhYmxlTW8odmFsKTtcclxuICAgICAgICB0aGlzLl9jcmVhdGVDYXJ0YWJsZVBhcmFtcygpO1xyXG4gICAgfVxyXG4gICAgQElucHV0KCkgc2V0IGNhcnRhYmxlVGVtcGxhdGUodmFsOiBGb3JtU2V0dGluZykge1xyXG4gICAgICAgIHRoaXMuX2NhcnRhYmxlVGVtcGxhdGUgPSB2YWw7XHJcbiAgICAgICAgdGhpcy5fY3JlYXRlQ2FydGFibGVQYXJhbXMoKTtcclxuICAgIH1cclxuICAgIEBJbnB1dCgpIHNldCBjYXJ0YWJsZU1vKHZhbDogTWV0YW9iamVjdERhdGFNb2RlbCkge1xyXG4gICAgICAgIHRoaXMuX2NhcnRhYmxlTW8gPSB2YWw7XHJcbiAgICAgICAgdGhpcy5fdXBkYXRlQ2FydGFibGVNbyh0aGlzLl9zZXJpYWxpemVkUmVsYXRlZE1vKTtcclxuXHJcbiAgICAgICAgdGhpcy5fY3JlYXRlQ2FydGFibGVQYXJhbXMoKTtcclxuICAgIH1cclxuICAgIEBJbnB1dCgpIHNldCBjYXJ0YWJsZVdvcmtmbG93RGF0YSh2YWw6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMuX2NhcnRhYmxlV29ya2Zsb3dEYXRhID0gdmFsO1xyXG4gICAgICAgIHRoaXMuX2NyZWF0ZUNhcnRhYmxlUGFyYW1zKCk7XHJcbiAgICB9XHJcbiAgICAvLyBASG9zdExpc3RlbmVyKCdkb2N1bWVudDptb3VzZWRvd24nLCBbJyRldmVudCddKVxyXG4gICAgLy8gb25Nb3VzZURvd24oZSk6IHZvaWQge1xyXG4gICAgLy8gICAgIC8vIHdlIG1ha2Ugc3VyZSBvbmx5IGRyYWdnYWJsZXMgb24gdGhlIGRvY3VtZW50IGVsZW1lbnRzIGFyZSBzZWxlY3RlZFxyXG4gICAgLy8gICAgIGlmIChcclxuICAgIC8vICAgICAgICAgIXRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZS50YXJnZXQpICYmXHJcbiAgICAvLyAgICAgICAgIHRoaXMuaW5saW5lRWRpdE1vZGUgJiZcclxuICAgIC8vICAgICAgICAgdGhpcy5hbGxvd0lubGluZUVkaXQgJiZcclxuICAgIC8vICAgICAgICAgdGhpcy5pc0NoZWNrZWQgJiZcclxuICAgIC8vICAgICAgICAgZS50YXJnZXQudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnYnV0dG9uJ1xyXG4gICAgLy8gICAgICkge1xyXG4gICAgLy8gICAgICAgICB0aGlzLmRlc2VsZWN0QWxsLmVtaXQoKTtcclxuICAgIC8vICAgICAgICAgLy8gdGhpcy5fc2F2ZUVkaXRlZE1vJC5uZXh0KCdNT1VTRURPV05fT1VUU0lERScpO1xyXG4gICAgLy8gICAgIH1cclxuICAgIC8vIH1cclxuICAgIGhhc0Vycm9yID0gZmFsc2U7XHJcbiAgICBfZm9jdXNUb0ZpcnN0RWlkdGFibGVDb2x1bW4gPSBmYWxzZTtcclxuICAgIF9sYXN0RWRpdGFibGVDb2x1bW5JbmRleDogbnVtYmVyO1xyXG4gICAgaW5saW5lRWRpdEluUmVwb3J0ID0gdHJ1ZTtcclxuICAgIGxheW91dCQ6IE9ic2VydmFibGU8YW55PjtcclxuICAgIGZvcm1QYW5lbEN0cmxyOiBhbnk7XHJcbiAgICBzYXZpbmc6IGJvb2xlYW47XHJcbiAgICBzYXZlZDogYm9vbGVhbjtcclxuICAgIHJld3JpdGVMYXlvdXQgPSB0cnVlO1xyXG4gICAgaGFzQ2FydGFibGVUZW1wbGF0ZSA9IGZhbHNlO1xyXG4gICAgY2FydGFibGVQYXJhbXM6IHtcclxuICAgICAgICBmb3JtU2V0dGluZzogRm9ybVNldHRpbmc7XHJcbiAgICAgICAgbW9JZDogc3RyaW5nO1xyXG4gICAgICAgIHR5cGVEZWZJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gICAgICAgIHZpZXdJZDogYW55O1xyXG4gICAgICAgIGluRGlhbG9nOiBib29sZWFuO1xyXG4gICAgICAgIGxvYWRBY3Rpdml0eVZpZXc6IGJvb2xlYW47XHJcbiAgICB9O1xyXG4gICAgd29ya2Zsb3dTdGF0ZTogV3JpdGFibGVTaWduYWw8eyBlcnJvcjogYW55OyBzdGF0ZTogJ1BlbmRpbmcnIHwgJ0ZpbmlzaCcgfCAnJyB9IHwgbnVsbD4gPSBzaWduYWwobnVsbCk7XHJcbiAgICBicnVsZUFjdGlvbk1lc3NhZ2U6IFdyaXRhYmxlU2lnbmFsPEJydWxlQWN0aW9uTWVzc2FnZSB8IG51bGw+ID0gc2lnbmFsKG51bGwpO1xyXG4gICAgcHJpdmF0ZSBfc2F2ZUVkaXRlZE1vJCA9IG5ldyBTdWJqZWN0PFJlYXNvblRvU2F2ZT4oKTtcclxuICAgIHByaXZhdGUgX2Zvcm1wYW5lbFZhbHVlQ2hhbmdlZCQgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XHJcbiAgICBwcml2YXRlIF9mb3JtUGFuZWxMb2FkZWQ6IGJvb2xlYW47XHJcbiAgICBwcml2YXRlIF9jYXJ0YWJsZU1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsO1xyXG4gICAgcHJpdmF0ZSBfY2FydGFibGVUZW1wbGF0ZTogRm9ybVNldHRpbmc7XHJcbiAgICBwcml2YXRlIF9jYXJ0YWJsZVdvcmtmbG93RGF0YTogc3RyaW5nO1xyXG4gICAgcHJpdmF0ZSBfc2VyaWFsaXplZFJlbGF0ZWRNbzogc3RyaW5nO1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJvdGVjdGVkIF9lbDogRWxlbWVudFJlZixcclxuICAgICAgICBwcm90ZWN0ZWQgX2RvbVNhbml0aXplcjogRG9tU2FuaXRpemVyLFxyXG4gICAgICAgIHByb3RlY3RlZCBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgICAgICBwcm90ZWN0ZWQgX3JlcG9ydFZhbHVlUGlwZTogTW9SZXBvcnRWYWx1ZVBpcGUsXHJcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgcHJvdGVjdGVkIF9wYXJlbnRGb3JtUGFuZWxTZXJ2aWNlOiBGb3JtUGFuZWxTZXJ2aWNlLFxyXG4gICAgICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgcHJvdGVjdGVkIF9mb3JtUGFuZWxTZXJ2aWNlOiBGb3JtUGFuZWxTZXJ2aWNlLFxyXG4gICAgICAgIEBPcHRpb25hbCgpIHByb3RlY3RlZCBfdWx2TWFpblNlcnZpY2U6IFVsdk1haW5TZXJ2aWNlXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIHRoaXMuX3NhdmVFZGl0ZWRNbyRcclxuICAgICAgICAgICAgLmFzT2JzZXJ2YWJsZSgpXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpLFxyXG4gICAgICAgICAgICAgICAgZGVib3VuY2VUaW1lKDUwMCksXHJcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKHJlYXNvbjogUmVhc29uVG9TYXZlKSA9PiB0aGlzLl9pbmxpbmVFZGl0U2F2ZUZvcm1QYW5lbChyZWFzb24pKSxcclxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4gdGhyb3dFcnJvcigoKSA9PiBlcnIpKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlczogeyByZWFzb246IFJlYXNvblRvU2F2ZTsgc3VjY2VlZDogYm9vbGVhbjsgc2F2ZWQ6IGJvb2xlYW4gfSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlcy5zYXZlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW8uJElzQ2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2Zvcm1wYW5lbFZhbHVlQ2hhbmdlZCQubmV4dCgnJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHJlcy5yZWFzb24gPT09ICdUQUInIHx8IHJlcy5yZWFzb24gPT09ICdDVFJMK0VOVEVSJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0TmV4dElubGluZVJlY29yZC5lbWl0KHRoaXMubW8pO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXMucmVhc29uID09PSAnRVNDJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWRpdEZvcm1QYW5lbENhbmNlbC5lbWl0KHRoaXMubW8pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLl9mb3JtcGFuZWxWYWx1ZUNoYW5nZWQkXHJcbiAgICAgICAgICAgIC5hc09ic2VydmFibGUoKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSxcclxuICAgICAgICAgICAgICAgIC8vIHN3aXRjaE1hcCgoKSA9PiB0aGlzLl9zeW5jTW8oKSksXHJcbiAgICAgICAgICAgICAgICB0YXAoKGMpID0+IHRoaXMuX3N5bmNNbygpKSxcclxuICAgICAgICAgICAgICAgIHRhcCgoYykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5tby4kSW5saW5lTW9DaGFuZ2VkID09PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1vLiRJbmxpbmVNb0NoYW5nZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgoYykgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lZGl0Rm9ybVBhbmVsVmFsdWVDaGFuZ2UuZW1pdCh7IG1vOiB0aGlzLm1vLCBmaWVsZERiTmFtZTogYyB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBwcml2YXRlIGdldCBfaGFzRm9ybVBhbmVsU2VydmljZSgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZm9ybVBhbmVsU2VydmljZSAhPT0gbnVsbCAmJiB0aGlzLmZvcm1TZXR0aW5nO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9oYXNGb3JtUGFuZWxTZXJ2aWNlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2Zvcm1QYW5lbFNlcnZpY2UuY29udGV4dCQucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgICB0aGlzLl9mb3JtUGFuZWxTZXJ2aWNlLnZpZXckLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKTtcclxuICAgICAgICAgICAgdGhpcy5sYXlvdXQkID0gdGhpcy5fZm9ybVBhbmVsU2VydmljZS5sYXlvdXQkO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5pbmxpbmVFZGl0V2l0aG91dFNlbGVjdGlvbikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fbG9hZEFuZENyZWF0ZUZvcm1QYW5lbEN0cmxyKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIubmdPbkNoYW5nZXMoY2hhbmdlcyk7XHJcbiAgICAgICAgY29uc3QgeyBpc0NoZWNrZWQsIGlubGluZUVkaXRNb2RlIH0gPSBjaGFuZ2VzO1xyXG4gICAgICAgIGxldCBuZWVkVG9Mb2FkRm9ybSA9IGZhbHNlO1xyXG4gICAgICAgIGlmICh0aGlzLmlubGluZUVkaXRNb2RlKSB7XHJcbiAgICAgICAgICAgIGlmIChpc0NoZWNrZWQpIHtcclxuICAgICAgICAgICAgICAgIGlmICghaXNDaGVja2VkLmN1cnJlbnRWYWx1ZSAmJiBpc0NoZWNrZWQucHJldmlvdXNWYWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9uZWVkVG9TYXZlKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2F2ZUVkaXRlZE1vJC5uZXh0KCdDSEVDS19DSEFOR0VEJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpc0NoZWNrZWQuY3VycmVudFZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmVlZFRvTG9hZEZvcm0gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpc0NoZWNrZWQgJiYgIWlzQ2hlY2tlZC5maXJzdENoYW5nZSkge1xyXG4gICAgICAgICAgICB0aGlzLl9yYWlzZVdvcmtmbG93U2hhcmVCdXR0b25zKGlzQ2hlY2tlZC5jdXJyZW50VmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaW5saW5lRWRpdE1vZGU/LmN1cnJlbnRWYWx1ZSAmJiAhaW5saW5lRWRpdE1vZGU/LnByZXZpb3VzVmFsdWUgJiYgdGhpcy5pc0NoZWNrZWQpIHtcclxuICAgICAgICAgICAgbmVlZFRvTG9hZEZvcm0gPSB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoIWlubGluZUVkaXRNb2RlPy5jdXJyZW50VmFsdWUgJiYgaW5saW5lRWRpdE1vZGU/LnByZXZpb3VzVmFsdWUgJiYgdGhpcy5pc0NoZWNrZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5fc2F2ZUVkaXRlZE1vJC5uZXh0KCdFU0MnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG5lZWRUb0xvYWRGb3JtICYmICF0aGlzLmlubGluZUVkaXRXaXRob3V0U2VsZWN0aW9uKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2xvYWRBbmRDcmVhdGVGb3JtUGFuZWxDdHJscigpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY2hhbmdlcy5tbyAmJiAhY2hhbmdlcy5tby5maXJzdENoYW5nZSAmJiB0aGlzLmlubGluZUVkaXRNb2RlKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9mb3JtUGFuZWxMb2FkZWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZm9ybVBhbmVsQ3RybHIuU2V0VmFsdWUoY2hhbmdlcy5tby5jdXJyZW50VmFsdWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGlmIChtbyAmJiAhbW8uZmlyc3RDaGFuZ2UgJiYgdGhpcy5faGFzRm9ybVBhbmVsU2VydmljZSAmJiB0aGlzLmlzQ2hlY2tlZCAmJiB0aGlzLmlubGluZUVkaXRNb2RlKSB7XHJcbiAgICAgICAgLy8gICAgIC8vdGhpcy5mb3JtUGFuZWxDdHJsci5TZXRWYWx1ZShjaGFuZ2VzLm1vLmN1cnJlbnRWYWx1ZSk7XHJcbiAgICAgICAgLy8gfVxyXG4gICAgfVxyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcclxuICAgICAgICBpZiAodGhpcy5mb3JtUGFuZWxDdHJscikge1xyXG4gICAgICAgICAgICB0aGlzLmZvcm1QYW5lbEN0cmxyLnVuKCdicnVsZVNob3dNZXNzYWdlQWN0aW9uJywgdGhpcy5faGFuZGxlQnJ1bGVTaG93TWVzc2FnZUFjdGlvbik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgT25DYXJ0YWJsZUZvcm1DbGljayhlKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNDaGVja2VkKSB7XHJcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb25Sb3dDaGVjayhvbmx5Q2hlY2s/OiBib29sZWFuKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fcm93Q2hlY2sob25seUNoZWNrKTtcclxuICAgIH1cclxuICAgIG9uUm93Q2xpY2soKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5yb3dDbGljay5lbWl0KHsgbW86IHRoaXMubW8sIGluZGV4OiB0aGlzLmluZGV4IH0pO1xyXG4gICAgfVxyXG4gICAgb25Db2x1bW5DaGFuZ2VUb0VkaXRNb2RlKGVsRG9tOiBIVE1MRWxlbWVudCwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGZvY3VzYWJsZXMgPSBlbERvbS5xdWVyeVNlbGVjdG9yQWxsKGdldEZvY3VzYWJsZVRhZ05hbWVzKCkpO1xyXG4gICAgICAgIHRoaXMuX2xhc3RFZGl0YWJsZUNvbHVtbkluZGV4ID0gaW5kZXg7XHJcbiAgICAgICAgaWYgKCFmb2N1c2FibGVzLmxlbmd0aCB8fCB0aGlzLl9mb2N1c1RvRmlyc3RFaWR0YWJsZUNvbHVtbikge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX2ZvY3VzVG9GaXJzdEVpZHRhYmxlQ29sdW1uID0gdHJ1ZTtcclxuICAgICAgICBjb25zdCBsYXN0Rm9jdXNhYmxlID0gZm9jdXNhYmxlc1swXTtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgKGxhc3RGb2N1c2FibGUgYXMgSFRNTEVsZW1lbnQpPy5mb2N1cygpO1xyXG4gICAgICAgIH0sIDApO1xyXG4gICAgfVxyXG4gICAgb25UYWJLZXlEb3duKGUsIGluZGV4KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKGluZGV4ID09PSB0aGlzLl9sYXN0RWRpdGFibGVDb2x1bW5JbmRleCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5pbmRleCA9PT0gdGhpcy5tb0RhdGFMaXN0Lmxlbmd0aCAtIDEpIHtcclxuICAgICAgICAgICAgICAgIFByZXZlbnREZWZhdWxFdmVudChlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLl9zYXZlRWRpdGVkTW8kLm5leHQoJ1RBQicpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIG9uRWRpdEZvcm1QYW5lbFNhdmUoZSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3NhdmVFZGl0ZWRNbyQubmV4dCgnQ1RSTCtFTlRFUicpO1xyXG4gICAgfVxyXG4gICAgb25FZGl0Rm9ybVBhbmVsQ2FuY2VsKGUpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmVzY2FwZUtleS5lbWl0KHRoaXMubW8pO1xyXG4gICAgfVxyXG4gICAgb25VbHZDb21tYW5kKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudWx2Q29tbWFuZC5lbWl0KHsgbW86IHRoaXMubW8sIGluZGV4OiB0aGlzLmluZGV4IH0pO1xyXG4gICAgfVxyXG4gICAgb25BY3Rpb24oY29tbWFuZEJvZHk6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuYWN0aW9uLmVtaXQoY29tbWFuZEJvZHkpO1xyXG4gICAgfVxyXG4gICAgb25FeHBhbmRDbGljaygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmV4cGFuZENsaWNrLmVtaXQodGhpcy5tbyk7XHJcbiAgICB9XHJcbiAgICBvbkR5bmFtaWNDb21wb25lbnRFdmVudHMoZTogeyB0aXRsZTogc3RyaW5nOyBkYXRhPzogYW55IH0pOiB2b2lkIHtcclxuICAgICAgICBzd2l0Y2ggKGUudGl0bGUpIHtcclxuICAgICAgICAgICAgY2FzZSAncm93Q2hlY2snOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5vblJvd0NoZWNrKCk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAncm93Q2xpY2snOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5vblJvd0NsaWNrKCk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAndWx2Q29tbWFuZCc6XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uVWx2Q29tbWFuZCgpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9uQ2FydGFibGVGb3JtQ2xvc2VkKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuY2FydGFibGVGb3JtQ2xvc2VkLmVtaXQoeyBtbzogdGhpcy5tbywgaW5kZXg6IHRoaXMuaW5kZXggfSk7XHJcbiAgICB9XHJcblxyXG4gICAgb25DYXJ0YWJsZUJydWxlQWN0aW9uKGJydWxlQWN0aW9uOiBCcnVsZUFjdGlvbk1lc3NhZ2UpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9oYW5kbGVCcnVsZVNob3dNZXNzYWdlQWN0aW9uKGJydWxlQWN0aW9uKTtcclxuICAgIH1cclxuICAgIG9uQ2FydGFibGVBZnRlclRhbnNpdGlvbihlKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy53b3JrZmxvd1N0YXRlLnNldCh7XHJcbiAgICAgICAgICAgIGVycm9yOiB0aGlzLmJydWxlQWN0aW9uTWVzc2FnZSgpID8gdGhpcy5icnVsZUFjdGlvbk1lc3NhZ2UoKSA6IGUuZXJyb3IsXHJcbiAgICAgICAgICAgIHN0YXRlOiAnRmluaXNoJ1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgb25DYXJ0YWJsZUJlZm9yZVRhbnNpdGlvbigpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLndvcmtmbG93U3RhdGUuc2V0KHsgc3RhdGU6ICdQZW5kaW5nJywgZXJyb3I6IG51bGwgfSk7XHJcbiAgICB9XHJcbiAgICBvblJlc2V0V29ya2Zsb3dTdGF0ZSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9oYW5kbGVSZXNldFdvcmtmbG93U3RhdGUoKTtcclxuICAgIH1cclxuICAgIF90cmFja0J5Q29sdW1uKGluZGV4OiBudW1iZXIsIGNvbHVtbjogUmVwb3J0Vmlld0NvbHVtbik6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIGAke2NvbHVtbi5OYW1lfSR7aW5kZXh9YDtcclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfaGFuZGxlUmVzZXRXb3JrZmxvd1N0YXRlKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3Jlc2V0QnJ1bGVBY3Rpb25NZXNzYWdlKCk7XHJcbiAgICAgICAgdGhpcy53b3JrZmxvd1N0YXRlLnNldCh7IHN0YXRlOiAnJywgZXJyb3I6IG51bGwgfSk7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX3Jlc2V0QnJ1bGVBY3Rpb25NZXNzYWdlKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuYnJ1bGVBY3Rpb25NZXNzYWdlLnNldChudWxsKTtcclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfdXBkYXRlQ2FydGFibGVNbyhzZXJpYWxpemVNbzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHNlcmlhbGl6ZU1vICYmIHRoaXMuX2NhcnRhYmxlTW8pIHtcclxuICAgICAgICAgICAgc2VyaWFsaXplTW8gPSBgJHtzZXJpYWxpemVNb31gO1xyXG4gICAgICAgICAgICBjb25zdCBtbyA9IEJhcnNhQXBpLkV4dC5kZWNvZGUoc2VyaWFsaXplTW8pO1xyXG4gICAgICAgICAgICB0aGlzLl9jYXJ0YWJsZU1vID0geyAuLi50aGlzLl9jYXJ0YWJsZU1vLCAuLi5tbyB9O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfY3JlYXRlQ2FydGFibGVQYXJhbXMoKTogdm9pZCB7XHJcbiAgICAgICAgbGV0IGNhcnRhYmxlVGVtcGxhdGUgPSB0aGlzLl9jYXJ0YWJsZVRlbXBsYXRlO1xyXG4gICAgICAgIGNvbnN0IGNhcnRhYmxlTW8gPSB0aGlzLl9jYXJ0YWJsZU1vO1xyXG4gICAgICAgIGNvbnN0IGNhcnRhYmxlV29ya2Zsb3dEYXRhID0gdGhpcy5fY2FydGFibGVXb3JrZmxvd0RhdGE7XHJcbiAgICAgICAgaWYgKHRoaXMuaGFzQ2FydGFibGVUZW1wbGF0ZSkge1xyXG4gICAgICAgICAgICAvLyBUT0RPIHVwZGF0ZSBjYXJ0YWJsZSBtbztcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIGNhcnRhYmxlVGVtcGxhdGUgJiZcclxuICAgICAgICAgICAgY2FydGFibGVNbyAmJlxyXG4gICAgICAgICAgICB0eXBlb2YgY2FydGFibGVXb3JrZmxvd0RhdGEgIT09ICd1bmRlZmluZWQnICYmXHJcbiAgICAgICAgICAgIHRoaXMuX3NlcmlhbGl6ZWRSZWxhdGVkTW9cclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgY2FydGFibGVUZW1wbGF0ZSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoY2FydGFibGVUZW1wbGF0ZSkpO1xyXG4gICAgICAgICAgICBjb25zdCB2aWV3ID0gY2FydGFibGVUZW1wbGF0ZS5WaWV3O1xyXG4gICAgICAgICAgICBjYXJ0YWJsZVRlbXBsYXRlLkRhdGEgPSB7IE1vOiB7IC4uLmNhcnRhYmxlTW8gfSB9O1xyXG4gICAgICAgICAgICBjYXJ0YWJsZVRlbXBsYXRlLldvcmtmbG93ID0gY2FydGFibGVXb3JrZmxvd0RhdGEgPT09ICcnID8gbnVsbCA6IEpTT04ucGFyc2UoY2FydGFibGVXb3JrZmxvd0RhdGEpO1xyXG4gICAgICAgICAgICBpZiAoIXZpZXcuRXh0cmFKc29uUHJvcCkge1xyXG4gICAgICAgICAgICAgICAgdmlldy5FeHRyYUpzb25Qcm9wID0ge307XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdmlldy5FeHRyYUpzb25Qcm9wLklzU2ltcGxlID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuY2FydGFibGVQYXJhbXMgPSB7XHJcbiAgICAgICAgICAgICAgICBmb3JtU2V0dGluZzogY2FydGFibGVUZW1wbGF0ZSxcclxuICAgICAgICAgICAgICAgIG1vSWQ6IGNhcnRhYmxlTW8uSWQsXHJcbiAgICAgICAgICAgICAgICB0eXBlRGVmSWQ6IGNhcnRhYmxlTW8uJFR5cGVEZWZJZCxcclxuICAgICAgICAgICAgICAgIHZpZXdJZDogdmlldy5UeXBlVmlld0lkLFxyXG4gICAgICAgICAgICAgICAgaW5EaWFsb2c6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgbG9hZEFjdGl2aXR5VmlldzogdHJ1ZVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB0aGlzLmhhc0NhcnRhYmxlVGVtcGxhdGUgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcHJvdGVjdGVkIF9uZWVkVG9TYXZlKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIC8vIGlmICghdGhpcy5pc0NoZWNrZWQpIHtcclxuICAgICAgICAvLyAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIC8vIH1cclxuICAgICAgICAvLyBjb25zdCBpc0NoaWxkTm9kZSA9ICh0aGlzLl9lbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5jb250YWlucyhlLnRhcmdldCk7XHJcbiAgICAgICAgLy8gaWYgKGlzQ2hpbGROb2RlKSB7XHJcbiAgICAgICAgLy8gICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgY29uc3QgdCA9IHRoaXMuaW5saW5lRWRpdE1vZGUgJiYgdGhpcy5faGFzRm9ybVBhbmVsU2VydmljZTtcclxuICAgICAgICBpZiAoIXQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybVBhbmVsQ3RybHIgJiYgdGhpcy5mb3JtUGFuZWxDdHJsci5Jc01vQ2hhbmdlZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfY2hlY2tmb2N1c091dEZyb21Sb3codGFyZ2V0KTogdm9pZCB7XHJcbiAgICAgICAgLy8gY29uc3QgZm9jdXNhYmxlOiBOb2RlTGlzdCA9IHRoaXMuX2ZvY3VzYWJsZUNvbnRyb2xzO1xyXG4gICAgICAgIC8vIGxldCBmb3VuZEluRm9jdXNhYmxlID0gZmFsc2U7XHJcbiAgICAgICAgLy8gZm9jdXNhYmxlLmZvckVhY2goKGMpID0+IHtcclxuICAgICAgICAvLyAgICAgaWYgKGMgPT09IHRhcmdldCkge1xyXG4gICAgICAgIC8vICAgICAgICAgZm91bmRJbkZvY3VzYWJsZSA9IHRydWU7XHJcbiAgICAgICAgLy8gICAgIH1cclxuICAgICAgICAvLyB9KTtcclxuICAgICAgICAvLyBpZiAoIWZvdW5kSW5Gb2N1c2FibGUpIHtcclxuICAgICAgICAvLyAgICAgdGhpcy5fc2F2ZUVkaXRlZE1vJC5uZXh0KCdUQUInKTtcclxuICAgICAgICAvLyB9XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX3Jvd0NoZWNrKG9ubHlDaGVjaz86IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnJvd0NoZWNrLmVtaXQoeyBtbzogdGhpcy5tbywgaW5kZXg6IHRoaXMuaW5kZXgsIG9ubHlDaGVjayB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgX3JhaXNlV29ya2Zsb3dTaGFyZUJ1dHRvbnMoaXNDaGVja2VkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuY2FydGFibGVQYXJhbXMpIHtcclxuICAgICAgICAgICAgY29uc3QgY2hvaWNlTGlzdDogQ2hvaWNlRGVmW10gPSB0aGlzLmNhcnRhYmxlUGFyYW1zLmZvcm1TZXR0aW5nPy5Xb3JrZmxvdz8uQ2hvaWNlTGlzdDtcclxuICAgICAgICAgICAgaWYgKGNob2ljZUxpc3Q/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy53b3JrZmxvd1NoYXJlQnV0dG9ucy5lbWl0KHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybVBhbmVsQ3RybHI6IHRoaXMuX2NhcnRhYmxlRm9ybVJlZi5mb3JtUGFuZWxDdHJsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtbzogdGhpcy5tbyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2hvaWNlTGlzdCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkOiBpc0NoZWNrZWRcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfaGFuZGxlVmFsdWVDaGFuZ2UoZm9ybVBhbmVsQ3RybCwgZmllbGRDdHJscik6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy5pc0NoZWNrZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5vblJvd0NoZWNrKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX2Zvcm1wYW5lbFZhbHVlQ2hhbmdlZCQubmV4dChmaWVsZEN0cmxyPy5TZXR0aW5nPy5Db250cm9sTmFtZSk7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX3N5bmNNbygpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcclxuICAgICAgICBjb25zdCBzeW5jV2l0aEZvcm1wYW5lbE1vID0gdGhpcy5tbztcclxuICAgICAgICBjb25zdCBfaXNDaGVja2VkID0gdGhpcy5tby4kSXNDaGVja2VkO1xyXG4gICAgICAgIGNvbnN0IGZvcm1QYW5lbEN0cmxyTW8gPSB0aGlzLmZvcm1QYW5lbEN0cmxyLk1vO1xyXG4gICAgICAgIHRoaXMuX3VwZGF0ZVdpdGhPcmlnaW5hbFZhbHVlcyhmb3JtUGFuZWxDdHJsck1vLCBzeW5jV2l0aEZvcm1wYW5lbE1vKTtcclxuICAgICAgICBzeW5jV2l0aEZvcm1wYW5lbE1vWyckT3JpZ2luYWxWYWx1ZXMnXSA9IGZvcm1QYW5lbEN0cmxyTW9bJyRPcmlnaW5hbFZhbHVlcyddO1xyXG4gICAgICAgIHN5bmNXaXRoRm9ybXBhbmVsTW9bJyRGaWVsZERpY3QnXSA9IGZvcm1QYW5lbEN0cmxyTW9bJyRGaWVsZERpY3QnXTtcclxuICAgICAgICBzeW5jV2l0aEZvcm1wYW5lbE1vWyckU3RhdGUnXSA9IGZvcm1QYW5lbEN0cmxyTW9bJyRTdGF0ZSddOyAvLyB0aGlzIGFkZCBiZWNhdXNlIGlmIHdlIGVkaXQgdW5jaGFuZ2VkIG1vIGl0IGRvZXMgbm90IHJlZmxlY3QgdG8gbW8gb2YgdWx2LlxyXG4gICAgICAgIHRoaXMubW8gPSB7IC4uLnN5bmNXaXRoRm9ybXBhbmVsTW8gfTtcclxuICAgICAgICB0aGlzLm1vLiRJc0NoZWNrZWQgPSBfaXNDaGVja2VkO1xyXG4gICAgICAgIHJldHVybiBmcm9tKFByb21pc2UucmVzb2x2ZSgpKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgX3VwZGF0ZVdpdGhPcmlnaW5hbFZhbHVlcyhzb3VyY2U6IE1ldGFvYmplY3REYXRhTW9kZWwsIGRlc3Q6IE1ldGFvYmplY3REYXRhTW9kZWwpOiB2b2lkIHtcclxuICAgICAgICBPYmplY3Qua2V5cyhzb3VyY2UuJE9yaWdpbmFsVmFsdWVzKS5mb3JFYWNoKChjOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgZGVzdFtjXSA9IHNvdXJjZVtjXTtcclxuICAgICAgICAgICAgaWYgKHNvdXJjZVtjICsgJyRDYXB0aW9uJ10pIHtcclxuICAgICAgICAgICAgICAgIGRlc3RbYyArICckQ2FwdGlvbiddID0gc291cmNlW2MgKyAnJENhcHRpb24nXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoc291cmNlW2MgKyAnJEljb24nXSkge1xyXG4gICAgICAgICAgICAgICAgZGVzdFtjICsgJyRJY29uJ10gPSBzb3VyY2VbYyArICckSWNvbiddO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIF9yYWlzZUZvcm1QYW5lbFZhbHVlQ2hhbmdlZCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmVkaXRGb3JtUGFuZWxWYWx1ZUNoYW5nZS5lbWl0KHsgbW86IHRoaXMubW8gfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIF9oYW5kbGVCcnVsZVNob3dNZXNzYWdlQWN0aW9uKGFjdGlvbjogQnJ1bGVBY3Rpb25NZXNzYWdlKTogdm9pZCB7XHJcbiAgICAgICAgYWN0aW9uLk1lc3NhZ2VFeHByZXNzaW9uSHRtbCA9IHRoaXMuX2RvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChhY3Rpb24uTWVzc2FnZUV4cHJlc3Npb24pO1xyXG4gICAgICAgIHRoaXMuYnJ1bGVBY3Rpb25NZXNzYWdlLnNldChhY3Rpb24pO1xyXG4gICAgfVxyXG4gICAgcHJvdGVjdGVkIF9jcmVhdGVGb3JtUGFuZWxDdHJscihtbzogTWV0YW9iamVjdERhdGFNb2RlbCwgdHlwZURlZklkOiBzdHJpbmcpOiBhbnkge1xyXG4gICAgICAgIGlmICghdGhpcy5mb3JtUGFuZWxDdHJscikge1xyXG4gICAgICAgICAgICB0aGlzLmZvcm1QYW5lbEN0cmxyID0gY3JlYXRlR3JpZEVkaXRvckZvcm1QYW5lbChcclxuICAgICAgICAgICAgICAgIHRoaXMuZm9ybVNldHRpbmcsXHJcbiAgICAgICAgICAgICAgICB7IC4uLm1vIH0sXHJcbiAgICAgICAgICAgICAgICB0eXBlRGVmSWQsXHJcbiAgICAgICAgICAgICAgICB0aGlzLmV4dHJhUmVsYXRpb24sXHJcbiAgICAgICAgICAgICAgICB0aGlzLnJld3JpdGVMYXlvdXQsXHJcbiAgICAgICAgICAgICAgICB0aGlzLlVsdk1haW5DdHJsclxyXG4gICAgICAgICAgICAgICAgLy8gQmFyc2FBcGkuQ29tbW9uLlV0aWwuVHJ5R2V0VmFsdWUodGhpcy5jb250ZXh0LlNldHRpbmcsICdFeHRyYS5SZWxhdGlvbicpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZm9ybVBhbmVsQ3RybHIuSW5saW5lRWRpdEluUmVwb3J0ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmZvcm1QYW5lbEN0cmxyLm9uKHtcclxuICAgICAgICAgICAgYnJ1bGVTaG93TWVzc2FnZUFjdGlvbjogdGhpcy5faGFuZGxlQnJ1bGVTaG93TWVzc2FnZUFjdGlvbi5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICB2YWx1ZUNoYW5nZTogdGhpcy5faGFuZGxlVmFsdWVDaGFuZ2UuYmluZCh0aGlzKVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtUGFuZWxDdHJscjtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgX2xvYWRBbmRDcmVhdGVGb3JtUGFuZWxDdHJscigpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBmb3JtU2V0dGluZ0RhdGEgPSB0aGlzLmZvcm1TZXR0aW5nLkRhdGE7XHJcbiAgICAgICAgY29uc3QgZm9ybU1vID0ge1xyXG4gICAgICAgICAgICAuLi50aGlzLm1vLFxyXG4gICAgICAgICAgICAkRmllbGREaWN0OiBmb3JtU2V0dGluZ0RhdGEuTW8uJEZpZWxkRGljdCxcclxuICAgICAgICAgICAgJFR5cGVEZWZJZDogZm9ybVNldHRpbmdEYXRhLk1vLiRUeXBlRGVmSWQsXHJcbiAgICAgICAgICAgICRPcmlnaW5hbFZhbHVlczoge31cclxuICAgICAgICB9O1xyXG4gICAgICAgIGlmICh0aGlzLl9mb3JtUGFuZWxMb2FkZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5mb3JtUGFuZWxDdHJsci5TZXRWYWx1ZShmb3JtTW8pO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLl9jcmVhdGVGb3JtUGFuZWxDdHJscihmb3JtTW8sIHRoaXMudHlwZURlZklkKTtcclxuICAgICAgICB0aGlzLl9mb3JtUGFuZWxMb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgIGNvbnN0IGZvcm1QYW5lbEN0cmxyID0gdGhpcy5mb3JtUGFuZWxDdHJscjtcclxuICAgICAgICB0aGlzLmZvcm1QYW5lbEN0cmxyLlVsdk1vRGF0YUxpc3RDb3VudCA9IHRoaXMubW9EYXRhTGlzdENvdW50IC0gMTtcclxuICAgICAgICBmb3JtUGFuZWxDdHJsci5Mb2FkQW5kQ3JlYXRlKG51bGwsIGZhbHNlLCBmYWxzZSwgKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBjdXN0b21Gb3JtUGFuZWxVaSA9IGZvcm1QYW5lbEN0cmxyLkFkYXB0ZXIuQ29udHJvbDtcclxuICAgICAgICAgICAgY29uc3QgcGFyZW50TW8gPSB0aGlzLl9wYXJlbnRGb3JtUGFuZWxTZXJ2aWNlID8gdGhpcy5fcGFyZW50Rm9ybVBhbmVsU2VydmljZS5tbyA6IG51bGw7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmV4dHJhUmVsYXRpb24gJiYgcGFyZW50TW8gJiYgdGhpcy5leHRyYVJlbGF0aW9uLlJlbGF0aW9uVHlwZSA9PT0gJ0NvbXBvc2l0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgZm9ybVBhbmVsQ3RybHIuTW8uU2V0RlZhbHVlKHRoaXMuZXh0cmFSZWxhdGlvbi5QYXJlbnRGZE5hbWUsIHBhcmVudE1vKTtcclxuICAgICAgICAgICAgICAgIC8vIG5ld0Zvcm1TZXR0aW5ncy5EYXRhLk1vW3JlbGF0aW9uLlBhcmVudEZkTmFtZV0gPSBwYXJlbnRNby5HZXRDaGFuZ2VkT2JqZWN0KCk7XHJcbiAgICAgICAgICAgICAgICAvLyBuZXdGb3JtU2V0dGluZ3MuRGF0YS5Nb1tyZWxhdGlvbi5QYXJlbnRGZE5hbWVdLiRTdGF0ZSA9IHBhcmVudE1vLiRTdGF0ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjdXN0b21Gb3JtUGFuZWxVaS5SZWZyZXNoID0gKCkgPT4ge307XHJcbiAgICAgICAgICAgIHRoaXMuX2Zvcm1QYW5lbFNlcnZpY2UuY29udGV4dCA9IGZvcm1QYW5lbEN0cmxyLkFkYXB0ZXIuQ29udHJvbDtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfcmVzZXRTYXZpbmdTdGF0ZXMoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5oYXNFcnJvciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuX3Jlc2V0QnJ1bGVBY3Rpb25NZXNzYWdlKCk7XHJcbiAgICAgICAgdGhpcy5zYXZlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfc2V0U2F2aW5nU3RhdGUoZXJyKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICB0aGlzLmhhc0Vycm9yID0gdHJ1ZTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmhhc0Vycm9yID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zYXZlZCA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX2lubGluZUVkaXRTYXZlRm9ybVBhbmVsKHJlYXNvbik6IFByb21pc2U8eyByZWFzb246IFJlYXNvblRvU2F2ZTsgc3VjY2VlZDogYm9vbGVhbjsgc2F2ZWQ6IGJvb2xlYW4gfT4ge1xyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8eyByZWFzb246IFJlYXNvblRvU2F2ZTsgc3VjY2VlZDogYm9vbGVhbjsgc2F2ZWQ6IGJvb2xlYW4gfT4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuZm9ybVBhbmVsQ3RybHIuSXNNb0NoYW5nZWQoKSAmJiB0aGlzLmZvcm1QYW5lbEN0cmxyLk1vLkdldFN0YXRlKCkgIT09ICdOZXcnKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBpZiBzdGF0ZSBvZiBtbyBpcyBuZXcgb3IgbW9kaWRmaWVkIHRoZW4gaXQgbmVlZHMgdG8gdXBkYXRlXHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKHsgcmVhc29uLCBzdWNjZWVkOiB0cnVlLCBzYXZlZDogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgZm9ybVBhbmVsQ3RybHJNbyA9IHRoaXMuZm9ybVBhbmVsQ3RybHIuTW87XHJcbiAgICAgICAgICAgIGRlbGV0ZSBmb3JtUGFuZWxDdHJsck1vLmpzb247XHJcbiAgICAgICAgICAgIC8vIHRoaXMuc2F2aW5nID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMubW8uJElubGluZU1vQ2hhbmdlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmVkaXRGb3JtUGFuZWxTYXZlLmVtaXQodGhpcy5tbyk7XHJcbiAgICAgICAgICAgIHRoaXMuX3Jlc2V0QnJ1bGVBY3Rpb25NZXNzYWdlKCk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm5vU2F2ZUlubGluZUVkaXRJblNlcnZlcikge1xyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZSh7IHJlYXNvbiwgc3VjY2VlZDogdHJ1ZSwgc2F2ZWQ6IHRydWUgfSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5mb3JtUGFuZWxDdHJsci5TYXZlKGZhbHNlLCAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzLnNhdmluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIEJhcnNhQXBpLkNvbW1vbi5TaWxlbnRFeGNlcHRpb24pIHtcclxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHsgcmVhc29uOiAnTk9ORScsIHN1Y2NlZWQ6IHRydWUsIHNhdmVkOiB0cnVlIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuZm9ybVBhbmVsQ3RybHIuU2V0SXNDaGFuZ2VkKGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3NldFNhdmluZ1N0YXRlKGVycik7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKHsgcmVhc29uLCBzdWNjZWVkOiB0cnVlLCBzYXZlZDogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
544
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS12aWV3LWl0ZW0tcHJvcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1ub3Zpbi1yYXktY29yZS9zcmMvbGliL2R5bmFtaWMtY29tcG9uZW50L2Jhc2Utdmlldy1pdGVtLXByb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFFdkIsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixJQUFJLEVBRUosUUFBUSxFQUNSLFNBQVMsRUFFVCxNQUFNLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFjLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFbEgsT0FBTyxFQUlILFFBQVEsRUFLWCxNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSx5QkFBeUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVuRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7QUFVM0QsTUFBTSxPQUFPLDBCQUEyQixTQUFRLHNCQUFzQjtJQXNDbEUsSUFBYSxtQkFBbUIsQ0FBQyxHQUFXO1FBQ3hDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxHQUFHLENBQUM7UUFDaEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFDRCxJQUFhLGdCQUFnQixDQUFDLEdBQWdCO1FBQzFDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxHQUFHLENBQUM7UUFDN0IsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDakMsQ0FBQztJQUNE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QUlPLFVBQVU7c0JBQXRCLEtBQUs7Z0JBTU8sb0JBQW9CO3NCQUFoQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBFbGVtZW50UmVmLFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkNoYW5nZXMsXHJcbiAgICBPbkluaXQsXHJcbiAgICBPcHRpb25hbCxcclxuICAgIE91dHB1dCxcclxuICAgIFNlbGYsXHJcbiAgICBTaW1wbGVDaGFuZ2VzLFxyXG4gICAgU2tpcFNlbGYsXHJcbiAgICBWaWV3Q2hpbGQsXHJcbiAgICBXcml0YWJsZVNpZ25hbCxcclxuICAgIHNpZ25hbFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZnJvbSwgdGFwLCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBzd2l0Y2hNYXAsIHRha2VVbnRpbCwgdGhyb3dFcnJvciwgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQge1xyXG4gICAgTWV0YW9iamVjdERhdGFNb2RlbCxcclxuICAgIFJlcG9ydFZpZXdDb2x1bW4sXHJcbiAgICBGb3JtU2V0dGluZyxcclxuICAgIEJhcnNhQXBpLFxyXG4gICAgQ2hvaWNlRGVmLFxyXG4gICAgVHlwZVVsdk1haW5DdHJscixcclxuICAgIEJydWxlQWN0aW9uTWVzc2FnZSxcclxuICAgIEVqcmF5T2xnb1xyXG59IGZyb20gJy4uL2Fic3RyYWN0LWNsYXNzZXMnO1xyXG5pbXBvcnQgeyBQcmV2ZW50RGVmYXVsRXZlbnQsIGNyZWF0ZUdyaWRFZGl0b3JGb3JtUGFuZWwsIGdldEZvY3VzYWJsZVRhZ05hbWVzIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcclxuaW1wb3J0IHsgRm9ybVBhbmVsU2VydmljZSwgVWx2TWFpblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IEJhc2VWaWV3UHJvcHNDb21wb25lbnQgfSBmcm9tICcuL2Jhc2Utdmlldy1wcm9wcyc7XHJcbmltcG9ydCB7IE1vUmVwb3J0VmFsdWVQaXBlIH0gZnJvbSAnLi4vcGlwZXMnO1xyXG5pbXBvcnQgeyBGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi4vZm9ybS9mb3JtLmNvbXBvbmVudCc7XHJcbnR5cGUgUmVhc29uVG9TYXZlID0gJ1RBQicgfCAnQ1RSTCtFTlRFUicgfCAnQ0hFQ0tfQ0hBTkdFRCcgfCAnRVNDJyB8ICdNT1VTRURPV05fT1VUU0lERScgfCAnTk9ORSc7XHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdibnJjLWJhc2Utdmlldy1pdGVtLXByb3BzJyxcclxuICAgIHRlbXBsYXRlOiBgYCxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgc3RhbmRhbG9uZTogZmFsc2VcclxufSlcclxuZXhwb3J0IGNsYXNzIEJhc2VWaWV3SXRlbVByb3BzQ29tcG9uZW50IGV4dGVuZHMgQmFzZVZpZXdQcm9wc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICAgIEBPdXRwdXQoKSBhY3Rpb25MaXN0Q2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICAgIEBPdXRwdXQoKSBldmVudHMgPSBuZXcgRXZlbnRFbWl0dGVyPHsgdGl0bGU6IHN0cmluZzsgZGF0YT86IGFueSB9PigpO1xyXG4gICAgQFZpZXdDaGlsZCgnY2FydGFibGVGb3JtUmVmJywgeyBzdGF0aWM6IGZhbHNlIH0pIF9jYXJ0YWJsZUZvcm1SZWY6IEZvcm1Db21wb25lbnQ7XHJcbiAgICBASW5wdXQoKSBjaGVja2JveENvbXBvbmVudDogRWpyYXlPbGdvO1xyXG4gICAgQElucHV0KCkgZGlzYWJsZUVsbGFwc2lzOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgYXR0YWNobWVudFZpZXdUeXBlOiBudW1iZXI7XHJcbiAgICBASW5wdXQoKSBjb250ZXh0TWVudU92ZXJmbG93VGV4dDogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgZGV0YWlsc0NvbXBvbmVudD86IEVqcmF5T2xnbztcclxuICAgIEBJbnB1dCgpIGRldGFpbHNDb2x1bW5zOiBSZXBvcnRWaWV3Q29sdW1uW107XHJcbiAgICBASW5wdXQoKSBkZXRhaWxzVGV4dDogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgbW86IE1ldGFvYmplY3REYXRhTW9kZWw7XHJcbiAgICBASW5wdXQoKSBtb0RhdGFMaXN0Q291bnQ6IG51bWJlcjtcclxuICAgIEBJbnB1dCgpIGluZGV4OiBudW1iZXI7XHJcbiAgICBASW5wdXQoKSBsYXN0OiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgaXNkaXJ0eTogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGlzQ2hlY2tlZDogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGhpZGVEZXRhaWxzVGV4dDogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIHNob3dWaWV3QnV0dG9uOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgaXNOZXdJbmxpbmVNbzogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGV4dHJhUmVsYXRpb246IGFueTtcclxuICAgIEBJbnB1dCgpIGhpZGVPcGVuSWNvbjogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGlubGluZUVkaXRXaXRob3V0U2VsZWN0aW9uOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgaW5EaWFsb2c6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBpc01vYmlsZTogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGlzTXVsdGlTZWxlY3Q6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSByb3dJbmRpY2F0b3I6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBncm91cFN1bW1hcnk6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBpc0xhc3RDaGlsZEdyb3VwOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgc2hvd1Jvd051bWJlcjogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIHJvd051bWJlcjogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgY29sb3JpbmdSb3c6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBub1NhdmVJbmxpbmVFZGl0SW5TZXJ2ZXI6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSByb3dJbmRpY2F0b3JDb2xvcjogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgVWx2TWFpbkN0cmxyOiBUeXBlVWx2TWFpbkN0cmxyO1xyXG4gICAgQElucHV0KCkgZmllbGREaWN0OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xyXG4gICAgQElucHV0KCkgYWN0aW9uTGlzdDogYW55W107XHJcblxyXG4gICAgQElucHV0KCkgc2V0IHNlcmlhbGl6ZWRSZWxhdGVkTW8odmFsOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLl9zZXJpYWxpemVkUmVsYXRlZE1vID0gdmFsO1xyXG4gICAgICAgIHRoaXMuX3VwZGF0ZUNhcnRhYmxlTW8odmFsKTtcclxuICAgICAgICB0aGlzLl9jcmVhdGVDYXJ0YWJsZVBhcmFtcygpO1xyXG4gICAgfVxyXG4gICAgQElucHV0KCkgc2V0IGNhcnRhYmxlVGVtcGxhdGUodmFsOiBGb3JtU2V0dGluZykge1xyXG4gICAgICAgIHRoaXMuX2NhcnRhYmxlVGVtcGxhdGUgPSB2YWw7XHJcbiAgICAgICAgdGhpcy5fY3JlYXRlQ2FydGFibGVQYXJhbXMoKTtcclxuICAgIH1cclxuICAgIEBJbnB1dCgpIHNldCBjYXJ0YWJsZU1vKHZhbDogTWV0YW9iamVjdERhdGFNb2RlbCkge1xyXG4gICAgICAgIHRoaXMuX2NhcnRhYmxlTW8gPSB2YWw7XHJcbiAgICAgICAgdGhpcy5fdXBkYXRlQ2FydGFibGVNbyh0aGlzLl9zZXJpYWxpemVkUmVsYXRlZE1vKTtcclxuXHJcbiAgICAgICAgdGhpcy5fY3JlYXRlQ2FydGFibGVQYXJhbXMoKTtcclxuICAgIH1cclxuICAgIEBJbnB1dCgpIHNldCBjYXJ0YWJsZVdvcmtmbG93RGF0YSh2YWw6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMuX2NhcnRhYmxlV29ya2Zsb3dEYXRhID0gdmFsO1xyXG4gICAgICAgIHRoaXMuX2NyZWF0ZUNhcnRhYmxlUGFyYW1zKCk7XHJcbiAgICB9XHJcbiAgICAvLyBASG9zdExpc3RlbmVyKCdkb2N1bWVudDptb3VzZWRvd24nLCBbJyRldmVudCddKVxyXG4gICAgLy8gb25Nb3VzZURvd24oZSk6IHZvaWQge1xyXG4gICAgLy8gICAgIC8vIHdlIG1ha2Ugc3VyZSBvbmx5IGRyYWdnYWJsZXMgb24gdGhlIGRvY3VtZW50IGVsZW1lbnRzIGFyZSBzZWxlY3RlZFxyXG4gICAgLy8gICAgIGlmIChcclxuICAgIC8vICAgICAgICAgIXRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZS50YXJnZXQpICYmXHJcbiAgICAvLyAgICAgICAgIHRoaXMuaW5saW5lRWRpdE1vZGUgJiZcclxuICAgIC8vICAgICAgICAgdGhpcy5hbGxvd0lubGluZUVkaXQgJiZcclxuICAgIC8vICAgICAgICAgdGhpcy5pc0NoZWNrZWQgJiZcclxuICAgIC8vICAgICAgICAgZS50YXJnZXQudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnYnV0dG9uJ1xyXG4gICAgLy8gICAgICkge1xyXG4gICAgLy8gICAgICAgICB0aGlzLmRlc2VsZWN0QWxsLmVtaXQoKTtcclxuICAgIC8vICAgICAgICAgLy8gdGhpcy5fc2F2ZUVkaXRlZE1vJC5uZXh0KCdNT1VTRURPV05fT1VUU0lERScpO1xyXG4gICAgLy8gICAgIH1cclxuICAgIC8vIH1cclxuICAgIGhhc0Vycm9yID0gZmFsc2U7XHJcbiAgICBfZm9jdXNUb0ZpcnN0RWlkdGFibGVDb2x1bW4gPSBmYWxzZTtcclxuICAgIF9sYXN0RWRpdGFibGVDb2x1bW5JbmRleDogbnVtYmVyO1xyXG4gICAgaW5saW5lRWRpdEluUmVwb3J0ID0gdHJ1ZTtcclxuICAgIGxheW91dCQ6IE9ic2VydmFibGU8YW55PjtcclxuICAgIGZvcm1QYW5lbEN0cmxyOiBhbnk7XHJcbiAgICBzYXZpbmc6IGJvb2xlYW47XHJcbiAgICBzYXZlZDogYm9vbGVhbjtcclxuICAgIHJld3JpdGVMYXlvdXQgPSB0cnVlO1xyXG4gICAgaGFzQ2FydGFibGVUZW1wbGF0ZSA9IGZhbHNlO1xyXG4gICAgY2FydGFibGVQYXJhbXM6IHtcclxuICAgICAgICBmb3JtU2V0dGluZzogRm9ybVNldHRpbmc7XHJcbiAgICAgICAgbW9JZDogc3RyaW5nO1xyXG4gICAgICAgIHR5cGVEZWZJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gICAgICAgIHZpZXdJZDogYW55O1xyXG4gICAgICAgIGluRGlhbG9nOiBib29sZWFuO1xyXG4gICAgICAgIGxvYWRBY3Rpdml0eVZpZXc6IGJvb2xlYW47XHJcbiAgICB9O1xyXG4gICAgd29ya2Zsb3dTdGF0ZTogV3JpdGFibGVTaWduYWw8eyBlcnJvcjogYW55OyBzdGF0ZTogJ1BlbmRpbmcnIHwgJ0ZpbmlzaCcgfCAnJyB9IHwgbnVsbD4gPSBzaWduYWwobnVsbCk7XHJcbiAgICBicnVsZUFjdGlvbk1lc3NhZ2U6IFdyaXRhYmxlU2lnbmFsPEJydWxlQWN0aW9uTWVzc2FnZSB8IG51bGw+ID0gc2lnbmFsKG51bGwpO1xyXG4gICAgcHJpdmF0ZSBfc2F2ZUVkaXRlZE1vJCA9IG5ldyBTdWJqZWN0PFJlYXNvblRvU2F2ZT4oKTtcclxuICAgIHByaXZhdGUgX2Zvcm1wYW5lbFZhbHVlQ2hhbmdlZCQgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XHJcbiAgICBwcml2YXRlIF9mb3JtUGFuZWxMb2FkZWQ6IGJvb2xlYW47XHJcbiAgICBwcml2YXRlIF9jYXJ0YWJsZU1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsO1xyXG4gICAgcHJpdmF0ZSBfY2FydGFibGVUZW1wbGF0ZTogRm9ybVNldHRpbmc7XHJcbiAgICBwcml2YXRlIF9jYXJ0YWJsZVdvcmtmbG93RGF0YTogc3RyaW5nO1xyXG4gICAgcHJpdmF0ZSBfc2VyaWFsaXplZFJlbGF0ZWRNbzogc3RyaW5nO1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJvdGVjdGVkIF9lbDogRWxlbWVudFJlZixcclxuICAgICAgICBwcm90ZWN0ZWQgX2RvbVNhbml0aXplcjogRG9tU2FuaXRpemVyLFxyXG4gICAgICAgIHByb3RlY3RlZCBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgICAgICBwcm90ZWN0ZWQgX3JlcG9ydFZhbHVlUGlwZTogTW9SZXBvcnRWYWx1ZVBpcGUsXHJcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgcHJvdGVjdGVkIF9wYXJlbnRGb3JtUGFuZWxTZXJ2aWNlOiBGb3JtUGFuZWxTZXJ2aWNlLFxyXG4gICAgICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgcHJvdGVjdGVkIF9mb3JtUGFuZWxTZXJ2aWNlOiBGb3JtUGFuZWxTZXJ2aWNlLFxyXG4gICAgICAgIEBPcHRpb25hbCgpIHByb3RlY3RlZCBfdWx2TWFpblNlcnZpY2U6IFVsdk1haW5TZXJ2aWNlXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIHRoaXMuX3NhdmVFZGl0ZWRNbyRcclxuICAgICAgICAgICAgLmFzT2JzZXJ2YWJsZSgpXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpLFxyXG4gICAgICAgICAgICAgICAgZGVib3VuY2VUaW1lKDUwMCksXHJcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKHJlYXNvbjogUmVhc29uVG9TYXZlKSA9PiB0aGlzLl9pbmxpbmVFZGl0U2F2ZUZvcm1QYW5lbChyZWFzb24pKSxcclxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4gdGhyb3dFcnJvcigoKSA9PiBlcnIpKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlczogeyByZWFzb246IFJlYXNvblRvU2F2ZTsgc3VjY2VlZDogYm9vbGVhbjsgc2F2ZWQ6IGJvb2xlYW4gfSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlcy5zYXZlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW8uJElzQ2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2Zvcm1wYW5lbFZhbHVlQ2hhbmdlZCQubmV4dCgnJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHJlcy5yZWFzb24gPT09ICdUQUInIHx8IHJlcy5yZWFzb24gPT09ICdDVFJMK0VOVEVSJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0TmV4dElubGluZVJlY29yZC5lbWl0KHRoaXMubW8pO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXMucmVhc29uID09PSAnRVNDJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWRpdEZvcm1QYW5lbENhbmNlbC5lbWl0KHRoaXMubW8pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLl9mb3JtcGFuZWxWYWx1ZUNoYW5nZWQkXHJcbiAgICAgICAgICAgIC5hc09ic2VydmFibGUoKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSxcclxuICAgICAgICAgICAgICAgIC8vIHN3aXRjaE1hcCgoKSA9PiB0aGlzLl9zeW5jTW8oKSksXHJcbiAgICAgICAgICAgICAgICB0YXAoKGMpID0+IHRoaXMuX3N5bmNNbygpKSxcclxuICAgICAgICAgICAgICAgIHRhcCgoYykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5tby4kSW5saW5lTW9DaGFuZ2VkID09PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1vLiRJbmxpbmVNb0NoYW5nZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgoYykgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lZGl0Rm9ybVBhbmVsVmFsdWVDaGFuZ2UuZW1pdCh7IG1vOiB0aGlzLm1vLCBmaWVsZERiTmFtZTogYyB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBwcml2YXRlIGdldCBfaGFzRm9ybVBhbmVsU2VydmljZSgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZm9ybVBhbmVsU2VydmljZSAhPT0gbnVsbCAmJiB0aGlzLmZvcm1TZXR0aW5nO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9oYXNGb3JtUGFuZWxTZXJ2aWNlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2Zvcm1QYW5lbFNlcnZpY2UuY29udGV4dCQucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgICB0aGlzLl9mb3JtUGFuZWxTZXJ2aWNlLnZpZXckLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKTtcclxuICAgICAgICAgICAgdGhpcy5sYXlvdXQkID0gdGhpcy5fZm9ybVBhbmVsU2VydmljZS5sYXlvdXQkO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5pbmxpbmVFZGl0V2l0aG91dFNlbGVjdGlvbikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fbG9hZEFuZENyZWF0ZUZvcm1QYW5lbEN0cmxyKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIubmdPbkNoYW5nZXMoY2hhbmdlcyk7XHJcbiAgICAgICAgY29uc3QgeyBpc0NoZWNrZWQsIGlubGluZUVkaXRNb2RlIH0gPSBjaGFuZ2VzO1xyXG4gICAgICAgIGxldCBuZWVkVG9Mb2FkRm9ybSA9IGZhbHNlO1xyXG4gICAgICAgIGlmICh0aGlzLmlubGluZUVkaXRNb2RlKSB7XHJcbiAgICAgICAgICAgIGlmIChpc0NoZWNrZWQpIHtcclxuICAgICAgICAgICAgICAgIGlmICghaXNDaGVja2VkLmN1cnJlbnRWYWx1ZSAmJiBpc0NoZWNrZWQucHJldmlvdXNWYWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9uZWVkVG9TYXZlKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2F2ZUVkaXRlZE1vJC5uZXh0KCdDSEVDS19DSEFOR0VEJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpc0NoZWNrZWQuY3VycmVudFZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmVlZFRvTG9hZEZvcm0gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpc0NoZWNrZWQgJiYgIWlzQ2hlY2tlZC5maXJzdENoYW5nZSkge1xyXG4gICAgICAgICAgICB0aGlzLl9yYWlzZVdvcmtmbG93U2hhcmVCdXR0b25zKGlzQ2hlY2tlZC5jdXJyZW50VmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaW5saW5lRWRpdE1vZGU/LmN1cnJlbnRWYWx1ZSAmJiAhaW5saW5lRWRpdE1vZGU/LnByZXZpb3VzVmFsdWUgJiYgdGhpcy5pc0NoZWNrZWQpIHtcclxuICAgICAgICAgICAgbmVlZFRvTG9hZEZvcm0gPSB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoIWlubGluZUVkaXRNb2RlPy5jdXJyZW50VmFsdWUgJiYgaW5saW5lRWRpdE1vZGU/LnByZXZpb3VzVmFsdWUgJiYgdGhpcy5pc0NoZWNrZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5fc2F2ZUVkaXRlZE1vJC5uZXh0KCdFU0MnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG5lZWRUb0xvYWRGb3JtICYmICF0aGlzLmlubGluZUVkaXRXaXRob3V0U2VsZWN0aW9uKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2xvYWRBbmRDcmVhdGVGb3JtUGFuZWxDdHJscigpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY2hhbmdlcy5tbyAmJiAhY2hhbmdlcy5tby5maXJzdENoYW5nZSAmJiB0aGlzLmlubGluZUVkaXRNb2RlKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9mb3JtUGFuZWxMb2FkZWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZm9ybVBhbmVsQ3RybHIuU2V0VmFsdWUoY2hhbmdlcy5tby5jdXJyZW50VmFsdWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGlmIChtbyAmJiAhbW8uZmlyc3RDaGFuZ2UgJiYgdGhpcy5faGFzRm9ybVBhbmVsU2VydmljZSAmJiB0aGlzLmlzQ2hlY2tlZCAmJiB0aGlzLmlubGluZUVkaXRNb2RlKSB7XHJcbiAgICAgICAgLy8gICAgIC8vdGhpcy5mb3JtUGFuZWxDdHJsci5TZXRWYWx1ZShjaGFuZ2VzLm1vLmN1cnJlbnRWYWx1ZSk7XHJcbiAgICAgICAgLy8gfVxyXG4gICAgfVxyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcclxuICAgICAgICBpZiAodGhpcy5mb3JtUGFuZWxDdHJscikge1xyXG4gICAgICAgICAgICB0aGlzLmZvcm1QYW5lbEN0cmxyLnVuKCdicnVsZVNob3dNZXNzYWdlQWN0aW9uJywgdGhpcy5faGFuZGxlQnJ1bGVTaG93TWVzc2FnZUFjdGlvbik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgT25DYXJ0YWJsZUZvcm1DbGljayhlKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNDaGVja2VkKSB7XHJcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb25Sb3dDaGVjayhvbmx5Q2hlY2s/OiBib29sZWFuKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fcm93Q2hlY2sob25seUNoZWNrKTtcclxuICAgIH1cclxuICAgIG9uUm93Q2xpY2soKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5yb3dDbGljay5lbWl0KHsgbW86IHRoaXMubW8sIGluZGV4OiB0aGlzLmluZGV4IH0pO1xyXG4gICAgfVxyXG4gICAgb25Db2x1bW5DaGFuZ2VUb0VkaXRNb2RlKGVsRG9tOiBIVE1MRWxlbWVudCwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGZvY3VzYWJsZXMgPSBlbERvbS5xdWVyeVNlbGVjdG9yQWxsKGdldEZvY3VzYWJsZVRhZ05hbWVzKCkpO1xyXG4gICAgICAgIHRoaXMuX2xhc3RFZGl0YWJsZUNvbHVtbkluZGV4ID0gaW5kZXg7XHJcbiAgICAgICAgaWYgKCFmb2N1c2FibGVzLmxlbmd0aCB8fCB0aGlzLl9mb2N1c1RvRmlyc3RFaWR0YWJsZUNvbHVtbikge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX2ZvY3VzVG9GaXJzdEVpZHRhYmxlQ29sdW1uID0gdHJ1ZTtcclxuICAgICAgICBjb25zdCBsYXN0Rm9jdXNhYmxlID0gZm9jdXNhYmxlc1swXTtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgKGxhc3RGb2N1c2FibGUgYXMgSFRNTEVsZW1lbnQpPy5mb2N1cygpO1xyXG4gICAgICAgIH0sIDApO1xyXG4gICAgfVxyXG4gICAgb25UYWJLZXlEb3duKGUsIGluZGV4KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKGluZGV4ID09PSB0aGlzLl9sYXN0RWRpdGFibGVDb2x1bW5JbmRleCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5pbmRleCA9PT0gdGhpcy5tb0RhdGFMaXN0Lmxlbmd0aCAtIDEpIHtcclxuICAgICAgICAgICAgICAgIFByZXZlbnREZWZhdWxFdmVudChlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLl9zYXZlRWRpdGVkTW8kLm5leHQoJ1RBQicpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIG9uRWRpdEZvcm1QYW5lbFNhdmUoZSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3NhdmVFZGl0ZWRNbyQubmV4dCgnQ1RSTCtFTlRFUicpO1xyXG4gICAgfVxyXG4gICAgb25FZGl0Rm9ybVBhbmVsQ2FuY2VsKGUpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmVzY2FwZUtleS5lbWl0KHRoaXMubW8pO1xyXG4gICAgfVxyXG4gICAgb25VbHZDb21tYW5kKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudWx2Q29tbWFuZC5lbWl0KHsgbW86IHRoaXMubW8sIGluZGV4OiB0aGlzLmluZGV4IH0pO1xyXG4gICAgfVxyXG4gICAgb25BY3Rpb24oY29tbWFuZEJvZHk6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuYWN0aW9uLmVtaXQoY29tbWFuZEJvZHkpO1xyXG4gICAgfVxyXG4gICAgb25FeHBhbmRDbGljaygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmV4cGFuZENsaWNrLmVtaXQodGhpcy5tbyk7XHJcbiAgICB9XHJcbiAgICBvbkR5bmFtaWNDb21wb25lbnRFdmVudHMoZTogeyB0aXRsZTogc3RyaW5nOyBkYXRhPzogYW55IH0pOiB2b2lkIHtcclxuICAgICAgICBzd2l0Y2ggKGUudGl0bGUpIHtcclxuICAgICAgICAgICAgY2FzZSAncm93Q2hlY2snOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5vblJvd0NoZWNrKCk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAncm93Q2xpY2snOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5vblJvd0NsaWNrKCk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAndWx2Q29tbWFuZCc6XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uVWx2Q29tbWFuZCgpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9uQ2FydGFibGVGb3JtQ2xvc2VkKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuY2FydGFibGVGb3JtQ2xvc2VkLmVtaXQoeyBtbzogdGhpcy5tbywgaW5kZXg6IHRoaXMuaW5kZXggfSk7XHJcbiAgICB9XHJcblxyXG4gICAgb25DYXJ0YWJsZUJydWxlQWN0aW9uKGJydWxlQWN0aW9uOiBCcnVsZUFjdGlvbk1lc3NhZ2UpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9oYW5kbGVCcnVsZVNob3dNZXNzYWdlQWN0aW9uKGJydWxlQWN0aW9uKTtcclxuICAgIH1cclxuICAgIG9uQ2FydGFibGVBZnRlclRhbnNpdGlvbihlKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy53b3JrZmxvd1N0YXRlLnNldCh7XHJcbiAgICAgICAgICAgIGVycm9yOiB0aGlzLmJydWxlQWN0aW9uTWVzc2FnZSgpID8gdGhpcy5icnVsZUFjdGlvbk1lc3NhZ2UoKSA6IGUuZXJyb3IsXHJcbiAgICAgICAgICAgIHN0YXRlOiAnRmluaXNoJ1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgb25DYXJ0YWJsZUJlZm9yZVRhbnNpdGlvbigpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLndvcmtmbG93U3RhdGUuc2V0KHsgc3RhdGU6ICdQZW5kaW5nJywgZXJyb3I6IG51bGwgfSk7XHJcbiAgICB9XHJcbiAgICBvblJlc2V0V29ya2Zsb3dTdGF0ZSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9oYW5kbGVSZXNldFdvcmtmbG93U3RhdGUoKTtcclxuICAgIH1cclxuICAgIF90cmFja0J5Q29sdW1uKGluZGV4OiBudW1iZXIsIGNvbHVtbjogUmVwb3J0Vmlld0NvbHVtbik6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIGAke2NvbHVtbi5OYW1lfSR7aW5kZXh9YDtcclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfaGFuZGxlUmVzZXRXb3JrZmxvd1N0YXRlKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3Jlc2V0QnJ1bGVBY3Rpb25NZXNzYWdlKCk7XHJcbiAgICAgICAgdGhpcy53b3JrZmxvd1N0YXRlLnNldCh7IHN0YXRlOiAnJywgZXJyb3I6IG51bGwgfSk7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX3Jlc2V0QnJ1bGVBY3Rpb25NZXNzYWdlKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuYnJ1bGVBY3Rpb25NZXNzYWdlLnNldChudWxsKTtcclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfdXBkYXRlQ2FydGFibGVNbyhzZXJpYWxpemVNbzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHNlcmlhbGl6ZU1vICYmIHRoaXMuX2NhcnRhYmxlTW8pIHtcclxuICAgICAgICAgICAgc2VyaWFsaXplTW8gPSBgJHtzZXJpYWxpemVNb31gO1xyXG4gICAgICAgICAgICBjb25zdCBtbyA9IEJhcnNhQXBpLkV4dC5kZWNvZGUoc2VyaWFsaXplTW8pO1xyXG4gICAgICAgICAgICB0aGlzLl9jYXJ0YWJsZU1vID0geyAuLi50aGlzLl9jYXJ0YWJsZU1vLCAuLi5tbyB9O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfY3JlYXRlQ2FydGFibGVQYXJhbXMoKTogdm9pZCB7XHJcbiAgICAgICAgbGV0IGNhcnRhYmxlVGVtcGxhdGUgPSB0aGlzLl9jYXJ0YWJsZVRlbXBsYXRlO1xyXG4gICAgICAgIGNvbnN0IGNhcnRhYmxlTW8gPSB0aGlzLl9jYXJ0YWJsZU1vO1xyXG4gICAgICAgIGNvbnN0IGNhcnRhYmxlV29ya2Zsb3dEYXRhID0gdGhpcy5fY2FydGFibGVXb3JrZmxvd0RhdGE7XHJcbiAgICAgICAgaWYgKHRoaXMuaGFzQ2FydGFibGVUZW1wbGF0ZSkge1xyXG4gICAgICAgICAgICAvLyBUT0RPIHVwZGF0ZSBjYXJ0YWJsZSBtbztcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIGNhcnRhYmxlVGVtcGxhdGUgJiZcclxuICAgICAgICAgICAgY2FydGFibGVNbyAmJlxyXG4gICAgICAgICAgICB0eXBlb2YgY2FydGFibGVXb3JrZmxvd0RhdGEgIT09ICd1bmRlZmluZWQnICYmXHJcbiAgICAgICAgICAgIHRoaXMuX3NlcmlhbGl6ZWRSZWxhdGVkTW9cclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgY2FydGFibGVUZW1wbGF0ZSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoY2FydGFibGVUZW1wbGF0ZSkpO1xyXG4gICAgICAgICAgICBjb25zdCB2aWV3ID0gY2FydGFibGVUZW1wbGF0ZS5WaWV3O1xyXG4gICAgICAgICAgICBjYXJ0YWJsZVRlbXBsYXRlLkRhdGEgPSB7IE1vOiB7IC4uLmNhcnRhYmxlTW8gfSB9O1xyXG4gICAgICAgICAgICBjYXJ0YWJsZVRlbXBsYXRlLldvcmtmbG93ID0gY2FydGFibGVXb3JrZmxvd0RhdGEgPT09ICcnID8gbnVsbCA6IEpTT04ucGFyc2UoY2FydGFibGVXb3JrZmxvd0RhdGEpO1xyXG4gICAgICAgICAgICBpZiAoIXZpZXcuRXh0cmFKc29uUHJvcCkge1xyXG4gICAgICAgICAgICAgICAgdmlldy5FeHRyYUpzb25Qcm9wID0ge307XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdmlldy5FeHRyYUpzb25Qcm9wLklzU2ltcGxlID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuY2FydGFibGVQYXJhbXMgPSB7XHJcbiAgICAgICAgICAgICAgICBmb3JtU2V0dGluZzogY2FydGFibGVUZW1wbGF0ZSxcclxuICAgICAgICAgICAgICAgIG1vSWQ6IGNhcnRhYmxlTW8uSWQsXHJcbiAgICAgICAgICAgICAgICB0eXBlRGVmSWQ6IGNhcnRhYmxlTW8uJFR5cGVEZWZJZCxcclxuICAgICAgICAgICAgICAgIHZpZXdJZDogdmlldy5UeXBlVmlld0lkLFxyXG4gICAgICAgICAgICAgICAgaW5EaWFsb2c6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgbG9hZEFjdGl2aXR5VmlldzogdHJ1ZVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB0aGlzLmhhc0NhcnRhYmxlVGVtcGxhdGUgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcHJvdGVjdGVkIF9uZWVkVG9TYXZlKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIC8vIGlmICghdGhpcy5pc0NoZWNrZWQpIHtcclxuICAgICAgICAvLyAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIC8vIH1cclxuICAgICAgICAvLyBjb25zdCBpc0NoaWxkTm9kZSA9ICh0aGlzLl9lbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5jb250YWlucyhlLnRhcmdldCk7XHJcbiAgICAgICAgLy8gaWYgKGlzQ2hpbGROb2RlKSB7XHJcbiAgICAgICAgLy8gICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgY29uc3QgdCA9IHRoaXMuaW5saW5lRWRpdE1vZGUgJiYgdGhpcy5faGFzRm9ybVBhbmVsU2VydmljZTtcclxuICAgICAgICBpZiAoIXQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybVBhbmVsQ3RybHIgJiYgdGhpcy5mb3JtUGFuZWxDdHJsci5Jc01vQ2hhbmdlZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfY2hlY2tmb2N1c091dEZyb21Sb3codGFyZ2V0KTogdm9pZCB7XHJcbiAgICAgICAgLy8gY29uc3QgZm9jdXNhYmxlOiBOb2RlTGlzdCA9IHRoaXMuX2ZvY3VzYWJsZUNvbnRyb2xzO1xyXG4gICAgICAgIC8vIGxldCBmb3VuZEluRm9jdXNhYmxlID0gZmFsc2U7XHJcbiAgICAgICAgLy8gZm9jdXNhYmxlLmZvckVhY2goKGMpID0+IHtcclxuICAgICAgICAvLyAgICAgaWYgKGMgPT09IHRhcmdldCkge1xyXG4gICAgICAgIC8vICAgICAgICAgZm91bmRJbkZvY3VzYWJsZSA9IHRydWU7XHJcbiAgICAgICAgLy8gICAgIH1cclxuICAgICAgICAvLyB9KTtcclxuICAgICAgICAvLyBpZiAoIWZvdW5kSW5Gb2N1c2FibGUpIHtcclxuICAgICAgICAvLyAgICAgdGhpcy5fc2F2ZUVkaXRlZE1vJC5uZXh0KCdUQUInKTtcclxuICAgICAgICAvLyB9XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX3Jvd0NoZWNrKG9ubHlDaGVjaz86IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnJvd0NoZWNrLmVtaXQoeyBtbzogdGhpcy5tbywgaW5kZXg6IHRoaXMuaW5kZXgsIG9ubHlDaGVjayB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgX3JhaXNlV29ya2Zsb3dTaGFyZUJ1dHRvbnMoaXNDaGVja2VkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuY2FydGFibGVQYXJhbXMpIHtcclxuICAgICAgICAgICAgY29uc3QgY2hvaWNlTGlzdDogQ2hvaWNlRGVmW10gPSB0aGlzLmNhcnRhYmxlUGFyYW1zLmZvcm1TZXR0aW5nPy5Xb3JrZmxvdz8uQ2hvaWNlTGlzdDtcclxuICAgICAgICAgICAgaWYgKGNob2ljZUxpc3Q/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy53b3JrZmxvd1NoYXJlQnV0dG9ucy5lbWl0KHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybVBhbmVsQ3RybHI6IHRoaXMuX2NhcnRhYmxlRm9ybVJlZi5mb3JtUGFuZWxDdHJsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtbzogdGhpcy5tbyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2hvaWNlTGlzdCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkOiBpc0NoZWNrZWRcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfaGFuZGxlVmFsdWVDaGFuZ2UoZm9ybVBhbmVsQ3RybCwgZmllbGRDdHJscik6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy5pc0NoZWNrZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5vblJvd0NoZWNrKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX2Zvcm1wYW5lbFZhbHVlQ2hhbmdlZCQubmV4dChmaWVsZEN0cmxyPy5TZXR0aW5nPy5Db250cm9sTmFtZSk7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX3N5bmNNbygpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcclxuICAgICAgICBjb25zdCBzeW5jV2l0aEZvcm1wYW5lbE1vID0gdGhpcy5tbztcclxuICAgICAgICBjb25zdCBfaXNDaGVja2VkID0gdGhpcy5tby4kSXNDaGVja2VkO1xyXG4gICAgICAgIGNvbnN0IGZvcm1QYW5lbEN0cmxyTW8gPSB0aGlzLmZvcm1QYW5lbEN0cmxyLk1vO1xyXG4gICAgICAgIHRoaXMuX3VwZGF0ZVdpdGhPcmlnaW5hbFZhbHVlcyhmb3JtUGFuZWxDdHJsck1vLCBzeW5jV2l0aEZvcm1wYW5lbE1vKTtcclxuICAgICAgICBzeW5jV2l0aEZvcm1wYW5lbE1vWyckT3JpZ2luYWxWYWx1ZXMnXSA9IGZvcm1QYW5lbEN0cmxyTW9bJyRPcmlnaW5hbFZhbHVlcyddO1xyXG4gICAgICAgIHN5bmNXaXRoRm9ybXBhbmVsTW9bJyRGaWVsZERpY3QnXSA9IGZvcm1QYW5lbEN0cmxyTW9bJyRGaWVsZERpY3QnXTtcclxuICAgICAgICBzeW5jV2l0aEZvcm1wYW5lbE1vWyckU3RhdGUnXSA9IGZvcm1QYW5lbEN0cmxyTW9bJyRTdGF0ZSddOyAvLyB0aGlzIGFkZCBiZWNhdXNlIGlmIHdlIGVkaXQgdW5jaGFuZ2VkIG1vIGl0IGRvZXMgbm90IHJlZmxlY3QgdG8gbW8gb2YgdWx2LlxyXG4gICAgICAgIHRoaXMubW8gPSB7IC4uLnN5bmNXaXRoRm9ybXBhbmVsTW8gfTtcclxuICAgICAgICB0aGlzLm1vLiRJc0NoZWNrZWQgPSBfaXNDaGVja2VkO1xyXG4gICAgICAgIHJldHVybiBmcm9tKFByb21pc2UucmVzb2x2ZSgpKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgX3VwZGF0ZVdpdGhPcmlnaW5hbFZhbHVlcyhzb3VyY2U6IE1ldGFvYmplY3REYXRhTW9kZWwsIGRlc3Q6IE1ldGFvYmplY3REYXRhTW9kZWwpOiB2b2lkIHtcclxuICAgICAgICBPYmplY3Qua2V5cyhzb3VyY2UuJE9yaWdpbmFsVmFsdWVzKS5mb3JFYWNoKChjOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgZGVzdFtjXSA9IHNvdXJjZVtjXTtcclxuICAgICAgICAgICAgaWYgKHNvdXJjZVtjICsgJyRDYXB0aW9uJ10pIHtcclxuICAgICAgICAgICAgICAgIGRlc3RbYyArICckQ2FwdGlvbiddID0gc291cmNlW2MgKyAnJENhcHRpb24nXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoc291cmNlW2MgKyAnJEljb24nXSkge1xyXG4gICAgICAgICAgICAgICAgZGVzdFtjICsgJyRJY29uJ10gPSBzb3VyY2VbYyArICckSWNvbiddO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIF9yYWlzZUZvcm1QYW5lbFZhbHVlQ2hhbmdlZCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmVkaXRGb3JtUGFuZWxWYWx1ZUNoYW5nZS5lbWl0KHsgbW86IHRoaXMubW8gfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIF9oYW5kbGVCcnVsZVNob3dNZXNzYWdlQWN0aW9uKGFjdGlvbjogQnJ1bGVBY3Rpb25NZXNzYWdlKTogdm9pZCB7XHJcbiAgICAgICAgYWN0aW9uLk1lc3NhZ2VFeHByZXNzaW9uSHRtbCA9IHRoaXMuX2RvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChhY3Rpb24uTWVzc2FnZUV4cHJlc3Npb24pO1xyXG4gICAgICAgIHRoaXMuYnJ1bGVBY3Rpb25NZXNzYWdlLnNldChhY3Rpb24pO1xyXG4gICAgfVxyXG4gICAgcHJvdGVjdGVkIF9jcmVhdGVGb3JtUGFuZWxDdHJscihtbzogTWV0YW9iamVjdERhdGFNb2RlbCwgdHlwZURlZklkOiBzdHJpbmcpOiBhbnkge1xyXG4gICAgICAgIGlmICghdGhpcy5mb3JtUGFuZWxDdHJscikge1xyXG4gICAgICAgICAgICB0aGlzLmZvcm1QYW5lbEN0cmxyID0gY3JlYXRlR3JpZEVkaXRvckZvcm1QYW5lbChcclxuICAgICAgICAgICAgICAgIHRoaXMuZm9ybVNldHRpbmcsXHJcbiAgICAgICAgICAgICAgICB7IC4uLm1vIH0sXHJcbiAgICAgICAgICAgICAgICB0eXBlRGVmSWQsXHJcbiAgICAgICAgICAgICAgICB0aGlzLmV4dHJhUmVsYXRpb24sXHJcbiAgICAgICAgICAgICAgICB0aGlzLnJld3JpdGVMYXlvdXQsXHJcbiAgICAgICAgICAgICAgICB0aGlzLlVsdk1haW5DdHJsclxyXG4gICAgICAgICAgICAgICAgLy8gQmFyc2FBcGkuQ29tbW9uLlV0aWwuVHJ5R2V0VmFsdWUodGhpcy5jb250ZXh0LlNldHRpbmcsICdFeHRyYS5SZWxhdGlvbicpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZm9ybVBhbmVsQ3RybHIuSW5saW5lRWRpdEluUmVwb3J0ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmZvcm1QYW5lbEN0cmxyLm9uKHtcclxuICAgICAgICAgICAgYnJ1bGVTaG93TWVzc2FnZUFjdGlvbjogdGhpcy5faGFuZGxlQnJ1bGVTaG93TWVzc2FnZUFjdGlvbi5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICB2YWx1ZUNoYW5nZTogdGhpcy5faGFuZGxlVmFsdWVDaGFuZ2UuYmluZCh0aGlzKVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtUGFuZWxDdHJscjtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgX2xvYWRBbmRDcmVhdGVGb3JtUGFuZWxDdHJscigpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBmb3JtU2V0dGluZ0RhdGEgPSB0aGlzLmZvcm1TZXR0aW5nLkRhdGE7XHJcbiAgICAgICAgY29uc3QgZm9ybU1vID0ge1xyXG4gICAgICAgICAgICAuLi50aGlzLm1vLFxyXG4gICAgICAgICAgICAkRmllbGREaWN0OiBmb3JtU2V0dGluZ0RhdGEuTW8uJEZpZWxkRGljdCxcclxuICAgICAgICAgICAgJFR5cGVEZWZJZDogZm9ybVNldHRpbmdEYXRhLk1vLiRUeXBlRGVmSWQsXHJcbiAgICAgICAgICAgICRPcmlnaW5hbFZhbHVlczogdGhpcy5leHRyYVJlbGF0aW9uLlJlbGF0aW9uVHlwZSA9PT0gJ0NvbXBvc2l0aW9uJyA/IHRoaXMubW8uJE9yaWdpbmFsVmFsdWVzIDoge31cclxuICAgICAgICB9O1xyXG4gICAgICAgIGlmICh0aGlzLl9mb3JtUGFuZWxMb2FkZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5mb3JtUGFuZWxDdHJsci5TZXRWYWx1ZShmb3JtTW8pO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLl9jcmVhdGVGb3JtUGFuZWxDdHJscihmb3JtTW8sIHRoaXMudHlwZURlZklkKTtcclxuICAgICAgICB0aGlzLl9mb3JtUGFuZWxMb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgIGNvbnN0IGZvcm1QYW5lbEN0cmxyID0gdGhpcy5mb3JtUGFuZWxDdHJscjtcclxuICAgICAgICB0aGlzLmZvcm1QYW5lbEN0cmxyLlVsdk1vRGF0YUxpc3RDb3VudCA9IHRoaXMubW9EYXRhTGlzdENvdW50IC0gMTtcclxuICAgICAgICBmb3JtUGFuZWxDdHJsci5Mb2FkQW5kQ3JlYXRlKG51bGwsIGZhbHNlLCBmYWxzZSwgKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBjdXN0b21Gb3JtUGFuZWxVaSA9IGZvcm1QYW5lbEN0cmxyLkFkYXB0ZXIuQ29udHJvbDtcclxuICAgICAgICAgICAgY29uc3QgcGFyZW50TW8gPSB0aGlzLl9wYXJlbnRGb3JtUGFuZWxTZXJ2aWNlID8gdGhpcy5fcGFyZW50Rm9ybVBhbmVsU2VydmljZS5tbyA6IG51bGw7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmV4dHJhUmVsYXRpb24gJiYgcGFyZW50TW8gJiYgdGhpcy5leHRyYVJlbGF0aW9uLlJlbGF0aW9uVHlwZSA9PT0gJ0NvbXBvc2l0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgZm9ybVBhbmVsQ3RybHIuTW8uU2V0RlZhbHVlKHRoaXMuZXh0cmFSZWxhdGlvbi5QYXJlbnRGZE5hbWUsIHBhcmVudE1vKTtcclxuICAgICAgICAgICAgICAgIC8vIG5ld0Zvcm1TZXR0aW5ncy5EYXRhLk1vW3JlbGF0aW9uLlBhcmVudEZkTmFtZV0gPSBwYXJlbnRNby5HZXRDaGFuZ2VkT2JqZWN0KCk7XHJcbiAgICAgICAgICAgICAgICAvLyBuZXdGb3JtU2V0dGluZ3MuRGF0YS5Nb1tyZWxhdGlvbi5QYXJlbnRGZE5hbWVdLiRTdGF0ZSA9IHBhcmVudE1vLiRTdGF0ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjdXN0b21Gb3JtUGFuZWxVaS5SZWZyZXNoID0gKCkgPT4ge307XHJcbiAgICAgICAgICAgIHRoaXMuX2Zvcm1QYW5lbFNlcnZpY2UuY29udGV4dCA9IGZvcm1QYW5lbEN0cmxyLkFkYXB0ZXIuQ29udHJvbDtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfcmVzZXRTYXZpbmdTdGF0ZXMoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5oYXNFcnJvciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuX3Jlc2V0QnJ1bGVBY3Rpb25NZXNzYWdlKCk7XHJcbiAgICAgICAgdGhpcy5zYXZlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfc2V0U2F2aW5nU3RhdGUoZXJyKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICB0aGlzLmhhc0Vycm9yID0gdHJ1ZTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmhhc0Vycm9yID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zYXZlZCA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX2lubGluZUVkaXRTYXZlRm9ybVBhbmVsKHJlYXNvbik6IFByb21pc2U8eyByZWFzb246IFJlYXNvblRvU2F2ZTsgc3VjY2VlZDogYm9vbGVhbjsgc2F2ZWQ6IGJvb2xlYW4gfT4ge1xyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8eyByZWFzb246IFJlYXNvblRvU2F2ZTsgc3VjY2VlZDogYm9vbGVhbjsgc2F2ZWQ6IGJvb2xlYW4gfT4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuZm9ybVBhbmVsQ3RybHIuSXNNb0NoYW5nZWQoKSAmJiB0aGlzLmZvcm1QYW5lbEN0cmxyLk1vLkdldFN0YXRlKCkgIT09ICdOZXcnKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBpZiBzdGF0ZSBvZiBtbyBpcyBuZXcgb3IgbW9kaWRmaWVkIHRoZW4gaXQgbmVlZHMgdG8gdXBkYXRlXHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKHsgcmVhc29uLCBzdWNjZWVkOiB0cnVlLCBzYXZlZDogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgZm9ybVBhbmVsQ3RybHJNbyA9IHRoaXMuZm9ybVBhbmVsQ3RybHIuTW87XHJcbiAgICAgICAgICAgIGRlbGV0ZSBmb3JtUGFuZWxDdHJsck1vLmpzb247XHJcbiAgICAgICAgICAgIC8vIHRoaXMuc2F2aW5nID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMubW8uJElubGluZU1vQ2hhbmdlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmVkaXRGb3JtUGFuZWxTYXZlLmVtaXQodGhpcy5tbyk7XHJcbiAgICAgICAgICAgIHRoaXMuX3Jlc2V0QnJ1bGVBY3Rpb25NZXNzYWdlKCk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm5vU2F2ZUlubGluZUVkaXRJblNlcnZlcikge1xyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZSh7IHJlYXNvbiwgc3VjY2VlZDogdHJ1ZSwgc2F2ZWQ6IHRydWUgfSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5mb3JtUGFuZWxDdHJsci5TYXZlKGZhbHNlLCAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzLnNhdmluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIEJhcnNhQXBpLkNvbW1vbi5TaWxlbnRFeGNlcHRpb24pIHtcclxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHsgcmVhc29uOiAnTk9ORScsIHN1Y2NlZWQ6IHRydWUsIHNhdmVkOiB0cnVlIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuZm9ybVBhbmVsQ3RybHIuU2V0SXNDaGFuZ2VkKGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3NldFNhdmluZ1N0YXRlKGVycik7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKHsgcmVhc29uLCBzdWNjZWVkOiB0cnVlLCBzYXZlZDogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -11480,7 +11480,7 @@ class BaseViewItemPropsComponent extends BaseViewPropsComponent {
|
|
|
11480
11480
|
...this.mo,
|
|
11481
11481
|
$FieldDict: formSettingData.Mo.$FieldDict,
|
|
11482
11482
|
$TypeDefId: formSettingData.Mo.$TypeDefId,
|
|
11483
|
-
$OriginalValues: {}
|
|
11483
|
+
$OriginalValues: this.extraRelation.RelationType === 'Composition' ? this.mo.$OriginalValues : {}
|
|
11484
11484
|
};
|
|
11485
11485
|
if (this._formPanelLoaded) {
|
|
11486
11486
|
this.formPanelCtrlr.SetValue(formMo);
|