@snabcentr/client-ui 0.10.1 → 0.11.1
Sign up to get free protection for your applications and to get access to all the features.
- package/esm2020/catalog/price-card/sc-price-card.component.mjs +1 -4
- package/esm2020/contacts/contacts-accordion/sc-contacts-accordion.component.mjs +3 -3
- package/esm2020/contragents/contragents-accordion/contragents-accordion-item/sc-contragents-accordion-item.component.mjs +3 -3
- package/esm2020/contragents/contragents-accordion/sc-contragents-accordion.component.mjs +3 -3
- package/esm2020/delivery-address/delivery-address-accordion/sc-delivery-address-accordion.component.mjs +3 -3
- package/esm2020/profile/sc-profile-accordions-content/sc-profile-accordions-content.component.mjs +3 -3
- package/esm2020/user/index.mjs +2 -2
- package/esm2020/user/sc-user.module.mjs +6 -6
- package/esm2020/user/update-user-info-dialog/sc-update-user-info-dialog.component.mjs +105 -0
- package/fesm2015/snabcentr-client-ui.mjs +32 -28
- package/fesm2015/snabcentr-client-ui.mjs.map +1 -1
- package/fesm2020/snabcentr-client-ui.mjs +32 -28
- package/fesm2020/snabcentr-client-ui.mjs.map +1 -1
- package/package.json +1 -1
- package/user/index.d.ts +1 -1
- package/user/sc-user.module.d.ts +2 -2
- package/user/{update-user-info-form/sc-update-user-info-form.component.d.ts → update-user-info-dialog/sc-update-user-info-dialog.component.d.ts} +9 -6
- package/esm2020/user/update-user-info-form/sc-update-user-info-form.component.mjs +0 -97
package/esm2020/profile/sc-profile-accordions-content/sc-profile-accordions-content.component.mjs
CHANGED
@@ -90,13 +90,13 @@ export class ScProfileAccordionsContentComponent {
|
|
90
90
|
}
|
91
91
|
}
|
92
92
|
ScProfileAccordionsContentComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScProfileAccordionsContentComponent, deps: [{ token: SC_USER_INFO }, { token: i1.ScLocationsService }, { token: i1.ScUserService }, { token: i1.ScVerificationService }], target: i0.ɵɵFactoryTarget.Component });
|
93
|
-
ScProfileAccordionsContentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScProfileAccordionsContentComponent, selector: "sc-profile-accordions-content", outputs: { editProfileClick: "editProfileClick", approvePhoneClick: "approvePhoneClick", addContragentClick: "addContragentClick", addDeliveryAddressClick: "addDeliveryAddressClick" }, providers: [SC_USER_PROVIDERS], ngImport: i0, template: "<div class=\"flex flex-col gap-4\">\n <sc-accordion [showArrow]=\"false\" [showAddButton]=\"false\" [open]=\"true\">\n \u041E\u0431\u0449\u0438\u0435 \u0434\u0430\u043D\u043D\u044B\u0435\n <ng-template scAccordionContent>\n <tui-loader *tuiLet=\"user$ | async as user\" [overlay]=\"true\" [showLoader]=\"user === null\">\n <div class=\"flex gap-2 pl-4\">\n <div *ngIf=\"user\" class=\"flex flex-col flex-grow gap-2\">\n {{ user.name }}
|
93
|
+
ScProfileAccordionsContentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScProfileAccordionsContentComponent, selector: "sc-profile-accordions-content", outputs: { editProfileClick: "editProfileClick", approvePhoneClick: "approvePhoneClick", addContragentClick: "addContragentClick", addDeliveryAddressClick: "addDeliveryAddressClick" }, providers: [SC_USER_PROVIDERS], ngImport: i0, template: "<div class=\"flex flex-col gap-4\">\n <sc-accordion [showArrow]=\"false\" [showAddButton]=\"false\" [open]=\"true\">\n \u041E\u0431\u0449\u0438\u0435 \u0434\u0430\u043D\u043D\u044B\u0435\n <ng-template scAccordionContent>\n <tui-loader *tuiLet=\"user$ | async as user\" [overlay]=\"true\" [showLoader]=\"user === null\">\n <div class=\"flex gap-2 pl-4\">\n <div *ngIf=\"user\" class=\"flex flex-col flex-grow gap-2\">\n <span class=\"font-medium\">{{ user.name }}</span>\n <div *ngIf=\"user.city && (getUserCity$(user.city) | async) as city\" class=\"flex items-center gap-1\">\n <tui-svg src=\"tuiIconMapPin\"></tui-svg>\n <div class=\"flex flex-wrap\">\n <span>\u0433. {{ city.name }}, </span>\n <span *ngIf=\"city.region\">{{ city.region.name }}</span>\n </div>\n </div>\n <div class=\"flex flex-wrap gap-2\">\n <a\n tuiLink\n tuiMode=\"onLight\"\n icon=\"tuiIconPhone\"\n iconAlign=\"left\"\n [pseudo]=\"true\"\n href=\"tel:{{ user.contacts.phone.value}}\"\n >{{ user.contacts.phone.value | tuiFormatPhone }}</a\n >\n <span *ngIf=\"!user.contacts.phone.isApproved\" class=\"text-tui-text-03\">\n (\u0422\u0435\u043B\u0435\u0444\u043E\u043D \u043D\u0435 \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D. <button tuiLink [pseudo]=\"true\" (click)=\"approvePhoneClick.emit()\">\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044C</button>)\n </span>\n </div>\n <div *tuiLet=\"!!(isSendApproveEmail$ | async) as isSendApproveEmail\" class=\"flex flex-wrap gap-x-2\">\n <a tuiLink tuiMode=\"onLight\" icon=\"tuiIconMail\" iconAlign=\"left\" [pseudo]=\"true\" href=\"mailto:{{ user.contacts.email.value }}\">\n {{ user.contacts.email.value }}\n </a>\n <span *ngIf=\"!isSendApproveEmail && !user.contacts.email.isApproved\" class=\"text-tui-text-03 inline-flex flex-wrap gap-1\">\n E-mail \u043D\u0435 \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D.\n <tui-loader [showLoader]=\"!!(approveEmailLoading$ | async)\" [overlay]=\"true\">\n <button tuiLink [pseudo]=\"true\" (click)=\"onSendApproveEmail.next(user.contacts.email.value)\">\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044C</button>\n </tui-loader>\n </span>\n <span *ngIf=\"isSendApproveEmail\" class=\"text-tui-success-fill\" @tuiFadeIn>\n \u041F\u0438\u0441\u044C\u043C\u043E \u0434\u043B\u044F \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u044F \u0443\u0441\u043F\u0435\u0448\u043D\u043E \u043E\u0442\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u043E. \u041F\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u043F\u043E \u0441\u0441\u044B\u043B\u043A\u0435 \u0432 \u043F\u0438\u0441\u044C\u043C\u0435 \u0438 \u043E\u0431\u043D\u043E\u0432\u0438\u0442\u0435 \u044D\u0442\u0443 \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0443.\n </span>\n </div>\n <tui-loader [showLoader]=\"!!(getNewsLoading$ | async)\" [overlay]=\"true\">\n <tui-checkbox-labeled size=\"m\" class=\"w-full\" [formControl]=\"getNewsControl\" [ngModel]=\"user.getNews\">\n \u042F \u0445\u043E\u0447\u0443 \u043F\u043E\u043B\u0443\u0447\u0430\u0442\u044C \u0440\u0430\u0441\u0441\u044B\u043B\u043A\u0443 \u0421\u043D\u0430\u0431\u0446\u0435\u043D\u0442\u0440 \u043E \u0441\u043A\u0438\u0434\u043A\u0430\u0445 \u0438 \u043D\u043E\u0432\u043E\u0441\u0442\u044F\u0445 \u043F\u043E \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u0435.\n </tui-checkbox-labeled>\n </tui-loader>\n </div>\n\n <button tuiIconButton size=\"m\" type=\"button\" icon=\"tuiIconEdit3Large\" tuiMode=\"onLight\" appearance=\"flat\" (click)=\"editProfileClick.emit()\"></button>\n </div>\n </tui-loader>\n </ng-template>\n </sc-accordion>\n <sc-contragents-accordion (addContragentClick)=\"addContragentClick.emit()\"></sc-contragents-accordion>\n <sc-delivery-address-accordion (addDeliveryAddressClick)=\"addDeliveryAddressClick.emit()\"></sc-delivery-address-accordion>\n <sc-accordion [showArrow]=\"false\" [showAddButton]=\"false\">\n \u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u043F\u0430\u0440\u043E\u043B\u044C\n <ng-template scAccordionContent>\n <sc-reset-user-password></sc-reset-user-password>\n </ng-template>\n </sc-accordion>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.ScResetUserPasswordComponent, selector: "sc-reset-user-password" }, { kind: "component", type: i4.ScAccordionComponent, selector: "sc-accordion", inputs: ["showAddButton", "showDeleteButton", "showArrow", "open", "size"], outputs: ["addButtonClick", "deleteButtonClick"] }, { kind: "directive", type: i5.ScAccordionContentDirective, selector: "ng-template[scAccordionContent]" }, { kind: "component", type: i6.ScContragentsAccordionComponent, selector: "sc-contragents-accordion", outputs: ["addContragentClick", "editBankAccountsContragentClick", "addBankAccountsClick", "editContragentClick"] }, { kind: "component", type: i7.ScDeliveryAddressAccordionComponent, selector: "sc-delivery-address-accordion", outputs: ["addDeliveryAddressClick"] }, { kind: "component", type: i8.TuiLoaderComponent, selector: "tui-loader", inputs: ["size", "inheritColor", "overlay", "textContent", "showLoader"] }, { kind: "directive", type: i9.TuiLetDirective, selector: "[tuiLet]", inputs: ["tuiLet"] }, { kind: "component", type: i8.TuiLinkComponent, selector: "a[tuiLink], button[tuiLink]", inputs: ["pseudo", "icon", "iconAlign", "iconRotated", "mode"], exportAs: ["tuiLink"] }, { kind: "directive", type: i8.TuiModeDirective, selector: "[tuiMode]", inputs: ["tuiMode"] }, { kind: "component", type: i10.TuiCheckboxLabeledComponent, selector: "tui-checkbox-labeled", inputs: ["size"] }, { kind: "component", type: i8.TuiSvgComponent, selector: "tui-svg", inputs: ["src"] }, { kind: "directive", type: i11.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i11.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i8.TuiButtonComponent, selector: "button[tuiButton], button[tuiIconButton], a[tuiButton], a[tuiIconButton]", inputs: ["appearance", "disabled", "icon", "iconRight", "shape", "showLoader", "size"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i8.TuiFormatPhonePipe, name: "tuiFormatPhone" }], animations: [tuiFadeIn], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
94
94
|
__decorate([
|
95
95
|
tuiPure // TODO: TASK[#7615] Удалить поле рефакторинга сервиса работы с пользователем.
|
96
96
|
], ScProfileAccordionsContentComponent.prototype, "getUserCity$", null);
|
97
97
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScProfileAccordionsContentComponent, decorators: [{
|
98
98
|
type: Component,
|
99
|
-
args: [{ selector: 'sc-profile-accordions-content', providers: [SC_USER_PROVIDERS], animations: [tuiFadeIn], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-col gap-4\">\n <sc-accordion [showArrow]=\"false\" [showAddButton]=\"false\" [open]=\"true\">\n \u041E\u0431\u0449\u0438\u0435 \u0434\u0430\u043D\u043D\u044B\u0435\n <ng-template scAccordionContent>\n <tui-loader *tuiLet=\"user$ | async as user\" [overlay]=\"true\" [showLoader]=\"user === null\">\n <div class=\"flex gap-2 pl-4\">\n <div *ngIf=\"user\" class=\"flex flex-col flex-grow gap-2\">\n {{ user.name }}
|
99
|
+
args: [{ selector: 'sc-profile-accordions-content', providers: [SC_USER_PROVIDERS], animations: [tuiFadeIn], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-col gap-4\">\n <sc-accordion [showArrow]=\"false\" [showAddButton]=\"false\" [open]=\"true\">\n \u041E\u0431\u0449\u0438\u0435 \u0434\u0430\u043D\u043D\u044B\u0435\n <ng-template scAccordionContent>\n <tui-loader *tuiLet=\"user$ | async as user\" [overlay]=\"true\" [showLoader]=\"user === null\">\n <div class=\"flex gap-2 pl-4\">\n <div *ngIf=\"user\" class=\"flex flex-col flex-grow gap-2\">\n <span class=\"font-medium\">{{ user.name }}</span>\n <div *ngIf=\"user.city && (getUserCity$(user.city) | async) as city\" class=\"flex items-center gap-1\">\n <tui-svg src=\"tuiIconMapPin\"></tui-svg>\n <div class=\"flex flex-wrap\">\n <span>\u0433. {{ city.name }}, </span>\n <span *ngIf=\"city.region\">{{ city.region.name }}</span>\n </div>\n </div>\n <div class=\"flex flex-wrap gap-2\">\n <a\n tuiLink\n tuiMode=\"onLight\"\n icon=\"tuiIconPhone\"\n iconAlign=\"left\"\n [pseudo]=\"true\"\n href=\"tel:{{ user.contacts.phone.value}}\"\n >{{ user.contacts.phone.value | tuiFormatPhone }}</a\n >\n <span *ngIf=\"!user.contacts.phone.isApproved\" class=\"text-tui-text-03\">\n (\u0422\u0435\u043B\u0435\u0444\u043E\u043D \u043D\u0435 \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D. <button tuiLink [pseudo]=\"true\" (click)=\"approvePhoneClick.emit()\">\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044C</button>)\n </span>\n </div>\n <div *tuiLet=\"!!(isSendApproveEmail$ | async) as isSendApproveEmail\" class=\"flex flex-wrap gap-x-2\">\n <a tuiLink tuiMode=\"onLight\" icon=\"tuiIconMail\" iconAlign=\"left\" [pseudo]=\"true\" href=\"mailto:{{ user.contacts.email.value }}\">\n {{ user.contacts.email.value }}\n </a>\n <span *ngIf=\"!isSendApproveEmail && !user.contacts.email.isApproved\" class=\"text-tui-text-03 inline-flex flex-wrap gap-1\">\n E-mail \u043D\u0435 \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D.\n <tui-loader [showLoader]=\"!!(approveEmailLoading$ | async)\" [overlay]=\"true\">\n <button tuiLink [pseudo]=\"true\" (click)=\"onSendApproveEmail.next(user.contacts.email.value)\">\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044C</button>\n </tui-loader>\n </span>\n <span *ngIf=\"isSendApproveEmail\" class=\"text-tui-success-fill\" @tuiFadeIn>\n \u041F\u0438\u0441\u044C\u043C\u043E \u0434\u043B\u044F \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u044F \u0443\u0441\u043F\u0435\u0448\u043D\u043E \u043E\u0442\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u043E. \u041F\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u043F\u043E \u0441\u0441\u044B\u043B\u043A\u0435 \u0432 \u043F\u0438\u0441\u044C\u043C\u0435 \u0438 \u043E\u0431\u043D\u043E\u0432\u0438\u0442\u0435 \u044D\u0442\u0443 \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0443.\n </span>\n </div>\n <tui-loader [showLoader]=\"!!(getNewsLoading$ | async)\" [overlay]=\"true\">\n <tui-checkbox-labeled size=\"m\" class=\"w-full\" [formControl]=\"getNewsControl\" [ngModel]=\"user.getNews\">\n \u042F \u0445\u043E\u0447\u0443 \u043F\u043E\u043B\u0443\u0447\u0430\u0442\u044C \u0440\u0430\u0441\u0441\u044B\u043B\u043A\u0443 \u0421\u043D\u0430\u0431\u0446\u0435\u043D\u0442\u0440 \u043E \u0441\u043A\u0438\u0434\u043A\u0430\u0445 \u0438 \u043D\u043E\u0432\u043E\u0441\u0442\u044F\u0445 \u043F\u043E \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u0435.\n </tui-checkbox-labeled>\n </tui-loader>\n </div>\n\n <button tuiIconButton size=\"m\" type=\"button\" icon=\"tuiIconEdit3Large\" tuiMode=\"onLight\" appearance=\"flat\" (click)=\"editProfileClick.emit()\"></button>\n </div>\n </tui-loader>\n </ng-template>\n </sc-accordion>\n <sc-contragents-accordion (addContragentClick)=\"addContragentClick.emit()\"></sc-contragents-accordion>\n <sc-delivery-address-accordion (addDeliveryAddressClick)=\"addDeliveryAddressClick.emit()\"></sc-delivery-address-accordion>\n <sc-accordion [showArrow]=\"false\" [showAddButton]=\"false\">\n \u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u043F\u0430\u0440\u043E\u043B\u044C\n <ng-template scAccordionContent>\n <sc-reset-user-password></sc-reset-user-password>\n </ng-template>\n </sc-accordion>\n</div>\n" }]
|
100
100
|
}], ctorParameters: function () { return [{ type: i12.Observable, decorators: [{
|
101
101
|
type: Inject,
|
102
102
|
args: [SC_USER_INFO]
|
@@ -109,4 +109,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
109
109
|
}], addDeliveryAddressClick: [{
|
110
110
|
type: Output
|
111
111
|
}], getUserCity$: [] } });
|
112
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtcHJvZmlsZS1hY2NvcmRpb25zLWNvbnRlbnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL3Byb2ZpbGUvc2MtcHJvZmlsZS1hY2NvcmRpb25zLWNvbnRlbnQvc2MtcHJvZmlsZS1hY2NvcmRpb25zLWNvbnRlbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL3Byb2ZpbGUvc2MtcHJvZmlsZS1hY2NvcmRpb25zLWNvbnRlbnQvc2MtcHJvZmlsZS1hY2NvcmRpb25zLWNvbnRlbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFakcsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7OztBQUUzQzs7R0FFRztBQVFILE1BQU0sT0FBTyxtQ0FBbUM7SUErRTVDOzs7Ozs7O09BT0c7SUFDSCxZQUMwQyxLQUF5QixFQUM5QyxnQkFBb0MsRUFDcEMsV0FBMEIsRUFDMUIsbUJBQTBDO1FBSHJCLFVBQUssR0FBTCxLQUFL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QUFTLENBQUMsbUJBQ04sdUJBQXVCLENBQUMsTUFBTTs7MEJBMEYxQyxNQUFNOzJCQUFDLFlBQVk7NklBN0JqQixnQkFBZ0I7c0JBRHRCLE1BQU07Z0JBT0EsaUJBQWlCO3NCQUR2QixNQUFNO2dCQU9BLGtCQUFrQjtzQkFEeEIsTUFBTTtnQkFPQSx1QkFBdUI7c0JBRDdCLE1BQU07Z0JBd0JBLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBJbmplY3QsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTY0lDaXR5LCBTY0xvY2F0aW9uc1NlcnZpY2UsIFNjVXNlciwgU2NVc2VyU2VydmljZSwgU2NWZXJpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnQHNuYWJjZW50ci9jbGllbnQtY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBmaWx0ZXIsIG1hcCwgc2hhcmUsIHNraXAsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNDX1VTRVJfUFJPVklERVJTLCBTQ19VU0VSX0lORk8gfSBmcm9tICcuLi8uLi9wcm92aWRlcnMnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBTFdBWVNfVFJVRV9IQU5ETEVSLCB0dWlJc0ZhbHN5LCB0dWlJc1ByZXNlbnQsIHR1aVB1cmUgfSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7IHR1aUZhZGVJbiB9IGZyb20gJ0B0YWlnYS11aS9jb3JlJztcblxuLyoqXG4gKiDQmtC+0LzQv9C+0L3QtdC90YIg0LrQvtC90YLQtdC90YLQsCDQv9GA0L7RhNC40LvRjyDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y8g0LIg0LLQuNC00LUg0YDQsNGB0LrRgNGL0LLQsNGO0YnQuNGF0YHRjyDRgdC80YvRgdC70L7QstGL0YUg0LHQu9C+0LrQvtCyLlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3NjLXByb2ZpbGUtYWNjb3JkaW9ucy1jb250ZW50JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2MtcHJvZmlsZS1hY2NvcmRpb25zLWNvbnRlbnQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW1NDX1VTRVJfUFJPVklERVJTXSxcbiAgICBhbmltYXRpb25zOiBbdHVpRmFkZUluXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2NQcm9maWxlQWNjb3JkaW9uc0NvbnRlbnRDb21wb25lbnQge1xuICAgIC8qKlxuICAgICAqIHtAbGluayBGb3JtQ29udHJvbH0g0L/QtdGA0LXQutC70Y7Rh9Cw0YLQtdC70Y8gJ9CvINGF0L7Rh9GDINC/0L7Qu9GD0YfQsNGC0Ywg0YDQsNGB0YHRi9C70LrRgycuXG4gICAgICovXG4gICAgcHVibGljIGdldE5ld3NDb250cm9sOiBGb3JtQ29udHJvbDxib29sZWFuPiA9IG5ldyBGb3JtQ29udHJvbDxib29sZWFuPihmYWxzZSwgeyBub25OdWxsYWJsZTogdHJ1ZSB9KTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQt9Cw0L/RgNC+0YHQsCDQuNC30LzQtdC90LXQvdC40Y8g0L/RgNC40LfQvdCw0LrQsCDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y8gJ9CvINGF0L7Rh9GDINC/0L7Qu9GD0YfQsNGC0Ywg0YDQsNGB0YHRi9C70LrRgycuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBnZXROZXdzUmVxdWVzdCQgPSB0aGlzLmdldE5ld3NDb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICBza2lwKDEpLFxuICAgICAgICBzd2l0Y2hNYXAoKHZhbHVlKSA9PlxuICAgICAgICAgICAgdGhpcy51c2VyU2VydmljZS51cGRhdGVVc2VySW5mbyQoeyBnZXROZXdzOiB2YWx1ZSB9KS5waXBlKFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVzZXJTZXJ2aWNlLnVwZGF0ZVVzZXJDaGFuZ2UkKCkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcCgodXNlcikgPT4gdGhpcy5nZXROZXdzQ29udHJvbC5wYXRjaFZhbHVlKHVzZXIuZ2V0TmV3cywgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0V2l0aChudWxsKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBzdGFydFdpdGgobnVsbClcbiAgICAgICAgICAgIClcbiAgICAgICAgKSxcblxuICAgICAgICBzaGFyZSgpXG4gICAgKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQuNC30LzQtdC90LXQvdC40Y8g0YHQvtGB0YLQvtGP0L3QuNGPINC30LDQs9GA0YPQt9C60Lgg0LTQsNC90L3Ri9GFINC40LfQvNC10L3QtdC90LjRjyDQv9GA0LjQt9C90LDQutCwINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjyAn0K8g0YXQvtGH0YMg0L/QvtC70YPRh9Cw0YLRjCDRgNCw0YHRgdGL0LvQutGDJy5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgZ2V0TmV3c0xvYWRpbmckOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5nZXROZXdzUmVxdWVzdCQucGlwZShtYXAodHVpSXNGYWxzeSkpO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIFN1YmplY3R9INGB0L7QsdGL0YLQuNGPINC+0YLQv9GA0LDQstC60Lgg0YHQvtC+0LHRidC10L3QuNGPINC00LvRjyDQv9C+0LTRgtCy0LXRgNC20LTQtdC90LjRjyDQsNC00YDQtdGB0LAg0Y3Qu9C10LrRgtGA0L7QvdC90L7QuSDQv9C+0YfRgtGLLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBvblNlbmRBcHByb3ZlRW1haWw6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQt9Cw0L/RgNC+0YHQsCDQtNCw0L3QvdGL0YUg0LDRg9GC0LXQvdGC0LjRhNC40LrQsNGG0LjQuC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHNlbmRBcHByb3ZlRW1haWxSZXF1ZXN0JDogT2JzZXJ2YWJsZTxib29sZWFuIHwgbnVsbD4gPSB0aGlzLm9uU2VuZEFwcHJvdmVFbWFpbC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKHZhbHVlKSA9PiB0aGlzLnZlcmlmaWNhdGlvblNlcnZpY2Uuc2VuZEVtYWlsQXBwcm92ZUNvZGUodmFsdWUpLnBpcGUobWFwKEFMV0FZU19UUlVFX0hBTkRMRVIpLCBzdGFydFdpdGgobnVsbCkpKSxcbiAgICAgICAgc3RhcnRXaXRoKGZhbHNlKSxcbiAgICAgICAgc2hhcmUoKVxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0g0LjQt9C80LXQvdC10L3QuNGPINGB0L7RgdGC0L7Rj9C90LjRjyDQt9Cw0LPRgNGD0LfQutC4INC00LDQvdC90YvRhSDQvtGC0L/RgNCw0LLQutC4INGB0L7QvtCx0YnQtdC90LjRjyDQtNC70Y8g0L/QvtC00YLQstC10YDQttC00LXQvdC40Y8g0LDQtNGA0LXRgdCwINGN0LvQtdC60YLRgNC+0L3QvdC+0Lkg0L/QvtGH0YLRiy5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgYXBwcm92ZUVtYWlsTG9hZGluZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLnNlbmRBcHByb3ZlRW1haWxSZXF1ZXN0JC5waXBlKG1hcCh0dWlJc0ZhbHN5KSk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0g0LjQt9C80LXQvdC10L3QuNGPINGB0L7RgdGC0L7Rj9C90LjRjyDQv9GA0LjQt9C90LDQutCwLCDQvtGC0L/RgNCw0LLQu9C10L3QviDQu9C4INGB0L7QvtCx0YnQtdC90LjQtSDQtNC70Y8g0L/QvtC00YLQstC10YDQttC00LXQvdC40Y8g0LDQtNGA0LXRgdCwINGN0LvQtdC60YLRgNC+0L3QvdC+0Lkg0L/QvtGH0YLRiy5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgaXNTZW5kQXBwcm92ZUVtYWlsJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuc2VuZEFwcHJvdmVFbWFpbFJlcXVlc3QkLnBpcGUoZmlsdGVyKHR1aUlzUHJlc2VudCkpO1xuXG4gICAgLyoqXG4gICAgICog0KHQvtCx0YvRgtC40LUg0L3QsNC20LDRgtC40Y8g0L3QsCDQutC90L7Qv9C60YMg0YDQtdC00LDQutGC0LjRgNC+0LLQsNC90LjQtSDQutC+0L3RgtCw0LrRgtC90L7Qs9C+INC70LjRhtCwLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBlZGl0UHJvZmlsZUNsaWNrOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LHRi9GC0LjQtSDQvdCw0LbQsNGC0LjRjyDQvdCwINC60L3QvtC/0LrRgyDQv9C+0LTRgtCy0LXRgNC20LTQtdC90LjRjyDRgtC10LvQtdGE0L7QvdCwLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBhcHByb3ZlUGhvbmVDbGljazogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqXG4gICAgICog0KHQvtCx0YvRgtC40LUg0L3QsNC20LDRgtC40Y8g0L3QsCDQutC90L7Qv9C60YMg0LTQvtCx0LDQstC70LXQvdC40Y8g0LrQvtC90YLRgNCw0LPQtdC90YLQsC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgYWRkQ29udHJhZ2VudENsaWNrOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LHRi9GC0LjQtSDQvdCw0LbQsNGC0LjRjyDQvdCwINC60L3QvtC/0LrRgyDQtNC+0LHQsNCy0LvQtdC90LjRjyDQsNC00YDQtdGB0LAg0LTQvtGB0YLQsNCy0LrQuCDQutC70LjQtdC90YLQsC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgYWRkRGVsaXZlcnlBZGRyZXNzQ2xpY2s6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKlxuICAgICAqINCY0L3QuNGG0LjQsNC70LjQt9C40YDRg9C10YIg0Y3QutC30LXQvNC/0LvRj9GAINC60LvQsNGB0YHQsCB7QGxpbmsgU2NQcm9maWxlQ29tcG9uZW50fS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB1c2VyJCDQn9C+0YLQvtC6INC40L3RhNC+0YDQvNCw0YbQuNC4INC+INGC0LXQutGD0YnQtdC8INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtS5cbiAgICAgKiBAcGFyYW0gbG9jYXRpb25zU2VydmljZSDQodC10YDQstC40YEg0LTQu9GPINC/0L7Qu9GD0YfQtdC90LjRjyDRgdC/0LjRgdC60L7QsiDRgdGC0YDQsNC9LCDRgNC10LPQuNC+0L3QvtCyLCDQs9C+0YDQvtC00L7Qsi5cbiAgICAgKiBAcGFyYW0gdXNlclNlcnZpY2Ug0KHQtdGA0LLQuNGBINC40L3RhNC+0YDQvNCw0YbQuNC4INC+INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtS5cbiAgICAgKiBAcGFyYW0gdmVyaWZpY2F0aW9uU2VydmljZSDQodC10YDQstC40YEg0LLQtdGA0LjRhNC40LrQsNGG0LjQuC5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoU0NfVVNFUl9JTkZPKSBwdWJsaWMgcmVhZG9ubHkgdXNlciQ6IE9ic2VydmFibGU8U2NVc2VyPixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBsb2NhdGlvbnNTZXJ2aWNlOiBTY0xvY2F0aW9uc1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdXNlclNlcnZpY2U6IFNjVXNlclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdmVyaWZpY2F0aW9uU2VydmljZTogU2NWZXJpZmljYXRpb25TZXJ2aWNlXG4gICAgKSB7fVxuXG4gICAgLyoqXG4gICAgICog0KHQvtC30LTQsNC10YIg0LfQsNC/0YDQvtGBINC/0L7Qu9GD0YfQtdC90LjRjyDQuNC90YTQvtGA0LzQsNGG0LjQuCDQviDQs9C+0YDQvtC00LUg0YLQtdC60YPRidC10LPQviDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y8g0L/QviDQuNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgNGDINCz0L7RgNC+0LTQsC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjaXR5SWQg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LfQsNC/0LjRgdC4INCz0L7RgNC+0LTQsC5cbiAgICAgKi9cbiAgICBAdHVpUHVyZSAvLyBUT0RPOiBUQVNLWyM3NjE1XSDQo9C00LDQu9C40YLRjCDQv9C+0LvQtSDRgNC10YTQsNC60YLQvtGA0LjQvdCz0LAg0YHQtdGA0LLQuNGB0LAg0YDQsNCx0L7RgtGLINGBINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtdC8LlxuICAgIHB1YmxpYyBnZXRVc2VyQ2l0eSQoY2l0eUlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPFNjSUNpdHk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9jYXRpb25zU2VydmljZS5nZXRVc2VyQ2l0eSQoY2l0eUlkKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtNFwiPlxuICAgIDxzYy1hY2NvcmRpb24gW3Nob3dBcnJvd109XCJmYWxzZVwiIFtzaG93QWRkQnV0dG9uXT1cImZhbHNlXCIgW29wZW5dPVwidHJ1ZVwiPlxuICAgICAgICDQntCx0YnQuNC1INC00LDQvdC90YvQtVxuICAgICAgICA8bmctdGVtcGxhdGUgc2NBY2NvcmRpb25Db250ZW50PlxuICAgICAgICAgICAgPHR1aS1sb2FkZXIgKnR1aUxldD1cInVzZXIkIHwgYXN5bmMgYXMgdXNlclwiIFtvdmVybGF5XT1cInRydWVcIiBbc2hvd0xvYWRlcl09XCJ1c2VyID09PSBudWxsXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZ2FwLTIgcGwtNFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidXNlclwiIGNsYXNzPVwiZmxleCBmbGV4LWNvbCBmbGV4LWdyb3cgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IHVzZXIubmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInVzZXIuY2l0eSAmJiAoZ2V0VXNlckNpdHkkKHVzZXIuY2l0eSkgfCBhc3luYykgYXMgY2l0eVwiIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHVpLXN2ZyBzcmM9XCJ0dWlJY29uTWFwUGluXCI+PC90dWktc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPtCzLiB7eyBjaXR5Lm5hbWUgfX0sIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNpdHkucmVnaW9uXCI+e3sgY2l0eS5yZWdpb24ubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC13cmFwIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHVpTGlua1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0dWlNb2RlPVwib25MaWdodFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJ0dWlJY29uUGhvbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uQWxpZ249XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BzZXVkb109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj1cInRlbDp7eyB1c2VyLmNvbnRhY3RzLnBob25lLnZhbHVlfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3sgdXNlci5jb250YWN0cy5waG9uZS52YWx1ZSB8IHR1aUZvcm1hdFBob25lIH19PC9hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXVzZXIuY29udGFjdHMucGhvbmUuaXNBcHByb3ZlZFwiIGNsYXNzPVwidGV4dC10dWktdGV4dC0wM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo0KLQtdC70LXRhNC+0L0g0L3QtSDQv9C+0LTRgtCy0LXRgNC20LTQtdC9LiA8YnV0dG9uIHR1aUxpbmsgW3BzZXVkb109XCJ0cnVlXCIgKGNsaWNrKT1cImFwcHJvdmVQaG9uZUNsaWNrLmVtaXQoKVwiPtCf0L7QtNGC0LLQtdGA0LTQuNGC0Yw8L2J1dHRvbj4pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICp0dWlMZXQ9XCIhIShpc1NlbmRBcHByb3ZlRW1haWwkIHwgYXN5bmMpIGFzIGlzU2VuZEFwcHJvdmVFbWFpbFwiIGNsYXNzPVwiZmxleCBmbGV4LXdyYXAgZ2FwLXgtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIHR1aUxpbmsgdHVpTW9kZT1cIm9uTGlnaHRcIiBpY29uPVwidHVpSWNvbk1haWxcIiBpY29uQWxpZ249XCJsZWZ0XCIgW3BzZXVkb109XCJ0cnVlXCIgaHJlZj1cIm1haWx0bzp7eyB1c2VyLmNvbnRhY3RzLmVtYWlsLnZhbHVlIH19XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHVzZXIuY29udGFjdHMuZW1haWwudmFsdWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhaXNTZW5kQXBwcm92ZUVtYWlsICYmICF1c2VyLmNvbnRhY3RzLmVtYWlsLmlzQXBwcm92ZWRcIiBjbGFzcz1cInRleHQtdHVpLXRleHQtMDMgaW5saW5lLWZsZXggZ2FwLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEUtbWFpbCDQvdC1INC/0L7QtNGC0LLQtdGA0LbQtNC10L0uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0dWktbG9hZGVyIFtzaG93TG9hZGVyXT1cIiEhKGFwcHJvdmVFbWFpbExvYWRpbmckIHwgYXN5bmMpXCIgW292ZXJsYXldPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0dWlMaW5rIFtwc2V1ZG9dPVwidHJ1ZVwiIChjbGljayk9XCJvblNlbmRBcHByb3ZlRW1haWwubmV4dCh1c2VyLmNvbnRhY3RzLmVtYWlsLnZhbHVlKVwiPtCf0L7QtNGC0LLQtdGA0LTQuNGC0Yw8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90dWktbG9hZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaXNTZW5kQXBwcm92ZUVtYWlsXCIgY2xhc3M9XCJ0ZXh0LXR1aS1zdWNjZXNzLWZpbGxcIiBAdHVpRmFkZUluPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDQn9C40YHRjNC80L4g0LTQu9GPINC/0L7QtNGC0LLQtdGA0LbQtNC10L3QuNGPINGD0YHQv9C10YjQvdC+INC+0YLQv9GA0LDQstC70LXQvdC+LiDQn9C10YDQtdC50LTQuNGC0LUg0L/QviDRgdGB0YvQu9C60LUg0LIg0L/QuNGB0YzQvNC1INC4INC+0LHQvdC+0LLQuNGC0LUg0Y3RgtGDINGB0YLRgNCw0L3QuNGG0YMuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dHVpLWxvYWRlciBbc2hvd0xvYWRlcl09XCIhIShnZXROZXdzTG9hZGluZyQgfCBhc3luYylcIiBbb3ZlcmxheV09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR1aS1jaGVja2JveC1sYWJlbGVkIHNpemU9XCJtXCIgY2xhc3M9XCJ3LWZ1bGxcIiBbZm9ybUNvbnRyb2xdPVwiZ2V0TmV3c0NvbnRyb2xcIiBbbmdNb2RlbF09XCJ1c2VyLmdldE5ld3NcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg0K8g0YXQvtGH0YMg0L/QvtC70YPRh9Cw0YLRjCDRgNCw0YHRgdGL0LvQutGDINCh0L3QsNCx0YbQtdC90YLRgCDQviDRgdC60LjQtNC60LDRhSDQuCDQvdC+0LLQvtGB0YLRj9GFINC/0L4g0Y3Qu9C10LrRgtGA0L7QvdC90L7QuSDQv9C+0YfRgtC1LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHVpLWNoZWNrYm94LWxhYmVsZWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3R1aS1sb2FkZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHVpSWNvbkJ1dHRvbiBzaXplPVwibVwiIHR5cGU9XCJidXR0b25cIiBpY29uPVwidHVpSWNvbkVkaXQzTGFyZ2VcIiB0dWlNb2RlPVwib25MaWdodFwiIGFwcGVhcmFuY2U9XCJmbGF0XCIgKGNsaWNrKT1cImVkaXRQcm9maWxlQ2xpY2suZW1pdCgpXCI+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3R1aS1sb2FkZXI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9zYy1hY2NvcmRpb24+XG4gICAgPHNjLWNvbnRyYWdlbnRzLWFjY29yZGlvbiAoYWRkQ29udHJhZ2VudENsaWNrKT1cImFkZENvbnRyYWdlbnRDbGljay5lbWl0KClcIj48L3NjLWNvbnRyYWdlbnRzLWFjY29yZGlvbj5cbiAgICA8c2MtZGVsaXZlcnktYWRkcmVzcy1hY2NvcmRpb24gKGFkZERlbGl2ZXJ5QWRkcmVzc0NsaWNrKT1cImFkZERlbGl2ZXJ5QWRkcmVzc0NsaWNrLmVtaXQoKVwiPjwvc2MtZGVsaXZlcnktYWRkcmVzcy1hY2NvcmRpb24+XG4gICAgPHNjLWFjY29yZGlvbiBbc2hvd0Fycm93XT1cImZhbHNlXCIgW3Nob3dBZGRCdXR0b25dPVwiZmFsc2VcIj5cbiAgICAgICAg0JjQt9C80LXQvdC40YLRjCDQv9Cw0YDQvtC70YxcbiAgICAgICAgPG5nLXRlbXBsYXRlIHNjQWNjb3JkaW9uQ29udGVudD5cbiAgICAgICAgICAgIDxzYy1yZXNldC11c2VyLXBhc3N3b3JkPjwvc2MtcmVzZXQtdXNlci1wYXNzd29yZD5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3NjLWFjY29yZGlvbj5cbjwvZGl2PlxuIl19
|
112
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtcHJvZmlsZS1hY2NvcmRpb25zLWNvbnRlbnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL3Byb2ZpbGUvc2MtcHJvZmlsZS1hY2NvcmRpb25zLWNvbnRlbnQvc2MtcHJvZmlsZS1hY2NvcmRpb25zLWNvbnRlbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL3Byb2ZpbGUvc2MtcHJvZmlsZS1hY2NvcmRpb25zLWNvbnRlbnQvc2MtcHJvZmlsZS1hY2NvcmRpb25zLWNvbnRlbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFakcsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7OztBQUUzQzs7R0FFRztBQVFILE1BQU0sT0FBTyxtQ0FBbUM7SUErRTVDOzs7Ozs7O09BT0c7SUFDSCxZQUMwQyxLQUF5QixFQUM5QyxnQkFBb0MsRUFDcEMsV0FBMEIsRUFDMUIsbUJBQTBDO1FBSHJCLFVBQUssR0FBTCxLQUFL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QUFTLENBQUMsbUJBQ04sdUJBQXVCLENBQUMsTUFBTTs7MEJBMEYxQyxNQUFNOzJCQUFDLFlBQVk7NklBN0JqQixnQkFBZ0I7c0JBRHRCLE1BQU07Z0JBT0EsaUJBQWlCO3NCQUR2QixNQUFNO2dCQU9BLGtCQUFrQjtzQkFEeEIsTUFBTTtnQkFPQSx1QkFBdUI7c0JBRDdCLE1BQU07Z0JBd0JBLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBJbmplY3QsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTY0lDaXR5LCBTY0xvY2F0aW9uc1NlcnZpY2UsIFNjVXNlciwgU2NVc2VyU2VydmljZSwgU2NWZXJpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnQHNuYWJjZW50ci9jbGllbnQtY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBmaWx0ZXIsIG1hcCwgc2hhcmUsIHNraXAsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNDX1VTRVJfUFJPVklERVJTLCBTQ19VU0VSX0lORk8gfSBmcm9tICcuLi8uLi9wcm92aWRlcnMnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBTFdBWVNfVFJVRV9IQU5ETEVSLCB0dWlJc0ZhbHN5LCB0dWlJc1ByZXNlbnQsIHR1aVB1cmUgfSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7IHR1aUZhZGVJbiB9IGZyb20gJ0B0YWlnYS11aS9jb3JlJztcblxuLyoqXG4gKiDQmtC+0LzQv9C+0L3QtdC90YIg0LrQvtC90YLQtdC90YLQsCDQv9GA0L7RhNC40LvRjyDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y8g0LIg0LLQuNC00LUg0YDQsNGB0LrRgNGL0LLQsNGO0YnQuNGF0YHRjyDRgdC80YvRgdC70L7QstGL0YUg0LHQu9C+0LrQvtCyLlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3NjLXByb2ZpbGUtYWNjb3JkaW9ucy1jb250ZW50JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2MtcHJvZmlsZS1hY2NvcmRpb25zLWNvbnRlbnQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW1NDX1VTRVJfUFJPVklERVJTXSxcbiAgICBhbmltYXRpb25zOiBbdHVpRmFkZUluXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2NQcm9maWxlQWNjb3JkaW9uc0NvbnRlbnRDb21wb25lbnQge1xuICAgIC8qKlxuICAgICAqIHtAbGluayBGb3JtQ29udHJvbH0g0L/QtdGA0LXQutC70Y7Rh9Cw0YLQtdC70Y8gJ9CvINGF0L7Rh9GDINC/0L7Qu9GD0YfQsNGC0Ywg0YDQsNGB0YHRi9C70LrRgycuXG4gICAgICovXG4gICAgcHVibGljIGdldE5ld3NDb250cm9sOiBGb3JtQ29udHJvbDxib29sZWFuPiA9IG5ldyBGb3JtQ29udHJvbDxib29sZWFuPihmYWxzZSwgeyBub25OdWxsYWJsZTogdHJ1ZSB9KTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQt9Cw0L/RgNC+0YHQsCDQuNC30LzQtdC90LXQvdC40Y8g0L/RgNC40LfQvdCw0LrQsCDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y8gJ9CvINGF0L7Rh9GDINC/0L7Qu9GD0YfQsNGC0Ywg0YDQsNGB0YHRi9C70LrRgycuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBnZXROZXdzUmVxdWVzdCQgPSB0aGlzLmdldE5ld3NDb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICBza2lwKDEpLFxuICAgICAgICBzd2l0Y2hNYXAoKHZhbHVlKSA9PlxuICAgICAgICAgICAgdGhpcy51c2VyU2VydmljZS51cGRhdGVVc2VySW5mbyQoeyBnZXROZXdzOiB2YWx1ZSB9KS5waXBlKFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVzZXJTZXJ2aWNlLnVwZGF0ZVVzZXJDaGFuZ2UkKCkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcCgodXNlcikgPT4gdGhpcy5nZXROZXdzQ29udHJvbC5wYXRjaFZhbHVlKHVzZXIuZ2V0TmV3cywgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0V2l0aChudWxsKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBzdGFydFdpdGgobnVsbClcbiAgICAgICAgICAgIClcbiAgICAgICAgKSxcblxuICAgICAgICBzaGFyZSgpXG4gICAgKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQuNC30LzQtdC90LXQvdC40Y8g0YHQvtGB0YLQvtGP0L3QuNGPINC30LDQs9GA0YPQt9C60Lgg0LTQsNC90L3Ri9GFINC40LfQvNC10L3QtdC90LjRjyDQv9GA0LjQt9C90LDQutCwINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjyAn0K8g0YXQvtGH0YMg0L/QvtC70YPRh9Cw0YLRjCDRgNCw0YHRgdGL0LvQutGDJy5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgZ2V0TmV3c0xvYWRpbmckOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5nZXROZXdzUmVxdWVzdCQucGlwZShtYXAodHVpSXNGYWxzeSkpO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIFN1YmplY3R9INGB0L7QsdGL0YLQuNGPINC+0YLQv9GA0LDQstC60Lgg0YHQvtC+0LHRidC10L3QuNGPINC00LvRjyDQv9C+0LTRgtCy0LXRgNC20LTQtdC90LjRjyDQsNC00YDQtdGB0LAg0Y3Qu9C10LrRgtGA0L7QvdC90L7QuSDQv9C+0YfRgtGLLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBvblNlbmRBcHByb3ZlRW1haWw6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQt9Cw0L/RgNC+0YHQsCDQtNCw0L3QvdGL0YUg0LDRg9GC0LXQvdGC0LjRhNC40LrQsNGG0LjQuC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHNlbmRBcHByb3ZlRW1haWxSZXF1ZXN0JDogT2JzZXJ2YWJsZTxib29sZWFuIHwgbnVsbD4gPSB0aGlzLm9uU2VuZEFwcHJvdmVFbWFpbC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKHZhbHVlKSA9PiB0aGlzLnZlcmlmaWNhdGlvblNlcnZpY2Uuc2VuZEVtYWlsQXBwcm92ZUNvZGUodmFsdWUpLnBpcGUobWFwKEFMV0FZU19UUlVFX0hBTkRMRVIpLCBzdGFydFdpdGgobnVsbCkpKSxcbiAgICAgICAgc3RhcnRXaXRoKGZhbHNlKSxcbiAgICAgICAgc2hhcmUoKVxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0g0LjQt9C80LXQvdC10L3QuNGPINGB0L7RgdGC0L7Rj9C90LjRjyDQt9Cw0LPRgNGD0LfQutC4INC00LDQvdC90YvRhSDQvtGC0L/RgNCw0LLQutC4INGB0L7QvtCx0YnQtdC90LjRjyDQtNC70Y8g0L/QvtC00YLQstC10YDQttC00LXQvdC40Y8g0LDQtNGA0LXRgdCwINGN0LvQtdC60YLRgNC+0L3QvdC+0Lkg0L/QvtGH0YLRiy5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgYXBwcm92ZUVtYWlsTG9hZGluZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLnNlbmRBcHByb3ZlRW1haWxSZXF1ZXN0JC5waXBlKG1hcCh0dWlJc0ZhbHN5KSk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0g0LjQt9C80LXQvdC10L3QuNGPINGB0L7RgdGC0L7Rj9C90LjRjyDQv9GA0LjQt9C90LDQutCwLCDQvtGC0L/RgNCw0LLQu9C10L3QviDQu9C4INGB0L7QvtCx0YnQtdC90LjQtSDQtNC70Y8g0L/QvtC00YLQstC10YDQttC00LXQvdC40Y8g0LDQtNGA0LXRgdCwINGN0LvQtdC60YLRgNC+0L3QvdC+0Lkg0L/QvtGH0YLRiy5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgaXNTZW5kQXBwcm92ZUVtYWlsJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuc2VuZEFwcHJvdmVFbWFpbFJlcXVlc3QkLnBpcGUoZmlsdGVyKHR1aUlzUHJlc2VudCkpO1xuXG4gICAgLyoqXG4gICAgICog0KHQvtCx0YvRgtC40LUg0L3QsNC20LDRgtC40Y8g0L3QsCDQutC90L7Qv9C60YMg0YDQtdC00LDQutGC0LjRgNC+0LLQsNC90LjQtSDQutC+0L3RgtCw0LrRgtC90L7Qs9C+INC70LjRhtCwLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBlZGl0UHJvZmlsZUNsaWNrOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LHRi9GC0LjQtSDQvdCw0LbQsNGC0LjRjyDQvdCwINC60L3QvtC/0LrRgyDQv9C+0LTRgtCy0LXRgNC20LTQtdC90LjRjyDRgtC10LvQtdGE0L7QvdCwLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBhcHByb3ZlUGhvbmVDbGljazogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqXG4gICAgICog0KHQvtCx0YvRgtC40LUg0L3QsNC20LDRgtC40Y8g0L3QsCDQutC90L7Qv9C60YMg0LTQvtCx0LDQstC70LXQvdC40Y8g0LrQvtC90YLRgNCw0LPQtdC90YLQsC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgYWRkQ29udHJhZ2VudENsaWNrOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LHRi9GC0LjQtSDQvdCw0LbQsNGC0LjRjyDQvdCwINC60L3QvtC/0LrRgyDQtNC+0LHQsNCy0LvQtdC90LjRjyDQsNC00YDQtdGB0LAg0LTQvtGB0YLQsNCy0LrQuCDQutC70LjQtdC90YLQsC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgYWRkRGVsaXZlcnlBZGRyZXNzQ2xpY2s6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKlxuICAgICAqINCY0L3QuNGG0LjQsNC70LjQt9C40YDRg9C10YIg0Y3QutC30LXQvNC/0LvRj9GAINC60LvQsNGB0YHQsCB7QGxpbmsgU2NQcm9maWxlQ29tcG9uZW50fS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB1c2VyJCDQn9C+0YLQvtC6INC40L3RhNC+0YDQvNCw0YbQuNC4INC+INGC0LXQutGD0YnQtdC8INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtS5cbiAgICAgKiBAcGFyYW0gbG9jYXRpb25zU2VydmljZSDQodC10YDQstC40YEg0LTQu9GPINC/0L7Qu9GD0YfQtdC90LjRjyDRgdC/0LjRgdC60L7QsiDRgdGC0YDQsNC9LCDRgNC10LPQuNC+0L3QvtCyLCDQs9C+0YDQvtC00L7Qsi5cbiAgICAgKiBAcGFyYW0gdXNlclNlcnZpY2Ug0KHQtdGA0LLQuNGBINC40L3RhNC+0YDQvNCw0YbQuNC4INC+INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtS5cbiAgICAgKiBAcGFyYW0gdmVyaWZpY2F0aW9uU2VydmljZSDQodC10YDQstC40YEg0LLQtdGA0LjRhNC40LrQsNGG0LjQuC5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoU0NfVVNFUl9JTkZPKSBwdWJsaWMgcmVhZG9ubHkgdXNlciQ6IE9ic2VydmFibGU8U2NVc2VyPixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBsb2NhdGlvbnNTZXJ2aWNlOiBTY0xvY2F0aW9uc1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdXNlclNlcnZpY2U6IFNjVXNlclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdmVyaWZpY2F0aW9uU2VydmljZTogU2NWZXJpZmljYXRpb25TZXJ2aWNlXG4gICAgKSB7fVxuXG4gICAgLyoqXG4gICAgICog0KHQvtC30LTQsNC10YIg0LfQsNC/0YDQvtGBINC/0L7Qu9GD0YfQtdC90LjRjyDQuNC90YTQvtGA0LzQsNGG0LjQuCDQviDQs9C+0YDQvtC00LUg0YLQtdC60YPRidC10LPQviDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y8g0L/QviDQuNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgNGDINCz0L7RgNC+0LTQsC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjaXR5SWQg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LfQsNC/0LjRgdC4INCz0L7RgNC+0LTQsC5cbiAgICAgKi9cbiAgICBAdHVpUHVyZSAvLyBUT0RPOiBUQVNLWyM3NjE1XSDQo9C00LDQu9C40YLRjCDQv9C+0LvQtSDRgNC10YTQsNC60YLQvtGA0LjQvdCz0LAg0YHQtdGA0LLQuNGB0LAg0YDQsNCx0L7RgtGLINGBINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtdC8LlxuICAgIHB1YmxpYyBnZXRVc2VyQ2l0eSQoY2l0eUlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPFNjSUNpdHk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9jYXRpb25zU2VydmljZS5nZXRVc2VyQ2l0eSQoY2l0eUlkKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtNFwiPlxuICAgIDxzYy1hY2NvcmRpb24gW3Nob3dBcnJvd109XCJmYWxzZVwiIFtzaG93QWRkQnV0dG9uXT1cImZhbHNlXCIgW29wZW5dPVwidHJ1ZVwiPlxuICAgICAgICDQntCx0YnQuNC1INC00LDQvdC90YvQtVxuICAgICAgICA8bmctdGVtcGxhdGUgc2NBY2NvcmRpb25Db250ZW50PlxuICAgICAgICAgICAgPHR1aS1sb2FkZXIgKnR1aUxldD1cInVzZXIkIHwgYXN5bmMgYXMgdXNlclwiIFtvdmVybGF5XT1cInRydWVcIiBbc2hvd0xvYWRlcl09XCJ1c2VyID09PSBudWxsXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZ2FwLTIgcGwtNFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidXNlclwiIGNsYXNzPVwiZmxleCBmbGV4LWNvbCBmbGV4LWdyb3cgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC1tZWRpdW1cIj57eyB1c2VyLm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidXNlci5jaXR5ICYmIChnZXRVc2VyQ2l0eSQodXNlci5jaXR5KSB8IGFzeW5jKSBhcyBjaXR5XCIgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0dWktc3ZnIHNyYz1cInR1aUljb25NYXBQaW5cIj48L3R1aS1zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC13cmFwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPtCzLiB7eyBjaXR5Lm5hbWUgfX0sIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjaXR5LnJlZ2lvblwiPnt7IGNpdHkucmVnaW9uLm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtd3JhcCBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR1aUxpbmtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHVpTW9kZT1cIm9uTGlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwidHVpSWNvblBob25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbkFsaWduPVwibGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwc2V1ZG9dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9XCJ0ZWw6e3sgdXNlci5jb250YWN0cy5waG9uZS52YWx1ZX19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPnt7IHVzZXIuY29udGFjdHMucGhvbmUudmFsdWUgfCB0dWlGb3JtYXRQaG9uZSB9fTwvYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiF1c2VyLmNvbnRhY3RzLnBob25lLmlzQXBwcm92ZWRcIiBjbGFzcz1cInRleHQtdHVpLXRleHQtMDNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKNCi0LXQu9C10YTQvtC9INC90LUg0L/QvtC00YLQstC10YDQttC00LXQvS4gPGJ1dHRvbiB0dWlMaW5rIFtwc2V1ZG9dPVwidHJ1ZVwiIChjbGljayk9XCJhcHByb3ZlUGhvbmVDbGljay5lbWl0KClcIj7Qn9C+0LTRgtCy0LXRgNC00LjRgtGMPC9idXR0b24+KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqdHVpTGV0PVwiISEoaXNTZW5kQXBwcm92ZUVtYWlsJCB8IGFzeW5jKSBhcyBpc1NlbmRBcHByb3ZlRW1haWxcIiBjbGFzcz1cImZsZXggZmxleC13cmFwIGdhcC14LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSB0dWlMaW5rIHR1aU1vZGU9XCJvbkxpZ2h0XCIgaWNvbj1cInR1aUljb25NYWlsXCIgaWNvbkFsaWduPVwibGVmdFwiIFtwc2V1ZG9dPVwidHJ1ZVwiIGhyZWY9XCJtYWlsdG86e3sgdXNlci5jb250YWN0cy5lbWFpbC52YWx1ZSB9fVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB1c2VyLmNvbnRhY3RzLmVtYWlsLnZhbHVlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWlzU2VuZEFwcHJvdmVFbWFpbCAmJiAhdXNlci5jb250YWN0cy5lbWFpbC5pc0FwcHJvdmVkXCIgY2xhc3M9XCJ0ZXh0LXR1aS10ZXh0LTAzIGlubGluZS1mbGV4IGZsZXgtd3JhcCBnYXAtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFLW1haWwg0L3QtSDQv9C+0LTRgtCy0LXRgNC20LTQtdC9LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHVpLWxvYWRlciBbc2hvd0xvYWRlcl09XCIhIShhcHByb3ZlRW1haWxMb2FkaW5nJCB8IGFzeW5jKVwiIFtvdmVybGF5XT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHVpTGluayBbcHNldWRvXT1cInRydWVcIiAoY2xpY2spPVwib25TZW5kQXBwcm92ZUVtYWlsLm5leHQodXNlci5jb250YWN0cy5lbWFpbC52YWx1ZSlcIj7Qn9C+0LTRgtCy0LXRgNC00LjRgtGMPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHVpLWxvYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJpc1NlbmRBcHByb3ZlRW1haWxcIiBjbGFzcz1cInRleHQtdHVpLXN1Y2Nlc3MtZmlsbFwiIEB0dWlGYWRlSW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgINCf0LjRgdGM0LzQviDQtNC70Y8g0L/QvtC00YLQstC10YDQttC00LXQvdC40Y8g0YPRgdC/0LXRiNC90L4g0L7RgtC/0YDQsNCy0LvQtdC90L4uINCf0LXRgNC10LnQtNC40YLQtSDQv9C+INGB0YHRi9C70LrQtSDQsiDQv9C40YHRjNC80LUg0Lgg0L7QsdC90L7QstC40YLQtSDRjdGC0YMg0YHRgtGA0LDQvdC40YbRgy5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0dWktbG9hZGVyIFtzaG93TG9hZGVyXT1cIiEhKGdldE5ld3NMb2FkaW5nJCB8IGFzeW5jKVwiIFtvdmVybGF5XT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHVpLWNoZWNrYm94LWxhYmVsZWQgc2l6ZT1cIm1cIiBjbGFzcz1cInctZnVsbFwiIFtmb3JtQ29udHJvbF09XCJnZXROZXdzQ29udHJvbFwiIFtuZ01vZGVsXT1cInVzZXIuZ2V0TmV3c1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDQryDRhdC+0YfRgyDQv9C+0LvRg9GH0LDRgtGMINGA0LDRgdGB0YvQu9C60YMg0KHQvdCw0LHRhtC10L3RgtGAINC+INGB0LrQuNC00LrQsNGFINC4INC90L7QstC+0YHRgtGP0YUg0L/QviDRjdC70LXQutGC0YDQvtC90L3QvtC5INC/0L7Rh9GC0LUuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90dWktY2hlY2tib3gtbGFiZWxlZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHVpLWxvYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0dWlJY29uQnV0dG9uIHNpemU9XCJtXCIgdHlwZT1cImJ1dHRvblwiIGljb249XCJ0dWlJY29uRWRpdDNMYXJnZVwiIHR1aU1vZGU9XCJvbkxpZ2h0XCIgYXBwZWFyYW5jZT1cImZsYXRcIiAoY2xpY2spPVwiZWRpdFByb2ZpbGVDbGljay5lbWl0KClcIj48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvdHVpLWxvYWRlcj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3NjLWFjY29yZGlvbj5cbiAgICA8c2MtY29udHJhZ2VudHMtYWNjb3JkaW9uIChhZGRDb250cmFnZW50Q2xpY2spPVwiYWRkQ29udHJhZ2VudENsaWNrLmVtaXQoKVwiPjwvc2MtY29udHJhZ2VudHMtYWNjb3JkaW9uPlxuICAgIDxzYy1kZWxpdmVyeS1hZGRyZXNzLWFjY29yZGlvbiAoYWRkRGVsaXZlcnlBZGRyZXNzQ2xpY2spPVwiYWRkRGVsaXZlcnlBZGRyZXNzQ2xpY2suZW1pdCgpXCI+PC9zYy1kZWxpdmVyeS1hZGRyZXNzLWFjY29yZGlvbj5cbiAgICA8c2MtYWNjb3JkaW9uIFtzaG93QXJyb3ddPVwiZmFsc2VcIiBbc2hvd0FkZEJ1dHRvbl09XCJmYWxzZVwiPlxuICAgICAgICDQmNC30LzQtdC90LjRgtGMINC/0LDRgNC+0LvRjFxuICAgICAgICA8bmctdGVtcGxhdGUgc2NBY2NvcmRpb25Db250ZW50PlxuICAgICAgICAgICAgPHNjLXJlc2V0LXVzZXItcGFzc3dvcmQ+PC9zYy1yZXNldC11c2VyLXBhc3N3b3JkPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvc2MtYWNjb3JkaW9uPlxuPC9kaXY+XG4iXX0=
|
package/esm2020/user/index.mjs
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
export * from './reset-user-password/sc-reset-user-password.component';
|
2
|
-
export * from './update-user-info-
|
2
|
+
export * from './update-user-info-dialog/sc-update-user-info-dialog.component';
|
3
3
|
export * from './user-phone-approve-dialog/sc-user-phone-approve-dialog.component';
|
4
4
|
export * from './sc-user.module';
|
5
|
-
//# sourceMappingURL=data:application/json;base64,
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvdXNlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHdEQUF3RCxDQUFDO0FBQ3ZFLGNBQWMsZ0VBQWdFLENBQUM7QUFDL0UsY0FBYyxvRUFBb0UsQ0FBQztBQUNuRixjQUFjLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9yZXNldC11c2VyLXBhc3N3b3JkL3NjLXJlc2V0LXVzZXItcGFzc3dvcmQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vdXBkYXRlLXVzZXItaW5mby1kaWFsb2cvc2MtdXBkYXRlLXVzZXItaW5mby1kaWFsb2cuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vdXNlci1waG9uZS1hcHByb3ZlLWRpYWxvZy9zYy11c2VyLXBob25lLWFwcHJvdmUtZGlhbG9nLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3NjLXVzZXIubW9kdWxlJztcbiJdfQ==
|
@@ -5,7 +5,7 @@ import { TuiCheckboxLabeledModule, TuiCheckboxModule, TuiFieldErrorPipeModule, T
|
|
5
5
|
import { TuiButtonModule, TuiDataListModule, TuiErrorModule, TuiLabelModule, TuiLoaderModule, TuiModeModule, TuiTextfieldControllerModule } from '@taiga-ui/core';
|
6
6
|
import { TuiLetModule } from '@taiga-ui/cdk';
|
7
7
|
import { ScResetUserPasswordComponent } from './reset-user-password/sc-reset-user-password.component';
|
8
|
-
import {
|
8
|
+
import { ScUpdateUserInfoDialogComponent } from './update-user-info-dialog/sc-update-user-info-dialog.component';
|
9
9
|
import { ScVerificationModule } from '../verification';
|
10
10
|
import { ScFormFieldsModule } from '../form-fields/form-fields.module';
|
11
11
|
import { ScUserPhoneApproveDialogComponent } from './user-phone-approve-dialog/sc-user-phone-approve-dialog.component';
|
@@ -16,7 +16,7 @@ import * as i0 from "@angular/core";
|
|
16
16
|
export class ScUserModule {
|
17
17
|
}
|
18
18
|
ScUserModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScUserModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
19
|
-
ScUserModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: ScUserModule, declarations: [ScResetUserPasswordComponent,
|
19
|
+
ScUserModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: ScUserModule, declarations: [ScResetUserPasswordComponent, ScUpdateUserInfoDialogComponent, ScUserPhoneApproveDialogComponent], imports: [CommonModule,
|
20
20
|
FormsModule,
|
21
21
|
ReactiveFormsModule,
|
22
22
|
TuiFieldErrorPipeModule,
|
@@ -35,7 +35,7 @@ ScUserModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
35
35
|
TuiCheckboxLabeledModule,
|
36
36
|
TuiDataListModule,
|
37
37
|
TuiSelectModule,
|
38
|
-
TuiModeModule], exports: [ScResetUserPasswordComponent,
|
38
|
+
TuiModeModule], exports: [ScResetUserPasswordComponent, ScUpdateUserInfoDialogComponent, ScUserPhoneApproveDialogComponent] });
|
39
39
|
ScUserModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScUserModule, imports: [CommonModule,
|
40
40
|
FormsModule,
|
41
41
|
ReactiveFormsModule,
|
@@ -59,7 +59,7 @@ ScUserModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
59
59
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScUserModule, decorators: [{
|
60
60
|
type: NgModule,
|
61
61
|
args: [{
|
62
|
-
declarations: [ScResetUserPasswordComponent,
|
62
|
+
declarations: [ScResetUserPasswordComponent, ScUpdateUserInfoDialogComponent, ScUserPhoneApproveDialogComponent],
|
63
63
|
imports: [
|
64
64
|
CommonModule,
|
65
65
|
FormsModule,
|
@@ -82,7 +82,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
82
82
|
TuiSelectModule,
|
83
83
|
TuiModeModule,
|
84
84
|
],
|
85
|
-
exports: [ScResetUserPasswordComponent,
|
85
|
+
exports: [ScResetUserPasswordComponent, ScUpdateUserInfoDialogComponent, ScUserPhoneApproveDialogComponent],
|
86
86
|
}]
|
87
87
|
}] });
|
88
|
-
//# sourceMappingURL=data:application/json;base64,
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtdXNlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvdXNlci9zYy11c2VyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLGlCQUFpQixFQUFFLHVCQUF1QixFQUFFLGNBQWMsRUFBRSxzQkFBc0IsRUFBRSxtQkFBbUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkwsT0FBTyxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsSyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdDLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ3RHLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLGdFQUFnRSxDQUFDO0FBQ2pILE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLG9FQUFvRSxDQUFDOztBQUV2SDs7R0FFRztBQTJCSCxNQUFNLE9BQU8sWUFBWTs7eUdBQVosWUFBWTswR0FBWixZQUFZLGlCQXpCTiw0QkFBNEIsRUFBRSwrQkFBK0IsRUFBRSxpQ0FBaUMsYUFFM0csWUFBWTtRQUNaLFdBQVc7UUFDWCxtQkFBbUI7UUFDbkIsdUJBQXVCO1FBQ3ZCLHNCQUFzQjtRQUN0QixlQUFlO1FBQ2YsY0FBYztRQUNkLGNBQWM7UUFDZCw0QkFBNEI7UUFDNUIsWUFBWTtRQUNaLG9CQUFvQjtRQUNwQixrQkFBa0I7UUFDbEIsZUFBZTtRQUNmLGNBQWM7UUFDZCxtQkFBbUI7UUFDbkIsaUJBQWlCO1FBQ2pCLHdCQUF3QjtRQUN4QixpQkFBaUI7UUFDakIsZUFBZTtRQUNmLGFBQWEsYUFFUCw0QkFBNEIsRUFBRSwrQkFBK0IsRUFBRSxpQ0FBaUM7MEdBRWpHLFlBQVksWUF2QmpCLFlBQVk7UUFDWixXQUFXO1FBQ1gsbUJBQW1CO1FBQ25CLHVCQUF1QjtRQUN2QixzQkFBc0I7UUFDdEIsZUFBZTtRQUNmLGNBQWM7UUFDZCxjQUFjO1FBQ2QsNEJBQTRCO1FBQzVCLFlBQVk7UUFDWixvQkFBb0I7UUFDcEIsa0JBQWtCO1FBQ2xCLGVBQWU7UUFDZixjQUFjO1FBQ2QsbUJBQW1CO1FBQ25CLGlCQUFpQjtRQUNqQix3QkFBd0I7UUFDeEIsaUJBQWlCO1FBQ2pCLGVBQWU7UUFDZixhQUFhOzJGQUlSLFlBQVk7a0JBMUJ4QixRQUFRO21CQUFDO29CQUNOLFlBQVksRUFBRSxDQUFDLDRCQUE0QixFQUFFLCtCQUErQixFQUFFLGlDQUFpQyxDQUFDO29CQUNoSCxPQUFPLEVBQUU7d0JBQ0wsWUFBWTt3QkFDWixXQUFXO3dCQUNYLG1CQUFtQjt3QkFDbkIsdUJBQXVCO3dCQUN2QixzQkFBc0I7d0JBQ3RCLGVBQWU7d0JBQ2YsY0FBYzt3QkFDZCxjQUFjO3dCQUNkLDRCQUE0Qjt3QkFDNUIsWUFBWTt3QkFDWixvQkFBb0I7d0JBQ3BCLGtCQUFrQjt3QkFDbEIsZUFBZTt3QkFDZixjQUFjO3dCQUNkLG1CQUFtQjt3QkFDbkIsaUJBQWlCO3dCQUNqQix3QkFBd0I7d0JBQ3hCLGlCQUFpQjt3QkFDakIsZUFBZTt3QkFDZixhQUFhO3FCQUNoQjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyw0QkFBNEIsRUFBRSwrQkFBK0IsRUFBRSxpQ0FBaUMsQ0FBQztpQkFDOUciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVHVpQ2hlY2tib3hMYWJlbGVkTW9kdWxlLCBUdWlDaGVja2JveE1vZHVsZSwgVHVpRmllbGRFcnJvclBpcGVNb2R1bGUsIFR1aUlucHV0TW9kdWxlLCBUdWlJbnB1dFBhc3N3b3JkTW9kdWxlLCBUdWlJbnB1dFBob25lTW9kdWxlLCBUdWlTZWxlY3RNb2R1bGUgfSBmcm9tICdAdGFpZ2EtdWkva2l0JztcbmltcG9ydCB7IFR1aUJ1dHRvbk1vZHVsZSwgVHVpRGF0YUxpc3RNb2R1bGUsIFR1aUVycm9yTW9kdWxlLCBUdWlMYWJlbE1vZHVsZSwgVHVpTG9hZGVyTW9kdWxlLCBUdWlNb2RlTW9kdWxlLCBUdWlUZXh0ZmllbGRDb250cm9sbGVyTW9kdWxlIH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHsgVHVpTGV0TW9kdWxlIH0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQgeyBTY1Jlc2V0VXNlclBhc3N3b3JkQ29tcG9uZW50IH0gZnJvbSAnLi9yZXNldC11c2VyLXBhc3N3b3JkL3NjLXJlc2V0LXVzZXItcGFzc3dvcmQuY29tcG9uZW50JztcbmltcG9ydCB7IFNjVXBkYXRlVXNlckluZm9EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuL3VwZGF0ZS11c2VyLWluZm8tZGlhbG9nL3NjLXVwZGF0ZS11c2VyLWluZm8tZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTY1ZlcmlmaWNhdGlvbk1vZHVsZSB9IGZyb20gJy4uL3ZlcmlmaWNhdGlvbic7XG5pbXBvcnQgeyBTY0Zvcm1GaWVsZHNNb2R1bGUgfSBmcm9tICcuLi9mb3JtLWZpZWxkcy9mb3JtLWZpZWxkcy5tb2R1bGUnO1xuaW1wb3J0IHsgU2NVc2VyUGhvbmVBcHByb3ZlRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi91c2VyLXBob25lLWFwcHJvdmUtZGlhbG9nL3NjLXVzZXItcGhvbmUtYXBwcm92ZS1kaWFsb2cuY29tcG9uZW50JztcblxuLyoqXG4gKiDQnNC+0LTRg9C70Ywg0LrQvtC80L/QvtC90LXQvdGC0L7QsiDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y8uXG4gKi9cbkBOZ01vZHVsZSh7XG4gICAgZGVjbGFyYXRpb25zOiBbU2NSZXNldFVzZXJQYXNzd29yZENvbXBvbmVudCwgU2NVcGRhdGVVc2VySW5mb0RpYWxvZ0NvbXBvbmVudCwgU2NVc2VyUGhvbmVBcHByb3ZlRGlhbG9nQ29tcG9uZW50XSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgICAgIFR1aUZpZWxkRXJyb3JQaXBlTW9kdWxlLFxuICAgICAgICBUdWlJbnB1dFBhc3N3b3JkTW9kdWxlLFxuICAgICAgICBUdWlCdXR0b25Nb2R1bGUsXG4gICAgICAgIFR1aUVycm9yTW9kdWxlLFxuICAgICAgICBUdWlMYWJlbE1vZHVsZSxcbiAgICAgICAgVHVpVGV4dGZpZWxkQ29udHJvbGxlck1vZHVsZSxcbiAgICAgICAgVHVpTGV0TW9kdWxlLFxuICAgICAgICBTY1ZlcmlmaWNhdGlvbk1vZHVsZSxcbiAgICAgICAgU2NGb3JtRmllbGRzTW9kdWxlLFxuICAgICAgICBUdWlMb2FkZXJNb2R1bGUsXG4gICAgICAgIFR1aUlucHV0TW9kdWxlLFxuICAgICAgICBUdWlJbnB1dFBob25lTW9kdWxlLFxuICAgICAgICBUdWlDaGVja2JveE1vZHVsZSxcbiAgICAgICAgVHVpQ2hlY2tib3hMYWJlbGVkTW9kdWxlLFxuICAgICAgICBUdWlEYXRhTGlzdE1vZHVsZSxcbiAgICAgICAgVHVpU2VsZWN0TW9kdWxlLFxuICAgICAgICBUdWlNb2RlTW9kdWxlLFxuICAgIF0sXG4gICAgZXhwb3J0czogW1NjUmVzZXRVc2VyUGFzc3dvcmRDb21wb25lbnQsIFNjVXBkYXRlVXNlckluZm9EaWFsb2dDb21wb25lbnQsIFNjVXNlclBob25lQXBwcm92ZURpYWxvZ0NvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIFNjVXNlck1vZHVsZSB7fVxuIl19
|
@@ -0,0 +1,105 @@
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Inject, Optional, Output } from '@angular/core';
|
2
|
+
import { FormGroup, FormControl, Validators } from '@angular/forms';
|
3
|
+
import { ScISuggestionType } from '@snabcentr/client-core';
|
4
|
+
import { SC_USER_INFO, SC_USER_PROVIDERS } from '../../providers/scUserProviders';
|
5
|
+
import { Subject, catchError, filter, map, of, skip, startWith, switchMap, tap } from 'rxjs';
|
6
|
+
import { tuiIsFalsy } from '@taiga-ui/cdk';
|
7
|
+
import { POLYMORPHEUS_CONTEXT } from '@tinkoff/ng-polymorpheus';
|
8
|
+
import * as i0 from "@angular/core";
|
9
|
+
import * as i1 from "@snabcentr/client-core";
|
10
|
+
import * as i2 from "@angular/common";
|
11
|
+
import * as i3 from "@angular/forms";
|
12
|
+
import * as i4 from "@taiga-ui/core";
|
13
|
+
import * as i5 from "@taiga-ui/cdk";
|
14
|
+
import * as i6 from "../../verification/verification-phone-check-form/sc-verification-phone-check-form.component";
|
15
|
+
import * as i7 from "../../form-fields/addresses-selection-field/sc-addresses-selection-field.component";
|
16
|
+
import * as i8 from "../../form-fields/suggestion-field/sc-suggestion-field.component";
|
17
|
+
import * as i9 from "@taiga-ui/kit";
|
18
|
+
import * as i10 from "rxjs";
|
19
|
+
/**
|
20
|
+
* Диалоговое окно изменения данных пользователя.
|
21
|
+
*/
|
22
|
+
export class ScUpdateUserInfoDialogComponent {
|
23
|
+
/**
|
24
|
+
* Инициализирует экземпляр класса {@link ScUpdateUserInfoDialogComponent}.
|
25
|
+
*
|
26
|
+
* @param user$ Поток информации о текущем пользователе.
|
27
|
+
* @param userService Сервис информации о пользователе.
|
28
|
+
* @param context Контекст диалогового окна, в котором открыт компонент.
|
29
|
+
*/
|
30
|
+
constructor(user$, userService, context) {
|
31
|
+
this.user$ = user$;
|
32
|
+
this.userService = userService;
|
33
|
+
this.context = context;
|
34
|
+
/**
|
35
|
+
* Перечисление типов подсказок.
|
36
|
+
*/
|
37
|
+
this.suggestionType = ScISuggestionType;
|
38
|
+
/**
|
39
|
+
* Группа полей ввода формы общих данных пользователя для их редактирования.
|
40
|
+
*/
|
41
|
+
this.form = new FormGroup({
|
42
|
+
name: new FormControl(null, [Validators.required, Validators.minLength(3)]),
|
43
|
+
email: new FormControl(null, [Validators.required, Validators.email]),
|
44
|
+
phone: new FormControl(null, [Validators.required, Validators.minLength(12)]),
|
45
|
+
verificationCode: new FormControl(null, [Validators.required, Validators.minLength(6)]),
|
46
|
+
cityId: new FormControl(null, Validators.required),
|
47
|
+
getNews: new FormControl(false),
|
48
|
+
});
|
49
|
+
/**
|
50
|
+
* Сигнал нажатия на кнопку "Отмена".
|
51
|
+
*/
|
52
|
+
this.cancelButtonClick = new EventEmitter();
|
53
|
+
/**
|
54
|
+
* Сигнал события успешного обновления данных пользователя.
|
55
|
+
*/
|
56
|
+
this.successUpdateDate = this.user$.pipe(skip(1));
|
57
|
+
/**
|
58
|
+
* {@link Subject} события отправки формы.
|
59
|
+
*/
|
60
|
+
this.onSubmit = new Subject();
|
61
|
+
/**
|
62
|
+
* {@link Observable} запроса обновления данных пользователя.
|
63
|
+
*/
|
64
|
+
this.request$ = this.onSubmit.pipe(filter(() => this.form.valid), map(() => this.form.value), switchMap((value) => this.userService.updateUserInfo$(value).pipe(switchMap(() => this.userService.updateUserChange$()), tap((user) => this.context?.completeWith(user)), catchError((error) => {
|
65
|
+
const errorResponse = error.error;
|
66
|
+
for (const key in errorResponse.errors) {
|
67
|
+
this.form.get(key)?.setErrors({ serverResponse: errorResponse.errors[`${key}`] });
|
68
|
+
}
|
69
|
+
if (!errorResponse.errors && errorResponse.message) {
|
70
|
+
this.form.setErrors({ serverResponse: [errorResponse.message] });
|
71
|
+
}
|
72
|
+
return of({});
|
73
|
+
}), startWith(null))));
|
74
|
+
/**
|
75
|
+
* {@link Observable} изменения состояния загрузки данных аутентификации по email.
|
76
|
+
*/
|
77
|
+
this.loading$ = this.request$.pipe(map(tuiIsFalsy));
|
78
|
+
this.user$.subscribe((user) => this.form.patchValue({
|
79
|
+
name: user.name,
|
80
|
+
email: user.contacts.email.value,
|
81
|
+
phone: user.contacts.phone.value,
|
82
|
+
cityId: user.city,
|
83
|
+
getNews: user.getNews,
|
84
|
+
}, { emitEvent: false }));
|
85
|
+
}
|
86
|
+
}
|
87
|
+
ScUpdateUserInfoDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScUpdateUserInfoDialogComponent, deps: [{ token: SC_USER_INFO }, { token: i1.ScUserService }, { token: POLYMORPHEUS_CONTEXT, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
88
|
+
ScUpdateUserInfoDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScUpdateUserInfoDialogComponent, selector: "sc-update-user-info-dialog", outputs: { cancelButtonClick: "cancelButtonClick", successUpdateDate: "successUpdateDate" }, providers: [SC_USER_PROVIDERS], ngImport: i0, template: "<form [formGroup]=\"form\" *ngIf=\"user$ | async as user\" (ngSubmit)=\"onSubmit.next()\" class=\"flex flex-col gap-4\">\n <label [tuiLabel]=\"user.isOrg ? '\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u043B\u0438 \u0418\u041F' : '\u0424.\u0418.\u041E.'\">\n <tui-input formControlName=\"name\">\n {{ user.isOrg ? '\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u043B\u0438 \u0418\u041F' : '\u0424.\u0418.\u041E.' }}\n <ng-container *ngIf=\"user.isOrg\">\n <sc-suggestion-field *tuiDataList [type]=\"suggestionType.organization\"></sc-suggestion-field>\n </ng-container>\n </tui-input>\n <tui-error formControlName=\"name\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <sc-verification-phone-check-form\n *tuiLet=\"user.contacts.phone.value === form.value.phone as phoneIsChange\"\n [showCodeFields]=\"!phoneIsChange\"\n [shouldBeBusy]=\"phoneIsChange\"\n class=\"w-full\"\n ></sc-verification-phone-check-form>\n <label tuiLabel=\"\u0410\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B\" class=\"w-full\">\n <tui-input formControlName=\"email\">\n \u0410\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B\n <sc-suggestion-field *tuiDataList [type]=\"suggestionType.email\"></sc-suggestion-field>\n </tui-input>\n <tui-error formControlName=\"email\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <sc-addresses-selection-field></sc-addresses-selection-field>\n <tui-checkbox-labeled formControlName=\"getNews\" class=\"w-full\"> \u042F \u0445\u043E\u0447\u0443 \u043F\u043E\u043B\u0443\u0447\u0430\u0442\u044C \u0440\u0430\u0441\u0441\u044B\u043B\u043A\u0443 \u0421\u043D\u0430\u0431\u0446\u0435\u043D\u0442\u0440 \u043E \u0441\u043A\u0438\u0434\u043A\u0430\u0445 \u0438 \u043D\u043E\u0432\u043E\u0441\u0442\u044F\u0445 \u043F\u043E \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u0435. </tui-checkbox-labeled>\n <div class=\"flex gap-4 justify-center\">\n <button tuiButton (click)=\"context ? context.$implicit.complete() : cancelButtonClick.emit()\" type=\"button\" icon=\"tuiIconXLarge\" appearance=\"secondary\">\u041E\u0442\u043C\u0435\u043D\u0430</button>\n <button tuiButton tuiMode=\"onLight\" [disabled]=\"form.invalid\" [showLoader]=\"!!(loading$ | async)\" type=\"submit\" icon=\"scIconSave\">\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C</button>\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.TuiButtonComponent, selector: "button[tuiButton], button[tuiIconButton], a[tuiButton], a[tuiIconButton]", inputs: ["appearance", "disabled", "icon", "iconRight", "shape", "showLoader", "size"] }, { kind: "component", type: i4.TuiErrorComponent, selector: "tui-error", inputs: ["error"] }, { kind: "component", type: i4.TuiLabelComponent, selector: "label[tuiLabel]", inputs: ["tuiLabel", "context"] }, { kind: "directive", type: i5.TuiLetDirective, selector: "[tuiLet]", inputs: ["tuiLet"] }, { kind: "component", type: i6.ScVerificationPhoneCheckFormComponent, selector: "sc-verification-phone-check-form", inputs: ["showCodeFields", "readOnly", "shouldBeBusy", "shouldBeConfirmed", "haveCode"], outputs: ["haveCodeChange"] }, { kind: "component", type: i7.ScAddressesSelectionFieldComponent, selector: "sc-addresses-selection-field" }, { kind: "component", type: i8.ScSuggestionFieldComponent, selector: "sc-suggestion-field", inputs: ["type"] }, { kind: "component", type: i9.TuiInputComponent, selector: "tui-input" }, { kind: "directive", type: i9.TuiInputDirective, selector: "tui-input" }, { kind: "component", type: i9.TuiCheckboxLabeledComponent, selector: "tui-checkbox-labeled", inputs: ["size"] }, { kind: "directive", type: i4.TuiDataListDirective, selector: "ng-template[tuiDataList]" }, { kind: "directive", type: i4.TuiModeDirective, selector: "[tuiMode]", inputs: ["tuiMode"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i9.TuiFieldErrorPipe, name: "tuiFieldError" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
89
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScUpdateUserInfoDialogComponent, decorators: [{
|
90
|
+
type: Component,
|
91
|
+
args: [{ selector: 'sc-update-user-info-dialog', providers: [SC_USER_PROVIDERS], changeDetection: ChangeDetectionStrategy.OnPush, template: "<form [formGroup]=\"form\" *ngIf=\"user$ | async as user\" (ngSubmit)=\"onSubmit.next()\" class=\"flex flex-col gap-4\">\n <label [tuiLabel]=\"user.isOrg ? '\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u043B\u0438 \u0418\u041F' : '\u0424.\u0418.\u041E.'\">\n <tui-input formControlName=\"name\">\n {{ user.isOrg ? '\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u043B\u0438 \u0418\u041F' : '\u0424.\u0418.\u041E.' }}\n <ng-container *ngIf=\"user.isOrg\">\n <sc-suggestion-field *tuiDataList [type]=\"suggestionType.organization\"></sc-suggestion-field>\n </ng-container>\n </tui-input>\n <tui-error formControlName=\"name\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <sc-verification-phone-check-form\n *tuiLet=\"user.contacts.phone.value === form.value.phone as phoneIsChange\"\n [showCodeFields]=\"!phoneIsChange\"\n [shouldBeBusy]=\"phoneIsChange\"\n class=\"w-full\"\n ></sc-verification-phone-check-form>\n <label tuiLabel=\"\u0410\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B\" class=\"w-full\">\n <tui-input formControlName=\"email\">\n \u0410\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B\n <sc-suggestion-field *tuiDataList [type]=\"suggestionType.email\"></sc-suggestion-field>\n </tui-input>\n <tui-error formControlName=\"email\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <sc-addresses-selection-field></sc-addresses-selection-field>\n <tui-checkbox-labeled formControlName=\"getNews\" class=\"w-full\"> \u042F \u0445\u043E\u0447\u0443 \u043F\u043E\u043B\u0443\u0447\u0430\u0442\u044C \u0440\u0430\u0441\u0441\u044B\u043B\u043A\u0443 \u0421\u043D\u0430\u0431\u0446\u0435\u043D\u0442\u0440 \u043E \u0441\u043A\u0438\u0434\u043A\u0430\u0445 \u0438 \u043D\u043E\u0432\u043E\u0441\u0442\u044F\u0445 \u043F\u043E \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u0435. </tui-checkbox-labeled>\n <div class=\"flex gap-4 justify-center\">\n <button tuiButton (click)=\"context ? context.$implicit.complete() : cancelButtonClick.emit()\" type=\"button\" icon=\"tuiIconXLarge\" appearance=\"secondary\">\u041E\u0442\u043C\u0435\u043D\u0430</button>\n <button tuiButton tuiMode=\"onLight\" [disabled]=\"form.invalid\" [showLoader]=\"!!(loading$ | async)\" type=\"submit\" icon=\"scIconSave\">\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C</button>\n </div>\n</form>\n" }]
|
92
|
+
}], ctorParameters: function () { return [{ type: i10.Observable, decorators: [{
|
93
|
+
type: Inject,
|
94
|
+
args: [SC_USER_INFO]
|
95
|
+
}] }, { type: i1.ScUserService }, { type: undefined, decorators: [{
|
96
|
+
type: Optional
|
97
|
+
}, {
|
98
|
+
type: Inject,
|
99
|
+
args: [POLYMORPHEUS_CONTEXT]
|
100
|
+
}] }]; }, propDecorators: { cancelButtonClick: [{
|
101
|
+
type: Output
|
102
|
+
}], successUpdateDate: [{
|
103
|
+
type: Output
|
104
|
+
}] } });
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtdXBkYXRlLXVzZXItaW5mby1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL3VzZXIvdXBkYXRlLXVzZXItaW5mby1kaWFsb2cvc2MtdXBkYXRlLXVzZXItaW5mby1kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL3VzZXIvdXBkYXRlLXVzZXItaW5mby1kaWFsb2cvc2MtdXBkYXRlLXVzZXItaW5mby1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0csT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQUF5QixpQkFBaUIsRUFBOEMsTUFBTSx3QkFBd0IsQ0FBQztBQUM5SCxPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbEYsT0FBTyxFQUFjLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXpHLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7Ozs7OztBQUVoRTs7R0FFRztBQU9ILE1BQU0sT0FBTywrQkFBK0I7SUFtRXhDOzs7Ozs7T0FNRztJQUNILFlBQzBDLEtBQXlCLEVBQzlDLFdBQTBCLEVBRzNCLE9BQW1FO1FBSjdDLFVB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SixDQUNKLENBQUM7UUFFRjs7V0FFRztRQUNhLGFBQVEsR0FBd0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFnQmhGLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQ2hCO1lBQ0ksSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUs7WUFDaEMsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUs7WUFDaEMsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2pCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztTQUN4QixFQUNELEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUN2QixDQUNKLENBQUM7SUFDTixDQUFDOzs0SEE3RlEsK0JBQStCLGtCQTJFNUIsWUFBWSwwQ0FHWixvQkFBb0I7Z0hBOUV2QiwrQkFBK0Isa0pBSDdCLENBQUMsaUJBQWlCLENBQUMsMEJDakJsQywweUZBOEJBOzJGRFZhLCtCQUErQjtrQkFOM0MsU0FBUzsrQkFDSSw0QkFBNEIsYUFFM0IsQ0FBQyxpQkFBaUIsQ0FBQyxtQkFDYix1QkFBdUIsQ0FBQyxNQUFNOzswQkE2RTFDLE1BQU07MkJBQUMsWUFBWTs7MEJBRW5CLFFBQVE7OzBCQUNSLE1BQU07MkJBQUMsb0JBQW9COzRDQXhEaEIsaUJBQWlCO3NCQURoQyxNQUFNO2dCQU9TLGlCQUFpQjtzQkFEaEMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBPcHRpb25hbCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAsIEZvcm1Db250cm9sLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU2NJUGhvbmVPbkRhdGFBcHByb3ZlLCBTY0lTdWdnZXN0aW9uVHlwZSwgU2NJVXNlck9uRGF0YVVwZGF0ZSwgU2NVc2VyLCBTY1VzZXJTZXJ2aWNlIH0gZnJvbSAnQHNuYWJjZW50ci9jbGllbnQtY29yZSc7XG5pbXBvcnQgeyBTQ19VU0VSX0lORk8sIFNDX1VTRVJfUFJPVklERVJTIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL3NjVXNlclByb3ZpZGVycyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBjYXRjaEVycm9yLCBmaWx0ZXIsIG1hcCwgb2YsIHNraXAsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgdHVpSXNGYWxzeSB9IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHsgQXBpRXJyb3JSZXNwb25zZSB9IGZyb20gJy4uLy4uL2F1dGgnO1xuaW1wb3J0IHsgVHVpRGlhbG9nQ29udGV4dCB9IGZyb20gJ0B0YWlnYS11aS9jb3JlJztcbmltcG9ydCB7IFBPTFlNT1JQSEVVU19DT05URVhUIH0gZnJvbSAnQHRpbmtvZmYvbmctcG9seW1vcnBoZXVzJztcblxuLyoqXG4gKiDQlNC40LDQu9C+0LPQvtCy0L7QtSDQvtC60L3QviDQuNC30LzQtdC90LXQvdC40Y8g0LTQsNC90L3Ri9GFINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjy5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdzYy11cGRhdGUtdXNlci1pbmZvLWRpYWxvZycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NjLXVwZGF0ZS11c2VyLWluZm8tZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtTQ19VU0VSX1BST1ZJREVSU10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNjVXBkYXRlVXNlckluZm9EaWFsb2dDb21wb25lbnQge1xuICAgIC8qKlxuICAgICAqINCf0LXRgNC10YfQuNGB0LvQtdC90LjQtSDRgtC40L/QvtCyINC/0L7QtNGB0LrQsNC30L7Qui5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgc3VnZ2VzdGlvblR5cGU6IHR5cGVvZiBTY0lTdWdnZXN0aW9uVHlwZSA9IFNjSVN1Z2dlc3Rpb25UeXBlO1xuXG4gICAgLyoqXG4gICAgICog0JPRgNGD0L/Qv9CwINC/0L7Qu9C10Lkg0LLQstC+0LTQsCDRhNC+0YDQvNGLINC+0LHRidC40YUg0LTQsNC90L3Ri9GFINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjyDQtNC70Y8g0LjRhSDRgNC10LTQsNC60YLQuNGA0L7QstCw0L3QuNGPLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBmb3JtID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICAgIG5hbWU6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoMyldKSxcbiAgICAgICAgZW1haWw6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5lbWFpbF0pLFxuICAgICAgICBwaG9uZTogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCgxMildKSxcbiAgICAgICAgdmVyaWZpY2F0aW9uQ29kZTogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCg2KV0pLFxuICAgICAgICBjaXR5SWQ6IG5ldyBGb3JtQ29udHJvbDxudW1iZXIgfCBudWxsPihudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgICAgZ2V0TmV3czogbmV3IEZvcm1Db250cm9sPGJvb2xlYW4+KGZhbHNlKSxcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqINCh0LjQs9C90LDQuyDQvdCw0LbQsNGC0LjRjyDQvdCwINC60L3QvtC/0LrRgyBcItCe0YLQvNC10L3QsFwiLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyByZWFkb25seSBjYW5jZWxCdXR0b25DbGljazogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqXG4gICAgICog0KHQuNCz0L3QsNC7INGB0L7QsdGL0YLQuNGPINGD0YHQv9C10YjQvdC+0LPQviDQvtCx0L3QvtCy0LvQtdC90LjRjyDQtNCw0L3QvdGL0YUg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyByZWFkb25seSBzdWNjZXNzVXBkYXRlRGF0ZTogT2JzZXJ2YWJsZTxTY1VzZXI+ID0gdGhpcy51c2VyJC5waXBlKHNraXAoMSkpO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIFN1YmplY3R9INGB0L7QsdGL0YLQuNGPINC+0YLQv9GA0LDQstC60Lgg0YTQvtGA0LzRiy5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgb25TdWJtaXQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INC30LDQv9GA0L7RgdCwINC+0LHQvdC+0LLQu9C10L3QuNGPINC00LDQvdC90YvRhSDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y8uXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSByZXF1ZXN0JCA9IHRoaXMub25TdWJtaXQucGlwZShcbiAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMuZm9ybS52YWxpZCksXG4gICAgICAgIG1hcCgoKSA9PiB0aGlzLmZvcm0udmFsdWUgYXMgU2NJVXNlck9uRGF0YVVwZGF0ZSB8IFNjSVBob25lT25EYXRhQXBwcm92ZSksXG4gICAgICAgIHN3aXRjaE1hcCgodmFsdWUpID0+XG4gICAgICAgICAgICB0aGlzLnVzZXJTZXJ2aWNlLnVwZGF0ZVVzZXJJbmZvJCh2YWx1ZSkucGlwZShcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy51c2VyU2VydmljZS51cGRhdGVVc2VyQ2hhbmdlJCgpKSxcbiAgICAgICAgICAgICAgICB0YXAoKHVzZXIpID0+IHRoaXMuY29udGV4dD8uY29tcGxldGVXaXRoKHVzZXIpKSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3JSZXNwb25zZSA9IGVycm9yLmVycm9yIGFzIEFwaUVycm9yUmVzcG9uc2U7XG5cbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gZXJyb3JSZXNwb25zZS5lcnJvcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoa2V5KT8uc2V0RXJyb3JzKHsgc2VydmVyUmVzcG9uc2U6IGVycm9yUmVzcG9uc2UuZXJyb3JzW2Ake2tleX1gXSB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmICghZXJyb3JSZXNwb25zZS5lcnJvcnMgJiYgZXJyb3JSZXNwb25zZS5tZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0uc2V0RXJyb3JzKHsgc2VydmVyUmVzcG9uc2U6IFtlcnJvclJlc3BvbnNlLm1lc3NhZ2VdIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZih7fSBhcyBTY1VzZXIpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHN0YXJ0V2l0aChudWxsKVxuICAgICAgICAgICAgKVxuICAgICAgICApXG4gICAgKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQuNC30LzQtdC90LXQvdC40Y8g0YHQvtGB0YLQvtGP0L3QuNGPINC30LDQs9GA0YPQt9C60Lgg0LTQsNC90L3Ri9GFINCw0YPRgtC10L3RgtC40YTQuNC60LDRhtC40Lgg0L/QviBlbWFpbC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgbG9hZGluZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLnJlcXVlc3QkLnBpcGUobWFwKHR1aUlzRmFsc3kpKTtcblxuICAgIC8qKlxuICAgICAqINCY0L3QuNGG0LjQsNC70LjQt9C40YDRg9C10YIg0Y3QutC30LXQvNC/0LvRj9GAINC60LvQsNGB0YHQsCB7QGxpbmsgU2NVcGRhdGVVc2VySW5mb0RpYWxvZ0NvbXBvbmVudH0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdXNlciQg0J/QvtGC0L7QuiDQuNC90YTQvtGA0LzQsNGG0LjQuCDQviDRgtC10LrRg9GJ0LXQvCDQv9C+0LvRjNC30L7QstCw0YLQtdC70LUuXG4gICAgICogQHBhcmFtIHVzZXJTZXJ2aWNlINCh0LXRgNCy0LjRgSDQuNC90YTQvtGA0LzQsNGG0LjQuCDQviDQv9C+0LvRjNC30L7QstCw0YLQtdC70LUuXG4gICAgICogQHBhcmFtIGNvbnRleHQg0JrQvtC90YLQtdC60YHRgiDQtNC40LDQu9C+0LPQvtCy0L7Qs9C+INC+0LrQvdCwLCDQsiDQutC+0YLQvtGA0L7QvCDQvtGC0LrRgNGL0YIg0LrQvtC80L/QvtC90LXQvdGCLlxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChTQ19VU0VSX0lORk8pIHB1YmxpYyByZWFkb25seSB1c2VyJDogT2JzZXJ2YWJsZTxTY1VzZXI+LFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHVzZXJTZXJ2aWNlOiBTY1VzZXJTZXJ2aWNlLFxuICAgICAgICBAT3B0aW9uYWwoKVxuICAgICAgICBASW5qZWN0KFBPTFlNT1JQSEVVU19DT05URVhUKVxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgY29udGV4dD86IFR1aURpYWxvZ0NvbnRleHQ8U2NVc2VyLCBTY1VwZGF0ZVVzZXJJbmZvRGlhbG9nQ29tcG9uZW50PlxuICAgICkge1xuICAgICAgICB0aGlzLnVzZXIkLnN1YnNjcmliZSgodXNlcikgPT5cbiAgICAgICAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogdXNlci5uYW1lLFxuICAgICAgICAgICAgICAgICAgICBlbWFpbDogdXNlci5jb250YWN0cy5lbWFpbC52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgcGhvbmU6IHVzZXIuY29udGFjdHMucGhvbmUudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIGNpdHlJZDogdXNlci5jaXR5LFxuICAgICAgICAgICAgICAgICAgICBnZXROZXdzOiB1c2VyLmdldE5ld3MsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cbn1cbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiICpuZ0lmPVwidXNlciQgfCBhc3luYyBhcyB1c2VyXCIgKG5nU3VibWl0KT1cIm9uU3VibWl0Lm5leHQoKVwiIGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtNFwiPlxuICAgIDxsYWJlbCBbdHVpTGFiZWxdPVwidXNlci5pc09yZyA/ICfQndCw0LfQstCw0L3QuNC1INC+0YDQs9Cw0L3QuNC30LDRhtC40Lgg0LjQu9C4INCY0J8nIDogJ9CkLtCYLtCeLidcIj5cbiAgICAgICAgPHR1aS1pbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCI+XG4gICAgICAgICAgICB7eyB1c2VyLmlzT3JnID8gJ9Cd0LDQt9Cy0LDQvdC40LUg0L7RgNCz0LDQvdC40LfQsNGG0LjQuCDQuNC70Lgg0JjQnycgOiAn0KQu0Jgu0J4uJyB9fVxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInVzZXIuaXNPcmdcIj5cbiAgICAgICAgICAgICAgICA8c2Mtc3VnZ2VzdGlvbi1maWVsZCAqdHVpRGF0YUxpc3QgW3R5cGVdPVwic3VnZ2VzdGlvblR5cGUub3JnYW5pemF0aW9uXCI+PC9zYy1zdWdnZXN0aW9uLWZpZWxkPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvdHVpLWlucHV0PlxuICAgICAgICA8dHVpLWVycm9yIGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIiBbZXJyb3JdPVwiW10gfCB0dWlGaWVsZEVycm9yIHwgYXN5bmNcIj48L3R1aS1lcnJvcj5cbiAgICA8L2xhYmVsPlxuICAgIDxzYy12ZXJpZmljYXRpb24tcGhvbmUtY2hlY2stZm9ybVxuICAgICAgICAqdHVpTGV0PVwidXNlci5jb250YWN0cy5waG9uZS52YWx1ZSA9PT0gZm9ybS52YWx1ZS5waG9uZSBhcyBwaG9uZUlzQ2hhbmdlXCJcbiAgICAgICAgW3Nob3dDb2RlRmllbGRzXT1cIiFwaG9uZUlzQ2hhbmdlXCJcbiAgICAgICAgW3Nob3VsZEJlQnVzeV09XCJwaG9uZUlzQ2hhbmdlXCJcbiAgICAgICAgY2xhc3M9XCJ3LWZ1bGxcIlxuICAgID48L3NjLXZlcmlmaWNhdGlvbi1waG9uZS1jaGVjay1mb3JtPlxuICAgIDxsYWJlbCB0dWlMYWJlbD1cItCQ0LTRgNC10YEg0Y3Qu9C10LrRgtGA0L7QvdC90L7QuSDQv9C+0YfRgtGLXCIgY2xhc3M9XCJ3LWZ1bGxcIj5cbiAgICAgICAgPHR1aS1pbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJlbWFpbFwiPlxuICAgICAgICAgICAg0JDQtNGA0LXRgSDRjdC70LXQutGC0YDQvtC90L3QvtC5INC/0L7Rh9GC0YtcbiAgICAgICAgICAgIDxzYy1zdWdnZXN0aW9uLWZpZWxkICp0dWlEYXRhTGlzdCBbdHlwZV09XCJzdWdnZXN0aW9uVHlwZS5lbWFpbFwiPjwvc2Mtc3VnZ2VzdGlvbi1maWVsZD5cbiAgICAgICAgPC90dWktaW5wdXQ+XG4gICAgICAgIDx0dWktZXJyb3IgZm9ybUNvbnRyb2xOYW1lPVwiZW1haWxcIiBbZXJyb3JdPVwiW10gfCB0dWlGaWVsZEVycm9yIHwgYXN5bmNcIj48L3R1aS1lcnJvcj5cbiAgICA8L2xhYmVsPlxuICAgIDxzYy1hZGRyZXNzZXMtc2VsZWN0aW9uLWZpZWxkPjwvc2MtYWRkcmVzc2VzLXNlbGVjdGlvbi1maWVsZD5cbiAgICA8dHVpLWNoZWNrYm94LWxhYmVsZWQgZm9ybUNvbnRyb2xOYW1lPVwiZ2V0TmV3c1wiIGNsYXNzPVwidy1mdWxsXCI+INCvINGF0L7Rh9GDINC/0L7Qu9GD0YfQsNGC0Ywg0YDQsNGB0YHRi9C70LrRgyDQodC90LDQsdGG0LXQvdGC0YAg0L4g0YHQutC40LTQutCw0YUg0Lgg0L3QvtCy0L7RgdGC0Y/RhSDQv9C+INGN0LvQtdC60YLRgNC+0L3QvdC+0Lkg0L/QvtGH0YLQtS4gPC90dWktY2hlY2tib3gtbGFiZWxlZD5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtNCBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICA8YnV0dG9uIHR1aUJ1dHRvbiAoY2xpY2spPVwiY29udGV4dCA/IGNvbnRleHQuJGltcGxpY2l0LmNvbXBsZXRlKCkgOiBjYW5jZWxCdXR0b25DbGljay5lbWl0KClcIiB0eXBlPVwiYnV0dG9uXCIgaWNvbj1cInR1aUljb25YTGFyZ2VcIiBhcHBlYXJhbmNlPVwic2Vjb25kYXJ5XCI+0J7RgtC80LXQvdCwPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gdHVpQnV0dG9uIHR1aU1vZGU9XCJvbkxpZ2h0XCIgW2Rpc2FibGVkXT1cImZvcm0uaW52YWxpZFwiIFtzaG93TG9hZGVyXT1cIiEhKGxvYWRpbmckIHwgYXN5bmMpXCIgdHlwZT1cInN1Ym1pdFwiIGljb249XCJzY0ljb25TYXZlXCI+0KHQvtGF0YDQsNC90LjRgtGMPC9idXR0b24+XG4gICAgPC9kaXY+XG48L2Zvcm0+XG4iXX0=
|