vcomply-workflow-engine 2.7.4 → 2.7.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/vcomply-workflow-engine.umd.js +103 -47
- package/bundles/vcomply-workflow-engine.umd.js.map +1 -1
- package/esm2015/lib/add-multiple-responsibility/add-multiple-responsibility.component.js +1 -1
- package/esm2015/lib/add-multiple-responsibility-container/add-multiple-responsibility-container.component.js +1 -1
- package/esm2015/lib/add-multiple-responsibility-with-tab/add-multiple-responsibility-with-tab.component.js +1 -1
- package/esm2015/lib/add-multiple-risk/add-multiple-risk.component.js +1 -1
- package/esm2015/lib/log-an-issue/log-an-issue.component.js +1 -1
- package/esm2015/lib/sharedComponents/floating-bar/floating-bar.component.js +2 -2
- package/esm2015/lib/sharedComponents/floating-bar/floating-bar.component.ngfactory.js +11 -4
- package/esm2015/lib/sharedComponents/format-and-evidence/format-and-evidence.component.js +1 -1
- package/esm2015/lib/sharedComponents/risk-classification/risk-classification.component.js +1 -1
- package/esm2015/lib/workflow-assessment/import-an-assessment/import-an-assessment.component.js +1 -1
- package/esm2015/lib/workflow-assessment/workflow-assessment.component.js +1 -1
- package/esm2015/lib/workflow-compliance/workflow-compliance.component.js +26 -5
- package/esm2015/lib/workflow-compliance/workflow-compliance.component.ngsummary.json +1 -1
- package/esm2015/lib/workflow-engine-container/workflow-engine-container.component.js +1 -1
- package/esm2015/lib/workflow-engine.module.ngfactory.js +1 -1
- package/esm2015/lib/workflow-policy/workflow-policy.component.js +4 -4
- package/esm2015/lib/workflow-program/create-program-ui/file-pill/file-pill.component.js +1 -1
- package/esm2015/lib/workflow-program/create-program-ui/form-field/form-field.component.js +1 -1
- package/esm2015/lib/workflow-program/create-program-ui/input-with-pill/input-with-pill.component.js +1 -1
- package/esm2015/lib/workflow-program/workflow-program.component.js +59 -22
- package/esm2015/lib/workflow-program/workflow-program.component.ngfactory.js +8 -8
- package/esm2015/lib/workflow-risk/workflow-risk.component.js +1 -1
- package/esm2015/lib/workflow-survey-form/workflow-survey-form.component.js +1 -1
- package/fesm2015/vcomply-workflow-engine.js +102 -44
- package/fesm2015/vcomply-workflow-engine.js.map +1 -1
- package/lib/workflow-compliance/workflow-compliance.component.d.ts +1 -0
- package/package.json +1 -1
- package/vcomply-workflow-engine.metadata.json +1 -1
- package/lib/add-multiple-responsibility/add-multiple-responsibility.component.d.ts.__ivy_ngcc_bak +0 -87
- package/lib/add-multiple-responsibility/add-multiple-responsibility.component.d.ts.map +0 -1
- package/lib/add-multiple-responsibility-container/add-multiple-responsibility-container.component.d.ts.__ivy_ngcc_bak +0 -37
- package/lib/add-multiple-responsibility-container/add-multiple-responsibility-container.component.d.ts.map +0 -1
- package/lib/add-multiple-responsibility-with-tab/add-multiple-responsibility-with-tab.component.d.ts.__ivy_ngcc_bak +0 -186
- package/lib/add-multiple-responsibility-with-tab/add-multiple-responsibility-with-tab.component.d.ts.map +0 -1
- package/lib/add-multiple-risk/add-multiple-risk.component.d.ts.__ivy_ngcc_bak +0 -108
- package/lib/add-multiple-risk/add-multiple-risk.component.d.ts.map +0 -1
- package/lib/confirmation-alert/confirmation-alert.component.d.ts.__ivy_ngcc_bak +0 -10
- package/lib/confirmation-alert/confirmation-alert.component.d.ts.map +0 -1
- package/lib/create-documents/create-documents.component.d.ts.__ivy_ngcc_bak +0 -36
- package/lib/create-documents/create-documents.component.d.ts.map +0 -1
- package/lib/formgroup/cs-checkbox/cs-checkbox.component.d.ts.__ivy_ngcc_bak +0 -14
- package/lib/formgroup/cs-checkbox/cs-checkbox.component.d.ts.map +0 -1
- package/lib/formgroup/cs-checkbox-indeterminate/cs-checkbox-indeterminate.component.d.ts.__ivy_ngcc_bak +0 -11
- package/lib/formgroup/cs-checkbox-indeterminate/cs-checkbox-indeterminate.component.d.ts.map +0 -1
- package/lib/formgroup/cs-radio/cs-radio.component.d.ts.__ivy_ngcc_bak +0 -13
- package/lib/formgroup/cs-radio/cs-radio.component.d.ts.map +0 -1
- package/lib/formgroup/cs-radio-group/cs-radio-group.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/formgroup/cs-radio-group/cs-radio-group.component.d.ts.map +0 -1
- package/lib/formgroup/cs-select/cs-select.component.d.ts.__ivy_ngcc_bak +0 -31
- package/lib/formgroup/cs-select/cs-select.component.d.ts.map +0 -1
- package/lib/formgroup/cs-switch/cs-switch.component.d.ts.__ivy_ngcc_bak +0 -12
- package/lib/formgroup/cs-switch/cs-switch.component.d.ts.map +0 -1
- package/lib/formgroup/formgroup.module.d.ts.__ivy_ngcc_bak +0 -2
- package/lib/formgroup/formgroup.module.d.ts.map +0 -1
- package/lib/formgroup/pipes/pascal.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/formgroup/pipes/pascal.pipe.d.ts.map +0 -1
- package/lib/formgroup/select/cs-option/cs-option.component.d.ts.__ivy_ngcc_bak +0 -15
- package/lib/formgroup/select/cs-option/cs-option.component.d.ts.map +0 -1
- package/lib/formgroup/select/cs-select/cs-select.component.d.ts.__ivy_ngcc_bak +0 -34
- package/lib/formgroup/select/cs-select/cs-select.component.d.ts.map +0 -1
- package/lib/formgroup/select/select.module.d.ts.__ivy_ngcc_bak +0 -2
- package/lib/formgroup/select/select.module.d.ts.map +0 -1
- package/lib/formgroup/select/select.service.d.ts.__ivy_ngcc_bak +0 -15
- package/lib/formgroup/select/select.service.d.ts.map +0 -1
- package/lib/log-an-issue/log-an-issue.component.d.ts.__ivy_ngcc_bak +0 -218
- package/lib/log-an-issue/log-an-issue.component.d.ts.map +0 -1
- package/lib/more-option/more-option.component.d.ts.__ivy_ngcc_bak +0 -25
- package/lib/more-option/more-option.component.d.ts.map +0 -1
- package/lib/pipes/data-type.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/pipes/data-type.pipe.d.ts.map +0 -1
- package/lib/pipes/list-mapper.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/pipes/list-mapper.pipe.d.ts.map +0 -1
- package/lib/pipes/search.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/pipes/search.pipe.d.ts.map +0 -1
- package/lib/pipes/space-breaker.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/pipes/space-breaker.pipe.d.ts.map +0 -1
- package/lib/pipes/uncategorized-filter.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/pipes/uncategorized-filter.pipe.d.ts.map +0 -1
- package/lib/pipes/user-filter.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/pipes/user-filter.pipe.d.ts.map +0 -1
- package/lib/services/bulk-upload.service.d.ts.__ivy_ngcc_bak +0 -6
- package/lib/services/bulk-upload.service.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/add-logic/add-logic.component.d.ts.__ivy_ngcc_bak +0 -117
- package/lib/sharedComponents/assessment-editor/components/add-logic/add-logic.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/add-page-details/add-page-details.component.d.ts.__ivy_ngcc_bak +0 -19
- package/lib/sharedComponents/assessment-editor/components/add-page-details/add-page-details.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/add-response-set-popup/add-response-set-popup.component.d.ts.__ivy_ngcc_bak +0 -10
- package/lib/sharedComponents/assessment-editor/components/add-response-set-popup/add-response-set-popup.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/add-segment-popup/add-segment-popup.component.d.ts.__ivy_ngcc_bak +0 -22
- package/lib/sharedComponents/assessment-editor/components/add-segment-popup/add-segment-popup.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/assessment-settings/assessment-settings.component.d.ts.__ivy_ngcc_bak +0 -46
- package/lib/sharedComponents/assessment-editor/components/assessment-settings/assessment-settings.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/build/build.module.d.ts.__ivy_ngcc_bak +0 -2
- package/lib/sharedComponents/assessment-editor/components/build/build.module.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/build/checkbox/checkbox.component.d.ts.__ivy_ngcc_bak +0 -11
- package/lib/sharedComponents/assessment-editor/components/build/checkbox/checkbox.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/build/choice-settings-panel/choice-settings-panel.component.d.ts.__ivy_ngcc_bak +0 -16
- package/lib/sharedComponents/assessment-editor/components/build/choice-settings-panel/choice-settings-panel.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/build/date-time/date-time.component.d.ts.__ivy_ngcc_bak +0 -6
- package/lib/sharedComponents/assessment-editor/components/build/date-time/date-time.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/build/dropdown/dropdown.component.d.ts.__ivy_ngcc_bak +0 -11
- package/lib/sharedComponents/assessment-editor/components/build/dropdown/dropdown.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/build/image-choice/image-choice.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/assessment-editor/components/build/image-choice/image-choice.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/build/matrix-dropdown/matrix-dropdown.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/assessment-editor/components/build/matrix-dropdown/matrix-dropdown.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/build/matrix-rating-scale/matrix-rating-scale.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/assessment-editor/components/build/matrix-rating-scale/matrix-rating-scale.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/build/multiple-choice/multiple-choice.component.d.ts.__ivy_ngcc_bak +0 -11
- package/lib/sharedComponents/assessment-editor/components/build/multiple-choice/multiple-choice.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/build/multiple-textbox/multiple-textbox.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/assessment-editor/components/build/multiple-textbox/multiple-textbox.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/build/ranking/ranking.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/assessment-editor/components/build/ranking/ranking.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/build/slider/slider.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/assessment-editor/components/build/slider/slider.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/build/star-rating/star-rating.component.d.ts.__ivy_ngcc_bak +0 -9
- package/lib/sharedComponents/assessment-editor/components/build/star-rating/star-rating.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/build/thank-you/thank-you.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/assessment-editor/components/build/thank-you/thank-you.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/build/weightage-selector/weightage-selector.component.d.ts.__ivy_ngcc_bak +0 -12
- package/lib/sharedComponents/assessment-editor/components/build/weightage-selector/weightage-selector.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/build/welcome/welcome.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/assessment-editor/components/build/welcome/welcome.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/editor-wrapper/editor-wrapper.component.d.ts.__ivy_ngcc_bak +0 -57
- package/lib/sharedComponents/assessment-editor/components/editor-wrapper/editor-wrapper.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/logic/logic.component.d.ts.__ivy_ngcc_bak +0 -24
- package/lib/sharedComponents/assessment-editor/components/logic/logic.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-checkbox/logic-checkbox.component.d.ts.__ivy_ngcc_bak +0 -8
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-checkbox/logic-checkbox.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-comment-box/logic-comment-box.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-comment-box/logic-comment-box.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-date-time/logic-date-time.component.d.ts.__ivy_ngcc_bak +0 -14
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-date-time/logic-date-time.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-dropdown/logic-dropdown.component.d.ts.__ivy_ngcc_bak +0 -9
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-dropdown/logic-dropdown.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-image-choice/logic-image-choice.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-image-choice/logic-image-choice.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-multiple-choice/logic-multiple-choice.component.d.ts.__ivy_ngcc_bak +0 -8
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-multiple-choice/logic-multiple-choice.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-multiple-textbox/logic-multiple-textbox.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-multiple-textbox/logic-multiple-textbox.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-questions.module.d.ts.__ivy_ngcc_bak +0 -2
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-questions.module.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-ranking/logic-ranking.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-ranking/logic-ranking.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-single-textbox/logic-single-textbox.component.d.ts.__ivy_ngcc_bak +0 -9
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-single-textbox/logic-single-textbox.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-slider/logic-slider.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-slider/logic-slider.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-star-rating/logic-star-rating.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-star-rating/logic-star-rating.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/move/move.component.d.ts.__ivy_ngcc_bak +0 -23
- package/lib/sharedComponents/assessment-editor/components/move/move.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/page-header/page-header.component.d.ts.__ivy_ngcc_bak +0 -8
- package/lib/sharedComponents/assessment-editor/components/page-header/page-header.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/pipes/current-page-question.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/sharedComponents/assessment-editor/components/pipes/current-page-question.pipe.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/pipes/error-message.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/sharedComponents/assessment-editor/components/pipes/error-message.pipe.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/pipes/formatter.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/sharedComponents/assessment-editor/components/pipes/formatter.pipe.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/pipes/question-filter.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/sharedComponents/assessment-editor/components/pipes/question-filter.pipe.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/pipes/question-page-filter.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/sharedComponents/assessment-editor/components/pipes/question-page-filter.pipe.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/pipes/question-parser.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/sharedComponents/assessment-editor/components/pipes/question-parser.pipe.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/pipes/type-of.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/sharedComponents/assessment-editor/components/pipes/type-of.pipe.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/preview/preview-checkbox/preview-checkbox.component.d.ts.__ivy_ngcc_bak +0 -8
- package/lib/sharedComponents/assessment-editor/components/preview/preview-checkbox/preview-checkbox.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/preview/preview-comment-box/preview-comment-box.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/assessment-editor/components/preview/preview-comment-box/preview-comment-box.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/preview/preview-date-time/preview-date-time.component.d.ts.__ivy_ngcc_bak +0 -11
- package/lib/sharedComponents/assessment-editor/components/preview/preview-date-time/preview-date-time.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/preview/preview-dropdown/preview-dropdown.component.d.ts.__ivy_ngcc_bak +0 -8
- package/lib/sharedComponents/assessment-editor/components/preview/preview-dropdown/preview-dropdown.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/preview/preview-file-upload/preview-file-upload.component.d.ts.__ivy_ngcc_bak +0 -8
- package/lib/sharedComponents/assessment-editor/components/preview/preview-file-upload/preview-file-upload.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/preview/preview-image-choice/preview-image-choice.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/assessment-editor/components/preview/preview-image-choice/preview-image-choice.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/preview/preview-matrix-dropdown/preview-matrix-dropdown.component.d.ts.__ivy_ngcc_bak +0 -7
- package/lib/sharedComponents/assessment-editor/components/preview/preview-matrix-dropdown/preview-matrix-dropdown.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/preview/preview-matrix-rating-scale/preview-matrix-rating-scale.component.d.ts.__ivy_ngcc_bak +0 -7
- package/lib/sharedComponents/assessment-editor/components/preview/preview-matrix-rating-scale/preview-matrix-rating-scale.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/preview/preview-multiple-choice/preview-multiple-choice.component.d.ts.__ivy_ngcc_bak +0 -8
- package/lib/sharedComponents/assessment-editor/components/preview/preview-multiple-choice/preview-multiple-choice.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/preview/preview-multiple-textbox/preview-multiple-textbox.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/assessment-editor/components/preview/preview-multiple-textbox/preview-multiple-textbox.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/preview/preview-ranking/preview-ranking.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/assessment-editor/components/preview/preview-ranking/preview-ranking.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/preview/preview-single-textbox/preview-single-textbox.component.d.ts.__ivy_ngcc_bak +0 -6
- package/lib/sharedComponents/assessment-editor/components/preview/preview-single-textbox/preview-single-textbox.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/preview/preview-slider/preview-slider.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/assessment-editor/components/preview/preview-slider/preview-slider.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/preview/preview-star-rating/preview-star-rating.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/assessment-editor/components/preview/preview-star-rating/preview-star-rating.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/preview/preview-wrapper/preview-wrapper.component.d.ts.__ivy_ngcc_bak +0 -27
- package/lib/sharedComponents/assessment-editor/components/preview/preview-wrapper/preview-wrapper.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/preview/preview.module.d.ts.__ivy_ngcc_bak +0 -2
- package/lib/sharedComponents/assessment-editor/components/preview/preview.module.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/preview/thank-you/thank-you.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/assessment-editor/components/preview/thank-you/thank-you.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/preview/welcome/welcome.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/assessment-editor/components/preview/welcome/welcome.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/question-type/question-type.component.d.ts.__ivy_ngcc_bak +0 -6
- package/lib/sharedComponents/assessment-editor/components/question-type/question-type.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/quick-settings/quick-settings.component.d.ts.__ivy_ngcc_bak +0 -28
- package/lib/sharedComponents/assessment-editor/components/quick-settings/quick-settings.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/response-selector/response-selector.component.d.ts.__ivy_ngcc_bak +0 -11
- package/lib/sharedComponents/assessment-editor/components/response-selector/response-selector.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/setting-anonymous/setting-anonymous.component.d.ts.__ivy_ngcc_bak +0 -16
- package/lib/sharedComponents/assessment-editor/components/setting-anonymous/setting-anonymous.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/setting-response-segment/setting-response-segment.component.d.ts.__ivy_ngcc_bak +0 -47
- package/lib/sharedComponents/assessment-editor/components/setting-response-segment/setting-response-segment.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/single-line-editor/single-line-editor.component.d.ts.__ivy_ngcc_bak +0 -35
- package/lib/sharedComponents/assessment-editor/components/single-line-editor/single-line-editor.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/toolkit/toolkit.component.d.ts.__ivy_ngcc_bak +0 -8
- package/lib/sharedComponents/assessment-editor/components/toolkit/toolkit.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/welcome-thankyou/welcome-thankyou.component.d.ts.__ivy_ngcc_bak +0 -15
- package/lib/sharedComponents/assessment-editor/components/welcome-thankyou/welcome-thankyou.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/create-assessment-container/create-assessment-container.component.d.ts.__ivy_ngcc_bak +0 -66
- package/lib/sharedComponents/assessment-editor/create-assessment-container/create-assessment-container.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/create-assessment.module.d.ts.__ivy_ngcc_bak +0 -2
- package/lib/sharedComponents/assessment-editor/create-assessment.module.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/services/editor.service.d.ts.__ivy_ngcc_bak +0 -185
- package/lib/sharedComponents/assessment-editor/services/editor.service.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/services/result-criteria.service.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/sharedComponents/assessment-editor/services/result-criteria.service.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/services/validator.service.d.ts.__ivy_ngcc_bak +0 -32
- package/lib/sharedComponents/assessment-editor/services/validator.service.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-list/assessment-list-loader/assessment-list-loader.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/assessment-list/assessment-list-loader/assessment-list-loader.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-list/assessment-list-sub-loader/assessment-list-sub-loader.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/assessment-list/assessment-list-sub-loader/assessment-list-sub-loader.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-list/assessment-list.component.d.ts.__ivy_ngcc_bak +0 -81
- package/lib/sharedComponents/assessment-list/assessment-list.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-list/service/assessment.service.d.ts.__ivy_ngcc_bak +0 -10
- package/lib/sharedComponents/assessment-list/service/assessment.service.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-preview/assessment-preview.module.d.ts.__ivy_ngcc_bak +0 -2
- package/lib/sharedComponents/assessment-preview/assessment-preview.module.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-preview/checkbox-question/checkbox-question.component.d.ts.__ivy_ngcc_bak +0 -9
- package/lib/sharedComponents/assessment-preview/checkbox-question/checkbox-question.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-preview/date-time/date-time.component.d.ts.__ivy_ngcc_bak +0 -12
- package/lib/sharedComponents/assessment-preview/date-time/date-time.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-preview/device/device.component.d.ts.__ivy_ngcc_bak +0 -7
- package/lib/sharedComponents/assessment-preview/device/device.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-preview/file-upload/file-upload.component.d.ts.__ivy_ngcc_bak +0 -7
- package/lib/sharedComponents/assessment-preview/file-upload/file-upload.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-preview/page-header/page-header.component.d.ts.__ivy_ngcc_bak +0 -7
- package/lib/sharedComponents/assessment-preview/page-header/page-header.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-preview/preview/preview.component.d.ts.__ivy_ngcc_bak +0 -11
- package/lib/sharedComponents/assessment-preview/preview/preview.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-preview/preview-container/preview-container.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/assessment-preview/preview-container/preview-container.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-preview/quick-settings/quick-settings.component.d.ts.__ivy_ngcc_bak +0 -6
- package/lib/sharedComponents/assessment-preview/quick-settings/quick-settings.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-preview/radio-question/radio-question.component.d.ts.__ivy_ngcc_bak +0 -9
- package/lib/sharedComponents/assessment-preview/radio-question/radio-question.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-preview/select-question/select-question.component.d.ts.__ivy_ngcc_bak +0 -9
- package/lib/sharedComponents/assessment-preview/select-question/select-question.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-preview/single-textbox/single-textbox.component.d.ts.__ivy_ngcc_bak +0 -7
- package/lib/sharedComponents/assessment-preview/single-textbox/single-textbox.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-preview/welcome/welcome.component.d.ts.__ivy_ngcc_bak +0 -6
- package/lib/sharedComponents/assessment-preview/welcome/welcome.component.d.ts.map +0 -1
- package/lib/sharedComponents/audit-category-list/audit-category-list.component.d.ts.__ivy_ngcc_bak +0 -19
- package/lib/sharedComponents/audit-category-list/audit-category-list.component.d.ts.map +0 -1
- package/lib/sharedComponents/bulk-responsibility-view/bulk-responsibility-view.component.d.ts.__ivy_ngcc_bak +0 -20
- package/lib/sharedComponents/bulk-responsibility-view/bulk-responsibility-view.component.d.ts.map +0 -1
- package/lib/sharedComponents/bulk-view/bulk-view.component.d.ts.__ivy_ngcc_bak +0 -17
- package/lib/sharedComponents/bulk-view/bulk-view.component.d.ts.map +0 -1
- package/lib/sharedComponents/category-list/category-list.component.d.ts.__ivy_ngcc_bak +0 -19
- package/lib/sharedComponents/category-list/category-list.component.d.ts.map +0 -1
- package/lib/sharedComponents/category-multiselect/category-multi-select.component.d.ts.__ivy_ngcc_bak +0 -28
- package/lib/sharedComponents/category-multiselect/category-multi-select.component.d.ts.map +0 -1
- package/lib/sharedComponents/checkbox-list/checkbox-list.component.d.ts.__ivy_ngcc_bak +0 -22
- package/lib/sharedComponents/checkbox-list/checkbox-list.component.d.ts.map +0 -1
- package/lib/sharedComponents/checkpoint/checkpoints/checkpoints.component.d.ts.__ivy_ngcc_bak +0 -35
- package/lib/sharedComponents/checkpoint/checkpoints/checkpoints.component.d.ts.map +0 -1
- package/lib/sharedComponents/checkpoint/checkpoints-list/checkpoints-list.component.d.ts.__ivy_ngcc_bak +0 -8
- package/lib/sharedComponents/checkpoint/checkpoints-list/checkpoints-list.component.d.ts.map +0 -1
- package/lib/sharedComponents/checkpoint/checkpoints-questions/checkpoints-questions.component.d.ts.__ivy_ngcc_bak +0 -38
- package/lib/sharedComponents/checkpoint/checkpoints-questions/checkpoints-questions.component.d.ts.map +0 -1
- package/lib/sharedComponents/checkpoint-floating-bar/checkpoint-floating-bar.component.d.ts.__ivy_ngcc_bak +0 -15
- package/lib/sharedComponents/checkpoint-floating-bar/checkpoint-floating-bar.component.d.ts.map +0 -1
- package/lib/sharedComponents/checkpoint-policy/checkpoints-policy-container/checkpoints-policy-container.component.d.ts.__ivy_ngcc_bak +0 -16
- package/lib/sharedComponents/checkpoint-policy/checkpoints-policy-container/checkpoints-policy-container.component.d.ts.map +0 -1
- package/lib/sharedComponents/checkpoint-policy/checkpoints-policy-list/checkpoints-policy-list.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/checkpoint-policy/checkpoints-policy-list/checkpoints-policy-list.component.d.ts.map +0 -1
- package/lib/sharedComponents/checkpoint-policy/checkpoints-policy-questions/checkpoints-policy-questions.component.d.ts.__ivy_ngcc_bak +0 -33
- package/lib/sharedComponents/checkpoint-policy/checkpoints-policy-questions/checkpoints-policy-questions.component.d.ts.map +0 -1
- package/lib/sharedComponents/directive/autofocus.directive.d.ts.__ivy_ngcc_bak +0 -6
- package/lib/sharedComponents/directive/autofocus.directive.d.ts.map +0 -1
- package/lib/sharedComponents/directive/conditional-focus.directive.d.ts.__ivy_ngcc_bak +0 -9
- package/lib/sharedComponents/directive/conditional-focus.directive.d.ts.map +0 -1
- package/lib/sharedComponents/directive/drag-drop.directive.d.ts.__ivy_ngcc_bak +0 -8
- package/lib/sharedComponents/directive/drag-drop.directive.d.ts.map +0 -1
- package/lib/sharedComponents/directive/input-trim.directive.d.ts.__ivy_ngcc_bak +0 -3
- package/lib/sharedComponents/directive/input-trim.directive.d.ts.map +0 -1
- package/lib/sharedComponents/directive/scroll-in-view.directive.d.ts.__ivy_ngcc_bak +0 -9
- package/lib/sharedComponents/directive/scroll-in-view.directive.d.ts.map +0 -1
- package/lib/sharedComponents/document-section/document-section.component.d.ts.__ivy_ngcc_bak +0 -43
- package/lib/sharedComponents/document-section/document-section.component.d.ts.map +0 -1
- package/lib/sharedComponents/floating-bar/floating-bar.component.d.ts.__ivy_ngcc_bak +0 -38
- package/lib/sharedComponents/floating-bar/floating-bar.component.d.ts.map +0 -1
- package/lib/sharedComponents/format-and-evidence/format-and-evidence.component.d.ts.__ivy_ngcc_bak +0 -41
- package/lib/sharedComponents/format-and-evidence/format-and-evidence.component.d.ts.map +0 -1
- package/lib/sharedComponents/framework-list/framework-list-table/framework-list-table.component.d.ts.__ivy_ngcc_bak +0 -13
- package/lib/sharedComponents/framework-list/framework-list-table/framework-list-table.component.d.ts.map +0 -1
- package/lib/sharedComponents/framework-list/framework-list.component.d.ts.__ivy_ngcc_bak +0 -108
- package/lib/sharedComponents/framework-list/framework-list.component.d.ts.map +0 -1
- package/lib/sharedComponents/framework-list/framework-responsibility-table/framework-responsibility-table.component.d.ts.__ivy_ngcc_bak +0 -14
- package/lib/sharedComponents/framework-list/framework-responsibility-table/framework-responsibility-table.component.d.ts.map +0 -1
- package/lib/sharedComponents/framework-list/framework-table-loader/framework-table-loader.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/framework-list/framework-table-loader/framework-table-loader.component.d.ts.map +0 -1
- package/lib/sharedComponents/framework-list/parent-table/parent-table.component.d.ts.__ivy_ngcc_bak +0 -26
- package/lib/sharedComponents/framework-list/parent-table/parent-table.component.d.ts.map +0 -1
- package/lib/sharedComponents/frequency/frequency-annual/frequency-annual.component.d.ts.__ivy_ngcc_bak +0 -37
- package/lib/sharedComponents/frequency/frequency-annual/frequency-annual.component.d.ts.map +0 -1
- package/lib/sharedComponents/frequency/frequency-biannual/frequency-biannual.component.d.ts.__ivy_ngcc_bak +0 -35
- package/lib/sharedComponents/frequency/frequency-biannual/frequency-biannual.component.d.ts.map +0 -1
- package/lib/sharedComponents/frequency/frequency-checkbox-list/frequency-checkbox-list.component.d.ts.__ivy_ngcc_bak +0 -11
- package/lib/sharedComponents/frequency/frequency-checkbox-list/frequency-checkbox-list.component.d.ts.map +0 -1
- package/lib/sharedComponents/frequency/frequency-container/frequency-container.component.d.ts.__ivy_ngcc_bak +0 -33
- package/lib/sharedComponents/frequency/frequency-container/frequency-container.component.d.ts.map +0 -1
- package/lib/sharedComponents/frequency/frequency-daily/frequency-daily.component.d.ts.__ivy_ngcc_bak +0 -30
- package/lib/sharedComponents/frequency/frequency-daily/frequency-daily.component.d.ts.map +0 -1
- package/lib/sharedComponents/frequency/frequency-due-date/frequency-due-date.component.d.ts.__ivy_ngcc_bak +0 -19
- package/lib/sharedComponents/frequency/frequency-due-date/frequency-due-date.component.d.ts.map +0 -1
- package/lib/sharedComponents/frequency/frequency-lifecycle/frequency-lifecycle.component.d.ts.__ivy_ngcc_bak +0 -37
- package/lib/sharedComponents/frequency/frequency-lifecycle/frequency-lifecycle.component.d.ts.map +0 -1
- package/lib/sharedComponents/frequency/frequency-monthly/frequency-monthly.component.d.ts.__ivy_ngcc_bak +0 -33
- package/lib/sharedComponents/frequency/frequency-monthly/frequency-monthly.component.d.ts.map +0 -1
- package/lib/sharedComponents/frequency/frequency-on-completion-of/frequency-on-completion-of.component.d.ts.__ivy_ngcc_bak +0 -37
- package/lib/sharedComponents/frequency/frequency-on-completion-of/frequency-on-completion-of.component.d.ts.map +0 -1
- package/lib/sharedComponents/frequency/frequency-one-time/frequency-one-time.component.d.ts.__ivy_ngcc_bak +0 -32
- package/lib/sharedComponents/frequency/frequency-one-time/frequency-one-time.component.d.ts.map +0 -1
- package/lib/sharedComponents/frequency/frequency-ongoing/frequency-ongoing.component.d.ts.__ivy_ngcc_bak +0 -19
- package/lib/sharedComponents/frequency/frequency-ongoing/frequency-ongoing.component.d.ts.map +0 -1
- package/lib/sharedComponents/frequency/frequency-quarterly/frequency-quarterly.component.d.ts.__ivy_ngcc_bak +0 -32
- package/lib/sharedComponents/frequency/frequency-quarterly/frequency-quarterly.component.d.ts.map +0 -1
- package/lib/sharedComponents/frequency/frequency-radio-list/frequency-radio-list.component.d.ts.__ivy_ngcc_bak +0 -11
- package/lib/sharedComponents/frequency/frequency-radio-list/frequency-radio-list.component.d.ts.map +0 -1
- package/lib/sharedComponents/frequency/frequency-random/frequency-random.component.d.ts.__ivy_ngcc_bak +0 -59
- package/lib/sharedComponents/frequency/frequency-random/frequency-random.component.d.ts.map +0 -1
- package/lib/sharedComponents/frequency/frequency-responsibility-list/frequency-responsibility-list.component.d.ts.__ivy_ngcc_bak +0 -60
- package/lib/sharedComponents/frequency/frequency-responsibility-list/frequency-responsibility-list.component.d.ts.map +0 -1
- package/lib/sharedComponents/frequency/frequency-top/frequency-top.component.d.ts.__ivy_ngcc_bak +0 -23
- package/lib/sharedComponents/frequency/frequency-top/frequency-top.component.d.ts.map +0 -1
- package/lib/sharedComponents/frequency/frequency-weekly/frequency-weekly.component.d.ts.__ivy_ngcc_bak +0 -32
- package/lib/sharedComponents/frequency/frequency-weekly/frequency-weekly.component.d.ts.map +0 -1
- package/lib/sharedComponents/frequency/frequency.service.d.ts.__ivy_ngcc_bak +0 -48
- package/lib/sharedComponents/frequency/frequency.service.d.ts.map +0 -1
- package/lib/sharedComponents/frequency-dialog/frequency-dialog-annual/frequency-dialog-annual.component.d.ts.__ivy_ngcc_bak +0 -37
- package/lib/sharedComponents/frequency-dialog/frequency-dialog-annual/frequency-dialog-annual.component.d.ts.map +0 -1
- package/lib/sharedComponents/frequency-dialog/frequency-dialog-biannual/frequency-dialog-biannual.component.d.ts.__ivy_ngcc_bak +0 -35
- package/lib/sharedComponents/frequency-dialog/frequency-dialog-biannual/frequency-dialog-biannual.component.d.ts.map +0 -1
- package/lib/sharedComponents/frequency-dialog/frequency-dialog-checkbox-list/frequency-dialog-checkbox-list.component.d.ts.__ivy_ngcc_bak +0 -9
- package/lib/sharedComponents/frequency-dialog/frequency-dialog-checkbox-list/frequency-dialog-checkbox-list.component.d.ts.map +0 -1
- package/lib/sharedComponents/frequency-dialog/frequency-dialog-container/frequency-dialog-container.component.d.ts.__ivy_ngcc_bak +0 -31
- package/lib/sharedComponents/frequency-dialog/frequency-dialog-container/frequency-dialog-container.component.d.ts.map +0 -1
- package/lib/sharedComponents/frequency-dialog/frequency-dialog-due-date/frequency-dialog-due-date.component.d.ts.__ivy_ngcc_bak +0 -16
- package/lib/sharedComponents/frequency-dialog/frequency-dialog-due-date/frequency-dialog-due-date.component.d.ts.map +0 -1
- package/lib/sharedComponents/frequency-dialog/frequency-dialog-monthly/frequency-dialog-monthly.component.d.ts.__ivy_ngcc_bak +0 -33
- package/lib/sharedComponents/frequency-dialog/frequency-dialog-monthly/frequency-dialog-monthly.component.d.ts.map +0 -1
- package/lib/sharedComponents/frequency-dialog/frequency-dialog-one-time/frequency-dialog-one-time.component.d.ts.__ivy_ngcc_bak +0 -32
- package/lib/sharedComponents/frequency-dialog/frequency-dialog-one-time/frequency-dialog-one-time.component.d.ts.map +0 -1
- package/lib/sharedComponents/frequency-dialog/frequency-dialog-quarterly/frequency-dialog-quarterly.component.d.ts.__ivy_ngcc_bak +0 -32
- package/lib/sharedComponents/frequency-dialog/frequency-dialog-quarterly/frequency-dialog-quarterly.component.d.ts.map +0 -1
- package/lib/sharedComponents/frequency-dialog/frequency-dialog-radio-list/frequency-dialog-radio-list.component.d.ts.__ivy_ngcc_bak +0 -10
- package/lib/sharedComponents/frequency-dialog/frequency-dialog-radio-list/frequency-dialog-radio-list.component.d.ts.map +0 -1
- package/lib/sharedComponents/frequency-dialog/frequency-dialog-top/frequency-dialog-top.component.d.ts.__ivy_ngcc_bak +0 -22
- package/lib/sharedComponents/frequency-dialog/frequency-dialog-top/frequency-dialog-top.component.d.ts.map +0 -1
- package/lib/sharedComponents/frequency-dialog/frequency-dialog-weekly/frequency-dialog-weekly.component.d.ts.__ivy_ngcc_bak +0 -30
- package/lib/sharedComponents/frequency-dialog/frequency-dialog-weekly/frequency-dialog-weekly.component.d.ts.map +0 -1
- package/lib/sharedComponents/group-users-list/group-users-list.component.d.ts.__ivy_ngcc_bak +0 -47
- package/lib/sharedComponents/group-users-list/group-users-list.component.d.ts.map +0 -1
- package/lib/sharedComponents/list-loader/list-loader.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/list-loader/list-loader.component.d.ts.map +0 -1
- package/lib/sharedComponents/no-data/no-data.component.d.ts.__ivy_ngcc_bak +0 -14
- package/lib/sharedComponents/no-data/no-data.component.d.ts.map +0 -1
- package/lib/sharedComponents/no-data/no-data.module.d.ts.__ivy_ngcc_bak +0 -2
- package/lib/sharedComponents/no-data/no-data.module.d.ts.map +0 -1
- package/lib/sharedComponents/owner-list/owner-list.component.d.ts.__ivy_ngcc_bak +0 -42
- package/lib/sharedComponents/owner-list/owner-list.component.d.ts.map +0 -1
- package/lib/sharedComponents/pipes/array-filter.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/sharedComponents/pipes/array-filter.pipe.d.ts.map +0 -1
- package/lib/sharedComponents/pipes/filterPipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/sharedComponents/pipes/filterPipe.d.ts.map +0 -1
- package/lib/sharedComponents/pipes/short-merge.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/sharedComponents/pipes/short-merge.pipe.d.ts.map +0 -1
- package/lib/sharedComponents/pipes/spaceTrim.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/sharedComponents/pipes/spaceTrim.pipe.d.ts.map +0 -1
- package/lib/sharedComponents/pipes/within-data.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/sharedComponents/pipes/within-data.pipe.d.ts.map +0 -1
- package/lib/sharedComponents/program-listing/program-listing.component.d.ts.__ivy_ngcc_bak +0 -119
- package/lib/sharedComponents/program-listing/program-listing.component.d.ts.map +0 -1
- package/lib/sharedComponents/radio-list/radio-list.component.d.ts.__ivy_ngcc_bak +0 -24
- package/lib/sharedComponents/radio-list/radio-list.component.d.ts.map +0 -1
- package/lib/sharedComponents/radio-list-with-pagination/link-treatment-loader/link-treatment-loader.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/radio-list-with-pagination/link-treatment-loader/link-treatment-loader.component.d.ts.map +0 -1
- package/lib/sharedComponents/radio-list-with-pagination/radio-list.component.d.ts.__ivy_ngcc_bak +0 -47
- package/lib/sharedComponents/radio-list-with-pagination/radio-list.component.d.ts.map +0 -1
- package/lib/sharedComponents/responsibility-centers-list/responsibility-centers-list.component.d.ts.__ivy_ngcc_bak +0 -26
- package/lib/sharedComponents/responsibility-centers-list/responsibility-centers-list.component.d.ts.map +0 -1
- package/lib/sharedComponents/responsibility-risk-selector/responsibility-risk-selector.component.d.ts.__ivy_ngcc_bak +0 -23
- package/lib/sharedComponents/responsibility-risk-selector/responsibility-risk-selector.component.d.ts.map +0 -1
- package/lib/sharedComponents/review-frequency/review-frequency.component.d.ts.__ivy_ngcc_bak +0 -15
- package/lib/sharedComponents/review-frequency/review-frequency.component.d.ts.map +0 -1
- package/lib/sharedComponents/risk-classification/risk-classification.component.d.ts.__ivy_ngcc_bak +0 -35
- package/lib/sharedComponents/risk-classification/risk-classification.component.d.ts.map +0 -1
- package/lib/sharedComponents/roles-list/roles-list.component.d.ts.__ivy_ngcc_bak +0 -8
- package/lib/sharedComponents/roles-list/roles-list.component.d.ts.map +0 -1
- package/lib/sharedComponents/users-radio-list/users-radio-list.component.d.ts.__ivy_ngcc_bak +0 -26
- package/lib/sharedComponents/users-radio-list/users-radio-list.component.d.ts.map +0 -1
- package/lib/sharedComponents/v-loader/loader/loader.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/v-loader/loader/loader.component.d.ts.map +0 -1
- package/lib/sharedComponents/v-loader/loader-inline/loader-inline.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/v-loader/loader-inline/loader-inline.component.d.ts.map +0 -1
- package/lib/sharedComponents/v-loader/v-loader.module.d.ts.__ivy_ngcc_bak +0 -2
- package/lib/sharedComponents/v-loader/v-loader.module.d.ts.map +0 -1
- package/lib/ui-kit/action-dialog/action-dialog.module.d.ts.__ivy_ngcc_bak +0 -2
- package/lib/ui-kit/action-dialog/action-dialog.module.d.ts.map +0 -1
- package/lib/ui-kit/action-dialog/active/active.component.d.ts.__ivy_ngcc_bak +0 -12
- package/lib/ui-kit/action-dialog/active/active.component.d.ts.map +0 -1
- package/lib/ui-kit/action-dialog/deactivate/deactivate.component.d.ts.__ivy_ngcc_bak +0 -12
- package/lib/ui-kit/action-dialog/deactivate/deactivate.component.d.ts.map +0 -1
- package/lib/ui-kit/action-dialog/delete/delete.component.d.ts.__ivy_ngcc_bak +0 -11
- package/lib/ui-kit/action-dialog/delete/delete.component.d.ts.map +0 -1
- package/lib/ui-kit/action-dialog/duplicate/duplicate.component.d.ts.__ivy_ngcc_bak +0 -12
- package/lib/ui-kit/action-dialog/duplicate/duplicate.component.d.ts.map +0 -1
- package/lib/ui-kit/click-outside/click-outside.directive.d.ts.__ivy_ngcc_bak +0 -7
- package/lib/ui-kit/click-outside/click-outside.directive.d.ts.map +0 -1
- package/lib/ui-kit/click-outside/click-outside.module.d.ts.__ivy_ngcc_bak +0 -2
- package/lib/ui-kit/click-outside/click-outside.module.d.ts.map +0 -1
- package/lib/ui-kit/dialog/dialog-ref.d.ts.__ivy_ngcc_bak +0 -7
- package/lib/ui-kit/dialog/dialog-ref.d.ts.map +0 -1
- package/lib/ui-kit/dialog/dialog.component.d.ts.__ivy_ngcc_bak +0 -29
- package/lib/ui-kit/dialog/dialog.component.d.ts.map +0 -1
- package/lib/ui-kit/dialog/dialog.module.d.ts.__ivy_ngcc_bak +0 -2
- package/lib/ui-kit/dialog/dialog.module.d.ts.map +0 -1
- package/lib/ui-kit/dialog/dialog.service.d.ts.__ivy_ngcc_bak +0 -15
- package/lib/ui-kit/dialog/dialog.service.d.ts.map +0 -1
- package/lib/ui-kit/dialog/insertion.directive.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/ui-kit/dialog/insertion.directive.d.ts.map +0 -1
- package/lib/ui-kit/editor-loader/editor-loader/editor-loader.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/ui-kit/editor-loader/editor-loader/editor-loader.component.d.ts.map +0 -1
- package/lib/ui-kit/editor-loader/editor-loader.module.d.ts.__ivy_ngcc_bak +0 -2
- package/lib/ui-kit/editor-loader/editor-loader.module.d.ts.map +0 -1
- package/lib/ui-kit/format-html.pipe.d.ts.__ivy_ngcc_bak +0 -7
- package/lib/ui-kit/format-html.pipe.d.ts.map +0 -1
- package/lib/ui-kit/formgroup/click-outside.directive.d.ts.__ivy_ngcc_bak +0 -7
- package/lib/ui-kit/formgroup/click-outside.directive.d.ts.map +0 -1
- package/lib/ui-kit/formgroup/cs-checkbox/cs-checkbox.component.d.ts.__ivy_ngcc_bak +0 -11
- package/lib/ui-kit/formgroup/cs-checkbox/cs-checkbox.component.d.ts.map +0 -1
- package/lib/ui-kit/formgroup/cs-checkbox-indeterminate/cs-checkbox-indeterminate.component.d.ts.__ivy_ngcc_bak +0 -11
- package/lib/ui-kit/formgroup/cs-checkbox-indeterminate/cs-checkbox-indeterminate.component.d.ts.map +0 -1
- package/lib/ui-kit/formgroup/cs-radio/cs-radio.component.d.ts.__ivy_ngcc_bak +0 -12
- package/lib/ui-kit/formgroup/cs-radio/cs-radio.component.d.ts.map +0 -1
- package/lib/ui-kit/formgroup/cs-radio-group/cs-radio-group.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/ui-kit/formgroup/cs-radio-group/cs-radio-group.component.d.ts.map +0 -1
- package/lib/ui-kit/formgroup/cs-select/cs-select.component.d.ts.__ivy_ngcc_bak +0 -33
- package/lib/ui-kit/formgroup/cs-select/cs-select.component.d.ts.map +0 -1
- package/lib/ui-kit/formgroup/cs-switch/cs-switch.component.d.ts.__ivy_ngcc_bak +0 -12
- package/lib/ui-kit/formgroup/cs-switch/cs-switch.component.d.ts.map +0 -1
- package/lib/ui-kit/formgroup/formgroup.module.d.ts.__ivy_ngcc_bak +0 -2
- package/lib/ui-kit/formgroup/formgroup.module.d.ts.map +0 -1
- package/lib/ui-kit/formgroup/pipes/pascal.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/ui-kit/formgroup/pipes/pascal.pipe.d.ts.map +0 -1
- package/lib/ui-kit/formgroup/pipes/searchMultiSelect.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/ui-kit/formgroup/pipes/searchMultiSelect.pipe.d.ts.map +0 -1
- package/lib/ui-kit/line-loader/line-loader.component.d.ts.__ivy_ngcc_bak +0 -6
- package/lib/ui-kit/line-loader/line-loader.component.d.ts.map +0 -1
- package/lib/ui-kit/line-loader/line-loader.module.d.ts.__ivy_ngcc_bak +0 -2
- package/lib/ui-kit/line-loader/line-loader.module.d.ts.map +0 -1
- package/lib/ui-kit/no-data/no-data.component.d.ts.__ivy_ngcc_bak +0 -18
- package/lib/ui-kit/no-data/no-data.component.d.ts.map +0 -1
- package/lib/ui-kit/no-data/no-data.module.d.ts.__ivy_ngcc_bak +0 -2
- package/lib/ui-kit/no-data/no-data.module.d.ts.map +0 -1
- package/lib/ui-kit/pagination/pagination/pagination.component.d.ts.__ivy_ngcc_bak +0 -23
- package/lib/ui-kit/pagination/pagination/pagination.component.d.ts.map +0 -1
- package/lib/ui-kit/pagination/pagination.module.d.ts.__ivy_ngcc_bak +0 -2
- package/lib/ui-kit/pagination/pagination.module.d.ts.map +0 -1
- package/lib/ui-kit/popover/popover-event.directive.d.ts.__ivy_ngcc_bak +0 -7
- package/lib/ui-kit/popover/popover-event.directive.d.ts.map +0 -1
- package/lib/ui-kit/popover/popover-longpress.directive.d.ts.__ivy_ngcc_bak +0 -13
- package/lib/ui-kit/popover/popover-longpress.directive.d.ts.map +0 -1
- package/lib/ui-kit/popover/popover.component.d.ts.__ivy_ngcc_bak +0 -24
- package/lib/ui-kit/popover/popover.component.d.ts.map +0 -1
- package/lib/ui-kit/popover/popover.directive.d.ts.__ivy_ngcc_bak +0 -16
- package/lib/ui-kit/popover/popover.directive.d.ts.map +0 -1
- package/lib/ui-kit/popover/popover.module.d.ts.__ivy_ngcc_bak +0 -2
- package/lib/ui-kit/popover/popover.module.d.ts.map +0 -1
- package/lib/ui-kit/popover/popover.service.d.ts.__ivy_ngcc_bak +0 -9
- package/lib/ui-kit/popover/popover.service.d.ts.map +0 -1
- package/lib/ui-kit/popover-hover/popover-hover.component.d.ts.__ivy_ngcc_bak +0 -22
- package/lib/ui-kit/popover-hover/popover-hover.component.d.ts.map +0 -1
- package/lib/ui-kit/popover-hover/popover-hover.directive.d.ts.__ivy_ngcc_bak +0 -12
- package/lib/ui-kit/popover-hover/popover-hover.directive.d.ts.map +0 -1
- package/lib/ui-kit/popover-hover/popover-hover.module.d.ts.__ivy_ngcc_bak +0 -2
- package/lib/ui-kit/popover-hover/popover-hover.module.d.ts.map +0 -1
- package/lib/ui-kit/popover-hover/popover-hover.service.d.ts.__ivy_ngcc_bak +0 -9
- package/lib/ui-kit/popover-hover/popover-hover.service.d.ts.map +0 -1
- package/lib/ui-kit/smiley-dialog/smiley-dialog.component.d.ts.__ivy_ngcc_bak +0 -12
- package/lib/ui-kit/smiley-dialog/smiley-dialog.component.d.ts.map +0 -1
- package/lib/ui-kit/smiley-dialog/smiley-dialog.module.d.ts.__ivy_ngcc_bak +0 -2
- package/lib/ui-kit/smiley-dialog/smiley-dialog.module.d.ts.map +0 -1
- package/lib/ui-kit/smiley-dialog-inline/smiley-dialog-inline.component.d.ts.__ivy_ngcc_bak +0 -12
- package/lib/ui-kit/smiley-dialog-inline/smiley-dialog-inline.component.d.ts.map +0 -1
- package/lib/ui-kit/smiley-dialog-inline/smiley-dialog-inline.module.d.ts.__ivy_ngcc_bak +0 -2
- package/lib/ui-kit/smiley-dialog-inline/smiley-dialog-inline.module.d.ts.map +0 -1
- package/lib/ui-kit/snack-bar/snack-bar.component.d.ts.__ivy_ngcc_bak +0 -17
- package/lib/ui-kit/snack-bar/snack-bar.component.d.ts.map +0 -1
- package/lib/ui-kit/snack-bar/snack-bar.module.d.ts.__ivy_ngcc_bak +0 -2
- package/lib/ui-kit/snack-bar/snack-bar.module.d.ts.map +0 -1
- package/lib/ui-kit/snack-bar/snack-bar.service.d.ts.__ivy_ngcc_bak +0 -8
- package/lib/ui-kit/snack-bar/snack-bar.service.d.ts.map +0 -1
- package/lib/ui-kit/tooltip/tooltip.directive.d.ts.__ivy_ngcc_bak +0 -24
- package/lib/ui-kit/tooltip/tooltip.directive.d.ts.map +0 -1
- package/lib/ui-kit/tooltip/tooltip.module.d.ts.__ivy_ngcc_bak +0 -2
- package/lib/ui-kit/tooltip/tooltip.module.d.ts.map +0 -1
- package/lib/workflow-assessment/import-an-assessment/import-an-assessment.component.d.ts.__ivy_ngcc_bak +0 -231
- package/lib/workflow-assessment/import-an-assessment/import-an-assessment.component.d.ts.map +0 -1
- package/lib/workflow-assessment/workflow-assessment.component.d.ts.__ivy_ngcc_bak +0 -63
- package/lib/workflow-assessment/workflow-assessment.component.d.ts.map +0 -1
- package/lib/workflow-compliance/workflow-compliance.component.d.ts.__ivy_ngcc_bak +0 -373
- package/lib/workflow-compliance/workflow-compliance.component.d.ts.map +0 -1
- package/lib/workflow-engine-container/workflow-engine-container.component.d.ts.__ivy_ngcc_bak +0 -132
- package/lib/workflow-engine-container/workflow-engine-container.component.d.ts.map +0 -1
- package/lib/workflow-engine.module.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/workflow-engine.module.d.ts.map +0 -1
- package/lib/workflow-engine.service.d.ts.__ivy_ngcc_bak +0 -3
- package/lib/workflow-engine.service.d.ts.map +0 -1
- package/lib/workflow-pagination/workflow-pagination.component.d.ts.__ivy_ngcc_bak +0 -24
- package/lib/workflow-pagination/workflow-pagination.component.d.ts.map +0 -1
- package/lib/workflow-policy/workflow-policy.component.d.ts.__ivy_ngcc_bak +0 -292
- package/lib/workflow-policy/workflow-policy.component.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/assessment-picker/assessment-loader/assessment-loader.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/workflow-program/create-program-ui/assessment-picker/assessment-loader/assessment-loader.component.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/assessment-picker/assessment-picker.component.d.ts.__ivy_ngcc_bak +0 -87
- package/lib/workflow-program/create-program-ui/assessment-picker/assessment-picker.component.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/assessment-picker/assessment-sub-loader/assessment-sub-loader.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/workflow-program/create-program-ui/assessment-picker/assessment-sub-loader/assessment-sub-loader.component.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/assessment-picker/assessment.service.d.ts.__ivy_ngcc_bak +0 -13
- package/lib/workflow-program/create-program-ui/assessment-picker/assessment.service.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/assessment-picker/selected-assessment.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/workflow-program/create-program-ui/assessment-picker/selected-assessment.pipe.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/assessment-picker/workflow-pagination/workflow-pagination.component.d.ts.__ivy_ngcc_bak +0 -24
- package/lib/workflow-program/create-program-ui/assessment-picker/workflow-pagination/workflow-pagination.component.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/checkbox/checkbox.component.d.ts.__ivy_ngcc_bak +0 -13
- package/lib/workflow-program/create-program-ui/checkbox/checkbox.component.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/create-program-ui.module.d.ts.__ivy_ngcc_bak +0 -2
- package/lib/workflow-program/create-program-ui/create-program-ui.module.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/cs-switch/cs-switch.component.d.ts.__ivy_ngcc_bak +0 -17
- package/lib/workflow-program/create-program-ui/cs-switch/cs-switch.component.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/custom-field/custom-field.component.d.ts.__ivy_ngcc_bak +0 -19
- package/lib/workflow-program/create-program-ui/custom-field/custom-field.component.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/define-framework-listing/define-framework-listing.component.d.ts.__ivy_ngcc_bak +0 -63
- package/lib/workflow-program/create-program-ui/define-framework-listing/define-framework-listing.component.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/define-framework-listing/framework.service.d.ts.__ivy_ngcc_bak +0 -12
- package/lib/workflow-program/create-program-ui/define-framework-listing/framework.service.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/define-framework-listing/loader/loader.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/workflow-program/create-program-ui/define-framework-listing/loader/loader.component.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/define-framework-listing/pipes/category-all-select.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/workflow-program/create-program-ui/define-framework-listing/pipes/category-all-select.pipe.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/define-framework-listing/pipes/search.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/workflow-program/create-program-ui/define-framework-listing/pipes/search.pipe.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/define-framework-listing/pipes/sub-cat-indeter.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/workflow-program/create-program-ui/define-framework-listing/pipes/sub-cat-indeter.pipe.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/define-framework-listing/pipes/tooltip-message.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/workflow-program/create-program-ui/define-framework-listing/pipes/tooltip-message.pipe.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/directives/input-trim.directive.d.ts.__ivy_ngcc_bak +0 -3
- package/lib/workflow-program/create-program-ui/directives/input-trim.directive.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/file-pill/file-pill.component.d.ts.__ivy_ngcc_bak +0 -9
- package/lib/workflow-program/create-program-ui/file-pill/file-pill.component.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/floating-bar/floating-bar.component.d.ts.__ivy_ngcc_bak +0 -34
- package/lib/workflow-program/create-program-ui/floating-bar/floating-bar.component.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/form-field/form-field.component.d.ts.__ivy_ngcc_bak +0 -9
- package/lib/workflow-program/create-program-ui/form-field/form-field.component.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/input-with-pill/input-with-pill.component.d.ts.__ivy_ngcc_bak +0 -10
- package/lib/workflow-program/create-program-ui/input-with-pill/input-with-pill.component.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/pagination/pagination/pagination.component.d.ts.__ivy_ngcc_bak +0 -25
- package/lib/workflow-program/create-program-ui/pagination/pagination/pagination.component.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/pagination/pagination.module.d.ts.__ivy_ngcc_bak +0 -2
- package/lib/workflow-program/create-program-ui/pagination/pagination.module.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/pipes/array-concat.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/workflow-program/create-program-ui/pipes/array-concat.pipe.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/pipes/assessment-resolver.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/workflow-program/create-program-ui/pipes/assessment-resolver.pipe.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/pipes/filter.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/workflow-program/create-program-ui/pipes/filter.pipe.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/pipes/list-to-id.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/workflow-program/create-program-ui/pipes/list-to-id.pipe.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/pipes/pager.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/workflow-program/create-program-ui/pipes/pager.pipe.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/pipes/ref-disconnect.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/workflow-program/create-program-ui/pipes/ref-disconnect.pipe.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/pipes/search.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/workflow-program/create-program-ui/pipes/search.pipe.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/role-list/loader/loader.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/workflow-program/create-program-ui/role-list/loader/loader.component.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/role-list/role-list.component.d.ts.__ivy_ngcc_bak +0 -68
- package/lib/workflow-program/create-program-ui/role-list/role-list.component.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/tab-selector/tab-selector.component.d.ts.__ivy_ngcc_bak +0 -17
- package/lib/workflow-program/create-program-ui/tab-selector/tab-selector.component.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/tick-mark/tick-mark.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/workflow-program/create-program-ui/tick-mark/tick-mark.component.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/user-group-list/user-group-list.component.d.ts.__ivy_ngcc_bak +0 -112
- package/lib/workflow-program/create-program-ui/user-group-list/user-group-list.component.d.ts.map +0 -1
- package/lib/workflow-program/workflow-program.component.d.ts.__ivy_ngcc_bak +0 -201
- package/lib/workflow-program/workflow-program.component.d.ts.map +0 -1
- package/lib/workflow-risk/workflow-risk.component.d.ts.__ivy_ngcc_bak +0 -188
- package/lib/workflow-risk/workflow-risk.component.d.ts.map +0 -1
- package/lib/workflow-services/add-risk.service.d.ts.__ivy_ngcc_bak +0 -23
- package/lib/workflow-services/add-risk.service.d.ts.map +0 -1
- package/lib/workflow-services/assessment.service.d.ts.__ivy_ngcc_bak +0 -29
- package/lib/workflow-services/assessment.service.d.ts.map +0 -1
- package/lib/workflow-services/auth.service.d.ts.__ivy_ngcc_bak +0 -30
- package/lib/workflow-services/auth.service.d.ts.map +0 -1
- package/lib/workflow-services/frequency.service.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/workflow-services/frequency.service.d.ts.map +0 -1
- package/lib/workflow-services/log-issue.service.d.ts.__ivy_ngcc_bak +0 -31
- package/lib/workflow-services/log-issue.service.d.ts.map +0 -1
- package/lib/workflow-services/policy.service.d.ts.__ivy_ngcc_bak +0 -24
- package/lib/workflow-services/policy.service.d.ts.map +0 -1
- package/lib/workflow-services/programs.service.d.ts.__ivy_ngcc_bak +0 -111
- package/lib/workflow-services/programs.service.d.ts.map +0 -1
- package/lib/workflow-services/responsibility.service.d.ts.__ivy_ngcc_bak +0 -42
- package/lib/workflow-services/responsibility.service.d.ts.map +0 -1
- package/lib/workflow-services/token-decoder.service.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/workflow-services/token-decoder.service.d.ts.map +0 -1
- package/lib/workflow-services/ui-kit.service.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/workflow-services/ui-kit.service.d.ts.map +0 -1
- package/lib/workflow-survey-form/workflow-survey-form.component.d.ts.__ivy_ngcc_bak +0 -7
- package/lib/workflow-survey-form/workflow-survey-form.component.d.ts.map +0 -1
- package/vcomply-workflow-engine.d.ts.__ivy_ngcc_bak +0 -307
- package/vcomply-workflow-engine.d.ts.map +0 -1
|
@@ -117,8 +117,8 @@ export class WorkflowPolicyComponent {
|
|
|
117
117
|
failedTime: '',
|
|
118
118
|
continuous_failed_days: 3
|
|
119
119
|
};
|
|
120
|
-
this.frequencyPlaceholder = 'What is the attestation schedule for this policy
|
|
121
|
-
this.reviewerFrequencyPlaceholder = 'When does this policy need to be reviewed
|
|
120
|
+
this.frequencyPlaceholder = 'What is the attestation schedule for this policy?';
|
|
121
|
+
this.reviewerFrequencyPlaceholder = 'When does this policy need to be reviewed?';
|
|
122
122
|
this.sideSelectorElements = ['approvalWorkflow', 'assignees', 'approvers', 'reviewer',
|
|
123
123
|
'ccEmail', 'ccFail', 'rc', 'category', 'frequency', 'reviewerFrequency', 'checkpoints'];
|
|
124
124
|
this.riskClassification = [
|
|
@@ -1229,7 +1229,7 @@ WorkflowPolicyComponent.decorators = [
|
|
|
1229
1229
|
{ type: Component, args: [{
|
|
1230
1230
|
selector: 'app-workflow-policy',
|
|
1231
1231
|
template: "<!-- <p>workflow-policy works!</p> -->\r\n\r\n<ng-container *ngIf=\"!showCreateDocuments\">\r\n <div class=\"workflow-policy\">\r\n <div class=\"form-group-row\" [class.disabled]=\"activeSelector && activeSelector !== 'name'\">\r\n <div class=\"left\" [class.checked]=\"policyForm?.policyName\">\r\n <img src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/what.svg\" alt=\"name\"\r\n *ngIf=\"!policyForm?.policyName || activeSelector === 'name'\">\r\n\r\n <svg *ngIf=\"policyForm?.policyName && activeSelector !== 'name'\" class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">\r\n Policy Name <span class=\"required\">*</span>\r\n </label>\r\n <input type=\"text\" (keydown)=\"activeSelector = 'name'\" (focusin)=\"activateSelector('name',true)\" *ngIf=\"policyForm.policyName =='' || activeSelector === 'name'\"\r\n (focusout)=\"activateSelector('name',false)\" [ngModel]=\"policyForm.policyName\" (ngModelChange)=\"policyForm.policyName = changeName($event)\"\r\n placeholder=\"Name this policy\">\r\n <div class=\"selected\" *ngIf=\"policyForm.policyName.length && activeSelector !== 'name'\">\r\n <div class=\"chip-container\">\r\n <span class=\"value\">{{policyForm.policyName}}</span>\r\n </div>\r\n <button class=\"edit\" (click)=\"activateSelector('name',true)\" type=\"button\"><i\r\n class=\"icons\"></i> Edit</button>\r\n </div>\r\n\r\n <p *ngIf=\"submitted && (!policyForm.policyName.trim()) \" [appScrollInView]=\"true\" class=\"error-message\">Please enter a name for this\r\n policy. </p>\r\n <marx-editor [(ngModel)]=\"policyForm.policyNotes\" [editorConfig]=\"description\"></marx-editor>\r\n <app-cs-switch [(ngValue)]=\"policyForm.availableOnPortal\"\r\n (ngValueChange)=\"availabilityOnPortal($event)\">\r\n Do you want this policy to be available on the portal? <i class=\"icons\"\r\n [appTooltip]=\"'The policies that you intend to make accessible to the entire organization can be added to the policy portal. It is like a shared catalog of all active & updated policies that any logged in user can read/download for reference.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=\"true\"></i>\r\n </app-cs-switch>\r\n <app-cs-switch *ngIf=\"policyForm.availableOnPortal\" [(ngValue)]=\"policyForm.acceptSuggestions\">\r\n Accept\r\n suggestions <i class=\"icons\" [appTooltip]=\"'If enabled, users can provide improvement suggestions to the policies that are listed on the Policy Portal.'\" placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=\"true\"></i></app-cs-switch>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group-row\" [class.active]=\"activeSelector === 'category'\"\r\n [class.disabled]=\" activeSelector && activeSelector !== 'category' && sideSelectorElements.includes(activeSelector)\">\r\n <div class=\"left\" [class.checked]=\"policyForm?.selectedCategories?.length>0\">\r\n <img *ngIf=\"policyForm?.selectedCategories?.length==0 || activeSelector === 'category'\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/category.svg\" alt=\"\" />\r\n\r\n <svg *ngIf=\"policyForm?.selectedCategories?.length>0 && activeSelector !== 'category'\" class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">Policy Category <span class=\"required\">*</span> </label>\r\n <div class=\"select\" *ngIf=\"policyForm?.selectedCategories?.length==0\">\r\n <input type=\"text\" (click)=\"activateSelector('category',true)\"\r\n placeholder=\"Select a category for this policy.\" readonly>\r\n </div>\r\n\r\n <div class=\"selected\" *ngIf=\"policyForm?.selectedCategories?.length>0\">\r\n <div class=\"chip-container\" [class.more-one]=\"policyForm?.selectedCategories?.length>1\"\r\n [class.plus]=\"policyForm?.selectedCategories?.length>2\">\r\n <span class=\"chip\" *ngFor=\"let category of policyForm?.selectedCategories?.slice(0,2)\"><i\r\n class=\"icons\" (click)=\"remove('category',category)\"></i>\r\n {{category.item_name}}</span>\r\n <button class=\"count\" *ngIf=\"policyForm?.selectedCategories?.length > 2\" type=\"button\"\r\n appPopover (click)=\"category.popover()\" placement=\"right\">+\r\n {{policyForm?.selectedCategories?.slice(2).length}}</button>\r\n </div>\r\n <button *ngIf=\"activeSelector !== 'category'\" class=\"edit\" type=\"button\"\r\n (click)=\"activateSelector('category',true)\"><i class=\"icons\"></i>\r\n Edit</button>\r\n </div>\r\n <app-popover #category [dontCloseonClick]=\"true\">\r\n <div class=\"action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let category of policyForm?.selectedCategories | slice: 2; let j = index\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('category',category)\"></i>\r\n {{ category.item_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <p *ngIf=\"submitted && (policyForm?.selectedCategories?.length==0) \" [appScrollInView]=\"true\" class=\"error-message\">Please\r\n select\r\n the category for this policy.</p>\r\n </div>\r\n\r\n <div class=\"vx-form-group\" *ngIf=\"policyForm?.customTags?.length >0\">\r\n <ng-container *ngFor=\" let tag of policyForm?.customTags\">\r\n <label class=\"vx-control-panel\">{{tag.tagname}}</label>\r\n <input type=\"text\" [(ngModel)]=\"tag.value\" placeholder=\"{{tag.tagname}}\">\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group-row\" [class.active]=\"activeSelector === 'approvers'\"\r\n [class.disabled]=\" (activeSelector && activeSelector !== 'approvers' && sideSelectorElements.includes(activeSelector))\">\r\n <div class=\"left\" [class.checked]=\"policyForm?.selectedApprovers?.length>0\">\r\n <img *ngIf=\"policyForm?.selectedApprovers?.length==0 || activeSelector === 'approvers'\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/approval.svg\" alt=\"im\">\r\n\r\n <svg *ngIf=\"policyForm?.selectedApprovers?.length>0 && activeSelector !== 'approvers'\" class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group approval-workflow\" [class.disabled]=\"(policyApprovalFlag!==0)\">\r\n <label class=\"vx-control-panel\">\r\n Approval workflow <span class=\"required\">*</span>\r\n <button (click)=\"activateSelector('approvers',true);addMoreLevels=true; workflowType = 'SEQUENTIAL' \"\r\n class=\"button\">Create a new Approval Workflow</button>\r\n </label>\r\n <div class=\"select\" [class.disabled]=\"approverWorkFlowList?.length==0\"\r\n *ngIf=\"policyForm?.selectedApprovers[0]?.approvers?.length==0 ||policyForm?.selectedApprovers.length==0 \">\r\n\r\n <cs-select [ngModel]=\"selectedApprovalWorkflow\"\r\n (ngModelChange)=\"selectedWorkflowChange($event)\"\r\n [placeholder]=\"'Select approval workflow for this policy'\" name=\"selectedApprovalWorkflow\"\r\n [setMaxWidth]=\"true\">\r\n <cs-option *ngFor=\"let data of approverWorkFlowList\" [value]=\"data\">\r\n {{data.workflow_name}}\r\n </cs-option>\r\n <cs-option [value]=\"-1\" (click)=\"activateSelector('approvers',true);addMoreLevels=true; workflowType = 'SEQUENTIAL' \"\r\n >Create a new approval workflow</cs-option>\r\n\r\n </cs-select>\r\n </div>\r\n <ng-container *ngIf=\" policyForm?.selectedApprovers[0]?.approvers?.length>0\">\r\n <div class=\"selected\" *ngFor=\"let level of policyForm?.selectedApprovers; let i = index\">\r\n <div class=\"workflow-label\">\r\n <p class=\"title\">Level {{i+1}}</p>\r\n <p class=\"description\">{{level.name}}</p>\r\n </div>\r\n <div class=\"vx-d-flex vx-align-center\">\r\n <div class=\"chip-container\">\r\n <span class=\"chip\" *ngFor=\"let approver of level.approvers.slice(0,1);let j=index\"><i class=\"icons\"\r\n (click)=\"remove('approvers',approver,i)\"></i> <span\r\n class=\"step\" *ngIf=\"level.name=='SEQUENTIAL'\" >{{j+1}}</span>{{approver.member_name}}</span>\r\n\r\n\r\n <button class=\"count\" *ngIf=\"level.approvers?.length > 1\" type=\"button\" appPopover\r\n (click)=\"labelName.popover()\" placement=\"right\">+\r\n\r\n {{level.approvers.slice(1).length}}\r\n\r\n </button>\r\n <app-popover #labelName [dontCloseonClick]=\"true\">\r\n <div class=\"action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let approver of level.approvers | slice: 1; let j = index\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\"\r\n (click)=\"remove('approvers',approver,i)\"></i>\r\n <span class=\"step\" *ngIf=\"level.name=='SEQUENTIAL'\">\r\n {{(j==level.approvers.slice(1).length-1)? 'Final' : (j+2) }}\r\n </span>\r\n {{ approver.member_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n\r\n </div>\r\n <button class=\"edit\" type=\"button\"\r\n (click)=\"activateSelector('approvers',true,level.name);approversListIndex = i\"><i\r\n class=\"icons\"></i>Edit</button>\r\n <button class=\"close-btn\" (click)=\"remove('workflowLevel',level,i)\" >\r\n <i class=\"icons\"></i>\r\n </button>\r\n </div>\r\n\r\n\r\n\r\n </div>\r\n </ng-container>\r\n\r\n <p *ngIf=\"submitted && (policyForm?.selectedApprovers?.length==0) && (policyApprovalFlag === 0)\" [appScrollInView]=\"true\" class=\"error-message\">\r\n Select or create an approval workflow for this policy.</p>\r\n\r\n <label class=\"vx-control-panel\" *ngIf=\"policyForm.selectedApprovers[0]?.approvers?.length>0\"><button\r\n class=\"button\"\r\n (click)=\"activateSelector('approvers',true);addMoreLevels=true; workflowType = 'SEQUENTIAL' \">+\r\n Add More Levels</button></label>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group-row\" [class.active]=\"activeSelector === 'assignees'\"\r\n [class.disabled]=\" activeSelector && activeSelector !== 'assignees' && sideSelectorElements.includes(activeSelector)\">\r\n <div class=\"left\" [class.checked]=\"policyForm?.selectedAssignees?.length>0\">\r\n <img *ngIf=\"policyForm?.selectedAssignees?.length==0 || activeSelector === 'assignees'\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/who.svg\" alt=\"im\">\r\n\r\n <svg *ngIf=\"policyForm?.selectedAssignees?.length>0 && activeSelector !== 'assignees'\" class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">Who?</label>\r\n <div class=\"select\" *ngIf=\"(policyForm?.selectedAssignees?.length==0 && !groupEnabled) || (policyForm?.selectedAssignees?.length==0 && groupEnabled && policyForm?.selectedGroupAssignee.length==0 ) \">\r\n <input type=\"text\" (click)=\"activateSelector('assignees',true)\"\r\n placeholder=\"Select the persons responsible for attesting this policy.\" readonly>\r\n </div>\r\n <div class=\"selected\" *ngIf=\"policyForm?.selectedAssignees?.length > 0 || policyForm?.selectedGroupAssignee?.length > 0\">\r\n <div class=\"chip-container\" *ngIf=\"!groupEnabled\">\r\n <span class=\"chip\" *ngFor=\"let assignee of policyForm?.selectedAssignees?.slice(0,2)\"><i\r\n class=\"icons\" (click)=\"remove('assignees',assignee)\"></i>\r\n {{assignee.employee_name}}</span>\r\n <button class=\"count\" *ngIf=\"policyForm?.selectedAssignees?.length > 2\" type=\"button\"\r\n appPopover (click)=\"assigneePopover.popover()\" placement=\"right\">+\r\n {{policyForm?.selectedAssignees?.slice(2).length}}</button>\r\n </div>\r\n <div class=\"chip-container\" *ngIf=\"groupEnabled \">\r\n <div class=\"chip-inner\" *ngIf=\"groupEnabled && policyForm?.selectedAssignees.length > 0\">\r\n <span class=\"chip\"><span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">USER(S)</span></span>\r\n <button class=\"count user\" appPopover (click)=\"UserPopover.popover()\" placement=\"right\">{{policyForm?.selectedAssignees.length}}</button>\r\n </div>\r\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"policyForm?.selectedAssignees.length > 0 && policyForm?.selectedGroupAssignee.length >0\" >&</span>\r\n <div class=\"chip-inner\" *ngIf=\"policyForm?.selectedGroupAssignee.length > 0\">\r\n <span class=\"chip\"><span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">USER GROUP(S)</span></span>\r\n <button class=\"count\" appPopover (click)=\"group.popover()\" placement=\"right\">{{policyForm?.selectedGroupAssignee.length}}</button>\r\n </div>\r\n </div>\r\n <button class=\"edit\" type=\"button\" (click)=\"activateSelector('assignees',true)\">\r\n <i class=\"icons\"></i> Edit</button>\r\n </div>\r\n <p *ngIf=\"(submitted && ((policyForm?.selectedAssignees?.length==0 && policyForm?.frequency_details && !groupEnabled ) ||(policyForm?.selectedAssignees?.length==0 && policyForm.selectedGroupAssignee.length == 0 && policyForm?.frequency_details && groupEnabled)))\"\r\n id=\"whovalidatemsg\" class=\"error-message\" [appScrollInView]=\"true\">Select the persons responsible for attesting this policy.</p>\r\n <app-cs-switch [(ngValue)]=\"policyForm.requiresSignatureForAttestation\"\r\n [class.disabled]=\"policyForm?.selectedAssignees?.length==0\" class=\"who-toggle\">THIS POLICY REQUIRES\r\n E-SIGNATURE\r\n FOR ATTESTATION <i class=\"icons\" [appTooltip]=\"'If selected, the readers will be required to attest this policy using their electronic signature.'\" placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=\"true\"></i></app-cs-switch>\r\n <app-popover #assigneePopover [dontCloseonClick]=\"true\" >\r\n <div class=\"action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let assignee of policyForm?.selectedAssignees | slice: 2; let j = index\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('assignees',assignee)\"></i>\r\n {{ assignee.employee_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <app-popover #UserPopover [dontCloseonClick]=\"true\" >\r\n <div class=\"action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let assignee of policyForm?.selectedAssignees ; let j = index\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('assignees',assignee)\"></i>\r\n {{ assignee.employee_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <app-popover #group [dontCloseonClick]=\"true\">\r\n <div class=\"action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let data of policyForm?.selectedGroupAssignee; let j = index\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('groupAssignees',data)\" ></i>\r\n {{data.group_name}}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n\r\n <!-- overseer -->\r\n <app-popover #overseerPopover [dontCloseonClick]=\"true\" >\r\n <div class=\"action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let overseer of policyForm?.CCEmail ; let j = index\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('ccEmail',overseer)\"></i>\r\n {{ overseer?.employee_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <app-popover #overseerGroup [dontCloseonClick]=\"true\">\r\n <div class=\"action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let data of policyForm?.CCGroupEmail; let j = index\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('ccGroupEmail',data)\" ></i>\r\n {{data?.group_name}}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <!-- overseer end -->\r\n\r\n <!-- overseer fail start -->\r\n <app-popover #overseerFailPopover [dontCloseonClick]=\"true\" >\r\n <div class=\"action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let overseer of policyForm?.CCFailEmail ; let j = index\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('ccFail',overseer)\"></i>\r\n {{ overseer?.employee_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <app-popover #overseerFailGroup [dontCloseonClick]=\"true\">\r\n <div class=\"action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let data of policyForm?.CCFailEmailGroup; let j = index\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('ccGroupFailEmail',data)\" ></i>\r\n {{data?.group_name}}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <!-- overseer fail end -->\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"form-group-row\" [class.active]=\"activeSelector === 'frequency'\"\r\n [class.disabled]=\" activeSelector && activeSelector !== 'frequency' && sideSelectorElements.includes(activeSelector)\">\r\n <div class=\"left\" [class.checked]=\"policyForm?.frequency_details\">\r\n <img *ngIf=\"(!policyForm?.frequency_details) || activeSelector === 'frequency'\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/when.svg\" alt=\"im\">\r\n\r\n <svg *ngIf=\"policyForm?.frequency_details && activeSelector !== 'frequency'\" class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">When?</label>\r\n\r\n <div *ngIf=\"policyForm?.frequency_details == ''\" class=\"select button-sec\">\r\n <div class=\"custom-input frequency-custom-input\" (click)=\"activateSelector('frequency',true)\">{{frequencyPlaceholder}}</div>\r\n\r\n <button (click)=\"activateSelector('frequency',true)\" type=\"button\">Set A frequency</button>\r\n </div>\r\n <div *ngIf=\"policyForm?.frequency_details != ''\" class=\"selected button-sec\">\r\n <span class=\"chip\">{{frequencyPlaceholder}}</span>\r\n <button *ngIf=\"activeSelector !== 'frequency'\" type=\"button\" class=\"edit\"\r\n (click)=\"activateSelector('frequency',true)\">\r\n <i class=\"icons\"></i>Edit\r\n </button>\r\n </div>\r\n <p *ngIf=\"submitted && (((policyForm?.selectedAssignees?.length>0) && (!policyForm?.frequency_details) && !groupEnabled) || ((policyForm?.selectedAssignees?.length > 0 || policyForm?.selectedGroupAssignee?.length > 0) && (!policyForm?.frequency_details) && groupEnabled))\"\r\n class=\"error-message\" [appScrollInView]=\"true\">Select an attestation schedule for this policy.</p>\r\n\r\n <label class=\"vx-control-panel\">Effective Date</label>\r\n <div class=\"date-time-picker\">\r\n <div class=\"picker-group\">\r\n <input type=\"text\" readonly placeholder=\"Select the date from which this policy goes into effect.\"\r\n [value]=\"policyForm.policyDueDate | date: 'dd MMM yyyy'\" (click)=\"openDatePicker();\">\r\n <i class=\"icons\"></i>\r\n <dp-date-picker #datePicker (onSelect)=\"datePickerOverlay = false;closeDatePicker($event)\"\r\n [config]=\"dateConfig\" [(ngModel)]=\"policyForm.policyDueDate\">\r\n </dp-date-picker>\r\n <div class=\"vx-overlay\" (click)=\"closeDatePicker($event)\" *ngIf=\"datePickerOverlay\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group-row\" *ngIf=\"showRiskClassification\"\r\n [class.disabled]=\"activeSelector && activeSelector !== 'name'\">\r\n <div class=\"left\" [class.checked]=\"policyForm.riskRating\">\r\n <img src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/risks.svg\" alt=\"im\"\r\n *ngIf=\"!policyForm?.riskRating\">\r\n\r\n <svg class=\"checkIcon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\"\r\n *ngIf=\"policyForm?.riskRating\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">Risk Classification</label>\r\n <div class=\"classification\">\r\n <label class=\"low\" *ngFor=\" let class of riskClassification\" [ngClass]=\"[class.class]\">\r\n <input type=\"radio\" name=\"classification\" [value]=\"class.value\"\r\n [checked]=\"policyForm?.riskRating === class.value\" [(ngModel)]=\"policyForm.riskRating\">\r\n <span>{{class.name}}</span>\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group-row\" [appScrollInView]=\"scrollToBottom\" *ngIf=\"policyForm.addResponsibilityCenters\"\r\n [class.active]=\"activeSelector === 'rc'\"\r\n [class.disabled]=\" activeSelector && activeSelector !== 'rc' && sideSelectorElements.includes(activeSelector)\">\r\n <div class=\"left\" [class.checked]=\"policyForm?.selectedRCs?.length>0\">\r\n <img *ngIf=\"policyForm?.selectedRCs?.length==0 || activeSelector === 'rc'\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/responsibility-center.svg\"\r\n alt=\"\">\r\n\r\n <svg *ngIf=\"policyForm?.selectedRCs?.length>0 && activeSelector !== 'rc'\" class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">Responsibility Center</label>\r\n <div class=\"select\" *ngIf=\"policyForm?.selectedRCs?.length==0\">\r\n <input type=\"text\" (click)=\"activateSelector('rc',true)\"\r\n placeholder=\"Select Responsibility Center(s) that this policy relates to.\" readonly>\r\n </div>\r\n <div class=\"selected\" *ngIf=\"policyForm?.selectedRCs?.length > 0\">\r\n <div class=\"chip-container\">\r\n <span class=\"chip\" *ngFor=\"let rc of policyForm?.selectedRCs?.slice(0,2)\"><i class=\"icons\"\r\n (click)=\"remove('rc',rc)\"></i>\r\n {{rc.item_name}}</span>\r\n <button class=\"count\" *ngIf=\"policyForm?.selectedRCs?.length > 2\" type=\"button\" appPopover\r\n (click)=\"rcPopover.popover()\" placement=\"right\">+\r\n {{policyForm?.selectedRCs?.slice(2).length}}</button>\r\n </div>\r\n <button class=\"edit\" type=\"button\" (click)=\"activateSelector('rc',true)\">\r\n <i class=\"icons\"></i> Edit</button>\r\n </div>\r\n <app-popover #rcPopover [dontCloseonClick]=\"true\">\r\n <div class=\"action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let rc of policyForm?.selectedRCs | slice: 2; let j = index\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('rc',rc)\"></i>\r\n {{ rc.item_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group-row\" [appScrollInView]=\"scrollToBottom\" *ngIf=\"policyForm.addReviewers\"\r\n [class.active]=\"activeSelector === 'reviewer'\"\r\n [class.disabled]=\"activeSelector && (activeSelector !== 'reviewer' && activeSelector !== 'reviewerFrequency' ) && sideSelectorElements.includes(activeSelector)\">\r\n <div class=\"left\" [class.checked]=\"policyForm?.selectedReviewers?.length>0\">\r\n <img *ngIf=\"policyForm?.selectedReviewers?.length==0 || activeSelector === 'reviewer'\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/reviewer.svg\" alt=\"\">\r\n\r\n <svg *ngIf=\"policyForm?.selectedReviewers?.length>0 && activeSelector !== 'reviewer'\" class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">Reviewer </label>\r\n <div class=\"select\" *ngIf=\"policyForm?.selectedReviewers?.length==0\">\r\n <input type=\"text\" (click)=\"activateSelector('reviewer',true)\" placeholder=\"Select the person responsible for reviewing this policy\"\r\n readonly>\r\n </div>\r\n\r\n <div class=\"selected\" *ngIf=\"policyForm?.selectedReviewers?.length > 0\">\r\n <div class=\"chip-container\">\r\n <span class=\"chip\" *ngFor=\"let reviewer of policyForm?.selectedReviewers\"><i class=\"icons\"\r\n (click)=\"remove('reviewer',reviewer)\"></i>\r\n {{reviewer.member_name}}</span>\r\n\r\n </div>\r\n <button class=\"edit\" type=\"button\" (click)=\"activateSelector('reviewer',true)\">\r\n <i class=\"icons\"></i> Edit</button>\r\n </div>\r\n <p *ngIf=\"submitted && (policyForm?.selectedReviewers?.length==0) && (policyForm?.review_frequency_details)\"\r\n class=\"error-message\" [appScrollInView]=\"true\">Select a reviewer for this policy.</p>\r\n\r\n\r\n\r\n <label class=\"vx-control-panel\">When? </label>\r\n\r\n\r\n <div *ngIf=\"policyForm?.review_frequency_details == '' \" class=\"select button-sec\">\r\n <input type=\"text\" (click)=\"activateSelector('reviewerFrequency',true)\"\r\n [placeholder]=\"reviewerFrequencyPlaceholder\" readonly>\r\n <button (click)=\"activateSelector('reviewerFrequency',true)\" type=\"button\">Set A\r\n frequency</button>\r\n </div>\r\n <div *ngIf=\"policyForm?.review_frequency_details != '' \" class=\"selected button-sec\">\r\n <span class=\"chip\">{{reviewerFrequencyPlaceholder}}</span>\r\n <button *ngIf=\"activeSelector !== 'reviewerFrequency'\" type=\"button\" class=\"edit\"\r\n (click)=\"activateSelector('reviewerFrequency',true)\">\r\n <i class=\"icons\"></i>Edit\r\n </button>\r\n </div>\r\n <p *ngIf=\"submitted && (policyForm?.selectedReviewers?.length>0) && (!policyForm?.review_frequency_details)\"\r\n class=\"error-message\" [appScrollInView]=\"true\">Select the review schedule for this policy.</p>\r\n\r\n <app-format-and-evidence (updateFiles)=\"saveSelectedList('reviewer_attachments',$event)\" #formatEvidence\r\n [mode]=\"'policyReviewer'\" [organization_id]=\"organization_id\" [formatEvidanceData]=\"policyForm?.documentsAndLinks\">\r\n </app-format-and-evidence>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group-row\" [appScrollInView]=\"scrollToBottom\" *ngIf=\"policyForm.addCheckpoints\"\r\n [class.active]=\"activeSelector === 'checkpoints'\"\r\n [class.disabled]=\" activeSelector && activeSelector !== 'checkpoints' && sideSelectorElements.includes(activeSelector)\">\r\n <div class=\"left\" [class.checked]=\"policyForm?.checkpointDetails?.length>0\">\r\n <img *ngIf=\"policyForm?.checkpointDetails?.length==0 || activeSelector === 'checkpoints'\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/checkpoints.svg\" alt=\"im\">\r\n\r\n <svg *ngIf=\"policyForm?.checkpointDetails?.length>0 && activeSelector !== 'checkpoints'\"\r\n class=\"checkIcon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">\r\n Checkpoints\r\n <button *ngIf=\"policyForm?.checkpointDetails?.length===0\" class=\"button\" (click)=\"activateSelector('checkpoints',true)\">+ Add Checkpoints</button>\r\n </label>\r\n <div class=\"select\" *ngIf=\"policyForm?.checkpointDetails?.length===0\" (click)=\"activateSelector('checkpoints',true)\">\r\n <!-- <input type=\"text\" placeholder=\"Set up a questionnaire to confirm the reader\u2019s understanding of the policy.\" readonly> -->\r\n <div class=\"custom-input \">Set up a questionnaire to confirm the reader\u2019s<br>understanding of the policy.</div>\r\n </div>\r\n <div class=\"selected\" *ngIf=\"policyForm?.checkpointDetails?.length > 0\">\r\n <div class=\"chip-container\">\r\n <span class=\"chip\">{{policyForm?.checkpointDetails?.length + (policyForm?.checkpointDetails?.length > 1 ?' Checkpoints':' Checkpoint')}}</span>\r\n\r\n <span class=\"checkpoint-point-text first\">TOTAL POINTS: <span class=\"no\">{{policyForm?.totalQuestion}}</span><br><em>Each question carries 1 point</em></span>\r\n\r\n <span class=\"checkpoint-point-text\">POINTS REQUIRED TO ATTEST : <span class=\"no\">{{policyForm?.passingMarks}}</span></span>\r\n </div>\r\n <button class=\"edit\" type=\"button\" (click)=\"activateSelector('checkpoints',true)\">\r\n <i class=\"icons\"></i> Edit</button>\r\n </div>\r\n <!-- <app-popover #checkpointPopOver [dontCloseonClick]=\"true\">\r\n <div class=\"action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let checkpoint of policyForm?.checkpointDetails | slice: 1; let j = index\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('checkpoints',checkpoint,j+1)\"></i>\r\n {{ checkpoint?.question }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover> -->\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group-row\" [appScrollInView]=\"scrollToBottom\" *ngIf=\"policyForm.addOverseers\"\r\n [class.active]=\"activeSelector === 'ccEmail' ||activeSelector === 'ccFail'\"\r\n [class.disabled]=\"activeSelector && ((activeSelector !== 'ccEmail' && activeSelector !== 'ccFail')) && sideSelectorElements.includes(activeSelector)\">\r\n <div class=\"left\" [class.checked]=\"policyForm?.CCEmail?.length>0 || policyForm?.CCFailEmail?.length>0 \">\r\n <img *ngIf=\"(policyForm?.CCFailEmail?.length==0 && policyForm?.CCEmail?.length==0 )|| (activeSelector === 'ccEmail' || activeSelector === 'ccFail' )\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/oversight.svg\" alt=\"im\">\r\n\r\n <svg *ngIf=\"(policyForm?.CCFailEmail?.length>0 || policyForm?.CCEmail?.length>0 )&& (activeSelector !== 'ccEmail' && activeSelector !== 'ccFail' )\"\r\n class=\"checkIcon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">Overseer </label>\r\n <div class=\"select\" *ngIf=\"policyForm?.CCEmail?.length==0 && policyForm?.CCGroupEmail.length==0\">\r\n <input type=\"text\" (click)=\"activateSelector('ccEmail',true)\"\r\n placeholder=\"Who should have oversight of this policy?\" readonly>\r\n </div>\r\n <div class=\"selected\" *ngIf=\"policyForm?.CCEmail?.length > 0 || policyForm?.CCGroupEmail.length >0\">\r\n <div *ngIf=\" !groupEnabled\" class=\"chip-container\">\r\n <span class=\"chip\" *ngFor=\"let ccEmail of policyForm?.CCEmail?.slice(0,2)\"><i class=\"icons\"\r\n (click)=\"remove('ccEmail',ccEmail)\"></i>\r\n {{ccEmail.employee_name}}</span>\r\n <button class=\"count\" *ngIf=\"policyForm?.CCEmail?.length > 2\" type=\"button\" appPopover\r\n (click)=\"ccEmailPopover.popover()\" placement=\"right\">+\r\n {{policyForm?.CCEmail?.slice(2).length}}</button>\r\n </div>\r\n <div *ngIf=\"groupEnabled\" class=\"chip-container\">\r\n <div class=\"chip-inner\" *ngIf=\"groupEnabled && policyForm?.CCEmail?.length > 0\">\r\n <span class=\"chip\"><span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">USER(S)</span></span>\r\n <button class=\"count user\" appPopover (click)=\"overseerPopover.popover()\" placement=\"right\">{{policyForm?.CCEmail?.length}}</button>\r\n </div>\r\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"policyForm?.CCEmail.length > 0 && policyForm?.CCGroupEmail?.length >0\" >&</span>\r\n <div class=\"chip-inner\" *ngIf=\"policyForm?.CCGroupEmail.length > 0\">\r\n <span class=\"chip\"><span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">USER GROUP(S)</span></span>\r\n <button class=\"count\" appPopover (click)=\"overseerGroup.popover()\" placement=\"right\">{{policyForm?.CCGroupEmail?.length}}</button>\r\n </div>\r\n\r\n </div>\r\n <button class=\"edit\" type=\"button\" (click)=\"activateSelector('ccEmail',true)\">\r\n <i class=\"icons\"></i> Edit\r\n </button>\r\n </div>\r\n\r\n <div class=\"select\" *ngIf=\"policyForm?.CCFailEmail?.length==0 && policyForm?.CCFailEmailGroup?.length==0\">\r\n <input type=\"text\" (click)=\"activateSelector('ccFail',true)\"\r\n placeholder=\"Who should be notified if the policy is not attested on time?\" readonly>\r\n </div>\r\n <div class=\"selected\" *ngIf=\"policyForm?.CCFailEmail?.length > 0 || policyForm?.CCFailEmailGroup?.length>0\">\r\n <div *ngIf=\"!groupEnabled\" class=\"chip-container\">\r\n <span class=\"chip\" *ngFor=\"let ccFail of policyForm?.CCFailEmail?.slice(0,2)\"><i\r\n class=\"icons\" (click)=\"remove('ccFail',ccFail)\"></i>\r\n {{ccFail.employee_name}}</span>\r\n <button class=\"count\" *ngIf=\"policyForm?.CCFailEmail?.length > 2\" type=\"button\" appPopover\r\n (click)=\"ccFailPopover.popover()\" placement=\"right\">+\r\n {{policyForm?.CCFailEmail?.slice(2).length}}</button>\r\n </div>\r\n <div *ngIf=\"groupEnabled\" class=\"chip-container\">\r\n <div class=\"chip-inner\" *ngIf=\"groupEnabled && policyForm?.CCFailEmail.length > 0\">\r\n <span class=\"chip\"><span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">USER(S)</span></span>\r\n <button class=\"count user\" appPopover (click)=\"overseerFailPopover.popover()\" placement=\"right\">{{policyForm?.CCFailEmail?.length}}</button>\r\n </div>\r\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"policyForm?.CCFailEmail?.length > 0 && policyForm?.CCFailEmailGroup?.length >0\" >&</span>\r\n <div class=\"chip-inner\" *ngIf=\"policyForm?.CCFailEmailGroup?.length > 0\">\r\n <span class=\"chip\"><span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">USER GROUP(S)</span></span>\r\n <button class=\"count\" appPopover (click)=\"overseerFailGroup.popover()\" placement=\"right\">{{policyForm?.CCFailEmailGroup?.length}}</button>\r\n </div>\r\n </div>\r\n <button class=\"edit\" type=\"button\" (click)=\"activateSelector('ccFail',true)\">\r\n <i class=\"icons\"></i> Edit</button>\r\n </div>\r\n <app-popover #ccEmailPopover [dontCloseonClick]=\"true\">\r\n <div class=\"action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let ccEmail of policyForm?.CCEmail | slice: 2; let j = index\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('ccEmail',ccEmail)\"></i>\r\n {{ ccEmail.employee_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <app-popover #ccFailPopover [dontCloseonClick]=\"true\">\r\n <div class=\"action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let ccFail of policyForm?.CCFailEmail | slice: 2; let j = index\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('ccFail',ccFail)\"></i>\r\n {{ ccFail.employee_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group-row\" [appScrollInView]=\"scrollToBottom\" *ngIf=\"policyForm.addAssociatedDocuments\"\r\n [class.disabled]=\"activeSelector && activeSelector !== 'name'\">\r\n <div class=\"left\">\r\n <img *ngIf=\"policyForm.associatedDocuments.formatFiles?.length==0 \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/format-evidence.svg\"\r\n alt=\"im\">\r\n\r\n <svg *ngIf=\"policyForm.associatedDocuments.formatFiles?.length>0 \"\r\n class=\"checkIcon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">\r\n Associated Documents\r\n </label>\r\n <app-format-and-evidence (updateFiles)=\"saveSelectedList('associatedDocuments',$event)\"\r\n [mode]=\"'policy'\" [organization_id]=\"organization_id\" [formatEvidanceData]=\"policyForm?.associatedDocuments\"></app-format-and-evidence>\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <app-checkbox-list [config]=\"categoryConfig\" [twoColumn]=\"false\" [itemsList]=\"categoryList\"\r\n [selectedItems]=\"policyForm.selectedCategories\" [identifierKey]=\"'_id'\" [displayKey]=\"'item_name'\"\r\n [tooltipKey]=\"'item_name'\" *ngIf=\"activeSelector==='category'\" (saveList)=\"saveSelectedList('category',$event)\"\r\n (closeList)=\"disableSelector()\">\r\n </app-checkbox-list>\r\n <!-- <app-checkbox-list [config]=\"approvalWorkflowConfig\" [twoColumn]=\"true\"\r\n [itemsList]=\"\"\r\n [selectedItems]=\"policyForm.issueCCUsers\" [identifierKey]=\"'employee_email'\" [displayKey]=\"'employee_name'\" [tooltipKey]=\"'employee_email'\"\r\n *ngIf=\"activeSelector==='ISSUE_CC'\" (saveList)=\"selectorAction($event,'ISSUE_CC')\"\r\n (closeList)=\"fieldDeselector('ISSUE_CC')\">\r\n</app-checkbox-list> -->\r\n\r\n <app-responsibility-centers-list *ngIf=\"activeSelector === 'rc'\" [responsibilityCentersList]=\"rcList\"\r\n [selectedResponsibilityCenters]=\"policyForm.selectedRCs\" [rcIdKey]=\"'item_id'\"\r\n (saveSelectedList)=\"saveSelectedList('rc',$event)\" (closeRcList)=\"disableSelector()\">\r\n </app-responsibility-centers-list>\r\n\r\n\r\n <app-users-radio-list *ngIf=\"activeSelector === 'reviewer'\" [itemEmailKey]=\"'member_email'\"\r\n [usersList]=\"allReviewers\" [selectedUsers]=\"policyForm.selectedReviewers\" [userIdKey]=\"'member_id'\"\r\n [itemNameKey]=\"'member_name'\" (saveSelectedList)=\"saveSelectedList('reviewer',$event)\"\r\n (closeUsersList)=\"disableSelector()\">\r\n </app-users-radio-list>\r\n\r\n <app-owner-list *ngIf=\"activeSelector === 'ccEmail' && !groupEnabled\" [usersList]=\"overseersList\" [singularText]=\"'User selected'\" [pluralText]=\"'Users selected'\"\r\n [selectedUsers]=\"policyForm.CCEmail\" [userIdKey]=\"'employee_id'\" [itemNameKey]=\"'employee_name'\"\r\n (saveSelectedList)=\"saveSelectedList('ccEmail',$event)\" (closeUsersList)=\"disableSelector()\">\r\n </app-owner-list>\r\n <user-group-list *ngIf=\"activeSelector === 'ccEmail' && groupEnabled\" [groupEnabled]=\"true\" [userlist]=\"overseersList\" [groupList]=\"overseerGroupsList\" [selectedUsers]=\"policyForm.CCEmail\" [selectedGroups]=\"policyForm.CCGroupEmail\"\r\n (save)=\"saveSelectedList('ccEmail',$event)\" (cancel)=\"disableSelector()\" [featureflag]=\"groupEnabled\">\r\n </user-group-list>\r\n\r\n <app-owner-list *ngIf=\"activeSelector ==='ccFail' && !groupEnabled\" [usersList]=\"overseersList\" [singularText]=\"'User selected'\" [pluralText]=\"'Users selected'\"\r\n [selectedUsers]=\"policyForm.CCFailEmail\" [userIdKey]=\"'employee_id'\" [itemNameKey]=\"'employee_name'\"\r\n (saveSelectedList)=\"saveSelectedList('ccFail',$event)\" (closeUsersList)=\"disableSelector()\">\r\n </app-owner-list>\r\n <user-group-list *ngIf=\"activeSelector === 'ccFail' && groupEnabled\" [groupEnabled]=\"true\" [userlist]=\"overseersList\" [groupList]=\"overseerGroupsList\" [selectedUsers]=\"policyForm.CCFailEmail\" [selectedGroups]=\"policyForm.CCFailEmailGroup\"\r\n (save)=\"saveSelectedList('ccFail',$event)\" (cancel)=\"disableSelector()\" [featureflag]=\"groupEnabled\">\r\n </user-group-list>\r\n\r\n <app-group-users-list *ngIf=\"activeSelector === 'assignees' && !groupEnabled\" [usersList]=\"assigneesList\" [groupsList]=\"groupsList\"\r\n [selectedUsers] =\"policyForm.selectedAssignees\" [userIdKey]=\"'my_member_id'\"\r\n (saveSelectedList)=\"saveSelectedList('assignees',$event)\" (closeUsersList)=\"disableSelector()\">\r\n </app-group-users-list>\r\n <user-group-list *ngIf=\"activeSelector === 'assignees' && groupEnabled\" [groupEnabled]=\"true\" [userlist]=\"ownerlist\" [groupList]=\"groupsList\"\r\n (save)=\"saveSelectedList('assignees',$event)\" (cancel)=\"disableSelector()\" [selectedGroups]=\"policyForm.selectedGroupAssignee\" [selectedUsers] =\"policyForm.selectedAssignees\" [featureflag]=\"groupEnabled\" >\r\n </user-group-list>\r\n\r\n <app-owner-list *ngIf=\"activeSelector === 'approvers'\" [listHeading]=\"'Select Approvers'\"\r\n [singularText]=\"'User selected'\" [pluralText]=\"'Users selected'\" [usersList]=\"allApprovers\"\r\n [showWorkflow]=\"true\"\r\n [selectedUsers]=\"addMoreLevels?[]: policyForm.selectedApprovers[approversListIndex].approvers\"\r\n [userIdKey]=\"'member_id'\" [itemEmailKey]=\"'member_email'\" [itemNameKey]=\"'member_name'\"\r\n (saveSelectedList)=\"saveSelectedList('approvers',$event)\" (closeUsersList)=\"disableSelector()\" [mode]=\"mode\"\r\n [reviewerWorkflowType]=\"workflowType\" (reviewerWorkflowTypeChange)=\"reviewerTypeChange($event)\"\r\n [workflowList]=\"workflowList\" [workflowText]=\"'Approval Workflow'\">\r\n </app-owner-list>\r\n\r\n <app-frequency-container *ngIf=\"activeSelector === 'frequency'\" [mode]=\"'policy'\"\r\n [frequencyDetails]=\"frequencyDetails\" (selectedFrequency)=\"frequencyData($event)\" [feature]=\"feature\"\r\n (closeFrequency)=\"disableSelector()\"></app-frequency-container>\r\n\r\n <app-frequency-container *ngIf=\"activeSelector === 'reviewerFrequency'\" [mode]=\"'reviewerFrequency'\"\r\n [frequencyDetails]=\"reviewerFrequencyDetails\" (selectedFrequency)=\"reviewerFrequencyData($event)\" [feature]=\"feature\"\r\n (closeFrequency)=\"disableSelector()\"></app-frequency-container>\r\n <app-checkpoints-policy-container (closeCheckPoint)=\"disableSelector()\" [checkpointData]=\"policyForm?.checkpointDetails\" [requiredPoint]=\"policyForm?.passingMarks\" *ngIf=\"activeSelector === 'checkpoints'\" (saveCheckPoint)=\"saveSelectedList('checkpoints',$event)\"></app-checkpoints-policy-container>\r\n <app-loader-inline *ngIf=\"loader\"></app-loader-inline>\r\n\r\n</ng-container>\r\n<ng-container *ngIf=\"showCreateDocuments\">\r\n <!-- <app-create-documents *ngIf=\"showCreateDocuments\"\r\n [organization_id]=\"organization_id\"\r\n [member_obj_id]=\"member_obj_id\"\r\n [userInfo]=\"userInfo\"\r\n [policyId]=\"policyId\"\r\n [policyName]=\"policyForm.policyName\"\r\n (disconnectRefresh)=\"disconnectRefresh.emit(false)\"\r\n (editPolicy)=\"editPolicyFromDocuments()\"\r\n ></app-create-documents> -->\r\n <lib-document-section *ngIf=\"showCreateDocuments\"\r\n [organization_id]=\"organization_id\"\r\n [member_obj_id]=\"member_obj_id\"\r\n [userInfo]=\"userInfo\"\r\n [policyId]=\"policyId\"\r\n [policyName]=\"policyForm.policyName\"\r\n (disconnectRefresh)=\"disconnectRefresh.emit(false)\"\r\n (editPolicy)=\"editPolicyFromDocuments()\"\r\n ></lib-document-section>\r\n\r\n</ng-container>\r\n",
|
|
1232
|
-
styles: ["@import url(\"https://cdn.v-comply.com/design-system/css/icons/icons.css\");@import url(\"https://cdn.v-comply.com/design-system/css/display/display.css\");::ng-deep .workflow-policy{position:relative}::ng-deep .workflow-policy app-cs-switch{display:block}::ng-deep .workflow-policy app-cs-switch label.cs-switch span.value{justify-content:flex-end!important;line-height:16px}::ng-deep .workflow-policy app-cs-switch label.cs-switch span.value i{display:inline-flex;font-size:12px;cursor:pointer;color:#4681ef;align-items:center;line-height:16px;margin:0 8px 0 4px}::ng-deep .workflow-policy .form-group-row .right .approval-workflow .selected{height:56px;padding:4px 12px 8px;display:block}::ng-deep .workflow-policy .form-group-row .right .approval-workflow .selected .workflow-label{min-width:auto;padding:0;text-align:left;margin:0 0 4px;border-right:none;width:100%;display:flex;align-items:center}::ng-deep .workflow-policy .form-group-row .right .approval-workflow .selected .workflow-label p.description{font-size:10px;margin-left:6px}.disabled{opacity:.5;pointer-events:none}", "@import url(\"https://cdn.v-comply.com/design-system/css/icons/icons.css\");::-webkit-scrollbar-track{background-color:#f1f1f1;position:absolute}::-webkit-scrollbar{width:3px;height:3px;background-color:transparent;position:absolute}::-webkit-scrollbar-thumb{border-radius:3px;background-color:#dbdbdb;position:absolute}input::-webkit-inner-spin-button,input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}button{font-family:Poppins,sans-serif}::ng-deep .vx-form-group{display:block;position:relative;margin-bottom:20px}::ng-deep .vx-form-group:after{content:\"\";display:block;clear:both}::ng-deep .vx-form-group .select{position:relative}::ng-deep .vx-form-group .select:after{border-left-color:#707070;border-bottom:1px solid #707070;border-right:1px solid #707070;border-top-color:#707070;content:\"\";display:inline-block;right:15px;position:absolute;top:calc(50% - 4px);width:5px;height:5px;transform:rotate(45deg)}::ng-deep .vx-form-group .select input{cursor:pointer;padding-right:30px!important}::ng-deep .vx-form-group .select .custom-input{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#fff;outline:none;padding:3px 12px;line-height:16px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;cursor:pointer}::ng-deep .vx-form-group .select .custom-input:empty:not(:focus):before{content:attr(aria-placeholder);line-height:16px;font-size:13px;width:94%;display:block;pointer-events:none;opacity:.8}::ng-deep .vx-form-group .select .custom-input:hover{border-color:#1e5dd3;box-shadow:0 0 5px rgba(30,93,211,.27)}::ng-deep .vx-form-group .select .custom-input.frequency-custom-input{padding-right:116px}::ng-deep .vx-form-group .select+app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .select+app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:5px;text-transform:uppercase}::ng-deep .vx-form-group .select+app-cs-radio{margin-top:8px!important}::ng-deep .vx-form-group .select~app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;font-weight:500;color:#707070}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group .select.button-sec:after{display:none}::ng-deep .vx-form-group .select.button-sec button{background:transparent;border:none;display:inline-flex;float:right;color:#1e5dd3;text-transform:uppercase;font-weight:600;cursor:pointer;font-size:11px;position:absolute;top:12px;right:8px;padding:0;margin:0}::ng-deep .vx-form-group .select+.vx-control-panel{margin-top:8px}::ng-deep .vx-form-group .select+.selected{margin-top:8px}::ng-deep .vx-form-group .select.select{margin-top:8px}::ng-deep .vx-form-group .upload-format{border:1px solid #dbdbdb;border-radius:4px;padding:8px 12px;display:block}::ng-deep .vx-form-group .upload-format span.text{line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;display:block;margin-bottom:6px}::ng-deep .vx-form-group .upload-format .radio-group{display:flex}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio{display:inline-block}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;margin-left:8px}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio+app-cs-radio{margin-left:12px}::ng-deep .vx-form-group .upload-format~.upload-format{margin-top:4px}::ng-deep .vx-form-group .form-tab{display:flex;justify-content:flex-start}::ng-deep .vx-form-group .form-tab button{background:transparent;color:#161b2f;font-size:11px;line-height:16px;text-transform:uppercase;cursor:pointer;padding:8px 8px 8px 0;border:none;outline:none;font-weight:500}::ng-deep .vx-form-group .form-tab button:disabled{opacity:.5;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}::ng-deep .vx-form-group .form-tab button+button{padding:8px}::ng-deep .vx-form-group .form-tab button.active{color:#1e5dd3}::ng-deep .vx-form-group .tab-group{border:1px solid #dbdbdb;border-radius:4px;padding:0;display:block;position:relative}::ng-deep .vx-form-group .tab-group .upload-file{padding:16px 24px;display:flex;align-items:center}::ng-deep .vx-form-group .tab-group .upload-file .image{width:80px;margin-right:20px}::ng-deep .vx-form-group .tab-group .upload-file .browse{display:flex;align-items:center;justify-content:center;width:calc(100% - 100px);text-align:center}::ng-deep .vx-form-group .tab-group .upload-file .browse span{display:inline-block;font-size:12px;color:#747576;line-height:16px;padding:0 4px}::ng-deep .vx-form-group .tab-group .upload-file .browse .label{font-size:11px;color:#1e5dd3;line-height:16px;font-weight:600;text-transform:uppercase;margin:0;padding:0}::ng-deep .vx-form-group .tab-group .upload-file .browse .label input{opacity:0;position:absolute;top:0;margin:0;padding:0;right:0;bottom:0;left:0;cursor:pointer;width:100%}::ng-deep .vx-form-group .tab-group.active{border-color:#1e5dd3}::ng-deep .vx-form-group .tab-group.uploaded{margin-top:4px}::ng-deep .vx-form-group .tab-group.uploaded .upload-file{padding:12px \u200B24px}::ng-deep .vx-form-group .tab-group.uploaded .upload-file .image{display:none}::ng-deep .vx-form-group .tab-group.uploaded .upload-file .browse{width:100%}::ng-deep .vx-form-group .tab-group+label.vx-form-group{margin-top:8px;margin-bottom:4px}::ng-deep .vx-form-group .file-list{background:#fbfbfb;border:1px solid #f1f1f1;border-radius:4px;padding:12px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;position:relative}::ng-deep .vx-form-group .file-list span.file-name{color:#747576;line-height:16px;font-size:11px;font-weight:400;cursor:pointer;max-width:calc(100% - 20px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}::ng-deep .vx-form-group .file-list .button-group{display:flex}::ng-deep .vx-form-group .file-list button{font-size:12px;color:#eb2424;cursor:pointer;display:flex;padding:0;border:none;outline:none;background:transparent}::ng-deep .vx-form-group .file-list button.edit{color:#1e5dd3}::ng-deep .vx-form-group .file-list button+button{margin-left:16px}::ng-deep .vx-form-group .file-list+.file-list{margin-top:4px}::ng-deep .vx-form-group .file-list .file-container{display:flex;justify-content:space-between;width:100%}::ng-deep .vx-form-group .file-list.policy{background:#fff}::ng-deep .vx-form-group .file-list cs-select{position:relative;margin-top:8px;width:100%}::ng-deep .vx-form-group .file-list cs-select .selection-wrap .input-group input.value{height:32px!important;font-size:11px!important}::ng-deep .vx-form-group .file-list cs-select .selection-wrap .input-group i{right:12px!important;top:12px!important}::ng-deep .vx-form-group .file-list app-line-loader{display:block;position:absolute;left:10px;right:10px;bottom:0}::ng-deep .vx-form-group label.vx-control-panel{color:#161b2f;font-size:11px;font-weight:500;line-height:16px;margin-bottom:8px;display:block;text-transform:uppercase;width:100%;margin-top:4px;text-align:left}::ng-deep .vx-form-group label.vx-control-panel.custom-tag{font-size:10px}::ng-deep .vx-form-group label.vx-control-panel.vx-mt-8{margin-top:8px}::ng-deep .vx-form-group label.vx-control-panel span.required{color:#eb2424;font-size:16px;font-weight:400;position:relative;top:-2px}::ng-deep .vx-form-group label.vx-control-panel .button{background:transparent;border:none;display:inline-flex;float:right;color:#1e5dd3;text-transform:uppercase;font-weight:600;cursor:pointer;font-size:11px;padding:0;margin:0}::ng-deep .vx-form-group label.vx-control-panel app-cs-switch{float:right;display:block}::ng-deep .vx-form-group label.vx-control-panel i{margin-left:8px;font-size:12px;color:#1e5dd3;cursor:pointer;position:relative;top:1px}::ng-deep .vx-form-group label.vx-control-panel i.depreciation-icon{color:#e4b700;font-size:16px;position:relative;top:3px}::ng-deep .vx-form-group label.vx-control-panel .checkpoint-version{background:#f1f1f1;border-radius:2px;color:#042e7d;font-size:10px;font-weight:600;line-height:14px;margin-left:4px;padding:0 2px}::ng-deep .vx-form-group .input,::ng-deep .vx-form-group input[type=text]{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#fff;outline:none;padding:8px 12px;line-height:20px;font-size:13px;color:#747576;transition:all .2s ease-in-out;width:100%;font-weight:400}::ng-deep .vx-form-group .input::-moz-placeholder,::ng-deep .vx-form-group input[type=text]::-moz-placeholder{color:#747576;font-weight:400}::ng-deep .vx-form-group .input:-ms-input-placeholder,::ng-deep .vx-form-group input[type=text]:-ms-input-placeholder{color:#747576;font-weight:400}::ng-deep .vx-form-group .input::placeholder,::ng-deep .vx-form-group input[type=text]::placeholder{color:#747576;font-weight:400}::ng-deep .vx-form-group .input:focus,::ng-deep .vx-form-group .input:hover,::ng-deep .vx-form-group input[type=text]:focus,::ng-deep .vx-form-group input[type=text]:hover{border-color:#1e5dd3;box-shadow:0 0 5px rgba(30,93,211,.27)}::ng-deep .vx-form-group .input.error,::ng-deep .vx-form-group input[type=text].error{border-color:#eb2424;color:#eb2424;margin-bottom:4px}::ng-deep .vx-form-group .input.error:focus,::ng-deep .vx-form-group input[type=text].error:focus{box-shadow:0 0 5px rgba(211,30,30,.27)}::ng-deep .vx-form-group .input:disabled,::ng-deep .vx-form-group input[type=text]:disabled{background:#f1f1f1;cursor:not-allowed;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}::ng-deep .vx-form-group .input:disabled:hover,::ng-deep .vx-form-group input[type=text]:disabled:hover{border-color:#dbdbdb;box-shadow:none}::ng-deep .vx-form-group .input span.text,::ng-deep .vx-form-group input[type=text] span.text{font-size:13px;color:#747576;font-weight:400;display:block;width:100%}::ng-deep .vx-form-group .input .input-group,::ng-deep .vx-form-group input[type=text] .input-group{display:flex;align-items:center}::ng-deep .vx-form-group .input .input-group.counter,::ng-deep .vx-form-group input[type=text] .input-group.counter{min-width:96px;width:96px}::ng-deep .vx-form-group .input .input-group.counter button,::ng-deep .vx-form-group input[type=text] .input-group.counter button{height:24px;width:24px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;color:#747576;font-size:8px;cursor:pointer;outline:none}::ng-deep .vx-form-group .input .input-group.counter input,::ng-deep .vx-form-group input[type=text] .input-group.counter input{-webkit-appearance:textfield;-moz-appearance:textfield;height:24px;width:calc(100% - 48px);border:1px solid #f1f1f1;outline:none;padding:0 6px;text-align:center}::ng-deep .vx-form-group .input .input-group.counter input::-webkit-inner-spin-button,::ng-deep .vx-form-group .input .input-group.counter input::-webkit-outer-spin-button,::ng-deep .vx-form-group input[type=text] .input-group.counter input::-webkit-inner-spin-button,::ng-deep .vx-form-group input[type=text] .input-group.counter input::-webkit-outer-spin-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0}::ng-deep .vx-form-group .input+.file-list,::ng-deep .vx-form-group input[type=text]+.file-list{margin-top:8px}::ng-deep .vx-form-group .input::-moz-placeholder,::ng-deep .vx-form-group input[type=text]::-moz-placeholder{font-size:13px}::ng-deep .vx-form-group .input::placeholder,::ng-deep .vx-form-group input[type=text]::placeholder{font-size:13px}::ng-deep .vx-form-group .input:-ms-input-placeholder,::ng-deep .vx-form-group input[type=text]:-ms-input-placeholder{font-size:13px}::ng-deep .vx-form-group .input::-ms-input-placeholder,::ng-deep .vx-form-group input[type=text]::-ms-input-placeholder{font-size:13px}::ng-deep .vx-form-group .classification{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#fff;padding:8px 12px;display:flex;justify-content:space-between}::ng-deep .vx-form-group .classification label{width:100%;position:relative;z-index:1;margin:0 4px 0 0}::ng-deep .vx-form-group .classification label span{display:block;width:100%;height:24px;border:1px solid #f1f1f1;border-radius:2px;line-height:24px;font-size:10px;text-align:center;color:#747576;font-weight:500;position:relative;text-transform:uppercase}::ng-deep .vx-form-group .classification label span:before{height:2px;content:\"\";top:0;right:0;left:0;border-radius:2px;position:absolute;transition:all .2s ease-in-out}::ng-deep .vx-form-group .classification label input{opacity:0;position:absolute;top:0;right:0;bottom:0;left:0;margin:0;padding:0;width:100%;height:100%;cursor:pointer;z-index:1}::ng-deep .vx-form-group .classification label input:checked+span{color:#fff}::ng-deep .vx-form-group .classification label input:checked+span:before{bottom:0;height:100%;z-index:-1}::ng-deep .vx-form-group .classification label.low span:before{background:#34aa44}::ng-deep .vx-form-group .classification label.low-med span:before{background:#f2bf19}::ng-deep .vx-form-group .classification label.med-high span:before{background:#f29619}::ng-deep .vx-form-group .classification label.high span:before{background:#eb2424}::ng-deep .vx-form-group .classification label:last-of-type{margin-right:0}::ng-deep .vx-form-group .input{display:flex;align-items:center}::ng-deep .vx-form-group .selected{height:40px;border-radius:4px;border:1px solid #f1f1f1;background:#fbfbfb;outline:none;padding:8px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;display:flex;align-items:center;position:relative;justify-content:space-between}::ng-deep .vx-form-group .selected.first-field{z-index:2}::ng-deep .vx-form-group .selected .chip-container{display:flex;width:calc(100% - 60px);align-items:center}::ng-deep .vx-form-group .selected .chip-container.checkpoints{width:calc(100% - 120px)}::ng-deep .vx-form-group .selected .chip-container span.chip{background:#fff;border-radius:2px;box-shadow:0 0 3px #1e5dd31a;height:24px;padding:0 8px;color:#1e5dd3;font-size:12px;display:block;width:auto;max-width:100%;font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:24px}::ng-deep .vx-form-group .selected .chip-container span.chip.disabled{background:#f1f1f1;box-shadow:none;color:#747576;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}::ng-deep .vx-form-group .selected .chip-container span.chip i{font-weight:400;margin-right:8px;cursor:pointer;font-size:10px;position:relative;top:1px}::ng-deep .vx-form-group .selected .chip-container span.chip span.step{background:#1e5dd3;border-radius:2px;color:#fff;font-size:9px;line-height:14px;padding:0 4px;font-weight:400;text-align:center;min-width:auto;margin-right:4px}::ng-deep .vx-form-group .selected .chip-container span.chip+span.chip{margin-left:4px}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question{display:flex;align-items:center;justify-content:space-between;width:100%}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question span.value{color:#1e5dd3;font-size:12px;font-weight:400;line-height:24px;padding:0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:calc(100% - 80px)}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question span.label{background:#f1f1f1;border-radius:2px;color:#042e7d;font-size:9px;font-weight:600;text-transform:uppercase;padding-left:4px;padding-right:4px;line-height:12px;margin-left:8px}::ng-deep .vx-form-group .selected .chip-container span.value{color:#747576;font-size:13px;line-height:20px;font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:calc(100% - 52px);padding:0 4px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text{color:#747576;font-size:10px;font-weight:500;padding:0 8px;width:122px;line-height:14px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text.first{position:relative;min-width:162px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text.first:before{background:#f1f1f1;content:\"\";position:absolute;top:0;right:0;height:calc(100% + 12px);width:1px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text .no{color:#1e5dd3}::ng-deep .vx-form-group .selected .chip-container.plus span.chip{max-width:calc(50% - 35px)}::ng-deep .vx-form-group .selected .chip-container.more-one span.chip{max-width:50%}::ng-deep .vx-form-group .selected .chip-container .chip-inner{background:#fff;border-radius:2px;box-shadow:0 2px 4px #1e5dd31a;line-height:24px;padding:0 4px 0 8px;display:flex;align-items:center}::ng-deep .vx-form-group .selected .chip-container .chip-inner .chip{background:transparent;border-radius:0;box-shadow:none;height:auto;line-height:unset;padding:0;color:#747576;max-width:300px}::ng-deep .vx-form-group .selected .chip-container .chip-inner button.count{border-radius:20px;height:16px;padding:0 6px;border:none;font-size:9px;line-height:16px;margin-left:4px;min-width:20px}::ng-deep .vx-form-group .selected .chip-container .chip-inner button.count.user{background:#34aa44}::ng-deep .vx-form-group .selected .chip-container .chip-inner i.cross{cursor:pointer}::ng-deep .vx-form-group .selected button.count{background:#1e5dd3;border-radius:2px;height:24px;padding:0 8px;border:1px solid #1e5dd3;cursor:pointer;outline:none;color:#fff;font:13px;font-weight:500;line-height:20px;white-space:nowrap;margin-left:8px}::ng-deep .vx-form-group .selected button.edit{border:1px solid #f1f1f1;border-radius:2px;background:#fff;outline:none;cursor:pointer;display:block;height:24px;padding:0 5px 0 4px;font-size:11px;font-weight:500;color:#1e5dd3;text-transform:uppercase;white-space:nowrap;margin-left:8px}::ng-deep .vx-form-group .selected button.edit i{font-weight:400;font-size:8px;margin-right:4px}::ng-deep .vx-form-group .selected button.close-btn{background:transparent;border:none;padding:0;margin-left:8px;font-size:10px;color:#c7381b;display:flex;align-items:center}::ng-deep .vx-form-group .selected .workflow-label{min-width:92px;padding:4px;text-align:center;margin-left:-8px;margin-right:8px;border-right:1px solid #f1f1f1}::ng-deep .vx-form-group .selected .workflow-label p{margin:0;display:block;text-transform:uppercase}::ng-deep .vx-form-group .selected .workflow-label p.title{font-size:9px;line-height:12px;color:#161b2f;font-weight:500}::ng-deep .vx-form-group .selected .workflow-label p.description{font-size:11px;line-height:16px;color:#161b2f;font-weight:600}::ng-deep .vx-form-group .selected .workflow-label+.chip-container{width:calc(100% - 148px)}::ng-deep .vx-form-group .selected+.selected{margin-top:8px}::ng-deep .vx-form-group .selected+app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .selected+app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:5px;text-transform:uppercase}::ng-deep .vx-form-group .selected+app-cs-switch.who-toggle label.cs-switch span.value{color:#747576}::ng-deep .vx-form-group .selected+app-cs-radio{margin-top:8px!important}::ng-deep .vx-form-group .selected~app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;font-weight:500;color:#707070}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group .selected.readOnly{pointer-events:none}::ng-deep .vx-form-group .selected span.chip{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .vx-form-group .select-list{position:absolute;background:#fff;box-shadow:0 0 5px #1e5dd3;top:100%;right:0;left:0;z-index:2}::ng-deep .vx-form-group .select-list .vx-radio-group label.vx-radio-item{width:100%;padding:12px 16px}::ng-deep .vx-form-group .select-list .vx-radio-group label.vx-radio-item:hover{background:#f8f8f8}::ng-deep .vx-form-group marx-editor{margin-top:8px;display:block}::ng-deep .vx-form-group marx-editor .editor-container{border-radius:4px;border:1px solid #dbdbdb}::ng-deep .vx-form-group marx-editor .editor-container .editable-block{min-height:60px;padding:11px 15px;max-height:100px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%}::ng-deep .vx-form-group marx-editor .editor-container .editable-block ul{padding:0 0 0 10px;margin-top:0}::ng-deep .vx-form-group marx-editor .editor-container .editable-block ul li{list-style:disc}::ng-deep .vx-form-group marx-editor .editor-container .editable-block ol{padding:0 0 0 10px;margin-top:0}::ng-deep .vx-form-group marx-editor .editor-container .editable-block ol li{list-style:decimal}::ng-deep .vx-form-group marx-editor .editor-container .editor-tools{z-index:1;border-top:1px solid #dbdbdb;transition:none;border-radius:0 0 3px 3px;position:static}::ng-deep .vx-form-group marx-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button{height:22px!important;width:22px!important;padding:0 5px}::ng-deep .vx-form-group marx-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button svg{height:22px;width:12px}::ng-deep .vx-form-group marx-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button.submit{width:80px!important;line-height:22px;justify-content:center}::ng-deep .vx-form-group marx-editor .editor-container .editor-tools app-editor-menu .editor-menu .col .popover.small ul.option-list li button{width:100%!important;height:auto!important}::ng-deep .vx-form-group marx-editor .editor-container:focus-within{border-color:#1e5dd3!important}::ng-deep .vx-form-group marx-editor .editor-container:focus-within .editor-tools{border-color:#1e5dd3!important}::ng-deep .vx-form-group marx-editor .editor-container:hover{border-color:#1e5dd3!important}::ng-deep .vx-form-group marx-editor .editor-container:hover .editor-tools{border-color:#1e5dd3!important}::ng-deep .vx-form-group marx-editor+app-cs-switch{margin-top:8px}::ng-deep .vx-form-group app-cs-switch label.cs-switch span.value{font-size:11px;color:#747576;text-transform:uppercase}::ng-deep .vx-form-group app-cs-switch+app-cs-switch{margin-top:8px}::ng-deep .vx-form-group .date-time-picker{display:flex;justify-content:space-between;height:40px;border-radius:4px;border:1px solid #dbdbdb;padding:11px 0}::ng-deep .vx-form-group .date-time-picker:focus-within{border-color:#1e5dd3;box-shadow:0 0 5px rgba(30,93,211,.27)}::ng-deep .vx-form-group .date-time-picker .picker-group{width:50%;position:relative;display:flex;align-items:center}::ng-deep .vx-form-group .date-time-picker .picker-group:first-of-type{border-right:1px solid #dbdbdb}::ng-deep .vx-form-group .date-time-picker .picker-group:only-of-type{border:none;width:100%}::ng-deep .vx-form-group .date-time-picker .picker-group input{height:38px;background:#fff;line-height:38px;font-size:13px;color:#747576;transition:all .2s ease-in-out;width:100%;font-weight:400;border:none;padding:0 12px 0 34px;outline:none}::ng-deep .vx-form-group .date-time-picker .picker-group input:focus,::ng-deep .vx-form-group .date-time-picker .picker-group input:hover{box-shadow:none;border:none}::ng-deep .vx-form-group .date-time-picker .picker-group input::-moz-placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group input::placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group input:-ms-input-placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group input::-ms-input-placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group i{display:flex;justify-content:center;align-items:center;height:16px;width:16px;position:absolute;left:12px;top:0;color:#bcbcbc;font-size:16px;pointer-events:none}::ng-deep .vx-form-group app-cs-radio.main-filed{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;color:#707070}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group app-cs-radio.disabled{pointer-events:none;opacity:.5;filter:grayscale(1);background:#f1f1f1}::ng-deep .vx-form-group .switch-row{display:flex}::ng-deep .vx-form-group .switch-row app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .switch-row app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:0;text-transform:uppercase;color:#747576!important}::ng-deep .vx-form-group .switch-row app-cs-switch label.cs-switch span.value i{display:inline-flex;font-size:11px;cursor:pointer;color:#1e5dd3;align-items:center;line-height:16px;margin:0 4px}::ng-deep .vx-form-group .switch-row app-cs-switch+app-cs-switch{margin-left:8px}::ng-deep .vx-form-group .switch-row.align-right{justify-content:flex-end}::ng-deep .vx-form-group .switch-row.align-right label.cs-switch span.value{margin-right:8px}::ng-deep .vx-form-group .risk-type-field{background:#f8f8f8;border:1px solid #dbdbdb;border-radius:4px;height:40px;display:flex;align-items:center;padding:4px;position:relative;z-index:1}::ng-deep .vx-form-group .risk-type-field .type-item{width:50%;position:relative}::ng-deep .vx-form-group .risk-type-field .type-item button{background:transparent;border:none;border-radius:0;color:#747576;font-size:11px;font-weight:600;text-transform:uppercase;width:100%;height:32px;padding:0 12px;text-align:left}::ng-deep .vx-form-group .risk-type-field .type-item button.disabled{background:transparent!important;color:#dbdbdb!important;filter:unset!important;opacity:unset!important;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}::ng-deep .vx-form-group .risk-type-field .type-item .info{color:#1e5dd3;font-size:12px;position:absolute;top:10px;right:12px;cursor:pointer}::ng-deep .vx-form-group .risk-type-field .type-item.active button{color:#1e5dd3!important}::ng-deep .vx-form-group .risk-type-field .type-item:nth-child(2).active~.background-glider{transform:translate(100%)}::ng-deep .vx-form-group .risk-type-field .background-glider{background:#fff;border-radius:4px;box-shadow:0 1px 3px #161b2f26;position:absolute;display:flex;width:208px;height:32px;z-index:-1;transition:.25s ease-out}.left{width:36px;height:36px;margin-top:30px;margin-left:-58px;margin-right:20px;display:flex;justify-content:center;align-items:center;position:relative;z-index:10;border-radius:50%}.left.deadline-completed{margin-top:18px}.left.checked{background:transparent}.left img{width:36px}.left .checkIcon{width:32px;height:32px;background:#fff;border-radius:50%;stroke-width:4;stroke:#34aa44;stroke-miterlimit:10;box-shadow:inset 0 0 0 #34aa44;-webkit-animation:fillCheck .4s ease-in-out .4s forwards,scale .3s ease-in-out .9s both;animation:fillCheck .4s ease-in-out .4s forwards,scale .3s ease-in-out .9s both;margin-top:0}.left .checkIcon__circle{stroke-dasharray:166;stroke-dashoffset:166;stroke-width:2;stroke-miterlimit:10;stroke:#34aa44;fill:none;-webkit-animation:strokeCheck .6s cubic-bezier(.65,0,.45,1) forwards;animation:strokeCheck .6s cubic-bezier(.65,0,.45,1) forwards}.left .checkIcon__check{transform-origin:50% 50%;stroke-dasharray:48;stroke-dashoffset:48;-webkit-animation:strokeCheck .3s cubic-bezier(.65,0,.45,1) .8s forwards;animation:strokeCheck .3s cubic-bezier(.65,0,.45,1) .8s forwards}.right{width:100%}.right span.indicator{position:absolute;top:36px;left:-16px;font-size:12px;color:#f0b819;cursor:pointer}.form-group-row{display:flex;position:relative;transition:all .2s ease-in-out}.form-group-row.disabled{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none;filter:grayscale(1);z-index:2}.form-group-row.disabled .left{position:relative}.form-group-row.disabled .left:before{content:\"\";position:absolute;top:2px;right:0;bottom:0;left:2px;background:#fff;opacity:.7;border-radius:50%;width:32px;height:32px}.form-group-row.disabled .right{opacity:.3}.form-group-row.active{pointer-events:none;filter:grayscale(0);z-index:2;opacity:1}.form-group-row.active .right .vx-form-group .custom-input,.form-group-row.active .right .vx-form-group input{border-color:#1e5dd3;box-shadow:0 0 5px rgba(30,93,211,.27)}::ng-deep .radio-group-selector app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .radio-group-selector app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .radio-group-selector app-cs-radio label.radio-item .radio,::ng-deep .radio-group-selector app-cs-radio label.radio-item .radiomark{position:absolute!important;top:9px;left:12px}::ng-deep .radio-group-selector app-cs-radio label.radio-item .value{font-size:11px!important;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0!important;max-width:100%!important;font-weight:500!important;color:#707070!important}::ng-deep .radio-group-selector app-cs-radio label.radio-item .value i{font-size:12px;color:#1e5dd3}::ng-deep .radio-group-selector app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}@-webkit-keyframes strokeCheck{to{stroke-dashoffset:0}}@keyframes strokeCheck{to{stroke-dashoffset:0}}@-webkit-keyframes fillCheck{to{box-shadow:inset 0 0 0 2px #34aa44}}@keyframes fillCheck{to{box-shadow:inset 0 0 0 2px #34aa44}}.action-list{width:220px}.action-list ul{padding:0;margin:0;-webkit-animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;background:#fff;box-shadow:0 3px 6px #1c5bd140;border-radius:4px;max-height:220px;overflow:auto}.action-list ul.action-item{display:block}.action-list ul.action-item li{list-style:none;border:none;border-bottom:1px solid #f1f1f1;display:block;width:100%;padding:0;background:transparent;border-radius:0;margin:0;height:auto;justify-content:flex-start;box-shadow:none}.action-list ul.action-item li button{color:#6e717e;text-align:left;text-decoration:none;cursor:pointer;background:transparent;font-size:12px;text-transform:capitalize;display:flex;width:100%;padding:7.5px 11px;border:none}.action-list ul.action-item li button i{font-size:17px;margin-right:10px;color:#1c5bd1}.action-list ul.action-item li button:hover{background:#f3f3f3}.action-list ul.action-item li .avatar-card{display:flex;align-items:center;width:100%;padding:7.5px}.action-list ul.action-item li .avatar-card.within-con{display:block}.action-list ul.action-item li .avatar-card .avatar{height:24px;width:24px!important;overflow:hidden;background:#4681ef;color:#fff;font-size:10px;display:inline-flex;margin-right:5px;border-radius:50%;align-items:center;justify-content:center;text-transform:uppercase}.action-list ul.action-item li .avatar-card .avatar img{width:100%}.action-list ul.action-item li .avatar-card .avatar+span.value{width:calc(100% - 29px)}.action-list ul.action-item li .avatar-card span.value{width:100%;color:#6e717e;text-decoration:none;background:transparent;font-size:12px;text-transform:capitalize;display:block;font-weight:400;-moz-text-align-last:left;text-align-last:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:20px}.action-list ul.action-item li .avatar-card span.value i{font-size:8px;color:#1c5bd1;cursor:pointer;margin-right:5px}.action-list ul.action-item li .avatar-card.no-image{display:block}.action-list ul.action-item li .avatar-card.no-image span.value{width:100%;display:block}.action-list ul.action-item li .chip-item{color:#1e5dd3;padding:10px;display:flex;align-items:center}.action-list ul.action-item li .chip-item i{margin-right:7px;font-size:10px;cursor:pointer;display:inline-flex}.action-list ul.action-item li .chip-item span{display:block;width:auto;max-width:calc(100% - 17px);font-size:12px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.action-list ul.action-item li .chip-item span.chip-block{display:block;width:100%}.action-list ul.action-item li .chip-item span.id{font-size:9px}.action-list ul.action-item li .within{display:flex;align-items:center;justify-content:flex-start}.action-list ul.action-item li .within .block{background:#f1f1f1;border-radius:2px;padding:0 2px;line-height:14px;font-size:9px;font-weight:500;color:#042e7d;margin-right:6px;display:block;text-transform:uppercase}.action-list ul.action-item li .within .data{width:100%;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#747576;font-size:11px;font-weight:400;line-height:17px}.action-list ul.action-item li:first-child{-webkit-animation:action-list-open .25s cubic-bezier(.25,.46,.45,.94) both;animation:action-list-open .25s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(2){-webkit-animation:action-list-open .35s cubic-bezier(.25,.46,.45,.94) both;animation:action-list-open .35s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(3){-webkit-animation:action-list-open .45s cubic-bezier(.25,.46,.45,.94) both;animation:action-list-open .45s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(4){-webkit-animation:action-list-open .55s cubic-bezier(.25,.46,.45,.94) both;animation:action-list-open .55s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(5){-webkit-animation:action-list-open .65s cubic-bezier(.25,.46,.45,.94) both;animation:action-list-open .65s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(6){-webkit-animation:action-list-open .75s cubic-bezier(.25,.46,.45,.94) both;animation:action-list-open .75s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(7){-webkit-animation:action-list-open .85s cubic-bezier(.25,.46,.45,.94) both;animation:action-list-open .85s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(8){-webkit-animation:action-list-open .95s cubic-bezier(.25,.46,.45,.94) both;animation:action-list-open .95s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(9){-webkit-animation:action-list-open 1.05s cubic-bezier(.25,.46,.45,.94) both;animation:action-list-open 1.05s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(10){-webkit-animation:action-list-open 1.15s cubic-bezier(.25,.46,.45,.94) both;animation:action-list-open 1.15s cubic-bezier(.25,.46,.45,.94) both}@-webkit-keyframes action-list-open{0%{transform:translateY(50px)}to{transform:translateY(0)}}@keyframes action-list-open{0%{transform:translateY(50px)}to{transform:translateY(0)}}@-webkit-keyframes scale-up-center{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}@keyframes scale-up-center{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}p.error-message{font-size:11px;font-weight:400;color:#eb2424;line-height:16px;margin-top:8px;margin-bottom:0}.edit-loader{position:absolute;top:-3px;left:-3px;width:46px;height:46px;transform:rotate(180deg)}.circular-loader{-webkit-animation:rotate 2s linear infinite;animation:rotate 2s linear infinite;height:100%;transform-origin:center center;width:100%;position:absolute;top:0;left:0;margin:auto}.loader-path{stroke-dasharray:150,200;stroke-dashoffset:-10;-webkit-animation:dash 1.5s ease-in-out infinite;animation:dash 1.5s ease-in-out infinite;stroke-linecap:round}@-webkit-keyframes rotate{to{transform:rotate(1turn)}}@keyframes rotate{to{transform:rotate(1turn)}}@-webkit-keyframes dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35}to{stroke-dasharray:89,200;stroke-dashoffset:-124}}@keyframes dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35}to{stroke-dasharray:89,200;stroke-dashoffset:-124}}::ng-deep .dropdown{position:fixed;background:#fff;box-shadow:0 3px 6px #00000029;padding:24px 0;z-index:9;max-height:calc(100vh - 200px);overflow:auto}::ng-deep .dropdown ul.dropdown-list{padding:0 20px;margin:0;display:block}::ng-deep .dropdown ul.dropdown-list li{list-style:none}::ng-deep .dropdown ul.dropdown-list li app-cs-radio{display:flex}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item span.radio{position:absolute;top:12px;left:12px}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item span.value{padding:11px 12px 11px 32px;width:100%;border:1px solid #bcbcbc;border-radius:4px;margin-left:0;max-width:100%}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item svg{position:absolute;top:12px;left:12px}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item input[type=radio]:checked~span.value{background:#e8feeb;border-color:#34aa44}::ng-deep .dropdown ul.dropdown-list li+li{margin-top:8px}app-smiley-dialog{position:relative;z-index:10}app-smiley-dialog-inline{position:absolute;top:-3px;right:0;bottom:0;z-index:999;width:520px;height:calc(100vh + 3px)}::ng-deep .vx-overlay{position:fixed;z-index:3;top:0;right:0;bottom:0;left:0}dp-date-picker{width:100%;position:fixed!important;z-index:14;top:-40px;left:0}dp-date-picker input{width:100%;border:none;opacity:0;pointer-events:none}dp-date-picker input:focus{outline:none}dp-date-picker .dp-popup{width:412px;box-shadow:0 0 20px #161b2f26;background-color:#fff;border-radius:4px;-webkit-animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both}dp-date-picker .dp-popup dp-day-calendar,dp-date-picker .dp-popup dp-month-calendar{width:100%;pointer-events:auto}dp-date-picker .dp-popup dp-day-calendar button,dp-date-picker .dp-popup dp-month-calendar button{background:transparent;border:none;outline:none}dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-left,dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-right,dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-left,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-right,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn{width:40px;height:40px;display:flex;justify-content:center;align-items:center;border-radius:50%;font-size:14px}dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-left:hover,dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-right:hover,dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn:hover,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-left:hover,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-right:hover,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn:hover{background-color:#f3f3f3}dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn{display:none}dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn:before,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn:before{content:\"\";height:10px;width:10px;border-radius:50%;background:#000;display:inline-flex}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week,dp-date-picker .dp-popup dp-day-calendar .dp-weekdays,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays{display:flex;justify-content:space-around}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week .dp-calendar-weekday,dp-date-picker .dp-popup dp-day-calendar .dp-weekdays .dp-calendar-weekday,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week .dp-calendar-weekday,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays .dp-calendar-weekday{width:52px;border-left:none;border-bottom-color:#fff;color:#747576;font-size:11px;font-weight:600;text-transform:uppercase}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button,dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button{width:40px;height:40px;border-radius:50%;display:inline-flex;justify-content:center;align-items:center}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button:hover,dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button:hover,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button:hover,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button:hover{background-color:#f3f3f3}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button.dp-selected,dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button.dp-selected,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button.dp-selected,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button.dp-selected{background:#1e5dd3}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button.dp-current-day,dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button.dp-current-day,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button.dp-current-day,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button.dp-current-day{border:1px solid rgba(0,0,0,.38);color:#1e5dd3;background-color:#fff}dp-date-picker .dp-popup dp-day-calendar .dp-day-calendar-container,dp-date-picker .dp-popup dp-month-calendar .dp-day-calendar-container{padding:20px;border-radius:2px}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-nav-container,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-nav-container{display:flex;margin:0 0 20px;border:none}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-nav-container .dp-nav-header button,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-nav-container .dp-nav-header button{color:#000;font-size:17px;font-weight:500;margin:0 0 0 12px;padding:0}dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container,dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container{width:80px;display:flex}dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button,dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button{margin:0!important}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-wrapper,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-wrapper{border:none}dp-date-picker .dp-open+div{position:fixed!important;top:0!important;right:0!important;bottom:0!important;left:0!important;display:flex;justify-content:center;align-items:center;z-index:99;pointer-events:none;background:rgba(0,0,0,.3)}@-webkit-keyframes slide-bottom{0%{transform:translateY(-100px)}to{transform:translateY(0)}}@keyframes slide-bottom{0%{transform:translateY(-100px)}to{transform:translateY(0)}}::ng-deep span.file{display:block;width:20px;min-width:20px;border-radius:0 0 2px 2px;position:relative;margin-right:5px;border:1px solid #747576;border-top:none;margin-top:5px;background:#fff}::ng-deep span.file.table{margin-right:8px;width:18px;min-width:18px}::ng-deep span.file.table i{font-size:8px}::ng-deep span.file.table .format{height:8px;font-size:7px;line-height:8px;font-weight:400}::ng-deep span.file:before{position:absolute;border-radius:0;top:-4px;right:-1px;content:\"\";height:4px;width:4px;display:block;background:linear-gradient(45deg,#747576,#747576 1%,#747576 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0));filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file:after{height:4px;left:-1px;right:3px;border-top:1px solid;border-right:none;border-left:1px solid;content:\"\";top:-4px;position:absolute;border-radius:2px 0 0 0;background:#fff}::ng-deep span.file .format{height:10px;font-size:6px;text-transform:uppercase;background:transparent;font-weight:600;text-align:center;display:block;line-height:10px}::ng-deep span.file i{font-size:10px;height:10px;display:flex;align-items:center;justify-content:center;color:#dbdbdb}::ng-deep span.file.docx{width:22px!important}::ng-deep span.file.pdf,::ng-deep span.file.template{border-color:#f31c39}::ng-deep span.file.pdf:before,::ng-deep span.file.template:before{background:linear-gradient(45deg,#f31c39,#f31c39 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0));filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#f31c39\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.pdf:after,::ng-deep span.file.template:after{border-color:#f31c39}::ng-deep span.file.pdf .format,::ng-deep span.file.template .format{color:#f31c39}::ng-deep span.file.css,::ng-deep span.file.less,::ng-deep span.file.scss,::ng-deep span.file.xls,::ng-deep span.file.xlsx{border-color:#34aa44}::ng-deep span.file.css:before,::ng-deep span.file.less:before,::ng-deep span.file.scss:before,::ng-deep span.file.xls:before,::ng-deep span.file.xlsx:before{background:linear-gradient(45deg,#34aa44,#34aa44 1%,#34aa44 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0));filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.css:after,::ng-deep span.file.less:after,::ng-deep span.file.scss:after,::ng-deep span.file.xls:after,::ng-deep span.file.xlsx:after{border-color:#34aa44;color:#34aa44}::ng-deep span.file.css .format,::ng-deep span.file.less .format,::ng-deep span.file.scss .format,::ng-deep span.file.xls .format,::ng-deep span.file.xlsx .format{color:#34aa44}::ng-deep span.file.doc,::ng-deep span.file.docx,::ng-deep span.file.psd{border-color:#1e5dd3}::ng-deep span.file.doc:before,::ng-deep span.file.docx:before,::ng-deep span.file.psd:before{background:linear-gradient(45deg,#1e5dd3,#1e5dd3 1%,#1e5dd3 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0));filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.doc:after,::ng-deep span.file.docx:after,::ng-deep span.file.psd:after{border-color:#1e5dd3}::ng-deep span.file.doc .format,::ng-deep span.file.docx .format,::ng-deep span.file.psd .format{color:#1e5dd3}::ng-deep span.file.ai,::ng-deep span.file.html,::ng-deep span.file.jpeg,::ng-deep span.file.jpg,::ng-deep span.file.png,::ng-deep span.file.ppt{border-color:#f6882f}::ng-deep span.file.ai:before,::ng-deep span.file.html:before,::ng-deep span.file.jpeg:before,::ng-deep span.file.jpg:before,::ng-deep span.file.png:before,::ng-deep span.file.ppt:before{background:linear-gradient(45deg,#f6882f,#f6882f 1%,#f6882f 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0));filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.ai:after,::ng-deep span.file.html:after,::ng-deep span.file.jpeg:after,::ng-deep span.file.jpg:after,::ng-deep span.file.png:after,::ng-deep span.file.ppt:after{border-color:#f6882f}::ng-deep span.file.ai .format,::ng-deep span.file.html .format,::ng-deep span.file.jpeg .format,::ng-deep span.file.jpg .format,::ng-deep span.file.png .format,::ng-deep span.file.ppt .format{color:#f6882f}::ng-deep span.file.php{border-color:#7aa6f7}::ng-deep span.file.php:before{background:linear-gradient(45deg,#7aa6f7,#7aa6f7 1%,#7aa6f7 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0));filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.php:after{border-color:#7aa6f7}::ng-deep span.file.php .format{color:#7aa6f7}::ng-deep ngx-material-timepicker-container .timepicker-backdrop-overlay{background-color:rgba(0,0,0,.05)!important;z-index:9999999999!important}::ng-deep ngx-material-timepicker-container .timepicker-overlay{z-index:9999999999!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker{width:232px!important;border-radius:2px!important;box-shadow:0 4px 30px #161b2f26!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header{background-color:#fff!important;padding:0!important;border-radius:2px 2px 0 0}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container{display:block!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time{color:#000!important;width:150px!important;margin:0 auto;line-height:60px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control{font-size:40px;background-color:transparent!important;color:#000!important;font-weight:600;text-align:right;caret-color:transparent;outline:none;font-family:Poppins;line-height:56px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control:focus,::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control:hover{background-color:transparent!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control:last-of-type .timepicker-dial__control{text-align:left}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time span{padding:0 8px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period{display:flex!important;width:182px;margin:0 auto!important;background:#f1f1f1;padding:4px 10px;border-radius:20px;position:relative}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period:before{background:#f1f1f1;content:\"\";position:absolute;top:15px;left:-25px;width:calc(100% + 50px);height:2px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period{flex-direction:unset!important;position:relative;z-index:1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period:after{content:\"\";position:absolute;right:-12px;top:0;border-left:14px solid #f1f1f1;border-bottom:12px solid transparent;border-top:12px solid transparent;z-index:-1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period:before{content:\"\";position:absolute;left:-18px;top:0;border-right:14px solid #f1f1f1;border-bottom:12px solid transparent;border-top:12px solid transparent;z-index:-1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button{font-size:11px;background-color:transparent;padding:0;border-radius:20px;color:#747576;font-weight:600;font-family:Poppins;width:84px;height:24px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button.timepicker-dial__item_active{background:#fff!important;color:#1e5dd3!important;box-shadow:0 1px 2px #dbdbdb}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button+button{margin-left:0!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face{width:200px!important;height:200px!important;padding:10px!important;background:transparent!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer{height:calc(224px / 2 - 20px)!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer span{color:#000}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer span.active{color:#fff}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__clock-hand{height:80px!important;top:calc(50% - 80px)!important;background-color:#1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number>span.active{background-color:#1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__clock-hand_minute:before{border:4px solid #1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions{display:flex!important;padding:10px 0 0!important;background:#fff!important;justify-content:space-around!important;border-radius:0 0 2px 2px!important;overflow:hidden}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div:first-child ngx-material-timepicker-button button.timepicker-button{background:#f8f8f8;color:#1e5dd3}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div ngx-material-timepicker-button button.timepicker-button{line-height:28px!important;width:100%;background:#1e5dd3;color:#fff;border-radius:0!important;height:32px!important;width:116px!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div ngx-material-timepicker-button button.timepicker-button span{font-weight:500!important;font-size:11px;font-family:Poppins}::ng-deep marx-modal .popup-modal-background{background-color:#161b2fcc!important}::ng-deep .within-box{background:#f1f1f1;border-radius:.125rem;color:#042e7d}::ng-deep .within-value{overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;word-break:break-word}"]
|
|
1232
|
+
styles: ["@import url(\"https://cdn.v-comply.com/design-system/css/icons/icons.css\");@import url(\"https://cdn.v-comply.com/design-system/css/display/display.css\");::ng-deep .workflow-policy{position:relative}::ng-deep .workflow-policy app-cs-switch{display:block}::ng-deep .workflow-policy app-cs-switch label.cs-switch span.value{justify-content:flex-end!important;line-height:16px}::ng-deep .workflow-policy app-cs-switch label.cs-switch span.value i{display:inline-flex;font-size:12px;cursor:pointer;color:#4681ef;align-items:center;line-height:16px;margin:0 8px 0 4px}::ng-deep .workflow-policy .form-group-row .right .approval-workflow .selected{height:56px;padding:4px 12px 8px;display:block}::ng-deep .workflow-policy .form-group-row .right .approval-workflow .selected .workflow-label{min-width:auto;padding:0;text-align:left;margin:0 0 4px;border-right:none;width:100%;display:flex;align-items:center}::ng-deep .workflow-policy .form-group-row .right .approval-workflow .selected .workflow-label p.description{font-size:10px;margin-left:6px}.disabled{opacity:.5;pointer-events:none}", "@import url(\"https://cdn.v-comply.com/design-system/css/icons/icons.css\");::-webkit-scrollbar-track{background-color:#f1f1f1;position:absolute}::-webkit-scrollbar{width:3px;height:3px;background-color:transparent;position:absolute}::-webkit-scrollbar-thumb{border-radius:3px;background-color:#dbdbdb;position:absolute}input::-webkit-inner-spin-button,input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}button{font-family:Poppins,sans-serif}::ng-deep .vx-form-group{display:block;position:relative;margin-bottom:20px}::ng-deep .vx-form-group:after{content:\"\";display:block;clear:both}::ng-deep .vx-form-group .select{position:relative}::ng-deep .vx-form-group .select:after{border-left-color:#707070;border-bottom:1px solid #707070;border-right:1px solid #707070;border-top-color:#707070;content:\"\";display:inline-block;right:15px;position:absolute;top:calc(50% - 4px);width:5px;height:5px;transform:rotate(45deg)}::ng-deep .vx-form-group .select input{cursor:pointer;padding-right:30px!important}::ng-deep .vx-form-group .select .custom-input{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#fff;outline:none;padding:3px 12px;line-height:16px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;cursor:pointer}::ng-deep .vx-form-group .select .custom-input:empty:not(:focus):before{content:attr(aria-placeholder);line-height:16px;font-size:13px;width:94%;display:block;pointer-events:none;opacity:.8}::ng-deep .vx-form-group .select .custom-input:hover{border-color:#1e5dd3;box-shadow:0 0 5px rgba(30,93,211,.27)}::ng-deep .vx-form-group .select .custom-input.frequency-custom-input{padding-right:108px;display:flex;align-items:center}::ng-deep .vx-form-group .select+app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .select+app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:5px;text-transform:uppercase}::ng-deep .vx-form-group .select+app-cs-radio{margin-top:8px!important}::ng-deep .vx-form-group .select~app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;font-weight:500;color:#707070}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group .select.button-sec:after{display:none}::ng-deep .vx-form-group .select.button-sec button{background:transparent;border:none;display:inline-flex;float:right;color:#1e5dd3;text-transform:uppercase;font-weight:600;cursor:pointer;font-size:11px;position:absolute;top:12px;right:8px;padding:0;margin:0}::ng-deep .vx-form-group .select+.vx-control-panel{margin-top:8px}::ng-deep .vx-form-group .select+.selected{margin-top:8px}::ng-deep .vx-form-group .select.select{margin-top:8px}::ng-deep .vx-form-group .upload-format{border:1px solid #dbdbdb;border-radius:4px;padding:8px 12px;display:block}::ng-deep .vx-form-group .upload-format span.text{line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;display:block;margin-bottom:6px}::ng-deep .vx-form-group .upload-format .radio-group{display:flex}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio{display:inline-block}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;margin-left:8px}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio+app-cs-radio{margin-left:12px}::ng-deep .vx-form-group .upload-format~.upload-format{margin-top:4px}::ng-deep .vx-form-group .form-tab{display:flex;justify-content:flex-start}::ng-deep .vx-form-group .form-tab button{background:transparent;color:#161b2f;font-size:11px;line-height:16px;text-transform:uppercase;cursor:pointer;padding:8px 8px 8px 0;border:none;outline:none;font-weight:500}::ng-deep .vx-form-group .form-tab button:disabled{opacity:.5;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}::ng-deep .vx-form-group .form-tab button+button{padding:8px}::ng-deep .vx-form-group .form-tab button.active{color:#1e5dd3}::ng-deep .vx-form-group .tab-group{border:1px solid #dbdbdb;border-radius:4px;padding:0;display:block;position:relative}::ng-deep .vx-form-group .tab-group .upload-file{padding:16px 24px;display:flex;align-items:center}::ng-deep .vx-form-group .tab-group .upload-file .image{width:80px;margin-right:20px}::ng-deep .vx-form-group .tab-group .upload-file .browse{display:flex;align-items:center;justify-content:center;width:calc(100% - 100px);text-align:center}::ng-deep .vx-form-group .tab-group .upload-file .browse span{display:inline-block;font-size:12px;color:#747576;line-height:16px;padding:0 4px}::ng-deep .vx-form-group .tab-group .upload-file .browse .label{font-size:11px;color:#1e5dd3;line-height:16px;font-weight:600;text-transform:uppercase;margin:0;padding:0}::ng-deep .vx-form-group .tab-group .upload-file .browse .label input{opacity:0;position:absolute;top:0;margin:0;padding:0;right:0;bottom:0;left:0;cursor:pointer;width:100%}::ng-deep .vx-form-group .tab-group.active{border-color:#1e5dd3}::ng-deep .vx-form-group .tab-group.uploaded{margin-top:4px}::ng-deep .vx-form-group .tab-group.uploaded .upload-file{padding:12px \u200B24px}::ng-deep .vx-form-group .tab-group.uploaded .upload-file .image{display:none}::ng-deep .vx-form-group .tab-group.uploaded .upload-file .browse{width:100%}::ng-deep .vx-form-group .tab-group+label.vx-form-group{margin-top:8px;margin-bottom:4px}::ng-deep .vx-form-group .file-list{background:#fbfbfb;border:1px solid #f1f1f1;border-radius:4px;padding:12px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;position:relative}::ng-deep .vx-form-group .file-list span.file-name{color:#747576;line-height:16px;font-size:11px;font-weight:400;cursor:pointer;max-width:calc(100% - 20px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}::ng-deep .vx-form-group .file-list .button-group{display:flex}::ng-deep .vx-form-group .file-list button{font-size:12px;color:#eb2424;cursor:pointer;display:flex;padding:0;border:none;outline:none;background:transparent}::ng-deep .vx-form-group .file-list button.edit{color:#1e5dd3}::ng-deep .vx-form-group .file-list button+button{margin-left:16px}::ng-deep .vx-form-group .file-list+.file-list{margin-top:4px}::ng-deep .vx-form-group .file-list .file-container{display:flex;justify-content:space-between;width:100%}::ng-deep .vx-form-group .file-list.policy{background:#fff}::ng-deep .vx-form-group .file-list cs-select{position:relative;margin-top:8px;width:100%}::ng-deep .vx-form-group .file-list cs-select .selection-wrap .input-group input.value{height:32px!important;font-size:11px!important}::ng-deep .vx-form-group .file-list cs-select .selection-wrap .input-group i{right:12px!important;top:12px!important}::ng-deep .vx-form-group .file-list app-line-loader{display:block;position:absolute;left:10px;right:10px;bottom:0}::ng-deep .vx-form-group label.vx-control-panel{color:#161b2f;font-size:11px;font-weight:500;line-height:16px;margin-bottom:8px;display:block;text-transform:uppercase;width:100%;margin-top:4px;text-align:left}::ng-deep .vx-form-group label.vx-control-panel.custom-tag{font-size:10px}::ng-deep .vx-form-group label.vx-control-panel.vx-mt-8{margin-top:8px}::ng-deep .vx-form-group label.vx-control-panel span.required{color:#eb2424;font-size:16px;font-weight:400;position:relative;top:-2px}::ng-deep .vx-form-group label.vx-control-panel .button{background:transparent;border:none;display:inline-flex;float:right;color:#1e5dd3;text-transform:uppercase;font-weight:600;cursor:pointer;font-size:11px;padding:0;margin:0}::ng-deep .vx-form-group label.vx-control-panel app-cs-switch{float:right;display:block}::ng-deep .vx-form-group label.vx-control-panel i{margin-left:8px;font-size:12px;color:#1e5dd3;cursor:pointer;position:relative;top:1px}::ng-deep .vx-form-group label.vx-control-panel i.depreciation-icon{color:#e4b700;font-size:16px;position:relative;top:3px}::ng-deep .vx-form-group label.vx-control-panel .checkpoint-version{background:#f1f1f1;border-radius:2px;color:#042e7d;font-size:10px;font-weight:600;line-height:14px;margin-left:4px;padding:0 2px}::ng-deep .vx-form-group .input,::ng-deep .vx-form-group input[type=text]{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#fff;outline:none;padding:8px 12px;line-height:20px;font-size:13px;color:#747576;transition:all .2s ease-in-out;width:100%;font-weight:400}::ng-deep .vx-form-group .input::-moz-placeholder,::ng-deep .vx-form-group input[type=text]::-moz-placeholder{color:#747576;font-weight:400}::ng-deep .vx-form-group .input:-ms-input-placeholder,::ng-deep .vx-form-group input[type=text]:-ms-input-placeholder{color:#747576;font-weight:400}::ng-deep .vx-form-group .input::placeholder,::ng-deep .vx-form-group input[type=text]::placeholder{color:#747576;font-weight:400}::ng-deep .vx-form-group .input:focus,::ng-deep .vx-form-group .input:hover,::ng-deep .vx-form-group input[type=text]:focus,::ng-deep .vx-form-group input[type=text]:hover{border-color:#1e5dd3;box-shadow:0 0 5px rgba(30,93,211,.27)}::ng-deep .vx-form-group .input.error,::ng-deep .vx-form-group input[type=text].error{border-color:#eb2424;color:#eb2424;margin-bottom:4px}::ng-deep .vx-form-group .input.error:focus,::ng-deep .vx-form-group input[type=text].error:focus{box-shadow:0 0 5px rgba(211,30,30,.27)}::ng-deep .vx-form-group .input:disabled,::ng-deep .vx-form-group input[type=text]:disabled{background:#f1f1f1;cursor:not-allowed;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}::ng-deep .vx-form-group .input:disabled:hover,::ng-deep .vx-form-group input[type=text]:disabled:hover{border-color:#dbdbdb;box-shadow:none}::ng-deep .vx-form-group .input span.text,::ng-deep .vx-form-group input[type=text] span.text{font-size:13px;color:#747576;font-weight:400;display:block;width:100%}::ng-deep .vx-form-group .input .input-group,::ng-deep .vx-form-group input[type=text] .input-group{display:flex;align-items:center}::ng-deep .vx-form-group .input .input-group.counter,::ng-deep .vx-form-group input[type=text] .input-group.counter{min-width:96px;width:96px}::ng-deep .vx-form-group .input .input-group.counter button,::ng-deep .vx-form-group input[type=text] .input-group.counter button{height:24px;width:24px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;color:#747576;font-size:8px;cursor:pointer;outline:none}::ng-deep .vx-form-group .input .input-group.counter input,::ng-deep .vx-form-group input[type=text] .input-group.counter input{-webkit-appearance:textfield;-moz-appearance:textfield;height:24px;width:calc(100% - 48px);border:1px solid #f1f1f1;outline:none;padding:0 6px;text-align:center}::ng-deep .vx-form-group .input .input-group.counter input::-webkit-inner-spin-button,::ng-deep .vx-form-group .input .input-group.counter input::-webkit-outer-spin-button,::ng-deep .vx-form-group input[type=text] .input-group.counter input::-webkit-inner-spin-button,::ng-deep .vx-form-group input[type=text] .input-group.counter input::-webkit-outer-spin-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0}::ng-deep .vx-form-group .input+.file-list,::ng-deep .vx-form-group input[type=text]+.file-list{margin-top:8px}::ng-deep .vx-form-group .input::-moz-placeholder,::ng-deep .vx-form-group input[type=text]::-moz-placeholder{font-size:13px}::ng-deep .vx-form-group .input::placeholder,::ng-deep .vx-form-group input[type=text]::placeholder{font-size:13px}::ng-deep .vx-form-group .input:-ms-input-placeholder,::ng-deep .vx-form-group input[type=text]:-ms-input-placeholder{font-size:13px}::ng-deep .vx-form-group .input::-ms-input-placeholder,::ng-deep .vx-form-group input[type=text]::-ms-input-placeholder{font-size:13px}::ng-deep .vx-form-group .classification{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#fff;padding:8px 12px;display:flex;justify-content:space-between}::ng-deep .vx-form-group .classification label{width:100%;position:relative;z-index:1;margin:0 4px 0 0}::ng-deep .vx-form-group .classification label span{display:block;width:100%;height:24px;border:1px solid #f1f1f1;border-radius:2px;line-height:24px;font-size:10px;text-align:center;color:#747576;font-weight:500;position:relative;text-transform:uppercase}::ng-deep .vx-form-group .classification label span:before{height:2px;content:\"\";top:0;right:0;left:0;border-radius:2px;position:absolute;transition:all .2s ease-in-out}::ng-deep .vx-form-group .classification label input{opacity:0;position:absolute;top:0;right:0;bottom:0;left:0;margin:0;padding:0;width:100%;height:100%;cursor:pointer;z-index:1}::ng-deep .vx-form-group .classification label input:checked+span{color:#fff}::ng-deep .vx-form-group .classification label input:checked+span:before{bottom:0;height:100%;z-index:-1}::ng-deep .vx-form-group .classification label.low span:before{background:#34aa44}::ng-deep .vx-form-group .classification label.low-med span:before{background:#f2bf19}::ng-deep .vx-form-group .classification label.med-high span:before{background:#f29619}::ng-deep .vx-form-group .classification label.high span:before{background:#eb2424}::ng-deep .vx-form-group .classification label:last-of-type{margin-right:0}::ng-deep .vx-form-group .input{display:flex;align-items:center}::ng-deep .vx-form-group .selected{height:40px;border-radius:4px;border:1px solid #f1f1f1;background:#fbfbfb;outline:none;padding:8px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;display:flex;align-items:center;position:relative;justify-content:space-between}::ng-deep .vx-form-group .selected.first-field{z-index:2}::ng-deep .vx-form-group .selected .chip-container{display:flex;width:calc(100% - 60px);align-items:center}::ng-deep .vx-form-group .selected .chip-container.checkpoints{width:calc(100% - 120px)}::ng-deep .vx-form-group .selected .chip-container span.chip{background:#fff;border-radius:2px;box-shadow:0 0 3px #1e5dd31a;height:24px;padding:0 8px;color:#1e5dd3;font-size:12px;display:block;width:auto;max-width:100%;font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:24px}::ng-deep .vx-form-group .selected .chip-container span.chip.disabled{background:#f1f1f1;box-shadow:none;color:#747576;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}::ng-deep .vx-form-group .selected .chip-container span.chip i{font-weight:400;margin-right:8px;cursor:pointer;font-size:10px;position:relative;top:1px}::ng-deep .vx-form-group .selected .chip-container span.chip span.step{background:#1e5dd3;border-radius:2px;color:#fff;font-size:9px;line-height:14px;padding:0 4px;font-weight:400;text-align:center;min-width:auto;margin-right:4px}::ng-deep .vx-form-group .selected .chip-container span.chip+span.chip{margin-left:4px}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question{display:flex;align-items:center;justify-content:space-between;width:100%}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question span.value{color:#1e5dd3;font-size:12px;font-weight:400;line-height:24px;padding:0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:calc(100% - 80px)}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question span.label{background:#f1f1f1;border-radius:2px;color:#042e7d;font-size:9px;font-weight:600;text-transform:uppercase;padding-left:4px;padding-right:4px;line-height:12px;margin-left:8px}::ng-deep .vx-form-group .selected .chip-container span.value{color:#747576;font-size:13px;line-height:20px;font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:calc(100% - 52px);padding:0 4px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text{color:#747576;font-size:10px;font-weight:500;padding:0 8px;width:122px;line-height:14px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text.first{position:relative;min-width:162px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text.first:before{background:#f1f1f1;content:\"\";position:absolute;top:0;right:0;height:calc(100% + 12px);width:1px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text .no{color:#1e5dd3}::ng-deep .vx-form-group .selected .chip-container.plus span.chip{max-width:calc(50% - 35px)}::ng-deep .vx-form-group .selected .chip-container.more-one span.chip{max-width:50%}::ng-deep .vx-form-group .selected .chip-container .chip-inner{background:#fff;border-radius:2px;box-shadow:0 2px 4px #1e5dd31a;line-height:24px;padding:0 4px 0 8px;display:flex;align-items:center}::ng-deep .vx-form-group .selected .chip-container .chip-inner .chip{background:transparent;border-radius:0;box-shadow:none;height:auto;line-height:unset;padding:0;color:#747576;max-width:300px}::ng-deep .vx-form-group .selected .chip-container .chip-inner button.count{border-radius:20px;height:16px;padding:0 6px;border:none;font-size:9px;line-height:16px;margin-left:4px;min-width:20px}::ng-deep .vx-form-group .selected .chip-container .chip-inner button.count.user{background:#34aa44}::ng-deep .vx-form-group .selected .chip-container .chip-inner i.cross{cursor:pointer}::ng-deep .vx-form-group .selected button.count{background:#1e5dd3;border-radius:2px;height:24px;padding:0 8px;border:1px solid #1e5dd3;cursor:pointer;outline:none;color:#fff;font:13px;font-weight:500;line-height:20px;white-space:nowrap;margin-left:8px}::ng-deep .vx-form-group .selected button.edit{border:1px solid #f1f1f1;border-radius:2px;background:#fff;outline:none;cursor:pointer;display:block;height:24px;padding:0 5px 0 4px;font-size:11px;font-weight:500;color:#1e5dd3;text-transform:uppercase;white-space:nowrap;margin-left:8px}::ng-deep .vx-form-group .selected button.edit i{font-weight:400;font-size:8px;margin-right:4px}::ng-deep .vx-form-group .selected button.close-btn{background:transparent;border:none;padding:0;margin-left:8px;font-size:10px;color:#c7381b;display:flex;align-items:center}::ng-deep .vx-form-group .selected .workflow-label{min-width:92px;padding:4px;text-align:center;margin-left:-8px;margin-right:8px;border-right:1px solid #f1f1f1}::ng-deep .vx-form-group .selected .workflow-label p{margin:0;display:block;text-transform:uppercase}::ng-deep .vx-form-group .selected .workflow-label p.title{font-size:9px;line-height:12px;color:#161b2f;font-weight:500}::ng-deep .vx-form-group .selected .workflow-label p.description{font-size:11px;line-height:16px;color:#161b2f;font-weight:600}::ng-deep .vx-form-group .selected .workflow-label+.chip-container{width:calc(100% - 148px)}::ng-deep .vx-form-group .selected+.selected{margin-top:8px}::ng-deep .vx-form-group .selected+app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .selected+app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:5px;text-transform:uppercase}::ng-deep .vx-form-group .selected+app-cs-switch.who-toggle label.cs-switch span.value{color:#747576}::ng-deep .vx-form-group .selected+app-cs-radio{margin-top:8px!important}::ng-deep .vx-form-group .selected~app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;font-weight:500;color:#707070}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group .selected.readOnly{pointer-events:none}::ng-deep .vx-form-group .selected span.chip{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .vx-form-group .select-list{position:absolute;background:#fff;box-shadow:0 0 5px #1e5dd3;top:100%;right:0;left:0;z-index:2}::ng-deep .vx-form-group .select-list .vx-radio-group label.vx-radio-item{width:100%;padding:12px 16px}::ng-deep .vx-form-group .select-list .vx-radio-group label.vx-radio-item:hover{background:#f8f8f8}::ng-deep .vx-form-group marx-editor{margin-top:8px;display:block}::ng-deep .vx-form-group marx-editor .editor-container{border-radius:4px;border:1px solid #dbdbdb}::ng-deep .vx-form-group marx-editor .editor-container .editable-block{min-height:60px;padding:11px 15px;max-height:100px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%}::ng-deep .vx-form-group marx-editor .editor-container .editable-block ul{padding:0 0 0 10px;margin-top:0}::ng-deep .vx-form-group marx-editor .editor-container .editable-block ul li{list-style:disc}::ng-deep .vx-form-group marx-editor .editor-container .editable-block ol{padding:0 0 0 10px;margin-top:0}::ng-deep .vx-form-group marx-editor .editor-container .editable-block ol li{list-style:decimal}::ng-deep .vx-form-group marx-editor .editor-container .editor-tools{z-index:1;border-top:1px solid #dbdbdb;transition:none;border-radius:0 0 3px 3px;position:static}::ng-deep .vx-form-group marx-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button{height:22px!important;width:22px!important;padding:0 5px}::ng-deep .vx-form-group marx-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button svg{height:22px;width:12px}::ng-deep .vx-form-group marx-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button.submit{width:80px!important;line-height:22px;justify-content:center}::ng-deep .vx-form-group marx-editor .editor-container .editor-tools app-editor-menu .editor-menu .col .popover.small ul.option-list li button{width:100%!important;height:auto!important}::ng-deep .vx-form-group marx-editor .editor-container:focus-within{border-color:#1e5dd3!important}::ng-deep .vx-form-group marx-editor .editor-container:focus-within .editor-tools{border-color:#1e5dd3!important}::ng-deep .vx-form-group marx-editor .editor-container:hover{border-color:#1e5dd3!important}::ng-deep .vx-form-group marx-editor .editor-container:hover .editor-tools{border-color:#1e5dd3!important}::ng-deep .vx-form-group marx-editor+app-cs-switch{margin-top:8px}::ng-deep .vx-form-group app-cs-switch label.cs-switch span.value{font-size:11px;color:#747576;text-transform:uppercase}::ng-deep .vx-form-group app-cs-switch+app-cs-switch{margin-top:8px}::ng-deep .vx-form-group .date-time-picker{display:flex;justify-content:space-between;height:40px;border-radius:4px;border:1px solid #dbdbdb;padding:11px 0}::ng-deep .vx-form-group .date-time-picker:focus-within{border-color:#1e5dd3;box-shadow:0 0 5px rgba(30,93,211,.27)}::ng-deep .vx-form-group .date-time-picker .picker-group{width:50%;position:relative;display:flex;align-items:center}::ng-deep .vx-form-group .date-time-picker .picker-group:first-of-type{border-right:1px solid #dbdbdb}::ng-deep .vx-form-group .date-time-picker .picker-group:only-of-type{border:none;width:100%}::ng-deep .vx-form-group .date-time-picker .picker-group input{height:38px;background:#fff;line-height:38px;font-size:13px;color:#747576;transition:all .2s ease-in-out;width:100%;font-weight:400;border:none;padding:0 12px 0 34px;outline:none}::ng-deep .vx-form-group .date-time-picker .picker-group input:focus,::ng-deep .vx-form-group .date-time-picker .picker-group input:hover{box-shadow:none;border:none}::ng-deep .vx-form-group .date-time-picker .picker-group input::-moz-placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group input::placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group input:-ms-input-placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group input::-ms-input-placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group i{display:flex;justify-content:center;align-items:center;height:16px;width:16px;position:absolute;left:12px;top:0;color:#bcbcbc;font-size:16px;pointer-events:none}::ng-deep .vx-form-group app-cs-radio.main-filed{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;color:#707070}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group app-cs-radio.disabled{pointer-events:none;opacity:.5;filter:grayscale(1);background:#f1f1f1}::ng-deep .vx-form-group .switch-row{display:flex}::ng-deep .vx-form-group .switch-row app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .switch-row app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:0;text-transform:uppercase;color:#747576!important}::ng-deep .vx-form-group .switch-row app-cs-switch label.cs-switch span.value i{display:inline-flex;font-size:11px;cursor:pointer;color:#1e5dd3;align-items:center;line-height:16px;margin:0 4px}::ng-deep .vx-form-group .switch-row app-cs-switch+app-cs-switch{margin-left:8px}::ng-deep .vx-form-group .switch-row.align-right{justify-content:flex-end}::ng-deep .vx-form-group .switch-row.align-right label.cs-switch span.value{margin-right:8px}::ng-deep .vx-form-group .risk-type-field{background:#f8f8f8;border:1px solid #dbdbdb;border-radius:4px;height:40px;display:flex;align-items:center;padding:4px;position:relative;z-index:1}::ng-deep .vx-form-group .risk-type-field .type-item{width:50%;position:relative}::ng-deep .vx-form-group .risk-type-field .type-item button{background:transparent;border:none;border-radius:0;color:#747576;font-size:11px;font-weight:600;text-transform:uppercase;width:100%;height:32px;padding:0 12px;text-align:left}::ng-deep .vx-form-group .risk-type-field .type-item button.disabled{background:transparent!important;color:#dbdbdb!important;filter:unset!important;opacity:unset!important;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}::ng-deep .vx-form-group .risk-type-field .type-item .info{color:#1e5dd3;font-size:12px;position:absolute;top:10px;right:12px;cursor:pointer}::ng-deep .vx-form-group .risk-type-field .type-item.active button{color:#1e5dd3!important}::ng-deep .vx-form-group .risk-type-field .type-item:nth-child(2).active~.background-glider{transform:translate(100%)}::ng-deep .vx-form-group .risk-type-field .background-glider{background:#fff;border-radius:4px;box-shadow:0 1px 3px #161b2f26;position:absolute;display:flex;width:208px;height:32px;z-index:-1;transition:.25s ease-out}.left{width:36px;height:36px;margin-top:30px;margin-left:-58px;margin-right:20px;display:flex;justify-content:center;align-items:center;position:relative;z-index:10;border-radius:50%}.left.deadline-completed{margin-top:18px}.left.checked{background:transparent}.left img{width:36px}.left .checkIcon{width:32px;height:32px;background:#fff;border-radius:50%;stroke-width:4;stroke:#34aa44;stroke-miterlimit:10;box-shadow:inset 0 0 0 #34aa44;-webkit-animation:fillCheck .4s ease-in-out .4s forwards,scale .3s ease-in-out .9s both;animation:fillCheck .4s ease-in-out .4s forwards,scale .3s ease-in-out .9s both;margin-top:0}.left .checkIcon__circle{stroke-dasharray:166;stroke-dashoffset:166;stroke-width:2;stroke-miterlimit:10;stroke:#34aa44;fill:none;-webkit-animation:strokeCheck .6s cubic-bezier(.65,0,.45,1) forwards;animation:strokeCheck .6s cubic-bezier(.65,0,.45,1) forwards}.left .checkIcon__check{transform-origin:50% 50%;stroke-dasharray:48;stroke-dashoffset:48;-webkit-animation:strokeCheck .3s cubic-bezier(.65,0,.45,1) .8s forwards;animation:strokeCheck .3s cubic-bezier(.65,0,.45,1) .8s forwards}.right{width:100%}.right span.indicator{position:absolute;top:36px;left:-16px;font-size:12px;color:#f0b819;cursor:pointer}.form-group-row{display:flex;position:relative;transition:all .2s ease-in-out}.form-group-row.disabled{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none;filter:grayscale(1);z-index:2}.form-group-row.disabled .left{position:relative}.form-group-row.disabled .left:before{content:\"\";position:absolute;top:2px;right:0;bottom:0;left:2px;background:#fff;opacity:.7;border-radius:50%;width:32px;height:32px}.form-group-row.disabled .right{opacity:.3}.form-group-row.active{pointer-events:none;filter:grayscale(0);z-index:2;opacity:1}.form-group-row.active .right .vx-form-group .custom-input,.form-group-row.active .right .vx-form-group input{border-color:#1e5dd3;box-shadow:0 0 5px rgba(30,93,211,.27)}::ng-deep .radio-group-selector app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .radio-group-selector app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .radio-group-selector app-cs-radio label.radio-item .radio,::ng-deep .radio-group-selector app-cs-radio label.radio-item .radiomark{position:absolute!important;top:9px;left:12px}::ng-deep .radio-group-selector app-cs-radio label.radio-item .value{font-size:11px!important;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0!important;max-width:100%!important;font-weight:500!important;color:#707070!important}::ng-deep .radio-group-selector app-cs-radio label.radio-item .value i{font-size:12px;color:#1e5dd3}::ng-deep .radio-group-selector app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}@-webkit-keyframes strokeCheck{to{stroke-dashoffset:0}}@keyframes strokeCheck{to{stroke-dashoffset:0}}@-webkit-keyframes fillCheck{to{box-shadow:inset 0 0 0 2px #34aa44}}@keyframes fillCheck{to{box-shadow:inset 0 0 0 2px #34aa44}}.action-list{width:220px}.action-list ul{padding:0;margin:0;-webkit-animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;background:#fff;box-shadow:0 3px 6px #1c5bd140;border-radius:4px;max-height:220px;overflow:auto}.action-list ul.action-item{display:block}.action-list ul.action-item li{list-style:none;border:none;border-bottom:1px solid #f1f1f1;display:block;width:100%;padding:0;background:transparent;border-radius:0;margin:0;height:auto;justify-content:flex-start;box-shadow:none}.action-list ul.action-item li button{color:#6e717e;text-align:left;text-decoration:none;cursor:pointer;background:transparent;font-size:12px;text-transform:capitalize;display:flex;width:100%;padding:7.5px 11px;border:none}.action-list ul.action-item li button i{font-size:17px;margin-right:10px;color:#1c5bd1}.action-list ul.action-item li button:hover{background:#f3f3f3}.action-list ul.action-item li .avatar-card{display:flex;align-items:center;width:100%;padding:7.5px}.action-list ul.action-item li .avatar-card.within-con{display:block}.action-list ul.action-item li .avatar-card .avatar{height:24px;width:24px!important;overflow:hidden;background:#4681ef;color:#fff;font-size:10px;display:inline-flex;margin-right:5px;border-radius:50%;align-items:center;justify-content:center;text-transform:uppercase}.action-list ul.action-item li .avatar-card .avatar img{width:100%}.action-list ul.action-item li .avatar-card .avatar+span.value{width:calc(100% - 29px)}.action-list ul.action-item li .avatar-card span.value{width:100%;color:#6e717e;text-decoration:none;background:transparent;font-size:12px;text-transform:capitalize;display:block;font-weight:400;-moz-text-align-last:left;text-align-last:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:20px}.action-list ul.action-item li .avatar-card span.value i{font-size:8px;color:#1c5bd1;cursor:pointer;margin-right:5px}.action-list ul.action-item li .avatar-card.no-image{display:block}.action-list ul.action-item li .avatar-card.no-image span.value{width:100%;display:block}.action-list ul.action-item li .chip-item{color:#1e5dd3;padding:10px;display:flex;align-items:center}.action-list ul.action-item li .chip-item i{margin-right:7px;font-size:10px;cursor:pointer;display:inline-flex}.action-list ul.action-item li .chip-item span{display:block;width:auto;max-width:calc(100% - 17px);font-size:12px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.action-list ul.action-item li .chip-item span.chip-block{display:block;width:100%}.action-list ul.action-item li .chip-item span.id{font-size:9px}.action-list ul.action-item li .within{display:flex;align-items:center;justify-content:flex-start}.action-list ul.action-item li .within .block{background:#f1f1f1;border-radius:2px;padding:0 2px;line-height:14px;font-size:9px;font-weight:500;color:#042e7d;margin-right:6px;display:block;text-transform:uppercase}.action-list ul.action-item li .within .data{width:100%;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#747576;font-size:11px;font-weight:400;line-height:17px}.action-list ul.action-item li:first-child{-webkit-animation:action-list-open .25s cubic-bezier(.25,.46,.45,.94) both;animation:action-list-open .25s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(2){-webkit-animation:action-list-open .35s cubic-bezier(.25,.46,.45,.94) both;animation:action-list-open .35s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(3){-webkit-animation:action-list-open .45s cubic-bezier(.25,.46,.45,.94) both;animation:action-list-open .45s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(4){-webkit-animation:action-list-open .55s cubic-bezier(.25,.46,.45,.94) both;animation:action-list-open .55s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(5){-webkit-animation:action-list-open .65s cubic-bezier(.25,.46,.45,.94) both;animation:action-list-open .65s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(6){-webkit-animation:action-list-open .75s cubic-bezier(.25,.46,.45,.94) both;animation:action-list-open .75s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(7){-webkit-animation:action-list-open .85s cubic-bezier(.25,.46,.45,.94) both;animation:action-list-open .85s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(8){-webkit-animation:action-list-open .95s cubic-bezier(.25,.46,.45,.94) both;animation:action-list-open .95s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(9){-webkit-animation:action-list-open 1.05s cubic-bezier(.25,.46,.45,.94) both;animation:action-list-open 1.05s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(10){-webkit-animation:action-list-open 1.15s cubic-bezier(.25,.46,.45,.94) both;animation:action-list-open 1.15s cubic-bezier(.25,.46,.45,.94) both}@-webkit-keyframes action-list-open{0%{transform:translateY(50px)}to{transform:translateY(0)}}@keyframes action-list-open{0%{transform:translateY(50px)}to{transform:translateY(0)}}@-webkit-keyframes scale-up-center{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}@keyframes scale-up-center{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}p.error-message{font-size:11px;font-weight:400;color:#eb2424;line-height:16px;margin-top:8px;margin-bottom:0}.edit-loader{position:absolute;top:-3px;left:-3px;width:46px;height:46px;transform:rotate(180deg)}.circular-loader{-webkit-animation:rotate 2s linear infinite;animation:rotate 2s linear infinite;height:100%;transform-origin:center center;width:100%;position:absolute;top:0;left:0;margin:auto}.loader-path{stroke-dasharray:150,200;stroke-dashoffset:-10;-webkit-animation:dash 1.5s ease-in-out infinite;animation:dash 1.5s ease-in-out infinite;stroke-linecap:round}@-webkit-keyframes rotate{to{transform:rotate(1turn)}}@keyframes rotate{to{transform:rotate(1turn)}}@-webkit-keyframes dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35}to{stroke-dasharray:89,200;stroke-dashoffset:-124}}@keyframes dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35}to{stroke-dasharray:89,200;stroke-dashoffset:-124}}::ng-deep .dropdown{position:fixed;background:#fff;box-shadow:0 3px 6px #00000029;padding:24px 0;z-index:9;max-height:calc(100vh - 200px);overflow:auto}::ng-deep .dropdown ul.dropdown-list{padding:0 20px;margin:0;display:block}::ng-deep .dropdown ul.dropdown-list li{list-style:none}::ng-deep .dropdown ul.dropdown-list li app-cs-radio{display:flex}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item span.radio{position:absolute;top:12px;left:12px}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item span.value{padding:11px 12px 11px 32px;width:100%;border:1px solid #bcbcbc;border-radius:4px;margin-left:0;max-width:100%}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item svg{position:absolute;top:12px;left:12px}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item input[type=radio]:checked~span.value{background:#e8feeb;border-color:#34aa44}::ng-deep .dropdown ul.dropdown-list li+li{margin-top:8px}app-smiley-dialog{position:relative;z-index:10}app-smiley-dialog-inline{position:absolute;top:-3px;right:0;bottom:0;z-index:999;width:520px;height:calc(100vh + 3px)}::ng-deep .vx-overlay{position:fixed;z-index:3;top:0;right:0;bottom:0;left:0}dp-date-picker{width:100%;position:fixed!important;z-index:14;top:-40px;left:0}dp-date-picker input{width:100%;border:none;opacity:0;pointer-events:none}dp-date-picker input:focus{outline:none}dp-date-picker .dp-popup{width:412px;box-shadow:0 0 20px #161b2f26;background-color:#fff;border-radius:4px;-webkit-animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both}dp-date-picker .dp-popup dp-day-calendar,dp-date-picker .dp-popup dp-month-calendar{width:100%;pointer-events:auto}dp-date-picker .dp-popup dp-day-calendar button,dp-date-picker .dp-popup dp-month-calendar button{background:transparent;border:none;outline:none}dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-left,dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-right,dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-left,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-right,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn{width:40px;height:40px;display:flex;justify-content:center;align-items:center;border-radius:50%;font-size:14px}dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-left:hover,dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-right:hover,dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn:hover,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-left:hover,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-right:hover,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn:hover{background-color:#f3f3f3}dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn{display:none}dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn:before,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn:before{content:\"\";height:10px;width:10px;border-radius:50%;background:#000;display:inline-flex}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week,dp-date-picker .dp-popup dp-day-calendar .dp-weekdays,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays{display:flex;justify-content:space-around}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week .dp-calendar-weekday,dp-date-picker .dp-popup dp-day-calendar .dp-weekdays .dp-calendar-weekday,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week .dp-calendar-weekday,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays .dp-calendar-weekday{width:52px;border-left:none;border-bottom-color:#fff;color:#747576;font-size:11px;font-weight:600;text-transform:uppercase}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button,dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button{width:40px;height:40px;border-radius:50%;display:inline-flex;justify-content:center;align-items:center}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button:hover,dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button:hover,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button:hover,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button:hover{background-color:#f3f3f3}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button.dp-selected,dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button.dp-selected,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button.dp-selected,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button.dp-selected{background:#1e5dd3}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button.dp-current-day,dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button.dp-current-day,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button.dp-current-day,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button.dp-current-day{border:1px solid rgba(0,0,0,.38);color:#1e5dd3;background-color:#fff}dp-date-picker .dp-popup dp-day-calendar .dp-day-calendar-container,dp-date-picker .dp-popup dp-month-calendar .dp-day-calendar-container{padding:20px;border-radius:2px}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-nav-container,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-nav-container{display:flex;margin:0 0 20px;border:none}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-nav-container .dp-nav-header button,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-nav-container .dp-nav-header button{color:#000;font-size:17px;font-weight:500;margin:0 0 0 12px;padding:0}dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container,dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container{width:80px;display:flex}dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button,dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button{margin:0!important}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-wrapper,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-wrapper{border:none}dp-date-picker .dp-open+div{position:fixed!important;top:0!important;right:0!important;bottom:0!important;left:0!important;display:flex;justify-content:center;align-items:center;z-index:99;pointer-events:none;background:rgba(0,0,0,.3)}@-webkit-keyframes slide-bottom{0%{transform:translateY(-100px)}to{transform:translateY(0)}}@keyframes slide-bottom{0%{transform:translateY(-100px)}to{transform:translateY(0)}}::ng-deep span.file{display:block;width:20px;min-width:20px;border-radius:0 0 2px 2px;position:relative;margin-right:5px;border:1px solid #747576;border-top:none;margin-top:5px;background:#fff}::ng-deep span.file.table{margin-right:8px;width:18px;min-width:18px}::ng-deep span.file.table i{font-size:8px}::ng-deep span.file.table .format{height:8px;font-size:7px;line-height:8px;font-weight:400}::ng-deep span.file:before{position:absolute;border-radius:0;top:-4px;right:-1px;content:\"\";height:4px;width:4px;display:block;background:linear-gradient(45deg,#747576,#747576 1%,#747576 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0));filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file:after{height:4px;left:-1px;right:3px;border-top:1px solid;border-right:none;border-left:1px solid;content:\"\";top:-4px;position:absolute;border-radius:2px 0 0 0;background:#fff}::ng-deep span.file .format{height:10px;font-size:6px;text-transform:uppercase;background:transparent;font-weight:600;text-align:center;display:block;line-height:10px}::ng-deep span.file i{font-size:10px;height:10px;display:flex;align-items:center;justify-content:center;color:#dbdbdb}::ng-deep span.file.docx{width:22px!important}::ng-deep span.file.pdf,::ng-deep span.file.template{border-color:#f31c39}::ng-deep span.file.pdf:before,::ng-deep span.file.template:before{background:linear-gradient(45deg,#f31c39,#f31c39 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0));filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#f31c39\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.pdf:after,::ng-deep span.file.template:after{border-color:#f31c39}::ng-deep span.file.pdf .format,::ng-deep span.file.template .format{color:#f31c39}::ng-deep span.file.css,::ng-deep span.file.less,::ng-deep span.file.scss,::ng-deep span.file.xls,::ng-deep span.file.xlsx{border-color:#34aa44}::ng-deep span.file.css:before,::ng-deep span.file.less:before,::ng-deep span.file.scss:before,::ng-deep span.file.xls:before,::ng-deep span.file.xlsx:before{background:linear-gradient(45deg,#34aa44,#34aa44 1%,#34aa44 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0));filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.css:after,::ng-deep span.file.less:after,::ng-deep span.file.scss:after,::ng-deep span.file.xls:after,::ng-deep span.file.xlsx:after{border-color:#34aa44;color:#34aa44}::ng-deep span.file.css .format,::ng-deep span.file.less .format,::ng-deep span.file.scss .format,::ng-deep span.file.xls .format,::ng-deep span.file.xlsx .format{color:#34aa44}::ng-deep span.file.doc,::ng-deep span.file.docx,::ng-deep span.file.psd{border-color:#1e5dd3}::ng-deep span.file.doc:before,::ng-deep span.file.docx:before,::ng-deep span.file.psd:before{background:linear-gradient(45deg,#1e5dd3,#1e5dd3 1%,#1e5dd3 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0));filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.doc:after,::ng-deep span.file.docx:after,::ng-deep span.file.psd:after{border-color:#1e5dd3}::ng-deep span.file.doc .format,::ng-deep span.file.docx .format,::ng-deep span.file.psd .format{color:#1e5dd3}::ng-deep span.file.ai,::ng-deep span.file.html,::ng-deep span.file.jpeg,::ng-deep span.file.jpg,::ng-deep span.file.png,::ng-deep span.file.ppt{border-color:#f6882f}::ng-deep span.file.ai:before,::ng-deep span.file.html:before,::ng-deep span.file.jpeg:before,::ng-deep span.file.jpg:before,::ng-deep span.file.png:before,::ng-deep span.file.ppt:before{background:linear-gradient(45deg,#f6882f,#f6882f 1%,#f6882f 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0));filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.ai:after,::ng-deep span.file.html:after,::ng-deep span.file.jpeg:after,::ng-deep span.file.jpg:after,::ng-deep span.file.png:after,::ng-deep span.file.ppt:after{border-color:#f6882f}::ng-deep span.file.ai .format,::ng-deep span.file.html .format,::ng-deep span.file.jpeg .format,::ng-deep span.file.jpg .format,::ng-deep span.file.png .format,::ng-deep span.file.ppt .format{color:#f6882f}::ng-deep span.file.php{border-color:#7aa6f7}::ng-deep span.file.php:before{background:linear-gradient(45deg,#7aa6f7,#7aa6f7 1%,#7aa6f7 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0));filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.php:after{border-color:#7aa6f7}::ng-deep span.file.php .format{color:#7aa6f7}::ng-deep ngx-material-timepicker-container .timepicker-backdrop-overlay{background-color:rgba(0,0,0,.05)!important;z-index:9999999999!important}::ng-deep ngx-material-timepicker-container .timepicker-overlay{z-index:9999999999!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker{width:232px!important;border-radius:2px!important;box-shadow:0 4px 30px #161b2f26!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header{background-color:#fff!important;padding:0!important;border-radius:2px 2px 0 0}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container{display:block!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time{color:#000!important;width:150px!important;margin:0 auto;line-height:60px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control{font-size:40px;background-color:transparent!important;color:#000!important;font-weight:600;text-align:right;caret-color:transparent;outline:none;font-family:Poppins;line-height:56px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control:focus,::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control:hover{background-color:transparent!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control:last-of-type .timepicker-dial__control{text-align:left}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time span{padding:0 8px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period{display:flex!important;width:182px;margin:0 auto!important;background:#f1f1f1;padding:4px 10px;border-radius:20px;position:relative}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period:before{background:#f1f1f1;content:\"\";position:absolute;top:15px;left:-25px;width:calc(100% + 50px);height:2px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period{flex-direction:unset!important;position:relative;z-index:1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period:after{content:\"\";position:absolute;right:-12px;top:0;border-left:14px solid #f1f1f1;border-bottom:12px solid transparent;border-top:12px solid transparent;z-index:-1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period:before{content:\"\";position:absolute;left:-18px;top:0;border-right:14px solid #f1f1f1;border-bottom:12px solid transparent;border-top:12px solid transparent;z-index:-1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button{font-size:11px;background-color:transparent;padding:0;border-radius:20px;color:#747576;font-weight:600;font-family:Poppins;width:84px;height:24px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button.timepicker-dial__item_active{background:#fff!important;color:#1e5dd3!important;box-shadow:0 1px 2px #dbdbdb}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button+button{margin-left:0!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face{width:200px!important;height:200px!important;padding:10px!important;background:transparent!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer{height:calc(224px / 2 - 20px)!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer span{color:#000}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer span.active{color:#fff}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__clock-hand{height:80px!important;top:calc(50% - 80px)!important;background-color:#1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number>span.active{background-color:#1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__clock-hand_minute:before{border:4px solid #1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions{display:flex!important;padding:10px 0 0!important;background:#fff!important;justify-content:space-around!important;border-radius:0 0 2px 2px!important;overflow:hidden}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div:first-child ngx-material-timepicker-button button.timepicker-button{background:#f8f8f8;color:#1e5dd3}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div ngx-material-timepicker-button button.timepicker-button{line-height:28px!important;width:100%;background:#1e5dd3;color:#fff;border-radius:0!important;height:32px!important;width:116px!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div ngx-material-timepicker-button button.timepicker-button span{font-weight:500!important;font-size:11px;font-family:Poppins}::ng-deep marx-modal .popup-modal-background{background-color:#161b2fcc!important}::ng-deep .within-box{background:#f1f1f1;border-radius:.125rem;color:#042e7d}::ng-deep .within-value{overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;word-break:break-word}"]
|
|
1233
1233
|
},] }
|
|
1234
1234
|
];
|
|
1235
1235
|
WorkflowPolicyComponent.ctorParameters = () => [
|
|
@@ -1258,4 +1258,4 @@ WorkflowPolicyComponent.propDecorators = {
|
|
|
1258
1258
|
selectedCategory: [{ type: Input }],
|
|
1259
1259
|
formatEvidence: [{ type: ViewChild, args: ['formatEvidence',] }]
|
|
1260
1260
|
};
|
|
1261
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctcG9saWN5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3dvcmtmbG93LXBvbGljeS93b3JrZmxvdy1wb2xpY3kuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdHLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBSTNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUV4RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDaEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEtBQUssTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUNqQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBUW5GLE1BQU0sT0FBTyx1QkFBdUI7SUFxSWxDLFlBQW9CLGFBQTRCLEVBQ3RDLFFBQXlCLEVBQ3pCLFlBQTBCLEVBQzFCLFdBQXdCLEVBQ3hCLHFCQUE0QyxFQUM1QyxNQUFjLEVBQ2QsS0FBcUIsRUFDckIsZ0JBQWtDLEVBQzFDLGdCQUFrQyxFQUMxQixTQUE0QjtRQVRsQixrQkFB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S0FBSzt1QkFDTCxLQUFLO3NCQUNMLEtBQUs7b0NBQ0wsTUFBTTt5QkFDTixTQUFTLFNBQUMsWUFBWTs2QkFDdEIsTUFBTTtnQ0FDTixNQUFNOzhCQUNOLE1BQU07OEJBQ04sS0FBSzsrQkFDTCxLQUFLOzZCQUdMLFNBQVMsU0FBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGNsb25lRGVlcCwgdW5pcUJ5IH0gZnJvbSAnbG9kYXNoJztcclxuaW1wb3J0IHsgRGF0ZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJ25nMi1kYXRlLXBpY2tlcic7XHJcbmltcG9ydCB7IEVkaXRvckNvbmZpZyB9IGZyb20gJ3Zjb21wbHktZWRpdG9yJztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uQWxlcnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2NvbmZpcm1hdGlvbi1hbGVydCc7XHJcbmltcG9ydCB7IFNuYWNrQmFyU2VydmljZSB9IGZyb20gJy4uL3VpLWtpdC9zbmFjay1iYXIvc25hY2stYmFyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQb2xpY3lGb3JtIH0gZnJvbSAnLi4vd29ya2Zsb3ctaW50ZXJmYWNlcy9jcmVhdGUtcG9saWN5LWZvcm0nO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IFBvbGljeVNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9wb2xpY3kuc2VydmljZSc7XHJcbmltcG9ydCB7IFJlc3BvbnNpYmlsaXR5U2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL3Jlc3BvbnNpYmlsaXR5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVaUtpdFNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy91aS1raXQuc2VydmljZSc7XHJcbmltcG9ydCB7IFBsYXRmb3JtTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgKiBhcyBtb21lbnQgZnJvbSAnbW9tZW50JztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEZyZXF1ZW5jeVNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWRDb21wb25lbnRzL2ZyZXF1ZW5jeS9mcmVxdWVuY3kuc2VydmljZSc7XHJcbmltcG9ydCB7IEZvcm1hdEFuZEV2aWRlbmNlQ29tcG9uZW50IH0gZnJvbSAnLi4vc2hhcmVkQ29tcG9uZW50cy9mb3JtYXQtYW5kLWV2aWRlbmNlL2Zvcm1hdC1hbmQtZXZpZGVuY2UuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXdvcmtmbG93LXBvbGljeScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3dvcmtmbG93LXBvbGljeS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vd29ya2Zsb3ctcG9saWN5LmNvbXBvbmVudC5sZXNzJywgJy4uL2Zvcm1zLmxlc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgV29ya2Zsb3dQb2xpY3lDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBPdXRwdXQoKSBwaWNrZXJDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBJbnB1dCgpIG1vZGUgPSAnQ1JFQVRFJztcclxuICBASW5wdXQoKSBwb2xpY3lJZCA9ICcnO1xyXG4gIEBJbnB1dCgpIGZlYXR1cmU6YW55O1xyXG4gIEBPdXRwdXQoKSBzaG93Q29uZmlybWF0aW9uQWxlcnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQFZpZXdDaGlsZCgnZGF0ZVBpY2tlcicpIGRhdGVQaWNrZXIhOiBEYXRlUGlja2VyQ29tcG9uZW50O1xyXG4gIEBPdXRwdXQoKSBwb3B1bGF0ZU9wdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZGlzY29ubmVjdFJlZnJlc2ggPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHNoaWZ0VG9FZGl0TW9kZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBASW5wdXQoKSBjb252ZXJ0RmlsZURhdGE6IGFueSA9IHt9XHJcbiAgQElucHV0KCkgc2VsZWN0ZWRDYXRlZ29yeSA9ICcnXHJcblxyXG5cclxuICBAVmlld0NoaWxkKCdmb3JtYXRFdmlkZW5jZScpIGZvcm1hdEV2aWRlbmNlITogRm9ybWF0QW5kRXZpZGVuY2VDb21wb25lbnQ7XHJcblxyXG5cclxuICBkZXNjcmlwdGlvbjogRWRpdG9yQ29uZmlnID0ge1xyXG4gICAgbW9kZTogJ3ByaW1lJyxcclxuICAgIGNvbG9yUGFsZXR0ZTogdHJ1ZSxcclxuICAgIGxpbms6IHRydWUsXHJcbiAgICBwbGFjZWhvbGRlcjogJ0FkZCBhIGRlc2NyaXB0aW9uIGZvciB0aGlzIHBvbGljeS4nLFxyXG4gIH07XHJcbiAgd29ya2Zsb3dUeXBlID0gJ1NFUVVFTlRJQUwnXHJcbiAgc2Nyb2xsVG9Cb3R0b20gPSBmYWxzZTtcclxuICBuYXZpZ2F0ZVRvRG9jdW1lbnRzU2VjdGlvbiA9IGZhbHNlO1xyXG5cclxuICBhY3RpdmVTZWxlY3RvciA9ICcnO1xyXG4gIHJjTGlzdDogYW55ID0gW107XHJcbiAgdXNlcnNMaXN0OiBhbnkgPSBbXTtcclxuICBhbGxBcHByb3ZlcnM6IGFueSA9IFtdO1xyXG4gIGFsbFJldmlld2VyczogYW55ID0gW107XHJcbiAgYXNzaWduZWVzTGlzdDogYW55ID0gW107XHJcbiAgb3duZXJsaXN0OmFueSA9W107XHJcbiAgcmV2aWV3ZXJzTGlzdDogYW55ID0gW107XHJcbiAgb3ZlcnNlZXJzTGlzdDogYW55ID0gW107XHJcbiAgcmNMaXN0TG9hZGVkID0gZmFsc2U7XHJcbiAgdXNlcnNMaXN0TG9hZGVkID0gZmFsc2U7XHJcbiAgY2F0ZWdvcnlMaXN0OiBhbnkgPSBbXTtcclxuICBncm91cHNMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIHdvcmtGbG93TGlzdDogYW55W10gPSBbXTtcclxuICBhcHByb3ZlcldvcmtGbG93TGlzdDogYW55W10gPSBbXTtcclxuICBzdWJtaXR0ZWQgPSBmYWxzZTtcclxuICBjY0VtYWlsT2JqSWRzOiBhbnlbXSA9IFtdO1xyXG4gIGNjRmFpbEdyb3VwT2JqSWRzOiBhbnlbXSA9IFtdO1xyXG5cclxuICBsb2FkZXIgPSBmYWxzZTtcclxuICBjYXRlZ29yaWVzTGlzdExvYWRlZCA9IGZhbHNlO1xyXG4gIGdyb3Vwc0xpc3RMb2FkZWQgPSBmYWxzZTtcclxuICBjYXRlZ29yeUNvbmZpZyA9IHtcclxuICAgIHBhbmVsVGl0bGU6ICdTZWxlY3QgQ2F0ZWdvcnknLFxyXG4gICAgZmxvYXRpbmdUZXh0U2luZ3VsYXI6ICdDYXRlZ29yeSBzZWxlY3RlZCcsXHJcbiAgICBmbG9hdGluZ1RleHRQbHVyYWw6ICdDYXRlZ29yaWVzIHNlbGVjdGVkJyxcclxuICAgIHNlYXJjaFBsYWNlaG9sZGVyOiAnU2VhcmNoIENhdGVnb3J5JyxcclxuICAgIHNlYXJjaEVuYWJsZWQ6IHRydWUsXHJcbiAgICBzZWxlY3RBbGxFbmFibGVkOiB0cnVlLFxyXG4gICAgd29ya2Zsb3c6ICdwb2xpY3knXHJcbiAgfVxyXG4gIGFwcHJvdmFsV29ya2Zsb3dDb25maWcgPSB7XHJcbiAgICBwYW5lbFRpdGxlOiAnU2VsZWN0IHVzZXIocyknLFxyXG4gICAgZmxvYXRpbmdUZXh0U2luZ3VsYXI6ICdVc2VyIHNlbGVjdGVkJyxcclxuICAgIGZsb2F0aW5nVGV4dFBsdXJhbDogJ1VzZXJzIHNlbGVjdGVkJyxcclxuICAgIHNlYXJjaFBsYWNlaG9sZGVyOiAnU2VhcmNoIFVzZXInLFxyXG4gICAgc2VhcmNoRW5hYmxlZDogdHJ1ZSxcclxuICAgIHNlbGVjdEFsbEVuYWJsZWQ6IHRydWVcclxuICB9XHJcblxyXG5cclxuICBhZGRNb3JlTGV2ZWxzID0gZmFsc2U7XHJcbiAgYXBwcm92ZXJzTGlzdEluZGV4ID0gMDtcclxuICB3b3JrZmxvd0xpc3QgPSBbJ1NFUVVFTlRJQUwnLCAnUk9VTkQtUk9CSU4nLCAnQU5ZIE9ORSddO1xyXG4gIGRhdGVQaWNrZXJPdmVybGF5ID0gZmFsc2U7XHJcbiAgZGF0ZUNvbmZpZyA9IHtcclxuICAgIGRpc2FibGVLZXlwcmVzczogdHJ1ZSxcclxuICAgIGZvcm1hdDogJ0REIE1NTSBZWVlZJyxcclxuICAgIHVuU2VsZWN0T25DbGljazogdHJ1ZSxcclxuICAgIG9wZW5PbkNsaWNrOmZhbHNlLFxyXG4gICAgb3Blbk9uRm9jdXM6ZmFsc2UsXHJcbiAgfTtcclxuICBmcmVxdWVuY3lEZXRhaWxzID0ge1xyXG4gICAgcGF0dGVybjogJycsXHJcbiAgICBub3RpZmljYXRpb25QZW5kaW5nOiAwLFxyXG4gICAgZGF0ZU9mTW9kaWZpZWQ6IDAsXHJcbiAgICBkZWFjdGl2YXRpb25WYWx1ZTogMCxcclxuICAgIHNlbGVjdGVkUmVwb3J0OiAwLFxyXG4gICAgbGlmZWN5Y2xlOiAnMDAwMC0wMC0wMH5+MCcsXHJcbiAgICBzdGFydERhdGU6IE1hdGguZmxvb3IobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKSxcclxuICAgIHN0YXJ0T25UaGVEYXk6IE1hdGguZmxvb3IobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKSxcclxuICAgIHdpbmRvdzogMCxcclxuICAgIGZhaWxlZDogMCxcclxuICAgIHRpbWU6ICcxMTo1OSBwbScsXHJcbiAgICBmYWlsZWRUaW1lOiAnJyxcclxuICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXM6IDBcclxuICB9O1xyXG4gIHJldmlld2VyRnJlcXVlbmN5RGV0YWlscyA9IHtcclxuICAgIHBhdHRlcm46ICcnLFxyXG4gICAgbm90aWZpY2F0aW9uUGVuZGluZzogMCxcclxuICAgIGRhdGVPZk1vZGlmaWVkOiAwLFxyXG4gICAgZGVhY3RpdmF0aW9uVmFsdWU6IDAsXHJcbiAgICBzZWxlY3RlZFJlcG9ydDogMCxcclxuICAgIGxpZmVjeWNsZTogJzAwMDAtMDAtMDB+fjAnLFxyXG4gICAgc3RhcnREYXRlOiBNYXRoLmZsb29yKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCksXHJcbiAgICBzdGFydE9uVGhlRGF5OiBNYXRoLmZsb29yKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCksXHJcbiAgICB3aW5kb3c6IDAsXHJcbiAgICBmYWlsZWQ6IDAsXHJcbiAgICB0aW1lOiAnMTE6NTkgcG0nLFxyXG4gICAgZmFpbGVkVGltZTogJycsXHJcbiAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzOiAzXHJcbiAgfTtcclxuICBmcmVxdWVuY3lQbGFjZWhvbGRlciA9ICdXaGF0IGlzIHRoZSBhdHRlc3RhdGlvbiBzY2hlZHVsZSBmb3IgdGhpcyBwb2xpY3kgPyc7XHJcbiAgcmV2aWV3ZXJGcmVxdWVuY3lQbGFjZWhvbGRlciA9ICdXaGVuIGRvZXMgdGhpcyBwb2xpY3kgbmVlZCB0byBiZSByZXZpZXdlZCA/JztcclxuXHJcbiAgc2lkZVNlbGVjdG9yRWxlbWVudHMgPSBbJ2FwcHJvdmFsV29ya2Zsb3cnLCAnYXNzaWduZWVzJywgJ2FwcHJvdmVycycsICdyZXZpZXdlcicsXHJcbiAgICAnY2NFbWFpbCcsICdjY0ZhaWwnLCAncmMnLCAnY2F0ZWdvcnknLCAnZnJlcXVlbmN5JywgJ3Jldmlld2VyRnJlcXVlbmN5JywgJ2NoZWNrcG9pbnRzJ11cclxuICByaXNrQ2xhc3NpZmljYXRpb24gPSBbXHJcbiAgICB7IG5hbWU6ICdMT1cnLCB2YWx1ZTogMSwgY2xhc3M6ICdsb3cnIH0sXHJcbiAgICB7IG5hbWU6ICdMT1ctTWVkaXVtJywgdmFsdWU6IDIsIGNsYXNzOiAnbG93LW1lZCcgfSxcclxuICAgIHsgbmFtZTogJ01lZGl1bS1IaWdoJywgdmFsdWU6IDMsIGNsYXNzOiAnbWVkLWhpZ2gnIH0sXHJcbiAgICB7IG5hbWU6ICdIaWdoJywgdmFsdWU6IDQsIGNsYXNzOiAnaGlnaCcgfVxyXG4gIF07XHJcbiAgc2hvd1Jpc2tDbGFzc2lmaWNhdGlvbiA9IHRydWU7XHJcbiAgc2hvd0NyZWF0ZURvY3VtZW50cyA9IGZhbHNlO1xyXG4gIG9yZ2FuaXphdGlvbl9pZCA9ICcnO1xyXG4gIG1lbWJlcl9vYmpfaWQgPSAnJztcclxuICBtZW1iZXJJZCA9IDA7XHJcbiAgdXNlckluZm8gITogYW55O1xyXG5cclxuICBwb2xpY3lBcHByb3ZhbEZsYWcgPSAwO1xyXG4gIGJhc2VVUkwgPSAnJ1xyXG4gIGdyb3VwRW5hYmxlZCE6IGFueTtcclxuICBvdmVyc2Vlckdyb3Vwc0xpc3Q6IGFueVtdID0gW107XHJcblxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBvbGljeVNlcnZpY2U6IFBvbGljeVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNuYWNrQmFyOiBTbmFja0JhclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHVpS2l0U2VydmljZTogVWlLaXRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlc3BvbnNpYmlsaXR5U2VydmljZTogUmVzcG9uc2liaWxpdHlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSBmcmVxdWVuY3lTZXJ2aWNlOiBGcmVxdWVuY3lTZXJ2aWNlLFxyXG4gICAgcGxhdGZvcm1Mb2NhdGlvbjogUGxhdGZvcm1Mb2NhdGlvbixcclxuICAgIHByaXZhdGUgY2hhbmdlUmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxyXG4gICkge1xyXG4gICAgdGhpcy5iYXNlVVJMID0gKHBsYXRmb3JtTG9jYXRpb24gYXMgYW55KS5sb2NhdGlvbi5vcmlnaW47XHJcbiAgICBpZiAodGhpcy5iYXNlVVJMID09IFwiaHR0cDovL2xvY2FsaG9zdDo0MjAwXCIpIHtcclxuICAgICAgdGhpcy5iYXNlVVJMID0gJ2h0dHBzOi8vZGV2LnYtY29tcGx5LmNvbSdcclxuICAgIH1cclxuICB9XHJcbiAgcG9saWN5Rm9ybTogUG9saWN5Rm9ybSA9IHtcclxuICAgIHBvbGljeU5hbWU6ICcnLFxyXG4gICAgcG9saWN5Tm90ZXM6ICcnLFxyXG4gICAgc2VsZWN0ZWRDYXRlZ29yaWVzOiBbXSxcclxuICAgIHNlbGVjdGVkQXBwcm92ZXJzOiBbXSxcclxuICAgIHNlbGVjdGVkQXNzaWduZWVzOiBbXSwgLy9kb3VidCBpbiBuYW1lXHJcbiAgICBzZWxlY3RlZEdyb3VwQXNzaWduZWU6IFtdLFxyXG4gICAgc2VsZWN0ZWRSZXZpZXdlcnM6IFtdLFxyXG5cclxuICAgIHNlbGVjdGVkUkNzOiBbXSxcclxuICAgIENDRmFpbEVtYWlsOiBbXSxcclxuICAgIENDRmFpbEVtYWlsR3JvdXA6IFtdLFxyXG4gICAgQ0NFbWFpbDogW10sXHJcbiAgICBDQ0dyb3VwRW1haWw6IFtdLFxyXG4gICAgYXZhaWxhYmxlT25Qb3J0YWw6IGZhbHNlLFxyXG4gICAgYWNjZXB0U3VnZ2VzdGlvbnM6IGZhbHNlLFxyXG4gICAgcmVxdWlyZXNTaWduYXR1cmVGb3JBdHRlc3RhdGlvbjogZmFsc2UsXHJcbiAgICByaXNrUmF0aW5nOiAxLFxyXG4gICAgYXNzb2NpYXRlZERvY3VtZW50czoge1xyXG4gICAgICBmb3JtYXRGaWxlczogW10sXHJcbiAgICB9LFxyXG4gICAgcG9saWN5RHVlRGF0ZTogbW9tZW50KCksXHJcbiAgICBjdXN0b21UYWdzOiBbXSxcclxuICAgIGNoZWNrcG9pbnREZXRhaWxzOiBbXSxcclxuICAgIHRvdGFsUXVlc3Rpb246IDAsXHJcbiAgICBwYXNzaW5nTWFya3M6IDAsXHJcbiAgICBkb2N1bWVudHNBbmRMaW5rczoge1xyXG4gICAgICBmb3JtYXRGaWxlczogW10sXHJcbiAgICAgIGZvcm1hdExpbmtzOiBbXSxcclxuICAgIH0sXHJcbiAgICBhZGRSZXNwb25zaWJpbGl0eUNlbnRlcnM6IGZhbHNlLFxyXG4gICAgYWRkUmV2aWV3ZXJzOiBmYWxzZSxcclxuICAgIGFkZENoZWNrcG9pbnRzOiBmYWxzZSxcclxuICAgIGFkZE92ZXJzZWVyczogZmFsc2UsXHJcbiAgICBhZGRBc3NvY2lhdGVkRG9jdW1lbnRzOiBmYWxzZSxcclxuXHJcbiAgICBmYWlsZWRfdGltZTogJycsXHJcbiAgICBmcmVxdWVuY3lfZGV0YWlsczogJycsXHJcbiAgICBmcmVxdWVuY3lfdGV4dDogJycsXHJcbiAgICBtYXJrX2ZhaWxlZF9hZnRlcjogMCxcclxuICAgIHJlbWluZF9kYXlzX2JlZm9yZV9kdWVfZGF0ZTogMCxcclxuXHJcbiAgICByZXZpZXdGYWlsZWRBZnRlcjogMCxcclxuICAgIHJldmlld0ZhaWxlZFRpbWU6ICcnLFxyXG4gICAgcmV2aWV3X2ZyZXF1ZW5jeV9kZXRhaWxzOiAnJyxcclxuICAgIHJldmlld19mcmVxdWVuY3lfdHlwZTogJycsXHJcbiAgICByZXZpZXdfcmVtaW5kX2RheXNfYmVmb3JlX2R1ZV9kYXRlOiAwLFxyXG4gIH07XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmdyb3VwRW5hYmxlZCA9IHRoaXMuZmVhdHVyZT8uaXNGZWF0dXJlRW5hYmxlZChcImZmX3BvbGljeV9ncm91cHNcIik7XHJcbiAgICB0aGlzLmdldFJDTGlzdCgpO1xyXG4gICAgdGhpcy5nZXRVc2Vyc0xpc3QoKTtcclxuICAgIHRoaXMuZ2V0Q2F0ZWdvcmllc0xpc3QoKTtcclxuICAgIHRoaXMuZ2V0R3JvdXBzTGlzdCgpO1xyXG4gICAgdGhpcy5vdmVyc2Vlckdyb3VwTGlzdCgpO1xyXG4gICAgdGhpcy5jaGVja1doZXRoZXJBbGxMaXN0c0xvYWRlZCgpO1xyXG4gICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xyXG4gICAgdGhpcy5hdXRoU2VydmljZS5nZXRPcmdhbml6YXRpb25EZXRhaWxzKCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoIXJlcy5lbmFibGVfcmlza2NsYXNzKSB7XHJcbiAgICAgICAgdGhpcy5zaG93Umlza0NsYXNzaWZpY2F0aW9uID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5vcmdhbml6YXRpb25faWQgPSByZXMuX2lkXHJcbiAgICB9KTtcclxuICAgIHRoaXMubWVtYmVyX29ial9pZCA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0VXNlckRldGFpbHMoKS5faWQ7XHJcbiAgICB0aGlzLnVzZXJJbmZvID0gdGhpcy5hdXRoU2VydmljZS5nZXRVc2VyRGV0YWlscygpLnVzZXI7XHJcbiAgICB0aGlzLm1lbWJlcklkID0gdGhpcy5hdXRoU2VydmljZS5nZXRNZW1iZXJJZCgpO1xyXG4gICAgdGhpcy5jaGFuZ2VSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERpc3BsYXlzIHRoZSBsaXN0aW5nIHBhZ2VzIHRoZSBsZWZ0IHNpZGUgb2YgcG9saWN5IGZvcm0gdG8gc2V0IGFuZCBlZGl0IHRoZSBkcm9wZG93biBmaWVsZHMgdmFsdWVzXHJcbiAgICogQHBhcmFtIHR5cGUgaG9sZHMgbmFtZSBvZiBwYXJ0aWN1bGFyIGxpc3QgaXMgdG8gYmUgZGlzcGxheWVkXHJcbiAgICogQHBhcmFtIGV2ZW50IGNvbnRhaW5zIGJvb2xlYW4gdmFsdWUgdG8gZGlzcGxheSB0aGUgbGlzdCBvciBub3RcclxuICAgKiBAcGFyYW0gd29ya2Zsb3dUeXBlIGl0IHNldHMgdGhlIGFwcHJvdmFsIHdvcmtmbG93IHR5cGUgd2hpbGUgZWRpdGluZyB0aGUgYXBwcm92YWwgd29ya2Zsb3cuXHJcbiAgICovXHJcbiAgYWN0aXZhdGVTZWxlY3Rvcih0eXBlOiBhbnksIGV2ZW50OiBib29sZWFuLCB3b3JrZmxvd1R5cGU/OiBhbnkpIHtcclxuICAgIGlmICh3b3JrZmxvd1R5cGUpIHtcclxuICAgICAgdGhpcy53b3JrZmxvd1R5cGUgPSB3b3JrZmxvd1R5cGVcclxuICAgIH1cclxuICAgIHRoaXMuYWN0aXZlU2VsZWN0b3IgPSBldmVudCA/IHR5cGUgOiAnJztcclxuICAgIGlmICh0aGlzLnNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKHR5cGUpKSB7XHJcbiAgICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KGV2ZW50KTtcclxuICAgIH1cclxuXHJcblxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICAqIENsb3NlcyB0aGUgbGlzdGluZyBwYWdlc1xyXG4gICAgKi9cclxuICBkaXNhYmxlU2VsZWN0b3IoKSB7XHJcbiAgICB0aGlzLmFkZE1vcmVMZXZlbHMgPSBmYWxzZTtcclxuICAgIHRoaXMuYWN0aXZlU2VsZWN0b3IgPSAnJztcclxuICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KGZhbHNlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgUmVzcG9uc2liaWxpdHkgY2VudGVycyBsaXN0XHJcbiAgICovXHJcbiAgZ2V0UkNMaXN0KCkge1xyXG4gICAgdGhpcy5wb2xpY3lTZXJ2aWNlLmdldFJDTGlzdCgpLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICB0aGlzLnJjTGlzdCA9IHJlcztcclxuICAgICAgdGhpcy5yY0xpc3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgfSwgZXJyID0+IHtcclxuICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICB0aGlzLnJjTGlzdExvYWRlZCA9IHRydWU7XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaGVzIG9yZ2FuaXphdGlvbiB1c2VycyBsaXN0XHJcbiAgICovXHJcbiAgZ2V0VXNlcnNMaXN0KCkge1xyXG4gICAgdGhpcy5wb2xpY3lTZXJ2aWNlLmdldE9yZ2FuaXphdGlvblBlb3BsZSgpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgIGlmKHRoaXMuZ3JvdXBFbmFibGVkKXtcclxuICAgICAgdGhpcy51c2Vyc0xpc3QgPSB0aGlzLnVwZGF0ZU1lbWJlcklkS2V5KHJlcyk7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy51c2Vyc0xpc3QgPSByZXM7XHJcbiAgICB9XHJcbiAgICB0aGlzLnVzZXJzTGlzdExvYWRlZCA9IHRydWU7XHJcbiAgICB9LCBlcnIgPT4ge1xyXG4gICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICAgIHRoaXMudXNlcnNMaXN0TG9hZGVkID0gdHJ1ZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy8gcmVwbGFjZSBtZW1iZXJfaWQgdmFsdWUgdG8gbXlfbWVtYmVyX2lkXHJcbiAgdXBkYXRlTWVtYmVySWRLZXkobGlzdDogYW55KXtcclxuICAgIGxldCB1cGRhdGVkTGlzdCA9IGxpc3QubWFwKChlbGU6IGFueSkgPT4gKHsuLi5lbGUsIG1lbWJlcl9pZDogZWxlPy5teV9tZW1iZXJfaWR9KSk7XHJcbiAgICByZXR1cm4gdXBkYXRlZExpc3RcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgUG9saWN5IENhdGVnb3JpZXMgbGlzdFxyXG4gICAqL1xyXG4gIGdldENhdGVnb3JpZXNMaXN0KCkge1xyXG4gICAgdGhpcy5wb2xpY3lTZXJ2aWNlLmdldENhdGVnb3JpZXNMaXN0KCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmNhdGVnb3J5TGlzdCA9IHJlcztcclxuICAgICAgdGhpcy5jYXRlZ29yaWVzTGlzdExvYWRlZCA9IHRydWU7XHJcbiAgICB9LCBlcnIgPT4ge1xyXG4gICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICAgIHRoaXMuY2F0ZWdvcmllc0xpc3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaGVzIG9yZ2FuaXphdGlvbiB1c2VycyBncm91cHMgbGlzdFxyXG4gICAqL1xyXG4gIGdldEdyb3Vwc0xpc3QoKSB7XHJcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5U2VydmljZS5nZXRPcmdhbml6YXRpb25Qb2xpY3lHcm91cHMoKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IGRhdGEgPSByZXMuZGF0YTtcclxuICAgICAgY29uc3QgZ3JvdXBzOiBhbnkgPSBbXTtcclxuICAgICAgZGF0YT8uZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3Qgb2JqID0ge1xyXG4gICAgICAgICAgZ3JvdXBOYW1lOiBlbGVtZW50Lmdyb3VwX25hbWUsXHJcbiAgICAgICAgICB1c2VySWRzOiBlbGVtZW50Lm1lbWJlcl9pZHMsXHJcbiAgICAgICAgfTtcclxuICAgICAgICBncm91cHMucHVzaChvYmopO1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5ncm91cHNMaXN0ID0gZ3JvdXBzO1xyXG4gICAgICBpZih0aGlzLmdyb3VwRW5hYmxlZCl7XHJcbiAgICAgICAgdGhpcy5ncm91cHNMaXN0ID1kYXRhXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5ncm91cHNMaXN0TG9hZGVkID0gdHJ1ZTtcclxuICAgIH0sIGVyciA9PiB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgdGhpcy5ncm91cHNMaXN0TG9hZGVkID0gdHJ1ZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy9HZXQgdGhlIGxpc3Qgb2Ygb3ZlcnNlZXJzIGdyb3VwLlxyXG4gIG92ZXJzZWVyR3JvdXBMaXN0KCkge1xyXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eVNlcnZpY2U/LmdldE9yZ2FuaXphdGlvbk92ZXJzZWVyc0dyb3VwcygpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5vdmVyc2Vlckdyb3Vwc0xpc3QgPSByZXM/LmRhdGE7XHJcbiAgICAgICB0aGlzLmdyb3Vwc0xpc3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgICB9LCBlcnIgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgICB0aGlzLmdyb3Vwc0xpc3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICAqIFNldHMgdGhlIGFwcHJvdmVycyB3b3JrZmxvdyBmcm9tIHRoZSBzZWxlY3RlZCB3b3JrZmxvdyBvbiBBcHByb3ZlcnMgd29ya2Zsb3cgbGlzdFxyXG4gICAgKiBAcGFyYW0gZXZlbnQgY29udGFpbnMgc2VsZWN0ZWQgcHJlZGVmaW5lZCB3b3JrZmxvd1xyXG4gICAgKi9cclxuICBzZWxlY3RlZFdvcmtmbG93Q2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmIChldmVudCA9PT0gLTEpIHtcclxuICAgICAgLy8gdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQXBwcm92ZXJzID0gW107XHJcbiAgICAgIC8vIHRoaXMuYWRkTW9yZUxldmVscyA9IHRydWVcclxuICAgICAgLy8gdGhpcy5hY3RpdmF0ZVNlbGVjdG9yKCdhcHByb3ZlcnMnLCB0cnVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBkYXRhID0gY2xvbmVEZWVwKGV2ZW50LmFwcHJvdmFsX3dvcmtmbG93KTtcclxuICAgICAgY29uc3QgbmV3QXJyYXkgPSBkYXRhLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgaXRlbS5uYW1lID0gaXRlbS50eXBlXHJcbiAgICAgICAgY29uc3QgaWRzID0gaXRlbS5hcHByb3ZlcnMubWFwKChhcHByb3ZlcjogYW55KSA9PiBhcHByb3Zlci5tZW1iZXJfaWQpO1xyXG4gICAgICAgIGl0ZW0uYXBwcm92ZXJzID0gdGhpcy5zZXRMaXN0KHRoaXMuYWxsQXBwcm92ZXJzLCBpZHMsICdtZW1iZXJfaWQnKTtcclxuICAgICAgICByZXR1cm4gaXRlbTtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFwcHJvdmVycyA9IG5ld0FycmF5LmZpbHRlcigobGV2ZWw6IGFueSkgPT4gbGV2ZWwuYXBwcm92ZXJzLmxlbmd0aCA+IDApXHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiBGZXRjaGVzIEFwcHJvdmVycyB3b3JrZmxvdyBsaXN0IGJhc2VkIG9uIHNlbGVjdGVkIHBvbGljeSBjYXRlZ29yaWVzXHJcbiAgKiBAcGFyYW0gaWQgY29udGFpbnMgc2VsZWN0ZWQgY2F0ZWdvcmllcyBpZCdzXHJcbiAgKi9cclxuICBnZXRBcHByb3ZlcldvcmtGbG93KGlkOiBhbnkpIHtcclxuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcclxuICAgIHRoaXMucG9saWN5U2VydmljZS5nZXRXb3JrZmxvd0xpc3QoaWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlcz8ubGVuZ3RoID49IDApIHtcclxuICAgICAgICB0aGlzLmFwcHJvdmVyV29ya0Zsb3dMaXN0ID0gcmVzOyAvLyBnZXR0aW5nIGFsbCBhcHByb3ZlciBzYXZlZCB3b3JrZmxvd3NcclxuICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9LCBlcnIgPT4ge1xyXG4gICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcblxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIEZldGNoZXMgQXBwcm92ZXJzIGFuZCByZXZpZXdlcnMgbGlzdCBiYXNlZCBvbiBzZWxlY3RlZCBwb2xpY3kgY2F0ZWdvcmllc1xyXG4gICogQHBhcmFtIGNhdGVnb3J5SWRzIGNvbnRhaW5zIHNlbGVjdGVkIGNhdGVnb3JpZXMgaWQnc1xyXG4gICovXHJcbiAgZ2V0QXBwcm92ZXJzQW5kUmV2aWV3ZXJzTGlzdChjYXRlZ29yeUlkczogYW55LCBhcHByb3Zlcklkcz86IGFueSwgcmV2aWV3ZXJJZHM/OiBhbnkpIHtcclxuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcclxuXHJcbiAgICB0aGlzLnBvbGljeVNlcnZpY2UuZ2V0UmV2aWV3ZXJzKGNhdGVnb3J5SWRzKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXM/Lmxlbmd0aCA+PSAwKSB7XHJcbiAgICAgICAgcmVzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG5cclxuICAgICAgICAgIHRoaXMuYWxsQXBwcm92ZXJzID0gdW5pcUJ5KHRoaXMuYWxsQXBwcm92ZXJzLmNvbmNhdChlbGVtZW50LmFsbF9hcHByb3ZlcnMpLCAnbWVtYmVyX2lkJyk7XHJcbiAgICAgICAgICB0aGlzLmFsbFJldmlld2VycyA9IHVuaXFCeShlbGVtZW50LmFsbF9hcHByb3ZlcnMuY29uY2F0KHRoaXMuYWxsUmV2aWV3ZXJzLCBlbGVtZW50LmFsbF9hdXRob3JzKSwgJ21lbWJlcl9pZCcpO1xyXG5cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoYXBwcm92ZXJJZHMpIHtcclxuICAgICAgICBsZXQgb2JqID0gYXBwcm92ZXJJZHM7XHJcbiAgICAgICAgbGV0IGFwcHJvdmVyTGV2ZWxzID0gW11cclxuICAgICAgICBmb3IgKHZhciBpdGVtIGluIG9iaikge1xyXG4gICAgICAgICAgY29uc3QgaWRzID0gb2JqW2l0ZW1dLmFwcHJvdmVycy5tYXAoKGFwcHJvdmVyOiBhbnkpID0+IGFwcHJvdmVyLm1lbWJlcl9pZCk7XHJcblxyXG4gICAgICAgICAgbGV0IGRhdGEgPSB7XHJcbiAgICAgICAgICAgIG5hbWU6IG9ialtpdGVtXS50eXBlLFxyXG4gICAgICAgICAgICBhcHByb3ZlcnM6IHRoaXMuc2V0TGlzdCh0aGlzLmFsbEFwcHJvdmVycywgaWRzLCAnbWVtYmVyX2lkJylcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChkYXRhLm5hbWUgPT0gJ1JPVU5EUk9CSU4nKSB7XHJcbiAgICAgICAgICAgIGRhdGEubmFtZSA9ICdST1VORC1ST0JJTidcclxuICAgICAgICAgIH0gZWxzZSBpZiAoZGF0YS5uYW1lID09ICdBTllPTkUnKSB7XHJcbiAgICAgICAgICAgIGRhdGEubmFtZSA9ICdBTlkgT05FJ1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYXBwcm92ZXJMZXZlbHMucHVzaChkYXRhKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQXBwcm92ZXJzID0gYXBwcm92ZXJMZXZlbHM7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHJldmlld2VySWRzKSB7XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkUmV2aWV3ZXJzID0gdGhpcy5zZXRMaXN0KHRoaXMuYWxsUmV2aWV3ZXJzLCByZXZpZXdlcklkcywgJ21lbWJlcl9pZCcpO1xyXG5cclxuICAgICAgfVxyXG4gICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG5cclxuICAgIH0sIGVyciA9PiB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKVxyXG4gICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG5cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqKioqKipcclxuICAqIEl0IGlzIHRvIHBvcHVsYXRlIG1vcmUgb3B0aW9ucyBlbGVtZW50cyB3aGlsZSBlZGl0aW5nIHRoZSBwb2xpY3kgZm9ybVxyXG4gICovXHJcbiAgcG9wdWxhdGVPcHRpb25hbEZpZWxkcygpIHtcclxuICAgIGNvbnN0IGFjdGl2YXRlZE9wdGlvbnMgPSBbXTtcclxuICAgIGlmICh0aGlzLnBvbGljeUZvcm0uYWRkUmVzcG9uc2liaWxpdHlDZW50ZXJzKSB7IGFjdGl2YXRlZE9wdGlvbnMucHVzaCgnUkVTUE9OU0lCSUxJVFlfQ0VOVEVSJyk7IH1cclxuICAgIGlmICh0aGlzLnBvbGljeUZvcm0uYWRkUmV2aWV3ZXJzKSB7IGFjdGl2YXRlZE9wdGlvbnMucHVzaCgnUkVWSUVXRVInKTsgfVxyXG4gICAgaWYgKHRoaXMucG9saWN5Rm9ybS5hZGRDaGVja3BvaW50cykgeyBhY3RpdmF0ZWRPcHRpb25zLnB1c2goJ0NIRUNLUE9JTlRTJyk7IH1cclxuICAgIGlmICh0aGlzLnBvbGljeUZvcm0uYWRkT3ZlcnNlZXJzKSB7IGFjdGl2YXRlZE9wdGlvbnMucHVzaCgnT1ZFUlNFRVInKTsgfVxyXG4gICAgaWYgKHRoaXMucG9saWN5Rm9ybS5hZGRBc3NvY2lhdGVkRG9jdW1lbnRzKSB7IGFjdGl2YXRlZE9wdGlvbnMucHVzaCgnQVNTT0NJQVRFRF9ET0NVTUVOVFMnKTsgfVxyXG5cclxuICAgIHRoaXMucG9wdWxhdGVPcHRpb24uZW1pdChhY3RpdmF0ZWRPcHRpb25zKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogSXQgaXMgdG8gYWRkIGFuZCByZW1vdmUgdGhlIGVsZW1lbnRzIGZyb20gTW9yZSBvcHRpb24gdG8gdGhlIHBvbGljeSBGb3JtXHJcbiAgICogQHBhcmFtIGV2ZW50IGNvbnRhaW5zIGRldGFpbHMgcmVsYXRlZCB0byBjaGVja2VkIHZhbHVlLCBjb2RlIHBhcnRpY3VsYXIgZWxlbWVudHMgZnJvbSBNb3JlIG9wdGlvbnNcclxuICAgKi9cclxuICBhZGRNb3JlSW5mbyhldmVudDogYW55KSB7XHJcbiAgICBzd2l0Y2ggKGV2ZW50LmNvZGUpIHtcclxuICAgICAgY2FzZSAnUkVTUE9OU0lCSUxJVFlfQ0VOVEVSJzpcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uYWRkUmVzcG9uc2liaWxpdHlDZW50ZXJzID0gZXZlbnQuY2hlY2tlZDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnUkVWSUVXRVInOlxyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5hZGRSZXZpZXdlcnMgPSBldmVudC5jaGVja2VkO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdDSEVDS1BPSU5UUyc6XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLmFkZENoZWNrcG9pbnRzID0gZXZlbnQuY2hlY2tlZDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnT1ZFUlNFRVInOlxyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5hZGRPdmVyc2VlcnMgPSBldmVudC5jaGVja2VkO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdBU1NPQ0lBVEVEX0RPQ1VNRU5UUyc6XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLmFkZEFzc29jaWF0ZWREb2N1bWVudHMgPSBldmVudC5jaGVja2VkO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgIH1cclxuICAgIHRoaXMuc2Nyb2xsVG9Cb3R0b20gPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICAqIEl0IGlzIHRvIGVuc3VyZSB3aGV0aGVyIGFsbCByZXF1aXJlZCBsaXN0cyBvbiBQb2xpY3kgZnJvbSBpcyBsb2FkZWQgZnJvbSB0aGUgYXBpIGNhbGwgb3Igbm90XHJcbiAgICAqL1xyXG4gIGNoZWNrV2hldGhlckFsbExpc3RzTG9hZGVkKCkge1xyXG4gICAgaWYgKHRoaXMucmNMaXN0TG9hZGVkICYmIHRoaXMudXNlcnNMaXN0TG9hZGVkICYmIHRoaXMuY2F0ZWdvcmllc0xpc3RMb2FkZWQgJiYgdGhpcy5ncm91cHNMaXN0TG9hZGVkKSB7XHJcbiAgICAgIHRoaXMucmVmcmVzaEFsbExpc3RzKCk7XHJcbiAgICAgIGlmICh0aGlzLmNvbnZlcnRGaWxlRGF0YSAmJiB0aGlzLmNvbnZlcnRGaWxlRGF0YS5maWxlTmFtZSkge1xyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5wb2xpY3lOYW1lID0gdGhpcy5jb252ZXJ0RmlsZURhdGEuZmlsZU5hbWUuc3Vic3RyaW5nKDAsIHRoaXMuY29udmVydEZpbGVEYXRhLmZpbGVOYW1lLmxhc3RJbmRleE9mKCcuJykpXHJcbiAgICAgICAgaWYgKHRoaXMuY29udmVydEZpbGVEYXRhLmNhdGVnb3J5SWQpIHtcclxuICAgICAgICAgIHRoaXMuc2F2ZVNlbGVjdGVkTGlzdCgnY2F0ZWdvcnknLCBbdGhpcy5jb252ZXJ0RmlsZURhdGEuY2F0ZWdvcnlJZF0pXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZENhdGVnb3J5KSB7XHJcbiAgICAgICAgdGhpcy5zYXZlU2VsZWN0ZWRMaXN0KCdjYXRlZ29yeScsIFt0aGlzLnNlbGVjdGVkQ2F0ZWdvcnldKVxyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLm1vZGUgPT09ICdFRElUJykge1xyXG4gICAgICAgIHRoaXMuZWRpdFBvbGljeSgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2hlY2tXaGV0aGVyQWxsTGlzdHNMb2FkZWQoKTtcclxuICAgICAgfSwgMzAwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAgKiBUcmlnZ2VycyB0aGUgY29uZmlybWF0aW9uIHBvcHVwIHdoZW4gYXZhaWxhYmlsaXR5IG9uIFBvbGljeSBwb3J0YWwgdG9nZ2xlIGluIE9OXHJcbiAgICAqIEBwYXJhbSBldmVudCBjb250YWlucyB0b2dnbGUgdmFsdWUgd2hpY2ggaXMgYWx3YXlzIHRydWUgb3IgZmFsc2VcclxuICAgICovXHJcbiAgYXZhaWxhYmlsaXR5T25Qb3J0YWwoZXZlbnQ6IGFueSkge1xyXG5cclxuICAgIGlmIChldmVudCkge1xyXG4gICAgICBjb25zdCBjb25maXJtYXRpb25EZXRhaWxzOiBDb25maXJtYXRpb25BbGVydCA9IHtcclxuICAgICAgICBpc1Zpc2libGU6IHRydWUsXHJcbiAgICAgICAgbWVzc2FnZTogYFRoZSBwb2xpY2llcyB0aGF0IHlvdSBpbnRlbmQgdG8gbWFrZSBhY2Nlc3NpYmxlIHRvIHRoZSBlbnRpcmUgb3JnYW5pemF0aW9uIGNhbiBiZSBhZGRlZCB0byB0aGUgcG9saWN5IHBvcnRhbC5cclxuICAgICAgICBJdCBpcyBsaWtlIGEgc2hhcmVkIGNhdGFsb2cgb2YgYWxsIGFjdGl2ZSAmIHVwZGF0ZWQgcG9saWNpZXMgdGhhdCBhbnkgbG9nZ2VkIGluIHVzZXIgY2FuIHJlYWQvIGRvd25sb2FkIGZvciByZWZlcmVuY2UuXHJcbiAgICAgICAgSGVuY2UsIGlmIHRoaXMgb3B0aW9uIGlzIGVuYWJsZWQsIGl0IGlzIG5vdCBuZWNlc3NhcnkgZm9yIHlvdSB0byBzZXQgdXAgYW4gYXR0ZXN0YXRpb24gc2NoZWR1bGUgb3Igc2VsZWN0XHJcbiAgICAgICAgcmVhZGVycyB0byBhdHRlc3QgdGhlIHBvbGljaWVzLmAsXHJcbiAgICAgICAgYWN0aW9uOiAnUE9MSUNZX1BPUlRBTCcsXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuc2hvd0NvbmZpcm1hdGlvbkFsZXJ0LmVtaXQoY29uZmlybWF0aW9uRGV0YWlscyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZWNlaXZlcyB0aGUgaW5wdXQgZnJvbSB0aGUgQ29uZmlybWF0aW9uIGRpYWxvZyBvZiBhdmFpbGFibGUgb24gUG9saWN5IHBvcnRhbFxyXG4gICAqIEBwYXJhbSBldmVudCBjb250YWlucyBzZWxlY3RlZCBvcHRpb24gZnJvbSB0aGUgY29uZmlybWF0aW9uIGRpYWxvZyB3aGljaCBpcyBhbHdheXMgZWl0aGVyICdZRVMnIG9yICdOTydcclxuICAgKi9cclxuICBjb25maXJtUG9saWN5UG9ydGFsKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5hdmFpbGFibGVPblBvcnRhbCA9IChldmVudCA9PSAnWUVTJykgPyB0cnVlIDogZmFsc2VcclxuICAgIGlmIChldmVudCA9PSAnTk8nKSB7XHJcbiAgICAgIHRoaXMucG9saWN5Rm9ybS5hY2NlcHRTdWdnZXN0aW9ucyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgcG9saWN5Rm9ybSB3aXRoIHNlbGVjdGVkIGVsZW1lbnRzIGZyb20gdGhlIGxpc3RpbmcsIGZyZXF1ZW5jeSwgZmlsZSB1cGxvYWQgY29tcG9uZW50c1xyXG4gICAqIEBwYXJhbSB0eXBlIGRlZmluZXMgdGhlIHBhcnRpY3VsYXIgZmllbGQgb24gUG9saWN5IGZvcm0uXHJcbiAgICogQHBhcmFtIHNlbGVjdGVkSXRlbXMgY29udGFpbnMgdGhlIGxpc3Qgb2Ygc2VsZWN0ZWQgaXRlbXMgZnJvbSB0aGUgbGlzdFxyXG4gICAqL1xyXG4gIHNhdmVTZWxlY3RlZExpc3QodHlwZTogc3RyaW5nLCBzZWxlY3RlZEl0ZW1zOiBhbnkpIHtcclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG5cclxuICAgICAgY2FzZSAncmMnOlxyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZFJDcyA9IHRoaXMuc2V0TGlzdCh0aGlzLnJjTGlzdCwgc2VsZWN0ZWRJdGVtcywgJ2l0ZW1faWQnKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnY2F0ZWdvcnknOlxyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZENhdGVnb3JpZXMgPSB0aGlzLnNldExpc3QodGhpcy5jYXRlZ29yeUxpc3QsIHNlbGVjdGVkSXRlbXMsICdfaWQnKTtcclxuICAgICAgICBjb25zdCBvYmplY3RJZHMgPSB0aGlzLnJldHVybklkcyh0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRDYXRlZ29yaWVzLCAnX2lkJylcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBcHByb3ZlcnMgPSBbXTtcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRSZXZpZXdlcnMgPSBbXTtcclxuICAgICAgICB0aGlzLnJlc2V0UmV2aWV3ZXJGcmVxdWVuY3koKTtcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uY3VzdG9tVGFncyA9IFtdO1xyXG4gICAgICAgIHRoaXMuZ2V0QXBwcm92ZXJXb3JrRmxvdyhvYmplY3RJZHMpO1xyXG4gICAgICAgIHRoaXMuZ2V0QXBwcm92ZXJzQW5kUmV2aWV3ZXJzTGlzdChvYmplY3RJZHMpO1xyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZENhdGVnb3JpZXMuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCB0YWcgPSBlbGVtZW50LmN1c3RvbV90YWdzO1xyXG4gICAgICAgICAgaWYgKHRhZy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHRhZy5mb3JFYWNoKCh0YWdEYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMucG9saWN5Rm9ybS5jdXN0b21UYWdzLmZpbmRJbmRleCgodGFnRWxlbWVudDogYW55KSA9PiB0YWdFbGVtZW50LnRhZ25hbWUgPT0gdGFnRGF0YS50YWduYW1lKTtcclxuICAgICAgICAgICAgICBpZiAoaW5kZXggPT0gLTEpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucG9saWN5Rm9ybS5jdXN0b21UYWdzLnB1c2godGFnRGF0YSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2Fzc2lnbmVlcyc6XHJcbiAgICAgICAgbGV0IHVzZXJJZHMgLGdyb3VwSWRzO1xyXG4gICAgICAgIGlmKHRoaXMuZ3JvdXBFbmFibGVkKXtcclxuICAgICAgICAgdXNlcklkcyA9IHRoaXMucmV0dXJuSWRzKHNlbGVjdGVkSXRlbXMudXNlcnMsJ21lbWJlcl9pZCcpXHJcbiAgICAgICAgIGdyb3VwSWRzID0gdGhpcy5yZXR1cm5JZHMoc2VsZWN0ZWRJdGVtcy5ncm91cHMsJ2dyb3VwX2lkJylcclxuICAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkR3JvdXBBc3NpZ25lZSA9ICB0aGlzLnNldExpc3QodGhpcy5ncm91cHNMaXN0LCBncm91cElkcywnZ3JvdXBfaWQnKTtcclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgIHVzZXJJZHMgPSBzZWxlY3RlZEl0ZW1zXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFzc2lnbmVlcyA9IHRoaXMuc2V0TGlzdCh0aGlzLmFzc2lnbmVlc0xpc3QsIHVzZXJJZHMsICdteV9tZW1iZXJfaWQnKTtcclxuICAgICAgICB0aGlzLnJlZnJlc2hBbGxMaXN0cygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSAncmV2aWV3ZXInOlxyXG5cclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRSZXZpZXdlcnMgPSB0aGlzLnNldExpc3QodGhpcy5hbGxSZXZpZXdlcnMsIFtzZWxlY3RlZEl0ZW1zLm1lbWJlcl9pZF0sICdtZW1iZXJfaWQnKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnY2NFbWFpbCc6XHJcbiAgICAgICAgbGV0IHNlbGVjdGVkVXNlcklkcyAsc2VsZWN0ZWRHcm91cElkcztcclxuICAgICAgICBpZih0aGlzLmdyb3VwRW5hYmxlZCl7XHJcbiAgICAgICAgICBzZWxlY3RlZFVzZXJJZHMgPSB0aGlzLnJldHVybklkcyhzZWxlY3RlZEl0ZW1zPy51c2VycywnbWVtYmVyX2lkJylcclxuICAgICAgICAgIHNlbGVjdGVkR3JvdXBJZHMgPSB0aGlzLnJldHVybklkcyhzZWxlY3RlZEl0ZW1zPy5ncm91cHMsJ2dyb3VwX2lkJyk7XHJcbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uQ0NHcm91cEVtYWlsID0gIHRoaXMuc2V0TGlzdCh0aGlzLm92ZXJzZWVyR3JvdXBzTGlzdCwgc2VsZWN0ZWRHcm91cElkcywnZ3JvdXBfaWQnKTtcclxuICAgICAgICAgIHRoaXMucG9saWN5Rm9ybS5DQ0VtYWlsID0gdGhpcy5zZXRMaXN0KHRoaXMudXNlcnNMaXN0LCBzZWxlY3RlZFVzZXJJZHMsICdteV9tZW1iZXJfaWQnKTtcclxuICAgICAgICAgIHRoaXMuY2NFbWFpbE9iaklkcyA9IHRoaXMuZ2V0R3JvdXBPYmplY3RJZCh0aGlzLnBvbGljeUZvcm0/LkNDR3JvdXBFbWFpbClcclxuICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uQ0NFbWFpbCA9IHRoaXMuc2V0TGlzdCh0aGlzLnVzZXJzTGlzdCwgc2VsZWN0ZWRJdGVtcywgJ2VtcGxveWVlX2lkJyk7XHJcbiAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMucmVmcmVzaEFsbExpc3RzKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2NjRmFpbCc6XHJcbiAgICAgICAgbGV0IHNlbGVjdGVkRmFpbFVzZXJJZHMgLHNlbGVjdGVkRmFpbEdyb3VwSWRzO1xyXG4gICAgICAgIGlmKHRoaXMuZ3JvdXBFbmFibGVkKXtcclxuICAgICAgICAgIHNlbGVjdGVkRmFpbFVzZXJJZHMgPSB0aGlzLnJldHVybklkcyhzZWxlY3RlZEl0ZW1zPy51c2VycywnbWVtYmVyX2lkJylcclxuICAgICAgICAgIHNlbGVjdGVkRmFpbEdyb3VwSWRzID0gdGhpcy5yZXR1cm5JZHMoc2VsZWN0ZWRJdGVtcz8uZ3JvdXBzLCdncm91cF9pZCcpO1xyXG4gICAgICAgICAgdGhpcy5wb2xpY3lGb3JtLkNDRmFpbEVtYWlsR3JvdXAgPSAgdGhpcy5zZXRMaXN0KHRoaXMub3ZlcnNlZXJHcm91cHNMaXN0LCBzZWxlY3RlZEZhaWxHcm91cElkcywnZ3JvdXBfaWQnKTtcclxuICAgICAgICAgIHRoaXMucG9saWN5Rm9ybS5DQ0ZhaWxFbWFpbCA9IHRoaXMuc2V0TGlzdCh0aGlzLnVzZXJzTGlzdCwgc2VsZWN0ZWRGYWlsVXNlcklkcywgJ215X21lbWJlcl9pZCcpO1xyXG4gICAgICAgICAgdGhpcy5jY0ZhaWxHcm91cE9iaklkcyA9IHRoaXMuZ2V0R3JvdXBPYmplY3RJZCh0aGlzLnBvbGljeUZvcm0/LkNDRmFpbEVtYWlsR3JvdXApXHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uQ0NGYWlsRW1haWwgPSB0aGlzLnNldExpc3QodGhpcy51c2Vyc0xpc3QsIHNlbGVjdGVkSXRlbXMsICdlbXBsb3llZV9pZCcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnJlZnJlc2hBbGxMaXN0cygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdhcHByb3ZlcnMnOlxyXG4gICAgICAgIGNvbnN0IGFwcHJvdmVycyA9IHRoaXMuc2V0TGlzdCh0aGlzLmFsbEFwcHJvdmVycywgc2VsZWN0ZWRJdGVtcywgJ21lbWJlcl9pZCcpO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vcmVMZXZlbHMpIHtcclxuICAgICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFwcHJvdmVycy5wdXNoKHsgbmFtZTogdGhpcy53b3JrZmxvd1R5cGUsIGFwcHJvdmVycyB9KTtcclxuICAgICAgICAgIHRoaXMuYWRkTW9yZUxldmVscyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5kaXNhYmxlU2VsZWN0b3IoKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQXBwcm92ZXJzW3RoaXMuYXBwcm92ZXJzTGlzdEluZGV4XSA9IHsgbmFtZTogdGhpcy53b3JrZmxvd1R5cGUsIGFwcHJvdmVycyB9O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdyZXZpZXdlcl9hdHRhY2htZW50cyc6XHJcblxyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5kb2N1bWVudHNBbmRMaW5rcy5mb3JtYXRGaWxlcyA9IHNlbGVjdGVkSXRlbXM/LmZpbGVzID8/IFtdO1xyXG5cclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uZG9jdW1lbnRzQW5kTGlua3MuZm9ybWF0TGlua3MgPSBzZWxlY3RlZEl0ZW1zPy5saW5rcyA/PyBbXTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnYXNzb2NpYXRlZERvY3VtZW50cyc6XHJcblxyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5hc3NvY2lhdGVkRG9jdW1lbnRzLmZvcm1hdEZpbGVzID0gc2VsZWN0ZWRJdGVtcz8uZmlsZXMgPz8gW107XHJcblxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdjaGVja3BvaW50cyc6XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLmNoZWNrcG9pbnREZXRhaWxzID0gc2VsZWN0ZWRJdGVtcz8uY2hlY2twb2ludERldGFpbHMgPz8gW107XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnRvdGFsUXVlc3Rpb24gPSBzZWxlY3RlZEl0ZW1zPy5jaGVja3BvaW50RGV0YWlscz8ubGVuZ3RoID8/IDA7XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnBhc3NpbmdNYXJrcyA9IHNlbGVjdGVkSXRlbXM/LnJlcXVpcmVkUG9pbnQgPz8gMDtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHRoaXMuZGlzYWJsZVNlbGVjdG9yKCk7XHJcbiAgfVxyXG5cclxuICAvL3JldHVybiB0aGUgX2lkIGZyb20gdGhlIHNlbGVjdGVkIG92ZXJzZWVyIGdyb3VwLlxyXG4gIGdldEdyb3VwT2JqZWN0SWQob3ZlcnNlZXJHcm91cD86IGFueSl7XHJcbiAgICBsZXQgb3ZlcnNlZXJHcm91cElkQXJyYXkgPSBvdmVyc2Vlckdyb3VwLm1hcCgoZWxlOiBhbnkpID0+IGVsZS5faWQpO1xyXG4gICAgcmV0dXJuIG92ZXJzZWVyR3JvdXBJZEFycmF5O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICAqIFJlbW92ZXMgdGhlIHBhcnRpY3VsYXIgZWxlbWVudCBmcm9tIHNlbGVjdGVkIGxpc3RcclxuICAgICogQHBhcmFtIHR5cGUgZGVmaW5lcyB0aGUgcGFydGljdWxhciBjYXNlXHJcbiAgICAqIEBwYXJhbSBldmVudCBob2xkcyB0aGUgaWQgb3Iga2V5IG9mIGVsZW1lbnQgdG8gYmUgcmVtb3ZlZFxyXG4gICAgKiBAcGFyYW0gcmVtb3ZlSW5kZXggY29udGFpbnMgdGhlIGluZGV4IG9mIHRoZSBlbGVtZW50IHRvIGJlIHJlbW92ZWRcclxuICAgICovXHJcbiAgcmVtb3ZlKHR5cGU6IGFueSwgZXZlbnQ6IGFueSwgcmVtb3ZlSW5kZXg/OiBhbnkpIHtcclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlICdyYyc6XHJcbiAgICAgICAgY29uc3QgcmNJbmRleCA9IHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZFJDcy5maW5kSW5kZXgoKHJjOiBhbnkpID0+IHJjLnJjX2lkID09IGV2ZW50LnJjX2lkKTtcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRSQ3Muc3BsaWNlKHJjSW5kZXgsIDEpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdhc3NpZ25lZXMnOlxyXG4gICAgICAgIGNvbnN0IGVudHJ1c3RJbmRleCA9IHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFzc2lnbmVlcy5maW5kSW5kZXgoKG93bmVyOiBhbnkpID0+IG93bmVyLmVtcGxveWVlX2lkID09IGV2ZW50LmVtcGxveWVlX2lkKTtcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBc3NpZ25lZXMuc3BsaWNlKGVudHJ1c3RJbmRleCwgMSk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoQWxsTGlzdHMoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnZ3JvdXBBc3NpZ25lZXMnOlxyXG4gICAgICAgICAgY29uc3QgZ3JvdXBJbmRleDogYW55ID0gdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkR3JvdXBBc3NpZ25lZT8uZmluZEluZGV4KChncm91cDogYW55KSA9PiBncm91cC5ncm91cF9pZCA9PSBldmVudC5ncm91cF9pZCk7XHJcbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRHcm91cEFzc2lnbmVlPy5zcGxpY2UoZ3JvdXBJbmRleCwgMSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAncmV2aWV3ZXInOlxyXG4gICAgICAgIGNvbnN0IHJldmlld2VySW5kZXggPSB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRSZXZpZXdlcnMuZmluZEluZGV4KChyZXZpZXdlcjogYW55KSA9PiByZXZpZXdlci5tZW1iZXJfaWQgPT0gZXZlbnQubWVtYmVyX2lkKTtcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRSZXZpZXdlcnMuc3BsaWNlKHJldmlld2VySW5kZXgsIDEpO1xyXG4gICAgICAgIHRoaXMucmVzZXRSZXZpZXdlckZyZXF1ZW5jeSgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdjY0VtYWlsJzpcclxuICAgICAgICBjb25zdCBvdmVyc2VlckluZGV4ID0gdGhpcy5wb2xpY3lGb3JtLkNDRW1haWwuZmluZEluZGV4KChvdmVyc2VlcjogYW55KSA9PiBvdmVyc2Vlci5lbXBsb3llZV9pZCA9PSBldmVudC5lbXBsb3llZV9pZCk7XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLkNDRW1haWwuc3BsaWNlKG92ZXJzZWVySW5kZXgsIDEpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaEFsbExpc3RzKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2NjR3JvdXBFbWFpbCc6XHJcbiAgICAgICAgY29uc3QgY2NHcm91cEluZGV4OiBhbnkgPSB0aGlzLnBvbGljeUZvcm0/LkNDR3JvdXBFbWFpbD8uZmluZEluZGV4KChncm91cDogYW55KSA9PiBncm91cD8uZ3JvdXBfaWQgPT0gZXZlbnQ/Lmdyb3VwX2lkKTtcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uQ0NHcm91cEVtYWlsPy5zcGxpY2UoY2NHcm91cEluZGV4LCAxKTtcclxuICAgICAgICB0aGlzLmNjRW1haWxPYmpJZHMgPSB0aGlzLmdldEdyb3VwT2JqZWN0SWQodGhpcy5wb2xpY3lGb3JtPy5DQ0dyb3VwRW1haWwpXHJcbiAgICAgICAgdGhpcy5yZWZyZXNoQWxsTGlzdHMoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnY2NGYWlsJzpcclxuICAgICAgICBjb25zdCBvdmVyc2Vlck5vdGlmeUluZGV4ID0gdGhpcy5wb2xpY3lGb3JtLkNDRmFpbEVtYWlsLmZpbmRJbmRleCgob3ZlcnNlZXJOOiBhbnkpID0+IG92ZXJzZWVyTi5lbXBsb3llZV9pZCA9PSBldmVudC5lbXBsb3llZV9pZCk7XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLkNDRmFpbEVtYWlsLnNwbGljZShvdmVyc2Vlck5vdGlmeUluZGV4LCAxKTtcclxuICAgICAgICB0aGlzLnJlZnJlc2hBbGxMaXN0cygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdjY0dyb3VwRmFpbEVtYWlsJzpcclxuICAgICAgICBjb25zdCBjY0ZhaWxHcm91cEluZGV4OiBhbnkgPSB0aGlzLnBvbGljeUZvcm0/LkNDRmFpbEVtYWlsR3JvdXA/LmZpbmRJbmRleCgoZ3JvdXA6IGFueSkgPT4gZ3JvdXA/Lmdyb3VwX2lkID09IGV2ZW50Py5ncm91cF9pZCk7XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLkNDRmFpbEVtYWlsR3JvdXA/LnNwbGljZShjY0ZhaWxHcm91cEluZGV4LCAxKTtcclxuICAgICAgICB0aGlzLmNjRmFpbEdyb3VwT2JqSWRzID0gdGhpcy5nZXRHcm91cE9iamVjdElkKHRoaXMucG9saWN5Rm9ybT8uQ0NGYWlsRW1haWxHcm91cClcclxuICAgICAgICB0aGlzLnJlZnJlc2hBbGxMaXN0cygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdhcHByb3ZlcnMnOlxyXG4gICAgICAgIGNvbnN0IGFwcHJvdmVyc0luZGV4ID0gdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQXBwcm92ZXJzW3JlbW92ZUluZGV4XS5hcHByb3ZlcnMuZmluZEluZGV4KChhcHByb3ZlcjogYW55KSA9PiBhcHByb3Zlci5tZW1iZXJfaWQgPT0gZXZlbnQubWVtYmVyX2lkKTtcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBcHByb3ZlcnNbcmVtb3ZlSW5kZXhdLmFwcHJvdmVycy5zcGxpY2UoYXBwcm92ZXJzSW5kZXgsIDEpO1xyXG4gICAgICAgIGlmICh0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBcHByb3ZlcnNbcmVtb3ZlSW5kZXhdLmFwcHJvdmVycy5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQXBwcm92ZXJzLnNwbGljZShyZW1vdmVJbmRleCwgMSlcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2NhdGVnb3J5JzpcclxuICAgICAgICBjb25zdCBjYXRlZ29yeUluZGV4ID0gdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQ2F0ZWdvcmllcy5maW5kSW5kZXgoKGNhdGVnb3J5OiBhbnkpID0+IGNhdGVnb3J5Lml0ZW1faWQgPT0gZXZlbnQuaXRlbV9pZCk7XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQ2F0ZWdvcmllcy5zcGxpY2UoY2F0ZWdvcnlJbmRleCwgMSk7XHJcbiAgICAgICAgY29uc3QgdGFnID0gZXZlbnQuY3VzdG9tX3RhZ3M7XHJcbiAgICAgICAgaWYgKHRhZy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICB0YWcuZm9yRWFjaCgodGFnRGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGluZGV4Q1QgPSB0aGlzLnBvbGljeUZvcm0uY3VzdG9tVGFncy5maW5kSW5kZXgoKHRhZ0VsZW1lbnQ6IGFueSkgPT4gdGFnRWxlbWVudC50YWduYW1lID09IHRhZ0RhdGEudGFnbmFtZSk7XHJcbiAgICAgICAgICAgIGlmIChpbmRleENUICE9IC0xKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5wb2xpY3lGb3JtLmN1c3RvbVRhZ3Muc3BsaWNlKGluZGV4Q1QsIDEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgb2JqZWN0SWRzID0gdGhpcy5yZXR1cm5JZHModGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQ2F0ZWdvcmllcywgJ19pZCcpXHJcbiAgICAgICAgdGhpcy5yZXNldFJldmlld2VyRnJlcXVlbmN5KCk7XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQXBwcm92ZXJzLnNwbGljZSgwLCB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBcHByb3ZlcnMubGVuZ3RoKVxyXG5cclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0gPSBPYmplY3QuYXNzaWduKHRoaXMucG9saWN5Rm9ybSk7XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkUmV2aWV3ZXJzID0gW107XHJcbiAgICAgICAgdGhpcy5nZXRBcHByb3ZlcldvcmtGbG93KG9iamVjdElkcyk7XHJcbiAgICAgICAgdGhpcy5nZXRBcHByb3ZlcnNBbmRSZXZpZXdlcnNMaXN0KG9iamVjdElkcyk7XHJcblxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdjaGVja3BvaW50cyc6XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtPy5jaGVja3BvaW50RGV0YWlscy5zcGxpY2UocmVtb3ZlSW5kZXgsIDEpO1xyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS50b3RhbFF1ZXN0aW9uIC09IDE7XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnBhc3NpbmdNYXJrcyAtPSAxO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICd3b3JrZmxvd0xldmVsJzpcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0/LnNlbGVjdGVkQXBwcm92ZXJzLnNwbGljZShyZW1vdmVJbmRleCwgMSk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgfVxyXG4gIH1cclxuICAvKipcclxuICAgICogUmVmcmVzaGVzIHRoZSBhc3NpZ25lZXMgYW5kIG92ZXJzZWVycyBsaXN0IHN1Y2ggdGhhdCBib3RoIGxpc3QgZG9lcyBub3QgY29udGFpbiB0aGUgc2FtZSB1c2VycyBiYXNlZCBvbiBzZWxlY3Rpb25cclxuICAgICovXHJcbiAgcmVmcmVzaEFsbExpc3RzKCkge1xyXG4gICAgbGV0IGFzc2lnbmVlc0lkczogYW55ID0gW107XHJcbiAgICBsZXQgcmV2aWV3ZXJzSWRzOiBhbnkgPSBbXTtcclxuICAgIGxldCBvdmVyc2VlcklkczogYW55ID0gW107XHJcbiAgICBjb25zdCBhbGxVc2VycyA9IGNsb25lRGVlcCh0aGlzLnVzZXJzTGlzdCk7XHJcbiAgICBjb25zdCBhc3NpZ25lZXMgPSBjbG9uZURlZXAodGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQXNzaWduZWVzKTtcclxuICAgIGNvbnN0IG92ZXJzZWVyTGlzdCA9IGNsb25lRGVlcCh0aGlzLnBvbGljeUZvcm0uQ0NFbWFpbCk7XHJcbiAgICBjb25zdCBub3RpZnlPdmVyc2VlcnMgPSBjbG9uZURlZXAodGhpcy5wb2xpY3lGb3JtLkNDRmFpbEVtYWlsKTtcclxuICAgIGFzc2lnbmVlcz8uZm9yRWFjaCgodXNlcjogYW55KSA9PiB7XHJcbiAgICAgIGFzc2lnbmVlc0lkcy5wdXNoKHVzZXIuZW1wbG95ZWVfaWQpO1xyXG4gICAgfSk7XHJcbiAgICBvdmVyc2Vlckxpc3Q/LmZvckVhY2goKHVzZXI6IGFueSkgPT4ge1xyXG4gICAgICBvdmVyc2Vlcklkcy5wdXNoKHVzZXIuZW1wbG95ZWVfaWQpO1xyXG4gICAgfSk7XHJcbiAgICBub3RpZnlPdmVyc2VlcnM/LmZvckVhY2goKHVzZXI6IGFueSkgPT4ge1xyXG4gICAgICBvdmVyc2Vlcklkcy5wdXNoKHVzZXIuZW1wbG95ZWVfaWQpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgYXNzaWduZWVzSWRzID0gWy4uLm5ldyBTZXQoYXNzaWduZWVzSWRzKV07XHJcbiAgICByZXZpZXdlcnNJZHMgPSBbLi4ubmV3IFNldChyZXZpZXdlcnNJZHMpXTtcclxuICAgIG92ZXJzZWVySWRzID0gWy4uLm5ldyBTZXQob3ZlcnNlZXJJZHMpXTtcclxuXHJcblxyXG4gICAgLy8gdGhpcy5hc3NpZ25vcnNMaXN0ID0gYmVoYWxmVXNlcnMuZmlsdGVyKCh1c2VyOiBhbnkpID0+ICEocmV2aWV3ZXJzSWRzLmluY2x1ZGVzKHVzZXIubWVtYmVyX2lkKSB8fCBvdmVyc2Vlcklkcy5pbmNsdWRlcyh1c2VyLm1lbWJlcl9pZCkpKTtcclxuICAgIHRoaXMuYXNzaWduZWVzTGlzdCA9IGFsbFVzZXJzLmZpbHRlcigodXNlcjogYW55KSA9PiAhKHJldmlld2Vyc0lkcy5pbmNsdWRlcyh1c2VyLmVtcGxveWVlX2lkKSB8fCBvdmVyc2Vlcklkcy5pbmNsdWRlcyh1c2VyLmVtcGxveWVlX2lkKSkpO1xyXG4gICAgaWYgKHRoaXMuZ3JvdXBFbmFibGVkKSB7XHJcbiAgICAgIGNvbnN0IHVzZXJPYmogPSB0aGlzLmFzc2lnbmVlc0xpc3RcclxuICAgICAgdXNlck9iaj8uZm9yRWFjaCgodXNlcjogYW55KSA9PiB7XHJcbiAgICAgICAgdXNlci5tZW1iZXJfaWQgPSB1c2VyLm15X21lbWJlcl9pZFxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLm93bmVybGlzdCA9IHVzZXJPYmpcclxuICAgIH1cclxuICAgIC8vIHRoaXMucmV2aWV3ZXJzTGlzdCA9IGFsbFVzZXJzLmZpbHRlcigodXNlcjogYW55KSA9PiAhKGFzc2lnbmVlc0lkcy5pbmNsdWRlcyh1c2VyLmVtcGxveWVlX2lkKSB8fCBvdmVyc2Vlcklkcy5pbmNsdWRlcyh1c2VyLmVtcGxveWVlX2lkKSkpO1xyXG4gICAgdGhpcy5vdmVyc2VlcnNMaXN0ID0gYWxsVXNlcnMuZmlsdGVyKCh1c2VyOiBhbnkpID0+ICEoYXNzaWduZWVzSWRzLmluY2x1ZGVzKHVzZXIuZW1wbG95ZWVfaWQpIHx8IHJldmlld2Vyc0lkcy5pbmNsdWRlcyh1c2VyLmVtcGxveWVlX2lkKSkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICAqIFJldHVybnMgd2hvbGUgbGlzdCBiYXNlZCBvbiBzZWxlY3RlZCBpZCdzIGZyb20gYSBwYXJ0aWN1bGFyIGxpc3QgZWxlbWVudHNcclxuICAgICogQHBhcmFtIGxpc3QgaXQgaXMgdGhlIG1haW4gbGlzdCAgd2hpY2ggY29udGFpbnMgYWxsIGVsZW1lbnRzIGxpc3RcclxuICAgICogQHBhcmFtIGtleSBjb250YWlucyBrZXkgdG8gZmlsdGVyIHNlbGVjdGVkIGxpc3QgZnJvbSB0aGUgbGlzdFxyXG4gICAgKiBAcGFyYW0gaWRzIHNlbGVjdGVkIGlkcyBhcnJheVxyXG4gICAgKi9cclxuICBzZXRMaXN0KGxpc3Q6IGFueVtdLCBpZHM6IGFueVtdLCBrZXk6IHN0cmluZykge1xyXG4gICAgY29uc3QgZGF0YTogYW55ID0gW107XHJcbiAgICBpZHMuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IGluZGV4ID0gbGlzdC5maW5kSW5kZXgoKGxpc3RFbGVtZW50OiBhbnkpID0+IGxpc3RFbGVtZW50W2tleV0gPT0gZWxlbWVudCk7XHJcbiAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcclxuICAgICAgICBkYXRhLnB1c2gobGlzdFtpbmRleF0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBkYXRhO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICAqIFJldHVybnMgaWQncyBmcm9tIGEgcGFydGljdWxhciBsaXN0IGVsZW1lbnRzXHJcbiAgICAqIEBwYXJhbSBsaXN0IGFjdHVhbCBzZWxlY3RlZCBsaXN0XHJcbiAgICAqIEBwYXJhbSBrZXkgY29udGFpbnMga2V5IHRvIGV4dHJhY3QgaWQgZnJvbSB0aGUgbGlzdFxyXG4gICAgKi9cclxuICByZXR1cm5JZHMobGlzdDogYW55W10sIGtleTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gbGlzdC5tYXAoZWxlID0+IHsgaWYgKGVsZVtrZXldKSB7IHJldHVybiBlbGVba2V5XTsgfSB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAgKiBTZXRzIHRoZSByZXZpZXdlciB0eXBlIGluIGFwcHJvdmFsIHdvcmtmbG93XHJcbiAgICAqIEBwYXJhbSBldmVudCBjb250YWlucyBzZWxlY3RlZCByZXZpZXdlciB0eXBlXHJcbiAgICAqL1xyXG4gIHJldmlld2VyVHlwZUNoYW5nZShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLndvcmtmbG93VHlwZSA9IGV2ZW50O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiBTZXRzIGZyZXF1ZW5jeSBpbiBlZGl0ICBtb2RlXHJcbiAgKi9cclxuICBmcmVxdWVuY3lEYXRhUG9wdWxhdGlvbihldmVudDogYW55KSB7IC8vbmVlZHMgdG8gZGlzY3VzcyB3aXRoIGJhY2tlbmQgYWJvdXQgZWRpdCBhbmQgZGVmYXVsdCB2YWx1ZXNcclxuICAgIGNvbnN0IGRhdGEgPSB7XHJcbiAgICAgIHBhdHRlcm46IGV2ZW50Py5mcmVxdWVuY3lfZGV0YWlscywgLy9cclxuICAgICAgd2luZG93OiBldmVudD8ucmVtaW5kX2RheXNfYmVmb3JlX2R1ZV9kYXRlLFxyXG4gICAgICBmYWlsZWRBZnRlcjogZXZlbnQ/Lm1hcmtfZmFpbGVkX2FmdGVyLFxyXG4gICAgICBmYWlsZWRfdGltZV91dGM6ICcnLFxyXG4gICAgICBsaWZlY3ljbGVEZXRhaWxzOiAnMDAwMC0wMC0wMH5+MCcsXHJcbiAgICAgIHRpbWVJbjI0SHI6IGV2ZW50LmZhaWxlZF90aW1lICE9ICcnID8gZXZlbnQuZmFpbGVkX3RpbWUgOiAnMjM6NTk6MDAnLFxyXG4gICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzOiAwLFxyXG4gICAgICBzdGFydEZyb206IE1hdGguZmxvb3IobmV3IERhdGUoZXZlbnQuc3RhcnREYXRlKS5nZXRUaW1lKCkgLyAxMDAwKSxcclxuICAgICAgc3RhcnREYXRlOiBcIlwiLFxyXG4gICAgICByZXBvcnRJZDogMCxcclxuICAgICAgdGltZUluMTJocjogdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLnRpbWVJbjEyKGV2ZW50LmZhaWxlZF90aW1lICE9ICcnID8gZXZlbnQuZmFpbGVkX3RpbWUgOiAnMjM6NTk6MDAnKSxcclxuICAgICAgcGxhY2Vob2xkZXI6IGV2ZW50LmZyZXF1ZW5jeV90ZXh0XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5mcmVxdWVuY3lEYXRhKGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICAqIFNldHMgdGhlIHNlbGVjdGVkIGZyZXF1ZW5jeSBkZXRhaWxzIGluIHRoZSBwb2xpY3lGb3JtXHJcbiAgICAqIEBwYXJhbSBldmVudCBjb250YWlucyBzZWxlY3RlZCBmcmVxdWVuY3kgZGV0YWlsc1xyXG4gICAgKi9cclxuICBmcmVxdWVuY3lEYXRhKGV2ZW50OiBhbnkpIHtcclxuXHJcbiAgICB0aGlzLnBvbGljeUZvcm0uZnJlcXVlbmN5X2RldGFpbHMgPSBldmVudC5wYXR0ZXJuO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLmZyZXF1ZW5jeV90ZXh0ID0gZXZlbnQucGxhY2Vob2xkZXIsXHJcbiAgICB0aGlzLnBvbGljeUZvcm0ubWFya19mYWlsZWRfYWZ0ZXIgPSBldmVudC5mYWlsZWRBZnRlcjtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5yZW1pbmRfZGF5c19iZWZvcmVfZHVlX2RhdGUgPSBldmVudC53aW5kb3c7XHJcbiAgICB0aGlzLnBvbGljeUZvcm0uZmFpbGVkX3RpbWUgPSBldmVudC50aW1lSW4yNEhyXHJcblxyXG4gICAgdGhpcy5hY3RpdmF0ZVNlbGVjdG9yKCdmcmVxdWVuY3knLCBmYWxzZSk7XHJcbiAgICBjb25zdCBwYXlsb2FkID0ge1xyXG4gICAgICBmcmVxdWVuY3lfZGV0YWlsczogZXZlbnQucGF0dGVybixcclxuICAgICAgZnJlcXVlbmN5X3RpbWU6IGV2ZW50LnRpbWVJbjEyaHIsXHJcbiAgICAgIHJlbWluZGVyX2JlZm9yZV9kYXlzOiBldmVudC53aW5kb3csXHJcbiAgICAgIGZhaWxlZF9hZnRlcl9kYXlzOiBldmVudC5mYWlsZWRBZnRlcixcclxuICAgICAgbGlmZWN5Y2xlX2RldGFpbHM6IGV2ZW50LmxpZmVjeWNsZURldGFpbHMsXHJcbiAgICAgIHN0YXJ0X29mX2RheV91dGM6IGV2ZW50LnN0YXJ0RnJvbSxcclxuICAgICAgb25fY29tcGxldGlvbl9vZjogW2V2ZW50LnJlcG9ydElkXSxcclxuICAgICAgZG9tX3V0YzogTWF0aC5mbG9vcihEYXRlLm5vdygpIC8gMTAwMCksXHJcbiAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXM6IGV2ZW50LmNvbnRpbnVvdXNfZmFpbGVkX2RheXMsXHJcbiAgICAgIHBsYWNlaG9sZGVyOiBldmVudC5wbGFjZWhvbGRlclxyXG4gICAgfTtcclxuICAgIHRoaXMuZnJlcXVlbmN5UG9wdWxhdGlvbihwYXlsb2FkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFBvcHVsYXRlcyB0aGUgZnJlcXVlbmN5IGZpZWxkIHdpdGggc2VsZWN0ZWQgZGF0YSBmcm9tIGZyZXF1ZW5jeSBjb21wb25lbnRcclxuICAgKiBAcGFyYW0gZXZlbnQgY29udGFpbnMgc2VsZWN0ZWQgZnJlcXVlbmN5IGRldGFpbHNcclxuICAgKi9cclxuICBmcmVxdWVuY3lQb3B1bGF0aW9uKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5wYXR0ZXJuID0gZXZlbnQ/LmZyZXF1ZW5jeV9kZXRhaWxzO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLmZhaWxlZFRpbWUgPSBldmVudD8uZnJlcXVlbmN5X3RpbWU7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMud2luZG93ID0gZXZlbnQ/LnJlbWluZGVyX2JlZm9yZV9kYXlzO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLmZhaWxlZCA9IGV2ZW50Py5mYWlsZWRfYWZ0ZXJfZGF5cztcclxuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5saWZlY3ljbGUgPSBldmVudD8ubGlmZWN5Y2xlX2RldGFpbHM7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMuc3RhcnREYXRlID0gZXZlbnQ/LnN0YXJ0X29mX2RheV91dGM7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMuc2VsZWN0ZWRSZXBvcnQgPSBldmVudD8ub25fY29tcGxldGlvbl9vZlswXSA/PyAwO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLmRhdGVPZk1vZGlmaWVkID0gZXZlbnQ/LmRvbV91dGM7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMuY29udGludW91c19mYWlsZWRfZGF5cyA9IDM7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID0gKGV2ZW50Py5wbGFjZWhvbGRlcikgPyBldmVudC5wbGFjZWhvbGRlciA6ICdIb3cgb2Z0ZW4gZG9lcyB0aGlzIHBvbGljeSBuZWVkIHRvIGJlIGF0dGVzdGVkPyc7XHJcbiAgfVxyXG5cclxuXHJcbiAgcmV2aWV3ZXJGcmVxdWVuY3lEYXRhUG9wdWxhdGlvbihldmVudDogYW55KSB7IC8vbmVlZHMgdG8gZGlzY3VzcyB3aXRoIGJhY2tlbmQgYWJvdXQgZWRpdCBhbmQgZGVmYXVsdCB2YWx1ZXNcclxuICAgIGNvbnN0IGRhdGEgPSB7XHJcbiAgICAgIHBhdHRlcm46IGV2ZW50Py5yZXZpZXdfZnJlcXVlbmN5X2RldGFpbHMsIC8vXHJcbiAgICAgIHdpbmRvdzogZXZlbnQ/LnJldmlld19yZW1pbmRfZGF5c19iZWZvcmVfZHVlX2RhdGUsXHJcbiAgICAgIGZhaWxlZEFmdGVyOiBldmVudD8ucmV2aWV3RmFpbGVkQWZ0ZXIsXHJcbiAgICAgIGZhaWxlZF90aW1lX3V0YzogJycsXHJcbiAgICAgIGxpZmVjeWNsZURldGFpbHM6ICcwMDAwLTAwLTAwfn4wJyxcclxuICAgICAgdGltZUluMjRIcjogZXZlbnQucmV2aWV3RmFpbGVkVGltZSAhPSAnJyA/IGV2ZW50LnJldmlld0ZhaWxlZFRpbWUgOiAnMjM6NTk6MDAnLFxyXG4gICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzOiAwLFxyXG4gICAgICBzdGFydEZyb206IE1hdGguZmxvb3IobmV3IERhdGUoZXZlbnQuc3RhcnREYXRlKS5nZXRUaW1lKCkgLyAxMDAwKSxcclxuICAgICAgc3RhcnREYXRlOiBcIlwiLFxyXG4gICAgICByZXBvcnRJZDogMCxcclxuICAgICAgdGltZUluMTJocjogdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLnRpbWVJbjEyKGV2ZW50LnJldmlld0ZhaWxlZFRpbWUgIT0gJycgPyBldmVudC5yZXZpZXdGYWlsZWRUaW1lIDogJzIzOjU5OjAwJyksXHJcbiAgICAgIHBsYWNlaG9sZGVyOiBldmVudC5yZXZpZXdmcmVxdWVuY3lEZXRhaWxzXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5yZXZpZXdlckZyZXF1ZW5jeURhdGEoZGF0YSk7XHJcbiAgfVxyXG5cclxuICByZXNldFJldmlld2VyRnJlcXVlbmN5KCkge1xyXG4gICAgdGhpcy5yZXZpZXdlckZyZXF1ZW5jeURldGFpbHMgPSB7XHJcbiAgICAgIHBhdHRlcm46ICcnLFxyXG4gICAgICBub3RpZmljYXRpb25QZW5kaW5nOiAwLFxyXG4gICAgICBkYXRlT2ZNb2RpZmllZDogMCxcclxuICAgICAgZGVhY3RpdmF0aW9uVmFsdWU6IDAsXHJcbiAgICAgIHNlbGVjdGVkUmVwb3J0OiAwLFxyXG4gICAgICBsaWZlY3ljbGU6ICcwMDAwLTAwLTAwfn4wJyxcclxuICAgICAgc3RhcnREYXRlOiBNYXRoLmZsb29yKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCksXHJcbiAgICAgIHN0YXJ0T25UaGVEYXk6IE1hdGguZmxvb3IobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKSxcclxuICAgICAgd2luZG93OiAwLFxyXG4gICAgICBmYWlsZWQ6IDAsXHJcbiAgICAgIHRpbWU6ICcxMTo1OSBwbScsXHJcbiAgICAgIGZhaWxlZFRpbWU6ICcnLFxyXG4gICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzOiAzXHJcbiAgICB9O1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLnJldmlld0ZhaWxlZEFmdGVyID0gMDtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5yZXZpZXdfZnJlcXVlbmN5X2RldGFpbHMgPSAnJztcclxuICAgIHRoaXMucG9saWN5Rm9ybS5yZXZpZXdfZnJlcXVlbmN5X3R5cGUgPSAnJztcclxuICAgIHRoaXMucG9saWN5Rm9ybS5yZXZpZXdfcmVtaW5kX2RheXNfYmVmb3JlX2R1ZV9kYXRlID0gMDtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5yZXZpZXdGYWlsZWRUaW1lID0gJzIzOjU5OjAwJztcclxuICAgIHRoaXMucmV2aWV3ZXJGcmVxdWVuY3lQbGFjZWhvbGRlciA9ICdXaGVuIGRvZXMgdGhpcyBwb2xpY3kgbmVlZCB0byBiZSByZXZpZXdlZCA/JztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAgKiBTZXRzIHRoZSBzZWxlY3RlZCByZXZpZXdlciBmcmVxdWVuY3kgZGV0YWlscyBpbiB0aGUgcG9saWN5Rm9ybVxyXG4gICAgKiBAcGFyYW0gZXZlbnQgY29udGFpbnMgc2VsZWN0ZWQgZnJlcXVlbmN5IGRldGFpbHNcclxuICAgICovXHJcbiAgcmV2aWV3ZXJGcmVxdWVuY3lEYXRhKGV2ZW50OiBhbnkpIHtcclxuXHJcbiAgICB0aGlzLnBvbGljeUZvcm0ucmV2aWV3RmFpbGVkQWZ0ZXIgPSBldmVudC5mYWlsZWRBZnRlcjtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5yZXZpZXdfZnJlcXVlbmN5X2RldGFpbHMgPSBldmVudC5wYXR0ZXJuO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLnJldmlld19mcmVxdWVuY3lfdHlwZSA9IGV2ZW50LnBhdHRlcm4uc3BsaXQoJ34nKVswXTtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5yZXZpZXdfcmVtaW5kX2RheXNfYmVmb3JlX2R1ZV9kYXRlID0gZXZlbnQud2luZG93O1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLnJldmlld0ZhaWxlZFRpbWUgPSBldmVudC50aW1lSW4yNEhyXHJcblxyXG4gICAgdGhpcy5hY3RpdmF0ZVNlbGVjdG9yKCdyZXZpZXdlckZyZXF1ZW5jeScsIGZhbHNlKTtcclxuICAgIGNvbnN0IHBheWxvYWQgPSB7XHJcbiAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzOiBldmVudC5wYXR0ZXJuLFxyXG4gICAgICBmcmVxdWVuY3lfdGltZTogZXZlbnQudGltZUluMTJocixcclxuICAgICAgcmVtaW5kZXJfYmVmb3JlX2RheXM6IGV2ZW50LndpbmRvdyxcclxuICAgICAgZmFpbGVkX2FmdGVyX2RheXM6IGV2ZW50LmZhaWxlZEFmdGVyLFxyXG4gICAgICBsaWZlY3ljbGVfZGV0YWlsczogZXZlbnQubGlmZWN5Y2xlRGV0YWlscyxcclxuICAgICAgc3RhcnRfb2ZfZGF5X3V0YzogZXZlbnQuc3RhcnRGcm9tLFxyXG4gICAgICBvbl9jb21wbGV0aW9uX29mOiBbZXZlbnQucmVwb3J0SWRdLFxyXG4gICAgICBkb21fdXRjOiBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKSxcclxuICAgICAgY29udGludW91c19mYWlsZWRfZGF5czogZXZlbnQuY29udGludW91c19mYWlsZWRfZGF5cyxcclxuICAgICAgcGxhY2Vob2xkZXI6IGV2ZW50LnBsYWNlaG9sZGVyXHJcbiAgICB9O1xyXG4gICAgdGhpcy5yZXZpZXdlckZyZXF1ZW5jeVBvcHVsYXRpb24ocGF5bG9hZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgICogUG9wdWxhdGVzIHRoZSByZXZpZXdlciBmcmVxdWVuY3kgZmllbGQgd2l0aCBzZWxlY3RlZCBkYXRhIGZyb20gZnJlcXVlbmN5IGNvbXBvbmVudFxyXG4gICAgKiBAcGFyYW0gZXZlbnQgY29udGFpbnMgc2VsZWN0ZWQgZnJlcXVlbmN5IGRldGFpbHNcclxuICAgICovXHJcbiAgcmV2aWV3ZXJGcmVxdWVuY3lQb3B1bGF0aW9uKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMucmV2aWV3ZXJGcmVxdWVuY3lEZXRhaWxzLnBhdHRlcm4gPSBldmVudD8uZnJlcXVlbmN5X2RldGFpbHM7XHJcbiAgICB0aGlzLnJldmlld2VyRnJlcXVlbmN5RGV0YWlscy5mYWlsZWRUaW1lID0gZXZlbnQ/LmZyZXF1ZW5jeV90aW1lO1xyXG4gICAgdGhpcy5yZXZpZXdlckZyZXF1ZW5jeURldGFpbHMud2luZG93ID0gZXZlbnQ/LnJlbWluZGVyX2JlZm9yZV9kYXlzO1xyXG4gICAgdGhpcy5yZXZpZXdlckZyZXF1ZW5jeURldGFpbHMuZmFpbGVkID0gZXZlbnQ/LmZhaWxlZF9hZnRlcl9kYXlzO1xyXG4gICAgdGhpcy5yZXZpZXdlckZyZXF1ZW5jeURldGFpbHMubGlmZWN5Y2xlID0gZXZlbnQ/LmxpZmVjeWNsZV9kZXRhaWxzO1xyXG4gICAgdGhpcy5yZXZpZXdlckZyZXF1ZW5jeURldGFpbHMuc3RhcnREYXRlID0gZXZlbnQ/LnN0YXJ0X29mX2RheV91dGM7XHJcbiAgICB0aGlzLnJldmlld2VyRnJlcXVlbmN5RGV0YWlscy5zZWxlY3RlZFJlcG9ydCA9IGV2ZW50Py5vbl9jb21wbGV0aW9uX29mWzBdID8/IDA7XHJcbiAgICB0aGlzLnJldmlld2VyRnJlcXVlbmN5RGV0YWlscy5kYXRlT2ZNb2RpZmllZCA9IGV2ZW50Py5kb21fdXRjO1xyXG4gICAgdGhpcy5yZXZpZXdlckZyZXF1ZW5jeURldGFpbHMuY29udGludW91c19mYWlsZWRfZGF5cyA9IDM7XHJcbiAgICB0aGlzLnJldmlld2VyRnJlcXVlbmN5UGxhY2Vob2xkZXIgPSAoZXZlbnQ/LnBsYWNlaG9sZGVyKSA/IGV2ZW50LnBsYWNlaG9sZGVyIDogJ1doZW4gZG9lcyB0aGlzIHBvbGljeSBuZWVkIHRvIGJlIHJldmlld2VkID8nO1xyXG5cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAgKiBWYWxpZGF0ZXMgdGhlIGRhdGEgc3VibWl0dGVkIG9uIGNyZWF0ZSBwb2xpY3kgZm9ybVxyXG4gICAgKi9cclxuICB2YWxpZGF0ZVBvbGljeSgpIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnN1Ym1pdHRlZCA9IHRydWU7XHJcblxyXG4gICAgfSwgMTAwKTtcclxuICAgIGNvbnN0IGV2ZW50ID0gdGhpcy5wb2xpY3lGb3JtLnBvbGljeU5hbWU7XHJcbiAgICBjb25zdCByZSA9IC8mbmJzcDt8PGJyPi9nO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLnBvbGljeU5hbWUgPSBldmVudC5yZXBsYWNlKHJlLCAnJykudHJpbSgpO1xyXG5cclxuICAgIGlmICh0aGlzLnBvbGljeUZvcm0ucG9saWN5TmFtZS50cmltKCkgPT0gJydcclxuICAgICAgfHwgKCF0aGlzLnBvbGljeUZvcm0/LmZyZXF1ZW5jeV9kZXRhaWxzICYmICgoIHRoaXMucG9saWN5Rm9ybT8uc2VsZWN0ZWRBc3NpZ25lZXM/Lmxlbmd0aCA+IDAgJiYgIXRoaXMuZ3JvdXBFbmFibGVkKSB8fCAoKHRoaXMucG9saWN5Rm9ybT8uc2VsZWN0ZWRBc3NpZ25lZXM/Lmxlbmd0aCA+IDAgfHwgdGhpcy5wb2xpY3lGb3JtPy5zZWxlY3RlZEdyb3VwQXNzaWduZWU/Lmxlbmd0aCA+IDAgKSAmJiB0aGlzLmdyb3VwRW5hYmxlZCkpKVxyXG4gICAgICB8fCAodGhpcy5wb2xpY3lGb3JtPy5mcmVxdWVuY3lfZGV0YWlscyAmJiB0aGlzLnBvbGljeUZvcm0/LnNlbGVjdGVkQXNzaWduZWVzPy5sZW5ndGggPT0gMCAmJiAoIXRoaXMuZ3JvdXBFbmFibGVkICB8fCAoICB0aGlzLnBvbGljeUZvcm0/LnNlbGVjdGVkR3JvdXBBc3NpZ25lZT8ubGVuZ3RoID09IDAgJiYgdGhpcy5ncm91cEVuYWJsZWQpKSlcclxuICAgICAgfHwgKCF0aGlzLnBvbGljeUZvcm0ucmV2aWV3X2ZyZXF1ZW5jeV9kZXRhaWxzICYmIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZFJldmlld2Vycy5sZW5ndGggPiAwKVxyXG4gICAgICB8fCAodGhpcy5wb2xpY3lGb3JtLnJldmlld19mcmVxdWVuY3lfZGV0YWlscyAmJiB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRSZXZpZXdlcnMubGVuZ3RoID09IDApXHJcbiAgICAgIHx8IHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZENhdGVnb3JpZXMubGVuZ3RoID09IDAgfHxcclxuICAgICAgKHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFwcHJvdmVycy5sZW5ndGggPT0gMCAmJiB0aGlzLnBvbGljeUFwcHJvdmFsRmxhZyA9PT0gMCkgfHwgKHRoaXMuZm9ybWF0RXZpZGVuY2UgJiYgdGhpcy5mb3JtYXRFdmlkZW5jZS5uZXdMaW5rLmNvbnRhaW5zRXJyb3IpKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiBNYWtlcyBhbiBhcGkgY2FsbCB0byBjcmVhdGUgYSBwb2xpY3lcclxuICAqIEBwYXJhbSBwb2xpY3kgY29udGFpbnMgcG9saWN5Rm9ybSBkYXRhXHJcbiAgKi9cclxuICBzdWJtaXRQb2xpY3koKSB7XHJcblxyXG4gICAgdGhpcy5zdWJtaXR0ZWQgPSBmYWxzZTtcclxuICAgIGNvbnN0IHZhbGlkID0gdGhpcy52YWxpZGF0ZVBvbGljeSgpO1xyXG4gICAgaWYgKCF2YWxpZCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICB0aGlzLmxvYWRlciA9IHRydWU7XHJcbiAgICB0aGlzLnVpS2l0U2VydmljZS5pc0xvYWRlciA9IHRydWU7XHJcbiAgICBjb25zdCBwb2xpY3kgPSB0aGlzLnBvbGljeUZvcm07XHJcbiAgICBsZXQgYXBwcm92ZXJzRGF0YTogYW55ID0ge31cclxuICAgIGNvbnN0IHBvbGljeVNlbGVjdGVkQXBwcm92ZXJzID0gY2xvbmVEZWVwKHBvbGljeS5zZWxlY3RlZEFwcHJvdmVycyk7XHJcbiAgICBwb2xpY3lTZWxlY3RlZEFwcHJvdmVycy5mb3JFYWNoKChsZXZlbDogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGlmIChsZXZlbC5uYW1lID09ICdST1VORC1ST0JJTicpIHtcclxuICAgICAgICBsZXZlbC5uYW1lID0gJ1JPVU5EUk9CSU4nXHJcbiAgICAgIH0gZWxzZSBpZiAobGV2ZWwubmFtZSA9PSAnQU5ZIE9ORScpIHtcclxuICAgICAgICBsZXZlbC5uYW1lID0gJ0FOWU9ORSdcclxuICAgICAgfVxyXG4gICAgICBhcHByb3ZlcnNEYXRhWydsZXZlbCcgKyAoaW5kZXggKyAxKV0gPSB7XHJcbiAgICAgICAgYXBwcm92ZXJzOiBsZXZlbC5hcHByb3ZlcnMubWFwKChhcHByb3ZlcjogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBvYmogPSB7XHJcbiAgICAgICAgICAgIG1lbWJlcl9pZDogYXBwcm92ZXIubWVtYmVyX2lkLCBhcHByb3ZhbF9mbGFnOiBmYWxzZSwgcmVqZWN0X2ZsYWc6IGZhbHNlLCByZW1vdmVfZmxhZzogZmFsc2VcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiBvYmo7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgdHlwZTogbGV2ZWwubmFtZSxcclxuICAgICAgICBhcHByb3ZhbF9kb25lOiBmYWxzZVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBsZXQgcmV2aWV3ZXJGaWxlc0FycmF5ID0gIGNsb25lRGVlcChwb2xpY3kuZG9jdW1lbnRzQW5kTGlua3MuZm9ybWF0RmlsZXMpO1xyXG4gICAgY29uc3QgcmV2aWV3ZXJGaWxlcyA9IHJldmlld2VyRmlsZXNBcnJheS5tYXAoKGZpbGU6IGFueSkgPT4ge1xyXG4gICAgICBmaWxlLm5hbWUgPSBmaWxlLmZpbGVuYW1lO1xyXG4gICAgICBmaWxlLmZpbGVfcGF0aCA9IGZpbGUuZmlsZXBhdGhcclxuICAgICAgZmlsZS5vcmdfbmFtZSA9IGZpbGUub3JpZ2luYWxfZmlsZW5hbWVcclxuICAgICAgZGVsZXRlIGZpbGUuZmlsZW5hbWU7XHJcbiAgICAgIGRlbGV0ZSBmaWxlLmZpbGVwYXRoO1xyXG4gICAgICBkZWxldGUgZmlsZS5vcmlnaW5hbF9maWxlbmFtZTtcclxuICAgICAgZGVsZXRlIGZpbGUubGlua1NldDtcclxuICAgICAgcmV0dXJuIGZpbGU7XHJcbiAgICB9KVxyXG5cclxuICAgIGxldCBhdHRlc3RhdGlvbkZpbGVzQXJyYXkgPSBjbG9uZURlZXAocG9saWN5LmFzc29jaWF0ZWREb2N1bWVudHMuZm9ybWF0RmlsZXMpO1xyXG4gICAgY29uc3QgYXR0ZXN0YXRpb25GaWxlcyA9IGF0dGVzdGF0aW9uRmlsZXNBcnJheS5tYXAoKGVsZTogYW55KSA9PiB7XHJcbiAgICAgIGVsZS5uYW1lID0gZWxlLmZpbGVuYW1lO1xyXG4gICAgICBlbGUuZmlsZV9wYXRoID0gZWxlLmZpbGVwYXRoXHJcbiAgICAgIGVsZS5vcmlnaW5hbF9maWxlX25hbWUgPSBlbGUub3JpZ2luYWxfZmlsZW5hbWVcclxuICAgICAgZWxlLmZvbGRlcl9pZCA9IChlbGU/LmZvbGRlcl9pZCkgPyBlbGUuZm9sZGVyX2lkIDogMDtcclxuICAgICAgZWxlLnBhdGggPSAoZWxlPy5wYXRoKSA/IGVsZS5wYXRoIDogKGVsZS5maWxlcGF0aCArIGVsZS5maWxlbmFtZSk7XHJcbiAgICAgIGVsZS5pc0xpbmtTZXQgPSBlbGUubGlua1NldFxyXG4gICAgICBkZWxldGUgZWxlLmZpbGVuYW1lO1xyXG4gICAgICBkZWxldGUgZWxlLmZpbGVwYXRoO1xyXG4gICAgICBkZWxldGUgZWxlLm9yaWdpbmFsX2ZpbGVuYW1lO1xyXG4gICAgICBkZWxldGUgZWxlLmxpbmtTZXQ7XHJcbiAgICAgIGRlbGV0ZSBlbGUuZmlsZV9uYW1lO1xyXG4gICAgICByZXR1cm4gZWxlO1xyXG4gICAgfSlcclxuICAgIGNvbnN0IHJldmlld2VySUQgPSB0aGlzLnJldHVybklkcyhwb2xpY3kuc2VsZWN0ZWRSZXZpZXdlcnMsICdtZW1iZXJfaWQnKVxyXG5cclxuICAgIGNvbnN0IHBheWxvYWQgPSB7XHJcbiAgICAgIHBvbGljeV9uYW1lOiBwb2xpY3kucG9saWN5TmFtZSxcclxuICAgICAgbm90ZXM6IHBvbGljeS5wb2xpY3lOb3RlcyxcclxuICAgICAgaXNfcG9ydGFsX2VuYWJsZTogKHBvbGljeS5hdmFpbGFibGVPblBvcnRhbCkgPyAxIDogMCxcclxuICAgICAgaXNfc3VnZ2V0aW9uX2VuYWJsZTogKHBvbGljeS5hY2NlcHRTdWdnZXN0aW9ucykgPyAxIDogMCxcclxuICAgICAgY2F0ZWdvcnlfaWRfYXJyOiB0aGlzLnJldHVybklkcyhwb2xpY3kuc2VsZWN0ZWRDYXRlZ29yaWVzLCAnaXRlbV9pZCcpLFxyXG4gICAgICBhcHByb3ZlcnM6IGFwcHJvdmVyc0RhdGEsXHJcbiAgICAgIGdyb3VwX2VtcGxveWVlSWRzOiB0aGlzLnJldHVybklkcyhwb2xpY3kuc2VsZWN0ZWRBc3NpZ25lZXMsICdlbXBsb3llZV9pZCcpLnRvU3RyaW5nKCksXHJcbiAgICAgIHVzZXJncm91cF9pZHMgOiB0aGlzLnJldHVybklkcyhwb2xpY3kuc2VsZWN0ZWRHcm91cEFzc2lnbmVlLCdfaWQnKSA/PyBbXSxcclxuICAgICAgSXNfYXBwcm92YWw6IDAsIC8vbmVlZHMgdG8gY2hlY2sgaW4gZmVcclxuXHJcbiAgICAgIGFzc29jaWF0ZWRfZG9jdW1lbnRzOiBwb2xpY3kuYWRkQXNzb2NpYXRlZERvY3VtZW50cyA/IGF0dGVzdGF0aW9uRmlsZXM6W10sXHJcblxyXG4gICAgICBjdXN0b21fdGFnczogSlNPTi5zdHJpbmdpZnkocG9saWN5LmN1c3RvbVRhZ3MpLFxyXG5cclxuICAgICAgZnJlcXVlbmN5X2RldGFpbHM6IChwb2xpY3kuZnJlcXVlbmN5X2RldGFpbHMpID8gcG9saWN5LmZyZXF1ZW5jeV9kZXRhaWxzIDogJycsXHJcbiAgICAgIGZyZXF1ZW5jeV90ZXh0OiAocG9saWN5LmZyZXF1ZW5jeV9kZXRhaWxzKSA/IHBvbGljeS5mcmVxdWVuY3lfdGV4dCA6ICcnLFxyXG4gICAgICByZW1pbmRfZGF5c19iZWZvcmVfZHVlX2RhdGU6IChwb2xpY3kuZnJlcXVlbmN5X2RldGFpbHMpID8gcG9saWN5LnJlbWluZF9kYXlzX2JlZm9yZV9kdWVfZGF0ZSA6IDAsXHJcbiAgICAgIGZhaWxlZF90aW1lOiAocG9saWN5LmZyZXF1ZW5jeV9kZXRhaWxzKSA/IHBvbGljeS5mYWlsZWRfdGltZSA6ICcnLFxyXG4gICAgICBtYXJrX2ZhaWxlZF9hZnRlcjogKHBvbGljeS5mcmVxdWVuY3lfZGV0YWlscykgPyBwb2xpY3kubWFya19mYWlsZWRfYWZ0ZXIgOiAnJyxcclxuICAgICAgLy8gc3RhcnREYXRlOiBwb2xpY3kucG9saWN5RHVlRGF0ZS50b0RhdGVTdHJpbmcoKSxcclxuICAgICAgc3RhcnREYXRlOiBtb21lbnQocG9saWN5LnBvbGljeUR1ZURhdGUpLmZvcm1hdCgnZGRkIE1NTSBERCBZWVlZJyksXHJcblxyXG4gICAgICBSZXZpZXdlckF0dGFjaG1lbnRzOiAgKHBvbGljeS5hZGRSZXZpZXdlcnMgJiYgcG9saWN5LmRvY3VtZW50c0FuZExpbmtzLmZvcm1hdEZpbGVzKSA/IHJldmlld2VyRmlsZXMgOiBbXSxcclxuICAgICAgUmV2aWV3ZXJMaW5rczogKHBvbGljeS5hZGRSZXZpZXdlcnMgJiYgcG9saWN5LmRvY3VtZW50c0FuZExpbmtzLmZvcm1hdExpbmtzKSA/IHBvbGljeS5kb2N1bWVudHNBbmRMaW5rcy5mb3JtYXRMaW5rcyA6IFtdLFxyXG4gICAgICBSZXZpZXdlck1lbWJlcklkOiAocG9saWN5LmFkZFJldmlld2VycykgJiYgcmV2aWV3ZXJJRFswXT8gcmV2aWV3ZXJJRFswXSA6IDAsXHJcbiAgICAgIGlzUmV2aWV3OiAocG9saWN5LmFkZFJldmlld2VycyAmJiAoKHBvbGljeS5kb2N1bWVudHNBbmRMaW5rcy5mb3JtYXRGaWxlcykgfHwgKHBvbGljeS5kb2N1bWVudHNBbmRMaW5rcy5mb3JtYXRMaW5rcykpKSAmJiByZXZpZXdlcklEWzBdID8gMSA6IDAsXHJcblxyXG4gICAgICByZXZpZXdGYWlsZWRBZnRlcjogKHBvbGljeS5hZGRSZXZpZXdlcnMgJiYgcG9saWN5LnJldmlld19mcmVxdWVuY3lfZGV0YWlscykgPyBwb2xpY3kucmV2aWV3RmFpbGVkQWZ0ZXIgOiAwLFxyXG4gICAgICByZXZpZXdGYWlsZWRUaW1lOiAocG9saWN5LmFkZFJldmlld2VycyAmJiBwb2xpY3kucmV2aWV3X2ZyZXF1ZW5jeV9kZXRhaWxzKSA/IHBvbGljeS5yZXZpZXdGYWlsZWRUaW1lIDogJycsXHJcbiAgICAgIHJldmlld19mcmVxdWVuY3lfZGV0YWlsczogKHBvbGljeS5hZGRSZXZpZXdlcnMgJiYgcG9saWN5LnJldmlld19mcmVxdWVuY3lfZGV0YWlscykgPyBwb2xpY3kucmV2aWV3X2ZyZXF1ZW5jeV9kZXRhaWxzIDogJycsXHJcbiAgICAgIHJldmlld19mcmVxdWVuY3lfdHlwZTogKHBvbGljeS5hZGRSZXZpZXdlcnMgJiYgcG9saWN5LnJldmlld19mcmVxdWVuY3lfZGV0YWlscykgPyBwb2xpY3kucmV2aWV3X2ZyZXF1ZW5jeV90eXBlIDogJycsXHJcbiAgICAgIHJldmlld19yZW1pbmRfZGF5c19iZWZvcmVfZHVlX2RhdGU6IChwb2xpY3kuYWRkUmV2aWV3ZXJzICYmIHBvbGljeS5yZXZpZXdfZnJlcXVlbmN5X2RldGFpbHMpID8gcG9saWN5LnJldmlld19yZW1pbmRfZGF5c19iZWZvcmVfZHVlX2RhdGUgOiAwLFxyXG5cclxuICAgICAgZW50aXRpZXM6IHRoaXMucG9saWN5Rm9ybT8uYWRkUmVzcG9uc2liaWxpdHlDZW50ZXJzID8gdGhpcy5yZXR1cm5JZHMocG9saWN5LnNlbGVjdGVkUkNzLCAnaXRlbV9pZCcpLnRvU3RyaW5nKCk6XCJcIixcclxuICAgICAgcmlza19jbGFzczogcG9saWN5LnJpc2tSYXRpbmcudG9TdHJpbmcoKSxcclxuXHJcbiAgICAgIENDRmFpbEVtYWlsOnBvbGljeS5hZGRPdmVyc2VlcnMgID8gdGhpcy5yZXR1cm5JZHMocG9saWN5LkNDRmFpbEVtYWlsLCAnZW1wbG95ZWVfZW1haWwnKS50b1N0cmluZygpOlwiXCIsXHJcbiAgICAgIENDRW1haWw6IHBvbGljeS5hZGRPdmVyc2VlcnMgPyB0aGlzLnJldHVybklkcyhwb2xpY3kuQ0NFbWFpbCwgJ2VtcGxveWVlX2VtYWlsJykudG9TdHJpbmcoKTogXCJcIixcclxuXHJcbiAgICAgIGNoZWNrcG9pbnREZXRhaWxzOiAocG9saWN5LmFkZENoZWNrcG9pbnRzKSA/IHBvbGljeS5jaGVja3BvaW50RGV0YWlscyA6IFtdLFxyXG4gICAgICB0b3RhbFF1ZXN0aW9uOiAocG9saWN5LmFkZENoZWNrcG9pbnRzICYmIHBvbGljeS50b3RhbFF1ZXN0aW9uKSA/IHBvbGljeS50b3RhbFF1ZXN0aW9uIDogMCwvL1xyXG4gICAgICBwYXNzaW5nTWFya3M6IChwb2xpY3kuYWRkQ2hlY2twb2ludHMgJiYgcG9saWN5LnBhc3NpbmdNYXJrcykgPyBwb2xpY3kucGFzc2luZ01hcmtzIDogMCwvL1xyXG5cclxuICAgICAgcG9saWN5QXBwcm92YWxGbGFnOiAwLFxyXG5cclxuICAgICAgaXNfc2lnbmF0dXJlX3JlcXVpcmVkOiBwb2xpY3kucmVxdWlyZXNTaWduYXR1cmVGb3JBdHRlc3RhdGlvbiA/IDEgOiAwLFxyXG4gICAgICBjY191c2VyZ3JvdXBfaWRzOiB0aGlzLmNjRW1haWxPYmpJZHMsXHJcbiAgICAgIGNjX2ZhaWxfdXNlcmdyb3VwX2lkczogdGhpcy5jY0ZhaWxHcm91cE9iaklkcyxcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm1vZGUgPT0gJ0NSRUFURScpIHtcclxuICAgICAgdGhpcy5wb2xpY3lTZXJ2aWNlLnN1Ym1pdFBvbGljeShwYXlsb2FkKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnBvbGljeUlkID0gcmVzLl9pZDtcclxuICAgICAgICBpZiAodGhpcy5jb252ZXJ0RmlsZURhdGE/LmZpbGVOYW1lKSB7XHJcbiAgICAgICAgICB0aGlzLmxvYWRlciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmxpbmtEb2N1bWVudFdpdGhQb2xpY3kodGhpcy5jb252ZXJ0RmlsZURhdGEpXHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KHRydWUpO1xyXG4gICAgICAgIHRoaXMuc2hvd0NyZWF0ZURvY3VtZW50cyA9IHRydWU7XHJcblxyXG4gICAgICB9LFxyXG4gICAgICAgIGVyciA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuc25hY2tCYXIuc2hvdygnT09QUyEgU29tZXRoaW5nIHdlbnQgd3JvbmcgYW5kIHRoZSBwYWdlIGNvdWxkIG5vdCBiZSBsb2FkZWQuIENvdWxkIHlvdSBwbGVhc2UgdHJ5IG9uZSBtb3JlIHRpbWU/JywgJ2FsZXJ0Jyk7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm1vZGUgPT0gJ0VESVQnKSB7XHJcbiAgICAgIGlmICh0aGlzLnBvbGljeUFwcHJvdmFsRmxhZyAhPT0gMCkge1xyXG4gICAgICAgIGRlbGV0ZSBwYXlsb2FkLmFwcHJvdmVyc1xyXG4gICAgICAgIHBheWxvYWQucG9saWN5QXBwcm92YWxGbGFnID0gMlxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucG9saWN5U2VydmljZS51cGRhdGVQb2xpY3kocGF5bG9hZCwgdGhpcy5wb2xpY3lJZCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnBvbGljeUlkID0gcmVzLl9pZDtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMubmF2aWdhdGVUb0RvY3VtZW50c1NlY3Rpb24pIHtcclxuICAgICAgICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KHRydWUpO1xyXG4gICAgICAgICAgdGhpcy5zaG93Q3JlYXRlRG9jdW1lbnRzID0gdHJ1ZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5kaXNjb25uZWN0UmVmcmVzaC5lbWl0KGZhbHNlKTtcclxuICAgICAgICAgIHRoaXMuc25hY2tCYXIuc2hvdygnVGhlIHBvbGljeSBoYXMgYmVlbiB1cGRhdGVkJywgJ3N1Y2Nlc3MnKTtcclxuICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdGhpcy5iYXNlVVJMICsgJy9hbGwvcG9saWN5L3dvcmtyb29tP2lkPScgKyB0aGlzLnBvbGljeUlkXHJcbiAgICAgICAgICAvLyB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9wb2xpY3kvd29ya3Jvb20nXSwgeyBxdWVyeVBhcmFtczogeyBpZDogdGhpcy5wb2xpY3lJZCB9LCByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH0pO1xyXG4gICAgICAgICAgLy8gd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xyXG5cclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgfSxcclxuICAgICAgICBlcnIgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnNuYWNrQmFyLnNob3coJ09PUFMhIFNvbWV0aGluZyB3ZW50IHdyb25nIGFuZCB0aGUgcGFnZSBjb3VsZCBub3QgYmUgbG9hZGVkLiBDb3VsZCB5b3UgcGxlYXNlIHRyeSBvbmUgbW9yZSB0aW1lPycsICdhbGVydCcpO1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgbGlua0RvY3VtZW50V2l0aFBvbGljeShkb2N1bWVudDogYW55KSB7XHJcbiAgICBpZiAoZG9jdW1lbnQuZmlsZU5hbWUgJiYgKGRvY3VtZW50LmZpbGVFeHRlbnNpb24gPT09ICdwZGYnIHx8IGRvY3VtZW50LmZpbGVFeHRlbnNpb24gPT09ICdQREYnIHx8XHJcbiAgICAgIGRvY3VtZW50LmZpbGVFeHRlbnNpb24gPT09ICdkb2N4JyB8fCBkb2N1bWVudC5maWxlRXh0ZW5zaW9uID09PSAnRE9DWCcpKSB7XHJcbiAgICAgIHRoaXMucG9saWN5U2VydmljZS5leHRyYWN0RmlsZShkb2N1bWVudC5maWxlRXh0ZW5zaW9uLCBkb2N1bWVudC5maWxlUGF0aCwgdGhpcy5wb2xpY3lJZCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgIGlmIChyZXMubWVzc2FnZSA9PT0gJ2RvbmUnIHx8IHJlcy5jb250ZW50KSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGlmIChkb2N1bWVudC5maWxlRXh0ZW5zaW9uID09PSAnZG9jeCcgfHwgZG9jdW1lbnQuZmlsZUV4dGVuc2lvbiA9PT0gJ0RPQ1gnKSB7XHJcblxyXG4gICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL3BvbGljeS9lZGl0LXBvbGljeSddLCB7IHF1ZXJ5UGFyYW1zOiB7IGlkOiB0aGlzLnBvbGljeUlkIH0sIHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSk7XHJcblxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGRvY3VtZW50LmZpbGVFeHRlbnNpb24gPT09ICdwZGYnIHx8IGRvY3VtZW50LmZpbGVFeHRlbnNpb24gPT09ICdQREYnKSB7XHJcblxyXG4gICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL3BvbGljeS93b3Jrcm9vbSddLCB7IHF1ZXJ5UGFyYW1zOiB7IGlkOiB0aGlzLnBvbGljeUlkIH0sIHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0sIChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICAgIHRoaXMuc25hY2tCYXIuc2hvdygnT29wcyEgU29tZXRoaW5nIHdlbnQgd3JvbmcgYW5kIHdlIHdlcmUgdW5hYmxlIHRvIGNvbXBsZXRlIHRoaXMgYWN0aW9uLiBMZXRcXCdzIGdpdmUgaXQgYW5vdGhlciB0cnksIHNoYWxsIHdlPycsICdhbGVydCcpO1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc25hY2tCYXIuc2hvdygnT29wcyEgU29tZXRoaW5nIHdlbnQgd3JvbmcgYW5kIHdlIHdlcmUgdW5hYmxlIHRvIGNvbXBsZXRlIHRoaXMgYWN0aW9uLiBMZXRcXCdzIGdpdmUgaXQgYW5vdGhlciB0cnksIHNoYWxsIHdlPycsICdhbGVydCcpO1xyXG5cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAgKiBvcGVucyB0aGUgZGF0ZSBwaWNrZXIgb24gcG9saWN5IGZvcm1cclxuICAgICovXHJcbiAgb3BlbkRhdGVQaWNrZXIoKSB7XHJcbiAgICB0aGlzLmRhdGVQaWNrZXIuYXBpLm9wZW4oKTtcclxuICAgIHRoaXMuZGF0ZVBpY2tlck92ZXJsYXkgPSB0cnVlO1xyXG4gICAgLy8gdGhpcy5zZXRBY3RpdmVGaWVsZFNlbGVjdG9yKCdJU1NVRV9EQVRFX1RJTUUnLCAnSVNTVUVfREFURV9USU1FJyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIGNsb3NlcyB0aGUgZGF0ZSBwaWNrZXIgZnJvbSBwb2xpY3kgZm9ybVxyXG4gICovXHJcbiAgY2xvc2VEYXRlUGlja2VyKGV2dDogYW55KSB7XHJcbiAgICB0aGlzLmRhdGVQaWNrZXJPdmVybGF5ID0gZmFsc2U7XHJcblxyXG4gICAgaWYgKCFldnQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKGV2dD8uZGF0ZT8uX2QpIHtcclxuICAgICAgbGV0IG1vbnRoQXJyYXkgPSBbJ0phbicsICdGZWInLCAnTWFyJywgJ0FwcicsICdKdW4nLCAnSnVsJywgJ0F1ZycsICdTZXAnLCAnT2N0JywgJ05vdicsICdEZWMnXVxyXG4gICAgICBjb25zdCBkYXRlVmFsdWUgPSBuZXcgRGF0ZShldnQ/LmRhdGU/Ll9kKS5nZXREYXRlKCk7XHJcbiAgICAgIGNvbnN0IG1vbnRoVmFsdWUgPSBtb250aEFycmF5W25ldyBEYXRlKGV2dD8uZGF0ZT8uX2QpLmdldE1vbnRoKCldO1xyXG4gICAgICBjb25zdCB5ZWFyVmFsdWUgPSBuZXcgRGF0ZShldnQ/LmRhdGU/Ll9kKS5nZXRGdWxsWWVhcigpO1xyXG4gICAgICBjb25zdCBkYXRlU3RyID0gYCR7ZGF0ZVZhbHVlfSAke21vbnRoVmFsdWV9ICR7eWVhclZhbHVlfWA7XHJcbiAgICB9XHJcbiAgICBpZiAoZXZ0Py5kYXRlPy5fZCkge1xyXG4gICAgICB0aGlzLnBvbGljeUZvcm0ucG9saWN5RHVlRGF0ZSA9IGV2dD8uZGF0ZT8uX2Q7XHJcbiAgICB9XHJcbiAgICB0aGlzLmRhdGVQaWNrZXIuYXBpLmNsb3NlKCk7XHJcbiAgfVxyXG4gIGVkaXRQb2xpY3lGcm9tRG9jdW1lbnRzKCkge1xyXG4gICAgdGhpcy5tb2RlID0gJ0VESVQnO1xyXG4gICAgdGhpcy5zaGlmdFRvRWRpdE1vZGUuZW1pdCgpXHJcbiAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdChmYWxzZSk7XHJcbiAgICB0aGlzLnNob3dDcmVhdGVEb2N1bWVudHMgPSBmYWxzZTtcclxuICAgIHRoaXMubmF2aWdhdGVUb0RvY3VtZW50c1NlY3Rpb24gPSB0cnVlO1xyXG4gICAgdGhpcy5lZGl0UG9saWN5KCk7XHJcblxyXG4gIH1cclxuXHJcbiAgY2hlY2tGb3JDcmVhdGVEb2N1bWVudHMoKSB7XHJcblxyXG4gICAgY29uc3QgZGF0YSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdzaG93Q3JlYXRlRG9jdW1lbnRzJyk7XHJcbiAgICB0aGlzLm5hdmlnYXRlVG9Eb2N1bWVudHNTZWN0aW9uID0gKGRhdGEgPT09IFwidHJ1ZVwiKSA/IHRydWUgOiBmYWxzZTtcclxuICAgIGlmICh0aGlzLm5hdmlnYXRlVG9Eb2N1bWVudHNTZWN0aW9uKSB7XHJcbiAgICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KHRydWUpO1xyXG4gICAgICB0aGlzLnNob3dDcmVhdGVEb2N1bWVudHMgPSB0cnVlO1xyXG4gICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnc2hvd0NyZWF0ZURvY3VtZW50cycpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZWRpdFBvbGljeSgpIHtcclxuICAgIHRoaXMubW9kZSA9ICdFRElUJ1xyXG5cclxuXHJcbiAgICBpZiAodGhpcy5wb2xpY3lJZCkge1xyXG4gICAgICB0aGlzLnBvbGljeVNlcnZpY2UuZWRpdFBvbGljeSh0aGlzLnBvbGljeUlkKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgZGF0YSA9IHJlc1swXTtcclxuICAgICAgICBjb25zdCBjYXRlZ29yeUlkcyA9IGRhdGEuY2F0ZWdvcnlfZGV0YWlsc19hcnIubWFwKChpZDogYW55KSA9PiBpZC5jYXRPYmpJZCk7XHJcbiAgICAgICAgdGhpcy5wb2xpY3lBcHByb3ZhbEZsYWcgPSBkYXRhLnBvbGljeUFwcHJvdmFsRmxhZztcclxuICAgICAgICB0aGlzLmdldEFwcHJvdmVyV29ya0Zsb3coY2F0ZWdvcnlJZHMpXHJcbiAgICAgICAgdGhpcy5nZXRBcHByb3ZlcnNBbmRSZXZpZXdlcnNMaXN0KGNhdGVnb3J5SWRzLCBkYXRhLmFwcHJvdmVycywgW2RhdGEuUmV2aWV3ZXJNZW1iZXJJZF0pXHJcbiAgICAgICAgdGhpcy5wb3B1bGF0ZVBvbGljeUZvcm0oZGF0YSwgY2F0ZWdvcnlJZHMpO1xyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5RGF0YVBvcHVsYXRpb24oZGF0YSlcclxuICAgICAgICB0aGlzLnJldmlld2VyRnJlcXVlbmN5RGF0YVBvcHVsYXRpb24oZGF0YSlcclxuICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcG9wdWxhdGVQb2xpY3lGb3JtKGRhdGE6IGFueSwgY2F0ZWdvcnlJZHM6IGFueSkge1xyXG4gICAgY29uc3QgcmV2aWV3ZXJGaWxlcyA9IGRhdGEuUmV2aWV3ZXJBdHRhY2htZW50cy5tYXAoKGZpbGU6IGFueSkgPT4ge1xyXG4gICAgICBmaWxlLmZpbGVuYW1lID0gZmlsZS5uYW1lXHJcbiAgICAgIGZpbGUuZmlsZXBhdGggPSBmaWxlLmZpbGVfcGF0aFxyXG4gICAgICBmaWxlLm9yaWdpbmFsX2ZpbGVuYW1lID0gZmlsZS5vcmdfbmFtZVxyXG4gICAgICBmaWxlLmZpbGVfbmFtZSA9IGZpbGUub3JnX25hbWVcclxuICAgICAgZmlsZS5saW5rU2V0ID0gJydcclxuICAgICAgZGVsZXRlIGZpbGUubmFtZVxyXG4gICAgICBkZWxldGUgZmlsZS5maWxlX3BhdGhcclxuICAgICAgZGVsZXRlIGZpbGUub3JnX25hbWVcclxuXHJcbiAgICAgIHJldHVybiBmaWxlO1xyXG4gICAgfSlcclxuICAgIGNvbnN0IGF0dGVzdGF0aW9uRmlsZXMgPSBkYXRhLmFzc29jaWF0ZWRfZG9jdW1lbnRzLm1hcCgoZWxlOiBhbnkpID0+IHtcclxuICAgICAgZWxlLmZpbGVuYW1lID0gZWxlLm5hbWVcclxuICAgICAgZWxlLmZpbGVwYXRoID0gZWxlLmZpbGVfcGF0aFxyXG4gICAgICBlbGUub3JpZ2luYWxfZmlsZW5hbWUgPSBlbGUub3JpZ2luYWxfZmlsZV9uYW1lXHJcbiAgICAgIGVsZS5maWxlX25hbWUgPSBlbGUub3JpZ2luYWxfZmlsZV9uYW1lXHJcbiAgICAgIGVsZS5saW5rU2V0ID0gZWxlLmlzTGlua1NldFxyXG4gICAgICBkZWxldGUgZWxlLm5hbWU7XHJcbiAgICAgIGRlbGV0ZSBlbGUuZmlsZV9wYXRoO1xyXG4gICAgICBkZWxldGUgZWxlLm9yaWdpbmFsX2ZpbGVfbmFtZTtcclxuICAgICAgZGVsZXRlIGVsZS5pc0xpbmtTZXQ7XHJcbiAgICAgIHJldHVybiBlbGU7XHJcbiAgICB9KVxyXG4gICAgY29uc3QgZ3JvdXBfZW1wbG95ZWVJZHMgPSBkYXRhLmdyb3VwX2VtcGxveWVlTmFtZXMubWFwKChpZDogYW55KSA9PiBpZC5lbXBsb3llZV9pZCk7XHJcbiAgICBjb25zdCBncm91cF9JZHMgPSBkYXRhPy51c2VyZ3JvdXBfaWRzPy5tYXAoKGlkOmFueSk9PiBpZCkgPz8gW11cclxuXHJcbiAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRDYXRlZ29yaWVzID0gdGhpcy5zZXRMaXN0KHRoaXMuY2F0ZWdvcnlMaXN0LCBjYXRlZ29yeUlkcywgJ19pZCcpO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLnBvbGljeU5hbWUgPSBkYXRhLnBvbGljeV9uYW1lLFxyXG4gICAgICB0aGlzLnBvbGljeUZvcm0ucG9saWN5Tm90ZXMgPSBkYXRhLm5vdGVzLFxyXG4gICAgICB0aGlzLnBvbGljeUZvcm0uY3VzdG9tVGFncyA9IChkYXRhLmN1c3RvbV90YWdzKSA/IGRhdGEuY3VzdG9tX3RhZ3MgOiBbXTtcclxuXHJcbiAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBc3NpZ25lZXMgPSAoZ3JvdXBfZW1wbG95ZWVJZHMubGVuZ3RoID4gMCkgPyB0aGlzLnNldExpc3QodGhpcy5hc3NpZ25lZXNMaXN0LCBncm91cF9lbXBsb3llZUlkcywgJ2VtcGxveWVlX2lkJykgOiBbXTsgLy9kb3VidCBpbiBuYW1lXHJcblxyXG4gICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkR3JvdXBBc3NpZ25lZSA9IChncm91cF9JZHM/Lmxlbmd0aCA+IDApID8gdGhpcy5zZXRMaXN0KHRoaXMuZ3JvdXBzTGlzdCxncm91cF9JZHMsJ19pZCcpIDogW107XHJcblxyXG4gICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkUkNzID0gKGRhdGEuZW50aXRpZXMpID8gdGhpcy5zZXRMaXN0KHRoaXMucmNMaXN0LCBkYXRhLmVudGl0aWVzLnNwbGl0KCcsJyksICdpdGVtX2lkJykgOiBbXTtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5DQ0ZhaWxFbWFpbCA9IChkYXRhLkNDRmFpbEVtYWlsKSA/IHRoaXMuc2V0TGlzdCh0aGlzLm92ZXJzZWVyc0xpc3QsIGRhdGEuQ0NGYWlsRW1haWwsICdlbXBsb3llZV9lbWFpbCcpIDogW107XHJcbiAgICB0aGlzLnBvbGljeUZvcm0uQ0NGYWlsRW1haWxHcm91cCA9IChkYXRhPy5jY19mYWlsX3VzZXJncm91cF9pZHM/Lmxlbmd0aCA+IDApID8gdGhpcy5zZXRMaXN0KHRoaXMub3ZlcnNlZXJHcm91cHNMaXN0LCBkYXRhPy5jY19mYWlsX3VzZXJncm91cF9pZHMsICdfaWQnKSA6IFtdO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLkNDRW1haWwgPSAoZGF0YS5DQ0VtYWlsKSA/IHRoaXMuc2V0TGlzdCh0aGlzLm92ZXJzZWVyc0xpc3QsIGRhdGEuQ0NFbWFpbC5zcGxpdCgnLCcpLCAnZW1wbG95ZWVfZW1haWwnKSA6IFtdO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLkNDR3JvdXBFbWFpbCA9IChkYXRhPy5jY191c2VyZ3JvdXBfaWRzPy5sZW5ndGggPiAwKSA/IHRoaXMuc2V0TGlzdCh0aGlzLm92ZXJzZWVyR3JvdXBzTGlzdCwgZGF0YT8uY2NfdXNlcmdyb3VwX2lkcywgJ19pZCcpIDogW107XHJcbiAgICB0aGlzLnBvbGljeUZvcm0uYXZhaWxhYmxlT25Qb3J0YWwgPSBkYXRhLmVuYWJsZVBvcnRhbCA/IHRydWUgOiBmYWxzZTtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5hY2NlcHRTdWdnZXN0aW9ucyA9IGRhdGEuZW5hYmxlU3VnZ2VzdGlvbiA/IHRydWUgOiBmYWxzZTtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5yZXF1aXJlc1NpZ25hdHVyZUZvckF0dGVzdGF0aW9uID0gZGF0YS5pc19zaWduYXR1cmVfcmVxdWlyZWQgPyB0cnVlIDogZmFsc2U7XHJcbiAgICB0aGlzLnBvbGljeUZvcm0ucmlza1JhdGluZyA9IChkYXRhLnJpc2tfY2xhc3MpID8gTnVtYmVyKGRhdGEucmlza19jbGFzcykgOiAxO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLmFzc29jaWF0ZWREb2N1bWVudHMgPSAoZGF0YS5hc3NvY2lhdGVkX2RvY3VtZW50cykgPyB7XHJcbiAgICAgIGZvcm1hdEZpbGVzOiBhdHRlc3RhdGlvbkZpbGVzXHJcbiAgICB9IDogeyBmb3JtYXRGaWxlczogW10gfTtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5wb2xpY3lEdWVEYXRlID0gKGRhdGEuc3RhcnREYXRlKSA/IG1vbWVudChkYXRhLnN0YXJ0RGF0ZSkgOiBtb21lbnQoKTtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5jaGVja3BvaW50RGV0YWlscyA9IChkYXRhLmNoZWNrcG9pbnRzKSA/IGRhdGEuY2hlY2twb2ludHMgOiBbXTtcclxuICAgIHRoaXMucG9saWN5Rm9ybS50b3RhbFF1ZXN0aW9uID0gKGRhdGEudG90YWxfbWFya3MpID8gZGF0YS50b3RhbF9tYXJrcyA6IDA7XHJcbiAgICB0aGlzLnBvbGljeUZvcm0ucGFzc2luZ01hcmtzID0gKGRhdGEucGFzc19tYXJrcykgPyBkYXRhLnBhc3NfbWFya3MgOiAwO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLmRvY3VtZW50c0FuZExpbmtzID0gKGRhdGEuUmV2aWV3ZXJBdHRhY2htZW50cykgPyB7XHJcbiAgICAgIGZvcm1hdEZpbGVzOiByZXZpZXdlckZpbGVzLFxyXG4gICAgICBmb3JtYXRMaW5rczogZGF0YS5SZXZpZXdlckxpbmtzLFxyXG4gICAgfSA6IHsgZm9ybWF0RmlsZXM6IFtdLCBmb3JtYXRMaW5rczogW10gfTtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5hZGRSZXNwb25zaWJpbGl0eUNlbnRlcnMgPSB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRSQ3MubGVuZ3RoID4gMCA/IHRydWUgOiBmYWxzZTtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5hZGRSZXZpZXdlcnMgPSAoZGF0YS5SZXZpZXdlck1lbWJlcklkKSA/IHRydWUgOiBmYWxzZTtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5hZGRDaGVja3BvaW50cyA9ICh0aGlzLnBvbGljeUZvcm0uY2hlY2twb2ludERldGFpbHMubGVuZ3RoID4gMCkgPyB0cnVlIDogZmFsc2U7XHJcbiAgICB0aGlzLnBvbGljeUZvcm0uYWRkT3ZlcnNlZXJzID0gKHRoaXMucG9saWN5Rm9ybT8uQ0NGYWlsRW1haWw/Lmxlbmd0aCA+IDAgfHwgdGhpcy5wb2xpY3lGb3JtPy5DQ0VtYWlsPy5sZW5ndGggPiAwIHx8IHRoaXMucG9saWN5Rm9ybT8uQ0NGYWlsRW1haWxHcm91cD8ubGVuZ3RoPjAgfHwgdGhpcy5wb2xpY3lGb3JtPy5DQ0dyb3VwRW1haWw/Lmxlbmd0aD4wKSA/IHRydWUgOiBmYWxzZTtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5hZGRBc3NvY2lhdGVkRG9jdW1lbnRzID0gZGF0YS5hc3NvY2lhdGVkX2RvY3VtZW50cy5sZW5ndGggPiAwID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgdGhpcy5jY0VtYWlsT2JqSWRzID0gKGRhdGE/LmNjX3VzZXJncm91cF9pZHM/Lmxlbmd0aCA+IDApID8gIGRhdGE/LmNjX3VzZXJncm91cF9pZHMgOiBbXTtcclxuICAgIHRoaXMuY2NGYWlsR3JvdXBPYmpJZHMgPSAoZGF0YT8uY2NfZmFpbF91c2VyZ3JvdXBfaWRzPy5sZW5ndGggPiAwKSA/ICBkYXRhPy5jY19mYWlsX3VzZXJncm91cF9pZHMgOiBbXTtcclxuICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xyXG4gICAgLy8gdGhpcy5jaGVja0ZvckNyZWF0ZURvY3VtZW50cygpO1xyXG4gICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuXHJcbiAgfVxyXG4gIGNoYW5nZU5hbWUoZXZlbnQ6c3RyaW5nKXtcclxuICAgIGxldCB0ZXh0ID0gZXZlbnQ7XHJcbiAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKC88KC4qPyk+L2dpLCcnKTtcclxuICAgIHJldHVybiB0ZXh0O1xyXG4gIH1cclxuXHJcblxyXG5cclxufVxyXG4iXX0=
|
|
1261
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctcG9saWN5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3dvcmtmbG93LXBvbGljeS93b3JrZmxvdy1wb2xpY3kuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdHLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBSTNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUV4RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDaEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEtBQUssTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUNqQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBUW5GLE1BQU0sT0FBTyx1QkFBdUI7SUFxSWxDLFlBQW9CLGFBQTRCLEVBQ3RDLFFBQXlCLEVBQ3pCLFlBQTBCLEVBQzFCLFdBQXdCLEVBQ3hCLHFCQUE0QyxFQUM1QyxNQUFjLEVBQ2QsS0FBcUIsRUFDckIsZ0JBQWtDLEVBQzFDLGdCQUFrQyxFQUMxQixTQUE0QjtRQVRsQixrQkFB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S0FBSzt1QkFDTCxLQUFLO3NCQUNMLEtBQUs7b0NBQ0wsTUFBTTt5QkFDTixTQUFTLFNBQUMsWUFBWTs2QkFDdEIsTUFBTTtnQ0FDTixNQUFNOzhCQUNOLE1BQU07OEJBQ04sS0FBSzsrQkFDTCxLQUFLOzZCQUdMLFNBQVMsU0FBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGNsb25lRGVlcCwgdW5pcUJ5IH0gZnJvbSAnbG9kYXNoJztcclxuaW1wb3J0IHsgRGF0ZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJ25nMi1kYXRlLXBpY2tlcic7XHJcbmltcG9ydCB7IEVkaXRvckNvbmZpZyB9IGZyb20gJ3Zjb21wbHktZWRpdG9yJztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uQWxlcnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2NvbmZpcm1hdGlvbi1hbGVydCc7XHJcbmltcG9ydCB7IFNuYWNrQmFyU2VydmljZSB9IGZyb20gJy4uL3VpLWtpdC9zbmFjay1iYXIvc25hY2stYmFyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQb2xpY3lGb3JtIH0gZnJvbSAnLi4vd29ya2Zsb3ctaW50ZXJmYWNlcy9jcmVhdGUtcG9saWN5LWZvcm0nO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IFBvbGljeVNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9wb2xpY3kuc2VydmljZSc7XHJcbmltcG9ydCB7IFJlc3BvbnNpYmlsaXR5U2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL3Jlc3BvbnNpYmlsaXR5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVaUtpdFNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy91aS1raXQuc2VydmljZSc7XHJcbmltcG9ydCB7IFBsYXRmb3JtTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgKiBhcyBtb21lbnQgZnJvbSAnbW9tZW50JztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEZyZXF1ZW5jeVNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWRDb21wb25lbnRzL2ZyZXF1ZW5jeS9mcmVxdWVuY3kuc2VydmljZSc7XHJcbmltcG9ydCB7IEZvcm1hdEFuZEV2aWRlbmNlQ29tcG9uZW50IH0gZnJvbSAnLi4vc2hhcmVkQ29tcG9uZW50cy9mb3JtYXQtYW5kLWV2aWRlbmNlL2Zvcm1hdC1hbmQtZXZpZGVuY2UuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXdvcmtmbG93LXBvbGljeScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3dvcmtmbG93LXBvbGljeS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vd29ya2Zsb3ctcG9saWN5LmNvbXBvbmVudC5sZXNzJywgJy4uL2Zvcm1zLmxlc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgV29ya2Zsb3dQb2xpY3lDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBPdXRwdXQoKSBwaWNrZXJDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBJbnB1dCgpIG1vZGUgPSAnQ1JFQVRFJztcclxuICBASW5wdXQoKSBwb2xpY3lJZCA9ICcnO1xyXG4gIEBJbnB1dCgpIGZlYXR1cmU6YW55O1xyXG4gIEBPdXRwdXQoKSBzaG93Q29uZmlybWF0aW9uQWxlcnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQFZpZXdDaGlsZCgnZGF0ZVBpY2tlcicpIGRhdGVQaWNrZXIhOiBEYXRlUGlja2VyQ29tcG9uZW50O1xyXG4gIEBPdXRwdXQoKSBwb3B1bGF0ZU9wdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZGlzY29ubmVjdFJlZnJlc2ggPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHNoaWZ0VG9FZGl0TW9kZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBASW5wdXQoKSBjb252ZXJ0RmlsZURhdGE6IGFueSA9IHt9XHJcbiAgQElucHV0KCkgc2VsZWN0ZWRDYXRlZ29yeSA9ICcnXHJcblxyXG5cclxuICBAVmlld0NoaWxkKCdmb3JtYXRFdmlkZW5jZScpIGZvcm1hdEV2aWRlbmNlITogRm9ybWF0QW5kRXZpZGVuY2VDb21wb25lbnQ7XHJcblxyXG5cclxuICBkZXNjcmlwdGlvbjogRWRpdG9yQ29uZmlnID0ge1xyXG4gICAgbW9kZTogJ3ByaW1lJyxcclxuICAgIGNvbG9yUGFsZXR0ZTogdHJ1ZSxcclxuICAgIGxpbms6IHRydWUsXHJcbiAgICBwbGFjZWhvbGRlcjogJ0FkZCBhIGRlc2NyaXB0aW9uIGZvciB0aGlzIHBvbGljeS4nLFxyXG4gIH07XHJcbiAgd29ya2Zsb3dUeXBlID0gJ1NFUVVFTlRJQUwnXHJcbiAgc2Nyb2xsVG9Cb3R0b20gPSBmYWxzZTtcclxuICBuYXZpZ2F0ZVRvRG9jdW1lbnRzU2VjdGlvbiA9IGZhbHNlO1xyXG5cclxuICBhY3RpdmVTZWxlY3RvciA9ICcnO1xyXG4gIHJjTGlzdDogYW55ID0gW107XHJcbiAgdXNlcnNMaXN0OiBhbnkgPSBbXTtcclxuICBhbGxBcHByb3ZlcnM6IGFueSA9IFtdO1xyXG4gIGFsbFJldmlld2VyczogYW55ID0gW107XHJcbiAgYXNzaWduZWVzTGlzdDogYW55ID0gW107XHJcbiAgb3duZXJsaXN0OmFueSA9W107XHJcbiAgcmV2aWV3ZXJzTGlzdDogYW55ID0gW107XHJcbiAgb3ZlcnNlZXJzTGlzdDogYW55ID0gW107XHJcbiAgcmNMaXN0TG9hZGVkID0gZmFsc2U7XHJcbiAgdXNlcnNMaXN0TG9hZGVkID0gZmFsc2U7XHJcbiAgY2F0ZWdvcnlMaXN0OiBhbnkgPSBbXTtcclxuICBncm91cHNMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIHdvcmtGbG93TGlzdDogYW55W10gPSBbXTtcclxuICBhcHByb3ZlcldvcmtGbG93TGlzdDogYW55W10gPSBbXTtcclxuICBzdWJtaXR0ZWQgPSBmYWxzZTtcclxuICBjY0VtYWlsT2JqSWRzOiBhbnlbXSA9IFtdO1xyXG4gIGNjRmFpbEdyb3VwT2JqSWRzOiBhbnlbXSA9IFtdO1xyXG5cclxuICBsb2FkZXIgPSBmYWxzZTtcclxuICBjYXRlZ29yaWVzTGlzdExvYWRlZCA9IGZhbHNlO1xyXG4gIGdyb3Vwc0xpc3RMb2FkZWQgPSBmYWxzZTtcclxuICBjYXRlZ29yeUNvbmZpZyA9IHtcclxuICAgIHBhbmVsVGl0bGU6ICdTZWxlY3QgQ2F0ZWdvcnknLFxyXG4gICAgZmxvYXRpbmdUZXh0U2luZ3VsYXI6ICdDYXRlZ29yeSBzZWxlY3RlZCcsXHJcbiAgICBmbG9hdGluZ1RleHRQbHVyYWw6ICdDYXRlZ29yaWVzIHNlbGVjdGVkJyxcclxuICAgIHNlYXJjaFBsYWNlaG9sZGVyOiAnU2VhcmNoIENhdGVnb3J5JyxcclxuICAgIHNlYXJjaEVuYWJsZWQ6IHRydWUsXHJcbiAgICBzZWxlY3RBbGxFbmFibGVkOiB0cnVlLFxyXG4gICAgd29ya2Zsb3c6ICdwb2xpY3knXHJcbiAgfVxyXG4gIGFwcHJvdmFsV29ya2Zsb3dDb25maWcgPSB7XHJcbiAgICBwYW5lbFRpdGxlOiAnU2VsZWN0IHVzZXIocyknLFxyXG4gICAgZmxvYXRpbmdUZXh0U2luZ3VsYXI6ICdVc2VyIHNlbGVjdGVkJyxcclxuICAgIGZsb2F0aW5nVGV4dFBsdXJhbDogJ1VzZXJzIHNlbGVjdGVkJyxcclxuICAgIHNlYXJjaFBsYWNlaG9sZGVyOiAnU2VhcmNoIFVzZXInLFxyXG4gICAgc2VhcmNoRW5hYmxlZDogdHJ1ZSxcclxuICAgIHNlbGVjdEFsbEVuYWJsZWQ6IHRydWVcclxuICB9XHJcblxyXG5cclxuICBhZGRNb3JlTGV2ZWxzID0gZmFsc2U7XHJcbiAgYXBwcm92ZXJzTGlzdEluZGV4ID0gMDtcclxuICB3b3JrZmxvd0xpc3QgPSBbJ1NFUVVFTlRJQUwnLCAnUk9VTkQtUk9CSU4nLCAnQU5ZIE9ORSddO1xyXG4gIGRhdGVQaWNrZXJPdmVybGF5ID0gZmFsc2U7XHJcbiAgZGF0ZUNvbmZpZyA9IHtcclxuICAgIGRpc2FibGVLZXlwcmVzczogdHJ1ZSxcclxuICAgIGZvcm1hdDogJ0REIE1NTSBZWVlZJyxcclxuICAgIHVuU2VsZWN0T25DbGljazogdHJ1ZSxcclxuICAgIG9wZW5PbkNsaWNrOmZhbHNlLFxyXG4gICAgb3Blbk9uRm9jdXM6ZmFsc2UsXHJcbiAgfTtcclxuICBmcmVxdWVuY3lEZXRhaWxzID0ge1xyXG4gICAgcGF0dGVybjogJycsXHJcbiAgICBub3RpZmljYXRpb25QZW5kaW5nOiAwLFxyXG4gICAgZGF0ZU9mTW9kaWZpZWQ6IDAsXHJcbiAgICBkZWFjdGl2YXRpb25WYWx1ZTogMCxcclxuICAgIHNlbGVjdGVkUmVwb3J0OiAwLFxyXG4gICAgbGlmZWN5Y2xlOiAnMDAwMC0wMC0wMH5+MCcsXHJcbiAgICBzdGFydERhdGU6IE1hdGguZmxvb3IobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKSxcclxuICAgIHN0YXJ0T25UaGVEYXk6IE1hdGguZmxvb3IobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKSxcclxuICAgIHdpbmRvdzogMCxcclxuICAgIGZhaWxlZDogMCxcclxuICAgIHRpbWU6ICcxMTo1OSBwbScsXHJcbiAgICBmYWlsZWRUaW1lOiAnJyxcclxuICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXM6IDBcclxuICB9O1xyXG4gIHJldmlld2VyRnJlcXVlbmN5RGV0YWlscyA9IHtcclxuICAgIHBhdHRlcm46ICcnLFxyXG4gICAgbm90aWZpY2F0aW9uUGVuZGluZzogMCxcclxuICAgIGRhdGVPZk1vZGlmaWVkOiAwLFxyXG4gICAgZGVhY3RpdmF0aW9uVmFsdWU6IDAsXHJcbiAgICBzZWxlY3RlZFJlcG9ydDogMCxcclxuICAgIGxpZmVjeWNsZTogJzAwMDAtMDAtMDB+fjAnLFxyXG4gICAgc3RhcnREYXRlOiBNYXRoLmZsb29yKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCksXHJcbiAgICBzdGFydE9uVGhlRGF5OiBNYXRoLmZsb29yKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCksXHJcbiAgICB3aW5kb3c6IDAsXHJcbiAgICBmYWlsZWQ6IDAsXHJcbiAgICB0aW1lOiAnMTE6NTkgcG0nLFxyXG4gICAgZmFpbGVkVGltZTogJycsXHJcbiAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzOiAzXHJcbiAgfTtcclxuICBmcmVxdWVuY3lQbGFjZWhvbGRlciA9ICdXaGF0IGlzIHRoZSBhdHRlc3RhdGlvbiBzY2hlZHVsZSBmb3IgdGhpcyBwb2xpY3k/JztcclxuICByZXZpZXdlckZyZXF1ZW5jeVBsYWNlaG9sZGVyID0gJ1doZW4gZG9lcyB0aGlzIHBvbGljeSBuZWVkIHRvIGJlIHJldmlld2VkPyc7XHJcblxyXG4gIHNpZGVTZWxlY3RvckVsZW1lbnRzID0gWydhcHByb3ZhbFdvcmtmbG93JywgJ2Fzc2lnbmVlcycsICdhcHByb3ZlcnMnLCAncmV2aWV3ZXInLFxyXG4gICAgJ2NjRW1haWwnLCAnY2NGYWlsJywgJ3JjJywgJ2NhdGVnb3J5JywgJ2ZyZXF1ZW5jeScsICdyZXZpZXdlckZyZXF1ZW5jeScsICdjaGVja3BvaW50cyddXHJcbiAgcmlza0NsYXNzaWZpY2F0aW9uID0gW1xyXG4gICAgeyBuYW1lOiAnTE9XJywgdmFsdWU6IDEsIGNsYXNzOiAnbG93JyB9LFxyXG4gICAgeyBuYW1lOiAnTE9XLU1lZGl1bScsIHZhbHVlOiAyLCBjbGFzczogJ2xvdy1tZWQnIH0sXHJcbiAgICB7IG5hbWU6ICdNZWRpdW0tSGlnaCcsIHZhbHVlOiAzLCBjbGFzczogJ21lZC1oaWdoJyB9LFxyXG4gICAgeyBuYW1lOiAnSGlnaCcsIHZhbHVlOiA0LCBjbGFzczogJ2hpZ2gnIH1cclxuICBdO1xyXG4gIHNob3dSaXNrQ2xhc3NpZmljYXRpb24gPSB0cnVlO1xyXG4gIHNob3dDcmVhdGVEb2N1bWVudHMgPSBmYWxzZTtcclxuICBvcmdhbml6YXRpb25faWQgPSAnJztcclxuICBtZW1iZXJfb2JqX2lkID0gJyc7XHJcbiAgbWVtYmVySWQgPSAwO1xyXG4gIHVzZXJJbmZvICE6IGFueTtcclxuXHJcbiAgcG9saWN5QXBwcm92YWxGbGFnID0gMDtcclxuICBiYXNlVVJMID0gJydcclxuICBncm91cEVuYWJsZWQhOiBhbnk7XHJcbiAgb3ZlcnNlZXJHcm91cHNMaXN0OiBhbnlbXSA9IFtdO1xyXG5cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwb2xpY3lTZXJ2aWNlOiBQb2xpY3lTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzbmFja0JhcjogU25hY2tCYXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB1aUtpdFNlcnZpY2U6IFVpS2l0U2VydmljZSxcclxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZXNwb25zaWJpbGl0eVNlcnZpY2U6IFJlc3BvbnNpYmlsaXR5U2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIHByaXZhdGUgZnJlcXVlbmN5U2VydmljZTogRnJlcXVlbmN5U2VydmljZSxcclxuICAgIHBsYXRmb3JtTG9jYXRpb246IFBsYXRmb3JtTG9jYXRpb24sXHJcbiAgICBwcml2YXRlIGNoYW5nZVJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcclxuICApIHtcclxuICAgIHRoaXMuYmFzZVVSTCA9IChwbGF0Zm9ybUxvY2F0aW9uIGFzIGFueSkubG9jYXRpb24ub3JpZ2luO1xyXG4gICAgaWYgKHRoaXMuYmFzZVVSTCA9PSBcImh0dHA6Ly9sb2NhbGhvc3Q6NDIwMFwiKSB7XHJcbiAgICAgIHRoaXMuYmFzZVVSTCA9ICdodHRwczovL2Rldi52LWNvbXBseS5jb20nXHJcbiAgICB9XHJcbiAgfVxyXG4gIHBvbGljeUZvcm06IFBvbGljeUZvcm0gPSB7XHJcbiAgICBwb2xpY3lOYW1lOiAnJyxcclxuICAgIHBvbGljeU5vdGVzOiAnJyxcclxuICAgIHNlbGVjdGVkQ2F0ZWdvcmllczogW10sXHJcbiAgICBzZWxlY3RlZEFwcHJvdmVyczogW10sXHJcbiAgICBzZWxlY3RlZEFzc2lnbmVlczogW10sIC8vZG91YnQgaW4gbmFtZVxyXG4gICAgc2VsZWN0ZWRHcm91cEFzc2lnbmVlOiBbXSxcclxuICAgIHNlbGVjdGVkUmV2aWV3ZXJzOiBbXSxcclxuXHJcbiAgICBzZWxlY3RlZFJDczogW10sXHJcbiAgICBDQ0ZhaWxFbWFpbDogW10sXHJcbiAgICBDQ0ZhaWxFbWFpbEdyb3VwOiBbXSxcclxuICAgIENDRW1haWw6IFtdLFxyXG4gICAgQ0NHcm91cEVtYWlsOiBbXSxcclxuICAgIGF2YWlsYWJsZU9uUG9ydGFsOiBmYWxzZSxcclxuICAgIGFjY2VwdFN1Z2dlc3Rpb25zOiBmYWxzZSxcclxuICAgIHJlcXVpcmVzU2lnbmF0dXJlRm9yQXR0ZXN0YXRpb246IGZhbHNlLFxyXG4gICAgcmlza1JhdGluZzogMSxcclxuICAgIGFzc29jaWF0ZWREb2N1bWVudHM6IHtcclxuICAgICAgZm9ybWF0RmlsZXM6IFtdLFxyXG4gICAgfSxcclxuICAgIHBvbGljeUR1ZURhdGU6IG1vbWVudCgpLFxyXG4gICAgY3VzdG9tVGFnczogW10sXHJcbiAgICBjaGVja3BvaW50RGV0YWlsczogW10sXHJcbiAgICB0b3RhbFF1ZXN0aW9uOiAwLFxyXG4gICAgcGFzc2luZ01hcmtzOiAwLFxyXG4gICAgZG9jdW1lbnRzQW5kTGlua3M6IHtcclxuICAgICAgZm9ybWF0RmlsZXM6IFtdLFxyXG4gICAgICBmb3JtYXRMaW5rczogW10sXHJcbiAgICB9LFxyXG4gICAgYWRkUmVzcG9uc2liaWxpdHlDZW50ZXJzOiBmYWxzZSxcclxuICAgIGFkZFJldmlld2VyczogZmFsc2UsXHJcbiAgICBhZGRDaGVja3BvaW50czogZmFsc2UsXHJcbiAgICBhZGRPdmVyc2VlcnM6IGZhbHNlLFxyXG4gICAgYWRkQXNzb2NpYXRlZERvY3VtZW50czogZmFsc2UsXHJcblxyXG4gICAgZmFpbGVkX3RpbWU6ICcnLFxyXG4gICAgZnJlcXVlbmN5X2RldGFpbHM6ICcnLFxyXG4gICAgZnJlcXVlbmN5X3RleHQ6ICcnLFxyXG4gICAgbWFya19mYWlsZWRfYWZ0ZXI6IDAsXHJcbiAgICByZW1pbmRfZGF5c19iZWZvcmVfZHVlX2RhdGU6IDAsXHJcblxyXG4gICAgcmV2aWV3RmFpbGVkQWZ0ZXI6IDAsXHJcbiAgICByZXZpZXdGYWlsZWRUaW1lOiAnJyxcclxuICAgIHJldmlld19mcmVxdWVuY3lfZGV0YWlsczogJycsXHJcbiAgICByZXZpZXdfZnJlcXVlbmN5X3R5cGU6ICcnLFxyXG4gICAgcmV2aWV3X3JlbWluZF9kYXlzX2JlZm9yZV9kdWVfZGF0ZTogMCxcclxuICB9O1xyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5ncm91cEVuYWJsZWQgPSB0aGlzLmZlYXR1cmU/LmlzRmVhdHVyZUVuYWJsZWQoXCJmZl9wb2xpY3lfZ3JvdXBzXCIpO1xyXG4gICAgdGhpcy5nZXRSQ0xpc3QoKTtcclxuICAgIHRoaXMuZ2V0VXNlcnNMaXN0KCk7XHJcbiAgICB0aGlzLmdldENhdGVnb3JpZXNMaXN0KCk7XHJcbiAgICB0aGlzLmdldEdyb3Vwc0xpc3QoKTtcclxuICAgIHRoaXMub3ZlcnNlZXJHcm91cExpc3QoKTtcclxuICAgIHRoaXMuY2hlY2tXaGV0aGVyQWxsTGlzdHNMb2FkZWQoKTtcclxuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcclxuICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0T3JnYW5pemF0aW9uRGV0YWlscygpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgaWYgKCFyZXMuZW5hYmxlX3Jpc2tjbGFzcykge1xyXG4gICAgICAgIHRoaXMuc2hvd1Jpc2tDbGFzc2lmaWNhdGlvbiA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMub3JnYW5pemF0aW9uX2lkID0gcmVzLl9pZFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLm1lbWJlcl9vYmpfaWQgPSB0aGlzLmF1dGhTZXJ2aWNlLmdldFVzZXJEZXRhaWxzKCkuX2lkO1xyXG4gICAgdGhpcy51c2VySW5mbyA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0VXNlckRldGFpbHMoKS51c2VyO1xyXG4gICAgdGhpcy5tZW1iZXJJZCA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0TWVtYmVySWQoKTtcclxuICAgIHRoaXMuY2hhbmdlUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEaXNwbGF5cyB0aGUgbGlzdGluZyBwYWdlcyB0aGUgbGVmdCBzaWRlIG9mIHBvbGljeSBmb3JtIHRvIHNldCBhbmQgZWRpdCB0aGUgZHJvcGRvd24gZmllbGRzIHZhbHVlc1xyXG4gICAqIEBwYXJhbSB0eXBlIGhvbGRzIG5hbWUgb2YgcGFydGljdWxhciBsaXN0IGlzIHRvIGJlIGRpc3BsYXllZFxyXG4gICAqIEBwYXJhbSBldmVudCBjb250YWlucyBib29sZWFuIHZhbHVlIHRvIGRpc3BsYXkgdGhlIGxpc3Qgb3Igbm90XHJcbiAgICogQHBhcmFtIHdvcmtmbG93VHlwZSBpdCBzZXRzIHRoZSBhcHByb3ZhbCB3b3JrZmxvdyB0eXBlIHdoaWxlIGVkaXRpbmcgdGhlIGFwcHJvdmFsIHdvcmtmbG93LlxyXG4gICAqL1xyXG4gIGFjdGl2YXRlU2VsZWN0b3IodHlwZTogYW55LCBldmVudDogYm9vbGVhbiwgd29ya2Zsb3dUeXBlPzogYW55KSB7XHJcbiAgICBpZiAod29ya2Zsb3dUeXBlKSB7XHJcbiAgICAgIHRoaXMud29ya2Zsb3dUeXBlID0gd29ya2Zsb3dUeXBlXHJcbiAgICB9XHJcbiAgICB0aGlzLmFjdGl2ZVNlbGVjdG9yID0gZXZlbnQgPyB0eXBlIDogJyc7XHJcbiAgICBpZiAodGhpcy5zaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyh0eXBlKSkge1xyXG4gICAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdChldmVudCk7XHJcbiAgICB9XHJcblxyXG5cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAgKiBDbG9zZXMgdGhlIGxpc3RpbmcgcGFnZXNcclxuICAgICovXHJcbiAgZGlzYWJsZVNlbGVjdG9yKCkge1xyXG4gICAgdGhpcy5hZGRNb3JlTGV2ZWxzID0gZmFsc2U7XHJcbiAgICB0aGlzLmFjdGl2ZVNlbGVjdG9yID0gJyc7XHJcbiAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdChmYWxzZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaGVzIFJlc3BvbnNpYmlsaXR5IGNlbnRlcnMgbGlzdFxyXG4gICAqL1xyXG4gIGdldFJDTGlzdCgpIHtcclxuICAgIHRoaXMucG9saWN5U2VydmljZS5nZXRSQ0xpc3QoKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgdGhpcy5yY0xpc3QgPSByZXM7XHJcbiAgICAgIHRoaXMucmNMaXN0TG9hZGVkID0gdHJ1ZTtcclxuICAgIH0sIGVyciA9PiB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgdGhpcy5yY0xpc3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmV0Y2hlcyBvcmdhbml6YXRpb24gdXNlcnMgbGlzdFxyXG4gICAqL1xyXG4gIGdldFVzZXJzTGlzdCgpIHtcclxuICAgIHRoaXMucG9saWN5U2VydmljZS5nZXRPcmdhbml6YXRpb25QZW9wbGUoKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICBpZih0aGlzLmdyb3VwRW5hYmxlZCl7XHJcbiAgICAgIHRoaXMudXNlcnNMaXN0ID0gdGhpcy51cGRhdGVNZW1iZXJJZEtleShyZXMpO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMudXNlcnNMaXN0ID0gcmVzO1xyXG4gICAgfVxyXG4gICAgdGhpcy51c2Vyc0xpc3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgfSwgZXJyID0+IHtcclxuICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICB0aGlzLnVzZXJzTGlzdExvYWRlZCA9IHRydWU7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vIHJlcGxhY2UgbWVtYmVyX2lkIHZhbHVlIHRvIG15X21lbWJlcl9pZFxyXG4gIHVwZGF0ZU1lbWJlcklkS2V5KGxpc3Q6IGFueSl7XHJcbiAgICBsZXQgdXBkYXRlZExpc3QgPSBsaXN0Lm1hcCgoZWxlOiBhbnkpID0+ICh7Li4uZWxlLCBtZW1iZXJfaWQ6IGVsZT8ubXlfbWVtYmVyX2lkfSkpO1xyXG4gICAgcmV0dXJuIHVwZGF0ZWRMaXN0XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaGVzIFBvbGljeSBDYXRlZ29yaWVzIGxpc3RcclxuICAgKi9cclxuICBnZXRDYXRlZ29yaWVzTGlzdCgpIHtcclxuICAgIHRoaXMucG9saWN5U2VydmljZS5nZXRDYXRlZ29yaWVzTGlzdCgpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5jYXRlZ29yeUxpc3QgPSByZXM7XHJcbiAgICAgIHRoaXMuY2F0ZWdvcmllc0xpc3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgfSwgZXJyID0+IHtcclxuICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICB0aGlzLmNhdGVnb3JpZXNMaXN0TG9hZGVkID0gdHJ1ZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmV0Y2hlcyBvcmdhbml6YXRpb24gdXNlcnMgZ3JvdXBzIGxpc3RcclxuICAgKi9cclxuICBnZXRHcm91cHNMaXN0KCkge1xyXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eVNlcnZpY2UuZ2V0T3JnYW5pemF0aW9uUG9saWN5R3JvdXBzKCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCBkYXRhID0gcmVzLmRhdGE7XHJcbiAgICAgIGNvbnN0IGdyb3VwczogYW55ID0gW107XHJcbiAgICAgIGRhdGE/LmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IG9iaiA9IHtcclxuICAgICAgICAgIGdyb3VwTmFtZTogZWxlbWVudC5ncm91cF9uYW1lLFxyXG4gICAgICAgICAgdXNlcklkczogZWxlbWVudC5tZW1iZXJfaWRzLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgZ3JvdXBzLnB1c2gob2JqKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuZ3JvdXBzTGlzdCA9IGdyb3VwcztcclxuICAgICAgaWYodGhpcy5ncm91cEVuYWJsZWQpe1xyXG4gICAgICAgIHRoaXMuZ3JvdXBzTGlzdCA9ZGF0YVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZ3JvdXBzTGlzdExvYWRlZCA9IHRydWU7XHJcbiAgICB9LCBlcnIgPT4ge1xyXG4gICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICAgIHRoaXMuZ3JvdXBzTGlzdExvYWRlZCA9IHRydWU7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vR2V0IHRoZSBsaXN0IG9mIG92ZXJzZWVycyBncm91cC5cclxuICBvdmVyc2Vlckdyb3VwTGlzdCgpIHtcclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlTZXJ2aWNlPy5nZXRPcmdhbml6YXRpb25PdmVyc2VlcnNHcm91cHMoKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMub3ZlcnNlZXJHcm91cHNMaXN0ID0gcmVzPy5kYXRhO1xyXG4gICAgICAgdGhpcy5ncm91cHNMaXN0TG9hZGVkID0gdHJ1ZTtcclxuICAgICAgfSwgZXJyID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICAgICAgdGhpcy5ncm91cHNMaXN0TG9hZGVkID0gdHJ1ZTtcclxuICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAgKiBTZXRzIHRoZSBhcHByb3ZlcnMgd29ya2Zsb3cgZnJvbSB0aGUgc2VsZWN0ZWQgd29ya2Zsb3cgb24gQXBwcm92ZXJzIHdvcmtmbG93IGxpc3RcclxuICAgICogQHBhcmFtIGV2ZW50IGNvbnRhaW5zIHNlbGVjdGVkIHByZWRlZmluZWQgd29ya2Zsb3dcclxuICAgICovXHJcbiAgc2VsZWN0ZWRXb3JrZmxvd0NoYW5nZShldmVudDogYW55KSB7XHJcbiAgICBpZiAoZXZlbnQgPT09IC0xKSB7XHJcbiAgICAgIC8vIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFwcHJvdmVycyA9IFtdO1xyXG4gICAgICAvLyB0aGlzLmFkZE1vcmVMZXZlbHMgPSB0cnVlXHJcbiAgICAgIC8vIHRoaXMuYWN0aXZhdGVTZWxlY3RvcignYXBwcm92ZXJzJywgdHJ1ZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgZGF0YSA9IGNsb25lRGVlcChldmVudC5hcHByb3ZhbF93b3JrZmxvdyk7XHJcbiAgICAgIGNvbnN0IG5ld0FycmF5ID0gZGF0YS5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIGl0ZW0ubmFtZSA9IGl0ZW0udHlwZVxyXG4gICAgICAgIGNvbnN0IGlkcyA9IGl0ZW0uYXBwcm92ZXJzLm1hcCgoYXBwcm92ZXI6IGFueSkgPT4gYXBwcm92ZXIubWVtYmVyX2lkKTtcclxuICAgICAgICBpdGVtLmFwcHJvdmVycyA9IHRoaXMuc2V0TGlzdCh0aGlzLmFsbEFwcHJvdmVycywgaWRzLCAnbWVtYmVyX2lkJyk7XHJcbiAgICAgICAgcmV0dXJuIGl0ZW07XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBcHByb3ZlcnMgPSBuZXdBcnJheS5maWx0ZXIoKGxldmVsOiBhbnkpID0+IGxldmVsLmFwcHJvdmVycy5sZW5ndGggPiAwKVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICogRmV0Y2hlcyBBcHByb3ZlcnMgd29ya2Zsb3cgbGlzdCBiYXNlZCBvbiBzZWxlY3RlZCBwb2xpY3kgY2F0ZWdvcmllc1xyXG4gICogQHBhcmFtIGlkIGNvbnRhaW5zIHNlbGVjdGVkIGNhdGVnb3JpZXMgaWQnc1xyXG4gICovXHJcbiAgZ2V0QXBwcm92ZXJXb3JrRmxvdyhpZDogYW55KSB7XHJcbiAgICB0aGlzLmxvYWRlciA9IHRydWU7XHJcbiAgICB0aGlzLnBvbGljeVNlcnZpY2UuZ2V0V29ya2Zsb3dMaXN0KGlkKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXM/Lmxlbmd0aCA+PSAwKSB7XHJcbiAgICAgICAgdGhpcy5hcHByb3ZlcldvcmtGbG93TGlzdCA9IHJlczsgLy8gZ2V0dGluZyBhbGwgYXBwcm92ZXIgc2F2ZWQgd29ya2Zsb3dzXHJcbiAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSwgZXJyID0+IHtcclxuICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG5cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiBGZXRjaGVzIEFwcHJvdmVycyBhbmQgcmV2aWV3ZXJzIGxpc3QgYmFzZWQgb24gc2VsZWN0ZWQgcG9saWN5IGNhdGVnb3JpZXNcclxuICAqIEBwYXJhbSBjYXRlZ29yeUlkcyBjb250YWlucyBzZWxlY3RlZCBjYXRlZ29yaWVzIGlkJ3NcclxuICAqL1xyXG4gIGdldEFwcHJvdmVyc0FuZFJldmlld2Vyc0xpc3QoY2F0ZWdvcnlJZHM6IGFueSwgYXBwcm92ZXJJZHM/OiBhbnksIHJldmlld2VySWRzPzogYW55KSB7XHJcbiAgICB0aGlzLmxvYWRlciA9IHRydWU7XHJcblxyXG4gICAgdGhpcy5wb2xpY3lTZXJ2aWNlLmdldFJldmlld2VycyhjYXRlZ29yeUlkcykuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzPy5sZW5ndGggPj0gMCkge1xyXG4gICAgICAgIHJlcy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuXHJcbiAgICAgICAgICB0aGlzLmFsbEFwcHJvdmVycyA9IHVuaXFCeSh0aGlzLmFsbEFwcHJvdmVycy5jb25jYXQoZWxlbWVudC5hbGxfYXBwcm92ZXJzKSwgJ21lbWJlcl9pZCcpO1xyXG4gICAgICAgICAgdGhpcy5hbGxSZXZpZXdlcnMgPSB1bmlxQnkoZWxlbWVudC5hbGxfYXBwcm92ZXJzLmNvbmNhdCh0aGlzLmFsbFJldmlld2VycywgZWxlbWVudC5hbGxfYXV0aG9ycyksICdtZW1iZXJfaWQnKTtcclxuXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGFwcHJvdmVySWRzKSB7XHJcbiAgICAgICAgbGV0IG9iaiA9IGFwcHJvdmVySWRzO1xyXG4gICAgICAgIGxldCBhcHByb3ZlckxldmVscyA9IFtdXHJcbiAgICAgICAgZm9yICh2YXIgaXRlbSBpbiBvYmopIHtcclxuICAgICAgICAgIGNvbnN0IGlkcyA9IG9ialtpdGVtXS5hcHByb3ZlcnMubWFwKChhcHByb3ZlcjogYW55KSA9PiBhcHByb3Zlci5tZW1iZXJfaWQpO1xyXG5cclxuICAgICAgICAgIGxldCBkYXRhID0ge1xyXG4gICAgICAgICAgICBuYW1lOiBvYmpbaXRlbV0udHlwZSxcclxuICAgICAgICAgICAgYXBwcm92ZXJzOiB0aGlzLnNldExpc3QodGhpcy5hbGxBcHByb3ZlcnMsIGlkcywgJ21lbWJlcl9pZCcpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoZGF0YS5uYW1lID09ICdST1VORFJPQklOJykge1xyXG4gICAgICAgICAgICBkYXRhLm5hbWUgPSAnUk9VTkQtUk9CSU4nXHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGRhdGEubmFtZSA9PSAnQU5ZT05FJykge1xyXG4gICAgICAgICAgICBkYXRhLm5hbWUgPSAnQU5ZIE9ORSdcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGFwcHJvdmVyTGV2ZWxzLnB1c2goZGF0YSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFwcHJvdmVycyA9IGFwcHJvdmVyTGV2ZWxzO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChyZXZpZXdlcklkcykge1xyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZFJldmlld2VycyA9IHRoaXMuc2V0TGlzdCh0aGlzLmFsbFJldmlld2VycywgcmV2aWV3ZXJJZHMsICdtZW1iZXJfaWQnKTtcclxuXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuXHJcbiAgICB9LCBlcnIgPT4ge1xyXG4gICAgICBjb25zb2xlLmVycm9yKGVycilcclxuICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKioqKioqXHJcbiAgKiBJdCBpcyB0byBwb3B1bGF0ZSBtb3JlIG9wdGlvbnMgZWxlbWVudHMgd2hpbGUgZWRpdGluZyB0aGUgcG9saWN5IGZvcm1cclxuICAqL1xyXG4gIHBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKSB7XHJcbiAgICBjb25zdCBhY3RpdmF0ZWRPcHRpb25zID0gW107XHJcbiAgICBpZiAodGhpcy5wb2xpY3lGb3JtLmFkZFJlc3BvbnNpYmlsaXR5Q2VudGVycykgeyBhY3RpdmF0ZWRPcHRpb25zLnB1c2goJ1JFU1BPTlNJQklMSVRZX0NFTlRFUicpOyB9XHJcbiAgICBpZiAodGhpcy5wb2xpY3lGb3JtLmFkZFJldmlld2VycykgeyBhY3RpdmF0ZWRPcHRpb25zLnB1c2goJ1JFVklFV0VSJyk7IH1cclxuICAgIGlmICh0aGlzLnBvbGljeUZvcm0uYWRkQ2hlY2twb2ludHMpIHsgYWN0aXZhdGVkT3B0aW9ucy5wdXNoKCdDSEVDS1BPSU5UUycpOyB9XHJcbiAgICBpZiAodGhpcy5wb2xpY3lGb3JtLmFkZE92ZXJzZWVycykgeyBhY3RpdmF0ZWRPcHRpb25zLnB1c2goJ09WRVJTRUVSJyk7IH1cclxuICAgIGlmICh0aGlzLnBvbGljeUZvcm0uYWRkQXNzb2NpYXRlZERvY3VtZW50cykgeyBhY3RpdmF0ZWRPcHRpb25zLnB1c2goJ0FTU09DSUFURURfRE9DVU1FTlRTJyk7IH1cclxuXHJcbiAgICB0aGlzLnBvcHVsYXRlT3B0aW9uLmVtaXQoYWN0aXZhdGVkT3B0aW9ucyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEl0IGlzIHRvIGFkZCBhbmQgcmVtb3ZlIHRoZSBlbGVtZW50cyBmcm9tIE1vcmUgb3B0aW9uIHRvIHRoZSBwb2xpY3kgRm9ybVxyXG4gICAqIEBwYXJhbSBldmVudCBjb250YWlucyBkZXRhaWxzIHJlbGF0ZWQgdG8gY2hlY2tlZCB2YWx1ZSwgY29kZSBwYXJ0aWN1bGFyIGVsZW1lbnRzIGZyb20gTW9yZSBvcHRpb25zXHJcbiAgICovXHJcbiAgYWRkTW9yZUluZm8oZXZlbnQ6IGFueSkge1xyXG4gICAgc3dpdGNoIChldmVudC5jb2RlKSB7XHJcbiAgICAgIGNhc2UgJ1JFU1BPTlNJQklMSVRZX0NFTlRFUic6XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLmFkZFJlc3BvbnNpYmlsaXR5Q2VudGVycyA9IGV2ZW50LmNoZWNrZWQ7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ1JFVklFV0VSJzpcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uYWRkUmV2aWV3ZXJzID0gZXZlbnQuY2hlY2tlZDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnQ0hFQ0tQT0lOVFMnOlxyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5hZGRDaGVja3BvaW50cyA9IGV2ZW50LmNoZWNrZWQ7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ09WRVJTRUVSJzpcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uYWRkT3ZlcnNlZXJzID0gZXZlbnQuY2hlY2tlZDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnQVNTT0NJQVRFRF9ET0NVTUVOVFMnOlxyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5hZGRBc3NvY2lhdGVkRG9jdW1lbnRzID0gZXZlbnQuY2hlY2tlZDtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICB9XHJcbiAgICB0aGlzLnNjcm9sbFRvQm90dG9tID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAgKiBJdCBpcyB0byBlbnN1cmUgd2hldGhlciBhbGwgcmVxdWlyZWQgbGlzdHMgb24gUG9saWN5IGZyb20gaXMgbG9hZGVkIGZyb20gdGhlIGFwaSBjYWxsIG9yIG5vdFxyXG4gICAgKi9cclxuICBjaGVja1doZXRoZXJBbGxMaXN0c0xvYWRlZCgpIHtcclxuICAgIGlmICh0aGlzLnJjTGlzdExvYWRlZCAmJiB0aGlzLnVzZXJzTGlzdExvYWRlZCAmJiB0aGlzLmNhdGVnb3JpZXNMaXN0TG9hZGVkICYmIHRoaXMuZ3JvdXBzTGlzdExvYWRlZCkge1xyXG4gICAgICB0aGlzLnJlZnJlc2hBbGxMaXN0cygpO1xyXG4gICAgICBpZiAodGhpcy5jb252ZXJ0RmlsZURhdGEgJiYgdGhpcy5jb252ZXJ0RmlsZURhdGEuZmlsZU5hbWUpIHtcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0ucG9saWN5TmFtZSA9IHRoaXMuY29udmVydEZpbGVEYXRhLmZpbGVOYW1lLnN1YnN0cmluZygwLCB0aGlzLmNvbnZlcnRGaWxlRGF0YS5maWxlTmFtZS5sYXN0SW5kZXhPZignLicpKVxyXG4gICAgICAgIGlmICh0aGlzLmNvbnZlcnRGaWxlRGF0YS5jYXRlZ29yeUlkKSB7XHJcbiAgICAgICAgICB0aGlzLnNhdmVTZWxlY3RlZExpc3QoJ2NhdGVnb3J5JywgW3RoaXMuY29udmVydEZpbGVEYXRhLmNhdGVnb3J5SWRdKVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRDYXRlZ29yeSkge1xyXG4gICAgICAgIHRoaXMuc2F2ZVNlbGVjdGVkTGlzdCgnY2F0ZWdvcnknLCBbdGhpcy5zZWxlY3RlZENhdGVnb3J5XSlcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5tb2RlID09PSAnRURJVCcpIHtcclxuICAgICAgICB0aGlzLmVkaXRQb2xpY3koKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmNoZWNrV2hldGhlckFsbExpc3RzTG9hZGVkKCk7XHJcbiAgICAgIH0sIDMwMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgICogVHJpZ2dlcnMgdGhlIGNvbmZpcm1hdGlvbiBwb3B1cCB3aGVuIGF2YWlsYWJpbGl0eSBvbiBQb2xpY3kgcG9ydGFsIHRvZ2dsZSBpbiBPTlxyXG4gICAgKiBAcGFyYW0gZXZlbnQgY29udGFpbnMgdG9nZ2xlIHZhbHVlIHdoaWNoIGlzIGFsd2F5cyB0cnVlIG9yIGZhbHNlXHJcbiAgICAqL1xyXG4gIGF2YWlsYWJpbGl0eU9uUG9ydGFsKGV2ZW50OiBhbnkpIHtcclxuXHJcbiAgICBpZiAoZXZlbnQpIHtcclxuICAgICAgY29uc3QgY29uZmlybWF0aW9uRGV0YWlsczogQ29uZmlybWF0aW9uQWxlcnQgPSB7XHJcbiAgICAgICAgaXNWaXNpYmxlOiB0cnVlLFxyXG4gICAgICAgIG1lc3NhZ2U6IGBUaGUgcG9saWNpZXMgdGhhdCB5b3UgaW50ZW5kIHRvIG1ha2UgYWNjZXNzaWJsZSB0byB0aGUgZW50aXJlIG9yZ2FuaXphdGlvbiBjYW4gYmUgYWRkZWQgdG8gdGhlIHBvbGljeSBwb3J0YWwuXHJcbiAgICAgICAgSXQgaXMgbGlrZSBhIHNoYXJlZCBjYXRhbG9nIG9mIGFsbCBhY3RpdmUgJiB1cGRhdGVkIHBvbGljaWVzIHRoYXQgYW55IGxvZ2dlZCBpbiB1c2VyIGNhbiByZWFkLyBkb3dubG9hZCBmb3IgcmVmZXJlbmNlLlxyXG4gICAgICAgIEhlbmNlLCBpZiB0aGlzIG9wdGlvbiBpcyBlbmFibGVkLCBpdCBpcyBub3QgbmVjZXNzYXJ5IGZvciB5b3UgdG8gc2V0IHVwIGFuIGF0dGVzdGF0aW9uIHNjaGVkdWxlIG9yIHNlbGVjdFxyXG4gICAgICAgIHJlYWRlcnMgdG8gYXR0ZXN0IHRoZSBwb2xpY2llcy5gLFxyXG4gICAgICAgIGFjdGlvbjogJ1BPTElDWV9QT1JUQUwnLFxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLnNob3dDb25maXJtYXRpb25BbGVydC5lbWl0KGNvbmZpcm1hdGlvbkRldGFpbHMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVjZWl2ZXMgdGhlIGlucHV0IGZyb20gdGhlIENvbmZpcm1hdGlvbiBkaWFsb2cgb2YgYXZhaWxhYmxlIG9uIFBvbGljeSBwb3J0YWxcclxuICAgKiBAcGFyYW0gZXZlbnQgY29udGFpbnMgc2VsZWN0ZWQgb3B0aW9uIGZyb20gdGhlIGNvbmZpcm1hdGlvbiBkaWFsb2cgd2hpY2ggaXMgYWx3YXlzIGVpdGhlciAnWUVTJyBvciAnTk8nXHJcbiAgICovXHJcbiAgY29uZmlybVBvbGljeVBvcnRhbChldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnBvbGljeUZvcm0uYXZhaWxhYmxlT25Qb3J0YWwgPSAoZXZlbnQgPT0gJ1lFUycpID8gdHJ1ZSA6IGZhbHNlXHJcbiAgICBpZiAoZXZlbnQgPT0gJ05PJykge1xyXG4gICAgICB0aGlzLnBvbGljeUZvcm0uYWNjZXB0U3VnZ2VzdGlvbnMgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIHBvbGljeUZvcm0gd2l0aCBzZWxlY3RlZCBlbGVtZW50cyBmcm9tIHRoZSBsaXN0aW5nLCBmcmVxdWVuY3ksIGZpbGUgdXBsb2FkIGNvbXBvbmVudHNcclxuICAgKiBAcGFyYW0gdHlwZSBkZWZpbmVzIHRoZSBwYXJ0aWN1bGFyIGZpZWxkIG9uIFBvbGljeSBmb3JtLlxyXG4gICAqIEBwYXJhbSBzZWxlY3RlZEl0ZW1zIGNvbnRhaW5zIHRoZSBsaXN0IG9mIHNlbGVjdGVkIGl0ZW1zIGZyb20gdGhlIGxpc3RcclxuICAgKi9cclxuICBzYXZlU2VsZWN0ZWRMaXN0KHR5cGU6IHN0cmluZywgc2VsZWN0ZWRJdGVtczogYW55KSB7XHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuXHJcbiAgICAgIGNhc2UgJ3JjJzpcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRSQ3MgPSB0aGlzLnNldExpc3QodGhpcy5yY0xpc3QsIHNlbGVjdGVkSXRlbXMsICdpdGVtX2lkJyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2NhdGVnb3J5JzpcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRDYXRlZ29yaWVzID0gdGhpcy5zZXRMaXN0KHRoaXMuY2F0ZWdvcnlMaXN0LCBzZWxlY3RlZEl0ZW1zLCAnX2lkJyk7XHJcbiAgICAgICAgY29uc3Qgb2JqZWN0SWRzID0gdGhpcy5yZXR1cm5JZHModGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQ2F0ZWdvcmllcywgJ19pZCcpXHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQXBwcm92ZXJzID0gW107XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkUmV2aWV3ZXJzID0gW107XHJcbiAgICAgICAgdGhpcy5yZXNldFJldmlld2VyRnJlcXVlbmN5KCk7XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLmN1c3RvbVRhZ3MgPSBbXTtcclxuICAgICAgICB0aGlzLmdldEFwcHJvdmVyV29ya0Zsb3cob2JqZWN0SWRzKTtcclxuICAgICAgICB0aGlzLmdldEFwcHJvdmVyc0FuZFJldmlld2Vyc0xpc3Qob2JqZWN0SWRzKTtcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRDYXRlZ29yaWVzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgdGFnID0gZWxlbWVudC5jdXN0b21fdGFncztcclxuICAgICAgICAgIGlmICh0YWcubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0YWcuZm9yRWFjaCgodGFnRGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnBvbGljeUZvcm0uY3VzdG9tVGFncy5maW5kSW5kZXgoKHRhZ0VsZW1lbnQ6IGFueSkgPT4gdGFnRWxlbWVudC50YWduYW1lID09IHRhZ0RhdGEudGFnbmFtZSk7XHJcbiAgICAgICAgICAgICAgaWYgKGluZGV4ID09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uY3VzdG9tVGFncy5wdXNoKHRhZ0RhdGEpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdhc3NpZ25lZXMnOlxyXG4gICAgICAgIGxldCB1c2VySWRzICxncm91cElkcztcclxuICAgICAgICBpZih0aGlzLmdyb3VwRW5hYmxlZCl7XHJcbiAgICAgICAgIHVzZXJJZHMgPSB0aGlzLnJldHVybklkcyhzZWxlY3RlZEl0ZW1zLnVzZXJzLCdtZW1iZXJfaWQnKVxyXG4gICAgICAgICBncm91cElkcyA9IHRoaXMucmV0dXJuSWRzKHNlbGVjdGVkSXRlbXMuZ3JvdXBzLCdncm91cF9pZCcpXHJcbiAgICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEdyb3VwQXNzaWduZWUgPSAgdGhpcy5zZXRMaXN0KHRoaXMuZ3JvdXBzTGlzdCwgZ3JvdXBJZHMsJ2dyb3VwX2lkJyk7XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICB1c2VySWRzID0gc2VsZWN0ZWRJdGVtc1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBc3NpZ25lZXMgPSB0aGlzLnNldExpc3QodGhpcy5hc3NpZ25lZXNMaXN0LCB1c2VySWRzLCAnbXlfbWVtYmVyX2lkJyk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoQWxsTGlzdHMoKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgJ3Jldmlld2VyJzpcclxuXHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkUmV2aWV3ZXJzID0gdGhpcy5zZXRMaXN0KHRoaXMuYWxsUmV2aWV3ZXJzLCBbc2VsZWN0ZWRJdGVtcy5tZW1iZXJfaWRdLCAnbWVtYmVyX2lkJyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2NjRW1haWwnOlxyXG4gICAgICAgIGxldCBzZWxlY3RlZFVzZXJJZHMgLHNlbGVjdGVkR3JvdXBJZHM7XHJcbiAgICAgICAgaWYodGhpcy5ncm91cEVuYWJsZWQpe1xyXG4gICAgICAgICAgc2VsZWN0ZWRVc2VySWRzID0gdGhpcy5yZXR1cm5JZHMoc2VsZWN0ZWRJdGVtcz8udXNlcnMsJ21lbWJlcl9pZCcpXHJcbiAgICAgICAgICBzZWxlY3RlZEdyb3VwSWRzID0gdGhpcy5yZXR1cm5JZHMoc2VsZWN0ZWRJdGVtcz8uZ3JvdXBzLCdncm91cF9pZCcpO1xyXG4gICAgICAgICAgdGhpcy5wb2xpY3lGb3JtLkNDR3JvdXBFbWFpbCA9ICB0aGlzLnNldExpc3QodGhpcy5vdmVyc2Vlckdyb3Vwc0xpc3QsIHNlbGVjdGVkR3JvdXBJZHMsJ2dyb3VwX2lkJyk7XHJcbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uQ0NFbWFpbCA9IHRoaXMuc2V0TGlzdCh0aGlzLnVzZXJzTGlzdCwgc2VsZWN0ZWRVc2VySWRzLCAnbXlfbWVtYmVyX2lkJyk7XHJcbiAgICAgICAgICB0aGlzLmNjRW1haWxPYmpJZHMgPSB0aGlzLmdldEdyb3VwT2JqZWN0SWQodGhpcy5wb2xpY3lGb3JtPy5DQ0dyb3VwRW1haWwpXHJcbiAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgdGhpcy5wb2xpY3lGb3JtLkNDRW1haWwgPSB0aGlzLnNldExpc3QodGhpcy51c2Vyc0xpc3QsIHNlbGVjdGVkSXRlbXMsICdlbXBsb3llZV9pZCcpO1xyXG4gICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnJlZnJlc2hBbGxMaXN0cygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdjY0ZhaWwnOlxyXG4gICAgICAgIGxldCBzZWxlY3RlZEZhaWxVc2VySWRzICxzZWxlY3RlZEZhaWxHcm91cElkcztcclxuICAgICAgICBpZih0aGlzLmdyb3VwRW5hYmxlZCl7XHJcbiAgICAgICAgICBzZWxlY3RlZEZhaWxVc2VySWRzID0gdGhpcy5yZXR1cm5JZHMoc2VsZWN0ZWRJdGVtcz8udXNlcnMsJ21lbWJlcl9pZCcpXHJcbiAgICAgICAgICBzZWxlY3RlZEZhaWxHcm91cElkcyA9IHRoaXMucmV0dXJuSWRzKHNlbGVjdGVkSXRlbXM/Lmdyb3VwcywnZ3JvdXBfaWQnKTtcclxuICAgICAgICAgIHRoaXMucG9saWN5Rm9ybS5DQ0ZhaWxFbWFpbEdyb3VwID0gIHRoaXMuc2V0TGlzdCh0aGlzLm92ZXJzZWVyR3JvdXBzTGlzdCwgc2VsZWN0ZWRGYWlsR3JvdXBJZHMsJ2dyb3VwX2lkJyk7XHJcbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uQ0NGYWlsRW1haWwgPSB0aGlzLnNldExpc3QodGhpcy51c2Vyc0xpc3QsIHNlbGVjdGVkRmFpbFVzZXJJZHMsICdteV9tZW1iZXJfaWQnKTtcclxuICAgICAgICAgIHRoaXMuY2NGYWlsR3JvdXBPYmpJZHMgPSB0aGlzLmdldEdyb3VwT2JqZWN0SWQodGhpcy5wb2xpY3lGb3JtPy5DQ0ZhaWxFbWFpbEdyb3VwKVxyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgdGhpcy5wb2xpY3lGb3JtLkNDRmFpbEVtYWlsID0gdGhpcy5zZXRMaXN0KHRoaXMudXNlcnNMaXN0LCBzZWxlY3RlZEl0ZW1zLCAnZW1wbG95ZWVfaWQnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoQWxsTGlzdHMoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnYXBwcm92ZXJzJzpcclxuICAgICAgICBjb25zdCBhcHByb3ZlcnMgPSB0aGlzLnNldExpc3QodGhpcy5hbGxBcHByb3ZlcnMsIHNlbGVjdGVkSXRlbXMsICdtZW1iZXJfaWQnKTtcclxuICAgICAgICBpZiAodGhpcy5hZGRNb3JlTGV2ZWxzKSB7XHJcbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBcHByb3ZlcnMucHVzaCh7IG5hbWU6IHRoaXMud29ya2Zsb3dUeXBlLCBhcHByb3ZlcnMgfSk7XHJcbiAgICAgICAgICB0aGlzLmFkZE1vcmVMZXZlbHMgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuZGlzYWJsZVNlbGVjdG9yKCk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFwcHJvdmVyc1t0aGlzLmFwcHJvdmVyc0xpc3RJbmRleF0gPSB7IG5hbWU6IHRoaXMud29ya2Zsb3dUeXBlLCBhcHByb3ZlcnMgfTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAncmV2aWV3ZXJfYXR0YWNobWVudHMnOlxyXG5cclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uZG9jdW1lbnRzQW5kTGlua3MuZm9ybWF0RmlsZXMgPSBzZWxlY3RlZEl0ZW1zPy5maWxlcyA/PyBbXTtcclxuXHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLmRvY3VtZW50c0FuZExpbmtzLmZvcm1hdExpbmtzID0gc2VsZWN0ZWRJdGVtcz8ubGlua3MgPz8gW107XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2Fzc29jaWF0ZWREb2N1bWVudHMnOlxyXG5cclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uYXNzb2NpYXRlZERvY3VtZW50cy5mb3JtYXRGaWxlcyA9IHNlbGVjdGVkSXRlbXM/LmZpbGVzID8/IFtdO1xyXG5cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnY2hlY2twb2ludHMnOlxyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5jaGVja3BvaW50RGV0YWlscyA9IHNlbGVjdGVkSXRlbXM/LmNoZWNrcG9pbnREZXRhaWxzID8/IFtdO1xyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS50b3RhbFF1ZXN0aW9uID0gc2VsZWN0ZWRJdGVtcz8uY2hlY2twb2ludERldGFpbHM/Lmxlbmd0aCA/PyAwO1xyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5wYXNzaW5nTWFya3MgPSBzZWxlY3RlZEl0ZW1zPy5yZXF1aXJlZFBvaW50ID8/IDA7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICB0aGlzLmRpc2FibGVTZWxlY3RvcigpO1xyXG4gIH1cclxuXHJcbiAgLy9yZXR1cm4gdGhlIF9pZCBmcm9tIHRoZSBzZWxlY3RlZCBvdmVyc2VlciBncm91cC5cclxuICBnZXRHcm91cE9iamVjdElkKG92ZXJzZWVyR3JvdXA/OiBhbnkpe1xyXG4gICAgbGV0IG92ZXJzZWVyR3JvdXBJZEFycmF5ID0gb3ZlcnNlZXJHcm91cC5tYXAoKGVsZTogYW55KSA9PiBlbGUuX2lkKTtcclxuICAgIHJldHVybiBvdmVyc2Vlckdyb3VwSWRBcnJheTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAgKiBSZW1vdmVzIHRoZSBwYXJ0aWN1bGFyIGVsZW1lbnQgZnJvbSBzZWxlY3RlZCBsaXN0XHJcbiAgICAqIEBwYXJhbSB0eXBlIGRlZmluZXMgdGhlIHBhcnRpY3VsYXIgY2FzZVxyXG4gICAgKiBAcGFyYW0gZXZlbnQgaG9sZHMgdGhlIGlkIG9yIGtleSBvZiBlbGVtZW50IHRvIGJlIHJlbW92ZWRcclxuICAgICogQHBhcmFtIHJlbW92ZUluZGV4IGNvbnRhaW5zIHRoZSBpbmRleCBvZiB0aGUgZWxlbWVudCB0byBiZSByZW1vdmVkXHJcbiAgICAqL1xyXG4gIHJlbW92ZSh0eXBlOiBhbnksIGV2ZW50OiBhbnksIHJlbW92ZUluZGV4PzogYW55KSB7XHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgY2FzZSAncmMnOlxyXG4gICAgICAgIGNvbnN0IHJjSW5kZXggPSB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRSQ3MuZmluZEluZGV4KChyYzogYW55KSA9PiByYy5yY19pZCA9PSBldmVudC5yY19pZCk7XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkUkNzLnNwbGljZShyY0luZGV4LCAxKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnYXNzaWduZWVzJzpcclxuICAgICAgICBjb25zdCBlbnRydXN0SW5kZXggPSB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBc3NpZ25lZXMuZmluZEluZGV4KChvd25lcjogYW55KSA9PiBvd25lci5lbXBsb3llZV9pZCA9PSBldmVudC5lbXBsb3llZV9pZCk7XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQXNzaWduZWVzLnNwbGljZShlbnRydXN0SW5kZXgsIDEpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaEFsbExpc3RzKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2dyb3VwQXNzaWduZWVzJzpcclxuICAgICAgICAgIGNvbnN0IGdyb3VwSW5kZXg6IGFueSA9IHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEdyb3VwQXNzaWduZWU/LmZpbmRJbmRleCgoZ3JvdXA6IGFueSkgPT4gZ3JvdXAuZ3JvdXBfaWQgPT0gZXZlbnQuZ3JvdXBfaWQpO1xyXG4gICAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkR3JvdXBBc3NpZ25lZT8uc3BsaWNlKGdyb3VwSW5kZXgsIDEpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3Jldmlld2VyJzpcclxuICAgICAgICBjb25zdCByZXZpZXdlckluZGV4ID0gdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkUmV2aWV3ZXJzLmZpbmRJbmRleCgocmV2aWV3ZXI6IGFueSkgPT4gcmV2aWV3ZXIubWVtYmVyX2lkID09IGV2ZW50Lm1lbWJlcl9pZCk7XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkUmV2aWV3ZXJzLnNwbGljZShyZXZpZXdlckluZGV4LCAxKTtcclxuICAgICAgICB0aGlzLnJlc2V0UmV2aWV3ZXJGcmVxdWVuY3koKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnY2NFbWFpbCc6XHJcbiAgICAgICAgY29uc3Qgb3ZlcnNlZXJJbmRleCA9IHRoaXMucG9saWN5Rm9ybS5DQ0VtYWlsLmZpbmRJbmRleCgob3ZlcnNlZXI6IGFueSkgPT4gb3ZlcnNlZXIuZW1wbG95ZWVfaWQgPT0gZXZlbnQuZW1wbG95ZWVfaWQpO1xyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5DQ0VtYWlsLnNwbGljZShvdmVyc2VlckluZGV4LCAxKTtcclxuICAgICAgICB0aGlzLnJlZnJlc2hBbGxMaXN0cygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdjY0dyb3VwRW1haWwnOlxyXG4gICAgICAgIGNvbnN0IGNjR3JvdXBJbmRleDogYW55ID0gdGhpcy5wb2xpY3lGb3JtPy5DQ0dyb3VwRW1haWw/LmZpbmRJbmRleCgoZ3JvdXA6IGFueSkgPT4gZ3JvdXA/Lmdyb3VwX2lkID09IGV2ZW50Py5ncm91cF9pZCk7XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLkNDR3JvdXBFbWFpbD8uc3BsaWNlKGNjR3JvdXBJbmRleCwgMSk7XHJcbiAgICAgICAgdGhpcy5jY0VtYWlsT2JqSWRzID0gdGhpcy5nZXRHcm91cE9iamVjdElkKHRoaXMucG9saWN5Rm9ybT8uQ0NHcm91cEVtYWlsKVxyXG4gICAgICAgIHRoaXMucmVmcmVzaEFsbExpc3RzKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2NjRmFpbCc6XHJcbiAgICAgICAgY29uc3Qgb3ZlcnNlZXJOb3RpZnlJbmRleCA9IHRoaXMucG9saWN5Rm9ybS5DQ0ZhaWxFbWFpbC5maW5kSW5kZXgoKG92ZXJzZWVyTjogYW55KSA9PiBvdmVyc2Vlck4uZW1wbG95ZWVfaWQgPT0gZXZlbnQuZW1wbG95ZWVfaWQpO1xyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5DQ0ZhaWxFbWFpbC5zcGxpY2Uob3ZlcnNlZXJOb3RpZnlJbmRleCwgMSk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoQWxsTGlzdHMoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnY2NHcm91cEZhaWxFbWFpbCc6XHJcbiAgICAgICAgY29uc3QgY2NGYWlsR3JvdXBJbmRleDogYW55ID0gdGhpcy5wb2xpY3lGb3JtPy5DQ0ZhaWxFbWFpbEdyb3VwPy5maW5kSW5kZXgoKGdyb3VwOiBhbnkpID0+IGdyb3VwPy5ncm91cF9pZCA9PSBldmVudD8uZ3JvdXBfaWQpO1xyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5DQ0ZhaWxFbWFpbEdyb3VwPy5zcGxpY2UoY2NGYWlsR3JvdXBJbmRleCwgMSk7XHJcbiAgICAgICAgdGhpcy5jY0ZhaWxHcm91cE9iaklkcyA9IHRoaXMuZ2V0R3JvdXBPYmplY3RJZCh0aGlzLnBvbGljeUZvcm0/LkNDRmFpbEVtYWlsR3JvdXApXHJcbiAgICAgICAgdGhpcy5yZWZyZXNoQWxsTGlzdHMoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnYXBwcm92ZXJzJzpcclxuICAgICAgICBjb25zdCBhcHByb3ZlcnNJbmRleCA9IHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFwcHJvdmVyc1tyZW1vdmVJbmRleF0uYXBwcm92ZXJzLmZpbmRJbmRleCgoYXBwcm92ZXI6IGFueSkgPT4gYXBwcm92ZXIubWVtYmVyX2lkID09IGV2ZW50Lm1lbWJlcl9pZCk7XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQXBwcm92ZXJzW3JlbW92ZUluZGV4XS5hcHByb3ZlcnMuc3BsaWNlKGFwcHJvdmVyc0luZGV4LCAxKTtcclxuICAgICAgICBpZiAodGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQXBwcm92ZXJzW3JlbW92ZUluZGV4XS5hcHByb3ZlcnMubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFwcHJvdmVycy5zcGxpY2UocmVtb3ZlSW5kZXgsIDEpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdjYXRlZ29yeSc6XHJcbiAgICAgICAgY29uc3QgY2F0ZWdvcnlJbmRleCA9IHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZENhdGVnb3JpZXMuZmluZEluZGV4KChjYXRlZ29yeTogYW55KSA9PiBjYXRlZ29yeS5pdGVtX2lkID09IGV2ZW50Lml0ZW1faWQpO1xyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZENhdGVnb3JpZXMuc3BsaWNlKGNhdGVnb3J5SW5kZXgsIDEpO1xyXG4gICAgICAgIGNvbnN0IHRhZyA9IGV2ZW50LmN1c3RvbV90YWdzO1xyXG4gICAgICAgIGlmICh0YWcubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgdGFnLmZvckVhY2goKHRhZ0RhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBpbmRleENUID0gdGhpcy5wb2xpY3lGb3JtLmN1c3RvbVRhZ3MuZmluZEluZGV4KCh0YWdFbGVtZW50OiBhbnkpID0+IHRhZ0VsZW1lbnQudGFnbmFtZSA9PSB0YWdEYXRhLnRhZ25hbWUpO1xyXG4gICAgICAgICAgICBpZiAoaW5kZXhDVCAhPSAtMSkge1xyXG4gICAgICAgICAgICAgIHRoaXMucG9saWN5Rm9ybS5jdXN0b21UYWdzLnNwbGljZShpbmRleENULCAxKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IG9iamVjdElkcyA9IHRoaXMucmV0dXJuSWRzKHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZENhdGVnb3JpZXMsICdfaWQnKVxyXG4gICAgICAgIHRoaXMucmVzZXRSZXZpZXdlckZyZXF1ZW5jeSgpO1xyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFwcHJvdmVycy5zcGxpY2UoMCwgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQXBwcm92ZXJzLmxlbmd0aClcclxuXHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtID0gT2JqZWN0LmFzc2lnbih0aGlzLnBvbGljeUZvcm0pO1xyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZFJldmlld2VycyA9IFtdO1xyXG4gICAgICAgIHRoaXMuZ2V0QXBwcm92ZXJXb3JrRmxvdyhvYmplY3RJZHMpO1xyXG4gICAgICAgIHRoaXMuZ2V0QXBwcm92ZXJzQW5kUmV2aWV3ZXJzTGlzdChvYmplY3RJZHMpO1xyXG5cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnY2hlY2twb2ludHMnOlxyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybT8uY2hlY2twb2ludERldGFpbHMuc3BsaWNlKHJlbW92ZUluZGV4LCAxKTtcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0udG90YWxRdWVzdGlvbiAtPSAxO1xyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5wYXNzaW5nTWFya3MgLT0gMTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnd29ya2Zsb3dMZXZlbCc6XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtPy5zZWxlY3RlZEFwcHJvdmVycy5zcGxpY2UocmVtb3ZlSW5kZXgsIDEpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgIH1cclxuICB9XHJcbiAgLyoqXHJcbiAgICAqIFJlZnJlc2hlcyB0aGUgYXNzaWduZWVzIGFuZCBvdmVyc2VlcnMgbGlzdCBzdWNoIHRoYXQgYm90aCBsaXN0IGRvZXMgbm90IGNvbnRhaW4gdGhlIHNhbWUgdXNlcnMgYmFzZWQgb24gc2VsZWN0aW9uXHJcbiAgICAqL1xyXG4gIHJlZnJlc2hBbGxMaXN0cygpIHtcclxuICAgIGxldCBhc3NpZ25lZXNJZHM6IGFueSA9IFtdO1xyXG4gICAgbGV0IHJldmlld2Vyc0lkczogYW55ID0gW107XHJcbiAgICBsZXQgb3ZlcnNlZXJJZHM6IGFueSA9IFtdO1xyXG4gICAgY29uc3QgYWxsVXNlcnMgPSBjbG9uZURlZXAodGhpcy51c2Vyc0xpc3QpO1xyXG4gICAgY29uc3QgYXNzaWduZWVzID0gY2xvbmVEZWVwKHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFzc2lnbmVlcyk7XHJcbiAgICBjb25zdCBvdmVyc2Vlckxpc3QgPSBjbG9uZURlZXAodGhpcy5wb2xpY3lGb3JtLkNDRW1haWwpO1xyXG4gICAgY29uc3Qgbm90aWZ5T3ZlcnNlZXJzID0gY2xvbmVEZWVwKHRoaXMucG9saWN5Rm9ybS5DQ0ZhaWxFbWFpbCk7XHJcbiAgICBhc3NpZ25lZXM/LmZvckVhY2goKHVzZXI6IGFueSkgPT4ge1xyXG4gICAgICBhc3NpZ25lZXNJZHMucHVzaCh1c2VyLmVtcGxveWVlX2lkKTtcclxuICAgIH0pO1xyXG4gICAgb3ZlcnNlZXJMaXN0Py5mb3JFYWNoKCh1c2VyOiBhbnkpID0+IHtcclxuICAgICAgb3ZlcnNlZXJJZHMucHVzaCh1c2VyLmVtcGxveWVlX2lkKTtcclxuICAgIH0pO1xyXG4gICAgbm90aWZ5T3ZlcnNlZXJzPy5mb3JFYWNoKCh1c2VyOiBhbnkpID0+IHtcclxuICAgICAgb3ZlcnNlZXJJZHMucHVzaCh1c2VyLmVtcGxveWVlX2lkKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGFzc2lnbmVlc0lkcyA9IFsuLi5uZXcgU2V0KGFzc2lnbmVlc0lkcyldO1xyXG4gICAgcmV2aWV3ZXJzSWRzID0gWy4uLm5ldyBTZXQocmV2aWV3ZXJzSWRzKV07XHJcbiAgICBvdmVyc2VlcklkcyA9IFsuLi5uZXcgU2V0KG92ZXJzZWVySWRzKV07XHJcblxyXG5cclxuICAgIC8vIHRoaXMuYXNzaWdub3JzTGlzdCA9IGJlaGFsZlVzZXJzLmZpbHRlcigodXNlcjogYW55KSA9PiAhKHJldmlld2Vyc0lkcy5pbmNsdWRlcyh1c2VyLm1lbWJlcl9pZCkgfHwgb3ZlcnNlZXJJZHMuaW5jbHVkZXModXNlci5tZW1iZXJfaWQpKSk7XHJcbiAgICB0aGlzLmFzc2lnbmVlc0xpc3QgPSBhbGxVc2Vycy5maWx0ZXIoKHVzZXI6IGFueSkgPT4gIShyZXZpZXdlcnNJZHMuaW5jbHVkZXModXNlci5lbXBsb3llZV9pZCkgfHwgb3ZlcnNlZXJJZHMuaW5jbHVkZXModXNlci5lbXBsb3llZV9pZCkpKTtcclxuICAgIGlmICh0aGlzLmdyb3VwRW5hYmxlZCkge1xyXG4gICAgICBjb25zdCB1c2VyT2JqID0gdGhpcy5hc3NpZ25lZXNMaXN0XHJcbiAgICAgIHVzZXJPYmo/LmZvckVhY2goKHVzZXI6IGFueSkgPT4ge1xyXG4gICAgICAgIHVzZXIubWVtYmVyX2lkID0gdXNlci5teV9tZW1iZXJfaWRcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5vd25lcmxpc3QgPSB1c2VyT2JqXHJcbiAgICB9XHJcbiAgICAvLyB0aGlzLnJldmlld2Vyc0xpc3QgPSBhbGxVc2Vycy5maWx0ZXIoKHVzZXI6IGFueSkgPT4gIShhc3NpZ25lZXNJZHMuaW5jbHVkZXModXNlci5lbXBsb3llZV9pZCkgfHwgb3ZlcnNlZXJJZHMuaW5jbHVkZXModXNlci5lbXBsb3llZV9pZCkpKTtcclxuICAgIHRoaXMub3ZlcnNlZXJzTGlzdCA9IGFsbFVzZXJzLmZpbHRlcigodXNlcjogYW55KSA9PiAhKGFzc2lnbmVlc0lkcy5pbmNsdWRlcyh1c2VyLmVtcGxveWVlX2lkKSB8fCByZXZpZXdlcnNJZHMuaW5jbHVkZXModXNlci5lbXBsb3llZV9pZCkpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAgKiBSZXR1cm5zIHdob2xlIGxpc3QgYmFzZWQgb24gc2VsZWN0ZWQgaWQncyBmcm9tIGEgcGFydGljdWxhciBsaXN0IGVsZW1lbnRzXHJcbiAgICAqIEBwYXJhbSBsaXN0IGl0IGlzIHRoZSBtYWluIGxpc3QgIHdoaWNoIGNvbnRhaW5zIGFsbCBlbGVtZW50cyBsaXN0XHJcbiAgICAqIEBwYXJhbSBrZXkgY29udGFpbnMga2V5IHRvIGZpbHRlciBzZWxlY3RlZCBsaXN0IGZyb20gdGhlIGxpc3RcclxuICAgICogQHBhcmFtIGlkcyBzZWxlY3RlZCBpZHMgYXJyYXlcclxuICAgICovXHJcbiAgc2V0TGlzdChsaXN0OiBhbnlbXSwgaWRzOiBhbnlbXSwga2V5OiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGRhdGE6IGFueSA9IFtdO1xyXG4gICAgaWRzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCBpbmRleCA9IGxpc3QuZmluZEluZGV4KChsaXN0RWxlbWVudDogYW55KSA9PiBsaXN0RWxlbWVudFtrZXldID09IGVsZW1lbnQpO1xyXG4gICAgICBpZiAoaW5kZXggIT09IC0xKSB7XHJcbiAgICAgICAgZGF0YS5wdXNoKGxpc3RbaW5kZXhdKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZGF0YTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAgKiBSZXR1cm5zIGlkJ3MgZnJvbSBhIHBhcnRpY3VsYXIgbGlzdCBlbGVtZW50c1xyXG4gICAgKiBAcGFyYW0gbGlzdCBhY3R1YWwgc2VsZWN0ZWQgbGlzdFxyXG4gICAgKiBAcGFyYW0ga2V5IGNvbnRhaW5zIGtleSB0byBleHRyYWN0IGlkIGZyb20gdGhlIGxpc3RcclxuICAgICovXHJcbiAgcmV0dXJuSWRzKGxpc3Q6IGFueVtdLCBrZXk6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIGxpc3QubWFwKGVsZSA9PiB7IGlmIChlbGVba2V5XSkgeyByZXR1cm4gZWxlW2tleV07IH0gfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgICogU2V0cyB0aGUgcmV2aWV3ZXIgdHlwZSBpbiBhcHByb3ZhbCB3b3JrZmxvd1xyXG4gICAgKiBAcGFyYW0gZXZlbnQgY29udGFpbnMgc2VsZWN0ZWQgcmV2aWV3ZXIgdHlwZVxyXG4gICAgKi9cclxuICByZXZpZXdlclR5cGVDaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy53b3JrZmxvd1R5cGUgPSBldmVudDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICogU2V0cyBmcmVxdWVuY3kgaW4gZWRpdCAgbW9kZVxyXG4gICovXHJcbiAgZnJlcXVlbmN5RGF0YVBvcHVsYXRpb24oZXZlbnQ6IGFueSkgeyAvL25lZWRzIHRvIGRpc2N1c3Mgd2l0aCBiYWNrZW5kIGFib3V0IGVkaXQgYW5kIGRlZmF1bHQgdmFsdWVzXHJcbiAgICBjb25zdCBkYXRhID0ge1xyXG4gICAgICBwYXR0ZXJuOiBldmVudD8uZnJlcXVlbmN5X2RldGFpbHMsIC8vXHJcbiAgICAgIHdpbmRvdzogZXZlbnQ/LnJlbWluZF9kYXlzX2JlZm9yZV9kdWVfZGF0ZSxcclxuICAgICAgZmFpbGVkQWZ0ZXI6IGV2ZW50Py5tYXJrX2ZhaWxlZF9hZnRlcixcclxuICAgICAgZmFpbGVkX3RpbWVfdXRjOiAnJyxcclxuICAgICAgbGlmZWN5Y2xlRGV0YWlsczogJzAwMDAtMDAtMDB+fjAnLFxyXG4gICAgICB0aW1lSW4yNEhyOiBldmVudC5mYWlsZWRfdGltZSAhPSAnJyA/IGV2ZW50LmZhaWxlZF90aW1lIDogJzIzOjU5OjAwJyxcclxuICAgICAgY29udGludW91c19mYWlsZWRfZGF5czogMCxcclxuICAgICAgc3RhcnRGcm9tOiBNYXRoLmZsb29yKG5ldyBEYXRlKGV2ZW50LnN0YXJ0RGF0ZSkuZ2V0VGltZSgpIC8gMTAwMCksXHJcbiAgICAgIHN0YXJ0RGF0ZTogXCJcIixcclxuICAgICAgcmVwb3J0SWQ6IDAsXHJcbiAgICAgIHRpbWVJbjEyaHI6IHRoaXMuZnJlcXVlbmN5U2VydmljZS50aW1lSW4xMihldmVudC5mYWlsZWRfdGltZSAhPSAnJyA/IGV2ZW50LmZhaWxlZF90aW1lIDogJzIzOjU5OjAwJyksXHJcbiAgICAgIHBsYWNlaG9sZGVyOiBldmVudC5mcmVxdWVuY3lfdGV4dFxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZnJlcXVlbmN5RGF0YShkYXRhKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAgKiBTZXRzIHRoZSBzZWxlY3RlZCBmcmVxdWVuY3kgZGV0YWlscyBpbiB0aGUgcG9saWN5Rm9ybVxyXG4gICAgKiBAcGFyYW0gZXZlbnQgY29udGFpbnMgc2VsZWN0ZWQgZnJlcXVlbmN5IGRldGFpbHNcclxuICAgICovXHJcbiAgZnJlcXVlbmN5RGF0YShldmVudDogYW55KSB7XHJcblxyXG4gICAgdGhpcy5wb2xpY3lGb3JtLmZyZXF1ZW5jeV9kZXRhaWxzID0gZXZlbnQucGF0dGVybjtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5mcmVxdWVuY3lfdGV4dCA9IGV2ZW50LnBsYWNlaG9sZGVyLFxyXG4gICAgdGhpcy5wb2xpY3lGb3JtLm1hcmtfZmFpbGVkX2FmdGVyID0gZXZlbnQuZmFpbGVkQWZ0ZXI7XHJcbiAgICB0aGlzLnBvbGljeUZvcm0ucmVtaW5kX2RheXNfYmVmb3JlX2R1ZV9kYXRlID0gZXZlbnQud2luZG93O1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLmZhaWxlZF90aW1lID0gZXZlbnQudGltZUluMjRIclxyXG5cclxuICAgIHRoaXMuYWN0aXZhdGVTZWxlY3RvcignZnJlcXVlbmN5JywgZmFsc2UpO1xyXG4gICAgY29uc3QgcGF5bG9hZCA9IHtcclxuICAgICAgZnJlcXVlbmN5X2RldGFpbHM6IGV2ZW50LnBhdHRlcm4sXHJcbiAgICAgIGZyZXF1ZW5jeV90aW1lOiBldmVudC50aW1lSW4xMmhyLFxyXG4gICAgICByZW1pbmRlcl9iZWZvcmVfZGF5czogZXZlbnQud2luZG93LFxyXG4gICAgICBmYWlsZWRfYWZ0ZXJfZGF5czogZXZlbnQuZmFpbGVkQWZ0ZXIsXHJcbiAgICAgIGxpZmVjeWNsZV9kZXRhaWxzOiBldmVudC5saWZlY3ljbGVEZXRhaWxzLFxyXG4gICAgICBzdGFydF9vZl9kYXlfdXRjOiBldmVudC5zdGFydEZyb20sXHJcbiAgICAgIG9uX2NvbXBsZXRpb25fb2Y6IFtldmVudC5yZXBvcnRJZF0sXHJcbiAgICAgIGRvbV91dGM6IE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDEwMDApLFxyXG4gICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzOiBldmVudC5jb250aW51b3VzX2ZhaWxlZF9kYXlzLFxyXG4gICAgICBwbGFjZWhvbGRlcjogZXZlbnQucGxhY2Vob2xkZXJcclxuICAgIH07XHJcbiAgICB0aGlzLmZyZXF1ZW5jeVBvcHVsYXRpb24ocGF5bG9hZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQb3B1bGF0ZXMgdGhlIGZyZXF1ZW5jeSBmaWVsZCB3aXRoIHNlbGVjdGVkIGRhdGEgZnJvbSBmcmVxdWVuY3kgY29tcG9uZW50XHJcbiAgICogQHBhcmFtIGV2ZW50IGNvbnRhaW5zIHNlbGVjdGVkIGZyZXF1ZW5jeSBkZXRhaWxzXHJcbiAgICovXHJcbiAgZnJlcXVlbmN5UG9wdWxhdGlvbihldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMucGF0dGVybiA9IGV2ZW50Py5mcmVxdWVuY3lfZGV0YWlscztcclxuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5mYWlsZWRUaW1lID0gZXZlbnQ/LmZyZXF1ZW5jeV90aW1lO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLndpbmRvdyA9IGV2ZW50Py5yZW1pbmRlcl9iZWZvcmVfZGF5cztcclxuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5mYWlsZWQgPSBldmVudD8uZmFpbGVkX2FmdGVyX2RheXM7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMubGlmZWN5Y2xlID0gZXZlbnQ/LmxpZmVjeWNsZV9kZXRhaWxzO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLnN0YXJ0RGF0ZSA9IGV2ZW50Py5zdGFydF9vZl9kYXlfdXRjO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLnNlbGVjdGVkUmVwb3J0ID0gZXZlbnQ/Lm9uX2NvbXBsZXRpb25fb2ZbMF0gPz8gMDtcclxuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5kYXRlT2ZNb2RpZmllZCA9IGV2ZW50Py5kb21fdXRjO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLmNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAzO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9IChldmVudD8ucGxhY2Vob2xkZXIpID8gZXZlbnQucGxhY2Vob2xkZXIgOiAnSG93IG9mdGVuIGRvZXMgdGhpcyBwb2xpY3kgbmVlZCB0byBiZSBhdHRlc3RlZD8nO1xyXG4gIH1cclxuXHJcblxyXG4gIHJldmlld2VyRnJlcXVlbmN5RGF0YVBvcHVsYXRpb24oZXZlbnQ6IGFueSkgeyAvL25lZWRzIHRvIGRpc2N1c3Mgd2l0aCBiYWNrZW5kIGFib3V0IGVkaXQgYW5kIGRlZmF1bHQgdmFsdWVzXHJcbiAgICBjb25zdCBkYXRhID0ge1xyXG4gICAgICBwYXR0ZXJuOiBldmVudD8ucmV2aWV3X2ZyZXF1ZW5jeV9kZXRhaWxzLCAvL1xyXG4gICAgICB3aW5kb3c6IGV2ZW50Py5yZXZpZXdfcmVtaW5kX2RheXNfYmVmb3JlX2R1ZV9kYXRlLFxyXG4gICAgICBmYWlsZWRBZnRlcjogZXZlbnQ/LnJldmlld0ZhaWxlZEFmdGVyLFxyXG4gICAgICBmYWlsZWRfdGltZV91dGM6ICcnLFxyXG4gICAgICBsaWZlY3ljbGVEZXRhaWxzOiAnMDAwMC0wMC0wMH5+MCcsXHJcbiAgICAgIHRpbWVJbjI0SHI6IGV2ZW50LnJldmlld0ZhaWxlZFRpbWUgIT0gJycgPyBldmVudC5yZXZpZXdGYWlsZWRUaW1lIDogJzIzOjU5OjAwJyxcclxuICAgICAgY29udGludW91c19mYWlsZWRfZGF5czogMCxcclxuICAgICAgc3RhcnRGcm9tOiBNYXRoLmZsb29yKG5ldyBEYXRlKGV2ZW50LnN0YXJ0RGF0ZSkuZ2V0VGltZSgpIC8gMTAwMCksXHJcbiAgICAgIHN0YXJ0RGF0ZTogXCJcIixcclxuICAgICAgcmVwb3J0SWQ6IDAsXHJcbiAgICAgIHRpbWVJbjEyaHI6IHRoaXMuZnJlcXVlbmN5U2VydmljZS50aW1lSW4xMihldmVudC5yZXZpZXdGYWlsZWRUaW1lICE9ICcnID8gZXZlbnQucmV2aWV3RmFpbGVkVGltZSA6ICcyMzo1OTowMCcpLFxyXG4gICAgICBwbGFjZWhvbGRlcjogZXZlbnQucmV2aWV3ZnJlcXVlbmN5RGV0YWlsc1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucmV2aWV3ZXJGcmVxdWVuY3lEYXRhKGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgcmVzZXRSZXZpZXdlckZyZXF1ZW5jeSgpIHtcclxuICAgIHRoaXMucmV2aWV3ZXJGcmVxdWVuY3lEZXRhaWxzID0ge1xyXG4gICAgICBwYXR0ZXJuOiAnJyxcclxuICAgICAgbm90aWZpY2F0aW9uUGVuZGluZzogMCxcclxuICAgICAgZGF0ZU9mTW9kaWZpZWQ6IDAsXHJcbiAgICAgIGRlYWN0aXZhdGlvblZhbHVlOiAwLFxyXG4gICAgICBzZWxlY3RlZFJlcG9ydDogMCxcclxuICAgICAgbGlmZWN5Y2xlOiAnMDAwMC0wMC0wMH5+MCcsXHJcbiAgICAgIHN0YXJ0RGF0ZTogTWF0aC5mbG9vcihuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApLFxyXG4gICAgICBzdGFydE9uVGhlRGF5OiBNYXRoLmZsb29yKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCksXHJcbiAgICAgIHdpbmRvdzogMCxcclxuICAgICAgZmFpbGVkOiAwLFxyXG4gICAgICB0aW1lOiAnMTE6NTkgcG0nLFxyXG4gICAgICBmYWlsZWRUaW1lOiAnJyxcclxuICAgICAgY29udGludW91c19mYWlsZWRfZGF5czogM1xyXG4gICAgfTtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5yZXZpZXdGYWlsZWRBZnRlciA9IDA7XHJcbiAgICB0aGlzLnBvbGljeUZvcm0ucmV2aWV3X2ZyZXF1ZW5jeV9kZXRhaWxzID0gJyc7XHJcbiAgICB0aGlzLnBvbGljeUZvcm0ucmV2aWV3X2ZyZXF1ZW5jeV90eXBlID0gJyc7XHJcbiAgICB0aGlzLnBvbGljeUZvcm0ucmV2aWV3X3JlbWluZF9kYXlzX2JlZm9yZV9kdWVfZGF0ZSA9IDA7XHJcbiAgICB0aGlzLnBvbGljeUZvcm0ucmV2aWV3RmFpbGVkVGltZSA9ICcyMzo1OTowMCc7XHJcbiAgICB0aGlzLnJldmlld2VyRnJlcXVlbmN5UGxhY2Vob2xkZXIgPSAnV2hlbiBkb2VzIHRoaXMgcG9saWN5IG5lZWQgdG8gYmUgcmV2aWV3ZWQgPyc7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgICogU2V0cyB0aGUgc2VsZWN0ZWQgcmV2aWV3ZXIgZnJlcXVlbmN5IGRldGFpbHMgaW4gdGhlIHBvbGljeUZvcm1cclxuICAgICogQHBhcmFtIGV2ZW50IGNvbnRhaW5zIHNlbGVjdGVkIGZyZXF1ZW5jeSBkZXRhaWxzXHJcbiAgICAqL1xyXG4gIHJldmlld2VyRnJlcXVlbmN5RGF0YShldmVudDogYW55KSB7XHJcblxyXG4gICAgdGhpcy5wb2xpY3lGb3JtLnJldmlld0ZhaWxlZEFmdGVyID0gZXZlbnQuZmFpbGVkQWZ0ZXI7XHJcbiAgICB0aGlzLnBvbGljeUZvcm0ucmV2aWV3X2ZyZXF1ZW5jeV9kZXRhaWxzID0gZXZlbnQucGF0dGVybjtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5yZXZpZXdfZnJlcXVlbmN5X3R5cGUgPSBldmVudC5wYXR0ZXJuLnNwbGl0KCd+JylbMF07XHJcbiAgICB0aGlzLnBvbGljeUZvcm0ucmV2aWV3X3JlbWluZF9kYXlzX2JlZm9yZV9kdWVfZGF0ZSA9IGV2ZW50LndpbmRvdztcclxuICAgIHRoaXMucG9saWN5Rm9ybS5yZXZpZXdGYWlsZWRUaW1lID0gZXZlbnQudGltZUluMjRIclxyXG5cclxuICAgIHRoaXMuYWN0aXZhdGVTZWxlY3RvcigncmV2aWV3ZXJGcmVxdWVuY3knLCBmYWxzZSk7XHJcbiAgICBjb25zdCBwYXlsb2FkID0ge1xyXG4gICAgICBmcmVxdWVuY3lfZGV0YWlsczogZXZlbnQucGF0dGVybixcclxuICAgICAgZnJlcXVlbmN5X3RpbWU6IGV2ZW50LnRpbWVJbjEyaHIsXHJcbiAgICAgIHJlbWluZGVyX2JlZm9yZV9kYXlzOiBldmVudC53aW5kb3csXHJcbiAgICAgIGZhaWxlZF9hZnRlcl9kYXlzOiBldmVudC5mYWlsZWRBZnRlcixcclxuICAgICAgbGlmZWN5Y2xlX2RldGFpbHM6IGV2ZW50LmxpZmVjeWNsZURldGFpbHMsXHJcbiAgICAgIHN0YXJ0X29mX2RheV91dGM6IGV2ZW50LnN0YXJ0RnJvbSxcclxuICAgICAgb25fY29tcGxldGlvbl9vZjogW2V2ZW50LnJlcG9ydElkXSxcclxuICAgICAgZG9tX3V0YzogTWF0aC5mbG9vcihEYXRlLm5vdygpIC8gMTAwMCksXHJcbiAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXM6IGV2ZW50LmNvbnRpbnVvdXNfZmFpbGVkX2RheXMsXHJcbiAgICAgIHBsYWNlaG9sZGVyOiBldmVudC5wbGFjZWhvbGRlclxyXG4gICAgfTtcclxuICAgIHRoaXMucmV2aWV3ZXJGcmVxdWVuY3lQb3B1bGF0aW9uKHBheWxvYWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICAqIFBvcHVsYXRlcyB0aGUgcmV2aWV3ZXIgZnJlcXVlbmN5IGZpZWxkIHdpdGggc2VsZWN0ZWQgZGF0YSBmcm9tIGZyZXF1ZW5jeSBjb21wb25lbnRcclxuICAgICogQHBhcmFtIGV2ZW50IGNvbnRhaW5zIHNlbGVjdGVkIGZyZXF1ZW5jeSBkZXRhaWxzXHJcbiAgICAqL1xyXG4gIHJldmlld2VyRnJlcXVlbmN5UG9wdWxhdGlvbihldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnJldmlld2VyRnJlcXVlbmN5RGV0YWlscy5wYXR0ZXJuID0gZXZlbnQ/LmZyZXF1ZW5jeV9kZXRhaWxzO1xyXG4gICAgdGhpcy5yZXZpZXdlckZyZXF1ZW5jeURldGFpbHMuZmFpbGVkVGltZSA9IGV2ZW50Py5mcmVxdWVuY3lfdGltZTtcclxuICAgIHRoaXMucmV2aWV3ZXJGcmVxdWVuY3lEZXRhaWxzLndpbmRvdyA9IGV2ZW50Py5yZW1pbmRlcl9iZWZvcmVfZGF5cztcclxuICAgIHRoaXMucmV2aWV3ZXJGcmVxdWVuY3lEZXRhaWxzLmZhaWxlZCA9IGV2ZW50Py5mYWlsZWRfYWZ0ZXJfZGF5cztcclxuICAgIHRoaXMucmV2aWV3ZXJGcmVxdWVuY3lEZXRhaWxzLmxpZmVjeWNsZSA9IGV2ZW50Py5saWZlY3ljbGVfZGV0YWlscztcclxuICAgIHRoaXMucmV2aWV3ZXJGcmVxdWVuY3lEZXRhaWxzLnN0YXJ0RGF0ZSA9IGV2ZW50Py5zdGFydF9vZl9kYXlfdXRjO1xyXG4gICAgdGhpcy5yZXZpZXdlckZyZXF1ZW5jeURldGFpbHMuc2VsZWN0ZWRSZXBvcnQgPSBldmVudD8ub25fY29tcGxldGlvbl9vZlswXSA/PyAwO1xyXG4gICAgdGhpcy5yZXZpZXdlckZyZXF1ZW5jeURldGFpbHMuZGF0ZU9mTW9kaWZpZWQgPSBldmVudD8uZG9tX3V0YztcclxuICAgIHRoaXMucmV2aWV3ZXJGcmVxdWVuY3lEZXRhaWxzLmNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAzO1xyXG4gICAgdGhpcy5yZXZpZXdlckZyZXF1ZW5jeVBsYWNlaG9sZGVyID0gKGV2ZW50Py5wbGFjZWhvbGRlcikgPyBldmVudC5wbGFjZWhvbGRlciA6ICdXaGVuIGRvZXMgdGhpcyBwb2xpY3kgbmVlZCB0byBiZSByZXZpZXdlZCA/JztcclxuXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgICogVmFsaWRhdGVzIHRoZSBkYXRhIHN1Ym1pdHRlZCBvbiBjcmVhdGUgcG9saWN5IGZvcm1cclxuICAgICovXHJcbiAgdmFsaWRhdGVQb2xpY3koKSB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5zdWJtaXR0ZWQgPSB0cnVlO1xyXG5cclxuICAgIH0sIDEwMCk7XHJcbiAgICBjb25zdCBldmVudCA9IHRoaXMucG9saWN5Rm9ybS5wb2xpY3lOYW1lO1xyXG4gICAgY29uc3QgcmUgPSAvJm5ic3A7fDxicj4vZztcclxuICAgIHRoaXMucG9saWN5Rm9ybS5wb2xpY3lOYW1lID0gZXZlbnQucmVwbGFjZShyZSwgJycpLnRyaW0oKTtcclxuXHJcbiAgICBpZiAodGhpcy5wb2xpY3lGb3JtLnBvbGljeU5hbWUudHJpbSgpID09ICcnXHJcbiAgICAgIHx8ICghdGhpcy5wb2xpY3lGb3JtPy5mcmVxdWVuY3lfZGV0YWlscyAmJiAoKCB0aGlzLnBvbGljeUZvcm0/LnNlbGVjdGVkQXNzaWduZWVzPy5sZW5ndGggPiAwICYmICF0aGlzLmdyb3VwRW5hYmxlZCkgfHwgKCh0aGlzLnBvbGljeUZvcm0/LnNlbGVjdGVkQXNzaWduZWVzPy5sZW5ndGggPiAwIHx8IHRoaXMucG9saWN5Rm9ybT8uc2VsZWN0ZWRHcm91cEFzc2lnbmVlPy5sZW5ndGggPiAwICkgJiYgdGhpcy5ncm91cEVuYWJsZWQpKSlcclxuICAgICAgfHwgKHRoaXMucG9saWN5Rm9ybT8uZnJlcXVlbmN5X2RldGFpbHMgJiYgdGhpcy5wb2xpY3lGb3JtPy5zZWxlY3RlZEFzc2lnbmVlcz8ubGVuZ3RoID09IDAgJiYgKCF0aGlzLmdyb3VwRW5hYmxlZCAgfHwgKCAgdGhpcy5wb2xpY3lGb3JtPy5zZWxlY3RlZEdyb3VwQXNzaWduZWU/Lmxlbmd0aCA9PSAwICYmIHRoaXMuZ3JvdXBFbmFibGVkKSkpXHJcbiAgICAgIHx8ICghdGhpcy5wb2xpY3lGb3JtLnJldmlld19mcmVxdWVuY3lfZGV0YWlscyAmJiB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRSZXZpZXdlcnMubGVuZ3RoID4gMClcclxuICAgICAgfHwgKHRoaXMucG9saWN5Rm9ybS5yZXZpZXdfZnJlcXVlbmN5X2RldGFpbHMgJiYgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkUmV2aWV3ZXJzLmxlbmd0aCA9PSAwKVxyXG4gICAgICB8fCB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRDYXRlZ29yaWVzLmxlbmd0aCA9PSAwIHx8XHJcbiAgICAgICh0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBcHByb3ZlcnMubGVuZ3RoID09IDAgJiYgdGhpcy5wb2xpY3lBcHByb3ZhbEZsYWcgPT09IDApIHx8ICh0aGlzLmZvcm1hdEV2aWRlbmNlICYmIHRoaXMuZm9ybWF0RXZpZGVuY2UubmV3TGluay5jb250YWluc0Vycm9yKSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICogTWFrZXMgYW4gYXBpIGNhbGwgdG8gY3JlYXRlIGEgcG9saWN5XHJcbiAgKiBAcGFyYW0gcG9saWN5IGNvbnRhaW5zIHBvbGljeUZvcm0gZGF0YVxyXG4gICovXHJcbiAgc3VibWl0UG9saWN5KCkge1xyXG5cclxuICAgIHRoaXMuc3VibWl0dGVkID0gZmFsc2U7XHJcbiAgICBjb25zdCB2YWxpZCA9IHRoaXMudmFsaWRhdGVQb2xpY3koKTtcclxuICAgIGlmICghdmFsaWQpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xyXG4gICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSB0cnVlO1xyXG4gICAgY29uc3QgcG9saWN5ID0gdGhpcy5wb2xpY3lGb3JtO1xyXG4gICAgbGV0IGFwcHJvdmVyc0RhdGE6IGFueSA9IHt9XHJcbiAgICBjb25zdCBwb2xpY3lTZWxlY3RlZEFwcHJvdmVycyA9IGNsb25lRGVlcChwb2xpY3kuc2VsZWN0ZWRBcHByb3ZlcnMpO1xyXG4gICAgcG9saWN5U2VsZWN0ZWRBcHByb3ZlcnMuZm9yRWFjaCgobGV2ZWw6IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBpZiAobGV2ZWwubmFtZSA9PSAnUk9VTkQtUk9CSU4nKSB7XHJcbiAgICAgICAgbGV2ZWwubmFtZSA9ICdST1VORFJPQklOJ1xyXG4gICAgICB9IGVsc2UgaWYgKGxldmVsLm5hbWUgPT0gJ0FOWSBPTkUnKSB7XHJcbiAgICAgICAgbGV2ZWwubmFtZSA9ICdBTllPTkUnXHJcbiAgICAgIH1cclxuICAgICAgYXBwcm92ZXJzRGF0YVsnbGV2ZWwnICsgKGluZGV4ICsgMSldID0ge1xyXG4gICAgICAgIGFwcHJvdmVyczogbGV2ZWwuYXBwcm92ZXJzLm1hcCgoYXBwcm92ZXI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgY29uc3Qgb2JqID0ge1xyXG4gICAgICAgICAgICBtZW1iZXJfaWQ6IGFwcHJvdmVyLm1lbWJlcl9pZCwgYXBwcm92YWxfZmxhZzogZmFsc2UsIHJlamVjdF9mbGFnOiBmYWxzZSwgcmVtb3ZlX2ZsYWc6IGZhbHNlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gb2JqO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIHR5cGU6IGxldmVsLm5hbWUsXHJcbiAgICAgICAgYXBwcm92YWxfZG9uZTogZmFsc2VcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgbGV0IHJldmlld2VyRmlsZXNBcnJheSA9ICBjbG9uZURlZXAocG9saWN5LmRvY3VtZW50c0FuZExpbmtzLmZvcm1hdEZpbGVzKTtcclxuICAgIGNvbnN0IHJldmlld2VyRmlsZXMgPSByZXZpZXdlckZpbGVzQXJyYXkubWFwKChmaWxlOiBhbnkpID0+IHtcclxuICAgICAgZmlsZS5uYW1lID0gZmlsZS5maWxlbmFtZTtcclxuICAgICAgZmlsZS5maWxlX3BhdGggPSBmaWxlLmZpbGVwYXRoXHJcbiAgICAgIGZpbGUub3JnX25hbWUgPSBmaWxlLm9yaWdpbmFsX2ZpbGVuYW1lXHJcbiAgICAgIGRlbGV0ZSBmaWxlLmZpbGVuYW1lO1xyXG4gICAgICBkZWxldGUgZmlsZS5maWxlcGF0aDtcclxuICAgICAgZGVsZXRlIGZpbGUub3JpZ2luYWxfZmlsZW5hbWU7XHJcbiAgICAgIGRlbGV0ZSBmaWxlLmxpbmtTZXQ7XHJcbiAgICAgIHJldHVybiBmaWxlO1xyXG4gICAgfSlcclxuXHJcbiAgICBsZXQgYXR0ZXN0YXRpb25GaWxlc0FycmF5ID0gY2xvbmVEZWVwKHBvbGljeS5hc3NvY2lhdGVkRG9jdW1lbnRzLmZvcm1hdEZpbGVzKTtcclxuICAgIGNvbnN0IGF0dGVzdGF0aW9uRmlsZXMgPSBhdHRlc3RhdGlvbkZpbGVzQXJyYXkubWFwKChlbGU6IGFueSkgPT4ge1xyXG4gICAgICBlbGUubmFtZSA9IGVsZS5maWxlbmFtZTtcclxuICAgICAgZWxlLmZpbGVfcGF0aCA9IGVsZS5maWxlcGF0aFxyXG4gICAgICBlbGUub3JpZ2luYWxfZmlsZV9uYW1lID0gZWxlLm9yaWdpbmFsX2ZpbGVuYW1lXHJcbiAgICAgIGVsZS5mb2xkZXJfaWQgPSAoZWxlPy5mb2xkZXJfaWQpID8gZWxlLmZvbGRlcl9pZCA6IDA7XHJcbiAgICAgIGVsZS5wYXRoID0gKGVsZT8ucGF0aCkgPyBlbGUucGF0aCA6IChlbGUuZmlsZXBhdGggKyBlbGUuZmlsZW5hbWUpO1xyXG4gICAgICBlbGUuaXNMaW5rU2V0ID0gZWxlLmxpbmtTZXRcclxuICAgICAgZGVsZXRlIGVsZS5maWxlbmFtZTtcclxuICAgICAgZGVsZXRlIGVsZS5maWxlcGF0aDtcclxuICAgICAgZGVsZXRlIGVsZS5vcmlnaW5hbF9maWxlbmFtZTtcclxuICAgICAgZGVsZXRlIGVsZS5saW5rU2V0O1xyXG4gICAgICBkZWxldGUgZWxlLmZpbGVfbmFtZTtcclxuICAgICAgcmV0dXJuIGVsZTtcclxuICAgIH0pXHJcbiAgICBjb25zdCByZXZpZXdlcklEID0gdGhpcy5yZXR1cm5JZHMocG9saWN5LnNlbGVjdGVkUmV2aWV3ZXJzLCAnbWVtYmVyX2lkJylcclxuXHJcbiAgICBjb25zdCBwYXlsb2FkID0ge1xyXG4gICAgICBwb2xpY3lfbmFtZTogcG9saWN5LnBvbGljeU5hbWUsXHJcbiAgICAgIG5vdGVzOiBwb2xpY3kucG9saWN5Tm90ZXMsXHJcbiAgICAgIGlzX3BvcnRhbF9lbmFibGU6IChwb2xpY3kuYXZhaWxhYmxlT25Qb3J0YWwpID8gMSA6IDAsXHJcbiAgICAgIGlzX3N1Z2dldGlvbl9lbmFibGU6IChwb2xpY3kuYWNjZXB0U3VnZ2VzdGlvbnMpID8gMSA6IDAsXHJcbiAgICAgIGNhdGVnb3J5X2lkX2FycjogdGhpcy5yZXR1cm5JZHMocG9saWN5LnNlbGVjdGVkQ2F0ZWdvcmllcywgJ2l0ZW1faWQnKSxcclxuICAgICAgYXBwcm92ZXJzOiBhcHByb3ZlcnNEYXRhLFxyXG4gICAgICBncm91cF9lbXBsb3llZUlkczogdGhpcy5yZXR1cm5JZHMocG9saWN5LnNlbGVjdGVkQXNzaWduZWVzLCAnZW1wbG95ZWVfaWQnKS50b1N0cmluZygpLFxyXG4gICAgICB1c2VyZ3JvdXBfaWRzIDogdGhpcy5yZXR1cm5JZHMocG9saWN5LnNlbGVjdGVkR3JvdXBBc3NpZ25lZSwnX2lkJykgPz8gW10sXHJcbiAgICAgIElzX2FwcHJvdmFsOiAwLCAvL25lZWRzIHRvIGNoZWNrIGluIGZlXHJcblxyXG4gICAgICBhc3NvY2lhdGVkX2RvY3VtZW50czogcG9saWN5LmFkZEFzc29jaWF0ZWREb2N1bWVudHMgPyBhdHRlc3RhdGlvbkZpbGVzOltdLFxyXG5cclxuICAgICAgY3VzdG9tX3RhZ3M6IEpTT04uc3RyaW5naWZ5KHBvbGljeS5jdXN0b21UYWdzKSxcclxuXHJcbiAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzOiAocG9saWN5LmZyZXF1ZW5jeV9kZXRhaWxzKSA/IHBvbGljeS5mcmVxdWVuY3lfZGV0YWlscyA6ICcnLFxyXG4gICAgICBmcmVxdWVuY3lfdGV4dDogKHBvbGljeS5mcmVxdWVuY3lfZGV0YWlscykgPyBwb2xpY3kuZnJlcXVlbmN5X3RleHQgOiAnJyxcclxuICAgICAgcmVtaW5kX2RheXNfYmVmb3JlX2R1ZV9kYXRlOiAocG9saWN5LmZyZXF1ZW5jeV9kZXRhaWxzKSA/IHBvbGljeS5yZW1pbmRfZGF5c19iZWZvcmVfZHVlX2RhdGUgOiAwLFxyXG4gICAgICBmYWlsZWRfdGltZTogKHBvbGljeS5mcmVxdWVuY3lfZGV0YWlscykgPyBwb2xpY3kuZmFpbGVkX3RpbWUgOiAnJyxcclxuICAgICAgbWFya19mYWlsZWRfYWZ0ZXI6IChwb2xpY3kuZnJlcXVlbmN5X2RldGFpbHMpID8gcG9saWN5Lm1hcmtfZmFpbGVkX2FmdGVyIDogJycsXHJcbiAgICAgIC8vIHN0YXJ0RGF0ZTogcG9saWN5LnBvbGljeUR1ZURhdGUudG9EYXRlU3RyaW5nKCksXHJcbiAgICAgIHN0YXJ0RGF0ZTogbW9tZW50KHBvbGljeS5wb2xpY3lEdWVEYXRlKS5mb3JtYXQoJ2RkZCBNTU0gREQgWVlZWScpLFxyXG5cclxuICAgICAgUmV2aWV3ZXJBdHRhY2htZW50czogIChwb2xpY3kuYWRkUmV2aWV3ZXJzICYmIHBvbGljeS5kb2N1bWVudHNBbmRMaW5rcy5mb3JtYXRGaWxlcykgPyByZXZpZXdlckZpbGVzIDogW10sXHJcbiAgICAgIFJldmlld2VyTGlua3M6IChwb2xpY3kuYWRkUmV2aWV3ZXJzICYmIHBvbGljeS5kb2N1bWVudHNBbmRMaW5rcy5mb3JtYXRMaW5rcykgPyBwb2xpY3kuZG9jdW1lbnRzQW5kTGlua3MuZm9ybWF0TGlua3MgOiBbXSxcclxuICAgICAgUmV2aWV3ZXJNZW1iZXJJZDogKHBvbGljeS5hZGRSZXZpZXdlcnMpICYmIHJldmlld2VySURbMF0/IHJldmlld2VySURbMF0gOiAwLFxyXG4gICAgICBpc1JldmlldzogKHBvbGljeS5hZGRSZXZpZXdlcnMgJiYgKChwb2xpY3kuZG9jdW1lbnRzQW5kTGlua3MuZm9ybWF0RmlsZXMpIHx8IChwb2xpY3kuZG9jdW1lbnRzQW5kTGlua3MuZm9ybWF0TGlua3MpKSkgJiYgcmV2aWV3ZXJJRFswXSA/IDEgOiAwLFxyXG5cclxuICAgICAgcmV2aWV3RmFpbGVkQWZ0ZXI6IChwb2xpY3kuYWRkUmV2aWV3ZXJzICYmIHBvbGljeS5yZXZpZXdfZnJlcXVlbmN5X2RldGFpbHMpID8gcG9saWN5LnJldmlld0ZhaWxlZEFmdGVyIDogMCxcclxuICAgICAgcmV2aWV3RmFpbGVkVGltZTogKHBvbGljeS5hZGRSZXZpZXdlcnMgJiYgcG9saWN5LnJldmlld19mcmVxdWVuY3lfZGV0YWlscykgPyBwb2xpY3kucmV2aWV3RmFpbGVkVGltZSA6ICcnLFxyXG4gICAgICByZXZpZXdfZnJlcXVlbmN5X2RldGFpbHM6IChwb2xpY3kuYWRkUmV2aWV3ZXJzICYmIHBvbGljeS5yZXZpZXdfZnJlcXVlbmN5X2RldGFpbHMpID8gcG9saWN5LnJldmlld19mcmVxdWVuY3lfZGV0YWlscyA6ICcnLFxyXG4gICAgICByZXZpZXdfZnJlcXVlbmN5X3R5cGU6IChwb2xpY3kuYWRkUmV2aWV3ZXJzICYmIHBvbGljeS5yZXZpZXdfZnJlcXVlbmN5X2RldGFpbHMpID8gcG9saWN5LnJldmlld19mcmVxdWVuY3lfdHlwZSA6ICcnLFxyXG4gICAgICByZXZpZXdfcmVtaW5kX2RheXNfYmVmb3JlX2R1ZV9kYXRlOiAocG9saWN5LmFkZFJldmlld2VycyAmJiBwb2xpY3kucmV2aWV3X2ZyZXF1ZW5jeV9kZXRhaWxzKSA/IHBvbGljeS5yZXZpZXdfcmVtaW5kX2RheXNfYmVmb3JlX2R1ZV9kYXRlIDogMCxcclxuXHJcbiAgICAgIGVudGl0aWVzOiB0aGlzLnBvbGljeUZvcm0/LmFkZFJlc3BvbnNpYmlsaXR5Q2VudGVycyA/IHRoaXMucmV0dXJuSWRzKHBvbGljeS5zZWxlY3RlZFJDcywgJ2l0ZW1faWQnKS50b1N0cmluZygpOlwiXCIsXHJcbiAgICAgIHJpc2tfY2xhc3M6IHBvbGljeS5yaXNrUmF0aW5nLnRvU3RyaW5nKCksXHJcblxyXG4gICAgICBDQ0ZhaWxFbWFpbDpwb2xpY3kuYWRkT3ZlcnNlZXJzICA/IHRoaXMucmV0dXJuSWRzKHBvbGljeS5DQ0ZhaWxFbWFpbCwgJ2VtcGxveWVlX2VtYWlsJykudG9TdHJpbmcoKTpcIlwiLFxyXG4gICAgICBDQ0VtYWlsOiBwb2xpY3kuYWRkT3ZlcnNlZXJzID8gdGhpcy5yZXR1cm5JZHMocG9saWN5LkNDRW1haWwsICdlbXBsb3llZV9lbWFpbCcpLnRvU3RyaW5nKCk6IFwiXCIsXHJcblxyXG4gICAgICBjaGVja3BvaW50RGV0YWlsczogKHBvbGljeS5hZGRDaGVja3BvaW50cykgPyBwb2xpY3kuY2hlY2twb2ludERldGFpbHMgOiBbXSxcclxuICAgICAgdG90YWxRdWVzdGlvbjogKHBvbGljeS5hZGRDaGVja3BvaW50cyAmJiBwb2xpY3kudG90YWxRdWVzdGlvbikgPyBwb2xpY3kudG90YWxRdWVzdGlvbiA6IDAsLy9cclxuICAgICAgcGFzc2luZ01hcmtzOiAocG9saWN5LmFkZENoZWNrcG9pbnRzICYmIHBvbGljeS5wYXNzaW5nTWFya3MpID8gcG9saWN5LnBhc3NpbmdNYXJrcyA6IDAsLy9cclxuXHJcbiAgICAgIHBvbGljeUFwcHJvdmFsRmxhZzogMCxcclxuXHJcbiAgICAgIGlzX3NpZ25hdHVyZV9yZXF1aXJlZDogcG9saWN5LnJlcXVpcmVzU2lnbmF0dXJlRm9yQXR0ZXN0YXRpb24gPyAxIDogMCxcclxuICAgICAgY2NfdXNlcmdyb3VwX2lkczogdGhpcy5jY0VtYWlsT2JqSWRzLFxyXG4gICAgICBjY19mYWlsX3VzZXJncm91cF9pZHM6IHRoaXMuY2NGYWlsR3JvdXBPYmpJZHMsXHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5tb2RlID09ICdDUkVBVEUnKSB7XHJcbiAgICAgIHRoaXMucG9saWN5U2VydmljZS5zdWJtaXRQb2xpY3kocGF5bG9hZCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5wb2xpY3lJZCA9IHJlcy5faWQ7XHJcbiAgICAgICAgaWYgKHRoaXMuY29udmVydEZpbGVEYXRhPy5maWxlTmFtZSkge1xyXG4gICAgICAgICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5saW5rRG9jdW1lbnRXaXRoUG9saWN5KHRoaXMuY29udmVydEZpbGVEYXRhKVxyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdCh0cnVlKTtcclxuICAgICAgICB0aGlzLnNob3dDcmVhdGVEb2N1bWVudHMgPSB0cnVlO1xyXG5cclxuICAgICAgfSxcclxuICAgICAgICBlcnIgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnNuYWNrQmFyLnNob3coJ09PUFMhIFNvbWV0aGluZyB3ZW50IHdyb25nIGFuZCB0aGUgcGFnZSBjb3VsZCBub3QgYmUgbG9hZGVkLiBDb3VsZCB5b3UgcGxlYXNlIHRyeSBvbmUgbW9yZSB0aW1lPycsICdhbGVydCcpO1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5tb2RlID09ICdFRElUJykge1xyXG4gICAgICBpZiAodGhpcy5wb2xpY3lBcHByb3ZhbEZsYWcgIT09IDApIHtcclxuICAgICAgICBkZWxldGUgcGF5bG9hZC5hcHByb3ZlcnNcclxuICAgICAgICBwYXlsb2FkLnBvbGljeUFwcHJvdmFsRmxhZyA9IDJcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnBvbGljeVNlcnZpY2UudXBkYXRlUG9saWN5KHBheWxvYWQsIHRoaXMucG9saWN5SWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5wb2xpY3lJZCA9IHJlcy5faWQ7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLm5hdmlnYXRlVG9Eb2N1bWVudHNTZWN0aW9uKSB7XHJcbiAgICAgICAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdCh0cnVlKTtcclxuICAgICAgICAgIHRoaXMuc2hvd0NyZWF0ZURvY3VtZW50cyA9IHRydWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZGlzY29ubmVjdFJlZnJlc2guZW1pdChmYWxzZSk7XHJcbiAgICAgICAgICB0aGlzLnNuYWNrQmFyLnNob3coJ1RoZSBwb2xpY3kgaGFzIGJlZW4gdXBkYXRlZCcsICdzdWNjZXNzJyk7XHJcbiAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHRoaXMuYmFzZVVSTCArICcvYWxsL3BvbGljeS93b3Jrcm9vbT9pZD0nICsgdGhpcy5wb2xpY3lJZFxyXG4gICAgICAgICAgLy8gdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvcG9saWN5L3dvcmtyb29tJ10sIHsgcXVlcnlQYXJhbXM6IHsgaWQ6IHRoaXMucG9saWN5SWQgfSwgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KTtcclxuICAgICAgICAgIC8vIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcclxuXHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgIH0sXHJcbiAgICAgICAgZXJyID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnVpS2l0U2VydmljZS5pc0xvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5zbmFja0Jhci5zaG93KCdPT1BTISBTb21ldGhpbmcgd2VudCB3cm9uZyBhbmQgdGhlIHBhZ2UgY291bGQgbm90IGJlIGxvYWRlZC4gQ291bGQgeW91IHBsZWFzZSB0cnkgb25lIG1vcmUgdGltZT8nLCAnYWxlcnQnKTtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGxpbmtEb2N1bWVudFdpdGhQb2xpY3koZG9jdW1lbnQ6IGFueSkge1xyXG4gICAgaWYgKGRvY3VtZW50LmZpbGVOYW1lICYmIChkb2N1bWVudC5maWxlRXh0ZW5zaW9uID09PSAncGRmJyB8fCBkb2N1bWVudC5maWxlRXh0ZW5zaW9uID09PSAnUERGJyB8fFxyXG4gICAgICBkb2N1bWVudC5maWxlRXh0ZW5zaW9uID09PSAnZG9jeCcgfHwgZG9jdW1lbnQuZmlsZUV4dGVuc2lvbiA9PT0gJ0RPQ1gnKSkge1xyXG4gICAgICB0aGlzLnBvbGljeVNlcnZpY2UuZXh0cmFjdEZpbGUoZG9jdW1lbnQuZmlsZUV4dGVuc2lvbiwgZG9jdW1lbnQuZmlsZVBhdGgsIHRoaXMucG9saWN5SWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgICBpZiAocmVzLm1lc3NhZ2UgPT09ICdkb25lJyB8fCByZXMuY29udGVudCkge1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICBpZiAoZG9jdW1lbnQuZmlsZUV4dGVuc2lvbiA9PT0gJ2RvY3gnIHx8IGRvY3VtZW50LmZpbGVFeHRlbnNpb24gPT09ICdET0NYJykge1xyXG5cclxuICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9wb2xpY3kvZWRpdC1wb2xpY3knXSwgeyBxdWVyeVBhcmFtczogeyBpZDogdGhpcy5wb2xpY3lJZCB9LCByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH0pO1xyXG5cclxuICAgICAgICAgICAgfSBlbHNlIGlmIChkb2N1bWVudC5maWxlRXh0ZW5zaW9uID09PSAncGRmJyB8fCBkb2N1bWVudC5maWxlRXh0ZW5zaW9uID09PSAnUERGJykge1xyXG5cclxuICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9wb2xpY3kvd29ya3Jvb20nXSwgeyBxdWVyeVBhcmFtczogeyBpZDogdGhpcy5wb2xpY3lJZCB9LCByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgICB0aGlzLnNuYWNrQmFyLnNob3coJ09vcHMhIFNvbWV0aGluZyB3ZW50IHdyb25nIGFuZCB3ZSB3ZXJlIHVuYWJsZSB0byBjb21wbGV0ZSB0aGlzIGFjdGlvbi4gTGV0XFwncyBnaXZlIGl0IGFub3RoZXIgdHJ5LCBzaGFsbCB3ZT8nLCAnYWxlcnQnKTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNuYWNrQmFyLnNob3coJ09vcHMhIFNvbWV0aGluZyB3ZW50IHdyb25nIGFuZCB3ZSB3ZXJlIHVuYWJsZSB0byBjb21wbGV0ZSB0aGlzIGFjdGlvbi4gTGV0XFwncyBnaXZlIGl0IGFub3RoZXIgdHJ5LCBzaGFsbCB3ZT8nLCAnYWxlcnQnKTtcclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgICogb3BlbnMgdGhlIGRhdGUgcGlja2VyIG9uIHBvbGljeSBmb3JtXHJcbiAgICAqL1xyXG4gIG9wZW5EYXRlUGlja2VyKCkge1xyXG4gICAgdGhpcy5kYXRlUGlja2VyLmFwaS5vcGVuKCk7XHJcbiAgICB0aGlzLmRhdGVQaWNrZXJPdmVybGF5ID0gdHJ1ZTtcclxuICAgIC8vIHRoaXMuc2V0QWN0aXZlRmllbGRTZWxlY3RvcignSVNTVUVfREFURV9USU1FJywgJ0lTU1VFX0RBVEVfVElNRScpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiBjbG9zZXMgdGhlIGRhdGUgcGlja2VyIGZyb20gcG9saWN5IGZvcm1cclxuICAqL1xyXG4gIGNsb3NlRGF0ZVBpY2tlcihldnQ6IGFueSkge1xyXG4gICAgdGhpcy5kYXRlUGlja2VyT3ZlcmxheSA9IGZhbHNlO1xyXG5cclxuICAgIGlmICghZXZ0KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChldnQ/LmRhdGU/Ll9kKSB7XHJcbiAgICAgIGxldCBtb250aEFycmF5ID0gWydKYW4nLCAnRmViJywgJ01hcicsICdBcHInLCAnSnVuJywgJ0p1bCcsICdBdWcnLCAnU2VwJywgJ09jdCcsICdOb3YnLCAnRGVjJ11cclxuICAgICAgY29uc3QgZGF0ZVZhbHVlID0gbmV3IERhdGUoZXZ0Py5kYXRlPy5fZCkuZ2V0RGF0ZSgpO1xyXG4gICAgICBjb25zdCBtb250aFZhbHVlID0gbW9udGhBcnJheVtuZXcgRGF0ZShldnQ/LmRhdGU/Ll9kKS5nZXRNb250aCgpXTtcclxuICAgICAgY29uc3QgeWVhclZhbHVlID0gbmV3IERhdGUoZXZ0Py5kYXRlPy5fZCkuZ2V0RnVsbFllYXIoKTtcclxuICAgICAgY29uc3QgZGF0ZVN0ciA9IGAke2RhdGVWYWx1ZX0gJHttb250aFZhbHVlfSAke3llYXJWYWx1ZX1gO1xyXG4gICAgfVxyXG4gICAgaWYgKGV2dD8uZGF0ZT8uX2QpIHtcclxuICAgICAgdGhpcy5wb2xpY3lGb3JtLnBvbGljeUR1ZURhdGUgPSBldnQ/LmRhdGU/Ll9kO1xyXG4gICAgfVxyXG4gICAgdGhpcy5kYXRlUGlja2VyLmFwaS5jbG9zZSgpO1xyXG4gIH1cclxuICBlZGl0UG9saWN5RnJvbURvY3VtZW50cygpIHtcclxuICAgIHRoaXMubW9kZSA9ICdFRElUJztcclxuICAgIHRoaXMuc2hpZnRUb0VkaXRNb2RlLmVtaXQoKVxyXG4gICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQoZmFsc2UpO1xyXG4gICAgdGhpcy5zaG93Q3JlYXRlRG9jdW1lbnRzID0gZmFsc2U7XHJcbiAgICB0aGlzLm5hdmlnYXRlVG9Eb2N1bWVudHNTZWN0aW9uID0gdHJ1ZTtcclxuICAgIHRoaXMuZWRpdFBvbGljeSgpO1xyXG5cclxuICB9XHJcblxyXG4gIGNoZWNrRm9yQ3JlYXRlRG9jdW1lbnRzKCkge1xyXG5cclxuICAgIGNvbnN0IGRhdGEgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnc2hvd0NyZWF0ZURvY3VtZW50cycpO1xyXG4gICAgdGhpcy5uYXZpZ2F0ZVRvRG9jdW1lbnRzU2VjdGlvbiA9IChkYXRhID09PSBcInRydWVcIikgPyB0cnVlIDogZmFsc2U7XHJcbiAgICBpZiAodGhpcy5uYXZpZ2F0ZVRvRG9jdW1lbnRzU2VjdGlvbikge1xyXG4gICAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdCh0cnVlKTtcclxuICAgICAgdGhpcy5zaG93Q3JlYXRlRG9jdW1lbnRzID0gdHJ1ZTtcclxuICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ3Nob3dDcmVhdGVEb2N1bWVudHMnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGVkaXRQb2xpY3koKSB7XHJcbiAgICB0aGlzLm1vZGUgPSAnRURJVCdcclxuXHJcblxyXG4gICAgaWYgKHRoaXMucG9saWN5SWQpIHtcclxuICAgICAgdGhpcy5wb2xpY3lTZXJ2aWNlLmVkaXRQb2xpY3kodGhpcy5wb2xpY3lJZCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGRhdGEgPSByZXNbMF07XHJcbiAgICAgICAgY29uc3QgY2F0ZWdvcnlJZHMgPSBkYXRhLmNhdGVnb3J5X2RldGFpbHNfYXJyLm1hcCgoaWQ6IGFueSkgPT4gaWQuY2F0T2JqSWQpO1xyXG4gICAgICAgIHRoaXMucG9saWN5QXBwcm92YWxGbGFnID0gZGF0YS5wb2xpY3lBcHByb3ZhbEZsYWc7XHJcbiAgICAgICAgdGhpcy5nZXRBcHByb3ZlcldvcmtGbG93KGNhdGVnb3J5SWRzKVxyXG4gICAgICAgIHRoaXMuZ2V0QXBwcm92ZXJzQW5kUmV2aWV3ZXJzTGlzdChjYXRlZ29yeUlkcywgZGF0YS5hcHByb3ZlcnMsIFtkYXRhLlJldmlld2VyTWVtYmVySWRdKVxyXG4gICAgICAgIHRoaXMucG9wdWxhdGVQb2xpY3lGb3JtKGRhdGEsIGNhdGVnb3J5SWRzKTtcclxuICAgICAgICB0aGlzLmZyZXF1ZW5jeURhdGFQb3B1bGF0aW9uKGRhdGEpXHJcbiAgICAgICAgdGhpcy5yZXZpZXdlckZyZXF1ZW5jeURhdGFQb3B1bGF0aW9uKGRhdGEpXHJcbiAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHBvcHVsYXRlUG9saWN5Rm9ybShkYXRhOiBhbnksIGNhdGVnb3J5SWRzOiBhbnkpIHtcclxuICAgIGNvbnN0IHJldmlld2VyRmlsZXMgPSBkYXRhLlJldmlld2VyQXR0YWNobWVudHMubWFwKChmaWxlOiBhbnkpID0+IHtcclxuICAgICAgZmlsZS5maWxlbmFtZSA9IGZpbGUubmFtZVxyXG4gICAgICBmaWxlLmZpbGVwYXRoID0gZmlsZS5maWxlX3BhdGhcclxuICAgICAgZmlsZS5vcmlnaW5hbF9maWxlbmFtZSA9IGZpbGUub3JnX25hbWVcclxuICAgICAgZmlsZS5maWxlX25hbWUgPSBmaWxlLm9yZ19uYW1lXHJcbiAgICAgIGZpbGUubGlua1NldCA9ICcnXHJcbiAgICAgIGRlbGV0ZSBmaWxlLm5hbWVcclxuICAgICAgZGVsZXRlIGZpbGUuZmlsZV9wYXRoXHJcbiAgICAgIGRlbGV0ZSBmaWxlLm9yZ19uYW1lXHJcblxyXG4gICAgICByZXR1cm4gZmlsZTtcclxuICAgIH0pXHJcbiAgICBjb25zdCBhdHRlc3RhdGlvbkZpbGVzID0gZGF0YS5hc3NvY2lhdGVkX2RvY3VtZW50cy5tYXAoKGVsZTogYW55KSA9PiB7XHJcbiAgICAgIGVsZS5maWxlbmFtZSA9IGVsZS5uYW1lXHJcbiAgICAgIGVsZS5maWxlcGF0aCA9IGVsZS5maWxlX3BhdGhcclxuICAgICAgZWxlLm9yaWdpbmFsX2ZpbGVuYW1lID0gZWxlLm9yaWdpbmFsX2ZpbGVfbmFtZVxyXG4gICAgICBlbGUuZmlsZV9uYW1lID0gZWxlLm9yaWdpbmFsX2ZpbGVfbmFtZVxyXG4gICAgICBlbGUubGlua1NldCA9IGVsZS5pc0xpbmtTZXRcclxuICAgICAgZGVsZXRlIGVsZS5uYW1lO1xyXG4gICAgICBkZWxldGUgZWxlLmZpbGVfcGF0aDtcclxuICAgICAgZGVsZXRlIGVsZS5vcmlnaW5hbF9maWxlX25hbWU7XHJcbiAgICAgIGRlbGV0ZSBlbGUuaXNMaW5rU2V0O1xyXG4gICAgICByZXR1cm4gZWxlO1xyXG4gICAgfSlcclxuICAgIGNvbnN0IGdyb3VwX2VtcGxveWVlSWRzID0gZGF0YS5ncm91cF9lbXBsb3llZU5hbWVzLm1hcCgoaWQ6IGFueSkgPT4gaWQuZW1wbG95ZWVfaWQpO1xyXG4gICAgY29uc3QgZ3JvdXBfSWRzID0gZGF0YT8udXNlcmdyb3VwX2lkcz8ubWFwKChpZDphbnkpPT4gaWQpID8/IFtdXHJcblxyXG4gICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQ2F0ZWdvcmllcyA9IHRoaXMuc2V0TGlzdCh0aGlzLmNhdGVnb3J5TGlzdCwgY2F0ZWdvcnlJZHMsICdfaWQnKTtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5wb2xpY3lOYW1lID0gZGF0YS5wb2xpY3lfbmFtZSxcclxuICAgICAgdGhpcy5wb2xpY3lGb3JtLnBvbGljeU5vdGVzID0gZGF0YS5ub3RlcyxcclxuICAgICAgdGhpcy5wb2xpY3lGb3JtLmN1c3RvbVRhZ3MgPSAoZGF0YS5jdXN0b21fdGFncykgPyBkYXRhLmN1c3RvbV90YWdzIDogW107XHJcblxyXG4gICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQXNzaWduZWVzID0gKGdyb3VwX2VtcGxveWVlSWRzLmxlbmd0aCA+IDApID8gdGhpcy5zZXRMaXN0KHRoaXMuYXNzaWduZWVzTGlzdCwgZ3JvdXBfZW1wbG95ZWVJZHMsICdlbXBsb3llZV9pZCcpIDogW107IC8vZG91YnQgaW4gbmFtZVxyXG5cclxuICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEdyb3VwQXNzaWduZWUgPSAoZ3JvdXBfSWRzPy5sZW5ndGggPiAwKSA/IHRoaXMuc2V0TGlzdCh0aGlzLmdyb3Vwc0xpc3QsZ3JvdXBfSWRzLCdfaWQnKSA6IFtdO1xyXG5cclxuICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZFJDcyA9IChkYXRhLmVudGl0aWVzKSA/IHRoaXMuc2V0TGlzdCh0aGlzLnJjTGlzdCwgZGF0YS5lbnRpdGllcy5zcGxpdCgnLCcpLCAnaXRlbV9pZCcpIDogW107XHJcbiAgICB0aGlzLnBvbGljeUZvcm0uQ0NGYWlsRW1haWwgPSAoZGF0YS5DQ0ZhaWxFbWFpbCkgPyB0aGlzLnNldExpc3QodGhpcy5vdmVyc2VlcnNMaXN0LCBkYXRhLkNDRmFpbEVtYWlsLCAnZW1wbG95ZWVfZW1haWwnKSA6IFtdO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLkNDRmFpbEVtYWlsR3JvdXAgPSAoZGF0YT8uY2NfZmFpbF91c2VyZ3JvdXBfaWRzPy5sZW5ndGggPiAwKSA/IHRoaXMuc2V0TGlzdCh0aGlzLm92ZXJzZWVyR3JvdXBzTGlzdCwgZGF0YT8uY2NfZmFpbF91c2VyZ3JvdXBfaWRzLCAnX2lkJykgOiBbXTtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5DQ0VtYWlsID0gKGRhdGEuQ0NFbWFpbCkgPyB0aGlzLnNldExpc3QodGhpcy5vdmVyc2VlcnNMaXN0LCBkYXRhLkNDRW1haWwuc3BsaXQoJywnKSwgJ2VtcGxveWVlX2VtYWlsJykgOiBbXTtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5DQ0dyb3VwRW1haWwgPSAoZGF0YT8uY2NfdXNlcmdyb3VwX2lkcz8ubGVuZ3RoID4gMCkgPyB0aGlzLnNldExpc3QodGhpcy5vdmVyc2Vlckdyb3Vwc0xpc3QsIGRhdGE/LmNjX3VzZXJncm91cF9pZHMsICdfaWQnKSA6IFtdO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLmF2YWlsYWJsZU9uUG9ydGFsID0gZGF0YS5lbmFibGVQb3J0YWwgPyB0cnVlIDogZmFsc2U7XHJcbiAgICB0aGlzLnBvbGljeUZvcm0uYWNjZXB0U3VnZ2VzdGlvbnMgPSBkYXRhLmVuYWJsZVN1Z2dlc3Rpb24gPyB0cnVlIDogZmFsc2U7XHJcbiAgICB0aGlzLnBvbGljeUZvcm0ucmVxdWlyZXNTaWduYXR1cmVGb3JBdHRlc3RhdGlvbiA9IGRhdGEuaXNfc2lnbmF0dXJlX3JlcXVpcmVkID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLnJpc2tSYXRpbmcgPSAoZGF0YS5yaXNrX2NsYXNzKSA/IE51bWJlcihkYXRhLnJpc2tfY2xhc3MpIDogMTtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5hc3NvY2lhdGVkRG9jdW1lbnRzID0gKGRhdGEuYXNzb2NpYXRlZF9kb2N1bWVudHMpID8ge1xyXG4gICAgICBmb3JtYXRGaWxlczogYXR0ZXN0YXRpb25GaWxlc1xyXG4gICAgfSA6IHsgZm9ybWF0RmlsZXM6IFtdIH07XHJcbiAgICB0aGlzLnBvbGljeUZvcm0ucG9saWN5RHVlRGF0ZSA9IChkYXRhLnN0YXJ0RGF0ZSkgPyBtb21lbnQoZGF0YS5zdGFydERhdGUpIDogbW9tZW50KCk7XHJcbiAgICB0aGlzLnBvbGljeUZvcm0uY2hlY2twb2ludERldGFpbHMgPSAoZGF0YS5jaGVja3BvaW50cykgPyBkYXRhLmNoZWNrcG9pbnRzIDogW107XHJcbiAgICB0aGlzLnBvbGljeUZvcm0udG90YWxRdWVzdGlvbiA9IChkYXRhLnRvdGFsX21hcmtzKSA/IGRhdGEudG90YWxfbWFya3MgOiAwO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLnBhc3NpbmdNYXJrcyA9IChkYXRhLnBhc3NfbWFya3MpID8gZGF0YS5wYXNzX21hcmtzIDogMDtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5kb2N1bWVudHNBbmRMaW5rcyA9IChkYXRhLlJldmlld2VyQXR0YWNobWVudHMpID8ge1xyXG4gICAgICBmb3JtYXRGaWxlczogcmV2aWV3ZXJGaWxlcyxcclxuICAgICAgZm9ybWF0TGlua3M6IGRhdGEuUmV2aWV3ZXJMaW5rcyxcclxuICAgIH0gOiB7IGZvcm1hdEZpbGVzOiBbXSwgZm9ybWF0TGlua3M6IFtdIH07XHJcbiAgICB0aGlzLnBvbGljeUZvcm0uYWRkUmVzcG9uc2liaWxpdHlDZW50ZXJzID0gdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkUkNzLmxlbmd0aCA+IDAgPyB0cnVlIDogZmFsc2U7XHJcbiAgICB0aGlzLnBvbGljeUZvcm0uYWRkUmV2aWV3ZXJzID0gKGRhdGEuUmV2aWV3ZXJNZW1iZXJJZCkgPyB0cnVlIDogZmFsc2U7XHJcbiAgICB0aGlzLnBvbGljeUZvcm0uYWRkQ2hlY2twb2ludHMgPSAodGhpcy5wb2xpY3lGb3JtLmNoZWNrcG9pbnREZXRhaWxzLmxlbmd0aCA+IDApID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLmFkZE92ZXJzZWVycyA9ICh0aGlzLnBvbGljeUZvcm0/LkNDRmFpbEVtYWlsPy5sZW5ndGggPiAwIHx8IHRoaXMucG9saWN5Rm9ybT8uQ0NFbWFpbD8ubGVuZ3RoID4gMCB8fCB0aGlzLnBvbGljeUZvcm0/LkNDRmFpbEVtYWlsR3JvdXA/Lmxlbmd0aD4wIHx8IHRoaXMucG9saWN5Rm9ybT8uQ0NHcm91cEVtYWlsPy5sZW5ndGg+MCkgPyB0cnVlIDogZmFsc2U7XHJcbiAgICB0aGlzLnBvbGljeUZvcm0uYWRkQXNzb2NpYXRlZERvY3VtZW50cyA9IGRhdGEuYXNzb2NpYXRlZF9kb2N1bWVudHMubGVuZ3RoID4gMCA/IHRydWUgOiBmYWxzZTtcclxuICAgIHRoaXMuY2NFbWFpbE9iaklkcyA9IChkYXRhPy5jY191c2VyZ3JvdXBfaWRzPy5sZW5ndGggPiAwKSA/ICBkYXRhPy5jY191c2VyZ3JvdXBfaWRzIDogW107XHJcbiAgICB0aGlzLmNjRmFpbEdyb3VwT2JqSWRzID0gKGRhdGE/LmNjX2ZhaWxfdXNlcmdyb3VwX2lkcz8ubGVuZ3RoID4gMCkgPyAgZGF0YT8uY2NfZmFpbF91c2VyZ3JvdXBfaWRzIDogW107XHJcbiAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKTtcclxuICAgIC8vIHRoaXMuY2hlY2tGb3JDcmVhdGVEb2N1bWVudHMoKTtcclxuICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcblxyXG4gIH1cclxuICBjaGFuZ2VOYW1lKGV2ZW50OnN0cmluZyl7XHJcbiAgICBsZXQgdGV4dCA9IGV2ZW50O1xyXG4gICAgdGV4dCA9IHRleHQucmVwbGFjZSgvPCguKj8pPi9naSwnJyk7XHJcbiAgICByZXR1cm4gdGV4dDtcclxuICB9XHJcblxyXG5cclxuXHJcbn1cclxuIl19
|