ets-fe-ng-sdk 17.0.430 → 18.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/Reusables/reusable-comps/find-item/find-item.component.mjs +4 -4
- package/esm2022/lib/Reusables/reusable-comps/find-item/find-item.module.mjs +4 -4
- package/esm2022/lib/Reusables/reusable-comps/watermark/watermark.component.mjs +3 -3
- package/esm2022/lib/Reusables/reusable-pages/extra-pages/extra-pages-routing.module.mjs +4 -4
- package/esm2022/lib/Reusables/reusable-pages/extra-pages/extra-pages.module.mjs +4 -4
- package/esm2022/lib/Reusables/reusable-pages/logger/logger-routing.module.mjs +4 -4
- package/esm2022/lib/Reusables/reusable-pages/logger/logger.component.mjs +4 -4
- package/esm2022/lib/Reusables/reusable-pages/logger/logger.interface.mjs +1 -1
- package/esm2022/lib/Reusables/reusable-pages/logger/logger.module.mjs +4 -4
- package/esm2022/lib/Reusables/reusable-pages/logger/logger.service.mjs +3 -3
- package/esm2022/lib/Reusables/reusable-pages/page-not-found/page-not-found.component.mjs +3 -3
- package/esm2022/lib/Reusables/reusable-pages/reset/reset-routing.module.mjs +4 -4
- package/esm2022/lib/Reusables/reusable-pages/reset/reset.component.mjs +4 -4
- package/esm2022/lib/Reusables/reusable-pages/reset/reset.module.mjs +4 -4
- package/esm2022/lib/Reusables/reusable-pages/robot/robot-routing.module.mjs +4 -4
- package/esm2022/lib/Reusables/reusable-pages/robot/robot.component.mjs +3 -3
- package/esm2022/lib/Reusables/reusable-pages/robot/robot.module.mjs +4 -4
- package/esm2022/lib/Reusables/reusable-pages/timeout-tester/timeout-tester-routing.module.mjs +4 -4
- package/esm2022/lib/Reusables/reusable-pages/timeout-tester/timeout-tester.component.mjs +4 -4
- package/esm2022/lib/Reusables/reusable-pages/timeout-tester/timeout-tester.module.mjs +4 -4
- package/esm2022/lib/Reusables/reusable-pages/user-activity/ua-extras/user-activity.service.mjs +3 -3
- package/esm2022/lib/Reusables/reusable-pages/version/version-routing.module.mjs +4 -4
- package/esm2022/lib/Reusables/reusable-pages/version/version.component.mjs +3 -3
- package/esm2022/lib/Reusables/reusable-pages/version/version.module.mjs +4 -4
- package/esm2022/lib/Reusables/reusable-pages/version/version.service.mjs +4 -4
- package/esm2022/lib/Services/Interceptors/authentication-interceptor.service.mjs +5 -5
- package/esm2022/lib/Services/Interceptors/global-error-handler.service.mjs +3 -3
- package/esm2022/lib/Services/Interceptors/logger-interceptor.service.mjs +5 -5
- package/esm2022/lib/Services/Interceptors/request-loader-interceptor.service.mjs +5 -5
- package/esm2022/lib/Services/Interceptors/request-timeout.service.mjs +4 -4
- package/esm2022/lib/Services/api.service.mjs +4 -4
- package/esm2022/lib/Services/app.service.mjs +3 -3
- package/esm2022/lib/Services/base.effect.mjs +3 -3
- package/esm2022/lib/Services/base.facade.service.mjs +1 -1
- package/esm2022/lib/Services/base.service.mjs +4 -4
- package/esm2022/lib/Services/cache/cache-updater.service.mjs +3 -3
- package/esm2022/lib/Services/cache/cache.service.mjs +4 -4
- package/esm2022/lib/Services/cache/local-cache.service.mjs +4 -4
- package/esm2022/lib/Services/cache/saver.service.mjs +3 -3
- package/esm2022/lib/Services/debouncer.service.mjs +4 -4
- package/esm2022/lib/Services/htmler.service.mjs +3 -3
- package/esm2022/lib/Services/input.service.mjs +4 -4
- package/esm2022/lib/Services/page-loader.service.mjs +7 -7
- package/esm2022/lib/Services/page.service.mjs +3 -3
- package/esm2022/lib/Services/route.service.mjs +4 -4
- package/esm2022/lib/Services/service-worker/check-for-update.service.mjs +4 -4
- package/esm2022/lib/Services/service-worker/handle-unrecoverable-state.service.mjs +3 -3
- package/esm2022/lib/Services/service-worker/log-update.service.mjs +4 -4
- package/esm2022/lib/Services/service-worker/prompt-update.service.mjs +3 -3
- package/esm2022/lib/Services/service-worker/service-worker.service.mjs +4 -4
- package/esm2022/lib/Services/storage.service.mjs +4 -4
- package/esm2022/lib/Services/theme.service.mjs +3 -3
- package/esm2022/lib/Services/translation.service.mjs +4 -4
- package/esm2022/lib/Services/utility.service.mjs +4 -4
- package/esm2022/lib/Services/window-security.service.mjs +4 -4
- package/esm2022/lib/Shared/classes/page-loader.class.mjs +1 -1
- package/esm2022/lib/Shared/components/add-item/add-item.component.mjs +3 -3
- package/esm2022/lib/Shared/components/autocomplete/autocomplete-td-rf/autocomplete-td-rf.component.mjs +4 -4
- package/esm2022/lib/Shared/components/autocomplete/autocomplete.component.mjs +4 -4
- package/esm2022/lib/Shared/components/autocomplete/autocomplete.service.mjs +4 -4
- package/esm2022/lib/Shared/components/btn/btn-lg/btn-lg.component.mjs +3 -3
- package/esm2022/lib/Shared/components/btn/btn-link/btn-link.component.mjs +3 -3
- package/esm2022/lib/Shared/components/btn/btn.component.mjs +4 -4
- package/esm2022/lib/Shared/components/btn/btn.service.mjs +4 -4
- package/esm2022/lib/Shared/components/btn/details-btn/details-btn.component.mjs +3 -3
- package/esm2022/lib/Shared/components/card/card.component.mjs +3 -3
- package/esm2022/lib/Shared/components/confirm-dialog/confirm-dialog.component.mjs +3 -3
- package/esm2022/lib/Shared/components/confirm-dialog/confirm-dialog.service.mjs +4 -4
- package/esm2022/lib/Shared/components/core/button/button.component.mjs +3 -3
- package/esm2022/lib/Shared/components/documents-name-display/documents-name-display.component.mjs +4 -4
- package/esm2022/lib/Shared/components/editable-text-case/editable-text-case.component.mjs +4 -4
- package/esm2022/lib/Shared/components/export-table/export-table.component.mjs +4 -4
- package/esm2022/lib/Shared/components/fields-to-display/fields-to-display.component.mjs +4 -4
- package/esm2022/lib/Shared/components/file-upload/file-upload.component.mjs +4 -4
- package/esm2022/lib/Shared/components/form-error/form-error.component.mjs +4 -4
- package/esm2022/lib/Shared/components/form-generator/form-generated-value/form-generated-value.component.mjs +6 -6
- package/esm2022/lib/Shared/components/form-generator/form-generator.base.component.mjs +11 -2
- package/esm2022/lib/Shared/components/form-generator/form-generator.component.mjs +4 -4
- package/esm2022/lib/Shared/components/form-generator/form-generator.service.mjs +3 -3
- package/esm2022/lib/Shared/components/form-link/form-link.component.mjs +3 -3
- package/esm2022/lib/Shared/components/form-tab-headers/form-tab-headers.component.mjs +3 -3
- package/esm2022/lib/Shared/components/index-comp-layout/index-comp-layout.component.mjs +7 -7
- package/esm2022/lib/Shared/components/info-dialog/info-dialog.component.mjs +4 -4
- package/esm2022/lib/Shared/components/info-dialog/info-dialog.service.mjs +4 -4
- package/esm2022/lib/Shared/components/info-icon/info-icon.component.mjs +3 -3
- package/esm2022/lib/Shared/components/input/date-input/date-input.component.mjs +5 -5
- package/esm2022/lib/Shared/components/input/day-hour-min-input/day-hour-min-input.component.mjs +4 -4
- package/esm2022/lib/Shared/components/input/input-base.component.mjs +4 -4
- package/esm2022/lib/Shared/components/input/input-basic.component.mjs +4 -4
- package/esm2022/lib/Shared/components/input/input-control.component.mjs +3 -3
- package/esm2022/lib/Shared/components/input/input-label/input-label.component.mjs +3 -3
- package/esm2022/lib/Shared/components/input/input-td-rf.component.mjs +4 -4
- package/esm2022/lib/Shared/components/input/input.component.mjs +3 -3
- package/esm2022/lib/Shared/components/input/input.service.mjs +4 -4
- package/esm2022/lib/Shared/components/input/inputs-pipes.pipe.mjs +26 -26
- package/esm2022/lib/Shared/components/input/validation-message/validation-message.component.mjs +6 -6
- package/esm2022/lib/Shared/components/input/validation-message/validation-message.service.mjs +3 -3
- package/esm2022/lib/Shared/components/input/year-month-td-rf/year-month-td-rf.component.mjs +3 -3
- package/esm2022/lib/Shared/components/input-NgModel/input-ngmodel.component.mjs +4 -4
- package/esm2022/lib/Shared/components/input-NgModel/validation-message-ngmodel/validation-message-ngmodel.component.mjs +3 -3
- package/esm2022/lib/Shared/components/input-table/input-table.component.mjs +4 -4
- package/esm2022/lib/Shared/components/input-table/input-table.service.mjs +3 -3
- package/esm2022/lib/Shared/components/label/label.component.mjs +3 -3
- package/esm2022/lib/Shared/components/loader/loader-animations/blinking-blocks/blinking-blocks.component.mjs +3 -3
- package/esm2022/lib/Shared/components/loader/loader-animations/bouncing-ball/bouncing-ball.component.mjs +3 -3
- package/esm2022/lib/Shared/components/loader/loader-animations/fading-bars/fading-bars.component.mjs +3 -3
- package/esm2022/lib/Shared/components/loader/loader-animations/fading-circles/fading-circles.component.mjs +3 -3
- package/esm2022/lib/Shared/components/loader/loader-animations/ring-ripples/ring-ripples.component.mjs +3 -3
- package/esm2022/lib/Shared/components/loader/loader.component.mjs +3 -3
- package/esm2022/lib/Shared/components/loader/spinner.component.mjs +3 -3
- package/esm2022/lib/Shared/components/modal/modal-body.directive.mjs +3 -3
- package/esm2022/lib/Shared/components/modal/modal-footer.directive.mjs +3 -3
- package/esm2022/lib/Shared/components/modal/modal.component.mjs +3 -3
- package/esm2022/lib/Shared/components/modal-form/modal-form.component.mjs +3 -3
- package/esm2022/lib/Shared/components/modal-header/modal-header.component.mjs +3 -3
- package/esm2022/lib/Shared/components/narration-history-comp/narration-history-comp.component.mjs +4 -4
- package/esm2022/lib/Shared/components/notifications/notifications.component.mjs +3 -3
- package/esm2022/lib/Shared/components/notifications/notifications.service.mjs +3 -3
- package/esm2022/lib/Shared/components/page-center-body/page-center-body.component.mjs +3 -3
- package/esm2022/lib/Shared/components/page-template/page-template.component.mjs +4 -4
- package/esm2022/lib/Shared/components/page-to-component/page-to-component.component.mjs +6 -6
- package/esm2022/lib/Shared/components/page-to-component/page-to-component.directive.mjs +3 -3
- package/esm2022/lib/Shared/components/page-to-component/page-to-component.service.mjs +3 -3
- package/esm2022/lib/Shared/components/paginator/paginator.component.mjs +4 -4
- package/esm2022/lib/Shared/components/phone-number/phone-number.component.mjs +4 -4
- package/esm2022/lib/Shared/components/phone-number/phone-number.model.mjs +1 -1
- package/esm2022/lib/Shared/components/phone-number/phone-number.service.mjs +3 -3
- package/esm2022/lib/Shared/components/rich-text-editor/rich-text-editor.component.mjs +12 -12
- package/esm2022/lib/Shared/components/rich-text-editor-rf/rich-text-editor-rf.component.mjs +12 -12
- package/esm2022/lib/Shared/components/row-actions/row-actions.component.mjs +3 -3
- package/esm2022/lib/Shared/components/svg-icon/svg-icon.component.mjs +3 -3
- package/esm2022/lib/Shared/components/svg-icon/svg-icon.service.mjs +3 -3
- package/esm2022/lib/Shared/components/table-https/table-https.component.mjs +4 -4
- package/esm2022/lib/Shared/components/table-input/table-input-row/table-input-row.component.mjs +3 -3
- package/esm2022/lib/Shared/components/table-input/table-input.component.mjs +4 -4
- package/esm2022/lib/Shared/components/table-plain/table-base.component.mjs +4 -4
- package/esm2022/lib/Shared/components/table-plain/table-plain.component.mjs +4 -4
- package/esm2022/lib/Shared/components/table-plain/table-plain.service.mjs +3 -3
- package/esm2022/lib/Shared/components/table-plain/table.pipe.mjs +20 -20
- package/esm2022/lib/Shared/components/text/text.component.mjs +3 -3
- package/esm2022/lib/Shared/components/text-area-modal/text-area-modal.component.mjs +3 -3
- package/esm2022/lib/Shared/components/text-area-modal/text-area-modal.service.mjs +3 -3
- package/esm2022/lib/Shared/components/text-case-1/text-case-1.component.mjs +4 -4
- package/esm2022/lib/Shared/components/text-case-2/text-case-2.component.mjs +3 -3
- package/esm2022/lib/Shared/components/text-case-2/text-case.service.mjs +4 -4
- package/esm2022/lib/Shared/components/text-case-input/text-case-input.component.mjs +3 -3
- package/esm2022/lib/Shared/components/toggle-input-form/toggle-input-form.component.mjs +3 -3
- package/esm2022/lib/Shared/components/translator-case/translator-case.component.mjs +3 -3
- package/esm2022/lib/Shared/components/vertical-nav/vertical-nav.component.mjs +4 -4
- package/esm2022/lib/Shared/components/view-form-buttons/view-form-buttons.component.mjs +3 -3
- package/esm2022/lib/Shared/components/webcam-media/webcam-media.component.mjs +4 -4
- package/esm2022/lib/Shared/directives/commafy-number.directive.mjs +3 -3
- package/esm2022/lib/Shared/directives/drag-drop-file-upload.directive.mjs +4 -4
- package/esm2022/lib/Shared/directives/form-invalid-class.directive.mjs +3 -3
- package/esm2022/lib/Shared/directives/index.directive.mjs +23 -23
- package/esm2022/lib/Shared/directives/input-formatter.directive.mjs +14 -14
- package/esm2022/lib/Shared/directives/integer-only.directive.mjs +4 -4
- package/esm2022/lib/Shared/directives/mHref.directive.mjs +3 -3
- package/esm2022/lib/Shared/directives/negative-number-only.directive.mjs +4 -4
- package/esm2022/lib/Shared/directives/responsiveness.directive.mjs +20 -20
- package/esm2022/lib/Shared/directives/translator.directive.mjs +4 -4
- package/esm2022/lib/Shared/models/form.class.mjs +1 -1
- package/esm2022/lib/Shared/pipes/form-invalid-class.pipe.mjs +3 -3
- package/esm2022/lib/Shared/pipes/paginator.pipe.mjs +3 -3
- package/esm2022/lib/Shared/pipes/translate.pipe.mjs +7 -7
- package/esm2022/lib/Shared/pipes/utility.pipe.mjs +134 -134
- package/esm2022/lib/Shared/prototypes/prototypes.mjs +1 -1
- package/esm2022/lib/Shared/shared.module.mjs +4 -4
- package/esm2022/lib/authentication/web-user/web-user-authentication.guard.mjs +1 -1
- package/esm2022/lib/authentication/web-user/web-user-authentication.interceptor.mjs +1 -1
- package/esm2022/lib/authentication/web-user/web-user-authentication.service.mjs +3 -3
- package/esm2022/lib/authentication/web-user/web-user-forgot-password.component.mjs +4 -4
- package/esm2022/lib/authentication/web-user/web-user-login.component.mjs +4 -4
- package/esm2022/lib/authentication/web-user/web-user-reset-password.component.mjs +4 -4
- package/esm2022/lib/configs/base-functions.mjs +1 -1
- package/fesm2022/ets-fe-ng-sdk.mjs +766 -758
- package/fesm2022/ets-fe-ng-sdk.mjs.map +1 -1
- package/lib/Services/utility.service.d.ts +5 -5
- package/lib/Shared/components/btn/btn.component.d.ts +3 -3
- package/lib/Shared/components/form-generator/form-generated-value/form-generated-value.component.d.ts +1 -1
- package/lib/Shared/components/form-generator/form-generator.base.component.d.ts +3 -0
- package/lib/Shared/components/index-comp-layout/index-comp-layout.component.d.ts +1 -1
- package/lib/Shared/components/input/input-base.component.d.ts +3 -7
- package/lib/Shared/components/table-https/table-https.component.d.ts +3 -3
- package/lib/Shared/components/text-case-2/text-case.service.d.ts +1 -1
- package/package.json +1 -1
|
@@ -173,10 +173,10 @@ export class TableInputComponent extends FormGeneratorComponent {
|
|
|
173
173
|
scheme.isRequired ||
|
|
174
174
|
this.singleFormStructure?.controls[scheme.field]?.hasValidator(Validators.required);
|
|
175
175
|
}
|
|
176
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
177
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
176
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: TableInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
177
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.0", type: TableInputComponent, isStandalone: true, selector: "table-input", inputs: { _formArray: { classPropertyName: "_formArray", publicName: "formArray", isSignal: false, isRequired: false, transformFunction: null }, filterContainerClass: { classPropertyName: "filterContainerClass", publicName: "filterContainerClass", isSignal: true, isRequired: false, transformFunction: null }, border: { classPropertyName: "border", publicName: "border", isSignal: true, isRequired: false, transformFunction: null }, isShow: { classPropertyName: "isShow", publicName: "isShow", isSignal: true, isRequired: false, transformFunction: null }, _pageSize: { classPropertyName: "_pageSize", publicName: "pageSize", isSignal: false, isRequired: false, transformFunction: null }, actionBtns: { classPropertyName: "actionBtns", publicName: "actionBtns", isSignal: true, isRequired: false, transformFunction: null }, _formSchema: { classPropertyName: "_formSchema", publicName: "formSchema", isSignal: false, isRequired: true, transformFunction: null }, singleFormStructure: { classPropertyName: "singleFormStructure", publicName: "singleFormStructure", isSignal: false, isRequired: true, transformFunction: null }, deleteRowFunc: { classPropertyName: "deleteRowFunc", publicName: "deleteRowFunc", isSignal: false, isRequired: false, transformFunction: null }, addRowFunc: { classPropertyName: "addRowFunc", publicName: "addRowFunc", isSignal: false, isRequired: false, transformFunction: null }, _usePaginator: { classPropertyName: "_usePaginator", publicName: "usePaginator", isSignal: false, isRequired: false, transformFunction: null }, tableClass: { classPropertyName: "tableClass", publicName: "tableClass", isSignal: true, isRequired: false, transformFunction: null } }, providers: [FilterFormArrayGroupPipe, PaginatorPipe], viewQueries: [{ propertyName: "paginatorComponent", first: true, predicate: PaginatorComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"table-input\">\n @if (filterForms()?.length) {\n <div class=\"mb-3 {{ filterContainerClass() }}\">\n <div class=\"d-flex\">\n <app-btn\n text=\"{{ filterSection.hidden ? 'Show Filter' : 'Hide Filter' }}\"\n [icon]=\"filterSection.hidden ? 'search' : 'close'\"\n (mclick)=\"filterSection.hidden = !filterSection.hidden\" />\n </div>\n <div class=\"border p-3 mt-3 rounded-10\" #filterSection [hidden]=\"true\">\n <form-generator [form]=\"filterForm\" [formSchema]=\"filterForms()\" [gridLGStyle]=\"3\" [showSubmitBtn]=\"false\" (mchange)=\"resetPaginator()\" />\n <div class=\"d-flex justify-content-end\">\n <app-btn type=\"danger-outline\" text=\"Clear\" (mclick)=\"filterForm.reset()\" />\n </div>\n </div>\n </div>\n }\n\n <div class=\"bg-white\" [ngClass]=\"{ 'border rounded-10': border() }\">\n <div class=\" \">\n <table class=\" {{ tableClass() }} \" [ngClass]=\"{ 'is-show-form': isShow() }\">\n <thead (click)=\"utilityService.logForm(filteredFormArray())\">\n <tr class=\"text-center\">\n @for (item of formSchema(); track item.label) {\n <th class=\"{{ item.cls }}\">\n {{ item.label | appTranslate | async }}\n {{ item.isRequired ? '*' : '' }}\n </th>\n }\n @if (!isShow()) {\n <th></th>\n <th></th>\n @for (actionBtn of actionBtns(); track actionBtn) {\n <th></th>\n }\n }\n </tr>\n </thead>\n <tbody>\n @for (subForm of paginatedAndFilteredFormArray(); track subForm; let i = $index) {\n <tr\n table-input-row\n (onAddRowFunc)=\"addRowClicked(subForm.index)\"\n [isShow]=\"isShow()\"\n [form]=\"subForm.form\"\n [actionBtns]=\"actionBtns()\"\n [formSchema]=\"formSchema()\"\n [childrenFormSchemaMap]=\"childrenFormSchemaMap\"\n (onDeleteRowFunc)=\"\n deleteRowClicked(subForm.index, subForm.form, {\n btn: $event?.btn\n })\n \"\n (onActionButtonClick)=\"handleActionButtonClick(subForm.index, subForm.form, $event)\"></tr>\n } @empty {\n <tr>\n <td class=\"text-center\" [colSpan]=\"formSchema()?.length\">\n {{ 'There are no items' | appTranslate | async }}\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n\n <div class=\"\" [hidden]=\"!usePaginator() || !filteredFormArrayLength() || filteredFormArrayLength() < pageSize()\">\n <paginator\n #paginatorTag\n [arrayLength]=\"filteredFormArrayLength()\"\n (pageChanged)=\"pageChanged($event)\"\n [pageSize]=\"pageSize()\"\n [resetIndexFunc]=\"filterForm.valueChanges\" />\n </div>\n </div>\n</div>\n", styles: ["tr{vertical-align:top}:host ::ng-deep .text-center input{text-align:center}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: BtnComponent, selector: "app-btn", inputs: ["formSchema", "debug", "centerBtn", "danger", "warning", "verbose", "loading", "icon", "rightIcon", "leftIcon", "type", "group", "actionType", "animate", "excludeLogging", "loggingValue", "badge", "class", "customIcon", "form", "forms", "help", "iconBtn", "mclass", "showHelpIcon", "rightCustomIcon", "leftCustomIcon", "text", "valid", "mini", "onFormInvalid", "disabled"], outputs: ["loadingChange", "leftCustomIconChange", "mclick", "disabledChange"] }, { kind: "component", type: FormGeneratorComponent, selector: "form-generator", inputs: ["keyField", "presetValueForSingleOption", "isCreate", "submitOnEnterKey", "submitFunc", "submitBtnText", "submitBtnTemplate", "submitSuccessText", "showSubmitBtn", "gridStyle", "gridMDStyle", "gridLGStyle", "gridXXLStyle", "formGridClass", "useLoader", "loading", "form", "formSchema", "formSchemaNoForm", "isShow"], outputs: ["onSubmit", "mchange", "saved", "formChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "ngmodule", type: MatTabsModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: PaginatorComponent, selector: "paginator", inputs: ["pageSize", "pageIndex", "arrayLength", "resetIndexFunc", "pageSizeOptions"], outputs: ["pageChanged"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: TableInputRowComponent, selector: "tr[table-input-row]", inputs: ["isShow", "hideAdd", "actionBtns", "childrenFormSchemaMap"], outputs: ["onDeleteRowFunc", "onAddRowFunc", "onActionButtonClick"] }, { kind: "pipe", type: SDKTranslatePipe, name: "appTranslate" }] }); }
|
|
178
178
|
}
|
|
179
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
179
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: TableInputComponent, decorators: [{
|
|
180
180
|
type: Component,
|
|
181
181
|
args: [{ selector: 'table-input', standalone: true, imports: [
|
|
182
182
|
AsyncPipe,
|
|
@@ -234,4 +234,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
|
|
|
234
234
|
type: ViewChild,
|
|
235
235
|
args: [PaginatorComponent]
|
|
236
236
|
}] } });
|
|
237
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXRzLWZlLW5nLXNkay9zcmMvbGliL1NoYXJlZC9jb21wb25lbnRzL3RhYmxlLWlucHV0L3RhYmxlLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy90YWJsZS1pbnB1dC90YWJsZS1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFFTCxTQUFTLEVBQ1QsUUFBUSxFQUNSLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFHTCxXQUFXLEVBQ1gsU0FBUyxFQUNULFdBQVcsRUFDWCxtQkFBbUIsRUFDbkIsVUFBVSxHQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUNMLHdCQUF3QixFQUN4QixhQUFhLEVBQ2IsZUFBZSxFQUNmLGdCQUFnQixFQUNoQixTQUFTLEdBQ1YsTUFBTSwwQkFBMEIsQ0FBQztBQUVsQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDcEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDckUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDL0UsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDdEcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDOUUsT0FBTyxFQUNMLFNBQVMsRUFDVCxRQUFRLEVBQ1IsT0FBTyxFQUNQLEtBQUssRUFDTCxJQUFJLEVBQ0osUUFBUSxFQUNSLFlBQVksRUFD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Q3hCLHNCQUFzQjt3QkFDdEIsV0FBVzt3QkFDWCxhQUFhO3dCQUNiLGVBQWU7d0JBQ2YsZ0JBQWdCO3dCQUNoQixtQkFBbUI7d0JBQ25CLFFBQVE7d0JBQ1IsZUFBZTt3QkFDZixrQkFBa0I7d0JBQ2xCLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixjQUFjO3dCQUNkLE9BQU87d0JBQ1AsS0FBSzt3QkFDTCxJQUFJO3dCQUNKLFFBQVE7d0JBQ1IsWUFBWTt3QkFDWixlQUFlO3dCQUNmLGtCQUFrQjt3QkFDbEIsYUFBYTt3QkFDYixvQkFBb0I7d0JBQ3BCLG1CQUFtQjt3QkFDbkIsc0JBQXNCO3dCQUN0QixTQUFTO3dCQUNULGdCQUFnQjt3QkFDaEIsd0JBQXdCO3dCQUN4QiwwQkFBMEI7cUJBQzNCLGFBR1UsQ0FBQyx3QkFBd0IsRUFBRSxhQUFhLENBQUM7OEJBWTVCLFVBQVU7c0JBQWpDLEtBQUs7dUJBQUMsV0FBVztnQkFVSyxTQUFTO3NCQUEvQixLQUFLO3VCQUFDLFVBQVU7Z0JBTTRDLFdBQVc7c0JBQXZFLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUU7Z0JBTzlDLG1CQUFtQjtzQkFEbEIsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBS2hCLGFBQWE7c0JBQXJCLEtBQUs7Z0JBUUcsVUFBVTtzQkFBbEIsS0FBSztnQkFDcUIsYUFBYTtzQkFBdkMsS0FBSzt1QkFBQyxjQUFjO2dCQXVCVSxrQkFBa0I7c0JBQWhELFNBQVM7dUJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBWaWV3Q2hpbGQsXG4gIGNvbXB1dGVkLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBGb3JtQXJyYXksXG4gIEZvcm1Db250cm9sLFxuICBGb3JtR3JvdXAsXG4gIEZvcm1zTW9kdWxlLFxuICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICBWYWxpZGF0b3JzLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJRm9ybVNjaGVtYSB9IGZyb20gJy4uLy4uL21vZGVscy9mb3JtLXNjaGVtYS5tb2RlbCc7XG5pbXBvcnQge1xuICBGaWx0ZXJGb3JtQXJyYXlHcm91cFBpcGUsXG4gIEZvcm1WYWx1ZVBpcGUsXG4gIEZ1bmN0aW9uQ2FsbGVyMixcbiAgSGFzRm9ybVZhbHVlUGlwZSxcbiAgVG9BbnlQaXBlLFxufSBmcm9tICcuLi8uLi9waXBlcy91dGlsaXR5LnBpcGUnO1xuXG5pbXBvcnQgeyBCdG5Db21wb25lbnQgfSBmcm9tICcuLi9idG4vYnRuLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbnB1dEJhc2ljQ29tcG9uZW50IH0gZnJvbSAnLi4vaW5wdXQvaW5wdXQtYmFzaWMuY29tcG9uZW50JztcbmltcG9ydCB7IEF1dG9jb21wbGV0ZUNvbXBvbmVudCB9IGZyb20gJy4uL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50JztcbmltcG9ydCB7IFZhbGlkYXRpb25NZXNzYWdlQ29tcG9uZW50IH0gZnJvbSAnLi4vaW5wdXQvdmFsaWRhdGlvbi1tZXNzYWdlL3ZhbGlkYXRpb24tbWVzc2FnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGhvbmVOdW1iZXJDb21wb25lbnQgfSBmcm9tICcuLi9waG9uZS1udW1iZXIvcGhvbmUtbnVtYmVyLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBBc3luY1BpcGUsXG4gIEpzb25QaXBlLFxuICBOZ0NsYXNzLFxuICBOZ0ZvcixcbiAgTmdJZixcbiAgTmdTd2l0Y2gsXG4gIE5nU3dpdGNoQ2FzZSxcbiAgTmdTd2l0Y2hEZWZhdWx0LFxufSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTG9hZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vbG9hZGVyL2xvYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRm9ybUdlbmVyYXRvckNvbXBvbmVudCB9IGZyb20gJy4uL2Zvcm0tZ2VuZXJhdG9yL2Zvcm0tZ2VuZXJhdG9yLmNvbXBvbmVudCc7XG5cbmltcG9ydCB7IFBhZ2luYXRvckNvbXBvbmVudCB9IGZyb20gJy4uL3BhZ2luYXRvci9wYWdpbmF0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IE1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vbW9kYWwvbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7IE1hdEV4cGFuc2lvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2V4cGFuc2lvbic7XG5pbXBvcnQgeyBNYXRUYWJzTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFicyc7XG5pbXBvcnQgeyBUYWJsZUlucHV0Um93Q29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS1pbnB1dC1yb3cvdGFibGUtaW5wdXQtcm93LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIGZpbHRlciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSUJ0biB9IGZyb20gJy4uL2J0bi9idG4ubW9kZWwnO1xuaW1wb3J0IHsgVXRpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9TZXJ2aWNlcy91dGlsaXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgU0RLVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3RyYW5zbGF0ZS5waXBlJztcbmltcG9ydCB7IFBhZ2luYXRvclBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy9wYWdpbmF0b3IucGlwZSc7XG5pbXBvcnQgeyB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuLyoqXG4gKiBUYWJsZSBJbnB1dCBDb21wb25lbnRcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGFibGUtaW5wdXQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQXN5bmNQaXBlLFxuICAgIEF1dG9jb21wbGV0ZUNvbXBvbmVudCxcbiAgICBCdG5Db21wb25lbnQsXG4gICAgRmlsdGVyRm9ybUFycmF5R3JvdXBQaXBlLFxuICAgIEZvcm1HZW5lcmF0b3JDb21wb25lbnQsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgRm9ybVZhbHVlUGlwZSxcbiAgICBGdW5jdGlvbkNhbGxlcjIsXG4gICAgSGFzRm9ybVZhbHVlUGlwZSxcbiAgICBJbnB1dEJhc2ljQ29tcG9uZW50LFxuICAgIEpzb25QaXBlLFxuICAgIExvYWRlckNvbXBvbmVudCxcbiAgICBNYXRFeHBhbnNpb25Nb2R1bGUsXG4gICAgTWF0VGFic01vZHVsZSxcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxuICAgIE1vZGFsQ29tcG9uZW50LFxuICAgIE5nQ2xhc3MsXG4gICAgTmdGb3IsXG4gICAgTmdJZixcbiAgICBOZ1N3aXRjaCxcbiAgICBOZ1N3aXRjaENhc2UsXG4gICAgTmdTd2l0Y2hEZWZhdWx0LFxuICAgIFBhZ2luYXRvckNvbXBvbmVudCxcbiAgICBQYWdpbmF0b3JQaXBlLFxuICAgIFBob25lTnVtYmVyQ29tcG9uZW50LFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgVGFibGVJbnB1dFJvd0NvbXBvbmVudCxcbiAgICBUb0FueVBpcGUsXG4gICAgU0RLVHJhbnNsYXRlUGlwZSxcbiAgICBGaWx0ZXJGb3JtQXJyYXlHcm91cFBpcGUsXG4gICAgVmFsaWRhdGlvbk1lc3NhZ2VDb21wb25lbnQsXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RhYmxlLWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW0ZpbHRlckZvcm1BcnJheUdyb3VwUGlwZSwgUGFnaW5hdG9yUGlwZV0sXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlSW5wdXRDb21wb25lbnQ8XG4gICAgVEZvcm1Hcm91cCBleHRlbmRzIHtcbiAgICAgIFtLIGluIGtleW9mIFRGb3JtR3JvdXBdOiBBYnN0cmFjdENvbnRyb2w8YW55LCBhbnk+O1xuICAgIH0gPSBhbnksXG4gID5cbiAgZXh0ZW5kcyBGb3JtR2VuZXJhdG9yQ29tcG9uZW50PFRGb3JtR3JvdXA+XG4gIGltcGxlbWVudHMgT25Jbml0XG57XG4gIGZvcm1BcnJheTogRm9ybUFycmF5PEZvcm1Hcm91cDxURm9ybUdyb3VwPj47XG4gIC8vIEBJbnB1dCgpIHBhZ2VUeXBlXG4gIEBJbnB1dCgnZm9ybUFycmF5Jykgc2V0IF9mb3JtQXJyYXkodjogRm9ybUFycmF5PEZvcm1Hcm91cDxURm9ybUdyb3VwPj4pIHtcbiAgICB0aGlzLmZvcm1BcnJheSA9IHY7XG4gICAgaWYgKHYpXG4gICAgICB2LnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHIpID0+IHtcbiAgICAgICAgdGhpcy5mb3JtQXJyYXlMZW5ndGhTaWduYWwuc2V0KHY/Lmxlbmd0aCk7XG4gICAgICB9KTtcbiAgfVxuICByZWFkb25seSBmaWx0ZXJDb250YWluZXJDbGFzcyA9IGlucHV0PHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgYm9yZGVyID0gaW5wdXQodHJ1ZSk7XG4gIHJlYWRvbmx5IGlzU2hvdyA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIEBJbnB1dCgncGFnZVNpemUnKSBzZXQgX3BhZ2VTaXplKHY6IG51bWJlcikge1xuICAgIHRoaXMucGFnZVNpemUuc2V0KHYpO1xuICB9XG4gIHJlYWRvbmx5IHBhZ2VTaXplID0gc2lnbmFsPG51bWJlcj4oMTApO1xuICByZWFkb25seSBwYWdlU3RhdGUgPSBzaWduYWw8eyBwYWdlSW5kZXg6IG51bWJlcjsgcGFnZVNpemU6IG51bWJlciB9PihudWxsKTtcbiAgcmVhZG9ubHkgYWN0aW9uQnRucyA9IGlucHV0PElUYWJsZUlucHV0QnRuW10+KCk7XG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlLCBhbGlhczogJ2Zvcm1TY2hlbWEnIH0pIG92ZXJyaWRlIHNldCBfZm9ybVNjaGVtYShcbiAgICB2OiBJRm9ybVNjaGVtYTxURm9ybUdyb3VwPltdLFxuICApIHtcbiAgICB0aGlzLnByZUZvcm1hdEZvcm1TY2hlbWEodik7XG4gICAgc3VwZXIuX2Zvcm1TY2hlbWEgPSB2O1xuICB9XG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gIHNpbmdsZUZvcm1TdHJ1Y3R1cmU6IEZvcm1Hcm91cDxURm9ybUdyb3VwPjtcbiAgLyoqXG4gICAqIExlYXZlIGVtcHR5IGlmIHlvdSBkb24ndCB3YW50IHRoZSBkZWxldGUgYnV0dG9uIHRvIHNob3dcbiAgICovXG4gIEBJbnB1dCgpIGRlbGV0ZVJvd0Z1bmM6IChcbiAgICBpbmRleDogbnVtYmVyLFxuICAgIGRhdGE/OiBGb3JtR3JvdXA8VEZvcm1Hcm91cD5bJ3ZhbHVlJ10sXG4gICAgY29uZmlnPzogeyBidG46IEJ0bkNvbXBvbmVudCB9LFxuICApID0+IGFueTtcbiAgLyoqXG4gICAqIExlYXZlIGVtcHR5IGlmIHlvdSBkb24ndCB3YW50IHRoZSBhZGQgYnV0dG9uIHRvIHNob3dcbiAgICovXG4gIEBJbnB1dCgpIGFkZFJvd0Z1bmM6IChpbmRleDogbnVtYmVyLCBkYXRhPzogRm9ybUdyb3VwPFRGb3JtR3JvdXA+Wyd2YWx1ZSddKSA9PiBhbnk7XG4gIEBJbnB1dCgndXNlUGFnaW5hdG9yJykgc2V0IF91c2VQYWdpbmF0b3IodjogYm9vbGVhbikge1xuICAgIGlmICh2KSB7XG4gICAgICB0aGlzLnVzZVBhZ2luYXRvci5zZXQodHJ1ZSk7XG4gICAgICB0aGlzLnBhZ2VTaXplLnVwZGF0ZSgocGFnZVNpemUpID0+IHBhZ2VTaXplIHx8IDEwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51c2VQYWdpbmF0b3Iuc2V0KGZhbHNlKTtcbiAgICAgIHRoaXMucGFnZVNpemUuc2V0KHVuZGVmaW5lZCk7XG4gICAgfVxuICB9XG5cbiAgcmVhZG9ubHkgdGFibGVDbGFzcyA9IGlucHV0PCd0YWJsZSB0YWJsZS1yZXNwb25zaXZlIHRhYmxlLXJlc3BvbnNpdmUgdGFibGUtYm9yZGVybGVzcyc+KCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBmaWx0ZXJGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBmaWx0ZXJGb3JtcyA9IHNpZ25hbDxJRm9ybVNjaGVtYVtdPihbXSk7XG4gIHByb3RlY3RlZCByZWFkb25seSB1c2VQYWdpbmF0b3IgPSBzaWduYWw8Ym9vbGVhbj4odHJ1ZSk7XG4gIHByb3RlY3RlZCBjaGlsZHJlbkZvcm1TY2hlbWFNYXA6IHtcbiAgICBbayBpbiBrZXlvZiBURm9ybUdyb3VwXT86IHtcbiAgICAgIGZvcm1TY2hlbWE6IElGb3JtU2NoZW1hW107XG4gICAgICBmb3JtU2NoZW1hU3RyOiBzdHJpbmdbXTtcbiAgICB9O1xuICB9ID0ge307XG4gIHJlZnJlc2hlcjogbnVtYmVyO1xuICBmb3JtQXJyYXlQYWdpbmF0aW9uU3ViOiBTdWJzY3JpcHRpb247XG5cbiAgQFZpZXdDaGlsZChQYWdpbmF0b3JDb21wb25lbnQpIHBhZ2luYXRvckNvbXBvbmVudDogUGFnaW5hdG9yQ29tcG9uZW50O1xuXG4gIHJlYWRvbmx5IGZpbHRlckZvcm1WYWx1ZVNpZ25hbCA9IHRvU2lnbmFsKHRoaXMuZmlsdGVyRm9ybS52YWx1ZUNoYW5nZXMpO1xuICByZWFkb25seSBmb3JtQXJyYXlMZW5ndGhTaWduYWwgPSBzaWduYWw8bnVtYmVyPih1bmRlZmluZWQpO1xuXG4gIHJlYWRvbmx5IGZpbHRlcmVkRm9ybUFycmF5ID0gY29tcHV0ZWQ8eyBmb3JtOiBGb3JtR3JvdXA8VEZvcm1Hcm91cD47IGluZGV4OiBudW1iZXIgfVtdPigoKSA9PiB7XG4gICAgdGhpcy5mb3JtQXJyYXlMZW5ndGhTaWduYWwoKTtcbiAgICBjb25zdCBmb3JtQXJyYXkgPSB0aGlzLmZvcm1BcnJheSxcbiAgICAgIGZpbHRlckZvcm1WYWx1ZSA9IHRoaXMuZmlsdGVyRm9ybVZhbHVlU2lnbmFsKCk7XG4gICAgY29uc3QgZm9ybUdyb3VwcyA9IGZvcm1BcnJheT8uY29udHJvbHM/Lm1hcCgoYywgaW5kZXgpID0+ICh7IGluZGV4LCBmb3JtOiBjIH0pKTtcbiAgICBjb25zdCBmaWx0ZXJPYmplY3QgPSB0aGlzLmZpbHRlckZvcm1BcnJheUdyb3VwUGlwZS5xdWVyeU1hcHBlcihmaWx0ZXJGb3JtVmFsdWUpO1xuICAgIHJldHVybiBmaWx0ZXJPYmplY3RcbiAgICAgID8gZm9ybUdyb3Vwcy5maWx0ZXIoKHsgZm9ybSB9KSA9PlxuICAgICAgICAgIHRoaXMuZmlsdGVyRm9ybUFycmF5R3JvdXBQaXBlLmZpbHRlckZ1bmMoZmlsdGVyT2JqZWN0KShmb3JtKSxcbiAgICAgICAgKVxuICAgICAgOiBmb3JtR3JvdXBzO1xuICB9KTtcbiAgcmVhZG9ubHkgcGFnaW5hdGVkQW5kRmlsdGVyZWRGb3JtQXJyYXkgPSBjb21wdXRlZDxcbiAgICB7IGZvcm06IEZvcm1Hcm91cDxURm9ybUdyb3VwPjsgaW5kZXg6IG51bWJlciB9W11cbiAgPigoKSA9PiB7XG4gICAgY29uc3QgZm9ybUFycmF5ID0gdGhpcy5maWx0ZXJlZEZvcm1BcnJheSgpLFxuICAgICAgcGFnZVN0YXRlID0gdGhpcy5wYWdlU3RhdGUoKTtcbiAgICAvLyBkZWJ1Z2dlcjtcbiAgICByZXR1cm4gdGhpcy51c2VQYWdpbmF0b3IoKVxuICAgICAgPyB0aGlzLnBhZ2luYXRvclBpcGUudHJhbnNmb3JtKFxuICAgICAgICAgIGZvcm1BcnJheSxcbiAgICAgICAgICBwYWdlU3RhdGU/LnBhZ2VTaXplIHx8IHRoaXMucGFnZVNpemUoKSxcbiAgICAgICAgICBwYWdlU3RhdGU/LnBhZ2VJbmRleCB8fCAwLFxuICAgICAgICApXG4gICAgICA6IGZvcm1BcnJheTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgZmlsdGVyZWRGb3JtQXJyYXlMZW5ndGggPSBjb21wdXRlZCgoKSA9PiB0aGlzLmZpbHRlcmVkRm9ybUFycmF5KCkubGVuZ3RoKTtcblxuICBwdWJsaWMgb3ZlcnJpZGUgdXRpbGl0eVNlcnZpY2UgPSBpbmplY3QoVXRpbGl0eVNlcnZpY2UpO1xuICBwdWJsaWMgZmlsdGVyRm9ybUFycmF5R3JvdXBQaXBlID0gaW5qZWN0KEZpbHRlckZvcm1BcnJheUdyb3VwUGlwZSk7XG4gIHB1YmxpYyBwYWdpbmF0b3JQaXBlID0gaW5qZWN0KFBhZ2luYXRvclBpcGUpO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnVzZVBhZ2luYXRvciA9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuX3VzZVBhZ2luYXRvciA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5yZWZyZXNoKCk7XG4gICAgfSwgMTAwMCk7XG4gIH1cblxuICByZWZyZXNoKCkge1xuICAgIHRoaXMucmVmcmVzaGVyID0gTWF0aC5yYW5kb20oKTtcbiAgfVxuXG4gIG92ZXJyaWRlIG9uRGVzdHJveSgpIHtcbiAgICB0aGlzLmZvcm1BcnJheVBhZ2luYXRpb25TdWI/LnVuc3Vic2NyaWJlKCk7XG4gICAgcmV0dXJuIHN1cGVyLm9uRGVzdHJveSgpO1xuICB9XG5cbiAgcGFnZUNoYW5nZWQoJGV2ZW50OiB7IHBhZ2VJbmRleDogbnVtYmVyOyBwYWdlU2l6ZTogbnVtYmVyIH0pIHtcbiAgICB0aGlzLnBhZ2VTdGF0ZS5zZXQoJGV2ZW50KTtcbiAgfVxuXG4gIHJlc2V0UGFnaW5hdG9yKCkge1xuICAgIHRoaXMucGFnaW5hdG9yQ29tcG9uZW50Py5yZXNldCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHByZUZvcm1hdEZvcm1TY2hlbWEgPSAoaXRlbXM6IElGb3JtU2NoZW1hPFRGb3JtR3JvdXA+W10pID0+IHtcbiAgICBpdGVtcy5mb3JFYWNoKCh4KSA9PiB7XG4gICAgICBpZiAoeC5vbkNoYW5nZUZ1bmMpIHgudHJpZ2dlck9uQ2hhbmdlT25Jbml0ID0gdHJ1ZTtcbiAgICAgIGVsc2UgaWYgKHgudHlwZSA9PSAnYnV0dG9uJykgdGhpcy5wcmVGb3JtYXRGb3JtU2NoZW1hKHguY2hpbGRyZW4pO1xuICAgIH0pO1xuICB9O1xuXG4gIG92ZXJyaWRlIGluaXQoc2NoZW1hOiBJRm9ybVNjaGVtYTxURm9ybUdyb3VwPltdKTogdm9pZCB7XG4gICAgdGhpcy5maWx0ZXJGb3Jtcy5zZXQoW10pO1xuICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuZmlsdGVyRm9ybS5jb250cm9scykge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLmZpbHRlckZvcm0uY29udHJvbHMsIGtleSkpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJGb3JtLnJlbW92ZUNvbnRyb2woa2V5KTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gZGVidWdnZXI7XG4gICAgdGhpcy5vbkRlc3Ryb3koKTtcbiAgICBpZiAoc2NoZW1hKVxuICAgICAgZm9yIChjb25zdCBzY2hlbWUgb2Ygc2NoZW1hKSB7XG4gICAgICAgIC8vIHNjaGVtZS5mb3JtID0gdGhpcy5mb3JtIHx8IHNjaGVtZS5mb3JtO1xuICAgICAgICB0aGlzLmhhbmRsZUZvcm1TY2hlbWUoc2NoZW1lKTtcbiAgICAgIH1cbiAgICB0aGlzLl9zZXRGb3JtU2NoZW1hcyhzY2hlbWEpO1xuICB9XG5cbiAgaGFuZGxlQWN0aW9uQnV0dG9uQ2xpY2soXG4gICAgaW5kZXg6IG51bWJlcixcbiAgICBmb3JtOiBGb3JtR3JvdXA8VEZvcm1Hcm91cD4sXG4gICAgZTogeyBidG4/OiBCdG5Db21wb25lbnQ7IGFjdGlvbkJ1dHRvbjogSVRhYmxlSW5wdXRCdG4gfSxcbiAgKSB7XG4gICAgZS5hY3Rpb25CdXR0b24uYWN0aW9uKHsgaW5kZXgsIGZvcm0sIGJ0bjogZS5idG4gfSk7XG4gICAgLy8gdGhpcy5yZWZyZXNoKCk7XG4gIH1cblxuICBkZWxldGVSb3dDbGlja2VkID0gKFxuICAgIGluZGV4OiBudW1iZXIsXG4gICAgcm93Rm9ybTogRm9ybUdyb3VwPFRGb3JtR3JvdXA+LFxuICAgIGNvbmZpZz86IHsgYnRuOiBCdG5Db21wb25lbnQgfSxcbiAgKSA9PiB7XG4gICAgdGhpcy5kZWxldGVSb3dGdW5jKGluZGV4LCByb3dGb3JtPy5nZXRSYXdWYWx1ZSgpLCBjb25maWcpO1xuICAgIC8vIHRoaXMucmVmcmVzaCgpO1xuICB9O1xuXG4gIGFkZFJvd0NsaWNrZWQgPSAoaW5kZXg6IG51bWJlcikgPT4ge1xuICAgIHRoaXMuYWRkUm93RnVuYyhpbmRleCArIDEsIHRoaXMuZmlsdGVyRm9ybVZhbHVlU2lnbmFsKCkpO1xuICAgIC8vIHRoaXMucmVmcmVzaCgpO1xuICAgIC8vIHRoaXMuZmlsdGVyRm9ybS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gIH07XG5cbiAgY2hlY2tSZXF1aXJlZEZpZWxkcyA9ICgpID0+IHtcbiAgICBjb25zb2xlLmxvZyh0aGlzLnNpbmdsZUZvcm1TdHJ1Y3R1cmUpO1xuICB9O1xuXG4gIG92ZXJyaWRlIGhhbmRsZUZvcm1TY2hlbWUoc2NoZW1lOiBJRm9ybVNjaGVtYSkge1xuICAgIHNjaGVtZS5pZCA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2VuZXJhdGVVVUlEKCk7XG4gICAgaWYgKHNjaGVtZS5hdXRvUGlja1ZhbHVlRmllbGQgPT0gbnVsbCAmJiAoIXNjaGVtZS52YWx1ZUZpZWxkIHx8ICFzY2hlbWUubGFiZWxGaWVsZCkpXG4gICAgICBzY2hlbWUuYXV0b1BpY2tWYWx1ZUZpZWxkID0gdHJ1ZTtcblxuICAgIGlmIChzY2hlbWUub3B0aW9uc0luaXRGdW5jKSB7XG4gICAgICBzY2hlbWUub3B0aW9uc0luaXRGdW5jLnN1YnNjcmliZSgocikgPT4ge1xuICAgICAgICBzY2hlbWUub3B0aW9ucyA9IHI7XG4gICAgICAgIC8vIHRoaXMub3B0aW9uc01hcFtzY2hlbWUuZmllbGRdID0gcjtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoc2NoZW1lLmlzU2VhcmNoRmllbGQpIHtcbiAgICAgIHRoaXMuZmlsdGVyRm9ybXMudXBkYXRlKChmaWx0ZXJGb3JtcykgPT4gZmlsdGVyRm9ybXMuY29uY2F0KFtzY2hlbWVdKSk7XG4gICAgICB0aGlzLmZpbHRlckZvcm0uYWRkQ29udHJvbChzY2hlbWUuZmllbGQ/LnRvU3RyaW5nKCksIG5ldyBGb3JtQ29udHJvbCgpKTtcbiAgICB9IGVsc2UgaWYgKHNjaGVtZS50eXBlID09ICdidXR0b24nKSB7XG4gICAgICBpZiAoc2NoZW1lLmNoaWxkcmVuPy5sZW5ndGgpXG4gICAgICAgIHRoaXMuY2hpbGRyZW5Gb3JtU2NoZW1hTWFwW3NjaGVtZS5maWVsZCBhcyBzdHJpbmddID0ge1xuICAgICAgICAgIGZvcm1TY2hlbWE6IHNjaGVtZS5jaGlsZHJlbixcbiAgICAgICAgICBmb3JtU2NoZW1hU3RyOiBzY2hlbWUuY2hpbGRyZW4ubWFwKCh4KSA9PiB4LmZpZWxkIGFzIHN0cmluZyksXG4gICAgICAgIH07XG4gICAgfVxuICAgIHNjaGVtZS5pc1JlcXVpcmVkID1cbiAgICAgIHNjaGVtZS5pc1JlcXVpcmVkIHx8XG4gICAgICAoPEZvcm1Hcm91cD50aGlzLnNpbmdsZUZvcm1TdHJ1Y3R1cmU/LmNvbnRyb2xzW3NjaGVtZS5maWVsZF0pPy5oYXNWYWxpZGF0b3IoXG4gICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICApO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRhYmxlSW5wdXRCdG4gZXh0ZW5kcyBJQnRuIHtcbiAgYWN0aW9uPzogKGFyZz86IHsgaW5kZXg6IG51bWJlcjsgZm9ybTogRm9ybUdyb3VwOyBidG46IEJ0bkNvbXBvbmVudCB9KSA9PiB2b2lkO1xufVxuIiwiPGRpdiBjbGFzcz1cInRhYmxlLWlucHV0XCI+XG4gIEBpZiAoZmlsdGVyRm9ybXMoKT8ubGVuZ3RoKSB7XG4gICAgPGRpdiBjbGFzcz1cIm1iLTMge3sgZmlsdGVyQ29udGFpbmVyQ2xhc3MoKSB9fVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxuICAgICAgICA8YXBwLWJ0blxuICAgICAgICAgIHRleHQ9XCJ7eyBmaWx0ZXJTZWN0aW9uLmhpZGRlbiA/ICdTaG93IEZpbHRlcicgOiAnSGlkZSBGaWx0ZXInIH19XCJcbiAgICAgICAgICBbaWNvbl09XCJmaWx0ZXJTZWN0aW9uLmhpZGRlbiA/ICdzZWFyY2gnIDogJ2Nsb3NlJ1wiXG4gICAgICAgICAgKG1jbGljayk9XCJmaWx0ZXJTZWN0aW9uLmhpZGRlbiA9ICFmaWx0ZXJTZWN0aW9uLmhpZGRlblwiIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgcC0zIG10LTMgcm91bmRlZC0xMFwiICNmaWx0ZXJTZWN0aW9uIFtoaWRkZW5dPVwidHJ1ZVwiPlxuICAgICAgICA8Zm9ybS1nZW5lcmF0b3IgW2Zvcm1dPVwiZmlsdGVyRm9ybVwiIFtmb3JtU2NoZW1hXT1cImZpbHRlckZvcm1zKClcIiBbZ3JpZExHU3R5bGVdPVwiM1wiIFtzaG93U3VibWl0QnRuXT1cImZhbHNlXCIgKG1jaGFuZ2UpPVwicmVzZXRQYWdpbmF0b3IoKVwiIC8+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxuICAgICAgICAgIDxhcHAtYnRuIHR5cGU9XCJkYW5nZXItb3V0bGluZVwiIHRleHQ9XCJDbGVhclwiIChtY2xpY2spPVwiZmlsdGVyRm9ybS5yZXNldCgpXCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgfVxuXG4gIDxkaXYgY2xhc3M9XCJiZy13aGl0ZVwiIFtuZ0NsYXNzXT1cInsgJ2JvcmRlciByb3VuZGVkLTEwJzogYm9yZGVyKCkgfVwiPlxuICAgIDxkaXYgY2xhc3M9XCIgXCI+XG4gICAgICA8dGFibGUgY2xhc3M9XCIge3sgdGFibGVDbGFzcygpIH19IFwiIFtuZ0NsYXNzXT1cInsgJ2lzLXNob3ctZm9ybSc6IGlzU2hvdygpIH1cIj5cbiAgICAgICAgPHRoZWFkIChjbGljayk9XCJ1dGlsaXR5U2VydmljZS5sb2dGb3JtKGZpbHRlcmVkRm9ybUFycmF5KCkpXCI+XG4gICAgICAgICAgPHRyIGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgZm9ybVNjaGVtYSgpOyB0cmFjayBpdGVtLmxhYmVsKSB7XG4gICAgICAgICAgICAgIDx0aCBjbGFzcz1cInt7IGl0ZW0uY2xzIH19XCI+XG4gICAgICAgICAgICAgICAge3sgaXRlbS5sYWJlbCB8IGFwcFRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICAgICAgICAgICAge3sgaXRlbS5pc1JlcXVpcmVkID8gJyonIDogJycgfX1cbiAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoIWlzU2hvdygpKSB7XG4gICAgICAgICAgICAgIDx0aD48L3RoPlxuICAgICAgICAgICAgICA8dGg+PC90aD5cbiAgICAgICAgICAgICAgQGZvciAoYWN0aW9uQnRuIG9mIGFjdGlvbkJ0bnMoKTsgdHJhY2sgYWN0aW9uQnRuKSB7XG4gICAgICAgICAgICAgICAgPHRoPjwvdGg+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3RyPlxuICAgICAgICA8L3RoZWFkPlxuICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgQGZvciAoc3ViRm9ybSBvZiBwYWdpbmF0ZWRBbmRGaWx0ZXJlZEZvcm1BcnJheSgpOyB0cmFjayBzdWJGb3JtOyBsZXQgaSA9ICRpbmRleCkge1xuICAgICAgICAgICAgPHRyXG4gICAgICAgICAgICAgIHRhYmxlLWlucHV0LXJvd1xuICAgICAgICAgICAgICAob25BZGRSb3dGdW5jKT1cImFkZFJvd0NsaWNrZWQoc3ViRm9ybS5pbmRleClcIlxuICAgICAgICAgICAgICBbaXNTaG93XT1cImlzU2hvdygpXCJcbiAgICAgICAgICAgICAgW2Zvcm1dPVwic3ViRm9ybS5mb3JtXCJcbiAgICAgICAgICAgICAgW2FjdGlvbkJ0bnNdPVwiYWN0aW9uQnRucygpXCJcbiAgICAgICAgICAgICAgW2Zvcm1TY2hlbWFdPVwiZm9ybVNjaGVtYSgpXCJcbiAgICAgICAgICAgICAgW2NoaWxkcmVuRm9ybVNjaGVtYU1hcF09XCJjaGlsZHJlbkZvcm1TY2hlbWFNYXBcIlxuICAgICAgICAgICAgICAob25EZWxldGVSb3dGdW5jKT1cIlxuICAgICAgICAgICAgICAgIGRlbGV0ZVJvd0NsaWNrZWQoc3ViRm9ybS5pbmRleCwgc3ViRm9ybS5mb3JtLCB7XG4gICAgICAgICAgICAgICAgICBidG46ICRldmVudD8uYnRuXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgKG9uQWN0aW9uQnV0dG9uQ2xpY2spPVwiaGFuZGxlQWN0aW9uQnV0dG9uQ2xpY2soc3ViRm9ybS5pbmRleCwgc3ViRm9ybS5mb3JtLCAkZXZlbnQpXCI+PC90cj5cbiAgICAgICAgICB9IEBlbXB0eSB7XG4gICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtY2VudGVyXCIgW2NvbFNwYW5dPVwiZm9ybVNjaGVtYSgpPy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICB7eyAnVGhlcmUgYXJlIG5vIGl0ZW1zJyB8IGFwcFRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgIH1cbiAgICAgICAgPC90Ym9keT5cbiAgICAgIDwvdGFibGU+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiXCIgW2hpZGRlbl09XCIhdXNlUGFnaW5hdG9yKCkgfHwgIWZpbHRlcmVkRm9ybUFycmF5TGVuZ3RoKCkgfHwgZmlsdGVyZWRGb3JtQXJyYXlMZW5ndGgoKSA8IHBhZ2VTaXplKClcIj5cbiAgICAgIDxwYWdpbmF0b3JcbiAgICAgICAgI3BhZ2luYXRvclRhZ1xuICAgICAgICBbYXJyYXlMZW5ndGhdPVwiZmlsdGVyZWRGb3JtQXJyYXlMZW5ndGgoKVwiXG4gICAgICAgIChwYWdlQ2hhbmdlZCk9XCJwYWdlQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgW3BhZ2VTaXplXT1cInBhZ2VTaXplKClcIlxuICAgICAgICBbcmVzZXRJbmRleEZ1bmNdPVwiZmlsdGVyRm9ybS52YWx1ZUNoYW5nZXNcIiAvPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
237
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXRzLWZlLW5nLXNkay9zcmMvbGliL1NoYXJlZC9jb21wb25lbnRzL3RhYmxlLWlucHV0L3RhYmxlLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy90YWJsZS1pbnB1dC90YWJsZS1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFFTCxTQUFTLEVBQ1QsUUFBUSxFQUNSLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFHTCxXQUFXLEVBQ1gsU0FBUyxFQUNULFdBQVcsRUFDWCxtQkFBbUIsRUFDbkIsVUFBVSxHQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUNMLHdCQUF3QixFQUN4QixhQUFhLEVBQ2IsZUFBZSxFQUNmLGdCQUFnQixFQUNoQixTQUFTLEdBQ1YsTUFBTSwwQkFBMEIsQ0FBQztBQUVsQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDcEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDckUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDL0UsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDdEcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDOUUsT0FBTyxFQUNMLFNBQVMsRUFDVCxRQUFRLEVBQ1IsT0FBTyxFQUNQLEtBQUssRUFDTCxJQUFJLEVBQ0osUUFBUSxFQUNSLFlBQVksRUFD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QkF4Qy9CLFNBQVM7K0JBQ0UsYUFBYSxjQUNYLElBQUksV0FDUDt3QkFDUCxTQUFTO3dCQUNULHFCQUFxQjt3QkFDckIsWUFBWTt3QkFDWix3QkFBd0I7d0JBQ3hCLHNCQUFzQjt3QkFDdEIsV0FBVzt3QkFDWCxhQUFhO3dCQUNiLGVBQWU7d0JBQ2YsZ0JBQWdCO3dCQUNoQixtQkFBbUI7d0JBQ25CLFFBQVE7d0JBQ1IsZUFBZTt3QkFDZixrQkFBa0I7d0JBQ2xCLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixjQUFjO3dCQUNkLE9BQU87d0JBQ1AsS0FBSzt3QkFDTCxJQUFJO3dCQUNKLFFBQVE7d0JBQ1IsWUFBWTt3QkFDWixlQUFlO3dCQUNmLGtCQUFrQjt3QkFDbEIsYUFBYTt3QkFDYixvQkFBb0I7d0JBQ3BCLG1CQUFtQjt3QkFDbkIsc0JBQXNCO3dCQUN0QixTQUFTO3dCQUNULGdCQUFnQjt3QkFDaEIsd0JBQXdCO3dCQUN4QiwwQkFBMEI7cUJBQzNCLGFBR1UsQ0FBQyx3QkFBd0IsRUFBRSxhQUFhLENBQUM7OEJBWTVCLFVBQVU7c0JBQWpDLEtBQUs7dUJBQUMsV0FBVztnQkFVSyxTQUFTO3NCQUEvQixLQUFLO3VCQUFDLFVBQVU7Z0JBTTRDLFdBQVc7c0JBQXZFLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUU7Z0JBTzlDLG1CQUFtQjtzQkFEbEIsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBS2hCLGFBQWE7c0JBQXJCLEtBQUs7Z0JBUUcsVUFBVTtzQkFBbEIsS0FBSztnQkFDcUIsYUFBYTtzQkFBdkMsS0FBSzt1QkFBQyxjQUFjO2dCQXVCVSxrQkFBa0I7c0JBQWhELFNBQVM7dUJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBWaWV3Q2hpbGQsXG4gIGNvbXB1dGVkLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBGb3JtQXJyYXksXG4gIEZvcm1Db250cm9sLFxuICBGb3JtR3JvdXAsXG4gIEZvcm1zTW9kdWxlLFxuICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICBWYWxpZGF0b3JzLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJRm9ybVNjaGVtYSB9IGZyb20gJy4uLy4uL21vZGVscy9mb3JtLXNjaGVtYS5tb2RlbCc7XG5pbXBvcnQge1xuICBGaWx0ZXJGb3JtQXJyYXlHcm91cFBpcGUsXG4gIEZvcm1WYWx1ZVBpcGUsXG4gIEZ1bmN0aW9uQ2FsbGVyMixcbiAgSGFzRm9ybVZhbHVlUGlwZSxcbiAgVG9BbnlQaXBlLFxufSBmcm9tICcuLi8uLi9waXBlcy91dGlsaXR5LnBpcGUnO1xuXG5pbXBvcnQgeyBCdG5Db21wb25lbnQgfSBmcm9tICcuLi9idG4vYnRuLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbnB1dEJhc2ljQ29tcG9uZW50IH0gZnJvbSAnLi4vaW5wdXQvaW5wdXQtYmFzaWMuY29tcG9uZW50JztcbmltcG9ydCB7IEF1dG9jb21wbGV0ZUNvbXBvbmVudCB9IGZyb20gJy4uL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50JztcbmltcG9ydCB7IFZhbGlkYXRpb25NZXNzYWdlQ29tcG9uZW50IH0gZnJvbSAnLi4vaW5wdXQvdmFsaWRhdGlvbi1tZXNzYWdlL3ZhbGlkYXRpb24tbWVzc2FnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGhvbmVOdW1iZXJDb21wb25lbnQgfSBmcm9tICcuLi9waG9uZS1udW1iZXIvcGhvbmUtbnVtYmVyLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBBc3luY1BpcGUsXG4gIEpzb25QaXBlLFxuICBOZ0NsYXNzLFxuICBOZ0ZvcixcbiAgTmdJZixcbiAgTmdTd2l0Y2gsXG4gIE5nU3dpdGNoQ2FzZSxcbiAgTmdTd2l0Y2hEZWZhdWx0LFxufSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTG9hZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vbG9hZGVyL2xvYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRm9ybUdlbmVyYXRvckNvbXBvbmVudCB9IGZyb20gJy4uL2Zvcm0tZ2VuZXJhdG9yL2Zvcm0tZ2VuZXJhdG9yLmNvbXBvbmVudCc7XG5cbmltcG9ydCB7IFBhZ2luYXRvckNvbXBvbmVudCB9IGZyb20gJy4uL3BhZ2luYXRvci9wYWdpbmF0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IE1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vbW9kYWwvbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7IE1hdEV4cGFuc2lvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2V4cGFuc2lvbic7XG5pbXBvcnQgeyBNYXRUYWJzTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFicyc7XG5pbXBvcnQgeyBUYWJsZUlucHV0Um93Q29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS1pbnB1dC1yb3cvdGFibGUtaW5wdXQtcm93LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIGZpbHRlciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSUJ0biB9IGZyb20gJy4uL2J0bi9idG4ubW9kZWwnO1xuaW1wb3J0IHsgVXRpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9TZXJ2aWNlcy91dGlsaXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgU0RLVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3RyYW5zbGF0ZS5waXBlJztcbmltcG9ydCB7IFBhZ2luYXRvclBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy9wYWdpbmF0b3IucGlwZSc7XG5pbXBvcnQgeyB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuLyoqXG4gKiBUYWJsZSBJbnB1dCBDb21wb25lbnRcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGFibGUtaW5wdXQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQXN5bmNQaXBlLFxuICAgIEF1dG9jb21wbGV0ZUNvbXBvbmVudCxcbiAgICBCdG5Db21wb25lbnQsXG4gICAgRmlsdGVyRm9ybUFycmF5R3JvdXBQaXBlLFxuICAgIEZvcm1HZW5lcmF0b3JDb21wb25lbnQsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgRm9ybVZhbHVlUGlwZSxcbiAgICBGdW5jdGlvbkNhbGxlcjIsXG4gICAgSGFzRm9ybVZhbHVlUGlwZSxcbiAgICBJbnB1dEJhc2ljQ29tcG9uZW50LFxuICAgIEpzb25QaXBlLFxuICAgIExvYWRlckNvbXBvbmVudCxcbiAgICBNYXRFeHBhbnNpb25Nb2R1bGUsXG4gICAgTWF0VGFic01vZHVsZSxcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxuICAgIE1vZGFsQ29tcG9uZW50LFxuICAgIE5nQ2xhc3MsXG4gICAgTmdGb3IsXG4gICAgTmdJZixcbiAgICBOZ1N3aXRjaCxcbiAgICBOZ1N3aXRjaENhc2UsXG4gICAgTmdTd2l0Y2hEZWZhdWx0LFxuICAgIFBhZ2luYXRvckNvbXBvbmVudCxcbiAgICBQYWdpbmF0b3JQaXBlLFxuICAgIFBob25lTnVtYmVyQ29tcG9uZW50LFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgVGFibGVJbnB1dFJvd0NvbXBvbmVudCxcbiAgICBUb0FueVBpcGUsXG4gICAgU0RLVHJhbnNsYXRlUGlwZSxcbiAgICBGaWx0ZXJGb3JtQXJyYXlHcm91cFBpcGUsXG4gICAgVmFsaWRhdGlvbk1lc3NhZ2VDb21wb25lbnQsXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RhYmxlLWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW0ZpbHRlckZvcm1BcnJheUdyb3VwUGlwZSwgUGFnaW5hdG9yUGlwZV0sXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlSW5wdXRDb21wb25lbnQ8XG4gICAgVEZvcm1Hcm91cCBleHRlbmRzIHtcbiAgICAgIFtLIGluIGtleW9mIFRGb3JtR3JvdXBdOiBBYnN0cmFjdENvbnRyb2w8YW55LCBhbnk+O1xuICAgIH0gPSBhbnksXG4gID5cbiAgZXh0ZW5kcyBGb3JtR2VuZXJhdG9yQ29tcG9uZW50PFRGb3JtR3JvdXA+XG4gIGltcGxlbWVudHMgT25Jbml0XG57XG4gIGZvcm1BcnJheTogRm9ybUFycmF5PEZvcm1Hcm91cDxURm9ybUdyb3VwPj47XG4gIC8vIEBJbnB1dCgpIHBhZ2VUeXBlXG4gIEBJbnB1dCgnZm9ybUFycmF5Jykgc2V0IF9mb3JtQXJyYXkodjogRm9ybUFycmF5PEZvcm1Hcm91cDxURm9ybUdyb3VwPj4pIHtcbiAgICB0aGlzLmZvcm1BcnJheSA9IHY7XG4gICAgaWYgKHYpXG4gICAgICB2LnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHIpID0+IHtcbiAgICAgICAgdGhpcy5mb3JtQXJyYXlMZW5ndGhTaWduYWwuc2V0KHY/Lmxlbmd0aCk7XG4gICAgICB9KTtcbiAgfVxuICByZWFkb25seSBmaWx0ZXJDb250YWluZXJDbGFzcyA9IGlucHV0PHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgYm9yZGVyID0gaW5wdXQodHJ1ZSk7XG4gIHJlYWRvbmx5IGlzU2hvdyA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIEBJbnB1dCgncGFnZVNpemUnKSBzZXQgX3BhZ2VTaXplKHY6IG51bWJlcikge1xuICAgIHRoaXMucGFnZVNpemUuc2V0KHYpO1xuICB9XG4gIHJlYWRvbmx5IHBhZ2VTaXplID0gc2lnbmFsPG51bWJlcj4oMTApO1xuICByZWFkb25seSBwYWdlU3RhdGUgPSBzaWduYWw8eyBwYWdlSW5kZXg6IG51bWJlcjsgcGFnZVNpemU6IG51bWJlciB9PihudWxsKTtcbiAgcmVhZG9ubHkgYWN0aW9uQnRucyA9IGlucHV0PElUYWJsZUlucHV0QnRuW10+KCk7XG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlLCBhbGlhczogJ2Zvcm1TY2hlbWEnIH0pIG92ZXJyaWRlIHNldCBfZm9ybVNjaGVtYShcbiAgICB2OiBJRm9ybVNjaGVtYTxURm9ybUdyb3VwPltdLFxuICApIHtcbiAgICB0aGlzLnByZUZvcm1hdEZvcm1TY2hlbWEodik7XG4gICAgc3VwZXIuX2Zvcm1TY2hlbWEgPSB2O1xuICB9XG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gIHNpbmdsZUZvcm1TdHJ1Y3R1cmU6IEZvcm1Hcm91cDxURm9ybUdyb3VwPjtcbiAgLyoqXG4gICAqIExlYXZlIGVtcHR5IGlmIHlvdSBkb24ndCB3YW50IHRoZSBkZWxldGUgYnV0dG9uIHRvIHNob3dcbiAgICovXG4gIEBJbnB1dCgpIGRlbGV0ZVJvd0Z1bmM6IChcbiAgICBpbmRleDogbnVtYmVyLFxuICAgIGRhdGE/OiBGb3JtR3JvdXA8VEZvcm1Hcm91cD5bJ3ZhbHVlJ10sXG4gICAgY29uZmlnPzogeyBidG46IEJ0bkNvbXBvbmVudCB9LFxuICApID0+IGFueTtcbiAgLyoqXG4gICAqIExlYXZlIGVtcHR5IGlmIHlvdSBkb24ndCB3YW50IHRoZSBhZGQgYnV0dG9uIHRvIHNob3dcbiAgICovXG4gIEBJbnB1dCgpIGFkZFJvd0Z1bmM6IChpbmRleDogbnVtYmVyLCBkYXRhPzogRm9ybUdyb3VwPFRGb3JtR3JvdXA+Wyd2YWx1ZSddKSA9PiBhbnk7XG4gIEBJbnB1dCgndXNlUGFnaW5hdG9yJykgc2V0IF91c2VQYWdpbmF0b3IodjogYm9vbGVhbikge1xuICAgIGlmICh2KSB7XG4gICAgICB0aGlzLnVzZVBhZ2luYXRvci5zZXQodHJ1ZSk7XG4gICAgICB0aGlzLnBhZ2VTaXplLnVwZGF0ZSgocGFnZVNpemUpID0+IHBhZ2VTaXplIHx8IDEwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51c2VQYWdpbmF0b3Iuc2V0KGZhbHNlKTtcbiAgICAgIHRoaXMucGFnZVNpemUuc2V0KHVuZGVmaW5lZCk7XG4gICAgfVxuICB9XG5cbiAgcmVhZG9ubHkgdGFibGVDbGFzcyA9IGlucHV0PCd0YWJsZSB0YWJsZS1yZXNwb25zaXZlIHRhYmxlLXJlc3BvbnNpdmUgdGFibGUtYm9yZGVybGVzcyc+KCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBmaWx0ZXJGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBmaWx0ZXJGb3JtcyA9IHNpZ25hbDxJRm9ybVNjaGVtYVtdPihbXSk7XG4gIHByb3RlY3RlZCByZWFkb25seSB1c2VQYWdpbmF0b3IgPSBzaWduYWw8Ym9vbGVhbj4odHJ1ZSk7XG4gIHByb3RlY3RlZCBjaGlsZHJlbkZvcm1TY2hlbWFNYXA6IHtcbiAgICBbayBpbiBrZXlvZiBURm9ybUdyb3VwXT86IHtcbiAgICAgIGZvcm1TY2hlbWE6IElGb3JtU2NoZW1hW107XG4gICAgICBmb3JtU2NoZW1hU3RyOiBzdHJpbmdbXTtcbiAgICB9O1xuICB9ID0ge307XG4gIHJlZnJlc2hlcjogbnVtYmVyO1xuICBmb3JtQXJyYXlQYWdpbmF0aW9uU3ViOiBTdWJzY3JpcHRpb247XG5cbiAgQFZpZXdDaGlsZChQYWdpbmF0b3JDb21wb25lbnQpIHBhZ2luYXRvckNvbXBvbmVudDogUGFnaW5hdG9yQ29tcG9uZW50O1xuXG4gIHJlYWRvbmx5IGZpbHRlckZvcm1WYWx1ZVNpZ25hbCA9IHRvU2lnbmFsKHRoaXMuZmlsdGVyRm9ybS52YWx1ZUNoYW5nZXMpO1xuICByZWFkb25seSBmb3JtQXJyYXlMZW5ndGhTaWduYWwgPSBzaWduYWw8bnVtYmVyPih1bmRlZmluZWQpO1xuXG4gIHJlYWRvbmx5IGZpbHRlcmVkRm9ybUFycmF5ID0gY29tcHV0ZWQ8eyBmb3JtOiBGb3JtR3JvdXA8VEZvcm1Hcm91cD47IGluZGV4OiBudW1iZXIgfVtdPigoKSA9PiB7XG4gICAgdGhpcy5mb3JtQXJyYXlMZW5ndGhTaWduYWwoKTtcbiAgICBjb25zdCBmb3JtQXJyYXkgPSB0aGlzLmZvcm1BcnJheSxcbiAgICAgIGZpbHRlckZvcm1WYWx1ZSA9IHRoaXMuZmlsdGVyRm9ybVZhbHVlU2lnbmFsKCk7XG4gICAgY29uc3QgZm9ybUdyb3VwcyA9IGZvcm1BcnJheT8uY29udHJvbHM/Lm1hcCgoYywgaW5kZXgpID0+ICh7IGluZGV4LCBmb3JtOiBjIH0pKTtcbiAgICBjb25zdCBmaWx0ZXJPYmplY3QgPSB0aGlzLmZpbHRlckZvcm1BcnJheUdyb3VwUGlwZS5xdWVyeU1hcHBlcihmaWx0ZXJGb3JtVmFsdWUpO1xuICAgIHJldHVybiBmaWx0ZXJPYmplY3RcbiAgICAgID8gZm9ybUdyb3Vwcy5maWx0ZXIoKHsgZm9ybSB9KSA9PlxuICAgICAgICAgIHRoaXMuZmlsdGVyRm9ybUFycmF5R3JvdXBQaXBlLmZpbHRlckZ1bmMoZmlsdGVyT2JqZWN0KShmb3JtKSxcbiAgICAgICAgKVxuICAgICAgOiBmb3JtR3JvdXBzO1xuICB9KTtcbiAgcmVhZG9ubHkgcGFnaW5hdGVkQW5kRmlsdGVyZWRGb3JtQXJyYXkgPSBjb21wdXRlZDxcbiAgICB7IGZvcm06IEZvcm1Hcm91cDxURm9ybUdyb3VwPjsgaW5kZXg6IG51bWJlciB9W11cbiAgPigoKSA9PiB7XG4gICAgY29uc3QgZm9ybUFycmF5ID0gdGhpcy5maWx0ZXJlZEZvcm1BcnJheSgpLFxuICAgICAgcGFnZVN0YXRlID0gdGhpcy5wYWdlU3RhdGUoKTtcbiAgICAvLyBkZWJ1Z2dlcjtcbiAgICByZXR1cm4gdGhpcy51c2VQYWdpbmF0b3IoKVxuICAgICAgPyB0aGlzLnBhZ2luYXRvclBpcGUudHJhbnNmb3JtKFxuICAgICAgICAgIGZvcm1BcnJheSxcbiAgICAgICAgICBwYWdlU3RhdGU/LnBhZ2VTaXplIHx8IHRoaXMucGFnZVNpemUoKSxcbiAgICAgICAgICBwYWdlU3RhdGU/LnBhZ2VJbmRleCB8fCAwLFxuICAgICAgICApXG4gICAgICA6IGZvcm1BcnJheTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgZmlsdGVyZWRGb3JtQXJyYXlMZW5ndGggPSBjb21wdXRlZCgoKSA9PiB0aGlzLmZpbHRlcmVkRm9ybUFycmF5KCkubGVuZ3RoKTtcblxuICBwdWJsaWMgb3ZlcnJpZGUgdXRpbGl0eVNlcnZpY2UgPSBpbmplY3QoVXRpbGl0eVNlcnZpY2UpO1xuICBwdWJsaWMgZmlsdGVyRm9ybUFycmF5R3JvdXBQaXBlID0gaW5qZWN0KEZpbHRlckZvcm1BcnJheUdyb3VwUGlwZSk7XG4gIHB1YmxpYyBwYWdpbmF0b3JQaXBlID0gaW5qZWN0KFBhZ2luYXRvclBpcGUpO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnVzZVBhZ2luYXRvciA9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuX3VzZVBhZ2luYXRvciA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5yZWZyZXNoKCk7XG4gICAgfSwgMTAwMCk7XG4gIH1cblxuICByZWZyZXNoKCkge1xuICAgIHRoaXMucmVmcmVzaGVyID0gTWF0aC5yYW5kb20oKTtcbiAgfVxuXG4gIG92ZXJyaWRlIG9uRGVzdHJveSgpIHtcbiAgICB0aGlzLmZvcm1BcnJheVBhZ2luYXRpb25TdWI/LnVuc3Vic2NyaWJlKCk7XG4gICAgcmV0dXJuIHN1cGVyLm9uRGVzdHJveSgpO1xuICB9XG5cbiAgcGFnZUNoYW5nZWQoJGV2ZW50OiB7IHBhZ2VJbmRleDogbnVtYmVyOyBwYWdlU2l6ZTogbnVtYmVyIH0pIHtcbiAgICB0aGlzLnBhZ2VTdGF0ZS5zZXQoJGV2ZW50KTtcbiAgfVxuXG4gIHJlc2V0UGFnaW5hdG9yKCkge1xuICAgIHRoaXMucGFnaW5hdG9yQ29tcG9uZW50Py5yZXNldCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHByZUZvcm1hdEZvcm1TY2hlbWEgPSAoaXRlbXM6IElGb3JtU2NoZW1hPFRGb3JtR3JvdXA+W10pID0+IHtcbiAgICBpdGVtcy5mb3JFYWNoKCh4KSA9PiB7XG4gICAgICBpZiAoeC5vbkNoYW5nZUZ1bmMpIHgudHJpZ2dlck9uQ2hhbmdlT25Jbml0ID0gdHJ1ZTtcbiAgICAgIGVsc2UgaWYgKHgudHlwZSA9PSAnYnV0dG9uJykgdGhpcy5wcmVGb3JtYXRGb3JtU2NoZW1hKHguY2hpbGRyZW4pO1xuICAgIH0pO1xuICB9O1xuXG4gIG92ZXJyaWRlIGluaXQoc2NoZW1hOiBJRm9ybVNjaGVtYTxURm9ybUdyb3VwPltdKTogdm9pZCB7XG4gICAgdGhpcy5maWx0ZXJGb3Jtcy5zZXQoW10pO1xuICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuZmlsdGVyRm9ybS5jb250cm9scykge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLmZpbHRlckZvcm0uY29udHJvbHMsIGtleSkpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJGb3JtLnJlbW92ZUNvbnRyb2woa2V5KTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gZGVidWdnZXI7XG4gICAgdGhpcy5vbkRlc3Ryb3koKTtcbiAgICBpZiAoc2NoZW1hKVxuICAgICAgZm9yIChjb25zdCBzY2hlbWUgb2Ygc2NoZW1hKSB7XG4gICAgICAgIC8vIHNjaGVtZS5mb3JtID0gdGhpcy5mb3JtIHx8IHNjaGVtZS5mb3JtO1xuICAgICAgICB0aGlzLmhhbmRsZUZvcm1TY2hlbWUoc2NoZW1lKTtcbiAgICAgIH1cbiAgICB0aGlzLl9zZXRGb3JtU2NoZW1hcyhzY2hlbWEpO1xuICB9XG5cbiAgaGFuZGxlQWN0aW9uQnV0dG9uQ2xpY2soXG4gICAgaW5kZXg6IG51bWJlcixcbiAgICBmb3JtOiBGb3JtR3JvdXA8VEZvcm1Hcm91cD4sXG4gICAgZTogeyBidG4/OiBCdG5Db21wb25lbnQ7IGFjdGlvbkJ1dHRvbjogSVRhYmxlSW5wdXRCdG4gfSxcbiAgKSB7XG4gICAgZS5hY3Rpb25CdXR0b24uYWN0aW9uKHsgaW5kZXgsIGZvcm0sIGJ0bjogZS5idG4gfSk7XG4gICAgLy8gdGhpcy5yZWZyZXNoKCk7XG4gIH1cblxuICBkZWxldGVSb3dDbGlja2VkID0gKFxuICAgIGluZGV4OiBudW1iZXIsXG4gICAgcm93Rm9ybTogRm9ybUdyb3VwPFRGb3JtR3JvdXA+LFxuICAgIGNvbmZpZz86IHsgYnRuOiBCdG5Db21wb25lbnQgfSxcbiAgKSA9PiB7XG4gICAgdGhpcy5kZWxldGVSb3dGdW5jKGluZGV4LCByb3dGb3JtPy5nZXRSYXdWYWx1ZSgpLCBjb25maWcpO1xuICAgIC8vIHRoaXMucmVmcmVzaCgpO1xuICB9O1xuXG4gIGFkZFJvd0NsaWNrZWQgPSAoaW5kZXg6IG51bWJlcikgPT4ge1xuICAgIHRoaXMuYWRkUm93RnVuYyhpbmRleCArIDEsIHRoaXMuZmlsdGVyRm9ybVZhbHVlU2lnbmFsKCkpO1xuICAgIC8vIHRoaXMucmVmcmVzaCgpO1xuICAgIC8vIHRoaXMuZmlsdGVyRm9ybS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gIH07XG5cbiAgY2hlY2tSZXF1aXJlZEZpZWxkcyA9ICgpID0+IHtcbiAgICBjb25zb2xlLmxvZyh0aGlzLnNpbmdsZUZvcm1TdHJ1Y3R1cmUpO1xuICB9O1xuXG4gIG92ZXJyaWRlIGhhbmRsZUZvcm1TY2hlbWUoc2NoZW1lOiBJRm9ybVNjaGVtYSkge1xuICAgIHNjaGVtZS5pZCA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2VuZXJhdGVVVUlEKCk7XG4gICAgaWYgKHNjaGVtZS5hdXRvUGlja1ZhbHVlRmllbGQgPT0gbnVsbCAmJiAoIXNjaGVtZS52YWx1ZUZpZWxkIHx8ICFzY2hlbWUubGFiZWxGaWVsZCkpXG4gICAgICBzY2hlbWUuYXV0b1BpY2tWYWx1ZUZpZWxkID0gdHJ1ZTtcblxuICAgIGlmIChzY2hlbWUub3B0aW9uc0luaXRGdW5jKSB7XG4gICAgICBzY2hlbWUub3B0aW9uc0luaXRGdW5jLnN1YnNjcmliZSgocikgPT4ge1xuICAgICAgICBzY2hlbWUub3B0aW9ucyA9IHI7XG4gICAgICAgIC8vIHRoaXMub3B0aW9uc01hcFtzY2hlbWUuZmllbGRdID0gcjtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoc2NoZW1lLmlzU2VhcmNoRmllbGQpIHtcbiAgICAgIHRoaXMuZmlsdGVyRm9ybXMudXBkYXRlKChmaWx0ZXJGb3JtcykgPT4gZmlsdGVyRm9ybXMuY29uY2F0KFtzY2hlbWVdKSk7XG4gICAgICB0aGlzLmZpbHRlckZvcm0uYWRkQ29udHJvbChzY2hlbWUuZmllbGQ/LnRvU3RyaW5nKCksIG5ldyBGb3JtQ29udHJvbCgpKTtcbiAgICB9IGVsc2UgaWYgKHNjaGVtZS50eXBlID09ICdidXR0b24nKSB7XG4gICAgICBpZiAoc2NoZW1lLmNoaWxkcmVuPy5sZW5ndGgpXG4gICAgICAgIHRoaXMuY2hpbGRyZW5Gb3JtU2NoZW1hTWFwW3NjaGVtZS5maWVsZCBhcyBzdHJpbmddID0ge1xuICAgICAgICAgIGZvcm1TY2hlbWE6IHNjaGVtZS5jaGlsZHJlbixcbiAgICAgICAgICBmb3JtU2NoZW1hU3RyOiBzY2hlbWUuY2hpbGRyZW4ubWFwKCh4KSA9PiB4LmZpZWxkIGFzIHN0cmluZyksXG4gICAgICAgIH07XG4gICAgfVxuICAgIHNjaGVtZS5pc1JlcXVpcmVkID1cbiAgICAgIHNjaGVtZS5pc1JlcXVpcmVkIHx8XG4gICAgICAoPEZvcm1Hcm91cD50aGlzLnNpbmdsZUZvcm1TdHJ1Y3R1cmU/LmNvbnRyb2xzW3NjaGVtZS5maWVsZF0pPy5oYXNWYWxpZGF0b3IoXG4gICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICApO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRhYmxlSW5wdXRCdG4gZXh0ZW5kcyBJQnRuIHtcbiAgYWN0aW9uPzogKGFyZz86IHsgaW5kZXg6IG51bWJlcjsgZm9ybTogRm9ybUdyb3VwOyBidG46IEJ0bkNvbXBvbmVudCB9KSA9PiB2b2lkO1xufVxuIiwiPGRpdiBjbGFzcz1cInRhYmxlLWlucHV0XCI+XG4gIEBpZiAoZmlsdGVyRm9ybXMoKT8ubGVuZ3RoKSB7XG4gICAgPGRpdiBjbGFzcz1cIm1iLTMge3sgZmlsdGVyQ29udGFpbmVyQ2xhc3MoKSB9fVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxuICAgICAgICA8YXBwLWJ0blxuICAgICAgICAgIHRleHQ9XCJ7eyBmaWx0ZXJTZWN0aW9uLmhpZGRlbiA/ICdTaG93IEZpbHRlcicgOiAnSGlkZSBGaWx0ZXInIH19XCJcbiAgICAgICAgICBbaWNvbl09XCJmaWx0ZXJTZWN0aW9uLmhpZGRlbiA/ICdzZWFyY2gnIDogJ2Nsb3NlJ1wiXG4gICAgICAgICAgKG1jbGljayk9XCJmaWx0ZXJTZWN0aW9uLmhpZGRlbiA9ICFmaWx0ZXJTZWN0aW9uLmhpZGRlblwiIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgcC0zIG10LTMgcm91bmRlZC0xMFwiICNmaWx0ZXJTZWN0aW9uIFtoaWRkZW5dPVwidHJ1ZVwiPlxuICAgICAgICA8Zm9ybS1nZW5lcmF0b3IgW2Zvcm1dPVwiZmlsdGVyRm9ybVwiIFtmb3JtU2NoZW1hXT1cImZpbHRlckZvcm1zKClcIiBbZ3JpZExHU3R5bGVdPVwiM1wiIFtzaG93U3VibWl0QnRuXT1cImZhbHNlXCIgKG1jaGFuZ2UpPVwicmVzZXRQYWdpbmF0b3IoKVwiIC8+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxuICAgICAgICAgIDxhcHAtYnRuIHR5cGU9XCJkYW5nZXItb3V0bGluZVwiIHRleHQ9XCJDbGVhclwiIChtY2xpY2spPVwiZmlsdGVyRm9ybS5yZXNldCgpXCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgfVxuXG4gIDxkaXYgY2xhc3M9XCJiZy13aGl0ZVwiIFtuZ0NsYXNzXT1cInsgJ2JvcmRlciByb3VuZGVkLTEwJzogYm9yZGVyKCkgfVwiPlxuICAgIDxkaXYgY2xhc3M9XCIgXCI+XG4gICAgICA8dGFibGUgY2xhc3M9XCIge3sgdGFibGVDbGFzcygpIH19IFwiIFtuZ0NsYXNzXT1cInsgJ2lzLXNob3ctZm9ybSc6IGlzU2hvdygpIH1cIj5cbiAgICAgICAgPHRoZWFkIChjbGljayk9XCJ1dGlsaXR5U2VydmljZS5sb2dGb3JtKGZpbHRlcmVkRm9ybUFycmF5KCkpXCI+XG4gICAgICAgICAgPHRyIGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgZm9ybVNjaGVtYSgpOyB0cmFjayBpdGVtLmxhYmVsKSB7XG4gICAgICAgICAgICAgIDx0aCBjbGFzcz1cInt7IGl0ZW0uY2xzIH19XCI+XG4gICAgICAgICAgICAgICAge3sgaXRlbS5sYWJlbCB8IGFwcFRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICAgICAgICAgICAge3sgaXRlbS5pc1JlcXVpcmVkID8gJyonIDogJycgfX1cbiAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoIWlzU2hvdygpKSB7XG4gICAgICAgICAgICAgIDx0aD48L3RoPlxuICAgICAgICAgICAgICA8dGg+PC90aD5cbiAgICAgICAgICAgICAgQGZvciAoYWN0aW9uQnRuIG9mIGFjdGlvbkJ0bnMoKTsgdHJhY2sgYWN0aW9uQnRuKSB7XG4gICAgICAgICAgICAgICAgPHRoPjwvdGg+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3RyPlxuICAgICAgICA8L3RoZWFkPlxuICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgQGZvciAoc3ViRm9ybSBvZiBwYWdpbmF0ZWRBbmRGaWx0ZXJlZEZvcm1BcnJheSgpOyB0cmFjayBzdWJGb3JtOyBsZXQgaSA9ICRpbmRleCkge1xuICAgICAgICAgICAgPHRyXG4gICAgICAgICAgICAgIHRhYmxlLWlucHV0LXJvd1xuICAgICAgICAgICAgICAob25BZGRSb3dGdW5jKT1cImFkZFJvd0NsaWNrZWQoc3ViRm9ybS5pbmRleClcIlxuICAgICAgICAgICAgICBbaXNTaG93XT1cImlzU2hvdygpXCJcbiAgICAgICAgICAgICAgW2Zvcm1dPVwic3ViRm9ybS5mb3JtXCJcbiAgICAgICAgICAgICAgW2FjdGlvbkJ0bnNdPVwiYWN0aW9uQnRucygpXCJcbiAgICAgICAgICAgICAgW2Zvcm1TY2hlbWFdPVwiZm9ybVNjaGVtYSgpXCJcbiAgICAgICAgICAgICAgW2NoaWxkcmVuRm9ybVNjaGVtYU1hcF09XCJjaGlsZHJlbkZvcm1TY2hlbWFNYXBcIlxuICAgICAgICAgICAgICAob25EZWxldGVSb3dGdW5jKT1cIlxuICAgICAgICAgICAgICAgIGRlbGV0ZVJvd0NsaWNrZWQoc3ViRm9ybS5pbmRleCwgc3ViRm9ybS5mb3JtLCB7XG4gICAgICAgICAgICAgICAgICBidG46ICRldmVudD8uYnRuXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgKG9uQWN0aW9uQnV0dG9uQ2xpY2spPVwiaGFuZGxlQWN0aW9uQnV0dG9uQ2xpY2soc3ViRm9ybS5pbmRleCwgc3ViRm9ybS5mb3JtLCAkZXZlbnQpXCI+PC90cj5cbiAgICAgICAgICB9IEBlbXB0eSB7XG4gICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtY2VudGVyXCIgW2NvbFNwYW5dPVwiZm9ybVNjaGVtYSgpPy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICB7eyAnVGhlcmUgYXJlIG5vIGl0ZW1zJyB8IGFwcFRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgIH1cbiAgICAgICAgPC90Ym9keT5cbiAgICAgIDwvdGFibGU+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiXCIgW2hpZGRlbl09XCIhdXNlUGFnaW5hdG9yKCkgfHwgIWZpbHRlcmVkRm9ybUFycmF5TGVuZ3RoKCkgfHwgZmlsdGVyZWRGb3JtQXJyYXlMZW5ndGgoKSA8IHBhZ2VTaXplKClcIj5cbiAgICAgIDxwYWdpbmF0b3JcbiAgICAgICAgI3BhZ2luYXRvclRhZ1xuICAgICAgICBbYXJyYXlMZW5ndGhdPVwiZmlsdGVyZWRGb3JtQXJyYXlMZW5ndGgoKVwiXG4gICAgICAgIChwYWdlQ2hhbmdlZCk9XCJwYWdlQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgW3BhZ2VTaXplXT1cInBhZ2VTaXplKClcIlxuICAgICAgICBbcmVzZXRJbmRleEZ1bmNdPVwiZmlsdGVyRm9ybS52YWx1ZUNoYW5nZXNcIiAvPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -232,10 +232,10 @@ export class TableBaseComponent {
|
|
|
232
232
|
refreshUI() {
|
|
233
233
|
this.cdr.detectChanges();
|
|
234
234
|
}
|
|
235
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
236
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "
|
|
235
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: TableBaseComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
236
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.0", type: TableBaseComponent, isStandalone: true, selector: "ng-component", inputs: { rowOptions: { classPropertyName: "rowOptions", publicName: "rowOptions", isSignal: true, isRequired: false, transformFunction: null }, centerCells: { classPropertyName: "centerCells", publicName: "centerCells", isSignal: true, isRequired: false, transformFunction: null }, curvy: { classPropertyName: "curvy", publicName: "curvy", isSignal: true, isRequired: false, transformFunction: null }, distinct: { classPropertyName: "distinct", publicName: "distinct", isSignal: true, isRequired: false, transformFunction: null }, header: { classPropertyName: "header", publicName: "header", isSignal: true, isRequired: false, transformFunction: null }, isExpandable: { classPropertyName: "isExpandable", publicName: "isExpandable", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, isDisabledFunc: { classPropertyName: "isDisabledFunc", publicName: "isDisabledFunc", isSignal: true, isRequired: false, transformFunction: null }, noItemTxt: { classPropertyName: "noItemTxt", publicName: "noItemTxt", isSignal: true, isRequired: false, transformFunction: null }, nowrap: { classPropertyName: "nowrap", publicName: "nowrap", isSignal: true, isRequired: false, transformFunction: null }, expandedRowTemplate: { classPropertyName: "expandedRowTemplate", publicName: "expandedRowTemplate", isSignal: true, isRequired: false, transformFunction: null }, orderDirection: { classPropertyName: "orderDirection", publicName: "orderDirection", isSignal: true, isRequired: false, transformFunction: null }, orderField: { classPropertyName: "orderField", publicName: "orderField", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, startSectionTemplate: { classPropertyName: "startSectionTemplate", publicName: "startSectionTemplate", isSignal: true, isRequired: false, transformFunction: null }, pageSizeOptions: { classPropertyName: "pageSizeOptions", publicName: "pageSizeOptions", isSignal: true, isRequired: false, transformFunction: null }, placeSelectionAtRight: { classPropertyName: "placeSelectionAtRight", publicName: "placeSelectionAtRight", isSignal: true, isRequired: false, transformFunction: null }, showAdditionalColumns: { classPropertyName: "showAdditionalColumns", publicName: "showAdditionalColumns", isSignal: true, isRequired: false, transformFunction: null }, showExport: { classPropertyName: "showExport", publicName: "showExport", isSignal: true, isRequired: false, transformFunction: null }, showRowPointer: { classPropertyName: "showRowPointer", publicName: "showRowPointer", isSignal: true, isRequired: false, transformFunction: null }, smallerFonts: { classPropertyName: "smallerFonts", publicName: "smallerFonts", isSignal: true, isRequired: false, transformFunction: null }, striped: { classPropertyName: "striped", publicName: "striped", isSignal: true, isRequired: false, transformFunction: null }, tableContainerClass: { classPropertyName: "tableContainerClass", publicName: "tableContainerClass", isSignal: true, isRequired: false, transformFunction: null }, useSelection: { classPropertyName: "useSelection", publicName: "useSelection", isSignal: true, isRequired: false, transformFunction: null }, formSchemaToColumns: { classPropertyName: "formSchemaToColumns", publicName: "formSchemaToColumns", isSignal: true, isRequired: false, transformFunction: null }, uploadSchemaToColumns: { classPropertyName: "uploadSchemaToColumns", publicName: "uploadSchemaToColumns", isSignal: true, isRequired: false, transformFunction: null }, _displayedColumns: { classPropertyName: "_displayedColumns", publicName: "displayedColumns", isSignal: true, isRequired: false, transformFunction: null }, useCustomLabels: { classPropertyName: "useCustomLabels", publicName: "useCustomLabels", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { _rowClick: "rowClick", selectionChanged: "selectionChanged", emitCheckbox: "emitCheckbox", useCustomLabels: "useCustomLabelsChange" }, viewQueries: [{ propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true }, { propertyName: "table", first: true, predicate: ["table"], descendants: true }], ngImport: i0, template: '', isInline: true }); }
|
|
237
237
|
}
|
|
238
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
238
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: TableBaseComponent, decorators: [{
|
|
239
239
|
type: Component,
|
|
240
240
|
args: [{
|
|
241
241
|
template: '',
|
|
@@ -259,4 +259,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
|
|
|
259
259
|
type: ViewChild,
|
|
260
260
|
args: ['table']
|
|
261
261
|
}] } });
|
|
262
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldHMtZmUtbmctc2RrL3NyYy9saWIvU2hhcmVkL2NvbXBvbmVudHMvdGFibGUtcGxhaW4vdGFibGUtYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFtQixjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUdOLFNBQVMsRUFFVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBQ0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLElBQUksWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0UsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWpELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFTdEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQVEzQyxNQUFNLE9BQWdCLGtCQUFrQjtJQUx4QztRQU1xQixRQUFHLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDMUMsZUFBVSxHQUFHLEtBQUssRUFBdUIsQ0FBQztRQUMxQyxnQkFBVyxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNwQyxVQUFLLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO1FB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QjtrQkFMdkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsRUFBRTtvQkFDWixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFLEVBQUU7aUJBQ1o7OEJBeUZxQixTQUFTO3NCQUE1QixNQUFNO3VCQUFDLFVBQVU7Z0JBQ1IsZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBTWtCLFNBQVM7c0JBQWpDLFNBQVM7dUJBQUMsWUFBWTtnQkFDSCxJQUFJO3NCQUF2QixTQUFTO3VCQUFDLE9BQU87Z0JBQ0UsS0FBSztzQkFBeEIsU0FBUzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2VsZWN0aW9uQ2hhbmdlLCBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIE91dHB1dCxcbiAgU2lnbmFsLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBXcml0YWJsZVNpZ25hbCxcbiAgY29tcHV0ZWQsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIG1vZGVsLFxuICBzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0UGFnaW5hdG9yIGFzIE1hdFBhZ2luYXRvciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XG5pbXBvcnQgeyBNYXRTb3J0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XG5pbXBvcnQgeyBNYXRUYWJsZSBhcyBNYXRUYWJsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcbmltcG9ydCB7IGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBJRm9ybVNjaGVtYSB9IGZyb20gJy4uLy4uL21vZGVscy9mb3JtLXNjaGVtYS5tb2RlbCc7XG5pbXBvcnQge1xuICBJT2JqZWN0TGl0ZXJhbCxcbiAgSVJvd09wdGlvbixcbiAgSVN0cmljdEZvcm1Hcm91cCxcbiAgU29ydFR5cGUsXG4gIFRhYmxlQ29sLFxufSBmcm9tICcuLi8uLi9tb2RlbHMvaW5kZXgubW9kZWwnO1xuaW1wb3J0IHsgVXRpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9TZXJ2aWNlcy91dGlsaXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgVGFibGVTZXJ2aWNlIH0gZnJvbSAnLi90YWJsZS1wbGFpbi5zZXJ2aWNlJztcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgbWFwLCBzdGFydFdpdGgsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTW9kYWxDb21wb25lbnQgfSBmcm9tICcuLi9tb2RhbC9tb2RhbC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGU6ICcnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXSxcbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVGFibGVCYXNlQ29tcG9uZW50PFRJdGVtIGV4dGVuZHMgSU9iamVjdExpdGVyYWw+IHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIHJlYWRvbmx5IHJvd09wdGlvbnMgPSBpbnB1dDxJUm93T3B0aW9uPFRJdGVtPltdPigpO1xuICByZWFkb25seSBjZW50ZXJDZWxscyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgY3VydnkgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IGRpc3RpbmN0ID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG4gIC8qKkFwcGVhcnMgYWJvdmUgdGhlIHRhYmxlICovXG4gIHJlYWRvbmx5IGhlYWRlciA9IGlucHV0PHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgaXNFeHBhbmRhYmxlID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICAvKiogVXNlZCB0byBuYW1lIG1ldGFkYXRhIG9mIHRoZSB0YWJsZSBsaWtlIGV4cG9ydGVkIGZpbGVzICovXG4gIHJlYWRvbmx5IGxhYmVsID0gaW5wdXQ8c3RyaW5nPigpO1xuICByZWFkb25seSBpc0Rpc2FibGVkRnVuYyA9IGlucHV0PChyb3c6IFRJdGVtKSA9PiBib29sZWFuPigpO1xuICByZWFkb25seSBub0l0ZW1UeHQgPSBpbnB1dCgnVGhlcmUgYXJlIG5vIGl0ZW1zJyk7XG4gIHJlYWRvbmx5IG5vd3JhcCA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuICByZWFkb25seSBleHBhbmRlZFJvd1RlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8YW55Pj4oKTtcbiAgcmVhZG9ubHkgb3JkZXJEaXJlY3Rpb24gPSBpbnB1dDxTb3J0VHlwZT4oJ2FzYycpO1xuICByZWFkb25seSBvcmRlckZpZWxkID0gaW5wdXQ8a2V5b2YgVEl0ZW0+KCk7XG4gIHJlYWRvbmx5IHBhZ2VTaXplID0gaW5wdXQoMTApO1xuICByZWFkb25seSBzdGFydFNlY3Rpb25UZW1wbGF0ZSA9IGlucHV0PFRlbXBsYXRlUmVmPEhUTUxFbGVtZW50Pj4oKTtcbiAgcmVhZG9ubHkgY29tcHV0ZWRQYWdlU2l6ZU9wdGlvbnMgPSBjb21wdXRlZDxudW1iZXJbXT4oKCkgPT4ge1xuICAgIGNvbnN0IGRlZmF1bHRQYWdlU2l6ZU9wdGlvbnMgPSB0aGlzLmRlZmF1bHRQYWdlU2l6ZU9wdGlvbnMoKSxcbiAgICAgIHBhZ2VTaXplT3B0aW9ucyA9IHRoaXMucGFnZVNpemVPcHRpb25zKCksXG4gICAgICByZXN1bHRzTGVuZ3RoID0gdGhpcy5yZXN1bHRzTGVuZ3RoKCk7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHBhZ2VTaXplT3B0aW9ucz8ubGVuZ3RoID8gcGFnZVNpemVPcHRpb25zIDogZGVmYXVsdFBhZ2VTaXplT3B0aW9ucztcbiAgICByZXR1cm4gb3B0aW9ucy5jb25jYXQob3B0aW9ucz8ubGFzdEl0ZW0oKSA+IHJlc3VsdHNMZW5ndGggPyBbXSA6IFtyZXN1bHRzTGVuZ3RoXSk7XG4gIH0pO1xuICByZWFkb25seSBkZWZhdWx0UGFnZVNpemVPcHRpb25zID0gc2lnbmFsKFs1LCAxMCwgMjAsIDUwLCAxMDAsIDUwMCwgMTAwMCwgNTAwMF0pO1xuICByZWFkb25seSBwYWdlU2l6ZU9wdGlvbnMgPSBpbnB1dDxudW1iZXJbXT4oKTtcbiAgcmVhZG9ubHkgcGxhY2VTZWxlY3Rpb25BdFJpZ2h0ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpOyAvLyBzdXBwb3J0IGN1c3RvbWl6aW5nIHRoZSBwb3NpdGlvbiBvZiB0aGUgc2VsZWN0IGNoZWNrYm94ZXMuXG4gIHJlYWRvbmx5IHNob3dBZGRpdGlvbmFsQ29sdW1ucyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgc2hvd0V4cG9ydCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgc2hvd1Jvd1BvaW50ZXIgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IHNtYWxsZXJGb250cyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgc3RyaXBlZCA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuICByZWFkb25seSB0YWJsZUNvbnRhaW5lckNsYXNzID0gaW5wdXQ8c3RyaW5nPigpO1xuICByZWFkb25seSB1c2VTZWxlY3Rpb24gPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG5cbiAgcmVhZG9ubHkgZm9ybVNjaGVtYVRvQ29sdW1ucyA9IGlucHV0PElGb3JtU2NoZW1hPElTdHJpY3RGb3JtR3JvdXA8VEl0ZW0+PltdPigpO1xuICByZWFkb25seSB1cGxvYWRTY2hlbWFUb0NvbHVtbnMgPSBpbnB1dDx7IGZpZWxkPzoga2V5b2YgVEl0ZW07IGxhYmVsPzogc3RyaW5nIH1bXT4oKTtcblxuICByZWFkb25seSBfZGlzcGxheWVkQ29sdW1ucyA9IGlucHV0PFRhYmxlQ29sPFRJdGVtPltdPihbXSwgeyBhbGlhczogJ2Rpc3BsYXllZENvbHVtbnMnIH0pO1xuICByZWFkb25seSBkaXNwbGF5ZWRDb2x1bW5zID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLnVzZUN1c3RvbUxhYmVscygpXG4gICAgICA/IHRoaXMudFMuZ2xvYmFsQ29sdW1uc0Zvcm1hdHRlcih0aGlzLl9kaXNwbGF5ZWRDb2x1bW5zKCkpXG4gICAgICA6IHRoaXMuX2Rpc3BsYXllZENvbHVtbnMoKSxcbiAgKTtcbiAgcmVhZG9ubHkgb3ZlcnJpZGVEaXNwbGF5ZWRDb2x1bW5zID0gc2lnbmFsPFRhYmxlQ29sPFRJdGVtPltdPihudWxsKTtcblxuICByZWFkb25seSBkaXNwbGF5ZWRDb2x1bW5zTm9BQyA9IGNvbXB1dGVkKCgpID0+XG4gICAgY2xvbmVEZWVwKHRoaXMuZGlzcGxheWVkQ29sdW1ucygpPy5maWx0ZXIoKHgpID0+ICF4LmFkZGl0aW9uYWxDb2x1bW4pKSxcbiAgKTtcbiAgcmVhZG9ubHkgZGlzcGxheWVkQ29sdW1uc01hcCA9IGNvbXB1dGVkKCgpID0+IGNsb25lRGVlcCh0aGlzLmRpc3BsYXllZENvbHVtbnMoKT8udG9NYXAoJ2YnKSkpO1xuICByZWFkb25seSBjb21wdXRlZERpc3BsYXllZENvbHVtbnNNYXAgPSBjb21wdXRlZCgoKSA9PlxuICAgIGNsb25lRGVlcChcbiAgICAgIHRoaXMuY29tcHV0ZWREaXNwbGF5ZWRDb2x1bW5zKCk/LnRvTWFwKCdmJykgYXMgeyBbayBpbiBrZXlvZiBUSXRlbV06IFRhYmxlQ29sPFRJdGVtPiB9LFxuICAgICksXG4gICk7XG5cbiAgcmVhZG9ubHkgY29tcHV0ZWREaXNwbGF5ZWRDb2x1bW5zID0gY29tcHV0ZWQ8VGFibGVDb2w8VEl0ZW0+W10+KCgpID0+IHtcbiAgICBjb25zdCBkYyA9XG4gICAgICAgIHRoaXMuZGlzcGxheWVkQ29sdW1uc05vQUMoKT8ubWFwKChjKSA9PiB7XG4gICAgICAgICAgaWYgKCFjLnQpIHtcbiAgICAgICAgICAgIGlmIChjLnR5cGUgPT0gJ2J1dHRvbicpIGMudCA9ICdBY3Rpb24nO1xuICAgICAgICAgICAgZWxzZSBpZiAoYy50eXBlID09ICdidG5zJykgYy50ID0gJ0FjdGlvbnMnO1xuICAgICAgICAgICAgYy5zdGlja3kgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gYztcbiAgICAgICAgfSkgfHwgW10sXG4gICAgICBvdmVycmlkZUNvbHVtbnMgPSB0aGlzLm92ZXJyaWRlRGlzcGxheWVkQ29sdW1ucygpLFxuICAgICAgZm9ybVNjaGVtYVRvQ29sdW1ucyA9IHRoaXMuZm9ybVNjaGVtYVRvQ29sdW1ucygpLFxuICAgICAgdXBsb2FkU2NoZW1hVG9Db2x1bW5zID0gdGhpcy51cGxvYWRTY2hlbWFUb0NvbHVtbnMoKTtcbiAgICBsZXQgY29sdW1ucyA9IChvdmVycmlkZUNvbHVtbnM/Lmxlbmd0aCA/IG92ZXJyaWRlQ29sdW1ucyA6IGRjKVxuICAgICAgLmNvbmNhdChcbiAgICAgICAgZm9ybVNjaGVtYVRvQ29sdW1ucz8ubWFwKCh4KSA9PiAoe1xuICAgICAgICAgIGY6IHguZmllbGQgYXMga2V5b2YgVEl0ZW0sXG4gICAgICAgICAgdDogeC5sYWJlbCxcbiAgICAgICAgICBmb3JtYXR0ZXI6IHgudGFibGVGb3JtYXR0ZXIsXG4gICAgICAgIH0pKSB8fCBbXSxcbiAgICAgIClcbiAgICAgIC5jb25jYXQoXG4gICAgICAgIHVwbG9hZFNjaGVtYVRvQ29sdW1ucz8uZmlsdGVyKCh4KSA9PiB4LmZpZWxkKS5tYXAoKHgpID0+ICh7IGY6IHguZmllbGQsIHQ6IHgubGFiZWwgfSkpIHx8XG4gICAgICAgICAgW10sXG4gICAgICApO1xuICAgIGNvbHVtbnMgPSBjb2x1bW5zLmZpbHRlcigoeCkgPT4geC5mKTtcbiAgICB0aGlzLmF1dG9TZXRDb2x1bW5Gb3JtYXR0ZXIoY29sdW1ucyk7XG4gICAgcmV0dXJuIGNvbHVtbnM7XG4gIH0pO1xuXG4gIEBPdXRwdXQoJ3Jvd0NsaWNrJykgX3Jvd0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxUSXRlbT4oKTtcbiAgQE91dHB1dCgpIHNlbGVjdGlvbkNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFNlbGVjdGlvbkNoYW5nZTxhbnk+PigpO1xuICBAT3V0cHV0KCkgZW1pdENoZWNrYm94ID0gbmV3IEV2ZW50RW1pdHRlcjx7XG4gICAgZmllbGQ6IGtleW9mIFRJdGVtO1xuICAgIGl0ZW06IFRJdGVtO1xuICAgIHZhbHVlOiBib29sZWFuO1xuICB9PigpO1xuXG4gIEBWaWV3Q2hpbGQoTWF0UGFnaW5hdG9yKSBwYWdpbmF0b3I6IE1hdFBhZ2luYXRvcjtcbiAgQFZpZXdDaGlsZChNYXRTb3J0KSBzb3J0OiBNYXRTb3J0O1xuICBAVmlld0NoaWxkKCd0YWJsZScpIHRhYmxlOiBNYXRUYWJsZTxhbnk+O1xuICByZWFkb25seSByZXN1bHRzTGVuZ3RoOiBTaWduYWw8bnVtYmVyPjtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHN0YXJ0ZXJTZWN0aW9uQ2xhc3MgPSBzaWduYWwoJ3JvdyByb3ctY29scy1sZy1hdXRvIGctMyBhbGlnbi1pdGVtcy1jZW50ZXInKTtcbiAgcmVhZG9ubHkgcmF3Q29sdW1ucyA9IGNvbXB1dGVkPHN0cmluZ1tdPigoKSA9PlxuICAgIHRoaXMudFMuZ2V0UmF3RmllbGRzKFxuICAgICAgdGhpcy5jb21wdXRlZERpc3BsYXllZENvbHVtbnMoKSxcbiAgICAgIHRoaXMucm93T3B0aW9ucygpPy5sZW5ndGgsXG4gICAgICB0aGlzLnVzZVNlbGVjdGlvbigpLFxuICAgICAgdGhpcy5wbGFjZVNlbGVjdGlvbkF0UmlnaHQoKSxcbiAgICAgIHRoaXMuaXNFeHBhbmRhYmxlKCksXG4gICAgKSxcbiAgKTtcbiAgcmVhZG9ubHkgZXhwYW5kZWRFbGVtZW50ID0gc2lnbmFsPFRJdGVtPihudWxsKTtcbiAgcmVhZG9ubHkgc2VsZWN0aW9uID0gbmV3IFNlbGVjdGlvbk1vZGVsPFRJdGVtPih0cnVlLCBbXSk7XG4gIHByb3RlY3RlZCBfc2VsZWN0aW9uQ2hhbmdlZCA9IHRvU2lnbmFsKHRoaXMuc2VsZWN0aW9uLmNoYW5nZWQpO1xuICByZWFkb25seSBzZWxlY3RlZEl0ZW1zU2lnbmFsID0gdG9TaWduYWwoXG4gICAgdGhpcy5zZWxlY3Rpb24uY2hhbmdlZC5waXBlKFxuICAgICAgdGFwKChyKSA9PiB0aGlzLnNlbGVjdGlvbkNoYW5nZWQuZW1pdChyKSksXG4gICAgICBtYXAoKHIpID0+IHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkKSxcbiAgICAgIHN0YXJ0V2l0aChbXSksXG4gICAgKSxcbiAgKTtcblxuICByZWFkb25seSBjZWxsRm9ybWF0dGVyTWFwOiB7XG4gICAgW2sgaW4ga2V5b2YgVEl0ZW1dPzoge1xuICAgICAgbm9Gb3JtYXQ/OiBib29sZWFuO1xuICAgICAgZm9ybWF0dGVyPzogVGFibGVDb2xbJ2Zvcm1hdHRlciddO1xuICAgIH07XG4gIH0gPSB7fTtcbiAgcHVibGljIHVTID0gaW5qZWN0KFV0aWxpdHlTZXJ2aWNlKTtcbiAgcHVibGljIHRTID0gaW5qZWN0KFRhYmxlU2VydmljZSk7XG4gIHJlYWRvbmx5IHVzZUN1c3RvbUxhYmVscyA9IG1vZGVsKHRydWUpO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBudW1iZXIgb2Ygc2VsZWN0ZWQgZWxlbWVudHMgbWF0Y2hlcyB0aGUgdG90YWwgbnVtYmVyIG9mIHJvd3MuICovXG4gIHJlYWRvbmx5IGlzQWxsU2VsZWN0ZWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnNlbGVjdGVkSXRlbXNTaWduYWwoKS5sZW5ndGggPT0gdGhpcy5kYXRhKCk/Lmxlbmd0aCk7XG4gIHJlYWRvbmx5IGlzQW55U2VsZWN0ZWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnNlbGVjdGVkSXRlbXNTaWduYWwoKS5sZW5ndGggPiAwKTtcblxuICAvKiogVGhlIGxhYmVsIGZvciB0aGUgY2hlY2tib3ggb24gdGhlIHBhc3NlZCByb3cgKi9cbiAgY2hlY2tib3hMYWJlbChyb3c/OiBUSXRlbSk6IHN0cmluZyB7XG4gICAgaWYgKCFyb3cpIHtcbiAgICAgIHJldHVybiBgJHt0aGlzLmlzQWxsU2VsZWN0ZWQoKSA/ICdkZXNlbGVjdCcgOiAnc2VsZWN0J30gYWxsYDtcbiAgICB9XG4gICAgcmV0dXJuIGAke3RoaXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWQocm93KSA/ICdkZXNlbGVjdCcgOiAnc2VsZWN0J30gcm93IGA7XG4gIH1cblxuICBmaWVsZHNDaGFuZ2VkKCRldmVudDogeyBuRmllbGRzOiBUYWJsZUNvbFtdOyBhbGxGaWVsZHM6IFRhYmxlQ29sW10gfSkge1xuICAgIGNvbnN0IGNvbHMgPSAkZXZlbnQubkZpZWxkcztcbiAgICB0aGlzLm92ZXJyaWRlRGlzcGxheWVkQ29sdW1ucy5zZXQoXG4gICAgICBjb2xzXG4gICAgICAgIC5maWx0ZXIoKHgpID0+ICEoeC50eXBlID09ICdidG5zJyAmJiB4LnN0aWNreSkpXG4gICAgICAgIC5jb25jYXQoY29scy5maWx0ZXIoKHgpID0+IHgudHlwZSA9PSAnYnRucycgJiYgeC5zdGlja3kpKVxuICAgICAgICAubWFwKCh4KSA9PiB7XG4gICAgICAgICAgaWYgKHgudHlwZSA9PT0gJ251bWJlcicpIHguZm9ybWF0dGVyID0gdGhpcy51Uy5tb25leVBhcnNlcjtcbiAgICAgICAgICByZXR1cm4geDtcbiAgICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIGdldEFjdGlvblN0YXR1c0NhbGxiYWNrKGNvbCkge1xuICAgIHJldHVybiAoc3RhdGU6IGJvb2xlYW4pID0+IChjb2wuYnRuLmxvYWRpbmcgPSBzdGF0ZSk7XG4gIH1cbiAgcmVhZG9ubHkgZGF0YTogV3JpdGFibGVTaWduYWw8VEl0ZW1bXT47XG5cbiAgYXV0b1NldENvbHVtbkZvcm1hdHRlciA9IChjb2x1bW5zOiBUYWJsZUNvbDxUSXRlbT5bXSkgPT4ge1xuICAgIGlmICghY29sdW1ucykgcmV0dXJuO1xuICAgIGNvbnN0IGNlbGxzVG9DaGVja0ZvcjogeyBbayBpbiBrZXlvZiBUSXRlbV0/OiBudW1iZXIgfSA9IHt9O1xuICAgIC8vIGNvbnN0IGRhdGVGaWVsZHMgPSB7IGNyZWF0ZWRPbjogMSwgdXBkYXRlZE9uOiAxIH07XG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGNvbHVtbnMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBjb25zdCBpdGVtID0gY29sdW1uc1tpbmRleF07XG4gICAgICBpZiAoaXRlbS5ub0Zvcm1hdCB8fCBpdGVtLmZvcm1hdHRlciB8fCBpdGVtLmZvcm1hdHRlclJvdykge1xuICAgICAgICB0aGlzLmNlbGxGb3JtYXR0ZXJNYXBbaXRlbS5mXSA9IHtcbiAgICAgICAgICBub0Zvcm1hdDogaXRlbS5ub0Zvcm1hdCxcbiAgICAgICAgICBmb3JtYXR0ZXI6IGl0ZW0uZm9ybWF0dGVyLFxuICAgICAgICB9O1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHNhdmVkQ29uZmlnID0gdGhpcy5jZWxsRm9ybWF0dGVyTWFwW2l0ZW0uZl07XG4gICAgICBpZiAoc2F2ZWRDb25maWcpIHtcbiAgICAgICAgaXRlbS5ub0Zvcm1hdCA9IHNhdmVkQ29uZmlnLm5vRm9ybWF0O1xuICAgICAgICBpdGVtLmZvcm1hdHRlciA9IHNhdmVkQ29uZmlnLmZvcm1hdHRlcjtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBpdGVtRmllbGRMb3dlciA9IGl0ZW0uZj8udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgaXRlbUZpZWxkTG93ZXIgPT0gJ2lkJyB8fFxuICAgICAgICAgIGl0ZW1GaWVsZExvd2VyLmluY2x1ZGVzKCd5ZWFyJykgfHxcbiAgICAgICAgICBpdGVtRmllbGRMb3dlci5pbmNsdWRlcygnYWdlJylcbiAgICAgICAgKSB7XG4gICAgICAgICAgaXRlbS5ub0Zvcm1hdCA9IHRydWU7XG4gICAgICAgICAgdGhpcy5jZWxsRm9ybWF0dGVyTWFwW2l0ZW0uZl0gPSBpdGVtO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNlbGxzVG9DaGVja0ZvcltpdGVtLmZdID0gaW5kZXg7XG4gICAgfVxuICAgIGlmICghdGhpcy5kYXRhKCkpIHJldHVybjtcbiAgICBjb25zb2xlLmxvZygnY2VsbHNUb0NoZWNrRm9yJywgSlNPTi5zdHJpbmdpZnkoY2VsbHNUb0NoZWNrRm9yKSk7XG4gICAgZm9yIChjb25zdCByb3cgb2YgdGhpcy5kYXRhKCkpIHtcbiAgICAgIGlmICghT2JqZWN0LmtleXMoY2VsbHNUb0NoZWNrRm9yKS5sZW5ndGgpIGJyZWFrO1xuICAgICAgZm9yIChjb25zdCBrZXkgaW4gY2VsbHNUb0NoZWNrRm9yKSB7XG4gICAgICAgIGNvbnN0IGNlbGwgPSBjb2x1bW5zW2NlbGxzVG9DaGVja0ZvcltrZXldXTtcbiAgICAgICAgY29uc3QgdHlwZW8gPSB0eXBlb2Ygcm93W2tleV07XG4gICAgICAgIGlmICh0eXBlbyA9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICBjZWxsLmZvcm1hdHRlciA9IHRoaXMudVMueWVzTm9DZWxsRm9ybWF0dGVyO1xuICAgICAgICAgIGRlbGV0ZSBjZWxsc1RvQ2hlY2tGb3Jba2V5XTtcbiAgICAgICAgICB0aGlzLmNlbGxGb3JtYXR0ZXJNYXBba2V5XSA9IGNlbGw7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW8gPT0gJ251bWJlcicpIHtcbiAgICAgICAgICBjZWxsLmZvcm1hdHRlciA9IHRoaXMudVMubW9uZXlQYXJzZXI7XG4gICAgICAgICAgZGVsZXRlIGNlbGxzVG9DaGVja0ZvcltrZXldO1xuICAgICAgICAgIHRoaXMuY2VsbEZvcm1hdHRlck1hcFtrZXldID0gY2VsbDtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnVTLmlzRGF0VGltZVZhbHVlKHJvd1trZXldKSkge1xuICAgICAgICAgIGNlbGwuZm9ybWF0dGVyID0gdGhpcy51Uy5mdWxsRGF0ZVRpbWU7XG4gICAgICAgICAgZGVsZXRlIGNlbGxzVG9DaGVja0ZvcltrZXldO1xuICAgICAgICAgIHRoaXMuY2VsbEZvcm1hdHRlck1hcFtrZXldID0gY2VsbDtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnVTLmlzRGF0ZVZhbHVlKHJvd1trZXldKSkge1xuICAgICAgICAgIGNlbGwuZm9ybWF0dGVyID0gdGhpcy51Uy5kYXRlRm9ybWF0O1xuICAgICAgICAgIGRlbGV0ZSBjZWxsc1RvQ2hlY2tGb3Jba2V5XTtcbiAgICAgICAgICB0aGlzLmNlbGxGb3JtYXR0ZXJNYXBba2V5XSA9IGNlbGw7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChjb25zdCBrZXkgaW4gY2VsbHNUb0NoZWNrRm9yKSB7XG4gICAgICB0aGlzLmNlbGxGb3JtYXR0ZXJNYXBba2V5XSA9IHsgbm9Gb3JtYXQ6IHRydWUgfTtcbiAgICB9XG4gIH07XG5cbiAgb3V0cHV0Q2hlY2tib3goZmllbGQ6IGtleW9mIFRJdGVtLCBpdGVtOiBUSXRlbSwgdmFsdWU6IGFueSkge1xuICAgIHRoaXMuZW1pdENoZWNrYm94LmVtaXQoeyBmaWVsZCwgaXRlbSwgdmFsdWUgfSk7XG4gIH1cblxuICByZWFkb25seSBhbGxUYWJsZUNvbHVtbnMgPSBjb21wdXRlZDxUYWJsZUNvbDxUSXRlbT5bXT4oKCkgPT4ge1xuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyh0aGlzLmRhdGEoKT8uWzBdIHx8IHt9KSxcbiAgICAgIGRpc3BsYXllZENvbHVtbnNNYXAgPSB0aGlzLmRpc3BsYXllZENvbHVtbnNNYXAoKSxcbiAgICAgIGNvbXB1dGVkRGlzcGxheWVkQ29sdW1uc01hcCA9IHRoaXMuY29tcHV0ZWREaXNwbGF5ZWRDb2x1bW5zTWFwKCk7XG5cbiAgICByZXR1cm4ga2V5c1xuICAgICAgLm1hcCgoaykgPT4ge1xuICAgICAgICBjb25zdCBlID0gZGlzcGxheWVkQ29sdW1uc01hcFtrXTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5lLFxuICAgICAgICAgIGY6IGsgYXMgYW55LFxuICAgICAgICAgIHQ6IGU/LnQgfHwgdGhpcy51Uy5mb3JtYXRGaWVsZChrKSxcbiAgICAgICAgICBhY3RpdmU6ICEhY29tcHV0ZWREaXNwbGF5ZWRDb2x1bW5zTWFwW2tdLFxuICAgICAgICB9O1xuICAgICAgfSlcbiAgICAgIC5maWx0ZXIoXG4gICAgICAgICh4KSA9PiAhKHg/LmY/LnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKS5lbmRzV2l0aCgnaWQnKSAmJiB4Py5mPy50b1N0cmluZygpLmxlbmd0aCA9PT0gMiksXG4gICAgICApXG4gICAgICAuc29ydDIoJ3QnLCB0cnVlKTtcbiAgfSk7XG5cbiAgcm93Q2xpY2soZTogVEl0ZW0pIHtcbiAgICB0aGlzLl9yb3dDbGljay5lbWl0KGUpO1xuICB9XG5cbiAgZ2V0IHNlbGVjdGVkSXRlbXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkO1xuICB9XG5cbiAgZXh0cmFjdFJvdXRlID0gKGNlbGw6IFRhYmxlQ29sLCByb3c6IFRJdGVtKTogeyByb3V0ZTogc3RyaW5nOyBxdWVyeVBhcmFtczoge30gfSA9PiB7XG4gICAgY29uc3QgW3JvdXRlLCBxcF0gPSBjZWxsLnJvdXRlRm9ybWF0dGVyKHJvdyk/LnNwbGl0KCc/Jyk7XG4gICAgY29uc3QgcXVlcnlQYXJhbXMgPSAoY2VsbC5tcXVlcnlQYXJhbXMgPyBjZWxsLm1xdWVyeVBhcmFtcyhyb3cpIDoge30pIHx8IHt9O1xuICAgIGlmIChxcClcbiAgICAgIHFwLnNwbGl0KCcmJykuZm9yRWFjaCgocSkgPT4ge1xuICAgICAgICBjb25zdCBbZmllbGQsIHZhbF0gPSBxLnNwbGl0KCc9Jyk7XG4gICAgICAgIHF1ZXJ5UGFyYW1zW2ZpZWxkXSA9IHZhbDtcbiAgICAgIH0pO1xuICAgIC8vIGNvbnNvbGUubG9nKHJvdXRlLCBxcCk7XG4gICAgcmV0dXJuIHsgcm91dGUsIHF1ZXJ5UGFyYW1zIH07XG4gIH07XG5cbiAgcmVhZG9ubHkgbmdBZnRlclZpZXdJbml0U2lnbmFsID0gc2lnbmFsPG51bWJlcj4obnVsbCk7XG5cbiAgcmVhZG9ubHkgc2VsZWN0ZWRDZWxsRm9yRXhwYW5zaW9uID0gc2lnbmFsPHsgY29sdW1uOiBUYWJsZUNvbDsgcm93OiBUSXRlbSB9Pih1bmRlZmluZWQpO1xuXG4gIGV4cGFuZENlbGwocm93OiBUSXRlbSwgY29sdW1uOiBUYWJsZUNvbCwgbW9kYWw6IE1vZGFsQ29tcG9uZW50KSB7XG4gICAgdGhpcy5zZWxlY3RlZENlbGxGb3JFeHBhbnNpb24uc2V0KHsgcm93LCBjb2x1bW4gfSk7XG4gICAgbW9kYWwub3BlbigpO1xuICB9XG5cbiAgY2xvc2VFeHBhbmRlZENlbGwoKSB7XG4gICAgdGhpcy5zZWxlY3RlZENlbGxGb3JFeHBhbnNpb24uc2V0KHVuZGVmaW5lZCk7XG4gIH1cblxuICByZWZyZXNoVUkoKSB7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG59XG4iXX0=
|
|
262
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldHMtZmUtbmctc2RrL3NyYy9saWIvU2hhcmVkL2NvbXBvbmVudHMvdGFibGUtcGxhaW4vdGFibGUtYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFtQixjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUdOLFNBQVMsRUFFVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBQ0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLElBQUksWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0UsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWpELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFTdEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQVEzQyxNQUFNLE9BQWdCLGtCQUFrQjtJQUx4QztRQU1xQixRQUFHLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDMUMsZUFBVSxHQUFHLEtBQUssRUFBdUIsQ0FBQztRQUMxQyxnQkFBVyxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNwQyxVQUFLLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO1FB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QztJQUVELFNBQVM7UUFDUCxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzNCLENBQUM7OEdBalNtQixrQkFBa0I7a0dBQWxCLGtCQUFrQixvc0lBZ0czQixZQUFZLHVFQUNaLE9BQU8saUlBckdSLEVBQUU7OzJGQUlRLGtCQUFrQjtrQkFMdkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsRUFBRTtvQkFDWixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFLEVBQUU7aUJBQ1o7OEJBeUZxQixTQUFTO3NCQUE1QixNQUFNO3VCQUFDLFVBQVU7Z0JBQ1IsZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBTWtCLFNBQVM7c0JBQWpDLFNBQVM7dUJBQUMsWUFBWTtnQkFDSCxJQUFJO3NCQUF2QixTQUFTO3VCQUFDLE9BQU87Z0JBQ0UsS0FBSztzQkFBeEIsU0FBUzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2VsZWN0aW9uQ2hhbmdlLCBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIE91dHB1dCxcbiAgU2lnbmFsLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBXcml0YWJsZVNpZ25hbCxcbiAgY29tcHV0ZWQsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIG1vZGVsLFxuICBzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0UGFnaW5hdG9yIGFzIE1hdFBhZ2luYXRvciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XG5pbXBvcnQgeyBNYXRTb3J0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XG5pbXBvcnQgeyBNYXRUYWJsZSBhcyBNYXRUYWJsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcbmltcG9ydCB7IGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBJRm9ybVNjaGVtYSB9IGZyb20gJy4uLy4uL21vZGVscy9mb3JtLXNjaGVtYS5tb2RlbCc7XG5pbXBvcnQge1xuICBJT2JqZWN0TGl0ZXJhbCxcbiAgSVJvd09wdGlvbixcbiAgSVN0cmljdEZvcm1Hcm91cCxcbiAgU29ydFR5cGUsXG4gIFRhYmxlQ29sLFxufSBmcm9tICcuLi8uLi9tb2RlbHMvaW5kZXgubW9kZWwnO1xuaW1wb3J0IHsgVXRpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9TZXJ2aWNlcy91dGlsaXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgVGFibGVTZXJ2aWNlIH0gZnJvbSAnLi90YWJsZS1wbGFpbi5zZXJ2aWNlJztcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgbWFwLCBzdGFydFdpdGgsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTW9kYWxDb21wb25lbnQgfSBmcm9tICcuLi9tb2RhbC9tb2RhbC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGU6ICcnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXSxcbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVGFibGVCYXNlQ29tcG9uZW50PFRJdGVtIGV4dGVuZHMgSU9iamVjdExpdGVyYWw+IHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIHJlYWRvbmx5IHJvd09wdGlvbnMgPSBpbnB1dDxJUm93T3B0aW9uPFRJdGVtPltdPigpO1xuICByZWFkb25seSBjZW50ZXJDZWxscyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgY3VydnkgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IGRpc3RpbmN0ID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG4gIC8qKkFwcGVhcnMgYWJvdmUgdGhlIHRhYmxlICovXG4gIHJlYWRvbmx5IGhlYWRlciA9IGlucHV0PHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgaXNFeHBhbmRhYmxlID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICAvKiogVXNlZCB0byBuYW1lIG1ldGFkYXRhIG9mIHRoZSB0YWJsZSBsaWtlIGV4cG9ydGVkIGZpbGVzICovXG4gIHJlYWRvbmx5IGxhYmVsID0gaW5wdXQ8c3RyaW5nPigpO1xuICByZWFkb25seSBpc0Rpc2FibGVkRnVuYyA9IGlucHV0PChyb3c6IFRJdGVtKSA9PiBib29sZWFuPigpO1xuICByZWFkb25seSBub0l0ZW1UeHQgPSBpbnB1dCgnVGhlcmUgYXJlIG5vIGl0ZW1zJyk7XG4gIHJlYWRvbmx5IG5vd3JhcCA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuICByZWFkb25seSBleHBhbmRlZFJvd1RlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8YW55Pj4oKTtcbiAgcmVhZG9ubHkgb3JkZXJEaXJlY3Rpb24gPSBpbnB1dDxTb3J0VHlwZT4oJ2FzYycpO1xuICByZWFkb25seSBvcmRlckZpZWxkID0gaW5wdXQ8a2V5b2YgVEl0ZW0+KCk7XG4gIHJlYWRvbmx5IHBhZ2VTaXplID0gaW5wdXQoMTApO1xuICByZWFkb25seSBzdGFydFNlY3Rpb25UZW1wbGF0ZSA9IGlucHV0PFRlbXBsYXRlUmVmPEhUTUxFbGVtZW50Pj4oKTtcbiAgcmVhZG9ubHkgY29tcHV0ZWRQYWdlU2l6ZU9wdGlvbnMgPSBjb21wdXRlZDxudW1iZXJbXT4oKCkgPT4ge1xuICAgIGNvbnN0IGRlZmF1bHRQYWdlU2l6ZU9wdGlvbnMgPSB0aGlzLmRlZmF1bHRQYWdlU2l6ZU9wdGlvbnMoKSxcbiAgICAgIHBhZ2VTaXplT3B0aW9ucyA9IHRoaXMucGFnZVNpemVPcHRpb25zKCksXG4gICAgICByZXN1bHRzTGVuZ3RoID0gdGhpcy5yZXN1bHRzTGVuZ3RoKCk7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHBhZ2VTaXplT3B0aW9ucz8ubGVuZ3RoID8gcGFnZVNpemVPcHRpb25zIDogZGVmYXVsdFBhZ2VTaXplT3B0aW9ucztcbiAgICByZXR1cm4gb3B0aW9ucy5jb25jYXQob3B0aW9ucz8ubGFzdEl0ZW0oKSA+IHJlc3VsdHNMZW5ndGggPyBbXSA6IFtyZXN1bHRzTGVuZ3RoXSk7XG4gIH0pO1xuICByZWFkb25seSBkZWZhdWx0UGFnZVNpemVPcHRpb25zID0gc2lnbmFsKFs1LCAxMCwgMjAsIDUwLCAxMDAsIDUwMCwgMTAwMCwgNTAwMF0pO1xuICByZWFkb25seSBwYWdlU2l6ZU9wdGlvbnMgPSBpbnB1dDxudW1iZXJbXT4oKTtcbiAgcmVhZG9ubHkgcGxhY2VTZWxlY3Rpb25BdFJpZ2h0ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpOyAvLyBzdXBwb3J0IGN1c3RvbWl6aW5nIHRoZSBwb3NpdGlvbiBvZiB0aGUgc2VsZWN0IGNoZWNrYm94ZXMuXG4gIHJlYWRvbmx5IHNob3dBZGRpdGlvbmFsQ29sdW1ucyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgc2hvd0V4cG9ydCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgc2hvd1Jvd1BvaW50ZXIgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IHNtYWxsZXJGb250cyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgc3RyaXBlZCA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuICByZWFkb25seSB0YWJsZUNvbnRhaW5lckNsYXNzID0gaW5wdXQ8c3RyaW5nPigpO1xuICByZWFkb25seSB1c2VTZWxlY3Rpb24gPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG5cbiAgcmVhZG9ubHkgZm9ybVNjaGVtYVRvQ29sdW1ucyA9IGlucHV0PElGb3JtU2NoZW1hPElTdHJpY3RGb3JtR3JvdXA8VEl0ZW0+PltdPigpO1xuICByZWFkb25seSB1cGxvYWRTY2hlbWFUb0NvbHVtbnMgPSBpbnB1dDx7IGZpZWxkPzoga2V5b2YgVEl0ZW07IGxhYmVsPzogc3RyaW5nIH1bXT4oKTtcblxuICByZWFkb25seSBfZGlzcGxheWVkQ29sdW1ucyA9IGlucHV0PFRhYmxlQ29sPFRJdGVtPltdPihbXSwgeyBhbGlhczogJ2Rpc3BsYXllZENvbHVtbnMnIH0pO1xuICByZWFkb25seSBkaXNwbGF5ZWRDb2x1bW5zID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLnVzZUN1c3RvbUxhYmVscygpXG4gICAgICA/IHRoaXMudFMuZ2xvYmFsQ29sdW1uc0Zvcm1hdHRlcih0aGlzLl9kaXNwbGF5ZWRDb2x1bW5zKCkpXG4gICAgICA6IHRoaXMuX2Rpc3BsYXllZENvbHVtbnMoKSxcbiAgKTtcbiAgcmVhZG9ubHkgb3ZlcnJpZGVEaXNwbGF5ZWRDb2x1bW5zID0gc2lnbmFsPFRhYmxlQ29sPFRJdGVtPltdPihudWxsKTtcblxuICByZWFkb25seSBkaXNwbGF5ZWRDb2x1bW5zTm9BQyA9IGNvbXB1dGVkKCgpID0+XG4gICAgY2xvbmVEZWVwKHRoaXMuZGlzcGxheWVkQ29sdW1ucygpPy5maWx0ZXIoKHgpID0+ICF4LmFkZGl0aW9uYWxDb2x1bW4pKSxcbiAgKTtcbiAgcmVhZG9ubHkgZGlzcGxheWVkQ29sdW1uc01hcCA9IGNvbXB1dGVkKCgpID0+IGNsb25lRGVlcCh0aGlzLmRpc3BsYXllZENvbHVtbnMoKT8udG9NYXAoJ2YnKSkpO1xuICByZWFkb25seSBjb21wdXRlZERpc3BsYXllZENvbHVtbnNNYXAgPSBjb21wdXRlZCgoKSA9PlxuICAgIGNsb25lRGVlcChcbiAgICAgIHRoaXMuY29tcHV0ZWREaXNwbGF5ZWRDb2x1bW5zKCk/LnRvTWFwKCdmJykgYXMgeyBbayBpbiBrZXlvZiBUSXRlbV06IFRhYmxlQ29sPFRJdGVtPiB9LFxuICAgICksXG4gICk7XG5cbiAgcmVhZG9ubHkgY29tcHV0ZWREaXNwbGF5ZWRDb2x1bW5zID0gY29tcHV0ZWQ8VGFibGVDb2w8VEl0ZW0+W10+KCgpID0+IHtcbiAgICBjb25zdCBkYyA9XG4gICAgICAgIHRoaXMuZGlzcGxheWVkQ29sdW1uc05vQUMoKT8ubWFwKChjKSA9PiB7XG4gICAgICAgICAgaWYgKCFjLnQpIHtcbiAgICAgICAgICAgIGlmIChjLnR5cGUgPT0gJ2J1dHRvbicpIGMudCA9ICdBY3Rpb24nO1xuICAgICAgICAgICAgZWxzZSBpZiAoYy50eXBlID09ICdidG5zJykgYy50ID0gJ0FjdGlvbnMnO1xuICAgICAgICAgICAgYy5zdGlja3kgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gYztcbiAgICAgICAgfSkgfHwgW10sXG4gICAgICBvdmVycmlkZUNvbHVtbnMgPSB0aGlzLm92ZXJyaWRlRGlzcGxheWVkQ29sdW1ucygpLFxuICAgICAgZm9ybVNjaGVtYVRvQ29sdW1ucyA9IHRoaXMuZm9ybVNjaGVtYVRvQ29sdW1ucygpLFxuICAgICAgdXBsb2FkU2NoZW1hVG9Db2x1bW5zID0gdGhpcy51cGxvYWRTY2hlbWFUb0NvbHVtbnMoKTtcbiAgICBsZXQgY29sdW1ucyA9IChvdmVycmlkZUNvbHVtbnM/Lmxlbmd0aCA/IG92ZXJyaWRlQ29sdW1ucyA6IGRjKVxuICAgICAgLmNvbmNhdChcbiAgICAgICAgZm9ybVNjaGVtYVRvQ29sdW1ucz8ubWFwKCh4KSA9PiAoe1xuICAgICAgICAgIGY6IHguZmllbGQgYXMga2V5b2YgVEl0ZW0sXG4gICAgICAgICAgdDogeC5sYWJlbCxcbiAgICAgICAgICBmb3JtYXR0ZXI6IHgudGFibGVGb3JtYXR0ZXIsXG4gICAgICAgIH0pKSB8fCBbXSxcbiAgICAgIClcbiAgICAgIC5jb25jYXQoXG4gICAgICAgIHVwbG9hZFNjaGVtYVRvQ29sdW1ucz8uZmlsdGVyKCh4KSA9PiB4LmZpZWxkKS5tYXAoKHgpID0+ICh7IGY6IHguZmllbGQsIHQ6IHgubGFiZWwgfSkpIHx8XG4gICAgICAgICAgW10sXG4gICAgICApO1xuICAgIGNvbHVtbnMgPSBjb2x1bW5zLmZpbHRlcigoeCkgPT4geC5mKTtcbiAgICB0aGlzLmF1dG9TZXRDb2x1bW5Gb3JtYXR0ZXIoY29sdW1ucyk7XG4gICAgcmV0dXJuIGNvbHVtbnM7XG4gIH0pO1xuXG4gIEBPdXRwdXQoJ3Jvd0NsaWNrJykgX3Jvd0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxUSXRlbT4oKTtcbiAgQE91dHB1dCgpIHNlbGVjdGlvbkNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFNlbGVjdGlvbkNoYW5nZTxhbnk+PigpO1xuICBAT3V0cHV0KCkgZW1pdENoZWNrYm94ID0gbmV3IEV2ZW50RW1pdHRlcjx7XG4gICAgZmllbGQ6IGtleW9mIFRJdGVtO1xuICAgIGl0ZW06IFRJdGVtO1xuICAgIHZhbHVlOiBib29sZWFuO1xuICB9PigpO1xuXG4gIEBWaWV3Q2hpbGQoTWF0UGFnaW5hdG9yKSBwYWdpbmF0b3I6IE1hdFBhZ2luYXRvcjtcbiAgQFZpZXdDaGlsZChNYXRTb3J0KSBzb3J0OiBNYXRTb3J0O1xuICBAVmlld0NoaWxkKCd0YWJsZScpIHRhYmxlOiBNYXRUYWJsZTxhbnk+O1xuICByZWFkb25seSByZXN1bHRzTGVuZ3RoOiBTaWduYWw8bnVtYmVyPjtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHN0YXJ0ZXJTZWN0aW9uQ2xhc3MgPSBzaWduYWwoJ3JvdyByb3ctY29scy1sZy1hdXRvIGctMyBhbGlnbi1pdGVtcy1jZW50ZXInKTtcbiAgcmVhZG9ubHkgcmF3Q29sdW1ucyA9IGNvbXB1dGVkPHN0cmluZ1tdPigoKSA9PlxuICAgIHRoaXMudFMuZ2V0UmF3RmllbGRzKFxuICAgICAgdGhpcy5jb21wdXRlZERpc3BsYXllZENvbHVtbnMoKSxcbiAgICAgIHRoaXMucm93T3B0aW9ucygpPy5sZW5ndGgsXG4gICAgICB0aGlzLnVzZVNlbGVjdGlvbigpLFxuICAgICAgdGhpcy5wbGFjZVNlbGVjdGlvbkF0UmlnaHQoKSxcbiAgICAgIHRoaXMuaXNFeHBhbmRhYmxlKCksXG4gICAgKSxcbiAgKTtcbiAgcmVhZG9ubHkgZXhwYW5kZWRFbGVtZW50ID0gc2lnbmFsPFRJdGVtPihudWxsKTtcbiAgcmVhZG9ubHkgc2VsZWN0aW9uID0gbmV3IFNlbGVjdGlvbk1vZGVsPFRJdGVtPih0cnVlLCBbXSk7XG4gIHByb3RlY3RlZCBfc2VsZWN0aW9uQ2hhbmdlZCA9IHRvU2lnbmFsKHRoaXMuc2VsZWN0aW9uLmNoYW5nZWQpO1xuICByZWFkb25seSBzZWxlY3RlZEl0ZW1zU2lnbmFsID0gdG9TaWduYWwoXG4gICAgdGhpcy5zZWxlY3Rpb24uY2hhbmdlZC5waXBlKFxuICAgICAgdGFwKChyKSA9PiB0aGlzLnNlbGVjdGlvbkNoYW5nZWQuZW1pdChyKSksXG4gICAgICBtYXAoKHIpID0+IHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkKSxcbiAgICAgIHN0YXJ0V2l0aChbXSksXG4gICAgKSxcbiAgKTtcblxuICByZWFkb25seSBjZWxsRm9ybWF0dGVyTWFwOiB7XG4gICAgW2sgaW4ga2V5b2YgVEl0ZW1dPzoge1xuICAgICAgbm9Gb3JtYXQ/OiBib29sZWFuO1xuICAgICAgZm9ybWF0dGVyPzogVGFibGVDb2xbJ2Zvcm1hdHRlciddO1xuICAgIH07XG4gIH0gPSB7fTtcbiAgcHVibGljIHVTID0gaW5qZWN0KFV0aWxpdHlTZXJ2aWNlKTtcbiAgcHVibGljIHRTID0gaW5qZWN0KFRhYmxlU2VydmljZSk7XG4gIHJlYWRvbmx5IHVzZUN1c3RvbUxhYmVscyA9IG1vZGVsKHRydWUpO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBudW1iZXIgb2Ygc2VsZWN0ZWQgZWxlbWVudHMgbWF0Y2hlcyB0aGUgdG90YWwgbnVtYmVyIG9mIHJvd3MuICovXG4gIHJlYWRvbmx5IGlzQWxsU2VsZWN0ZWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnNlbGVjdGVkSXRlbXNTaWduYWwoKS5sZW5ndGggPT0gdGhpcy5kYXRhKCk/Lmxlbmd0aCk7XG4gIHJlYWRvbmx5IGlzQW55U2VsZWN0ZWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnNlbGVjdGVkSXRlbXNTaWduYWwoKS5sZW5ndGggPiAwKTtcblxuICAvKiogVGhlIGxhYmVsIGZvciB0aGUgY2hlY2tib3ggb24gdGhlIHBhc3NlZCByb3cgKi9cbiAgY2hlY2tib3hMYWJlbChyb3c/OiBUSXRlbSk6IHN0cmluZyB7XG4gICAgaWYgKCFyb3cpIHtcbiAgICAgIHJldHVybiBgJHt0aGlzLmlzQWxsU2VsZWN0ZWQoKSA/ICdkZXNlbGVjdCcgOiAnc2VsZWN0J30gYWxsYDtcbiAgICB9XG4gICAgcmV0dXJuIGAke3RoaXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWQocm93KSA/ICdkZXNlbGVjdCcgOiAnc2VsZWN0J30gcm93IGA7XG4gIH1cblxuICBmaWVsZHNDaGFuZ2VkKCRldmVudDogeyBuRmllbGRzOiBUYWJsZUNvbFtdOyBhbGxGaWVsZHM6IFRhYmxlQ29sW10gfSkge1xuICAgIGNvbnN0IGNvbHMgPSAkZXZlbnQubkZpZWxkcztcbiAgICB0aGlzLm92ZXJyaWRlRGlzcGxheWVkQ29sdW1ucy5zZXQoXG4gICAgICBjb2xzXG4gICAgICAgIC5maWx0ZXIoKHgpID0+ICEoeC50eXBlID09ICdidG5zJyAmJiB4LnN0aWNreSkpXG4gICAgICAgIC5jb25jYXQoY29scy5maWx0ZXIoKHgpID0+IHgudHlwZSA9PSAnYnRucycgJiYgeC5zdGlja3kpKVxuICAgICAgICAubWFwKCh4KSA9PiB7XG4gICAgICAgICAgaWYgKHgudHlwZSA9PT0gJ251bWJlcicpIHguZm9ybWF0dGVyID0gdGhpcy51Uy5tb25leVBhcnNlcjtcbiAgICAgICAgICByZXR1cm4geDtcbiAgICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIGdldEFjdGlvblN0YXR1c0NhbGxiYWNrKGNvbCkge1xuICAgIHJldHVybiAoc3RhdGU6IGJvb2xlYW4pID0+IChjb2wuYnRuLmxvYWRpbmcgPSBzdGF0ZSk7XG4gIH1cbiAgcmVhZG9ubHkgZGF0YTogV3JpdGFibGVTaWduYWw8VEl0ZW1bXT47XG5cbiAgYXV0b1NldENvbHVtbkZvcm1hdHRlciA9IChjb2x1bW5zOiBUYWJsZUNvbDxUSXRlbT5bXSkgPT4ge1xuICAgIGlmICghY29sdW1ucykgcmV0dXJuO1xuICAgIGNvbnN0IGNlbGxzVG9DaGVja0ZvcjogeyBbayBpbiBrZXlvZiBUSXRlbV0/OiBudW1iZXIgfSA9IHt9O1xuICAgIC8vIGNvbnN0IGRhdGVGaWVsZHMgPSB7IGNyZWF0ZWRPbjogMSwgdXBkYXRlZE9uOiAxIH07XG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGNvbHVtbnMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBjb25zdCBpdGVtID0gY29sdW1uc1tpbmRleF07XG4gICAgICBpZiAoaXRlbS5ub0Zvcm1hdCB8fCBpdGVtLmZvcm1hdHRlciB8fCBpdGVtLmZvcm1hdHRlclJvdykge1xuICAgICAgICB0aGlzLmNlbGxGb3JtYXR0ZXJNYXBbaXRlbS5mXSA9IHtcbiAgICAgICAgICBub0Zvcm1hdDogaXRlbS5ub0Zvcm1hdCxcbiAgICAgICAgICBmb3JtYXR0ZXI6IGl0ZW0uZm9ybWF0dGVyLFxuICAgICAgICB9O1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHNhdmVkQ29uZmlnID0gdGhpcy5jZWxsRm9ybWF0dGVyTWFwW2l0ZW0uZl07XG4gICAgICBpZiAoc2F2ZWRDb25maWcpIHtcbiAgICAgICAgaXRlbS5ub0Zvcm1hdCA9IHNhdmVkQ29uZmlnLm5vRm9ybWF0O1xuICAgICAgICBpdGVtLmZvcm1hdHRlciA9IHNhdmVkQ29uZmlnLmZvcm1hdHRlcjtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBpdGVtRmllbGRMb3dlciA9IGl0ZW0uZj8udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgaXRlbUZpZWxkTG93ZXIgPT0gJ2lkJyB8fFxuICAgICAgICAgIGl0ZW1GaWVsZExvd2VyLmluY2x1ZGVzKCd5ZWFyJykgfHxcbiAgICAgICAgICBpdGVtRmllbGRMb3dlci5pbmNsdWRlcygnYWdlJylcbiAgICAgICAgKSB7XG4gICAgICAgICAgaXRlbS5ub0Zvcm1hdCA9IHRydWU7XG4gICAgICAgICAgdGhpcy5jZWxsRm9ybWF0dGVyTWFwW2l0ZW0uZl0gPSBpdGVtO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNlbGxzVG9DaGVja0ZvcltpdGVtLmZdID0gaW5kZXg7XG4gICAgfVxuICAgIGlmICghdGhpcy5kYXRhKCkpIHJldHVybjtcbiAgICBjb25zb2xlLmxvZygnY2VsbHNUb0NoZWNrRm9yJywgSlNPTi5zdHJpbmdpZnkoY2VsbHNUb0NoZWNrRm9yKSk7XG4gICAgZm9yIChjb25zdCByb3cgb2YgdGhpcy5kYXRhKCkpIHtcbiAgICAgIGlmICghT2JqZWN0LmtleXMoY2VsbHNUb0NoZWNrRm9yKS5sZW5ndGgpIGJyZWFrO1xuICAgICAgZm9yIChjb25zdCBrZXkgaW4gY2VsbHNUb0NoZWNrRm9yKSB7XG4gICAgICAgIGNvbnN0IGNlbGwgPSBjb2x1bW5zW2NlbGxzVG9DaGVja0ZvcltrZXldXTtcbiAgICAgICAgY29uc3QgdHlwZW8gPSB0eXBlb2Ygcm93W2tleV07XG4gICAgICAgIGlmICh0eXBlbyA9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICBjZWxsLmZvcm1hdHRlciA9IHRoaXMudVMueWVzTm9DZWxsRm9ybWF0dGVyO1xuICAgICAgICAgIGRlbGV0ZSBjZWxsc1RvQ2hlY2tGb3Jba2V5XTtcbiAgICAgICAgICB0aGlzLmNlbGxGb3JtYXR0ZXJNYXBba2V5XSA9IGNlbGw7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW8gPT0gJ251bWJlcicpIHtcbiAgICAgICAgICBjZWxsLmZvcm1hdHRlciA9IHRoaXMudVMubW9uZXlQYXJzZXI7XG4gICAgICAgICAgZGVsZXRlIGNlbGxzVG9DaGVja0ZvcltrZXldO1xuICAgICAgICAgIHRoaXMuY2VsbEZvcm1hdHRlck1hcFtrZXldID0gY2VsbDtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnVTLmlzRGF0VGltZVZhbHVlKHJvd1trZXldKSkge1xuICAgICAgICAgIGNlbGwuZm9ybWF0dGVyID0gdGhpcy51Uy5mdWxsRGF0ZVRpbWU7XG4gICAgICAgICAgZGVsZXRlIGNlbGxzVG9DaGVja0ZvcltrZXldO1xuICAgICAgICAgIHRoaXMuY2VsbEZvcm1hdHRlck1hcFtrZXldID0gY2VsbDtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnVTLmlzRGF0ZVZhbHVlKHJvd1trZXldKSkge1xuICAgICAgICAgIGNlbGwuZm9ybWF0dGVyID0gdGhpcy51Uy5kYXRlRm9ybWF0O1xuICAgICAgICAgIGRlbGV0ZSBjZWxsc1RvQ2hlY2tGb3Jba2V5XTtcbiAgICAgICAgICB0aGlzLmNlbGxGb3JtYXR0ZXJNYXBba2V5XSA9IGNlbGw7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChjb25zdCBrZXkgaW4gY2VsbHNUb0NoZWNrRm9yKSB7XG4gICAgICB0aGlzLmNlbGxGb3JtYXR0ZXJNYXBba2V5XSA9IHsgbm9Gb3JtYXQ6IHRydWUgfTtcbiAgICB9XG4gIH07XG5cbiAgb3V0cHV0Q2hlY2tib3goZmllbGQ6IGtleW9mIFRJdGVtLCBpdGVtOiBUSXRlbSwgdmFsdWU6IGFueSkge1xuICAgIHRoaXMuZW1pdENoZWNrYm94LmVtaXQoeyBmaWVsZCwgaXRlbSwgdmFsdWUgfSk7XG4gIH1cblxuICByZWFkb25seSBhbGxUYWJsZUNvbHVtbnMgPSBjb21wdXRlZDxUYWJsZUNvbDxUSXRlbT5bXT4oKCkgPT4ge1xuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyh0aGlzLmRhdGEoKT8uWzBdIHx8IHt9KSxcbiAgICAgIGRpc3BsYXllZENvbHVtbnNNYXAgPSB0aGlzLmRpc3BsYXllZENvbHVtbnNNYXAoKSxcbiAgICAgIGNvbXB1dGVkRGlzcGxheWVkQ29sdW1uc01hcCA9IHRoaXMuY29tcHV0ZWREaXNwbGF5ZWRDb2x1bW5zTWFwKCk7XG5cbiAgICByZXR1cm4ga2V5c1xuICAgICAgLm1hcCgoaykgPT4ge1xuICAgICAgICBjb25zdCBlID0gZGlzcGxheWVkQ29sdW1uc01hcFtrXTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5lLFxuICAgICAgICAgIGY6IGsgYXMgYW55LFxuICAgICAgICAgIHQ6IGU/LnQgfHwgdGhpcy51Uy5mb3JtYXRGaWVsZChrKSxcbiAgICAgICAgICBhY3RpdmU6ICEhY29tcHV0ZWREaXNwbGF5ZWRDb2x1bW5zTWFwW2tdLFxuICAgICAgICB9O1xuICAgICAgfSlcbiAgICAgIC5maWx0ZXIoXG4gICAgICAgICh4KSA9PiAhKHg/LmY/LnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKS5lbmRzV2l0aCgnaWQnKSAmJiB4Py5mPy50b1N0cmluZygpLmxlbmd0aCA9PT0gMiksXG4gICAgICApXG4gICAgICAuc29ydDIoJ3QnLCB0cnVlKTtcbiAgfSk7XG5cbiAgcm93Q2xpY2soZTogVEl0ZW0pIHtcbiAgICB0aGlzLl9yb3dDbGljay5lbWl0KGUpO1xuICB9XG5cbiAgZ2V0IHNlbGVjdGVkSXRlbXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkO1xuICB9XG5cbiAgZXh0cmFjdFJvdXRlID0gKGNlbGw6IFRhYmxlQ29sLCByb3c6IFRJdGVtKTogeyByb3V0ZTogc3RyaW5nOyBxdWVyeVBhcmFtczoge30gfSA9PiB7XG4gICAgY29uc3QgW3JvdXRlLCBxcF0gPSBjZWxsLnJvdXRlRm9ybWF0dGVyKHJvdyk/LnNwbGl0KCc/Jyk7XG4gICAgY29uc3QgcXVlcnlQYXJhbXMgPSAoY2VsbC5tcXVlcnlQYXJhbXMgPyBjZWxsLm1xdWVyeVBhcmFtcyhyb3cpIDoge30pIHx8IHt9O1xuICAgIGlmIChxcClcbiAgICAgIHFwLnNwbGl0KCcmJykuZm9yRWFjaCgocSkgPT4ge1xuICAgICAgICBjb25zdCBbZmllbGQsIHZhbF0gPSBxLnNwbGl0KCc9Jyk7XG4gICAgICAgIHF1ZXJ5UGFyYW1zW2ZpZWxkXSA9IHZhbDtcbiAgICAgIH0pO1xuICAgIC8vIGNvbnNvbGUubG9nKHJvdXRlLCBxcCk7XG4gICAgcmV0dXJuIHsgcm91dGUsIHF1ZXJ5UGFyYW1zIH07XG4gIH07XG5cbiAgcmVhZG9ubHkgbmdBZnRlclZpZXdJbml0U2lnbmFsID0gc2lnbmFsPG51bWJlcj4obnVsbCk7XG5cbiAgcmVhZG9ubHkgc2VsZWN0ZWRDZWxsRm9yRXhwYW5zaW9uID0gc2lnbmFsPHsgY29sdW1uOiBUYWJsZUNvbDsgcm93OiBUSXRlbSB9Pih1bmRlZmluZWQpO1xuXG4gIGV4cGFuZENlbGwocm93OiBUSXRlbSwgY29sdW1uOiBUYWJsZUNvbCwgbW9kYWw6IE1vZGFsQ29tcG9uZW50KSB7XG4gICAgdGhpcy5zZWxlY3RlZENlbGxGb3JFeHBhbnNpb24uc2V0KHsgcm93LCBjb2x1bW4gfSk7XG4gICAgbW9kYWwub3BlbigpO1xuICB9XG5cbiAgY2xvc2VFeHBhbmRlZENlbGwoKSB7XG4gICAgdGhpcy5zZWxlY3RlZENlbGxGb3JFeHBhbnNpb24uc2V0KHVuZGVmaW5lZCk7XG4gIH1cblxuICByZWZyZXNoVUkoKSB7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG59XG4iXX0=
|