@sunbird-cb/toc 0.0.31 → 0.0.32-player
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/_collection/_common/content-toc/content-toc.component.mjs +5 -2
- package/esm2022/lib/app-toc-lib.module.mjs +7 -3
- package/esm2022/lib/components/app-toc-cios-home/app-toc-cios-home.component.mjs +37 -8
- package/esm2022/lib/services/app-toc.service.mjs +3 -3
- package/fesm2022/sunbird-cb-toc.mjs +46 -12
- package/fesm2022/sunbird-cb-toc.mjs.map +1 -1
- package/index.d.ts +0 -1
- package/lib/_collection/_common/ai-tutor/ai-tutor.component.d.ts +0 -1
- package/lib/_collection/_common/ai-tutor/socket.service.d.ts +0 -1
- package/lib/_collection/_common/attendance-card/attendance-card.component.d.ts +0 -1
- package/lib/_collection/_common/attendance-card/attendance-card.module.d.ts +0 -1
- package/lib/_collection/_common/attendance-helper/attendance-helper.component.d.ts +0 -1
- package/lib/_collection/_common/attendance-helper/attendance-helper.module.d.ts +0 -1
- package/lib/_collection/_common/avatar-photo/avatar-photo.component.d.ts +0 -1
- package/lib/_collection/_common/avatar-photo/avatar-photo.module.d.ts +0 -1
- package/lib/_collection/_common/card-competency/card-competency.component.d.ts +0 -1
- package/lib/_collection/_common/card-competency/card-competency.module.d.ts +0 -1
- package/lib/_collection/_common/card-content-v2/card-content-v2.model.d.ts +0 -1
- package/lib/_collection/_common/certificate-dialog/certificate-dialog.component.d.ts +0 -1
- package/lib/_collection/_common/certificate-dialog/certificate-dialog.module.d.ts +0 -1
- package/lib/_collection/_common/certificate-dialog/svg-to-pdf.component.d.ts +0 -1
- package/lib/_collection/_common/confirm-dialog/confirm-dialog.component.d.ts +0 -1
- package/lib/_collection/_common/confirm-dialog/confirm-dialog.module.d.ts +0 -1
- package/lib/_collection/_common/connection-hover-card/connection-hover-card.component.d.ts +0 -1
- package/lib/_collection/_common/connection-hover-card/connection-hover.module.d.ts +0 -1
- package/lib/_collection/_common/connection-hover-card/connection-hover.servive.d.ts +0 -1
- package/lib/_collection/_common/connection-name/connection-name.component.d.ts +0 -1
- package/lib/_collection/_common/connection-name/connection-name.module.d.ts +0 -1
- package/lib/_collection/_common/connection-name/profile-v2.model.d.ts +0 -1
- package/lib/_collection/_common/content-progress/content-progress.component.d.ts +0 -1
- package/lib/_collection/_common/content-progress/content-progress.module.d.ts +0 -1
- package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.component.d.ts +0 -1
- package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.module.d.ts +0 -1
- package/lib/_collection/_common/content-toc/ai-tutor-confirm-popup/ai-tutor-confirm-popup.component.d.ts +0 -1
- package/lib/_collection/_common/content-toc/app-toc-about/app-toc-about.component.d.ts +0 -1
- package/lib/_collection/_common/content-toc/app-toc-assignment-viewer/app-toc-assignment-viewer.component.d.ts +0 -1
- package/lib/_collection/_common/content-toc/app-toc-assignment-viewerV2/app-toc-assignment-viewerV2.component.d.ts +0 -1
- package/lib/_collection/_common/content-toc/app-toc-batch-assignments/app-toc-batch-assignments.component.d.ts +0 -1
- package/lib/_collection/_common/content-toc/app-toc-content/app-toc-content.component.d.ts +0 -1
- package/lib/_collection/_common/content-toc/app-toc-content-card-v2/app-toc-content-card-v2.component.d.ts +0 -1
- package/lib/_collection/_common/content-toc/app-toc-content-card-v2-skeleton/app-toc-content-card-v2-skeleton.component.d.ts +0 -1
- package/lib/_collection/_common/content-toc/app-toc-reference-notes/app-toc-reference-notes.component.d.ts +0 -1
- package/lib/_collection/_common/content-toc/app-toc-session-card-new/app-toc-session-card-new.component.d.ts +0 -1
- package/lib/_collection/_common/content-toc/app-toc-sessions-new/app-toc-sessions-new.component.d.ts +0 -1
- package/lib/_collection/_common/content-toc/app-toc-teachers-notes/app-toc-teachers-notes.component.d.ts +0 -1
- package/lib/_collection/_common/content-toc/content-services/handle-claim.service.d.ts +0 -1
- package/lib/_collection/_common/content-toc/content-services/review-component-data.service.d.ts +0 -1
- package/lib/_collection/_common/content-toc/content-toc.component.d.ts +0 -1
- package/lib/_collection/_common/content-toc/content-toc.module.d.ts +0 -1
- package/lib/_collection/_common/content-toc/karma-points/karma-points.component.d.ts +0 -1
- package/lib/_collection/_common/content-toc/karma-points/karma-points.module.d.ts +0 -1
- package/lib/_collection/_common/content-toc/pipes/replace-nbsp.pipe.d.ts +0 -1
- package/lib/_collection/_common/content-toc/pipes/truncate.pipe.d.ts +0 -1
- package/lib/_collection/_common/content-toc/reviews-content/reviews-content.component.d.ts +0 -1
- package/lib/_collection/_common/content-toc/samuhik-charcha-content/samuhik-charcha-content/samuhik-charcha-content.component.d.ts +0 -1
- package/lib/_collection/_common/display-content-type/display-content-type.component.d.ts +0 -1
- package/lib/_collection/_common/display-content-type/display-content-type.module.d.ts +0 -1
- package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.component.d.ts +0 -1
- package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.module.d.ts +0 -1
- package/lib/_collection/_common/mark-as-complete/mark-as-complete.component.d.ts +0 -1
- package/lib/_collection/_common/mark-as-complete/mark-as-complete.model.d.ts +0 -1
- package/lib/_collection/_common/mark-as-complete/mark-as-complete.module.d.ts +0 -1
- package/lib/_collection/_common/pipe-content-route/pipe-content-route.module.d.ts +0 -1
- package/lib/_collection/_common/pipe-content-route/pipe-content-route.pipe.d.ts +0 -1
- package/lib/_collection/_common/player-brief/player-brief.component.d.ts +0 -1
- package/lib/_collection/_common/player-brief/player-brief.module.d.ts +0 -1
- package/lib/_collection/_common/rating-summary/rating-summary.component.d.ts +0 -1
- package/lib/_collection/_common/rating-summary/rating-summary.module.d.ts +0 -1
- package/lib/_collection/_common/skeleton-loader/skeleton-loader.component.d.ts +0 -1
- package/lib/_collection/_common/skeleton-loader/skeleton-loader.module.d.ts +0 -1
- package/lib/_collection/_common/tips-for-learner/tips-for-learner-card/tips-for-learner-card.component.d.ts +0 -1
- package/lib/_collection/_common/tips-for-learner/tips-for-learner.module.d.ts +0 -1
- package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.component.d.ts +0 -1
- package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.module.d.ts +0 -1
- package/lib/_collection/_common/user-autocomplete/user-autocomplete.component.d.ts +0 -1
- package/lib/_collection/_common/user-autocomplete/user-autocomplete.model.d.ts +0 -1
- package/lib/_collection/_common/user-autocomplete/user-autocomplete.module.d.ts +0 -1
- package/lib/_collection/_common/user-autocomplete/user-autocomplete.service.d.ts +0 -1
- package/lib/_collection/_common/user-content-rating/user-content-rating.component.d.ts +0 -1
- package/lib/_collection/_common/user-content-rating/user-content-rating.module.d.ts +0 -1
- package/lib/_collection/_common/user-image/user-image.component.d.ts +0 -1
- package/lib/_collection/_common/user-image/user-image.module.d.ts +0 -1
- package/lib/_collection/btn-page-back/btn-page-back.component.d.ts +0 -1
- package/lib/_collection/btn-page-back/btn-page-back.module.d.ts +0 -1
- package/lib/_collection/btn-page-back/btn-page-back.service.d.ts +0 -1
- package/lib/_collection/card-rating-comment/card-rating-comment.component.d.ts +0 -1
- package/lib/_collection/card-rating-comment/card-rating-comment.module.d.ts +0 -1
- package/lib/_collection/sliders-dynamic/sliders-dynamic.component.d.ts +0 -1
- package/lib/_collection/sliders-dynamic/sliders-dynamic.model.d.ts +0 -1
- package/lib/_collection/sliders-dynamic/sliders-dynamic.module.d.ts +0 -1
- package/lib/_collection-api.d.ts +0 -1
- package/lib/_constants/widget-content.constants.d.ts +0 -1
- package/lib/_directives/tooltip.directive.d.ts +0 -1
- package/lib/_models/common.model.d.ts +0 -1
- package/lib/_models/error.model.d.ts +0 -1
- package/lib/_pipes/highlight.pipe.d.ts +0 -1
- package/lib/_services/rating.service.d.ts +0 -1
- package/lib/_services/samuhik-charcha.service.d.ts +0 -1
- package/lib/_services/viewer-route-util.d.ts +0 -1
- package/lib/_services/widget-content.model.d.ts +0 -1
- package/lib/_services/widget-content.service.d.ts +0 -1
- package/lib/_shared/translate-loader.factory.d.ts +0 -1
- package/lib/app-toc-lib.module.d.ts +2 -2
- package/lib/collection.config.d.ts +0 -1
- package/lib/components/app-toc-analytics-tiles/app-toc-analytics-tiles.component.d.ts +0 -1
- package/lib/components/app-toc-banner/app-toc-banner.component.d.ts +0 -1
- package/lib/components/app-toc-cios-home/app-toc-cios-home.component.d.ts +3 -1
- package/lib/components/app-toc-cios-home/consent-dialog.component.d.ts +0 -1
- package/lib/components/app-toc-cohorts/app-toc-cohorts.component.d.ts +0 -1
- package/lib/components/app-toc-content-card/app-toc-content-card.component.d.ts +0 -1
- package/lib/components/app-toc-dialog-intro-video/app-toc-dialog-intro-video.component.d.ts +0 -1
- package/lib/components/app-toc-discussion/app-toc-discussion.component.d.ts +0 -1
- package/lib/components/app-toc-home/app-toc-home.component.d.ts +0 -1
- package/lib/components/app-toc-home-v2/app-toc-home-v2.component.d.ts +0 -1
- package/lib/components/app-toc-overview/app-toc-overview.component.d.ts +0 -1
- package/lib/components/app-toc-session-card/app-toc-session-card.component.d.ts +0 -1
- package/lib/components/app-toc-sessions/app-toc-sessions.component.d.ts +0 -1
- package/lib/components/app-toc-single-page/app-toc-single-page.component.d.ts +0 -1
- package/lib/components/completion-survey-form/completion-survey-form.component.d.ts +0 -1
- package/lib/components/create-batch-dialog/create-batch-dialog.component.d.ts +0 -1
- package/lib/components/enroll-language-dialogue/enroll-language-dialogue.component.d.ts +0 -1
- package/lib/components/enroll-profile-form/enroll-profile-form.component.d.ts +0 -1
- package/lib/components/enroll-questionnaire/enroll-questionnaire.component.d.ts +0 -1
- package/lib/components/knowledge-artifact-details/knowledge-artifact-details.component.d.ts +0 -1
- package/lib/components/non-relevent-feedback-dialog/non-relevent-feedback-dialog.component.d.ts +0 -1
- package/lib/components/public-survey-form/public-survey-form.component.d.ts +0 -1
- package/lib/components/survey-form-question/survey-form-question.component.d.ts +0 -1
- package/lib/components/survey-form-section/survey-form-section.component.d.ts +0 -1
- package/lib/models/app-toc-analytics.model.d.ts +0 -1
- package/lib/models/app-toc.model.d.ts +0 -1
- package/lib/models/auto-complete.model.d.ts +0 -1
- package/lib/models/card-content.model.d.ts +0 -1
- package/lib/models/content-strip-with-tabs.model.d.ts +0 -1
- package/lib/models/discussion-forum.model.d.ts +0 -1
- package/lib/models/goal.model.d.ts +0 -1
- package/lib/models/meta-tag.model.d.ts +0 -1
- package/lib/models/playlist.model.d.ts +0 -1
- package/lib/models/profile-revamp.model.d.ts +0 -1
- package/lib/models/rating.model.d.ts +0 -1
- package/lib/models/user-profile.model.d.ts +0 -1
- package/lib/registration-toc-lib.config.d.ts +0 -1
- package/lib/resolvers/app-toc-cios-resolver.service.d.ts +0 -1
- package/lib/resolvers/app-toc-cios-user-enroll-resolver.service.d.ts +0 -1
- package/lib/resolvers/app-toc-content-read-resolver.service.d.ts +0 -1
- package/lib/resolvers/app-toc-ext-public-resolver.service.d.ts +0 -1
- package/lib/resolvers/app-toc-resolver.service.d.ts +0 -1
- package/lib/resolvers/config-resolver.service.d.ts +0 -1
- package/lib/resolvers/profile-resolver.service.d.ts +0 -1
- package/lib/resolvers/restricted-features-resolver.service.d.ts +0 -1
- package/lib/routes/app-toc-home/app-toc-home.component.d.ts +0 -1
- package/lib/routes/app-toc-home/app-toc-home.directive.d.ts +0 -1
- package/lib/routes/app-toc-home/app-toc-home.service.d.ts +0 -1
- package/lib/services/access-control.service.d.ts +0 -1
- package/lib/services/action.service.d.ts +0 -1
- package/lib/services/app-toc-v2.service.d.ts +0 -1
- package/lib/services/app-toc.service.d.ts +2 -3
- package/lib/services/certificate.service.d.ts +0 -1
- package/lib/services/discuss-utils.service.d.ts +0 -1
- package/lib/services/editor.service.d.ts +0 -1
- package/lib/services/load-check.service.d.ts +0 -1
- package/lib/services/loader.service.d.ts +0 -1
- package/lib/services/mobile-apps.service.d.ts +0 -1
- package/lib/services/netcore.service.d.ts +0 -1
- package/lib/services/nps-grid.service.d.ts +0 -1
- package/lib/services/otp.service.d.ts +0 -1
- package/lib/services/profile-v2.service.d.ts +0 -1
- package/lib/services/reset-ratings.service.d.ts +0 -1
- package/lib/services/resource-download-helper.service.d.ts +0 -1
- package/lib/services/root.service.d.ts +0 -1
- package/lib/services/timer.service.d.ts +0 -1
- package/lib/services/title-tag.service.d.ts +0 -1
- package/lib/services/user-profile.service.d.ts +0 -1
- package/lib/services/viewer-data.service.d.ts +0 -1
- package/lib/services/viewer-util.service.d.ts +0 -1
- package/lib/share-toc/share-toc/share-toc.component.d.ts +0 -1
- package/lib/share-toc/share-toc.module.d.ts +0 -1
- package/package.json +1 -1
- package/public-api.d.ts +0 -1
- package/sunbird-cb-toc-0.0.32-player.tgz +0 -0
- package/lib/_collection/_common/ai-tutor/ai-tutor.component.d.ts.map +0 -1
- package/lib/_collection/_common/ai-tutor/socket.service.d.ts.map +0 -1
- package/lib/_collection/_common/attendance-card/attendance-card.component.d.ts.map +0 -1
- package/lib/_collection/_common/attendance-card/attendance-card.module.d.ts.map +0 -1
- package/lib/_collection/_common/attendance-helper/attendance-helper.component.d.ts.map +0 -1
- package/lib/_collection/_common/attendance-helper/attendance-helper.module.d.ts.map +0 -1
- package/lib/_collection/_common/avatar-photo/avatar-photo.component.d.ts.map +0 -1
- package/lib/_collection/_common/avatar-photo/avatar-photo.module.d.ts.map +0 -1
- package/lib/_collection/_common/card-competency/card-competency.component.d.ts.map +0 -1
- package/lib/_collection/_common/card-competency/card-competency.module.d.ts.map +0 -1
- package/lib/_collection/_common/card-content-v2/card-content-v2.model.d.ts.map +0 -1
- package/lib/_collection/_common/certificate-dialog/certificate-dialog.component.d.ts.map +0 -1
- package/lib/_collection/_common/certificate-dialog/certificate-dialog.module.d.ts.map +0 -1
- package/lib/_collection/_common/certificate-dialog/svg-to-pdf.component.d.ts.map +0 -1
- package/lib/_collection/_common/confirm-dialog/confirm-dialog.component.d.ts.map +0 -1
- package/lib/_collection/_common/confirm-dialog/confirm-dialog.module.d.ts.map +0 -1
- package/lib/_collection/_common/connection-hover-card/connection-hover-card.component.d.ts.map +0 -1
- package/lib/_collection/_common/connection-hover-card/connection-hover.module.d.ts.map +0 -1
- package/lib/_collection/_common/connection-hover-card/connection-hover.servive.d.ts.map +0 -1
- package/lib/_collection/_common/connection-name/connection-name.component.d.ts.map +0 -1
- package/lib/_collection/_common/connection-name/connection-name.module.d.ts.map +0 -1
- package/lib/_collection/_common/connection-name/profile-v2.model.d.ts.map +0 -1
- package/lib/_collection/_common/content-progress/content-progress.component.d.ts.map +0 -1
- package/lib/_collection/_common/content-progress/content-progress.module.d.ts.map +0 -1
- package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.component.d.ts.map +0 -1
- package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.module.d.ts.map +0 -1
- package/lib/_collection/_common/content-toc/ai-tutor-confirm-popup/ai-tutor-confirm-popup.component.d.ts.map +0 -1
- package/lib/_collection/_common/content-toc/app-toc-about/app-toc-about.component.d.ts.map +0 -1
- package/lib/_collection/_common/content-toc/app-toc-assignment-viewer/app-toc-assignment-viewer.component.d.ts.map +0 -1
- package/lib/_collection/_common/content-toc/app-toc-assignment-viewerV2/app-toc-assignment-viewerV2.component.d.ts.map +0 -1
- package/lib/_collection/_common/content-toc/app-toc-batch-assignments/app-toc-batch-assignments.component.d.ts.map +0 -1
- package/lib/_collection/_common/content-toc/app-toc-content/app-toc-content.component.d.ts.map +0 -1
- package/lib/_collection/_common/content-toc/app-toc-content-card-v2/app-toc-content-card-v2.component.d.ts.map +0 -1
- package/lib/_collection/_common/content-toc/app-toc-content-card-v2-skeleton/app-toc-content-card-v2-skeleton.component.d.ts.map +0 -1
- package/lib/_collection/_common/content-toc/app-toc-reference-notes/app-toc-reference-notes.component.d.ts.map +0 -1
- package/lib/_collection/_common/content-toc/app-toc-session-card-new/app-toc-session-card-new.component.d.ts.map +0 -1
- package/lib/_collection/_common/content-toc/app-toc-sessions-new/app-toc-sessions-new.component.d.ts.map +0 -1
- package/lib/_collection/_common/content-toc/app-toc-teachers-notes/app-toc-teachers-notes.component.d.ts.map +0 -1
- package/lib/_collection/_common/content-toc/content-services/handle-claim.service.d.ts.map +0 -1
- package/lib/_collection/_common/content-toc/content-services/review-component-data.service.d.ts.map +0 -1
- package/lib/_collection/_common/content-toc/content-toc.component.d.ts.map +0 -1
- package/lib/_collection/_common/content-toc/content-toc.module.d.ts.map +0 -1
- package/lib/_collection/_common/content-toc/karma-points/karma-points.component.d.ts.map +0 -1
- package/lib/_collection/_common/content-toc/karma-points/karma-points.module.d.ts.map +0 -1
- package/lib/_collection/_common/content-toc/pipes/replace-nbsp.pipe.d.ts.map +0 -1
- package/lib/_collection/_common/content-toc/pipes/truncate.pipe.d.ts.map +0 -1
- package/lib/_collection/_common/content-toc/reviews-content/reviews-content.component.d.ts.map +0 -1
- package/lib/_collection/_common/content-toc/samuhik-charcha-content/samuhik-charcha-content/samuhik-charcha-content.component.d.ts.map +0 -1
- package/lib/_collection/_common/display-content-type/display-content-type.component.d.ts.map +0 -1
- package/lib/_collection/_common/display-content-type/display-content-type.module.d.ts.map +0 -1
- package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.component.d.ts.map +0 -1
- package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.module.d.ts.map +0 -1
- package/lib/_collection/_common/mark-as-complete/mark-as-complete.component.d.ts.map +0 -1
- package/lib/_collection/_common/mark-as-complete/mark-as-complete.model.d.ts.map +0 -1
- package/lib/_collection/_common/mark-as-complete/mark-as-complete.module.d.ts.map +0 -1
- package/lib/_collection/_common/pipe-content-route/pipe-content-route.module.d.ts.map +0 -1
- package/lib/_collection/_common/pipe-content-route/pipe-content-route.pipe.d.ts.map +0 -1
- package/lib/_collection/_common/player-brief/player-brief.component.d.ts.map +0 -1
- package/lib/_collection/_common/player-brief/player-brief.module.d.ts.map +0 -1
- package/lib/_collection/_common/rating-summary/rating-summary.component.d.ts.map +0 -1
- package/lib/_collection/_common/rating-summary/rating-summary.module.d.ts.map +0 -1
- package/lib/_collection/_common/skeleton-loader/skeleton-loader.component.d.ts.map +0 -1
- package/lib/_collection/_common/skeleton-loader/skeleton-loader.module.d.ts.map +0 -1
- package/lib/_collection/_common/tips-for-learner/tips-for-learner-card/tips-for-learner-card.component.d.ts.map +0 -1
- package/lib/_collection/_common/tips-for-learner/tips-for-learner.module.d.ts.map +0 -1
- package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.component.d.ts.map +0 -1
- package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.module.d.ts.map +0 -1
- package/lib/_collection/_common/user-autocomplete/user-autocomplete.component.d.ts.map +0 -1
- package/lib/_collection/_common/user-autocomplete/user-autocomplete.model.d.ts.map +0 -1
- package/lib/_collection/_common/user-autocomplete/user-autocomplete.module.d.ts.map +0 -1
- package/lib/_collection/_common/user-autocomplete/user-autocomplete.service.d.ts.map +0 -1
- package/lib/_collection/_common/user-content-rating/user-content-rating.component.d.ts.map +0 -1
- package/lib/_collection/_common/user-content-rating/user-content-rating.module.d.ts.map +0 -1
- package/lib/_collection/_common/user-image/user-image.component.d.ts.map +0 -1
- package/lib/_collection/_common/user-image/user-image.module.d.ts.map +0 -1
- package/lib/_collection/btn-page-back/btn-page-back.component.d.ts.map +0 -1
- package/lib/_collection/btn-page-back/btn-page-back.module.d.ts.map +0 -1
- package/lib/_collection/btn-page-back/btn-page-back.service.d.ts.map +0 -1
- package/lib/_collection/card-rating-comment/card-rating-comment.component.d.ts.map +0 -1
- package/lib/_collection/card-rating-comment/card-rating-comment.module.d.ts.map +0 -1
- package/lib/_collection/sliders-dynamic/sliders-dynamic.component.d.ts.map +0 -1
- package/lib/_collection/sliders-dynamic/sliders-dynamic.model.d.ts.map +0 -1
- package/lib/_collection/sliders-dynamic/sliders-dynamic.module.d.ts.map +0 -1
- package/lib/_collection-api.d.ts.map +0 -1
- package/lib/_constants/widget-content.constants.d.ts.map +0 -1
- package/lib/_directives/tooltip.directive.d.ts.map +0 -1
- package/lib/_models/common.model.d.ts.map +0 -1
- package/lib/_models/error.model.d.ts.map +0 -1
- package/lib/_pipes/highlight.pipe.d.ts.map +0 -1
- package/lib/_services/rating.service.d.ts.map +0 -1
- package/lib/_services/samuhik-charcha.service.d.ts.map +0 -1
- package/lib/_services/viewer-route-util.d.ts.map +0 -1
- package/lib/_services/widget-content.model.d.ts.map +0 -1
- package/lib/_services/widget-content.service.d.ts.map +0 -1
- package/lib/_shared/translate-loader.factory.d.ts.map +0 -1
- package/lib/app-toc-lib.module.d.ts.map +0 -1
- package/lib/collection.config.d.ts.map +0 -1
- package/lib/components/app-toc-analytics-tiles/app-toc-analytics-tiles.component.d.ts.map +0 -1
- package/lib/components/app-toc-banner/app-toc-banner.component.d.ts.map +0 -1
- package/lib/components/app-toc-cios-home/app-toc-cios-home.component.d.ts.map +0 -1
- package/lib/components/app-toc-cios-home/consent-dialog.component.d.ts.map +0 -1
- package/lib/components/app-toc-cohorts/app-toc-cohorts.component.d.ts.map +0 -1
- package/lib/components/app-toc-content-card/app-toc-content-card.component.d.ts.map +0 -1
- package/lib/components/app-toc-dialog-intro-video/app-toc-dialog-intro-video.component.d.ts.map +0 -1
- package/lib/components/app-toc-discussion/app-toc-discussion.component.d.ts.map +0 -1
- package/lib/components/app-toc-home/app-toc-home.component.d.ts.map +0 -1
- package/lib/components/app-toc-home-v2/app-toc-home-v2.component.d.ts.map +0 -1
- package/lib/components/app-toc-overview/app-toc-overview.component.d.ts.map +0 -1
- package/lib/components/app-toc-session-card/app-toc-session-card.component.d.ts.map +0 -1
- package/lib/components/app-toc-sessions/app-toc-sessions.component.d.ts.map +0 -1
- package/lib/components/app-toc-single-page/app-toc-single-page.component.d.ts.map +0 -1
- package/lib/components/completion-survey-form/completion-survey-form.component.d.ts.map +0 -1
- package/lib/components/create-batch-dialog/create-batch-dialog.component.d.ts.map +0 -1
- package/lib/components/enroll-language-dialogue/enroll-language-dialogue.component.d.ts.map +0 -1
- package/lib/components/enroll-profile-form/enroll-profile-form.component.d.ts.map +0 -1
- package/lib/components/enroll-questionnaire/enroll-questionnaire.component.d.ts.map +0 -1
- package/lib/components/knowledge-artifact-details/knowledge-artifact-details.component.d.ts.map +0 -1
- package/lib/components/non-relevent-feedback-dialog/non-relevent-feedback-dialog.component.d.ts.map +0 -1
- package/lib/components/public-survey-form/public-survey-form.component.d.ts.map +0 -1
- package/lib/components/survey-form-question/survey-form-question.component.d.ts.map +0 -1
- package/lib/components/survey-form-section/survey-form-section.component.d.ts.map +0 -1
- package/lib/models/app-toc-analytics.model.d.ts.map +0 -1
- package/lib/models/app-toc.model.d.ts.map +0 -1
- package/lib/models/auto-complete.model.d.ts.map +0 -1
- package/lib/models/card-content.model.d.ts.map +0 -1
- package/lib/models/content-strip-with-tabs.model.d.ts.map +0 -1
- package/lib/models/discussion-forum.model.d.ts.map +0 -1
- package/lib/models/goal.model.d.ts.map +0 -1
- package/lib/models/meta-tag.model.d.ts.map +0 -1
- package/lib/models/playlist.model.d.ts.map +0 -1
- package/lib/models/profile-revamp.model.d.ts.map +0 -1
- package/lib/models/rating.model.d.ts.map +0 -1
- package/lib/models/user-profile.model.d.ts.map +0 -1
- package/lib/registration-toc-lib.config.d.ts.map +0 -1
- package/lib/resolvers/app-toc-cios-resolver.service.d.ts.map +0 -1
- package/lib/resolvers/app-toc-cios-user-enroll-resolver.service.d.ts.map +0 -1
- package/lib/resolvers/app-toc-content-read-resolver.service.d.ts.map +0 -1
- package/lib/resolvers/app-toc-ext-public-resolver.service.d.ts.map +0 -1
- package/lib/resolvers/app-toc-resolver.service.d.ts.map +0 -1
- package/lib/resolvers/config-resolver.service.d.ts.map +0 -1
- package/lib/resolvers/profile-resolver.service.d.ts.map +0 -1
- package/lib/resolvers/restricted-features-resolver.service.d.ts.map +0 -1
- package/lib/routes/app-toc-home/app-toc-home.component.d.ts.map +0 -1
- package/lib/routes/app-toc-home/app-toc-home.directive.d.ts.map +0 -1
- package/lib/routes/app-toc-home/app-toc-home.service.d.ts.map +0 -1
- package/lib/services/access-control.service.d.ts.map +0 -1
- package/lib/services/action.service.d.ts.map +0 -1
- package/lib/services/app-toc-v2.service.d.ts.map +0 -1
- package/lib/services/app-toc.service.d.ts.map +0 -1
- package/lib/services/certificate.service.d.ts.map +0 -1
- package/lib/services/discuss-utils.service.d.ts.map +0 -1
- package/lib/services/editor.service.d.ts.map +0 -1
- package/lib/services/load-check.service.d.ts.map +0 -1
- package/lib/services/loader.service.d.ts.map +0 -1
- package/lib/services/mobile-apps.service.d.ts.map +0 -1
- package/lib/services/netcore.service.d.ts.map +0 -1
- package/lib/services/nps-grid.service.d.ts.map +0 -1
- package/lib/services/otp.service.d.ts.map +0 -1
- package/lib/services/profile-v2.service.d.ts.map +0 -1
- package/lib/services/reset-ratings.service.d.ts.map +0 -1
- package/lib/services/resource-download-helper.service.d.ts.map +0 -1
- package/lib/services/root.service.d.ts.map +0 -1
- package/lib/services/timer.service.d.ts.map +0 -1
- package/lib/services/title-tag.service.d.ts.map +0 -1
- package/lib/services/user-profile.service.d.ts.map +0 -1
- package/lib/services/viewer-data.service.d.ts.map +0 -1
- package/lib/services/viewer-util.service.d.ts.map +0 -1
- package/lib/share-toc/share-toc/share-toc.component.d.ts.map +0 -1
- package/lib/share-toc/share-toc.module.d.ts.map +0 -1
- package/public-api.d.ts.map +0 -1
- package/sunbird-cb-toc.d.ts.map +0 -1
|
@@ -225,7 +225,10 @@ export class ContentTocComponent {
|
|
|
225
225
|
}
|
|
226
226
|
if (changes && changes['playResourceId']) {
|
|
227
227
|
if (changes?.playResourceId?.previousValue !== changes?.playResourceId?.currentValue) {
|
|
228
|
-
if (this.viewerPage && this.
|
|
228
|
+
if (this.viewerPage && this.enableTranscriptionFlag) {
|
|
229
|
+
this.resourceIdentifier = this.playResourceId || this.viewerDataSvc?.resourceId;
|
|
230
|
+
this.subTitles = [];
|
|
231
|
+
this.vttLangArr = [];
|
|
229
232
|
this.parseVTT();
|
|
230
233
|
}
|
|
231
234
|
}
|
|
@@ -826,4 +829,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
826
829
|
type: HostListener,
|
|
827
830
|
args: ['window:scroll', ['$event']]
|
|
828
831
|
}] } });
|
|
829
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC10b2MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL19jb2xsZWN0aW9uL19jb21tb24vY29udGVudC10b2MvY29udGVudC10b2MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL19jb2xsZWN0aW9uL19jb21tb24vY29udGVudC10b2MvY29udGVudC10b2MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQTRCLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFakwsT0FBTyxFQUF1RCxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQU1wRyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQTtBQUN4RyxPQUFPLEVBQWdDLHFCQUFxQixJQUFJLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFBO0FBQ3hILE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFBO0FBRzNFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFcEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBRS9DLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFBO0FBQzNCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU9wRCxNQUFNLE9BQU8sbUJBQW1CO0lBcUU5QixZQUNVLEtB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SztnQkFDSSxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csMEJBQTBCO3NCQUFuQyxNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBbVZQLFlBQVk7c0JBRFgsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbmplY3QsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBRdWVyeUxpc3QsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCwgVmlld0NoaWxkcmVuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInXG5pbXBvcnQgeyBDb25maWd1cmF0aW9uc1NlcnZpY2UsIEV2ZW50U2VydmljZSwgVXRpbGl0eVNlcnZpY2UsIFdzRXZlbnRzIH0gZnJvbSAnQHN1bmJpcmQtY2IvdXRpbHMtdjInXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJ1xuXG5pbXBvcnQgeyBMb2FkQ2hlY2tTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbG9hZC1jaGVjay5zZXJ2aWNlJ1xuaW1wb3J0IHsgTWF0TGVnYWN5VGFiR3JvdXAgYXMgTWF0VGFiR3JvdXAsIE1hdExlZ2FjeVRhYkNoYW5nZUV2ZW50IGFzIE1hdFRhYkNoYW5nZUV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LXRhYnMnXG5pbXBvcnQgeyBOc0Rpc2N1c3Npb25WMiB9IGZyb20gJ0BzdW5iaXJkLWNiL2Rpc2N1c3Npb24tdjInXG5pbXBvcnQgeyBBaVR1dG9yQ29uZmlybVBvcHVwQ29tcG9uZW50IH0gZnJvbSAnLi9haS10dXRvci1jb25maXJtLXBvcHVwL2FpLXR1dG9yLWNvbmZpcm0tcG9wdXAuY29tcG9uZW50J1xuaW1wb3J0IHsgTWF0TGVnYWN5RGlhbG9nIGFzIE1hdERpYWxvZywgTWF0TGVnYWN5RGlhbG9nQ29uZmlnIGFzIE1hdERpYWxvZ0NvbmZpZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xlZ2FjeS1kaWFsb2cnXG5pbXBvcnQgeyB2aWV3ZXJSb3V0ZUdlbmVyYXRvciB9IGZyb20gJy4uLy4uLy4uL19zZXJ2aWNlcy92aWV3ZXItcm91dGUtdXRpbCdcbmltcG9ydCB7IEFwcFRvY1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hcHAtdG9jLnNlcnZpY2UnXG5pbXBvcnQgeyBBY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYWN0aW9uLnNlcnZpY2UnXG5pbXBvcnQgeyBWdHRGaWxlIH0gZnJvbSAnQHBvbHlmbGl4L3Z0dC1wYXJzZXInXG5pbXBvcnQgeyB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcbmltcG9ydCB7IFZpZXdlckRhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdmlld2VyLWRhdGEuc2VydmljZSdcbmltcG9ydCB7IE1hdFRhYiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYnMnXG5pbXBvcnQgeyBTYW11aGlrQ2hhcmNoYVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fc2VydmljZXMvc2FtdWhpay1jaGFyY2hhLnNlcnZpY2UnXG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCdcbmltcG9ydCB7IE5zQ29udGVudCB9IGZyb20gJy4uLy4uLy4uL19jb2xsZWN0aW9uLWFwaSdcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3dzLXdpZGdldC1jb250ZW50LXRvYycsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb250ZW50LXRvYy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvbnRlbnQtdG9jLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuXG5leHBvcnQgY2xhc3MgQ29udGVudFRvY0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzIHtcblxuICB0YWJDaGFuZ2VWYWx1ZTogYW55ID0gJydcbiAgQElucHV0KCkgY29udGVudCE6IGFueVxuICBASW5wdXQoKSBjb250ZW50UmVhZERhdGEhOiBhbnlcbiAgQElucHV0KCkgaW5pdGlhbFJvdXRlRGF0YTogYW55XG4gIEBJbnB1dCgpIGNoYW5nZVRhYiA9IGZhbHNlXG4gIEBJbnB1dCgpIGJhc2VDb250ZW50UmVhZERhdGEhOiBhbnlcbiAgcm91dGVTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsXG4gIEBJbnB1dCgpIGZvclByZXZpZXcgPSB3aW5kb3cubG9jYXRpb24uaHJlZi5pbmNsdWRlcygnL3B1YmxpYy8nKSB8fCB3aW5kb3cubG9jYXRpb24uaHJlZi5pbmNsdWRlcygnJnByZXZpZXc9dHJ1ZScpXG4gIEBJbnB1dCgpIGNvbnRlbnRUYWJGbGFnID0gdHJ1ZVxuICBASW5wdXQoKSByZXN1bWVEYXRhOiBhbnkgfCBudWxsID0gbnVsbFxuICBASW5wdXQoKSBiYXRjaERhdGE6IC8qKk5zQ29udGVudC5JQmF0Y2hMaXN0UmVzcG9uc2UgKi8gYW55IHwgbnVsbCA9IG51bGxcbiAgQElucHV0KCkgc2tlbGV0b25Mb2FkZXIgPSBmYWxzZVxuICBASW5wdXQoKSB0b2NTdHJ1Y3R1cmU6IGFueSA9IHt9XG4gIEBJbnB1dCgpIHBhdGhTZXQ6IGFueVxuICBASW5wdXQoKSBmcm9tVmlld2VyID0gZmFsc2VcbiAgQElucHV0KCkgaGllcmFyY2h5TWFwRGF0YTogYW55ID0ge31cbiAgQFZpZXdDaGlsZCgnc3RpY2t5TWVudScpIHRhYkVsZW1lbnQhOiBNYXRUYWJHcm91cFxuICBAVmlld0NoaWxkcmVuKE1hdFRhYikgdGFicyE6IFF1ZXJ5TGlzdDxNYXRUYWI+XG4gIEBJbnB1dCgpIGNvbmRpdGlvbjogYW55XG4gIEBJbnB1dCgpIGtwYXJyYXk6IGFueVxuICBASW5wdXQoKSBzZWxlY3RlZEJhdGNoRGF0YTogYW55XG4gIEBJbnB1dCgpIGNvbmZpZzogYW55XG4gIEBJbnB1dCgpIGNvbXBvbmVudE5hbWUhOiBzdHJpbmdcbiAgQElucHV0KCkgaXNFbnJvbGxlZCE6IGJvb2xlYW5cbiAgQElucHV0KCkgcGxheVJlc291cmNlSWQgPSAnJ1xuICBASW5wdXQoKSBzaWRlTmF2QmFyT3BlbmVkID0gZmFsc2VcbiAgQElucHV0KCkgbGFuZ3VhZ2VMaXN0ID0gW11cbiAgQElucHV0KCkgbG9ja0NlcnRpZmljYXRlID0gZmFsc2VcbiAgQE91dHB1dCgpIHBsYXlSZXN1bWVGb3JBSSA9IG5ldyBFdmVudEVtaXR0ZXIoKVxuICBAT3V0cHV0KCkgZW5yb2xsVXNlclRvQUkgPSBuZXcgRXZlbnRFbWl0dGVyKClcbiAgQE91dHB1dCgpIHRyaWdlckNvbXBsZXRpb25TdXJ2ZXlGb3JtID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpXG4gIEBPdXRwdXQoKSByZXN1bWVDb250ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpXG5cbiAgY29tbWVudElkPzogc3RyaW5nID0gJydcbiAgc3RpY2t5ID0gZmFsc2VcbiAgbWVudVBvc2l0aW9uOiBhbnlcbiAgaXNNb2JpbGUgPSBmYWxzZVxuICBzZWxlY3RlZFRhYkluZGV4ID0gMFxuICBkaXNjdXNzV2lkZ2V0RGF0YSE6IE5zRGlzY3Vzc2lvblYyLklDb21tZW50V2lkZ2V0RGF0YVxuICB0ZWFjaGVyTm90ZXNGbGFnID0gZmFsc2VcbiAgcmVmZXJlbmNlTm90ZXNGbGFnID0gZmFsc2VcbiAgdmlld2VyUGFnZSA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluY2x1ZGVzKCcvdmlld2VyLycpID8gdHJ1ZSA6IGZhbHNlXG4gIHJlc3VtZURhdGFMaW5rOiBhbnlcbiAgZW5hYmxlQUlUdXRvckZsYWcgPSBmYWxzZVxuICBlbmFibGVUcmFuc2NyaXB0aW9uRmxhZyA9IGZhbHNlXG4gIGNvdXJzZUNhdGVnb3J5ID0gTnNDb250ZW50LkVDb3Vyc2VDYXRlZ29yeVxuICBzdWJUaXRsZXMkOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbFxuICByZXNvdXJjZUlkZW50aWZpZXI6IGFueVxuICByZXNvdXJjZUlkZW50aWZpZXIkOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbFxuICBzdWJUaXRsZXM6IGFueSA9IFtdXG4gIGtleXdvcmRUb0hpZ2hsaWdodDogYW55ID0gJydcbiAgaGlnaGxpZ2h0Q29uZGl0aW9uID0gZmFsc2VcbiAgdnR0TGFuZ0FycjogYW55ID0gW11cbiAgdHJhbnNjcmlwdGlvbkFjdGl2ZUxhbmd1YWdlID0gJ2VuJ1xuICBkZWZhdWx0VHJhbnNjcmlwdExhbmd1YWdlID0gJ2VuJ1xuICB0cmFuc3JpcHRpb25MYW5ndWFnZVN1YjogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IG51bGxcbiAgc2VsZWN0ZWRUcmFuc2NyaXB0aW9uU3R5bGU6IGFueVxuICBmcm9tQUlUdXRvciA9IGZhbHNlXG4gIHRvdGFsUmVzb3VyY2UgPSAwXG4gIHNjb3JtQXNzZXNzbWVudENvdW50ID0gMFxuICBzaG93QUlUdXRvclBvcHVwID0gZmFsc2VcbiAgZnJvbUFJU2VsZWN0ZWRUYWJJbmRleCA9IGZhbHNlXG4gIGlzTW9iaWxlRm9yQUkgPSBmYWxzZVxuICB0cmFuc2NyaXB0QWN0aXZlTGFuZ3VhZ2VUZXh0ID0gJ0VuZ2xpc2gnXG4gIHNob3dBc3NpZ25tZW50c1RhYiA9IGZhbHNlXG4gIGVuYWJsZVNhbXVoaWtDaGFyY2hhVGFiID0gZmFsc2VcbiAgc2FtdWhpa0NvbmZpZzogYW55XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgdXRpbGl0eVNlcnZpY2U6IFV0aWxpdHlTZXJ2aWNlLFxuICAgIHByaXZhdGUgbG9hZENoZWNrU2VydmljZTogTG9hZENoZWNrU2VydmljZSxcbiAgICBwcml2YXRlIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ3VyYXRpb25zU2VydmljZSxcbiAgICBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgcHVibGljIHRvY1N2YzogQXBwVG9jU2VydmljZSxcbiAgICBwcml2YXRlIGFjdGlvblNWQzogQWN0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgZXZlbnRTdmM6IEV2ZW50U2VydmljZSxcbiAgICBwcml2YXRlIHZpZXdlckRhdGFTdmM6IFZpZXdlckRhdGFTZXJ2aWNlLFxuICAgIHByaXZhdGUgc2FtdWhpa0NoYXJjaGFTdmM6IFNhbXVoaWtDaGFyY2hhU2VydmljZSxcbiAgICBASW5qZWN0KCdlbnZpcm9ubWVudCcpIHByaXZhdGUgZW52aXJvbm1lbnQ6IGFueVxuXG4gICkgeyB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuY29uZmlnU2VydmljZS5pR09UQUlDb25maWcgJiYgdGhpcy5jb25maWdTZXJ2aWNlLmlHT1RBSUNvbmZpZz8uYWlUdXRvciAmJiB0aGlzLmNvbmZpZ1NlcnZpY2UuaUdPVEFJQ29uZmlnPy5haVR1dG9yPy5hbGwpIHtcbiAgICAgIHRoaXMuZW5hYmxlQUlUdXRvckZsYWcgPSB0aGlzLm9ubHlzY29ybUFzc2Vzc21lbnRFeGlzdHModGhpcy5yb3V0ZS5zbmFwc2hvdD8uZGF0YT8uY29udGVudD8uZGF0YT8uY2hpbGRyZW4sICdtaW1lVHlwZScsIFsnYXBwbGljYXRpb24vdm5kLmVrc3RlcC5odG1sLWFyY2hpdmUnLCAnYXBwbGljYXRpb24vdm5kLnN1bmJpcmQucXVlc3Rpb25zZXQnLCAnYXBwbGljYXRpb24vanNvbicsICd0ZXh0L3gtdXJsJ10pXG4gICAgICAvLyB0aGlzLmVuYWJsZUFJVHV0b3JGbGFnID0gdHJ1ZVxuICAgIH0gZWxzZSBpZiAodGhpcy5jb25maWdTZXJ2aWNlLmlHT1RBSUNvbmZpZyAmJiB0aGlzLmNvbmZpZ1NlcnZpY2UuaUdPVEFJQ29uZmlnPy5haVR1dG9yICYmIHRoaXMuY29uZmlnU2VydmljZS5pR09UQUlDb25maWc/LmFpVHV0b3I/LmZvck9yZyAmJiB0aGlzLmNvbmZpZ1NlcnZpY2UuaUdPVEFJQ29uZmlnLmFpVHV0b3I/LmZvck9yZz8ubGVuZ3RoICYmXG4gICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuaUdPVEFJQ29uZmlnPy5haVR1dG9yPy5mb3JPcmcuaW5jbHVkZXModGhpcy5jb25maWdTZXJ2aWNlLnVzZXJQcm9maWxlPy5yb290T3JnSWQpXG4gICAgKSB7XG4gICAgICB0aGlzLmVuYWJsZUFJVHV0b3JGbGFnID0gdGhpcy5vbmx5c2Nvcm1Bc3Nlc3NtZW50RXhpc3RzKHRoaXMucm91dGUuc25hcHNob3Q/LmRhdGE/LmNvbnRlbnQ/LmRhdGE/LmNoaWxkcmVuLCAnbWltZVR5cGUnLCBbJ2FwcGxpY2F0aW9uL3ZuZC5la3N0ZXAuaHRtbC1hcmNoaXZlJywgJ2FwcGxpY2F0aW9uL3ZuZC5zdW5iaXJkLnF1ZXN0aW9uc2V0JywgJ2FwcGxpY2F0aW9uL2pzb24nLCAndGV4dC94LXVybCddKVxuICAgICAgLy8gdGhpcy5lbmFibGVBSVR1dG9yRmxhZyA9IHRydWVcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lbmFibGVBSVR1dG9yRmxhZyA9IGZhbHNlXG4gICAgfVxuICAgICBpZih0aGlzLmNvbnRlbnQgJiYgdGhpcy5jb250ZW50LmNvdXJzZUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRUNvdXJzZUNhdGVnb3J5LkxFQVJOSU5HX1BBVEhXQVkpIHtcbiAgICAgIHRoaXMuZW5hYmxlQUlUdXRvckZsYWcgPSBmYWxzZVxuICAgIH1cbiAgICBpZiAodGhpcy5jb25maWdTZXJ2aWNlLmlHT1RBSUNvbmZpZyAmJiB0aGlzLmNvbmZpZ1NlcnZpY2UuaUdPVEFJQ29uZmlnPy50cmFuc2NyaXB0aW9uPy5hbGwpIHtcbiAgICAgIC8vIHRoaXMucmVzb3VyY2VJZGVudGlmaWVyJCA9IHRoaXMudG9jU3ZjLnRyYW5zcmlwdGlvbklkZW50aWZpZXIuc3Vic2NyaWJlKCh2YWx1ZTphbnkpPT57XG4gICAgICAvLyAgIGlmKHZhbHVlICYmICB2YWx1ZT8uaWRlbnRpZmllcikge1xuICAgICAgLy8gICAgIHRoaXMucmVzb3VyY2VJZGVudGlmaWVyID0gdmFsdWU/LmlkZW50aWZpZXIgLy92YWx1ZT8uaWRlbnRpZmllciAvLyBkb18xMTM4ODkxMTk4NDg5MDY3NTIxMTQ3XG4gICAgICAvLyAgICAgdGhpcy5wYXJzZVZUVCgpXG4gICAgICAvLyAgIH1cblxuICAgICAgLy8gfSlcblxuICAgICAgdGhpcy5zdWJUaXRsZXMkID0gdGhpcy50b2NTdmMudHJhbnNjcmlwdGlvbkRhdGEkLnN1YnNjcmliZSgodmFsdWU6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmtleXdvcmRUb0hpZ2hsaWdodCA9IHZhbHVlXG4gICAgICB9KVxuXG4gICAgICB0aGlzLnRyYW5zcmlwdGlvbkxhbmd1YWdlU3ViID0gdGhpcy50b2NTdmMudHJhbnNyaXB0aW9uQWN0aXZlTGFuZ3VhZ2VEYXRhT2JqZWN0JFxuICAgICAgICAucGlwZShcbiAgICAgICAgICB0YXAoKGxhbmd2YWx1ZTogYW55KSA9PiBjb25zb2xlLmxvZygndGFwIGxhbmd2YWx1ZTonLCBsYW5ndmFsdWUpKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKGxhbmd2YWx1ZTogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKGxhbmd2YWx1ZSkge1xuICAgICAgICAgICAgLy8gdGhpcy5yZW5kZXJTZWxlY3RlZExhbmd1YWdlVHJhbnNjcmlwdGlvbigpO1xuICAgICAgICAgIH1cblxuICAgICAgICB9KVxuICAgICAgdGhpcy5lbmFibGVUcmFuc2NyaXB0aW9uRmxhZyA9IHRydWVcbiAgICB9IGVsc2UgaWYgKHRoaXMuY29uZmlnU2VydmljZS5pR09UQUlDb25maWcgJiYgdGhpcy5jb25maWdTZXJ2aWNlLmlHT1RBSUNvbmZpZz8udHJhbnNjcmlwdGlvbiAmJiB0aGlzLmNvbmZpZ1NlcnZpY2UuaUdPVEFJQ29uZmlnPy50cmFuc2NyaXB0aW9uPy5mb3JPcmcgJiYgdGhpcy5jb25maWdTZXJ2aWNlLmlHT1RBSUNvbmZpZz8udHJhbnNjcmlwdGlvbj8uZm9yT3JnPy5sZW5ndGggJiZcbiAgICAgIHRoaXMuY29uZmlnU2VydmljZS5pR09UQUlDb25maWc/LnRyYW5zY3JpcHRpb24/LmZvck9yZz8uaW5jbHVkZXModGhpcy5jb25maWdTZXJ2aWNlLnVzZXJQcm9maWxlPy5yb290T3JnSWQpXG4gICAgKSB7XG4gICAgICAvLyB0aGlzLnJlc291cmNlSWRlbnRpZmllciQgPSB0aGlzLnRvY1N2Yy50cmFuc3JpcHRpb25JZGVudGlmaWVyLnN1YnNjcmliZSgodmFsdWU6YW55KT0+e1xuICAgICAgLy8gICBpZih2YWx1ZSAmJiAgdmFsdWU/LmlkZW50aWZpZXIpIHtcbiAgICAgIC8vICAgICB0aGlzLnJlc291cmNlSWRlbnRpZmllciA9IHZhbHVlPy5pZGVudGlmaWVyIC8vdmFsdWU/LmlkZW50aWZpZXIgLy8gZG9fMTEzODg5MTE5ODQ4OTA2NzUyMTE0N1xuICAgICAgLy8gICAgIHRoaXMucGFyc2VWVFQoKVxuICAgICAgLy8gICB9XG5cbiAgICAgIC8vIH0pXG5cbiAgICAgIHRoaXMuc3ViVGl0bGVzJCA9IHRoaXMudG9jU3ZjLnRyYW5zY3JpcHRpb25EYXRhJC5zdWJzY3JpYmUoKHZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5rZXl3b3JkVG9IaWdobGlnaHQgPSB2YWx1ZVxuICAgICAgfSlcblxuICAgICAgdGhpcy50cmFuc3JpcHRpb25MYW5ndWFnZVN1YiA9IHRoaXMudG9jU3ZjLnRyYW5zcmlwdGlvbkFjdGl2ZUxhbmd1YWdlRGF0YU9iamVjdCRcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFwKChsYW5ndmFsdWU6IGFueSkgPT4gY29uc29sZS5sb2coJ3RhcCBsYW5ndmFsdWU6JywgbGFuZ3ZhbHVlKSlcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKChsYW5ndmFsdWU6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChsYW5ndmFsdWUpIHtcbiAgICAgICAgICAgIC8vIHRoaXMucmVuZGVyU2VsZWN0ZWRMYW5ndWFnZVRyYW5zY3JpcHRpb24oKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgfSlcbiAgICAgIHRoaXMuZW5hYmxlVHJhbnNjcmlwdGlvbkZsYWcgPSB0cnVlXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZW5hYmxlVHJhbnNjcmlwdGlvbkZsYWcgPSBmYWxzZVxuICAgIH1cblxuICAgIGNvbnN0IGJhdGNoSWQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zLmJhdGNoSWQgP1xuICAgICAgdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcy5iYXRjaElkIDogJydcbiAgICBpZiAoYmF0Y2hJZCkge1xuICAgICAgdGhpcy5zZWxlY3RlZFRhYkluZGV4ID0gMVxuICAgIH1cbiAgICB0aGlzLmNvbW1lbnRJZCA9IHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMuY29tbWVudElkID8gdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcy5jb21tZW50SWQgOiAnJ1xuICAgIGlmICh0aGlzLmNvbW1lbnRJZCkge1xuICAgICAgdGhpcy5zZWxlY3RlZFRhYkluZGV4ID0gMlxuICAgIH1cblxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuaXNNb2JpbGUgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmlzTW9iaWxlXG4gICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoIDwgMTQ4MCkge1xuICAgICAgdGhpcy5pc01vYmlsZUZvckFJID0gdHJ1ZVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzTW9iaWxlRm9yQUkgPSBmYWxzZVxuICAgIH1cbiAgICB0aGlzLm1lbnVQb3NpdGlvbiA9IHRoaXMudGFiRWxlbWVudC5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldFRvcFxuXG4gICAgdGhpcy5yb3V0ZS5xdWVyeVBhcmFtTWFwLnN1YnNjcmliZShhc3luYyAocGFyYW1zOiBhbnkpID0+IHtcblxuICAgICAgbGV0IGZyb21BSVR1dG9yID0gcGFyYW1zLmdldCgnZnJvbUFJVHV0b3InKVxuXG4gICAgICBpZiAoKGZyb21BSVR1dG9yID09PSAndHJ1ZScgfHwgZnJvbUFJVHV0b3IgPT09IHRydWUpICYmIHRoaXMuaXNNb2JpbGUpIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgdGFic0FycmF5ID0gdGhpcy50YWJzPy50b0FycmF5KClcbiAgICAgICAgICBsZXQgaW5kZXggPSB0YWJzQXJyYXk/LmZpbmRJbmRleCh0YWIgPT4gdGFiLnRleHRMYWJlbC50cmltKCkgPT09IFwiQUkgVHV0b3JcIi50cmltKCkpXG4gICAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUYWJJbmRleCA9IGluZGV4XG4gICAgICAgICAgICB0aGlzLmZyb21BSVNlbGVjdGVkVGFiSW5kZXggPSB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9LCAzMDAwKVxuXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGdldCBnZXRDdXJyZW50VGltZUluVVRDKCk6IHN0cmluZyB7XG4gICAgY29uc3QgY3VycmVudERhdGUgPSBuZXcgRGF0ZSgpXG4gICAgY29uc3QgaXNvU3RyaW5nID0gY3VycmVudERhdGUudG9JU09TdHJpbmcoKVxuICAgIHJldHVybiBpc29TdHJpbmcucmVwbGFjZSgnWicsICcrMDAwMCcpXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldFNhbXVoaWtDb25maWcoKSB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuc2FtdWhpa0NvbmZpZyA9IGF3YWl0IHRoaXMuc2FtdWhpa0NoYXJjaGFTdmMuZmV0Y2hDb25maWdGaWxlKCkudG9Qcm9taXNlKClcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcblxuICAgIHRoaXMucmVzb3VyY2VJZGVudGlmaWVyID0gdGhpcy52aWV3ZXJEYXRhU3ZjLnJlc291cmNlSWRcblxuICAgIGlmICh0aGlzLmNvbmZpZ1NlcnZpY2UuaUdPVEFJQ29uZmlnICYmIHRoaXMuY29uZmlnU2VydmljZS5pR09UQUlDb25maWc/LnRyYW5zY3JpcHRpb24/LmFsbCkge1xuICAgICAgdGhpcy5lbmFibGVUcmFuc2NyaXB0aW9uRmxhZyA9IHRydWVcbiAgICB9IGVsc2UgaWYgKHRoaXMuY29uZmlnU2VydmljZS5pR09UQUlDb25maWcgJiYgdGhpcy5jb25maWdTZXJ2aWNlLmlHT1RBSUNvbmZpZz8udHJhbnNjcmlwdGlvbiAmJiB0aGlzLmNvbmZpZ1NlcnZpY2UuaUdPVEFJQ29uZmlnPy50cmFuc2NyaXB0aW9uPy5mb3JPcmcgJiYgdGhpcy5jb25maWdTZXJ2aWNlLmlHT1RBSUNvbmZpZz8udHJhbnNjcmlwdGlvbj8uZm9yT3JnPy5sZW5ndGggJiZcbiAgICAgIHRoaXMuY29uZmlnU2VydmljZS5pR09UQUlDb25maWc/LnRyYW5zY3JpcHRpb24/LmZvck9yZz8uaW5jbHVkZXModGhpcy5jb25maWdTZXJ2aWNlPy51c2VyUHJvZmlsZT8ucm9vdE9yZ0lkKVxuICAgICkge1xuICAgICAgdGhpcy5lbmFibGVUcmFuc2NyaXB0aW9uRmxhZyA9IHRydWVcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lbmFibGVUcmFuc2NyaXB0aW9uRmxhZyA9IGZhbHNlXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29uZmlnU2VydmljZS5pR09UQUlDb25maWcgJiYgdGhpcy5jb25maWdTZXJ2aWNlLmlHT1RBSUNvbmZpZz8uYWlUdXRvciAmJiB0aGlzLmNvbmZpZ1NlcnZpY2UuaUdPVEFJQ29uZmlnLmFpVHV0b3I/LmFsbCkge1xuICAgICAgdGhpcy5lbmFibGVBSVR1dG9yRmxhZyA9IHRoaXMub25seXNjb3JtQXNzZXNzbWVudEV4aXN0cyh0aGlzLmNvbnRlbnQ/LmNoaWxkcmVuLCAnbWltZVR5cGUnLCBbJ2FwcGxpY2F0aW9uL3ZuZC5la3N0ZXAuaHRtbC1hcmNoaXZlJywgJ2FwcGxpY2F0aW9uL3ZuZC5zdW5iaXJkLnF1ZXN0aW9uc2V0JywgJ2FwcGxpY2F0aW9uL2pzb24nLCAndGV4dC94LXVybCddKVxuICAgICAgLy8gdGhpcy5lbmFibGVBSVR1dG9yRmxhZyA9IHRydWVcbiAgICB9IGVsc2UgaWYgKHRoaXMuY29uZmlnU2VydmljZS5pR09UQUlDb25maWcgJiYgdGhpcy5jb25maWdTZXJ2aWNlLmlHT1RBSUNvbmZpZz8uYWlUdXRvciAmJiB0aGlzLmNvbmZpZ1NlcnZpY2UuaUdPVEFJQ29uZmlnPy5haVR1dG9yPy5mb3JPcmcgJiYgdGhpcy5jb25maWdTZXJ2aWNlLmlHT1RBSUNvbmZpZz8uYWlUdXRvcj8uZm9yT3JnPy5sZW5ndGhcbiAgICAgICYmIHRoaXMuY29uZmlnU2VydmljZS5pR09UQUlDb25maWcuYWlUdXRvcj8uZm9yT3JnPy5pbmNsdWRlcyh0aGlzLmNvbmZpZ1NlcnZpY2U/LnVzZXJQcm9maWxlPy5yb290T3JnSWQpXG4gICAgKSB7XG4gICAgICB0aGlzLmVuYWJsZUFJVHV0b3JGbGFnID0gdGhpcy5vbmx5c2Nvcm1Bc3Nlc3NtZW50RXhpc3RzKHRoaXMuY29udGVudD8uY2hpbGRyZW4sICdtaW1lVHlwZScsIFsnYXBwbGljYXRpb24vdm5kLmVrc3RlcC5odG1sLWFyY2hpdmUnLCAnYXBwbGljYXRpb24vdm5kLnN1bmJpcmQucXVlc3Rpb25zZXQnLCAnYXBwbGljYXRpb24vanNvbicsICd0ZXh0L3gtdXJsJ10pXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZW5hYmxlQUlUdXRvckZsYWcgPSBmYWxzZVxuICAgIH1cblxuICAgIGlmKHRoaXMuY29udGVudCAmJiB0aGlzLmNvbnRlbnQuY291cnNlQ2F0ZWdvcnkgPT09IE5zQ29udGVudC5FQ291cnNlQ2F0ZWdvcnkuTEVBUk5JTkdfUEFUSFdBWSkge1xuICAgICAgdGhpcy5lbmFibGVBSVR1dG9yRmxhZyA9IGZhbHNlXG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXMgJiYgY2hhbmdlc1sncGxheVJlc291cmNlSWQnXSkge1xuICAgICAgaWYgKGNoYW5nZXM/LnBsYXlSZXNvdXJjZUlkPy5wcmV2aW91c1ZhbHVlICE9PSBjaGFuZ2VzPy5wbGF5UmVzb3VyY2VJZD8uY3VycmVudFZhbHVlKSB7XG4gICAgICAgIGlmICh0aGlzLnZpZXdlclBhZ2UgJiYgdGhpcy52aWV3ZXJEYXRhU3ZjPy5yZXNvdXJjZUlkICYmIHRoaXMuZW5hYmxlVHJhbnNjcmlwdGlvbkZsYWcpIHtcbiAgICAgICAgICB0aGlzLnBhcnNlVlRUKClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoY2hhbmdlcy5jaGFuZ2VUYWIgJiYgY2hhbmdlcy5jaGFuZ2VUYWIuY3VycmVudFZhbHVlICYmICF0aGlzLmZyb21BSVNlbGVjdGVkVGFiSW5kZXgpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRUYWJJbmRleCA9IDFcbiAgICB9XG4gICAgaWYgKHRoaXMucm91dGUuc25hcHNob3QuZGF0YS5wYWdlRGF0YSAmJiB0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGEucGFnZURhdGEuZGF0YSkge1xuICAgICAgdGhpcy5jb25maWcgPSB0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGEucGFnZURhdGEuZGF0YVxuICAgIH1cbiAgICBpZiAodGhpcy5jb25maWcgJiYgdGhpcy5jb25maWcuZGlzY3Vzc1dpZGdldERhdGEpIHtcbiAgICAgIHRoaXMuZGlzY3Vzc1dpZGdldERhdGEgPSB0aGlzLmNvbmZpZy5kaXNjdXNzV2lkZ2V0RGF0YVxuICAgICAgaWYgKHRoaXMuYmFzZUNvbnRlbnRSZWFkRGF0YSAmJiB0aGlzLmJhc2VDb250ZW50UmVhZERhdGEuaWRlbnRpZmllcikge1xuICAgICAgICBpZiAoIXRoaXMuZGlzY3Vzc1dpZGdldERhdGEubmV3Q29tbWVudFNlY3Rpb24uY29tbWVudFRyZWVEYXRhLmVudGl0eUlkKSB7XG4gICAgICAgICAgdGhpcy5kaXNjdXNzV2lkZ2V0RGF0YS5uZXdDb21tZW50U2VjdGlvbi5jb21tZW50VHJlZURhdGEuZW50aXR5SWQgPSB0aGlzLmJhc2VDb250ZW50UmVhZERhdGEuaWRlbnRpZmllclxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmRpc2N1c3NXaWRnZXREYXRhLmNvbW1lbnRzTGlzdC5yZXBsaWVzU2VjdGlvbiAmJiB0aGlzLmRpc2N1c3NXaWRnZXREYXRhLmNvbW1lbnRzTGlzdC5yZXBsaWVzU2VjdGlvbi5uZXdDb21tZW50UmVwbHkpIHtcbiAgICAgICAgICB0aGlzLmRpc2N1c3NXaWRnZXREYXRhLmNvbW1lbnRzTGlzdC5yZXBsaWVzU2VjdGlvbi5uZXdDb21tZW50UmVwbHkuY29tbWVudFRyZWVEYXRhLmVudGl0eUlkID0gdGhpcy5iYXNlQ29udGVudFJlYWREYXRhLmlkZW50aWZpZXJcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5pc0Vucm9sbGVkKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbnRlbnQgJiYgdGhpcy5jb250ZW50LnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVDb3Vyc2VDYXRlZ29yeS5CTEVOREVEX1BST0dSQU0pIHtcbiAgICAgICAgICB0aGlzLnNob3dBc3NpZ25tZW50c1RhYiA9IHRydWVcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRpc2N1c3NXaWRnZXREYXRhLmVucm9sbGVkQ29udGVudCA9IHRydWVcbiAgICAgICAgdGhpcy5kaXNjdXNzV2lkZ2V0RGF0YS5uZXdDb21tZW50U2VjdGlvbi5jb21tZW50Qm94LnBsYWNlaG9sZGVyID0gJ1N0YXJ0IGEgZGlzY3Vzc2lvbidcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGlzY3Vzc1dpZGdldERhdGEuZW5yb2xsZWRDb250ZW50ID0gZmFsc2VcbiAgICAgICAgdGhpcy5kaXNjdXNzV2lkZ2V0RGF0YS5uZXdDb21tZW50U2VjdGlvbi5jb21tZW50Qm94LnBsYWNlaG9sZGVyID0gJ0Vucm9sIHRvIGFkZCB5b3VyIGNvbW1lbnRzJ1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuY29tbWVudElkKSB7XG4gICAgICAgIHRoaXMuZGlzY3Vzc1dpZGdldERhdGEubmV3Q29tbWVudFNlY3Rpb24uc2hvdyA9IGZhbHNlXG4gICAgICB9XG4gICAgICB0aGlzLmRpc2N1c3NXaWRnZXREYXRhID0geyAuLi50aGlzLmRpc2N1c3NXaWRnZXREYXRhIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb250ZW50UmVhZERhdGEgJiYgdGhpcy5jb250ZW50UmVhZERhdGE/LmV2ZW50TGlua2VkPy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IG9yZ0lkID0gXy5nZXQodGhpcy5jb25maWdTZXJ2aWNlLCAndXNlclByb2ZpbGUudXNlclJvb3RPcmcuaWQnLCAnJylcbiAgICAgIGF3YWl0IHRoaXMuZ2V0U2FtdWhpa0NvbmZpZygpXG4gICAgICBjb25zdCBldmVudHNMaW5rZWQgPSB0aGlzLmNvbnRlbnRSZWFkRGF0YS5ldmVudExpbmtlZCB8fCBbXVxuICAgICAgbGV0IGV2ZW50c0RhdGE6IGFueSA9IFtdXG4gICAgICB0aGlzLnNhbXVoaWtDb25maWc/LnN0cmlwc1swXS50YWJzLmZvckVhY2goKGVsZTogYW55KSA9PiB7XG4gICAgICAgIGVsZS5yZXF1ZXN0LnNlYXJjaFY2LnJlcXVlc3QuZmlsdGVycy5pZGVudGlmaWVyID0gZXZlbnRzTGlua2VkXG4gICAgICAgIGVsZS5yZXF1ZXN0LnNlYXJjaFY2LnJlcXVlc3QuZmlsdGVycy5jcmVhdGVkRm9yID0gW29yZ0lkXVxuICAgICAgICBpZiAoZWxlLnJlcXVlc3Quc2VhcmNoVjYucmVxdWVzdC5maWx0ZXJzLmVuZERhdGVUaW1lLmhhc093blByb3BlcnR5KCc+PScpKSB7XG4gICAgICAgICAgZWxlLnJlcXVlc3Quc2VhcmNoVjYucmVxdWVzdC5maWx0ZXJzLmVuZERhdGVUaW1lWyc+PSddID0gdGhpcy5nZXRDdXJyZW50VGltZUluVVRDXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVsZS5yZXF1ZXN0LnNlYXJjaFY2LnJlcXVlc3QuZmlsdGVycy5lbmREYXRlVGltZS5oYXNPd25Qcm9wZXJ0eSgnPCcpKSB7XG4gICAgICAgICAgZWxlLnJlcXVlc3Quc2VhcmNoVjYucmVxdWVzdC5maWx0ZXJzLmVuZERhdGVUaW1lWyc8J10gPSB0aGlzLmdldEN1cnJlbnRUaW1lSW5VVENcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNhbXVoaWtDaGFyY2hhU3ZjLmdldFNlYXJjaFY2UmVzdWx0cyhlbGUucmVxdWVzdC5zZWFyY2hWNikuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChyZXMgJiYgcmVzLnJlc3VsdCAmJiByZXMucmVzdWx0LmNvdW50ICYmIHJlcy5yZXN1bHQ/LkV2ZW50ICYmIHJlcy5yZXN1bHQuRXZlbnQ/Lmxlbmd0aCkge1xuICAgICAgICAgICAgZm9yIChsZXQgZXZlID0gMDsgZXZlIDwgcmVzLnJlc3VsdC5FdmVudD8ubGVuZ3RoOyBldmUrKykge1xuICAgICAgICAgICAgICBpZiAocmVzLnJlc3VsdC5FdmVudFtldmVdWydjcmVhdGVkRm9yJ10gJiYgcmVzLnJlc3VsdC5FdmVudFtldmVdWydjcmVhdGVkRm9yJ10ubGVuZ3RoICYmXG4gICAgICAgICAgICAgICAgcmVzLnJlc3VsdC5FdmVudFtldmVdWydyZXNvdXJjZVR5cGUnXSA9PT0gJ1NhbXVoaWsgQ2hhcmNoYSdcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGV2ZW50c0RhdGEucHVzaChyZXMucmVzdWx0LkV2ZW50W2V2ZV1bJ2NyZWF0ZWRGb3InXVswXSlcbiAgICAgICAgICAgICAgaWYgKGV2ZW50c0RhdGEuaW5jbHVkZXModGhpcy5jb25maWdTZXJ2aWNlLnVzZXJQcm9maWxlPy5yb290T3JnSWQpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbmFibGVTYW11aGlrQ2hhcmNoYVRhYiA9IHRydWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH0pXG5cbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb250ZW50UmVhZERhdGEgJiYgdGhpcy5jb250ZW50UmVhZERhdGEucmVmZXJlbmNlTm9kZXMpIHtcbiAgICAgIHRoaXMuY29udGVudFJlYWREYXRhLnJlZmVyZW5jZU5vZGVzLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICBsZXQgdXNlclJvbGVzOiBTZXQ8c3RyaW5nPiA9IHRoaXMuY29uZmlnU2VydmljZT8udXNlclJvbGVzIHx8IG5ldyBTZXQoKVxuICAgICAgICBsZXQgaGFzRWR1Y2F0b3JSb2xlID0gZmFsc2VcblxuICAgICAgICAvLyBDaGVjayBpZiB1c2VyIGhhcyBNRU5UT1Igcm9sZVxuICAgICAgICBpZiAodXNlclJvbGVzLmhhcygnTUVOVE9SJykgfHxcbiAgICAgICAgICB1c2VyUm9sZXMuaGFzKCdtZW50b3InKSB8fFxuICAgICAgICAgIHVzZXJSb2xlcy5oYXMoJ01lbnRvcicpKSB7XG4gICAgICAgICAgaGFzRWR1Y2F0b3JSb2xlID0gdHJ1ZVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ2hlY2sgbG9jYWwgc3RvcmFnZSBmb3Igc3VydmV5IHJlc3BvbnNlIG9ubHkgaWYgVVJMIGNvbnRhaW5zICdwdWJsaWMnIG9yICdwcmV2aWV3PXRydWUnXG4gICAgICAgIGlmICghaGFzRWR1Y2F0b3JSb2xlICYmIHRoaXMuZm9yUHJldmlldykge1xuICAgICAgICAgIGNvbnN0IHN1cnZleUlkID0gdGhpcy5lbnZpcm9ubWVudC5wdWJsaWNDb250ZW50U3VydmV5SWQgfHwgJydcbiAgICAgICAgICBjb25zdCBjb3Vyc2VJZCA9IHRoaXMuY29udGVudFJlYWREYXRhPy5pZGVudGlmaWVyIHx8ICcnXG4gICAgICAgICAgY29uc3Qgc3RvcmFnZUtleSA9IGBzdXJ2ZXlfJHtzdXJ2ZXlJZH1fJHtjb3Vyc2VJZH1gXG4gICAgICAgICAgY29uc3Qgc3RvcmVkRGF0YSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHN0b3JhZ2VLZXkpXG5cbiAgICAgICAgICBpZiAoc3RvcmVkRGF0YSkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgY29uc3Qgc3VydmV5UmVzcG9uc2VzID0gSlNPTi5wYXJzZShzdG9yZWREYXRhKVxuICAgICAgICAgICAgICBjb25zdCBlZHVjYXRvclF1ZXN0aW9uID0gc3VydmV5UmVzcG9uc2VzLmZpbmQoKHJlc3BvbnNlOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgcmVzcG9uc2UucXVlc3Rpb24gPT09ICdBcmUgeW91IGFuIEVkdWNhdG9yL0ZhY3VsdHkgbWVtYmVyPydcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpZiAoZWR1Y2F0b3JRdWVzdGlvbiAmJiBlZHVjYXRvclF1ZXN0aW9uLmFuc3dlciA9PT0gJ1llcycpIHtcbiAgICAgICAgICAgICAgICBoYXNFZHVjYXRvclJvbGUgPSB0cnVlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHBhcnNpbmcgc3VydmV5IGRhdGEgZnJvbSBsb2NhbCBzdG9yYWdlOicsIGVycm9yKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNldCB0ZWFjaGVyTm90ZXNGbGFnIGlmIHVzZXIgaGFzIGVkdWNhdG9yIHJvbGVcbiAgICAgICAgaWYgKGhhc0VkdWNhdG9yUm9sZSkge1xuICAgICAgICAgIGlmIChpdGVtICYmIGl0ZW0ucmVzb3VyY2VDYXRlZ29yeSAmJiBpdGVtLnJlc291cmNlQ2F0ZWdvcnkgPT09ICdUZWFjaGVycyBSZXNvdXJjZScpIHtcbiAgICAgICAgICAgIHRoaXMudGVhY2hlck5vdGVzRmxhZyA9IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXRlbSAmJiBpdGVtLnJlc291cmNlQ2F0ZWdvcnkgJiYgaXRlbS5yZXNvdXJjZUNhdGVnb3J5ID09PSAnUmVmZXJlbmNlIFJlc291cmNlJykge1xuICAgICAgICAgIHRoaXMucmVmZXJlbmNlTm90ZXNGbGFnID0gdHJ1ZVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgICBpZiAodGhpcy5zaWRlTmF2QmFyT3BlbmVkKSB7XG4gICAgICBpZiAod2luZG93LmlubmVyV2lkdGggPCAxNDgwKSB7XG4gICAgICAgIGlmICh0aGlzLmlzTW9iaWxlRm9yQUkpIHtcbiAgICAgICAgICB0aGlzLmlzTW9iaWxlRm9yQUkgPSBmYWxzZVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmlzTW9iaWxlRm9yQUkgPSBmYWxzZVxuICAgICAgfVxuXG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA8IDE0ODApIHtcbiAgICAgICAgdGhpcy5pc01vYmlsZUZvckFJID0gdHJ1ZVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5pc01vYmlsZUZvckFJID0gZmFsc2VcbiAgICAgIH1cbiAgICB9XG5cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpzY3JvbGwnLCBbJyRldmVudCddKVxuICBoYW5kbGVTY3JvbGwoKSB7XG4gICAgY29uc3Qgd2luZG93U2Nyb2xsID0gd2luZG93LnNjcm9sbFlcbiAgICBpZiAod2luZG93U2Nyb2xsID49ICh0aGlzLm1lbnVQb3NpdGlvbiAtICgodGhpcy5pc01vYmlsZSkgPyA5NiA6IDEwNCkpKSB7XG4gICAgICB0aGlzLnN0aWNreSA9IHRydWVcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdGlja3kgPSBmYWxzZVxuICAgIH1cbiAgfVxuXG4gIGhhbmRsZVRhYkNoYW5nZShldmVudDogTWF0VGFiQ2hhbmdlRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLnRhYkNoYW5nZVZhbHVlID0gZXZlbnQudGFiXG4gICAgdGhpcy5zZWxlY3RlZFRhYkluZGV4ID0gZXZlbnQuaW5kZXhcbiAgICB0aGlzLmxvYWRDaGVja1NlcnZpY2UuY29tcG9uZW50TG9hZGVkKHRydWUpXG4gICAgaWYgKGV2ZW50ICYmIGV2ZW50LnRhYi50ZXh0TGFiZWwgPT09ICdBSSBUdXRvcicpIHtcbiAgICAgIHRoaXMuc2hvd0FJVHV0b3JQb3B1cCA9IHRydWVcbiAgICB9XG4gICAgaWYgKGV2ZW50ICYmIGV2ZW50LmluZGV4ID09PSAwICYmIGV2ZW50LnRhYi50ZXh0TGFiZWwgPT09ICdUcmFuc2NyaXB0aW9uJykge1xuICAgICAgdGhpcy5yYWlzZVRyYW5zY3JpcHRpb25UYWJTdGFydFRlbGVtZXRyeSgpXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5yYWlzZVRyYW5zY3JpcHRpb25UYWJJbnRlcmFjdFRlbGVtZXRyeSgpXG4gICAgICB9LCAxMDAwKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJhaXNlVHJhbnNjcmlwdGlvblRhYlN0b3BUZWxlbWV0cnkoKVxuICAgIH1cblxuICB9XG5cbiAgc2hvd0FpVHV0b3JDb25maXJtUG9wdXAoKSB7XG4gICAgZGVidWdnZXJcbiAgICB0aGlzLnJhaXNlQUlQb3B1cFN0YXJ0VGVsZW1ldHJ5KClcbiAgICBpZiAodGhpcy5pc0Vucm9sbGVkKSB7XG4gICAgICB0aGlzLmZyb21BSVR1dG9yID0gdHJ1ZVxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMucmFpc2VBSVBvcHVwSW50ZXJhY3RUZWxlbWV0cnkoKVxuICAgICAgfSwgMTAwMClcblxuXG4gICAgICB0aGlzLmdlbmVyYXRlUmVzdW1lRGF0YUxpbmtOZXcoKVxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMucmFpc2VBSVBvcHVwRW5kVGVsZW1ldHJ5KClcbiAgICAgIH0sIDEwMDApXG4gICAgfSBlbHNlIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnJhaXNlQUlQb3B1cEludGVyYWN0VGVsZW1ldHJ5KClcbiAgICAgIH0sIDEwMDApXG4gICAgICBjb25zdCBkaWFsb2dDb25maWcgPSBuZXcgTWF0RGlhbG9nQ29uZmlnKClcblxuICAgICAgZGlhbG9nQ29uZmlnLndpZHRoID0gJzQyMXB4J1xuICAgICAgZGlhbG9nQ29uZmlnLmRhdGEgPSB7XG4gICAgICAgIGVucm9sbDogdGhpcy5pc0Vucm9sbGVkXG4gICAgICB9XG4gICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKEFpVHV0b3JDb25maXJtUG9wdXBDb21wb25lbnQsIGRpYWxvZ0NvbmZpZylcblxuICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIGlmIChyZXNwb25zZSA9PT0gJ2Vucm9sbCcpIHtcbiAgICAgICAgICB0aGlzLmZyb21BSVR1dG9yID0gdHJ1ZVxuICAgICAgICAgIHRoaXMuZ2VuZXJhdGVSZXN1bWVEYXRhTGlua05ldygpXG4gICAgICAgIH0gZWxzZSBpZiAocmVzcG9uc2UgPT09ICduZWVkVG9FbnJvbGwnKSB7XG4gICAgICAgICAgdGhpcy5lbnJvbGxVc2VyRm9yQUlUdXRvcigpXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yYWlzZUFJUG9wdXBFbmRUZWxlbWV0cnkoKVxuICAgICAgfSlcbiAgICB9XG5cbiAgfVxuXG4gIGdlbmVyYXRlUmVzdW1lRGF0YUxpbmtOZXcoKSB7XG4gICAgaWYgKHRoaXMucmVzdW1lRGF0YSAmJiB0aGlzLmNvbnRlbnQpIHtcbiAgICAgIGxldCByZXN1bWVEYXRhVjI6IGFueVxuICAgICAgaWYgKHRoaXMuY29udGVudC5jb21wbGV0aW9uUGVyY2VudGFnZSA9PT0gMTAwKSB7XG4gICAgICAgIHJlc3VtZURhdGFWMiA9IHRoaXMuZ2V0UmVzdW1lRGF0YUZyb21MaXN0KCdzdGFydCcpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bWVEYXRhVjIgPSB0aGlzLmdldFJlc3VtZURhdGFGcm9tTGlzdCgpXG4gICAgICB9XG4gICAgICBpZiAoIXJlc3VtZURhdGFWMi5taW1lVHlwZSkge1xuICAgICAgICByZXN1bWVEYXRhVjIubWltZVR5cGUgPSB0aGlzLnRvY1N2Yy5nZXRNaW1lVHlwZSh0aGlzLmNvbnRlbnQsIHJlc3VtZURhdGFWMi5pZGVudGlmaWVyKVxuICAgICAgfVxuICAgICAgdGhpcy5yZXN1bWVEYXRhTGluayA9IHZpZXdlclJvdXRlR2VuZXJhdG9yKFxuICAgICAgICByZXN1bWVEYXRhVjIuaWRlbnRpZmllcixcbiAgICAgICAgcmVzdW1lRGF0YVYyLm1pbWVUeXBlLFxuICAgICAgICB0aGlzLmNvbnRlbnQuaWRlbnRpZmllcixcbiAgICAgICAgdGhpcy5jb250ZW50LmNvbnRlbnRUeXBlLFxuICAgICAgICB0aGlzLmZvclByZXZpZXcsXG4gICAgICAgICdMZWFybmluZyBSZXNvdXJjZScsXG4gICAgICAgIHRoaXMuZ2V0QmF0Y2hJZCgpLFxuICAgICAgICB0aGlzLmNvbnRlbnQubmFtZSxcbiAgICAgIClcbiAgICAgIHRoaXMuYWN0aW9uU1ZDLnNldFVwZGF0ZUNvbXBHcm91cE8gPSB0aGlzLnJlc3VtZURhdGFMaW5rXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy5yZXN1bWVEYXRhTGluay51cmxdLCB7XG4gICAgICAgIHF1ZXJ5UGFyYW1zOiB7XG4gICAgICAgICAgLi4udGhpcy5yZXN1bWVEYXRhTGluay5xdWVyeVBhcmFtcyxcbiAgICAgICAgICBmcm9tQUlUdXRvcjogdGhpcy5mcm9tQUlUdXRvclxuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLy8gdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChcbiAgICAgIC8vICAgW3RoaXMucmVzdW1lRGF0YUxpbmsudXJsXSxcbiAgICAgIC8vICAge1xuICAgICAgLy8gICAgIHJlbGF0aXZlVG86IHRoaXMucmVzdW1lRGF0YUxpbmsudXJsLFxuICAgICAgLy8gICAgIHF1ZXJ5UGFyYW1zOiB0aGlzLnJlc3VtZURhdGFMaW5rLnF1ZXJ5UGFyYW1zLFxuICAgICAgLy8gICAgIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6ICdtZXJnZScsXG4gICAgICAvLyAgIH0pXG4gICAgICAvKiB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUgKi9cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wbGF5UmVzdW1lRm9yQUkuZW1pdCgpXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRSZXN1bWVEYXRhRnJvbUxpc3QodHlwZT86IHN0cmluZyk6IGFueSB8IHZvaWQge1xuICAgIGNvbnN0IHJlc3VtZUNvcHkgPSBbLi4udGhpcy5yZXN1bWVEYXRhXVxuICAgIGlmICghdHlwZSkge1xuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm1heC1saW5lLWxlbmd0aFxuXG4gICAgICBjb25zdCBsYXN0SXRlbSA9IHJlc3VtZUNvcHkgJiYgcmVzdW1lQ29weS5zb3J0KChhOiBhbnksIGI6IGFueSkgPT5cbiAgICAgICAgbmV3IERhdGUoYi5sYXN0QWNjZXNzVGltZSkuZ2V0VGltZSgpIC0gbmV3IERhdGUoYS5sYXN0QWNjZXNzVGltZSkuZ2V0VGltZSgpKS5zaGlmdCgpXG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZGVudGlmaWVyOiBsYXN0SXRlbS5jb250ZW50SWQsXG4gICAgICAgIG1pbWVUeXBlOiBsYXN0SXRlbS5wcm9ncmVzc2RldGFpbHMgJiYgbGFzdEl0ZW0ucHJvZ3Jlc3NkZXRhaWxzLm1pbWVUeXBlLFxuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBmaXJzdEl0ZW0gPSByZXN1bWVDb3B5ICYmIHJlc3VtZUNvcHkubGVuZ3RoICYmIHJlc3VtZUNvcHlbMF1cbiAgICByZXR1cm4ge1xuICAgICAgaWRlbnRpZmllcjogZmlyc3RJdGVtLmNvbnRlbnRJZCxcbiAgICAgIG1pbWVUeXBlOiBmaXJzdEl0ZW0ucHJvZ3Jlc3NkZXRhaWxzICYmIGZpcnN0SXRlbS5wcm9ncmVzc2RldGFpbHMubWltZVR5cGUsXG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldEJhdGNoSWQoKTogc3RyaW5nIHtcbiAgICBsZXQgYmF0Y2hJZCA9ICcnXG4gICAgaWYgKHRoaXMuYmF0Y2hEYXRhICYmIHRoaXMuYmF0Y2hEYXRhLmNvbnRlbnQpIHtcbiAgICAgIGZvciAoY29uc3QgYmF0Y2ggb2YgdGhpcy5iYXRjaERhdGEuY29udGVudCkge1xuICAgICAgICBiYXRjaElkID0gYmF0Y2guYmF0Y2hJZFxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYmF0Y2hJZFxuICB9XG5cbiAgcmFpc2VBSVBvcHVwU3RhcnRUZWxlbWV0cnkoKSB7XG4gICAgY29uc3QgZXZlbnQgPSB7XG4gICAgICBldmVudFR5cGU6IFdzRXZlbnRzLldzRXZlbnRUeXBlLlRlbGVtZXRyeSxcbiAgICAgIGV2ZW50TG9nTGV2ZWw6IFdzRXZlbnRzLldzRXZlbnRMb2dMZXZlbC5JbmZvLFxuICAgICAgZGF0YToge1xuICAgICAgICBlZGF0YTogeyB0eXBlOiAnY2xpY2snLCBcImlkXCI6IFwiYWktdHV0b3ItdG9jLXBhZ2VcIiwgXCJwYWdlaWRcIjogYC9hcHAvdG9jLyR7dGhpcy5jb250ZW50Py5pZGVudGlmaWVyfWAgfSxcbiAgICAgICAgb2JqZWN0OiB7IFwiaWRcIjogdGhpcy5jb250ZW50Py5pZGVudGlmaWVyLCBcInR5cGVcIjogdGhpcy5jb250ZW50Py5jb3Vyc2VDYXRlZ29yeSB9LFxuICAgICAgICBzdGF0ZTogV3NFdmVudHMuRW51bVRlbGVtZXRyeVN1YlR5cGUuTG9hZGVkLFxuICAgICAgICBldmVudFN1YlR5cGU6IFdzRXZlbnRzLkVudW1UZWxlbWV0cnlTdWJUeXBlLkNoYXRib3QsXG4gICAgICAgIG1vZGU6ICd2aWV3JyxcbiAgICAgIH0sXG4gICAgICBwYWdlQ29udGV4dDogeyBwYWdlSWQ6ICcvYXBwL3RvYycsIG1vZHVsZTogJ0xlYXJuJyB9LFxuICAgICAgZnJvbTogJycsXG4gICAgICB0bzogJ1RlbGVtZXRyeScsXG4gICAgfVxuICAgIHRoaXMuZXZlbnRTdmMuZGlzcGF0Y2hDaGF0Ym90RXZlbnQ8V3NFdmVudHMuSVdzRXZlbnRUZWxlbWV0cnlJbnRlcmFjdD4oZXZlbnQpXG4gIH1cblxuICByYWlzZUFJUG9wdXBFbmRUZWxlbWV0cnkoKSB7XG4gICAgY29uc3QgZXZlbnQgPSB7XG4gICAgICBldmVudFR5cGU6IFdzRXZlbnRzLldzRXZlbnRUeXBlLlRlbGVtZXRyeSxcbiAgICAgIGV2ZW50TG9nTGV2ZWw6IFdzRXZlbnRzLldzRXZlbnRMb2dMZXZlbC5JbmZvLFxuICAgICAgZGF0YToge1xuICAgICAgICBlZGF0YTogeyB0eXBlOiAnY2xpY2snLCBcImlkXCI6IFwiYWktdHV0b3ItdG9jLXBhZ2VcIiwgXCJwYWdlaWRcIjogYC9hcHAvdG9jLyR7dGhpcy5jb250ZW50Py5pZGVudGlmaWVyfWAgfSxcbiAgICAgICAgb2JqZWN0OiB7IFwiaWRcIjogdGhpcy5jb250ZW50Py5pZGVudGlmaWVyLCBcInR5cGVcIjogdGhpcy5jb250ZW50Py5jb3Vyc2VDYXRlZ29yeSB9LFxuICAgICAgICBzdGF0ZTogV3NFdmVudHMuRW51bVRlbGVtZXRyeVN1YlR5cGUuVW5sb2FkZWQsXG4gICAgICAgIGV2ZW50U3ViVHlwZTogV3NFdmVudHMuRW51bVRlbGVtZXRyeVN1YlR5cGUuQ2hhdGJvdCxcbiAgICAgICAgbW9kZTogJ3ZpZXcnLFxuICAgICAgfSxcbiAgICAgIHBhZ2VDb250ZXh0OiB7IHBhZ2VJZDogJy9hcHAvdG9jJywgbW9kdWxlOiAnTGVhcm4nIH0sXG4gICAgICBmcm9tOiAnJyxcbiAgICAgIHRvOiAnVGVsZW1ldHJ5JyxcbiAgICB9XG4gICAgdGhpcy5ldmVudFN2Yy5kaXNwYXRjaENoYXRib3RFdmVudDxXc0V2ZW50cy5JV3NFdmVudFRlbGVtZXRyeUludGVyYWN0PihldmVudClcbiAgfVxuXG4gIHJhaXNlQUlQb3B1cEludGVyYWN0VGVsZW1ldHJ5KCkge1xuICAgIGNvbnN0IGV2ZW50ID0ge1xuICAgICAgZXZlbnRUeXBlOiBXc0V2ZW50cy5Xc0V2ZW50VHlwZS5UZWxlbWV0cnksXG4gICAgICBldmVudExvZ0xldmVsOiBXc0V2ZW50cy5Xc0V2ZW50TG9nTGV2ZWwuSW5mbyxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgZWRhdGE6IHsgdHlwZTogJ2NsaWNrJywgXCJpZFwiOiBcImFpLXR1dG9yLXRvYy1wYWdlXCIsIFwicGFnZWlkXCI6IGAvYXBwL3RvYy8ke3RoaXMuY29udGVudD8uaWRlbnRpZmllcn1gIH0sXG4gICAgICAgIG9iamVjdDogeyBcImlkXCI6IHRoaXMuY29udGVudD8uaWRlbnRpZmllciwgXCJ0eXBlXCI6IHRoaXMuY29udGVudD8uY291cnNlQ2F0ZWdvcnkgfSxcbiAgICAgICAgc3RhdGU6IFdzRXZlbnRzLkVudW1UZWxlbWV0cnlTdWJUeXBlLkludGVyYWN0LFxuICAgICAgICBldmVudFN1YlR5cGU6IFdzRXZlbnRzLkVudW1UZWxlbWV0cnlTdWJUeXBlLkNoYXRib3QsXG4gICAgICAgIG1vZGU6ICd2aWV3JyxcbiAgICAgIH0sXG4gICAgICBwYWdlQ29udGV4dDogeyBwYWdlSWQ6ICcvYXBwL3RvYycsIG1vZHVsZTogJ0xlYXJuJyB9LFxuICAgICAgZnJvbTogJycsXG4gICAgICB0bzogJ1RlbGVtZXRyeScsXG4gICAgfVxuICAgIHRoaXMuZXZlbnRTdmMuZGlzcGF0Y2hDaGF0Ym90RXZlbnQ8V3NFdmVudHMuSVdzRXZlbnRUZWxlbWV0cnlJbnRlcmFjdD4oZXZlbnQpXG4gIH1cblxuICBlbnJvbGxVc2VyRm9yQUlUdXRvcigpIHtcbiAgICB0aGlzLmVucm9sbFVzZXJUb0FJLmVtaXQoKVxuICB9XG5cbiAgYXN5bmMgcGFyc2VWVFQoKSB7XG4gICAgbGV0IGlkZW50aWZpZXIgPSB0aGlzLnJlc291cmNlSWRlbnRpZmllclxuICAgIC8vIGNvbnNvbGUubG9nKCdpZGVudGlmaWVyLS0nLCBpZGVudGlmaWVyKVxuICAgIGF3YWl0IHRoaXMudG9jU3ZjLmFpR2V0UmVzb3VyY2VWdHRGaWxlKGlkZW50aWZpZXIpLnN1YnNjcmliZShhc3luYyAoZGF0YXM6IGFueSkgPT4ge1xuICAgICAgbGV0IGRhdGE6IGFueSA9IGRhdGFzPy5kYXRhXG4gICAgICBpZiAoZGF0YSAmJiBkYXRhLmxlbmd0aCAmJiBkYXRhWzBdWyd0cmFuc2NyaXB0aW9uX3VybHMnXSAmJiBkYXRhWzBdWyd0cmFuc2NyaXB0aW9uX3VybHMnXS5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy52dHRMYW5nQXJyID0gZGF0YVswXVsndHJhbnNjcmlwdGlvbl91cmxzJ11cblxuICAgICAgICB0aGlzLmVuYWJsZVRyYW5zY3JpcHRpb25GbGFnID0gdHJ1ZVxuICAgICAgICAvLyBsZXQgdXJsID0gIGRhdGFbMF1bJ3RyYW5zY3JpcHRpb25fdXJscyddWzBdWyd1cmknXVxuICAgICAgICB0aGlzLnRyYW5zY3JpcHRpb25BY3RpdmVMYW5ndWFnZSA9IHRoaXMudnR0TGFuZ0FyciAmJiB0aGlzLnZ0dExhbmdBcnIubGVuZ3RoICYmIHRoaXMudnR0TGFuZ0FyclswXSAmJiB0aGlzLnZ0dExhbmdBcnJbMF1bJ2RlZmF1bHRfbGFuZyddID8gJ2VuJyA6ICdlbidcbiAgICAgICAgdGhpcy5kZWZhdWx0VHJhbnNjcmlwdExhbmd1YWdlID0gdGhpcy52dHRMYW5nQXJyICYmIHRoaXMudnR0TGFuZ0Fyci5sZW5ndGggJiYgdGhpcy52dHRMYW5nQXJyWzBdICYmIHRoaXMudnR0TGFuZ0FyclswXVsnZGVmYXVsdF9sYW5nJ10gPyAnZW4nIDogJ2VuJ1xuICAgICAgICBsZXQgc2VsZWN0ZWRUcmFuc2NyaXB0aW9uU3R5bGUgPSB0aGlzLnZ0dExhbmdBcnIuZmlsdGVyKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICByZXR1cm4gaXRlbT8ubGFiZWwgPT09IHRoaXMudHJhbnNjcmlwdGlvbkFjdGl2ZUxhbmd1YWdlXG4gICAgICAgIH0pXG4gICAgICAgIGlmIChzZWxlY3RlZFRyYW5zY3JpcHRpb25TdHlsZSAmJiBzZWxlY3RlZFRyYW5zY3JpcHRpb25TdHlsZS5sZW5ndGgpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkVHJhbnNjcmlwdGlvblN0eWxlID0gc2VsZWN0ZWRUcmFuc2NyaXB0aW9uU3R5bGVbMF1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkVHJhbnNjcmlwdGlvblN0eWxlID0gdGhpcy52dHRMYW5nQXJyWzBdXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZmlsdGVyZWRBcnIgPSB0aGlzLnZ0dExhbmdBcnIuZmlsdGVyKFxuICAgICAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0ubGFiZWwgPT09IHRoaXMudHJhbnNjcmlwdGlvbkFjdGl2ZUxhbmd1YWdlXG4gICAgICAgIClcbiAgICAgICAgbGV0IHVybCA9IGZpbHRlcmVkQXJyLmxlbmd0aCA+IDAgPyBmaWx0ZXJlZEFyclswXS51cmkgOiBudWxsXG4gICAgICAgIC8vbGV0IHVybCA9IHRoaXMudnR0TGFuZ0Fyci5maWx0ZXIoKGl0ZW06IGFueSkgPT4gaXRlbS5sYWJlbCA9PT0gdGhpcy50cmFuc2NyaXB0aW9uQWN0aXZlTGFuZ3VhZ2UpWzBdWyd1cmknXVxuICAgICAgICBpZiAodXJsKSB7XG4gICAgICAgICAgY29uc3QgZmlsZSA9IGF3YWl0IFZ0dEZpbGUuZnJvbVVybCh1cmwpXG4gICAgICAgICAgbGV0IGJsb2NrczogYW55ID0gZmlsZS5nZXRCbG9ja3MoKVxuXG4gICAgICAgICAgdGhpcy5zdWJUaXRsZXMgPSBibG9ja3NcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRvY1N2Yy5jaGFuZ2VUcmFuc2NyaXB0aW9uTGFuZ3VhZ2VFdmVudC5uZXh0KHsgYWN0aXZlTGFuZzogdGhpcy50cmFuc2NyaXB0aW9uQWN0aXZlTGFuZ3VhZ2UsIGxhbmdEYXRhOiB0aGlzLnZ0dExhbmdBcnIsIGxvYWRQbGF5ZXI6IHRydWUgfSlcblxuXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnZ0dExhbmdBcnIgPSBbXVxuICAgICAgICB0aGlzLmVuYWJsZVRyYW5zY3JpcHRpb25GbGFnID0gZmFsc2VcbiAgICAgIH1cblxuICAgIH0pXG5cbiAgfVxuXG4gIGFzeW5jIHJlbmRlclNlbGVjdGVkTGFuZ3VhZ2VUcmFuc2NyaXB0aW9uKF9sYW5ndmFsdWU6IGFueSkge1xuICAgIC8vIHRoaXMudHJhbnNjcmlwdGlvbkFjdGl2ZUxhbmd1YWdlID0gdGhpcy5zZWxlY3RlZFRyYW5zY3JpcHRpb25TdHlsZT8ubGFiZWxcbiAgICBpZiAodHlwZW9mIF9sYW5ndmFsdWUgPT09ICdzdHJpbmcnICYmIF9sYW5ndmFsdWUpIHtcbiAgICAgIHRoaXMudHJhbnNjcmlwdGlvbkFjdGl2ZUxhbmd1YWdlID0gX2xhbmd2YWx1ZVxuXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRUcmFuc2NyaXB0aW9uU3R5bGUgPSBfbGFuZ3ZhbHVlPy52YWx1ZVxuICAgICAgdGhpcy50cmFuc2NyaXB0aW9uQWN0aXZlTGFuZ3VhZ2UgPSB0aGlzLnNlbGVjdGVkVHJhbnNjcmlwdGlvblN0eWxlPy5sYWJlbFxuICAgICAgdGhpcy50cmFuc2NyaXB0QWN0aXZlTGFuZ3VhZ2VUZXh0ID0gX2xhbmd2YWx1ZT8udmFsdWU/Lmxhbmd1YWdlXG4gICAgfVxuICAgIHRoaXMucmFpc2VUcmFuc2NyaXB0aW9uTGFuZ3VhZ2VTdGFydFRlbGVtZXRyeSgpXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnJhaXNlVHJhbnNjcmlwdGlvbkxhbmd1YWdlSW50ZXJhY3RUZWxlbWV0cnkoKVxuICAgIH0pXG4gICAgbGV0IGN1cnJlbnRQYXRoID0gdGhpcy52dHRMYW5nQXJyLmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtPy5sYWJlbCA9PT0gdGhpcy50cmFuc2NyaXB0aW9uQWN0aXZlTGFuZ3VhZ2UpXG4gICAgaWYgKGN1cnJlbnRQYXRoICYmIGN1cnJlbnRQYXRoLmxlbmd0aCkge1xuICAgICAgdGhpcy5zZWxlY3RlZFRyYW5zY3JpcHRpb25TdHlsZSA9IGN1cnJlbnRQYXRoWzBdXG4gICAgfVxuICAgIGNvbnN0IGZpbGUgPSBhd2FpdCBWdHRGaWxlLmZyb21VcmwoY3VycmVudFBhdGggJiYgY3VycmVudFBhdGhbMF0/LnVyaSlcbiAgICBsZXQgYmxvY2tzOiBhbnkgPSBmaWxlLmdldEJsb2NrcygpXG4gICAgdGhpcy5zdWJUaXRsZXMgPSBibG9ja3NcbiAgICB0aGlzLnJhaXNlVHJhbnNjcmlwdGlvbkxhbmd1YWdlU3RvcFRlbGVtZXRyeSgpXG4gICAgLy8gdGhpcy50b2NTdmMuY2hhbmdlVHJhbnNjcmlwdGlvbkxhbmd1YWdlRXZlbnQubmV4dCh7YWN0aXZlTGFuZzogdGhpcy50cmFuc2NyaXB0aW9uQWN0aXZlTGFuZ3VhZ2UsIGxhbmdEYXRhOiB0aGlzLnZ0dExhbmdBcnIsIGxvYWRQbGF5ZXI6ZmFsc2V9KVxuXG4gIH1cblxuICBvcGVuU3VydmV5Rm9ybVBvcHVwKGV2ZW50OiBib29sZWFuKSB7XG4gICAgdGhpcy50cmlnZXJDb21wbGV0aW9uU3VydmV5Rm9ybS5lbWl0KGV2ZW50KVxuICB9XG5cbiAgcGxheUZyb21TbG90KHN1YnRpdGxlOiBhbnkpIHtcbiAgICBpZiAoc3VidGl0bGUpIHtcbiAgICAgIGxldCBzdGFydFRpbWUgPSBzdWJ0aXRsZS5zdGFydFRpbWUgLyAxMDAwXG4gICAgICBsZXQgZW5kVGltZSA9IHN1YnRpdGxlLmVuZFRpbWUgLyAxMDAwXG4gICAgICB0aGlzLnRvY1N2Yy5wbGF5VHJhbnNjcmlwdGlvblZpZGVvLm5leHQoeyBzdGFydFRpbWUsIGVuZFRpbWUgfSlcbiAgICB9XG4gIH1cblxuICBmb3JtYXRNc1RvVnR0VGltZShtczogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCB0b3RhbFNlY29uZHMgPSBNYXRoLmZsb29yKG1zIC8gMTAwMClcbiAgICAvLyAgY29uc3QgbWlsbGlzZWNvbmRzID0gbXMgJSAxMDAwO1xuICAgIGNvbnN0IGhvdXJzID0gTWF0aC5mbG9vcih0b3RhbFNlY29uZHMgLyAzNjAwKVxuICAgIGNvbnN0IG1pbnV0ZXMgPSBNYXRoLmZsb29yKCh0b3RhbFNlY29uZHMgJSAzNjAwKSAvIDYwKVxuICAgIGNvbnN0IHNlY29uZHMgPSB0b3RhbFNlY29uZHMgJSA2MFxuXG4gICAgY29uc3QgcGFkID0gKG51bTogbnVtYmVyLCBzaXplOiBudW1iZXIpID0+IG51bS50b1N0cmluZygpLnBhZFN0YXJ0KHNpemUsICcwJylcblxuICAgIC8vIHJldHVybiBgJHtwYWQoaG91cnMsIDIpfToke3BhZChtaW51dGVzLCAyKX06JHtwYWQoc2Vjb25kcywgMil9LiR7cGFkKG1pbGxpc2Vjb25kcywgMyl9YDtcbiAgICByZXR1cm4gYCR7cGFkKGhvdXJzLCAyKX06JHtwYWQobWludXRlcywgMil9OiR7cGFkKHNlY29uZHMsIDIpfWBcbiAgfVxuXG4gIG9ubHlzY29ybUFzc2Vzc21lbnRFeGlzdHMoZGF0YTogYW55LCBrZXk6IGFueSwgdmFsdWU6IGFueSkge1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhPy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKGRhdGFbaV0gJiYgZGF0YVtpXVsnY2hpbGRyZW4nXSAmJiBkYXRhW2ldWydjaGlsZHJlbiddLmxlbmd0aCkge1xuICAgICAgICB0aGlzLm9ubHlzY29ybUFzc2Vzc21lbnRFeGlzdHMoZGF0YVtpXT8uY2hpbGRyZW4sIGtleSwgdmFsdWUpXG4gICAgICB9IGVsc2Uge1xuXG4gICAgICAgIHRoaXMudG90YWxSZXNvdXJjZSA9IHRoaXMudG90YWxSZXNvdXJjZSArIDFcbiAgICAgICAgaWYgKHZhbHVlLmluY2x1ZGVzKGRhdGFbaV1ba2V5XSkpIHtcbiAgICAgICAgICAvLyB0aGlzLnNob3dBSVR1dG9yRmxhZyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuc2Nvcm1Bc3Nlc3NtZW50Q291bnQgPSB0aGlzLnNjb3JtQXNzZXNzbWVudENvdW50ICsgMVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudG90YWxSZXNvdXJjZSA9PT0gdGhpcy5zY29ybUFzc2Vzc21lbnRDb3VudCkge1xuICAgICAgdGhpcy5lbmFibGVBSVR1dG9yRmxhZyA9IGZhbHNlXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZW5hYmxlQUlUdXRvckZsYWcgPSB0cnVlXG4gICAgfVxuICAgIHJldHVybiB0aGlzLmVuYWJsZUFJVHV0b3JGbGFnXG4gIH1cblxuICByYWlzZVRyYW5zY3JpcHRpb25UYWJTdGFydFRlbGVtZXRyeSgpIHtcbiAgICBjb25zdCBldmVudCA9IHtcbiAgICAgIGV2ZW50VHlwZTogV3NFdmVudHMuV3NFdmVudFR5cGUuVGVsZW1ldHJ5LFxuICAgICAgZXZlbnRMb2dMZXZlbDogV3NFdmVudHMuV3NFdmVudExvZ0xldmVsLkluZm8sXG4gICAgICBkYXRhOiB7XG4gICAgICAgIGVkYXRhOiB7IHR5cGU6ICdjbGljaycsIFwiaWRcIjogXCJhaS10dXRvci12aWV3ZXItcGFnZVwiLCBcInBhZ2VpZFwiOiBgL3ZpZXdlci92aWRlby8ke3RoaXMudmlld2VyRGF0YVN2Yz8ucmVzb3VyY2VJZH1gLCBzdWJUeXBlOiAndHJhbnNjcmlwdC10YWInIH0sXG4gICAgICAgIG9iamVjdDogeyBcImlkXCI6IHRoaXMuY29udGVudD8uaWRlbnRpZmllciwgXCJ0eXBlXCI6IHRoaXMuY29udGVudD8uY291cnNlQ2F0ZWdvcnkgfSxcbiAgICAgICAgc3RhdGU6IFdzRXZlbnRzLkVudW1UZWxlbWV0cnlTdWJUeXBlLkxvYWRlZCxcbiAgICAgICAgZXZlbnRTdWJUeXBlOiBXc0V2ZW50cy5FbnVtVGVsZW1ldHJ5U3ViVHlwZS5DaGF0Ym90LFxuICAgICAgICBtb2RlOiAndmlldycsXG4gICAgICB9LFxuICAgICAgcGFnZUNvbnRleHQ6IHsgcGFnZUlkOiBgL3ZpZXdlci92aWRlby8ke3RoaXMudmlld2VyRGF0YVN2Yz8ucmVzb3VyY2VJZH1gLCBtb2R1bGU6ICdMZWFybicgfSxcbiAgICAgIGZyb206ICcnLFxuICAgICAgdG86ICdUZWxlbWV0cnknLFxuICAgIH1cbiAgICB0aGlzLmV2ZW50U3ZjLmRpc3BhdGNoQ2hhdGJvdEV2ZW50PFdzRXZlbnRzLklXc0V2ZW50VGVsZW1ldHJ5SW50ZXJhY3Q+KGV2ZW50KVxuICB9XG5cbiAgcmFpc2VUcmFuc2NyaXB0aW9uVGFiSW50ZXJhY3RUZWxlbWV0cnkoKSB7XG4gICAgY29uc3QgZXZlbnQgPSB7XG4gICAgICBldmVudFR5cGU6IFdzRXZlbnRzLldzRXZlbnRUeXBlLlRlbGVtZXRyeSxcbiAgICAgIGV2ZW50TG9nTGV2ZWw6IFdzRXZlbnRzLldzRXZlbnRMb2dMZXZlbC5JbmZvLFxuICAgICAgZGF0YToge1xuICAgICAgICBlZGF0YTogeyB0eXBlOiAnY2xpY2snLCBcImlkXCI6IFwiYWktdHV0b3Itdmlld2VyLXBhZ2VcIiwgXCJwYWdlaWRcIjogYC92aWV3ZXIvdmlkZW8vJHt0aGlzLnZpZXdlckRhdGFTdmM/LnJlc291cmNlSWR9YCwgc3ViVHlwZTogJ3RyYW5zY3JpcHQtdGFiJyB9LFxuICAgICAgICBvYmplY3Q6IHsgXCJpZFwiOiB0aGlzLmNvbnRlbnQ/LmlkZW50aWZpZXIsIFwidHlwZVwiOiB0aGlzLmNvbnRlbnQ/LmNvdXJzZUNhdGVnb3J5IH0sXG4gICAgICAgIHN0YXRlOiBXc0V2ZW50cy5FbnVtVGVsZW1ldHJ5U3ViVHlwZS5JbnRlcmFjdCxcbiAgICAgICAgZXZlbnRTdWJUeXBlOiBXc0V2ZW50cy5FbnVtVGVsZW1ldHJ5U3ViVHlwZS5DaGF0Ym90LFxuICAgICAgICBtb2RlOiAndmlldycsXG4gICAgICB9LFxuICAgICAgcGFnZUNvbnRleHQ6IHsgcGFnZUlkOiBgL3ZpZXdlci92aWRlby8ke3RoaXMudmlld2VyRGF0YVN2Yz8ucmVzb3VyY2VJZH1gLCBtb2R1bGU6ICdMZWFybicgfSxcbiAgICAgIGZyb206ICcnLFxuICAgICAgdG86ICdUZWxlbWV0cnknLFxuICAgIH1cbiAgICB0aGlzLmV2ZW50U3ZjLmRpc3BhdGNoQ2hhdGJvdEV2ZW50PFdzRXZlbnRzLklXc0V2ZW50VGVsZW1ldHJ5SW50ZXJhY3Q+KGV2ZW50KVxuICB9XG5cbiAgcmFpc2VUcmFuc2NyaXB0aW9uVGFiU3RvcFRlbGVtZXRyeSgpIHtcbiAgICBjb25zdCBldmVudCA9IHtcbiAgICAgIGV2ZW50VHlwZTogV3NFdmVudHMuV3NFdmVudFR5cGUuVGVsZW1ldHJ5LFxuICAgICAgZXZlbnRMb2dMZXZlbDogV3NFdmVudHMuV3NFdmVudExvZ0xldmVsLkluZm8sXG4gICAgICBkYXRhOiB7XG4gICAgICAgIGVkYXRhOiB7IHR5cGU6ICdjbGljaycsIFwiaWRcIjogXCJhaS10dXRvci12aWV3ZXItcGFnZVwiLCBcInBhZ2VpZFwiOiBgL3ZpZXdlci92aWRlby8ke3RoaXMudmlld2VyRGF0YVN2Yz8ucmVzb3VyY2VJZH1gLCBzdWJUeXBlOiAndHJhbnNjcmlwdC10YWInIH0sXG4gICAgICAgIG9iamVjdDogeyBcImlkXCI6IHRoaXMuY29udGVudD8uaWRlbnRpZmllciwgXCJ0eXBlXCI6IHRoaXMuY29udGVudD8uY291cnNlQ2F0ZWdvcnkgfSxcbiAgICAgICAgc3RhdGU6IFdzRXZlbnRzLkVudW1UZWxlbWV0cnlTdWJUeXBlLlVubG9hZGVkLFxuICAgICAgICBldmVudFN1YlR5cGU6IFdzRXZlbnRzLkVudW1UZWxlbWV0cnlTdWJUeXBlLkNoYXRib3QsXG4gICAgICAgIG1vZGU6ICd2aWV3JyxcbiAgICAgIH0sXG4gICAgICBwYWdlQ29udGV4dDogeyBwYWdlSWQ6IGAvdmlld2VyL3ZpZGVvLyR7dGhpcy52aWV3ZXJEYXRhU3ZjPy5yZXNvdXJjZUlkfWAsIG1vZHVsZTogJ0xlYXJuJyB9LFxuICAgICAgZnJvbTogJycsXG4gICAgICB0bzogJ1RlbGVtZXRyeScsXG4gICAgfVxuICAgIHRoaXMuZXZlbnRTdmMuZGlzcGF0Y2hDaGF0Ym90RXZlbnQ8V3NFdmVudHMuSVdzRXZlbnRUZWxlbWV0cnlJbnRlcmFjdD4oZXZlbnQpXG4gIH1cblxuICByYWlzZVRyYW5zY3JpcHRpb25MYW5ndWFnZVN0YXJ0VGVsZW1ldHJ5KCkge1xuICAgIGNvbnN0IGV2ZW50ID0ge1xuICAgICAgZXZlbnRUeXBlOiBXc0V2ZW50cy5Xc0V2ZW50VHlwZS5UZWxlbWV0cnksXG4gICAgICBldmVudExvZ0xldmVsOiBXc0V2ZW50cy5Xc0V2ZW50TG9nTGV2ZWwuSW5mbyxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgZWRhdGE6IHsgdHlwZTogJ2NsaWNrJywgXCJpZFwiOiB0aGlzLnRyYW5zY3JpcHRBY3RpdmVMYW5ndWFnZVRleHQsIFwicGFnZWlkXCI6IGAvdmlld2VyL3ZpZGVvLyR7dGhpcy52aWV3ZXJEYXRhU3ZjPy5yZXNvdXJjZUlkfWAsIHN1YlR5cGU6ICd0cmFuc2NyaXB0LWxhbmd1YWdlJyB9LFxuICAgICAgICBvYmplY3Q6IHsgXCJpZFwiOiB0aGlzLmNvbnRlbnQ/LmlkZW50aWZpZXIsIFwidHlwZVwiOiB0aGlzLmNvbnRlbnQ/LmNvdXJzZUNhdGVnb3J5IH0sXG4gICAgICAgIHN0YXRlOiBXc0V2ZW50cy5FbnVtVGVsZW1ldHJ5U3ViVHlwZS5Mb2FkZWQsXG4gICAgICAgIGV2ZW50U3ViVHlwZTogV3NFdmVudHMuRW51bVRlbGVtZXRyeVN1YlR5cGUuQ2hhdGJvdCxcbiAgICAgICAgbW9kZTogJ3ZpZXcnLFxuICAgICAgfSxcbiAgICAgIHBhZ2VDb250ZXh0OiB7IHBhZ2VJZDogYC92aWV3ZXIvdmlkZW8vJHt0aGlzLnZpZXdlckRhdGFTdmM/LnJlc291cmNlSWR9YCwgbW9kdWxlOiAnTGVhcm4nIH0sXG4gICAgICBmcm9tOiAnJyxcbiAgICAgIHRvOiAnVGVsZW1ldHJ5JyxcbiAgICB9XG4gICAgdGhpcy5ldmVudFN2Yy5kaXNwYXRjaENoYXRib3RFdmVudDxXc0V2ZW50cy5JV3NFdmVudFRlbGVtZXRyeUludGVyYWN0PihldmVudClcbiAgfVxuXG4gIHJhaXNlVHJhbnNjcmlwdGlvbkxhbmd1YWdlSW50ZXJhY3RUZWxlbWV0cnkoKSB7XG4gICAgY29uc3QgZXZlbnQgPSB7XG4gICAgICBldmVudFR5cGU6IFdzRXZlbnRzLldzRXZlbnRUeXBlLlRlbGVtZXRyeSxcbiAgICAgIGV2ZW50TG9nTGV2ZWw6IFdzRXZlbnRzLldzRXZlbnRMb2dMZXZlbC5JbmZvLFxuICAgICAgZGF0YToge1xuICAgICAgICBlZGF0YTogeyB0eXBlOiAnY2xpY2snLCBcImlkXCI6IHRoaXMudHJhbnNjcmlwdEFjdGl2ZUxhbmd1YWdlVGV4dCwgXCJwYWdlaWRcIjogYC92aWV3ZXIvdmlkZW8vJHt0aGlzLnZpZXdlckRhdGFTdmM/LnJlc291cmNlSWR9YCwgc3ViVHlwZTogJ3RyYW5zY3JpcHQtbGFuZ3VhZ2UnIH0sXG4gICAgICAgIG9iamVjdDogeyBcImlkXCI6IHRoaXMuY29udGVudD8uaWRlbnRpZmllciwgXCJ0eXBlXCI6IHRoaXMuY29udGVudD8uY291cnNlQ2F0ZWdvcnkgfSxcbiAgICAgICAgc3RhdGU6IFdzRXZlbnRzLkVudW1UZWxlbWV0cnlTdWJUeXBlLkludGVyYWN0LFxuICAgICAgICBldmVudFN1YlR5cGU6IFdzRXZlbnRzLkVudW1UZWxlbWV0cnlTdWJUeXBlLkNoYXRib3QsXG4gICAgICAgIG1vZGU6ICd2aWV3JyxcbiAgICAgIH0sXG4gICAgICBwYWdlQ29udGV4dDogeyBwYWdlSWQ6IGAvdmlld2VyL3ZpZGVvLyR7dGhpcy52aWV3ZXJEYXRhU3ZjPy5yZXNvdXJjZUlkfWAsIG1vZHVsZTogJ0xlYXJuJyB9LFxuICAgICAgZnJvbTogJycsXG4gICAgICB0bzogJ1RlbGVtZXRyeScsXG4gICAgfVxuICAgIHRoaXMuZXZlbnRTdmMuZGlzcGF0Y2hDaGF0Ym90RXZlbnQ8V3NFdmVudHMuSVdzRXZlbnRUZWxlbWV0cnlJbnRlcmFjdD4oZXZlbnQpXG4gIH1cblxuICByYWlzZVRyYW5zY3JpcHRpb25MYW5ndWFnZVN0b3BUZWxlbWV0cnkoKSB7XG4gICAgY29uc3QgZXZlbnQgPSB7XG4gICAgICBldmVudFR5cGU6IFdzRXZlbnRzLldzRXZlbnRUeXBlLlRlbGVtZXRyeSxcbiAgICAgIGV2ZW50TG9nTGV2ZWw6IFdzRXZlbnRzLldzRXZlbnRMb2dMZXZlbC5JbmZvLFxuICAgICAgZGF0YToge1xuICAgICAgICBlZGF0YTogeyB0eXBlOiAnY2xpY2snLCBcImlkXCI6IHRoaXMudHJhbnNjcmlwdEFjdGl2ZUxhbmd1YWdlVGV4dCwgXCJwYWdlaWRcIjogYC92aWV3ZXIvdmlkZW8vJHt0aGlzLnZpZXdlckRhdGFTdmM/LnJlc291cmNlSWR9YCwgc3ViVHlwZTogJ3RyYW5zY3JpcHQtbGFuZ3VhZ2UnIH0sXG4gICAgICAgIG9iamVjdDogeyBcImlkXCI6IHRoaXMuY29udGVudD8uaWRlbnRpZmllciwgXCJ0eXBlXCI6IHRoaXMuY29udGVudD8uY291cnNlQ2F0ZWdvcnkgfSxcbiAgICAgICAgc3RhdGU6IFdzRXZlbnRzLkVudW1UZWxlbWV0cnlTdWJUeXBlLlVubG9hZGVkLFxuICAgICAgICBldmVudFN1YlR5cGU6IFdzRXZlbnRzLkVudW1UZWxlbWV0cnlTdWJUeXBlLkNoYXRib3QsXG4gICAgICAgIG1vZGU6ICd2aWV3JyxcbiAgICAgIH0sXG4gICAgICBwYWdlQ29udGV4dDogeyBwYWdlSWQ6IGAvdmlld2VyL3ZpZGVvLyR7dGhpcy52aWV3ZXJEYXRhU3ZjPy5yZXNvdXJjZUlkfWAsIG1vZHVsZTogJ0xlYXJuJyB9LFxuICAgICAgZnJvbTogJycsXG4gICAgICB0bzogJ1RlbGVtZXRyeScsXG4gICAgfVxuICAgIHRoaXMuZXZlbnRTdmMuZGlzcGF0Y2hDaGF0Ym90RXZlbnQ8V3NFdmVudHMuSVdzRXZlbnRUZWxlbWV0cnlJbnRlcmFjdD4oZXZlbnQpXG4gIH1cblxuICBjbG9zZUFJUG9wdXAoZXZlbnQ6IGFueSkge1xuICAgIGlmIChldmVudCkge1xuICAgICAgdGhpcy5zaG93QUlUdXRvclBvcHVwID0gZmFsc2VcbiAgICAgIHRoaXMuc2VsZWN0ZWRUYWJJbmRleCA9IDBcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5yZXNvdXJjZUlkZW50aWZpZXIkKSB7XG4gICAgICB0aGlzLnJlc291cmNlSWRlbnRpZmllciQudW5zdWJzY3JpYmUoKVxuICAgIH1cblxuICAgIGlmICh0aGlzLnN1YlRpdGxlcyQpIHtcbiAgICAgIHRoaXMuc3ViVGl0bGVzJC51bnN1YnNjcmliZSgpXG4gICAgfVxuXG4gICAgaWYgKHRoaXMudHJhbnNyaXB0aW9uTGFuZ3VhZ2VTdWIpIHtcbiAgICAgIHRoaXMudHJhbnNyaXB0aW9uTGFuZ3VhZ2VTdWIudW5zdWJzY3JpYmUoKVxuICAgIH1cbiAgfVxuXG4gIGNsZWFyQ29tbWVudElkRnJvbVVybCgpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50UXVlcnlQYXJhbXMgPSB7IC4uLnRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMgfVxuICAgIGRlbGV0ZSBjdXJyZW50UXVlcnlQYXJhbXMuY29tbWVudElkXG4gICAgdGhpcy5jb21tZW50SWQgPSAnJ1xuICAgIHRoaXMuZGlzY3Vzc1dpZGdldERhdGEubmV3Q29tbWVudFNlY3Rpb24uc2hvdyA9IHRydWVcbiAgfVxuXG4gIHJlc3VtZUNvbnRlbnRDYWxsKCkge1xuICAgIHRoaXMucmVzdW1lQ29udGVudC5lbWl0KClcbiAgfVxufSIsIjwhLS0gJiYgKGNvbnRlbnQ/LmNvdXJzZUNhdGVnb3J5ICE9PSBjb3Vyc2VDYXRlZ29yeT8uQkxFTkRFRF9QUk9HUkFNKSAtLT5cbjxkaXYgY2xhc3M9XCJhaS10dXRvci1nZXQtc3RhcnRlZFwiICpuZ0lmPVwiIXZpZXdlclBhZ2UgJiYgZW5hYmxlQUlUdXRvckZsYWcgJiYgIWlzTW9iaWxlXCI+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJweC0yIHB5LTJcIj5cbiAgICAgICAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2ljb25zL2JvdC1jaGF0LXNtYWxsLnN2Z1wiIGhlaWdodD1cIjY0cHhcIiB3aWR0aD1cIjY0cHhcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHktMlwiID5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImZvbnQtd2VpZ2h0LTYwMFwiPkdldCBTdGFydGVkIHdpdGggQUkgVHV0b3I8L3A+XG4gICAgICAgICAgICAgICAgPHNwYW4+R2V0IGluc3RhbnQgZXhwbGFuYXRpb25zLCBzdGVwLWJ5LXN0ZXAgbGVhcm5pbmcgZ3VpZGFuY2UsIGFuZCBjdXN0b21pc2VkIGxlYXJuaW5nIHRhaWxvcmVkIGp1c3RcbiAgICAgICAgICAgICAgICAgICAgZm9yIHlvdS48L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhaS10dXRvci1idG4gcHgtMiBweS0xXCIgW25nQ2xhc3NdPVwiaXNNb2JpbGUgPyAndy0xNjAnIDogJydcIj5cbiAgICAgICAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgKGNsaWNrKT1cInNob3dBaVR1dG9yQ29uZmlybVBvcHVwKClcIj48aW1nXG4gICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJhc3NldHMvYWktdHV0b3IvYWktaWNvbi5zdmdcIj4mbmJzcDsgJm5ic3A7IDxzcGFuIGNsYXNzPVwiYWktdHV0b3ItbGFiZWxcIj5BSSBUdXRvcjwvc3Bhbj48L2E+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJ0YWItZ3JvdXAtY29udGFpbmVyXCI+XG4gICAgPG1hdC10YWItZ3JvdXAgKHNlbGVjdGVkVGFiQ2hhbmdlKT1cImhhbmRsZVRhYkNoYW5nZSgkZXZlbnQpXCIgI3N0aWNreU1lbnUgW2NsYXNzLnN0aWNreS1tYXQtdGFic109XCJzdGlja3lcIlxuICAgICAgICBbc2VsZWN0ZWRJbmRleF09XCJzZWxlY3RlZFRhYkluZGV4XCIgW25nQ2xhc3NdPVwieydjb250ZW50LXRhYnMnOiFmcm9tVmlld2VyLCdjb250ZW50U3RpY2t5JzogZm9yUHJldmlld31cIj5cblxuICAgICAgICA8IS0tIFRyYW5zY3JpcHRpb24gVGFiIC0tPlxuICAgICAgICA8bWF0LXRhYiBsYWJlbD1cIlRyYW5zY3JpcHRpb25cIlxuICAgICAgICAgICAgKm5nSWY9XCJ2aWV3ZXJQYWdlICYmIGVuYWJsZVRyYW5zY3JpcHRpb25GbGFnICYmIHZ0dExhbmdBcnI/Lmxlbmd0aCAmJiBzdWJUaXRsZXM/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG1hdC10YWItbGFiZWw+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlRyYW5zY3JpcHQ8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVkLWNpcmNsZSBtbC01XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBOZXdcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgbWF0VGFiQ29udGVudD5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGlzY2xhaW1lciBteS0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwicHktMiBweC0yXCI+RGlzY2xhaW1lciA6IFRoZXNlIHRyYW5zY3JpcHRzIGFuZCBzdWJ0aXRsZXMgYXJlIEFJLWdlbmVyYXRlZCBhbmQgbWF5IGNvbnRhaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycy48L3A+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbCBtbC01IG1yLTVcIiAqbmdJZj1cImlzTW9iaWxlRm9yQUlcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRyYW5zY3JpcHQtZmxleC1jb250YWluZXIgbXQtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwibXVsdGlsaW5lLXNlbGVjdFwiIGFwcGVhcmFuY2U9XCJmaWxsXCIgc3R5bGU9XCJoZWlnaHQ6IGF1dG87IHdpZHRoOiAxMDAlO1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXRMYWJlbD1cIm5ldmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgY2xhc3M9XCJtdWx0aWxpbmUtc2VsZWN0LWJveCBwci01XCIgWyh2YWx1ZSldPVwic2VsZWN0ZWRUcmFuc2NyaXB0aW9uU3R5bGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cInJlbmRlclNlbGVjdGVkTGFuZ3VhZ2VUcmFuc2NyaXB0aW9uKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QtdHJpZ2dlciBjbGFzcz1cIm11bHRpbGluZS1zZWxlY3QtYm94LXRyaWdnZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZC1vcHRpb24tY29udGVudCBweC01IHB5LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIj48c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ0cmFuc2NyaXB0aW9uQWN0aXZlTGFuZ3VhZ2UgPT09IHNlbGVjdGVkVHJhbnNjcmlwdGlvblN0eWxlPy5sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGI+VHJhbnNjcmlwdCBMYW5ndWFnZTogPC9iPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tzZWxlY3RlZFRyYW5zY3JpcHRpb25TdHlsZT8ubGFuZ3VhZ2UgfCB0aXRsZWNhc2V9fSA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJkZWZhdWx0VHJhbnNjcmlwdExhbmd1YWdlID09PSBzZWxlY3RlZFRyYW5zY3JpcHRpb25TdHlsZT8ubGFiZWxcIj4oQXV0byk8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0LXRyaWdnZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIGNsYXNzPVwibXVsdGlsaW5lLXNlbGVjdC1vcHRpb25cIiB2YWx1ZT1cIlwiICpuZ0Zvcj1cImxldCBsYW5nIG9mIHZ0dExhbmdBcnJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImxhbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydhY3RpdmUtb3B0aW9uJzogc2VsZWN0ZWRUcmFuc2NyaXB0aW9uU3R5bGU/LmxhYmVsID09PSBsYW5nPy5sYWJlbH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvcHRpb24tY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiPnt7bGFuZz8ubGFuZ3VhZ2UgfCB0aXRsZWNhc2V9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWwtNCBmbGV4IGZsZXgtcm93IGp1c3RpZnktZW5kIHRyYW5zY3JpcHQtY29udHJvbFwiPlxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IG1hdE5hdGl2ZUNvbnRyb2wgcmVxdWlyZWQgY2xhc3M9XCJzZWN0aW9uLWRkXCIgKGNoYW5nZSk9XCJyZW5kZXJTZWxlY3RlZExhbmd1YWdlVHJhbnNjcmlwdGlvbigkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJsYW5nPy5sYW5ndWFnZVwiICpuZ0Zvcj1cImxldCBsYW5nIG9mIHZ0dExhbmdBcnJcIiBbc2VsZWN0ZWRdPVwibGFuZz8ubGFiZWwgPT09IHRyYW5zY3JpcHRpb25BY3RpdmVMYW5ndWFnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0cmFuc2NyaXB0aW9uQWN0aXZlTGFuZ3VhZ2UgPT09IGxhbmc/LmxhYmVsXCI+IFRyYW5zY3JpcHQgTGFuZ3VhZ2U6IDwvc3Bhbj4ge3tsYW5nPy5sYW5ndWFnZSB8IHRpdGxlY2FzZX19IDxzcGFuICpuZ0lmPVwidHJhbnNjcmlwdGlvbkFjdGl2ZUxhbmd1YWdlID09PSBsYW5nPy5sYW5ndWFnZVwiPihBdXRvKTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPiAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cIiFpc01vYmlsZUZvckFJID8gJ3ctc3VidGl0bGUtODAnOid3LWZ1bGwnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCIhaXNNb2JpbGVGb3JBSSA/ICdtbC01LXBlcicgOiAnJ1wiICpuZ0lmPVwic3ViVGl0bGVzICYmIHN1YlRpdGxlcz8ubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gVHJhbnNjcmlwdGlvbiBjb250ZW50IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzdWJ0aXRsZSBvZiBzdWJUaXRsZXNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sICBteS0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1YnRpdGxlLXRpbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwicGxheUZyb21TbG90KHN1YnRpdGxlKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHItMSBibHVlLXVuZGVybGluZVwiPiB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRNc1RvVnR0VGltZShzdWJ0aXRsZT8uc3RhcnRUaW1lKSB9fSA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJibGFjay10ZXh0XCI+LTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBsLTEgYmx1ZS11bmRlcmxpbmVcIj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRNc1RvVnR0VGltZShzdWJ0aXRsZT8uZW5kVGltZSkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWwtNCBzdWJ0aXRsZS10ZXh0LXNsb3QgbXItNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJibGFjay10ZXh0XCIgW2lubmVySHRtbF09XCJzdWJ0aXRsZT8udGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBoaWdobGlnaHQgOiBrZXl3b3JkVG9IaWdobGlnaHQ/LnRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogKChzdWJ0aXRsZT8uc3RhcnRUaW1lIC8gMTAwMCkgPj0ga2V5d29yZFRvSGlnaGxpZ2h0Py5zdGFydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIChzdWJ0aXRsZT8uZW5kVGltZSAvIDEwMDApIDw9IGtleXdvcmRUb0hpZ2hsaWdodD8uZW5kKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctc3VidGl0bGUtMjBcIiAqbmdJZj1cIiFpc01vYmlsZUZvckFJXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRyYW5zY3JpcHQtZmxleC1jb250YWluZXIgbXQtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJtdWx0aWxpbmUtc2VsZWN0XCIgYXBwZWFyYW5jZT1cImZpbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IGF1dG87IHdpZHRoOiAxMDAlO1wiIGZsb2F0TGFiZWw9XCJuZXZlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgY2xhc3M9XCJtdWx0aWxpbmUtc2VsZWN0LWJveCBwci01XCIgWyh2YWx1ZSldPVwic2VsZWN0ZWRUcmFuc2NyaXB0aW9uU3R5bGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwicmVuZGVyU2VsZWN0ZWRMYW5ndWFnZVRyYW5zY3JpcHRpb24oJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0LXRyaWdnZXIgY2xhc3M9XCJtdWx0aWxpbmUtc2VsZWN0LWJveC10cmlnZ2VyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZC1vcHRpb24tY29udGVudCBweC01IHB5LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiPjxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidHJhbnNjcmlwdGlvbkFjdGl2ZUxhbmd1YWdlID09PSBzZWxlY3RlZFRyYW5zY3JpcHRpb25TdHlsZT8ubGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGI+VHJhbnNjcmlwdCBMYW5ndWFnZTogPC9iPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3NlbGVjdGVkVHJhbnNjcmlwdGlvblN0eWxlPy5sYW5ndWFnZSB8IHRpdGxlY2FzZX19IDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZGVmYXVsdFRyYW5zY3JpcHRMYW5ndWFnZSA9PT0gc2VsZWN0ZWRUcmFuc2NyaXB0aW9uU3R5bGU/LmxhYmVsXCI+KEF1dG8pPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdC10cmlnZ2VyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIGNsYXNzPVwibXVsdGlsaW5lLXNlbGVjdC1vcHRpb25cIiB2YWx1ZT1cIlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBsYW5nIG9mIHZ0dExhbmdBcnJcIiBbdmFsdWVdPVwibGFuZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnYWN0aXZlLW9wdGlvbic6IHNlbGVjdGVkVHJhbnNjcmlwdGlvblN0eWxlPy5sYWJlbCA9PT0gbGFuZz8ubGFiZWx9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvcHRpb24tY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCI+e3tsYW5nPy5sYW5ndWFnZSB8IHRpdGxlY2FzZX19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgYWxpZ24taXRlbXMtY2VudGVyIG15LTJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICA8cD4wLjAwPC9wPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtbC00XCI+XG4gICAgICAgICAgICAgICAgICAgIDxwPkFJIGZvciBEaWdpdGFsIFRyYW5zZm9ybWF0aW9uOiBNYWNoaW5lIExlYXJuaW5nIGFuZCBEZWVwIExlYXJuaW5nICBMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0LCBzZWQgZG8gZWl1c21vZCB0ZW1wb3IgaW5jaWRpZHVudCB1dCBsYWJvcmUgZXQgZG9sb3JlIG1hZ25hIGFsaXF1YS4gVXQgZW5pbSBhZCBtaW5pbSB2ZW5pYW0sIHF1aXMgbm9zdHJ1ZCBleGVyY2l0YXRpb24gdWxsYW1jbyBsYWJvcmlzIG5pc2kgdXQgYWxpcXVpcCBleCBlYSBjb21tb2RvIGNvbnNlcXVhdC4gRHVpcyBhdXRlIGlydXJlIGRvbG9yIGluIHJlcHJlaGVuZGVyaXQgaW4gdm9sdXB0YXRlIHZlbGl0IGVzc2UgY2lsbHVtIGRvbG9yZSBldSBmdWdpYXQgbnVsbGEgcGFyaWF0dXIuIEV4Y2VwdGV1ciBzaW50IG9jY2FlY2F0IGN1cGlkYXRhdCBub24gcHJvaWRlbnQsIHN1bnQgaW4gY3VscGEgcXVpIG9mZmljaWEgZGVzZXJ1bnQgbW9sbGl0IGFuaW0gaWQgZXN0IGxhYm9ydW0uPC9wPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtbC00XCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBtYXROYXRpdmVDb250cm9sIHJlcXVpcmVkIGNsYXNzPVwic2VjdGlvbi1kZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIj5UcmFuc2NyaXB0aW9uIExhbmd1YWdlOiBFbmdsaXNoIChBdXRvKTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj4gLS0+XG5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbWF0LXRhYj5cblxuICAgICAgICA8IS0tIEFib3V0IFRhYiAtLT5cbiAgICAgICAgPG1hdC10YWIgbGFiZWw9XCJ7eyAnYXBwdG9jc2luZ2xlcGFnZS5hYm91dCcgfCB0cmFuc2xhdGUgfX1cIj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBtYXRUYWJDb250ZW50PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhaS10dXRvci1nZXQtc3RhcnRlZC1tb2JpbGUgbXktMiBtbC0yXCIgKm5nSWY9XCIhdmlld2VyUGFnZSAmJiBlbmFibGVBSVR1dG9yRmxhZyAmJiBpc01vYmlsZVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBhbGlnbi1pdGVtcy1jZW50ZXIgdy05OFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTIgcHktMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2ljb25zL2JvdC1jaGF0LXNtYWxsLnN2Z1wiIGhlaWdodD1cIjQ4cHhcIiB3aWR0aD1cIjQ4cHhcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBhbGlnbi1pdGVtcy1jZW50ZXIgdy02MFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweS0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiZm9udC13ZWlnaHQtNjAwXCI+R2V0IFN0YXJ0ZWQgd2l0aCBBSSBUdXRvcjwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+R2V0IGluc3RhbnQgZXhwbGFuYXRpb25zLCBzdGVwLWJ5LXN0ZXAgbGVhcm5pbmcgZ3VpZGFuY2UsIGFuZCBjdXN0b21pc2VkIGxlYXJuaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWlsb3JlZCBqdXN0IGZvciB5b3UuPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhaS10dXRvci1idG4gcHgtMiBweS0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIChjbGljayk9XCJzaG93QWlUdXRvckNvbmZpcm1Qb3B1cCgpXCI+PGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwiYXNzZXRzL2FpLXR1dG9yL2FpLWljb24uc3ZnXCI+Jm5ic3A7ICZuYnNwOyA8c3BhbiBjbGFzcz1cImFpLXR1dG9yLWxhYmVsXCI+QUlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR1dG9yPC9zcGFuPjwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktZW5kIG15LTIgbXgtMlwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWktdHV0b3ItYnRuIHB4LTIgcHktMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIChjbGljayk9XCJzaG93QWlUdXRvckNvbmZpcm1Qb3B1cCgpXCI+PGltZyBzcmM9XCJhc3NldHMvYWktdHV0b3IvYWktaWNvbi5zdmdcIj4mbmJzcDsgJm5ic3A7IDxzcGFuIGNsYXNzPVwiYWktdHV0b3ItbGFiZWxcIj5BSSBUdXRvcjwvc3Bhbj48L2E+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8d3Mtd2lkZ2V0LWFwcC10b2MtYWJvdXQgW2Zyb21WaWV3ZXJdPVwiZnJvbVZpZXdlclwiIFtwYXRoU2V0XT1cInBhdGhTZXRcIiBbY29udGVudF09XCJjb250ZW50XCJcbiAgICAgICAgICAgICAgICAgICAgW2NvbnRlbnRSZWFkRGF0YV09XCJjb250ZW50UmVhZERhdGFcIiBbYmFzZUNvbnRlbnRSZWFkRGF0YV09XCJiYXNlQ29udGVudFJlYWREYXRhXCJcbiAgICAgICAgICAgICAgICAgICAgW3RvY1N0cnVjdHVyZV09XCJ0b2NTdHJ1Y3R1cmVcIiBbY29uZmlnXT1cImNvbmZpZ1wiIFtmb3JQcmV2aWV3XT1cImZhbHNlXCIgW3N0aWNreV09XCJzdGlja3lcIlxuICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRCYXRjaERhdGFdPVwic2VsZWN0ZWRCYXRjaERhdGFcIiBbc2VsZWN0ZWRUYWJWYWx1ZV09XCJzZWxlY3RlZFRhYkluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgW3Jlc3VtZURhdGFdPVwicmVzdW1lRGF0YVwiIFtiYXRjaERhdGFdPVwiYmF0Y2hEYXRhXCIgW3NrZWxldG9uTG9hZGVyXT1cInNrZWxldG9uTG9hZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgW2NvbmRpdGlvbl09XCJjb25kaXRpb25cIiBba3BhcnJheV09XCJrcGFycmF5XCIgW3Nob3dSZXZpZXdzXT1cIid0cnVlJ1wiIFtsYW5ndWFnZUxpc3RdPVwibGFuZ3VhZ2VMaXN0XCJcbiAgICAgICAgICAgICAgICAgICAgW2xvY2tDZXJ0aWZpY2F0ZV09XCJsb2NrQ2VydGlmaWNhdGVcIiAodHJpZ2VyQ29tcGxldGlvblN1cnZleUZvcm0pPVwib3BlblN1cnZleUZvcm1Qb3B1cCgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgPC93cy13aWRnZXQtYXBwLXRvYy1hYm91dD5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbWF0LXRhYj5cblxuICAgICAgICA8IS0tIENvbnRlbnQgVGFiIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudD8uY2hpbGRyZW4/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgPG1hdC10YWIgbGFiZWw9XCJ7eyAnYXBwdG9jc2luZ2xlcGFnZS5jb250ZW50JyB8IHRyYW5zbGF0ZSB9fVwiICpuZ0lmPVwiY29udGVudFRhYkZsYWdcIj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbWF0VGFiQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgPHdzLXdpZGdldC1hcHAtdG9jLWNvbnRlbnQgW2JhdGNoSWRdPVwiYmF0Y2hJZFwiIFtjb21wb25lbnROYW1lXT1cImNvbXBvbmVudE5hbWVcIiBbcGF0aFNldF09XCJwYXRoU2V0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb250ZW50XT1cImNvbnRlbnRcIiBbdG9jU3RydWN0dXJlXT1cInRvY1N0cnVjdHVyZVwiIFtjb25maWddPVwiY29uZmlnXCIgW2ZvclByZXZpZXddPVwiZm9yUHJldmlld1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcmVzdW1lRGF0YV09XCJyZXN1bWVEYXRhXCIgW2JhdGNoRGF0YV09XCJiYXRjaERhdGFcIiBbc2tlbGV0b25Mb2FkZXJdPVwic2tlbGV0b25Mb2FkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2hpZXJhcmNoeU1hcERhdGFdPVwiaGllcmFyY2h5TWFwRGF0YVwiIFtiYXNlQ29udGVudFJlYWREYXRhXT1cImJhc2VDb250ZW50UmVhZERhdGFcIj5cbiAgICAgICAgICAgICAgICAgICAgPC93cy13aWRnZXQtYXBwLXRvYy1jb250ZW50PlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L21hdC10YWI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25maWc/LmNvbW1lbnRzVGFiICYmICFmb3JQcmV2aWV3XCI+XG4gICAgICAgICAgICA8bWF0LXRhYiBsYWJlbD1cInt7ICdhcHB0b2NzaW5nbGVwYWdlLnN0YXJ0RGlzY3Vzc2lvbicgfCB0cmFuc2xhdGUgfX1cIj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbWF0VGFiQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgcmF0aW5ncy1kaXYgbXQtNVwiIGlkPVwiY29tbWVudHNEaXZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJkaXNjdXNzV2lkZ2V0RGF0YSAmJiBkaXNjdXNzV2lkZ2V0RGF0YT8ubmV3Q29tbWVudFNlY3Rpb24/LmNvbW1lbnRUcmVlRGF0YT8uZW50aXR5SWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY29tbWVudElkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGQtdjItd2lkZ2V0LWNvbW1lbnQgW3dpZGdldERhdGFdPVwiZGlzY3Vzc1dpZGdldERhdGFcIj48L2QtdjItd2lkZ2V0LWNvbW1lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb21tZW50SWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBnYXAtMyBjdXJzb3ItcG9pbnRlciBtYi01XCIgKGNsaWNrKT1cImNsZWFyQ29tbWVudElkRnJvbVVybCgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+YXJyb3dfYmFjazwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhY2sgdG8gYWxsIGNvbW1lbnRzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGQtdjItd2lkZ2V0LWNvbW1lbnQgW3dpZGdldERhdGFdPVwiZGlzY3Vzc1dpZGdldERhdGFcIiBbY29tbWVudElkXT1cImNvbW1lbnRJZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtza2VsZXRvbkxvYWRlcl0+PC9kLXYyLXdpZGdldC1jb21tZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L21hdC10YWI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdJZj1cImNvbmZpZz8uc2FtdWhpa0NoYXJjaGFUYWIgJiYgY29uZGl0aW9uICYmIGNvbnRlbnRSZWFkRGF0YT8uZXZlbnRMaW5rZWQ/Lmxlbmd0aCA+IDAgJiYgZW5hYmxlU2FtdWhpa0NoYXJjaGFUYWJcIj5cbiAgICAgICAgICAgIDxtYXQtdGFiIGxhYmVsPVwie3sgJ2FwcHRvY3NpbmdsZXBhZ2Uuc2FtdWhpa0NoYXJjaGEnIHwgdHJhbnNsYXRlIH19XCI+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG1hdFRhYkNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIHJhdGluZ3MtZGl2IG10LTVcIiBpZD1cInNhbXVoaWtDaGFyY2hhRGl2XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8d3Mtd2lkZ2V0LXNhbXVoaWstY2hhcmNoYS1jb250ZW50IFtjb250ZW50XT1cImNvbnRlbnRSZWFkRGF0YVwiIFtjb25kaXRpb25EYXRhXT1cImNvbmRpdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VtZUNvbnRlbnQpPVwicmVzdW1lQ29udGVudENhbGwoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC93cy13aWRnZXQtc2FtdWhpay1jaGFyY2hhLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L21hdC10YWI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDwhLS0gVGVhY2hlcnMgTm90ZSBUYWIgLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50UmVhZERhdGE/LnJlZmVyZW5jZU5vZGVzICYmIHRlYWNoZXJOb3Rlc0ZsYWdcIj5cbiAgICAgICAgICAgIDxtYXQtdGFiIGxhYmVsPVwiVGVhY2hlcnMgTm90ZVwiPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBtYXRUYWJDb250ZW50PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCByYXRpbmdzLWRpdiBtdC01XCIgaWQ9XCJ0ZWFjaGVyc05vdGVEaXZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx3cy13aWRnZXQtYXBwLXRvYy10ZWFjaGVycy1ub3RlcyBbY29udGVudF09XCJjb250ZW50UmVhZERhdGFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtub3Rlc0Rpc3BsYXlUeXBlXT1cIidUZWFjaGVycyBSZXNvdXJjZSdcIj48L3dzLXdpZGdldC1hcHAtdG9jLXRlYWNoZXJzLW5vdGVzPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9tYXQtdGFiPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8IS0tIFJlZmVyZW5jZSBOb3RlIFRhYiAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnRSZWFkRGF0YT8ucmVmZXJlbmNlTm9kZXMgJiYgcmVmZXJlbmNlTm90ZXNGbGFnXCI+XG4gICAgICAgICAgICA8bWF0LXRhYiBsYWJlbD1cIlJlZmVyZW5jZSBOb3RlXCI+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG1hdFRhYkNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIHJhdGluZ3MtZGl2IG10LTVcIiBpZD1cInRlYWNoZXJzTm90ZURpdlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHdzLXdpZGdldC1hcHAtdG9jLXRlYWNoZXJzLW5vdGVzIFtjb250ZW50XT1cImNvbnRlbnRSZWFkRGF0YVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25vdGVzRGlzcGxheVR5cGVdPVwiJ1JlZmVyZW5jZSBSZXNvdXJjZSdcIj48L3dzLXdpZGdldC1hcHAtdG9jLXRlYWNoZXJzLW5vdGVzPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDx3cy13aWRnZXQtYXBwLXRvYy1yZWZlcmVuY2Utbm90ZXMgW2NvbnRlbnRdPVwiY29udGVudFJlYWREYXRhXCI+PC93cy13aWRnZXQtYXBwLXRvYy1yZWZlcmVuY2Utbm90ZXM+IC0tPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9tYXQtdGFiPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0Fzc2lnbm1lbnRzVGFiICYmICFmb3JQcmV2aWV3XCI+XG4gICAgICAgICAgICA8bWF0LXRhYiBsYWJlbD1cInt7ICdhcHB0b2NzaW5nbGVwYWdlLmFzc2lnbm1lbnRzJyB8IHRyYW5zbGF0ZSB9fVwiPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBtYXRUYWJDb250ZW50PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCByYXRpbmdzLWRpdiBtdC01XCIgaWQ9XCJ0YWtlQXNzZXNzbWVudERpdlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHdzLXdpZGdldC1hcHAtYmF0Y2gtYXNzaWdubWVudHMgW2NvbnRlbnRdPVwiY29udGVudFwiPjwvd3Mtd2lkZ2V0LWFwcC1iYXRjaC1hc3NpZ25tZW50cz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvbWF0LXRhYj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPCEtLSBUcmFuc2NyaXB0aW9uIFRhYiAtLT5cbiAgICAgICAgPG1hdC10YWIgbGFiZWw9XCJBSSBUdXRvclwiICpuZ0lmPVwidmlld2VyUGFnZSAmJiBlbmFibGVBSVR1dG9yRmxhZyAmJiBpc01vYmlsZVwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG1hdC10YWItbGFiZWw+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPkFJIFR1dG9yPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlZC1jaXJjbGUgbWwtNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgTmV3XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG1hdFRhYkNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dBSVR1dG9yUG9wdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx3cy13aWRnZXQtYWktdHV0b3IgW2NvbnRlbnRdPVwiY29udGVudD8uaWRlbnRpZmllclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsb3NlQUlQb3B1cCk9XCJjbG9zZUFJUG9wdXAoJGV2ZW50KVwiPjwvd3Mtd2lkZ2V0LWFpLXR1dG9yPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbWF0LXRhYj5cbiAgICA8L21hdC10YWItZ3JvdXA+XG48L2Rpdj4iXX0=
|
|
832
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC10b2MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL19jb2xsZWN0aW9uL19jb21tb24vY29udGVudC10b2MvY29udGVudC10b2MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL19jb2xsZWN0aW9uL19jb21tb24vY29udGVudC10b2MvY29udGVudC10b2MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQTRCLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFakwsT0FBTyxFQUF1RCxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQU1wRyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQTtBQUN4RyxPQUFPLEVBQWdDLHFCQUFxQixJQUFJLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFBO0FBQ3hILE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFBO0FBRzNFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFcEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBRS9DLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFBO0FBQzNCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU9wRCxNQUFNLE9BQU8sbUJBQW1CO0lBcUU5QixZQUNVLEtB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ckIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDSSxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csMEJBQTBCO3NCQUFuQyxNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBc1ZQLFlBQVk7c0JBRFgsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbmplY3QsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBRdWVyeUxpc3QsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCwgVmlld0NoaWxkcmVuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInXG5pbXBvcnQgeyBDb25maWd1cmF0aW9uc1NlcnZpY2UsIEV2ZW50U2VydmljZSwgVXRpbGl0eVNlcnZpY2UsIFdzRXZlbnRzIH0gZnJvbSAnQHN1bmJpcmQtY2IvdXRpbHMtdjInXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJ1xuXG5pbXBvcnQgeyBMb2FkQ2hlY2tTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbG9hZC1jaGVjay5zZXJ2aWNlJ1xuaW1wb3J0IHsgTWF0TGVnYWN5VGFiR3JvdXAgYXMgTWF0VGFiR3JvdXAsIE1hdExlZ2FjeVRhYkNoYW5nZUV2ZW50IGFzIE1hdFRhYkNoYW5nZUV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LXRhYnMnXG5pbXBvcnQgeyBOc0Rpc2N1c3Npb25WMiB9IGZyb20gJ0BzdW5iaXJkLWNiL2Rpc2N1c3Npb24tdjInXG5pbXBvcnQgeyBBaVR1dG9yQ29uZmlybVBvcHVwQ29tcG9uZW50IH0gZnJvbSAnLi9haS10dXRvci1jb25maXJtLXBvcHVwL2FpLXR1dG9yLWNvbmZpcm0tcG9wdXAuY29tcG9uZW50J1xuaW1wb3J0IHsgTWF0TGVnYWN5RGlhbG9nIGFzIE1hdERpYWxvZywgTWF0TGVnYWN5RGlhbG9nQ29uZmlnIGFzIE1hdERpYWxvZ0NvbmZpZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xlZ2FjeS1kaWFsb2cnXG5pbXBvcnQgeyB2aWV3ZXJSb3V0ZUdlbmVyYXRvciB9IGZyb20gJy4uLy4uLy4uL19zZXJ2aWNlcy92aWV3ZXItcm91dGUtdXRpbCdcbmltcG9ydCB7IEFwcFRvY1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hcHAtdG9jLnNlcnZpY2UnXG5pbXBvcnQgeyBBY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYWN0aW9uLnNlcnZpY2UnXG5pbXBvcnQgeyBWdHRGaWxlIH0gZnJvbSAnQHBvbHlmbGl4L3Z0dC1wYXJzZXInXG5pbXBvcnQgeyB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcbmltcG9ydCB7IFZpZXdlckRhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdmlld2VyLWRhdGEuc2VydmljZSdcbmltcG9ydCB7IE1hdFRhYiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYnMnXG5pbXBvcnQgeyBTYW11aGlrQ2hhcmNoYVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fc2VydmljZXMvc2FtdWhpay1jaGFyY2hhLnNlcnZpY2UnXG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCdcbmltcG9ydCB7IE5zQ29udGVudCB9IGZyb20gJy4uLy4uLy4uL19jb2xsZWN0aW9uLWFwaSdcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3dzLXdpZGdldC1jb250ZW50LXRvYycsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb250ZW50LXRvYy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvbnRlbnQtdG9jLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuXG5leHBvcnQgY2xhc3MgQ29udGVudFRvY0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzIHtcblxuICB0YWJDaGFuZ2VWYWx1ZTogYW55ID0gJydcbiAgQElucHV0KCkgY29udGVudCE6IGFueVxuICBASW5wdXQoKSBjb250ZW50UmVhZERhdGEhOiBhbnlcbiAgQElucHV0KCkgaW5pdGlhbFJvdXRlRGF0YTogYW55XG4gIEBJbnB1dCgpIGNoYW5nZVRhYiA9IGZhbHNlXG4gIEBJbnB1dCgpIGJhc2VDb250ZW50UmVhZERhdGEhOiBhbnlcbiAgcm91dGVTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsXG4gIEBJbnB1dCgpIGZvclByZXZpZXcgPSB3aW5kb3cubG9jYXRpb24uaHJlZi5pbmNsdWRlcygnL3B1YmxpYy8nKSB8fCB3aW5kb3cubG9jYXRpb24uaHJlZi5pbmNsdWRlcygnJnByZXZpZXc9dHJ1ZScpXG4gIEBJbnB1dCgpIGNvbnRlbnRUYWJGbGFnID0gdHJ1ZVxuICBASW5wdXQoKSByZXN1bWVEYXRhOiBhbnkgfCBudWxsID0gbnVsbFxuICBASW5wdXQoKSBiYXRjaERhdGE6IC8qKk5zQ29udGVudC5JQmF0Y2hMaXN0UmVzcG9uc2UgKi8gYW55IHwgbnVsbCA9IG51bGxcbiAgQElucHV0KCkgc2tlbGV0b25Mb2FkZXIgPSBmYWxzZVxuICBASW5wdXQoKSB0b2NTdHJ1Y3R1cmU6IGFueSA9IHt9XG4gIEBJbnB1dCgpIHBhdGhTZXQ6IGFueVxuICBASW5wdXQoKSBmcm9tVmlld2VyID0gZmFsc2VcbiAgQElucHV0KCkgaGllcmFyY2h5TWFwRGF0YTogYW55ID0ge31cbiAgQFZpZXdDaGlsZCgnc3RpY2t5TWVudScpIHRhYkVsZW1lbnQhOiBNYXRUYWJHcm91cFxuICBAVmlld0NoaWxkcmVuKE1hdFRhYikgdGFicyE6IFF1ZXJ5TGlzdDxNYXRUYWI+XG4gIEBJbnB1dCgpIGNvbmRpdGlvbjogYW55XG4gIEBJbnB1dCgpIGtwYXJyYXk6IGFueVxuICBASW5wdXQoKSBzZWxlY3RlZEJhdGNoRGF0YTogYW55XG4gIEBJbnB1dCgpIGNvbmZpZzogYW55XG4gIEBJbnB1dCgpIGNvbXBvbmVudE5hbWUhOiBzdHJpbmdcbiAgQElucHV0KCkgaXNFbnJvbGxlZCE6IGJvb2xlYW5cbiAgQElucHV0KCkgcGxheVJlc291cmNlSWQgPSAnJ1xuICBASW5wdXQoKSBzaWRlTmF2QmFyT3BlbmVkID0gZmFsc2VcbiAgQElucHV0KCkgbGFuZ3VhZ2VMaXN0ID0gW11cbiAgQElucHV0KCkgbG9ja0NlcnRpZmljYXRlID0gZmFsc2VcbiAgQE91dHB1dCgpIHBsYXlSZXN1bWVGb3JBSSA9IG5ldyBFdmVudEVtaXR0ZXIoKVxuICBAT3V0cHV0KCkgZW5yb2xsVXNlclRvQUkgPSBuZXcgRXZlbnRFbWl0dGVyKClcbiAgQE91dHB1dCgpIHRyaWdlckNvbXBsZXRpb25TdXJ2ZXlGb3JtID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpXG4gIEBPdXRwdXQoKSByZXN1bWVDb250ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpXG5cbiAgY29tbWVudElkPzogc3RyaW5nID0gJydcbiAgc3RpY2t5ID0gZmFsc2VcbiAgbWVudVBvc2l0aW9uOiBhbnlcbiAgaXNNb2JpbGUgPSBmYWxzZVxuICBzZWxlY3RlZFRhYkluZGV4ID0gMFxuICBkaXNjdXNzV2lkZ2V0RGF0YSE6IE5zRGlzY3Vzc2lvblYyLklDb21tZW50V2lkZ2V0RGF0YVxuICB0ZWFjaGVyTm90ZXNGbGFnID0gZmFsc2VcbiAgcmVmZXJlbmNlTm90ZXNGbGFnID0gZmFsc2VcbiAgdmlld2VyUGFnZSA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluY2x1ZGVzKCcvdmlld2VyLycpID8gdHJ1ZSA6IGZhbHNlXG4gIHJlc3VtZURhdGFMaW5rOiBhbnlcbiAgZW5hYmxlQUlUdXRvckZsYWcgPSBmYWxzZVxuICBlbmFibGVUcmFuc2NyaXB0aW9uRmxhZyA9IGZhbHNlXG4gIGNvdXJzZUNhdGVnb3J5ID0gTnNDb250ZW50LkVDb3Vyc2VDYXRlZ29yeVxuICBzdWJUaXRsZXMkOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbFxuICByZXNvdXJjZUlkZW50aWZpZXI6IGFueVxuICByZXNvdXJjZUlkZW50aWZpZXIkOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbFxuICBzdWJUaXRsZXM6IGFueSA9IFtdXG4gIGtleXdvcmRUb0hpZ2hsaWdodDogYW55ID0gJydcbiAgaGlnaGxpZ2h0Q29uZGl0aW9uID0gZmFsc2VcbiAgdnR0TGFuZ0FycjogYW55ID0gW11cbiAgdHJhbnNjcmlwdGlvbkFjdGl2ZUxhbmd1YWdlID0gJ2VuJ1xuICBkZWZhdWx0VHJhbnNjcmlwdExhbmd1YWdlID0gJ2VuJ1xuICB0cmFuc3JpcHRpb25MYW5ndWFnZVN1YjogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IG51bGxcbiAgc2VsZWN0ZWRUcmFuc2NyaXB0aW9uU3R5bGU6IGFueVxuICBmcm9tQUlUdXRvciA9IGZhbHNlXG4gIHRvdGFsUmVzb3VyY2UgPSAwXG4gIHNjb3JtQXNzZXNzbWVudENvdW50ID0gMFxuICBzaG93QUlUdXRvclBvcHVwID0gZmFsc2VcbiAgZnJvbUFJU2VsZWN0ZWRUYWJJbmRleCA9IGZhbHNlXG4gIGlzTW9iaWxlRm9yQUkgPSBmYWxzZVxuICB0cmFuc2NyaXB0QWN0aXZlTGFuZ3VhZ2VUZXh0ID0gJ0VuZ2xpc2gnXG4gIHNob3dBc3NpZ25tZW50c1RhYiA9IGZhbHNlXG4gIGVuYWJsZVNhbXVoaWtDaGFyY2hhVGFiID0gZmFsc2VcbiAgc2FtdWhpa0NvbmZpZzogYW55XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgdXRpbGl0eVNlcnZpY2U6IFV0aWxpdHlTZXJ2aWNlLFxuICAgIHByaXZhdGUgbG9hZENoZWNrU2VydmljZTogTG9hZENoZWNrU2VydmljZSxcbiAgICBwcml2YXRlIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ3VyYXRpb25zU2VydmljZSxcbiAgICBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgcHVibGljIHRvY1N2YzogQXBwVG9jU2VydmljZSxcbiAgICBwcml2YXRlIGFjdGlvblNWQzogQWN0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgZXZlbnRTdmM6IEV2ZW50U2VydmljZSxcbiAgICBwcml2YXRlIHZpZXdlckRhdGFTdmM6IFZpZXdlckRhdGFTZXJ2aWNlLFxuICAgIHByaXZhdGUgc2FtdWhpa0NoYXJjaGFTdmM6IFNhbXVoaWtDaGFyY2hhU2VydmljZSxcbiAgICBASW5qZWN0KCdlbnZpcm9ubWVudCcpIHByaXZhdGUgZW52aXJvbm1lbnQ6IGFueVxuXG4gICkgeyB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuY29uZmlnU2VydmljZS5pR09UQUlDb25maWcgJiYgdGhpcy5jb25maWdTZXJ2aWNlLmlHT1RBSUNvbmZpZz8uYWlUdXRvciAmJiB0aGlzLmNvbmZpZ1NlcnZpY2UuaUdPVEFJQ29uZmlnPy5haVR1dG9yPy5hbGwpIHtcbiAgICAgIHRoaXMuZW5hYmxlQUlUdXRvckZsYWcgPSB0aGlzLm9ubHlzY29ybUFzc2Vzc21lbnRFeGlzdHModGhpcy5yb3V0ZS5zbmFwc2hvdD8uZGF0YT8uY29udGVudD8uZGF0YT8uY2hpbGRyZW4sICdtaW1lVHlwZScsIFsnYXBwbGljYXRpb24vdm5kLmVrc3RlcC5odG1sLWFyY2hpdmUnLCAnYXBwbGljYXRpb24vdm5kLnN1bmJpcmQucXVlc3Rpb25zZXQnLCAnYXBwbGljYXRpb24vanNvbicsICd0ZXh0L3gtdXJsJ10pXG4gICAgICAvLyB0aGlzLmVuYWJsZUFJVHV0b3JGbGFnID0gdHJ1ZVxuICAgIH0gZWxzZSBpZiAodGhpcy5jb25maWdTZXJ2aWNlLmlHT1RBSUNvbmZpZyAmJiB0aGlzLmNvbmZpZ1NlcnZpY2UuaUdPVEFJQ29uZmlnPy5haVR1dG9yICYmIHRoaXMuY29uZmlnU2VydmljZS5pR09UQUlDb25maWc/LmFpVHV0b3I/LmZvck9yZyAmJiB0aGlzLmNvbmZpZ1NlcnZpY2UuaUdPVEFJQ29uZmlnLmFpVHV0b3I/LmZvck9yZz8ubGVuZ3RoICYmXG4gICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuaUdPVEFJQ29uZmlnPy5haVR1dG9yPy5mb3JPcmcuaW5jbHVkZXModGhpcy5jb25maWdTZXJ2aWNlLnVzZXJQcm9maWxlPy5yb290T3JnSWQpXG4gICAgKSB7XG4gICAgICB0aGlzLmVuYWJsZUFJVHV0b3JGbGFnID0gdGhpcy5vbmx5c2Nvcm1Bc3Nlc3NtZW50RXhpc3RzKHRoaXMucm91dGUuc25hcHNob3Q/LmRhdGE/LmNvbnRlbnQ/LmRhdGE/LmNoaWxkcmVuLCAnbWltZVR5cGUnLCBbJ2FwcGxpY2F0aW9uL3ZuZC5la3N0ZXAuaHRtbC1hcmNoaXZlJywgJ2FwcGxpY2F0aW9uL3ZuZC5zdW5iaXJkLnF1ZXN0aW9uc2V0JywgJ2FwcGxpY2F0aW9uL2pzb24nLCAndGV4dC94LXVybCddKVxuICAgICAgLy8gdGhpcy5lbmFibGVBSVR1dG9yRmxhZyA9IHRydWVcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lbmFibGVBSVR1dG9yRmxhZyA9IGZhbHNlXG4gICAgfVxuICAgICBpZih0aGlzLmNvbnRlbnQgJiYgdGhpcy5jb250ZW50LmNvdXJzZUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRUNvdXJzZUNhdGVnb3J5LkxFQVJOSU5HX1BBVEhXQVkpIHtcbiAgICAgIHRoaXMuZW5hYmxlQUlUdXRvckZsYWcgPSBmYWxzZVxuICAgIH1cbiAgICBpZiAodGhpcy5jb25maWdTZXJ2aWNlLmlHT1RBSUNvbmZpZyAmJiB0aGlzLmNvbmZpZ1NlcnZpY2UuaUdPVEFJQ29uZmlnPy50cmFuc2NyaXB0aW9uPy5hbGwpIHtcbiAgICAgIC8vIHRoaXMucmVzb3VyY2VJZGVudGlmaWVyJCA9IHRoaXMudG9jU3ZjLnRyYW5zcmlwdGlvbklkZW50aWZpZXIuc3Vic2NyaWJlKCh2YWx1ZTphbnkpPT57XG4gICAgICAvLyAgIGlmKHZhbHVlICYmICB2YWx1ZT8uaWRlbnRpZmllcikge1xuICAgICAgLy8gICAgIHRoaXMucmVzb3VyY2VJZGVudGlmaWVyID0gdmFsdWU/LmlkZW50aWZpZXIgLy92YWx1ZT8uaWRlbnRpZmllciAvLyBkb18xMTM4ODkxMTk4NDg5MDY3NTIxMTQ3XG4gICAgICAvLyAgICAgdGhpcy5wYXJzZVZUVCgpXG4gICAgICAvLyAgIH1cblxuICAgICAgLy8gfSlcblxuICAgICAgdGhpcy5zdWJUaXRsZXMkID0gdGhpcy50b2NTdmMudHJhbnNjcmlwdGlvbkRhdGEkLnN1YnNjcmliZSgodmFsdWU6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmtleXdvcmRUb0hpZ2hsaWdodCA9IHZhbHVlXG4gICAgICB9KVxuXG4gICAgICB0aGlzLnRyYW5zcmlwdGlvbkxhbmd1YWdlU3ViID0gdGhpcy50b2NTdmMudHJhbnNyaXB0aW9uQWN0aXZlTGFuZ3VhZ2VEYXRhT2JqZWN0JFxuICAgICAgICAucGlwZShcbiAgICAgICAgICB0YXAoKGxhbmd2YWx1ZTogYW55KSA9PiBjb25zb2xlLmxvZygndGFwIGxhbmd2YWx1ZTonLCBsYW5ndmFsdWUpKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKGxhbmd2YWx1ZTogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKGxhbmd2YWx1ZSkge1xuICAgICAgICAgICAgLy8gdGhpcy5yZW5kZXJTZWxlY3RlZExhbmd1YWdlVHJhbnNjcmlwdGlvbigpO1xuICAgICAgICAgIH1cblxuICAgICAgICB9KVxuICAgICAgdGhpcy5lbmFibGVUcmFuc2NyaXB0aW9uRmxhZyA9IHRydWVcbiAgICB9IGVsc2UgaWYgKHRoaXMuY29uZmlnU2VydmljZS5pR09UQUlDb25maWcgJiYgdGhpcy5jb25maWdTZXJ2aWNlLmlHT1RBSUNvbmZpZz8udHJhbnNjcmlwdGlvbiAmJiB0aGlzLmNvbmZpZ1NlcnZpY2UuaUdPVEFJQ29uZmlnPy50cmFuc2NyaXB0aW9uPy5mb3JPcmcgJiYgdGhpcy5jb25maWdTZXJ2aWNlLmlHT1RBSUNvbmZpZz8udHJhbnNjcmlwdGlvbj8uZm9yT3JnPy5sZW5ndGggJiZcbiAgICAgIHRoaXMuY29uZmlnU2VydmljZS5pR09UQUlDb25maWc/LnRyYW5zY3JpcHRpb24/LmZvck9yZz8uaW5jbHVkZXModGhpcy5jb25maWdTZXJ2aWNlLnVzZXJQcm9maWxlPy5yb290T3JnSWQpXG4gICAgKSB7XG4gICAgICAvLyB0aGlzLnJlc291cmNlSWRlbnRpZmllciQgPSB0aGlzLnRvY1N2Yy50cmFuc3JpcHRpb25JZGVudGlmaWVyLnN1YnNjcmliZSgodmFsdWU6YW55KT0+e1xuICAgICAgLy8gICBpZih2YWx1ZSAmJiAgdmFsdWU/LmlkZW50aWZpZXIpIHtcbiAgICAgIC8vICAgICB0aGlzLnJlc291cmNlSWRlbnRpZmllciA9IHZhbHVlPy5pZGVudGlmaWVyIC8vdmFsdWU/LmlkZW50aWZpZXIgLy8gZG9fMTEzODg5MTE5ODQ4OTA2NzUyMTE0N1xuICAgICAgLy8gICAgIHRoaXMucGFyc2VWVFQoKVxuICAgICAgLy8gICB9XG5cbiAgICAgIC8vIH0pXG5cbiAgICAgIHRoaXMuc3ViVGl0bGVzJCA9IHRoaXMudG9jU3ZjLnRyYW5zY3JpcHRpb25EYXRhJC5zdWJzY3JpYmUoKHZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5rZXl3b3JkVG9IaWdobGlnaHQgPSB2YWx1ZVxuICAgICAgfSlcblxuICAgICAgdGhpcy50cmFuc3JpcHRpb25MYW5ndWFnZVN1YiA9IHRoaXMudG9jU3ZjLnRyYW5zcmlwdGlvbkFjdGl2ZUxhbmd1YWdlRGF0YU9iamVjdCRcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFwKChsYW5ndmFsdWU6IGFueSkgPT4gY29uc29sZS5sb2coJ3RhcCBsYW5ndmFsdWU6JywgbGFuZ3ZhbHVlKSlcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKChsYW5ndmFsdWU6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChsYW5ndmFsdWUpIHtcbiAgICAgICAgICAgIC8vIHRoaXMucmVuZGVyU2VsZWN0ZWRMYW5ndWFnZVRyYW5zY3JpcHRpb24oKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgfSlcbiAgICAgIHRoaXMuZW5hYmxlVHJhbnNjcmlwdGlvbkZsYWcgPSB0cnVlXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZW5hYmxlVHJhbnNjcmlwdGlvbkZsYWcgPSBmYWxzZVxuICAgIH1cblxuICAgIGNvbnN0IGJhdGNoSWQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zLmJhdGNoSWQgP1xuICAgICAgdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcy5iYXRjaElkIDogJydcbiAgICBpZiAoYmF0Y2hJZCkge1xuICAgICAgdGhpcy5zZWxlY3RlZFRhYkluZGV4ID0gMVxuICAgIH1cbiAgICB0aGlzLmNvbW1lbnRJZCA9IHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMuY29tbWVudElkID8gdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcy5jb21tZW50SWQgOiAnJ1xuICAgIGlmICh0aGlzLmNvbW1lbnRJZCkge1xuICAgICAgdGhpcy5zZWxlY3RlZFRhYkluZGV4ID0gMlxuICAgIH1cblxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuaXNNb2JpbGUgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmlzTW9iaWxlXG4gICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoIDwgMTQ4MCkge1xuICAgICAgdGhpcy5pc01vYmlsZUZvckFJID0gdHJ1ZVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzTW9iaWxlRm9yQUkgPSBmYWxzZVxuICAgIH1cbiAgICB0aGlzLm1lbnVQb3NpdGlvbiA9IHRoaXMudGFiRWxlbWVudC5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldFRvcFxuXG4gICAgdGhpcy5yb3V0ZS5xdWVyeVBhcmFtTWFwLnN1YnNjcmliZShhc3luYyAocGFyYW1zOiBhbnkpID0+IHtcblxuICAgICAgbGV0IGZyb21BSVR1dG9yID0gcGFyYW1zLmdldCgnZnJvbUFJVHV0b3InKVxuXG4gICAgICBpZiAoKGZyb21BSVR1dG9yID09PSAndHJ1ZScgfHwgZnJvbUFJVHV0b3IgPT09IHRydWUpICYmIHRoaXMuaXNNb2JpbGUpIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgdGFic0FycmF5ID0gdGhpcy50YWJzPy50b0FycmF5KClcbiAgICAgICAgICBsZXQgaW5kZXggPSB0YWJzQXJyYXk/LmZpbmRJbmRleCh0YWIgPT4gdGFiLnRleHRMYWJlbC50cmltKCkgPT09IFwiQUkgVHV0b3JcIi50cmltKCkpXG4gICAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUYWJJbmRleCA9IGluZGV4XG4gICAgICAgICAgICB0aGlzLmZyb21BSVNlbGVjdGVkVGFiSW5kZXggPSB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9LCAzMDAwKVxuXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGdldCBnZXRDdXJyZW50VGltZUluVVRDKCk6IHN0cmluZyB7XG4gICAgY29uc3QgY3VycmVudERhdGUgPSBuZXcgRGF0ZSgpXG4gICAgY29uc3QgaXNvU3RyaW5nID0gY3VycmVudERhdGUudG9JU09TdHJpbmcoKVxuICAgIHJldHVybiBpc29TdHJpbmcucmVwbGFjZSgnWicsICcrMDAwMCcpXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldFNhbXVoaWtDb25maWcoKSB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuc2FtdWhpa0NvbmZpZyA9IGF3YWl0IHRoaXMuc2FtdWhpa0NoYXJjaGFTdmMuZmV0Y2hDb25maWdGaWxlKCkudG9Qcm9taXNlKClcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcblxuICAgIHRoaXMucmVzb3VyY2VJZGVudGlmaWVyID0gdGhpcy52aWV3ZXJEYXRhU3ZjLnJlc291cmNlSWRcblxuICAgIGlmICh0aGlzLmNvbmZpZ1NlcnZpY2UuaUdPVEFJQ29uZmlnICYmIHRoaXMuY29uZmlnU2VydmljZS5pR09UQUlDb25maWc/LnRyYW5zY3JpcHRpb24/LmFsbCkge1xuICAgICAgdGhpcy5lbmFibGVUcmFuc2NyaXB0aW9uRmxhZyA9IHRydWVcbiAgICB9IGVsc2UgaWYgKHRoaXMuY29uZmlnU2VydmljZS5pR09UQUlDb25maWcgJiYgdGhpcy5jb25maWdTZXJ2aWNlLmlHT1RBSUNvbmZpZz8udHJhbnNjcmlwdGlvbiAmJiB0aGlzLmNvbmZpZ1NlcnZpY2UuaUdPVEFJQ29uZmlnPy50cmFuc2NyaXB0aW9uPy5mb3JPcmcgJiYgdGhpcy5jb25maWdTZXJ2aWNlLmlHT1RBSUNvbmZpZz8udHJhbnNjcmlwdGlvbj8uZm9yT3JnPy5sZW5ndGggJiZcbiAgICAgIHRoaXMuY29uZmlnU2VydmljZS5pR09UQUlDb25maWc/LnRyYW5zY3JpcHRpb24/LmZvck9yZz8uaW5jbHVkZXModGhpcy5jb25maWdTZXJ2aWNlPy51c2VyUHJvZmlsZT8ucm9vdE9yZ0lkKVxuICAgICkge1xuICAgICAgdGhpcy5lbmFibGVUcmFuc2NyaXB0aW9uRmxhZyA9IHRydWVcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lbmFibGVUcmFuc2NyaXB0aW9uRmxhZyA9IGZhbHNlXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29uZmlnU2VydmljZS5pR09UQUlDb25maWcgJiYgdGhpcy5jb25maWdTZXJ2aWNlLmlHT1RBSUNvbmZpZz8uYWlUdXRvciAmJiB0aGlzLmNvbmZpZ1NlcnZpY2UuaUdPVEFJQ29uZmlnLmFpVHV0b3I/LmFsbCkge1xuICAgICAgdGhpcy5lbmFibGVBSVR1dG9yRmxhZyA9IHRoaXMub25seXNjb3JtQXNzZXNzbWVudEV4aXN0cyh0aGlzLmNvbnRlbnQ/LmNoaWxkcmVuLCAnbWltZVR5cGUnLCBbJ2FwcGxpY2F0aW9uL3ZuZC5la3N0ZXAuaHRtbC1hcmNoaXZlJywgJ2FwcGxpY2F0aW9uL3ZuZC5zdW5iaXJkLnF1ZXN0aW9uc2V0JywgJ2FwcGxpY2F0aW9uL2pzb24nLCAndGV4dC94LXVybCddKVxuICAgICAgLy8gdGhpcy5lbmFibGVBSVR1dG9yRmxhZyA9IHRydWVcbiAgICB9IGVsc2UgaWYgKHRoaXMuY29uZmlnU2VydmljZS5pR09UQUlDb25maWcgJiYgdGhpcy5jb25maWdTZXJ2aWNlLmlHT1RBSUNvbmZpZz8uYWlUdXRvciAmJiB0aGlzLmNvbmZpZ1NlcnZpY2UuaUdPVEFJQ29uZmlnPy5haVR1dG9yPy5mb3JPcmcgJiYgdGhpcy5jb25maWdTZXJ2aWNlLmlHT1RBSUNvbmZpZz8uYWlUdXRvcj8uZm9yT3JnPy5sZW5ndGhcbiAgICAgICYmIHRoaXMuY29uZmlnU2VydmljZS5pR09UQUlDb25maWcuYWlUdXRvcj8uZm9yT3JnPy5pbmNsdWRlcyh0aGlzLmNvbmZpZ1NlcnZpY2U/LnVzZXJQcm9maWxlPy5yb290T3JnSWQpXG4gICAgKSB7XG4gICAgICB0aGlzLmVuYWJsZUFJVHV0b3JGbGFnID0gdGhpcy5vbmx5c2Nvcm1Bc3Nlc3NtZW50RXhpc3RzKHRoaXMuY29udGVudD8uY2hpbGRyZW4sICdtaW1lVHlwZScsIFsnYXBwbGljYXRpb24vdm5kLmVrc3RlcC5odG1sLWFyY2hpdmUnLCAnYXBwbGljYXRpb24vdm5kLnN1bmJpcmQucXVlc3Rpb25zZXQnLCAnYXBwbGljYXRpb24vanNvbicsICd0ZXh0L3gtdXJsJ10pXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZW5hYmxlQUlUdXRvckZsYWcgPSBmYWxzZVxuICAgIH1cblxuICAgIGlmKHRoaXMuY29udGVudCAmJiB0aGlzLmNvbnRlbnQuY291cnNlQ2F0ZWdvcnkgPT09IE5zQ29udGVudC5FQ291cnNlQ2F0ZWdvcnkuTEVBUk5JTkdfUEFUSFdBWSkge1xuICAgICAgdGhpcy5lbmFibGVBSVR1dG9yRmxhZyA9IGZhbHNlXG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXMgJiYgY2hhbmdlc1sncGxheVJlc291cmNlSWQnXSkge1xuICAgICAgaWYgKGNoYW5nZXM/LnBsYXlSZXNvdXJjZUlkPy5wcmV2aW91c1ZhbHVlICE9PSBjaGFuZ2VzPy5wbGF5UmVzb3VyY2VJZD8uY3VycmVudFZhbHVlKSB7XG4gICAgICAgIGlmICh0aGlzLnZpZXdlclBhZ2UgJiYgdGhpcy5lbmFibGVUcmFuc2NyaXB0aW9uRmxhZykge1xuICAgICAgICAgIHRoaXMucmVzb3VyY2VJZGVudGlmaWVyID0gdGhpcy5wbGF5UmVzb3VyY2VJZCB8fCB0aGlzLnZpZXdlckRhdGFTdmM/LnJlc291cmNlSWRcbiAgICAgICAgICB0aGlzLnN1YlRpdGxlcyA9IFtdXG4gICAgICAgICAgdGhpcy52dHRMYW5nQXJyID0gW11cbiAgICAgICAgICB0aGlzLnBhcnNlVlRUKClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoY2hhbmdlcy5jaGFuZ2VUYWIgJiYgY2hhbmdlcy5jaGFuZ2VUYWIuY3VycmVudFZhbHVlICYmICF0aGlzLmZyb21BSVNlbGVjdGVkVGFiSW5kZXgpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRUYWJJbmRleCA9IDFcbiAgICB9XG4gICAgaWYgKHRoaXMucm91dGUuc25hcHNob3QuZGF0YS5wYWdlRGF0YSAmJiB0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGEucGFnZURhdGEuZGF0YSkge1xuICAgICAgdGhpcy5jb25maWcgPSB0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGEucGFnZURhdGEuZGF0YVxuICAgIH1cbiAgICBpZiAodGhpcy5jb25maWcgJiYgdGhpcy5jb25maWcuZGlzY3Vzc1dpZGdldERhdGEpIHtcbiAgICAgIHRoaXMuZGlzY3Vzc1dpZGdldERhdGEgPSB0aGlzLmNvbmZpZy5kaXNjdXNzV2lkZ2V0RGF0YVxuICAgICAgaWYgKHRoaXMuYmFzZUNvbnRlbnRSZWFkRGF0YSAmJiB0aGlzLmJhc2VDb250ZW50UmVhZERhdGEuaWRlbnRpZmllcikge1xuICAgICAgICBpZiAoIXRoaXMuZGlzY3Vzc1dpZGdldERhdGEubmV3Q29tbWVudFNlY3Rpb24uY29tbWVudFRyZWVEYXRhLmVudGl0eUlkKSB7XG4gICAgICAgICAgdGhpcy5kaXNjdXNzV2lkZ2V0RGF0YS5uZXdDb21tZW50U2VjdGlvbi5jb21tZW50VHJlZURhdGEuZW50aXR5SWQgPSB0aGlzLmJhc2VDb250ZW50UmVhZERhdGEuaWRlbnRpZmllclxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmRpc2N1c3NXaWRnZXREYXRhLmNvbW1lbnRzTGlzdC5yZXBsaWVzU2VjdGlvbiAmJiB0aGlzLmRpc2N1c3NXaWRnZXREYXRhLmNvbW1lbnRzTGlzdC5yZXBsaWVzU2VjdGlvbi5uZXdDb21tZW50UmVwbHkpIHtcbiAgICAgICAgICB0aGlzLmRpc2N1c3NXaWRnZXREYXRhLmNvbW1lbnRzTGlzdC5yZXBsaWVzU2VjdGlvbi5uZXdDb21tZW50UmVwbHkuY29tbWVudFRyZWVEYXRhLmVudGl0eUlkID0gdGhpcy5iYXNlQ29udGVudFJlYWREYXRhLmlkZW50aWZpZXJcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5pc0Vucm9sbGVkKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbnRlbnQgJiYgdGhpcy5jb250ZW50LnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVDb3Vyc2VDYXRlZ29yeS5CTEVOREVEX1BST0dSQU0pIHtcbiAgICAgICAgICB0aGlzLnNob3dBc3NpZ25tZW50c1RhYiA9IHRydWVcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRpc2N1c3NXaWRnZXREYXRhLmVucm9sbGVkQ29udGVudCA9IHRydWVcbiAgICAgICAgdGhpcy5kaXNjdXNzV2lkZ2V0RGF0YS5uZXdDb21tZW50U2VjdGlvbi5jb21tZW50Qm94LnBsYWNlaG9sZGVyID0gJ1N0YXJ0IGEgZGlzY3Vzc2lvbidcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGlzY3Vzc1dpZGdldERhdGEuZW5yb2xsZWRDb250ZW50ID0gZmFsc2VcbiAgICAgICAgdGhpcy5kaXNjdXNzV2lkZ2V0RGF0YS5uZXdDb21tZW50U2VjdGlvbi5jb21tZW50Qm94LnBsYWNlaG9sZGVyID0gJ0Vucm9sIHRvIGFkZCB5b3VyIGNvbW1lbnRzJ1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuY29tbWVudElkKSB7XG4gICAgICAgIHRoaXMuZGlzY3Vzc1dpZGdldERhdGEubmV3Q29tbWVudFNlY3Rpb24uc2hvdyA9IGZhbHNlXG4gICAgICB9XG4gICAgICB0aGlzLmRpc2N1c3NXaWRnZXREYXRhID0geyAuLi50aGlzLmRpc2N1c3NXaWRnZXREYXRhIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb250ZW50UmVhZERhdGEgJiYgdGhpcy5jb250ZW50UmVhZERhdGE/LmV2ZW50TGlua2VkPy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IG9yZ0lkID0gXy5nZXQodGhpcy5jb25maWdTZXJ2aWNlLCAndXNlclByb2ZpbGUudXNlclJvb3RPcmcuaWQnLCAnJylcbiAgICAgIGF3YWl0IHRoaXMuZ2V0U2FtdWhpa0NvbmZpZygpXG4gICAgICBjb25zdCBldmVudHNMaW5rZWQgPSB0aGlzLmNvbnRlbnRSZWFkRGF0YS5ldmVudExpbmtlZCB8fCBbXVxuICAgICAgbGV0IGV2ZW50c0RhdGE6IGFueSA9IFtdXG4gICAgICB0aGlzLnNhbXVoaWtDb25maWc/LnN0cmlwc1swXS50YWJzLmZvckVhY2goKGVsZTogYW55KSA9PiB7XG4gICAgICAgIGVsZS5yZXF1ZXN0LnNlYXJjaFY2LnJlcXVlc3QuZmlsdGVycy5pZGVudGlmaWVyID0gZXZlbnRzTGlua2VkXG4gICAgICAgIGVsZS5yZXF1ZXN0LnNlYXJjaFY2LnJlcXVlc3QuZmlsdGVycy5jcmVhdGVkRm9yID0gW29yZ0lkXVxuICAgICAgICBpZiAoZWxlLnJlcXVlc3Quc2VhcmNoVjYucmVxdWVzdC5maWx0ZXJzLmVuZERhdGVUaW1lLmhhc093blByb3BlcnR5KCc+PScpKSB7XG4gICAgICAgICAgZWxlLnJlcXVlc3Quc2VhcmNoVjYucmVxdWVzdC5maWx0ZXJzLmVuZERhdGVUaW1lWyc+PSddID0gdGhpcy5nZXRDdXJyZW50VGltZUluVVRDXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVsZS5yZXF1ZXN0LnNlYXJjaFY2LnJlcXVlc3QuZmlsdGVycy5lbmREYXRlVGltZS5oYXNPd25Qcm9wZXJ0eSgnPCcpKSB7XG4gICAgICAgICAgZWxlLnJlcXVlc3Quc2VhcmNoVjYucmVxdWVzdC5maWx0ZXJzLmVuZERhdGVUaW1lWyc8J10gPSB0aGlzLmdldEN1cnJlbnRUaW1lSW5VVENcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNhbXVoaWtDaGFyY2hhU3ZjLmdldFNlYXJjaFY2UmVzdWx0cyhlbGUucmVxdWVzdC5zZWFyY2hWNikuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChyZXMgJiYgcmVzLnJlc3VsdCAmJiByZXMucmVzdWx0LmNvdW50ICYmIHJlcy5yZXN1bHQ/LkV2ZW50ICYmIHJlcy5yZXN1bHQuRXZlbnQ/Lmxlbmd0aCkge1xuICAgICAgICAgICAgZm9yIChsZXQgZXZlID0gMDsgZXZlIDwgcmVzLnJlc3VsdC5FdmVudD8ubGVuZ3RoOyBldmUrKykge1xuICAgICAgICAgICAgICBpZiAocmVzLnJlc3VsdC5FdmVudFtldmVdWydjcmVhdGVkRm9yJ10gJiYgcmVzLnJlc3VsdC5FdmVudFtldmVdWydjcmVhdGVkRm9yJ10ubGVuZ3RoICYmXG4gICAgICAgICAgICAgICAgcmVzLnJlc3VsdC5FdmVudFtldmVdWydyZXNvdXJjZVR5cGUnXSA9PT0gJ1NhbXVoaWsgQ2hhcmNoYSdcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGV2ZW50c0RhdGEucHVzaChyZXMucmVzdWx0LkV2ZW50W2V2ZV1bJ2NyZWF0ZWRGb3InXVswXSlcbiAgICAgICAgICAgICAgaWYgKGV2ZW50c0RhdGEuaW5jbHVkZXModGhpcy5jb25maWdTZXJ2aWNlLnVzZXJQcm9maWxlPy5yb290T3JnSWQpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbmFibGVTYW11aGlrQ2hhcmNoYVRhYiA9IHRydWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH0pXG5cbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb250ZW50UmVhZERhdGEgJiYgdGhpcy5jb250ZW50UmVhZERhdGEucmVmZXJlbmNlTm9kZXMpIHtcbiAgICAgIHRoaXMuY29udGVudFJlYWREYXRhLnJlZmVyZW5jZU5vZGVzLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICBsZXQgdXNlclJvbGVzOiBTZXQ8c3RyaW5nPiA9IHRoaXMuY29uZmlnU2VydmljZT8udXNlclJvbGVzIHx8IG5ldyBTZXQoKVxuICAgICAgICBsZXQgaGFzRWR1Y2F0b3JSb2xlID0gZmFsc2VcblxuICAgICAgICAvLyBDaGVjayBpZiB1c2VyIGhhcyBNRU5UT1Igcm9sZVxuICAgICAgICBpZiAodXNlclJvbGVzLmhhcygnTUVOVE9SJykgfHxcbiAgICAgICAgICB1c2VyUm9sZXMuaGFzKCdtZW50b3InKSB8fFxuICAgICAgICAgIHVzZXJSb2xlcy5oYXMoJ01lbnRvcicpKSB7XG4gICAgICAgICAgaGFzRWR1Y2F0b3JSb2xlID0gdHJ1ZVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ2hlY2sgbG9jYWwgc3RvcmFnZSBmb3Igc3VydmV5IHJlc3BvbnNlIG9ubHkgaWYgVVJMIGNvbnRhaW5zICdwdWJsaWMnIG9yICdwcmV2aWV3PXRydWUnXG4gICAgICAgIGlmICghaGFzRWR1Y2F0b3JSb2xlICYmIHRoaXMuZm9yUHJldmlldykge1xuICAgICAgICAgIGNvbnN0IHN1cnZleUlkID0gdGhpcy5lbnZpcm9ubWVudC5wdWJsaWNDb250ZW50U3VydmV5SWQgfHwgJydcbiAgICAgICAgICBjb25zdCBjb3Vyc2VJZCA9IHRoaXMuY29udGVudFJlYWREYXRhPy5pZGVudGlmaWVyIHx8ICcnXG4gICAgICAgICAgY29uc3Qgc3RvcmFnZUtleSA9IGBzdXJ2ZXlfJHtzdXJ2ZXlJZH1fJHtjb3Vyc2VJZH1gXG4gICAgICAgICAgY29uc3Qgc3RvcmVkRGF0YSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHN0b3JhZ2VLZXkpXG5cbiAgICAgICAgICBpZiAoc3RvcmVkRGF0YSkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgY29uc3Qgc3VydmV5UmVzcG9uc2VzID0gSlNPTi5wYXJzZShzdG9yZWREYXRhKVxuICAgICAgICAgICAgICBjb25zdCBlZHVjYXRvclF1ZXN0aW9uID0gc3VydmV5UmVzcG9uc2VzLmZpbmQoKHJlc3BvbnNlOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgcmVzcG9uc2UucXVlc3Rpb24gPT09ICdBcmUgeW91IGFuIEVkdWNhdG9yL0ZhY3VsdHkgbWVtYmVyPydcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpZiAoZWR1Y2F0b3JRdWVzdGlvbiAmJiBlZHVjYXRvclF1ZXN0aW9uLmFuc3dlciA9PT0gJ1llcycpIHtcbiAgICAgICAgICAgICAgICBoYXNFZHVjYXRvclJvbGUgPSB0cnVlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHBhcnNpbmcgc3VydmV5IGRhdGEgZnJvbSBsb2NhbCBzdG9yYWdlOicsIGVycm9yKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNldCB0ZWFjaGVyTm90ZXNGbGFnIGlmIHVzZXIgaGFzIGVkdWNhdG9yIHJvbGVcbiAgICAgICAgaWYgKGhhc0VkdWNhdG9yUm9sZSkge1xuICAgICAgICAgIGlmIChpdGVtICYmIGl0ZW0ucmVzb3VyY2VDYXRlZ29yeSAmJiBpdGVtLnJlc291cmNlQ2F0ZWdvcnkgPT09ICdUZWFjaGVycyBSZXNvdXJjZScpIHtcbiAgICAgICAgICAgIHRoaXMudGVhY2hlck5vdGVzRmxhZyA9IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXRlbSAmJiBpdGVtLnJlc291cmNlQ2F0ZWdvcnkgJiYgaXRlbS5yZXNvdXJjZUNhdGVnb3J5ID09PSAnUmVmZXJlbmNlIFJlc291cmNlJykge1xuICAgICAgICAgIHRoaXMucmVmZXJlbmNlTm90ZXNGbGFnID0gdHJ1ZVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgICBpZiAodGhpcy5zaWRlTmF2QmFyT3BlbmVkKSB7XG4gICAgICBpZiAod2luZG93LmlubmVyV2lkdGggPCAxNDgwKSB7XG4gICAgICAgIGlmICh0aGlzLmlzTW9iaWxlRm9yQUkpIHtcbiAgICAgICAgICB0aGlzLmlzTW9iaWxlRm9yQUkgPSBmYWxzZVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmlzTW9iaWxlRm9yQUkgPSBmYWxzZVxuICAgICAgfVxuXG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA8IDE0ODApIHtcbiAgICAgICAgdGhpcy5pc01vYmlsZUZvckFJID0gdHJ1ZVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5pc01vYmlsZUZvckFJID0gZmFsc2VcbiAgICAgIH1cbiAgICB9XG5cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpzY3JvbGwnLCBbJyRldmVudCddKVxuICBoYW5kbGVTY3JvbGwoKSB7XG4gICAgY29uc3Qgd2luZG93U2Nyb2xsID0gd2luZG93LnNjcm9sbFlcbiAgICBpZiAod2luZG93U2Nyb2xsID49ICh0aGlzLm1lbnVQb3NpdGlvbiAtICgodGhpcy5pc01vYmlsZSkgPyA5NiA6IDEwNCkpKSB7XG4gICAgICB0aGlzLnN0aWNreSA9IHRydWVcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdGlja3kgPSBmYWxzZVxuICAgIH1cbiAgfVxuXG4gIGhhbmRsZVRhYkNoYW5nZShldmVudDogTWF0VGFiQ2hhbmdlRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLnRhYkNoYW5nZVZhbHVlID0gZXZlbnQudGFiXG4gICAgdGhpcy5zZWxlY3RlZFRhYkluZGV4ID0gZXZlbnQuaW5kZXhcbiAgICB0aGlzLmxvYWRDaGVja1NlcnZpY2UuY29tcG9uZW50TG9hZGVkKHRydWUpXG4gICAgaWYgKGV2ZW50ICYmIGV2ZW50LnRhYi50ZXh0TGFiZWwgPT09ICdBSSBUdXRvcicpIHtcbiAgICAgIHRoaXMuc2hvd0FJVHV0b3JQb3B1cCA9IHRydWVcbiAgICB9XG4gICAgaWYgKGV2ZW50ICYmIGV2ZW50LmluZGV4ID09PSAwICYmIGV2ZW50LnRhYi50ZXh0TGFiZWwgPT09ICdUcmFuc2NyaXB0aW9uJykge1xuICAgICAgdGhpcy5yYWlzZVRyYW5zY3JpcHRpb25UYWJTdGFydFRlbGVtZXRyeSgpXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5yYWlzZVRyYW5zY3JpcHRpb25UYWJJbnRlcmFjdFRlbGVtZXRyeSgpXG4gICAgICB9LCAxMDAwKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJhaXNlVHJhbnNjcmlwdGlvblRhYlN0b3BUZWxlbWV0cnkoKVxuICAgIH1cblxuICB9XG5cbiAgc2hvd0FpVHV0b3JDb25maXJtUG9wdXAoKSB7XG4gICAgZGVidWdnZXJcbiAgICB0aGlzLnJhaXNlQUlQb3B1cFN0YXJ0VGVsZW1ldHJ5KClcbiAgICBpZiAodGhpcy5pc0Vucm9sbGVkKSB7XG4gICAgICB0aGlzLmZyb21BSVR1dG9yID0gdHJ1ZVxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMucmFpc2VBSVBvcHVwSW50ZXJhY3RUZWxlbWV0cnkoKVxuICAgICAgfSwgMTAwMClcblxuXG4gICAgICB0aGlzLmdlbmVyYXRlUmVzdW1lRGF0YUxpbmtOZXcoKVxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMucmFpc2VBSVBvcHVwRW5kVGVsZW1ldHJ5KClcbiAgICAgIH0sIDEwMDApXG4gICAgfSBlbHNlIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnJhaXNlQUlQb3B1cEludGVyYWN0VGVsZW1ldHJ5KClcbiAgICAgIH0sIDEwMDApXG4gICAgICBjb25zdCBkaWFsb2dDb25maWcgPSBuZXcgTWF0RGlhbG9nQ29uZmlnKClcblxuICAgICAgZGlhbG9nQ29uZmlnLndpZHRoID0gJzQyMXB4J1xuICAgICAgZGlhbG9nQ29uZmlnLmRhdGEgPSB7XG4gICAgICAgIGVucm9sbDogdGhpcy5pc0Vucm9sbGVkXG4gICAgICB9XG4gICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKEFpVHV0b3JDb25maXJtUG9wdXBDb21wb25lbnQsIGRpYWxvZ0NvbmZpZylcblxuICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIGlmIChyZXNwb25zZSA9PT0gJ2Vucm9sbCcpIHtcbiAgICAgICAgICB0aGlzLmZyb21BSVR1dG9yID0gdHJ1ZVxuICAgICAgICAgIHRoaXMuZ2VuZXJhdGVSZXN1bWVEYXRhTGlua05ldygpXG4gICAgICAgIH0gZWxzZSBpZiAocmVzcG9uc2UgPT09ICduZWVkVG9FbnJvbGwnKSB7XG4gICAgICAgICAgdGhpcy5lbnJvbGxVc2VyRm9yQUlUdXRvcigpXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yYWlzZUFJUG9wdXBFbmRUZWxlbWV0cnkoKVxuICAgICAgfSlcbiAgICB9XG5cbiAgfVxuXG4gIGdlbmVyYXRlUmVzdW1lRGF0YUxpbmtOZXcoKSB7XG4gICAgaWYgKHRoaXMucmVzdW1lRGF0YSAmJiB0aGlzLmNvbnRlbnQpIHtcbiAgICAgIGxldCByZXN1bWVEYXRhVjI6IGFueVxuICAgICAgaWYgKHRoaXMuY29udGVudC5jb21wbGV0aW9uUGVyY2VudGFnZSA9PT0gMTAwKSB7XG4gICAgICAgIHJlc3VtZURhdGFWMiA9IHRoaXMuZ2V0UmVzdW1lRGF0YUZyb21MaXN0KCdzdGFydCcpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bWVEYXRhVjIgPSB0aGlzLmdldFJlc3VtZURhdGFGcm9tTGlzdCgpXG4gICAgICB9XG4gICAgICBpZiAoIXJlc3VtZURhdGFWMi5taW1lVHlwZSkge1xuICAgICAgICByZXN1bWVEYXRhVjIubWltZVR5cGUgPSB0aGlzLnRvY1N2Yy5nZXRNaW1lVHlwZSh0aGlzLmNvbnRlbnQsIHJlc3VtZURhdGFWMi5pZGVudGlmaWVyKVxuICAgICAgfVxuICAgICAgdGhpcy5yZXN1bWVEYXRhTGluayA9IHZpZXdlclJvdXRlR2VuZXJhdG9yKFxuICAgICAgICByZXN1bWVEYXRhVjIuaWRlbnRpZmllcixcbiAgICAgICAgcmVzdW1lRGF0YVYyLm1pbWVUeXBlLFxuICAgICAgICB0aGlzLmNvbnRlbnQuaWRlbnRpZmllcixcbiAgICAgICAgdGhpcy5jb250ZW50LmNvbnRlbnRUeXBlLFxuICAgICAgICB0aGlzLmZvclByZXZpZXcsXG4gICAgICAgICdMZWFybmluZyBSZXNvdXJjZScsXG4gICAgICAgIHRoaXMuZ2V0QmF0Y2hJZCgpLFxuICAgICAgICB0aGlzLmNvbnRlbnQubmFtZSxcbiAgICAgIClcbiAgICAgIHRoaXMuYWN0aW9uU1ZDLnNldFVwZGF0ZUNvbXBHcm91cE8gPSB0aGlzLnJlc3VtZURhdGFMaW5rXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy5yZXN1bWVEYXRhTGluay51cmxdLCB7XG4gICAgICAgIHF1ZXJ5UGFyYW1zOiB7XG4gICAgICAgICAgLi4udGhpcy5yZXN1bWVEYXRhTGluay5xdWVyeVBhcmFtcyxcbiAgICAgICAgICBmcm9tQUlUdXRvcjogdGhpcy5mcm9tQUlUdXRvclxuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLy8gdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChcbiAgICAgIC8vICAgW3RoaXMucmVzdW1lRGF0YUxpbmsudXJsXSxcbiAgICAgIC8vICAge1xuICAgICAgLy8gICAgIHJlbGF0aXZlVG86IHRoaXMucmVzdW1lRGF0YUxpbmsudXJsLFxuICAgICAgLy8gICAgIHF1ZXJ5UGFyYW1zOiB0aGlzLnJlc3VtZURhdGFMaW5rLnF1ZXJ5UGFyYW1zLFxuICAgICAgLy8gICAgIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6ICdtZXJnZScsXG4gICAgICAvLyAgIH0pXG4gICAgICAvKiB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUgKi9cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wbGF5UmVzdW1lRm9yQUkuZW1pdCgpXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRSZXN1bWVEYXRhRnJvbUxpc3QodHlwZT86IHN0cmluZyk6IGFueSB8IHZvaWQge1xuICAgIGNvbnN0IHJlc3VtZUNvcHkgPSBbLi4udGhpcy5yZXN1bWVEYXRhXVxuICAgIGlmICghdHlwZSkge1xuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm1heC1saW5lLWxlbmd0aFxuXG4gICAgICBjb25zdCBsYXN0SXRlbSA9IHJlc3VtZUNvcHkgJiYgcmVzdW1lQ29weS5zb3J0KChhOiBhbnksIGI6IGFueSkgPT5cbiAgICAgICAgbmV3IERhdGUoYi5sYXN0QWNjZXNzVGltZSkuZ2V0VGltZSgpIC0gbmV3IERhdGUoYS5sYXN0QWNjZXNzVGltZSkuZ2V0VGltZSgpKS5zaGlmdCgpXG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZGVudGlmaWVyOiBsYXN0SXRlbS5jb250ZW50SWQsXG4gICAgICAgIG1pbWVUeXBlOiBsYXN0SXRlbS5wcm9ncmVzc2RldGFpbHMgJiYgbGFzdEl0ZW0ucHJvZ3Jlc3NkZXRhaWxzLm1pbWVUeXBlLFxuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBmaXJzdEl0ZW0gPSByZXN1bWVDb3B5ICYmIHJlc3VtZUNvcHkubGVuZ3RoICYmIHJlc3VtZUNvcHlbMF1cbiAgICByZXR1cm4ge1xuICAgICAgaWRlbnRpZmllcjogZmlyc3RJdGVtLmNvbnRlbnRJZCxcbiAgICAgIG1pbWVUeXBlOiBmaXJzdEl0ZW0ucHJvZ3Jlc3NkZXRhaWxzICYmIGZpcnN0SXRlbS5wcm9ncmVzc2RldGFpbHMubWltZVR5cGUsXG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldEJhdGNoSWQoKTogc3RyaW5nIHtcbiAgICBsZXQgYmF0Y2hJZCA9ICcnXG4gICAgaWYgKHRoaXMuYmF0Y2hEYXRhICYmIHRoaXMuYmF0Y2hEYXRhLmNvbnRlbnQpIHtcbiAgICAgIGZvciAoY29uc3QgYmF0Y2ggb2YgdGhpcy5iYXRjaERhdGEuY29udGVudCkge1xuICAgICAgICBiYXRjaElkID0gYmF0Y2guYmF0Y2hJZFxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYmF0Y2hJZFxuICB9XG5cbiAgcmFpc2VBSVBvcHVwU3RhcnRUZWxlbWV0cnkoKSB7XG4gICAgY29uc3QgZXZlbnQgPSB7XG4gICAgICBldmVudFR5cGU6IFdzRXZlbnRzLldzRXZlbnRUeXBlLlRlbGVtZXRyeSxcbiAgICAgIGV2ZW50TG9nTGV2ZWw6IFdzRXZlbnRzLldzRXZlbnRMb2dMZXZlbC5JbmZvLFxuICAgICAgZGF0YToge1xuICAgICAgICBlZGF0YTogeyB0eXBlOiAnY2xpY2snLCBcImlkXCI6IFwiYWktdHV0b3ItdG9jLXBhZ2VcIiwgXCJwYWdlaWRcIjogYC9hcHAvdG9jLyR7dGhpcy5jb250ZW50Py5pZGVudGlmaWVyfWAgfSxcbiAgICAgICAgb2JqZWN0OiB7IFwiaWRcIjogdGhpcy5jb250ZW50Py5pZGVudGlmaWVyLCBcInR5cGVcIjogdGhpcy5jb250ZW50Py5jb3Vyc2VDYXRlZ29yeSB9LFxuICAgICAgICBzdGF0ZTogV3NFdmVudHMuRW51bVRlbGVtZXRyeVN1YlR5cGUuTG9hZGVkLFxuICAgICAgICBldmVudFN1YlR5cGU6IFdzRXZlbnRzLkVudW1UZWxlbWV0cnlTdWJUeXBlLkNoYXRib3QsXG4gICAgICAgIG1vZGU6ICd2aWV3JyxcbiAgICAgIH0sXG4gICAgICBwYWdlQ29udGV4dDogeyBwYWdlSWQ6ICcvYXBwL3RvYycsIG1vZHVsZTogJ0xlYXJuJyB9LFxuICAgICAgZnJvbTogJycsXG4gICAgICB0bzogJ1RlbGVtZXRyeScsXG4gICAgfVxuICAgIHRoaXMuZXZlbnRTdmMuZGlzcGF0Y2hDaGF0Ym90RXZlbnQ8V3NFdmVudHMuSVdzRXZlbnRUZWxlbWV0cnlJbnRlcmFjdD4oZXZlbnQpXG4gIH1cblxuICByYWlzZUFJUG9wdXBFbmRUZWxlbWV0cnkoKSB7XG4gICAgY29uc3QgZXZlbnQgPSB7XG4gICAgICBldmVudFR5cGU6IFdzRXZlbnRzLldzRXZlbnRUeXBlLlRlbGVtZXRyeSxcbiAgICAgIGV2ZW50TG9nTGV2ZWw6IFdzRXZlbnRzLldzRXZlbnRMb2dMZXZlbC5JbmZvLFxuICAgICAgZGF0YToge1xuICAgICAgICBlZGF0YTogeyB0eXBlOiAnY2xpY2snLCBcImlkXCI6IFwiYWktdHV0b3ItdG9jLXBhZ2VcIiwgXCJwYWdlaWRcIjogYC9hcHAvdG9jLyR7dGhpcy5jb250ZW50Py5pZGVudGlmaWVyfWAgfSxcbiAgICAgICAgb2JqZWN0OiB7IFwiaWRcIjogdGhpcy5jb250ZW50Py5pZGVudGlmaWVyLCBcInR5cGVcIjogdGhpcy5jb250ZW50Py5jb3Vyc2VDYXRlZ29yeSB9LFxuICAgICAgICBzdGF0ZTogV3NFdmVudHMuRW51bVRlbGVtZXRyeVN1YlR5cGUuVW5sb2FkZWQsXG4gICAgICAgIGV2ZW50U3ViVHlwZTogV3NFdmVudHMuRW51bVRlbGVtZXRyeVN1YlR5cGUuQ2hhdGJvdCxcbiAgICAgICAgbW9kZTogJ3ZpZXcnLFxuICAgICAgfSxcbiAgICAgIHBhZ2VDb250ZXh0OiB7IHBhZ2VJZDogJy9hcHAvdG9jJywgbW9kdWxlOiAnTGVhcm4nIH0sXG4gICAgICBmcm9tOiAnJyxcbiAgICAgIHRvOiAnVGVsZW1ldHJ5JyxcbiAgICB9XG4gICAgdGhpcy5ldmVudFN2Yy5kaXNwYXRjaENoYXRib3RFdmVudDxXc0V2ZW50cy5JV3NFdmVudFRlbGVtZXRyeUludGVyYWN0PihldmVudClcbiAgfVxuXG4gIHJhaXNlQUlQb3B1cEludGVyYWN0VGVsZW1ldHJ5KCkge1xuICAgIGNvbnN0IGV2ZW50ID0ge1xuICAgICAgZXZlbnRUeXBlOiBXc0V2ZW50cy5Xc0V2ZW50VHlwZS5UZWxlbWV0cnksXG4gICAgICBldmVudExvZ0xldmVsOiBXc0V2ZW50cy5Xc0V2ZW50TG9nTGV2ZWwuSW5mbyxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgZWRhdGE6IHsgdHlwZTogJ2NsaWNrJywgXCJpZFwiOiBcImFpLXR1dG9yLXRvYy1wYWdlXCIsIFwicGFnZWlkXCI6IGAvYXBwL3RvYy8ke3RoaXMuY29udGVudD8uaWRlbnRpZmllcn1gIH0sXG4gICAgICAgIG9iamVjdDogeyBcImlkXCI6IHRoaXMuY29udGVudD8uaWRlbnRpZmllciwgXCJ0eXBlXCI6IHRoaXMuY29udGVudD8uY291cnNlQ2F0ZWdvcnkgfSxcbiAgICAgICAgc3RhdGU6IFdzRXZlbnRzLkVudW1UZWxlbWV0cnlTdWJUeXBlLkludGVyYWN0LFxuICAgICAgICBldmVudFN1YlR5cGU6IFdzRXZlbnRzLkVudW1UZWxlbWV0cnlTdWJUeXBlLkNoYXRib3QsXG4gICAgICAgIG1vZGU6ICd2aWV3JyxcbiAgICAgIH0sXG4gICAgICBwYWdlQ29udGV4dDogeyBwYWdlSWQ6ICcvYXBwL3RvYycsIG1vZHVsZTogJ0xlYXJuJyB9LFxuICAgICAgZnJvbTogJycsXG4gICAgICB0bzogJ1RlbGVtZXRyeScsXG4gICAgfVxuICAgIHRoaXMuZXZlbnRTdmMuZGlzcGF0Y2hDaGF0Ym90RXZlbnQ8V3NFdmVudHMuSVdzRXZlbnRUZWxlbWV0cnlJbnRlcmFjdD4oZXZlbnQpXG4gIH1cblxuICBlbnJvbGxVc2VyRm9yQUlUdXRvcigpIHtcbiAgICB0aGlzLmVucm9sbFVzZXJUb0FJLmVtaXQoKVxuICB9XG5cbiAgYXN5bmMgcGFyc2VWVFQoKSB7XG4gICAgbGV0IGlkZW50aWZpZXIgPSB0aGlzLnJlc291cmNlSWRlbnRpZmllclxuICAgIC8vIGNvbnNvbGUubG9nKCdpZGVudGlmaWVyLS0nLCBpZGVudGlmaWVyKVxuICAgIGF3YWl0IHRoaXMudG9jU3ZjLmFpR2V0UmVzb3VyY2VWdHRGaWxlKGlkZW50aWZpZXIpLnN1YnNjcmliZShhc3luYyAoZGF0YXM6IGFueSkgPT4ge1xuICAgICAgbGV0IGRhdGE6IGFueSA9IGRhdGFzPy5kYXRhXG4gICAgICBpZiAoZGF0YSAmJiBkYXRhLmxlbmd0aCAmJiBkYXRhWzBdWyd0cmFuc2NyaXB0aW9uX3VybHMnXSAmJiBkYXRhWzBdWyd0cmFuc2NyaXB0aW9uX3VybHMnXS5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy52dHRMYW5nQXJyID0gZGF0YVswXVsndHJhbnNjcmlwdGlvbl91cmxzJ11cblxuICAgICAgICB0aGlzLmVuYWJsZVRyYW5zY3JpcHRpb25GbGFnID0gdHJ1ZVxuICAgICAgICAvLyBsZXQgdXJsID0gIGRhdGFbMF1bJ3RyYW5zY3JpcHRpb25fdXJscyddWzBdWyd1cmknXVxuICAgICAgICB0aGlzLnRyYW5zY3JpcHRpb25BY3RpdmVMYW5ndWFnZSA9IHRoaXMudnR0TGFuZ0FyciAmJiB0aGlzLnZ0dExhbmdBcnIubGVuZ3RoICYmIHRoaXMudnR0TGFuZ0FyclswXSAmJiB0aGlzLnZ0dExhbmdBcnJbMF1bJ2RlZmF1bHRfbGFuZyddID8gJ2VuJyA6ICdlbidcbiAgICAgICAgdGhpcy5kZWZhdWx0VHJhbnNjcmlwdExhbmd1YWdlID0gdGhpcy52dHRMYW5nQXJyICYmIHRoaXMudnR0TGFuZ0Fyci5sZW5ndGggJiYgdGhpcy52dHRMYW5nQXJyWzBdICYmIHRoaXMudnR0TGFuZ0FyclswXVsnZGVmYXVsdF9sYW5nJ10gPyAnZW4nIDogJ2VuJ1xuICAgICAgICBsZXQgc2VsZWN0ZWRUcmFuc2NyaXB0aW9uU3R5bGUgPSB0aGlzLnZ0dExhbmdBcnIuZmlsdGVyKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICByZXR1cm4gaXRlbT8ubGFiZWwgPT09IHRoaXMudHJhbnNjcmlwdGlvbkFjdGl2ZUxhbmd1YWdlXG4gICAgICAgIH0pXG4gICAgICAgIGlmIChzZWxlY3RlZFRyYW5zY3JpcHRpb25TdHlsZSAmJiBzZWxlY3RlZFRyYW5zY3JpcHRpb25TdHlsZS5sZW5ndGgpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkVHJhbnNjcmlwdGlvblN0eWxlID0gc2VsZWN0ZWRUcmFuc2NyaXB0aW9uU3R5bGVbMF1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkVHJhbnNjcmlwdGlvblN0eWxlID0gdGhpcy52dHRMYW5nQXJyWzBdXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZmlsdGVyZWRBcnIgPSB0aGlzLnZ0dExhbmdBcnIuZmlsdGVyKFxuICAgICAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0ubGFiZWwgPT09IHRoaXMudHJhbnNjcmlwdGlvbkFjdGl2ZUxhbmd1YWdlXG4gICAgICAgIClcbiAgICAgICAgbGV0IHVybCA9IGZpbHRlcmVkQXJyLmxlbmd0aCA+IDAgPyBmaWx0ZXJlZEFyclswXS51cmkgOiBudWxsXG4gICAgICAgIC8vbGV0IHVybCA9IHRoaXMudnR0TGFuZ0Fyci5maWx0ZXIoKGl0ZW06IGFueSkgPT4gaXRlbS5sYWJlbCA9PT0gdGhpcy50cmFuc2NyaXB0aW9uQWN0aXZlTGFuZ3VhZ2UpWzBdWyd1cmknXVxuICAgICAgICBpZiAodXJsKSB7XG4gICAgICAgICAgY29uc3QgZmlsZSA9IGF3YWl0IFZ0dEZpbGUuZnJvbVVybCh1cmwpXG4gICAgICAgICAgbGV0IGJsb2NrczogYW55ID0gZmlsZS5nZXRCbG9ja3MoKVxuXG4gICAgICAgICAgdGhpcy5zdWJUaXRsZXMgPSBibG9ja3NcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRvY1N2Yy5jaGFuZ2VUcmFuc2NyaXB0aW9uTGFuZ3VhZ2VFdmVudC5uZXh0KHsgYWN0aXZlTGFuZzogdGhpcy50cmFuc2NyaXB0aW9uQWN0aXZlTGFuZ3VhZ2UsIGxhbmdEYXRhOiB0aGlzLnZ0dExhbmdBcnIsIGxvYWRQbGF5ZXI6IHRydWUgfSlcblxuXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnZ0dExhbmdBcnIgPSBbXVxuICAgICAgICB0aGlzLmVuYWJsZVRyYW5zY3JpcHRpb25GbGFnID0gZmFsc2VcbiAgICAgIH1cblxuICAgIH0pXG5cbiAgfVxuXG4gIGFzeW5jIHJlbmRlclNlbGVjdGVkTGFuZ3VhZ2VUcmFuc2NyaXB0aW9uKF9sYW5ndmFsdWU6IGFueSkge1xuICAgIC8vIHRoaXMudHJhbnNjcmlwdGlvbkFjdGl2ZUxhbmd1YWdlID0gdGhpcy5zZWxlY3RlZFRyYW5zY3JpcHRpb25TdHlsZT8ubGFiZWxcbiAgICBpZiAodHlwZW9mIF9sYW5ndmFsdWUgPT09ICdzdHJpbmcnICYmIF9sYW5ndmFsdWUpIHtcbiAgICAgIHRoaXMudHJhbnNjcmlwdGlvbkFjdGl2ZUxhbmd1YWdlID0gX2xhbmd2YWx1ZVxuXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRUcmFuc2NyaXB0aW9uU3R5bGUgPSBfbGFuZ3ZhbHVlPy52YWx1ZVxuICAgICAgdGhpcy50cmFuc2NyaXB0aW9uQWN0aXZlTGFuZ3VhZ2UgPSB0aGlzLnNlbGVjdGVkVHJhbnNjcmlwdGlvblN0eWxlPy5sYWJlbFxuICAgICAgdGhpcy50cmFuc2NyaXB0QWN0aXZlTGFuZ3VhZ2VUZXh0ID0gX2xhbmd2YWx1ZT8udmFsdWU/Lmxhbmd1YWdlXG4gICAgfVxuICAgIHRoaXMucmFpc2VUcmFuc2NyaXB0aW9uTGFuZ3VhZ2VTdGFydFRlbGVtZXRyeSgpXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnJhaXNlVHJhbnNjcmlwdGlvbkxhbmd1YWdlSW50ZXJhY3RUZWxlbWV0cnkoKVxuICAgIH0pXG4gICAgbGV0IGN1cnJlbnRQYXRoID0gdGhpcy52dHRMYW5nQXJyLmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtPy5sYWJlbCA9PT0gdGhpcy50cmFuc2NyaXB0aW9uQWN0aXZlTGFuZ3VhZ2UpXG4gICAgaWYgKGN1cnJlbnRQYXRoICYmIGN1cnJlbnRQYXRoLmxlbmd0aCkge1xuICAgICAgdGhpcy5zZWxlY3RlZFRyYW5zY3JpcHRpb25TdHlsZSA9IGN1cnJlbnRQYXRoWzBdXG4gICAgfVxuICAgIGNvbnN0IGZpbGUgPSBhd2FpdCBWdHRGaWxlLmZyb21VcmwoY3VycmVudFBhdGggJiYgY3VycmVudFBhdGhbMF0/LnVyaSlcbiAgICBsZXQgYmxvY2tzOiBhbnkgPSBmaWxlLmdldEJsb2NrcygpXG4gICAgdGhpcy5zdWJUaXRsZXMgPSBibG9ja3NcbiAgICB0aGlzLnJhaXNlVHJhbnNjcmlwdGlvbkxhbmd1YWdlU3RvcFRlbGVtZXRyeSgpXG4gICAgLy8gdGhpcy50b2NTdmMuY2hhbmdlVHJhbnNjcmlwdGlvbkxhbmd1YWdlRXZlbnQubmV4dCh7YWN0aXZlTGFuZzogdGhpcy50cmFuc2NyaXB0aW9uQWN0aXZlTGFuZ3VhZ2UsIGxhbmdEYXRhOiB0aGlzLnZ0dExhbmdBcnIsIGxvYWRQbGF5ZXI6ZmFsc2V9KVxuXG4gIH1cblxuICBvcGVuU3VydmV5Rm9ybVBvcHVwKGV2ZW50OiBib29sZWFuKSB7XG4gICAgdGhpcy50cmlnZXJDb21wbGV0aW9uU3VydmV5Rm9ybS5lbWl0KGV2ZW50KVxuICB9XG5cbiAgcGxheUZyb21TbG90KHN1YnRpdGxlOiBhbnkpIHtcbiAgICBpZiAoc3VidGl0bGUpIHtcbiAgICAgIGxldCBzdGFydFRpbWUgPSBzdWJ0aXRsZS5zdGFydFRpbWUgLyAxMDAwXG4gICAgICBsZXQgZW5kVGltZSA9IHN1YnRpdGxlLmVuZFRpbWUgLyAxMDAwXG4gICAgICB0aGlzLnRvY1N2Yy5wbGF5VHJhbnNjcmlwdGlvblZpZGVvLm5leHQoeyBzdGFydFRpbWUsIGVuZFRpbWUgfSlcbiAgICB9XG4gIH1cblxuICBmb3JtYXRNc1RvVnR0VGltZShtczogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCB0b3RhbFNlY29uZHMgPSBNYXRoLmZsb29yKG1zIC8gMTAwMClcbiAgICAvLyAgY29uc3QgbWlsbGlzZWNvbmRzID0gbXMgJSAxMDAwO1xuICAgIGNvbnN0IGhvdXJzID0gTWF0aC5mbG9vcih0b3RhbFNlY29uZHMgLyAzNjAwKVxuICAgIGNvbnN0IG1pbnV0ZXMgPSBNYXRoLmZsb29yKCh0b3RhbFNlY29uZHMgJSAzNjAwKSAvIDYwKVxuICAgIGNvbnN0IHNlY29uZHMgPSB0b3RhbFNlY29uZHMgJSA2MFxuXG4gICAgY29uc3QgcGFkID0gKG51bTogbnVtYmVyLCBzaXplOiBudW1iZXIpID0+IG51bS50b1N0cmluZygpLnBhZFN0YXJ0KHNpemUsICcwJylcblxuICAgIC8vIHJldHVybiBgJHtwYWQoaG91cnMsIDIpfToke3BhZChtaW51dGVzLCAyKX06JHtwYWQoc2Vjb25kcywgMil9LiR7cGFkKG1pbGxpc2Vjb25kcywgMyl9YDtcbiAgICByZXR1cm4gYCR7cGFkKGhvdXJzLCAyKX06JHtwYWQobWludXRlcywgMil9OiR7cGFkKHNlY29uZHMsIDIpfWBcbiAgfVxuXG4gIG9ubHlzY29ybUFzc2Vzc21lbnRFeGlzdHMoZGF0YTogYW55LCBrZXk6IGFueSwgdmFsdWU6IGFueSkge1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhPy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKGRhdGFbaV0gJiYgZGF0YVtpXVsnY2hpbGRyZW4nXSAmJiBkYXRhW2ldWydjaGlsZHJlbiddLmxlbmd0aCkge1xuICAgICAgICB0aGlzLm9ubHlzY29ybUFzc2Vzc21lbnRFeGlzdHMoZGF0YVtpXT8uY2hpbGRyZW4sIGtleSwgdmFsdWUpXG4gICAgICB9IGVsc2Uge1xuXG4gICAgICAgIHRoaXMudG90YWxSZXNvdXJjZSA9IHRoaXMudG90YWxSZXNvdXJjZSArIDFcbiAgICAgICAgaWYgKHZhbHVlLmluY2x1ZGVzKGRhdGFbaV1ba2V5XSkpIHtcbiAgICAgICAgICAvLyB0aGlzLnNob3dBSVR1dG9yRmxhZyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuc2Nvcm1Bc3Nlc3NtZW50Q291bnQgPSB0aGlzLnNjb3JtQXNzZXNzbWVudENvdW50ICsgMVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudG90YWxSZXNvdXJjZSA9PT0gdGhpcy5zY29ybUFzc2Vzc21lbnRDb3VudCkge1xuICAgICAgdGhpcy5lbmFibGVBSVR1dG9yRmxhZyA9IGZhbHNlXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZW5hYmxlQUlUdXRvckZsYWcgPSB0cnVlXG4gICAgfVxuICAgIHJldHVybiB0aGlzLmVuYWJsZUFJVHV0b3JGbGFnXG4gIH1cblxuICByYWlzZVRyYW5zY3JpcHRpb25UYWJTdGFydFRlbGVtZXRyeSgpIHtcbiAgICBjb25zdCBldmVudCA9IHtcbiAgICAgIGV2ZW50VHlwZTogV3NFdmVudHMuV3NFdmVudFR5cGUuVGVsZW1ldHJ5LFxuICAgICAgZXZlbnRMb2dMZXZlbDogV3NFdmVudHMuV3NFdmVudExvZ0xldmVsLkluZm8sXG4gICAgICBkYXRhOiB7XG4gICAgICAgIGVkYXRhOiB7IHR5cGU6ICdjbGljaycsIFwiaWRcIjogXCJhaS10dXRvci12aWV3ZXItcGFnZVwiLCBcInBhZ2VpZFwiOiBgL3ZpZXdlci92aWRlby8ke3RoaXMudmlld2VyRGF0YVN2Yz8ucmVzb3VyY2VJZH1gLCBzdWJUeXBlOiAndHJhbnNjcmlwdC10YWInIH0sXG4gICAgICAgIG9iamVjdDogeyBcImlkXCI6IHRoaXMuY29udGVudD8uaWRlbnRpZmllciwgXCJ0eXBlXCI6IHRoaXMuY29udGVudD8uY291cnNlQ2F0ZWdvcnkgfSxcbiAgICAgICAgc3RhdGU6IFdzRXZlbnRzLkVudW1UZWxlbWV0cnlTdWJUeXBlLkxvYWRlZCxcbiAgICAgICAgZXZlbnRTdWJUeXBlOiBXc0V2ZW50cy5FbnVtVGVsZW1ldHJ5U3ViVHlwZS5DaGF0Ym90LFxuICAgICAgICBtb2RlOiAndmlldycsXG4gICAgICB9LFxuICAgICAgcGFnZUNvbnRleHQ6IHsgcGFnZUlkOiBgL3ZpZXdlci92aWRlby8ke3RoaXMudmlld2VyRGF0YVN2Yz8ucmVzb3VyY2VJZH1gLCBtb2R1bGU6ICdMZWFybicgfSxcbiAgICAgIGZyb206ICcnLFxuICAgICAgdG86ICdUZWxlbWV0cnknLFxuICAgIH1cbiAgICB0aGlzLmV2ZW50U3ZjLmRpc3BhdGNoQ2hhdGJvdEV2ZW50PFdzRXZlbnRzLklXc0V2ZW50VGVsZW1ldHJ5SW50ZXJhY3Q+KGV2ZW50KVxuICB9XG5cbiAgcmFpc2VUcmFuc2NyaXB0aW9uVGFiSW50ZXJhY3RUZWxlbWV0cnkoKSB7XG4gICAgY29uc3QgZXZlbnQgPSB7XG4gICAgICBldmVudFR5cGU6IFdzRXZlbnRzLldzRXZlbnRUeXBlLlRlbGVtZXRyeSxcbiAgICAgIGV2ZW50TG9nTGV2ZWw6IFdzRXZlbnRzLldzRXZlbnRMb2dMZXZlbC5JbmZvLFxuICAgICAgZGF0YToge1xuICAgICAgICBlZGF0YTogeyB0eXBlOiAnY2xpY2snLCBcImlkXCI6IFwiYWktdHV0b3Itdmlld2VyLXBhZ2VcIiwgXCJwYWdlaWRcIjogYC92aWV3ZXIvdmlkZW8vJHt0aGlzLnZpZXdlckRhdGFTdmM/LnJlc291cmNlSWR9YCwgc3ViVHlwZTogJ3RyYW5zY3JpcHQtdGFiJyB9LFxuICAgICAgICBvYmplY3Q6IHsgXCJpZFwiOiB0aGlzLmNvbnRlbnQ/LmlkZW50aWZpZXIsIFwidHlwZVwiOiB0aGlzLmNvbnRlbnQ/LmNvdXJzZUNhdGVnb3J5IH0sXG4gICAgICAgIHN0YXRlOiBXc0V2ZW50cy5FbnVtVGVsZW1ldHJ5U3ViVHlwZS5JbnRlcmFjdCxcbiAgICAgICAgZXZlbnRTdWJUeXBlOiBXc0V2ZW50cy5FbnVtVGVsZW1ldHJ5U3ViVHlwZS5DaGF0Ym90LFxuICAgICAgICBtb2RlOiAndmlldycsXG4gICAgICB9LFxuICAgICAgcGFnZUNvbnRleHQ6IHsgcGFnZUlkOiBgL3ZpZXdlci92aWRlby8ke3RoaXMudmlld2VyRGF0YVN2Yz8ucmVzb3VyY2VJZH1gLCBtb2R1bGU6ICdMZWFybicgfSxcbiAgICAgIGZyb206ICcnLFxuICAgICAgdG86ICdUZWxlbWV0cnknLFxuICAgIH1cbiAgICB0aGlzLmV2ZW50U3ZjLmRpc3BhdGNoQ2hhdGJvdEV2ZW50PFdzRXZlbnRzLklXc0V2ZW50VGVsZW1ldHJ5SW50ZXJhY3Q+KGV2ZW50KVxuICB9XG5cbiAgcmFpc2VUcmFuc2NyaXB0aW9uVGFiU3RvcFRlbGVtZXRyeSgpIHtcbiAgICBjb25zdCBldmVudCA9IHtcbiAgICAgIGV2ZW50VHlwZTogV3NFdmVudHMuV3NFdmVudFR5cGUuVGVsZW1ldHJ5LFxuICAgICAgZXZlbnRMb2dMZXZlbDogV3NFdmVudHMuV3NFdmVudExvZ0xldmVsLkluZm8sXG4gICAgICBkYXRhOiB7XG4gICAgICAgIGVkYXRhOiB7IHR5cGU6ICdjbGljaycsIFwiaWRcIjogXCJhaS10dXRvci12aWV3ZXItcGFnZVwiLCBcInBhZ2VpZFwiOiBgL3ZpZXdlci92aWRlby8ke3RoaXMudmlld2VyRGF0YVN2Yz8ucmVzb3VyY2VJZH1gLCBzdWJUeXBlOiAndHJhbnNjcmlwdC10YWInIH0sXG4gICAgICAgIG9iamVjdDogeyBcImlkXCI6IHRoaXMuY29udGVudD8uaWRlbnRpZmllciwgXCJ0eXBlXCI6IHRoaXMuY29udGVudD8uY291cnNlQ2F0ZWdvcnkgfSxcbiAgICAgICAgc3RhdGU6IFdzRXZlbnRzLkVudW1UZWxlbWV0cnlTdWJUeXBlLlVubG9hZGVkLFxuICAgICAgICBldmVudFN1YlR5cGU6IFdzRXZlbnRzLkVudW1UZWxlbWV0cnlTdWJUeXBlLkNoYXRib3QsXG4gICAgICAgIG1vZGU6ICd2aWV3JyxcbiAgICAgIH0sXG4gICAgICBwYWdlQ29udGV4dDogeyBwYWdlSWQ6IGAvdmlld2VyL3ZpZGVvLyR7dGhpcy52aWV3ZXJEYXRhU3ZjPy5yZXNvdXJjZUlkfWAsIG1vZHVsZTogJ0xlYXJuJyB9LFxuICAgICAgZnJvbTogJycsXG4gICAgICB0bzogJ1RlbGVtZXRyeScsXG4gICAgfVxuICAgIHRoaXMuZXZlbnRTdmMuZGlzcGF0Y2hDaGF0Ym90RXZlbnQ8V3NFdmVudHMuSVdzRXZlbnRUZWxlbWV0cnlJbnRlcmFjdD4oZXZlbnQpXG4gIH1cblxuICByYWlzZVRyYW5zY3JpcHRpb25MYW5ndWFnZVN0YXJ0VGVsZW1ldHJ5KCkge1xuICAgIGNvbnN0IGV2ZW50ID0ge1xuICAgICAgZXZlbnRUeXBlOiBXc0V2ZW50cy5Xc0V2ZW50VHlwZS5UZWxlbWV0cnksXG4gICAgICBldmVudExvZ0xldmVsOiBXc0V2ZW50cy5Xc0V2ZW50TG9nTGV2ZWwuSW5mbyxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgZWRhdGE6IHsgdHlwZTogJ2NsaWNrJywgXCJpZFwiOiB0aGlzLnRyYW5zY3JpcHRBY3RpdmVMYW5ndWFnZVRleHQsIFwicGFnZWlkXCI6IGAvdmlld2VyL3ZpZGVvLyR7dGhpcy52aWV3ZXJEYXRhU3ZjPy5yZXNvdXJjZUlkfWAsIHN1YlR5cGU6ICd0cmFuc2NyaXB0LWxhbmd1YWdlJyB9LFxuICAgICAgICBvYmplY3Q6IHsgXCJpZFwiOiB0aGlzLmNvbnRlbnQ/LmlkZW50aWZpZXIsIFwidHlwZVwiOiB0aGlzLmNvbnRlbnQ/LmNvdXJzZUNhdGVnb3J5IH0sXG4gICAgICAgIHN0YXRlOiBXc0V2ZW50cy5FbnVtVGVsZW1ldHJ5U3ViVHlwZS5Mb2FkZWQsXG4gICAgICAgIGV2ZW50U3ViVHlwZTogV3NFdmVudHMuRW51bVRlbGVtZXRyeVN1YlR5cGUuQ2hhdGJvdCxcbiAgICAgICAgbW9kZTogJ3ZpZXcnLFxuICAgICAgfSxcbiAgICAgIHBhZ2VDb250ZXh0OiB7IHBhZ2VJZDogYC92aWV3ZXIvdmlkZW8vJHt0aGlzLnZpZXdlckRhdGFTdmM/LnJlc291cmNlSWR9YCwgbW9kdWxlOiAnTGVhcm4nIH0sXG4gICAgICBmcm9tOiAnJyxcbiAgICAgIHRvOiAnVGVsZW1ldHJ5JyxcbiAgICB9XG4gICAgdGhpcy5ldmVudFN2Yy5kaXNwYXRjaENoYXRib3RFdmVudDxXc0V2ZW50cy5JV3NFdmVudFRlbGVtZXRyeUludGVyYWN0PihldmVudClcbiAgfVxuXG4gIHJhaXNlVHJhbnNjcmlwdGlvbkxhbmd1YWdlSW50ZXJhY3RUZWxlbWV0cnkoKSB7XG4gICAgY29uc3QgZXZlbnQgPSB7XG4gICAgICBldmVudFR5cGU6IFdzRXZlbnRzLldzRXZlbnRUeXBlLlRlbGVtZXRyeSxcbiAgICAgIGV2ZW50TG9nTGV2ZWw6IFdzRXZlbnRzLldzRXZlbnRMb2dMZXZlbC5JbmZvLFxuICAgICAgZGF0YToge1xuICAgICAgICBlZGF0YTogeyB0eXBlOiAnY2xpY2snLCBcImlkXCI6IHRoaXMudHJhbnNjcmlwdEFjdGl2ZUxhbmd1YWdlVGV4dCwgXCJwYWdlaWRcIjogYC92aWV3ZXIvdmlkZW8vJHt0aGlzLnZpZXdlckRhdGFTdmM/LnJlc291cmNlSWR9YCwgc3ViVHlwZTogJ3RyYW5zY3JpcHQtbGFuZ3VhZ2UnIH0sXG4gICAgICAgIG9iamVjdDogeyBcImlkXCI6IHRoaXMuY29udGVudD8uaWRlbnRpZmllciwgXCJ0eXBlXCI6IHRoaXMuY29udGVudD8uY291cnNlQ2F0ZWdvcnkgfSxcbiAgICAgICAgc3RhdGU6IFdzRXZlbnRzLkVudW1UZWxlbWV0cnlTdWJUeXBlLkludGVyYWN0LFxuICAgICAgICBldmVudFN1YlR5cGU6IFdzRXZlbnRzLkVudW1UZWxlbWV0cnlTdWJUeXBlLkNoYXRib3QsXG4gICAgICAgIG1vZGU6ICd2aWV3JyxcbiAgICAgIH0sXG4gICAgICBwYWdlQ29udGV4dDogeyBwYWdlSWQ6IGAvdmlld2VyL3ZpZGVvLyR7dGhpcy52aWV3ZXJEYXRhU3ZjPy5yZXNvdXJjZUlkfWAsIG1vZHVsZTogJ0xlYXJuJyB9LFxuICAgICAgZnJvbTogJycsXG4gICAgICB0bzogJ1RlbGVtZXRyeScsXG4gICAgfVxuICAgIHRoaXMuZXZlbnRTdmMuZGlzcGF0Y2hDaGF0Ym90RXZlbnQ8V3NFdmVudHMuSVdzRXZlbnRUZWxlbWV0cnlJbnRlcmFjdD4oZXZlbnQpXG4gIH1cblxuICByYWlzZVRyYW5zY3JpcHRpb25MYW5ndWFnZVN0b3BUZWxlbWV0cnkoKSB7XG4gICAgY29uc3QgZXZlbnQgPSB7XG4gICAgICBldmVudFR5cGU6IFdzRXZlbnRzLldzRXZlbnRUeXBlLlRlbGVtZXRyeSxcbiAgICAgIGV2ZW50TG9nTGV2ZWw6IFdzRXZlbnRzLldzRXZlbnRMb2dMZXZlbC5JbmZvLFxuICAgICAgZGF0YToge1xuICAgICAgICBlZGF0YTogeyB0eXBlOiAnY2xpY2snLCBcImlkXCI6IHRoaXMudHJhbnNjcmlwdEFjdGl2ZUxhbmd1YWdlVGV4dCwgXCJwYWdlaWRcIjogYC92aWV3ZXIvdmlkZW8vJHt0aGlzLnZpZXdlckRhdGFTdmM/LnJlc291cmNlSWR9YCwgc3ViVHlwZTogJ3RyYW5zY3JpcHQtbGFuZ3VhZ2UnIH0sXG4gICAgICAgIG9iamVjdDogeyBcImlkXCI6IHRoaXMuY29udGVudD8uaWRlbnRpZmllciwgXCJ0eXBlXCI6IHRoaXMuY29udGVudD8uY291cnNlQ2F0ZWdvcnkgfSxcbiAgICAgICAgc3RhdGU6IFdzRXZlbnRzLkVudW1UZWxlbWV0cnlTdWJUeXBlLlVubG9hZGVkLFxuICAgICAgICBldmVudFN1YlR5cGU6IFdzRXZlbnRzLkVudW1UZWxlbWV0cnlTdWJUeXBlLkNoYXRib3QsXG4gICAgICAgIG1vZGU6ICd2aWV3JyxcbiAgICAgIH0sXG4gICAgICBwYWdlQ29udGV4dDogeyBwYWdlSWQ6IGAvdmlld2VyL3ZpZGVvLyR7dGhpcy52aWV3ZXJEYXRhU3ZjPy5yZXNvdXJjZUlkfWAsIG1vZHVsZTogJ0xlYXJuJyB9LFxuICAgICAgZnJvbTogJycsXG4gICAgICB0bzogJ1RlbGVtZXRyeScsXG4gICAgfVxuICAgIHRoaXMuZXZlbnRTdmMuZGlzcGF0Y2hDaGF0Ym90RXZlbnQ8V3NFdmVudHMuSVdzRXZlbnRUZWxlbWV0cnlJbnRlcmFjdD4oZXZlbnQpXG4gIH1cblxuICBjbG9zZUFJUG9wdXAoZXZlbnQ6IGFueSkge1xuICAgIGlmIChldmVudCkge1xuICAgICAgdGhpcy5zaG93QUlUdXRvclBvcHVwID0gZmFsc2VcbiAgICAgIHRoaXMuc2VsZWN0ZWRUYWJJbmRleCA9IDBcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5yZXNvdXJjZUlkZW50aWZpZXIkKSB7XG4gICAgICB0aGlzLnJlc291cmNlSWRlbnRpZmllciQudW5zdWJzY3JpYmUoKVxuICAgIH1cblxuICAgIGlmICh0aGlzLnN1YlRpdGxlcyQpIHtcbiAgICAgIHRoaXMuc3ViVGl0bGVzJC51bnN1YnNjcmliZSgpXG4gICAgfVxuXG4gICAgaWYgKHRoaXMudHJhbnNyaXB0aW9uTGFuZ3VhZ2VTdWIpIHtcbiAgICAgIHRoaXMudHJhbnNyaXB0aW9uTGFuZ3VhZ2VTdWIudW5zdWJzY3JpYmUoKVxuICAgIH1cbiAgfVxuXG4gIGNsZWFyQ29tbWVudElkRnJvbVVybCgpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50UXVlcnlQYXJhbXMgPSB7IC4uLnRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMgfVxuICAgIGRlbGV0ZSBjdXJyZW50UXVlcnlQYXJhbXMuY29tbWVudElkXG4gICAgdGhpcy5jb21tZW50SWQgPSAnJ1xuICAgIHRoaXMuZGlzY3Vzc1dpZGdldERhdGEubmV3Q29tbWVudFNlY3Rpb24uc2hvdyA9IHRydWVcbiAgfVxuXG4gIHJlc3VtZUNvbnRlbnRDYWxsKCkge1xuICAgIHRoaXMucmVzdW1lQ29udGVudC5lbWl0KClcbiAgfVxufSIsIjwhLS0gJiYgKGNvbnRlbnQ/LmNvdXJzZUNhdGVnb3J5ICE9PSBjb3Vyc2VDYXRlZ29yeT8uQkxFTkRFRF9QUk9HUkFNKSAtLT5cbjxkaXYgY2xhc3M9XCJhaS10dXRvci1nZXQtc3RhcnRlZFwiICpuZ0lmPVwiIXZpZXdlclBhZ2UgJiYgZW5hYmxlQUlUdXRvckZsYWcgJiYgIWlzTW9iaWxlXCI+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJweC0yIHB5LTJcIj5cbiAgICAgICAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2ljb25zL2JvdC1jaGF0LXNtYWxsLnN2Z1wiIGhlaWdodD1cIjY0cHhcIiB3aWR0aD1cIjY0cHhcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHktMlwiID5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImZvbnQtd2VpZ2h0LTYwMFwiPkdldCBTdGFydGVkIHdpdGggQUkgVHV0b3I8L3A+XG4gICAgICAgICAgICAgICAgPHNwYW4+R2V0IGluc3RhbnQgZXhwbGFuYXRpb25zLCBzdGVwLWJ5LXN0ZXAgbGVhcm5pbmcgZ3VpZGFuY2UsIGFuZCBjdXN0b21pc2VkIGxlYXJuaW5nIHRhaWxvcmVkIGp1c3RcbiAgICAgICAgICAgICAgICAgICAgZm9yIHlvdS48L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhaS10dXRvci1idG4gcHgtMiBweS0xXCIgW25nQ2xhc3NdPVwiaXNNb2JpbGUgPyAndy0xNjAnIDogJydcIj5cbiAgICAgICAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgKGNsaWNrKT1cInNob3dBaVR1dG9yQ29uZmlybVBvcHVwKClcIj48aW1nXG4gICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJhc3NldHMvYWktdHV0b3IvYWktaWNvbi5zdmdcIj4mbmJzcDsgJm5ic3A7IDxzcGFuIGNsYXNzPVwiYWktdHV0b3ItbGFiZWxcIj5BSSBUdXRvcjwvc3Bhbj48L2E+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJ0YWItZ3JvdXAtY29udGFpbmVyXCI+XG4gICAgPG1hdC10YWItZ3JvdXAgKHNlbGVjdGVkVGFiQ2hhbmdlKT1cImhhbmRsZVRhYkNoYW5nZSgkZXZlbnQpXCIgI3N0aWNreU1lbnUgW2NsYXNzLnN0aWNreS1tYXQtdGFic109XCJzdGlja3lcIlxuICAgICAgICBbc2VsZWN0ZWRJbmRleF09XCJzZWxlY3RlZFRhYkluZGV4XCIgW25nQ2xhc3NdPVwieydjb250ZW50LXRhYnMnOiFmcm9tVmlld2VyLCdjb250ZW50U3RpY2t5JzogZm9yUHJldmlld31cIj5cblxuICAgICAgICA8IS0tIFRyYW5zY3JpcHRpb24gVGFiIC0tPlxuICAgICAgICA8bWF0LXRhYiBsYWJlbD1cIlRyYW5zY3JpcHRpb25cIlxuICAgICAgICAgICAgKm5nSWY9XCJ2aWV3ZXJQYWdlICYmIGVuYWJsZVRyYW5zY3JpcHRpb25GbGFnICYmIHZ0dExhbmdBcnI/Lmxlbmd0aCAmJiBzdWJUaXRsZXM/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG1hdC10YWItbGFiZWw+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlRyYW5zY3JpcHQ8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVkLWNpcmNsZSBtbC01XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBOZXdcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgbWF0VGFiQ29udGVudD5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGlzY2xhaW1lciBteS0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwicHktMiBweC0yXCI+RGlzY2xhaW1lciA6IFRoZXNlIHRyYW5zY3JpcHRzIGFuZCBzdWJ0aXRsZXMgYXJlIEFJLWdlbmVyYXRlZCBhbmQgbWF5IGNvbnRhaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycy48L3A+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbCBtbC01IG1yLTVcIiAqbmdJZj1cImlzTW9iaWxlRm9yQUlcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRyYW5zY3JpcHQtZmxleC1jb250YWluZXIgbXQtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwibXVsdGlsaW5lLXNlbGVjdFwiIGFwcGVhcmFuY2U9XCJmaWxsXCIgc3R5bGU9XCJoZWlnaHQ6IGF1dG87IHdpZHRoOiAxMDAlO1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXRMYWJlbD1cIm5ldmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgY2xhc3M9XCJtdWx0aWxpbmUtc2VsZWN0LWJveCBwci01XCIgWyh2YWx1ZSldPVwic2VsZWN0ZWRUcmFuc2NyaXB0aW9uU3R5bGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cInJlbmRlclNlbGVjdGVkTGFuZ3VhZ2VUcmFuc2NyaXB0aW9uKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QtdHJpZ2dlciBjbGFzcz1cIm11bHRpbGluZS1zZWxlY3QtYm94LXRyaWdnZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZC1vcHRpb24tY29udGVudCBweC01IHB5LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIj48c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ0cmFuc2NyaXB0aW9uQWN0aXZlTGFuZ3VhZ2UgPT09IHNlbGVjdGVkVHJhbnNjcmlwdGlvblN0eWxlPy5sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGI+VHJhbnNjcmlwdCBMYW5ndWFnZTogPC9iPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tzZWxlY3RlZFRyYW5zY3JpcHRpb25TdHlsZT8ubGFuZ3VhZ2UgfCB0aXRsZWNhc2V9fSA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJkZWZhdWx0VHJhbnNjcmlwdExhbmd1YWdlID09PSBzZWxlY3RlZFRyYW5zY3JpcHRpb25TdHlsZT8ubGFiZWxcIj4oQXV0byk8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0LXRyaWdnZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIGNsYXNzPVwibXVsdGlsaW5lLXNlbGVjdC1vcHRpb25cIiB2YWx1ZT1cIlwiICpuZ0Zvcj1cImxldCBsYW5nIG9mIHZ0dExhbmdBcnJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImxhbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydhY3RpdmUtb3B0aW9uJzogc2VsZWN0ZWRUcmFuc2NyaXB0aW9uU3R5bGU/LmxhYmVsID09PSBsYW5nPy5sYWJlbH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvcHRpb24tY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiPnt7bGFuZz8ubGFuZ3VhZ2UgfCB0aXRsZWNhc2V9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWwtNCBmbGV4IGZsZXgtcm93IGp1c3RpZnktZW5kIHRyYW5zY3JpcHQtY29udHJvbFwiPlxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IG1hdE5hdGl2ZUNvbnRyb2wgcmVxdWlyZWQgY2xhc3M9XCJzZWN0aW9uLWRkXCIgKGNoYW5nZSk9XCJyZW5kZXJTZWxlY3RlZExhbmd1YWdlVHJhbnNjcmlwdGlvbigkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJsYW5nPy5sYW5ndWFnZVwiICpuZ0Zvcj1cImxldCBsYW5nIG9mIHZ0dExhbmdBcnJcIiBbc2VsZWN0ZWRdPVwibGFuZz8ubGFiZWwgPT09IHRyYW5zY3JpcHRpb25BY3RpdmVMYW5ndWFnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0cmFuc2NyaXB0aW9uQWN0aXZlTGFuZ3VhZ2UgPT09IGxhbmc/LmxhYmVsXCI+IFRyYW5zY3JpcHQgTGFuZ3VhZ2U6IDwvc3Bhbj4ge3tsYW5nPy5sYW5ndWFnZSB8IHRpdGxlY2FzZX19IDxzcGFuICpuZ0lmPVwidHJhbnNjcmlwdGlvbkFjdGl2ZUxhbmd1YWdlID09PSBsYW5nPy5sYW5ndWFnZVwiPihBdXRvKTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPiAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cIiFpc01vYmlsZUZvckFJID8gJ3ctc3VidGl0bGUtODAnOid3LWZ1bGwnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCIhaXNNb2JpbGVGb3JBSSA/ICdtbC01LXBlcicgOiAnJ1wiICpuZ0lmPVwic3ViVGl0bGVzICYmIHN1YlRpdGxlcz8ubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gVHJhbnNjcmlwdGlvbiBjb250ZW50IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzdWJ0aXRsZSBvZiBzdWJUaXRsZXNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sICBteS0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1YnRpdGxlLXRpbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwicGxheUZyb21TbG90KHN1YnRpdGxlKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHItMSBibHVlLXVuZGVybGluZVwiPiB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRNc1RvVnR0VGltZShzdWJ0aXRsZT8uc3RhcnRUaW1lKSB9fSA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJibGFjay10ZXh0XCI+LTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBsLTEgYmx1ZS11bmRlcmxpbmVcIj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRNc1RvVnR0VGltZShzdWJ0aXRsZT8uZW5kVGltZSkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWwtNCBzdWJ0aXRsZS10ZXh0LXNsb3QgbXItNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJibGFjay10ZXh0XCIgW2lubmVySHRtbF09XCJzdWJ0aXRsZT8udGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBoaWdobGlnaHQgOiBrZXl3b3JkVG9IaWdobGlnaHQ/LnRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogKChzdWJ0aXRsZT8uc3RhcnRUaW1lIC8gMTAwMCkgPj0ga2V5d29yZFRvSGlnaGxpZ2h0Py5zdGFydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIChzdWJ0aXRsZT8uZW5kVGltZSAvIDEwMDApIDw9IGtleXdvcmRUb0hpZ2hsaWdodD8uZW5kKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctc3VidGl0bGUtMjBcIiAqbmdJZj1cIiFpc01vYmlsZUZvckFJXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRyYW5zY3JpcHQtZmxleC1jb250YWluZXIgbXQtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJtdWx0aWxpbmUtc2VsZWN0XCIgYXBwZWFyYW5jZT1cImZpbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IGF1dG87IHdpZHRoOiAxMDAlO1wiIGZsb2F0TGFiZWw9XCJuZXZlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgY2xhc3M9XCJtdWx0aWxpbmUtc2VsZWN0LWJveCBwci01XCIgWyh2YWx1ZSldPVwic2VsZWN0ZWRUcmFuc2NyaXB0aW9uU3R5bGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwicmVuZGVyU2VsZWN0ZWRMYW5ndWFnZVRyYW5zY3JpcHRpb24oJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0LXRyaWdnZXIgY2xhc3M9XCJtdWx0aWxpbmUtc2VsZWN0LWJveC10cmlnZ2VyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZC1vcHRpb24tY29udGVudCBweC01IHB5LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiPjxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidHJhbnNjcmlwdGlvbkFjdGl2ZUxhbmd1YWdlID09PSBzZWxlY3RlZFRyYW5zY3JpcHRpb25TdHlsZT8ubGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGI+VHJhbnNjcmlwdCBMYW5ndWFnZTogPC9iPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3NlbGVjdGVkVHJhbnNjcmlwdGlvblN0eWxlPy5sYW5ndWFnZSB8IHRpdGxlY2FzZX19IDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZGVmYXVsdFRyYW5zY3JpcHRMYW5ndWFnZSA9PT0gc2VsZWN0ZWRUcmFuc2NyaXB0aW9uU3R5bGU/LmxhYmVsXCI+KEF1dG8pPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdC10cmlnZ2VyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIGNsYXNzPVwibXVsdGlsaW5lLXNlbGVjdC1vcHRpb25cIiB2YWx1ZT1cIlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBsYW5nIG9mIHZ0dExhbmdBcnJcIiBbdmFsdWVdPVwibGFuZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnYWN0aXZlLW9wdGlvbic6IHNlbGVjdGVkVHJhbnNjcmlwdGlvblN0eWxlPy5sYWJlbCA9PT0gbGFuZz8ubGFiZWx9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvcHRpb24tY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCI+e3tsYW5nPy5sYW5ndWFnZSB8IHRpdGxlY2FzZX19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgYWxpZ24taXRlbXMtY2VudGVyIG15LTJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICA8cD4wLjAwPC9wPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtbC00XCI+XG4gICAgICAgICAgICAgICAgICAgIDxwPkFJIGZvciBEaWdpdGFsIFRyYW5zZm9ybWF0aW9uOiBNYWNoaW5lIExlYXJuaW5nIGFuZCBEZWVwIExlYXJuaW5nICBMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0LCBzZWQgZG8gZWl1c21vZCB0ZW1wb3IgaW5jaWRpZHVudCB1dCBsYWJvcmUgZXQgZG9sb3JlIG1hZ25hIGFsaXF1YS4gVXQgZW5pbSBhZCBtaW5pbSB2ZW5pYW0sIHF1aXMgbm9zdHJ1ZCBleGVyY2l0YXRpb24gdWxsYW1jbyBsYWJvcmlzIG5pc2kgdXQgYWxpcXVpcCBleCBlYSBjb21tb2RvIGNvbnNlcXVhdC4gRHVpcyBhdXRlIGlydXJlIGRvbG9yIGluIHJlcHJlaGVuZGVyaXQgaW4gdm9sdXB0YXRlIHZlbGl0IGVzc2UgY2lsbHVtIGRvbG9yZSBldSBmdWdpYXQgbnVsbGEgcGFyaWF0dXIuIEV4Y2VwdGV1ciBzaW50IG9jY2FlY2F0IGN1cGlkYXRhdCBub24gcHJvaWRlbnQsIHN1bnQgaW4gY3VscGEgcXVpIG9mZmljaWEgZGVzZXJ1bnQgbW9sbGl0IGFuaW0gaWQgZXN0IGxhYm9ydW0uPC9wPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtbC00XCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBtYXROYXRpdmVDb250cm9sIHJlcXVpcmVkIGNsYXNzPVwic2VjdGlvbi1kZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIj5UcmFuc2NyaXB0aW9uIExhbmd1YWdlOiBFbmdsaXNoIChBdXRvKTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj4gLS0+XG5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbWF0LXRhYj5cblxuICAgICAgICA8IS0tIEFib3V0IFRhYiAtLT5cbiAgICAgICAgPG1hdC10YWIgbGFiZWw9XCJ7eyAnYXBwdG9jc2luZ2xlcGFnZS5hYm91dCcgfCB0cmFuc2xhdGUgfX1cIj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBtYXRUYWJDb250ZW50PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhaS10dXRvci1nZXQtc3RhcnRlZC1tb2JpbGUgbXktMiBtbC0yXCIgKm5nSWY9XCIhdmlld2VyUGFnZSAmJiBlbmFibGVBSVR1dG9yRmxhZyAmJiBpc01vYmlsZVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBhbGlnbi1pdGVtcy1jZW50ZXIgdy05OFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTIgcHktMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2ljb25zL2JvdC1jaGF0LXNtYWxsLnN2Z1wiIGhlaWdodD1cIjQ4cHhcIiB3aWR0aD1cIjQ4cHhcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBhbGlnbi1pdGVtcy1jZW50ZXIgdy02MFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweS0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiZm9udC13ZWlnaHQtNjAwXCI+R2V0IFN0YXJ0ZWQgd2l0aCBBSSBUdXRvcjwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+R2V0IGluc3RhbnQgZXhwbGFuYXRpb25zLCBzdGVwLWJ5LXN0ZXAgbGVhcm5pbmcgZ3VpZGFuY2UsIGFuZCBjdXN0b21pc2VkIGxlYXJuaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWlsb3JlZCBqdXN0IGZvciB5b3UuPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhaS10dXRvci1idG4gcHgtMiBweS0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIChjbGljayk9XCJzaG93QWlUdXRvckNvbmZpcm1Qb3B1cCgpXCI+PGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwiYXNzZXRzL2FpLXR1dG9yL2FpLWljb24uc3ZnXCI+Jm5ic3A7ICZuYnNwOyA8c3BhbiBjbGFzcz1cImFpLXR1dG9yLWxhYmVsXCI+QUlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR1dG9yPC9zcGFuPjwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktZW5kIG15LTIgbXgtMlwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWktdHV0b3ItYnRuIHB4LTIgcHktMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIChjbGljayk9XCJzaG93QWlUdXRvckNvbmZpcm1Qb3B1cCgpXCI+PGltZyBzcmM9XCJhc3NldHMvYWktdHV0b3IvYWktaWNvbi5zdmdcIj4mbmJzcDsgJm5ic3A7IDxzcGFuIGNsYXNzPVwiYWktdHV0b3ItbGFiZWxcIj5BSSBUdXRvcjwvc3Bhbj48L2E+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8d3Mtd2lkZ2V0LWFwcC10b2MtYWJvdXQgW2Zyb21WaWV3ZXJdPVwiZnJvbVZpZXdlclwiIFtwYXRoU2V0XT1cInBhdGhTZXRcIiBbY29udGVudF09XCJjb250ZW50XCJcbiAgICAgICAgICAgICAgICAgICAgW2NvbnRlbnRSZWFkRGF0YV09XCJjb250ZW50UmVhZERhdGFcIiBbYmFzZUNvbnRlbnRSZWFkRGF0YV09XCJiYXNlQ29udGVudFJlYWREYXRhXCJcbiAgICAgICAgICAgICAgICAgICAgW3RvY1N0cnVjdHVyZV09XCJ0b2NTdHJ1Y3R1cmVcIiBbY29uZmlnXT1cImNvbmZpZ1wiIFtmb3JQcmV2aWV3XT1cImZhbHNlXCIgW3N0aWNreV09XCJzdGlja3lcIlxuICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRCYXRjaERhdGFdPVwic2VsZWN0ZWRCYXRjaERhdGFcIiBbc2VsZWN0ZWRUYWJWYWx1ZV09XCJzZWxlY3RlZFRhYkluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgW3Jlc3VtZURhdGFdPVwicmVzdW1lRGF0YVwiIFtiYXRjaERhdGFdPVwiYmF0Y2hEYXRhXCIgW3NrZWxldG9uTG9hZGVyXT1cInNrZWxldG9uTG9hZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgW2NvbmRpdGlvbl09XCJjb25kaXRpb25cIiBba3BhcnJheV09XCJrcGFycmF5XCIgW3Nob3dSZXZpZXdzXT1cIid0cnVlJ1wiIFtsYW5ndWFnZUxpc3RdPVwibGFuZ3VhZ2VMaXN0XCJcbiAgICAgICAgICAgICAgICAgICAgW2xvY2tDZXJ0aWZpY2F0ZV09XCJsb2NrQ2VydGlmaWNhdGVcIiAodHJpZ2VyQ29tcGxldGlvblN1cnZleUZvcm0pPVwib3BlblN1cnZleUZvcm1Qb3B1cCgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgPC93cy13aWRnZXQtYXBwLXRvYy1hYm91dD5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbWF0LXRhYj5cblxuICAgICAgICA8IS0tIENvbnRlbnQgVGFiIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudD8uY2hpbGRyZW4/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgPG1hdC10YWIgbGFiZWw9XCJ7eyAnYXBwdG9jc2luZ2xlcGFnZS5jb250ZW50JyB8IHRyYW5zbGF0ZSB9fVwiICpuZ0lmPVwiY29udGVudFRhYkZsYWdcIj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbWF0VGFiQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgPHdzLXdpZGdldC1hcHAtdG9jLWNvbnRlbnQgW2JhdGNoSWRdPVwiYmF0Y2hJZFwiIFtjb21wb25lbnROYW1lXT1cImNvbXBvbmVudE5hbWVcIiBbcGF0aFNldF09XCJwYXRoU2V0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb250ZW50XT1cImNvbnRlbnRcIiBbdG9jU3RydWN0dXJlXT1cInRvY1N0cnVjdHVyZVwiIFtjb25maWddPVwiY29uZmlnXCIgW2ZvclByZXZpZXddPVwiZm9yUHJldmlld1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcmVzdW1lRGF0YV09XCJyZXN1bWVEYXRhXCIgW2JhdGNoRGF0YV09XCJiYXRjaERhdGFcIiBbc2tlbGV0b25Mb2FkZXJdPVwic2tlbGV0b25Mb2FkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2hpZXJhcmNoeU1hcERhdGFdPVwiaGllcmFyY2h5TWFwRGF0YVwiIFtiYXNlQ29udGVudFJlYWREYXRhXT1cImJhc2VDb250ZW50UmVhZERhdGFcIj5cbiAgICAgICAgICAgICAgICAgICAgPC93cy13aWRnZXQtYXBwLXRvYy1jb250ZW50PlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L21hdC10YWI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25maWc/LmNvbW1lbnRzVGFiICYmICFmb3JQcmV2aWV3XCI+XG4gICAgICAgICAgICA8bWF0LXRhYiBsYWJlbD1cInt7ICdhcHB0b2NzaW5nbGVwYWdlLnN0YXJ0RGlzY3Vzc2lvbicgfCB0cmFuc2xhdGUgfX1cIj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbWF0VGFiQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgcmF0aW5ncy1kaXYgbXQtNVwiIGlkPVwiY29tbWVudHNEaXZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJkaXNjdXNzV2lkZ2V0RGF0YSAmJiBkaXNjdXNzV2lkZ2V0RGF0YT8ubmV3Q29tbWVudFNlY3Rpb24/LmNvbW1lbnRUcmVlRGF0YT8uZW50aXR5SWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY29tbWVudElkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGQtdjItd2lkZ2V0LWNvbW1lbnQgW3dpZGdldERhdGFdPVwiZGlzY3Vzc1dpZGdldERhdGFcIj48L2QtdjItd2lkZ2V0LWNvbW1lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb21tZW50SWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBnYXAtMyBjdXJzb3ItcG9pbnRlciBtYi01XCIgKGNsaWNrKT1cImNsZWFyQ29tbWVudElkRnJvbVVybCgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+YXJyb3dfYmFjazwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhY2sgdG8gYWxsIGNvbW1lbnRzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGQtdjItd2lkZ2V0LWNvbW1lbnQgW3dpZGdldERhdGFdPVwiZGlzY3Vzc1dpZGdldERhdGFcIiBbY29tbWVudElkXT1cImNvbW1lbnRJZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtza2VsZXRvbkxvYWRlcl0+PC9kLXYyLXdpZGdldC1jb21tZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L21hdC10YWI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdJZj1cImNvbmZpZz8uc2FtdWhpa0NoYXJjaGFUYWIgJiYgY29uZGl0aW9uICYmIGNvbnRlbnRSZWFkRGF0YT8uZXZlbnRMaW5rZWQ/Lmxlbmd0aCA+IDAgJiYgZW5hYmxlU2FtdWhpa0NoYXJjaGFUYWJcIj5cbiAgICAgICAgICAgIDxtYXQtdGFiIGxhYmVsPVwie3sgJ2FwcHRvY3NpbmdsZXBhZ2Uuc2FtdWhpa0NoYXJjaGEnIHwgdHJhbnNsYXRlIH19XCI+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG1hdFRhYkNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIHJhdGluZ3MtZGl2IG10LTVcIiBpZD1cInNhbXVoaWtDaGFyY2hhRGl2XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8d3Mtd2lkZ2V0LXNhbXVoaWstY2hhcmNoYS1jb250ZW50IFtjb250ZW50XT1cImNvbnRlbnRSZWFkRGF0YVwiIFtjb25kaXRpb25EYXRhXT1cImNvbmRpdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VtZUNvbnRlbnQpPVwicmVzdW1lQ29udGVudENhbGwoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC93cy13aWRnZXQtc2FtdWhpay1jaGFyY2hhLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L21hdC10YWI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDwhLS0gVGVhY2hlcnMgTm90ZSBUYWIgLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50UmVhZERhdGE/LnJlZmVyZW5jZU5vZGVzICYmIHRlYWNoZXJOb3Rlc0ZsYWdcIj5cbiAgICAgICAgICAgIDxtYXQtdGFiIGxhYmVsPVwiVGVhY2hlcnMgTm90ZVwiPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBtYXRUYWJDb250ZW50PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCByYXRpbmdzLWRpdiBtdC01XCIgaWQ9XCJ0ZWFjaGVyc05vdGVEaXZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx3cy13aWRnZXQtYXBwLXRvYy10ZWFjaGVycy1ub3RlcyBbY29udGVudF09XCJjb250ZW50UmVhZERhdGFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtub3Rlc0Rpc3BsYXlUeXBlXT1cIidUZWFjaGVycyBSZXNvdXJjZSdcIj48L3dzLXdpZGdldC1hcHAtdG9jLXRlYWNoZXJzLW5vdGVzPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9tYXQtdGFiPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8IS0tIFJlZmVyZW5jZSBOb3RlIFRhYiAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnRSZWFkRGF0YT8ucmVmZXJlbmNlTm9kZXMgJiYgcmVmZXJlbmNlTm90ZXNGbGFnXCI+XG4gICAgICAgICAgICA8bWF0LXRhYiBsYWJlbD1cIlJlZmVyZW5jZSBOb3RlXCI+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG1hdFRhYkNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIHJhdGluZ3MtZGl2IG10LTVcIiBpZD1cInRlYWNoZXJzTm90ZURpdlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHdzLXdpZGdldC1hcHAtdG9jLXRlYWNoZXJzLW5vdGVzIFtjb250ZW50XT1cImNvbnRlbnRSZWFkRGF0YVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25vdGVzRGlzcGxheVR5cGVdPVwiJ1JlZmVyZW5jZSBSZXNvdXJjZSdcIj48L3dzLXdpZGdldC1hcHAtdG9jLXRlYWNoZXJzLW5vdGVzPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDx3cy13aWRnZXQtYXBwLXRvYy1yZWZlcmVuY2Utbm90ZXMgW2NvbnRlbnRdPVwiY29udGVudFJlYWREYXRhXCI+PC93cy13aWRnZXQtYXBwLXRvYy1yZWZlcmVuY2Utbm90ZXM+IC0tPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9tYXQtdGFiPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0Fzc2lnbm1lbnRzVGFiICYmICFmb3JQcmV2aWV3XCI+XG4gICAgICAgICAgICA8bWF0LXRhYiBsYWJlbD1cInt7ICdhcHB0b2NzaW5nbGVwYWdlLmFzc2lnbm1lbnRzJyB8IHRyYW5zbGF0ZSB9fVwiPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBtYXRUYWJDb250ZW50PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCByYXRpbmdzLWRpdiBtdC01XCIgaWQ9XCJ0YWtlQXNzZXNzbWVudERpdlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHdzLXdpZGdldC1hcHAtYmF0Y2gtYXNzaWdubWVudHMgW2NvbnRlbnRdPVwiY29udGVudFwiPjwvd3Mtd2lkZ2V0LWFwcC1iYXRjaC1hc3NpZ25tZW50cz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvbWF0LXRhYj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPCEtLSBUcmFuc2NyaXB0aW9uIFRhYiAtLT5cbiAgICAgICAgPG1hdC10YWIgbGFiZWw9XCJBSSBUdXRvclwiICpuZ0lmPVwidmlld2VyUGFnZSAmJiBlbmFibGVBSVR1dG9yRmxhZyAmJiBpc01vYmlsZVwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG1hdC10YWItbGFiZWw+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPkFJIFR1dG9yPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlZC1jaXJjbGUgbWwtNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgTmV3XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG1hdFRhYkNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dBSVR1dG9yUG9wdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx3cy13aWRnZXQtYWktdHV0b3IgW2NvbnRlbnRdPVwiY29udGVudD8uaWRlbnRpZmllclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsb3NlQUlQb3B1cCk9XCJjbG9zZUFJUG9wdXAoJGV2ZW50KVwiPjwvd3Mtd2lkZ2V0LWFpLXR1dG9yPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbWF0LXRhYj5cbiAgICA8L21hdC10YWItZ3JvdXA+XG48L2Rpdj4iXX0=
|