@tiba-spark/client-shared-lib 25.4.1-159 → 25.4.1-164
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/libraries/components/account-frame-message-bar/account-frame-message-bar.component.mjs +3 -3
- package/esm2022/libraries/components/base/base.component.mjs +3 -3
- package/esm2022/libraries/components/cloud-confirm-dialog/cloud-confirm-dialog.component.mjs +3 -3
- package/esm2022/libraries/components/com-status-icon/com-status-icon.component.mjs +3 -3
- package/esm2022/libraries/components/common-pages/common-pages.module.mjs +4 -4
- package/esm2022/libraries/components/common-pages/error-page/error-page.component.mjs +3 -3
- package/esm2022/libraries/components/common-pages/not-supported-browser/not-supported-browser-page.component.mjs +3 -3
- package/esm2022/libraries/components/device/device-icon/device-icon.component.mjs +3 -3
- package/esm2022/libraries/components/device/device-item/device-item.component.mjs +3 -3
- package/esm2022/libraries/components/device/device-status/device-status-base.component.mjs +3 -3
- package/esm2022/libraries/components/device/device.module.mjs +4 -4
- package/esm2022/libraries/components/dynamic-container/dynamic-container.component.mjs +3 -3
- package/esm2022/libraries/components/field-label/field-label.component.mjs +3 -3
- package/esm2022/libraries/components/field-validations/field-validations.component.mjs +3 -3
- package/esm2022/libraries/components/form-validations/form-validations.component.mjs +3 -3
- package/esm2022/libraries/components/global-message-container/global-message-container.component.mjs +3 -3
- package/esm2022/libraries/components/icon/icon-column/icon-column.component.mjs +3 -3
- package/esm2022/libraries/components/icon/icon.component.mjs +3 -3
- package/esm2022/libraries/components/icon/icon.module.mjs +4 -4
- package/esm2022/libraries/components/intercom/intercom.component.mjs +3 -3
- package/esm2022/libraries/components/logo/logo.component.mjs +3 -3
- package/esm2022/libraries/components/message-bar/float-message-bar.service.mjs +3 -3
- package/esm2022/libraries/components/message-bar/message-bar-container/message-bar-container.component.mjs +3 -3
- package/esm2022/libraries/components/message-bar/message-bar.component.mjs +3 -3
- package/esm2022/libraries/components/message-bar/message-bar.module.mjs +4 -4
- package/esm2022/libraries/components/message-bar/message-bar.service.mjs +3 -3
- package/esm2022/libraries/components/message-bar/static-message-bar.service.mjs +3 -3
- package/esm2022/libraries/components/modal-buttons-wrapper/modal-buttons-wrapper.component.mjs +3 -3
- package/esm2022/libraries/components/module-menu/module-menu-base.component.mjs +3 -3
- package/esm2022/libraries/components/notification/alert-notification/alert-notification.component.mjs +3 -3
- package/esm2022/libraries/components/notification/alert-notification/alert-notification.service.mjs +3 -3
- package/esm2022/libraries/components/notification/command-notification/command-notification.component.mjs +3 -3
- package/esm2022/libraries/components/notification/command-notification/command-notification.service.mjs +3 -3
- package/esm2022/libraries/components/notification/notification-close-all-button.component.mjs +3 -3
- package/esm2022/libraries/components/notification/notification-event.service.mjs +3 -3
- package/esm2022/libraries/components/notification/notification-type-label/notification-type-label.component.mjs +3 -3
- package/esm2022/libraries/components/notification/notification.module.mjs +4 -4
- package/esm2022/libraries/components/notification/notification.service.mjs +3 -3
- package/esm2022/libraries/components/overlay-loading-container/empty-results/empty-results.component.mjs +3 -3
- package/esm2022/libraries/components/overlay-loading-container/error-results/error-results.component.mjs +3 -3
- package/esm2022/libraries/components/overlay-loading-container/loading-overlay.component.mjs +3 -3
- package/esm2022/libraries/components/restart-link/restart-link.component.mjs +3 -3
- package/esm2022/libraries/components/restart-link/restart-link.module.mjs +4 -4
- package/esm2022/libraries/components/search-value-highlight/search-value-highlight.component.mjs +3 -3
- package/esm2022/libraries/components/shared-components.module.mjs +4 -4
- package/esm2022/libraries/components/status-icon/status-icon.component.mjs +3 -3
- package/esm2022/libraries/components/time-elapsed-counter/time-elapsed-counter.component.mjs +3 -3
- package/esm2022/libraries/directives/autofocus.directive.mjs +3 -3
- package/esm2022/libraries/directives/container-ref.directive.mjs +3 -3
- package/esm2022/libraries/directives/dynamic-ellipsis-tooltip.directive.mjs +3 -3
- package/esm2022/libraries/directives/ellipsis-multiline.directive.mjs +3 -3
- package/esm2022/libraries/directives/formatted-input.directive.mjs +3 -3
- package/esm2022/libraries/directives/is-ellipsis.directive.mjs +3 -3
- package/esm2022/libraries/directives/mat-hint-error.directive.mjs +3 -3
- package/esm2022/libraries/directives/native-element-injector.directive.mjs +3 -3
- package/esm2022/libraries/directives/offscreen.directive.mjs +3 -3
- package/esm2022/libraries/directives/shared-directives.module.mjs +4 -4
- package/esm2022/libraries/directives/stop-propagation.directive.mjs +3 -3
- package/esm2022/libraries/directives/tb-type-number.directive.mjs +3 -3
- package/esm2022/libraries/directives/var.directive.mjs +3 -3
- package/esm2022/libraries/enums/localization.enum.mjs +2 -1
- package/esm2022/libraries/guards/module-guard.mjs +3 -3
- package/esm2022/libraries/guards/not-supported-browser-guard.mjs +3 -3
- package/esm2022/libraries/guards/sub-module-guard.mjs +3 -3
- package/esm2022/libraries/interceptors/http-cancel.interceptor.mjs +3 -3
- package/esm2022/libraries/localization/localization.module.mjs +4 -4
- package/esm2022/libraries/localization/localization.state.mjs +3 -3
- package/esm2022/libraries/modules/administrative-notifications/administrative-notifications.module.mjs +4 -4
- package/esm2022/libraries/modules/administrative-notifications/administrative-notifications.state.mjs +3 -3
- package/esm2022/libraries/modules/alerts-and-notifications/alerts-and-notifications.module.mjs +4 -4
- package/esm2022/libraries/modules/alerts-and-notifications/alerts-and-notifications.service.mjs +3 -3
- package/esm2022/libraries/modules/alerts-and-notifications/alerts-and-notifications.state.mjs +3 -3
- package/esm2022/libraries/modules/auth/auth-route-guard.mjs +3 -3
- package/esm2022/libraries/modules/auth/auth.module.mjs +4 -4
- package/esm2022/libraries/modules/auth/refresh-token.state.mjs +3 -3
- package/esm2022/libraries/modules/auth/session.state.mjs +5 -5
- package/esm2022/libraries/modules/calculator/calculator.module.mjs +4 -4
- package/esm2022/libraries/modules/calculator/calculator.state.mjs +3 -3
- package/esm2022/libraries/modules/car/car.module.mjs +4 -4
- package/esm2022/libraries/modules/car/car.state.mjs +3 -3
- package/esm2022/libraries/modules/email-server/email-server.module.mjs +4 -4
- package/esm2022/libraries/modules/email-server/email-server.state.mjs +3 -3
- package/esm2022/libraries/modules/facility/facility-menu.service.mjs +3 -3
- package/esm2022/libraries/modules/facility/facility.module.mjs +4 -4
- package/esm2022/libraries/modules/facility/facility.service.mjs +3 -3
- package/esm2022/libraries/modules/facility/facility.state.mjs +3 -3
- package/esm2022/libraries/modules/guest/guest.module.mjs +4 -4
- package/esm2022/libraries/modules/guest/guest.state.mjs +3 -3
- package/esm2022/libraries/modules/layout/layout.module.mjs +4 -4
- package/esm2022/libraries/modules/layout/layout.state.mjs +3 -3
- package/esm2022/libraries/modules/login/login.module.mjs +4 -4
- package/esm2022/libraries/modules/login/login.service.mjs +3 -3
- package/esm2022/libraries/modules/login/login.state.mjs +3 -3
- package/esm2022/libraries/modules/park-activities/park-activities.module.mjs +4 -4
- package/esm2022/libraries/modules/park-activities/park-activities.state.mjs +3 -3
- package/esm2022/libraries/modules/park-manager/park-manager.module.mjs +4 -4
- package/esm2022/libraries/modules/park-manager/park-manager.state.mjs +3 -3
- package/esm2022/libraries/modules/parker/parker.service.mjs +3 -3
- package/esm2022/libraries/modules/parker/parker.state.mjs +3 -3
- package/esm2022/libraries/modules/rate/rate.module.mjs +4 -4
- package/esm2022/libraries/modules/rate/rate.state.mjs +3 -3
- package/esm2022/libraries/modules/remote-validation/remote-validation.module.mjs +4 -4
- package/esm2022/libraries/modules/remote-validation/remote-validation.state.mjs +3 -3
- package/esm2022/libraries/modules/security/security.module.mjs +4 -4
- package/esm2022/libraries/modules/security/security.state.mjs +3 -3
- package/esm2022/libraries/modules/sidenav/sidenav.module.mjs +4 -4
- package/esm2022/libraries/modules/sidenav/sidenav.state.mjs +3 -3
- package/esm2022/libraries/modules/smartparks/smartpark-dialog.state.mjs +3 -3
- package/esm2022/libraries/modules/smartparks/smartpark.module.mjs +4 -4
- package/esm2022/libraries/modules/smartparks/smartpark.state.mjs +3 -3
- package/esm2022/libraries/modules/tenant-logo/tenant-logo.module.mjs +4 -4
- package/esm2022/libraries/modules/tenant-logo/tenant-logo.state.mjs +3 -3
- package/esm2022/libraries/modules/user/user.module.mjs +4 -4
- package/esm2022/libraries/modules/user/user.state.mjs +3 -3
- package/esm2022/libraries/modules/user-settings/user-settings.module.mjs +4 -4
- package/esm2022/libraries/modules/user-settings/user-settings.state.mjs +3 -3
- package/esm2022/libraries/modules/validation-type/validation-type.module.mjs +4 -4
- package/esm2022/libraries/modules/validation-type/validation-type.state.mjs +3 -3
- package/esm2022/libraries/modules/zone/zone.module.mjs +4 -4
- package/esm2022/libraries/modules/zone/zone.state.mjs +3 -3
- package/esm2022/libraries/pipes/c-log-it.pipe.mjs +3 -3
- package/esm2022/libraries/pipes/cent-to-coin.pipe.mjs +3 -3
- package/esm2022/libraries/pipes/curly-to-bold.pipe.mjs +3 -3
- package/esm2022/libraries/pipes/decimal-to-amount.pipe.mjs +3 -3
- package/esm2022/libraries/pipes/decimal-to-currency.pipe.mjs +3 -3
- package/esm2022/libraries/pipes/device-pipes/device-filter-by-zone.pipe.mjs +3 -3
- package/esm2022/libraries/pipes/device-pipes/device-filter.pipe.mjs +3 -3
- package/esm2022/libraries/pipes/device-pipes/device-pipe.module.mjs +4 -4
- package/esm2022/libraries/pipes/device-pipes/device-sort.pipe.mjs +3 -3
- package/esm2022/libraries/pipes/enums-to-array.pipe.mjs +3 -3
- package/esm2022/libraries/pipes/filter-keys.pipe.mjs +3 -3
- package/esm2022/libraries/pipes/filter-numbers.pipe.mjs +3 -3
- package/esm2022/libraries/pipes/filter.pipe.mjs +3 -3
- package/esm2022/libraries/pipes/format.pipe.mjs +3 -3
- package/esm2022/libraries/pipes/group-permission.pipe.mjs +3 -3
- package/esm2022/libraries/pipes/humanize.pipe.mjs +3 -3
- package/esm2022/libraries/pipes/order-by.pipe.mjs +3 -3
- package/esm2022/libraries/pipes/orphan-facilities.pipe.mjs +3 -3
- package/esm2022/libraries/pipes/shared-pipes.module.mjs +4 -4
- package/esm2022/libraries/pipes/smartpark-time.pipe.mjs +3 -3
- package/esm2022/libraries/pipes/sort.pipe.mjs +3 -3
- package/esm2022/libraries/pipes/special-day.pipe.mjs +3 -3
- package/esm2022/libraries/pipes/string-it.pipe.mjs +3 -3
- package/esm2022/libraries/pipes/substr-highlight.pipe.mjs +9 -9
- package/esm2022/libraries/pipes/time-ago.pipe.mjs +3 -3
- package/esm2022/libraries/pipes/time-elapsed.pipe.mjs +3 -3
- package/esm2022/libraries/pipes/time-range.pipe.mjs +3 -3
- package/esm2022/libraries/pipes/translate-local.pipe.mjs +3 -3
- package/esm2022/libraries/pipes/tree-filter-keys.pipe.mjs +3 -3
- package/esm2022/libraries/pipes/wrap-fn.pipe.mjs +3 -3
- package/esm2022/libraries/pipes/zerofy-negative.pipe.mjs +3 -3
- package/esm2022/libraries/resolvers/command-center-module.resolver.mjs +3 -3
- package/esm2022/libraries/resolvers/config.resolver.mjs +3 -3
- package/esm2022/libraries/resolvers/error-page.resolver.mjs +3 -3
- package/esm2022/libraries/resolvers/localization.resolver.mjs +3 -3
- package/esm2022/libraries/resolvers/realtime.resolver.mjs +3 -3
- package/esm2022/libraries/service-proxy/cloud-service-proxies.mjs +78 -78
- package/esm2022/libraries/service-proxy/edge-service-proxies.mjs +6 -6
- package/esm2022/libraries/service-proxy/identity-service-proxies.mjs +30 -30
- package/esm2022/libraries/service-proxy/rpc-service-proxies.mjs +111 -111
- package/esm2022/libraries/service-proxy/service-proxy.module.mjs +4 -4
- package/esm2022/libraries/services/analytics.service.mjs +3 -3
- package/esm2022/libraries/services/app-module.service.mjs +3 -3
- package/esm2022/libraries/services/app-settings.service.mjs +3 -3
- package/esm2022/libraries/services/auth-token.service.mjs +3 -3
- package/esm2022/libraries/services/base-device.service.mjs +3 -3
- package/esm2022/libraries/services/can-deactivate.service.mjs +3 -3
- package/esm2022/libraries/services/company.service.mjs +3 -3
- package/esm2022/libraries/services/date.service.mjs +3 -3
- package/esm2022/libraries/services/detect-browser.service.mjs +3 -3
- package/esm2022/libraries/services/device-remote-commands.service.mjs +3 -3
- package/esm2022/libraries/services/export-file.service.mjs +3 -3
- package/esm2022/libraries/services/facility-commands-config.service.mjs +3 -3
- package/esm2022/libraries/services/facility-commands.service.mjs +3 -3
- package/esm2022/libraries/services/factories/msl-auth-service.mjs +3 -3
- package/esm2022/libraries/services/factories/openid-auth-init-service.mjs +3 -3
- package/esm2022/libraries/services/file-sanitizer.service.mjs +3 -3
- package/esm2022/libraries/services/file.service.mjs +3 -3
- package/esm2022/libraries/services/general-action.service.mjs +3 -3
- package/esm2022/libraries/services/global-error.service.mjs +3 -3
- package/esm2022/libraries/services/http-cancel.service.mjs +3 -3
- package/esm2022/libraries/services/internet-connection.service.mjs +3 -3
- package/esm2022/libraries/services/local-storage.service.mjs +3 -3
- package/esm2022/libraries/services/menu.service.mjs +3 -3
- package/esm2022/libraries/services/modal.service.mjs +3 -3
- package/esm2022/libraries/services/openid-auth.service.mjs +3 -3
- package/esm2022/libraries/services/park-time.service.mjs +3 -3
- package/esm2022/libraries/services/park.service.mjs +3 -3
- package/esm2022/libraries/services/password-strength.service.mjs +3 -3
- package/esm2022/libraries/services/permission-cache.service.mjs +3 -3
- package/esm2022/libraries/services/permission-config.service.mjs +3 -3
- package/esm2022/libraries/services/permissions.service.mjs +3 -3
- package/esm2022/libraries/services/realtime-event.service.mjs +3 -3
- package/esm2022/libraries/services/refresh-token.service.mjs +3 -3
- package/esm2022/libraries/services/remote-command.service.mjs +3 -3
- package/esm2022/libraries/services/revenue.service.mjs +3 -3
- package/esm2022/libraries/services/route.service.mjs +3 -3
- package/esm2022/libraries/services/session-storage.service.mjs +3 -3
- package/esm2022/libraries/services/smartpark.service.mjs +3 -3
- package/esm2022/libraries/services/tenant.service.mjs +3 -3
- package/esm2022/libraries/services/ticket.service.mjs +3 -3
- package/esm2022/libraries/services/validation.service.mjs +3 -3
- package/esm2022/libraries/shared.module.mjs +4 -4
- package/esm2022/libraries/utils/ngxs/action-status.service.mjs +3 -3
- package/fesm2022/tiba-spark-client-shared-lib.mjs +865 -864
- package/fesm2022/tiba-spark-client-shared-lib.mjs.map +1 -1
- package/libraries/enums/localization.enum.d.ts +1 -0
- package/libraries/enums/localization.enum.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -282,10 +282,10 @@ export class FacilityService {
|
|
|
282
282
|
const firstMenuItem = cloneDeep(menuItems).sort((a, b) => a[sortProperty] > b[sortProperty] ? 1 : -1)[0];
|
|
283
283
|
return firstMenuItem;
|
|
284
284
|
}
|
|
285
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
286
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.
|
|
285
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FacilityService, deps: [{ token: i1.AppConfigService }, { token: i2.Store }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
286
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FacilityService }); }
|
|
287
287
|
}
|
|
288
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
288
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FacilityService, decorators: [{
|
|
289
289
|
type: Injectable
|
|
290
290
|
}], ctorParameters: () => [{ type: i1.AppConfigService }, { type: i2.Store }] });
|
|
291
291
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjaWxpdHkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC1zaGFyZWQtbGliL3NyYy9saWJyYXJpZXMvbW9kdWxlcy9mYWNpbGl0eS9mYWNpbGl0eS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3JELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDbkMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUU3RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUcvRixPQUFPLEVBQUUsd0NBQXdDLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUU5RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRzNFLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7OztBQUdqRCxNQUFNLE9BQU8sZUFB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QUMsQ0FBQyxVQUFVLENBQUM7UUFDNUcsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6RyxPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDOytHQXRVVSxlQUFlO21IQUFmLGVBQWU7OzRGQUFmLGVBQWU7a0JBRDNCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21wdXRlZCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmaWx0ZXIsIGZpcnN0LCBtYXAsIE9ic2VydmFibGUsIG9mLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEVOR0xJU0hfTEFOR1VBR0UgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvZ2xvYmFsLWNvbnN0YW50cyc7XG5pbXBvcnQgeyBBcHBUeXBlIH0gZnJvbSAnLi4vLi4vZW51bXMvYXBwLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBTZWFyY2hGYWNpbGl0aWVzTW9kZSB9IGZyb20gJy4uLy4uL2VudW1zL3NlYXJjaC1mYWNpbGl0eS1tb2RlLmVudW0nO1xuaW1wb3J0IHsgTWVudUl0ZW0gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL21lbnUtaXRlbS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUGVybWlzc2lvblR5cGUgfSBmcm9tICcuLi8uLi9zZXJ2aWNlLXByb3h5L2Nsb3VkLXNlcnZpY2UtcHJveGllcyc7XG5pbXBvcnQgeyBGYWNpbGl0eVRyZWVEdG8sIFBhcmtCcmFuY2hUeXBlIH0gZnJvbSAnLi4vLi4vc2VydmljZS1wcm94eS9pZGVudGl0eS1zZXJ2aWNlLXByb3hpZXMnO1xuaW1wb3J0IHsgRmFjaWxpdHlEdG8gfSBmcm9tICcuLi8uLi9zZXJ2aWNlLXByb3h5L3JwYy1zZXJ2aWNlLXByb3hpZXMnO1xuaW1wb3J0IHsgQXBwQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2FwcC1jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBQZXJtaXNzaW9uVHlwZVN1cHBvcnRlZFZlcnNpb25EaWN0aW9uYXJ5IH0gZnJvbSAnLi4vLi4vc3RhdGljLWZpbGVzJztcbmltcG9ydCB7IE51bWJlck1hcCB9IGZyb20gJy4uLy4uL3V0aWxzL2xhbmcudXRpbCc7XG5pbXBvcnQgeyBpc1ZlcnNpb25HcmVhdGVyVGhhbkVxdWFsIH0gZnJvbSAnLi4vLi4vdXRpbHMvc3VwcG9ydC12ZXJzaW9uLnV0aWwnO1xuaW1wb3J0IHsgU2lkZU5hdlNvcnRCeSB9IGZyb20gJy4uL3NpZGVuYXYvc2lkZW5hdi1zb3J0LmVudW0nO1xuaW1wb3J0IHsgREVGQVVMVF9TT1JUX01FTlUsIFNpZGVuYXZTdGF0ZSB9IGZyb20gJy4uL3NpZGVuYXYvc2lkZW5hdi5zdGF0ZSc7XG5pbXBvcnQgeyBGYWNpbGl0eURpY3Rpb25hcnkgfSBmcm9tICcuL2ZhY2lsaXR5LW1vZGFsJztcbmltcG9ydCB7IEZhY2lsaXR5V2l0aEd1aWQgfSBmcm9tICcuL2ZhY2lsaXR5LXdpdGgtZ3VpZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ2xlYXJJbmFjdGl2ZVNlbGVjdGVkUGFya0FjdGlvbiB9IGZyb20gJy4vZmFjaWxpdHkuYWN0aW9ucyc7XG5pbXBvcnQgeyBGYWNpbGl0eVN0YXRlIH0gZnJvbSAnLi9mYWNpbGl0eS5zdGF0ZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBGYWNpbGl0eVNlcnZpY2Uge1xuXG4gIGdldCBsb2FkaW5nJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5sb2FkaW5nLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkaW5nOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFwcENvbmZpZzogQXBwQ29uZmlnU2VydmljZSwgcHJpdmF0ZSBzdG9yZTogU3RvcmUpIHtcbiAgfVxuXG4gIGlzUGFyZW50ID0gKGZhY2lsaXR5OiBGYWNpbGl0eVRyZWVEdG8pID0+IHRydWU7XG4gIGlzQ2hpbGRyZW4gPSAoZmFjaWxpdHk6IEZhY2lsaXR5VHJlZUR0bykgPT4gdHJ1ZTtcbiAgaXNQYXJlbnRPckNoaWxkID0gKGZhY2lsaXR5OiBGYWNpbGl0eVRyZWVEdG8pID0+IHRoaXMuaXNDaGlsZHJlbihmYWNpbGl0eSkgfHwgdGhpcy5pc1BhcmVudChmYWNpbGl0eSk7XG4gIGlzQ2hpbGQgPSAoZmFjaWxpdHk6IEZhY2lsaXR5VHJlZUR0bykgPT4gZmFjaWxpdHkudHlwZSA9PT0gUGFya0JyYW5jaFR5cGUuUGFyaztcblxuICBoYXNTeXN0ZW1BZG1pblBlcm1pc3Npb25zID0gKCkgPT4ge1xuICAgIGNvbnN0IGZlYXR1cmVQZXJtaXNzaW9ucyA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoRmFjaWxpdHlTdGF0ZS5mZWF0dXJlUGVybWlzc2lvbnMpO1xuICAgIHJldHVybiBmZWF0dXJlUGVybWlzc2lvbnM/LnNvbWUocCA9PiBwID09PSBQZXJtaXNzaW9uVHlwZS5PcGVyYXRpb25hbEFkbWluIHx8IHAgPT09IFBlcm1pc3Npb25UeXBlLlN5c3RlbUFkbWluKTtcbiAgfTtcblxuICBoYXNQZXJtaXNzaW9uVHlwZXNCeVBhcmsgPSAocGVybWlzc2lvblR5cGVzOiBQZXJtaXNzaW9uVHlwZVtdLCBndWlkOiBzdHJpbmcsIHBhcmtJZDogbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgZmFjaWxpdHlEaWN0aW9uYXJ5ID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChGYWNpbGl0eVN0YXRlLmZhY2lsaXR5RGljdGlvbmFyeSk7XG4gICAgY29uc3QgZmVhdHVyZVBlcm1pc3Npb25zID0gZmFjaWxpdHlEaWN0aW9uYXJ5W2d1aWRdW3BhcmtJZF0uZmVhdHVyZVBlcm1pc3Npb25zO1xuICAgIGNvbnN0IHNwYXJrVmVyc2lvbiA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoKHsgc21hcnRwYXJrOiB7IHZlcnNpb25zIH0gfSkgPT4gdmVyc2lvbnNbZ3VpZF0pO1xuXG4gICAgcmV0dXJuIHBlcm1pc3Npb25UeXBlcy5yZWR1Y2UoKGFjYywgcGVybWlzc2lvblR5cGUpID0+IHtcbiAgICAgIGNvbnN0IHBlcm1pc3Npb25TdXBwb3J0VmVyc2lvbiA9IFBlcm1pc3Npb25UeXBlU3VwcG9ydGVkVmVyc2lvbkRpY3Rpb25hcnlbcGVybWlzc2lvblR5cGVdO1xuICAgICAgaWYgKCFwZXJtaXNzaW9uU3VwcG9ydFZlcnNpb24pIHtcbiAgICAgICAgY29uc29sZS53YXJuKGBQZXJtaXNzaW9uICR7cGVybWlzc2lvblR5cGV9IHZlcnNpb24gc3VwcG9ydCBpcyBtaXNzaW5nIGluIFBlcm1pc3Npb25UeXBlU3VwcG9ydGVkVmVyc2lvbkRpY3Rpb25hcnkgZmlsZWApO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBpc1ZlcnNpb25TdXBwb3J0ZWQgPSBpc1ZlcnNpb25HcmVhdGVyVGhhbkVxdWFsKHNwYXJrVmVyc2lvbiwgcGVybWlzc2lvblN1cHBvcnRWZXJzaW9uKTtcbiAgICAgIGFjY1twZXJtaXNzaW9uVHlwZV0gPSBpc1ZlcnNpb25TdXBwb3J0ZWQgJiYgZmVhdHVyZVBlcm1pc3Npb25zLmluY2x1ZGVzKHBlcm1pc3Npb25UeXBlKTtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30gYXMgeyBba2V5OiBzdHJpbmddOiBib29sZWFuOyB9KTtcbiAgfTtcblxuICBoYXNQZXJtaXNzaW9uVHlwZUJ5UGFyayA9IChwZXJtaXNzaW9uVHlwZTogUGVybWlzc2lvblR5cGUsIGd1aWQ6IHN0cmluZywgcGFya0lkOiBudW1iZXIpID0+IHtcbiAgICBsZXQgaGFzUGVybWlzc2lvbiA9IGZhbHNlO1xuICAgIGxldCBpc1ZlcnNpb25TdXBwb3J0ZWQgPSB0aGlzLmlzVmVyc2lvblN1cHBvcnRlZChwZXJtaXNzaW9uVHlwZSwgZ3VpZCk7XG4gICAgaWYgKGlzVmVyc2lvblN1cHBvcnRlZCkge1xuICAgICAgY29uc3QgZmFjaWxpdHlEaWN0aW9uYXJ5ID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChGYWNpbGl0eVN0YXRlLmZhY2lsaXR5RGljdGlvbmFyeSk7XG4gICAgICBjb25zdCBmZWF0dXJlUGVybWlzc2lvbnMgPSBmYWNpbGl0eURpY3Rpb25hcnlbZ3VpZF1bcGFya0lkXS5mZWF0dXJlUGVybWlzc2lvbnM7XG4gICAgICBoYXNQZXJtaXNzaW9uID0gZmVhdHVyZVBlcm1pc3Npb25zPy5pbmNsdWRlcyhwZXJtaXNzaW9uVHlwZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGhhc1Blcm1pc3Npb247XG4gIH07XG5cbiAgaGFzUGVybWlzc2lvblR5cGUkID0gKHBlcm1pc3Npb25UeXBlOiBQZXJtaXNzaW9uVHlwZSkgPT5cbiAgICB0aGlzLmlzVmVyc2lvblN1cHBvcnRlZCQocGVybWlzc2lvblR5cGUpLnBpcGUoc3dpdGNoTWFwKGlzVmVyc2lvblN1cHBvcnRlZCA9PiB7XG4gICAgICByZXR1cm4gIWlzVmVyc2lvblN1cHBvcnRlZCA/IG9mKGZhbHNlKSA6IHRoaXMuc3RvcmUuc2VsZWN0KEZhY2lsaXR5U3RhdGUuZmVhdHVyZVBlcm1pc3Npb25zKS5waXBlKG1hcChmZWF0dXJlUGVybWlzc2lvbnMgPT5cbiAgICAgICAgZmVhdHVyZVBlcm1pc3Npb25zPy5pbmNsdWRlcyhwZXJtaXNzaW9uVHlwZSkpKTtcbiAgICB9KSk7XG5cbiAgaXNWZXJzaW9uU3VwcG9ydGVkJCA9IChwZXJtaXNzaW9uVHlwZTogUGVybWlzc2lvblR5cGUpID0+XG4gICAgdGhpcy5zdG9yZS5zZWxlY3QoRmFjaWxpdHlTdGF0ZS5ndWlkKS5waXBlKGZpbHRlcihndWlkID0+ICEhZ3VpZCksIG1hcChndWlkID0+IHRoaXMuaXNWZXJzaW9uU3VwcG9ydGVkKHBlcm1pc3Npb25UeXBlLCBndWlkKSkpO1xuXG4gIGhhc1Blcm1pc3Npb25UeXBlU2lnbmFsKHBlcm1pc3Npb25UeXBlOiBQZXJtaXNzaW9uVHlwZSkge1xuICAgIHJldHVybiBjb21wdXRlZCgoKSA9PiB7XG4gICAgICBsZXQgaXNQZXJtaXR0ZWQgPSBmYWxzZTtcbiAgICAgIGNvbnN0IGlzVmVyc2lvblN1cHBvcnRlZCA9IHRoaXMuaXNWZXJzaW9uU3VwcG9ydGVkU2lnbmFsKHBlcm1pc3Npb25UeXBlKSgpO1xuICAgICAgaWYgKGlzVmVyc2lvblN1cHBvcnRlZCkge1xuICAgICAgICBjb25zdCBmZWF0dXJlUGVybWlzc2lvbnMgPSB0aGlzLnN0b3JlLnNlbGVjdFNpZ25hbChGYWNpbGl0eVN0YXRlLmZlYXR1cmVQZXJtaXNzaW9ucykoKTtcbiAgICAgICAgaXNQZXJtaXR0ZWQgPSAhIWZlYXR1cmVQZXJtaXNzaW9ucz8uaW5jbHVkZXMocGVybWlzc2lvblR5cGUpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaXNQZXJtaXR0ZWQ7XG4gICAgfSk7XG4gIH1cbiAgICBcbiAgaXNWZXJzaW9uU3VwcG9ydGVkU2lnbmFsKHBlcm1pc3Npb25UeXBlOiBQZXJtaXNzaW9uVHlwZSkge1xuICAgIHJldHVybiBjb21wdXRlZCgoKSA9PiB7XG4gICAgICBjb25zdCBndWlkID0gdGhpcy5zdG9yZS5zZWxlY3RTaWduYWwoRmFjaWxpdHlTdGF0ZS5ndWlkKSgpO1xuICAgICAgcmV0dXJuICEhZ3VpZCAmJiB0aGlzLmlzVmVyc2lvblN1cHBvcnRlZChwZXJtaXNzaW9uVHlwZSwgZ3VpZCk7XG4gICAgfSk7XG4gIH1cblxuICBpc1ZlcnNpb25TdXBwb3J0ZWQgPSAocGVybWlzc2lvblR5cGU6IFBlcm1pc3Npb25UeXBlLCBndWlkOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBzcGFya1ZlcnNpb24gPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KCh7IHNtYXJ0cGFyazogeyB2ZXJzaW9ucyB9IH0pID0+IHZlcnNpb25zW2d1aWRdKTtcbiAgICBjb25zdCBwZXJtaXNzaW9uU3VwcG9ydFZlcnNpb24gPSBQZXJtaXNzaW9uVHlwZVN1cHBvcnRlZFZlcnNpb25EaWN0aW9uYXJ5W3Blcm1pc3Npb25UeXBlXTtcbiAgICBpZiAoIXBlcm1pc3Npb25TdXBwb3J0VmVyc2lvbikge1xuICAgICAgY29uc29sZS53YXJuKGBQZXJtaXNzaW9uICR7cGVybWlzc2lvblR5cGV9IHZlcnNpb24gc3VwcG9ydCBpcyBtaXNzaW5nIGluIFBlcm1pc3Npb25UeXBlU3VwcG9ydGVkVmVyc2lvbkRpY3Rpb25hcnkgZmlsZWApO1xuICAgIH1cblxuICAgIHJldHVybiBpc1ZlcnNpb25HcmVhdGVyVGhhbkVxdWFsKHNwYXJrVmVyc2lvbiwgcGVybWlzc2lvblN1cHBvcnRWZXJzaW9uKTtcbiAgfTtcblxuICBoYXNQZXJtaXNzaW9uVHlwZSA9IChwZXJtaXNzaW9uVHlwZTogUGVybWlzc2lvblR5cGUpID0+IHtcbiAgICBjb25zdCBndWlkID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChGYWNpbGl0eVN0YXRlLmd1aWQpO1xuICAgIGNvbnN0IHNwYXJrVmVyc2lvbiA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoKHsgc21hcnRwYXJrOiB7IHZlcnNpb25zIH0gfSkgPT4gdmVyc2lvbnNbZ3VpZF0pO1xuICAgIGNvbnN0IHBlcm1pc3Npb25TdXBwb3J0VmVyc2lvbiA9IFBlcm1pc3Npb25UeXBlU3VwcG9ydGVkVmVyc2lvbkRpY3Rpb25hcnlbcGVybWlzc2lvblR5cGVdO1xuICAgIGlmICghcGVybWlzc2lvblN1cHBvcnRWZXJzaW9uKSB7XG4gICAgICBjb25zb2xlLndhcm4oYFBlcm1pc3Npb24gJHtwZXJtaXNzaW9uVHlwZX0gdmVyc2lvbiBzdXBwb3J0IGlzIG1pc3NpbmcgaW4gUGVybWlzc2lvblR5cGVTdXBwb3J0ZWRWZXJzaW9uRGljdGlvbmFyeWApO1xuICAgIH1cblxuICAgIGNvbnN0IGlzVmVyc2lvblN1cHBvcnRlZCA9IGlzVmVyc2lvbkdyZWF0ZXJUaGFuRXF1YWwoc3BhcmtWZXJzaW9uLCBwZXJtaXNzaW9uU3VwcG9ydFZlcnNpb24pO1xuICAgIGNvbnN0IGZlYXR1cmVQZXJtaXNzaW9ucyA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoRmFjaWxpdHlTdGF0ZS5mZWF0dXJlUGVybWlzc2lvbnMpO1xuICAgIHJldHVybiBpc1ZlcnNpb25TdXBwb3J0ZWQgJiYgZmVhdHVyZVBlcm1pc3Npb25zPy5pbmNsdWRlcyhwZXJtaXNzaW9uVHlwZSk7XG4gIH07XG5cbiAgZ2V0RmFjaWxpdGllcyhmYWNpbGl0eVRyZWU6IEZhY2lsaXR5VHJlZUR0b1tdLCBmaWx0ZXI6IChGYWNpbGl0eVRyZWVEdG8pID0+IGJvb2xlYW4gPSBudWxsKTogRmFjaWxpdHlUcmVlRHRvW10ge1xuICAgIGNvbnN0IGZhY2lsaXRpZXM6IEZhY2lsaXR5VHJlZUR0b1tdID0gW107XG4gICAgY29uc3QgaXNDbG91ZEFwcCA9IHRoaXMuYXBwQ29uZmlnLmdldENvbmZpZygpLmFwcFR5cGUgPT09IEFwcFR5cGUuQ2xvdWQ7XG5cbiAgICBmYWNpbGl0eVRyZWUuZm9yRWFjaChmID0+IHtcbiAgICAgIGNvbnN0IGZhY2lsaXR5Q29weSA9IG5ldyBGYWNpbGl0eVRyZWVEdG8oZik7XG4gICAgICBpZiAoaXNDbG91ZEFwcCkge1xuICAgICAgICBmYWNpbGl0eUNvcHkuaWQgPSBmLmNsb3VkSWQ7XG4gICAgICB9XG4gICAgICBpZiAoIWZpbHRlciB8fCBmaWx0ZXIoZmFjaWxpdHlDb3B5KSkge1xuICAgICAgICBmYWNpbGl0aWVzLnB1c2goZmFjaWxpdHlDb3B5KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBmYWNpbGl0aWVzO1xuICB9XG5cbiAgZXh0cmFjdEZhY2lsaXR5TWFwKGZhY2lsaXR5VHJlZTogRmFjaWxpdHlUcmVlRHRvW10pIHtcbiAgICBjb25zdCBpc0Nsb3VkQXBwID0gdGhpcy5hcHBDb25maWcuZ2V0Q29uZmlnKCkuYXBwVHlwZSA9PT0gQXBwVHlwZS5DbG91ZDtcbiAgICBjb25zdCBmYWNpbGl0aWVzTWFwID0gbmV3IE1hcDxudW1iZXIsIEZhY2lsaXR5VHJlZUR0bz4oKTtcbiAgICB0aGlzLmZsYXRlblRyZWUoZmFjaWxpdHlUcmVlLCBmYWNpbGl0aWVzTWFwLCBpc0Nsb3VkQXBwKTtcbiAgICByZXR1cm4gZmFjaWxpdGllc01hcDtcbiAgfVxuXG4gIHBvcHVsYXRlRmFjaWxpdGllcyhmYWNpbGl0eURpY3Rpb25hcnk6IEZhY2lsaXR5RGljdGlvbmFyeSwgbW9kZTogU2VhcmNoRmFjaWxpdGllc01vZGUsIHNpbmdsZUd1aWREaXNwbGF5OiBzdHJpbmcpOiBGYWNpbGl0eVdpdGhHdWlkW10ge1xuICAgIGNvbnN0IGNsb25lZEZhY2lsaXRpZXMgPSBjbG9uZURlZXAoZmFjaWxpdHlEaWN0aW9uYXJ5KTtcbiAgICBsZXQgZmFjaWxpdGllczogRmFjaWxpdHlXaXRoR3VpZFtdID0gW107XG4gICAgaWYgKCEhc2luZ2xlR3VpZERpc3BsYXkpIHtcbiAgICAgIGZhY2lsaXRpZXMgPSB0aGlzLnBvcHVsYXRlU2luZ2xlR3VpZChjbG9uZWRGYWNpbGl0aWVzW3NpbmdsZUd1aWREaXNwbGF5XSwgbW9kZSwgc2luZ2xlR3VpZERpc3BsYXkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmYWNpbGl0aWVzID0gdGhpcy5wb3B1bGF0ZU11bHRpR3VpZHMoY2xvbmVkRmFjaWxpdGllcywgbW9kZSk7XG4gICAgfVxuXG4gICAgLy8gRmlsdGVyIEluYWN0aXZlIGZhY2lsaXRpZXMgaWYgbmVlZGVkXG4gICAgZmFjaWxpdGllcyA9IGZhY2lsaXRpZXMuZmlsdGVyKGYgPT4ge1xuICAgICAgcmV0dXJuIGYuZGF0YS5hY3RpdmU7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZmFjaWxpdGllcy5zb3J0KChhLCBiKSA9PiBhLmRhdGEubmFtZS5sb2NhbGVDb21wYXJlKGIuZGF0YS5uYW1lLCBFTkdMSVNIX0xBTkdVQUdFLCB7IG51bWVyaWM6IHRydWUgfSkpO1xuICB9XG5cbiAgZ2V0RmFjaWxpdHlXaXRoR3VpZChmYWNpbGl0aWVzOiBGYWNpbGl0eVdpdGhHdWlkW10sIHBhcmtJZDogbnVtYmVyLCBndWlkOiBzdHJpbmcsIHNob3dOb25lVGV4dDogYm9vbGVhbixcbiAgICBtaW5pbXVtVmVyc2lvblN1cHBvcnQ6IHN0cmluZywgcGVybWlzc2lvblN1cHBvcnQ6IFBlcm1pc3Npb25UeXBlKTogRmFjaWxpdHlXaXRoR3VpZCB7XG4gICAgbGV0IGZhY2lsaXR5VG9TZWxlY3RBc0RlZmF1bHQ6IEZhY2lsaXR5V2l0aEd1aWQ7XG4gICAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSBndWlkIG9yIHBhcmtJZCB3ZSBkb24ndCBzZWxlY3QgYSBkZWZhdWx0IHBhcmtcbiAgICBpZiAoKCEhZ3VpZCAmJiAhIXBhcmtJZCkgfHwgIXNob3dOb25lVGV4dCkge1xuICAgICAgaWYgKCFndWlkICYmICFwYXJrSWQpIHtcbiAgICAgICAgZ3VpZCA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoRmFjaWxpdHlTdGF0ZS5ndWlkKTtcbiAgICAgICAgcGFya0lkID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChGYWNpbGl0eVN0YXRlLnBhcmtJZCk7XG4gICAgICB9XG5cbiAgICAgIC8vIFdlIHNlYXJjaCBmb3IgdGhlIHBhcmsgaXRzZWxmXG4gICAgICBmYWNpbGl0eVRvU2VsZWN0QXNEZWZhdWx0ID0gZmFjaWxpdGllcy5maW5kKGYgPT4gZi5ndWlkID09PSBndWlkICYmIGYuZGF0YS5pZCA9PT0gcGFya0lkKTtcbiAgICAgIC8vIElmIHdlIGRpZG4ndCBmaW5kIGEgcGFya1xuICAgICAgLy8gV2UgY2hlY2sgaWYgdGhlIGd1aWQgKyBwYXJrSWQgaXMgZnJvbSBhIHBhcmVudCBwYXJrIHNvIHdlIHNlYXJjaCBmb3IgdGhlIGNoaWxkIHBhcmtcbiAgICAgIGlmICghZmFjaWxpdHlUb1NlbGVjdEFzRGVmYXVsdCkge1xuICAgICAgICBmYWNpbGl0eVRvU2VsZWN0QXNEZWZhdWx0ID0gZmFjaWxpdGllcy5maW5kKGYgPT4gZi5ndWlkID09PSBndWlkICYmIGYuZGF0YS5tdWx0aVBhcmtQYXJlbnRJRCA9PT0gcGFya0lkKTtcbiAgICAgIH1cbiAgICAgIC8vIElmIHdlIGRpZG4ndCBmaW5kIGEgcGFya1xuICAgICAgLy8gV2UgY2hlY2sgaWYgdGhlIGd1aWQgKyBwYXJrSWQgaXMgZnJvbSBhIGNoaWxkIHBhcmsgc28gd2Ugc2VhcmNoIGZvciB0aGUgcGFyZW50IHBhcmtcbiAgICAgIGlmICghZmFjaWxpdHlUb1NlbGVjdEFzRGVmYXVsdCkge1xuICAgICAgICBjb25zdCBwYXJlbnRQYXJrSWQgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KEZhY2lsaXR5U3RhdGUubXVsdGlQYXJrUGFyZW50SUQpO1xuICAgICAgICBmYWNpbGl0eVRvU2VsZWN0QXNEZWZhdWx0ID0gZmFjaWxpdGllcy5maW5kKGYgPT4gZi5ndWlkID09PSBndWlkICYmIGYuZGF0YS5pZCA9PT0gcGFyZW50UGFya0lkKTtcbiAgICAgICAgcGFya0lkID0gZmFjaWxpdHlUb1NlbGVjdEFzRGVmYXVsdCA/IHBhcmVudFBhcmtJZCA6IHBhcmtJZDtcbiAgICAgIH1cblxuICAgICAgLy8gSWYgd2UgZGlkbid0IGZpbmQgYSBwYXJrIG9yIHRoZSBwYXJrIGlzIE5PVCBzdXBwb3J0ZWQgb3IgTk9UIHBlcm1pdHRlZCwgdHJ5IHRvIGZpbmQgdGhlIGZpcnN0IHN1cHBvcnRlZCBmYWNpbGl0eVxuICAgICAgaWYgKCFmYWNpbGl0eVRvU2VsZWN0QXNEZWZhdWx0IHx8ICF0aGlzLmlzRmFjaWxpdHlWZXJzaW9uU3VwcG9ydGVkKGZhY2lsaXR5VG9TZWxlY3RBc0RlZmF1bHQsIG1pbmltdW1WZXJzaW9uU3VwcG9ydCkgfHxcbiAgICAgICAgIXRoaXMuaXNGYWNpbGl0eVBlcm1pc3Npb25TdXBwb3J0ZWQoZmFjaWxpdHlUb1NlbGVjdEFzRGVmYXVsdCwgcGVybWlzc2lvblN1cHBvcnQpKSB7XG4gICAgICAgIGZhY2lsaXR5VG9TZWxlY3RBc0RlZmF1bHQgPSBmYWNpbGl0aWVzLmZpbmQoZiA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuaXNGYWNpbGl0eVZlcnNpb25TdXBwb3J0ZWQoZiwgbWluaW11bVZlcnNpb25TdXBwb3J0KSAmJiB0aGlzLmlzRmFjaWxpdHlQZXJtaXNzaW9uU3VwcG9ydGVkKGYsIHBlcm1pc3Npb25TdXBwb3J0KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhY2lsaXR5VG9TZWxlY3RBc0RlZmF1bHQ7XG4gIH1cblxuICBpc0ZhY2lsaXR5VmVyc2lvblN1cHBvcnRlZChmYWNpbGl0eTogRmFjaWxpdHlXaXRoR3VpZCwgbWluaW11bVZlcnNpb25TdXBwb3J0OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5pc0d1aWRWZXJzaW9uU3VwcG9ydGVkKGZhY2lsaXR5Lmd1aWQsIG1pbmltdW1WZXJzaW9uU3VwcG9ydCk7XG4gIH1cblxuICBpc0ZhY2lsaXR5UGVybWlzc2lvblN1cHBvcnRlZChmYWNpbGl0eTogRmFjaWxpdHlXaXRoR3VpZCwgcGVybWlzc2lvbnNUeXBlOiBQZXJtaXNzaW9uVHlwZSkge1xuICAgIHJldHVybiAhUGVybWlzc2lvblR5cGVbcGVybWlzc2lvbnNUeXBlXSB8fCB0aGlzLmhhc1Blcm1pc3Npb25UeXBlQnlQYXJrKHBlcm1pc3Npb25zVHlwZSwgZmFjaWxpdHkuZ3VpZCwgZmFjaWxpdHkuZGF0YS5pZCk7XG4gIH1cblxuICBpc0d1aWRWZXJzaW9uU3VwcG9ydGVkKGd1aWQ6IHN0cmluZywgbWluaW11bVZlcnNpb25TdXBwb3J0OiBzdHJpbmcpIHtcbiAgICBjb25zdCBzcGFya1ZlcnNpb24gPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KCh7IHNtYXJ0cGFyazogeyB2ZXJzaW9ucyB9IH0pID0+IHZlcnNpb25zW2d1aWRdKTtcbiAgICByZXR1cm4gIW1pbmltdW1WZXJzaW9uU3VwcG9ydCB8fCAoc3BhcmtWZXJzaW9uICYmIGlzVmVyc2lvbkdyZWF0ZXJUaGFuRXF1YWwoc3BhcmtWZXJzaW9uLCBtaW5pbXVtVmVyc2lvblN1cHBvcnQpKTtcbiAgfVxuXG4gIGNsZWFySW5hY3RpdmVTZWxlY3RlZFBhcmsoKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgQ2xlYXJJbmFjdGl2ZVNlbGVjdGVkUGFya0FjdGlvbigpKTtcbiAgfVxuXG4gIHByaXZhdGUgcG9wdWxhdGVNdWx0aUd1aWRzKGZhY2lsaXR5RGljdGlvbmFyeTogRmFjaWxpdHlEaWN0aW9uYXJ5LCBtb2RlOiBTZWFyY2hGYWNpbGl0aWVzTW9kZSk6IEZhY2lsaXR5V2l0aEd1aWRbXSB7XG4gICAgY29uc3QgZmFjaWxpdGllczogRmFjaWxpdHlXaXRoR3VpZFtdID0gW107XG4gICAgZm9yIChjb25zdCBndWlkIG9mIE9iamVjdC5rZXlzKGZhY2lsaXR5RGljdGlvbmFyeSkpIHtcbiAgICAgIGZhY2lsaXRpZXMucHVzaCguLi50aGlzLnBvcHVsYXRlU2luZ2xlR3VpZChmYWNpbGl0eURpY3Rpb25hcnlbZ3VpZF0sIG1vZGUsIGd1aWQpKTtcbiAgICB9XG4gICAgcmV0dXJuIGZhY2lsaXRpZXM7XG4gIH1cblxuICBwcml2YXRlIHBvcHVsYXRlU2luZ2xlR3VpZChsb3RzTWFwOiBOdW1iZXJNYXA8RmFjaWxpdHlEdG8+LCBtb2RlOiBTZWFyY2hGYWNpbGl0aWVzTW9kZSwgZ3VpZDogc3RyaW5nKTogRmFjaWxpdHlXaXRoR3VpZFtdIHtcbiAgICBjb25zdCBmYWNpbGl0aWVzOiBGYWNpbGl0eVdpdGhHdWlkW10gPSBbXTtcbiAgICBjb25zdCBsb3RzOiBGYWNpbGl0eUR0b1tdID0gT2JqZWN0LnZhbHVlcyhsb3RzTWFwKTtcbiAgICBjb25zdCBwYXJlbnRQYXJrOiBGYWNpbGl0eUR0byA9IGxvdHMuZmluZChsID0+IGwuaXNNdWx0aVBhcmspO1xuXG4gICAgZm9yIChjb25zdCBsb3Qgb2YgbG90cykge1xuICAgICAgaWYgKG1vZGUgPT09IFNlYXJjaEZhY2lsaXRpZXNNb2RlLm9ubHlQYXJlbnRzICYmIGxvdC5tdWx0aVBhcmtQYXJlbnRJRCA9PT0gMCB8fFxuICAgICAgICBtb2RlID09PSBTZWFyY2hGYWNpbGl0aWVzTW9kZS5vbmx5Q2hpbGRyZW4gJiYgbG90LmlzTXVsdGlQYXJrID09PSAwIHx8XG4gICAgICAgIG1vZGUgPT09IFNlYXJjaEZhY2lsaXRpZXNNb2RlLnBhcmVudHNXaXRoQ2hpbGRyZW4pIHtcbiAgICAgICAgbG90Lm5hbWUgPSAhIXBhcmVudFBhcmsgJiYgIWxvdC5pc011bHRpUGFyayA/IGAke3BhcmVudFBhcmsubmFtZX0gLSAke2xvdC5uYW1lfWAgOiBgJHtsb3QubmFtZX1gO1xuICAgICAgICBmYWNpbGl0aWVzLnB1c2goeyBndWlkLCBkYXRhOiBsb3QgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhY2lsaXRpZXM7XG4gIH1cblxuICBwcml2YXRlIGZsYXRlblRyZWUoZmFjaWxpdHlUcmVlOiBGYWNpbGl0eVRyZWVEdG9bXSwgZmFjaWxpdGllc01hcDogTWFwPG51bWJlciwgRmFjaWxpdHlUcmVlRHRvPiwgaXNDbG91ZEFwcDogYm9vbGVhbikge1xuICAgIGZhY2lsaXR5VHJlZS5mb3JFYWNoKGZ0ID0+IHtcbiAgICAgIGlmIChmdC5jaGlsZHJlbikge1xuICAgICAgICBjb25zdCBmbGF0Tm9kZTogRmFjaWxpdHlUcmVlRHRvID0gRmFjaWxpdHlUcmVlRHRvLmZyb21KUyhmdCk7XG4gICAgICAgIHRoaXMuYWRkVG9NYXAoaXNDbG91ZEFwcCwgZmFjaWxpdGllc01hcCwgZmxhdE5vZGUpO1xuICAgICAgICB0aGlzLmZsYXRlblRyZWUoZnQuY2hpbGRyZW4sIGZhY2lsaXRpZXNNYXAsIGlzQ2xvdWRBcHApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZnQuY2hpbGRyZW4gPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuYWRkVG9NYXAoaXNDbG91ZEFwcCwgZmFjaWxpdGllc01hcCwgZnQpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRUb01hcChpc0Nsb3VkQXBwOiBib29sZWFuLCBmYWNpbGl0aWVzTWFwOiBNYXA8bnVtYmVyLCBGYWNpbGl0eVRyZWVEdG8+LCBmdDogRmFjaWxpdHlUcmVlRHRvKSB7XG4gICAgaWYgKGlzQ2xvdWRBcHApIHtcbiAgICAgIGZhY2lsaXRpZXNNYXAuc2V0KGZ0LmNsb3VkSWQsIGZ0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZmFjaWxpdGllc01hcC5zZXQoZnQuaWQsIGZ0KTtcbiAgICB9XG4gIH1cblxuICBnZXRQYXJrSWRzKCk6IG51bWJlcltdIHtcbiAgICBsZXQgZ3VpZCA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoRmFjaWxpdHlTdGF0ZS5ndWlkKTtcbiAgICBsZXQgcGFya0lkID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChGYWNpbGl0eVN0YXRlLnBhcmtJZCk7XG4gICAgbGV0IHBhcmtJZHMgPSB0aGlzLmdldFBhcmtzKHBhcmtJZCwgZ3VpZCk7XG4gICAgcmV0dXJuIHBhcmtJZHM7XG4gIH1cblxuICBpbml0U2VsZWN0ZWRQYXJrKGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSkge1xuICAgIHJldHVybiBhY3RpdmF0ZWRSb3V0ZS5wYXJhbXMucGlwZShcbiAgICAgIGZpbHRlcihwYXJhbXMgPT4gT2JqZWN0LmtleXMocGFyYW1zKS5sZW5ndGggPiAwKSxcbiAgICAgIHN3aXRjaE1hcChwYXJhbXMgPT4ge1xuICAgICAgICBsZXQgZ3VpZDogc3RyaW5nO1xuICAgICAgICBjb25zdCBwYXJrSWQgPSArcGFyYW1zLnBhcmtJZDtcbiAgICAgICAgY29uc3QgdGliYUtleSA9IHBhcmFtcy50aWJhS2V5O1xuICAgICAgICByZXR1cm4gdGhpcy5zdG9yZS5zZWxlY3QoRmFjaWxpdHlTdGF0ZS50aWJhS2V5cykucGlwZShcbiAgICAgICAgICBmaWx0ZXIodGliYUtleXMgPT4gT2JqZWN0LmtleXModGliYUtleXMpLmxlbmd0aCA+IDApLFxuICAgICAgICAgIG1hcCh0aWJhS2V5cyA9PiB7XG4gICAgICAgICAgICBndWlkID0gT2JqZWN0LmtleXModGliYUtleXMpW3RpYmFLZXldO1xuICAgICAgICAgICAgcmV0dXJuIHsgZ3VpZCwgcGFya0lkIH07XG4gICAgICAgICAgfSkpO1xuICAgICAgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQYXJrcyhwYXJrSWQ6IG51bWJlciwgZ3VpZDogc3RyaW5nKSB7XG4gICAgbGV0IHBhcmtJZHMgPSBbXTtcbiAgICBjb25zdCBmYWNpbGl0eURpY3Rpb25hcnkgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KEZhY2lsaXR5U3RhdGUuZmFjaWxpdHlEaWN0aW9uYXJ5KTtcbiAgICBjb25zdCBndWlkRmFjaWxpdGllc01hcCA9IGZhY2lsaXR5RGljdGlvbmFyeVtndWlkXTtcblxuICAgIGlmIChndWlkRmFjaWxpdGllc01hcCAmJiBndWlkRmFjaWxpdGllc01hcFtwYXJrSWRdPy5pc011bHRpUGFyaykge1xuICAgICAgcGFya0lkcyA9IE9iamVjdC52YWx1ZXMoZ3VpZEZhY2lsaXRpZXNNYXApLmZpbHRlcihmID0+ICFmLmlzTXVsdGlQYXJrKS5tYXAoZiA9PiBmLmlkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGFya0lkcy5wdXNoKHBhcmtJZCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmtJZHM7XG4gIH1cblxuICBwdWJsaWMgZ2V0RGVmYXVsdEZhY2lsaXR5Um91dGVCeU1lbnVJdGVtcyhtZW51SXRlbXM6IE1lbnVJdGVtW10pIHtcbiAgICBsZXQgbWVudUl0ZW06IE1lbnVJdGVtO1xuICAgIGNvbnN0IGd1aWQgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KEZhY2lsaXR5U3RhdGUuZ3VpZCk7XG4gICAgY29uc3QgcGFya0lkID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChGYWNpbGl0eVN0YXRlLnBhcmtJZCk7XG5cbiAgICBpZiAoISFndWlkICYmIHBhcmtJZCA+PSAwKSB7XG4gICAgICBtZW51SXRlbSA9IHRoaXMuZ2V0QWN0aXZlTWVudUZhY2lsaXR5KG1lbnVJdGVtcywgcGFya0lkLCBndWlkKTtcbiAgICAgIGlmICghbWVudUl0ZW0pIHtcbiAgICAgICAgbWVudUl0ZW0gPSB0aGlzLmdldEFjdGl2ZU1lbnVGYWNpbGl0eUNoaWxkKG1lbnVJdGVtcywgcGFya0lkLCBndWlkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIW1lbnVJdGVtKSB7XG4gICAgICBtZW51SXRlbSA9IHRoaXMuZ2V0Rmlyc3RNZW51SXRlbUZhY2lsaXR5KG1lbnVJdGVtcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1lbnVJdGVtPy5yb3V0ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXREZWZhdWx0RmFjaWxpdHlSb3V0ZSgpIHtcbiAgICBjb25zdCBtZW51SXRlbXMgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KFNpZGVuYXZTdGF0ZS5tZW51SXRlbXMpO1xuICAgIHJldHVybiB0aGlzLmdldERlZmF1bHRGYWNpbGl0eVJvdXRlQnlNZW51SXRlbXMobWVudUl0ZW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRGYWNpbGl0eURpY3Rpb25hcnkkKCk6IE9ic2VydmFibGU8RmFjaWxpdHlEaWN0aW9uYXJ5PiB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2VsZWN0KEZhY2lsaXR5U3RhdGUuZmFjaWxpdHlEaWN0aW9uYXJ5KS5waXBlKFxuICAgICAgZmlsdGVyKGZhY2lsaXR5RGljdGlvbmFyeSA9PiBPYmplY3Qua2V5cyhmYWNpbGl0eURpY3Rpb25hcnkpLmxlbmd0aCA+IDApLFxuICAgICAgZmlyc3QoKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldEFjdGl2ZU1lbnVGYWNpbGl0eSA9IChtZW51SXRlbXM6IE1lbnVJdGVtW10sIHBhcmtJZDogbnVtYmVyLCBndWlkOiBzdHJpbmcpID0+XG4gICAgbWVudUl0ZW1zLmZpbmQobWVudUl0ZW0gPT4gbWVudUl0ZW0ucHJvcGVydGllcy5ndWlkID09PSBndWlkICYmIG1lbnVJdGVtLmlkID09PSBwYXJrSWQpO1xuXG4gIHByaXZhdGUgZ2V0QWN0aXZlTWVudUZhY2lsaXR5Q2hpbGQobWVudUl0ZW1zOiBNZW51SXRlbVtdLCBwYXJrSWQ6IG51bWJlciwgZ3VpZDogc3RyaW5nKSB7XG4gICAgY29uc3QgbXVsdGlGYWNpbGl0eVBhcmVudElEID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChGYWNpbGl0eVN0YXRlLm11bHRpUGFya1BhcmVudElEKTtcbiAgICBjb25zdCBtZW51SXRlbVBhcmVudCA9IG1lbnVJdGVtcy5maW5kKG1lbnVJdGVtID0+IG1lbnVJdGVtLnByb3BlcnRpZXMuZ3VpZCA9PT0gZ3VpZCAmJiBtZW51SXRlbS5pZCA9PT0gbXVsdGlGYWNpbGl0eVBhcmVudElEKTtcbiAgICBjb25zdCBtZW51SXRlbSA9IG1lbnVJdGVtUGFyZW50Py5jaGlsZHJlbi5maW5kKG1lbnVJdGVtID0+IG1lbnVJdGVtLmlkID09PSBwYXJrSWQpO1xuICAgIHJldHVybiBtZW51SXRlbTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Rmlyc3RNZW51SXRlbUZhY2lsaXR5KG1lbnVJdGVtczogTWVudUl0ZW1bXSkge1xuICAgIC8vIHdlIHNvcnQgYnkgbmFtZSAodGhlIGRlZmF1bHQgbWVudSBpdGVtIHNvcnQgcHJvcGVydHkpIGFuZCByb3V0ZSB0byB0aGUgZmlyc3QgbWVudSBpdGVtXG4gICAgY29uc3Qgc29ydFByb3BlcnR5ID0gREVGQVVMVF9TT1JUX01FTlUgPT09IFNpZGVOYXZTb3J0QnkucGFya2luZ19sb3Rfc29ydF9ieV9uYW1lX2FfeiA/ICduYW1lJyA6ICdzaXRlY29kZSc7XG4gICAgY29uc3QgZmlyc3RNZW51SXRlbSA9IGNsb25lRGVlcChtZW51SXRlbXMpLnNvcnQoKGEsIGIpID0+IGFbc29ydFByb3BlcnR5XSA+IGJbc29ydFByb3BlcnR5XSA/IDEgOiAtMSlbMF07XG4gICAgcmV0dXJuIGZpcnN0TWVudUl0ZW07XG4gIH1cbn1cbiJdfQ==
|
|
@@ -790,8 +790,8 @@ let FacilityState = class FacilityState {
|
|
|
790
790
|
this.localStorageService.setItem(DYNAMIC_PRICING_CONDITION, JSON.stringify(dynamicPricingConditionsMap));
|
|
791
791
|
}
|
|
792
792
|
}
|
|
793
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
794
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.
|
|
793
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FacilityState, deps: [{ token: i1.Store }, { token: i2.BaseFacilityCommandsConfigService }, { token: i3.LocalStorageService }, { token: i4.FacilityMenuService }, { token: i5.FacilityRpcServiceProxy }, { token: i6.Rpc.RemoteCommandRpcServiceProxy }, { token: i5.GroupRpcServiceProxy }, { token: i5.CategoryRpcServiceProxy }, { token: i5.JobTitleRpcServiceProxy }, { token: i5.ZoneRpcServiceProxy }, { token: i5.ZRpcServiceProxy }, { token: i7.GlobalErrorService }, { token: i8.CommandNotificationService }, { token: i9.TranslateService }, { token: i10.AppConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
794
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FacilityState }); }
|
|
795
795
|
};
|
|
796
796
|
__decorate([
|
|
797
797
|
Action(ClearFacilityDictionaryAction)
|
|
@@ -977,7 +977,7 @@ FacilityState = FacilityState_1 = __decorate([
|
|
|
977
977
|
})
|
|
978
978
|
], FacilityState);
|
|
979
979
|
export { FacilityState };
|
|
980
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
980
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FacilityState, decorators: [{
|
|
981
981
|
type: Injectable
|
|
982
982
|
}], ctorParameters: () => [{ type: i1.Store }, { type: i2.BaseFacilityCommandsConfigService }, { type: i3.LocalStorageService }, { type: i4.FacilityMenuService }, { type: i5.FacilityRpcServiceProxy }, { type: i6.Rpc.RemoteCommandRpcServiceProxy }, { type: i5.GroupRpcServiceProxy }, { type: i5.CategoryRpcServiceProxy }, { type: i5.JobTitleRpcServiceProxy }, { type: i5.ZoneRpcServiceProxy }, { type: i5.ZRpcServiceProxy }, { type: i7.GlobalErrorService }, { type: i8.CommandNotificationService }, { type: i9.TranslateService }, { type: i10.AppConfigService }], propDecorators: { onClearFacilityDictionary: [], onSetSmartparkBasicAllAction: [], onSetSmartparkBasicAction: [], onLoadParkingLotAction: [], onLoadRemoteCommandsRefAction: [], onLoadFacilityRemoteCommandsRefAction: [], onLoadFacilityAction: [], onUnloadParkingLotAction: [], onSetDeviceRemoteCommandsMapAction: [], onSetFacilityRemoteCommandsMapAction: [], onZoneChangedAction: [], onServicesRunningStatusChangedAction: [], onFacilityChangedAction: [], onSetBasicMenuAction: [], onLoadAccountManagementGuestGroupsAction: [], onLoadReportsGuestGroupsAction: [], onLoadCategoriesAction: [], onLoadReportsJobTitlesAction: [], onLoadAccountManagementJobTitlesAction: [], onLoadReportsZonesAction: [], onLoadAccessProfileZZonesAction: [], onLoadCcMainZonesAction: [], onLoadZsAction: [], onClearGroupsAction: [], onClearCategoriesAction: [], onClearJobTitlesAction: [], onClearZonesAction: [], onClearZsAction: [], onSetSelectedParkAction: [], onClearSelectedFacilityAction: [], onClearInactiveSelectedParkAction: [], onFacilityRemoteCommandExecutedAction: [], onLoadMacroCommandsAction: [], onClearMacroCommandsAction: [] } });
|
|
983
983
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjaWxpdHkuc3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtc2hhcmVkLWxpYi9zcmMvbGlicmFyaWVzL21vZHVsZXMvZmFjaWxpdHkvZmFjaWxpdHkuc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBdUIsTUFBTSxhQUFhLENBQUM7QUFDM0UsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDMUMsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBYyxFQUFFLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFbEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDdEYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDOUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ2xHLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRWxGLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsU0FBUyxFQUE4QixlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUVySSxPQUFPLEVBQzRELFdBQVcsRUFDNUUsMEJBQTBCLEVBQ2dDLFNBQVMsRUFBRSwrQkFBK0IsRUFFckcsTUFBTSx5Q0FBeUMsQ0FBQztBQUtqRCxPQUFPLEVBQUUsUUFBUSxFQUF3QixNQUFNLHVCQUF1QixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFLckUsT0FBTyxFQUNMLHFCQUFxQixFQUFFLDZCQUE2QixFQUFFLGlCQUFpQixFQUFFLCtCQUErQixFQUFFLG9CQUFvQixFQUM5SCx3QkFBd0IsRUFBRSwyQkFBMkIsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUscUJBQXFCLEVBQUUsbUNBQW1DLEVBQ2xKLDRCQUE0QixFQUFFLHFDQUFxQyxFQUFFLG9DQUFvQyxFQUN6RyxvQkFBb0IsRUFBRSxxQkFBcUIsRUFBRSxrQkFBa0IsRUFBRSxtQ0FBbUMsRUFBRSx1QkFBdUIsRUFDN0gsb0JBQW9CLEVBQUUsMkJBQTJCLEVBQUUsMkJBQTJCLEVBQUUsMEJBQTBCLEVBQUUsc0JBQXNCLEVBQ2xJLFlBQVksRUFBRSxrQ0FBa0MsRUFBRSxrQkFBa0IsRUFBRSxnQ0FBZ0MsRUFBRSxrQ0FBa0MsRUFDMUkscUJBQXFCLEVBQUUsdUJBQXVCLEVBQUUsMEJBQTBCLEVBQUUsc0JBQXNCLEVBQUUsaUJBQWlCLEVBQ3RILE1BQU0sb0JBQW9CLENBQUM7QUFFNUIsSUFBTyw4QkFBOEIsR0FBRyxHQUFHLENBQUMsOEJBQThCLENBQUM7Ozs7Ozs7Ozs7OztBQXVCM0UsTUFBTSxRQUFRLEdBQUc7SUFDZixJQUFJLEVBQUUsRUFBRTtJQUNSLE1BQU0sRUFBRSxJQUFJO0lBQ1osMEJBQTBCLEVBQUUsRUFBRTtJQUM5QixpQkFBaUIsRUFBRSxTQUFTO0lBQzVCLFFBQVEsRUFBRSxJQUFJO0lBQ2QsVUFBVSxFQUFFLEVBQUU7SUFDZCwrQkFBK0IsRUFBRSxFQUFFO0lBQ25DLFFBQVEsRUFBRSxFQUFFO0lBQ1osOEJBQThCLEVBQUUsRUFBRTtJQUNsQyxnQ0FBZ0MsRUFBRSxFQUFFO0lBQ3BDLE1BQU0sRUFBRSxJQUFJO0lBQ1osVUFBVSxFQUFFLElBQUk7SUFDaEIsU0FBUyxFQUFFLElBQUk7SUFDZixLQUFLLEVBQUUsSUFBSTtJQUNYLENBQUMsRUFBRSxJQUFJO0lBQ1AsY0FBYyxFQUFFLEVBQUU7SUFDbEIsMEJBQTBCLEVBQUUsRUFBRTtJQUM5QixhQUFhLEVBQUUsRUFBRTtDQUNsQixDQUFDO0FBT0ssSUFBTSxhQUFhLEdBQW5CLE1BQU0sYUFBYTs7SUFFeEIsWUFDVSxLQUFZLEVBQ1osNkJBQWdFLEVBQ2hFLG1CQUF3QyxFQUN4QyxtQkFBd0MsRUFDeEMsb0JBQTZDLEVBQzdDLDRCQUE4RCxFQUM5RCxvQkFBMEMsRUFDMUMsb0JBQTZDLEVBQzdDLHVCQUFnRCxFQUNoRCxtQkFBd0MsRUFDeEMsZ0JBQWtDLEVBQ2xDLGtCQUFzQyxFQUN0QywwQkFBc0QsRUFDdEQsZ0JBQWtDLEVBQ2xDLFNBQTJCO1FBZDNCLFVBQUssR0FBTCxLQUFLLENBQU87UUFDWixrQ0FBNkIsR0FBN0IsNkJBQTZCLENBQW1DO1FBQ2hFLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4Qyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXlCO1FBQzdDLGlDQUE0QixHQUE1Qiw0QkFBNEIsQ0FBa0M7UUFDOUQseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQUMxQyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXlCO1FBQzdDLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7UUFDaEQsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsK0JBQTBCLEdBQTFCLDBCQUEwQixDQUE0QjtRQUN0RCxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBNnZCN0IsaUJBQVksR0FBRyxDQUFDLEdBQXFDLEVBQUUsSUFBWSxFQUFFLE1BQWMsRUFBRSxFQUFFLENBQzdGLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxLQUFLLE1BQU0sSUFBSSxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQztJQTV2QnpFLENBQUM7SUFHYSxBQUFQLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBeUI7UUFDOUMsT0FBTyxLQUFLLENBQUMsUUFBUSxDQUFDO0lBQ3hCLENBQUM7SUFHYSxBQUFQLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBeUI7UUFDN0MsT0FBTyxLQUFLLENBQUMsUUFBUSxDQUFDLGlCQUFpQixHQUFHLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBR2EsQUFBUCxNQUFNLENBQUMsa0JBQWtCLENBQUMsS0FBeUI7UUFDeEQsT0FBTyxLQUFLLENBQUMsUUFBUSxFQUFFLGtCQUFrQixDQUFDO0lBQzVDLENBQUM7SUFHYSxBQUFQLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBeUI7UUFDcEQsT0FBTyxLQUFLLENBQUMsY0FBYyxDQUFDO0lBQzlCLENBQUM7SUFHYSxBQUFQLE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FBeUI7UUFDakQsT0FBTyxLQUFLLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQztJQUNyQyxDQUFDO0lBR2EsQUFBUCxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQXlCO1FBQzlDLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQztJQUNyQixDQUFDO0lBR2EsQUFBUCxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQWdCO1FBQ2xDLE9BQU8sS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLDBCQUEwQixDQUFDLENBQUM7SUFDbEYsQ0FBQztJQUdhLEFBQVAsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFnQjtRQUN2QyxPQUFPLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFHYSxBQUFQLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBeUI7UUFDOUMsT0FBTyxLQUFLLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQztJQUNuQyxDQUFDO0lBR2EsQUFBUCxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQXlCO1FBQy9DLE9BQU8sS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUM7SUFDbEMsQ0FBQztJQUdhLEFBQVAsTUFBTSxDQUFDLHVCQUF1QixDQUFDLEtBQXlCO1FBQzdELE9BQU8sS0FBSyxDQUFDLDBCQUEwQixDQUFDO0lBQzFDLENBQUM7SUFHYSxBQUFQLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBeUI7UUFDMUMsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDO0lBQ3BCLENBQUM7SUFHYSxBQUFQLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBeUI7UUFDNUMsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQ3RCLENBQUM7SUFHYSxBQUFQLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxLQUF5QjtRQUN2RCxPQUFPLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztJQUNqQyxDQUFDO0lBR2EsQUFBUCxNQUFNLENBQUMsa0JBQWtCLENBQUMsS0FBeUI7UUFDeEQsT0FBTyxLQUFLLENBQUMsVUFBVSxDQUFDO0lBQzFCLENBQUM7SUFHYSxBQUFQLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxLQUF5QjtRQUNoRSxPQUFPLEtBQUssQ0FBQywwQkFBMEIsQ0FBQztJQUMxQyxDQUFDO0lBR2EsQUFBUCxNQUFNLENBQUMsK0JBQStCLENBQUMsS0FBeUI7UUFDckUsT0FBTyxLQUFLLENBQUMsK0JBQStCLENBQUM7SUFDL0MsQ0FBQztJQUdhLEFBQVAsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUF5QjtRQUM5QyxPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUM7SUFDeEIsQ0FBQztJQUdhLEFBQVAsTUFBTSxDQUFDLGdDQUFnQyxDQUFDLEtBQXlCO1FBQ3RFLE9BQU8sS0FBSyxDQUFDLDhCQUE4QixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLDhCQUE4QixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNoSSxDQUFDO0lBR2EsQUFBUCxNQUFNLENBQUMsa0NBQWtDLENBQUMsS0FBeUI7UUFDeEUsT0FBTyxLQUFLLENBQUMsZ0NBQWdDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsZ0NBQWdDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3BJLENBQUM7SUFHYSxBQUFQLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBeUI7UUFDNUMsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQ3RCLENBQUM7SUFHYSxBQUFQLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBeUI7UUFDaEQsT0FBTyxLQUFLLENBQUMsVUFBVSxDQUFDO0lBQzFCLENBQUM7SUFHYSxBQUFQLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBeUI7UUFDL0MsT0FBTyxLQUFLLENBQUMsU0FBUyxDQUFDO0lBQ3pCLENBQUM7SUFHYSxBQUFQLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBeUI7UUFDdkMsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2pCLENBQUM7SUFHYSxBQUFQLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBeUI7UUFDbkQsT0FBTyxLQUFLLENBQUMsYUFBYSxDQUFDO0lBQzdCLENBQUM7SUFHRCx5QkFBeUIsQ0FBQyxHQUFxQyxFQUFFLENBQWdDO1FBQy9GLEdBQUcsQ0FBQyxVQUFVLENBQUM7WUFDYixVQUFVLEVBQUUsRUFBRTtTQUNmLENBQUMsQ0FBQztJQUNMLENBQUM7SUFHRCw0QkFBNEIsQ0FBQyxHQUFxQyxFQUFFLE1BQWtDO1FBQ3BHLE1BQU0sZUFBZSxHQUF3QixNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDdEcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLGtCQUFrQixDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzdELE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFHRCx5QkFBeUIsQ0FBQyxHQUFxQyxFQUFFLE1BQStCO1FBQzlGLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLGdCQUFnQixFQUFFLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBR0Qsc0JBQXNCLENBQUMsR0FBcUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQXdCO1FBQzFHLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2hFLE1BQU0sa0JBQWtCLEdBQUcsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLFVBQVUsQ0FBQztRQUNyRCxNQUFNLFFBQVEsR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUVwRixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDZCxPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sY0FBYyxHQUFHLHFDQUFxQyxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBRTFGLEdBQUcsQ0FBQyxVQUFVLENBQUM7WUFDYixNQUFNO1lBQ04sSUFBSTtZQUNKLGlCQUFpQixFQUFFLFFBQVEsQ0FBQyxpQkFBaUI7WUFDN0MsUUFBUTtZQUNSLEtBQUssRUFBRSxRQUFRLENBQUMsS0FBSztZQUNyQixjQUFjO1NBQ2YsQ0FBQyxDQUFDO1FBRUgsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEtBQUssU0FBUyxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3ZFLE9BQU8sR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMxRyxDQUFDO0lBQ0gsQ0FBQztJQUdELDZCQUE2QixDQUFDLEdBQXFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUErQjtRQUN4SCxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUVoRSx3RUFBd0U7UUFDeEUsTUFBTSxvQkFBb0IsR0FBRyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsOEJBQThCLENBQUM7UUFDM0UsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUN2RSxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFFbkcsT0FBTyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLEVBQUU7Z0JBQ3JELEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxnQ0FBZ0MsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDM0YsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNOLENBQUM7SUFDSCxDQUFDO0lBR0QscUNBQXFDLENBQUMsR0FBcUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQXVDO1FBQ3hJLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRWhFLHdFQUF3RTtRQUN4RSxNQUFNLG9CQUFvQixHQUFHLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxnQ0FBZ0MsQ0FBQztRQUM3RSxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ3ZFLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLDRCQUE0QixDQUFDLHlCQUF5QixDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztZQUVyRyxJQUFJLGtCQUFrQixFQUFFLENBQUM7Z0JBQ3ZCLE9BQU8sa0JBQWtCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO29CQUNyRCxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksa0NBQWtDLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO2dCQUM3RixDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ04sQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBR0Qsb0JBQW9CLENBQUMsR0FBcUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBc0I7UUFDdEgsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNoQixNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ2pGLE9BQU8sa0JBQWtCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsRUFBRTtnQkFDakQsTUFBTSxRQUFRLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDO2dCQUNuRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEYsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNOLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDMUUsT0FBTyxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRTtnQkFDdkMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDckUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNOLENBQUM7SUFDSCxDQUFDO0lBR0Qsd0JBQXdCLENBQUMsR0FBcUMsRUFBRSxNQUE4QjtRQUM1RixHQUFHLENBQUMsVUFBVSxDQUFDO1lBQ2IsSUFBSSxFQUFFLEVBQUU7WUFDUixNQUFNLEVBQUUsSUFBSTtZQUNaLFFBQVEsRUFBRSxJQUFJO1lBQ2QsS0FBSyxFQUFFLElBQUk7WUFDWCxjQUFjLEVBQUUsRUFBRTtTQUNuQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBR0Qsa0NBQWtDLENBQUMsR0FBcUMsRUFBRSxNQUF3QztRQUNoSCxNQUFNLDhCQUE4QixHQUFHLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyw4QkFBOEIsQ0FBQztRQUNyRixJQUFJLENBQUMsOEJBQThCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDakQsOEJBQThCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNuRCxDQUFDO1FBQ0QsOEJBQThCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoRyxHQUFHLENBQUMsVUFBVSxDQUFDO1lBQ2IsOEJBQThCO1NBQy9CLENBQUMsQ0FBQztJQUNMLENBQUM7SUFHRCxvQ0FBb0MsQ0FBQyxHQUFxQyxFQUFFLE1BQTBDO1FBQ3BILE1BQU0sZ0NBQWdDLEdBQUcsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLGdDQUFnQyxDQUFDO1FBQ3pGLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNuRCxnQ0FBZ0MsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3JELENBQUM7UUFDRCxnQ0FBZ0MsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xHLEdBQUcsQ0FBQyxVQUFVLENBQUM7WUFDYixnQ0FBZ0M7U0FDakMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUdELG1CQUFtQixDQUFDLEdBQXFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFxQjtRQUM1RixNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDO1FBQ3pDLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssTUFBTSxDQUFDLENBQUM7UUFDbkcsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDO1FBQ3BFLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBRTlDLFFBQVEsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3ZCLEtBQUssU0FBUyxDQUFDLDBCQUEwQjtnQkFDdkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO2dCQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO2dCQUM5QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzlCLE1BQU07WUFFUixLQUFLLFNBQVMsQ0FBQywwQkFBMEI7Z0JBQ3ZDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztnQkFDOUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO2dCQUNoQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztnQkFDOUMsTUFBTTtZQUVSO2dCQUNFLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztnQkFDOUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDO2dCQUNwRSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztnQkFDOUMsTUFBTTtRQUNWLENBQUM7UUFFRCxRQUFRLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUNqQyxRQUFRLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFdkMsTUFBTSxrQkFBa0IsR0FBRyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsVUFBVSxDQUFDO1FBQ3JELE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUM7UUFDakMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDO1FBRTdELEdBQUcsQ0FBQyxVQUFVLENBQUM7WUFDYixVQUFVLEVBQUUsa0JBQWtCO1lBQzlCLFFBQVE7WUFDUixLQUFLLEVBQUUsUUFBUSxDQUFDLEtBQUs7U0FDdEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGtCQUFrQixDQUFDLElBQWE7UUFDOUIsSUFBSSxDQUFDO1lBQ0gsSUFBSSxJQUFJLEVBQUUsMkJBQTJCLEVBQUUsQ0FBQztnQkFDdEMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsQ0FBQztnQkFDaEUsTUFBTSx1QkFBdUIsR0FBRyxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFFbEUsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsdUJBQXVCLENBQUMsRUFBRSxDQUFDO29CQUM1QyxNQUFNLElBQUksS0FBSyxDQUFDLHFEQUFxRCxDQUFDLENBQUM7Z0JBQ3pFLENBQUM7Z0JBRUQsSUFBSSxDQUFDLDJCQUEyQixHQUFHLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQU8sRUFBRSxFQUFFO29CQUN6RSxNQUFNLDhCQUE4QixHQUFHLElBQUksOEJBQThCLEVBQUUsQ0FBQztvQkFDNUUsOEJBQThCLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUM7b0JBQ3BELDhCQUE4QixDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO29CQUNoRCw4QkFBOEIsQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQztvQkFDaEUsT0FBTyw4QkFBOEIsQ0FBQztnQkFDeEMsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1lBRUQsSUFBSSxJQUFJLEVBQUUsNEJBQTRCLEVBQUUsQ0FBQztnQkFDdkMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsNEJBQTRCLENBQUMsQ0FBQztnQkFDakUsTUFBTSx3QkFBd0IsR0FBRyxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFFbkUsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsd0JBQXdCLENBQUMsRUFBRSxDQUFDO29CQUM3QyxNQUFNLElBQUksS0FBSyxDQUFDLHNEQUFzRCxDQUFDLENBQUM7Z0JBQzFFLENBQUM7Z0JBRUQsSUFBSSxDQUFDLDRCQUE0QixHQUFHLHdCQUF3QixDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQU8sRUFBRSxFQUFFO29CQUMzRSxNQUFNLCtCQUErQixHQUFHLElBQUksK0JBQStCLEVBQUUsQ0FBQztvQkFDOUUsK0JBQStCLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUM7b0JBQ3JELCtCQUErQixDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO29CQUNqRCwrQkFBK0IsQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDLGNBQWMsQ0FBQztvQkFDbkUsT0FBTywrQkFBK0IsQ0FBQztnQkFDekMsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixPQUFPLENBQUMsS0FBSyxDQUFDLG1DQUFtQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzFELElBQUksQ0FBQyw0QkFBNEIsR0FBRyxFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLDJCQUEyQixHQUFHLEVBQUUsQ0FBQztRQUN4QyxDQUFDO0lBQ0gsQ0FBQztJQUdELG9DQUFvQyxDQUFDLEdBQXFDLEVBQ3hFLEVBQUUscUJBQXFCLEVBQUUsSUFBSSxFQUFzQztRQUNuRSxNQUFNLCtCQUErQixHQUFHLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQywrQkFBK0IsQ0FBQztRQUN2RixNQUFNLGtCQUFrQixHQUFHLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxVQUFVLENBQUM7UUFDckQscUJBQXFCLEdBQUcsSUFBSSxDQUFDLCtCQUErQixDQUFDLCtCQUErQixDQUFDLElBQUksQ0FBQyxFQUFFLHFCQUFxQixDQUFDLENBQUM7UUFDM0gsK0JBQStCLENBQUMsSUFBSSxDQUFDLEdBQUcscUJBQXFCLENBQUM7UUFDOUQsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLCtCQUErQixFQUFFLENBQUMsQ0FBQztRQUVwRCwwQ0FBMEM7UUFDMUMsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sMEJBQTBCLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1lBQ3hGLE1BQU0sVUFBVSxHQUFrQixNQUFNLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDMUUsS0FBSyxNQUFNLFFBQVEsSUFBSSxVQUFVLEVBQUUsQ0FBQztnQkFDbEMsMEJBQTBCLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLHFCQUFxQixFQUFFLGtCQUFrQixDQUFDLENBQUM7WUFDN0osQ0FBQztZQUNELEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSwwQkFBMEIsRUFBRSxDQUFDLENBQUM7UUFDakQsQ0FBQztRQUVELElBQUksQ0FBQyxtQ0FBbUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBR0QsdUJBQXVCLENBQUMsR0FBcUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQXlCO1FBQ3RHLE1BQU0sa0JBQWtCLEdBQUcsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLFVBQVUsQ0FBQztRQUNyRCxNQUFNLGdCQUFnQixHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNqRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUN0QixPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMxRSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEdBQUcsaUJBQWlCLENBQUM7UUFFMUQsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxTQUFTLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFOUQsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDOUMsR0FBRyxDQUFDLFVBQVUsQ0FBQztnQkFDYixRQUFRLEVBQUUsaUJBQWlCO2FBQzVCLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCwwQ0FBMEM7UUFDMUMsTUFBTSwwQkFBMEIsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDeEYsTUFBTSwrQkFBK0IsR0FBRyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsK0JBQStCLENBQUM7UUFDdkYsTUFBTSxVQUFVLEdBQWtCLE1BQU0sQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUMxRSxLQUFLLE1BQU0sUUFBUSxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2xDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsdUJBQXVCLENBQUMsSUFBSSxFQUFFLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRSwrQkFBK0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBQzFNLENBQUM7UUFDRCxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsMEJBQTBCLEVBQUUsQ0FBQyxDQUFDO1FBRS9DLElBQUksQ0FBQyxtQ0FBbUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBR0Qsb0JBQW9CLENBQUMsR0FBcUMsRUFBRSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQXNCO1FBQ3pHLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxZQUFZLEVBQUUsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQzlILENBQUM7SUFHRCx3Q0FBd0MsQ0FBQyxHQUFxQyxFQUFFLE1BQTZDO1FBQzNILE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxlQUFlLEVBQUUsVUFBVSxFQUN2SCxNQUFNLENBQUMsZUFBZSxFQUFFLFVBQVUsRUFBRSxNQUFNLENBQUMsZUFBZSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQzFFLE1BQU0sQ0FBQyxlQUFlLEVBQUUsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRWxELE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDbEMsR0FBRyxDQUFDLFVBQVUsQ0FBQztnQkFDYixNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUk7YUFDcEIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFHRCw4QkFBOEIsQ0FBQyxHQUFxQyxFQUFFLE1BQW1DO1FBQ3ZHLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxlQUFlLEVBQUUsVUFBVSxFQUN2SCxNQUFNLENBQUMsZUFBZSxFQUFFLFVBQVUsRUFBRSxNQUFNLENBQUMsZUFBZSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQzFFLE1BQU0sQ0FBQyxlQUFlLEVBQUUsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRWxELE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDbEMsR0FBRyxDQUFDLFVBQVUsQ0FBQztnQkFDYixNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUk7YUFDcEIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFHRCxzQkFBc0IsQ0FBQyxHQUFxQyxFQUFFLE1BQTRCO1FBQ3hGLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxlQUFlLEVBQUUsVUFBVSxFQUMzSCxNQUFNLENBQUMsZUFBZSxFQUFFLFVBQVUsRUFBRSxNQUFNLENBQUMsZUFBZSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQzFFLE1BQU0sQ0FBQyxlQUFlLEVBQUUsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2xELE9BQU8sY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDMUMsR0FBRyxDQUFDLFVBQVUsQ0FBQztnQkFDYixVQUFVLEVBQUUsVUFBVSxDQUFDLElBQUk7YUFDNUIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFHRCw0QkFBNEIsQ0FBQyxHQUFxQyxFQUFFLE1BQWtDO1FBQ3BHLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxlQUFlLEVBQUUsVUFBVSxFQUM1SCxNQUFNLENBQUMsZUFBZSxFQUFFLFVBQVUsRUFBRSxNQUFNLENBQUMsZUFBZSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQzFFLE1BQU0sQ0FBQyxlQUFlLEVBQUUsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2xELE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDeEMsR0FBRyxDQUFDLFVBQVUsQ0FBQztnQkFDYixTQUFTLEVBQUUsU0FBUyxDQUFDLElBQUk7YUFDMUIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFHRCxzQ0FBc0MsQ0FBQyxHQUFxQyxFQUFFLE1BQTRDO1FBQ3hILE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxlQUFlLEVBQUUsVUFBVSxFQUM1SCxNQUFNLENBQUMsZUFBZSxFQUFFLFVBQVUsRUFBRSxNQUFNLENBQUMsZUFBZSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQzFFLE1BQU0sQ0FBQyxlQUFlLEVBQUUsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRWxELE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDeEMsR0FBRyxDQUFDLFVBQVUsQ0FBQztnQkFDYixTQUFTLEVBQUUsU0FBUyxDQUFDLElBQUk7YUFDMUIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFHRCx3QkFBd0IsQ0FBQyxHQUFxQyxFQUFFLE1BQThCO1FBQzVGLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLGVBQWUsRUFBRSxVQUFVLEVBQzlILE1BQU0sQ0FBQyxlQUFlLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxlQUFlLEVBQUUsT0FBTyxDQUFDLE1BQU0sRUFDMUUsTUFBTSxDQUFDLGVBQWUsRUFBRSxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFbEQsT0FBTyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNoQyxHQUFHLENBQUMsVUFBVSxDQUFDO2dCQUNiLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSTthQUNsQixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUdELCtCQUErQixDQUFDLEdBQXFDLEVBQUUsTUFBb0M7UUFDekcsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsZUFBZSxFQUFFLFVBQVUsRUFDOUgsTUFBTSxDQUFDLGVBQWUsRUFBRSxVQUFVLEVBQUUsTUFBTSxDQUFDLGVBQWUsRUFBRSxPQUFPLENBQUMsTUFBTSxFQUMxRSxNQUFNLENBQUMsZUFBZSxFQUFFLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUVsRCxPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2hDLEdBQUcsQ0FBQyxVQUFVLENBQUM7Z0JBQ2IsS0FBSyxFQUFFLEtBQUssQ0FBQyxJQUFJO2FBQ2xCLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBR0QsdUJBQXVCLENBQUMsR0FBcUMsRUFBRSxNQUE2QjtRQUMxRixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxlQUFlLEVBQUUsVUFBVSxFQUM5SCxNQUFNLENBQUMsZUFBZSxFQUFFLFVBQVUsRUFBRSxNQUFNLENBQUMsZUFBZSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQzFFLE1BQU0sQ0FBQyxlQUFlLEVBQUUsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRWxELE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDaEMsR0FBRyxDQUFDLFVBQVUsQ0FBQztnQkFDYixLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUk7YUFDbEIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFHRCxjQUFjLENBQUMsR0FBcUMsRUFBRSxNQUFvQjtRQUN4RSxHQUFHLENBQUMsVUFBVSxDQUFDO1lBQ2IsQ0FBQyxFQUFFLElBQUk7U0FDUixDQUFDLENBQUM7UUFFSCxNQUFNLFNBQVMsR0FBYyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDL0UsSUFBSSxNQUF1RCxDQUFDO1FBQzVELFFBQVEsSUFBSSxFQUFFLENBQUM7WUFDYixLQUFLLFNBQVMsS0FBSyxTQUFTLENBQUMsRUFBRTtnQkFDN0IsTUFBTSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxlQUFlLEVBQUUsVUFBVSxFQUNuRyxNQUFNLENBQUMsZUFBZSxFQUFFLFVBQVUsRUFBRSxNQUFNLENBQUMsZUFBZSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQzFFLE1BQU0sQ0FBQyxlQUFlLEVBQUUsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUNwRCxNQUFNO1lBRU4sS0FBSyxTQUFTLEtBQUssU0FBUyxDQUFDLE9BQU87Z0JBQ2xDLE1BQU0sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsZUFBZSxFQUFFLFVBQVUsRUFDeEcsTUFBTSxDQUFDLGVBQWUsRUFBRSxVQUFVLEVBQUUsTUFBTSxDQUFDLGVBQWUsRUFBRSxPQUFPLENBQUMsTUFBTSxFQUMxRSxNQUFNLENBQUMsZUFBZSxFQUFFLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFDcEQsTUFBTTtZQUVOO2dCQUNBLE9BQU8sQ0FBQyxHQUFHLENBQUMsOEJBQThCLENBQUMsQ0FBQztnQkFDNUMsTUFBTTtRQUNSLENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3pCLEdBQUcsQ0FBQyxVQUFVLENBQUM7Z0JBQ2IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJO2FBQ1YsQ0FBQyxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFHRCxtQkFBbUIsQ0FBQyxHQUFxQztRQUN2RCxHQUFHLENBQUMsVUFBVSxDQUFDO1lBQ2IsTUFBTSxFQUFFLElBQUk7U0FDYixDQUFDLENBQUM7SUFDTCxDQUFDO0lBR0QsdUJBQXVCLENBQUMsR0FBcUM7UUFDM0QsR0FBRyxDQUFDLFVBQVUsQ0FBQztZQUNiLFVBQVUsRUFBRSxJQUFJO1NBQ2pCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFHRCxzQkFBc0IsQ0FBQyxHQUFxQztRQUMxRCxHQUFHLENBQUMsVUFBVSxDQUFDO1lBQ2IsU0FBUyxFQUFFLElBQUk7U0FDaEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUdELGtCQUFrQixDQUFDLEdBQXFDO1FBQ3RELEdBQUcsQ0FBQyxVQUFVLENBQUM7WUFDYixLQUFLLEVBQUUsSUFBSTtTQUNaLENBQUMsQ0FBQztJQUNMLENBQUM7SUFHRCxlQUFlLENBQUMsR0FBcUM7UUFDbkQsR0FBRyxDQUFDLFVBQVUsQ0FBQztZQUNiLENBQUMsRUFBRSxJQUFJO1NBQ1IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUdELHVCQUF1QixDQUFDLEdBQXFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUF5QjtRQUN0RyxNQUFNLGNBQWMsR0FBRyxxQ0FBcUMsQ0FBQyxRQUFRLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztRQUMzRixHQUFHLENBQUMsVUFBVSxDQUFDO1lBQ2IsSUFBSTtZQUNKLE1BQU0sRUFBRSxRQUFRLEVBQUUsRUFBRTtZQUNwQixpQkFBaUIsRUFBRSxRQUFRLEVBQUUsaUJBQWlCO1lBQzlDLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSztZQUN0QixjQUFjO1NBQ2YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUdELDZCQUE2QixDQUFDLEdBQXFDLEVBQUUsRUFBZ0M7UUFDbkcsR0FBRyxDQUFDLFVBQVUsQ0FBQztZQUNiLElBQUksRUFBRSxFQUFFO1lBQ1IsTUFBTSxFQUFFLElBQUk7WUFDWixpQkFBaUIsRUFBRSxJQUFJO1lBQ3ZCLFFBQVEsRUFBRSxJQUFJO1lBQ2QsS0FBSyxFQUFFLElBQUk7WUFDWCxjQUFjLEVBQUUsRUFBRTtTQUNuQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBR0QsaUNBQWlDLENBQUMsR0FBcUMsRUFBRSxNQUF1QztRQUM5RyxNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDO1FBRXpDLHdFQUF3RTtRQUN4RSwyRUFBMkU7UUFDM0UsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLElBQUksQ0FBQyxRQUFRLEVBQUUsV0FBVyxFQUFFLENBQUM7WUFDaEQsR0FBRyxDQUFDLFVBQVUsQ0FBQztnQkFDYixJQUFJLEVBQUUsRUFBRTtnQkFDUixNQUFNLEVBQUUsSUFBSTtnQkFDWixpQkFBaUIsRUFBRSxJQUFJO2dCQUN2QixRQUFRLEVBQUUsSUFBSTtnQkFDZCxLQUFLLEVBQUUsSUFBSTtnQkFDWCxjQUFjLEVBQUUsRUFBRTthQUNuQixDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUdELHFDQUFxQyxDQUFDLEdBQXFDLEVBQUUsRUFBRSwwQkFBMEIsRUFBdUM7UUFDOUksTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLFVBQVUsQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsQ0FBQywwQkFBMEIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUUvRyxNQUFNLGdCQUFnQixHQUFHLHFDQUFxQyxDQUFDLDBCQUEwQixDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDNUgsTUFBTSxNQUFNLEdBQThCO1lBQ3hDLFFBQVEsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixDQUFDLElBQUksRUFBRSxDQUFDO1lBQ25FLE9BQU8sRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDO1NBQ3pELENBQUM7UUFFRixJQUFJLDBCQUEwQixDQUFDLElBQUksS0FBSywwQkFBMEIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNqRixJQUFJLENBQUMsa0NBQWtDLENBQUMsMEJBQTBCLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDOUUsQ0FBQztRQUVELEVBQUUsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsMEJBQTBCLENBQUMsRUFBRTtZQUN6RSxPQUFPLDBCQUEwQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLDBCQUEwQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUM5SCxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsMEJBQTBCLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkUsQ0FBQztJQUdELHlCQUF5QixDQUFDLEdBQXFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUEyQjtRQUN4RyxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsNEJBQTRCLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRXhGLE9BQU8sY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDN0MsR0FBRyxDQUFDLFVBQVUsQ0FBQztnQkFDYixhQUFhLEVBQUUsYUFBYSxDQUFDLElBQUk7YUFDbEMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFHRCwwQkFBMEIsQ0FBQyxHQUFxQztRQUM5RCxHQUFHLENBQUMsVUFBVSxDQUFDO1lBQ2IsYUFBYSxFQUFFLEVBQUU7U0FDbEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGdCQUFnQixDQUFDLEdBQXFDLEVBQUUsSUFBWSxFQUFFLE1BQWMsRUFBRSxTQUFvQixFQUNoSCxRQUFxQixFQUFFLGFBQXdDO1FBQy9ELE1BQU0sMEJBQTBCLEdBQUcsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLDBCQUEwQixDQUFDO1FBQzdFLE1BQU0sa0JBQWtCLEdBQUcsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLFVBQVUsQ0FBQztRQUNyRCxNQUFNLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQztRQUUzQixJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ2xCLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQzlCLENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLE9BQU8sR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDO2dCQUMvRCxDQUFDLENBQUMsa0JBQWtCLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLGtCQUFrQixDQUFDO2dCQUN6RSxDQUFDLENBQUMsV0FBVyxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUM7Z0JBQzNELGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsK0JBQStCLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUN6RyxPQUFPLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN4QyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ04sUUFBUSxDQUFDLE9BQU8sR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDO1lBQ2pFLFFBQVEsQ0FBQyxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsa0JBQWtCLENBQUM7WUFDdkYsUUFBUSxDQUFDLFdBQVcsR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDO1lBQ3pFLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN0SCxDQUFDO1FBRUQsMEJBQTBCLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNyRixJQUFJLENBQUMseUJBQXlCLENBQUMsR0FBRyxFQUFFLDBCQUEwQixDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNwRyxDQUFDO0lBRU8sK0JBQStCLENBQUMsY0FBMkIsRUFBRSxnQkFBNkI7UUFDaEcsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUNwRCxnQkFBZ0IsQ0FBQyx3QkFBd0IsR0FBRyxnQkFBZ0IsQ0FBQyxZQUFZLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyx3QkFBd0IsSUFBSSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ25MLGdCQUFnQixDQUFDLGlDQUFpQyxHQUFHLGdCQUFnQixDQUFDLHFCQUFxQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxpQ0FBaUMsSUFBSSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ3ZOLGdCQUFnQixDQUFDLG1DQUFtQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMseUJBQXlCLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxtQ0FBbUMsSUFBSSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ25MLE9BQU8sZ0JBQWdCLENBQUM7SUFDMUIsQ0FBQztJQUVPLHNCQUFzQixDQUFDLEdBQXFDLEVBQUUsVUFBOEIsRUFBRSxRQUFxQixFQUFFLFNBQW9CO1FBQy9JLEdBQUcsQ0FBQyxVQUFVLENBQUM7WUFDYixVQUFVO1NBQ1gsQ0FBQyxDQUFDO1FBRUgsSUFBSSxTQUFTLEtBQUssU0FBUyxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQy9CLE1BQU0sY0FBYyxHQUFHLHFDQUFxQyxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQzFGLEdBQUcsQ0FBQyxVQUFVLENBQUM7Z0JBQ2IsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLEtBQUssRUFBRSxRQUFRLENBQUMsS0FBSztnQkFDckIsaUJBQWlCLEVBQUUsUUFBUSxDQUFDLGlCQUFpQjtnQkFDN0MsY0FBYzthQUNmLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRU8seUJBQXlCLENBQUMsR0FBcUMsRUFBRSwwQkFBc0Q7UUFDN0gsR0FBRyxDQUFDLFVBQVUsQ0FBQztZQUNiLDBCQUEwQjtTQUMzQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sdUJBQXVCLENBQUMsUUFBcUIsRUFBRSxTQUF3QjtRQUM3RSxPQUFPLFNBQVMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsaUNBQWlDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUNsRyxDQUFDO0lBRU8saUNBQWlDLENBQUMsUUFBcUI7UUFDN0Qsc0RBQXNEO1FBQ3RELElBQUksY0FBYyxHQUFXLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUN2QyxjQUFjLEdBQUcsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsY0FBYyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQyxFQUFFLENBQUMsY0FBYyxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRU8sK0JBQStCLENBQUMsNEJBQXNELEVBQUUsd0JBQWtEO1FBQ2hKLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDcEQsd0JBQXdCLENBQUMsOEJBQThCLEdBQUcsd0JBQXdCLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsNEJBQTRCLENBQUMsOEJBQThCLElBQUksZ0JBQWdCLENBQUM7UUFDak0sd0JBQXdCLENBQUMsa0NBQWtDLEdBQUcsd0JBQXdCLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsNEJBQTRCLENBQUMsa0NBQWtDLElBQUksZ0JBQWdCLENBQUM7UUFDN00sd0JBQXdCLENBQUMsK0JBQStCLEdBQUcsd0JBQXdCLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsNEJBQTRCLENBQUMsK0JBQStCLElBQUksZ0JBQWdCLENBQUM7UUFDcE0sd0JBQXdCLENBQUMsOEJBQThCLEdBQUcsd0JBQXdCLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsNEJBQTRCLENBQUMsOEJBQThCLElBQUksZ0JBQWdCLENBQUM7UUFDak0sT0FBTyx3QkFBd0IsQ0FBQztJQUNsQyxDQUFDO0lBRU8sY0FBYyxDQUFDLGNBQTJCLEVBQUUsZ0JBQTZCO1FBQy9FLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDcEQsSUFBSSxlQUFlLEdBQUcsSUFBSSxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDdEQsZUFBZSxDQUFDLElBQUksR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7UUFDN0MsZUFBZSxDQUFDLFlBQVksR0FBRyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUM7UUFDN0QsZUFBZSxDQUFDLGNBQWMsR0FBRyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUM7UUFDakUsZUFBZSxDQUFDLHFCQUFxQixHQUFHLGdCQUFnQixDQUFDLHFCQUFxQixDQUFDO1FBQy9FLGVBQWUsQ0FBQyx1QkFBdUIsR0FBRyxnQkFBZ0IsQ0FBQyx1QkFBdUIsQ0FBQztRQUNuRixlQUFlLENBQUMseUJBQXlCLEdBQUcsZ0JBQWdCLENBQUMseUJBQXlCLENBQUM7UUFDdkYsZUFBZSxDQUFDLFdBQVcsR0FBRyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUM7UUFDM0QsZUFBZSxDQUFDLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUM7UUFDdkQsZUFBZSxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDO1FBQ3JFLGVBQWUsQ0FBQyxxQkFBcUIsR0FBRyxnQkFBZ0IsQ0FBQyxxQkFBcUIsQ0FBQztRQUMvRSxlQUFlLENBQUMsTUFBTSxHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FBQztRQUNqRCxlQUFlLENBQUMsVUFBVSxHQUFHLGdCQUFnQixDQUFDLFVBQVUsQ0FBQztRQUN6RCxlQUFlLENBQUMsd0JBQXdCLEdBQUcsZ0JBQWdCLENBQUMsWUFBWSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsd0JBQXdCLElBQUksZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNsTCxlQUFlLENBQUMsaUNBQWlDLEdBQUcsZ0JBQWdCLENBQUMscUJBQXFCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLGlDQUFpQyxJQUFJLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDdE4sZUFBZSxDQUFDLG1DQUFtQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMseUJBQXlCLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxtQ0FBbUMsSUFBSSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ2xMLE9BQU8sZUFBZSxDQUFDO0lBQ3pCLENBQUM7SUFFTyxtQkFBbUI7UUFDekIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsZUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNELE1BQU0sMEJBQTBCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsZUFBYSxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDdkcsT0FBTyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxHQUFxQyxFQUFFLFlBQTBDLEVBQUUsa0JBQXNDLEVBQUUsU0FBb0I7UUFDdEssTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQztRQUN6QyxNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDckIsS0FBSyxNQUFNLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7WUFDN0MsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQy9CLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDNUcsQ0FBQztRQUVELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFLTyxlQUFlLENBQUMsY0FBaUMsRUFBRSxJQUFZLEVBQUUsT0FBZSxFQUFFLGtCQUFzQyxFQUFFLFNBQW9CO1FBQ3BKLE1BQU0sU0FBUyxHQUFlLEVBQUUsQ0FBQztRQUNqQyxjQUFjLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUN0QyxJQUFJLEdBQUcsQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDOUIsNENBQTRDO2dCQUM1QyxPQUFPO1lBQ1QsQ0FBQztZQUVELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsR0FBRyxFQUFFLGtCQUFrQixFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQ3hILFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRU8sbUNBQW1DLENBQUMsR0FBcUM7UUFDL0UsOENBQThDO1FBQzlDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN4RSxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxDQUFDLE9BQU8sS0FBSyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBQzlFLElBQUksYUFBYSxLQUFLLFNBQVMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNuQyxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDcEUsTUFBTSxrQkFBa0IsR0FBRyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsVUFBVSxDQUFDO1FBQ3JELE1BQU0sK0JBQStCLEdBQUcsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLCtCQUErQixDQUFDO1FBRXZGLEtBQUssTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQztZQUNqRSxNQUFNLFVBQVUsR0FBa0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN6RCxLQUFLLE1BQU0sUUFBUSxJQUFJLFVBQVUsRUFBRSxDQUFDO2dCQUNsQyxJQUFJLFFBQWtCLENBQUM7Z0JBRXZCLElBQUksUUFBUSxDQUFDLGlCQUFpQixHQUFHLENBQUMsRUFBRSxDQUFDO29CQUNuQyxRQUFRLEdBQUcsU0FBUzt5QkFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLEtBQUssSUFBSSxDQUFDLEVBQUUsUUFBUTt5QkFDdEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ2pELENBQUM7cUJBQU0sQ0FBQztvQkFDTixRQUFRLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsRUFBRSxLQUFLLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDL0YsQ0FBQztnQkFFRCxJQUFJLFFBQVEsRUFBRSxDQUFDO29CQUNiLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsK0JBQStCLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixDQUFDLENBQUM7b0JBQ3hJLFFBQVEsQ0FBQyxRQUFRLEdBQUcsVUFBVSxLQUFLLHlCQUF5QixDQUFDLFNBQVMsQ0FBQztvQkFDdkUsUUFBUSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7b0JBQ2pDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQztnQkFDaEMsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksY0FBYyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN4RSxDQUFDO0lBQ0gsQ0FBQztJQUVPLCtCQUErQixDQUFDLFlBQTBDLEVBQUUsa0JBQXNDO1FBQ3hILE1BQU0sK0JBQStCLEdBQXdDLEVBQUUsQ0FBQztRQUNoRixNQUFNLHVCQUF1QixHQUErQixFQUFFLENBQUM7UUFDL0QsS0FBSyxNQUFNLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7WUFDN0MsK0JBQStCLENBQUMsSUFBSSxDQUFDLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLHFCQUFxQixDQUFDO1lBQ2pGLHVCQUF1QixDQUFDLElBQUksQ0FBQyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxFQUFFO2dCQUN2RixNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxxQkFBcUIsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO2dCQUN0SixVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHO29CQUNuQixNQUFNLEVBQUUsb0JBQW9CLENBQUMsTUFBTTtvQkFDbkMsU0FBUyxFQUFFLG9CQUFvQixDQUFDLFNBQVM7aUJBQzFDLENBQUM7Z0JBQ0YsT0FBTyxVQUFVLENBQUM7WUFDcEIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ1QsQ0FBQztRQUVELE9BQU8sRUFBRSwrQkFBK0IsRUFBRSx1QkFBdUIsRUFBRSxDQUFDO0lBQ3RFLENBQUM7SUFFTywyQkFBMkIsQ0FBQyxZQUEwQztRQUM1RSxNQUFNLGtCQUFrQixHQUF1QixFQUFFLENBQUM7UUFDbEQsTUFBTSwwQkFBMEIsR0FBK0IsRUFBRSxDQUFDO1FBRWxFLEtBQUssTUFBTSxJQUFJLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1lBQzdDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUM5QixLQUFLLE1BQU0sR0FBRyxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDaEQsTUFBTSxJQUFJLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNqQixJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQztnQkFDekIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQztnQkFDakQsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUMsV0FBVyxDQUFDO2dCQUNuQyxJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQztnQkFDL0MsSUFBSSxDQUFDLHlCQUF5QixHQUFHLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQztnQkFDL0QsSUFBSSxDQUFDLG1DQUFtQyxHQUFHLEdBQUcsQ0FBQyxtQ0FBbUMsQ0FBQztnQkFDbkYsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQztnQkFDdkQsSUFBSSxDQUFDLHVCQUF1QixHQUFHLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQztnQkFDM0QsSUFBSSxDQUFDLGlDQUFpQyxHQUFHLEdBQUcsQ0FBQyxpQ0FBaUMsQ0FBQztnQkFDL0UsSUFBSSxDQUFDLGNBQWMsR0FBRyxHQUFHLENBQUMsY0FBYyxDQUFDO2dCQUN6QyxJQUFJLENBQUMsWUFBWSxHQUFHLEdBQUcsQ0FBQyxZQUFZLENBQUM7Z0JBQ3JDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxHQUFHLENBQUMsbUJBQW1CLENBQUM7Z0JBQ25ELElBQUksQ0FBQyx3QkFBd0IsR0FBRyxHQUFHLENBQUMsd0JBQXdCLENBQUM7Z0JBQzdELElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQztnQkFDM0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUMsV0FBVyxDQUFDO2dCQUNuQyxJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQyxTQUFTLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQztnQkFDakMsSUFBSSxDQUFDLGNBQWMsR0FBRyxHQUFHLENBQUMsY0FBYyxDQUFDO2dCQUN6QyxJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUM7Z0JBQ2pDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDMUMsQ0FBQztZQUVELGtDQUFrQztZQUNsQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkMsQ0FBQztRQUVELE9BQU8sRUFBRSxVQUFVLEVBQUUsa0JBQWtCLEVBQUUsMEJBQTBCLEVBQUUsQ0FBQztJQUN4RSxDQUFDO0lBRU8sc0JBQXNCLENBQUMsR0FBcUMsRUFBRSxVQUF3QztRQUM1Ryx3RUFBd0U7UUFDeEUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLEdBQUcsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3JFLFFBQVEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLFFBQVEsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQzdCLFFBQVEsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3pCLFFBQVEsQ0FBQyxpQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQztRQUUvQyxHQUFHLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXZCLE1BQU0sUUFBUSxHQUFzQixNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDdkYsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUNuQixPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVQLE1BQU0sRUFBRSxVQUFVLEVBQUUsMEJBQTBCLEVBQUUsR0FBRyxJQUFJLENBQUMsMkJBQTJCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFaEcsTUFBTSxZQUFZLEdBQWdDO1lBQ2hELFFBQVE7WUFDUixVQUFVO1lBQ1YsMEJBQTBCO1NBQzNCLENBQUM7UUFFRixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDbkQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUU7Z0JBQzFCLElBQUksRUFBRSxFQUFFO2dCQUNSLE1BQU0sRUFBRSxJQUFJO2dCQUNaLGlCQUFpQixFQUFFLElBQUk7Z0JBQ3ZCLFFBQVEsRUFBRSxJQUFJO2dCQUNkLEtBQUssRUFBRSxJQUFJO2dCQUNYLGNBQWMsRUFBRSxFQUFFO2FBQ25CLENBQUMsQ0FBQztRQUNMLENBQUM7UUFDRCxHQUFHLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRTdCLDZEQUE2RDtRQUM3RCxNQUFNLEVBQUUsK0JBQStCLEVBQUUsdUJBQXVCLEVBQUUsR0FBRyxJQUFJLENBQUMsK0JBQStCLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ2xJLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSwrQkFBK0IsRUFBRSwwQkFBMEIsRUFBRSx1QkFBdUIsRUFBRSxDQUFDLENBQUM7SUFDM0csQ0FBQztJQUVPLGtDQUFrQyxDQUFDLDBCQUFzRCxFQUFFLE1BQWlDO1FBQ2xJLE1BQU0sMkJBQTJCLEdBQTBDLElBQUksQ0FBQyxLQUFLLENBQ25GLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMseUJBQXlCLENBQUMsQ0FDNUQsSUFBSSxFQUFFLENBQUM7UUFFUixNQUFNLEdBQUcsR0FBK0IsMkJBQTJCLENBQUMsMEJBQTBCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNqSCxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ1IsTUFBTSxRQUFRLEdBQWdCLElBQUksQ0FBQztZQUNuQyxNQUFNLENBQUMsUUFBUSxHQUFHLENBQUMsR0FBRywwQkFBMEIsQ0FBQztZQUNqRCxNQUFNLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxvQ0FBb0MsQ0FDdkYsMEJBQTBCLENBQUMsYUFBYSxFQUN4QyxRQUFRLEVBQ1IsR0FBRyxDQUNKLENBQUM7WUFFRixxQ0FBcUM7WUFDckMsTUFBTSxZQUFZLEdBQW9CLElBQUksZUFBZSxFQUFFLENBQUM7WUFDNUQsWUFBWSxDQUFDLElBQUksR0FBRyxnQkFBZ0IsQ0FBQyx1QkFBdUIsQ0FBQztZQUM3RCxZQUFZLENBQUMsdUJBQXVCLEdBQUcsR0FBRyxDQUFDO1lBQzNDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUkseUJBQXlCLENBQUMsWUFBWSxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBRTNFLDJCQUEyQixDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztZQUNwRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUM5Qix5QkFBeUIsRUFDekIsSUFBSSxDQUFDLFNBQVMsQ0FBQywyQkFBMkIsQ0FBQyxDQUM1QyxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7K0dBcjhCVSxhQUFhO21IQUFiLGFBQWE7O0FBbUp4QjtJQURDLE1BQU0sQ0FBQyw2QkFBNkIsQ0FBQzs4REFLckM7QUFHRDtJQURDLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQztpRUFLbEM7QUFHRDtJQURDLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQzs4REFHL0I7QUFHRDtJQURDLE1BQU0sQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUFDOzJEQXdCekQ7QUFHRDtJQURDLE1BQU0sQ0FBQywyQkFBMkIsRUFBRSxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUFDO2tFQWFoRTtBQUdEO0lBREMsTUFBTSxDQUFDLG1DQUFtQyxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLENBQUM7MEVBZXhFO0FBR0Q7SUFEQyxNQUFNLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FBQzt5REFjdkQ7QUFHRDtJQURDLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQzs2REFTOUI7QUFHRDtJQURDLE1BQU0sQ0FBQyxnQ0FBZ0MsQ0FBQzt1RUFVeEM7QUFHRDtJQURDLE1BQU0sQ0FBQyxrQ0FBa0MsQ0FBQzt5RUFVMUM7QUFHRDtJQURDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQzt3REF3Q3pCO0FBNkNEO0lBREMsTUFBTSxDQUFDLGtDQUFrQyxDQUFDO3lFQW9CMUM7QUFHRDtJQURDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQzs0REE2QjdCO0FBR0Q7SUFEQyxNQUFNLENBQUMsa0JBQWtCLENBQUM7eURBRzFCO0FBR0Q7SUFEQyxNQUFNLENBQUMscUNBQXFDLENBQUM7NkVBVzdDO0FBR0Q7SUFEQyxNQUFNLENBQUMsMkJBQTJCLENBQUM7bUVBV25DO0FBR0Q7SUFEQyxNQUFNLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FBQzsyREFVekQ7QUFHRDtJQURDLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQztpRUFVbEM7QUFHRDtJQURDLE1BQU0sQ0FBQyxvQ0FBb0MsQ0FBQzsyRUFXNUM7QUFHRDtJQURDLE1BQU0sQ0FBQyxzQkFBc0IsRUFBRSxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUFDOzZEQVczRDtBQUdEO0lBREMsTUFBTSxDQUFDLDRCQUE0QixFQUFFLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLENBQUM7b0VBV2pFO0FBR0Q7SUFEQyxNQUFNLENBQUMscUJBQXFCLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FBQzs0REFXMUQ7QUFHRDtJQURDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FBQzttREErQmpEO0FBR0Q7SUFEQyxNQUFNLENBQUMsaUJBQWlCLENBQUM7d0RBS3pCO0FBR0Q7SUFEQyxNQUFNLENBQUMscUJBQXFCLENBQUM7NERBSzdCO0FBR0Q7SUFEQyxNQUFNLENBQUMsb0JBQW9CLENBQUM7MkRBSzVCO0FBR0Q7SUFEQyxNQUFNLENBQUMsZ0JBQWdCLENBQUM7dURBS3hCO0FBR0Q7SUFEQyxNQUFNLENBQUMsYUFBYSxDQUFDO29EQUtyQjtBQUdEO0lBREMsTUFBTSxDQUFDLHFCQUFxQixDQUFDOzREQVc3QjtBQUdEO0lBREMsTUFBTSxDQUFDLDJCQUEyQixDQUFDO2tFQVVuQztBQUdEO0lBREMsTUFBTSxDQUFDLCtCQUErQixDQUFDO3NFQWdCdkM7QUFHRDtJQURDLE1BQU0sQ0FBQyxtQ0FBbUMsQ0FBQzswRUFpQjNDO0FBR0Q7SUFEQyxNQUFNLENBQUMsdUJBQXVCLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FBQzs4REFTNUQ7QUFHRDtJQURDLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQzsrREFLaEM7QUFsb0JhO0lBRGIsUUFBUSxFQUFFO21DQUdWO0FBR2E7SUFEYixRQUFRLEVBQUU7a0NBR1Y7QUFHYTtJQURiLFFBQVEsRUFBRTs2Q0FHVjtBQUdhO0lBRGIsUUFBUSxFQUFFO3lDQUdWO0FBR2E7SUFEYixRQUFRLEVBQUU7c0NBR1Y7QUFHYTtJQURiLFFBQVEsRUFBRTttQ0FHVjtBQUdhO0lBRGIsUUFBUSxDQUFDLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dDQUdsQztBQUdhO0lBRGIsUUFBUSxDQUFDLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO3FDQUdsQztBQUdhO0lBRGIsUUFBUSxFQUFFO21DQUdWO0FBR2E7SUFEYixRQUFRLEVBQUU7b0NBR1Y7QUFHYTtJQURiLFFBQVEsRUFBRTtrREFHVjtBQUdhO0lBRGIsUUFBUSxFQUFFOytCQUdWO0FBR2E7SUFEYixRQUFRLEVBQUU7aUNBR1Y7QUFHYTtJQURiLFFBQVEsRUFBRTs0Q0FHVjtBQUdhO0lBRGIsUUFBUSxFQUFFOzZDQUdWO0FBR2E7SUFEYixRQUFRLEVBQUU7cURBR1Y7QUFHYTtJQURiLFFBQVEsRUFBRTswREFHVjtBQUdhO0lBRGIsUUFBUSxFQUFFO21DQUdWO0FBR2E7SUFEYixRQUFRLEVBQUU7MkRBR1Y7QUFHYTtJQURiLFFBQVEsRUFBRTs2REFHVjtBQUdhO0lBRGIsUUFBUSxFQUFFO2lDQUdWO0FBR2E7SUFEYixRQUFRLEVBQUU7cUNBR1Y7QUFHYTtJQURiLFFBQVEsRUFBRTtvQ0FHVjtBQUdhO0lBRGIsUUFBUSxFQUFFOzRCQUdWO0FBR2E7SUFEYixRQUFRLEVBQUU7d0NBR1Y7QUFoSlUsYUFBYTtJQUp6QixLQUFLLENBQXFCO1FBQ3pCLElBQUksRUFBRSxVQUFVO1FBQ2hCLFFBQVE7S0FDVCxDQUFDO0dBQ1csYUFBYSxDQXM4QnpCOzs0RkF0OEJZLGFBQWE7a0JBTHpCLFVBQVU7NGtCQXdKVCx5QkFBeUIsTUFPekIsNEJBQTRCLE1BTzVCLHlCQUF5QixNQUt6QixzQkFBc0IsTUEwQnRCLDZCQUE2QixNQWU3QixxQ0FBcUMsTUFpQnJDLG9CQUFvQixNQWdCcEIsd0JBQXdCLE1BV3hCLGtDQUFrQyxNQVlsQyxvQ0FBb0MsTUFZcEMsbUJBQW1CLE1Bb0ZuQixvQ0FBb0MsTUFzQnBDLHVCQUF1QixNQStCdkIsb0JBQW9CLE1BS3BCLHdDQUF3QyxNQWF4Qyw4QkFBOEIsTUFhOUIsc0JBQXNCLE1BWXRCLDRCQUE0QixNQVk1QixzQ0FBc0MsTUFhdEMsd0JBQXdCLE1BYXhCLCtCQUErQixNQWEvQix1QkFBdUIsTUFhdkIsY0FBYyxNQWlDZCxtQkFBbUIsTUFPbkIsdUJBQXVCLE1BT3ZCLHNCQUFzQixNQU90QixrQkFBa0IsTUFPbEIsZUFBZSxNQU9mLHVCQUF1QixNQWF2Qiw2QkFBNkIsTUFZN0IsaUNBQWlDLE1Ba0JqQyxxQ0FBcUMsTUFtQnJDLHlCQUF5QixNQVd6QiwwQkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBBY3Rpb24sIFNlbGVjdG9yLCBTdGF0ZSwgU3RhdGVDb250ZXh0LCBTdG9yZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7IGNsb25lLCBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIHN3aXRjaE1hcCwgdGFwLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb21tYW5kTm90aWZpY2F0aW9uQ29uZmlnLCBDb21tYW5kTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbm90aWZpY2F0aW9uL2NvbW1hbmQtbm90aWZpY2F0aW9uJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvbkNsYXNzIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9ub3RpZmljYXRpb24vbm90aWZpY2F0aW9uLWNvbmZpZyc7XG5pbXBvcnQgeyBPTkVfU0VDT05EX0lOX01JTExJU0VDT05EUyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9nbG9iYWwtY29uc3RhbnRzJztcbmltcG9ydCB7IERZTkFNSUNfUFJJQ0lOR19DT05ESVRJT04gfSBmcm9tICcuLi8uLi9jb25zdGFudHMva2V5cy1jb25zdGFudHMnO1xuaW1wb3J0IHsgQXBwVHlwZSB9IGZyb20gJy4uLy4uL2VudW1zL2FwcC10eXBlLmVudW0nO1xuaW1wb3J0IHsgRmFjaWxpdHlSZW1vdGVDb21tYW5kc0xvY2FsaXphdGlvbktleSB9IGZyb20gJy4uLy4uL2VudW1zL2ZhY2lsaXR5LXJlbW90ZS1jb21tYW5kcy5lbnVtJztcbmltcG9ydCB7IFBhcmtDb25uZWN0aW9uU3RhdHVzQ2xhc3MgfSBmcm9tICcuLi8uLi9lbnVtcy9wcmlvcml0eS1saW5rLXN0YXR1cy5lbnVtJztcbmltcG9ydCB7IE1lbnVJdGVtIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9tZW51LWl0ZW0uaW50ZXJmYWNlJztcbmltcG9ydCB7IFJwYyB9IGZyb20gJy4uLy4uL3NlcnZpY2UtcHJveHknO1xuaW1wb3J0IHsgQXBwTW9kdWxlLCBEeW5hbWljUHJpY2luZ0NvbmRpdGlvbkR0bywgTm90aWZpY2F0aW9uRHRvLCBOb3RpZmljYXRpb25UeXBlIH0gZnJvbSAnLi4vLi4vc2VydmljZS1wcm94eS9jbG91ZC1zZXJ2aWNlLXByb3hpZXMnO1xuaW1wb3J0IHsgU2VydmljZXNSdW5uaW5nU3RhdHVzRHRvLCBTbWFydHBhcmtCYXNpY0R0byB9IGZyb20gJy4uLy4uL3NlcnZpY2UtcHJveHkvaWRlbnRpdHktc2VydmljZS1wcm94aWVzJztcbmltcG9ydCB7XG4gIENhdGVnb3J5RHRvLCBDYXRlZ29yeVJwY1NlcnZpY2VQcm94eSwgRGV2aWNlUmVtb3RlQ29tbWFuZFJlZkR0bywgRmFjaWxpdHlEdG8sIEZhY2lsaXR5UmVtb3RlQ29tbWFuZEV2ZW50LCBGYWNpbGl0eVJlbW90ZUNvbW1hbmRSZWZEdG8sXG4gIEZhY2lsaXR5UmVtb3RlQ29tbWFuZFR5cGVzLCBGYWNpbGl0eVJwY1NlcnZpY2VQcm94eSwgR3JvdXBEdG8sIEdyb3VwUnBjU2VydmljZVByb3h5LCBKb2JUaXRsZUR0byxcbiAgSm9iVGl0bGVScGNTZXJ2aWNlUHJveHksIE1hY3JvQ29tbWFuZER0bywgUGVybWlzc2lvblR5cGUsIFJ1bGVzTW9kZSwgU21hcnRab25lQ291bnRlclZlaGljbGVDbGFzc0R0byxcbiAgWkR0bywgWm9uZUR0bywgWm9uZVJwY1NlcnZpY2VQcm94eSwgWlJwY1NlcnZpY2VQcm94eVxufSBmcm9tICcuLi8uLi9zZXJ2aWNlLXByb3h5L3JwYy1zZXJ2aWNlLXByb3hpZXMnO1xuaW1wb3J0IHsgQXBwQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2FwcC1jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBCYXNlRmFjaWxpdHlDb21tYW5kc0NvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9mYWNpbGl0eS1jb21tYW5kcy1jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBHbG9iYWxFcnJvclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9nbG9iYWwtZXJyb3Iuc2VydmljZSc7XG5pbXBvcnQgeyBMb2NhbFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbG9jYWwtc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IGlzVHJ1dGh5LCBOdW1iZXJNYXAsIFN0cmluZ01hcCB9IGZyb20gJy4uLy4uL3V0aWxzL2xhbmcudXRpbCc7XG5pbXBvcnQgeyBjb252ZXJ0RmVhdHVyZVBlcm1pc3Npb25zVG9EaWN0aW9uYXJ5IH0gZnJvbSAnLi4vLi4vdXRpbHMvcGVybWlzc2lvbi10eXBlLW1hcHBlci51dGlsJztcbmltcG9ydCB7IG9iamVjdEtleXN0b0xvd2VyQ2FzZSB9IGZyb20gJy4uLy4uL3V0aWxzL3RleHQudXRpbCc7XG5pbXBvcnQgeyBIYW5kbGVkTm90aWZpY2F0aW9uQWN0aW9uIH0gZnJvbSAnLi4vYWxlcnRzLWFuZC1ub3RpZmljYXRpb25zL2FsZXJ0cy1hbmQtbm90aWZpY2F0aW9ucy5hY3Rpb25zJztcbmltcG9ydCB7IE1lbnVMb2FkQWN0aW9uIH0gZnJvbSAnLi4vc2lkZW5hdi9zaWRlbmF2LmFjdGlvbnMnO1xuaW1wb3J0IHsgU2lkZW5hdlN0YXRlIH0gZnJvbSAnLi4vc2lkZW5hdi9zaWRlbmF2LnN0YXRlJztcbmltcG9ydCB7IFNldFNtYXJ0UGFya0FjdGlvbiB9IGZyb20gJy4uL3NtYXJ0cGFya3Mvc21hcnRwYXJrLmFjdGlvbnMnO1xuaW1wb3J0IHsgRmFjaWxpdHlNZW51U2VydmljZSB9IGZyb20gJy4vZmFjaWxpdHktbWVudS5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIENsaWVudFNlcnZlckRpZmZEaWN0aW9uYXJ5LCBDb25uZWN0aW9uU3RhdHVzRGljdGlvbmFyeSwgRGV2aWNlUmVtb3RlQ29tbWFuZHNEaWN0aW9uYXJ5LCBGYWNpbGl0eURpY3Rpb25hcnksIEZhY2lsaXR5UmVtb3RlQ29tbWFuZHNEaWN0aW9uYXJ5XG59IGZyb20gJy4vZmFjaWxpdHktbW9kYWwnO1xuaW1wb3J0IHtcbiAgQ2xlYXJDYXRlZ29yaWVzQWN0aW9uLCBDbGVhckZhY2lsaXR5RGljdGlvbmFyeUFjdGlvbiwgQ2xlYXJHcm91cHNBY3Rpb24sIENsZWFySW5hY3RpdmVTZWxlY3RlZFBhcmtBY3Rpb24sIENsZWFySm9iVGl0bGVzQWN0aW9uLFxuICBDbGVhck1hY3JvQ29tbWFuZHNBY3Rpb24sIENsZWFyU2VsZWN0ZWRGYWNpbGl0eUFjdGlvbiwgQ2xlYXJab25lc0FjdGlvbiwgQ2xlYXJac0FjdGlvbiwgRmFjaWxpdHlDaGFuZ2VkQWN0aW9uLCBGYWNpbGl0eVJlbW90ZUNvbW1hbmRFeGVjdXRlZEFjdGlvbixcbiAgTG9hZEFjY2Vzc1Byb2ZpbGVab25lc0FjdGlvbiwgTG9hZEFjY291bnRNYW5hZ2VtZW50R3Vlc3RHcm91cEFjdGlvbiwgTG9hZEFjY291bnRNYW5hZ2VtZW50Sm9iVGl0bGVzQWN0aW9uLFxuICBMb2FkQ2F0ZWdvcmllc0FjdGlvbiwgTG9hZENjTWFpblpvbmVzQWN0aW9uLCBMb2FkRmFjaWxpdHlBY3Rpb24sIExvYWRGYWNpbGl0eVJlbW90ZUNvbW1hbmRzUmVmQWN0aW9uLCBMb2FkTWFjcm9Db21tYW5kc0FjdGlvbixcbiAgTG9hZFBhcmtpbmdMb3RBY3Rpb24sIExvYWRSZW1vdGVDb21tYW5kc1JlZkFjdGlvbiwgTG9hZFJlcG9ydHNHdWVzdEdyb3VwQWN0aW9uLCBMb2FkUmVwb3J0c0pvYlRpdGxlc0FjdGlvbiwgTG9hZFJlcG9ydHNab25lc0FjdGlvbixcbiAgTG9hZFpzQWN0aW9uLCBTZXJ2aWNlc1J1bm5pbmdTdGF0dXNDaGFuZ2VkQWN0aW9uLCBTZXRCYXNpY01lbnVBY3Rpb24sIFNldERldmljZVJlbW90ZUNvbW1hbmRzTWFwQWN0aW9uLCBTZXRGYWNpbGl0eVJlbW90ZUNvbW1hbmRzTWFwQWN0aW9uLFxuICBTZXRTZWxlY3RlZFBhcmtBY3Rpb24sIFNldFNtYXJ0cGFya0Jhc2ljQWN0aW9uLCBTZXRTbWFydHBhcmtCYXNpY0FsbEFjdGlvbiwgVW5sb2FkUGFya2luZ0xvdEFjdGlvbiwgWm9uZUNoYW5nZWRBY3Rpb25cbn0gZnJvbSAnLi9mYWNpbGl0eS5hY3Rpb25zJztcblxuaW1wb3J0IFNtYXJ0Wm9uZUNvdW50ZXJWZWhpY2xlVHlwZUR0byA9IFJwYy5TbWFydFpvbmVDb3VudGVyVmVoaWNsZVR5cGVEdG87XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmFjaWxpdHlTdGF0ZU1vZGVsIHtcbiAgZ3VpZDogc3RyaW5nO1xuICBwYXJrSWQ6IG51bWJlcjtcbiAgY29ubmVjdGlvblN0YXR1c0RpY3Rpb25hcnk6IENvbm5lY3Rpb25TdGF0dXNEaWN0aW9uYXJ5O1xuICBtdWx0aVBhcmtQYXJlbnRJRDogbnVtYmVyO1xuICBzZWxlY3RlZDogRmFjaWxpdHlEdG87XG4gIGRpY3Rpb25hcnk6IEZhY2lsaXR5RGljdGlvbmFyeTtcbiAgc2VydmljZXNSdW5uaW5nU3RhdHVzRGljdGlvbmFyeTogU3RyaW5nTWFwPFNlcnZpY2VzUnVubmluZ1N0YXR1c0R0bz47XG4gIHRpYmFLZXlzOiBTdHJpbmdNYXA8bnVtYmVyPjtcbiAgZGV2aWNlUmVtb3RlQ29tbWFuZHNEaWN0aW9uYXJ5OiBEZXZpY2VSZW1vdGVDb21tYW5kc0RpY3Rpb25hcnk7XG4gIGZhY2lsaXR5UmVtb3RlQ29tbWFuZHNEaWN0aW9uYXJ5OiBGYWNpbGl0eVJlbW90ZUNvbW1hbmRzRGljdGlvbmFyeTtcbiAgZ3JvdXBzOiBHcm91cER0b1tdO1xuICBjYXRlZ29yaWVzOiBDYXRlZ29yeUR0b1tdO1xuICBqb2JUaXRsZXM6IEpvYlRpdGxlRHRvW107XG4gIHpvbmVzOiBab25lRHRvW107XG4gIHo6IFpEdG9bXTtcbiAgYWxsb3dlZEFjdGlvbnM6IE51bWJlck1hcDxib29sZWFuPjtcbiAgY2xpZW50U2VydmVyRGlmZkRpY3Rpb25hcnk6IENsaWVudFNlcnZlckRpZmZEaWN0aW9uYXJ5O1xuICBtYWNyb0NvbW1hbmRzOiBNYWNyb0NvbW1hbmREdG9bXTtcbn1cblxuY29uc3QgZGVmYXVsdHMgPSB7XG4gIGd1aWQ6ICcnLFxuICBwYXJrSWQ6IG51bGwsXG4gIGNvbm5lY3Rpb25TdGF0dXNEaWN0aW9uYXJ5OiB7fSxcbiAgbXVsdGlQYXJrUGFyZW50SUQ6IHVuZGVmaW5lZCxcbiAgc2VsZWN0ZWQ6IG51bGwsXG4gIGRpY3Rpb25hcnk6IHt9LFxuICBzZXJ2aWNlc1J1bm5pbmdTdGF0dXNEaWN0aW9uYXJ5OiB7fSxcbiAgdGliYUtleXM6IHt9LFxuICBkZXZpY2VSZW1vdGVDb21tYW5kc0RpY3Rpb25hcnk6IHt9LFxuICBmYWNpbGl0eVJlbW90ZUNvbW1hbmRzRGljdGlvbmFyeToge30sXG4gIGdyb3VwczogbnVsbCxcbiAgY2F0ZWdvcmllczogbnVsbCxcbiAgam9iVGl0bGVzOiBudWxsLFxuICB6b25lczogbnVsbCxcbiAgejogbnVsbCxcbiAgYWxsb3dlZEFjdGlvbnM6IHt9LFxuICBjbGllbnRTZXJ2ZXJEaWZmRGljdGlvbmFyeToge30sXG4gIG1hY3JvQ29tbWFuZHM6IFtdXG59O1xuXG5ASW5qZWN0YWJsZSgpXG5AU3RhdGU8RmFjaWxpdHlTdGF0ZU1vZGVsPih7XG4gIG5hbWU6ICdmYWNpbGl0eScsXG4gIGRlZmF1bHRzLFxufSlcbmV4cG9ydCBjbGFzcyBGYWNpbGl0eVN0YXRlIHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZSxcbiAgICBwcml2YXRlIGZhY2lsaXR5Q29tbWFuZHNDb25maWdTZXJ2aWNlOiBCYXNlRmFjaWxpdHlDb21tYW5kc0NvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBsb2NhbFN0b3JhZ2VTZXJ2aWNlOiBMb2NhbFN0b3JhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmFjaWxpdHlNZW51U2VydmljZTogRmFjaWxpdHlNZW51U2VydmljZSxcbiAgICBwcml2YXRlIGZhY2lsaXR5U2VydmljZVByb3h5OiBGYWNpbGl0eVJwY1NlcnZpY2VQcm94eSxcbiAgICBwcml2YXRlIHJlbW90ZUNvbW1hbmRScGNTZXJ2aWNlUHJveHk6IFJwYy5SZW1vdGVDb21tYW5kUnBjU2VydmljZVByb3h5LFxuICAgIHByaXZhdGUgZ3JvdXBScGNTZXJ2aWNlUHJveHk6IEdyb3VwUnBjU2VydmljZVByb3h5LFxuICAgIHByaXZhdGUgY2F0ZWdvcnlTZXJ2aWNlUHJveHk6IENhdGVnb3J5UnBjU2VydmljZVByb3h5LFxuICAgIHByaXZhdGUgam9iVGl0bGVScGNTZXJ2aWNlUHJveHk6IEpvYlRpdGxlUnBjU2VydmljZVByb3h5LFxuICAgIHByaXZhdGUgem9uZVJwY1NlcnZpY2VQcm94eTogWm9uZVJwY1NlcnZpY2VQcm94eSxcbiAgICBwcml2YXRlIHpScGNTZXJ2aWNlUHJveHk6IFpScGNTZXJ2aWNlUHJveHksXG4gICAgcHJpdmF0ZSBnbG9iYWxFcnJvclNlcnZpY2U6IEdsb2JhbEVycm9yU2VydmljZSxcbiAgICBwcml2YXRlIGNvbW1hbmROb3RpZmljYXRpb25TZXJ2aWNlOiBDb21tYW5kTm90aWZpY2F0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhcHBDb25maWc6IEFwcENvbmZpZ1NlcnZpY2VcbiAgKSB7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIHNlbGVjdGVkKHN0YXRlOiBGYWNpbGl0eVN0YXRlTW9kZWwpOiBGYWNpbGl0eUR0byB7XG4gICAgcmV0dXJuIHN0YXRlLnNlbGVjdGVkO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBpc0NoaWxkKHN0YXRlOiBGYWNpbGl0eVN0YXRlTW9kZWwpOiBib29sZWFuIHtcbiAgICByZXR1cm4gc3RhdGUuc2VsZWN0ZWQubXVsdGlQYXJrUGFyZW50SUQgPiAwO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBmZWF0dXJlUGVybWlzc2lvbnMoc3RhdGU6IEZhY2lsaXR5U3RhdGVNb2RlbCk6IFBlcm1pc3Npb25UeXBlW10ge1xuICAgIHJldHVybiBzdGF0ZS5zZWxlY3RlZD8uZmVhdHVyZVBlcm1pc3Npb25zO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBhbGxvd2VkQWN0aW9ucyhzdGF0ZTogRmFjaWxpdHlTdGF0ZU1vZGVsKTogTnVtYmVyTWFwPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gc3RhdGUuYWxsb3dlZEFjdGlvbnM7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIGlzTXVsdGlQYXJrKHN0YXRlOiBGYWNpbGl0eVN0YXRlTW9kZWwpOiBudW1iZXIge1xuICAgIHJldHVybiBzdGF0ZS5zZWxlY3RlZD8uaXNNdWx0aVBhcms7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIHJhd1pvbmVzKHN0YXRlOiBGYWNpbGl0eVN0YXRlTW9kZWwpOiBab25lRHRvW10ge1xuICAgIHJldHVybiBzdGF0ZS56b25lcztcbiAgfVxuXG4gIEBTZWxlY3RvcihbRmFjaWxpdHlTdGF0ZS5yYXdab25lc10pXG4gIHB1YmxpYyBzdGF0aWMgem9uZXMoem9uZXM6IFpvbmVEdG9bXSk6IFpvbmVEdG9bXSB7XG4gICAgcmV0dXJuIHpvbmVzPy5maWx0ZXIoeiA9PiB6LnJ1bGVzTW9kZSAhPT0gUnVsZXNNb2RlLkNBTENVTEFURV9CWV9TTUFSVF9DT1VOVEVSKTtcbiAgfVxuXG4gIEBTZWxlY3RvcihbRmFjaWxpdHlTdGF0ZS5yYXdab25lc10pXG4gIHB1YmxpYyBzdGF0aWMgc21hcnRab25lcyh6b25lczogWm9uZUR0b1tdKTogWm9uZUR0b1tdIHtcbiAgICByZXR1cm4gem9uZXM/LmZpbHRlcih6ID0+IHoucnVsZXNNb2RlID09PSBSdWxlc01vZGUuQ0FMQ1VMQVRFX0JZX1NNQVJUX0NPVU5URVIpO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyB0aW1lWm9uZShzdGF0ZTogRmFjaWxpdHlTdGF0ZU1vZGVsKSB7XG4gICAgcmV0dXJuIHN0YXRlLnNlbGVjdGVkLnNwVGltZVpvbmU7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIHRpbWVEcmlmdChzdGF0ZTogRmFjaWxpdHlTdGF0ZU1vZGVsKSB7XG4gICAgcmV0dXJuIHN0YXRlLnNlbGVjdGVkLnRpbWVEcmlmdDtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgcGFya0Nvbm5lY3Rpb25TdGF0dXNNYXAoc3RhdGU6IEZhY2lsaXR5U3RhdGVNb2RlbCk6IENvbm5lY3Rpb25TdGF0dXNEaWN0aW9uYXJ5IHtcbiAgICByZXR1cm4gc3RhdGUuY29ubmVjdGlvblN0YXR1c0RpY3Rpb25hcnk7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIGd1aWQoc3RhdGU6IEZhY2lsaXR5U3RhdGVNb2RlbCkge1xuICAgIHJldHVybiBzdGF0ZS5ndWlkO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBwYXJrSWQoc3RhdGU6IEZhY2lsaXR5U3RhdGVNb2RlbCkge1xuICAgIHJldHVybiBzdGF0ZS5wYXJrSWQ7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIG11bHRpUGFya1BhcmVudElEKHN0YXRlOiBGYWNpbGl0eVN0YXRlTW9kZWwpIHtcbiAgICByZXR1cm4gc3RhdGUubXVsdGlQYXJrUGFyZW50SUQ7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIGZhY2lsaXR5RGljdGlvbmFyeShzdGF0ZTogRmFjaWxpdHlTdGF0ZU1vZGVsKTogRmFjaWxpdHlEaWN0aW9uYXJ5IHtcbiAgICByZXR1cm4gc3RhdGUuZGljdGlvbmFyeTtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgY2xpZW50U2VydmVyRGlmZkRpY3Rpb25hcnkoc3RhdGU6IEZhY2lsaXR5U3RhdGVNb2RlbCk6IENsaWVudFNlcnZlckRpZmZEaWN0aW9uYXJ5IHtcbiAgICByZXR1cm4gc3RhdGUuY2xpZW50U2VydmVyRGlmZkRpY3Rpb25hcnk7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIHNlcnZpY2VzUnVubmluZ1N0YXR1c0RpY3Rpb25hcnkoc3RhdGU6IEZhY2lsaXR5U3RhdGVNb2RlbCk6IFN0cmluZ01hcDxTZXJ2aWNlc1J1bm5pbmdTdGF0dXNEdG8+IHtcbiAgICByZXR1cm4gc3RhdGUuc2VydmljZXNSdW5uaW5nU3RhdHVzRGljdGlvbmFyeTtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgdGliYUtleXMoc3RhdGU6IEZhY2lsaXR5U3RhdGVNb2RlbCk6IFN0cmluZ01hcDxudW1iZXI+IHtcbiAgICByZXR1cm4gc3RhdGUudGliYUtleXM7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIHNlbGVjdGVkUGFya0RldmljZVJlbW90ZUNvbW1hbmRzKHN0YXRlOiBGYWNpbGl0eVN0YXRlTW9kZWwpOiBEZXZpY2VSZW1vdGVDb21tYW5kUmVmRHRvW10ge1xuICAgIHJldHVybiBzdGF0ZS5kZXZpY2VSZW1vdGVDb21tYW5kc0RpY3Rpb25hcnlbc3RhdGUuZ3VpZF0gPyBzdGF0ZS5kZXZpY2VSZW1vdGVDb21tYW5kc0RpY3Rpb25hcnlbc3RhdGUuZ3VpZF1bc3RhdGUucGFya0lkXSA6IFtdO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBzZWxlY3RlZFBhcmtGYWNpbGl0eVJlbW90ZUNvbW1hbmRzKHN0YXRlOiBGYWNpbGl0eVN0YXRlTW9kZWwpOiBGYWNpbGl0eVJlbW90ZUNvbW1hbmRSZWZEdG9bXSB7XG4gICAgcmV0dXJuIHN0YXRlLmZhY2lsaXR5UmVtb3RlQ29tbWFuZHNEaWN0aW9uYXJ5W3N0YXRlLmd1aWRdID8gc3RhdGUuZmFjaWxpdHlSZW1vdGVDb21tYW5kc0RpY3Rpb25hcnlbc3RhdGUuZ3VpZF1bc3RhdGUucGFya0lkXSA6IFtdO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBncm91cHMoc3RhdGU6IEZhY2lsaXR5U3RhdGVNb2RlbCk6IEdyb3VwRHRvW10ge1xuICAgIHJldHVybiBzdGF0ZS5ncm91cHM7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIGNhdGVnb3JpZXMoc3RhdGU6IEZhY2lsaXR5U3RhdGVNb2RlbCk6IENhdGVnb3J5RHRvW10ge1xuICAgIHJldHVybiBzdGF0ZS5jYXRlZ29yaWVzO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBqb2JUaXRsZXMoc3RhdGU6IEZhY2lsaXR5U3RhdGVNb2RlbCk6IEpvYlRpdGxlRHRvW10ge1xuICAgIHJldHVybiBzdGF0ZS5qb2JUaXRsZXM7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIHooc3RhdGU6IEZhY2lsaXR5U3RhdGVNb2RlbCk6IFpEdG9bXSB7XG4gICAgcmV0dXJuIHN0YXRlLno7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIG1hY3JvQ29tbWFuZHMoc3RhdGU6IEZhY2lsaXR5U3RhdGVNb2RlbCk6IE1hY3JvQ29tbWFuZER0b1tdIHtcbiAgICByZXR1cm4gc3RhdGUubWFjcm9Db21tYW5kcztcbiAgfVxuXG4gIEBBY3Rpb24oQ2xlYXJGYWNpbGl0eURpY3Rpb25hcnlBY3Rpb24pXG4gIG9uQ2xlYXJGYWNpbGl0eURpY3Rpb25hcnkoY3R4OiBTdGF0ZUNvbnRleHQ8RmFjaWxpdHlTdGF0ZU1vZGVsPiwgXzogQ2xlYXJGYWNpbGl0eURpY3Rpb25hcnlBY3Rpb24pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBkaWN0aW9uYXJ5OiB7fVxuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihTZXRTbWFydHBhcmtCYXNpY0FsbEFjdGlvbilcbiAgb25TZXRTbWFydHBhcmtCYXNpY0FsbEFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxGYWNpbGl0eVN0YXRlTW9kZWw+LCBhY3Rpb246IFNldFNtYXJ0cGFya0Jhc2ljQWxsQWN0aW9uKSB7XG4gICAgY29uc3Qgc21hcnRQYXJrc0FycmF5OiBTbWFydHBhcmtCYXNpY0R0b1tdID0gT2JqZWN0LnZhbHVlcyhhY3Rpb24uc21hcnRwYXJrV3JhcHBlcj8uZGF0YT8uc21hcnRQYXJrcyk7XG4gICAgY3R4LmRpc3BhdGNoKG5ldyBTZXRTbWFydFBhcmtBY3Rpb24oc21hcnRQYXJrc0FycmF5LCBmYWxzZSkpO1xuICAgIHJldHVybiB0aGlzLnBvcHVsYXRlU21hcnRwYXJrQmFzaWMoY3R4LCBhY3Rpb24uc21hcnRwYXJrV3JhcHBlcj8uZGF0YT8uc21hcnRQYXJrcyk7XG4gIH1cblxuICBAQWN0aW9uKFNldFNtYXJ0cGFya0Jhc2ljQWN0aW9uKVxuICBvblNldFNtYXJ0cGFya0Jhc2ljQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PEZhY2lsaXR5U3RhdGVNb2RlbD4sIGFjdGlvbjogU2V0U21hcnRwYXJrQmFzaWNBY3Rpb24pIHtcbiAgICB0aGlzLnBvcHVsYXRlU21hcnRwYXJrQmFzaWMoY3R4LCBhY3Rpb24uc21hcnRwYXJrV3JhcHBlcj8uZGF0YT8uc21hcnRQYXJrcyk7XG4gIH1cblxuICBAQWN0aW9uKExvYWRQYXJraW5nTG90QWN0aW9uLCB7IGNhbmNlbFVuY29tcGxldGVkOiB0cnVlIH0pXG4gIG9uTG9hZFBhcmtpbmdMb3RBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8RmFjaWxpdHlTdGF0ZU1vZGVsPiwgeyBwYXJrSWQsIHRpYmFLZXlJbmRleCB9OiBMb2FkUGFya2luZ0xvdEFjdGlvbikge1xuICAgIGNvbnN0IGd1aWQgPSBPYmplY3Qua2V5cyhjdHguZ2V0U3RhdGUoKS50aWJhS2V5cylbdGliYUtleUluZGV4XTtcbiAgICBjb25zdCBmYWNpbGl0eURpY3Rpb25hcnkgPSBjdHguZ2V0U3RhdGUoKS5kaWN0aW9uYXJ5O1xuICAgIGNvbnN0IHNlbGVjdGVkID0gZmFjaWxpdHlEaWN0aW9uYXJ5W2d1aWRdID8gZmFjaWxpdHlEaWN0aW9uYXJ5W2d1aWRdW3BhcmtJZF0gOiBudWxsO1xuXG4gICAgaWYgKCFzZWxlY3RlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGFsbG93ZWRBY3Rpb25zID0gY29udmVydEZlYXR1cmVQZXJtaXNzaW9uc1RvRGljdGlvbmFyeShzZWxlY3RlZC5mZWF0dXJlUGVybWlzc2lvbnMpO1xuXG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgcGFya0lkLFxuICAgICAgZ3VpZCxcbiAgICAgIG11bHRpUGFya1BhcmVudElEOiBzZWxlY3RlZC5tdWx0aVBhcmtQYXJlbnRJRCxcbiAgICAgIHNlbGVjdGVkLFxuICAgICAgem9uZXM6IHNlbGVjdGVkLnpvbmVzLFxuICAgICAgYWxsb3dlZEFjdGlvbnNcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KFNpZGVuYXZTdGF0ZS5hcHBNb2R1bGUpID09PSBBcHBNb2R1bGUuQ2MpIHtcbiAgICAgIHJldHVybiBjdHguZGlzcGF0Y2gobmV3IExvYWRGYWNpbGl0eUFjdGlvbihwYXJrSWQsIGd1aWQsIGlzVHJ1dGh5KHNlbGVjdGVkLmlzTXVsdGlQYXJrKSwgQXBwTW9kdWxlLkNjKSk7XG4gICAgfVxuICB9XG5cbiAgQEFjdGlvbihMb2FkUmVtb3RlQ29tbWFuZHNSZWZBY3Rpb24sIHsgY2FuY2VsVW5jb21wbGV0ZWQ6IHRydWUgfSlcbiAgb25Mb2FkUmVtb3RlQ29tbWFuZHNSZWZBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8RmFjaWxpdHlTdGF0ZU1vZGVsPiwgeyBwYXJrSWQsIHRpYmFLZXlJbmRleCB9OiBMb2FkUmVtb3RlQ29tbWFuZHNSZWZBY3Rpb24pIHtcbiAgICBjb25zdCBndWlkID0gT2JqZWN0LmtleXMoY3R4LmdldFN0YXRlKCkudGliYUtleXMpW3RpYmFLZXlJbmRleF07XG5cbiAgICAvLyBXZSBmZXRjaCBmcm9tIHRoZSBzZXJ2ZXIgb25seSBpZiB3ZSBkaWRuJ3kgZmV0Y2ggYmVmb3JlIGZvciB0aGF0IGd1aWRcbiAgICBjb25zdCByZW1vdGVDb21tYW5kc1JlZkFsbCA9IGN0eC5nZXRTdGF0ZSgpLmRldmljZVJlbW90ZUNvbW1hbmRzRGljdGlvbmFyeTtcbiAgICBpZiAoIXJlbW90ZUNvbW1hbmRzUmVmQWxsW2d1aWRdIHx8ICFyZW1vdGVDb21tYW5kc1JlZkFsbFtndWlkXVtwYXJrSWRdKSB7XG4gICAgICBjb25zdCByZW1vdGVDb21tYW5kc1JlZiQgPSB0aGlzLnJlbW90ZUNvbW1hbmRScGNTZXJ2aWNlUHJveHkuZ2V0RGV2aWNlUmVtb3RlQ29tbWFuZHMoZ3VpZCwgcGFya0lkKTtcblxuICAgICAgcmV0dXJuIHJlbW90ZUNvbW1hbmRzUmVmJC5waXBlKHRhcChyZW1vdGVDb21tYW5kc1JlZiA9PiB7XG4gICAgICAgIGN0eC5kaXNwYXRjaChuZXcgU2V0RGV2aWNlUmVtb3RlQ29tbWFuZHNNYXBBY3Rpb24ocmVtb3RlQ29tbWFuZHNSZWYuZGF0YSwgZ3VpZCwgcGFya0lkKSk7XG4gICAgICB9KSk7XG4gICAgfVxuICB9XG5cbiAgQEFjdGlvbihMb2FkRmFjaWxpdHlSZW1vdGVDb21tYW5kc1JlZkFjdGlvbiwgeyBjYW5jZWxVbmNvbXBsZXRlZDogdHJ1ZSB9KVxuICBvbkxvYWRGYWNpbGl0eVJlbW90ZUNvbW1hbmRzUmVmQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PEZhY2lsaXR5U3RhdGVNb2RlbD4sIHsgcGFya0lkLCB0aWJhS2V5SW5kZXggfTogTG9hZEZhY2lsaXR5UmVtb3RlQ29tbWFuZHNSZWZBY3Rpb24pIHtcbiAgICBjb25zdCBndWlkID0gT2JqZWN0LmtleXMoY3R4LmdldFN0YXRlKCkudGliYUtleXMpW3RpYmFLZXlJbmRleF07XG5cbiAgICAvLyBXZSBmZXRjaCBmcm9tIHRoZSBzZXJ2ZXIgb25seSBpZiB3ZSBkaWRuJ3kgZmV0Y2ggYmVmb3JlIGZvciB0aGF0IGd1aWRcbiAgICBjb25zdCByZW1vdGVDb21tYW5kc1JlZkFsbCA9IGN0eC5nZXRTdGF0ZSgpLmZhY2lsaXR5UmVtb3RlQ29tbWFuZHNEaWN0aW9uYXJ5O1xuICAgIGlmICghcmVtb3RlQ29tbWFuZHNSZWZBbGxbZ3VpZF0gfHwgIXJlbW90ZUNvbW1hbmRzUmVmQWxsW2d1aWRdW3BhcmtJZF0pIHtcbiAgICAgIGNvbnN0IHJlbW90ZUNvbW1hbmRzUmVmJCA9IHRoaXMucmVtb3RlQ29tbWFuZFJwY1NlcnZpY2VQcm94eS5nZXRGYWNpbGl0eVJlbW90ZUNvbW1hbmRzKGd1aWQsIHBhcmtJZCk7XG5cbiAgICAgIGlmIChyZW1vdGVDb21tYW5kc1JlZiQpIHtcbiAgICAgICAgcmV0dXJuIHJlbW90ZUNvbW1hbmRzUmVmJC5waXBlKHRhcChyZW1vdGVDb21tYW5kc1JlZiA9PiB7XG4gICAgICAgICAgY3R4LmRpc3BhdGNoKG5ldyBTZXRGYWNpbGl0eVJlbW90ZUNvbW1hbmRzTWFwQWN0aW9uKHJlbW90ZUNvbW1hbmRzUmVmLmRhdGEsIGd1aWQsIHBhcmtJZCkpO1xuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQEFjdGlvbihMb2FkRmFjaWxpdHlBY3Rpb24sIHsgY2FuY2VsVW5jb21wbGV0ZWQ6IHRydWUgfSlcbiAgb25Mb2FkRmFjaWxpdHlBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8RmFjaWxpdHlTdGF0ZU1vZGVsPiwgeyBwYXJrSWQsIGd1aWQsIGlzU3VwZXJQYXJrLCBhcHBNb2R1bGUgfTogTG9hZEZhY2lsaXR5QWN0aW9uKSB7XG4gICAgaWYgKGlzU3VwZXJQYXJrKSB7XG4gICAgICBjb25zdCBhbGxHdWlkRmFjaWxpdGllcyQgPSB0aGlzLmZhY2lsaXR5U2VydmljZVByb3h5LmdldEZhY2lsaXRpZXMoZ3VpZCwgcGFya0lkKTtcbiAgICAgIHJldHVybiBhbGxHdWlkRmFjaWxpdGllcyQucGlwZSh0YXAoZmFjaWxpdGllc01hcCA9PiB7XG4gICAgICAgIGNvbnN0IGZhY2lsaXR5ID0gZmFjaWxpdGllc01hcC5kYXRhW2d1aWRdLmZpbmQoZiA9PiBmLmlkID0gcGFya0lkKTtcbiAgICAgICAgdGhpcy51cGRhdGVGYWNpbGl0aWVzKGN0eCwgZ3VpZCwgcGFya0lkLCBhcHBNb2R1bGUsIGZhY2lsaXR5LCBmYWNpbGl0aWVzTWFwLmRhdGEpO1xuICAgICAgfSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBmdWxsRmFjaWxpdHkkID0gdGhpcy5mYWNpbGl0eVNlcnZpY2VQcm94eS5nZXRGYWNpbGl0eShndWlkLCBwYXJrSWQpO1xuICAgICAgcmV0dXJuIGZ1bGxGYWNpbGl0eSQucGlwZSh0YXAoZmFjaWxpdHkgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZUZhY2lsaXRpZXMoY3R4LCBndWlkLCBwYXJrSWQsIGFwcE1vZHVsZSwgZmFjaWxpdHkuZGF0YSk7XG4gICAgICB9KSk7XG4gICAgfVxuICB9XG5cbiAgQEFjdGlvbihVbmxvYWRQYXJraW5nTG90QWN0aW9uKVxuICBvblVubG9hZFBhcmtpbmdMb3RBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8RmFjaWxpdHlTdGF0ZU1vZGVsPiwgYWN0aW9uOiBVbmxvYWRQYXJraW5nTG90QWN0aW9uKSB7XG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgZ3VpZDogJycsXG4gICAgICBwYXJrSWQ6IG51bGwsXG4gICAgICBzZWxlY3RlZDogbnVsbCxcbiAgICAgIHpvbmVzOiBudWxsLFxuICAgICAgYWxsb3dlZEFjdGlvbnM6IHt9LFxuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihTZXREZXZpY2VSZW1vdGVDb21tYW5kc01hcEFjdGlvbilcbiAgb25TZXREZXZpY2VSZW1vdGVDb21tYW5kc01hcEFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxGYWNpbGl0eVN0YXRlTW9kZWw+LCBhY3Rpb246IFNldERldmljZVJlbW90ZUNvbW1hbmRzTWFwQWN0aW9uKSB7XG4gICAgY29uc3QgZGV2aWNlUmVtb3RlQ29tbWFuZHNEaWN0aW9uYXJ5ID0gY3R4LmdldFN0YXRlKCkuZGV2aWNlUmVtb3RlQ29tbWFuZHNEaWN0aW9uYXJ5O1xuICAgIGlmICghZGV2aWNlUmVtb3RlQ29tbWFuZHNEaWN0aW9uYXJ5W2FjdGlvbi5ndWlkXSkge1xuICAgICAgZGV2aWNlUmVtb3RlQ29tbWFuZHNEaWN0aW9uYXJ5W2FjdGlvbi5ndWlkXSA9IHt9O1xuICAgIH1cbiAgICBkZXZpY2VSZW1vdGVDb21tYW5kc0RpY3Rpb25hcnlbYWN0aW9uLmd1aWRdW2FjdGlvbi5wYXJrSWRdID0gYWN0aW9uLnJlbW90ZUNvbW1hbmRzW2FjdGlvbi5ndWlkXTtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBkZXZpY2VSZW1vdGVDb21tYW5kc0RpY3Rpb25hcnksXG4gICAgfSk7XG4gIH1cblxuICBAQWN0aW9uKFNldEZhY2lsaXR5UmVtb3RlQ29tbWFuZHNNYXBBY3Rpb24pXG4gIG9uU2V0RmFjaWxpdHlSZW1vdGVDb21tYW5kc01hcEFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxGYWNpbGl0eVN0YXRlTW9kZWw+LCBhY3Rpb246IFNldEZhY2lsaXR5UmVtb3RlQ29tbWFuZHNNYXBBY3Rpb24pIHtcbiAgICBjb25zdCBmYWNpbGl0eVJlbW90ZUNvbW1hbmRzRGljdGlvbmFyeSA9IGN0eC5nZXRTdGF0ZSgpLmZhY2lsaXR5UmVtb3RlQ29tbWFuZHNEaWN0aW9uYXJ5O1xuICAgIGlmICghZmFjaWxpdHlSZW1vdGVDb21tYW5kc0RpY3Rpb25hcnlbYWN0aW9uLmd1aWRdKSB7XG4gICAgICBmYWNpbGl0eVJlbW90ZUNvbW1hbmRzRGljdGlvbmFyeVthY3Rpb24uZ3VpZF0gPSB7fTtcbiAgICB9XG4gICAgZmFjaWxpdHlSZW1vdGVDb21tYW5kc0RpY3Rpb25hcnlbYWN0aW9uLmd1aWRdW2FjdGlvbi5wYXJrSWRdID0gYWN0aW9uLnJlbW90ZUNvbW1hbmRzW2FjdGlvbi5ndWlkXTtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBmYWNpbGl0eVJlbW90ZUNvbW1hbmRzRGljdGlvbmFyeSxcbiAgICB9KTtcbiAgfVxuXG4gIEBBY3Rpb24oWm9uZUNoYW5nZWRBY3Rpb24pXG4gIG9uWm9uZUNoYW5nZWRBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8RmFjaWxpdHlTdGF0ZU1vZGVsPiwgeyB6b25lLCBwYXJrSWQgfTogWm9uZUNoYW5nZWRBY3Rpb24pIHtcbiAgICBjb25zdCBzZWxlY3RlZCA9IGN0eC5nZXRTdGF0ZSgpLnNlbGVjdGVkO1xuICAgIGNvbnN0IHpvbmVJbmRleCA9IHNlbGVjdGVkLnpvbmVzPy5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLmlkID09PSB6b25lLmlkICYmIGl0ZW0ucGFya0lEID09PSBwYXJrSWQpO1xuICAgIHpvbmUub2NjdXBhbmN5ID0gem9uZS5tb250aGxpZXNPY2N1cGFuY3kgKyB6b25lLnRyYW5zaWVudHNPY2N1cGFuY3k7XG4gICAgem9uZS52YWNhbmN5ID0gem9uZS5jYXBhY2l0eSAtIHpvbmUub2NjdXBhbmN5O1xuXG4gICAgc3dpdGNoICh6b25lLnJ1bGVzTW9kZSkge1xuICAgICAgY2FzZSBSdWxlc01vZGUuQ0FMQ1VMQVRFX0JZX1NNQVJUX0NPVU5URVI6XG4gICAgICAgIHpvbmUuY2FwYWNpdHkgPSB6b25lLmNhcGFjaXR5O1xuICAgICAgICB6b25lLm9jY3VwYW5jeSA9IHpvbmUubG9vcENvdW50O1xuICAgICAgICB6b25lLnZhY2FuY3kgPSB6b25lLmNhcGFjaXR5IC0gem9uZS5vY2N1cGFuY3k7XG4gICAgICAgIHRoaXMuaGFuZGxlU21hcnRDb3VudGVyKHpvbmUpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBSdWxlc01vZGUuQ0FMQ1VMQVRFX0JZX0xPT1BfREVURUNUT1I6XG4gICAgICAgIHpvbmUuY2FwYWNpdHkgPSB6b25lLmNhcGFjaXR5O1xuICAgICAgICB6b25lLm9jY3VwYW5jeSA9IHpvbmUubG9vcENvdW50O1xuICAgICAgICB6b25lLnZhY2FuY3kgPSB6b25lLmNhcGFjaXR5IC0gem9uZS5vY2N1cGFuY3k7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICB6b25lLmNhcGFjaXR5ID0gem9uZS5jYXBhY2l0eTtcbiAgICAgICAgem9uZS5vY2N1cGFuY3kgPSB6b25lLm1vbnRobGllc09jY3VwYW5jeSArIHpvbmUudHJhbnNpZW50c09jY3VwYW5jeTtcbiAgICAgICAgem9uZS52YWNhbmN5ID0gem9uZS5jYXBhY2l0eSAtIHpvbmUub2NjdXBhbmN5O1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBzZWxlY3RlZC56b25lc1t6b25lSW5kZXhdID0gem9uZTtcbiAgICBzZWxlY3RlZC56b25lcyA9IGNsb25lKHNlbGVjdGVkLnpvbmVzKTtcblxuICAgIGNvbnN0IGZhY2lsaXR5RGljdGlvbmFyeSA9IGN0eC5nZXRTdGF0ZSgpLmRpY3Rpb25hcnk7XG4gICAgY29uc3QgZ3VpZCA9IGN0eC5nZXRTdGF0ZSgpLmd1aWQ7XG4gICAgZmFjaWxpdHlEaWN0aW9uYXJ5W2d1aWRdW3NlbGVjdGVkLmlkXS56b25lcyA9IHNlbGVjdGVkLnpvbmVzO1xuXG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgZGljdGlvbmFyeTogZmFjaWxpdHlEaWN0aW9uYXJ5LFxuICAgICAgc2VsZWN0ZWQsXG4gICAgICB6b25lczogc2VsZWN0ZWQuem9uZXMsXG4gICAgfSk7XG4gIH1cblxuICBoYW5kbGVTbWFydENvdW50ZXIoem9uZTogWm9uZUR0bykge1xuICAgIHRyeSB7XG4gICAgICBpZiAoem9uZT8uc21hcnRDb3VudGVyVmVoaWNsZVR5cGVKc29uKSB7XG4gICAgICAgIGNvbnN0IHBhcnNlZEpzb24gPSBKU09OLnBhcnNlKHpvbmUuc21hcnRDb3VudGVyVmVoaWNsZVR5cGVKc29uKTtcbiAgICAgICAgY29uc3Qgc21hcnRDb3VudGVyVmVoaWNsZVR5cGUgPSBvYmplY3RLZXlzdG9Mb3dlckNhc2UocGFyc2VkSnNvbik7XG5cbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHNtYXJ0Q291bnRlclZlaGljbGVUeXBlKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUGFyc2VkIEpTT04gc21hcnRDb3VudGVyVmVoaWNsZVR5cGUgaXMgbm90IGFuIGFycmF5Jyk7XG4gICAgICAgIH1cblxuICAgICAgICB6b25lLnNtYXJ0Wm9uZUNvdW50ZXJWZWhpY2xlVHlwZSA9IHNtYXJ0Q291bnRlclZlaGljbGVUeXBlLm1hcCgoc2M6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHNtYXJ0Wm9uZUNvdW50ZXJWZWhpY2xlVHlwZUR0byA9IG5ldyBTbWFydFpvbmVDb3VudGVyVmVoaWNsZVR5cGVEdG8oKTtcbiAgICAgICAgICBzbWFydFpvbmVDb3VudGVyVmVoaWNsZVR5cGVEdG8uY291bnRlciA9IHNjLmNvdW50ZXI7XG4gICAgICAgICAgc21hcnRab25lQ291bnRlclZlaGljbGVUeXBlRHRvLnpvbmVJZCA9IHpvbmUuaWQ7XG4gICAgICAgICAgc21hcnRab25lQ291bnRlclZlaGljbGVUeXBlRHRvLnZlaGljbGVUeXBlSWQgPSBzYy52ZWhpY2xldHlwZWlkO1xuICAgICAgICAgIHJldHVybiBzbWFydFpvbmVDb3VudGVyVmVoaWNsZVR5cGVEdG87XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAoem9uZT8uc21hcnRDb3VudGVyVmVoaWNsZUNsYXNzSnNvbikge1xuICAgICAgICBjb25zdCBwYXJzZWRKc29uID0gSlNPTi5wYXJzZSh6b25lLnNtYXJ0Q291bnRlclZlaGljbGVDbGFzc0pzb24pO1xuICAgICAgICBjb25zdCBzbWFydENvdW50ZXJWZWhpY2xlQ2xhc3MgPSBvYmplY3RLZXlzdG9Mb3dlckNhc2UocGFyc2VkSnNvbik7XG5cbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHNtYXJ0Q291bnRlclZlaGljbGVDbGFzcykpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BhcnNlZCBKU09OIHNtYXJ0Q291bnRlclZlaGljbGVDbGFzcyBpcyBub3QgYW4gYXJyYXknKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHpvbmUuc21hcnRab25lQ291bnRlclZlaGljbGVDbGFzcyA9IHNtYXJ0Q291bnRlclZlaGljbGVDbGFzcy5tYXAoKHNjOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCBzbWFydFpvbmVDb3VudGVyVmVoaWNsZUNsYXNzRHRvID0gbmV3IFNtYXJ0Wm9uZUNvdW50ZXJWZWhpY2xlQ2xhc3NEdG8oKTtcbiAgICAgICAgICBzbWFydFpvbmVDb3VudGVyVmVoaWNsZUNsYXNzRHRvLmNvdW50ZXIgPSBzYy5jb3VudGVyO1xuICAgICAgICAgIHNtYXJ0Wm9uZUNvdW50ZXJWZWhpY2xlQ2xhc3NEdG8uem9uZUlkID0gem9uZS5pZDtcbiAgICAgICAgICBzbWFydFpvbmVDb3VudGVyVmVoaWNsZUNsYXNzRHRvLnZlaGljbGVDbGFzc0lkID0gc2MudmVoaWNsZWNsYXNzaWQ7XG4gICAgICAgICAgcmV0dXJuIHNtYXJ0Wm9uZUNvdW50ZXJWZWhpY2xlQ2xhc3NEdG87XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gcGFyc2Ugc21hcnRDb3VudGVySnNvbjonLCBlcnJvcik7XG4gICAgICB6b25lLnNtYXJ0Wm9uZUNvdW50ZXJWZWhpY2xlQ2xhc3MgPSBbXTtcbiAgICAgIHpvbmUuc21hcnRab25lQ291bnRlclZlaGljbGVUeXBlID0gW107XG4gICAgfVxuICB9XG5cbiAgQEFjdGlvbihTZXJ2aWNlc1J1bm5pbmdTdGF0dXNDaGFuZ2VkQWN0aW9uKVxuICBvblNlcnZpY2VzUnVubmluZ1N0YXR1c0NoYW5nZWRBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8RmFjaWxpdHlTdGF0ZU1vZGVsPixcbiAgICB7IHNlcnZpY2VzUnVubmluZ1N0YXR1cywgZ3VpZCB9OiBTZXJ2aWNlc1J1bm5pbmdTdGF0dXNDaGFuZ2VkQWN0aW9uKSB7XG4gICAgY29uc3Qgc2VydmljZXNSdW5uaW5nU3RhdHVzRGljdGlvbmFyeSA9IGN0eC5nZXRTdGF0ZSgpLnNlcnZpY2VzUnVubmluZ1N0YXR1c0RpY3Rpb25hcnk7XG4gICAgY29uc3QgZmFjaWxpdHlEaWN0aW9uYXJ5ID0gY3R4LmdldFN0YXRlKCkuZGljdGlvbmFyeTtcbiAgICBzZXJ2aWNlc1J1bm5pbmdTdGF0dXMgPSB0aGlzLnVwZGF0ZVNlcnZpY2VSdW5uaW5nU3RhdHVzRmxhZ3Moc2VydmljZXNSdW5uaW5nU3RhdHVzRGljdGlvbmFyeVtndWlkXSwgc2VydmljZXNSdW5uaW5nU3RhdHVzKTtcbiAgICBzZXJ2aWNlc1J1bm5pbmdTdGF0dXNEaWN0aW9uYXJ5W2d1aWRdID0gc2VydmljZXNSdW5uaW5nU3RhdHVzO1xuICAgIGN0eC5wYXRjaFN0YXRlKHsgc2VydmljZXNSdW5uaW5nU3RhdHVzRGljdGlvbmFyeSB9KTtcblxuICAgIC8vIFVwZGF0aW5nIFBhcmtDb25uZWN0aW9uU3RhdHVzIGZvciBwYXJrc1xuICAgIGlmIChmYWNpbGl0eURpY3Rpb25hcnkpIHtcbiAgICAgIGNvbnN0IGNvbm5lY3Rpb25TdGF0dXNEaWN0aW9uYXJ5ID0gY2xvbmVEZWVwKGN0eC5nZXRTdGF0ZSgpLmNvbm5lY3Rpb25TdGF0dXNEaWN0aW9uYXJ5KTtcbiAgICAgIGNvbnN0IGZhY2lsaXRpZXM6IEZhY2lsaXR5RHRvW10gPSBPYmplY3QudmFsdWVzKGZhY2lsaXR5RGljdGlvbmFyeVtndWlkXSk7XG4gICAgICBmb3IgKGNvbnN0IGZhY2lsaXR5IG9mIGZhY2lsaXRpZXMpIHtcbiAgICAgICAgY29ubmVjdGlvblN0YXR1c0RpY3Rpb25hcnlbZ3VpZF1bZmFjaWxpdHkuaWRdID0gdGhpcy5nbG9iYWxFcnJvclNlcnZpY2UuZ2V0UGFya0Nvbm5lY3Rpb25TdGF0dXMoZ3VpZCwgZmFjaWxpdHksIHNlcnZpY2VzUnVubmluZ1N0YXR1cywgZmFjaWxpdHlEaWN0aW9uYXJ5KTtcbiAgICAgIH1cbiAgICAgIGN0eC5wYXRjaFN0YXRlKHsgY29ubmVjdGlvblN0YXR1c0RpY3Rpb25hcnkgfSk7XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVNZW51SXRlbXNQYXJrQ29ubmVjdGlvblN0YXR1cyhjdHgpO1xuICB9XG5cbiAgQEFjdGlvbihGYWNpbGl0eUNoYW5nZWRBY3Rpb24pXG4gIG9uRmFjaWxpdHlDaGFuZ2VkQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PEZhY2lsaXR5U3RhdGVNb2RlbD4sIHsgZmFjaWxpdHksIGd1aWQgfTogRmFjaWxpdHlDaGFuZ2VkQWN0aW9uKSB7XG4gICAgY29uc3QgZmFjaWxpdHlEaWN0aW9uYXJ5ID0gY3R4LmdldFN0YXRlKCkuZGljdGlvbmFyeTtcbiAgICBjb25zdCBzZWxlY3RlZEZhY2lsaXR5ID0gZmFjaWxpdHlEaWN0aW9uYXJ5W2d1aWRdID8gZmFjaWxpdHlEaWN0aW9uYXJ5W2d1aWRdW2ZhY2lsaXR5LmlkXSA6IG51bGw7XG4gICAgaWYgKCFzZWxlY3RlZEZhY2lsaXR5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY29tcGxldGVkRmFjaWxpdHkgPSB0aGlzLmFzc2lnbkZhY2lsaXR5KHNlbGVjdGVkRmFjaWxpdHksIGZhY2lsaXR5KTtcbiAgICBmYWNpbGl0eURpY3Rpb25hcnlbZ3VpZF1bZmFjaWxpdHkuaWRdID0gY29tcGxldGVkRmFjaWxpdHk7XG5cbiAgICBjdHgucGF0Y2hTdGF0ZSh7IGRpY3Rpb25hcnk6IGNsb25lRGVlcChmYWNpbGl0eURpY3Rpb25hcnkpIH0pO1xuXG4gICAgaWYgKHRoaXMuaXNQYXJrQWN0aXZlKGN0eCwgZ3VpZCwgZmFjaWxpdHkuaWQpKSB7XG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgIHNlbGVjdGVkOiBjb21wbGV0ZWRGYWNpbGl0eSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIFVwZGF0aW5nIFBhcmtDb25uZWN0aW9uU3RhdHVzIGZvciBwYXJrc1xuICAgIGNvbnN0IGNvbm5lY3Rpb25TdGF0dXNEaWN0aW9uYXJ5ID0gY2xvbmVEZWVwKGN0eC5nZXRTdGF0ZSgpLmNvbm5lY3Rpb25TdGF0dXNEaWN0aW9uYXJ5KTtcbiAgICBjb25zdCBzZXJ2aWNlc1J1bm5pbmdTdGF0dXNEaWN0aW9uYXJ5ID0gY3R4LmdldFN0YXRlKCkuc2VydmljZXNSdW5uaW5nU3RhdHVzRGljdGlvbmFyeTtcbiAgICBjb25zdCBmYWNpbGl0aWVzOiBGYWNpbGl0eUR0b1tdID0gT2JqZWN0LnZhbHVlcyhmYWNpbGl0eURpY3Rpb25hcnlbZ3VpZF0pO1xuICAgIGZvciAoY29uc3QgZmFjaWxpdHkgb2YgZmFjaWxpdGllcykge1xuICAgICAgY29ubmVjdGlvblN0YXR1c0RpY3Rpb25hcnlbZ3VpZF1bZmFjaWxpdHkuaWRdID0gdGhpcy5nbG9iYWxFcnJvclNlcnZpY2UuZ2V0UGFya0Nvbm5lY3Rpb25TdGF0dXMoZ3VpZCwgZmFjaWxpdHlEaWN0aW9uYXJ5W2d1aWRdW2ZhY2lsaXR5LmlkXSwgc2VydmljZXNSdW5uaW5nU3RhdHVzRGljdGlvbmFyeVtndWlkXSwgZmFjaWxpdHlEaWN0aW9uYXJ5KTtcbiAgICB9XG4gICAgY3R4LnBhdGNoU3RhdGUoeyBjb25uZWN0aW9uU3RhdHVzRGljdGlvbmFyeSB9KTtcblxuICAgIHRoaXMudXBkYXRlTWVudUl0ZW1zUGFya0Nvbm5lY3Rpb25TdGF0dXMoY3R4KTtcbiAgfVxuXG4gIEBBY3Rpb24oU2V0QmFzaWNNZW51QWN0aW9uKVxuICBvblNldEJhc2ljTWVudUFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxGYWNpbGl0eVN0YXRlTW9kZWw+LCB7IHNtYXJ0cGFya01hcCwgYXBwTW9kdWxlIH06IFNldEJhc2ljTWVudUFjdGlvbikge1xuICAgIGN0eC5kaXNwYXRjaChuZXcgTWVudUxvYWRBY3Rpb24odGhpcy50b0Jhc2ljTWVudUl0ZW1zKGN0eCwgc21hcnRwYXJrTWFwLCBjdHguZ2V0U3RhdGUoKS5kaWN0aW9uYXJ5LCBhcHBNb2R1bGUpLCBhcHBNb2R1bGUpKTtcbiAgfVxuXG4gIEBBY3Rpb24oTG9hZEFjY291bnRNYW5hZ2VtZW50R3Vlc3RHcm91cEFjdGlvbilcbiAgb25Mb2FkQWNjb3VudE1hbmFnZW1lbnRHdWVzdEdyb3Vwc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxGYWNpbGl0eVN0YXRlTW9kZWw+LCBhY3Rpb246IExvYWRBY2NvdW50TWFuYWdlbWVudEd1ZXN0R3JvdXBBY3Rpb24pIHtcbiAgICBjb25zdCBnZXRHcm91cHMkID0gdGhpcy5ncm91cFJwY1NlcnZpY2VQcm94eS5nZXRHdWVzdEdyb3VwKGFjdGlvbi5ndWlkLCBhY3Rpb24ucGFya0lkLCBhY3Rpb24uc2VhcmNoUGFyYW1zRHRvPy5tYXhSZXN1bHRzLFxuICAgICAgYWN0aW9uLnNlYXJjaFBhcmFtc0R0bz8uc2VhcmNoVGVybSwgYWN0aW9uLnNlYXJjaFBhcmFtc0R0bz8ub3JkZXJCeS5jb2x1bW4sXG4gICAgICBhY3Rpb24uc2VhcmNoUGFyYW1zRHRvPy5vcmRlckJ5Lm9yZGVyRGlyZWN0aW9uKTtcblxuICAgIHJldHVybiBnZXRHcm91cHMkLnBpcGUodGFwKGdyb3VwcyA9PiB7XG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgIGdyb3VwczogZ3JvdXBzLmRhdGEsXG4gICAgICB9KTtcbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKExvYWRSZXBvcnRzR3Vlc3RHcm91cEFjdGlvbilcbiAgb25Mb2FkUmVwb3J0c0d1ZXN0R3JvdXBzQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PEZhY2lsaXR5U3RhdGVNb2RlbD4sIGFjdGlvbjogTG9hZFJlcG9ydHNHdWVzdEdyb3VwQWN0aW9uKSB7XG4gICAgY29uc3QgZ2V0R3JvdXBzJCA9IHRoaXMuZ3JvdXBScGNTZXJ2aWNlUHJveHkuZ2V0R3Vlc3RHcm91cChhY3Rpb24uZ3VpZCwgYWN0aW9uLnBhcmtJZCwgYWN0aW9uLnNlYXJjaFBhcmFtc0R0bz8ubWF4UmVzdWx0cyxcbiAgICAgIGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8/LnNlYXJjaFRlcm0sIGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8/Lm9yZGVyQnkuY29sdW1uLFxuICAgICAgYWN0aW9uLnNlYXJjaFBhcmFtc0R0bz8ub3JkZXJCeS5vcmRlckRpcmVjdGlvbik7XG5cbiAgICByZXR1cm4gZ2V0R3JvdXBzJC5waXBlKHRhcChncm91cHMgPT4ge1xuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICBncm91cHM6IGdyb3Vwcy5kYXRhLFxuICAgICAgfSk7XG4gICAgfSkpO1xuICB9XG5cbiAgQEFjdGlvbihMb2FkQ2F0ZWdvcmllc0FjdGlvbiwgeyBjYW5jZWxVbmNvbXBsZXRlZDogdHJ1ZSB9KVxuICBvbkxvYWRDYXRlZ29yaWVzQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PEZhY2lsaXR5U3RhdGVNb2RlbD4sIGFjdGlvbjogTG9hZENhdGVnb3JpZXNBY3Rpb24pIHtcbiAgICBjb25zdCBnZXRDYXRlZ29yaWVzJCA9IHRoaXMuY2F0ZWdvcnlTZXJ2aWNlUHJveHkuZ2V0Q2F0ZWdvcmllcyhhY3Rpb24uZ3VpZCwgYWN0aW9uLnBhcmtJZCwgYWN0aW9uLnNlYXJjaFBhcmFtc0R0bz8ubWF4UmVzdWx0cyxcbiAgICAgIGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8/LnNlYXJjaFRlcm0sIGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8/Lm9yZGVyQnkuY29sdW1uLFxuICAgICAgYWN0aW9uLnNlYXJjaFBhcmFtc0R0bz8ub3JkZXJCeS5vcmRlckRpcmVjdGlvbik7XG4gICAgcmV0dXJuIGdldENhdGVnb3JpZXMkLnBpcGUodGFwKGNhdGVnb3JpZXMgPT4ge1xuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICBjYXRlZ29yaWVzOiBjYXRlZ29yaWVzLmRhdGEsXG4gICAgICB9KTtcbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKExvYWRSZXBvcnRzSm9iVGl0bGVzQWN0aW9uKVxuICBvbkxvYWRSZXBvcnRzSm9iVGl0bGVzQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PEZhY2lsaXR5U3RhdGVNb2RlbD4sIGFjdGlvbjogTG9hZFJlcG9ydHNKb2JUaXRsZXNBY3Rpb24pIHtcbiAgICBjb25zdCBnZXRKb2JUaXRsZXMkID0gdGhpcy5qb2JUaXRsZVJwY1NlcnZpY2VQcm94eS5nZXRKb2JUaXRsZXMoYWN0aW9uLmd1aWQsIGFjdGlvbi5wYXJrSWQsIGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8/Lm1heFJlc3VsdHMsXG4gICAgICBhY3Rpb24uc2VhcmNoUGFyYW1zRHRvPy5zZWFyY2hUZXJtLCBhY3Rpb24uc2VhcmNoUGFyYW1zRHRvPy5vcmRlckJ5LmNvbHVtbixcbiAgICAgIGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8/Lm9yZGVyQnkub3JkZXJEaXJlY3Rpb24pO1xuICAgIHJldHVybiBnZXRKb2JUaXRsZXMkLnBpcGUodGFwKGpvYlRpdGxlcyA9PiB7XG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgIGpvYlRpdGxlczogam9iVGl0bGVzLmRhdGEsXG4gICAgICB9KTtcbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKExvYWRBY2NvdW50TWFuYWdlbWVudEpvYlRpdGxlc0FjdGlvbilcbiAgb25Mb2FkQWNjb3VudE1hbmFnZW1lbnRKb2JUaXRsZXNBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8RmFjaWxpdHlTdGF0ZU1vZGVsPiwgYWN0aW9uOiBMb2FkQWNjb3VudE1hbmFnZW1lbnRKb2JUaXRsZXNBY3Rpb24pIHtcbiAgICBjb25zdCBnZXRKb2JUaXRsZXMkID0gdGhpcy5qb2JUaXRsZVJwY1NlcnZpY2VQcm94eS5nZXRKb2JUaXRsZXMoYWN0aW9uLmd1aWQsIGFjdGlvbi5wYXJrSWQsIGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8/Lm1heFJlc3VsdHMsXG4gICAgICBhY3Rpb24uc2VhcmNoUGFyYW1zRHRvPy5zZWFyY2hUZXJtLCBhY3Rpb24uc2VhcmNoUGFyYW1zRHRvPy5vcmRlckJ5LmNvbHVtbixcbiAgICAgIGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8/Lm9yZGVyQnkub3JkZXJEaXJlY3Rpb24pO1xuXG4gICAgcmV0dXJuIGdldEpvYlRpdGxlcyQucGlwZSh0YXAoam9iVGl0bGVzID0+IHtcbiAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgam9iVGl0bGVzOiBqb2JUaXRsZXMuZGF0YSxcbiAgICAgIH0pO1xuICAgIH0pKTtcbiAgfVxuXG4gIEBBY3Rpb24oTG9hZFJlcG9ydHNab25lc0FjdGlvbiwgeyBjYW5jZWxVbmNvbXBsZXRlZDogdHJ1ZSB9KVxuICBvbkxvYWRSZXBvcnRzWm9uZXNBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8RmFjaWxpdHlTdGF0ZU1vZGVsPiwgYWN0aW9uOiBMb2FkUmVwb3J0c1pvbmVzQWN0aW9uKSB7XG4gICAgY29uc3QgZ2V0Wm9uZXMkID0gdGhpcy56b25lUnBjU2VydmljZVByb3h5LmdldFpvbmVzQnlTZWFyY2hQYXJhbXMoYWN0aW9uLmd1aWQsIGFjdGlvbi5wYXJrSWQsIGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8/Lm1heFJlc3VsdHMsXG4gICAgICBhY3Rpb24uc2VhcmNoUGFyYW1zRHRvPy5zZWFyY2hUZXJtLCBhY3Rpb24uc2VhcmNoUGFyYW1zRHRvPy5vcmRlckJ5LmNvbHVtbixcbiAgICAgIGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8/Lm9yZGVyQnkub3JkZXJEaXJlY3Rpb24pO1xuXG4gICAgcmV0dXJuIGdldFpvbmVzJC5waXBlKHRhcCh6b25lcyA9PiB7XG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgIHpvbmVzOiB6b25lcy5kYXRhLFxuICAgICAgfSk7XG4gICAgfSkpO1xuICB9XG5cbiAgQEFjdGlvbihMb2FkQWNjZXNzUHJvZmlsZVpvbmVzQWN0aW9uLCB7IGNhbmNlbFVuY29tcGxldGVkOiB0cnVlIH0pXG4gIG9uTG9hZEFjY2Vzc1Byb2ZpbGVaWm9uZXNBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8RmFjaWxpdHlTdGF0ZU1vZGVsPiwgYWN0aW9uOiBMb2FkQWNjZXNzUHJvZmlsZVpvbmVzQWN0aW9uKSB7XG4gICAgY29uc3QgZ2V0Wm9uZXMkID0gdGhpcy56b25lUnBjU2VydmljZVByb3h5LmdldFpvbmVzQnlTZWFyY2hQYXJhbXMoYWN0aW9uLmd1aWQsIGFjdGlvbi5wYXJrSWQsIGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8/Lm1heFJlc3VsdHMsXG4gICAgICBhY3Rpb24uc2VhcmNoUGFyYW1zRHRvPy5zZWFyY2hUZXJtLCBhY3Rpb24uc2VhcmNoUGFyYW1zRHRvPy5vcmRlckJ5LmNvbHVtbixcbiAgICAgIGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8/Lm9yZGVyQnkub3JkZXJEaXJlY3Rpb24pO1xuXG4gICAgcmV0dXJuIGdldFpvbmVzJC5waXBlKHRhcCh6b25lcyA9PiB7XG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgIHpvbmVzOiB6b25lcy5kYXRhLFxuICAgICAgfSk7XG4gICAgfSkpO1xuICB9XG5cbiAgQEFjdGlvbihMb2FkQ2NNYWluWm9uZXNBY3Rpb24sIHsgY2FuY2VsVW5jb21wbGV0ZWQ6IHRydWUgfSlcbiAgb25Mb2FkQ2NNYWluWm9uZXNBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8RmFjaWxpdHlTdGF0ZU1vZGVsPiwgYWN0aW9uOiBMb2FkQ2NNYWluWm9uZXNBY3Rpb24pIHtcbiAgICBjb25zdCBnZXRab25lcyQgPSB0aGlzLnpvbmVScGNTZXJ2aWNlUHJveHkuZ2V0Wm9uZXNCeVNlYXJjaFBhcmFtcyhhY3Rpb24uZ3VpZCwgYWN0aW9uLnBhcmtJZCwgYWN0aW9uLnNlYXJjaFBhcmFtc0R0bz8ubWF4UmVzdWx0cyxcbiAgICAgIGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8/LnNlYXJjaFRlcm0sIGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8/Lm9yZGVyQnkuY29sdW1uLFxuICAgICAgYWN0aW9uLnNlYXJjaFBhcmFtc0R0bz8ub3JkZXJCeS5vcmRlckRpcmVjdGlvbik7XG5cbiAgICByZXR1cm4gZ2V0Wm9uZXMkLnBpcGUodGFwKHpvbmVzID0+IHtcbiAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgem9uZXM6IHpvbmVzLmRhdGEsXG4gICAgICB9KTtcbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKExvYWRac0FjdGlvbiwgeyBjYW5jZWxVbmNvbXBsZXRlZDogdHJ1ZSB9KVxuICBvbkxvYWRac0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxGYWNpbGl0eVN0YXRlTW9kZWw+LCBhY3Rpb246IExvYWRac0FjdGlvbikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIHo6IG51bGwsXG4gICAgfSk7XG5cbiAgICBjb25zdCBhcHBNb2R1bGU6IEFwcE1vZHVsZSA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoU2lkZW5hdlN0YXRlLmFwcE1vZHVsZSk7XG4gICAgbGV0IGdldFpzJDogT2JzZXJ2YWJsZTxScGMuWkR0b0lFbnVtZXJhYmxlSHR0cFJlc3BvbnNlRGF0YT47XG4gICAgc3dpdGNoICh0cnVlKSB7XG4gICAgICBjYXNlIGFwcE1vZHVsZSA9PT0gQXBwTW9kdWxlLkNjOlxuICAgICAgICBnZXRacyQgPSB0aGlzLnpScGNTZXJ2aWNlUHJveHkuZ2V0Q2NacyhhY3Rpb24uZ3VpZCwgYWN0aW9uLnBhcmtJZCwgYWN0aW9uLnNlYXJjaFBhcmFtc0R0bz8ubWF4UmVzdWx0cyxcbiAgICAgICAgICBhY3Rpb24uc2VhcmNoUGFyYW1zRHRvPy5zZWFyY2hUZXJtLCBhY3Rpb24uc2VhcmNoUGFyYW1zRHRvPy5vcmRlckJ5LmNvbHVtbixcbiAgICAgICAgICBhY3Rpb24uc2VhcmNoUGFyYW1zRHRvPy5vcmRlckJ5Lm9yZGVyRGlyZWN0aW9uKTtcbiAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIGFwcE1vZHVsZSA9PT0gQXBwTW9kdWxlLlJlcG9ydHM6XG4gICAgICAgIGdldFpzJCA9IHRoaXMuelJwY1NlcnZpY2VQcm94eS5nZXRSZXBvcnRzWnMoYWN0aW9uLmd1aWQsIGFjdGlvbi5wYXJrSWQsIGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8/Lm1heFJlc3VsdHMsXG4gICAgICAgICAgYWN0aW9uLnNlYXJjaFBhcmFtc0R0bz8uc2VhcmNoVGVybSwgYWN0aW9uLnNlYXJjaFBhcmFtc0R0bz8ub3JkZXJCeS5jb2x1bW4sXG4gICAgICAgICAgYWN0aW9uLnNlYXJjaFBhcmFtc0R0bz8ub3JkZXJCeS5vcmRlckRpcmVjdGlvbik7XG4gICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDogXG4gICAgICBjb25zb2xlLmxvZyhcInVuc3VwcG9ydGVkIGFwcG1vZHVsZSBmb3IgenNcIik7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gZ2V0WnMkLnBpcGUodGFwKHogPT4ge1xuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICB6OiB6LmRhdGEsXG4gICAgICB9KTtcbiAgICAgfSkpO1xuICB9XG5cbiAgQEFjdGlvbihDbGVhckdyb3Vwc0FjdGlvbilcbiAgb25DbGVhckdyb3Vwc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxGYWNpbGl0eVN0YXRlTW9kZWw+KSB7XG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgZ3JvdXBzOiBudWxsLFxuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihDbGVhckNhdGVnb3JpZXNBY3Rpb24pXG4gIG9uQ2xlYXJDYXRlZ29yaWVzQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PEZhY2lsaXR5U3RhdGVNb2RlbD4pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBjYXRlZ29yaWVzOiBudWxsLFxuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihDbGVhckpvYlRpdGxlc0FjdGlvbilcbiAgb25DbGVhckpvYlRpdGxlc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxGYWNpbGl0eVN0YXRlTW9kZWw+KSB7XG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgam9iVGl0bGVzOiBudWxsLFxuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihDbGVhclpvbmVzQWN0aW9uKVxuICBvbkNsZWFyWm9uZXNBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8RmFjaWxpdHlTdGF0ZU1vZGVsPikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIHpvbmVzOiBudWxsLFxuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihDbGVhclpzQWN0aW9uKVxuICBvbkNsZWFyWnNBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8RmFjaWxpdHlTdGF0ZU1vZGVsPikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIHo6IG51bGwsXG4gICAgfSk7XG4gIH1cblxuICBAQWN0aW9uKFNldFNlbGVjdGVkUGFya0FjdGlvbilcbiAgb25TZXRTZWxlY3RlZFBhcmtBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8RmFjaWxpdHlTdGF0ZU1vZGVsPiwgeyBndWlkLCBmYWNpbGl0eSB9OiBTZXRTZWxlY3RlZFBhcmtBY3Rpb24pIHtcbiAgICBjb25zdCBhbGxvd2VkQWN0aW9ucyA9IGNvbnZlcnRGZWF0dXJlUGVybWlzc2lvbnNUb0RpY3Rpb25hcnkoZmFjaWxpdHk/LmZlYXR1cmVQZXJtaXNzaW9ucyk7XG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgZ3VpZCxcbiAgICAgIHBhcmtJZDogZmFjaWxpdHk/LmlkLFxuICAgICAgbXVsdGlQYXJrUGFyZW50SUQ6IGZhY2lsaXR5Py5tdWx0aVBhcmtQYXJlbnRJRCxcbiAgICAgIHNlbGVjdGVkOiBmYWNpbGl0eSxcbiAgICAgIHpvbmVzOiBmYWNpbGl0eT8uem9uZXMsXG4gICAgICBhbGxvd2VkQWN0aW9uc1xuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihDbGVhclNlbGVjdGVkRmFjaWxpdHlBY3Rpb24pXG4gIG9uQ2xlYXJTZWxlY3RlZEZhY2lsaXR5QWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PEZhY2lsaXR5U3RhdGVNb2RlbD4sIHsgfTogQ2xlYXJTZWxlY3RlZEZhY2lsaXR5QWN0aW9uKSB7XG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgZ3VpZDogJycsXG4gICAgICBwYXJrSWQ6IG51bGwsXG4gICAgICBtdWx0aVBhcmtQYXJlbnRJRDogbnVsbCxcbiAgICAgIHNlbGVjdGVkOiBudWxsLFxuICAgICAgem9uZXM6IG51bGwsXG4gICAgICBhbGxvd2VkQWN0aW9uczoge31cbiAgICB9KTtcbiAgfVxuXG4gIEBBY3Rpb24oQ2xlYXJJbmFjdGl2ZVNlbGVjdGVkUGFya0FjdGlvbilcbiAgb25DbGVhckluYWN0aXZlU2VsZWN0ZWRQYXJrQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PEZhY2lsaXR5U3RhdGVNb2RlbD4sIGFjdGlvbjogQ2xlYXJJbmFjdGl2ZVNlbGVjdGVkUGFya0FjdGlvbikge1xuICAgIGNvbnN0IHNlbGVjdGVkID0gY3R4LmdldFN0YXRlKCkuc2VsZWN0ZWQ7XG5cbiAgICAvLyBJZiB0aGUgc2VsZWN0ZWQgZmFjaWxpdHkgaXMgSW5hY3RpdmUgYW5kIG5vdCBhIFN1cGVycGFyaywgd2UgZGVzZWxlY3RcbiAgICAvLyBUaGlzIG1lYW4gd2Ugd29uJ3QgY2FycnkgYW4gSW5hY3RpdmUgcGFyayB0byB0aGUgbmV4dCBtb2R1bGUgYXMgc2VsZWN0ZWRcbiAgICBpZiAoIXNlbGVjdGVkPy5hY3RpdmUgJiYgIXNlbGVjdGVkPy5pc011bHRpUGFyaykge1xuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICBndWlkOiAnJyxcbiAgICAgICAgcGFya0lkOiBudWxsLFxuICAgICAgICBtdWx0aVBhcmtQYXJlbnRJRDogbnVsbCxcbiAgICAgICAgc2VsZWN0ZWQ6IG51bGwsXG4gICAgICAgIHpvbmVzOiBudWxsLFxuICAgICAgICBhbGxvd2VkQWN0aW9uczoge30sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBAQWN0aW9uKEZhY2lsaXR5UmVtb3RlQ29tbWFuZEV4ZWN1dGVkQWN0aW9uKVxuICBvbkZhY2lsaXR5UmVtb3RlQ29tbWFuZEV4ZWN1dGVkQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PEZhY2lsaXR5U3RhdGVNb2RlbD4sIHsgZmFjaWxpdHlSZW1vdGVDb21tYW5kRXZlbnQgfTogRmFjaWxpdHlSZW1vdGVDb21tYW5kRXhlY3V0ZWRBY3Rpb24pIHtcbiAgICBjb25zdCBmYWNpbGl0eSA9IGN0eC5nZXRTdGF0ZSgpLmRpY3Rpb25hcnlbZmFjaWxpdHlSZW1vdGVDb21tYW5kRXZlbnQuZ3VpZF1bZmFjaWxpdHlSZW1vdGVDb21tYW5kRXZlbnQucGFya0lkXTtcblxuICAgIGNvbnN0IG9wZXJhdGlvblR5cGVLZXkgPSBGYWNpbGl0eVJlbW90ZUNvbW1hbmRzTG9jYWxpemF0aW9uS2V5W0ZhY2lsaXR5UmVtb3RlQ29tbWFuZFR5cGVzW2ZhY2lsaXR5UmVtb3RlQ29tbWFuZEV2ZW50LnR5cGVdXTtcbiAgICBjb25zdCBjb25maWc6IENvbW1hbmROb3RpZmljYXRpb25Db25maWcgPSB7XG4gICAgICBtZXNzYWdlczogW3sgdmFsdWU6IGZhY2lsaXR5Lm5hbWUsIGNsYXNzOiBOb3RpZmljYXRpb25DbGFzcy5ib2R5IH1dLFxuICAgICAgY29tbWFuZDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQob3BlcmF0aW9uVHlwZUtleSlcbiAgICB9O1xuXG4gICAgaWYgKGZhY2lsaXR5UmVtb3RlQ29tbWFuZEV2ZW50LnR5cGUgPT09IEZhY2lsaXR5UmVtb3RlQ29tbWFuZFR5cGVzLlNldEFjdGl2ZVJhdGUpIHtcbiAgICAgIHRoaXMucHJvY2Vzc0R5bmFtaWNQcmljaW5nU2V0QWN0aXZlUmF0ZShmYWNpbGl0eVJlbW90ZUNvbW1hbmRFdmVudCwgY29uZmlnKTtcbiAgICB9XG5cbiAgICBvZihmYWNpbGl0eVJlbW90ZUNvbW1hbmRFdmVudCkucGlwZShzd2l0Y2hNYXAoZmFjaWxpdHlSZW1vdGVDb21tYW5kRXZlbnQgPT4ge1xuICAgICAgcmV0dXJuIGZhY2lsaXR5UmVtb3RlQ29tbWFuZEV2ZW50LnN1Y2Nlc3MgPyBvZihmYWNpbGl0eVJlbW90ZUNvbW1hbmRFdmVudC5zdWNjZXNzKSA6IHRocm93RXJyb3IoJ0ZhaWxlZCBleGVjdXRpbmcgY29tbWFuZCcpO1xuICAgIH0pLCB0aGlzLmNvbW1hbmROb3RpZmljYXRpb25TZXJ2aWNlLmRpc3BsYXkoY29uZmlnKSkuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBAQWN0aW9uKExvYWRNYWNyb0NvbW1hbmRzQWN0aW9uLCB7IGNhbmNlbFVuY29tcGxldGVkOiB0cnVlIH0pXG4gIG9uTG9hZE1hY3JvQ29tbWFuZHNBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8RmFjaWxpdHlTdGF0ZU1vZGVsPiwgeyBwYXJrSWQsIGd1aWQgfTogTG9hZE1hY3JvQ29tbWFuZHNBY3Rpb24pIHtcbiAgICBjb25zdCBtYWNyb0NvbW1hbmRzJCA9IHRoaXMucmVtb3RlQ29tbWFuZFJwY1NlcnZpY2VQcm94eS5nZXRNYWNyb0NvbW1hbmRzKGd1aWQsIHBhcmtJZCk7XG5cbiAgICByZXR1cm4gbWFjcm9Db21tYW5kcyQucGlwZSh0YXAobWFjcm9Db21tYW5kcyA9PiB7XG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgIG1hY3JvQ29tbWFuZHM6IG1hY3JvQ29tbWFuZHMuZGF0YVxuICAgICAgfSk7XG4gICAgfSkpO1xuICB9XG5cbiAgQEFjdGlvbihDbGVhck1hY3JvQ29tbWFuZHNBY3Rpb24pXG4gIG9uQ2xlYXJNYWNyb0NvbW1hbmRzQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PEZhY2lsaXR5U3RhdGVNb2RlbD4pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBtYWNyb0NvbW1hbmRzOiBbXSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlRmFjaWxpdGllcyhjdHg6IFN0YXRlQ29udGV4dDxGYWNpbGl0eVN0YXRlTW9kZWw+LCBndWlkOiBzdHJpbmcsIHBhcmtJZDogbnVtYmVyLCBhcHBNb2R1bGU6IEFwcE1vZHVsZSxcbiAgICBmYWNpbGl0eTogRmFjaWxpdHlEdG8sIGZhY2lsaXRpZXNNYXA/OiBTdHJpbmdNYXA8RmFjaWxpdHlEdG9bXT4pIHtcbiAgICBjb25zdCBjbGllbnRTZXJ2ZXJEaWZmRGljdGlvbmFyeSA9IGN0eC5nZXRTdGF0ZSgpLmNsaWVudFNlcnZlckRpZmZEaWN0aW9uYXJ5O1xuICAgIGNvbnN0IGZhY2lsaXR5RGljdGlvbmFyeSA9IGN0eC5nZXRTdGF0ZSgpLmRpY3Rpb25hcnk7XG4gICAgY29uc3Qgbm93TW9tZW50ID0gbW9tZW50KCk7XG5cbiAgICBpZiAoZmFjaWxpdGllc01hcCkge1xuICAgICAgZmFjaWxpdGllc01hcFtndWlkXS5mb3JFYWNoKGYgPT4ge1xuICAgICAgICBmLmNsb3VkSWQgPSBmLmNsb3VkSWQgPSBmYWNpbGl0eURpY3Rpb25hcnlbZ3VpZF1bZi5pZF0uY2xvdWRJZDtcbiAgICAgICAgZi5mZWF0dXJlUGVybWlzc2lvbnMgPSBmYWNpbGl0eURpY3Rpb25hcnlbZ3VpZF1bZi5pZF0uZmVhdHVyZVBlcm1pc3Npb25zO1xuICAgICAgICBmLnBlcm1pc3Npb25zID0gZmFjaWxpdHlEaWN0aW9uYXJ5W2d1aWRdW2YuaWRdLnBlcm1pc3Npb25zO1xuICAgICAgICBmYWNpbGl0eURpY3Rpb25hcnlbZ3VpZF1bZi5pZF0gPSB0aGlzLnVwZGF0ZUZhY2lsaXR5Q29ubmVjdGl2aXR5RmxhZ3MoZmFjaWxpdHlEaWN0aW9uYXJ5W2d1aWRdW2YuaWRdLCBmKTtcbiAgICAgICAgcmV0dXJuIGZhY2lsaXR5RGljdGlvbmFyeVtndWlkXVtmLmlkXTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBmYWNpbGl0eS5jbG91ZElkID0gZmFjaWxpdHlEaWN0aW9uYXJ5W2d1aWRdW2ZhY2lsaXR5LmlkXS5jbG91ZElkO1xuICAgICAgZmFjaWxpdHkuZmVhdHVyZVBlcm1pc3Npb25zID0gZmFjaWxpdHlEaWN0aW9uYXJ5W2d1aWRdW2ZhY2lsaXR5LmlkXS5mZWF0dXJlUGVybWlzc2lvbnM7XG4gICAgICBmYWNpbGl0eS5wZXJtaXNzaW9ucyA9IGZhY2lsaXR5RGljdGlvbmFyeVtndWlkXVtmYWNpbGl0eS5pZF0ucGVybWlzc2lvbnM7XG4gICAgICBmYWNpbGl0eURpY3Rpb25hcnlbZ3VpZF1bcGFya0lkXSA9IHRoaXMudXBkYXRlRmFjaWxpdHlDb25uZWN0aXZpdHlGbGFncyhmYWNpbGl0eURpY3Rpb25hcnlbZ3VpZF1bcGFya0lkXSwgZmFjaWxpdHkpO1xuICAgIH1cblxuICAgIGNsaWVudFNlcnZlckRpZmZEaWN0aW9uYXJ5W2d1aWRdID0gdGhpcy5nZXRDbGllbnRTZXJ2ZXJUaW1lRGlmZihmYWNpbGl0eSwgbm93TW9tZW50KTtcbiAgICB0aGlzLnBhdGNoRGlmZkRpY3RpbmFyeVRvU3RvcmUoY3R4LCBjbGllbnRTZXJ2ZXJEaWZmRGljdGlvbmFyeSk7XG4gICAgdGhpcy5wYXRjaEZhY2lsaXRpZXNUb1N0b3JlKGN0eCwgZmFjaWxpdHlEaWN0aW9uYXJ5LCBmYWNpbGl0eURpY3Rpb25hcnlbZ3VpZF1bcGFya0lkXSwgYXBwTW9kdWxlKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlRmFjaWxpdHlDb25uZWN0aXZpdHlGbGFncyhzdG9yZWRGYWNpbGl0eTogRmFjaWxpdHlEdG8sIGluY29taW5nRmFjaWxpdHk6IEZhY2lsaXR5RHRvKSB7XG4gICAgY29uc3QgY2xvdWREYXRlVGltZVV0YyA9IHRoaXMuZ2V0Q2xvdWREYXRlVGltZVV0YygpO1xuICAgIGluY29taW5nRmFjaWxpdHkubHByRGlzY29ubmVjdGVkVGltZXN0YW1wID0gaW5jb21pbmdGYWNpbGl0eS5pc0xQUkVuYWJsZWQgJiYgIWluY29taW5nRmFjaWxpdHkuaXNMUFJDb25uZWN0ZWQgPyBzdG9yZWRGYWNpbGl0eS5scHJEaXNjb25uZWN0ZWRUaW1lc3RhbXAgPz8gY2xvdWREYXRlVGltZVV0YyA6IG51bGw7XG4gICAgaW5jb21pbmdGYWNpbGl0eS5jcmVkaXRTZXJ2ZXJEaXNjb25uZWN0ZWRUaW1lc3RhbXAgPSBpbmNvbWluZ0ZhY2lsaXR5LmlzQ3JlZGl0U2VydmVyRW5hYmxlZCAmJiAhaW5jb21pbmdGYWNpbGl0eS5pc0NyZWRpdFNlcnZlckNvbm5lY3RlZCA/IHN0b3JlZEZhY2lsaXR5LmNyZWRpdFNlcnZlckRpc2Nvbm5lY3RlZFRpbWVzdGFtcCA/PyBjbG91ZERhdGVUaW1lVXRjIDogbnVsbDtcbiAgICBpbmNvbWluZ0ZhY2lsaXR5Lm1haW5Db250cm9sbGVyRGlzY29ubmVjdGVkVGltZXN0YW1wID0gIWluY29taW5nRmFjaWxpdHkuaXNNYWluQ29udHJvbGxlckNvbm5lY3RlZCA/IHN0b3JlZEZhY2lsaXR5Lm1haW5Db250cm9sbGVyRGlzY29ubmVjdGVkVGltZXN0YW1wID8/IGNsb3VkRGF0ZVRpbWVVdGMgOiBudWxsO1xuICAgIHJldHVybiBpbmNvbWluZ0ZhY2lsaXR5O1xuICB9XG5cbiAgcHJpdmF0ZSBwYXRjaEZhY2lsaXRpZXNUb1N0b3JlKGN0eDogU3RhdGVDb250ZXh0PEZhY2lsaXR5U3RhdGVNb2RlbD4sIGRpY3Rpb25hcnk6IEZhY2lsaXR5RGljdGlvbmFyeSwgZmFjaWxpdHk6IEZhY2lsaXR5RHRvLCBhcHBNb2R1bGU6IEFwcE1vZHVsZSkge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIGRpY3Rpb25hcnksXG4gICAgfSk7XG5cbiAgICBpZiAoYXBwTW9kdWxlID09PSBBcHBNb2R1bGUuQ2MpIHtcbiAgICAgIGNvbnN0IGFsbG93ZWRBY3Rpb25zID0gY29udmVydEZlYXR1cmVQZXJtaXNzaW9uc1RvRGljdGlvbmFyeShmYWNpbGl0eS5mZWF0dXJlUGVybWlzc2lvbnMpO1xuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICBzZWxlY3RlZDogZmFjaWxpdHksXG4gICAgICAgIHpvbmVzOiBmYWNpbGl0eS56b25lcyxcbiAgICAgICAgbXVsdGlQYXJrUGFyZW50SUQ6IGZhY2lsaXR5Lm11bHRpUGFya1BhcmVudElELFxuICAgICAgICBhbGxvd2VkQWN0aW9uc1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBwYXRjaERpZmZEaWN0aW5hcnlUb1N0b3JlKGN0eDogU3RhdGVDb250ZXh0PEZhY2lsaXR5U3RhdGVNb2RlbD4sIGNsaWVudFNlcnZlckRpZmZEaWN0aW9uYXJ5OiBDbGllbnRTZXJ2ZXJEaWZmRGljdGlvbmFyeSkge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIGNsaWVudFNlcnZlckRpZmZEaWN0aW9uYXJ5LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDbGllbnRTZXJ2ZXJUaW1lRGlmZihmYWNpbGl0eTogRmFjaWxpdHlEdG8sIG5vd01vbWVudDogbW9tZW50Lk1vbWVudCk6IG51bWJlciB7XG4gICAgcmV0dXJuIG5vd01vbWVudC50eihmYWNpbGl0eS5zcFRpbWVab25lKS5kaWZmKHRoaXMuc3luY1NlcnZlckRhdGVHbG9iYWxXb3JsZFRpbWVab25lKGZhY2lsaXR5KSk7XG4gIH1cblxuICBwcml2YXRlIHN5bmNTZXJ2ZXJEYXRlR2xvYmFsV29ybGRUaW1lWm9uZShmYWNpbGl0eTogRmFjaWxpdHlEdG8pIHtcbiAgICAvLyBmaXggZm9yIHNlcnZlcnMgdGhhdCBub3Qgc3luYyB0byBnbG9iYWwgd29ybGQgY2xvY2tcbiAgICBsZXQgc2VydmVyRGF0ZVRpbWU6IHN0cmluZyA9IGZhY2lsaXR5LnNlcnZlckRhdGVUaW1lWydfaSddO1xuICAgIGlmICghc2VydmVyRGF0ZVRpbWUuZW5kc1dpdGgoJyswMDowMCcpKSB7XG4gICAgICBzZXJ2ZXJEYXRlVGltZSA9IHNlcnZlckRhdGVUaW1lLnNsaWNlKDAsIHNlcnZlckRhdGVUaW1lLmluZGV4T2YoJy4nKSk7XG4gICAgfVxuICAgIHJldHVybiBtb21lbnQudHooc2VydmVyRGF0ZVRpbWUsIGZhY2lsaXR5LnNwVGltZVpvbmUpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVTZXJ2aWNlUnVubmluZ1N0YXR1c0ZsYWdzKGN1cnJlbnRTZXJ2aWNlc1J1bm5pbmdTdGF0dXM6IFNlcnZpY2VzUnVubmluZ1N0YXR1c0R0bywgbmV3U2VydmljZXNSdW5uaW5nU3RhdHVzOiBTZXJ2aWNlc1J1bm5pbmdTdGF0dXNEdG8pOiBTZXJ2aWNlc1J1bm5pbmdTdGF0dXNEdG8ge1xuICAgIGNvbnN0IGNsb3VkRGF0ZVRpbWVVdGMgPSB0aGlzLmdldENsb3VkRGF0ZVRpbWVVdGMoKTtcbiAgICBuZXdTZXJ2aWNlc1J1bm5pbmdTdGF0dXMuc21hcnRQYXJrRGlzY29ubmVjdGVkVGltZXN0YW1wID0gbmV3U2VydmljZXNSdW5uaW5nU3RhdHVzLmlzU21hcnRQYXJrQ29ubmVjdGVkID8gbnVsbCA6IGN1cnJlbnRTZXJ2aWNlc1J1bm5pbmdTdGF0dXMuc21hcnRQYXJrRGlzY29ubmVjdGVkVGltZXN0YW1wID8/IGNsb3VkRGF0ZVRpbWVVdGM7XG4gICAgbmV3U2VydmljZXNSdW5uaW5nU3RhdHVzLnNtYXJ0UGFya0NvcmVEaXNjb25uZWN0ZWRUaW1lc3RhbXAgPSBuZXdTZXJ2aWNlc1J1bm5pbmdTdGF0dXMuaXNTbWFydFBhcmtDb3JlQ29ubmVjdGVkID8gbnVsbCA6IGN1cnJlbnRTZXJ2aWNlc1J1bm5pbmdTdGF0dXMuc21hcnRQYXJrQ29yZURpc2Nvbm5lY3RlZFRpbWVzdGFtcCA/PyBjbG91ZERhdGVUaW1lVXRjO1xuICAgIG5ld1NlcnZpY2VzUnVubmluZ1N0YXR1cy5zcGFya0Nsb3VkRGlzY29ubmVjdGVkVGltZXN0YW1wID0gbmV3U2VydmljZXNSdW5uaW5nU3RhdHVzLmlzU3BhcmtDbG91ZENvbm5lY3RlZCA/IG51bGwgOiBjdXJyZW50U2VydmljZXNSdW5uaW5nU3RhdHVzLnNwYXJrQ2xvdWREaXNjb25uZWN0ZWRUaW1lc3RhbXAgPz8gY2xvdWREYXRlVGltZVV0YztcbiAgICBuZXdTZXJ2aWNlc1J1bm5pbmdTdGF0dXMuc3BhcmtDb3JlRGlzY29ubmVjdGVkVGltZXN0YW1wID0gbmV3U2VydmljZXNSdW5uaW5nU3RhdHVzLmlzU3BhcmtDb3JlQ29ubmVjdGVkID8gbnVsbCA6IGN1cnJlbnRTZXJ2aWNlc1J1bm5pbmdTdGF0dXMuc3BhcmtDb3JlRGlzY29ubmVjdGVkVGltZXN0YW1wID8/IGNsb3VkRGF0ZVRpbWVVdGM7XG4gICAgcmV0dXJuIG5ld1NlcnZpY2VzUnVubmluZ1N0YXR1cztcbiAgfVxuXG4gIHByaXZhdGUgYXNzaWduRmFjaWxpdHkoc3RvcmVkRmFjaWxpdHk6IEZhY2lsaXR5RHRvLCBpbmNvbWluZ0ZhY2lsaXR5OiBGYWNpbGl0eUR0byk6IEZhY2lsaXR5RHRvIHtcbiAgICBjb25zdCBjbG91ZERhdGVUaW1lVXRjID0gdGhpcy5nZXRDbG91ZERhdGVUaW1lVXRjKCk7XG4gICAgbGV0IGN1cnJlbnRGYWNpbGl0eSA9IG5ldyBGYWNpbGl0eUR0byhzdG9yZWRGYWNpbGl0eSk7XG4gICAgY3VycmVudEZhY2lsaXR5Lm5hbWUgPSBpbmNvbWluZ0ZhY2lsaXR5Lm5hbWU7XG4gICAgY3VycmVudEZhY2lsaXR5LmlzTFBSRW5hYmxlZCA9IGluY29taW5nRmFjaWxpdHkuaXNMUFJFbmFibGVkO1xuICAgIGN1cnJlbnRGYWNpbGl0eS5pc0xQUkNvbm5lY3RlZCA9IGluY29taW5nRmFjaWxpdHkuaXNMUFJDb25uZWN0ZWQ7XG4gICAgY3VycmVudEZhY2lsaXR5LmlzQ3JlZGl0U2VydmVyRW5hYmxlZCA9IGluY29taW5nRmFjaWxpdHkuaXNDcmVkaXRTZXJ2ZXJFbmFibGVkO1xuICAgIGN1cnJlbnRGYWNpbGl0eS5pc0NyZWRpdFNlcnZlckNvbm5lY3RlZCA9IGluY29taW5nRmFjaWxpdHkuaXNDcmVkaXRTZXJ2ZXJDb25uZWN0ZWQ7XG4gICAgY3VycmVudEZhY2lsaXR5LmlzTWFpbkNvbnRyb2xsZXJDb25uZWN0ZWQgPSBpbmNvbWluZ0ZhY2lsaXR5LmlzTWFpbkNvbnRyb2xsZXJDb25uZWN0ZWQ7XG4gICAgY3VycmVudEZhY2lsaXR5LmlzTXVsdGlQYXJrID0gaW5jb21pbmdGYWNpbGl0eS5pc011bHRpUGFyaztcbiAgICBjdXJyZW50RmFjaWxpdHkudGltZURyaWZ0ID0gaW5jb21pbmdGYWNpbGl0eS50aW1lRHJpZnQ7XG4gICAgY3VycmVudEZhY2lsaXR5LnNtYXJ0UGFya1BvaW50ZXIgPSBpbmNvbWluZ0ZhY2lsaXR5LnNtYXJ0UGFya1BvaW50ZXI7XG4gICAgY3VycmVudEZhY2lsaXR5Lm1haW5Db250cm9sbGVyUG9pbnRlciA9IGluY29taW5nRmFjaWxpdHkubWFpbkNvbnRyb2xsZXJQb2ludGVyO1xuICAgIGN1cnJlbnRGYWNpbGl0eS5hY3RpdmUgPSBpbmNvbWluZ0ZhY2lsaXR5LmFjdGl2ZTtcbiAgICBjdXJyZW50RmFjaWxpdHkudG90YWxTcGFjZSA9IGluY29taW5nRmFjaWxpdHkudG90YWxTcGFjZTtcbiAgICBjdXJyZW50RmFjaWxpdHkubHByRGlzY29ubmVjdGVkVGltZXN0YW1wID0gaW5jb21pbmdGYWNpbGl0eS5pc0xQUkVuYWJsZWQgJiYgIWluY29taW5nRmFjaWxpdHkuaXNMUFJDb25uZWN0ZWQgPyBzdG9yZWRGYWNpbGl0eS5scHJEaXNjb25uZWN0ZWRUaW1lc3RhbXAgPz8gY2xvdWREYXRlVGltZVV0YyA6IG51bGw7XG4gICAgY3VycmVudEZhY2lsaXR5LmNyZWRpdFNlcnZlckRpc2Nvbm5lY3RlZFRpbWVzdGFtcCA9IGluY29taW5nRmFjaWxpdHkuaXNDcmVkaXRTZXJ2ZXJFbmFibGVkICYmICFpbmNvbWluZ0ZhY2lsaXR5LmlzQ3JlZGl0U2VydmVyQ29ubmVjdGVkID8gc3RvcmVkRmFjaWxpdHkuY3JlZGl0U2VydmVyRGlzY29ubmVjdGVkVGltZXN0YW1wID8/IGNsb3VkRGF0ZVRpbWVVdGMgOiBudWxsO1xuICAgIGN1cnJlbnRGYWNpbGl0eS5tYWluQ29udHJvbGxlckRpc2Nvbm5lY3RlZFRpbWVzdGFtcCA9ICFpbmNvbWluZ0ZhY2lsaXR5LmlzTWFpbkNvbnRyb2xsZXJDb25uZWN0ZWQgPyBzdG9yZWRGYWNpbGl0eS5tYWluQ29udHJvbGxlckRpc2Nvbm5lY3RlZFRpbWVzdGFtcCA/PyBjbG91ZERhdGVUaW1lVXRjIDogbnVsbDtcbiAgICByZXR1cm4gY3VycmVudEZhY2lsaXR5O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDbG91ZERhdGVUaW1lVXRjKCkge1xuICAgIGNvbnN0IGd1aWQgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KEZhY2lsaXR5U3RhdGUuZ3VpZCk7XG4gICAgY29uc3QgY2xpZW50U2VydmVyRGlmZkRpY3Rpb25hcnkgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KEZhY2lsaXR5U3RhdGUuY2xpZW50U2VydmVyRGlmZkRpY3Rpb25hcnkpO1xuICAgIHJldHVybiBtb21lbnQudXRjKCkuc3VidHJhY3QoY2xpZW50U2VydmVyRGlmZkRpY3Rpb25hcnlbZ3VpZF0sICdtaWxsaXNlY29uZHMnKTtcbiAgfVxuXG4gIHByaXZhdGUgdG9CYXNpY01lbnVJdGVtcyhjdHg6IFN0YXRlQ29udGV4dDxGYWNpbGl0eVN0YXRlTW9kZWw+LCBzbWFydHBhcmtNYXA6IFN0cmluZ01hcDxTbWFydHBhcmtCYXNpY0R0bz4sIGZhY2lsaXR5RGljdGlvbmFyeTogRmFjaWxpdHlEaWN0aW9uYXJ5LCBhcHBNb2R1bGU6IEFwcE1vZHVsZSk6IE1lbnVJdGVtW10ge1xuICAgIGNvbnN0IHRpYmFLZXlzID0gY3R4LmdldFN0YXRlKCkudGliYUtleXM7XG4gICAgY29uc3QgbWVudUl0ZW1zID0gW107XG4gICAgZm9yIChjb25zdCBndWlkIG9mIE9iamVjdC5rZXlzKHNtYXJ0cGFya01hcCkpIHtcbiAgICAgIGNvbnN0IHRpYmFLZXkgPSB0aWJhS2V5c1tndWlkXTtcbiAgICAgIG1lbnVJdGVtcy5wdXNoKC4uLnRoaXMuY3JlYXRlTWVudUl0ZW1zKHNtYXJ0cGFya01hcFtndWlkXSwgZ3VpZCwgdGliYUtleSwgZmFjaWxpdHlEaWN0aW9uYXJ5LCBhcHBNb2R1bGUpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWVudUl0ZW1zO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1BhcmtBY3RpdmUgPSAoY3R4OiBTdGF0ZUNvbnRleHQ8RmFjaWxpdHlTdGF0ZU1vZGVsPiwgZ3VpZDogc3RyaW5nLCBwYXJrSWQ6IG51bWJlcikgPT5cbiAgICBjdHguZ2V0U3RhdGUoKS5zZWxlY3RlZD8uaWQgPT09IHBhcmtJZCAmJiBjdHguZ2V0U3RhdGUoKS5ndWlkID09PSBndWlkO1xuXG4gIHByaXZhdGUgY3JlYXRlTWVudUl0ZW1zKHNtYXJ0cGFya0Jhc2ljOiBTbWFydHBhcmtCYXNpY0R0bywgZ3VpZDogc3RyaW5nLCB0aWJhS2V5OiBudW1iZXIsIGZhY2lsaXR5RGljdGlvbmFyeTogRmFjaWxpdHlEaWN0aW9uYXJ5LCBhcHBNb2R1bGU6IEFwcE1vZHVsZSk6IE1lbnVJdGVtW10ge1xuICAgIGNvbnN0IG1lbnVJdGVtczogTWVudUl0ZW1bXSA9IFtdO1xuICAgIHNtYXJ0cGFya0Jhc2ljLmZhY2lsaXRpZXMuZm9yRWFjaChsb3QgPT4ge1xuICAgICAgaWYgKGxvdC5tdWx0aVBhcmtQYXJlbnRJRCA+IDApIHtcbiAgICAgICAgLy8gZG8gbm90IHB1c2ggY2hpbGRyZW5zIHRvIG1lbnUgaXRlbXMgYXJyYXlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBtZW51SXRlbSA9IHRoaXMuZmFjaWxpdHlNZW51U2VydmljZS5jcmVhdGVNZW51KGd1aWQsIHRpYmFLZXksIHNtYXJ0cGFya0Jhc2ljLCBsb3QsIGZhY2lsaXR5RGljdGlvbmFyeSwgYXBwTW9kdWxlKTtcbiAgICAgIG1lbnVJdGVtcy5wdXNoKG1lbnVJdGVtKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBtZW51SXRlbXM7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZU1lbnVJdGVtc1BhcmtDb25uZWN0aW9uU3RhdHVzKGN0eDogU3RhdGVDb250ZXh0PEZhY2lsaXR5U3RhdGVNb2RlbD4pOiB2b2lkIHtcbiAgICAvLyBXZSBkb250IHJ1biBtZW51IHVwZGF0ZSBpZiB3ZSBhcmUgbm90IGluIENDXG4gICAgY29uc3QgY3VycmVudE1vZHVsZSA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoU2lkZW5hdlN0YXRlLmFwcE1vZHVsZSk7XG4gICAgY29uc3QgaXNNb2JpbGVBcHBNb2RlID0gdGhpcy5hcHBDb25maWcuZ2V0Q29uZmlnKCkuYXBwVHlwZSA9PT0gQXBwVHlwZS5Nb2JpbGU7XG4gICAgaWYgKGN1cnJlbnRNb2R1bGUgIT09IEFwcE1vZHVsZS5DYykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgbWVudUl0ZW1zID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChTaWRlbmF2U3RhdGUubWVudUl0ZW1zKTtcbiAgICBjb25zdCBmYWNpbGl0eURpY3Rpb25hcnkgPSBjdHguZ2V0U3RhdGUoKS5kaWN0aW9uYXJ5O1xuICAgIGNvbnN0IHNlcnZpY2VzUnVubmluZ1N0YXR1c0RpY3Rpb25hcnkgPSBjdHguZ2V0U3RhdGUoKS5zZXJ2aWNlc1J1bm5pbmdTdGF0dXNEaWN0aW9uYXJ5O1xuXG4gICAgZm9yIChjb25zdCBbZ3VpZCwgbG90c01hcF0gb2YgT2JqZWN0LmVudHJpZXMoZmFjaWxpdHlEaWN0aW9uYXJ5KSkge1xuICAgICAgY29uc3QgZmFjaWxpdGllczogRmFjaWxpdHlEdG9bXSA9IE9iamVjdC52YWx1ZXMobG90c01hcCk7XG4gICAgICBmb3IgKGNvbnN0IGZhY2lsaXR5IG9mIGZhY2lsaXRpZXMpIHtcbiAgICAgICAgbGV0IG1lbnVJdGVtOiBNZW51SXRlbTtcblxuICAgICAgICBpZiAoZmFjaWxpdHkubXVsdGlQYXJrUGFyZW50SUQgPiAwKSB7XG4gICAgICAgICAgbWVudUl0ZW0gPSBtZW51SXRlbXNcbiAgICAgICAgICAgIC5maW5kKGl0ZW0gPT4gaXRlbS5wcm9wZXJ0aWVzPy5ndWlkID09PSBndWlkKT8uY2hpbGRyZW5cbiAgICAgICAgICAgIC5maW5kKHN1Ykl0ZW0gPT4gc3ViSXRlbS5pZCA9PT0gZmFjaWxpdHkuaWQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG1lbnVJdGVtID0gbWVudUl0ZW1zLmZpbmQoaXRlbSA9PiBpdGVtLnByb3BlcnRpZXM/Lmd1aWQgPT09IGd1aWQgJiYgaXRlbS5pZCA9PT0gZmFjaWxpdHkuaWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1lbnVJdGVtKSB7XG4gICAgICAgICAgY29uc3QgYmFkZ2VDbGFzcyA9IHRoaXMuZmFjaWxpdHlNZW51U2VydmljZS5nZXRCYWRnZVByaW9yaXR5KGd1aWQsIHNlcnZpY2VzUnVubmluZ1N0YXR1c0RpY3Rpb25hcnlbZ3VpZF0sIGZhY2lsaXR5LCBmYWNpbGl0eURpY3Rpb25hcnkpO1xuICAgICAgICAgIG1lbnVJdGVtLmhhc0JhZGdlID0gYmFkZ2VDbGFzcyAhPT0gUGFya0Nvbm5lY3Rpb25TdGF0dXNDbGFzcy5Db25uZWN0ZWQ7XG4gICAgICAgICAgbWVudUl0ZW0uYmFkZ2VDbGFzcyA9IGJhZGdlQ2xhc3M7XG4gICAgICAgICAgbWVudUl0ZW0ubmFtZSA9IGZhY2lsaXR5Lm5hbWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIWlzTW9iaWxlQXBwTW9kZSkge1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTWVudUxvYWRBY3Rpb24oWy4uLm1lbnVJdGVtc10sIEFwcE1vZHVsZS5DYykpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0U21hcnRwYXJrQ29ubmVjdGlvblN0YXR1c01hcChzbWFydHBhcmtNYXA6IFN0cmluZ01hcDxTbWFydHBhcmtCYXNpY0R0bz4sIGZhY2lsaXR5RGljdGlvbmFyeTogRmFjaWxpdHlEaWN0aW9uYXJ5KSB7XG4gICAgY29uc3Qgc2VydmljZXNSdW5uaW5nU3RhdHVzRGljdGlvbmFyeTogU3RyaW5nTWFwPFNlcnZpY2VzUnVubmluZ1N0YXR1c0R0bz4gPSB7fTtcbiAgICBjb25zdCBwYXJrQ29ubmVjdGlvblN0YXR1c01hcDogQ29ubmVjdGlvblN0YXR1c0RpY3Rpb25hcnkgPSB7fTtcbiAgICBmb3IgKGNvbnN0IGd1aWQgb2YgT2JqZWN0LmtleXMoc21hcnRwYXJrTWFwKSkge1xuICAgICAgc2VydmljZXNSdW5uaW5nU3RhdHVzRGljdGlvbmFyeVtndWlkXSA9IHNtYXJ0cGFya01hcFtndWlkXS5zZXJ2aWNlc1J1bm5pbmdTdGF0dXM7XG4gICAgICBwYXJrQ29ubmVjdGlvblN0YXR1c01hcFtndWlkXSA9IHNtYXJ0cGFya01hcFtndWlkXS5mYWNpbGl0aWVzLnJlZHVjZSgoZmFjaWxpdGllcywgbG90KSA9PiB7XG4gICAgICAgIGNvbnN0IHBhcmtDb25uZWN0aW9uU3RhdHVzID0gdGhpcy5nbG9iYWxFcnJvclNlcnZpY2UuZ2V0UGFya0Nvbm5lY3Rpb25TdGF0dXMoZ3VpZCwgbG90LCBzbWFydHBhcmtNYXBbZ3VpZF0uc2VydmljZXNSdW5uaW5nU3RhdHVzLCBmYWNpbGl0eURpY3Rpb25hcnkpO1xuICAgICAgICBmYWNpbGl0aWVzW2xvdC5pZF0gPSB7XG4gICAgICAgICAgc3RhdHVzOiBwYXJrQ29ubmVjdGlvblN0YXR1cy5zdGF0dXMsXG4gICAgICAgICAgc3RhcnREYXRlOiBwYXJrQ29ubmVjdGlvblN0YXR1cy5zdGFydERhdGVcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIGZhY2lsaXRpZXM7XG4gICAgICB9LCB7fSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgc2VydmljZXNSdW5uaW5nU3RhdHVzRGljdGlvbmFyeSwgcGFya0Nvbm5lY3Rpb25TdGF0dXNNYXAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY29udmVydFRvRmFjaWxpdHlEaWN0aW9uYXJ5KHNtYXJ0cGFya01hcDogU3RyaW5nTWFwPFNtYXJ0cGFya0Jhc2ljRHRvPik6IHsgZGljdGlvbmFyeTogRmFjaWxpdHlEaWN0aW9uYXJ5LCBjbGllbnRTZXJ2ZXJEaWZmRGljdGlvbmFyeTogQ2xpZW50U2VydmVyRGlmZkRpY3Rpb25hcnk7IH0ge1xuICAgIGNvbnN0IGZhY2lsaXR5RGljdGlvbmFyeTogRmFjaWxpdHlEaWN0aW9uYXJ5ID0ge307XG4gICAgY29uc3QgY2xpZW50U2VydmVyRGlmZkRpY3Rpb25hcnk6IENsaWVudFNlcnZlckRpZmZEaWN0aW9uYXJ5ID0ge307XG5cbiAgICBmb3IgKGNvbnN0IGd1aWQgb2YgT2JqZWN0LmtleXMoc21hcnRwYXJrTWFwKSkge1xuICAgICAgZmFjaWxpdHlEaWN0aW9uYXJ5W2d1aWRdID0ge307XG4gICAgICBmb3IgKGNvbnN0IGxvdCBvZiBzbWFydHBhcmtNYXBbZ3VpZF0uZmFjaWxpdGllcykge1xuICAgICAgICBjb25zdCBjbG90ID0gbmV3IEZhY2lsaXR5RHRvKCk7XG4gICAgICAgIGNsb3QuaWQgPSBsb3QuaWQ7XG4gICAgICAgIGNsb3QuY2xvdWRJZCA9IGxvdC5jbG91ZElkO1xuICAgICAgICBjbG90LmFjdGl2ZSA9IGxvdC5hY3RpdmU7XG4gICAgICAgIGNsb3QuZmVhdHVyZVBlcm1pc3Npb25zID0gbG90LmZlYXR1cmVQZXJtaXNzaW9ucztcbiAgICAgICAgY2xvdC5wZXJtaXNzaW9ucyA9IGxvdC5wZXJtaXNzaW9ucztcbiAgICAgICAgY2xvdC5uYW1lID0gbG90Lm5hbWU7XG4gICAgICAgIGNsb3Quc2l0ZUNvZGUgPSBsb3Quc2l0ZUNvZGU7XG4gICAgICAgIGNsb3QubXVsdGlQYXJrUGFyZW50SUQgPSBsb3QubXVsdGlQYXJrUGFyZW50SUQ7XG4gICAgICAgIGNsb3QuaXNNYWluQ29udHJvbGxlckNvbm5lY3RlZCA9IGxvdC5pc01haW5Db250cm9sbGVyQ29ubmVjdGVkO1xuICAgICAgICBjbG90Lm1haW5Db250cm9sbGVyRGlzY29ubmVjdGVkVGltZXN0YW1wID0gbG90Lm1haW5Db250cm9sbGVyRGlzY29ubmVjdGVkVGltZXN0YW1wO1xuICAgICAgICBjbG90LmlzQ3JlZGl0U2VydmVyRW5hYmxlZCA9IGxvdC5pc0NyZWRpdFNlcnZlckVuYWJsZWQ7XG4gICAgICAgIGNsb3QuaXNDcmVkaXRTZXJ2ZXJDb25uZWN0ZWQgPSBsb3QuaXNDcmVkaXRTZXJ2ZXJDb25uZWN0ZWQ7XG4gICAgICAgIGNsb3QuY3JlZGl0U2VydmVyRGlzY29ubmVjdGVkVGltZXN0YW1wID0gbG90LmNyZWRpdFNlcnZlckRpc2Nvbm5lY3RlZFRpbWVzdGFtcDtcbiAgICAgICAgY2xvdC5pc0xQUkNvbm5lY3RlZCA9IGxvdC5pc0xQUkNvbm5lY3RlZDtcbiAgICAgICAgY2xvdC5pc0xQUkVuYWJsZWQgPSBsb3QuaXNMUFJFbmFibGVkO1xuICAgICAgICBjbG90LmlzVGlja2V0TGVzc0VuYWJsZWQgPSBsb3QuaXNUaWNrZXRMZXNzRW5hYmxlZDtcbiAgICAgICAgY2xvdC5scHJEaXNjb25uZWN0ZWRUaW1lc3RhbXAgPSBsb3QubHByRGlzY29ubmVjdGVkVGltZXN0YW1wO1xuICAgICAgICBjbG90LmlzQmFzaWMgPSBsb3QuaXNCYXNpYztcbiAgICAgICAgY2xvdC5pc011bHRpUGFyayA9IGxvdC5pc011bHRpUGFyaztcbiAgICAgICAgY2xvdC50aW1lRHJpZnQgPSBsb3QudGltZURyaWZ0O1xuICAgICAgICBjbG90LnNwVGltZVpvbmUgPSBsb3Quc3BUaW1lWm9uZTtcbiAgICAgICAgY2xvdC5zZXJ2ZXJEYXRlVGltZSA9IGxvdC5zZXJ2ZXJEYXRlVGltZTtcbiAgICAgICAgY2xvdC50b3RhbFNwYWNlID0gbG90LnRvdGFsU3BhY2U7XG4gICAgICAgIGZhY2lsaXR5RGljdGlvbmFyeVtndWlkXVtsb3QuaWRdID0gY2xvdDtcbiAgICAgIH1cblxuICAgICAgLy8gU2V0IGRpZmYgb2YgMCBmb3IgaW5pdGlhbCBzZXR1cFxuICAgICAgY2xpZW50U2VydmVyRGlmZkRpY3Rpb25hcnlbZ3VpZF0gPSAwO1xuICAgIH1cblxuICAgIHJldHVybiB7IGRpY3Rpb25hcnk6IGZhY2lsaXR5RGljdGlvbmFyeSwgY2xpZW50U2VydmVyRGlmZkRpY3Rpb25hcnkgfTtcbiAgfVxuXG4gIHByaXZhdGUgcG9wdWxhdGVTbWFydHBhcmtCYXNpYyhjdHg6IFN0YXRlQ29udGV4dDxGYWNpbGl0eVN0YXRlTW9kZWw+LCBzbWFydFBhcmtzOiBTdHJpbmdNYXA8U21hcnRwYXJrQmFzaWNEdG8+KSB7XG4gICAgLy8ga2VlcCBkZWZhdWx0IHZhbHVlcyB3aGVuIG5hdmlnYXRlIHRvIGNvbW1hbmQgY2VudGVyIGZvcndhcmQgYW5kIGJhY2suXG4gICAgY29uc3QgeyBndWlkLCBwYXJrSWQsIG11bHRpUGFya1BhcmVudElELCBzZWxlY3RlZCB9ID0gY3R4LmdldFN0YXRlKCk7XG4gICAgZGVmYXVsdHMuZ3VpZCA9IGd1aWQ7XG4gICAgZGVmYXVsdHMuc2VsZWN0ZWQgPSBzZWxlY3RlZDtcbiAgICBkZWZhdWx0cy5wYXJrSWQgPSBwYXJrSWQ7XG4gICAgZGVmYXVsdHMubXVsdGlQYXJrUGFyZW50SUQgPSBtdWx0aVBhcmtQYXJlbnRJRDtcblxuICAgIGN0eC5zZXRTdGF0ZShkZWZhdWx0cyk7XG5cbiAgICBjb25zdCB0aWJhS2V5czogU3RyaW5nTWFwPG51bWJlcj4gPSBPYmplY3Qua2V5cyhzbWFydFBhcmtzKS5yZWR1Y2UoKGtleXMsIGd1aWQsIGluZGV4KSA9PiB7XG4gICAgICBrZXlzW2d1aWRdID0gaW5kZXg7XG4gICAgICByZXR1cm4ga2V5cztcbiAgICB9LCB7fSk7XG5cbiAgICBjb25zdCB7IGRpY3Rpb25hcnksIGNsaWVudFNlcnZlckRpZmZEaWN0aW9uYXJ5IH0gPSB0aGlzLmNvbnZlcnRUb0ZhY2lsaXR5RGljdGlvbmFyeShzbWFydFBhcmtzKTtcblxuICAgIGNvbnN0IHN0YXRlVXBkYXRlczogUGFydGlhbDxGYWNpbGl0eVN0YXRlTW9kZWw+ID0ge1xuICAgICAgdGliYUtleXMsXG4gICAgICBkaWN0aW9uYXJ5LFxuICAgICAgY2xpZW50U2VydmVyRGlmZkRpY3Rpb25hcnksXG4gICAgfTtcblxuICAgIGlmICghZGljdGlvbmFyeVtndWlkXSB8fCAhZGljdGlvbmFyeVtndWlkXVtwYXJrSWRdKSB7XG4gICAgICBPYmplY3QuYXNzaWduKHN0YXRlVXBkYXRlcywge1xuICAgICAgICBndWlkOiAnJyxcbiAgICAgICAgcGFya0lkOiBudWxsLFxuICAgICAgICBtdWx0aVBhcmtQYXJlbnRJRDogbnVsbCxcbiAgICAgICAgc2VsZWN0ZWQ6IG51bGwsXG4gICAgICAgIHpvbmVzOiBudWxsLFxuICAgICAgICBhbGxvd2VkQWN0aW9uczoge30sXG4gICAgICB9KTtcbiAgICB9XG4gICAgY3R4LnBhdGNoU3RhdGUoc3RhdGVVcGRhdGVzKTtcblxuICAgIC8vdXNlcyBmYWNpbGl0eSBkaWN0aW9uYXJ5IGZyb20gc3RvcmUsIHRoZXJlZm9yZSBwbGFjZWQgYWZ0ZXJcbiAgICBjb25zdCB7IHNlcnZpY2VzUnVubmluZ1N0YXR1c0RpY3Rpb25hcnksIHBhcmtDb25uZWN0aW9uU3RhdHVzTWFwIH0gPSB0aGlzLmdldFNtYXJ0cGFya0Nvbm5lY3Rpb25TdGF0dXNNYXAoc21hcnRQYXJrcywgZGljdGlvbmFyeSk7XG4gICAgY3R4LnBhdGNoU3RhdGUoeyBzZXJ2aWNlc1J1bm5pbmdTdGF0dXNEaWN0aW9uYXJ5LCBjb25uZWN0aW9uU3RhdHVzRGljdGlvbmFyeTogcGFya0Nvbm5lY3Rpb25TdGF0dXNNYXAgfSk7XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3NEeW5hbWljUHJpY2luZ1NldEFjdGl2ZVJhdGUoZmFjaWxpdHlSZW1vdGVDb21tYW5kRXZlbnQ6IEZhY2lsaXR5UmVtb3RlQ29tbWFuZEV2ZW50LCBjb25maWc6IENvbW1hbmROb3RpZmljYXRpb25Db25maWcpOiB2b2lkIHtcbiAgICBjb25zdCBkeW5hbWljUHJpY2luZ0NvbmRpdGlvbnNNYXA6IE51bWJlck1hcDxEeW5hbWljUHJpY2luZ0NvbmRpdGlvbkR0bz4gPSBKU09OLnBhcnNlKFxuICAgICAgdGhpcy5sb2NhbFN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0oRFlOQU1JQ19QUklDSU5HX0NPTkRJVElPTilcbiAgICApID8/IHt9O1xuXG4gICAgY29uc3QgZHBjOiBEeW5hbWljUHJpY2luZ0NvbmRpdGlvbkR0byA9IGR5bmFtaWNQcmljaW5nQ29uZGl0aW9uc01hcFtmYWNpbGl0eVJlbW90ZUNvbW1hbmRFdmVudC5zb3VyY2VJZGVudGlmaWVyXTtcbiAgICBpZiAoZHBjKSB7XG4gICAgICBjb25zdCBmYWNpbGl0eTogRmFjaWxpdHlEdG8gPSBudWxsO1xuICAgICAgY29uZmlnLmR1cmF0aW9uID0gNyAqIE9ORV9TRUNPTkRfSU5fTUlMTElTRUNPTkRTO1xuICAgICAgY29uZmlnLm1lc3NhZ2VzID0gdGhpcy5mYWNpbGl0eUNvbW1hbmRzQ29uZmlnU2VydmljZS5nZXRDb21tYW5kTm90aWZpY2F0aW9uQ29uZmlnTWVzc2FnZXMoXG4gICAgICAgIEZhY2lsaXR5UmVtb3RlQ29tbWFuZFR5cGVzLlNldEFjdGl2ZVJhdGUsXG4gICAgICAgIGZhY2lsaXR5LFxuICAgICAgICBkcGNcbiAgICAgICk7XG5cbiAgICAgIC8vIENsb3NlIGR5bmFtaWMgcHJpY2luZyBub3RpZmljYXRpb25cbiAgICAgIGNvbnN0IG5vdGlmaWNhdGlvbjogTm90aWZpY2F0aW9uRHRvID0gbmV3IE5vdGlmaWNhdGlvbkR0bygpO1xuICAgICAgbm90aWZpY2F0aW9uLnR5cGUgPSBOb3RpZmljYXRpb25UeXBlLkR5bmFtaWNQcmljaW5nQ29uZGl0aW9uO1xuICAgICAgbm90aWZpY2F0aW9uLmR5bmFtaWNQcmljaW5nQ29uZGl0aW9uID0gZHBjO1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgSGFuZGxlZE5vdGlmaWNhdGlvbkFjdGlvbihub3RpZmljYXRpb24sIGRwYy5ndWlkKSk7XG5cbiAgICAgIGR5bmFtaWNQcmljaW5nQ29uZGl0aW9uc01hcFtmYWNpbGl0eVJlbW90ZUNvbW1hbmRFdmVudC5ndWlkXSA9IG51bGw7XG4gICAgICB0aGlzLmxvY2FsU3RvcmFnZVNlcnZpY2Uuc2V0SXRlbShcbiAgICAgICAgRFlOQU1JQ19QUklDSU5HX0NPTkRJVElPTixcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoZHluYW1pY1ByaWNpbmdDb25kaXRpb25zTWFwKVxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -6,11 +6,11 @@ import { ParkerState } from '../parker/parker.state';
|
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
import * as i1 from "@ngxs/store";
|
|
8
8
|
export class GuestModule {
|
|
9
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
10
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.
|
|
11
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.
|
|
9
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GuestModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
10
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: GuestModule, imports: [i1.ɵNgxsFeatureModule] }); }
|
|
11
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GuestModule, imports: [NgxsModule.forFeature([GuestState, FacilityState, ParkerState])] }); }
|
|
12
12
|
}
|
|
13
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
13
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GuestModule, decorators: [{
|
|
14
14
|
type: NgModule,
|
|
15
15
|
args: [{
|
|
16
16
|
declarations: [],
|