nuxeo-development-framework 3.8.1 → 3.8.3
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/bundles/nuxeo-development-framework.umd.js +32267 -31027
- package/bundles/nuxeo-development-framework.umd.js.map +1 -1
- package/esm2015/lib/components/activities-log/activities-log/activities-log.service.js +2 -2
- package/esm2015/lib/components/attachment-item/attachment-item/attachment-item.component.js +2 -2
- package/esm2015/lib/components/comments/components/comment-item/comment-item.component.js +2 -2
- package/esm2015/lib/components/comments/components/comments-dashlet/comments-dashlet.component.js +2 -2
- package/esm2015/lib/components/comments/components/comments-list/comments-list.component.js +1 -1
- package/esm2015/lib/components/comments/components/edit-delete-modal/edit-delete-modal.component.js +2 -2
- package/esm2015/lib/components/comments/services/comment-api.service.js +3 -3
- package/esm2015/lib/components/correspondence-relation/components/correspondence-relation/correspondence-relation.component.js +3 -3
- package/esm2015/lib/components/correspondence-relation/components/correspondence-relation-list/correspondence-relation-list.component.js +2 -2
- package/esm2015/lib/components/correspondence-relation/components/versions/versions.component.js +2 -2
- package/esm2015/lib/components/correspondence-relation/services/correspondence-realation.service.js +3 -3
- package/esm2015/lib/components/correspondence-relation/services/viewer-files.service.js +3 -3
- package/esm2015/lib/components/create-entity/create-entity/create-entity.component.js +2 -2
- package/esm2015/lib/components/cts-tags/components/correspondence-tags/correspondence-tags.component.js +2 -2
- package/esm2015/lib/components/cts-tags/services/tags-api.service.js +2 -2
- package/esm2015/lib/components/custom-toastr/components/custom-toastr/custom-toastr.component.js +6 -6
- package/esm2015/lib/components/custom-toastr/interfaces/toast-type.interface.js +1 -1
- package/esm2015/lib/components/custom-toastr/services/custom-toastr.service.js +23 -11
- package/esm2015/lib/components/documents/components/attachments-list/attachments-list.component.js +2 -2
- package/esm2015/lib/components/documents/components/document-list/documents-list.component.js +2 -2
- package/esm2015/lib/components/documents/services/document-templates.service.js +3 -3
- package/esm2015/lib/components/documents/services/documents.service.js +3 -3
- package/esm2015/lib/components/dynamic-chart/dynamic-chart/dynamic-chart.component.js +2 -2
- package/esm2015/lib/components/dynamic-chart/services/chart-data.service.js +2 -2
- package/esm2015/lib/components/dynamic-filter/dynamic-filter/dynamic-filter.component.js +2 -2
- package/esm2015/lib/components/dynamic-form/components/dynamic-form/form-builder.service.js +2 -2
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-dateitem/dynamic-form-dateitem.component.js +3 -3
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-dateitem/owlDateTimeIntl.js +2 -2
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-department/dynamic-form-department.component.js +2 -2
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-department/services/department-api.service.js +5 -5
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-department/services/department-management.service.js +3 -3
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-select-users/dynamic-form-select-users.component.js +2 -2
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-select-users/services/user-api.service.js +2 -2
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-treeview-select/dropdown-treeview-select-i18n.js +2 -2
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-treeview-select/dropdown-treeview-select.component.js +4 -4
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-viewer/dynamic-form-viewer.component.js +2 -2
- package/esm2015/lib/components/dynamic-form/services/dynamic-form-update.service.js +2 -2
- package/esm2015/lib/components/dynamic-search/dynamic-search/dynamic-search.component.js +2 -2
- package/esm2015/lib/components/dynamic-table/dynamic-table/dynamic-table.component.js +3 -3
- package/esm2015/lib/components/dynamic-view/custom-document-viewer/custom-document-viewer.component.js +3 -3
- package/esm2015/lib/components/dynamic-view/custom-pp-viewer/custom-pp-viewer.component.js +3 -3
- package/esm2015/lib/components/dynamic-view/cutome-voc-viewer/cutome-voc-viewer.component.js +2 -2
- package/esm2015/lib/components/dynamic-view/date-viewer/date-viewer.component.js +2 -2
- package/esm2015/lib/components/dynamic-view/department-viewer/department-viewer.component.js +2 -2
- package/esm2015/lib/components/file-manger/components/clipboard/clipboard.component.js +2 -2
- package/esm2015/lib/components/file-manger/components/create-modal/create-modal.component.js +4 -4
- package/esm2015/lib/components/file-manger/components/folder-modal/folder-modal.component.js +2 -2
- package/esm2015/lib/components/file-manger/components/scan-modal/scan-modal.component.js +4 -4
- package/esm2015/lib/components/file-manger/components/share-dialog/share-dialog.component.js +5 -5
- package/esm2015/lib/components/file-manger/components/sidepanel/sidepanel.component.js +4 -4
- package/esm2015/lib/components/file-manger/components/update-modal/update-modal.component.js +3 -3
- package/esm2015/lib/components/file-manger/directives/file-grid-infinite-scroll.directive.js +78 -0
- package/esm2015/lib/components/file-manger/file-manager.abstract.js +459 -301
- package/esm2015/lib/components/file-manger/file-manger.module.js +10 -5
- package/esm2015/lib/components/file-manger/models/file-manager-config.model.js +7 -0
- package/esm2015/lib/components/file-manger/models/index.js +4 -0
- package/esm2015/lib/components/file-manger/models/pagination-payload.mode.js +2 -0
- package/esm2015/lib/components/file-manger/models/pagination-response.model.js +6 -0
- package/esm2015/lib/components/latest-activity/services/activity-log.service.js +3 -3
- package/esm2015/lib/components/mutiple-dynamic-form-viewer/multiple-dynamic-form-viewer/multiple-dynamic-form-viewer.component.js +2 -2
- package/esm2015/lib/components/notifications/components/base-list-notfications.component.js +154 -0
- package/esm2015/lib/components/notifications/components/base-notifications.component.js +35 -0
- package/esm2015/lib/components/notifications/components/index.js +7 -0
- package/esm2015/lib/components/notifications/components/notification-item/get-icon.pipe.js +44 -0
- package/esm2015/lib/components/notifications/components/notification-item/notification-item.component.js +41 -129
- package/esm2015/lib/components/notifications/components/notification-source-select/notification-source-select.component.js +34 -0
- package/esm2015/lib/components/notifications/components/notification-status-toggle/notification-status-toggle.component.js +26 -0
- package/esm2015/lib/components/notifications/components/notifications-button/notifications-button.component.js +75 -165
- package/esm2015/lib/components/notifications/components/notifications-date-select/notifications-date-select.component.js +59 -0
- package/esm2015/lib/components/notifications/components/notifications-list/notifications-list.component.js +53 -175
- package/esm2015/lib/components/notifications/components/notifications-list/options.js +24 -0
- package/esm2015/lib/components/notifications/components/notifications-list-actions/notifications-list-actions.component.js +43 -0
- package/esm2015/lib/components/notifications/components/notifications-settings/check-if-subscribed.pipe.js +28 -0
- package/esm2015/lib/components/notifications/components/notifications-settings/notifications-settings.adapter.js +30 -0
- package/esm2015/lib/components/notifications/components/notifications-settings/notifications-settings.component.js +163 -0
- package/esm2015/lib/components/notifications/components/notifications-sidebar/notifications-sidebar-content.js +28 -0
- package/esm2015/lib/components/notifications/components/notifications-sidebar/notifications-sidebar.component.js +158 -0
- package/esm2015/lib/components/notifications/constants/date.js +8 -0
- package/esm2015/lib/components/notifications/constants/index.js +5 -0
- package/esm2015/lib/components/notifications/constants/pagination.js +5 -0
- package/esm2015/lib/components/notifications/constants/panel.js +5 -0
- package/esm2015/lib/components/notifications/constants/status.js +10 -0
- package/esm2015/lib/components/notifications/containers/index.js +3 -0
- package/esm2015/lib/components/notifications/containers/notifications-list-container/notifications-list-container.component.js +98 -0
- package/esm2015/lib/components/notifications/containers/notifications-list-container/options.js +18 -0
- package/esm2015/lib/components/notifications/containers/notifications-settings-container/notifications-settings-container.component.js +67 -0
- package/esm2015/lib/components/notifications/directives/button.directive.js +28 -0
- package/esm2015/lib/components/notifications/directives/index.js +3 -0
- package/esm2015/lib/components/notifications/directives/notification.directive.js +28 -0
- package/esm2015/lib/components/notifications/index.js +2 -0
- package/esm2015/lib/components/notifications/models/common.js +2 -0
- package/esm2015/lib/components/notifications/models/index.js +11 -0
- package/esm2015/lib/components/notifications/models/notification-definition.model.js +2 -0
- package/esm2015/lib/components/notifications/models/notification-options.js +2 -0
- package/esm2015/lib/components/notifications/models/notification-setting.presenter.js +2 -0
- package/esm2015/lib/components/notifications/models/notification-subscription.model.js +2 -0
- package/esm2015/lib/components/notifications/models/notification.model.js +2 -0
- package/esm2015/lib/components/notifications/models/notifications-list-options.js +3 -0
- package/esm2015/lib/components/notifications/models/paging-response.model.js +2 -0
- package/esm2015/lib/components/notifications/models/params.model.js +2 -0
- package/esm2015/lib/components/notifications/models/vocabularies.js +2 -0
- package/esm2015/lib/components/notifications/notifications.module.js +80 -46
- package/esm2015/lib/components/notifications/public-api.js +9 -0
- package/esm2015/lib/components/notifications/services/index.js +2 -0
- package/esm2015/lib/components/notifications/services/listener.service.js +19 -0
- package/esm2015/lib/components/notifications/services/notifications.service.js +155 -0
- package/esm2015/lib/components/notifications/services/params.service.js +31 -0
- package/esm2015/lib/components/notifications/services/response.service.js +65 -0
- package/esm2015/lib/components/notifications/utilities/index.js +2 -0
- package/esm2015/lib/components/notifications/utilities/response.adapter.js +12 -0
- package/esm2015/lib/components/pdf-tron/pdftron/pdftron.component.js +3 -3
- package/esm2015/lib/components/permissions/add-permissions-dialog/add-permissions-dialog.component.js +2 -2
- package/esm2015/lib/components/permissions/permission.service.js +2 -2
- package/esm2015/lib/components/permissions/permissions/permissions.component.js +3 -3
- package/esm2015/lib/components/select-users-by-department/select-users-by-departments/department-management.service.js +2 -2
- package/esm2015/lib/components/table/dynamic-column/dynamic-column.component.js +2 -2
- package/esm2015/lib/components/table/table/table.component.js +3 -3
- package/esm2015/lib/components/{notifications → toasts}/components/notification-toast/notification-toast.component.js +8 -12
- package/esm2015/lib/components/toasts/index.js +2 -0
- package/esm2015/lib/components/toasts/public-api.js +3 -0
- package/esm2015/lib/components/toasts/toasts.module.js +19 -0
- package/esm2015/lib/components/vocabulary/services/vocabulary-api.service.js +2 -2
- package/esm2015/lib/components/vocabulary/translated-vocabulary-select/translated-vocabulary-select.component.js +2 -2
- package/esm2015/lib/core/adapters/adapter.service.js +1 -1
- package/esm2015/lib/core/core.module.js +1 -1
- package/esm2015/lib/core/env/env-manager.js +1 -1
- package/esm2015/lib/core/env/index.js +1 -1
- package/esm2015/lib/core/models/api-response.model.js +2 -0
- package/esm2015/lib/core/models/automation-response.model.js +2 -0
- package/esm2015/lib/core/models/base-response.models.js +2 -0
- package/esm2015/lib/core/models/index.js +5 -0
- package/esm2015/lib/core/services/callApi/call-api.service.js +1 -1
- package/esm2015/lib/core/services/extension/action.extensions.js +1 -1
- package/esm2015/lib/core/services/extension/component-register.service.js +1 -1
- package/esm2015/lib/core/services/extension/extenion-utils.js +1 -1
- package/esm2015/lib/core/services/extension/extension-element.js +1 -1
- package/esm2015/lib/core/services/extension/extension-loader.service.js +1 -1
- package/esm2015/lib/core/services/extension/extension.service.js +1 -1
- package/esm2015/lib/core/services/initialization/initialization.service.js +1 -1
- package/esm2015/lib/core/services/nuxeo/nuxeo.service.js +3 -3
- package/esm2015/lib/core/services/translation/translation.service.js +3 -3
- package/esm2015/lib/core/utilities/moment-date-adapter.js +1 -1
- package/esm2015/lib/core/utilities/utility.service.js +1 -1
- package/esm2015/lib/directive/app-has-role/app-has-role.directive.js +2 -2
- package/esm2015/lib/directive/permissions/evaluators.service.js +2 -2
- package/esm2015/lib/directive/permissions/permissions.directive.js +2 -2
- package/esm2015/lib/directive/rtl/set-dir-rtl.directive.js +2 -2
- package/esm2015/lib/directive/rtl/set-rtl.directive.js +2 -2
- package/esm2015/lib/shared-services/dynamic-form.service.js +2 -2
- package/esm2015/lib/shared-services/file-manager.service.js +456 -222
- package/esm2015/lib/shared-services/global-admin.service.js +1 -1
- package/esm2015/lib/shared-services/mainfolder.service.js +3 -3
- package/esm2015/lib/shared-services/publishing-document.service.js +3 -3
- package/esm2015/lib/shared-services/recently-viewed.service.js +3 -3
- package/esm2015/lib/shared-services/shared-docs.service.js +3 -3
- package/esm2015/lib/shared-services/upload-file.service.js +2 -2
- package/esm2015/lib/shared-services/upload-managment.service.js +2 -2
- package/esm2015/lib/shared-services/user.service.js +3 -3
- package/esm2015/public-api.js +145 -149
- package/fesm2015/nuxeo-development-framework.js +24280 -23143
- package/fesm2015/nuxeo-development-framework.js.map +1 -1
- package/lib/components/activities-log/activities-log/activities-log.service.d.ts +1 -1
- package/lib/components/attachment-item/attachment-item/attachment-item.component.d.ts +1 -1
- package/lib/components/comments/components/comment-item/comment-item.component.d.ts +1 -1
- package/lib/components/comments/components/comments-dashlet/comments-dashlet.component.d.ts +1 -1
- package/lib/components/comments/components/edit-delete-modal/edit-delete-modal.component.d.ts +1 -1
- package/lib/components/comments/services/comment-api.service.d.ts +2 -2
- package/lib/components/correspondence-relation/components/correspondence-relation/correspondence-relation.component.d.ts +2 -2
- package/lib/components/correspondence-relation/components/correspondence-relation-list/correspondence-relation-list.component.d.ts +1 -1
- package/lib/components/correspondence-relation/components/versions/versions.component.d.ts +1 -1
- package/lib/components/correspondence-relation/services/correspondence-realation.service.d.ts +2 -2
- package/lib/components/correspondence-relation/services/viewer-files.service.d.ts +2 -2
- package/lib/components/create-entity/create-entity/create-entity.component.d.ts +1 -1
- package/lib/components/cts-tags/components/correspondence-tags/correspondence-tags.component.d.ts +1 -1
- package/lib/components/cts-tags/services/tags-api.service.d.ts +1 -1
- package/lib/components/custom-toastr/components/custom-toastr/custom-toastr.component.d.ts +1 -1
- package/lib/components/custom-toastr/interfaces/toast-type.interface.d.ts +1 -1
- package/lib/components/custom-toastr/services/custom-toastr.service.d.ts +8 -4
- package/lib/components/documents/components/attachments-list/attachments-list.component.d.ts +1 -1
- package/lib/components/documents/components/document-list/documents-list.component.d.ts +1 -1
- package/lib/components/documents/services/document-templates.service.d.ts +2 -2
- package/lib/components/documents/services/documents.service.d.ts +2 -2
- package/lib/components/dynamic-chart/dynamic-chart/dynamic-chart.component.d.ts +1 -1
- package/lib/components/dynamic-chart/services/chart-data.service.d.ts +1 -1
- package/lib/components/dynamic-filter/dynamic-filter/dynamic-filter.component.d.ts +1 -1
- package/lib/components/dynamic-form/components/dynamic-form/form-builder.service.d.ts +1 -1
- package/lib/components/dynamic-form/components/dynamic-form-dateitem/dynamic-form-dateitem.component.d.ts +1 -1
- package/lib/components/dynamic-form/components/dynamic-form-dateitem/owlDateTimeIntl.d.ts +1 -1
- package/lib/components/dynamic-form/components/dynamic-form-department/dynamic-form-department.component.d.ts +1 -1
- package/lib/components/dynamic-form/components/dynamic-form-department/services/department-api.service.d.ts +4 -4
- package/lib/components/dynamic-form/components/dynamic-form-department/services/department-management.service.d.ts +2 -2
- package/lib/components/dynamic-form/components/dynamic-form-select-users/dynamic-form-select-users.component.d.ts +1 -1
- package/lib/components/dynamic-form/components/dynamic-form-select-users/services/user-api.service.d.ts +1 -1
- package/lib/components/dynamic-form/components/dynamic-form-treeview-select/dropdown-treeview-select-i18n.d.ts +1 -1
- package/lib/components/dynamic-form/components/dynamic-form-treeview-select/dropdown-treeview-select.component.d.ts +3 -3
- package/lib/components/dynamic-form/components/dynamic-form-viewer/dynamic-form-viewer.component.d.ts +1 -1
- package/lib/components/dynamic-form/services/dynamic-form-update.service.d.ts +1 -1
- package/lib/components/dynamic-search/dynamic-search/dynamic-search.component.d.ts +1 -1
- package/lib/components/dynamic-table/dynamic-table/dynamic-table.component.d.ts +2 -2
- package/lib/components/dynamic-view/custom-document-viewer/custom-document-viewer.component.d.ts +2 -2
- package/lib/components/dynamic-view/custom-pp-viewer/custom-pp-viewer.component.d.ts +2 -2
- package/lib/components/dynamic-view/cutome-voc-viewer/cutome-voc-viewer.component.d.ts +1 -1
- package/lib/components/dynamic-view/date-viewer/date-viewer.component.d.ts +1 -1
- package/lib/components/dynamic-view/department-viewer/department-viewer.component.d.ts +1 -1
- package/lib/components/file-manger/components/clipboard/clipboard.component.d.ts +1 -1
- package/lib/components/file-manger/components/create-modal/create-modal.component.d.ts +3 -3
- package/lib/components/file-manger/components/folder-modal/folder-modal.component.d.ts +1 -1
- package/lib/components/file-manger/components/scan-modal/scan-modal.component.d.ts +3 -3
- package/lib/components/file-manger/components/share-dialog/share-dialog.component.d.ts +3 -3
- package/lib/components/file-manger/components/sidepanel/sidepanel.component.d.ts +2 -2
- package/lib/components/file-manger/components/update-modal/update-modal.component.d.ts +2 -2
- package/lib/components/file-manger/directives/file-grid-infinite-scroll.directive.d.ts +12 -0
- package/lib/components/file-manger/file-manager.abstract.d.ts +20 -8
- package/lib/components/file-manger/file-manger.module.d.ts +37 -36
- package/lib/components/file-manger/models/file-manager-config.model.d.ts +8 -0
- package/lib/components/file-manger/models/index.d.ts +3 -0
- package/lib/components/file-manger/models/pagination-payload.mode.d.ts +3 -0
- package/lib/components/file-manger/models/pagination-response.model.d.ts +30 -0
- package/lib/components/latest-activity/services/activity-log.service.d.ts +2 -2
- package/lib/components/mutiple-dynamic-form-viewer/multiple-dynamic-form-viewer/multiple-dynamic-form-viewer.component.d.ts +1 -1
- package/lib/components/notifications/components/base-list-notfications.component.d.ts +40 -0
- package/lib/components/notifications/components/base-notifications.component.d.ts +20 -0
- package/lib/components/notifications/components/index.d.ts +6 -0
- package/lib/components/notifications/components/notification-item/get-icon.pipe.d.ts +8 -0
- package/lib/components/notifications/components/notification-item/notification-item.component.d.ts +21 -22
- package/lib/components/notifications/components/notification-source-select/notification-source-select.component.d.ts +12 -0
- package/lib/components/notifications/components/notification-status-toggle/notification-status-toggle.component.d.ts +8 -0
- package/lib/components/notifications/components/notifications-button/notifications-button.component.d.ts +29 -30
- package/lib/components/notifications/components/notifications-date-select/notifications-date-select.component.d.ts +19 -0
- package/lib/components/notifications/components/notifications-list/notifications-list.component.d.ts +15 -54
- package/lib/components/notifications/components/notifications-list/options.d.ts +2 -0
- package/lib/components/notifications/components/notifications-list-actions/notifications-list-actions.component.d.ts +15 -0
- package/lib/components/notifications/components/notifications-settings/check-if-subscribed.pipe.d.ts +8 -0
- package/lib/components/notifications/components/notifications-settings/notifications-settings.adapter.d.ts +3 -0
- package/lib/components/notifications/components/notifications-settings/notifications-settings.component.d.ts +40 -0
- package/lib/components/notifications/components/notifications-sidebar/notifications-sidebar-content.d.ts +9 -0
- package/lib/components/notifications/components/notifications-sidebar/notifications-sidebar.component.d.ts +43 -0
- package/lib/components/notifications/constants/date.d.ts +7 -0
- package/lib/components/notifications/constants/index.d.ts +4 -0
- package/lib/components/notifications/constants/pagination.d.ts +4 -0
- package/lib/components/notifications/constants/panel.d.ts +4 -0
- package/lib/components/notifications/constants/status.d.ts +9 -0
- package/lib/components/notifications/containers/index.d.ts +2 -0
- package/lib/components/notifications/containers/notifications-list-container/notifications-list-container.component.d.ts +27 -0
- package/lib/components/notifications/containers/notifications-list-container/options.d.ts +2 -0
- package/lib/components/notifications/containers/notifications-settings-container/notifications-settings-container.component.d.ts +22 -0
- package/lib/components/notifications/directives/button.directive.d.ts +9 -0
- package/lib/components/notifications/directives/index.d.ts +2 -0
- package/lib/components/notifications/directives/notification.directive.d.ts +9 -0
- package/lib/components/notifications/index.d.ts +1 -0
- package/lib/components/notifications/models/common.d.ts +64 -0
- package/lib/components/notifications/models/index.d.ts +10 -0
- package/lib/components/notifications/models/notification-definition.model.d.ts +17 -0
- package/lib/components/notifications/models/notification-options.d.ts +7 -0
- package/lib/components/notifications/models/notification-setting.presenter.d.ts +24 -0
- package/lib/components/notifications/models/notification-subscription.model.d.ts +13 -0
- package/lib/components/notifications/models/notification.model.d.ts +16 -0
- package/lib/components/notifications/models/notifications-list-options.d.ts +34 -0
- package/lib/components/notifications/models/paging-response.model.d.ts +12 -0
- package/lib/components/notifications/models/params.model.d.ts +6 -0
- package/lib/components/notifications/models/vocabularies.d.ts +12 -0
- package/lib/components/notifications/notifications.module.d.ts +32 -16
- package/lib/components/notifications/public-api.d.ts +8 -0
- package/lib/components/notifications/services/index.d.ts +1 -0
- package/lib/components/notifications/services/listener.service.d.ts +8 -0
- package/lib/components/notifications/services/notifications.service.d.ts +55 -0
- package/lib/components/notifications/services/params.service.d.ts +19 -0
- package/lib/components/notifications/services/response.service.d.ts +19 -0
- package/lib/components/notifications/utilities/index.d.ts +1 -0
- package/lib/components/notifications/utilities/response.adapter.d.ts +3 -0
- package/lib/components/pdf-tron/pdftron/pdftron.component.d.ts +2 -2
- package/lib/components/permissions/add-permissions-dialog/add-permissions-dialog.component.d.ts +1 -1
- package/lib/components/permissions/permission.service.d.ts +1 -1
- package/lib/components/permissions/permissions/permissions.component.d.ts +2 -2
- package/lib/components/select-users-by-department/select-users-by-departments/department-management.service.d.ts +1 -1
- package/lib/components/table/dynamic-column/dynamic-column.component.d.ts +1 -1
- package/lib/components/table/table/table.component.d.ts +2 -2
- package/lib/components/{notifications → toasts}/components/notification-toast/notification-toast.component.d.ts +2 -4
- package/lib/components/toasts/index.d.ts +1 -0
- package/lib/components/toasts/public-api.d.ts +2 -0
- package/lib/components/toasts/toasts.module.d.ts +8 -0
- package/lib/components/vocabulary/services/vocabulary-api.service.d.ts +1 -1
- package/lib/components/vocabulary/translated-vocabulary-select/translated-vocabulary-select.component.d.ts +1 -1
- package/lib/core/models/api-response.model.d.ts +24 -0
- package/lib/core/models/automation-response.model.d.ts +24 -0
- package/lib/core/models/base-response.models.d.ts +12 -0
- package/lib/core/models/index.d.ts +4 -0
- package/lib/core/services/nuxeo/nuxeo.service.d.ts +1 -1
- package/lib/core/services/translation/translation.service.d.ts +3 -3
- package/lib/directive/app-has-role/app-has-role.directive.d.ts +1 -1
- package/lib/directive/permissions/evaluators.service.d.ts +1 -1
- package/lib/directive/permissions/permissions.directive.d.ts +1 -1
- package/lib/directive/rtl/set-dir-rtl.directive.d.ts +1 -1
- package/lib/directive/rtl/set-rtl.directive.d.ts +1 -1
- package/lib/shared-services/dynamic-form.service.d.ts +1 -1
- package/lib/shared-services/file-manager.service.d.ts +27 -19
- package/lib/shared-services/mainfolder.service.d.ts +2 -2
- package/lib/shared-services/publishing-document.service.d.ts +2 -2
- package/lib/shared-services/recently-viewed.service.d.ts +2 -2
- package/lib/shared-services/shared-docs.service.d.ts +2 -2
- package/lib/shared-services/upload-file.service.d.ts +1 -1
- package/lib/shared-services/upload-managment.service.d.ts +1 -1
- package/lib/shared-services/user.service.d.ts +2 -2
- package/package.json +1 -1
- package/public-api.d.ts +139 -143
- package/esm2015/lib/components/notifications/components/notification-options/notification-options.component.js +0 -22
- package/esm2015/lib/components/notifications/notifications.service.js +0 -358
- package/lib/components/notifications/components/notification-options/notification-options.component.d.ts +0 -10
- package/lib/components/notifications/notifications.service.d.ts +0 -87
|
@@ -3,15 +3,15 @@ import { UpdateModalComponent } from '../update-modal/update-modal.component';
|
|
|
3
3
|
import { Subject } from 'rxjs';
|
|
4
4
|
import { takeUntil } from 'rxjs/operators';
|
|
5
5
|
import { Utils } from 'formiojs';
|
|
6
|
-
import { UserPreferenceValues } from '../../../../
|
|
6
|
+
import { UserPreferenceValues } from '../../../../core/services/user/user-preferences.service';
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
8
|
import * as i1 from "@angular/common";
|
|
9
|
-
import * as i2 from "../../../../
|
|
9
|
+
import * as i2 from "../../../../core/services/user/user-preferences.service";
|
|
10
10
|
import * as i3 from "../../../../shared-services/dialog-mangment.service";
|
|
11
11
|
import * as i4 from "../../../../shared-services/dynamic-form.service";
|
|
12
12
|
import * as i5 from "../../../documents/services/documents.service";
|
|
13
13
|
import * as i6 from "../../../cts-tags/services/tags-api.service";
|
|
14
|
-
import * as i7 from "../../../../
|
|
14
|
+
import * as i7 from "../../../../core/services/translation/translation.service";
|
|
15
15
|
import * as i8 from "@angular/material/dialog";
|
|
16
16
|
import * as i9 from "../../../../shared-services/shared-docs.service";
|
|
17
17
|
import * as i10 from "../../../display-suitable-icon/display-suitable-icon/display-suitable-icon.component";
|
|
@@ -254,4 +254,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
254
254
|
}], onCloseSideMenu: [{
|
|
255
255
|
type: Output
|
|
256
256
|
}] } });
|
|
257
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy9zaWRlcGFuZWwvc2lkZXBhbmVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy9zaWRlcGFuZWwvc2lkZXBhbmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBcUIsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBOEIsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZLLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBSTlFLE9BQU8sRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxvQkFBb0IsRUFBMEIsTUFBTSx5REFBeUQsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBV3ZILE1BQU0sT0FBTyxrQkFBa0I7SUFtQzdCLFlBQW1CLFFBQWtCLEVBQzNCLHFCQUE2QyxFQUM5QyxxQkFBNEMsRUFDM0Msa0JBQXNDLEVBQ3RDLGVBQWlDLEVBQ2pDLGNBQThCLEVBQzlCLGtCQUFzQyxFQUN0QyxNQUFpQixFQUNqQixNQUF5QjtRQVJoQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQzNCLDBCQUFxQixHQUFyQixx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QjtzQkFEZixTQUFTO3VCQUFDLGtCQUFrQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFHL0MsZ0JBQWdCO3NCQURmLFNBQVM7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUcvQyxtQkFBbUI7c0JBRGxCLFNBQVM7dUJBQUMscUJBQXFCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUdsRCxhQUFhO3NCQURaLFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJbkMsWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUVJLGVBQWU7c0JBQXhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IFVwZGF0ZU1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vdXBkYXRlLW1vZGFsL3VwZGF0ZS1tb2RhbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEaWFsb2dNYW5nbWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQtc2VydmljZXMvZGlhbG9nLW1hbmdtZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEeW5hbWljRm9ybVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQtc2VydmljZXMvZHluYW1pYy1mb3JtLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTaGFyZWREb2NzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC1zZXJ2aWNlcy9zaGFyZWQtZG9jcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICdmb3JtaW9qcyc7XHJcbmltcG9ydCB7IFVzZXJQcmVmZXJlbmNlVmFsdWVzLCBVc2VyUHJlZmVyZW5jZXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vQ29yZS9zZXJ2aWNlcy91c2VyL3VzZXItcHJlZmVyZW5jZXMuc2VydmljZSc7XHJcbmltcG9ydCB7IERvY3VtZW50c1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9kb2N1bWVudHMvc2VydmljZXMvZG9jdW1lbnRzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUYWdzQXBpU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2N0cy10YWdzL3NlcnZpY2VzL3RhZ3MtYXBpLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9Db3JlL3NlcnZpY2VzL3RyYW5zbGF0aW9uL3RyYW5zbGF0aW9uLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtc2lkZXBhbmVsJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc2lkZXBhbmVsLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zaWRlcGFuZWwuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTaWRlcGFuZWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQgLCBPbkRlc3Ryb3l7XHJcbiAgQFZpZXdDaGlsZCgnZGV0YWlsc1RlbXBsYXRlJywgeyBzdGF0aWM6IHRydWUgfSlcclxuICBkZXRhaWxzVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZCgnY29tbWVudHNUZW1wbGF0ZScsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgY29tbWVudHNUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKCdhY3Rpdml0eVRlbXBsYXRlJywgeyBzdGF0aWM6IHRydWUgfSlcclxuICBhY3Rpdml0eVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoJ3Blcm1pc3Npb25zVGVtcGxhdGUnLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIHBlcm1pc3Npb25zVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZCgnZmlsZXNUZW1wbGF0ZScsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgZmlsZXNUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgcHJpdmF0ZSBvbkRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuICBASW5wdXQoKSBzZWxlY3RlZEl0ZW06IGFueTtcclxuICBASW5wdXQoKSBtZW51T3BlbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNvdXJjZVBhZ2UgPSAnZmlsZXMnO1xyXG4gIEBJbnB1dCgpIGFsbG93QWRkQW5kQmxvY2sgPSB0cnVlO1xyXG4gIHNpZGVNZW51TG9hZGluZyA9IGZhbHNlO1xyXG4gIEBPdXRwdXQoKSBvbkNsb3NlU2lkZU1lbnUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIGR5bmFtaWNGb3JtOyAvLyBjb250YWluIGR5bmFtaWMgZm9ybVxyXG4gIGR5bmFtaWNGb3JtRGF0YTsgLy8gY29udGFpbiBhbGwgZmlsZSBkYXRhIGluY2x1ZGluZyBkeW5hbWljIGZvcm0gZGF0YVxyXG4gIHJ0bEVuYWJsZWQgPSBmYWxzZTtcclxuICBpc0FyYWJpYyA9IHRydWU7XHJcbiAgc2lkZU1lbnVGaWxlRGV0YWlsczsgLy8gaG9sZCBkYXRhIG9mIGRhY3VtZW50IHRvIGJlIHNob3duIGluIHNpZGUgbWVudSBkZXRhaWxzXHJcbiAgc2hvd0RldGFpbHMgPSBmYWxzZTtcclxuICBteVRhYnMgPSBbXTtcclxuICBtdWx0aVNlbGVjdGVka2V5czogc3RyaW5nW107XHJcbiAgbGFuZ3VhZ2VTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICB0YWdzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgc2hhcmVkU3ViOiBTdWJzY3JpcHRpb247XHJcbiAgc2hhcmVkRGF0YSA9IFtdO1xyXG4gIHNoYXJlZExpc3QgPSBbXTtcclxuICBzaGFyZWRMaXN0VXNlciA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZGF0ZVBpcGU6IERhdGVQaXBlLFxyXG4gICAgcHJpdmF0ZSB1c2VyUHJlZmVyZW5jZVNlcnZpY2U6IFVzZXJQcmVmZXJlbmNlc1NlcnZpY2UsXHJcbiAgICBwdWJsaWMgZGlhbG9nTWFuZ21lbnRTZXJ2aWNlOiBEaWFsb2dNYW5nbWVudFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGR5bmFtaWNGb3JtU2VydmljZTogRHluYW1pY0Zvcm1TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBkb2N1bWVudFNlcnZpY2U6IERvY3VtZW50c1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRhZ3NBcGlTZXJ2aWNlOiBUYWdzQXBpU2VydmljZSxcclxuICAgIHByaXZhdGUgdHJhbnNsYXRpb25TZXJ2aWNlOiBUcmFuc2xhdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgcHJpdmF0ZSBzaGFyZWQ6IFNoYXJlZERvY3NTZXJ2aWNlLCkgeyB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLm1lbnVPcGVuKSB7XHJcbiAgICAgIHRoaXMub3BlblNpZGVNZW51RGV0YWlscygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLm15VGFicyA9IFtcclxuICAgICAge1xyXG4gICAgICAgIGxhYmVsOiAnRGV0YWlscycsXHJcbiAgICAgICAgaWNvbjogJ3N1YnRpdGxlcycsXHJcbiAgICAgICAgdGVtcGxhdGU6IHRoaXMuZGV0YWlsc1RlbXBsYXRlLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbGFiZWw6ICdjb21tZW50cycsXHJcbiAgICAgICAgaWNvbjogJ3RleHRzbXMnLFxyXG4gICAgICAgIHRlbXBsYXRlOiB0aGlzLmNvbW1lbnRzVGVtcGxhdGUsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBsYWJlbDogJ3Blcm1pc3Npb25zJyxcclxuICAgICAgICBpY29uOiAnbG9jaycsXHJcbiAgICAgICAgdGVtcGxhdGU6IHRoaXMucGVybWlzc2lvbnNUZW1wbGF0ZSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGxhYmVsOiAnYWN0aXZpdHknLFxyXG4gICAgICAgIGljb246ICdsaXN0X2FsdCcsXHJcbiAgICAgICAgdGVtcGxhdGU6IHRoaXMuYWN0aXZpdHlUZW1wbGF0ZSxcclxuICAgICAgfSxcclxuICAgIF07XHJcbiAgICBpZiAodGhpcy51c2VyUHJlZmVyZW5jZVNlcnZpY2UpIHtcclxuICAgICAgdGhpcy51c2VyUHJlZmVyZW5jZVNlcnZpY2VcclxuICAgICAgICAuc2VsZWN0KFVzZXJQcmVmZXJlbmNlVmFsdWVzLkxvY2FsZSlcclxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kkKSlcclxuICAgICAgICAuc3Vic2NyaWJlKChsb2NhbGUpID0+IHtcclxuICAgICAgICAgIHRoaXMucnRsRW5hYmxlZCA9IGxvY2FsZSA9PT0gJ2FyJyA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMudGFnc1N1YnNjcmlwdGlvbiA9IHRoaXMudGFnc0FwaVNlcnZpY2UuZ2V0VXBkYXRlZEZpbGUuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzKSA9PiB7XHJcbiAgICAgICAgdGhpcy5kb2N1bWVudFNlcnZpY2VcclxuICAgICAgICAgIC5nZXREb2N1bWVudCh0aGlzLnNlbGVjdGVkSXRlbS5lbnRpdHkudWlkKVxyXG4gICAgICAgICAgLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2lkZU1lbnVGaWxlRGV0YWlscyA9IHJlcztcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMubGFuZ3VhZ2VTdWJzY3JpcHRpb24gPSB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS5pc0FyYWJpYyQuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzKSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc0FyYWJpYyA9IHJlcztcclxuXHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBvcGVuVXBkYXRlRnJvbVNpZGVNZW51KCkge1xyXG4gICAgdGhpcy5jbG9zZURldGFpbHNNZW51KCk7XHJcbiAgICB0aGlzLm9wZW5VcGRhdGVNb2RhbCgpO1xyXG4gIH1cclxuXHJcbiAgb3BlblVwZGF0ZU1vZGFsKCkge1xyXG4gICAgdGhpcy5kaWFsb2cub3BlbihVcGRhdGVNb2RhbENvbXBvbmVudCwge1xyXG4gICAgICB3aWR0aDogJzQwJScsXHJcbiAgICAgIGhlaWdodDogJzcwJScsXHJcbiAgICAgIG1heFdpZHRoOiAnYXV0bycsXHJcbiAgICAgIHBhbmVsQ2xhc3M6ICd3YXRjaGVyLWRpYWxvZy1jb250YWluZXInLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgaWQ6IHRoaXMuc2VsZWN0ZWRJdGVtLmlkLFxyXG4gICAgICAgIHR5cGU6IHRoaXMuc2VsZWN0ZWRJdGVtLmVudGl0eS50eXBlLFxyXG4gICAgICAgIGNvZGU6IHRoaXMuc2VsZWN0ZWRJdGVtLmVudGl0eS5wcm9wZXJ0aWVzWydnZG9jOmRvY3VtZW50VHlwZUNvZGUnXSA/IHRoaXMuc2VsZWN0ZWRJdGVtLmVudGl0eS5wcm9wZXJ0aWVzWydnZG9jOmRvY3VtZW50VHlwZUNvZGUnXSA6IHRoaXMuc2VsZWN0ZWRJdGVtLmVudGl0eS50eXBlLFxyXG4gICAgICAgIGlzRGlyZWN0b3J5OiB0aGlzLnNlbGVjdGVkSXRlbS5pc0RpcmVjdG9yeSxcclxuICAgICAgfSxcclxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tb3BlbiBmaWxlIHNpZGUgbWVudSBkZXRhaWxzLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICBjdXN0b21lSGVhZGVyID1cclxuICAgICdsb2NrLGRjOmNyZWF0b3IsZGM6Y29udHJpYnV0b3JzLGdkb2M6Y291bnRyeUNhdGVnb3J5Q29kZSxnZG9jOmNvdW50cnlDb2RlLGdkb2M6YWdlbmN5TmFtZUNvZGUsZ2RvYzphZ2VuY3lDYXRlZ29yeUNvZGUnO1xyXG5cclxuICBvcGVuU2lkZU1lbnVEZXRhaWxzKCkge1xyXG4gICAgdGhpcy5zaWRlTWVudUxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5zaWRlTWVudUZpbGVEZXRhaWxzID0ge307XHJcbiAgICB0aGlzLnNoYXJlZExpc3RVc2VyID0gW107XHJcbiAgICAvLyB0aGlzLnNob3dEZXRhaWxzID0gZmFsc2U7IC8vIGlmIGl0IHdhcyBvcGVuIGNsb3NlIGl0IHRoZW4gb3BlbiBpdCBhZ2FpbiB0byBhbGxvdyB0YWJzIHRvIGJlIHJlcmVuZHJlZFxyXG4gICAgdGhpcy5keW5hbWljRm9ybSA9IG51bGw7XHJcbiAgICAvLyBpZiAodGhpcy5zZWxlY3RlZEl0ZW0uaXNEaXJlY3RvcnkgPT09IGZhbHNlKSB7XHJcbiAgICB0aGlzLmR5bmFtaWNGb3JtU2VydmljZVxyXG4gICAgICAuZ2V0RHluYW1pY0Zvcm0odGhpcy5zZWxlY3RlZEl0ZW0uZW50aXR5LnByb3BlcnRpZXNbJ2dkb2M6ZG9jdW1lbnRUeXBlQ29kZSddID8gdGhpcy5zZWxlY3RlZEl0ZW0uZW50aXR5LnByb3BlcnRpZXNbJ2dkb2M6ZG9jdW1lbnRUeXBlQ29kZSddIDogdGhpcy5zZWxlY3RlZEl0ZW0uZW50aXR5LnR5cGUpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzWydjb21wb25lbnRzJ10gJiYgcmVzWydjb21wb25lbnRzJ10ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljRm9ybSA9IHJlcztcclxuICAgICAgICAgIGxldCBwcmVmaXggPSByZXMucHJlZml4O1xyXG4gICAgICAgICAgVXRpbHMuZWFjaENvbXBvbmVudChyZXMuY29tcG9uZW50cywgKGNvbXApID0+IHtcclxuICAgICAgICAgICAgaWYgKGNvbXAudHlwZSA9PT0gJ3VzZXJTZWxlY3RvcicpIHtcclxuICAgICAgICAgICAgICAvLyB0aGlzLnVzZXJTZWxlY3RvcktleXMucHVzaChjb21wLmZpeGVkS2V5KTtcclxuICAgICAgICAgICAgICBsZXQgY29tcFByZWZpeCA9IHByZWZpeFtjb21wLmZpeGVkS2V5XVxyXG4gICAgICAgICAgICAgICAgPyBwcmVmaXhbY29tcC5maXhlZEtleV1cclxuICAgICAgICAgICAgICAgIDogJyc7XHJcbiAgICAgICAgICAgICAgaWYgKGNvbXBQcmVmaXgpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9tZUhlYWRlciA9XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9tZUhlYWRlciArXHJcbiAgICAgICAgICAgICAgICAgICcsJyArXHJcbiAgICAgICAgICAgICAgICAgIGNvbXBQcmVmaXggK1xyXG4gICAgICAgICAgICAgICAgICAnOicgK1xyXG4gICAgICAgICAgICAgICAgICBjb21wLmZpeGVkS2V5O1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbWVIZWFkZXIgPVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbWVIZWFkZXIgKyAnLCcgKyBjb21wLmZpeGVkS2V5O1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmRvY3VtZW50U2VydmljZVxyXG4gICAgICAgICAgLmdldERvY3VtZW50KHRoaXMuc2VsZWN0ZWRJdGVtLmVudGl0eS51aWQsIHtcclxuICAgICAgICAgICAgJ1gtTlhmZXRjaC1kb2N1bWVudCc6IHRoaXMuY3VzdG9tZUhlYWRlcixcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zaWRlTWVudUZpbGVEZXRhaWxzID0gcmVzO1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNGb3JtRGF0YSA9IHJlcz8ucHJvcGVydGllcztcclxuICAgICAgICAgICAgdGhpcy5zaG93RGV0YWlscyA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuc2lkZU1lbnVMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB0aGlzLmdldFNoYXJlc0J5TWUoKTtcclxuXHJcbiAgICAvLyB9IGVsc2Uge1xyXG4gICAgLy8gICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgIC8vICAgICB0aGlzLnNpZGVNZW51RmlsZURldGFpbHMgPSB0aGlzLnNlbGVjdGVkSXRlbS5lbnRpdHlcclxuICAgIC8vICAgICB0aGlzLnNob3dEZXRhaWxzID0gdHJ1ZVxyXG4gICAgLy8gICB9LCAxMDAwKTtcclxuICAgIC8vIH1cclxuICB9XHJcblxyXG4gIGNsb3NlRGV0YWlsc01lbnUoKSB7XHJcbiAgICB0aGlzLnNob3dEZXRhaWxzID0gZmFsc2U7XHJcbiAgICB0aGlzLnNpZGVNZW51TG9hZGluZyA9IGZhbHNlO1xyXG4gICAgdGhpcy5vbkNsb3NlU2lkZU1lbnUuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgLy8gY2xvc2VEZXRhaWxzU2lkZU1lbnUoZXZlbnQpIHtcclxuICAvLyAgIGlmICghdGhpcy5wZXJtaXNzaW9uU2VydmljZS5kaXNhYmxlQ2xpY2tPdXRTaWRlKSB7XHJcbiAgLy8gICAgIGlmIChcclxuICAvLyAgICAgICBldmVudC5pZCAhPT0gJ3NlZV9kZXRhaWxzJyAmJlxyXG4gIC8vICAgICAgICF0aGlzLmNoZWNrRm9yQ2xhc3MoZXZlbnQuY2xhc3NOYW1lKVxyXG4gIC8vICAgICApIHtcclxuICAvLyAgICAgICB0aGlzLnNob3dEZXRhaWxzID0gZmFsc2U7XHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH1cclxuICAvLyB9XHJcblxyXG4gIGNoZWNrRm9yQ2xhc3MoY2xhc3NOYW1lKSB7XHJcbiAgICBsZXQgY2xhc3NlcyA9IFtcclxuICAgICAgJ2RldGFpbGVkLW1lbnUnLFxyXG4gICAgICAnbmctdGFnLWxhYmVsJyxcclxuICAgICAgJ25nLW9wdGlvbi1sYWJlbCcsXHJcbiAgICAgICduZy1zdGFyLWluc2VydGVkJyxcclxuICAgIF07XHJcbiAgICBsZXQgY2xhc3NGb3VuZGVkID0gZmFsc2U7XHJcbiAgICBjbGFzc2VzLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICBpZiAoY2xhc3NOYW1lLmluY2x1ZGVzKGl0ZW0pKSB7XHJcbiAgICAgICAgY2xhc3NGb3VuZGVkID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gY2xhc3NGb3VuZGVkO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2hhcmVzQnlNZSgpIHtcclxuICAgIHRoaXMuc2hhcmVkU3ViID0gdGhpcy5zaGFyZWQuZ2V0U2hhcmVzQnlNZSh0aGlzLnNlbGVjdGVkSXRlbS5lbnRpdHkudWlkKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgdGhpcy5zaGFyZWRMaXN0VXNlciA9IHJlcztcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMudGFnc1N1YnNjcmlwdGlvbiA/IHRoaXMudGFnc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpIDogbnVsbDtcclxuICAgIHRoaXMubGFuZ3VhZ2VTdWJzY3JpcHRpb24gPyB0aGlzLmxhbmd1YWdlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkgOiBudWxsO1xyXG4gICAgdGhpcy5vbkRlc3Ryb3kkLm5leHQoKTtcclxuICAgIHRoaXMub25EZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwic2lkZS1tZW51LWRldGFpbHNcIiBTZXRSdGw+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaC1mdWxsXCIgKm5nSWY9XCJzZWxlY3RlZEl0ZW0gJiYgc2hvd0RldGFpbHMgJiYgIXNpZGVNZW51TG9hZGluZ1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTMgcHgtNSBweS0xIHctMTAwIGZsZXggYm9yZGVyLWItMiBpdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDwhLS0gPHRpdGxlLXdpdGgtaWNvbiBjbGFzcz1cIi1teS0xLjVcIiBbY29udGV4dF09XCJzZWxlY3RlZEl0ZW0uZW50aXR5XCIgW3Nob3dUaXRsZV09XCJmYWxzZVwiPjwvdGl0bGUtd2l0aC1pY29uPiAtLT5cclxuICAgICAgICAgICAgICAgIDxhcHAtZGlzcGxheS1zdWl0YWJsZS1pY29uIFtkYXRhXT1cInNlbGVjdGVkSXRlbVwiIFtzaXplXT1cIic0MHB4J1wiPjwvYXBwLWRpc3BsYXktc3VpdGFibGUtaWNvbj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwianVzdGlmeS1jZW50ZXIgZmxleCBmbGV4LWNvbCAgIGZsZXgtMSBmbGV4LWdyb3ctMCB3LTcvMTJcIiAqbmdJZj1cIiFzZWxlY3RlZEl0ZW0uaXNEaXJlY3RvcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1iYXNlIHRleHQtZ3JheS01MDAgZm9udC1ib2xkIHRydW5jYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cInNlbGVjdGVkSXRlbS5lbnRpdHk/LnByb3BlcnRpZXM/LlsnZmlsZTpjb250ZW50J10/LlsnbmFtZSddXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2FsdF09XCJzZWxlY3RlZEl0ZW0uZW50aXR5Py5wcm9wZXJ0aWVzPy5bJ2ZpbGU6Y29udGVudCddPy5bJ25hbWUnXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e3NlbGVjdGVkSXRlbS5lbnRpdHk/LnByb3BlcnRpZXM/LlsnZmlsZTpjb250ZW50J10/LlsnbmFtZSddfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1ncmF5LTUwMCB0ZXh0LXNtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7KChzZWxlY3RlZEl0ZW0uZW50aXR5Py5wcm9wZXJ0aWVzPy5bJ2ZpbGU6Y29udGVudCddPy5bJ2xlbmd0aCddKSAvICgxMDI0ICpcclxuICAgICAgICAgICAgICAgICAgICAgICAgMTAyNCkpLnRvRml4ZWQoMikgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgTUJcclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgZC1mbGV4XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtcy1jZW50ZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQtYmFzZSB0ZXh0LWdyYXktNTAwXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWJvbGRcclxuICAgICAgICAgICAgICAgICAgICAgXCIgKm5nSWY9XCJzZWxlY3RlZEl0ZW0uaXNEaXJlY3RvcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyBzZWxlY3RlZEl0ZW0/Lm5hbWUgfX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqcGVybWlzc2lvbj1cIntuYW1lOiAnbG9ja093bmVySWZMb2NrZWQnLCBlbnRpdHk6IHNlbGVjdGVkSXRlbS5lbnRpdHl9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwidGV4dC1ncmF5LTUwMCBjdXJzb3ItcG9pbnRlciAgbXgtM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpwZXJtaXNzaW9uPVwie25hbWU6ICdjYW5VcGRhdGUnLCBlbnRpdHk6IHNlbGVjdGVkSXRlbS5lbnRpdHl9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cInt7ICdGT0xERVJTLlVQREFURV9ERVRBSUxTJyB8IHRyYW5zbGF0ZSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuVXBkYXRlRnJvbVNpZGVNZW51KClcIj5lZGl0PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiY2xvc2UtaWNvbiB0ZXh0LWdyYXktNTAwXCIgKGNsaWNrKT1cImNsb3NlRGV0YWlsc01lbnUoKVwiXHJcbiAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCInQlVUVE9OUy5DTE9TRScgfCB0cmFuc2xhdGVcIj5jbG9zZTwvbWF0LWljb24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImR5bmFtaWMtc2VjdGlvblwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXgtMiBoLWZ1bGxcIj5cclxuICAgICAgICAgICAgICAgIDxhcHAtZHluYW1pYy10YWJzIFt0YWJzXT1cIm15VGFic1wiPjwvYXBwLWR5bmFtaWMtdGFicz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJoLWZ1bGwgZm9udC1ib2xkIGQtZmxleCBqdXN0aWZ5LWNlbnRlciBpdGVtcy1jZW50ZXJcIiAqbmdJZj1cInNpZGVNZW51TG9hZGluZ1wiPlxyXG4gICAgICAgIHt7IFwibG9hZGluZ1wiIHwgdHJhbnNsYXRlIH19XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48IS0tIENvbW1lbnRzIC0tPlxyXG48bmctdGVtcGxhdGUgI2NvbW1lbnRzVGVtcGxhdGU+XHJcbiAgICA8ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBoLWZ1bGxcIj5cclxuICAgICAgICA8YXBwLWNvbW1lbnRzLWRhc2hsZXQgW2NvcnJlc3BvbmRlbmNlXT1cInNpZGVNZW51RmlsZURldGFpbHNcIiBbZW50aXR5SWRdPVwic2VsZWN0ZWRJdGVtLmVudGl0eS51aWRcIlxyXG4gICAgICAgICAgICBbc2hvd2FkZGNvbW1lbnRdPVwidHJ1ZVwiIFtyb3ddPVwiZmFsc2VcIj5cclxuICAgICAgICA8L2FwcC1jb21tZW50cy1kYXNobGV0PlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIG15TG9nRmlsZSAtLT5cclxuPG5nLXRlbXBsYXRlICNhY3Rpdml0eVRlbXBsYXRlPlxyXG4gICAgPCEtLSA8Y3RzLXZpZXdlci1sb2cgW2NvcnJlc3BvbmRlbmNlXT1cInNlbGVjdGVkSXRlbS5lbnRpdHlcIj48L2N0cy12aWV3ZXItbG9nPiAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJoLWZ1bGwgbXQtM1wiPlxyXG4gICAgICAgIDxhcHAtYWN0aXZpdGllcy1sb2cgW2RvY3VtZW50SWRdPVwic2VsZWN0ZWRJdGVtLmVudGl0eS51aWRcIiBbZG9jdW1lbnRUaXRsZV09XCJzZWxlY3RlZEl0ZW0uZW50aXR5LnRpdGxlXCJcclxuICAgICAgICAgICAgW2ZpbGVdPVwic2lkZU1lbnVGaWxlRGV0YWlsc1wiPjwvYXBwLWFjdGl2aXRpZXMtbG9nPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3Blcm1pc3Npb25zVGVtcGxhdGU+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaC1mdWxsIG92ZXJmbG93LWF1dG8gcHgtMiBtdC0zXCI+XHJcbiAgICAgICAgPGFwcC1wZXJtaXNzaW9ucyBbc291cmNlUGFnZV09XCJzb3VyY2VQYWdlXCJcclxuICAgICAgICBbYWxsb3dBZGRBbmRCbG9ja109XCJhbGxvd0FkZEFuZEJsb2NrXCIgIFtkb2N1bWVudF09XCJzaWRlTWVudUZpbGVEZXRhaWxzXCJcclxuICAgICAgICAgICAgW2RvY3VtZW50SWRdPVwic2VsZWN0ZWRJdGVtLmVudGl0eS51aWRcIj48L2FwcC1wZXJtaXNzaW9ucz5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBGaWxlcyBUYWIgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjZmlsZXNUZW1wbGF0ZT5cclxuICAgIDxkaXYgY2xhc3M9XCJoLWZ1bGwgb3ZlcmZsb3ctYXV0byBweC0yIG10LTNcIj5cclxuICAgICAgICA8Y3RzLXZlcnNpb25zIFtmaWxlXT1cInNlbGVjdGVkSXRlbS5lbnRpdHlcIj48L2N0cy12ZXJzaW9ucz5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBEZXRhaWxzIC0tPlxyXG48bmctdGVtcGxhdGUgI2RldGFpbHNUZW1wbGF0ZT5cclxuICAgIDxkaXYgY2xhc3M9XCJwYi0yIG10LTMgaC1mdWxsIHB4LTIgb3ZlcmZsb3ctYXV0b1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdGF0aWMtZGF0YVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZ3JheS01MDAgZm9udC1ib2xkIHRleHQtYmFzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IFwiRk9MREVSUy5USVRMRV9PTkxZXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZ3JheS05MDAgdGV4dC1zbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGR5bmFtaWNGb3JtRGF0YVtcImRjOnRpdGxlXCJdIH19XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0zXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1ncmF5LTUwMCBmb250LWJvbGQgdGV4dC1iYXNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgXCJGT0xERVJTLkRFU0NSSVBUSU9OX09OTFlcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1ncmF5LTkwMCB0ZXh0LXNtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgZHluYW1pY0Zvcm1EYXRhW1wiZGM6ZGVzY3JpcHRpb25cIl0gfX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWdyYXktNTAwIGZvbnQtYm9sZCB0ZXh0LWJhc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyBcIkZPTERFUlMuQ1JFQVRFRF9BVFwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWdyYXktOTAwIHRleHQtc21cIj5cclxuICAgICAgICAgICAgICAgICAgICB7e1xyXG4gICAgICAgICAgICAgICAgICAgIGR5bmFtaWNGb3JtRGF0YVtcImRjOmNyZWF0ZWRcIl1cclxuICAgICAgICAgICAgICAgICAgICB8IGxvY2FsaXplZERhdGU6IFwiZGQgTU1NTSB5eXl5XCI6KGlzQXJhYmljPyAnYXItQVInIDogJ2VuLVVTJylcclxuICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtM1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZ3JheS01MDAgZm9udC1ib2xkIHRleHQtYmFzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IFwiRk9MREVSUy5MQVNUX01PRElGSUVEXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZ3JheS05MDAgdGV4dC1zbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7XHJcbiAgICAgICAgICAgICAgICAgICAgZHluYW1pY0Zvcm1EYXRhW1wiZGM6bW9kaWZpZWRcIl1cclxuICAgICAgICAgICAgICAgICAgICB8IGxvY2FsaXplZERhdGU6IFwiZGQgTU1NTSB5eXl5XCI6KGlzQXJhYmljPyAnYXItQVInIDogJ2VuLVVTJylcclxuICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1cGVyLWRvY3VtZW50LWZpZWxkc1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTNcIiAqbmdJZj0nZHluYW1pY0Zvcm1EYXRhW1wiZ2RvYzpkb2N1bWVudFN1YmplY3RcIl0nPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWdyYXktNTAwIGZvbnQtYm9sZCB0ZXh0LWJhc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgXCJDUkVBVEUuRE9DVU1FTlRfU1VCSkVDVFwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZ3JheS05MDAgdGV4dC1zbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBkeW5hbWljRm9ybURhdGFbXCJnZG9jOmRvY3VtZW50U3ViamVjdFwiXSA/IGR5bmFtaWNGb3JtRGF0YVtcImdkb2M6ZG9jdW1lbnRTdWJqZWN0XCJdIDogJy0tJ319XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtM1wiICpuZ0lmPSdkeW5hbWljRm9ybURhdGFbXCJnZG9jOmRvY3VtZW50TnVtYmVyXCJdJz5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1ncmF5LTUwMCBmb250LWJvbGQgdGV4dC1iYXNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IFwiQ1JFQVRFLkRPQ1VNRU5UX05VTUJFUlwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZ3JheS05MDAgdGV4dC1zbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBkeW5hbWljRm9ybURhdGFbXCJnZG9jOmRvY3VtZW50TnVtYmVyXCJdID8gZHluYW1pY0Zvcm1EYXRhW1wiZ2RvYzpkb2N1bWVudE51bWJlclwiXSA6ICctLSd9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTNcIiAqbmdJZj0nZHluYW1pY0Zvcm1EYXRhW1wiZ2RvYzpkb2N1bWVudFJlZmVyZW5jZU51bWJlclwiXSc+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZ3JheS01MDAgZm9udC1ib2xkIHRleHQtYmFzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBcIkNSRUFURS5ET0NVTUVOVF9SRUZfTlVNQkVSXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1ncmF5LTkwMCB0ZXh0LXNtXCIgZGlyPVwibHRyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGR5bmFtaWNGb3JtRGF0YVtcImdkb2M6ZG9jdW1lbnRSZWZlcmVuY2VOdW1iZXJcIl0gP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkeW5hbWljRm9ybURhdGFbXCJnZG9jOmRvY3VtZW50UmVmZXJlbmNlTnVtYmVyXCJdIDogJy0tJ319XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtM1wiICpuZ0lmPSdkeW5hbWljRm9ybURhdGFbXCJnZG9jOmdEb2N1bWVudERhdGVcIl0nPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWdyYXktNTAwIGZvbnQtYm9sZCB0ZXh0LWJhc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgXCJDUkVBVEUuRE9DVU1FTlRfREFURVwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZ3JheS05MDAgdGV4dC1zbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBkeW5hbWljRm9ybURhdGFbXCJnZG9jOmdEb2N1bWVudERhdGVcIl0gPyAoZHluYW1pY0Zvcm1EYXRhW1wiZ2RvYzpnRG9jdW1lbnREYXRlXCJdIHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxpemVkRGF0ZTogXCJkZCBNTU1NIHl5eXlcIjooaXNBcmFiaWM/ICdhci1BUicgOiAnZW4tVVMnKSkgOiAnLS0nfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0zXCIgKm5nSWY9JyhzZWxlY3RlZEl0ZW0uZW50aXR5LmNhdGVnb3J5ICYmIHNlbGVjdGVkSXRlbS5lbnRpdHkuY2F0ZWdvcnkgIT09IHt9KSc+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZ3JheS01MDAgZm9udC1ib2xkIHRleHQtYmFzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBcIkNSRUFURS5DQVRFR09SWVwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZ3JheS05MDAgdGV4dC1zbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyAoc2VsZWN0ZWRJdGVtLmVudGl0eS5jYXRlZ29yeSAmJiBzZWxlY3RlZEl0ZW0uZW50aXR5LmNhdGVnb3J5ICE9PSB7fSkgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAoaXNBcmFiaWMgPyBzZWxlY3RlZEl0ZW0uZW50aXR5LmNhdGVnb3J5LmFyYWJpY05hbWUgOiBzZWxlY3RlZEl0ZW0uZW50aXR5LmNhdGVnb3J5LmVuZ2xpc2hOYW1lKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICctLSd9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9JyhzZWxlY3RlZEl0ZW0uZW50aXR5LmNhdGVnb3J5VHlwZSAmJiBzZWxlY3RlZEl0ZW0uZW50aXR5LmNhdGVnb3J5VHlwZS5hcmFiaWNOYW1lKSc+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZ3JheS01MDAgZm9udC1ib2xkIHRleHQtYmFzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBcIkNSRUFURS5DQVRFR09SWV9UWVBFXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1ncmF5LTkwMCB0ZXh0LXNtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IChzZWxlY3RlZEl0ZW0uZW50aXR5LmNhdGVnb3J5VHlwZSAmJiBzZWxlY3RlZEl0ZW0uZW50aXR5LmNhdGVnb3J5VHlwZS5hcmFiaWNOYW1lKSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChpc0FyYWJpYyA/IHNlbGVjdGVkSXRlbS5lbnRpdHkuY2F0ZWdvcnlUeXBlLmFyYWJpY05hbWUgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW0uZW50aXR5LmNhdGVnb3J5VHlwZS5lbmdsaXNoTmFtZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgOiAnLS0nfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTNcIiAqbmdJZj0nKHNlbGVjdGVkSXRlbS5lbnRpdHkubWFpblRvcGljICYmIHNlbGVjdGVkSXRlbS5lbnRpdHkubWFpblRvcGljLmFyYWJpY05hbWUpJz5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1ncmF5LTUwMCBmb250LWJvbGQgdGV4dC1iYXNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IFwiQ1JFQVRFLk1BSU5fVE9QSUNcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWdyYXktOTAwIHRleHQtc21cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgKHNlbGVjdGVkSXRlbS5lbnRpdHkubWFpblRvcGljICYmIHNlbGVjdGVkSXRlbS5lbnRpdHkubWFpblRvcGljLmFyYWJpY05hbWUpID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgKGlzQXJhYmljID8gc2VsZWN0ZWRJdGVtLmVudGl0eS5tYWluVG9waWMuYXJhYmljTmFtZSA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbS5lbnRpdHkubWFpblRvcGljLmVuZ2xpc2hOYW1lKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICctLSd9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9JyhzZWxlY3RlZEl0ZW0uZW50aXR5LmRvY3VtZW50VHlwZSAmJiBzZWxlY3RlZEl0ZW0uZW50aXR5LmRvY3VtZW50VHlwZS5hcmFiaWNOYW1lKSc+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZ3JheS01MDAgZm9udC1ib2xkIHRleHQtYmFzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBcIkNSRUFURS5ET0NVTUVOVF9UWVBFXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1ncmF5LTkwMCB0ZXh0LXNtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IChzZWxlY3RlZEl0ZW0uZW50aXR5LmRvY3VtZW50VHlwZSAmJiBzZWxlY3RlZEl0ZW0uZW50aXR5LmRvY3VtZW50VHlwZS5hcmFiaWNOYW1lKSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChpc0FyYWJpYyA/IHNlbGVjdGVkSXRlbS5lbnRpdHkuZG9jdW1lbnRUeXBlLmFyYWJpY05hbWUgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW0uZW50aXR5LmRvY3VtZW50VHlwZS5lbmdsaXNoVGl0bGUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJy0tJ319XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtM1wiICpuZ0lmPSdkeW5hbWljRm9ybURhdGFbXCJnZG9jOnNlY3JlY3lMZXZlbFwiXSc+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZ3JheS01MDAgZm9udC1ib2xkIHRleHQtYmFzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBcIkNSRUFURS5TQ1JFQ1lfTEVWRUxcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWdyYXktOTAwIHRleHQtc21cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3ZvY2FidWxhcnkuVk9DX1NlY3JlY3lMZXZlbC4nICsgZHluYW1pY0Zvcm1EYXRhW1wiZ2RvYzpzZWNyZWN5TGV2ZWxcIl0gfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTNcIiAqbmdJZj0nZHluYW1pY0Zvcm1EYXRhW1wiZ2RvYzppbXBvcnRhbmNlXCJdJz5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1ncmF5LTUwMCBmb250LWJvbGQgdGV4dC1iYXNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IFwiQ1JFQVRFLklNUE9SVEFOQ0VfTEVWRUxcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWdyYXktOTAwIHRleHQtc21cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3ZvY2FidWxhcnkuVk9DX0ltcG9ydGFuY2UuJyArIGR5bmFtaWNGb3JtRGF0YVtcImdkb2M6aW1wb3J0YW5jZVwiXSB8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtM1wiICpuZ0lmPSdzZWxlY3RlZEl0ZW0uZW50aXR5LmRlcGFydG1lbnQnPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWdyYXktNTAwIGZvbnQtYm9sZCB0ZXh0LWJhc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgXCJDUkVBVEUuREVQQVJUTUVOVF9OQU1FXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1ncmF5LTkwMCB0ZXh0LXNtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IHNlbGVjdGVkSXRlbS5lbnRpdHkuZGVwYXJ0bWVudCA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChpc0FyYWJpYyA/IHNlbGVjdGVkSXRlbS5lbnRpdHkuZGVwYXJ0bWVudC5hcmFiaWNOYW1lIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtLmVudGl0eS5kZXBhcnRtZW50LmVuZ2xpc2hOYW1lKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICctLSd9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwibXQtM1wiICpuZ0lmPSdkeW5hbWljRm9ybURhdGFbXCJnZG9jOmRlcGFydG1lbnRDb2RlXCJdJz5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1ncmF5LTUwMCBmb250LWJvbGQgdGV4dC1iYXNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IFwiQ1JFQVRFLkRFUEFSVE1FTlRfQ09ERVwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZ3JheS05MDAgdGV4dC1zbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBkeW5hbWljRm9ybURhdGFbXCJnZG9jOmRlcGFydG1lbnRDb2RlXCJdID8gZHluYW1pY0Zvcm1EYXRhW1wiZ2RvYzpkZXBhcnRtZW50Q29kZVwiXSA6ICctLSd9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0zXCIgKm5nSWY9J2R5bmFtaWNGb3JtRGF0YVtcImdkb2M6YWdlbmN5Q2F0ZWdvcnlDb2RlXCJdJz5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1ncmF5LTUwMCBmb250LWJvbGQgdGV4dC1iYXNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IFwiQ1JFQVRFLkFHRU5DWV9DQVRFR09SWV9DT0RFXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1ncmF5LTkwMCB0ZXh0LXNtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGR5bmFtaWNGb3JtRGF0YVtcImdkb2M6YWdlbmN5Q2F0ZWdvcnlDb2RlXCJdID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgKGlzQXJhYmljID8gZHluYW1pY0Zvcm1EYXRhW1wiZ2RvYzphZ2VuY3lDYXRlZ29yeUNvZGVcIl1bJ3Byb3BlcnRpZXMnXVsnbGFiZWxfYXInXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGR5bmFtaWNGb3JtRGF0YVtcImdkb2M6YWdlbmN5Q2F0ZWdvcnlDb2RlXCJdWydwcm9wZXJ0aWVzJ11bJ2xhYmVsX2VuJ10pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJy0tJ319XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtM1wiICpuZ0lmPSdkeW5hbWljRm9ybURhdGFbXCJnZG9jOmFnZW5jeU5hbWVDb2RlXCJdJz5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1ncmF5LTUwMCBmb250LWJvbGQgdGV4dC1iYXNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IFwiQ1JFQVRFLkFHRU5DWV9OQU1FXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1ncmF5LTkwMCB0ZXh0LXNtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGR5bmFtaWNGb3JtRGF0YVtcImdkb2M6YWdlbmN5TmFtZUNvZGVcIl0gP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAoaXNBcmFiaWMgPyBkeW5hbWljRm9ybURhdGFbXCJnZG9jOmFnZW5jeU5hbWVDb2RlXCJdWydwcm9wZXJ0aWVzJ11bJ2xhYmVsX2FyJ11cclxuICAgICAgICAgICAgICAgICAgICAgICAgOiBkeW5hbWljRm9ybURhdGFbXCJnZG9jOmFnZW5jeU5hbWVDb2RlXCJdWydwcm9wZXJ0aWVzJ11bJ2xhYmVsX2VuJ10pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJy0tJ319XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtM1wiICpuZ0lmPSdkeW5hbWljRm9ybURhdGFbXCJnZG9jOmNvdW50cnlDYXRlZ29yeUNvZGVcIl0nPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWdyYXktNTAwIGZvbnQtYm9sZCB0ZXh0LWJhc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgXCJDUkVBVEUuQ09VTlRSWV9DQVRFR09SWV9DT0RFXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1ncmF5LTkwMCB0ZXh0LXNtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGR5bmFtaWNGb3JtRGF0YVtcImdkb2M6Y291bnRyeUNhdGVnb3J5Q29kZVwiXSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChpc0FyYWJpYyA/IGR5bmFtaWNGb3JtRGF0YVtcImdkb2M6Y291bnRyeUNhdGVnb3J5Q29kZVwiXVsncHJvcGVydGllcyddWydsYWJlbF9hciddXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogZHluYW1pY0Zvcm1EYXRhW1wiZ2RvYzpjb3VudHJ5Q2F0ZWdvcnlDb2RlXCJdWydwcm9wZXJ0aWVzJ11bJ2xhYmVsX2VuJ10pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJy0tJ319XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTNcIiAqbmdJZj0nZHluYW1pY0Zvcm1EYXRhW1wiZ2RvYzpjb3VudHJ5Q29kZVwiXSc+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZ3JheS01MDAgZm9udC1ib2xkIHRleHQtYmFzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBcIkNSRUFURS5DT1VOVFJZX05BTUVcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWdyYXktOTAwIHRleHQtc21cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgZHluYW1pY0Zvcm1EYXRhW1wiZ2RvYzpjb3VudHJ5Q29kZVwiXSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChpc0FyYWJpYyA/IGR5bmFtaWNGb3JtRGF0YVtcImdkb2M6Y291bnRyeUNvZGVcIl1bJ3Byb3BlcnRpZXMnXVsnbGFiZWxfYXInXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGR5bmFtaWNGb3JtRGF0YVtcImdkb2M6Y291bnRyeUNvZGVcIl1bJ3Byb3BlcnRpZXMnXVsnbGFiZWxfZW4nXSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgOiAnLS0nfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTNcIiAqbmdJZj0nZHluYW1pY0Zvcm1EYXRhW1wiZ2RvYzpyZW1hcmtzXCJdJz5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1ncmF5LTUwMCBmb250LWJvbGQgdGV4dC1iYXNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IFwiQ1JFQVRFLlJFTUFSS1NcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWdyYXktOTAwIHRleHQtc21cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgZHluYW1pY0Zvcm1EYXRhW1wiZ2RvYzpyZW1hcmtzXCJdID8gZHluYW1pY0Zvcm1EYXRhW1wiZ2RvYzpyZW1hcmtzXCJdIDogJy0tJ319XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtM1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZ3JheS01MDAgZm9udC1ib2xkIHRleHQtYmFzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IFwiRk9MREVSUy5CWVwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWdyYXktOTAwIHRleHQtc20gZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBpdGVtcy1jZW50ZXIgYmctZ3JheS0xMDAgcm91bmRlZC14bFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YXBwLXVzZXIgW3VzZXJdPVwiZHluYW1pY0Zvcm1EYXRhWydkYzpjcmVhdG9yJ11cIj48L2FwcC11c2VyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtM1wiICpuZ0lmPVwiZHluYW1pY0Zvcm1EYXRhWydkYzpjb250cmlidXRvcnMnXS5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1ncmF5LTUwMCBmb250LWJvbGQgdGV4dC1iYXNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgXCJGT0xERVJTLkNPTlRSVUJJVE9SU1wiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC13cmFwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBpdGVtcy1jZW50ZXIgYmctZ3JheS0xMDAgcm91bmRlZC14bCBtYi0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHVzZXIgb2YgZHluYW1pY0Zvcm1EYXRhWydkYzpjb250cmlidXRvcnMnXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YXBwLXVzZXIgW3VzZXJdPVwidXNlclwiPjwvYXBwLXVzZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0zXCIgKm5nSWY9XCJzaGFyZWRMaXN0VXNlci5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1ncmF5LTUwMCBmb250LWJvbGQgdGV4dC1iYXNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3tcInNoYXJlLnNoYXJlV2l0aFwiIHwgdHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXdyYXBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGl0ZW1zLWNlbnRlciBiZy1ncmF5LTEwMCByb3VuZGVkLXhsIG1iLTJcIiAqbmdGb3I9XCJsZXQgdXNlciBvZiBzaGFyZWRMaXN0VXNlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YXBwLXVzZXIgW3VzZXJdPVwidXNlclwiPjwvYXBwLXVzZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm10LTVcIiAqbmdJZj1cImR5bmFtaWNGb3JtICYmIGR5bmFtaWNGb3JtRGF0YVwiPlxyXG4gICAgICAgICAgICA8YXBwLW11bHRpcGxlLWR5bmFtaWMtZm9ybS12aWV3ZXIgW2Zvcm1dPVwiZHluYW1pY0Zvcm1cIlxyXG4gICAgICAgICAgICAgICAgW2RhdGFdPVwiZHluYW1pY0Zvcm1EYXRhXCI+PC9hcHAtbXVsdGlwbGUtZHluYW1pYy1mb3JtLXZpZXdlcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGFncy13cmFwcGVycyByZWxhdGl2ZSBweC0wIHB5LTNcIj5cclxuICAgICAgICAgICAgPGN0cy1jb3JyZXNwb25kZW5jZS10YWdzIFtjb3JyZXNwb25kZW5jZV09XCJzaWRlTWVudUZpbGVEZXRhaWxzXCIgW2N1c3RvbUNsYXNzXT1cIid0YWdzLWRtcy13cmFwcGVyJ1wiXHJcbiAgICAgICAgICAgICAgICBbdXNlUGFyYW1zXT1cInRydWVcIiBbYWRkQ3VzdG9tQXBpTmFtZV09XCInU2VydmljZXMuVGFnRG9jdW1lbnQnXCJcclxuICAgICAgICAgICAgICAgIFtkZWxldGVDdXN0b21BcGlOYW1lXT1cIidTZXJ2aWNlcy5VbnRhZ0RvY3VtZW50J1wiPlxyXG4gICAgICAgICAgICA8L2N0cy1jb3JyZXNwb25kZW5jZS10YWdzPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+Il19
|
|
257
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy9zaWRlcGFuZWwvc2lkZXBhbmVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy9zaWRlcGFuZWwvc2lkZXBhbmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBcUIsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBOEIsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZLLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBSTlFLE9BQU8sRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxvQkFBb0IsRUFBMEIsTUFBTSx5REFBeUQsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBV3ZILE1BQU0sT0FBTyxrQkFBa0I7SUFtQzdCLFlBQW1CLFFBQWtCLEVBQzNCLHFCQUE2QyxFQUM5QyxxQkFBNEMsRUFDM0Msa0JBQXNDLEVBQ3RDLGVBQWlDLEVBQ2pDLGNBQThCLEVBQzlCLGtCQUFzQyxFQUN0QyxNQUFpQixFQUNqQixNQUF5QjtRQVJoQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQzNCLDBCQUFxQixHQUFyQixx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QjtzQkFEZixTQUFTO3VCQUFDLGtCQUFrQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFHL0MsZ0JBQWdCO3NCQURmLFNBQVM7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUcvQyxtQkFBbUI7c0JBRGxCLFNBQVM7dUJBQUMscUJBQXFCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUdsRCxhQUFhO3NCQURaLFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJbkMsWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUVJLGVBQWU7c0JBQXhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IFVwZGF0ZU1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vdXBkYXRlLW1vZGFsL3VwZGF0ZS1tb2RhbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEaWFsb2dNYW5nbWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQtc2VydmljZXMvZGlhbG9nLW1hbmdtZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEeW5hbWljRm9ybVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQtc2VydmljZXMvZHluYW1pYy1mb3JtLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTaGFyZWREb2NzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC1zZXJ2aWNlcy9zaGFyZWQtZG9jcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICdmb3JtaW9qcyc7XHJcbmltcG9ydCB7IFVzZXJQcmVmZXJlbmNlVmFsdWVzLCBVc2VyUHJlZmVyZW5jZXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy91c2VyL3VzZXItcHJlZmVyZW5jZXMuc2VydmljZSc7XHJcbmltcG9ydCB7IERvY3VtZW50c1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9kb2N1bWVudHMvc2VydmljZXMvZG9jdW1lbnRzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUYWdzQXBpU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2N0cy10YWdzL3NlcnZpY2VzL3RhZ3MtYXBpLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3NlcnZpY2VzL3RyYW5zbGF0aW9uL3RyYW5zbGF0aW9uLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtc2lkZXBhbmVsJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc2lkZXBhbmVsLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zaWRlcGFuZWwuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTaWRlcGFuZWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQgLCBPbkRlc3Ryb3l7XHJcbiAgQFZpZXdDaGlsZCgnZGV0YWlsc1RlbXBsYXRlJywgeyBzdGF0aWM6IHRydWUgfSlcclxuICBkZXRhaWxzVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZCgnY29tbWVudHNUZW1wbGF0ZScsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgY29tbWVudHNUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKCdhY3Rpdml0eVRlbXBsYXRlJywgeyBzdGF0aWM6IHRydWUgfSlcclxuICBhY3Rpdml0eVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoJ3Blcm1pc3Npb25zVGVtcGxhdGUnLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIHBlcm1pc3Npb25zVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZCgnZmlsZXNUZW1wbGF0ZScsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgZmlsZXNUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgcHJpdmF0ZSBvbkRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuICBASW5wdXQoKSBzZWxlY3RlZEl0ZW06IGFueTtcclxuICBASW5wdXQoKSBtZW51T3BlbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNvdXJjZVBhZ2UgPSAnZmlsZXMnO1xyXG4gIEBJbnB1dCgpIGFsbG93QWRkQW5kQmxvY2sgPSB0cnVlO1xyXG4gIHNpZGVNZW51TG9hZGluZyA9IGZhbHNlO1xyXG4gIEBPdXRwdXQoKSBvbkNsb3NlU2lkZU1lbnUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIGR5bmFtaWNGb3JtOyAvLyBjb250YWluIGR5bmFtaWMgZm9ybVxyXG4gIGR5bmFtaWNGb3JtRGF0YTsgLy8gY29udGFpbiBhbGwgZmlsZSBkYXRhIGluY2x1ZGluZyBkeW5hbWljIGZvcm0gZGF0YVxyXG4gIHJ0bEVuYWJsZWQgPSBmYWxzZTtcclxuICBpc0FyYWJpYyA9IHRydWU7XHJcbiAgc2lkZU1lbnVGaWxlRGV0YWlsczsgLy8gaG9sZCBkYXRhIG9mIGRhY3VtZW50IHRvIGJlIHNob3duIGluIHNpZGUgbWVudSBkZXRhaWxzXHJcbiAgc2hvd0RldGFpbHMgPSBmYWxzZTtcclxuICBteVRhYnMgPSBbXTtcclxuICBtdWx0aVNlbGVjdGVka2V5czogc3RyaW5nW107XHJcbiAgbGFuZ3VhZ2VTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICB0YWdzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgc2hhcmVkU3ViOiBTdWJzY3JpcHRpb247XHJcbiAgc2hhcmVkRGF0YSA9IFtdO1xyXG4gIHNoYXJlZExpc3QgPSBbXTtcclxuICBzaGFyZWRMaXN0VXNlciA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZGF0ZVBpcGU6IERhdGVQaXBlLFxyXG4gICAgcHJpdmF0ZSB1c2VyUHJlZmVyZW5jZVNlcnZpY2U6IFVzZXJQcmVmZXJlbmNlc1NlcnZpY2UsXHJcbiAgICBwdWJsaWMgZGlhbG9nTWFuZ21lbnRTZXJ2aWNlOiBEaWFsb2dNYW5nbWVudFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGR5bmFtaWNGb3JtU2VydmljZTogRHluYW1pY0Zvcm1TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBkb2N1bWVudFNlcnZpY2U6IERvY3VtZW50c1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRhZ3NBcGlTZXJ2aWNlOiBUYWdzQXBpU2VydmljZSxcclxuICAgIHByaXZhdGUgdHJhbnNsYXRpb25TZXJ2aWNlOiBUcmFuc2xhdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgcHJpdmF0ZSBzaGFyZWQ6IFNoYXJlZERvY3NTZXJ2aWNlLCkgeyB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLm1lbnVPcGVuKSB7XHJcbiAgICAgIHRoaXMub3BlblNpZGVNZW51RGV0YWlscygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLm15VGFicyA9IFtcclxuICAgICAge1xyXG4gICAgICAgIGxhYmVsOiAnRGV0YWlscycsXHJcbiAgICAgICAgaWNvbjogJ3N1YnRpdGxlcycsXHJcbiAgICAgICAgdGVtcGxhdGU6IHRoaXMuZGV0YWlsc1RlbXBsYXRlLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbGFiZWw6ICdjb21tZW50cycsXHJcbiAgICAgICAgaWNvbjogJ3RleHRzbXMnLFxyXG4gICAgICAgIHRlbXBsYXRlOiB0aGlzLmNvbW1lbnRzVGVtcGxhdGUsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBsYWJlbDogJ3Blcm1pc3Npb25zJyxcclxuICAgICAgICBpY29uOiAnbG9jaycsXHJcbiAgICAgICAgdGVtcGxhdGU6IHRoaXMucGVybWlzc2lvbnNUZW1wbGF0ZSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGxhYmVsOiAnYWN0aXZpdHknLFxyXG4gICAgICAgIGljb246ICdsaXN0X2FsdCcsXHJcbiAgICAgICAgdGVtcGxhdGU6IHRoaXMuYWN0aXZpdHlUZW1wbGF0ZSxcclxuICAgICAgfSxcclxuICAgIF07XHJcbiAgICBpZiAodGhpcy51c2VyUHJlZmVyZW5jZVNlcnZpY2UpIHtcclxuICAgICAgdGhpcy51c2VyUHJlZmVyZW5jZVNlcnZpY2VcclxuICAgICAgICAuc2VsZWN0KFVzZXJQcmVmZXJlbmNlVmFsdWVzLkxvY2FsZSlcclxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kkKSlcclxuICAgICAgICAuc3Vic2NyaWJlKChsb2NhbGUpID0+IHtcclxuICAgICAgICAgIHRoaXMucnRsRW5hYmxlZCA9IGxvY2FsZSA9PT0gJ2FyJyA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMudGFnc1N1YnNjcmlwdGlvbiA9IHRoaXMudGFnc0FwaVNlcnZpY2UuZ2V0VXBkYXRlZEZpbGUuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzKSA9PiB7XHJcbiAgICAgICAgdGhpcy5kb2N1bWVudFNlcnZpY2VcclxuICAgICAgICAgIC5nZXREb2N1bWVudCh0aGlzLnNlbGVjdGVkSXRlbS5lbnRpdHkudWlkKVxyXG4gICAgICAgICAgLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2lkZU1lbnVGaWxlRGV0YWlscyA9IHJlcztcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMubGFuZ3VhZ2VTdWJzY3JpcHRpb24gPSB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS5pc0FyYWJpYyQuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzKSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc0FyYWJpYyA9IHJlcztcclxuXHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBvcGVuVXBkYXRlRnJvbVNpZGVNZW51KCkge1xyXG4gICAgdGhpcy5jbG9zZURldGFpbHNNZW51KCk7XHJcbiAgICB0aGlzLm9wZW5VcGRhdGVNb2RhbCgpO1xyXG4gIH1cclxuXHJcbiAgb3BlblVwZGF0ZU1vZGFsKCkge1xyXG4gICAgdGhpcy5kaWFsb2cub3BlbihVcGRhdGVNb2RhbENvbXBvbmVudCwge1xyXG4gICAgICB3aWR0aDogJzQwJScsXHJcbiAgICAgIGhlaWdodDogJzcwJScsXHJcbiAgICAgIG1heFdpZHRoOiAnYXV0bycsXHJcbiAgICAgIHBhbmVsQ2xhc3M6ICd3YXRjaGVyLWRpYWxvZy1jb250YWluZXInLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgaWQ6IHRoaXMuc2VsZWN0ZWRJdGVtLmlkLFxyXG4gICAgICAgIHR5cGU6IHRoaXMuc2VsZWN0ZWRJdGVtLmVudGl0eS50eXBlLFxyXG4gICAgICAgIGNvZGU6IHRoaXMuc2VsZWN0ZWRJdGVtLmVudGl0eS5wcm9wZXJ0aWVzWydnZG9jOmRvY3VtZW50VHlwZUNvZGUnXSA/IHRoaXMuc2VsZWN0ZWRJdGVtLmVudGl0eS5wcm9wZXJ0aWVzWydnZG9jOmRvY3VtZW50VHlwZUNvZGUnXSA6IHRoaXMuc2VsZWN0ZWRJdGVtLmVudGl0eS50eXBlLFxyXG4gICAgICAgIGlzRGlyZWN0b3J5OiB0aGlzLnNlbGVjdGVkSXRlbS5pc0RpcmVjdG9yeSxcclxuICAgICAgfSxcclxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tb3BlbiBmaWxlIHNpZGUgbWVudSBkZXRhaWxzLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICBjdXN0b21lSGVhZGVyID1cclxuICAgICdsb2NrLGRjOmNyZWF0b3IsZGM6Y29udHJpYnV0b3JzLGdkb2M6Y291bnRyeUNhdGVnb3J5Q29kZSxnZG9jOmNvdW50cnlDb2RlLGdkb2M6YWdlbmN5TmFtZUNvZGUsZ2RvYzphZ2VuY3lDYXRlZ29yeUNvZGUnO1xyXG5cclxuICBvcGVuU2lkZU1lbnVEZXRhaWxzKCkge1xyXG4gICAgdGhpcy5zaWRlTWVudUxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5zaWRlTWVudUZpbGVEZXRhaWxzID0ge307XHJcbiAgICB0aGlzLnNoYXJlZExpc3RVc2VyID0gW107XHJcbiAgICAvLyB0aGlzLnNob3dEZXRhaWxzID0gZmFsc2U7IC8vIGlmIGl0IHdhcyBvcGVuIGNsb3NlIGl0IHRoZW4gb3BlbiBpdCBhZ2FpbiB0byBhbGxvdyB0YWJzIHRvIGJlIHJlcmVuZHJlZFxyXG4gICAgdGhpcy5keW5hbWljRm9ybSA9IG51bGw7XHJcbiAgICAvLyBpZiAodGhpcy5zZWxlY3RlZEl0ZW0uaXNEaXJlY3RvcnkgPT09IGZhbHNlKSB7XHJcbiAgICB0aGlzLmR5bmFtaWNGb3JtU2VydmljZVxyXG4gICAgICAuZ2V0RHluYW1pY0Zvcm0odGhpcy5zZWxlY3RlZEl0ZW0uZW50aXR5LnByb3BlcnRpZXNbJ2dkb2M6ZG9jdW1lbnRUeXBlQ29kZSddID8gdGhpcy5zZWxlY3RlZEl0ZW0uZW50aXR5LnByb3BlcnRpZXNbJ2dkb2M6ZG9jdW1lbnRUeXBlQ29kZSddIDogdGhpcy5zZWxlY3RlZEl0ZW0uZW50aXR5LnR5cGUpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzWydjb21wb25lbnRzJ10gJiYgcmVzWydjb21wb25lbnRzJ10ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljRm9ybSA9IHJlcztcclxuICAgICAgICAgIGxldCBwcmVmaXggPSByZXMucHJlZml4O1xyXG4gICAgICAgICAgVXRpbHMuZWFjaENvbXBvbmVudChyZXMuY29tcG9uZW50cywgKGNvbXApID0+IHtcclxuICAgICAgICAgICAgaWYgKGNvbXAudHlwZSA9PT0gJ3VzZXJTZWxlY3RvcicpIHtcclxuICAgICAgICAgICAgICAvLyB0aGlzLnVzZXJTZWxlY3RvcktleXMucHVzaChjb21wLmZpeGVkS2V5KTtcclxuICAgICAgICAgICAgICBsZXQgY29tcFByZWZpeCA9IHByZWZpeFtjb21wLmZpeGVkS2V5XVxyXG4gICAgICAgICAgICAgICAgPyBwcmVmaXhbY29tcC5maXhlZEtleV1cclxuICAgICAgICAgICAgICAgIDogJyc7XHJcbiAgICAgICAgICAgICAgaWYgKGNvbXBQcmVmaXgpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9tZUhlYWRlciA9XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9tZUhlYWRlciArXHJcbiAgICAgICAgICAgICAgICAgICcsJyArXHJcbiAgICAgICAgICAgICAgICAgIGNvbXBQcmVmaXggK1xyXG4gICAgICAgICAgICAgICAgICAnOicgK1xyXG4gICAgICAgICAgICAgICAgICBjb21wLmZpeGVkS2V5O1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbWVIZWFkZXIgPVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbWVIZWFkZXIgKyAnLCcgKyBjb21wLmZpeGVkS2V5O1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmRvY3VtZW50U2VydmljZVxyXG4gICAgICAgICAgLmdldERvY3VtZW50KHRoaXMuc2VsZWN0ZWRJdGVtLmVudGl0eS51aWQsIHtcclxuICAgICAgICAgICAgJ1gtTlhmZXRjaC1kb2N1bWVudCc6IHRoaXMuY3VzdG9tZUhlYWRlcixcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zaWRlTWVudUZpbGVEZXRhaWxzID0gcmVzO1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNGb3JtRGF0YSA9IHJlcz8ucHJvcGVydGllcztcclxuICAgICAgICAgICAgdGhpcy5zaG93RGV0YWlscyA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuc2lkZU1lbnVMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB0aGlzLmdldFNoYXJlc0J5TWUoKTtcclxuXHJcbiAgICAvLyB9IGVsc2Uge1xyXG4gICAgLy8gICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgIC8vICAgICB0aGlzLnNpZGVNZW51RmlsZURldGFpbHMgPSB0aGlzLnNlbGVjdGVkSXRlbS5lbnRpdHlcclxuICAgIC8vICAgICB0aGlzLnNob3dEZXRhaWxzID0gdHJ1ZVxyXG4gICAgLy8gICB9LCAxMDAwKTtcclxuICAgIC8vIH1cclxuICB9XHJcblxyXG4gIGNsb3NlRGV0YWlsc01lbnUoKSB7XHJcbiAgICB0aGlzLnNob3dEZXRhaWxzID0gZmFsc2U7XHJcbiAgICB0aGlzLnNpZGVNZW51TG9hZGluZyA9IGZhbHNlO1xyXG4gICAgdGhpcy5vbkNsb3NlU2lkZU1lbnUuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgLy8gY2xvc2VEZXRhaWxzU2lkZU1lbnUoZXZlbnQpIHtcclxuICAvLyAgIGlmICghdGhpcy5wZXJtaXNzaW9uU2VydmljZS5kaXNhYmxlQ2xpY2tPdXRTaWRlKSB7XHJcbiAgLy8gICAgIGlmIChcclxuICAvLyAgICAgICBldmVudC5pZCAhPT0gJ3NlZV9kZXRhaWxzJyAmJlxyXG4gIC8vICAgICAgICF0aGlzLmNoZWNrRm9yQ2xhc3MoZXZlbnQuY2xhc3NOYW1lKVxyXG4gIC8vICAgICApIHtcclxuICAvLyAgICAgICB0aGlzLnNob3dEZXRhaWxzID0gZmFsc2U7XHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH1cclxuICAvLyB9XHJcblxyXG4gIGNoZWNrRm9yQ2xhc3MoY2xhc3NOYW1lKSB7XHJcbiAgICBsZXQgY2xhc3NlcyA9IFtcclxuICAgICAgJ2RldGFpbGVkLW1lbnUnLFxyXG4gICAgICAnbmctdGFnLWxhYmVsJyxcclxuICAgICAgJ25nLW9wdGlvbi1sYWJlbCcsXHJcbiAgICAgICduZy1zdGFyLWluc2VydGVkJyxcclxuICAgIF07XHJcbiAgICBsZXQgY2xhc3NGb3VuZGVkID0gZmFsc2U7XHJcbiAgICBjbGFzc2VzLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICBpZiAoY2xhc3NOYW1lLmluY2x1ZGVzKGl0ZW0pKSB7XHJcbiAgICAgICAgY2xhc3NGb3VuZGVkID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gY2xhc3NGb3VuZGVkO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2hhcmVzQnlNZSgpIHtcclxuICAgIHRoaXMuc2hhcmVkU3ViID0gdGhpcy5zaGFyZWQuZ2V0U2hhcmVzQnlNZSh0aGlzLnNlbGVjdGVkSXRlbS5lbnRpdHkudWlkKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgdGhpcy5zaGFyZWRMaXN0VXNlciA9IHJlcztcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMudGFnc1N1YnNjcmlwdGlvbiA/IHRoaXMudGFnc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpIDogbnVsbDtcclxuICAgIHRoaXMubGFuZ3VhZ2VTdWJzY3JpcHRpb24gPyB0aGlzLmxhbmd1YWdlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkgOiBudWxsO1xyXG4gICAgdGhpcy5vbkRlc3Ryb3kkLm5leHQoKTtcclxuICAgIHRoaXMub25EZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwic2lkZS1tZW51LWRldGFpbHNcIiBTZXRSdGw+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaC1mdWxsXCIgKm5nSWY9XCJzZWxlY3RlZEl0ZW0gJiYgc2hvd0RldGFpbHMgJiYgIXNpZGVNZW51TG9hZGluZ1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTMgcHgtNSBweS0xIHctMTAwIGZsZXggYm9yZGVyLWItMiBpdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDwhLS0gPHRpdGxlLXdpdGgtaWNvbiBjbGFzcz1cIi1teS0xLjVcIiBbY29udGV4dF09XCJzZWxlY3RlZEl0ZW0uZW50aXR5XCIgW3Nob3dUaXRsZV09XCJmYWxzZVwiPjwvdGl0bGUtd2l0aC1pY29uPiAtLT5cclxuICAgICAgICAgICAgICAgIDxhcHAtZGlzcGxheS1zdWl0YWJsZS1pY29uIFtkYXRhXT1cInNlbGVjdGVkSXRlbVwiIFtzaXplXT1cIic0MHB4J1wiPjwvYXBwLWRpc3BsYXktc3VpdGFibGUtaWNvbj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwianVzdGlmeS1jZW50ZXIgZmxleCBmbGV4LWNvbCAgIGZsZXgtMSBmbGV4LWdyb3ctMCB3LTcvMTJcIiAqbmdJZj1cIiFzZWxlY3RlZEl0ZW0uaXNEaXJlY3RvcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1iYXNlIHRleHQtZ3JheS01MDAgZm9udC1ib2xkIHRydW5jYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cInNlbGVjdGVkSXRlbS5lbnRpdHk/LnByb3BlcnRpZXM/LlsnZmlsZTpjb250ZW50J10/LlsnbmFtZSddXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2FsdF09XCJzZWxlY3RlZEl0ZW0uZW50aXR5Py5wcm9wZXJ0aWVzPy5bJ2ZpbGU6Y29udGVudCddPy5bJ25hbWUnXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e3NlbGVjdGVkSXRlbS5lbnRpdHk/LnByb3BlcnRpZXM/LlsnZmlsZTpjb250ZW50J10/LlsnbmFtZSddfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1ncmF5LTUwMCB0ZXh0LXNtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7KChzZWxlY3RlZEl0ZW0uZW50aXR5Py5wcm9wZXJ0aWVzPy5bJ2ZpbGU6Y29udGVudCddPy5bJ2xlbmd0aCddKSAvICgxMDI0ICpcclxuICAgICAgICAgICAgICAgICAgICAgICAgMTAyNCkpLnRvRml4ZWQoMikgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgTUJcclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgZC1mbGV4XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtcy1jZW50ZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQtYmFzZSB0ZXh0LWdyYXktNTAwXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWJvbGRcclxuICAgICAgICAgICAgICAgICAgICAgXCIgKm5nSWY9XCJzZWxlY3RlZEl0ZW0uaXNEaXJlY3RvcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyBzZWxlY3RlZEl0ZW0/Lm5hbWUgfX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqcGVybWlzc2lvbj1cIntuYW1lOiAnbG9ja093bmVySWZMb2NrZWQnLCBlbnRpdHk6IHNlbGVjdGVkSXRlbS5lbnRpdHl9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwidGV4dC1ncmF5LTUwMCBjdXJzb3ItcG9pbnRlciAgbXgtM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpwZXJtaXNzaW9uPVwie25hbWU6ICdjYW5VcGRhdGUnLCBlbnRpdHk6IHNlbGVjdGVkSXRlbS5lbnRpdHl9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cInt7ICdGT0xERVJTLlVQREFURV9ERVRBSUxTJyB8IHRyYW5zbGF0ZSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuVXBkYXRlRnJvbVNpZGVNZW51KClcIj5lZGl0PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiY2xvc2UtaWNvbiB0ZXh0LWdyYXktNTAwXCIgKGNsaWNrKT1cImNsb3NlRGV0YWlsc01lbnUoKVwiXHJcbiAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCInQlVUVE9OUy5DTE9TRScgfCB0cmFuc2xhdGVcIj5jbG9zZTwvbWF0LWljb24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImR5bmFtaWMtc2VjdGlvblwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXgtMiBoLWZ1bGxcIj5cclxuICAgICAgICAgICAgICAgIDxhcHAtZHluYW1pYy10YWJzIFt0YWJzXT1cIm15VGFic1wiPjwvYXBwLWR5bmFtaWMtdGFicz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJoLWZ1bGwgZm9udC1ib2xkIGQtZmxleCBqdXN0aWZ5LWNlbnRlciBpdGVtcy1jZW50ZXJcIiAqbmdJZj1cInNpZGVNZW51TG9hZGluZ1wiPlxyXG4gICAgICAgIHt7IFwibG9hZGluZ1wiIHwgdHJhbnNsYXRlIH19XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48IS0tIENvbW1lbnRzIC0tPlxyXG48bmctdGVtcGxhdGUgI2NvbW1lbnRzVGVtcGxhdGU+XHJcbiAgICA8ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBoLWZ1bGxcIj5cclxuICAgICAgICA8YXBwLWNvbW1lbnRzLWRhc2hsZXQgW2NvcnJlc3BvbmRlbmNlXT1cInNpZGVNZW51RmlsZURldGFpbHNcIiBbZW50aXR5SWRdPVwic2VsZWN0ZWRJdGVtLmVudGl0eS51aWRcIlxyXG4gICAgICAgICAgICBbc2hvd2FkZGNvbW1lbnRdPVwidHJ1ZVwiIFtyb3ddPVwiZmFsc2VcIj5cclxuICAgICAgICA8L2FwcC1jb21tZW50cy1kYXNobGV0PlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIG15TG9nRmlsZSAtLT5cclxuPG5nLXRlbXBsYXRlICNhY3Rpdml0eVRlbXBsYXRlPlxyXG4gICAgPCEtLSA8Y3RzLXZpZXdlci1sb2cgW2NvcnJlc3BvbmRlbmNlXT1cInNlbGVjdGVkSXRlbS5lbnRpdHlcIj48L2N0cy12aWV3ZXItbG9nPiAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJoLWZ1bGwgbXQtM1wiPlxyXG4gICAgICAgIDxhcHAtYWN0aXZpdGllcy1sb2cgW2RvY3VtZW50SWRdPVwic2VsZWN0ZWRJdGVtLmVudGl0eS51aWRcIiBbZG9jdW1lbnRUaXRsZV09XCJzZWxlY3RlZEl0ZW0uZW50aXR5LnRpdGxlXCJcclxuICAgICAgICAgICAgW2ZpbGVdPVwic2lkZU1lbnVGaWxlRGV0YWlsc1wiPjwvYXBwLWFjdGl2aXRpZXMtbG9nPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3Blcm1pc3Npb25zVGVtcGxhdGU+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaC1mdWxsIG92ZXJmbG93LWF1dG8gcHgtMiBtdC0zXCI+XHJcbiAgICAgICAgPGFwcC1wZXJtaXNzaW9ucyBbc291cmNlUGFnZV09XCJzb3VyY2VQYWdlXCJcclxuICAgICAgICBbYWxsb3dBZGRBbmRCbG9ja109XCJhbGxvd0FkZEFuZEJsb2NrXCIgIFtkb2N1bWVudF09XCJzaWRlTWVudUZpbGVEZXRhaWxzXCJcclxuICAgICAgICAgICAgW2RvY3VtZW50SWRdPVwic2VsZWN0ZWRJdGVtLmVudGl0eS51aWRcIj48L2FwcC1wZXJtaXNzaW9ucz5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBGaWxlcyBUYWIgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjZmlsZXNUZW1wbGF0ZT5cclxuICAgIDxkaXYgY2xhc3M9XCJoLWZ1bGwgb3ZlcmZsb3ctYXV0byBweC0yIG10LTNcIj5cclxuICAgICAgICA8Y3RzLXZlcnNpb25zIFtmaWxlXT1cInNlbGVjdGVkSXRlbS5lbnRpdHlcIj48L2N0cy12ZXJzaW9ucz5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBEZXRhaWxzIC0tPlxyXG48bmctdGVtcGxhdGUgI2RldGFpbHNUZW1wbGF0ZT5cclxuICAgIDxkaXYgY2xhc3M9XCJwYi0yIG10LTMgaC1mdWxsIHB4LTIgb3ZlcmZsb3ctYXV0b1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdGF0aWMtZGF0YVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZ3JheS01MDAgZm9udC1ib2xkIHRleHQtYmFzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IFwiRk9MREVSUy5USVRMRV9PTkxZXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZ3JheS05MDAgdGV4dC1zbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGR5bmFtaWNGb3JtRGF0YVtcImRjOnRpdGxlXCJdIH19XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0zXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1ncmF5LTUwMCBmb250LWJvbGQgdGV4dC1iYXNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgXCJGT0xERVJTLkRFU0NSSVBUSU9OX09OTFlcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1ncmF5LTkwMCB0ZXh0LXNtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgZHluYW1pY0Zvcm1EYXRhW1wiZGM6ZGVzY3JpcHRpb25cIl0gfX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWdyYXktNTAwIGZvbnQtYm9sZCB0ZXh0LWJhc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyBcIkZPTERFUlMuQ1JFQVRFRF9BVFwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWdyYXktOTAwIHRleHQtc21cIj5cclxuICAgICAgICAgICAgICAgICAgICB7e1xyXG4gICAgICAgICAgICAgICAgICAgIGR5bmFtaWNGb3JtRGF0YVtcImRjOmNyZWF0ZWRcIl1cclxuICAgICAgICAgICAgICAgICAgICB8IGxvY2FsaXplZERhdGU6IFwiZGQgTU1NTSB5eXl5XCI6KGlzQXJhYmljPyAnYXItQVInIDogJ2VuLVVTJylcclxuICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtM1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZ3JheS01MDAgZm9udC1ib2xkIHRleHQtYmFzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IFwiRk9MREVSUy5MQVNUX01PRElGSUVEXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZ3JheS05MDAgdGV4dC1zbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7XHJcbiAgICAgICAgICAgICAgICAgICAgZHluYW1pY0Zvcm1EYXRhW1wiZGM6bW9kaWZpZWRcIl1cclxuICAgICAgICAgICAgICAgICAgICB8IGxvY2FsaXplZERhdGU6IFwiZGQgTU1NTSB5eXl5XCI6KGlzQXJhYmljPyAnYXItQVInIDogJ2VuLVVTJylcclxuICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1cGVyLWRvY3VtZW50LWZpZWxkc1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTNcIiAqbmdJZj0nZHluYW1pY0Zvcm1EYXRhW1wiZ2RvYzpkb2N1bWVudFN1YmplY3RcIl0nPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWdyYXktNTAwIGZvbnQtYm9sZCB0ZXh0LWJhc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgXCJDUkVBVEUuRE9DVU1FTlRfU1VCSkVDVFwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZ3JheS05MDAgdGV4dC1zbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBkeW5hbWljRm9ybURhdGFbXCJnZG9jOmRvY3VtZW50U3ViamVjdFwiXSA/IGR5bmFtaWNGb3JtRGF0YVtcImdkb2M6ZG9jdW1lbnRTdWJqZWN0XCJdIDogJy0tJ319XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtM1wiICpuZ0lmPSdkeW5hbWljRm9ybURhdGFbXCJnZG9jOmRvY3VtZW50TnVtYmVyXCJdJz5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1ncmF5LTUwMCBmb250LWJvbGQgdGV4dC1iYXNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IFwiQ1JFQVRFLkRPQ1VNRU5UX05VTUJFUlwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZ3JheS05MDAgdGV4dC1zbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBkeW5hbWljRm9ybURhdGFbXCJnZG9jOmRvY3VtZW50TnVtYmVyXCJdID8gZHluYW1pY0Zvcm1EYXRhW1wiZ2RvYzpkb2N1bWVudE51bWJlclwiXSA6ICctLSd9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTNcIiAqbmdJZj0nZHluYW1pY0Zvcm1EYXRhW1wiZ2RvYzpkb2N1bWVudFJlZmVyZW5jZU51bWJlclwiXSc+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZ3JheS01MDAgZm9udC1ib2xkIHRleHQtYmFzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBcIkNSRUFURS5ET0NVTUVOVF9SRUZfTlVNQkVSXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1ncmF5LTkwMCB0ZXh0LXNtXCIgZGlyPVwibHRyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGR5bmFtaWNGb3JtRGF0YVtcImdkb2M6ZG9jdW1lbnRSZWZlcmVuY2VOdW1iZXJcIl0gP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkeW5hbWljRm9ybURhdGFbXCJnZG9jOmRvY3VtZW50UmVmZXJlbmNlTnVtYmVyXCJdIDogJy0tJ319XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtM1wiICpuZ0lmPSdkeW5hbWljRm9ybURhdGFbXCJnZG9jOmdEb2N1bWVudERhdGVcIl0nPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWdyYXktNTAwIGZvbnQtYm9sZCB0ZXh0LWJhc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgXCJDUkVBVEUuRE9DVU1FTlRfREFURVwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZ3JheS05MDAgdGV4dC1zbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBkeW5hbWljRm9ybURhdGFbXCJnZG9jOmdEb2N1bWVudERhdGVcIl0gPyAoZHluYW1pY0Zvcm1EYXRhW1wiZ2RvYzpnRG9jdW1lbnREYXRlXCJdIHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxpemVkRGF0ZTogXCJkZCBNTU1NIHl5eXlcIjooaXNBcmFiaWM/ICdhci1BUicgOiAnZW4tVVMnKSkgOiAnLS0nfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0zXCIgKm5nSWY9JyhzZWxlY3RlZEl0ZW0uZW50aXR5LmNhdGVnb3J5ICYmIHNlbGVjdGVkSXRlbS5lbnRpdHkuY2F0ZWdvcnkgIT09IHt9KSc+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZ3JheS01MDAgZm9udC1ib2xkIHRleHQtYmFzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBcIkNSRUFURS5DQVRFR09SWVwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZ3JheS05MDAgdGV4dC1zbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyAoc2VsZWN0ZWRJdGVtLmVudGl0eS5jYXRlZ29yeSAmJiBzZWxlY3RlZEl0ZW0uZW50aXR5LmNhdGVnb3J5ICE9PSB7fSkgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAoaXNBcmFiaWMgPyBzZWxlY3RlZEl0ZW0uZW50aXR5LmNhdGVnb3J5LmFyYWJpY05hbWUgOiBzZWxlY3RlZEl0ZW0uZW50aXR5LmNhdGVnb3J5LmVuZ2xpc2hOYW1lKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICctLSd9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9JyhzZWxlY3RlZEl0ZW0uZW50aXR5LmNhdGVnb3J5VHlwZSAmJiBzZWxlY3RlZEl0ZW0uZW50aXR5LmNhdGVnb3J5VHlwZS5hcmFiaWNOYW1lKSc+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZ3JheS01MDAgZm9udC1ib2xkIHRleHQtYmFzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBcIkNSRUFURS5DQVRFR09SWV9UWVBFXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1ncmF5LTkwMCB0ZXh0LXNtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IChzZWxlY3RlZEl0ZW0uZW50aXR5LmNhdGVnb3J5VHlwZSAmJiBzZWxlY3RlZEl0ZW0uZW50aXR5LmNhdGVnb3J5VHlwZS5hcmFiaWNOYW1lKSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChpc0FyYWJpYyA/IHNlbGVjdGVkSXRlbS5lbnRpdHkuY2F0ZWdvcnlUeXBlLmFyYWJpY05hbWUgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW0uZW50aXR5LmNhdGVnb3J5VHlwZS5lbmdsaXNoTmFtZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgOiAnLS0nfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTNcIiAqbmdJZj0nKHNlbGVjdGVkSXRlbS5lbnRpdHkubWFpblRvcGljICYmIHNlbGVjdGVkSXRlbS5lbnRpdHkubWFpblRvcGljLmFyYWJpY05hbWUpJz5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1ncmF5LTUwMCBmb250LWJvbGQgdGV4dC1iYXNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IFwiQ1JFQVRFLk1BSU5fVE9QSUNcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWdyYXktOTAwIHRleHQtc21cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgKHNlbGVjdGVkSXRlbS5lbnRpdHkubWFpblRvcGljICYmIHNlbGVjdGVkSXRlbS5lbnRpdHkubWFpblRvcGljLmFyYWJpY05hbWUpID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgKGlzQXJhYmljID8gc2VsZWN0ZWRJdGVtLmVudGl0eS5tYWluVG9waWMuYXJhYmljTmFtZSA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbS5lbnRpdHkubWFpblRvcGljLmVuZ2xpc2hOYW1lKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICctLSd9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9JyhzZWxlY3RlZEl0ZW0uZW50aXR5LmRvY3VtZW50VHlwZSAmJiBzZWxlY3RlZEl0ZW0uZW50aXR5LmRvY3VtZW50VHlwZS5hcmFiaWNOYW1lKSc+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZ3JheS01MDAgZm9udC1ib2xkIHRleHQtYmFzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBcIkNSRUFURS5ET0NVTUVOVF9UWVBFXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1ncmF5LTkwMCB0ZXh0LXNtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IChzZWxlY3RlZEl0ZW0uZW50aXR5LmRvY3VtZW50VHlwZSAmJiBzZWxlY3RlZEl0ZW0uZW50aXR5LmRvY3VtZW50VHlwZS5hcmFiaWNOYW1lKSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChpc0FyYWJpYyA/IHNlbGVjdGVkSXRlbS5lbnRpdHkuZG9jdW1lbnRUeXBlLmFyYWJpY05hbWUgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW0uZW50aXR5LmRvY3VtZW50VHlwZS5lbmdsaXNoVGl0bGUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJy0tJ319XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtM1wiICpuZ0lmPSdkeW5hbWljRm9ybURhdGFbXCJnZG9jOnNlY3JlY3lMZXZlbFwiXSc+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZ3JheS01MDAgZm9udC1ib2xkIHRleHQtYmFzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBcIkNSRUFURS5TQ1JFQ1lfTEVWRUxcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWdyYXktOTAwIHRleHQtc21cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3ZvY2FidWxhcnkuVk9DX1NlY3JlY3lMZXZlbC4nICsgZHluYW1pY0Zvcm1EYXRhW1wiZ2RvYzpzZWNyZWN5TGV2ZWxcIl0gfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTNcIiAqbmdJZj0nZHluYW1pY0Zvcm1EYXRhW1wiZ2RvYzppbXBvcnRhbmNlXCJdJz5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1ncmF5LTUwMCBmb250LWJvbGQgdGV4dC1iYXNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IFwiQ1JFQVRFLklNUE9SVEFOQ0VfTEVWRUxcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWdyYXktOTAwIHRleHQtc21cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3ZvY2FidWxhcnkuVk9DX0ltcG9ydGFuY2UuJyArIGR5bmFtaWNGb3JtRGF0YVtcImdkb2M6aW1wb3J0YW5jZVwiXSB8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtM1wiICpuZ0lmPSdzZWxlY3RlZEl0ZW0uZW50aXR5LmRlcGFydG1lbnQnPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWdyYXktNTAwIGZvbnQtYm9sZCB0ZXh0LWJhc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgXCJDUkVBVEUuREVQQVJUTUVOVF9OQU1FXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1ncmF5LTkwMCB0ZXh0LXNtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IHNlbGVjdGVkSXRlbS5lbnRpdHkuZGVwYXJ0bWVudCA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChpc0FyYWJpYyA/IHNlbGVjdGVkSXRlbS5lbnRpdHkuZGVwYXJ0bWVudC5hcmFiaWNOYW1lIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtLmVudGl0eS5kZXBhcnRtZW50LmVuZ2xpc2hOYW1lKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICctLSd9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwibXQtM1wiICpuZ0lmPSdkeW5hbWljRm9ybURhdGFbXCJnZG9jOmRlcGFydG1lbnRDb2RlXCJdJz5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1ncmF5LTUwMCBmb250LWJvbGQgdGV4dC1iYXNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IFwiQ1JFQVRFLkRFUEFSVE1FTlRfQ09ERVwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZ3JheS05MDAgdGV4dC1zbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBkeW5hbWljRm9ybURhdGFbXCJnZG9jOmRlcGFydG1lbnRDb2RlXCJdID8gZHluYW1pY0Zvcm1EYXRhW1wiZ2RvYzpkZXBhcnRtZW50Q29kZVwiXSA6ICctLSd9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0zXCIgKm5nSWY9J2R5bmFtaWNGb3JtRGF0YVtcImdkb2M6YWdlbmN5Q2F0ZWdvcnlDb2RlXCJdJz5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1ncmF5LTUwMCBmb250LWJvbGQgdGV4dC1iYXNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IFwiQ1JFQVRFLkFHRU5DWV9DQVRFR09SWV9DT0RFXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1ncmF5LTkwMCB0ZXh0LXNtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGR5bmFtaWNGb3JtRGF0YVtcImdkb2M6YWdlbmN5Q2F0ZWdvcnlDb2RlXCJdID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgKGlzQXJhYmljID8gZHluYW1pY0Zvcm1EYXRhW1wiZ2RvYzphZ2VuY3lDYXRlZ29yeUNvZGVcIl1bJ3Byb3BlcnRpZXMnXVsnbGFiZWxfYXInXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGR5bmFtaWNGb3JtRGF0YVtcImdkb2M6YWdlbmN5Q2F0ZWdvcnlDb2RlXCJdWydwcm9wZXJ0aWVzJ11bJ2xhYmVsX2VuJ10pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJy0tJ319XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtM1wiICpuZ0lmPSdkeW5hbWljRm9ybURhdGFbXCJnZG9jOmFnZW5jeU5hbWVDb2RlXCJdJz5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1ncmF5LTUwMCBmb250LWJvbGQgdGV4dC1iYXNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IFwiQ1JFQVRFLkFHRU5DWV9OQU1FXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1ncmF5LTkwMCB0ZXh0LXNtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGR5bmFtaWNGb3JtRGF0YVtcImdkb2M6YWdlbmN5TmFtZUNvZGVcIl0gP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAoaXNBcmFiaWMgPyBkeW5hbWljRm9ybURhdGFbXCJnZG9jOmFnZW5jeU5hbWVDb2RlXCJdWydwcm9wZXJ0aWVzJ11bJ2xhYmVsX2FyJ11cclxuICAgICAgICAgICAgICAgICAgICAgICAgOiBkeW5hbWljRm9ybURhdGFbXCJnZG9jOmFnZW5jeU5hbWVDb2RlXCJdWydwcm9wZXJ0aWVzJ11bJ2xhYmVsX2VuJ10pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJy0tJ319XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtM1wiICpuZ0lmPSdkeW5hbWljRm9ybURhdGFbXCJnZG9jOmNvdW50cnlDYXRlZ29yeUNvZGVcIl0nPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWdyYXktNTAwIGZvbnQtYm9sZCB0ZXh0LWJhc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgXCJDUkVBVEUuQ09VTlRSWV9DQVRFR09SWV9DT0RFXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1ncmF5LTkwMCB0ZXh0LXNtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGR5bmFtaWNGb3JtRGF0YVtcImdkb2M6Y291bnRyeUNhdGVnb3J5Q29kZVwiXSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChpc0FyYWJpYyA/IGR5bmFtaWNGb3JtRGF0YVtcImdkb2M6Y291bnRyeUNhdGVnb3J5Q29kZVwiXVsncHJvcGVydGllcyddWydsYWJlbF9hciddXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogZHluYW1pY0Zvcm1EYXRhW1wiZ2RvYzpjb3VudHJ5Q2F0ZWdvcnlDb2RlXCJdWydwcm9wZXJ0aWVzJ11bJ2xhYmVsX2VuJ10pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJy0tJ319XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTNcIiAqbmdJZj0nZHluYW1pY0Zvcm1EYXRhW1wiZ2RvYzpjb3VudHJ5Q29kZVwiXSc+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZ3JheS01MDAgZm9udC1ib2xkIHRleHQtYmFzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBcIkNSRUFURS5DT1VOVFJZX05BTUVcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWdyYXktOTAwIHRleHQtc21cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgZHluYW1pY0Zvcm1EYXRhW1wiZ2RvYzpjb3VudHJ5Q29kZVwiXSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChpc0FyYWJpYyA/IGR5bmFtaWNGb3JtRGF0YVtcImdkb2M6Y291bnRyeUNvZGVcIl1bJ3Byb3BlcnRpZXMnXVsnbGFiZWxfYXInXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGR5bmFtaWNGb3JtRGF0YVtcImdkb2M6Y291bnRyeUNvZGVcIl1bJ3Byb3BlcnRpZXMnXVsnbGFiZWxfZW4nXSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgOiAnLS0nfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTNcIiAqbmdJZj0nZHluYW1pY0Zvcm1EYXRhW1wiZ2RvYzpyZW1hcmtzXCJdJz5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1ncmF5LTUwMCBmb250LWJvbGQgdGV4dC1iYXNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IFwiQ1JFQVRFLlJFTUFSS1NcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWdyYXktOTAwIHRleHQtc21cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgZHluYW1pY0Zvcm1EYXRhW1wiZ2RvYzpyZW1hcmtzXCJdID8gZHluYW1pY0Zvcm1EYXRhW1wiZ2RvYzpyZW1hcmtzXCJdIDogJy0tJ319XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtM1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZ3JheS01MDAgZm9udC1ib2xkIHRleHQtYmFzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IFwiRk9MREVSUy5CWVwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWdyYXktOTAwIHRleHQtc20gZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBpdGVtcy1jZW50ZXIgYmctZ3JheS0xMDAgcm91bmRlZC14bFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YXBwLXVzZXIgW3VzZXJdPVwiZHluYW1pY0Zvcm1EYXRhWydkYzpjcmVhdG9yJ11cIj48L2FwcC11c2VyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtM1wiICpuZ0lmPVwiZHluYW1pY0Zvcm1EYXRhWydkYzpjb250cmlidXRvcnMnXS5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1ncmF5LTUwMCBmb250LWJvbGQgdGV4dC1iYXNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgXCJGT0xERVJTLkNPTlRSVUJJVE9SU1wiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC13cmFwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBpdGVtcy1jZW50ZXIgYmctZ3JheS0xMDAgcm91bmRlZC14bCBtYi0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHVzZXIgb2YgZHluYW1pY0Zvcm1EYXRhWydkYzpjb250cmlidXRvcnMnXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YXBwLXVzZXIgW3VzZXJdPVwidXNlclwiPjwvYXBwLXVzZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0zXCIgKm5nSWY9XCJzaGFyZWRMaXN0VXNlci5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1ncmF5LTUwMCBmb250LWJvbGQgdGV4dC1iYXNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3tcInNoYXJlLnNoYXJlV2l0aFwiIHwgdHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXdyYXBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGl0ZW1zLWNlbnRlciBiZy1ncmF5LTEwMCByb3VuZGVkLXhsIG1iLTJcIiAqbmdGb3I9XCJsZXQgdXNlciBvZiBzaGFyZWRMaXN0VXNlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YXBwLXVzZXIgW3VzZXJdPVwidXNlclwiPjwvYXBwLXVzZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm10LTVcIiAqbmdJZj1cImR5bmFtaWNGb3JtICYmIGR5bmFtaWNGb3JtRGF0YVwiPlxyXG4gICAgICAgICAgICA8YXBwLW11bHRpcGxlLWR5bmFtaWMtZm9ybS12aWV3ZXIgW2Zvcm1dPVwiZHluYW1pY0Zvcm1cIlxyXG4gICAgICAgICAgICAgICAgW2RhdGFdPVwiZHluYW1pY0Zvcm1EYXRhXCI+PC9hcHAtbXVsdGlwbGUtZHluYW1pYy1mb3JtLXZpZXdlcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGFncy13cmFwcGVycyByZWxhdGl2ZSBweC0wIHB5LTNcIj5cclxuICAgICAgICAgICAgPGN0cy1jb3JyZXNwb25kZW5jZS10YWdzIFtjb3JyZXNwb25kZW5jZV09XCJzaWRlTWVudUZpbGVEZXRhaWxzXCIgW2N1c3RvbUNsYXNzXT1cIid0YWdzLWRtcy13cmFwcGVyJ1wiXHJcbiAgICAgICAgICAgICAgICBbdXNlUGFyYW1zXT1cInRydWVcIiBbYWRkQ3VzdG9tQXBpTmFtZV09XCInU2VydmljZXMuVGFnRG9jdW1lbnQnXCJcclxuICAgICAgICAgICAgICAgIFtkZWxldGVDdXN0b21BcGlOYW1lXT1cIidTZXJ2aWNlcy5VbnRhZ0RvY3VtZW50J1wiPlxyXG4gICAgICAgICAgICA8L2N0cy1jb3JyZXNwb25kZW5jZS10YWdzPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+Il19
|
package/esm2015/lib/components/file-manger/components/update-modal/update-modal.component.js
CHANGED
|
@@ -9,8 +9,8 @@ import * as i3 from "../../../custom-toastr/services/custom-toastr.service";
|
|
|
9
9
|
import * as i4 from "@angular/forms";
|
|
10
10
|
import * as i5 from "../../../../configuration/app-config.service";
|
|
11
11
|
import * as i6 from "../../../../shared-services/dynamic-form.service";
|
|
12
|
-
import * as i7 from "../../../../
|
|
13
|
-
import * as i8 from "../../../../
|
|
12
|
+
import * as i7 from "../../../../core/adapters/adapter.service";
|
|
13
|
+
import * as i8 from "../../../../core/services/translation/translation.service";
|
|
14
14
|
import * as i9 from "../../../hijri-gregorian-datepicker/services/date-helper.service";
|
|
15
15
|
import * as i10 from "../../../documents/services/documents.service";
|
|
16
16
|
import * as i11 from "../../../dynamic-fields-renderer/dynamic-fields-renderer/dynamic-fields-renderer.component";
|
|
@@ -363,4 +363,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
363
363
|
type: HostListener,
|
|
364
364
|
args: ['document:keyup.enter', ['$event']]
|
|
365
365
|
}] } });
|
|
366
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy91cGRhdGUtbW9kYWwvdXBkYXRlLW1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy91cGRhdGUtbW9kYWwvdXBkYXRlLW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDdkYsT0FBTyxFQUEwQixVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQWdCLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBR3pFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBYWpDLE1BQU0sT0FBTyxvQkFBb0I7SUE2SzlCLFlBQTRDLElBQUksRUFDbEIsV0FBVyxFQUM5QixTQUE2QyxFQUM3QyxpQkFBcUMsRUFDckMsYUFBa0MsRUFDbEMsV0FBd0IsRUFDeEIsY0FBaUMsRUFDakMsa0JBQXNDLEVBQ3RDLE9BQXdCLEVBQ3hCLGtCQUF1QyxFQUN2QyxpQkFBcUMsRUFDckMsZUFBaUM7UUFYQSxTQUFJLEdBQUosSUFBSSxDQUFBO1FBQ2xCLGdCQUFXLEdBQVgsV0FBVyxDQUFBO1FBQzlCLGNBQVMsR0FBVCxTQUFTLENBQW9DO1FBQzdDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBb0I7UUFDckMsa0JBQWEsR0FBYixh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QVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDekYsSUFBSSxDQUFDLDRCQUE0QixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsNEJBQTRCLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUMzRixJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2xGLENBQUM7O2tIQS9WUyxvQkFBb0Isa0JBNktWLGVBQWUsYUFDM0IsYUFBYTtzR0E5S1gsb0JBQW9CLCtIQ2xCakMscXVJQXVHQTs0RkRyRmEsb0JBQW9CO2tCQUxoQyxTQUFTO21CQUFDO29CQUNSLFFBQVEsRUFBRSxrQkFBa0I7b0JBQzVCLFdBQVcsRUFBRSwrQkFBK0I7b0JBQzVDLFNBQVMsRUFBRSxDQUFDLCtCQUErQixDQUFDO2lCQUM5Qzs7MEJBOEtlLE1BQU07MkJBQUMsZUFBZTs7MEJBQ2xDLE1BQU07MkJBQUMsYUFBYTtrV0FOckIsVUFBVTtzQkFEVCxZQUFZO3VCQUFDLHNCQUFzQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIEluamVjdCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgRHluYW1pY0Zvcm1TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkLXNlcnZpY2VzL2R5bmFtaWMtZm9ybS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRmlsZU1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkLXNlcnZpY2VzL2ZpbGUtbWFuYWdlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICdmb3JtaW9qcyc7XHJcbmltcG9ydCB7IGZvcmtKb2luLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ3VzdG9tVG9hc3RyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2N1c3RvbS10b2FzdHIvc2VydmljZXMvY3VzdG9tLXRvYXN0ci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXBwQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbmZpZ3VyYXRpb24vYXBwLWNvbmZpZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWRhcHRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9Db3JlL2FkYXB0ZXJzL2FkYXB0ZXIuc2VydmljZScgO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9Db3JlL3NlcnZpY2VzL3RyYW5zbGF0aW9uL3RyYW5zbGF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEYXRlSGVscGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2hpanJpLWdyZWdvcmlhbi1kYXRlcGlja2VyL3NlcnZpY2VzL2RhdGUtaGVscGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEb2N1bWVudHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vZG9jdW1lbnRzL3NlcnZpY2VzL2RvY3VtZW50cy5zZXJ2aWNlJztcclxuQENvbXBvbmVudCh7XHJcbiAgIHNlbGVjdG9yOiAnYXBwLXVwZGF0ZS1tb2RhbCcsXHJcbiAgIHRlbXBsYXRlVXJsOiAnLi91cGRhdGUtbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxyXG4gICBzdHlsZVVybHM6IFsnLi91cGRhdGUtbW9kYWwuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVXBkYXRlTW9kYWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICB0eXBlO1xyXG4gICBkeW5hbWljRm9ybTtcclxuICAgdGVtcG9yYXJ5RHlhbm1pY0RhdGEgPSB7fTtcclxuICAgbXlFbnZpcm9ubWVudDtcclxuICAgc2hvd1JlbmRlcmVyID0gZmFsc2U7XHJcbiAgIGR5bmFtaWNEYXRhID0ge1xyXG4gICAgICB2YWxpZDogZmFsc2VcclxuICAgfTtcclxuICAgaWQgPSAnJztcclxuICAgaXNEaXJlY3RvcnkgPSBmYWxzZTtcclxuICAgZmlsZUZvcm0gOiBGb3JtR3JvdXA7XHJcbiAgIGZpbGVGb3JtU3Vic2NyaXB0aW9uIDogU3Vic2NyaXB0aW9uO1xyXG4gICBhZ2VuY3lDYXRlZ0NvZGVTdWJzY3JpcHRpb24gOiBTdWJzY3JpcHRpb247XHJcbiAgIGNvdW50cnlDYXRlZ0NvZGVTdWJzY3JpcHRpb24gOiBTdWJzY3JpcHRpb247XHJcbiAgIGlzQXJhYmljID0gZmFsc2U7XHJcbiAgIHNob3dTdGF0aWNGb3JtID0gZmFsc2VcclxuICAgdXNpbmdFeHRyYUZpZWxkcyA9IGZhbHNlOyAvLyBmbGFnZSB0byBzd2l0Y2ggYmV0d2VlbiBzdGF0aWMgZm9ybSB0eXBlc1xyXG4gICBzdGF0aWNGb3JtRmllbGRzO1xyXG4gICBhZ2VuY3lOYW1lRmlsdGVyIDtcclxuICAgY291bnRyeU5hbWVGaWx0ZXI7XHJcbiAgIHRyYW5zbGF0aW9uU3ViY3JpcHRpb24gOiBTdWJzY3JpcHRpb247XHJcbiAgIGZpZWxkcyA9IFtcclxuICAgICAge1xyXG4gICAgICAgIHR5cGUgOiAndGV4dCcsXHJcbiAgICAgICAgbGFiZWwgOiBcIkNSRUFURS5ET0NVTUVOVF9TVUJKRUNUXCIsXHJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lIDogXCJzdWJqZWN0XCIsXHJcbiAgICAgICAgcGxhY2Vob2xkZXIgOiBcIkNSRUFURS5ET0NVTUVOVF9TVUJKRUNUXCIsXHJcbiAgICAgICAgcmVxdWlyZWQgOiB0cnVlLFxyXG4gICAgICAgIHBlcm1pc3Npb24gOiAnaXNIaWRkZW5GaWVsZCdcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGUgOiAndGV4dCcsXHJcbiAgICAgICAgbGFiZWwgOiBcIkNSRUFURS5ET0NVTUVOVF9OVU1CRVJcIixcclxuICAgICAgICBmb3JtQ29udHJvbE5hbWUgOiBcImRvY3VtZW50TnVtYmVyXCIsXHJcbiAgICAgICAgcGxhY2Vob2xkZXIgOiBcIkNSRUFURS5ET0NVTUVOVF9OVU1CRVJcIixcclxuICAgICAgICByZXF1aXJlZCA6IGZhbHNlLFxyXG4gICAgICAgIHBlcm1pc3Npb24gOiAnaXNIaWRkZW5GaWVsZCdcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGUgOiAnZGF0ZScsXHJcbiAgICAgICAgbGFiZWwgOiBcIkNSRUFURS5ET0NVTUVOVF9EQVRFXCIsXHJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lIDogXCJnZG9jdW1lbnREYXRlXCIsXHJcbiAgICAgICAgcGVybWlzc2lvbiA6ICdpc0hpZGRlbkZpZWxkJ1xyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZSA6ICdkeW5hbWljLXZvY2FidWxhcnknLFxyXG4gICAgICAgIGxhYmVsIDogXCJDUkVBVEUuU0NSRUNZX0xFVkVMXCIsXHJcbiAgICAgICAgYmluZExhYmVsIDogJ2xhYmVsJyxcclxuICAgICAgICBiaW5kVmFsdWUgOiAnaWQnLFxyXG4gICAgICAgIG11bHRpcGxlIDogZmFsc2UsXHJcbiAgICAgICAgc2VhcmNoYWJsZSA6IGZhbHNlLFxyXG4gICAgICAgIGNsb3NlT25TZWxlY3QgOiB0cnVlLCBcclxuICAgICAgICBoaWRlU2VsZWN0ZWRJdGVtcyA6IGZhbHNlLFxyXG4gICAgICAgIGRpc2FibGVkIDogZmFsc2UsXHJcbiAgICAgICAgdm9jYWJ1bGFyeVR5cGUgOiAnVk9DX1NlY3JlY3lMZXZlbCcsXHJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lIDogXCJzZWNyZWN5TGV2ZWxcIixcclxuICAgICAgICBwbGFjZWhvbGRlciA6IFwiVk9DQUJVTEFSWS5TRUxFQ1RfSVRFTVwiLFxyXG4gICAgICAgIHBlcm1pc3Npb24gOiAnaXNIaWRkZW5GaWVsZCdcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGUgOiAnZHluYW1pYy12b2NhYnVsYXJ5JyxcclxuICAgICAgICBsYWJlbCA6IFwiQ1JFQVRFLklNUE9SVEFOQ0VfTEVWRUxcIixcclxuICAgICAgICBiaW5kTGFiZWwgOiAnbGFiZWwnLFxyXG4gICAgICAgIGJpbmRWYWx1ZSA6ICdpZCcsXHJcbiAgICAgICAgbXVsdGlwbGUgOiBmYWxzZSxcclxuICAgICAgICBzZWFyY2hhYmxlIDogZmFsc2UsXHJcbiAgICAgICAgY2xvc2VPblNlbGVjdCA6IHRydWUsIFxyXG4gICAgICAgIGRpc2FibGVkIDogZmFsc2UsXHJcbiAgICAgICAgaGlkZVNlbGVjdGVkSXRlbXMgOiBmYWxzZSxcclxuICAgICAgICB2b2NhYnVsYXJ5VHlwZSA6ICdWT0NfSW1wb3J0YW5jZScsXHJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lIDogXCJpbXBvcnRhbmNlTGV2ZWxcIixcclxuICAgICAgICBwbGFjZWhvbGRlciA6IFwiVk9DQUJVTEFSWS5TRUxFQ1RfSVRFTVwiLFxyXG4gICAgICAgIHBlcm1pc3Npb24gOiAnaXNIaWRkZW5GaWVsZCdcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGUgOiAnZGVwYXJ0bWVudC1zZWxlY3RvcicsXHJcbiAgICAgICAgbGFiZWwgOiBcIkNSRUFURS5ERVBBUlRNRU5UX0NPREVcIixcclxuICAgICAgICBmb3JtQ29udHJvbE5hbWUgOiBcImRlcGFydG1lbnRDb2RlXCIsXHJcbiAgICAgICAgcGxhY2Vob2xkZXIgOiBcInBsZWFzZSBzZWxlY3QgZGVwYXJ0bWVudFwiLFxyXG4gICAgICAgIHBwX2RlcGFydG1lbnROZXN0ZWRUcmVlIDogXCJQUF9PU19EZXBhcnRtZW50c1wiLFxyXG4gICAgICAgIHBwX2RlcGFydG1lbnRUcmVlIDogXCJQUF9PU19EZXBhcnRtZW50c1wiLFxyXG4gICAgICAgIGN1c3RvbVByZWZpeCA6IFwib3NkZXB0XCIsXHJcbiAgICAgICAgY3VzdG9tUGFyZW50UHJvcGVydHkgOiBcIm9zZGVwYXJ0bWVudF9wYXJlbnREZXBhcnRtZW50Q29kZVwiLFxyXG4gICAgICAgIHVzZUN1c3RvbUFkZEVkaXRBY3Rpb24gOiB0cnVlLFxyXG4gICAgICAgIHJlcXVpcmVkIDogZmFsc2UsXHJcbiAgICAgICAgcGVybWlzc2lvbiA6ICdpc0hpZGRlbkZpZWxkJ1xyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZSA6ICd0cmFuc2xhdGVkLXZvY2FidWxhcnknLFxyXG4gICAgICAgIGxhYmVsIDogXCJDUkVBVEUuQUdFTkNZX0NBVEVHT1JZX0NPREVcIixcclxuICAgICAgICBhcmJCaW5kTGFiZWwgOiAnbGFiZWxfYXInLFxyXG4gICAgICAgIGVuZ0JpbmRMYWJlbCA6IFwibGFiZWxfZW5cIixcclxuICAgICAgICBiaW5kVmFsdWUgOiAnaWQnLFxyXG4gICAgICAgIG11bHRpcGxlIDogZmFsc2UsXHJcbiAgICAgICAgc2VhcmNoYWJsZSA6IGZhbHNlLFxyXG4gICAgICAgIGNsb3NlT25TZWxlY3QgOiB0cnVlLCBcclxuICAgICAgICBoaWRlU2VsZWN0ZWRJdGVtcyA6IGZhbHNlLFxyXG4gICAgICAgIHZvY2J1bGFyeUlkIDogJ1ZPQ19BZ2VuY3lDYXRlZ29yeScsXHJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lIDogXCJhZ2VuY3lDYXRlZ29yeUNvZGVcIixcclxuICAgICAgICBwbGFjZWhvbGRlciA6IFwiVk9DQUJVTEFSWS5TRUxFQ1RfSVRFTVwiLFxyXG4gICAgICAgIHVzZUZpbHRlcjogZmFsc2UsXHJcbiAgICAgICAgZmlsdGVyIDogJycsXHJcbiAgICAgICAgcGVybWlzc2lvbiA6ICdpc0hpZGRlbkZpZWxkJ1xyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZSA6ICd0cmFuc2xhdGVkLXZvY2FidWxhcnknLFxyXG4gICAgICAgIGxhYmVsIDogXCJDUkVBVEUuQUdFTkNZX05BTUVcIixcclxuICAgICAgICBhcmJCaW5kTGFiZWwgOiAnbGFiZWxfYXInLFxyXG4gICAgICAgIGVuZ0JpbmRMYWJlbCA6IFwibGFiZWxfZW5cIixcclxuICAgICAgICBiaW5kVmFsdWUgOiAnaWQnLFxyXG4gICAgICAgIG11bHRpcGxlIDogZmFsc2UsXHJcbiAgICAgICAgc2VhcmNoYWJsZSA6IHRydWUsXHJcbiAgICAgICAgY2xvc2VPblNlbGVjdCA6IHRydWUsIFxyXG4gICAgICAgIGhpZGVTZWxlY3RlZEl0ZW1zIDogZmFsc2UsXHJcbiAgICAgICAgdm9jYnVsYXJ5SWQgOiAnVk9DX0FnZW5jeScsXHJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lIDogXCJhZ2VuY3lOYW1lXCIsXHJcbiAgICAgICAgcGxhY2Vob2xkZXIgOiBcIlZPQ0FCVUxBUlkuU0VMRUNUX0lURU1cIixcclxuICAgICAgICB1c2VGaWx0ZXI6IHRydWUsXHJcbiAgICAgICAgZmlsdGVyIDogJ2FnZW5jeU5hbWUnLFxyXG4gICAgICAgIHBlcm1pc3Npb24gOiAnaXNIaWRkZW5GaWVsZCdcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGUgOiAndHJhbnNsYXRlZC12b2NhYnVsYXJ5JyxcclxuICAgICAgICBsYWJlbCA6IFwiQ1JFQVRFLkNPVU5UUllfQ0FURUdPUllfQ09ERVwiLFxyXG4gICAgICAgIGFyYkJpbmRMYWJlbCA6ICdsYWJlbF9hcicsXHJcbiAgICAgICAgZW5nQmluZExhYmVsIDogXCJsYWJlbF9lblwiLFxyXG4gICAgICAgIGJpbmRWYWx1ZSA6ICdpZCcsXHJcbiAgICAgICAgbXVsdGlwbGUgOiBmYWxzZSxcclxuICAgICAgICBzZWFyY2hhYmxlIDogdHJ1ZSxcclxuICAgICAgICBjbG9zZU9uU2VsZWN0IDogdHJ1ZSwgXHJcbiAgICAgICAgaGlkZVNlbGVjdGVkSXRlbXMgOiBmYWxzZSxcclxuICAgICAgICB2b2NidWxhcnlJZCA6ICdWT0NfQ291bnRyeUNhdGVnb3J5JyxcclxuICAgICAgICBmb3JtQ29udHJvbE5hbWUgOiBcImNvdW50cnlDYXRlZ29yeUNvZGVcIixcclxuICAgICAgICBwbGFjZWhvbGRlciA6IFwiVk9DQUJVTEFSWS5TRUxFQ1RfSVRFTVwiLFxyXG4gICAgICAgIHVzZUZpbHRlcjogZmFsc2UsXHJcbiAgICAgICAgZmlsdGVyIDogJycsXHJcbiAgICAgICAgcGVybWlzc2lvbiA6ICdpc0hpZGRlbkZpZWxkJ1xyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZSA6ICd0cmFuc2xhdGVkLXZvY2FidWxhcnknLFxyXG4gICAgICAgIGxhYmVsIDogXCJDUkVBVEUuQ09VTlRSWV9OQU1FXCIsXHJcbiAgICAgICAgYXJiQmluZExhYmVsIDogJ2xhYmVsX2FyJyxcclxuICAgICAgICBlbmdCaW5kTGFiZWwgOiBcImxhYmVsX2VuXCIsXHJcbiAgICAgICAgYmluZFZhbHVlIDogJ2lkJyxcclxuICAgICAgICBtdWx0aXBsZSA6IGZhbHNlLFxyXG4gICAgICAgIHNlYXJjaGFibGUgOiB0cnVlLFxyXG4gICAgICAgIGNsb3NlT25TZWxlY3QgOiB0cnVlLCBcclxuICAgICAgICBoaWRlU2VsZWN0ZWRJdGVtcyA6IGZhbHNlLFxyXG4gICAgICAgIHZvY2J1bGFyeUlkIDogJ1ZPQ19Db3VudHJ5JyxcclxuICAgICAgICBmb3JtQ29udHJvbE5hbWUgOiBcImNvdW50cnlOYW1lXCIsXHJcbiAgICAgICAgcGxhY2Vob2xkZXIgOiBcIlZPQ0FCVUxBUlkuU0VMRUNUX0lURU1cIixcclxuICAgICAgICB1c2VGaWx0ZXI6IHRydWUsXHJcbiAgICAgICAgZmlsdGVyIDogJ2NvdW50cnlOYW1lJyxcclxuICAgICAgICBwZXJtaXNzaW9uIDogJ2lzSGlkZGVuRmllbGQnXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlIDogJ3RleHQnLFxyXG4gICAgICAgIGxhYmVsIDogXCJDUkVBVEUuUkVNQVJLU1wiLFxyXG4gICAgICAgIGZvcm1Db250cm9sTmFtZSA6IFwicmVtYXJrc1wiLFxyXG4gICAgICAgIHBsYWNlaG9sZGVyIDogXCJDUkVBVEUuUkVNQVJLU1wiLFxyXG4gICAgICAgIHJlcXVpcmVkIDogZmFsc2UsXHJcbiAgICAgICAgcGVybWlzc2lvbiA6ICdpc0hpZGRlbkZpZWxkJ1xyXG4gICAgICB9XHJcbiAgICBdIDtcclxuICAgdHJhbnNsYXRlZERvY3VtZW50VHlwZTtcclxuICAgY29kZTtcclxuICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5dXAuZW50ZXInLCBbJyRldmVudCddKVxyXG4gICBLZXlVcEV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICAgaWYoKHRoaXMuZHluYW1pY0RhdGFbJ2RhdGEnXSAmJiB0aGlzLmR5bmFtaWNEYXRhLnZhbGlkKSAmJiB0aGlzLmZpbGVGb3JtLnZhbGlkICYmIHRoaXMuZmlsZUZvcm0udmFsdWUudGl0bGUgIT0gJy4uJykge1xyXG4gICAgICAgdGhpcy5VcGRhdGVEb2N1bWVudCgpO1xyXG4gICAgIH1cclxuICAgfVxyXG4gICBjb25zdHJ1Y3RvcihASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGEsXHJcbiAgIEBJbmplY3QoJ2Vudmlyb25tZW50JykgcHVibGljIGVudmlyb25tZW50LFxyXG4gICAgICBwcml2YXRlIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPFVwZGF0ZU1vZGFsQ29tcG9uZW50PixcclxuICAgICAgcHJpdmF0ZSBmaWxlTWFuZ2VyU2VydmljZTogRmlsZU1hbmFnZXJTZXJ2aWNlLFxyXG4gICAgICBwcml2YXRlIHRvc3RlclNlcnZpY2U6IEN1c3RvbVRvYXN0clNlcnZpY2UsXHJcbiAgICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxyXG4gICAgICBwcml2YXRlIGFwcENvbmZTZXJ2aWNlIDogQXBwQ29uZmlnU2VydmljZSxcclxuICAgICAgcHJpdmF0ZSBkeW5hbWljRm9ybVNlcnZpY2U6IER5bmFtaWNGb3JtU2VydmljZSxcclxuICAgICAgcHJpdmF0ZSBhZGFwdGVyIDogQWRhcHRlclNlcnZpY2UsXHJcbiAgICAgIHByaXZhdGUgdHJhbnNsYXRpb25TZXJ2aWNlIDogVHJhbnNsYXRpb25TZXJ2aWNlLFxyXG4gICAgICBwcml2YXRlIGRhdGVIZWxwZXJTZXJ2aWNlIDogRGF0ZUhlbHBlclNlcnZpY2UsXHJcbiAgICAgIHByaXZhdGUgZG9jdW1lbnRTZXJ2aWNlOiBEb2N1bWVudHNTZXJ2aWNlKSB7IFxyXG4gICAgICAgICB0aGlzLnR5cGUgPSB0aGlzLmRhdGEudHlwZTtcclxuICAgICAgICAgdGhpcy5jb2RlID0gdGhpcy5kYXRhLmNvZGU7XHJcbiAgICAgICAgIHRoaXMuaWQgPSB0aGlzLmRhdGEuaWQ7XHJcbiAgICAgICAgIHRoaXMuaXNEaXJlY3RvcnkgPSB0aGlzLmRhdGEuaXNEaXJlY3Rvcnk7XHJcbiAgICAgICAgIHRoaXMuaW5pdGlhdGZpbGVGb3JtKCk7XHJcblxyXG4gICAgICB9XHJcbiAgIGN1c3RvbWVIZWFkZXIgPSAnbG9jayxkYzpjcmVhdG9yJztcclxuICAgdXNlclNlbGVjdG9yS2V5cyA9IFtdO1xyXG4gICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgdGhpcy50cmFuc2xhdGlvblN1YmNyaXB0aW9uID0gdGhpcy50cmFuc2xhdGlvblNlcnZpY2UuaXNBcmFiaWMuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgIHRoaXMuaXNBcmFiaWMgPSByZXM7XHJcbiAgICAgIH0pXHJcbiAgICAgIGxldCBjb2xsZWN0RGF0YSA9IHt9O1xyXG5cclxuICAgICAgdGhpcy5keW5hbWljRm9ybVNlcnZpY2UuZ2V0RHluYW1pY0Zvcm0odGhpcy5jb2RlID8gdGhpcy5jb2RlIDogdGhpcy50eXBlKS5zdWJzY3JpYmUoZm9ybSA9PiB7XHJcbiAgICAgICAgIGlmKGZvcm0gJiYgZm9ybVsnY29tcG9uZW50cyddICYmIGZvcm1bJ2NvbXBvbmVudHMnXS5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgbGV0IHByZWZpeCA9IGZvcm0ucHJlZml4O1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNGb3JtID0gZm9ybTtcclxuICAgICAgICAgICAgVXRpbHMuZWFjaENvbXBvbmVudCggZm9ybS5jb21wb25lbnRzICwgKGNvbXApID0+IHtcclxuICAgICAgICAgICAgICAgaWYgKGNvbXAudHlwZSA9PT0gXCJ1c2VyU2VsZWN0b3JcIikge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnVzZXJTZWxlY3RvcktleXMucHVzaChjb21wLmZpeGVkS2V5KTtcclxuICAgICAgICAgICAgICAgICAgbGV0IGNvbXBQcmVmaXggPSBwcmVmaXhbY29tcC5maXhlZEtleV0gPyBwcmVmaXhbY29tcC5maXhlZEtleV0gOiAnJztcclxuICAgICAgICAgICAgICAgICAgaWYgKGNvbXBQcmVmaXgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXN0b21lSGVhZGVyID0gdGhpcy5jdXN0b21lSGVhZGVyICsgJywnICsgY29tcFByZWZpeCArICc6JyArIGNvbXAuZml4ZWRLZXlcclxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXN0b21lSGVhZGVyID0gdGhpcy5jdXN0b21lSGVhZGVyICsgJywnICsgY29tcC5maXhlZEtleVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgIH1cclxuICAgICAgICAgdGhpcy5maWxlTWFuZ2VyU2VydmljZS5nZXRGaWxlU2NoZW1hcyh0aGlzLnR5cGUpLnN1YnNjcmliZShzY2hlbWFzID0+IHtcclxuICAgICAgICAgICAgc2NoZW1hcy5tYXAoaXRlbSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYoaXRlbS5uYW1lID09PSBcImdlbmVyYWxkb2N1bWVudFwiKXtcclxuICAgICAgICAgICAgICAgIHRoaXMudXNpbmdFeHRyYUZpZWxkcyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhdGZpbGVGb3JtKCk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50U2VydmljZS5nZXREb2N1bWVudCh0aGlzLmlkLCB7ICdYLU5YZmV0Y2gtZG9jdW1lbnQnOiB0aGlzLmN1c3RvbWVIZWFkZXIgfSkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgICAgICAgdGhpcy50cmFuc2xhdGVkRG9jdW1lbnRUeXBlID0gcmVzcG9uc2VbJ2RvY3VtZW50VHlwZSddO1xyXG4gICAgICAgICAgICAgICB0aGlzLmFkYXB0ZXIuYWRhcHRJbihyZXNwb25zZSAsIHRoaXMuc3RhdGljRm9ybUZpZWxkcyk7XHJcbiAgICAgICAgICAgICAgIGlmKHRoaXMuZHluYW1pY0Zvcm0gJiYgdGhpcy5keW5hbWljRm9ybVsnY29tcG9uZW50cyddICYmIHRoaXMuZHluYW1pY0Zvcm1bJ2NvbXBvbmVudHMnXS5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgICAgICAgVXRpbHMuZWFjaENvbXBvbmVudCh0aGlzLmR5bmFtaWNGb3JtLmNvbXBvbmVudHMsKGNvbXApID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgaWYodGhpcy51c2VyU2VsZWN0b3JLZXlzLmluZGV4T2YoY29tcC5maXhlZEtleSkgPiAtMSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxlY3REYXRhWyc6JyArIGNvbXAuZml4ZWRLZXldID17XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJTZWxlY3RvciA6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlIDogcmVzcG9uc2UucHJvcGVydGllc1t0aGlzLmR5bmFtaWNGb3JtLnByZWZpeFtjb21wLmZpeGVkS2V5XSArICc6JyArIGNvbXAuZml4ZWRLZXldXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xsZWN0RGF0YVsnOicgKyBjb21wLmZpeGVkS2V5XSA9IHJlc3BvbnNlLnByb3BlcnRpZXNbdGhpcy5keW5hbWljRm9ybS5wcmVmaXhbY29tcC5maXhlZEtleV0gKyAnOicgKyBjb21wLmZpeGVkS2V5XVxyXG4gICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgdGhpcy50ZW1wb3JhcnlEeWFubWljRGF0YSA9IHsgLi4uY29sbGVjdERhdGEgfTtcclxuICAgICAgICAgICAgICAgdGhpcy5zaG93UmVuZGVyZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICB0aGlzLmZpbGVGb3JtLnBhdGNoVmFsdWUocmVzcG9uc2UucHJvcGVydGllcyk7XHJcbiAgICAgICAgICAgICAgIGlmKHRoaXMuZmlsZUZvcm0udmFsdWVbJ2FnZW5jeUNhdGVnb3J5Q29kZSddKXtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5hZ2VuY3lOYW1lRmlsdGVyID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5IDogdGhpcy5maWxlRm9ybS52YWx1ZVsnYWdlbmN5Q2F0ZWdvcnlDb2RlJ11cclxuICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5hZ2VuY3lDYXRlZ0NvZGVTdWJzY3JpcHRpb24gPSAgdGhpcy5maWxlRm9ybS5nZXQoJ2FnZW5jeUNhdGVnb3J5Q29kZScpLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWxlRm9ybS5nZXQoJ2FnZW5jeU5hbWUnKS5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWdlbmN5TmFtZUZpbHRlciA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnkgOiByZXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYodGhpcy5maWxlRm9ybS52YWx1ZVsnY291bnRyeUNhdGVnb3J5Q29kZSddKXtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jb3VudHJ5TmFtZUZpbHRlciA9IHtcclxuICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeSA6IHRoaXMuZmlsZUZvcm0udmFsdWVbJ2NvdW50cnlDYXRlZ29yeUNvZGUnXVxyXG4gICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHRoaXMuY291bnRyeUNhdGVnQ29kZVN1YnNjcmlwdGlvbiA9ICB0aGlzLmZpbGVGb3JtLmdldCgnY291bnRyeUNhdGVnb3J5Q29kZScpLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5maWxlRm9ybS5nZXQoJ2NvdW50cnlOYW1lJykuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY291bnRyeU5hbWVGaWx0ZXIgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnkgOiByZXNcclxuICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICBpZih0aGlzLmZpbGVGb3JtLmNvbnRhaW5zKCdzZWNyZWN5TGV2ZWwnKSAmJiB0aGlzLmZpbGVGb3JtLmdldCgnc2VjcmVjeUxldmVsJykudmFsdWUgIT09IG51bGwgJiYgdGhpcy5maWxlRm9ybS5nZXQoJ3NlY3JlY3lMZXZlbCcpLnZhbHVlICE9PSAnTm9ybWFsJyApe1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmZpZWxkc1szXS5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGVGb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHRoaXMuZmlsZUZvcm0pO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgIH0pXHJcblxyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcbiAgaW5pdGlhdGZpbGVGb3JtKCl7XHJcbiAgIGlmKHRoaXMudXNpbmdFeHRyYUZpZWxkcyAmJiAhdGhpcy5pc0RpcmVjdG9yeSl7XHJcbiAgICAgdGhpcy5maWxlRm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICAgdGl0bGUgOiBbJycgLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICAgZGVzY3JpcHRpb24gOiBbJyddLFxyXG4gICAgICAgc3ViamVjdCA6IFsnJyAsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgICBkb2N1bWVudE51bWJlciA6IFsnJ10sXHJcbiAgICAgICBnZG9jdW1lbnREYXRlIDogW251bGwgLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICAgc2VjcmVjeUxldmVsIDogW251bGxdLFxyXG4gICAgICAgaW1wb3J0YW5jZUxldmVsOltudWxsXSxcclxuICAgICAgIGRlcGFydG1lbnRDb2RlOlsnJ10sXHJcbiAgICAgICBhZ2VuY3lDYXRlZ29yeUNvZGU6W251bGxdLFxyXG4gICAgICAgYWdlbmN5TmFtZTpbbnVsbF0sXHJcbiAgICAgICBjb3VudHJ5Q2F0ZWdvcnlDb2RlOltudWxsXSxcclxuICAgICAgIGNvdW50cnlOYW1lOltudWxsXSxcclxuICAgICAgIHJlbWFya3M6WycnXVxyXG4gICAgIH0pXHJcbiAgIH1lbHNle1xyXG4gICAgIHRoaXMuZmlsZUZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgIHRpdGxlIDogWycnICwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgIGRlc2NyaXB0aW9uIDogWycnXVxyXG4gICAgIH0pXHJcbiAgIH1cclxuICAgdGhpcy5zdGF0aWNGb3JtRmllbGRzID0gdGhpcy5hcHBDb25mU2VydmljZS5teUNvbmZpZ3VyYXRpb24uc3RhdGljRm9ybUZpZWxkcztcclxuIH1cclxuICAgb25keW5hbWljRm9ybUNoYW5nZShkeW5hbWljRGF0YSkge1xyXG4gICAgICBpZiAoZHluYW1pY0RhdGEuZGF0YSkge1xyXG4gICAgICAgICBjb25zb2xlLmxvZyhkeW5hbWljRGF0YS5kYXRhKVxyXG4gICAgICAgICB0aGlzLmR5bmFtaWNEYXRhID0geyAuLi5keW5hbWljRGF0YSB9O1xyXG4gICAgICB9XHJcbiAgIH1cclxuICAgY2xvc2VEaWFsb2coKSB7XHJcbiAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKGZhbHNlKTtcclxuICAgfVxyXG5cclxuICAgVXBkYXRlRG9jdW1lbnQoKSB7XHJcbiAgICAgIGxldCBwYXJhbXMgPSB0aGlzLmNvbnN0cnVjdFBheUxvYWQodGhpcy5keW5hbWljRGF0YVsnZGF0YSddLCB0aGlzLmZpbGVGb3JtLnZhbHVlKTtcclxuICAgICAgdGhpcy5maWxlTWFuZ2VyU2VydmljZS5VcGRhdGVGb2xkZXIocGFyYW1zLCB0aGlzLmlkKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICAgLy9jb25zb2xlLmxvZyhyZXMpO1xyXG4gICAgICAgICB0aGlzLmZpbGVNYW5nZXJTZXJ2aWNlLm9uUmVmcmVzaGluZ0ZpbGVNYW5nZXIubmV4dCgpO1xyXG4gICAgICAgICB0aGlzLnRvc3RlclNlcnZpY2Uuc2hvdygnc3VjY2VzcycsICdUT0FTVEVSLlNVQ0NFU1MnLCBcIlRPQVNURVIuRk9MREVSX1VQREFURURfU1VDQ0VcIik7XHJcbiAgICAgICAgIHRoaXMuY2xvc2VEaWFsb2coKTtcclxuICAgICAgfSlcclxuXHJcbiAgIH1cclxuXHJcbiAgIGNvbnN0cnVjdFBheUxvYWQoZHluYW1pY1ZhbHVlcywgc3RhdGljRm9ybSkge1xyXG4gICAgICBsZXQgcHJvcHMgPSB0aGlzLmR5bmFtaWNGb3JtID8gdGhpcy5keW5hbWljRm9ybVNlcnZpY2UuY29uc3RydWN0RHluYW1pY0Zvcm1QYXlsb2FkKGR5bmFtaWNWYWx1ZXMgLCB0aGlzLmR5bmFtaWNGb3JtKSA6IHt9O1xyXG4gICAgICBsZXQgc3RhdGljRm9ybURhdGEgPSB0aGlzLm1hcHBpbmdTdGF0aWNEYXRhKHN0YXRpY0Zvcm0pXHJcbiAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIFwidHlwZVwiOiB0aGlzLnR5cGUsXHJcbiAgICAgICAgICAgIFwibmFtZVwiOiBzdGF0aWNGb3JtLnRpdGxlLFxyXG4gICAgICAgICAgICBcInNhdmVcIjogXCJ0cnVlXCIsXHJcbiAgICAgICAgICAgIFwicHJvcGVydGllc1wiOiB7XHJcbiAgICAgICAgICAgICAgIC4uLnByb3BzLFxyXG4gICAgICAgICAgICAgICAuLi5zdGF0aWNGb3JtRGF0YVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgIH07XHJcbiAgIH1cclxuXHJcbiAgIG1hcHBpbmdTdGF0aWNEYXRhKGRhdGEpe1xyXG4gICAgICBpZihkYXRhLmdkb2N1bWVudERhdGUgJiYgZGF0YS5nZG9jdW1lbnREYXRlICE9PSBudWxsKXtcclxuICAgICAgICBkYXRhWydoZG9jdW1lbnREYXRlJ10gPSB0aGlzLmRhdGVIZWxwZXJTZXJ2aWNlLmdyZWdvcmlhblRvSGlqcmkoZGF0YS5nZG9jdW1lbnREYXRlLCdpWVlZWS1pTU0taUREJylcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdGhpcy5hZGFwdGVyLmFkYXB0T3V0KGRhdGEgLCB0aGlzLnN0YXRpY0Zvcm1GaWVsZHMpXHJcbiAgICB9XHJcblxyXG4gICBuZ09uRGVzdHJveSgpe1xyXG4gICAgICB0aGlzLmFnZW5jeUNhdGVnQ29kZVN1YnNjcmlwdGlvbiA/IHRoaXMuYWdlbmN5Q2F0ZWdDb2RlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkgOiBudWxsO1xyXG4gICAgICB0aGlzLmNvdW50cnlDYXRlZ0NvZGVTdWJzY3JpcHRpb24gPyB0aGlzLmNvdW50cnlDYXRlZ0NvZGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSA6IG51bGw7XHJcbiAgICAgIHRoaXMudHJhbnNsYXRpb25TdWJjcmlwdGlvbiA/IHRoaXMudHJhbnNsYXRpb25TdWJjcmlwdGlvbi51bnN1YnNjcmliZSgpIDogbnVsbDtcclxuICAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjcmVhdGUtZm9sZGVyLW1vZGFsIGQtZmxleCBqdXN0aWZ5LWNlbnRlciB3LWZ1bGwgcmVsYXRpdmUgaC1mdWxsXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZm9sZGVyLXdyYXBwZXJcIiBTZXRSdGw+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsLXN0eWxlXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBcIkZPTERFUlMuVFlQRV9PTkxZXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1yZWQtNTAwXCI+Kjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhaXNEaXJlY3RvcnlcIj57eyB0cmFuc2xhdGVkRG9jdW1lbnRUeXBlID8gKGlzQXJhYmljID8gKHRyYW5zbGF0ZWREb2N1bWVudFR5cGUuYXJhYmljTmFtZSkgOiAodHJhbnNsYXRlZERvY3VtZW50VHlwZS5lbmdsaXNoVGl0bGUpKSA6IHR5cGV9fTwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNEaXJlY3RvcnlcIj57eyB0eXBlID09PSAnRG1zRm9sZGVyJyA/IChpc0FyYWJpYyA/ICfZhdis2YTYrycgOiAnRm9sZGVyJykgOiB0eXBlfX08L2Rpdj5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmaWxlRm9ybVwiICpuZ0lmPVwiZmlsZUZvcm1cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbC1zdHlsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IFwiRk9MREVSUy5USVRMRV9PTkxZXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmaWVsZC1zdHlsZSBcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnYm9yZGVyLXJlZC01MDAnIDogZmlsZUZvcm0udmFsdWUudGl0bGUgPT09ICcuLid9XCJcclxuICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxyXG4gICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInRpdGxlXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCIge3sgJ0NSRUFURS5USVRMRScgfCB0cmFuc2xhdGV9fVwiXHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtcmVkLTUwMCB0ZXh0LWJhc2VcIiAqbmdJZj1cImZpbGVGb3JtLnZhbHVlLnRpdGxlID09PSAnLi4nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgXCJGT0xERVJTLklOVkFMSURfVElUTEVfT05MWVwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWwtc3R5bGVcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyBcIkZPTERFUlMuREVTQ1JJUFRJT05fT05MWVwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmllbGQtc3R5bGUgXCJcclxuICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkZXNjcmlwdGlvblwiIFxyXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiIHt7ICdDUkVBVEUuREVTQ1JJUFRJT04nIHwgdHJhbnNsYXRlfX1cIlxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0gbmV3IHN0YXRpcyBmb3JtICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidXNpbmdFeHRyYUZpZWxkcyAmJiAhaXNEaXJlY3RvcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtZHluYW1pYy1maWVsZHMtcmVuZGVyZXIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21vZGVdPVwiJ2VkaXQnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmllbGRzXT1cImZpZWxkc1wiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtXT1cImZpbGVGb3JtXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FnZW5jeU5hbWVGaWx0ZXJdPVwiYWdlbmN5TmFtZUZpbHRlclwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb3VudHJ5TmFtZUZpbHRlcl09XCJjb3VudHJ5TmFtZUZpbHRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FwcC1keW5hbWljLWZpZWxkcy1yZW5kZXJlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tPlxyXG5cclxuXHJcbiAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkeW5hbWljLXBhcnQgLW14LTRcIiAqbmdJZj1cImR5bmFtaWNGb3JtICYmIHNob3dSZW5kZXJlclwiPlxyXG4gICAgICAgICAgICA8YXBwLWR5bmFtaWMtZm9ybVxyXG4gICAgICAgICAgICAgICAgW2Zvcm1dPVwiZHluYW1pY0Zvcm1cIlxyXG4gICAgICAgICAgICAgICAgW2RhdGFdPVwidGVtcG9yYXJ5RHlhbm1pY0RhdGFcIlxyXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbmR5bmFtaWNGb3JtQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICA+PC9hcHAtZHluYW1pYy1mb3JtPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tIGFjdGlvbnMgYW5kIGJ1dHRvbnMgIC0tPlxyXG4gICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiXHJcbiAgICAgICAgICAgIHctZnVsbFxyXG4gICAgICAgICAgICBkLWZsZXhcclxuICAgICAgICAgICAganVzdGlmeS1iZXR3ZWVuXHJcbiAgICAgICAgICAgIGFic29sdXRlXHJcbiAgICAgICAgICAgIGJvdHRvbS0wXHJcbiAgICAgICAgXCJcclxuICAgID5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleFwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNhbmNlbGF0aW9uLWJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xvc2VEaWFsb2coKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHt7IFwiQlVUVE9OUy5DQU5DRUxcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSAgLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiVXBkYXRlRG9jdW1lbnQoKVwiXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGR5bmFtaWNEYXRhWydkYXRhJ10gJiYgIWR5bmFtaWNEYXRhLnZhbGlkKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgIGZpbGVGb3JtLmludmFsaWQgfHxcclxuICAgICAgICAgICAgICAgICAgICBmaWxlRm9ybS52YWx1ZS50aXRsZSA9PT0gJy4uJ1xyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAnb3BhY2l0eS0zMCBjdXJzb3Itbm90LWFsbG93ZWQnOlxyXG4gICAgICAgICAgICAgICAgICAgIChkeW5hbWljRGF0YVsnZGF0YSddICYmICFkeW5hbWljRGF0YS52YWxpZCkgfHxcclxuICAgICAgICAgICAgICAgICAgICBmaWxlRm9ybS5pbnZhbGlkIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgZmlsZUZvcm0udmFsdWUudGl0bGUgPT09ICcuLidcclxuICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzdWJtaXNzaW9uLWJ1dHRvblwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHt7IFwiQlVUVE9OUy5VUERBVEVcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|
|
366
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy91cGRhdGUtbW9kYWwvdXBkYXRlLW1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy91cGRhdGUtbW9kYWwvdXBkYXRlLW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDdkYsT0FBTyxFQUEwQixVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQWdCLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBR3pFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBYWpDLE1BQU0sT0FBTyxvQkFBb0I7SUE2SzlCLFlBQTRDLElBQUksRUFDbEIsV0FBVyxFQUM5QixTQUE2QyxFQUM3QyxpQkFBcUMsRUFDckMsYUFBa0MsRUFDbEMsV0FBd0IsRUFDeEIsY0FBaUMsRUFDakMsa0JBQXNDLEVBQ3RDLE9BQXdCLEVBQ3hCLGtCQUF1QyxFQUN2QyxpQkFBcUMsRUFDckMsZUFBaUM7UUFYQSxTQUFJLEdBQUosSUFBSSxDQUFBO1FBQ2xCLGdCQUFXLEdBQVgsV0FBVyxDQUFBO1FBQzlCLGNBQVMsR0FBVCxTQUFTLENBQW9DO1FBQzdDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBb0I7UUFDckMsa0JBQWEsR0FBYixh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QVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDekYsSUFBSSxDQUFDLDRCQUE0QixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsNEJBQTRCLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUMzRixJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2xGLENBQUM7O2tIQS9WUyxvQkFBb0Isa0JBNktWLGVBQWUsYUFDM0IsYUFBYTtzR0E5S1gsb0JBQW9CLCtIQ2xCakMscXVJQXVHQTs0RkRyRmEsb0JBQW9CO2tCQUxoQyxTQUFTO21CQUFDO29CQUNSLFFBQVEsRUFBRSxrQkFBa0I7b0JBQzVCLFdBQVcsRUFBRSwrQkFBK0I7b0JBQzVDLFNBQVMsRUFBRSxDQUFDLCtCQUErQixDQUFDO2lCQUM5Qzs7MEJBOEtlLE1BQU07MkJBQUMsZUFBZTs7MEJBQ2xDLE1BQU07MkJBQUMsYUFBYTtrV0FOckIsVUFBVTtzQkFEVCxZQUFZO3VCQUFDLHNCQUFzQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIEluamVjdCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgRHluYW1pY0Zvcm1TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkLXNlcnZpY2VzL2R5bmFtaWMtZm9ybS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRmlsZU1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkLXNlcnZpY2VzL2ZpbGUtbWFuYWdlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICdmb3JtaW9qcyc7XHJcbmltcG9ydCB7IGZvcmtKb2luLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ3VzdG9tVG9hc3RyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2N1c3RvbS10b2FzdHIvc2VydmljZXMvY3VzdG9tLXRvYXN0ci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXBwQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbmZpZ3VyYXRpb24vYXBwLWNvbmZpZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWRhcHRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL2FkYXB0ZXJzL2FkYXB0ZXIuc2VydmljZScgO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3NlcnZpY2VzL3RyYW5zbGF0aW9uL3RyYW5zbGF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEYXRlSGVscGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2hpanJpLWdyZWdvcmlhbi1kYXRlcGlja2VyL3NlcnZpY2VzL2RhdGUtaGVscGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEb2N1bWVudHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vZG9jdW1lbnRzL3NlcnZpY2VzL2RvY3VtZW50cy5zZXJ2aWNlJztcclxuQENvbXBvbmVudCh7XHJcbiAgIHNlbGVjdG9yOiAnYXBwLXVwZGF0ZS1tb2RhbCcsXHJcbiAgIHRlbXBsYXRlVXJsOiAnLi91cGRhdGUtbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxyXG4gICBzdHlsZVVybHM6IFsnLi91cGRhdGUtbW9kYWwuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVXBkYXRlTW9kYWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICB0eXBlO1xyXG4gICBkeW5hbWljRm9ybTtcclxuICAgdGVtcG9yYXJ5RHlhbm1pY0RhdGEgPSB7fTtcclxuICAgbXlFbnZpcm9ubWVudDtcclxuICAgc2hvd1JlbmRlcmVyID0gZmFsc2U7XHJcbiAgIGR5bmFtaWNEYXRhID0ge1xyXG4gICAgICB2YWxpZDogZmFsc2VcclxuICAgfTtcclxuICAgaWQgPSAnJztcclxuICAgaXNEaXJlY3RvcnkgPSBmYWxzZTtcclxuICAgZmlsZUZvcm0gOiBGb3JtR3JvdXA7XHJcbiAgIGZpbGVGb3JtU3Vic2NyaXB0aW9uIDogU3Vic2NyaXB0aW9uO1xyXG4gICBhZ2VuY3lDYXRlZ0NvZGVTdWJzY3JpcHRpb24gOiBTdWJzY3JpcHRpb247XHJcbiAgIGNvdW50cnlDYXRlZ0NvZGVTdWJzY3JpcHRpb24gOiBTdWJzY3JpcHRpb247XHJcbiAgIGlzQXJhYmljID0gZmFsc2U7XHJcbiAgIHNob3dTdGF0aWNGb3JtID0gZmFsc2VcclxuICAgdXNpbmdFeHRyYUZpZWxkcyA9IGZhbHNlOyAvLyBmbGFnZSB0byBzd2l0Y2ggYmV0d2VlbiBzdGF0aWMgZm9ybSB0eXBlc1xyXG4gICBzdGF0aWNGb3JtRmllbGRzO1xyXG4gICBhZ2VuY3lOYW1lRmlsdGVyIDtcclxuICAgY291bnRyeU5hbWVGaWx0ZXI7XHJcbiAgIHRyYW5zbGF0aW9uU3ViY3JpcHRpb24gOiBTdWJzY3JpcHRpb247XHJcbiAgIGZpZWxkcyA9IFtcclxuICAgICAge1xyXG4gICAgICAgIHR5cGUgOiAndGV4dCcsXHJcbiAgICAgICAgbGFiZWwgOiBcIkNSRUFURS5ET0NVTUVOVF9TVUJKRUNUXCIsXHJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lIDogXCJzdWJqZWN0XCIsXHJcbiAgICAgICAgcGxhY2Vob2xkZXIgOiBcIkNSRUFURS5ET0NVTUVOVF9TVUJKRUNUXCIsXHJcbiAgICAgICAgcmVxdWlyZWQgOiB0cnVlLFxyXG4gICAgICAgIHBlcm1pc3Npb24gOiAnaXNIaWRkZW5GaWVsZCdcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGUgOiAndGV4dCcsXHJcbiAgICAgICAgbGFiZWwgOiBcIkNSRUFURS5ET0NVTUVOVF9OVU1CRVJcIixcclxuICAgICAgICBmb3JtQ29udHJvbE5hbWUgOiBcImRvY3VtZW50TnVtYmVyXCIsXHJcbiAgICAgICAgcGxhY2Vob2xkZXIgOiBcIkNSRUFURS5ET0NVTUVOVF9OVU1CRVJcIixcclxuICAgICAgICByZXF1aXJlZCA6IGZhbHNlLFxyXG4gICAgICAgIHBlcm1pc3Npb24gOiAnaXNIaWRkZW5GaWVsZCdcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGUgOiAnZGF0ZScsXHJcbiAgICAgICAgbGFiZWwgOiBcIkNSRUFURS5ET0NVTUVOVF9EQVRFXCIsXHJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lIDogXCJnZG9jdW1lbnREYXRlXCIsXHJcbiAgICAgICAgcGVybWlzc2lvbiA6ICdpc0hpZGRlbkZpZWxkJ1xyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZSA6ICdkeW5hbWljLXZvY2FidWxhcnknLFxyXG4gICAgICAgIGxhYmVsIDogXCJDUkVBVEUuU0NSRUNZX0xFVkVMXCIsXHJcbiAgICAgICAgYmluZExhYmVsIDogJ2xhYmVsJyxcclxuICAgICAgICBiaW5kVmFsdWUgOiAnaWQnLFxyXG4gICAgICAgIG11bHRpcGxlIDogZmFsc2UsXHJcbiAgICAgICAgc2VhcmNoYWJsZSA6IGZhbHNlLFxyXG4gICAgICAgIGNsb3NlT25TZWxlY3QgOiB0cnVlLCBcclxuICAgICAgICBoaWRlU2VsZWN0ZWRJdGVtcyA6IGZhbHNlLFxyXG4gICAgICAgIGRpc2FibGVkIDogZmFsc2UsXHJcbiAgICAgICAgdm9jYWJ1bGFyeVR5cGUgOiAnVk9DX1NlY3JlY3lMZXZlbCcsXHJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lIDogXCJzZWNyZWN5TGV2ZWxcIixcclxuICAgICAgICBwbGFjZWhvbGRlciA6IFwiVk9DQUJVTEFSWS5TRUxFQ1RfSVRFTVwiLFxyXG4gICAgICAgIHBlcm1pc3Npb24gOiAnaXNIaWRkZW5GaWVsZCdcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGUgOiAnZHluYW1pYy12b2NhYnVsYXJ5JyxcclxuICAgICAgICBsYWJlbCA6IFwiQ1JFQVRFLklNUE9SVEFOQ0VfTEVWRUxcIixcclxuICAgICAgICBiaW5kTGFiZWwgOiAnbGFiZWwnLFxyXG4gICAgICAgIGJpbmRWYWx1ZSA6ICdpZCcsXHJcbiAgICAgICAgbXVsdGlwbGUgOiBmYWxzZSxcclxuICAgICAgICBzZWFyY2hhYmxlIDogZmFsc2UsXHJcbiAgICAgICAgY2xvc2VPblNlbGVjdCA6IHRydWUsIFxyXG4gICAgICAgIGRpc2FibGVkIDogZmFsc2UsXHJcbiAgICAgICAgaGlkZVNlbGVjdGVkSXRlbXMgOiBmYWxzZSxcclxuICAgICAgICB2b2NhYnVsYXJ5VHlwZSA6ICdWT0NfSW1wb3J0YW5jZScsXHJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lIDogXCJpbXBvcnRhbmNlTGV2ZWxcIixcclxuICAgICAgICBwbGFjZWhvbGRlciA6IFwiVk9DQUJVTEFSWS5TRUxFQ1RfSVRFTVwiLFxyXG4gICAgICAgIHBlcm1pc3Npb24gOiAnaXNIaWRkZW5GaWVsZCdcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGUgOiAnZGVwYXJ0bWVudC1zZWxlY3RvcicsXHJcbiAgICAgICAgbGFiZWwgOiBcIkNSRUFURS5ERVBBUlRNRU5UX0NPREVcIixcclxuICAgICAgICBmb3JtQ29udHJvbE5hbWUgOiBcImRlcGFydG1lbnRDb2RlXCIsXHJcbiAgICAgICAgcGxhY2Vob2xkZXIgOiBcInBsZWFzZSBzZWxlY3QgZGVwYXJ0bWVudFwiLFxyXG4gICAgICAgIHBwX2RlcGFydG1lbnROZXN0ZWRUcmVlIDogXCJQUF9PU19EZXBhcnRtZW50c1wiLFxyXG4gICAgICAgIHBwX2RlcGFydG1lbnRUcmVlIDogXCJQUF9PU19EZXBhcnRtZW50c1wiLFxyXG4gICAgICAgIGN1c3RvbVByZWZpeCA6IFwib3NkZXB0XCIsXHJcbiAgICAgICAgY3VzdG9tUGFyZW50UHJvcGVydHkgOiBcIm9zZGVwYXJ0bWVudF9wYXJlbnREZXBhcnRtZW50Q29kZVwiLFxyXG4gICAgICAgIHVzZUN1c3RvbUFkZEVkaXRBY3Rpb24gOiB0cnVlLFxyXG4gICAgICAgIHJlcXVpcmVkIDogZmFsc2UsXHJcbiAgICAgICAgcGVybWlzc2lvbiA6ICdpc0hpZGRlbkZpZWxkJ1xyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZSA6ICd0cmFuc2xhdGVkLXZvY2FidWxhcnknLFxyXG4gICAgICAgIGxhYmVsIDogXCJDUkVBVEUuQUdFTkNZX0NBVEVHT1JZX0NPREVcIixcclxuICAgICAgICBhcmJCaW5kTGFiZWwgOiAnbGFiZWxfYXInLFxyXG4gICAgICAgIGVuZ0JpbmRMYWJlbCA6IFwibGFiZWxfZW5cIixcclxuICAgICAgICBiaW5kVmFsdWUgOiAnaWQnLFxyXG4gICAgICAgIG11bHRpcGxlIDogZmFsc2UsXHJcbiAgICAgICAgc2VhcmNoYWJsZSA6IGZhbHNlLFxyXG4gICAgICAgIGNsb3NlT25TZWxlY3QgOiB0cnVlLCBcclxuICAgICAgICBoaWRlU2VsZWN0ZWRJdGVtcyA6IGZhbHNlLFxyXG4gICAgICAgIHZvY2J1bGFyeUlkIDogJ1ZPQ19BZ2VuY3lDYXRlZ29yeScsXHJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lIDogXCJhZ2VuY3lDYXRlZ29yeUNvZGVcIixcclxuICAgICAgICBwbGFjZWhvbGRlciA6IFwiVk9DQUJVTEFSWS5TRUxFQ1RfSVRFTVwiLFxyXG4gICAgICAgIHVzZUZpbHRlcjogZmFsc2UsXHJcbiAgICAgICAgZmlsdGVyIDogJycsXHJcbiAgICAgICAgcGVybWlzc2lvbiA6ICdpc0hpZGRlbkZpZWxkJ1xyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZSA6ICd0cmFuc2xhdGVkLXZvY2FidWxhcnknLFxyXG4gICAgICAgIGxhYmVsIDogXCJDUkVBVEUuQUdFTkNZX05BTUVcIixcclxuICAgICAgICBhcmJCaW5kTGFiZWwgOiAnbGFiZWxfYXInLFxyXG4gICAgICAgIGVuZ0JpbmRMYWJlbCA6IFwibGFiZWxfZW5cIixcclxuICAgICAgICBiaW5kVmFsdWUgOiAnaWQnLFxyXG4gICAgICAgIG11bHRpcGxlIDogZmFsc2UsXHJcbiAgICAgICAgc2VhcmNoYWJsZSA6IHRydWUsXHJcbiAgICAgICAgY2xvc2VPblNlbGVjdCA6IHRydWUsIFxyXG4gICAgICAgIGhpZGVTZWxlY3RlZEl0ZW1zIDogZmFsc2UsXHJcbiAgICAgICAgdm9jYnVsYXJ5SWQgOiAnVk9DX0FnZW5jeScsXHJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lIDogXCJhZ2VuY3lOYW1lXCIsXHJcbiAgICAgICAgcGxhY2Vob2xkZXIgOiBcIlZPQ0FCVUxBUlkuU0VMRUNUX0lURU1cIixcclxuICAgICAgICB1c2VGaWx0ZXI6IHRydWUsXHJcbiAgICAgICAgZmlsdGVyIDogJ2FnZW5jeU5hbWUnLFxyXG4gICAgICAgIHBlcm1pc3Npb24gOiAnaXNIaWRkZW5GaWVsZCdcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGUgOiAndHJhbnNsYXRlZC12b2NhYnVsYXJ5JyxcclxuICAgICAgICBsYWJlbCA6IFwiQ1JFQVRFLkNPVU5UUllfQ0FURUdPUllfQ09ERVwiLFxyXG4gICAgICAgIGFyYkJpbmRMYWJlbCA6ICdsYWJlbF9hcicsXHJcbiAgICAgICAgZW5nQmluZExhYmVsIDogXCJsYWJlbF9lblwiLFxyXG4gICAgICAgIGJpbmRWYWx1ZSA6ICdpZCcsXHJcbiAgICAgICAgbXVsdGlwbGUgOiBmYWxzZSxcclxuICAgICAgICBzZWFyY2hhYmxlIDogdHJ1ZSxcclxuICAgICAgICBjbG9zZU9uU2VsZWN0IDogdHJ1ZSwgXHJcbiAgICAgICAgaGlkZVNlbGVjdGVkSXRlbXMgOiBmYWxzZSxcclxuICAgICAgICB2b2NidWxhcnlJZCA6ICdWT0NfQ291bnRyeUNhdGVnb3J5JyxcclxuICAgICAgICBmb3JtQ29udHJvbE5hbWUgOiBcImNvdW50cnlDYXRlZ29yeUNvZGVcIixcclxuICAgICAgICBwbGFjZWhvbGRlciA6IFwiVk9DQUJVTEFSWS5TRUxFQ1RfSVRFTVwiLFxyXG4gICAgICAgIHVzZUZpbHRlcjogZmFsc2UsXHJcbiAgICAgICAgZmlsdGVyIDogJycsXHJcbiAgICAgICAgcGVybWlzc2lvbiA6ICdpc0hpZGRlbkZpZWxkJ1xyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZSA6ICd0cmFuc2xhdGVkLXZvY2FidWxhcnknLFxyXG4gICAgICAgIGxhYmVsIDogXCJDUkVBVEUuQ09VTlRSWV9OQU1FXCIsXHJcbiAgICAgICAgYXJiQmluZExhYmVsIDogJ2xhYmVsX2FyJyxcclxuICAgICAgICBlbmdCaW5kTGFiZWwgOiBcImxhYmVsX2VuXCIsXHJcbiAgICAgICAgYmluZFZhbHVlIDogJ2lkJyxcclxuICAgICAgICBtdWx0aXBsZSA6IGZhbHNlLFxyXG4gICAgICAgIHNlYXJjaGFibGUgOiB0cnVlLFxyXG4gICAgICAgIGNsb3NlT25TZWxlY3QgOiB0cnVlLCBcclxuICAgICAgICBoaWRlU2VsZWN0ZWRJdGVtcyA6IGZhbHNlLFxyXG4gICAgICAgIHZvY2J1bGFyeUlkIDogJ1ZPQ19Db3VudHJ5JyxcclxuICAgICAgICBmb3JtQ29udHJvbE5hbWUgOiBcImNvdW50cnlOYW1lXCIsXHJcbiAgICAgICAgcGxhY2Vob2xkZXIgOiBcIlZPQ0FCVUxBUlkuU0VMRUNUX0lURU1cIixcclxuICAgICAgICB1c2VGaWx0ZXI6IHRydWUsXHJcbiAgICAgICAgZmlsdGVyIDogJ2NvdW50cnlOYW1lJyxcclxuICAgICAgICBwZXJtaXNzaW9uIDogJ2lzSGlkZGVuRmllbGQnXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlIDogJ3RleHQnLFxyXG4gICAgICAgIGxhYmVsIDogXCJDUkVBVEUuUkVNQVJLU1wiLFxyXG4gICAgICAgIGZvcm1Db250cm9sTmFtZSA6IFwicmVtYXJrc1wiLFxyXG4gICAgICAgIHBsYWNlaG9sZGVyIDogXCJDUkVBVEUuUkVNQVJLU1wiLFxyXG4gICAgICAgIHJlcXVpcmVkIDogZmFsc2UsXHJcbiAgICAgICAgcGVybWlzc2lvbiA6ICdpc0hpZGRlbkZpZWxkJ1xyXG4gICAgICB9XHJcbiAgICBdIDtcclxuICAgdHJhbnNsYXRlZERvY3VtZW50VHlwZTtcclxuICAgY29kZTtcclxuICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5dXAuZW50ZXInLCBbJyRldmVudCddKVxyXG4gICBLZXlVcEV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICAgaWYoKHRoaXMuZHluYW1pY0RhdGFbJ2RhdGEnXSAmJiB0aGlzLmR5bmFtaWNEYXRhLnZhbGlkKSAmJiB0aGlzLmZpbGVGb3JtLnZhbGlkICYmIHRoaXMuZmlsZUZvcm0udmFsdWUudGl0bGUgIT0gJy4uJykge1xyXG4gICAgICAgdGhpcy5VcGRhdGVEb2N1bWVudCgpO1xyXG4gICAgIH1cclxuICAgfVxyXG4gICBjb25zdHJ1Y3RvcihASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGEsXHJcbiAgIEBJbmplY3QoJ2Vudmlyb25tZW50JykgcHVibGljIGVudmlyb25tZW50LFxyXG4gICAgICBwcml2YXRlIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPFVwZGF0ZU1vZGFsQ29tcG9uZW50PixcclxuICAgICAgcHJpdmF0ZSBmaWxlTWFuZ2VyU2VydmljZTogRmlsZU1hbmFnZXJTZXJ2aWNlLFxyXG4gICAgICBwcml2YXRlIHRvc3RlclNlcnZpY2U6IEN1c3RvbVRvYXN0clNlcnZpY2UsXHJcbiAgICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxyXG4gICAgICBwcml2YXRlIGFwcENvbmZTZXJ2aWNlIDogQXBwQ29uZmlnU2VydmljZSxcclxuICAgICAgcHJpdmF0ZSBkeW5hbWljRm9ybVNlcnZpY2U6IER5bmFtaWNGb3JtU2VydmljZSxcclxuICAgICAgcHJpdmF0ZSBhZGFwdGVyIDogQWRhcHRlclNlcnZpY2UsXHJcbiAgICAgIHByaXZhdGUgdHJhbnNsYXRpb25TZXJ2aWNlIDogVHJhbnNsYXRpb25TZXJ2aWNlLFxyXG4gICAgICBwcml2YXRlIGRhdGVIZWxwZXJTZXJ2aWNlIDogRGF0ZUhlbHBlclNlcnZpY2UsXHJcbiAgICAgIHByaXZhdGUgZG9jdW1lbnRTZXJ2aWNlOiBEb2N1bWVudHNTZXJ2aWNlKSB7IFxyXG4gICAgICAgICB0aGlzLnR5cGUgPSB0aGlzLmRhdGEudHlwZTtcclxuICAgICAgICAgdGhpcy5jb2RlID0gdGhpcy5kYXRhLmNvZGU7XHJcbiAgICAgICAgIHRoaXMuaWQgPSB0aGlzLmRhdGEuaWQ7XHJcbiAgICAgICAgIHRoaXMuaXNEaXJlY3RvcnkgPSB0aGlzLmRhdGEuaXNEaXJlY3Rvcnk7XHJcbiAgICAgICAgIHRoaXMuaW5pdGlhdGZpbGVGb3JtKCk7XHJcblxyXG4gICAgICB9XHJcbiAgIGN1c3RvbWVIZWFkZXIgPSAnbG9jayxkYzpjcmVhdG9yJztcclxuICAgdXNlclNlbGVjdG9yS2V5cyA9IFtdO1xyXG4gICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgdGhpcy50cmFuc2xhdGlvblN1YmNyaXB0aW9uID0gdGhpcy50cmFuc2xhdGlvblNlcnZpY2UuaXNBcmFiaWMuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgIHRoaXMuaXNBcmFiaWMgPSByZXM7XHJcbiAgICAgIH0pXHJcbiAgICAgIGxldCBjb2xsZWN0RGF0YSA9IHt9O1xyXG5cclxuICAgICAgdGhpcy5keW5hbWljRm9ybVNlcnZpY2UuZ2V0RHluYW1pY0Zvcm0odGhpcy5jb2RlID8gdGhpcy5jb2RlIDogdGhpcy50eXBlKS5zdWJzY3JpYmUoZm9ybSA9PiB7XHJcbiAgICAgICAgIGlmKGZvcm0gJiYgZm9ybVsnY29tcG9uZW50cyddICYmIGZvcm1bJ2NvbXBvbmVudHMnXS5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgbGV0IHByZWZpeCA9IGZvcm0ucHJlZml4O1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNGb3JtID0gZm9ybTtcclxuICAgICAgICAgICAgVXRpbHMuZWFjaENvbXBvbmVudCggZm9ybS5jb21wb25lbnRzICwgKGNvbXApID0+IHtcclxuICAgICAgICAgICAgICAgaWYgKGNvbXAudHlwZSA9PT0gXCJ1c2VyU2VsZWN0b3JcIikge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnVzZXJTZWxlY3RvcktleXMucHVzaChjb21wLmZpeGVkS2V5KTtcclxuICAgICAgICAgICAgICAgICAgbGV0IGNvbXBQcmVmaXggPSBwcmVmaXhbY29tcC5maXhlZEtleV0gPyBwcmVmaXhbY29tcC5maXhlZEtleV0gOiAnJztcclxuICAgICAgICAgICAgICAgICAgaWYgKGNvbXBQcmVmaXgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXN0b21lSGVhZGVyID0gdGhpcy5jdXN0b21lSGVhZGVyICsgJywnICsgY29tcFByZWZpeCArICc6JyArIGNvbXAuZml4ZWRLZXlcclxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXN0b21lSGVhZGVyID0gdGhpcy5jdXN0b21lSGVhZGVyICsgJywnICsgY29tcC5maXhlZEtleVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgIH1cclxuICAgICAgICAgdGhpcy5maWxlTWFuZ2VyU2VydmljZS5nZXRGaWxlU2NoZW1hcyh0aGlzLnR5cGUpLnN1YnNjcmliZShzY2hlbWFzID0+IHtcclxuICAgICAgICAgICAgc2NoZW1hcy5tYXAoaXRlbSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYoaXRlbS5uYW1lID09PSBcImdlbmVyYWxkb2N1bWVudFwiKXtcclxuICAgICAgICAgICAgICAgIHRoaXMudXNpbmdFeHRyYUZpZWxkcyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhdGZpbGVGb3JtKCk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50U2VydmljZS5nZXREb2N1bWVudCh0aGlzLmlkLCB7ICdYLU5YZmV0Y2gtZG9jdW1lbnQnOiB0aGlzLmN1c3RvbWVIZWFkZXIgfSkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgICAgICAgdGhpcy50cmFuc2xhdGVkRG9jdW1lbnRUeXBlID0gcmVzcG9uc2VbJ2RvY3VtZW50VHlwZSddO1xyXG4gICAgICAgICAgICAgICB0aGlzLmFkYXB0ZXIuYWRhcHRJbihyZXNwb25zZSAsIHRoaXMuc3RhdGljRm9ybUZpZWxkcyk7XHJcbiAgICAgICAgICAgICAgIGlmKHRoaXMuZHluYW1pY0Zvcm0gJiYgdGhpcy5keW5hbWljRm9ybVsnY29tcG9uZW50cyddICYmIHRoaXMuZHluYW1pY0Zvcm1bJ2NvbXBvbmVudHMnXS5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgICAgICAgVXRpbHMuZWFjaENvbXBvbmVudCh0aGlzLmR5bmFtaWNGb3JtLmNvbXBvbmVudHMsKGNvbXApID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgaWYodGhpcy51c2VyU2VsZWN0b3JLZXlzLmluZGV4T2YoY29tcC5maXhlZEtleSkgPiAtMSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxlY3REYXRhWyc6JyArIGNvbXAuZml4ZWRLZXldID17XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJTZWxlY3RvciA6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlIDogcmVzcG9uc2UucHJvcGVydGllc1t0aGlzLmR5bmFtaWNGb3JtLnByZWZpeFtjb21wLmZpeGVkS2V5XSArICc6JyArIGNvbXAuZml4ZWRLZXldXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xsZWN0RGF0YVsnOicgKyBjb21wLmZpeGVkS2V5XSA9IHJlc3BvbnNlLnByb3BlcnRpZXNbdGhpcy5keW5hbWljRm9ybS5wcmVmaXhbY29tcC5maXhlZEtleV0gKyAnOicgKyBjb21wLmZpeGVkS2V5XVxyXG4gICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgdGhpcy50ZW1wb3JhcnlEeWFubWljRGF0YSA9IHsgLi4uY29sbGVjdERhdGEgfTtcclxuICAgICAgICAgICAgICAgdGhpcy5zaG93UmVuZGVyZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICB0aGlzLmZpbGVGb3JtLnBhdGNoVmFsdWUocmVzcG9uc2UucHJvcGVydGllcyk7XHJcbiAgICAgICAgICAgICAgIGlmKHRoaXMuZmlsZUZvcm0udmFsdWVbJ2FnZW5jeUNhdGVnb3J5Q29kZSddKXtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5hZ2VuY3lOYW1lRmlsdGVyID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5IDogdGhpcy5maWxlRm9ybS52YWx1ZVsnYWdlbmN5Q2F0ZWdvcnlDb2RlJ11cclxuICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5hZ2VuY3lDYXRlZ0NvZGVTdWJzY3JpcHRpb24gPSAgdGhpcy5maWxlRm9ybS5nZXQoJ2FnZW5jeUNhdGVnb3J5Q29kZScpLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWxlRm9ybS5nZXQoJ2FnZW5jeU5hbWUnKS5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWdlbmN5TmFtZUZpbHRlciA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnkgOiByZXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYodGhpcy5maWxlRm9ybS52YWx1ZVsnY291bnRyeUNhdGVnb3J5Q29kZSddKXtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jb3VudHJ5TmFtZUZpbHRlciA9IHtcclxuICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeSA6IHRoaXMuZmlsZUZvcm0udmFsdWVbJ2NvdW50cnlDYXRlZ29yeUNvZGUnXVxyXG4gICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHRoaXMuY291bnRyeUNhdGVnQ29kZVN1YnNjcmlwdGlvbiA9ICB0aGlzLmZpbGVGb3JtLmdldCgnY291bnRyeUNhdGVnb3J5Q29kZScpLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5maWxlRm9ybS5nZXQoJ2NvdW50cnlOYW1lJykuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY291bnRyeU5hbWVGaWx0ZXIgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnkgOiByZXNcclxuICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICBpZih0aGlzLmZpbGVGb3JtLmNvbnRhaW5zKCdzZWNyZWN5TGV2ZWwnKSAmJiB0aGlzLmZpbGVGb3JtLmdldCgnc2VjcmVjeUxldmVsJykudmFsdWUgIT09IG51bGwgJiYgdGhpcy5maWxlRm9ybS5nZXQoJ3NlY3JlY3lMZXZlbCcpLnZhbHVlICE9PSAnTm9ybWFsJyApe1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmZpZWxkc1szXS5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGVGb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHRoaXMuZmlsZUZvcm0pO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgIH0pXHJcblxyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcbiAgaW5pdGlhdGZpbGVGb3JtKCl7XHJcbiAgIGlmKHRoaXMudXNpbmdFeHRyYUZpZWxkcyAmJiAhdGhpcy5pc0RpcmVjdG9yeSl7XHJcbiAgICAgdGhpcy5maWxlRm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICAgdGl0bGUgOiBbJycgLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICAgZGVzY3JpcHRpb24gOiBbJyddLFxyXG4gICAgICAgc3ViamVjdCA6IFsnJyAsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgICBkb2N1bWVudE51bWJlciA6IFsnJ10sXHJcbiAgICAgICBnZG9jdW1lbnREYXRlIDogW251bGwgLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICAgc2VjcmVjeUxldmVsIDogW251bGxdLFxyXG4gICAgICAgaW1wb3J0YW5jZUxldmVsOltudWxsXSxcclxuICAgICAgIGRlcGFydG1lbnRDb2RlOlsnJ10sXHJcbiAgICAgICBhZ2VuY3lDYXRlZ29yeUNvZGU6W251bGxdLFxyXG4gICAgICAgYWdlbmN5TmFtZTpbbnVsbF0sXHJcbiAgICAgICBjb3VudHJ5Q2F0ZWdvcnlDb2RlOltudWxsXSxcclxuICAgICAgIGNvdW50cnlOYW1lOltudWxsXSxcclxuICAgICAgIHJlbWFya3M6WycnXVxyXG4gICAgIH0pXHJcbiAgIH1lbHNle1xyXG4gICAgIHRoaXMuZmlsZUZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgIHRpdGxlIDogWycnICwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgIGRlc2NyaXB0aW9uIDogWycnXVxyXG4gICAgIH0pXHJcbiAgIH1cclxuICAgdGhpcy5zdGF0aWNGb3JtRmllbGRzID0gdGhpcy5hcHBDb25mU2VydmljZS5teUNvbmZpZ3VyYXRpb24uc3RhdGljRm9ybUZpZWxkcztcclxuIH1cclxuICAgb25keW5hbWljRm9ybUNoYW5nZShkeW5hbWljRGF0YSkge1xyXG4gICAgICBpZiAoZHluYW1pY0RhdGEuZGF0YSkge1xyXG4gICAgICAgICBjb25zb2xlLmxvZyhkeW5hbWljRGF0YS5kYXRhKVxyXG4gICAgICAgICB0aGlzLmR5bmFtaWNEYXRhID0geyAuLi5keW5hbWljRGF0YSB9O1xyXG4gICAgICB9XHJcbiAgIH1cclxuICAgY2xvc2VEaWFsb2coKSB7XHJcbiAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKGZhbHNlKTtcclxuICAgfVxyXG5cclxuICAgVXBkYXRlRG9jdW1lbnQoKSB7XHJcbiAgICAgIGxldCBwYXJhbXMgPSB0aGlzLmNvbnN0cnVjdFBheUxvYWQodGhpcy5keW5hbWljRGF0YVsnZGF0YSddLCB0aGlzLmZpbGVGb3JtLnZhbHVlKTtcclxuICAgICAgdGhpcy5maWxlTWFuZ2VyU2VydmljZS5VcGRhdGVGb2xkZXIocGFyYW1zLCB0aGlzLmlkKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICAgLy9jb25zb2xlLmxvZyhyZXMpO1xyXG4gICAgICAgICB0aGlzLmZpbGVNYW5nZXJTZXJ2aWNlLm9uUmVmcmVzaGluZ0ZpbGVNYW5nZXIubmV4dCgpO1xyXG4gICAgICAgICB0aGlzLnRvc3RlclNlcnZpY2Uuc2hvdygnc3VjY2VzcycsICdUT0FTVEVSLlNVQ0NFU1MnLCBcIlRPQVNURVIuRk9MREVSX1VQREFURURfU1VDQ0VcIik7XHJcbiAgICAgICAgIHRoaXMuY2xvc2VEaWFsb2coKTtcclxuICAgICAgfSlcclxuXHJcbiAgIH1cclxuXHJcbiAgIGNvbnN0cnVjdFBheUxvYWQoZHluYW1pY1ZhbHVlcywgc3RhdGljRm9ybSkge1xyXG4gICAgICBsZXQgcHJvcHMgPSB0aGlzLmR5bmFtaWNGb3JtID8gdGhpcy5keW5hbWljRm9ybVNlcnZpY2UuY29uc3RydWN0RHluYW1pY0Zvcm1QYXlsb2FkKGR5bmFtaWNWYWx1ZXMgLCB0aGlzLmR5bmFtaWNGb3JtKSA6IHt9O1xyXG4gICAgICBsZXQgc3RhdGljRm9ybURhdGEgPSB0aGlzLm1hcHBpbmdTdGF0aWNEYXRhKHN0YXRpY0Zvcm0pXHJcbiAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIFwidHlwZVwiOiB0aGlzLnR5cGUsXHJcbiAgICAgICAgICAgIFwibmFtZVwiOiBzdGF0aWNGb3JtLnRpdGxlLFxyXG4gICAgICAgICAgICBcInNhdmVcIjogXCJ0cnVlXCIsXHJcbiAgICAgICAgICAgIFwicHJvcGVydGllc1wiOiB7XHJcbiAgICAgICAgICAgICAgIC4uLnByb3BzLFxyXG4gICAgICAgICAgICAgICAuLi5zdGF0aWNGb3JtRGF0YVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgIH07XHJcbiAgIH1cclxuXHJcbiAgIG1hcHBpbmdTdGF0aWNEYXRhKGRhdGEpe1xyXG4gICAgICBpZihkYXRhLmdkb2N1bWVudERhdGUgJiYgZGF0YS5nZG9jdW1lbnREYXRlICE9PSBudWxsKXtcclxuICAgICAgICBkYXRhWydoZG9jdW1lbnREYXRlJ10gPSB0aGlzLmRhdGVIZWxwZXJTZXJ2aWNlLmdyZWdvcmlhblRvSGlqcmkoZGF0YS5nZG9jdW1lbnREYXRlLCdpWVlZWS1pTU0taUREJylcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdGhpcy5hZGFwdGVyLmFkYXB0T3V0KGRhdGEgLCB0aGlzLnN0YXRpY0Zvcm1GaWVsZHMpXHJcbiAgICB9XHJcblxyXG4gICBuZ09uRGVzdHJveSgpe1xyXG4gICAgICB0aGlzLmFnZW5jeUNhdGVnQ29kZVN1YnNjcmlwdGlvbiA/IHRoaXMuYWdlbmN5Q2F0ZWdDb2RlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkgOiBudWxsO1xyXG4gICAgICB0aGlzLmNvdW50cnlDYXRlZ0NvZGVTdWJzY3JpcHRpb24gPyB0aGlzLmNvdW50cnlDYXRlZ0NvZGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSA6IG51bGw7XHJcbiAgICAgIHRoaXMudHJhbnNsYXRpb25TdWJjcmlwdGlvbiA/IHRoaXMudHJhbnNsYXRpb25TdWJjcmlwdGlvbi51bnN1YnNjcmliZSgpIDogbnVsbDtcclxuICAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjcmVhdGUtZm9sZGVyLW1vZGFsIGQtZmxleCBqdXN0aWZ5LWNlbnRlciB3LWZ1bGwgcmVsYXRpdmUgaC1mdWxsXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZm9sZGVyLXdyYXBwZXJcIiBTZXRSdGw+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsLXN0eWxlXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBcIkZPTERFUlMuVFlQRV9PTkxZXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1yZWQtNTAwXCI+Kjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhaXNEaXJlY3RvcnlcIj57eyB0cmFuc2xhdGVkRG9jdW1lbnRUeXBlID8gKGlzQXJhYmljID8gKHRyYW5zbGF0ZWREb2N1bWVudFR5cGUuYXJhYmljTmFtZSkgOiAodHJhbnNsYXRlZERvY3VtZW50VHlwZS5lbmdsaXNoVGl0bGUpKSA6IHR5cGV9fTwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNEaXJlY3RvcnlcIj57eyB0eXBlID09PSAnRG1zRm9sZGVyJyA/IChpc0FyYWJpYyA/ICfZhdis2YTYrycgOiAnRm9sZGVyJykgOiB0eXBlfX08L2Rpdj5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmaWxlRm9ybVwiICpuZ0lmPVwiZmlsZUZvcm1cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbC1zdHlsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IFwiRk9MREVSUy5USVRMRV9PTkxZXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmaWVsZC1zdHlsZSBcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnYm9yZGVyLXJlZC01MDAnIDogZmlsZUZvcm0udmFsdWUudGl0bGUgPT09ICcuLid9XCJcclxuICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxyXG4gICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInRpdGxlXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCIge3sgJ0NSRUFURS5USVRMRScgfCB0cmFuc2xhdGV9fVwiXHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtcmVkLTUwMCB0ZXh0LWJhc2VcIiAqbmdJZj1cImZpbGVGb3JtLnZhbHVlLnRpdGxlID09PSAnLi4nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgXCJGT0xERVJTLklOVkFMSURfVElUTEVfT05MWVwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWwtc3R5bGVcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyBcIkZPTERFUlMuREVTQ1JJUFRJT05fT05MWVwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmllbGQtc3R5bGUgXCJcclxuICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkZXNjcmlwdGlvblwiIFxyXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiIHt7ICdDUkVBVEUuREVTQ1JJUFRJT04nIHwgdHJhbnNsYXRlfX1cIlxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0gbmV3IHN0YXRpcyBmb3JtICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidXNpbmdFeHRyYUZpZWxkcyAmJiAhaXNEaXJlY3RvcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtZHluYW1pYy1maWVsZHMtcmVuZGVyZXIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21vZGVdPVwiJ2VkaXQnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmllbGRzXT1cImZpZWxkc1wiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtXT1cImZpbGVGb3JtXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FnZW5jeU5hbWVGaWx0ZXJdPVwiYWdlbmN5TmFtZUZpbHRlclwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb3VudHJ5TmFtZUZpbHRlcl09XCJjb3VudHJ5TmFtZUZpbHRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FwcC1keW5hbWljLWZpZWxkcy1yZW5kZXJlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tPlxyXG5cclxuXHJcbiAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkeW5hbWljLXBhcnQgLW14LTRcIiAqbmdJZj1cImR5bmFtaWNGb3JtICYmIHNob3dSZW5kZXJlclwiPlxyXG4gICAgICAgICAgICA8YXBwLWR5bmFtaWMtZm9ybVxyXG4gICAgICAgICAgICAgICAgW2Zvcm1dPVwiZHluYW1pY0Zvcm1cIlxyXG4gICAgICAgICAgICAgICAgW2RhdGFdPVwidGVtcG9yYXJ5RHlhbm1pY0RhdGFcIlxyXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbmR5bmFtaWNGb3JtQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICA+PC9hcHAtZHluYW1pYy1mb3JtPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tIGFjdGlvbnMgYW5kIGJ1dHRvbnMgIC0tPlxyXG4gICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiXHJcbiAgICAgICAgICAgIHctZnVsbFxyXG4gICAgICAgICAgICBkLWZsZXhcclxuICAgICAgICAgICAganVzdGlmeS1iZXR3ZWVuXHJcbiAgICAgICAgICAgIGFic29sdXRlXHJcbiAgICAgICAgICAgIGJvdHRvbS0wXHJcbiAgICAgICAgXCJcclxuICAgID5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleFwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNhbmNlbGF0aW9uLWJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xvc2VEaWFsb2coKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHt7IFwiQlVUVE9OUy5DQU5DRUxcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSAgLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiVXBkYXRlRG9jdW1lbnQoKVwiXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGR5bmFtaWNEYXRhWydkYXRhJ10gJiYgIWR5bmFtaWNEYXRhLnZhbGlkKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgIGZpbGVGb3JtLmludmFsaWQgfHxcclxuICAgICAgICAgICAgICAgICAgICBmaWxlRm9ybS52YWx1ZS50aXRsZSA9PT0gJy4uJ1xyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAnb3BhY2l0eS0zMCBjdXJzb3Itbm90LWFsbG93ZWQnOlxyXG4gICAgICAgICAgICAgICAgICAgIChkeW5hbWljRGF0YVsnZGF0YSddICYmICFkeW5hbWljRGF0YS52YWxpZCkgfHxcclxuICAgICAgICAgICAgICAgICAgICBmaWxlRm9ybS5pbnZhbGlkIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgZmlsZUZvcm0udmFsdWUudGl0bGUgPT09ICcuLidcclxuICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzdWJtaXNzaW9uLWJ1dHRvblwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHt7IFwiQlVUVE9OUy5VUERBVEVcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
var _FileGridInfiniteScrollDirective_instances, _FileGridInfiniteScrollDirective_scrollSubject, _FileGridInfiniteScrollDirective_scrollHandler, _FileGridInfiniteScrollDirective_isNodeChanging, _FileGridInfiniteScrollDirective_handleViewModeChanged, _FileGridInfiniteScrollDirective_removeListener;
|
|
2
|
+
import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
|
3
|
+
import { Directive, EventEmitter, Input, Output } from "@angular/core";
|
|
4
|
+
import { Subject } from 'rxjs';
|
|
5
|
+
import { debounceTime } from "rxjs/operators";
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export class FileGridInfiniteScrollDirective {
|
|
8
|
+
constructor() {
|
|
9
|
+
_FileGridInfiniteScrollDirective_instances.add(this);
|
|
10
|
+
this.infiniteScrollDistance = 5;
|
|
11
|
+
this.scrolled = new EventEmitter();
|
|
12
|
+
_FileGridInfiniteScrollDirective_scrollSubject.set(this, new Subject());
|
|
13
|
+
_FileGridInfiniteScrollDirective_scrollHandler.set(this, void 0);
|
|
14
|
+
_FileGridInfiniteScrollDirective_isNodeChanging.set(this, false);
|
|
15
|
+
}
|
|
16
|
+
ngAfterViewInit() {
|
|
17
|
+
this.fileManager.instance.on('contentReady', (e) => {
|
|
18
|
+
__classPrivateFieldGet(this, _FileGridInfiniteScrollDirective_instances, "m", _FileGridInfiniteScrollDirective_handleViewModeChanged).call(this);
|
|
19
|
+
});
|
|
20
|
+
this.fileManager.instance.on('optionChanged', (e) => {
|
|
21
|
+
if (e.fullName === 'itemView.mode') {
|
|
22
|
+
__classPrivateFieldGet(this, _FileGridInfiniteScrollDirective_instances, "m", _FileGridInfiniteScrollDirective_handleViewModeChanged).call(this);
|
|
23
|
+
}
|
|
24
|
+
else if (e.fullName === 'currentPath') {
|
|
25
|
+
__classPrivateFieldSet(this, _FileGridInfiniteScrollDirective_isNodeChanging, true, "f");
|
|
26
|
+
__classPrivateFieldGet(this, _FileGridInfiniteScrollDirective_instances, "m", _FileGridInfiniteScrollDirective_handleViewModeChanged).call(this);
|
|
27
|
+
setTimeout(() => { __classPrivateFieldSet(this, _FileGridInfiniteScrollDirective_isNodeChanging, false, "f"); }, 1000);
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
__classPrivateFieldGet(this, _FileGridInfiniteScrollDirective_scrollSubject, "f").pipe(debounceTime(500)).subscribe(() => {
|
|
31
|
+
this.scrolled.emit();
|
|
32
|
+
console.log('scroll trigered');
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
_FileGridInfiniteScrollDirective_scrollSubject = new WeakMap(), _FileGridInfiniteScrollDirective_scrollHandler = new WeakMap(), _FileGridInfiniteScrollDirective_isNodeChanging = new WeakMap(), _FileGridInfiniteScrollDirective_instances = new WeakSet(), _FileGridInfiniteScrollDirective_handleViewModeChanged = function _FileGridInfiniteScrollDirective_handleViewModeChanged() {
|
|
37
|
+
try {
|
|
38
|
+
__classPrivateFieldGet(this, _FileGridInfiniteScrollDirective_instances, "m", _FileGridInfiniteScrollDirective_removeListener).call(this);
|
|
39
|
+
setTimeout(() => {
|
|
40
|
+
const scrollableElement = this.fileManager.instance._itemView._$element[0].getElementsByClassName('dx-scrollable-container')[0];
|
|
41
|
+
// Define the event handler function
|
|
42
|
+
const onScroll = () => {
|
|
43
|
+
if (__classPrivateFieldGet(this, _FileGridInfiniteScrollDirective_isNodeChanging, "f"))
|
|
44
|
+
return;
|
|
45
|
+
const scrollTop = scrollableElement.scrollTop;
|
|
46
|
+
const scrollHeight = scrollableElement.scrollHeight;
|
|
47
|
+
const clientHeight = scrollableElement.clientHeight;
|
|
48
|
+
if (scrollTop + clientHeight >= scrollHeight - this.infiniteScrollDistance) {
|
|
49
|
+
__classPrivateFieldGet(this, _FileGridInfiniteScrollDirective_scrollSubject, "f").next();
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
__classPrivateFieldSet(this, _FileGridInfiniteScrollDirective_scrollHandler, onScroll, "f");
|
|
53
|
+
scrollableElement.addEventListener('scroll', onScroll);
|
|
54
|
+
}, 100);
|
|
55
|
+
}
|
|
56
|
+
catch (e) { }
|
|
57
|
+
}, _FileGridInfiniteScrollDirective_removeListener = function _FileGridInfiniteScrollDirective_removeListener() {
|
|
58
|
+
const scrollableElement = this.fileManager.instance._itemView._$element[0].getElementsByClassName('dx-scrollable-container')[0];
|
|
59
|
+
if (__classPrivateFieldGet(this, _FileGridInfiniteScrollDirective_scrollHandler, "f")) {
|
|
60
|
+
scrollableElement.removeEventListener('scroll', __classPrivateFieldGet(this, _FileGridInfiniteScrollDirective_scrollHandler, "f"));
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
FileGridInfiniteScrollDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FileGridInfiniteScrollDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
64
|
+
FileGridInfiniteScrollDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.17", type: FileGridInfiniteScrollDirective, selector: "[ndfFileGridInfiniteScroll]", inputs: { fileManager: ["ndfFileGridInfiniteScroll", "fileManager"], infiniteScrollDistance: "infiniteScrollDistance" }, outputs: { scrolled: "scrolled" }, ngImport: i0 });
|
|
65
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FileGridInfiniteScrollDirective, decorators: [{
|
|
66
|
+
type: Directive,
|
|
67
|
+
args: [{
|
|
68
|
+
selector: '[ndfFileGridInfiniteScroll]'
|
|
69
|
+
}]
|
|
70
|
+
}], propDecorators: { fileManager: [{
|
|
71
|
+
type: Input,
|
|
72
|
+
args: ['ndfFileGridInfiniteScroll']
|
|
73
|
+
}], infiniteScrollDistance: [{
|
|
74
|
+
type: Input
|
|
75
|
+
}], scrolled: [{
|
|
76
|
+
type: Output
|
|
77
|
+
}] } });
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1ncmlkLWluZmluaXRlLXNjcm9sbC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL2ZpbGUtbWFuZ2VyL2RpcmVjdGl2ZXMvZmlsZS1ncmlkLWluZmluaXRlLXNjcm9sbC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV0RixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFLOUMsTUFBTSxPQUFPLCtCQUErQjtJQUg1Qzs7UUFLYSwyQkFBc0IsR0FBVyxDQUFDLENBQUM7UUFDbEMsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFOUMseURBQWlCLElBQUksT0FBTyxFQUFRLEVBQUM7UUFDckMsaUVBQTJCO1FBQzNCLDBEQUFrQixLQUFLLEVBQUM7S0F3RDNCO0lBdERHLGVBQWU7UUFDWCxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDL0MsdUJBQUEsSUFBSSwwR0FBdUIsTUFBM0IsSUFBSSxDQUF5QixDQUFDO1FBQ2xDLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ2hELElBQUksQ0FBQyxDQUFDLFFBQVEsS0FBSyxlQUFlLEVBQUU7Z0JBQ2hDLHVCQUFBLElBQUksMEdBQXVCLE1BQTNCLElBQUksQ0FBeUIsQ0FBQzthQUNqQztpQkFDSSxJQUFJLENBQUMsQ0FBQyxRQUFRLEtBQUssYUFBYSxFQUFFO2dCQUNuQyx1QkFBQSxJQUFJLG1EQUFtQixJQUFJLE1BQUEsQ0FBQztnQkFDNUIsdUJBQUEsSUFBSSwwR0FBdUIsTUFBM0IsSUFBSSxDQUF5QixDQUFDO2dCQUM5QixVQUFVLENBQUMsR0FBRyxFQUFFLEdBQUcsdUJBQUEsSUFBSSxtREFBbUIsS0FBSyxNQUFBLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7YUFDN0Q7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILHVCQUFBLElBQUksc0RBQWUsQ0FBQyxJQUFJLENBQ3BCLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FDcEIsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNyQixPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDbkMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzs7SUFHRyxJQUFJO1FBQ0EsdUJBQUEsSUFBSSxtR0FBZ0IsTUFBcEIsSUFBSSxDQUFrQixDQUFDO1FBQ3ZCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDWixNQUFNLGlCQUFpQixHQUFJLElBQUksQ0FBQyxXQUFtQixDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLHNCQUFzQixDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFekksb0NBQW9DO1lBQ3BDLE1BQU0sUUFBUSxHQUFHLEdBQUcsRUFBRTtnQkFDbEIsSUFBSSx1QkFBQSxJQUFJLHVEQUFnQjtvQkFBRSxPQUFPO2dCQUNqQyxNQUFNLFNBQVMsR0FBRyxpQkFBaUIsQ0FBQyxTQUFTLENBQUM7Z0JBQzlDLE1BQU0sWUFBWSxHQUFHLGlCQUFpQixDQUFDLFlBQVksQ0FBQztnQkFDcEQsTUFBTSxZQUFZLEdBQUcsaUJBQWlCLENBQUMsWUFBWSxDQUFDO2dCQUVwRCxJQUFJLFNBQVMsR0FBRyxZQUFZLElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtvQkFDeEUsdUJBQUEsSUFBSSxzREFBZSxDQUFDLElBQUksRUFBRSxDQUFDO2lCQUM5QjtZQUNMLENBQUMsQ0FBQztZQUVGLHVCQUFBLElBQUksa0RBQWtCLFFBQVEsTUFBQSxDQUFDO1lBQy9CLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMzRCxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7S0FDWDtJQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUc7QUFDbkIsQ0FBQztJQUdHLE1BQU0saUJBQWlCLEdBQUksSUFBSSxDQUFDLFdBQW1CLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLENBQUMseUJBQXlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6SSxJQUFJLHVCQUFBLElBQUksc0RBQWUsRUFBRTtRQUNyQixpQkFBaUIsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsdUJBQUEsSUFBSSxzREFBZSxDQUFDLENBQUM7S0FDeEU7QUFDTCxDQUFDOzZIQTlEUSwrQkFBK0I7aUhBQS9CLCtCQUErQjs0RkFBL0IsK0JBQStCO2tCQUgzQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSw2QkFBNkI7aUJBQzFDOzhCQUV1QyxXQUFXO3NCQUE5QyxLQUFLO3VCQUFDLDJCQUEyQjtnQkFDekIsc0JBQXNCO3NCQUE5QixLQUFLO2dCQUNJLFFBQVE7c0JBQWpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBEaXJlY3RpdmUsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IER4RmlsZU1hbmFnZXJDb21wb25lbnQgfSBmcm9tIFwiZGV2ZXh0cmVtZS1hbmd1bGFyXCI7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICAgIHNlbGVjdG9yOiAnW25kZkZpbGVHcmlkSW5maW5pdGVTY3JvbGxdJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRmlsZUdyaWRJbmZpbml0ZVNjcm9sbERpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xyXG4gICAgQElucHV0KCduZGZGaWxlR3JpZEluZmluaXRlU2Nyb2xsJykgZmlsZU1hbmFnZXI6IER4RmlsZU1hbmFnZXJDb21wb25lbnQ7XHJcbiAgICBASW5wdXQoKSBpbmZpbml0ZVNjcm9sbERpc3RhbmNlOiBudW1iZXIgPSA1O1xyXG4gICAgQE91dHB1dCgpIHNjcm9sbGVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICAgICNzY3JvbGxTdWJqZWN0ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICAgICNzY3JvbGxIYW5kbGVyOiAoKSA9PiB2b2lkO1xyXG4gICAgI2lzTm9kZUNoYW5naW5nID0gZmFsc2U7XHJcblxyXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgICAgIHRoaXMuZmlsZU1hbmFnZXIuaW5zdGFuY2Uub24oJ2NvbnRlbnRSZWFkeScsIChlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuI2hhbmRsZVZpZXdNb2RlQ2hhbmdlZCgpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmZpbGVNYW5hZ2VyLmluc3RhbmNlLm9uKCdvcHRpb25DaGFuZ2VkJywgKGUpID0+IHtcclxuICAgICAgICAgICAgaWYgKGUuZnVsbE5hbWUgPT09ICdpdGVtVmlldy5tb2RlJykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy4jaGFuZGxlVmlld01vZGVDaGFuZ2VkKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoZS5mdWxsTmFtZSA9PT0gJ2N1cnJlbnRQYXRoJykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy4jaXNOb2RlQ2hhbmdpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy4jaGFuZGxlVmlld01vZGVDaGFuZ2VkKCk7XHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsgdGhpcy4jaXNOb2RlQ2hhbmdpbmcgPSBmYWxzZTsgfSwgMTAwMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy4jc2Nyb2xsU3ViamVjdC5waXBlKFxyXG4gICAgICAgICAgICBkZWJvdW5jZVRpbWUoNTAwKVxyXG4gICAgICAgICkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zY3JvbGxlZC5lbWl0KCk7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdzY3JvbGwgdHJpZ2VyZWQnKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAjaGFuZGxlVmlld01vZGVDaGFuZ2VkKCkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHRoaXMuI3JlbW92ZUxpc3RlbmVyKCk7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgc2Nyb2xsYWJsZUVsZW1lbnQgPSAodGhpcy5maWxlTWFuYWdlciBhcyBhbnkpLmluc3RhbmNlLl9pdGVtVmlldy5fJGVsZW1lbnRbMF0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZHgtc2Nyb2xsYWJsZS1jb250YWluZXInKVswXTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBEZWZpbmUgdGhlIGV2ZW50IGhhbmRsZXIgZnVuY3Rpb25cclxuICAgICAgICAgICAgICAgIGNvbnN0IG9uU2Nyb2xsID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLiNpc05vZGVDaGFuZ2luZykgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNjcm9sbFRvcCA9IHNjcm9sbGFibGVFbGVtZW50LnNjcm9sbFRvcDtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzY3JvbGxIZWlnaHQgPSBzY3JvbGxhYmxlRWxlbWVudC5zY3JvbGxIZWlnaHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2xpZW50SGVpZ2h0ID0gc2Nyb2xsYWJsZUVsZW1lbnQuY2xpZW50SGVpZ2h0O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoc2Nyb2xsVG9wICsgY2xpZW50SGVpZ2h0ID49IHNjcm9sbEhlaWdodCAtIHRoaXMuaW5maW5pdGVTY3JvbGxEaXN0YW5jZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiNzY3JvbGxTdWJqZWN0Lm5leHQoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuI3Njcm9sbEhhbmRsZXIgPSBvblNjcm9sbDtcclxuICAgICAgICAgICAgICAgIHNjcm9sbGFibGVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIG9uU2Nyb2xsKTtcclxuICAgICAgICAgICAgfSwgMTAwKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7IH1cclxuICAgIH1cclxuXHJcbiAgICAjcmVtb3ZlTGlzdGVuZXIoKSB7XHJcbiAgICAgICAgY29uc3Qgc2Nyb2xsYWJsZUVsZW1lbnQgPSAodGhpcy5maWxlTWFuYWdlciBhcyBhbnkpLmluc3RhbmNlLl9pdGVtVmlldy5fJGVsZW1lbnRbMF0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZHgtc2Nyb2xsYWJsZS1jb250YWluZXInKVswXTtcclxuICAgICAgICBpZiAodGhpcy4jc2Nyb2xsSGFuZGxlcikge1xyXG4gICAgICAgICAgICBzY3JvbGxhYmxlRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLiNzY3JvbGxIYW5kbGVyKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19
|