@senior-gestao-pessoas/payroll-core 8.7.0 → 9.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/senior-gestao-pessoas-payroll-core.umd.js +3024 -10904
- package/bundles/senior-gestao-pessoas-payroll-core.umd.js.map +1 -1
- package/bundles/senior-gestao-pessoas-payroll-core.umd.min.js +1 -1
- package/bundles/senior-gestao-pessoas-payroll-core.umd.min.js.map +1 -1
- package/components/workstationgroup-lookup/autocomplete.service.d.ts +31 -0
- package/esm2015/components/admission-draft-summary/admission-draft-summary.component.js +106 -0
- package/esm2015/components/admission-draft-summary/admission-draft-summary.module.js +17 -0
- package/esm2015/components/admission-draft-summary/admission-draft-summary.service.js +27 -0
- package/esm2015/components/admission-draft-summary/index.js +4 -0
- package/esm2015/components/block-ui/block-ui.component.js +19 -0
- package/esm2015/components/block-ui/block-ui.module.js +25 -0
- package/esm2015/components/block-ui/index.js +3 -0
- package/esm2015/components/breadcrumb/breadcrumb.component.js +76 -0
- package/esm2015/components/breadcrumb/breadcrumb.module.js +25 -0
- package/esm2015/components/breadcrumb/index.js +3 -0
- package/esm2015/components/control-messages-error/control-messages-error.component.js +28 -0
- package/esm2015/components/control-messages-error/control-messages-error.module.js +17 -0
- package/esm2015/components/control-messages-error/index.js +3 -0
- package/esm2015/components/custom-fields/custom-fields.component.js +32 -0
- package/esm2015/components/custom-fields/custom-fields.module.js +31 -0
- package/esm2015/components/custom-fields/index.js +3 -0
- package/esm2015/components/data-list/data-list.component.js +305 -0
- package/esm2015/components/data-list/data-list.module.js +28 -0
- package/esm2015/components/data-list/data-list.service.js +19 -0
- package/esm2015/components/data-list/entity-odata-response.js +26 -0
- package/esm2015/components/data-list/index.js +2 -0
- package/esm2015/components/data-list-rest/data-list-rest.component.js +239 -0
- package/esm2015/components/data-list-rest/data-list-rest.module.js +28 -0
- package/esm2015/components/data-list-rest/data-list-rest.service.js +19 -0
- package/esm2015/components/data-list-rest/index.js +2 -0
- package/esm2015/components/directives/directives.module.js +17 -0
- package/esm2015/components/directives/index.js +4 -0
- package/esm2015/components/directives/name-not-spaces.directive.js +31 -0
- package/esm2015/components/directives/only-number.directive.js +41 -0
- package/esm2015/components/employee-selector/employee-selector.component.js +65 -0
- package/esm2015/components/employee-selector/employee-selector.module.js +18 -0
- package/esm2015/components/employee-selector/index.js +3 -0
- package/esm2015/components/employee-summary/employee-summary.component.js +108 -0
- package/esm2015/components/employee-summary/employee-summary.module.js +17 -0
- package/esm2015/components/employee-summary/employee-summary.service.js +33 -0
- package/esm2015/components/employee-summary/index.js +4 -0
- package/esm2015/components/error-page/error-page.component.js +15 -0
- package/esm2015/components/error-page/error-page.module.js +16 -0
- package/esm2015/components/error-page/index.js +3 -0
- package/esm2015/components/field-validator/field-validator.component.js +40 -0
- package/esm2015/components/field-validator/field-validator.module.js +18 -0
- package/esm2015/components/field-validator/index.js +3 -0
- package/esm2015/components/file-upload/file-upload.component.js +135 -0
- package/esm2015/components/file-upload/file-upload.module.js +19 -0
- package/esm2015/components/file-upload/file-upload.service.js +44 -0
- package/esm2015/components/file-upload/index.js +3 -0
- package/esm2015/components/from-to/from-to.component.js +16 -0
- package/esm2015/components/from-to/from-to.module.js +19 -0
- package/esm2015/components/from-to/index.js +3 -0
- package/esm2015/components/historical-bank-account/historical-bank-account-form/historical-bank-account-form.component.js +332 -0
- package/esm2015/components/historical-bank-account/historical-bank-account.component.js +329 -0
- package/esm2015/components/historical-bank-account/historical-bank-account.module.js +56 -0
- package/esm2015/components/historical-bank-account/historical-bank-account.service.js +20 -0
- package/esm2015/components/historical-bank-account/index.js +4 -0
- package/esm2015/components/historical-bank-account-list/historical-bank-account-list.component.js +223 -0
- package/esm2015/components/historical-bank-account-list/historical-bank-account-list.module.js +39 -0
- package/esm2015/components/historical-bank-account-list/historical-bank-account-list.service.js +35 -0
- package/esm2015/components/historical-bank-account-list/index.js +4 -0
- package/esm2015/components/image-cropper/image-crop.component.js +146 -0
- package/esm2015/components/image-cropper/image-crop.module.js +39 -0
- package/esm2015/components/image-cropper/image-crop.service.js +88 -0
- package/esm2015/components/image-cropper/index.js +4 -0
- package/esm2015/components/input-date/index.js +3 -0
- package/esm2015/components/input-date/input-date.component.js +115 -0
- package/esm2015/components/input-date/input-date.module.js +17 -0
- package/esm2015/components/input-date-model/index.js +3 -0
- package/esm2015/components/input-date-model/input-date-model.component.js +100 -0
- package/esm2015/components/input-date-model/input-date-model.module.js +17 -0
- package/esm2015/components/input-rest-auto-complete/index.js +4 -0
- package/esm2015/components/input-rest-auto-complete/input-rest-auto-complete.component.js +303 -0
- package/esm2015/components/input-rest-auto-complete/input-rest-auto-complete.module.js +21 -0
- package/esm2015/components/input-rest-auto-complete/input-rest-auto-complete.service.js +20 -0
- package/esm2015/components/input-rest-auto-complete-employee/index.js +3 -0
- package/esm2015/components/input-rest-auto-complete-employee/input-rest-auto-complete-employee.component.js +190 -0
- package/esm2015/components/input-rest-auto-complete-employee/input-rest-auto-complete-employee.module.js +28 -0
- package/esm2015/components/input-rest-auto-complete-employee/input-rest-auto-complete-employee.service.js +20 -0
- package/esm2015/components/input-rest-auto-complete-employee-model/index.js +3 -0
- package/esm2015/components/input-rest-auto-complete-employee-model/input-rest-auto-complete-employee-model.component.js +179 -0
- package/esm2015/components/input-rest-auto-complete-employee-model/input-rest-auto-complete-employee-model.module.js +28 -0
- package/esm2015/components/input-rest-auto-complete-employee-model/input-rest-auto-complete-employee-model.service.js +20 -0
- package/esm2015/components/input-rest-auto-complete-enum/index.js +4 -0
- package/esm2015/components/input-rest-auto-complete-enum/input-rest-auto-complete-enum.component.js +146 -0
- package/esm2015/components/input-rest-auto-complete-enum/input-rest-auto-complete-enum.module.js +28 -0
- package/esm2015/components/input-rest-auto-complete-enum/input-rest-auto-complete-enum.service.js +23 -0
- package/esm2015/components/input-rest-auto-complete-jobposition/index.js +4 -0
- package/esm2015/components/input-rest-auto-complete-jobposition/input-rest-auto-complete-jobposition.component.js +173 -0
- package/esm2015/components/input-rest-auto-complete-jobposition/input-rest-auto-complete-jobposition.module.js +28 -0
- package/esm2015/components/input-rest-auto-complete-jobposition/input-rest-auto-complete-jobposition.service.js +20 -0
- package/esm2015/components/input-rest-auto-complete-model/index.js +3 -0
- package/esm2015/components/input-rest-auto-complete-model/input-rest-auto-complete-model.component.js +227 -0
- package/esm2015/components/input-rest-auto-complete-model/input-rest-auto-complete-model.module.js +28 -0
- package/esm2015/components/input-rest-auto-complete-model/input-rest-auto-complete-model.service.js +20 -0
- package/esm2015/components/input-rest-auto-complete-model-enum/index.js +3 -0
- package/esm2015/components/input-rest-auto-complete-model-enum/input-rest-auto-complete-model-enum.component.js +124 -0
- package/esm2015/components/input-rest-auto-complete-model-enum/input-rest-auto-complete-model-enum.module.js +28 -0
- package/esm2015/components/input-rest-auto-complete-model-enum/input-rest-auto-complete-model-enum.service.js +23 -0
- package/esm2015/components/list-rest/index.js +3 -0
- package/esm2015/components/list-rest/list-rest.component.js +117 -0
- package/esm2015/components/list-rest/list-rest.module.js +33 -0
- package/esm2015/components/list-rest/list-rest.service.js +23 -0
- package/esm2015/components/lookup/index.js +2 -0
- package/esm2015/components/lookup/lookup.component.js +324 -0
- package/esm2015/components/lookup/lookup.module.js +20 -0
- package/esm2015/components/lookup/lookup.service.js +52 -0
- package/esm2015/components/shared/http-client.service.js +165 -0
- package/esm2015/components/shared/shared.module.js +21 -0
- package/esm2015/components/spinner/index.js +3 -0
- package/esm2015/components/spinner/spinner-loader.component.js +12 -0
- package/esm2015/components/spinner/spinner-loader.module.js +23 -0
- package/esm2015/components/toast/index.js +4 -0
- package/esm2015/components/toast/toast.component.js +88 -0
- package/esm2015/components/toast/toast.module.js +20 -0
- package/esm2015/components/toast/toast.service.js +42 -0
- package/esm2015/components/type-admission/index.js +3 -0
- package/esm2015/components/type-admission/type-admission.module.js +14 -0
- package/esm2015/components/type-admission/type-admission.services.js +62 -0
- package/esm2015/components/utils/cnpj-validator.js +62 -0
- package/esm2015/components/utils/cpf-validator.js +45 -0
- package/esm2015/components/utils/date-validator/date-validators.js +144 -0
- package/esm2015/components/utils/helpers.js +476 -0
- package/esm2015/components/utils/validations.js +127 -0
- package/esm2015/components/vanilla/string-methods.js +22 -0
- package/esm2015/components/workstationgroup-lookup/autocomplete.service.js +111 -0
- package/esm2015/components/workstationgroup-lookup/index.js +3 -0
- package/esm2015/components/workstationgroup-lookup/lookup.service.js +142 -0
- package/esm2015/components/workstationgroup-lookup/workstationgroup-lookup.component.js +587 -0
- package/esm2015/components/workstationgroup-lookup/workstationgroup-lookup.dto.js +48 -0
- package/esm2015/components/workstationgroup-lookup/workstationgroup-lookup.module.js +21 -0
- package/esm2015/core/entities/entity-odata-parameter.js +33 -0
- package/esm2015/core/entities/index.js +2 -0
- package/esm2015/core/enums/companyIndicationType.js +18 -0
- package/esm2015/core/enums/comparetype.enumeration.js +14 -0
- package/esm2015/core/enums/coreFieldType.js +5 -0
- package/esm2015/core/enums/direction.enumeration.js +6 -0
- package/esm2015/core/enums/httpRequestType.js +6 -0
- package/esm2015/core/enums/index.js +14 -0
- package/esm2015/core/enums/menu-type.enumeration.js +6 -0
- package/esm2015/core/enums/moduleType.js +22 -0
- package/esm2015/core/enums/operators.enumeration.js +14 -0
- package/esm2015/core/enums/parameter-type.enumeration.js +12 -0
- package/esm2015/core/enums/report-format.enumeration.js +12 -0
- package/esm2015/core/enums/report-stage.enumeration.js +12 -0
- package/esm2015/core/enums/serviceType.js +9 -0
- package/esm2015/core/enums/usingType.js +42 -0
- package/esm2015/core/interfaces/date-compare-options.js +1 -0
- package/esm2015/core/interfaces/date-validate-options.js +1 -0
- package/esm2015/core/interfaces/field-validators-object.js +1 -0
- package/esm2015/core/interfaces/index.js +1 -0
- package/esm2015/core/interfaces/pagination-data.js +1 -0
- package/esm2015/core/interfaces/report/domain-service.interface.js +1 -0
- package/esm2015/core/interfaces/report/generation-status.interface.js +1 -0
- package/esm2015/core/interfaces/report/get-parameters-out.interface.js +1 -0
- package/esm2015/core/interfaces/report/index.js +1 -0
- package/esm2015/core/interfaces/report/lookup-parameter.interface.js +1 -0
- package/esm2015/core/interfaces/report/parameter-def.interface.js +1 -0
- package/esm2015/core/interfaces/report/parameter-value.interface.js +1 -0
- package/esm2015/core/interfaces/report/report-header.interface.js +1 -0
- package/esm2015/core/interfaces/report/report-in.interface.js +1 -0
- package/esm2015/core/interfaces/report/report-menu.interface.js +1 -0
- package/esm2015/core/interfaces/report/report-out.interface.js +1 -0
- package/esm2015/core/interfaces/report/report.interface.js +1 -0
- package/esm2015/public_api.js +52 -58
- package/esm2015/senior-gestao-pessoas-payroll-core.js +19 -24
- package/esm2015/services/autocomplete-parameters.service.js +116 -0
- package/esm2015/services/company-indications.service.js +42 -0
- package/esm2015/services/form-comparator.service.js +99 -0
- package/esm2015/services/integration.service.js +19 -0
- package/esm2015/services/lookup-parameters.service.js +345 -0
- package/esm2015/services/permissions.service.js +89 -0
- package/esm2015/services/report.service.js +109 -0
- package/esm2015/services/services.module.js +29 -0
- package/esm2015/services/workflow-data.service.js +26 -0
- package/esm2015/services/workflow-integrator.service.js +248 -0
- package/esm5/components/admission-draft-summary/admission-draft-summary.component.js +109 -0
- package/esm5/components/admission-draft-summary/admission-draft-summary.module.js +20 -0
- package/esm5/components/admission-draft-summary/admission-draft-summary.service.js +28 -0
- package/esm5/components/admission-draft-summary/index.js +4 -0
- package/esm5/components/block-ui/block-ui.component.js +22 -0
- package/esm5/components/block-ui/block-ui.module.js +28 -0
- package/esm5/components/block-ui/index.js +3 -0
- package/esm5/components/breadcrumb/breadcrumb.component.js +79 -0
- package/esm5/components/breadcrumb/breadcrumb.module.js +28 -0
- package/esm5/components/breadcrumb/index.js +3 -0
- package/esm5/components/control-messages-error/control-messages-error.component.js +34 -0
- package/esm5/components/control-messages-error/control-messages-error.module.js +20 -0
- package/esm5/components/control-messages-error/index.js +3 -0
- package/esm5/components/custom-fields/custom-fields.component.js +33 -0
- package/esm5/components/custom-fields/custom-fields.module.js +34 -0
- package/esm5/components/custom-fields/index.js +3 -0
- package/esm5/components/data-list/data-list.component.js +338 -0
- package/esm5/components/data-list/data-list.module.js +31 -0
- package/esm5/components/data-list/data-list.service.js +20 -0
- package/esm5/components/data-list/entity-odata-response.js +40 -0
- package/esm5/components/data-list/index.js +2 -0
- package/esm5/components/data-list-rest/data-list-rest.component.js +264 -0
- package/esm5/components/data-list-rest/data-list-rest.module.js +31 -0
- package/esm5/components/data-list-rest/data-list-rest.service.js +20 -0
- package/esm5/components/data-list-rest/index.js +2 -0
- package/esm5/components/directives/directives.module.js +20 -0
- package/esm5/components/directives/index.js +4 -0
- package/esm5/components/directives/name-not-spaces.directive.js +32 -0
- package/esm5/components/directives/only-number.directive.js +42 -0
- package/esm5/components/employee-selector/employee-selector.component.js +75 -0
- package/esm5/components/employee-selector/employee-selector.module.js +21 -0
- package/esm5/components/employee-selector/index.js +3 -0
- package/esm5/components/employee-summary/employee-summary.component.js +111 -0
- package/esm5/components/employee-summary/employee-summary.module.js +20 -0
- package/esm5/components/employee-summary/employee-summary.service.js +34 -0
- package/esm5/components/employee-summary/index.js +4 -0
- package/esm5/components/error-page/error-page.component.js +17 -0
- package/esm5/components/error-page/error-page.module.js +19 -0
- package/esm5/components/error-page/index.js +3 -0
- package/esm5/components/field-validator/field-validator.component.js +42 -0
- package/esm5/components/field-validator/field-validator.module.js +21 -0
- package/esm5/components/field-validator/index.js +3 -0
- package/esm5/components/file-upload/file-upload.component.js +138 -0
- package/esm5/components/file-upload/file-upload.module.js +22 -0
- package/esm5/components/file-upload/file-upload.service.js +45 -0
- package/esm5/components/file-upload/index.js +3 -0
- package/esm5/components/from-to/from-to.component.js +18 -0
- package/esm5/components/from-to/from-to.module.js +22 -0
- package/esm5/components/from-to/index.js +3 -0
- package/esm5/components/historical-bank-account/historical-bank-account-form/historical-bank-account-form.component.js +353 -0
- package/esm5/components/historical-bank-account/historical-bank-account.component.js +363 -0
- package/esm5/components/historical-bank-account/historical-bank-account.module.js +59 -0
- package/esm5/components/historical-bank-account/historical-bank-account.service.js +22 -0
- package/esm5/components/historical-bank-account/index.js +4 -0
- package/esm5/components/historical-bank-account-list/historical-bank-account-list.component.js +243 -0
- package/esm5/components/historical-bank-account-list/historical-bank-account-list.module.js +42 -0
- package/esm5/components/historical-bank-account-list/historical-bank-account-list.service.js +37 -0
- package/esm5/components/historical-bank-account-list/index.js +4 -0
- package/esm5/components/image-cropper/image-crop.component.js +164 -0
- package/esm5/components/image-cropper/image-crop.module.js +41 -0
- package/esm5/components/image-cropper/image-crop.service.js +106 -0
- package/esm5/components/image-cropper/index.js +4 -0
- package/esm5/components/input-date/index.js +3 -0
- package/esm5/components/input-date/input-date.component.js +129 -0
- package/esm5/components/input-date/input-date.module.js +20 -0
- package/esm5/components/input-date-model/index.js +3 -0
- package/esm5/components/input-date-model/input-date-model.component.js +110 -0
- package/esm5/components/input-date-model/input-date-model.module.js +20 -0
- package/esm5/components/input-rest-auto-complete/index.js +4 -0
- package/esm5/components/input-rest-auto-complete/input-rest-auto-complete.component.js +317 -0
- package/esm5/components/input-rest-auto-complete/input-rest-auto-complete.module.js +24 -0
- package/esm5/components/input-rest-auto-complete/input-rest-auto-complete.service.js +22 -0
- package/esm5/components/input-rest-auto-complete-employee/index.js +3 -0
- package/esm5/components/input-rest-auto-complete-employee/input-rest-auto-complete-employee.component.js +192 -0
- package/esm5/components/input-rest-auto-complete-employee/input-rest-auto-complete-employee.module.js +31 -0
- package/esm5/components/input-rest-auto-complete-employee/input-rest-auto-complete-employee.service.js +21 -0
- package/esm5/components/input-rest-auto-complete-employee-model/index.js +3 -0
- package/esm5/components/input-rest-auto-complete-employee-model/input-rest-auto-complete-employee-model.component.js +185 -0
- package/esm5/components/input-rest-auto-complete-employee-model/input-rest-auto-complete-employee-model.module.js +31 -0
- package/esm5/components/input-rest-auto-complete-employee-model/input-rest-auto-complete-employee-model.service.js +21 -0
- package/esm5/components/input-rest-auto-complete-enum/index.js +4 -0
- package/esm5/components/input-rest-auto-complete-enum/input-rest-auto-complete-enum.component.js +162 -0
- package/esm5/components/input-rest-auto-complete-enum/input-rest-auto-complete-enum.module.js +31 -0
- package/esm5/components/input-rest-auto-complete-enum/input-rest-auto-complete-enum.service.js +24 -0
- package/esm5/components/input-rest-auto-complete-jobposition/index.js +4 -0
- package/esm5/components/input-rest-auto-complete-jobposition/input-rest-auto-complete-jobposition.component.js +176 -0
- package/esm5/components/input-rest-auto-complete-jobposition/input-rest-auto-complete-jobposition.module.js +31 -0
- package/esm5/components/input-rest-auto-complete-jobposition/input-rest-auto-complete-jobposition.service.js +21 -0
- package/esm5/components/input-rest-auto-complete-model/index.js +3 -0
- package/esm5/components/input-rest-auto-complete-model/input-rest-auto-complete-model.component.js +234 -0
- package/esm5/components/input-rest-auto-complete-model/input-rest-auto-complete-model.module.js +31 -0
- package/esm5/components/input-rest-auto-complete-model/input-rest-auto-complete-model.service.js +22 -0
- package/esm5/components/input-rest-auto-complete-model-enum/index.js +3 -0
- package/esm5/components/input-rest-auto-complete-model-enum/input-rest-auto-complete-model-enum.component.js +130 -0
- package/esm5/components/input-rest-auto-complete-model-enum/input-rest-auto-complete-model-enum.module.js +31 -0
- package/esm5/components/input-rest-auto-complete-model-enum/input-rest-auto-complete-model-enum.service.js +24 -0
- package/esm5/components/list-rest/index.js +3 -0
- package/esm5/components/list-rest/list-rest.component.js +119 -0
- package/esm5/components/list-rest/list-rest.module.js +36 -0
- package/esm5/components/list-rest/list-rest.service.js +24 -0
- package/esm5/components/lookup/index.js +2 -0
- package/esm5/components/lookup/lookup.component.js +339 -0
- package/esm5/components/lookup/lookup.module.js +23 -0
- package/esm5/components/lookup/lookup.service.js +54 -0
- package/esm5/components/shared/http-client.service.js +179 -0
- package/esm5/components/shared/shared.module.js +22 -0
- package/esm5/components/spinner/index.js +3 -0
- package/esm5/components/spinner/spinner-loader.component.js +15 -0
- package/esm5/components/spinner/spinner-loader.module.js +26 -0
- package/esm5/components/toast/index.js +4 -0
- package/esm5/components/toast/toast.component.js +88 -0
- package/esm5/components/toast/toast.module.js +23 -0
- package/esm5/components/toast/toast.service.js +47 -0
- package/esm5/components/type-admission/index.js +3 -0
- package/esm5/components/type-admission/type-admission.module.js +17 -0
- package/esm5/components/type-admission/type-admission.services.js +75 -0
- package/esm5/components/utils/cnpj-validator.js +66 -0
- package/esm5/components/utils/cpf-validator.js +49 -0
- package/esm5/components/utils/date-validator/date-validators.js +149 -0
- package/esm5/components/utils/helpers.js +502 -0
- package/esm5/components/utils/validations.js +131 -0
- package/esm5/components/vanilla/string-methods.js +24 -0
- package/esm5/components/workstationgroup-lookup/autocomplete.service.js +124 -0
- package/esm5/components/workstationgroup-lookup/index.js +3 -0
- package/esm5/components/workstationgroup-lookup/lookup.service.js +147 -0
- package/esm5/components/workstationgroup-lookup/workstationgroup-lookup.component.js +609 -0
- package/esm5/components/workstationgroup-lookup/workstationgroup-lookup.dto.js +50 -0
- package/esm5/components/workstationgroup-lookup/workstationgroup-lookup.module.js +24 -0
- package/esm5/core/entities/entity-odata-parameter.js +47 -0
- package/esm5/core/entities/index.js +2 -0
- package/esm5/core/enums/companyIndicationType.js +18 -0
- package/esm5/core/enums/comparetype.enumeration.js +14 -0
- package/esm5/core/enums/coreFieldType.js +5 -0
- package/esm5/core/enums/direction.enumeration.js +6 -0
- package/esm5/core/enums/httpRequestType.js +6 -0
- package/esm5/core/enums/index.js +14 -0
- package/esm5/core/enums/menu-type.enumeration.js +6 -0
- package/esm5/core/enums/moduleType.js +22 -0
- package/esm5/core/enums/operators.enumeration.js +14 -0
- package/esm5/core/enums/parameter-type.enumeration.js +12 -0
- package/esm5/core/enums/report-format.enumeration.js +12 -0
- package/esm5/core/enums/report-stage.enumeration.js +12 -0
- package/esm5/core/enums/serviceType.js +9 -0
- package/esm5/core/enums/usingType.js +42 -0
- package/esm5/core/interfaces/date-compare-options.js +1 -0
- package/esm5/core/interfaces/date-validate-options.js +1 -0
- package/esm5/core/interfaces/field-validators-object.js +1 -0
- package/esm5/core/interfaces/index.js +1 -0
- package/esm5/core/interfaces/pagination-data.js +1 -0
- package/esm5/core/interfaces/report/domain-service.interface.js +1 -0
- package/esm5/core/interfaces/report/generation-status.interface.js +1 -0
- package/esm5/core/interfaces/report/get-parameters-out.interface.js +1 -0
- package/esm5/core/interfaces/report/index.js +1 -0
- package/esm5/core/interfaces/report/lookup-parameter.interface.js +1 -0
- package/esm5/core/interfaces/report/parameter-def.interface.js +1 -0
- package/esm5/core/interfaces/report/parameter-value.interface.js +1 -0
- package/esm5/core/interfaces/report/report-header.interface.js +1 -0
- package/esm5/core/interfaces/report/report-in.interface.js +1 -0
- package/esm5/core/interfaces/report/report-menu.interface.js +1 -0
- package/esm5/core/interfaces/report/report-out.interface.js +1 -0
- package/esm5/core/interfaces/report/report.interface.js +1 -0
- package/esm5/public_api.js +52 -58
- package/esm5/senior-gestao-pessoas-payroll-core.js +19 -24
- package/esm5/services/autocomplete-parameters.service.js +129 -0
- package/esm5/services/company-indications.service.js +43 -0
- package/esm5/services/form-comparator.service.js +119 -0
- package/esm5/services/integration.service.js +20 -0
- package/esm5/services/lookup-parameters.service.js +362 -0
- package/esm5/services/permissions.service.js +100 -0
- package/esm5/services/report.service.js +110 -0
- package/esm5/services/services.module.js +32 -0
- package/esm5/services/workflow-data.service.js +27 -0
- package/esm5/services/workflow-integrator.service.js +361 -0
- package/fesm2015/senior-gestao-pessoas-payroll-core.js +2939 -8866
- package/fesm2015/senior-gestao-pessoas-payroll-core.js.map +1 -1
- package/fesm5/senior-gestao-pessoas-payroll-core.js +2999 -10876
- package/fesm5/senior-gestao-pessoas-payroll-core.js.map +1 -1
- package/package.json +7 -1
- package/public_api.d.ts +52 -52
- package/senior-gestao-pessoas-payroll-core.d.ts +17 -17
- package/senior-gestao-pessoas-payroll-core.metadata.json +1 -1
- package/esm2015/lib/components/admission-draft-summary/admission-draft-summary.component.js +0 -203
- package/esm2015/lib/components/admission-draft-summary/admission-draft-summary.module.js +0 -20
- package/esm2015/lib/components/admission-draft-summary/admission-draft-summary.service.js +0 -59
- package/esm2015/lib/components/admission-draft-summary/index.js +0 -9
- package/esm2015/lib/components/block-ui/block-ui.component.js +0 -26
- package/esm2015/lib/components/block-ui/block-ui.module.js +0 -28
- package/esm2015/lib/components/block-ui/index.js +0 -8
- package/esm2015/lib/components/breadcrumb/breadcrumb.component.js +0 -151
- package/esm2015/lib/components/breadcrumb/breadcrumb.module.js +0 -28
- package/esm2015/lib/components/breadcrumb/index.js +0 -8
- package/esm2015/lib/components/control-messages-error/control-messages-error.component.js +0 -41
- package/esm2015/lib/components/control-messages-error/control-messages-error.module.js +0 -20
- package/esm2015/lib/components/control-messages-error/index.js +0 -8
- package/esm2015/lib/components/custom-fields/custom-fields.component.js +0 -65
- package/esm2015/lib/components/custom-fields/custom-fields.module.js +0 -34
- package/esm2015/lib/components/custom-fields/index.js +0 -8
- package/esm2015/lib/components/data-list/data-list.component.js +0 -456
- package/esm2015/lib/components/data-list/data-list.module.js +0 -31
- package/esm2015/lib/components/data-list/data-list.service.js +0 -38
- package/esm2015/lib/components/data-list/entity-odata-response.js +0 -72
- package/esm2015/lib/components/data-list/index.js +0 -7
- package/esm2015/lib/components/data-list-rest/data-list-rest.component.js +0 -354
- package/esm2015/lib/components/data-list-rest/data-list-rest.module.js +0 -31
- package/esm2015/lib/components/data-list-rest/data-list-rest.service.js +0 -38
- package/esm2015/lib/components/data-list-rest/index.js +0 -7
- package/esm2015/lib/components/directives/directives.module.js +0 -20
- package/esm2015/lib/components/directives/index.js +0 -9
- package/esm2015/lib/components/directives/name-not-spaces.directive.js +0 -59
- package/esm2015/lib/components/directives/only-number.directive.js +0 -60
- package/esm2015/lib/components/employee-selector/employee-selector.component.js +0 -145
- package/esm2015/lib/components/employee-selector/employee-selector.module.js +0 -21
- package/esm2015/lib/components/employee-selector/index.js +0 -8
- package/esm2015/lib/components/employee-summary/employee-summary.component.js +0 -200
- package/esm2015/lib/components/employee-summary/employee-summary.module.js +0 -20
- package/esm2015/lib/components/employee-summary/employee-summary.service.js +0 -74
- package/esm2015/lib/components/employee-summary/index.js +0 -9
- package/esm2015/lib/components/error-page/error-page.component.js +0 -23
- package/esm2015/lib/components/error-page/error-page.module.js +0 -19
- package/esm2015/lib/components/error-page/index.js +0 -8
- package/esm2015/lib/components/field-validator/field-validator.component.js +0 -64
- package/esm2015/lib/components/field-validator/field-validator.module.js +0 -21
- package/esm2015/lib/components/field-validator/index.js +0 -8
- package/esm2015/lib/components/file-upload/file-upload.component.js +0 -220
- package/esm2015/lib/components/file-upload/file-upload.module.js +0 -22
- package/esm2015/lib/components/file-upload/file-upload.service.js +0 -83
- package/esm2015/lib/components/file-upload/index.js +0 -8
- package/esm2015/lib/components/from-to/from-to.component.js +0 -25
- package/esm2015/lib/components/from-to/from-to.module.js +0 -22
- package/esm2015/lib/components/from-to/index.js +0 -8
- package/esm2015/lib/components/historical-bank-account/historical-bank-account-form/historical-bank-account-form.component.js +0 -514
- package/esm2015/lib/components/historical-bank-account/historical-bank-account.component.js +0 -542
- package/esm2015/lib/components/historical-bank-account/historical-bank-account.module.js +0 -59
- package/esm2015/lib/components/historical-bank-account/historical-bank-account.service.js +0 -40
- package/esm2015/lib/components/historical-bank-account/index.js +0 -9
- package/esm2015/lib/components/historical-bank-account-list/historical-bank-account-list.component.js +0 -359
- package/esm2015/lib/components/historical-bank-account-list/historical-bank-account-list.module.js +0 -42
- package/esm2015/lib/components/historical-bank-account-list/historical-bank-account-list.service.js +0 -62
- package/esm2015/lib/components/historical-bank-account-list/index.js +0 -9
- package/esm2015/lib/components/image-cropper/image-crop.component.js +0 -248
- package/esm2015/lib/components/image-cropper/image-crop.module.js +0 -38
- package/esm2015/lib/components/image-cropper/image-crop.service.js +0 -164
- package/esm2015/lib/components/image-cropper/index.js +0 -9
- package/esm2015/lib/components/input-date/index.js +0 -8
- package/esm2015/lib/components/input-date/input-date.component.js +0 -189
- package/esm2015/lib/components/input-date/input-date.module.js +0 -20
- package/esm2015/lib/components/input-date-model/index.js +0 -8
- package/esm2015/lib/components/input-date-model/input-date-model.component.js +0 -169
- package/esm2015/lib/components/input-date-model/input-date-model.module.js +0 -20
- package/esm2015/lib/components/input-rest-auto-complete/index.js +0 -9
- package/esm2015/lib/components/input-rest-auto-complete/input-rest-auto-complete.component.js +0 -444
- package/esm2015/lib/components/input-rest-auto-complete/input-rest-auto-complete.module.js +0 -24
- package/esm2015/lib/components/input-rest-auto-complete/input-rest-auto-complete.service.js +0 -40
- package/esm2015/lib/components/input-rest-auto-complete-employee/index.js +0 -8
- package/esm2015/lib/components/input-rest-auto-complete-employee/input-rest-auto-complete-employee.component.js +0 -263
- package/esm2015/lib/components/input-rest-auto-complete-employee/input-rest-auto-complete-employee.module.js +0 -31
- package/esm2015/lib/components/input-rest-auto-complete-employee/input-rest-auto-complete-employee.service.js +0 -40
- package/esm2015/lib/components/input-rest-auto-complete-employee-model/index.js +0 -8
- package/esm2015/lib/components/input-rest-auto-complete-employee-model/input-rest-auto-complete-employee-model.component.js +0 -253
- package/esm2015/lib/components/input-rest-auto-complete-employee-model/input-rest-auto-complete-employee-model.module.js +0 -31
- package/esm2015/lib/components/input-rest-auto-complete-employee-model/input-rest-auto-complete-employee-model.service.js +0 -40
- package/esm2015/lib/components/input-rest-auto-complete-enum/index.js +0 -9
- package/esm2015/lib/components/input-rest-auto-complete-enum/input-rest-auto-complete-enum.component.js +0 -209
- package/esm2015/lib/components/input-rest-auto-complete-enum/input-rest-auto-complete-enum.module.js +0 -31
- package/esm2015/lib/components/input-rest-auto-complete-enum/input-rest-auto-complete-enum.service.js +0 -44
- package/esm2015/lib/components/input-rest-auto-complete-jobposition/index.js +0 -9
- package/esm2015/lib/components/input-rest-auto-complete-jobposition/input-rest-auto-complete-jobposition.component.js +0 -254
- package/esm2015/lib/components/input-rest-auto-complete-jobposition/input-rest-auto-complete-jobposition.module.js +0 -31
- package/esm2015/lib/components/input-rest-auto-complete-jobposition/input-rest-auto-complete-jobposition.service.js +0 -40
- package/esm2015/lib/components/input-rest-auto-complete-model/index.js +0 -8
- package/esm2015/lib/components/input-rest-auto-complete-model/input-rest-auto-complete-model.component.js +0 -331
- package/esm2015/lib/components/input-rest-auto-complete-model/input-rest-auto-complete-model.module.js +0 -31
- package/esm2015/lib/components/input-rest-auto-complete-model/input-rest-auto-complete-model.service.js +0 -40
- package/esm2015/lib/components/input-rest-auto-complete-model-enum/index.js +0 -8
- package/esm2015/lib/components/input-rest-auto-complete-model-enum/input-rest-auto-complete-model-enum.component.js +0 -176
- package/esm2015/lib/components/input-rest-auto-complete-model-enum/input-rest-auto-complete-model-enum.module.js +0 -31
- package/esm2015/lib/components/input-rest-auto-complete-model-enum/input-rest-auto-complete-model-enum.service.js +0 -44
- package/esm2015/lib/components/list-rest/index.js +0 -8
- package/esm2015/lib/components/list-rest/list-rest.component.js +0 -192
- package/esm2015/lib/components/list-rest/list-rest.module.js +0 -36
- package/esm2015/lib/components/list-rest/list-rest.service.js +0 -48
- package/esm2015/lib/components/lookup/index.js +0 -7
- package/esm2015/lib/components/lookup/lookup.component.js +0 -471
- package/esm2015/lib/components/lookup/lookup.module.js +0 -23
- package/esm2015/lib/components/lookup/lookup.service.js +0 -91
- package/esm2015/lib/components/shared/http-client.service.js +0 -293
- package/esm2015/lib/components/shared/shared.module.js +0 -26
- package/esm2015/lib/components/spinner/index.js +0 -8
- package/esm2015/lib/components/spinner/spinner-loader.component.js +0 -15
- package/esm2015/lib/components/spinner/spinner-loader.module.js +0 -26
- package/esm2015/lib/components/toast/index.js +0 -9
- package/esm2015/lib/components/toast/toast.component.js +0 -156
- package/esm2015/lib/components/toast/toast.module.js +0 -23
- package/esm2015/lib/components/toast/toast.service.js +0 -76
- package/esm2015/lib/components/type-admission/index.js +0 -8
- package/esm2015/lib/components/type-admission/type-admission.module.js +0 -17
- package/esm2015/lib/components/type-admission/type-admission.services.js +0 -135
- package/esm2015/lib/components/utils/cnpj-validator.js +0 -82
- package/esm2015/lib/components/utils/cpf-validator.js +0 -76
- package/esm2015/lib/components/utils/date-validator/date-validators.js +0 -184
- package/esm2015/lib/components/utils/helpers.js +0 -737
- package/esm2015/lib/components/utils/validations.js +0 -237
- package/esm2015/lib/components/vanilla/string-methods.js +0 -37
- package/esm2015/lib/components/workstationgroup-lookup/autocomplete.service.js +0 -175
- package/esm2015/lib/components/workstationgroup-lookup/index.js +0 -8
- package/esm2015/lib/components/workstationgroup-lookup/lookup.service.js +0 -254
- package/esm2015/lib/components/workstationgroup-lookup/workstationgroup-lookup.component.js +0 -832
- package/esm2015/lib/components/workstationgroup-lookup/workstationgroup-lookup.dto.js +0 -193
- package/esm2015/lib/components/workstationgroup-lookup/workstationgroup-lookup.module.js +0 -24
- package/esm2015/lib/core/entities/entity-odata-parameter.js +0 -82
- package/esm2015/lib/core/entities/index.js +0 -7
- package/esm2015/lib/core/enums/companyIndicationType.js +0 -24
- package/esm2015/lib/core/enums/comparetype.enumeration.js +0 -16
- package/esm2015/lib/core/enums/coreFieldType.js +0 -11
- package/esm2015/lib/core/enums/direction.enumeration.js +0 -12
- package/esm2015/lib/core/enums/httpRequestType.js +0 -12
- package/esm2015/lib/core/enums/index.js +0 -19
- package/esm2015/lib/core/enums/menu-type.enumeration.js +0 -12
- package/esm2015/lib/core/enums/moduleType.js +0 -28
- package/esm2015/lib/core/enums/operators.enumeration.js +0 -20
- package/esm2015/lib/core/enums/parameter-type.enumeration.js +0 -18
- package/esm2015/lib/core/enums/report-format.enumeration.js +0 -18
- package/esm2015/lib/core/enums/report-stage.enumeration.js +0 -18
- package/esm2015/lib/core/enums/serviceType.js +0 -15
- package/esm2015/lib/core/enums/usingType.js +0 -48
- package/esm2015/lib/core/interfaces/date-compare-options.js +0 -19
- package/esm2015/lib/core/interfaces/date-validate-options.js +0 -17
- package/esm2015/lib/core/interfaces/field-validators-object.js +0 -20
- package/esm2015/lib/core/interfaces/index.js +0 -10
- package/esm2015/lib/core/interfaces/pagination-data.js +0 -18
- package/esm2015/lib/core/interfaces/report/domain-service.interface.js +0 -16
- package/esm2015/lib/core/interfaces/report/generation-status.interface.js +0 -22
- package/esm2015/lib/core/interfaces/report/get-parameters-out.interface.js +0 -16
- package/esm2015/lib/core/interfaces/report/index.js +0 -15
- package/esm2015/lib/core/interfaces/report/lookup-parameter.interface.js +0 -20
- package/esm2015/lib/core/interfaces/report/parameter-def.interface.js +0 -20
- package/esm2015/lib/core/interfaces/report/parameter-value.interface.js +0 -16
- package/esm2015/lib/core/interfaces/report/report-header.interface.js +0 -16
- package/esm2015/lib/core/interfaces/report/report-in.interface.js +0 -20
- package/esm2015/lib/core/interfaces/report/report-menu.interface.js +0 -18
- package/esm2015/lib/core/interfaces/report/report-out.interface.js +0 -14
- package/esm2015/lib/core/interfaces/report/report.interface.js +0 -48
- package/esm2015/lib/services/autocomplete-parameters.service.js +0 -180
- package/esm2015/lib/services/company-indications.service.js +0 -101
- package/esm2015/lib/services/form-comparator.service.js +0 -208
- package/esm2015/lib/services/integration.service.js +0 -37
- package/esm2015/lib/services/lookup-parameters.service.js +0 -557
- package/esm2015/lib/services/permissions.service.js +0 -218
- package/esm2015/lib/services/report.service.js +0 -161
- package/esm2015/lib/services/services.module.js +0 -32
- package/esm2015/lib/services/workflow-data.service.js +0 -57
- package/esm2015/lib/services/workflow-integrator.service.js +0 -416
- package/esm5/lib/components/admission-draft-summary/admission-draft-summary.component.js +0 -214
- package/esm5/lib/components/admission-draft-summary/admission-draft-summary.module.js +0 -24
- package/esm5/lib/components/admission-draft-summary/admission-draft-summary.service.js +0 -71
- package/esm5/lib/components/admission-draft-summary/index.js +0 -9
- package/esm5/lib/components/block-ui/block-ui.component.js +0 -30
- package/esm5/lib/components/block-ui/block-ui.module.js +0 -32
- package/esm5/lib/components/block-ui/index.js +0 -8
- package/esm5/lib/components/breadcrumb/breadcrumb.component.js +0 -170
- package/esm5/lib/components/breadcrumb/breadcrumb.module.js +0 -32
- package/esm5/lib/components/breadcrumb/index.js +0 -8
- package/esm5/lib/components/control-messages-error/control-messages-error.component.js +0 -48
- package/esm5/lib/components/control-messages-error/control-messages-error.module.js +0 -24
- package/esm5/lib/components/control-messages-error/index.js +0 -8
- package/esm5/lib/components/custom-fields/custom-fields.component.js +0 -70
- package/esm5/lib/components/custom-fields/custom-fields.module.js +0 -38
- package/esm5/lib/components/custom-fields/index.js +0 -8
- package/esm5/lib/components/data-list/data-list.component.js +0 -557
- package/esm5/lib/components/data-list/data-list.module.js +0 -35
- package/esm5/lib/components/data-list/data-list.service.js +0 -42
- package/esm5/lib/components/data-list/entity-odata-response.js +0 -83
- package/esm5/lib/components/data-list/index.js +0 -7
- package/esm5/lib/components/data-list-rest/data-list-rest.component.js +0 -414
- package/esm5/lib/components/data-list-rest/data-list-rest.module.js +0 -35
- package/esm5/lib/components/data-list-rest/data-list-rest.service.js +0 -42
- package/esm5/lib/components/data-list-rest/index.js +0 -7
- package/esm5/lib/components/directives/directives.module.js +0 -24
- package/esm5/lib/components/directives/index.js +0 -9
- package/esm5/lib/components/directives/name-not-spaces.directive.js +0 -66
- package/esm5/lib/components/directives/only-number.directive.js +0 -63
- package/esm5/lib/components/employee-selector/employee-selector.component.js +0 -168
- package/esm5/lib/components/employee-selector/employee-selector.module.js +0 -25
- package/esm5/lib/components/employee-selector/index.js +0 -8
- package/esm5/lib/components/employee-summary/employee-summary.component.js +0 -212
- package/esm5/lib/components/employee-summary/employee-summary.module.js +0 -24
- package/esm5/lib/components/employee-summary/employee-summary.service.js +0 -95
- package/esm5/lib/components/employee-summary/index.js +0 -9
- package/esm5/lib/components/error-page/error-page.component.js +0 -29
- package/esm5/lib/components/error-page/error-page.module.js +0 -23
- package/esm5/lib/components/error-page/index.js +0 -8
- package/esm5/lib/components/field-validator/field-validator.component.js +0 -74
- package/esm5/lib/components/field-validator/field-validator.module.js +0 -25
- package/esm5/lib/components/field-validator/index.js +0 -8
- package/esm5/lib/components/file-upload/file-upload.component.js +0 -261
- package/esm5/lib/components/file-upload/file-upload.module.js +0 -26
- package/esm5/lib/components/file-upload/file-upload.service.js +0 -99
- package/esm5/lib/components/file-upload/index.js +0 -8
- package/esm5/lib/components/from-to/from-to.component.js +0 -28
- package/esm5/lib/components/from-to/from-to.module.js +0 -26
- package/esm5/lib/components/from-to/index.js +0 -8
- package/esm5/lib/components/historical-bank-account/historical-bank-account-form/historical-bank-account-form.component.js +0 -657
- package/esm5/lib/components/historical-bank-account/historical-bank-account.component.js +0 -624
- package/esm5/lib/components/historical-bank-account/historical-bank-account.module.js +0 -63
- package/esm5/lib/components/historical-bank-account/historical-bank-account.service.js +0 -46
- package/esm5/lib/components/historical-bank-account/index.js +0 -9
- package/esm5/lib/components/historical-bank-account-list/historical-bank-account-list.component.js +0 -402
- package/esm5/lib/components/historical-bank-account-list/historical-bank-account-list.module.js +0 -46
- package/esm5/lib/components/historical-bank-account-list/historical-bank-account-list.service.js +0 -68
- package/esm5/lib/components/historical-bank-account-list/index.js +0 -9
- package/esm5/lib/components/image-cropper/image-crop.component.js +0 -287
- package/esm5/lib/components/image-cropper/image-crop.module.js +0 -39
- package/esm5/lib/components/image-cropper/image-crop.service.js +0 -221
- package/esm5/lib/components/image-cropper/index.js +0 -9
- package/esm5/lib/components/input-date/index.js +0 -8
- package/esm5/lib/components/input-date/input-date.component.js +0 -218
- package/esm5/lib/components/input-date/input-date.module.js +0 -24
- package/esm5/lib/components/input-date-model/index.js +0 -8
- package/esm5/lib/components/input-date-model/input-date-model.component.js +0 -190
- package/esm5/lib/components/input-date-model/input-date-model.module.js +0 -24
- package/esm5/lib/components/input-rest-auto-complete/index.js +0 -9
- package/esm5/lib/components/input-rest-auto-complete/input-rest-auto-complete.component.js +0 -497
- package/esm5/lib/components/input-rest-auto-complete/input-rest-auto-complete.module.js +0 -28
- package/esm5/lib/components/input-rest-auto-complete/input-rest-auto-complete.service.js +0 -46
- package/esm5/lib/components/input-rest-auto-complete-employee/index.js +0 -8
- package/esm5/lib/components/input-rest-auto-complete-employee/input-rest-auto-complete-employee.component.js +0 -300
- package/esm5/lib/components/input-rest-auto-complete-employee/input-rest-auto-complete-employee.module.js +0 -35
- package/esm5/lib/components/input-rest-auto-complete-employee/input-rest-auto-complete-employee.service.js +0 -44
- package/esm5/lib/components/input-rest-auto-complete-employee-model/index.js +0 -8
- package/esm5/lib/components/input-rest-auto-complete-employee-model/input-rest-auto-complete-employee-model.component.js +0 -291
- package/esm5/lib/components/input-rest-auto-complete-employee-model/input-rest-auto-complete-employee-model.module.js +0 -35
- package/esm5/lib/components/input-rest-auto-complete-employee-model/input-rest-auto-complete-employee-model.service.js +0 -44
- package/esm5/lib/components/input-rest-auto-complete-enum/index.js +0 -9
- package/esm5/lib/components/input-rest-auto-complete-enum/input-rest-auto-complete-enum.component.js +0 -252
- package/esm5/lib/components/input-rest-auto-complete-enum/input-rest-auto-complete-enum.module.js +0 -35
- package/esm5/lib/components/input-rest-auto-complete-enum/input-rest-auto-complete-enum.service.js +0 -48
- package/esm5/lib/components/input-rest-auto-complete-jobposition/index.js +0 -9
- package/esm5/lib/components/input-rest-auto-complete-jobposition/input-rest-auto-complete-jobposition.component.js +0 -302
- package/esm5/lib/components/input-rest-auto-complete-jobposition/input-rest-auto-complete-jobposition.module.js +0 -35
- package/esm5/lib/components/input-rest-auto-complete-jobposition/input-rest-auto-complete-jobposition.service.js +0 -44
- package/esm5/lib/components/input-rest-auto-complete-model/index.js +0 -8
- package/esm5/lib/components/input-rest-auto-complete-model/input-rest-auto-complete-model.component.js +0 -379
- package/esm5/lib/components/input-rest-auto-complete-model/input-rest-auto-complete-model.module.js +0 -35
- package/esm5/lib/components/input-rest-auto-complete-model/input-rest-auto-complete-model.service.js +0 -46
- package/esm5/lib/components/input-rest-auto-complete-model-enum/index.js +0 -8
- package/esm5/lib/components/input-rest-auto-complete-model-enum/input-rest-auto-complete-model-enum.component.js +0 -206
- package/esm5/lib/components/input-rest-auto-complete-model-enum/input-rest-auto-complete-model-enum.module.js +0 -35
- package/esm5/lib/components/input-rest-auto-complete-model-enum/input-rest-auto-complete-model-enum.service.js +0 -48
- package/esm5/lib/components/list-rest/index.js +0 -8
- package/esm5/lib/components/list-rest/list-rest.component.js +0 -219
- package/esm5/lib/components/list-rest/list-rest.module.js +0 -40
- package/esm5/lib/components/list-rest/list-rest.service.js +0 -57
- package/esm5/lib/components/lookup/index.js +0 -7
- package/esm5/lib/components/lookup/lookup.component.js +0 -600
- package/esm5/lib/components/lookup/lookup.module.js +0 -27
- package/esm5/lib/components/lookup/lookup.service.js +0 -94
- package/esm5/lib/components/shared/http-client.service.js +0 -355
- package/esm5/lib/components/shared/shared.module.js +0 -28
- package/esm5/lib/components/spinner/index.js +0 -8
- package/esm5/lib/components/spinner/spinner-loader.component.js +0 -19
- package/esm5/lib/components/spinner/spinner-loader.module.js +0 -30
- package/esm5/lib/components/toast/index.js +0 -9
- package/esm5/lib/components/toast/toast.component.js +0 -173
- package/esm5/lib/components/toast/toast.module.js +0 -27
- package/esm5/lib/components/toast/toast.service.js +0 -123
- package/esm5/lib/components/type-admission/index.js +0 -8
- package/esm5/lib/components/type-admission/type-admission.module.js +0 -21
- package/esm5/lib/components/type-admission/type-admission.services.js +0 -191
- package/esm5/lib/components/utils/cnpj-validator.js +0 -94
- package/esm5/lib/components/utils/cpf-validator.js +0 -98
- package/esm5/lib/components/utils/date-validator/date-validators.js +0 -289
- package/esm5/lib/components/utils/helpers.js +0 -763
- package/esm5/lib/components/utils/validations.js +0 -241
- package/esm5/lib/components/vanilla/string-methods.js +0 -42
- package/esm5/lib/components/workstationgroup-lookup/autocomplete.service.js +0 -250
- package/esm5/lib/components/workstationgroup-lookup/index.js +0 -8
- package/esm5/lib/components/workstationgroup-lookup/lookup.service.js +0 -318
- package/esm5/lib/components/workstationgroup-lookup/workstationgroup-lookup.component.js +0 -908
- package/esm5/lib/components/workstationgroup-lookup/workstationgroup-lookup.dto.js +0 -200
- package/esm5/lib/components/workstationgroup-lookup/workstationgroup-lookup.module.js +0 -28
- package/esm5/lib/core/entities/entity-odata-parameter.js +0 -96
- package/esm5/lib/core/entities/index.js +0 -7
- package/esm5/lib/core/enums/companyIndicationType.js +0 -24
- package/esm5/lib/core/enums/comparetype.enumeration.js +0 -16
- package/esm5/lib/core/enums/coreFieldType.js +0 -11
- package/esm5/lib/core/enums/direction.enumeration.js +0 -12
- package/esm5/lib/core/enums/httpRequestType.js +0 -12
- package/esm5/lib/core/enums/index.js +0 -19
- package/esm5/lib/core/enums/menu-type.enumeration.js +0 -12
- package/esm5/lib/core/enums/moduleType.js +0 -28
- package/esm5/lib/core/enums/operators.enumeration.js +0 -20
- package/esm5/lib/core/enums/parameter-type.enumeration.js +0 -18
- package/esm5/lib/core/enums/report-format.enumeration.js +0 -18
- package/esm5/lib/core/enums/report-stage.enumeration.js +0 -18
- package/esm5/lib/core/enums/serviceType.js +0 -15
- package/esm5/lib/core/enums/usingType.js +0 -48
- package/esm5/lib/core/interfaces/date-compare-options.js +0 -19
- package/esm5/lib/core/interfaces/date-validate-options.js +0 -17
- package/esm5/lib/core/interfaces/field-validators-object.js +0 -20
- package/esm5/lib/core/interfaces/index.js +0 -10
- package/esm5/lib/core/interfaces/pagination-data.js +0 -18
- package/esm5/lib/core/interfaces/report/domain-service.interface.js +0 -16
- package/esm5/lib/core/interfaces/report/generation-status.interface.js +0 -22
- package/esm5/lib/core/interfaces/report/get-parameters-out.interface.js +0 -16
- package/esm5/lib/core/interfaces/report/index.js +0 -15
- package/esm5/lib/core/interfaces/report/lookup-parameter.interface.js +0 -20
- package/esm5/lib/core/interfaces/report/parameter-def.interface.js +0 -20
- package/esm5/lib/core/interfaces/report/parameter-value.interface.js +0 -16
- package/esm5/lib/core/interfaces/report/report-header.interface.js +0 -16
- package/esm5/lib/core/interfaces/report/report-in.interface.js +0 -20
- package/esm5/lib/core/interfaces/report/report-menu.interface.js +0 -18
- package/esm5/lib/core/interfaces/report/report-out.interface.js +0 -14
- package/esm5/lib/core/interfaces/report/report.interface.js +0 -48
- package/esm5/lib/services/autocomplete-parameters.service.js +0 -255
- package/esm5/lib/services/company-indications.service.js +0 -126
- package/esm5/lib/services/form-comparator.service.js +0 -278
- package/esm5/lib/services/integration.service.js +0 -40
- package/esm5/lib/services/lookup-parameters.service.js +0 -748
- package/esm5/lib/services/permissions.service.js +0 -253
- package/esm5/lib/services/report.service.js +0 -231
- package/esm5/lib/services/services.module.js +0 -36
- package/esm5/lib/services/workflow-data.service.js +0 -73
- package/esm5/lib/services/workflow-integrator.service.js +0 -715
- package/lib/components/workstationgroup-lookup/autocomplete.service.d.ts +0 -31
- /package/{lib/components → components}/admission-draft-summary/admission-draft-summary.component.d.ts +0 -0
- /package/{lib/components → components}/admission-draft-summary/admission-draft-summary.module.d.ts +0 -0
- /package/{lib/components → components}/admission-draft-summary/admission-draft-summary.service.d.ts +0 -0
- /package/{lib/components → components}/admission-draft-summary/index.d.ts +0 -0
- /package/{lib/components → components}/block-ui/block-ui.component.d.ts +0 -0
- /package/{lib/components → components}/block-ui/block-ui.module.d.ts +0 -0
- /package/{lib/components → components}/block-ui/index.d.ts +0 -0
- /package/{lib/components → components}/breadcrumb/breadcrumb.component.d.ts +0 -0
- /package/{lib/components → components}/breadcrumb/breadcrumb.module.d.ts +0 -0
- /package/{lib/components → components}/breadcrumb/index.d.ts +0 -0
- /package/{lib/components → components}/control-messages-error/control-messages-error.component.d.ts +0 -0
- /package/{lib/components → components}/control-messages-error/control-messages-error.module.d.ts +0 -0
- /package/{lib/components → components}/control-messages-error/index.d.ts +0 -0
- /package/{lib/components → components}/custom-fields/custom-fields.component.d.ts +0 -0
- /package/{lib/components → components}/custom-fields/custom-fields.module.d.ts +0 -0
- /package/{lib/components → components}/custom-fields/index.d.ts +0 -0
- /package/{lib/components → components}/data-list/data-list.component.d.ts +0 -0
- /package/{lib/components → components}/data-list/data-list.module.d.ts +0 -0
- /package/{lib/components → components}/data-list/data-list.service.d.ts +0 -0
- /package/{lib/components → components}/data-list/entity-odata-response.d.ts +0 -0
- /package/{lib/components → components}/data-list/index.d.ts +0 -0
- /package/{lib/components → components}/data-list-rest/data-list-rest.component.d.ts +0 -0
- /package/{lib/components → components}/data-list-rest/data-list-rest.module.d.ts +0 -0
- /package/{lib/components → components}/data-list-rest/data-list-rest.service.d.ts +0 -0
- /package/{lib/components → components}/data-list-rest/index.d.ts +0 -0
- /package/{lib/components → components}/directives/directives.module.d.ts +0 -0
- /package/{lib/components → components}/directives/index.d.ts +0 -0
- /package/{lib/components → components}/directives/name-not-spaces.directive.d.ts +0 -0
- /package/{lib/components → components}/directives/only-number.directive.d.ts +0 -0
- /package/{lib/components → components}/employee-selector/employee-selector.component.d.ts +0 -0
- /package/{lib/components → components}/employee-selector/employee-selector.module.d.ts +0 -0
- /package/{lib/components → components}/employee-selector/index.d.ts +0 -0
- /package/{lib/components → components}/employee-summary/employee-summary.component.d.ts +0 -0
- /package/{lib/components → components}/employee-summary/employee-summary.module.d.ts +0 -0
- /package/{lib/components → components}/employee-summary/employee-summary.service.d.ts +0 -0
- /package/{lib/components → components}/employee-summary/index.d.ts +0 -0
- /package/{lib/components → components}/error-page/error-page.component.d.ts +0 -0
- /package/{lib/components → components}/error-page/error-page.module.d.ts +0 -0
- /package/{lib/components → components}/error-page/index.d.ts +0 -0
- /package/{lib/components → components}/field-validator/field-validator.component.d.ts +0 -0
- /package/{lib/components → components}/field-validator/field-validator.module.d.ts +0 -0
- /package/{lib/components → components}/field-validator/index.d.ts +0 -0
- /package/{lib/components → components}/file-upload/file-upload.component.d.ts +0 -0
- /package/{lib/components → components}/file-upload/file-upload.module.d.ts +0 -0
- /package/{lib/components → components}/file-upload/file-upload.service.d.ts +0 -0
- /package/{lib/components → components}/file-upload/index.d.ts +0 -0
- /package/{lib/components → components}/from-to/from-to.component.d.ts +0 -0
- /package/{lib/components → components}/from-to/from-to.module.d.ts +0 -0
- /package/{lib/components → components}/from-to/index.d.ts +0 -0
- /package/{lib/components → components}/historical-bank-account/historical-bank-account-form/historical-bank-account-form.component.d.ts +0 -0
- /package/{lib/components → components}/historical-bank-account/historical-bank-account.component.d.ts +0 -0
- /package/{lib/components → components}/historical-bank-account/historical-bank-account.module.d.ts +0 -0
- /package/{lib/components → components}/historical-bank-account/historical-bank-account.service.d.ts +0 -0
- /package/{lib/components → components}/historical-bank-account/index.d.ts +0 -0
- /package/{lib/components → components}/historical-bank-account-list/historical-bank-account-list.component.d.ts +0 -0
- /package/{lib/components → components}/historical-bank-account-list/historical-bank-account-list.module.d.ts +0 -0
- /package/{lib/components → components}/historical-bank-account-list/historical-bank-account-list.service.d.ts +0 -0
- /package/{lib/components → components}/historical-bank-account-list/index.d.ts +0 -0
- /package/{lib/components → components}/image-cropper/image-crop.component.d.ts +0 -0
- /package/{lib/components → components}/image-cropper/image-crop.module.d.ts +0 -0
- /package/{lib/components → components}/image-cropper/image-crop.service.d.ts +0 -0
- /package/{lib/components → components}/image-cropper/index.d.ts +0 -0
- /package/{lib/components → components}/input-date/index.d.ts +0 -0
- /package/{lib/components → components}/input-date/input-date.component.d.ts +0 -0
- /package/{lib/components → components}/input-date/input-date.module.d.ts +0 -0
- /package/{lib/components → components}/input-date-model/index.d.ts +0 -0
- /package/{lib/components → components}/input-date-model/input-date-model.component.d.ts +0 -0
- /package/{lib/components → components}/input-date-model/input-date-model.module.d.ts +0 -0
- /package/{lib/components → components}/input-rest-auto-complete/index.d.ts +0 -0
- /package/{lib/components → components}/input-rest-auto-complete/input-rest-auto-complete.component.d.ts +0 -0
- /package/{lib/components → components}/input-rest-auto-complete/input-rest-auto-complete.module.d.ts +0 -0
- /package/{lib/components → components}/input-rest-auto-complete/input-rest-auto-complete.service.d.ts +0 -0
- /package/{lib/components → components}/input-rest-auto-complete-employee/index.d.ts +0 -0
- /package/{lib/components → components}/input-rest-auto-complete-employee/input-rest-auto-complete-employee.component.d.ts +0 -0
- /package/{lib/components → components}/input-rest-auto-complete-employee/input-rest-auto-complete-employee.module.d.ts +0 -0
- /package/{lib/components → components}/input-rest-auto-complete-employee/input-rest-auto-complete-employee.service.d.ts +0 -0
- /package/{lib/components → components}/input-rest-auto-complete-employee-model/index.d.ts +0 -0
- /package/{lib/components → components}/input-rest-auto-complete-employee-model/input-rest-auto-complete-employee-model.component.d.ts +0 -0
- /package/{lib/components → components}/input-rest-auto-complete-employee-model/input-rest-auto-complete-employee-model.module.d.ts +0 -0
- /package/{lib/components → components}/input-rest-auto-complete-employee-model/input-rest-auto-complete-employee-model.service.d.ts +0 -0
- /package/{lib/components → components}/input-rest-auto-complete-enum/index.d.ts +0 -0
- /package/{lib/components → components}/input-rest-auto-complete-enum/input-rest-auto-complete-enum.component.d.ts +0 -0
- /package/{lib/components → components}/input-rest-auto-complete-enum/input-rest-auto-complete-enum.module.d.ts +0 -0
- /package/{lib/components → components}/input-rest-auto-complete-enum/input-rest-auto-complete-enum.service.d.ts +0 -0
- /package/{lib/components → components}/input-rest-auto-complete-jobposition/index.d.ts +0 -0
- /package/{lib/components → components}/input-rest-auto-complete-jobposition/input-rest-auto-complete-jobposition.component.d.ts +0 -0
- /package/{lib/components → components}/input-rest-auto-complete-jobposition/input-rest-auto-complete-jobposition.module.d.ts +0 -0
- /package/{lib/components → components}/input-rest-auto-complete-jobposition/input-rest-auto-complete-jobposition.service.d.ts +0 -0
- /package/{lib/components → components}/input-rest-auto-complete-model/index.d.ts +0 -0
- /package/{lib/components → components}/input-rest-auto-complete-model/input-rest-auto-complete-model.component.d.ts +0 -0
- /package/{lib/components → components}/input-rest-auto-complete-model/input-rest-auto-complete-model.module.d.ts +0 -0
- /package/{lib/components → components}/input-rest-auto-complete-model/input-rest-auto-complete-model.service.d.ts +0 -0
- /package/{lib/components → components}/input-rest-auto-complete-model-enum/index.d.ts +0 -0
- /package/{lib/components → components}/input-rest-auto-complete-model-enum/input-rest-auto-complete-model-enum.component.d.ts +0 -0
- /package/{lib/components → components}/input-rest-auto-complete-model-enum/input-rest-auto-complete-model-enum.module.d.ts +0 -0
- /package/{lib/components → components}/input-rest-auto-complete-model-enum/input-rest-auto-complete-model-enum.service.d.ts +0 -0
- /package/{lib/components → components}/list-rest/index.d.ts +0 -0
- /package/{lib/components → components}/list-rest/list-rest.component.d.ts +0 -0
- /package/{lib/components → components}/list-rest/list-rest.module.d.ts +0 -0
- /package/{lib/components → components}/list-rest/list-rest.service.d.ts +0 -0
- /package/{lib/components → components}/lookup/index.d.ts +0 -0
- /package/{lib/components → components}/lookup/lookup.component.d.ts +0 -0
- /package/{lib/components → components}/lookup/lookup.module.d.ts +0 -0
- /package/{lib/components → components}/lookup/lookup.service.d.ts +0 -0
- /package/{lib/components → components}/shared/http-client.service.d.ts +0 -0
- /package/{lib/components → components}/shared/shared.module.d.ts +0 -0
- /package/{lib/components → components}/spinner/index.d.ts +0 -0
- /package/{lib/components → components}/spinner/spinner-loader.component.d.ts +0 -0
- /package/{lib/components → components}/spinner/spinner-loader.module.d.ts +0 -0
- /package/{lib/components → components}/toast/index.d.ts +0 -0
- /package/{lib/components → components}/toast/toast.component.d.ts +0 -0
- /package/{lib/components → components}/toast/toast.module.d.ts +0 -0
- /package/{lib/components → components}/toast/toast.service.d.ts +0 -0
- /package/{lib/components → components}/type-admission/index.d.ts +0 -0
- /package/{lib/components → components}/type-admission/type-admission.module.d.ts +0 -0
- /package/{lib/components → components}/type-admission/type-admission.services.d.ts +0 -0
- /package/{lib/components → components}/utils/cnpj-validator.d.ts +0 -0
- /package/{lib/components → components}/utils/cpf-validator.d.ts +0 -0
- /package/{lib/components → components}/utils/date-validator/date-validators.d.ts +0 -0
- /package/{lib/components → components}/utils/helpers.d.ts +0 -0
- /package/{lib/components → components}/utils/validations.d.ts +0 -0
- /package/{lib/components → components}/vanilla/string-methods.d.ts +0 -0
- /package/{lib/components → components}/workstationgroup-lookup/index.d.ts +0 -0
- /package/{lib/components → components}/workstationgroup-lookup/lookup.service.d.ts +0 -0
- /package/{lib/components → components}/workstationgroup-lookup/workstationgroup-lookup.component.d.ts +0 -0
- /package/{lib/components → components}/workstationgroup-lookup/workstationgroup-lookup.dto.d.ts +0 -0
- /package/{lib/components → components}/workstationgroup-lookup/workstationgroup-lookup.module.d.ts +0 -0
- /package/{lib/core → core}/entities/entity-odata-parameter.d.ts +0 -0
- /package/{lib/core → core}/entities/index.d.ts +0 -0
- /package/{lib/core → core}/enums/companyIndicationType.d.ts +0 -0
- /package/{lib/core → core}/enums/comparetype.enumeration.d.ts +0 -0
- /package/{lib/core → core}/enums/coreFieldType.d.ts +0 -0
- /package/{lib/core → core}/enums/direction.enumeration.d.ts +0 -0
- /package/{lib/core → core}/enums/httpRequestType.d.ts +0 -0
- /package/{lib/core → core}/enums/index.d.ts +0 -0
- /package/{lib/core → core}/enums/menu-type.enumeration.d.ts +0 -0
- /package/{lib/core → core}/enums/moduleType.d.ts +0 -0
- /package/{lib/core → core}/enums/operators.enumeration.d.ts +0 -0
- /package/{lib/core → core}/enums/parameter-type.enumeration.d.ts +0 -0
- /package/{lib/core → core}/enums/report-format.enumeration.d.ts +0 -0
- /package/{lib/core → core}/enums/report-stage.enumeration.d.ts +0 -0
- /package/{lib/core → core}/enums/serviceType.d.ts +0 -0
- /package/{lib/core → core}/enums/usingType.d.ts +0 -0
- /package/{lib/core → core}/interfaces/date-compare-options.d.ts +0 -0
- /package/{lib/core → core}/interfaces/date-validate-options.d.ts +0 -0
- /package/{lib/core → core}/interfaces/field-validators-object.d.ts +0 -0
- /package/{lib/core → core}/interfaces/index.d.ts +0 -0
- /package/{lib/core → core}/interfaces/pagination-data.d.ts +0 -0
- /package/{lib/core → core}/interfaces/report/domain-service.interface.d.ts +0 -0
- /package/{lib/core → core}/interfaces/report/generation-status.interface.d.ts +0 -0
- /package/{lib/core → core}/interfaces/report/get-parameters-out.interface.d.ts +0 -0
- /package/{lib/core → core}/interfaces/report/index.d.ts +0 -0
- /package/{lib/core → core}/interfaces/report/lookup-parameter.interface.d.ts +0 -0
- /package/{lib/core → core}/interfaces/report/parameter-def.interface.d.ts +0 -0
- /package/{lib/core → core}/interfaces/report/parameter-value.interface.d.ts +0 -0
- /package/{lib/core → core}/interfaces/report/report-header.interface.d.ts +0 -0
- /package/{lib/core → core}/interfaces/report/report-in.interface.d.ts +0 -0
- /package/{lib/core → core}/interfaces/report/report-menu.interface.d.ts +0 -0
- /package/{lib/core → core}/interfaces/report/report-out.interface.d.ts +0 -0
- /package/{lib/core → core}/interfaces/report/report.interface.d.ts +0 -0
- /package/{lib/services → services}/autocomplete-parameters.service.d.ts +0 -0
- /package/{lib/services → services}/company-indications.service.d.ts +0 -0
- /package/{lib/services → services}/form-comparator.service.d.ts +0 -0
- /package/{lib/services → services}/integration.service.d.ts +0 -0
- /package/{lib/services → services}/lookup-parameters.service.d.ts +0 -0
- /package/{lib/services → services}/permissions.service.d.ts +0 -0
- /package/{lib/services → services}/report.service.d.ts +0 -0
- /package/{lib/services → services}/services.module.d.ts +0 -0
- /package/{lib/services → services}/workflow-data.service.d.ts +0 -0
- /package/{lib/services → services}/workflow-integrator.service.d.ts +0 -0
|
@@ -0,0 +1,502 @@
|
|
|
1
|
+
import * as tslib_1 from "tslib";
|
|
2
|
+
import { FormArray, FormControl, FormGroup, Validators } from '@angular/forms';
|
|
3
|
+
import * as chance from 'chance';
|
|
4
|
+
import * as momentImported from 'moment';
|
|
5
|
+
import business from 'moment-business';
|
|
6
|
+
var moment = momentImported;
|
|
7
|
+
export function isObject(item) {
|
|
8
|
+
return item && typeof item === 'object' && !Array.isArray(item);
|
|
9
|
+
}
|
|
10
|
+
export function isShallow(item) {
|
|
11
|
+
return Array.isArray(item) && item.find(function (value) { return typeof value === 'object'; }) ? false : true;
|
|
12
|
+
}
|
|
13
|
+
export function convertBooleanString(value) {
|
|
14
|
+
if (typeof value === 'boolean') {
|
|
15
|
+
return value === true ? 'true' : 'false';
|
|
16
|
+
}
|
|
17
|
+
return value;
|
|
18
|
+
}
|
|
19
|
+
export function convertStringToBoolean(value) {
|
|
20
|
+
return value === true || value.toLowerCase() === 'true';
|
|
21
|
+
}
|
|
22
|
+
export function assign(target) {
|
|
23
|
+
var sources = [];
|
|
24
|
+
for (var _i = 1; _i < arguments.length; _i++) {
|
|
25
|
+
sources[_i - 1] = arguments[_i];
|
|
26
|
+
}
|
|
27
|
+
if (!sources.length) {
|
|
28
|
+
return target;
|
|
29
|
+
}
|
|
30
|
+
var source = sources.shift();
|
|
31
|
+
if (isObject(target) && isObject(source)) {
|
|
32
|
+
var _loop_1 = function (key) {
|
|
33
|
+
var _a, _b, _c, _d;
|
|
34
|
+
if (isObject(source[key])) {
|
|
35
|
+
if (!target[key]) {
|
|
36
|
+
Object.assign(target, (_a = {}, _a[key] = {}, _a));
|
|
37
|
+
}
|
|
38
|
+
assign(target[key], source[key]);
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
if (isShallow(source[key])) {
|
|
42
|
+
Object.assign(target, (_b = {}, _b[key] = source[key], _b));
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
if (!target[key]) {
|
|
46
|
+
Object.assign(target, (_c = {}, _c[key] = [], _c));
|
|
47
|
+
}
|
|
48
|
+
Object.assign(target, (_d = {}, _d[key] = source[key].map(function (item, index) { return assign(target[key][index] || {}, item); }), _d));
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
for (var key in source) {
|
|
53
|
+
_loop_1(key);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return assign.apply(void 0, tslib_1.__spread([target], sources));
|
|
57
|
+
}
|
|
58
|
+
export function isValid(value) {
|
|
59
|
+
return value === 0 || typeof value === 'boolean' ? true : value !== undefined && value !== null && value !== '';
|
|
60
|
+
}
|
|
61
|
+
export function isValidDate(value, withDays) {
|
|
62
|
+
if (withDays === void 0) { withDays = true; }
|
|
63
|
+
if (value && isFullDate(value, withDays)) {
|
|
64
|
+
if (withDays) {
|
|
65
|
+
return moment(value.replace(/[^\d]+/g, ''), 'DDMMYYYY').isValid();
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
return moment(value.replace(/[^\d]+/g, ''), 'MMYYYY').isValid();
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return true;
|
|
72
|
+
}
|
|
73
|
+
export function isFullDate(value, withDays) {
|
|
74
|
+
if (withDays === void 0) { withDays = true; }
|
|
75
|
+
if (value) {
|
|
76
|
+
var totalLength = void 0;
|
|
77
|
+
if (withDays) {
|
|
78
|
+
totalLength = 8;
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
totalLength = 6;
|
|
82
|
+
}
|
|
83
|
+
return value.replace(/[^\d]+/g, '').length === totalLength;
|
|
84
|
+
}
|
|
85
|
+
return true;
|
|
86
|
+
}
|
|
87
|
+
export function autoCompleteObjectForIdObject(tableIdObject) {
|
|
88
|
+
if (!isObject(tableIdObject)) {
|
|
89
|
+
console.error('Paramentro não é um objeto');
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
if (tableIdObject.hasOwnProperty('tableId')) {
|
|
93
|
+
console.error('Paramentro não é um objeto Auto Complete válido, falta tableId');
|
|
94
|
+
}
|
|
95
|
+
if (!isValid(tableIdObject.tableId)) {
|
|
96
|
+
console.error('tableId esta vazio');
|
|
97
|
+
}
|
|
98
|
+
return { id: tableIdObject.tableId };
|
|
99
|
+
}
|
|
100
|
+
export function isDateField(name, value) {
|
|
101
|
+
var testDate = name.search('Date');
|
|
102
|
+
if (testDate !== -1) {
|
|
103
|
+
return invertFieldDate(value);
|
|
104
|
+
}
|
|
105
|
+
return value;
|
|
106
|
+
}
|
|
107
|
+
export function invertFieldDate(value, inFormat, outFormat) {
|
|
108
|
+
if (inFormat === void 0) { inFormat = 'DDMMYYYY'; }
|
|
109
|
+
if (outFormat === void 0) { outFormat = 'YYYY-MM-DD'; }
|
|
110
|
+
if (!isValid(value)) {
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
var formatIn = getFormatDate(value, inFormat);
|
|
114
|
+
return moment(value.replace(/[^\d]+/g, ''), formatIn).format(outFormat);
|
|
115
|
+
}
|
|
116
|
+
export function getAddWeekDaysBusiness(value, quantidade) {
|
|
117
|
+
return business.addWeekDays(getMoment(value), quantidade).format('DD/MM/YYYY');
|
|
118
|
+
}
|
|
119
|
+
export function getWeekDaysBusiness(startDate, endDate) {
|
|
120
|
+
var endMoment = endDate ? getMoment(endDate) : getMoment(startDate).endOf('month');
|
|
121
|
+
return business.weekDays(getMoment(startDate), endMoment);
|
|
122
|
+
}
|
|
123
|
+
export function getFormatDate(value, inFormat) {
|
|
124
|
+
if (value.search('/') !== -1) {
|
|
125
|
+
return 'DDMMYYYY';
|
|
126
|
+
}
|
|
127
|
+
else if (value.search('-') !== -1) {
|
|
128
|
+
return 'YYYYMMDD';
|
|
129
|
+
}
|
|
130
|
+
return inFormat;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* FIXME - Está fixo para uso do calendário portugues Brasil
|
|
134
|
+
* @param value
|
|
135
|
+
* @param outFormat
|
|
136
|
+
* @returns
|
|
137
|
+
*/
|
|
138
|
+
export function ngCalendarFormat(value, outFormat) {
|
|
139
|
+
if (outFormat === void 0) { outFormat = 'DD/MM/YYYY'; }
|
|
140
|
+
if (isValidDate(value)) {
|
|
141
|
+
if (typeof value === 'string') {
|
|
142
|
+
return value;
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
return _moment(value).format(outFormat);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
export function getNowDate(outFormat) {
|
|
150
|
+
if (outFormat === void 0) { outFormat = 'YYYY-MM-DD'; }
|
|
151
|
+
return moment().format(outFormat);
|
|
152
|
+
}
|
|
153
|
+
export function getMoment(value, inFormat) {
|
|
154
|
+
if (inFormat === void 0) { inFormat = 'DDMMYYYY'; }
|
|
155
|
+
var formatIn = getFormatDate(value, inFormat);
|
|
156
|
+
return moment(value.replace(/[^\d]+/g, ''), formatIn);
|
|
157
|
+
}
|
|
158
|
+
export function _moment(value, format) {
|
|
159
|
+
if (format) {
|
|
160
|
+
return moment(value, format);
|
|
161
|
+
}
|
|
162
|
+
return moment(value);
|
|
163
|
+
}
|
|
164
|
+
export function getObjValids(objs) {
|
|
165
|
+
var json = Object.assign({}, objs);
|
|
166
|
+
var jsonReturn = {};
|
|
167
|
+
Object.keys(json).map(function (key) {
|
|
168
|
+
if (isValid(json[key])) {
|
|
169
|
+
jsonReturn[key] = isDateField(key, json[key]);
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
return jsonReturn;
|
|
173
|
+
}
|
|
174
|
+
export function removeEmpty(obj) {
|
|
175
|
+
Object.keys(obj).forEach(function (k) { return (obj[k] && typeof obj[k] === 'object' && removeEmpty(obj[k])) || (!obj[k] && obj[k] !== undefined && delete obj[k]); });
|
|
176
|
+
return obj;
|
|
177
|
+
}
|
|
178
|
+
export function formatMoney(value, i18n) {
|
|
179
|
+
if (i18n === void 0) { i18n = 'EN'; }
|
|
180
|
+
switch (i18n) {
|
|
181
|
+
case 'EN':
|
|
182
|
+
return isValid(value)
|
|
183
|
+
? value
|
|
184
|
+
.toString()
|
|
185
|
+
.replace('.', '')
|
|
186
|
+
.replace(',', '.')
|
|
187
|
+
: '';
|
|
188
|
+
case 'BR':
|
|
189
|
+
return isValid(value)
|
|
190
|
+
? value
|
|
191
|
+
.toString()
|
|
192
|
+
.replace('.', ',')
|
|
193
|
+
.replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1.')
|
|
194
|
+
: '';
|
|
195
|
+
default:
|
|
196
|
+
return isValid(value)
|
|
197
|
+
? value
|
|
198
|
+
.toString()
|
|
199
|
+
.replace('.', '')
|
|
200
|
+
.replace(',', '.')
|
|
201
|
+
: '';
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
export function uiid() {
|
|
205
|
+
return new chance()
|
|
206
|
+
.guid()
|
|
207
|
+
.replace(/[^a-zA-Z0-9.]/g, '')
|
|
208
|
+
.toUpperCase();
|
|
209
|
+
}
|
|
210
|
+
export function mountCustomForSave(custom, customEntity, locale) {
|
|
211
|
+
if (customEntity === void 0) { customEntity = null; }
|
|
212
|
+
if (locale === void 0) { locale = null; }
|
|
213
|
+
var custonField = [];
|
|
214
|
+
if (customEntity && custom.length) {
|
|
215
|
+
customEntity.map(function (val, key) {
|
|
216
|
+
var field = Object.keys(custom[key]).toString();
|
|
217
|
+
var valOrnull = isValid(custom[key][field]) ? custom[key][field] : null;
|
|
218
|
+
var value = val.type === 'date' && locale && isValid(valOrnull) ? moment(valOrnull, getFormat(locale)).format('YYYY-MM-DD') : valOrnull;
|
|
219
|
+
custonField.push({
|
|
220
|
+
field: field,
|
|
221
|
+
value: value,
|
|
222
|
+
});
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
return custonField.length ? custonField : null;
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Prepara o objeto de campos customizados para salvar as entidades que
|
|
229
|
+
* são utilizadas a partir do CRUD customizado.
|
|
230
|
+
* @param objectFields objeto com os campos customizados da entidade.
|
|
231
|
+
*/
|
|
232
|
+
export function mountCustomToSave(objectFields) {
|
|
233
|
+
var customFields = [];
|
|
234
|
+
Object.entries(objectFields).forEach(function (_a) {
|
|
235
|
+
var _b = tslib_1.__read(_a, 2), field = _b[0], value = _b[1];
|
|
236
|
+
customFields.push({
|
|
237
|
+
field: field,
|
|
238
|
+
value: value,
|
|
239
|
+
});
|
|
240
|
+
});
|
|
241
|
+
return customFields;
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Prepara o objeto de campos customizados para exibir as entidades que
|
|
245
|
+
* são utilizadas a partir do CRUD customizado.
|
|
246
|
+
* @param customFields objeto com os campos customizados da entidade.
|
|
247
|
+
*/
|
|
248
|
+
export function mountCustomToShow(customFields) {
|
|
249
|
+
var customFieldsToShow = {};
|
|
250
|
+
if (customFields && customFields.length) {
|
|
251
|
+
customFields.forEach(function (item) {
|
|
252
|
+
if (item.type === 'date' && item.value) {
|
|
253
|
+
item.value = _moment(item.value).format('L');
|
|
254
|
+
}
|
|
255
|
+
customFieldsToShow[item.field] = item.value;
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
return customFieldsToShow;
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Prepara o objeto de campos customizados para salvar as entidades que
|
|
262
|
+
* são utilizadas a partir do CRUD gerado.
|
|
263
|
+
* @param objectFields objeto com os campos customizados da entidade.
|
|
264
|
+
*/
|
|
265
|
+
export function mountGeneratedCustomToSave(objectFields) {
|
|
266
|
+
Object.entries(objectFields).forEach(function (_a) {
|
|
267
|
+
var _b = tslib_1.__read(_a, 2), key = _b[0], value = _b[1];
|
|
268
|
+
if (!value) {
|
|
269
|
+
delete objectFields[key];
|
|
270
|
+
}
|
|
271
|
+
});
|
|
272
|
+
return objectFields;
|
|
273
|
+
}
|
|
274
|
+
export function mountCustomForShow(custom) {
|
|
275
|
+
var customField = [];
|
|
276
|
+
Object.keys(custom || {}).forEach(function (val) {
|
|
277
|
+
if (custom[val].type === 'date' && custom[val].value) {
|
|
278
|
+
custom[val].value = _moment(custom[val].value).format('L');
|
|
279
|
+
}
|
|
280
|
+
customField.push(custom[val]);
|
|
281
|
+
});
|
|
282
|
+
return customField;
|
|
283
|
+
}
|
|
284
|
+
export function setValueCustom(custonFields, custom) {
|
|
285
|
+
var isCustons = custom ? Object.keys(custom).length : 0;
|
|
286
|
+
custonFields.map(function (val) {
|
|
287
|
+
val.value = isCustons > 0 ? custom[val.field] : null;
|
|
288
|
+
});
|
|
289
|
+
return custonFields;
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Adiciona um erro no controle do formulário. Deve ser chamado com .call passando o contexto da class.
|
|
293
|
+
* Ex.: setErrors.call(this.contractGroup, 'registerEmployeeNumber', 'exist', !payload)
|
|
294
|
+
*
|
|
295
|
+
* @param formControlName Nome do controle do formulário.
|
|
296
|
+
* @param keyError Nome do error a ser exibido em tela.
|
|
297
|
+
* @param isInvalid Se houver algum erro de validação no campo.
|
|
298
|
+
*/
|
|
299
|
+
export function setErrors(formControlName, keyError, isInvalid) {
|
|
300
|
+
var _this = this;
|
|
301
|
+
setTimeout(function () {
|
|
302
|
+
if (isInvalid) {
|
|
303
|
+
var errors = Object.assign({}, _this.get(formControlName).errors);
|
|
304
|
+
errors[keyError] = isInvalid;
|
|
305
|
+
_this.get(formControlName).setErrors(errors);
|
|
306
|
+
}
|
|
307
|
+
else {
|
|
308
|
+
var errors = _this.get(formControlName).errors;
|
|
309
|
+
if (errors && Object.keys(errors).length) {
|
|
310
|
+
delete errors[keyError];
|
|
311
|
+
if (!Object.keys(errors).length) {
|
|
312
|
+
_this.get(formControlName).setErrors(null);
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
}, 0);
|
|
317
|
+
}
|
|
318
|
+
/**
|
|
319
|
+
* Faz loop do nos controls do formulário e subArray caso existir
|
|
320
|
+
* setando os inválidos
|
|
321
|
+
* Ex.: verifyValidationsForm.call(this.initialGroup);
|
|
322
|
+
*/
|
|
323
|
+
export function verifyValidationsForm() {
|
|
324
|
+
var _this = this;
|
|
325
|
+
Object.keys(this.controls).map(function (field) {
|
|
326
|
+
var control = _this.get(field);
|
|
327
|
+
control.markAsDirty();
|
|
328
|
+
if (control instanceof FormGroup || control instanceof FormArray) {
|
|
329
|
+
verifyValidationsForm.call(control);
|
|
330
|
+
}
|
|
331
|
+
});
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* Retorna a idade de acordo com a data de nascimento.
|
|
335
|
+
*
|
|
336
|
+
* @param birthdayDate Data de nascimento.
|
|
337
|
+
*/
|
|
338
|
+
export function getYears(birthday) {
|
|
339
|
+
var currentDate = moment();
|
|
340
|
+
var years = currentDate.diff(birthday, 'years', false);
|
|
341
|
+
return years;
|
|
342
|
+
}
|
|
343
|
+
export function setCustonFields(customFields) {
|
|
344
|
+
var _this = this;
|
|
345
|
+
customFields.map(function (val) {
|
|
346
|
+
var addCuston = {};
|
|
347
|
+
var value = val.value || null;
|
|
348
|
+
if (typeof value === 'boolean') {
|
|
349
|
+
value = value ? 'true' : 'false';
|
|
350
|
+
}
|
|
351
|
+
addCuston[val.field] = new FormControl(value);
|
|
352
|
+
_this.push(new FormGroup(addCuston));
|
|
353
|
+
});
|
|
354
|
+
return customFields;
|
|
355
|
+
}
|
|
356
|
+
export function setRequired(formGroup, name, required, validators) {
|
|
357
|
+
if (required) {
|
|
358
|
+
formGroup.controls[name].setValidators(Validators.compose(validators && validators.length ? validators : [Validators.required]));
|
|
359
|
+
formGroup.controls[name].updateValueAndValidity();
|
|
360
|
+
}
|
|
361
|
+
else {
|
|
362
|
+
formGroup.controls[name].setValidators(null);
|
|
363
|
+
formGroup.controls[name].updateValueAndValidity();
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
/**
|
|
367
|
+
* Esse método tem como função setar os campos enable ou disable.
|
|
368
|
+
* @param formGroup FormGroup onde se encontra os campos a serem alterados.
|
|
369
|
+
* @param condition Condição para validação. True = enabled, False = disabled.
|
|
370
|
+
* @param fields Campos a serem manipulados.
|
|
371
|
+
* @param fieldsToClear Campos a serem limpos. É opicional e se não foi passado o método limpará os mesmos campos dos fields.
|
|
372
|
+
*/
|
|
373
|
+
export function configEnabledFields(formGroup, condition, fields, fieldsToClear) {
|
|
374
|
+
if (condition) {
|
|
375
|
+
fields.forEach(function (field) { return formGroup.get(field).enable(); });
|
|
376
|
+
}
|
|
377
|
+
else {
|
|
378
|
+
fields.forEach(function (field) { return formGroup.get(field).disable(); });
|
|
379
|
+
clearValues(formGroup, fieldsToClear ? fieldsToClear : fields);
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
/**
|
|
383
|
+
* Esse método tem como função setar os campos como requeridos ou não.
|
|
384
|
+
*
|
|
385
|
+
* @param formGroup FormGroup onde se encontra os campos a serem alterados.
|
|
386
|
+
* @param condition Se será ou não requeridos.
|
|
387
|
+
* @param fields Lista de campos.
|
|
388
|
+
*/
|
|
389
|
+
export function setRequiredFields(formGroup, condition, fields) {
|
|
390
|
+
if (condition) {
|
|
391
|
+
fields.forEach(function (field) { return setRequired(formGroup, field, true, [Validators.required]); });
|
|
392
|
+
}
|
|
393
|
+
else {
|
|
394
|
+
fields.forEach(function (field) { return setRequired(formGroup, field, false); });
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
/**
|
|
398
|
+
* Esse método tem como função setar validações dinâmicas nos campos.
|
|
399
|
+
*
|
|
400
|
+
* @param formGroup FormGroup onde se encontra os campos a serem alterados.
|
|
401
|
+
* @param fields Lista de objetos [{field: campo, validators: validações, disable: boolean}].
|
|
402
|
+
*/
|
|
403
|
+
export function setValidatorsAndDisableFields(formGroup, fields) {
|
|
404
|
+
fields.forEach(function (currentField) {
|
|
405
|
+
setValidator(formGroup, currentField.field, currentField.validators);
|
|
406
|
+
setDisableField(formGroup, currentField.disabled, currentField.field, currentField.clearValue);
|
|
407
|
+
});
|
|
408
|
+
}
|
|
409
|
+
export function setValidator(formGroup, name, validators) {
|
|
410
|
+
if (validators && validators.length) {
|
|
411
|
+
formGroup.controls[name].setValidators(Validators.compose(validators));
|
|
412
|
+
formGroup.controls[name].updateValueAndValidity();
|
|
413
|
+
}
|
|
414
|
+
else {
|
|
415
|
+
formGroup.controls[name].setValidators(null);
|
|
416
|
+
formGroup.controls[name].updateValueAndValidity();
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
/**
|
|
420
|
+
* Esse método tem como função setar os campos enable ou disable.
|
|
421
|
+
* @param formGroup FormGroup onde se encontra os campos a serem alterados.
|
|
422
|
+
* @param condition Condição para validação. True = disabled, False = enabled.
|
|
423
|
+
* @param field Campo a ser manipulados.
|
|
424
|
+
* @param clearValue Campos a ser limpos. É opicional e se não foi passado o método limpará o campo do field.
|
|
425
|
+
*/
|
|
426
|
+
export function setDisableField(formGroup, condition, field, clearValue) {
|
|
427
|
+
if (clearValue === void 0) { clearValue = true; }
|
|
428
|
+
if (condition) {
|
|
429
|
+
formGroup.get(field).disable();
|
|
430
|
+
if (clearValue)
|
|
431
|
+
formGroup.get(field).reset();
|
|
432
|
+
}
|
|
433
|
+
else {
|
|
434
|
+
formGroup.get(field).enable();
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
/**
|
|
438
|
+
* Ordena array de objetos
|
|
439
|
+
* @param key o campo que deseja ordenar
|
|
440
|
+
* @param order a ordem que deseja ordenar o campo
|
|
441
|
+
*/
|
|
442
|
+
export function compareValues(key, order) {
|
|
443
|
+
if (order === void 0) { order = "ASC"; }
|
|
444
|
+
return function innerSort(a, b) {
|
|
445
|
+
if (!a.hasOwnProperty(key) || !b.hasOwnProperty(key)) {
|
|
446
|
+
return 0;
|
|
447
|
+
}
|
|
448
|
+
var varA = (typeof a[key] === "string")
|
|
449
|
+
? a[key].toUpperCase() : a[key];
|
|
450
|
+
var varB = (typeof b[key] === "string")
|
|
451
|
+
? b[key].toUpperCase() : b[key];
|
|
452
|
+
var comparison = 0;
|
|
453
|
+
if (varA > varB) {
|
|
454
|
+
comparison = 1;
|
|
455
|
+
}
|
|
456
|
+
else if (varA < varB) {
|
|
457
|
+
comparison = -1;
|
|
458
|
+
}
|
|
459
|
+
return ((order === "DESC") ? (comparison * -1) : comparison);
|
|
460
|
+
};
|
|
461
|
+
}
|
|
462
|
+
/**
|
|
463
|
+
* Esse método tem como função limpar o valor dos campos.
|
|
464
|
+
*
|
|
465
|
+
* @param formGroup FormGroup onde se encontra os campos a serem limpos.
|
|
466
|
+
* @param fields Campos a serem limpos.
|
|
467
|
+
*/
|
|
468
|
+
export function clearValues(formGroup, fields) {
|
|
469
|
+
fields.forEach(function (field) { return formGroup.get(field).reset(); });
|
|
470
|
+
}
|
|
471
|
+
/**
|
|
472
|
+
*
|
|
473
|
+
* @param qs = window.location.search
|
|
474
|
+
* @returns Object com parametros query string
|
|
475
|
+
*/
|
|
476
|
+
export function getQueryParams(qs) {
|
|
477
|
+
qs = qs.split('+').join(' ');
|
|
478
|
+
var params = {};
|
|
479
|
+
var tokens;
|
|
480
|
+
var re = /[?&]?([^=]+)=([^&]*)/g;
|
|
481
|
+
while ((tokens = re.exec(qs))) {
|
|
482
|
+
params[decodeURIComponent(tokens[1])] = decodeURIComponent(tokens[2]);
|
|
483
|
+
}
|
|
484
|
+
return params;
|
|
485
|
+
}
|
|
486
|
+
export function getFormat(locale) {
|
|
487
|
+
if (locale) {
|
|
488
|
+
var dateFormat = locale.calendar.dateFormat.toString();
|
|
489
|
+
dateFormat = dateFormat.replace(/[y]/g, 'YY');
|
|
490
|
+
dateFormat = dateFormat.replace(/[/]/g, '');
|
|
491
|
+
return dateFormat.toUpperCase();
|
|
492
|
+
}
|
|
493
|
+
}
|
|
494
|
+
/**
|
|
495
|
+
* Remove os caracteres que não sejam números do valor
|
|
496
|
+
* @param value valor a ser tratado
|
|
497
|
+
* @returns string O valor sem caracteres especiais
|
|
498
|
+
*/
|
|
499
|
+
export function removeCharacteresSpecials(value) {
|
|
500
|
+
return value ? value.toString().replace(/[&\/\\#,+()$~%.'":*?<>{}-]/g, "") : null;
|
|
501
|
+
}
|
|
502
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3ItZ2VzdGFvLXBlc3NvYXMvcGF5cm9sbC1jb3JlLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy91dGlscy9oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFL0UsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDakMsT0FBTyxLQUFLLGNBQWMsTUFBTSxRQUFRLENBQUM7QUFDekMsT0FBTyxRQUFRLE1BQU0saUJBQWlCLENBQUM7QUFJdkMsSUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDO0FBRTlCLE1BQU0sVUFBVSxRQUFRLENBQUMsSUFBSTtJQUMzQixPQUFPLElBQUksSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2xFLENBQUM7QUFFRCxNQUFNLFVBQVUsU0FBUyxDQUFDLElBQUk7SUFDNUIsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBQSxLQUFLLElBQUksT0FBQSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQXpCLENBQXlCLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDN0YsQ0FBQztBQUVELE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxLQUFLO0lBQ3hDLElBQUksT0FBTyxLQUFLLEtBQUssU0FBUyxFQUFFO1FBQzlCLE9BQU8sS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7S0FDMUM7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRCxNQUFNLFVBQVUsc0JBQXNCLENB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b3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zLyc7XG5pbXBvcnQgKiBhcyBjaGFuY2UgZnJvbSAnY2hhbmNlJztcbmltcG9ydCAqIGFzIG1vbWVudEltcG9ydGVkIGZyb20gJ21vbWVudCc7XG5pbXBvcnQgYnVzaW5lc3MgZnJvbSAnbW9tZW50LWJ1c2luZXNzJztcbmltcG9ydCB7IExvY2FsZU9wdGlvbnMgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzJztcbmltcG9ydCB7IEZpZWxkVmFsaWRhdG9yc09iamVjdCB9IGZyb20gJy4uLy4uL2NvcmUvaW50ZXJmYWNlcy9maWVsZC12YWxpZGF0b3JzLW9iamVjdCc7XG5cbmNvbnN0IG1vbWVudCA9IG1vbWVudEltcG9ydGVkO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNPYmplY3QoaXRlbSkge1xuICByZXR1cm4gaXRlbSAmJiB0eXBlb2YgaXRlbSA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkoaXRlbSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1NoYWxsb3coaXRlbSkge1xuICByZXR1cm4gQXJyYXkuaXNBcnJheShpdGVtKSAmJiBpdGVtLmZpbmQodmFsdWUgPT4gdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JykgPyBmYWxzZSA6IHRydWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0Qm9vbGVhblN0cmluZyh2YWx1ZSkge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IHRydWUgPyAndHJ1ZScgOiAnZmFsc2UnO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRTdHJpbmdUb0Jvb2xlYW4odmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID09PSB0cnVlIHx8IHZhbHVlLnRvTG93ZXJDYXNlKCkgPT09ICd0cnVlJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2lnbih0YXJnZXQsIC4uLnNvdXJjZXMpIHtcbiAgaWYgKCFzb3VyY2VzLmxlbmd0aCkge1xuICAgIHJldHVybiB0YXJnZXQ7XG4gIH1cblxuICBjb25zdCBzb3VyY2UgPSBzb3VyY2VzLnNoaWZ0KCk7XG4gIGlmIChpc09iamVjdCh0YXJnZXQpICYmIGlzT2JqZWN0KHNvdXJjZSkpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBzb3VyY2UpIHtcbiAgICAgIGlmIChpc09iamVjdChzb3VyY2Vba2V5XSkpIHtcbiAgICAgICAgaWYgKCF0YXJnZXRba2V5XSkge1xuICAgICAgICAgIE9iamVjdC5hc3NpZ24odGFyZ2V0LCB7IFtrZXldOiB7fSB9KTtcbiAgICAgICAgfVxuICAgICAgICBhc3NpZ24odGFyZ2V0W2tleV0sIHNvdXJjZVtrZXldKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChpc1NoYWxsb3coc291cmNlW2tleV0pKSB7XG4gICAgICAgICAgT2JqZWN0LmFzc2lnbih0YXJnZXQsIHsgW2tleV06IHNvdXJjZVtrZXldIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICghdGFyZ2V0W2tleV0pIHtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odGFyZ2V0LCB7IFtrZXldOiBbXSB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgT2JqZWN0LmFzc2lnbih0YXJnZXQsIHsgW2tleV06IHNvdXJjZVtrZXldLm1hcCgoaXRlbSwgaW5kZXgpID0+IGFzc2lnbih0YXJnZXRba2V5XVtpbmRleF0gfHwge30sIGl0ZW0pKSB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gYXNzaWduKHRhcmdldCwgLi4uc291cmNlcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSA9PT0gMCB8fCB0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJyA/IHRydWUgOiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSAnJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWREYXRlKHZhbHVlLCB3aXRoRGF5cyA9IHRydWUpIHtcbiAgaWYgKHZhbHVlICYmIGlzRnVsbERhdGUodmFsdWUsIHdpdGhEYXlzKSkge1xuICAgIGlmICh3aXRoRGF5cykge1xuICAgICAgcmV0dXJuIG1vbWVudCh2YWx1ZS5yZXBsYWNlKC9bXlxcZF0rL2csICcnKSwgJ0RETU1ZWVlZJykuaXNWYWxpZCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbW9tZW50KHZhbHVlLnJlcGxhY2UoL1teXFxkXSsvZywgJycpLCAnTU1ZWVlZJykuaXNWYWxpZCgpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRnVsbERhdGUodmFsdWUsIHdpdGhEYXlzID0gdHJ1ZSkge1xuICBpZiAodmFsdWUpIHtcbiAgICBsZXQgdG90YWxMZW5ndGg7XG4gICAgaWYgKHdpdGhEYXlzKSB7XG4gICAgICB0b3RhbExlbmd0aCA9IDg7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRvdGFsTGVuZ3RoID0gNjtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoL1teXFxkXSsvZywgJycpLmxlbmd0aCA9PT0gdG90YWxMZW5ndGg7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdXRvQ29tcGxldGVPYmplY3RGb3JJZE9iamVjdCh0YWJsZUlkT2JqZWN0KSB7XG4gIGlmICghaXNPYmplY3QodGFibGVJZE9iamVjdCkpIHtcbiAgICBjb25zb2xlLmVycm9yKCdQYXJhbWVudHJvIG7Do28gw6kgdW0gb2JqZXRvJyk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKHRhYmxlSWRPYmplY3QuaGFzT3duUHJvcGVydHkoJ3RhYmxlSWQnKSkge1xuICAgIGNvbnNvbGUuZXJyb3IoJ1BhcmFtZW50cm8gbsOjbyDDqSB1bSBvYmpldG8gQXV0byBDb21wbGV0ZSB2w6FsaWRvLCBmYWx0YSB0YWJsZUlkJyk7XG4gIH1cblxuICBpZiAoIWlzVmFsaWQodGFibGVJZE9iamVjdC50YWJsZUlkKSkge1xuICAgIGNvbnNvbGUuZXJyb3IoJ3RhYmxlSWQgZXN0YSB2YXppbycpO1xuICB9XG5cbiAgcmV0dXJuIHsgaWQ6IHRhYmxlSWRPYmplY3QudGFibGVJZCB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNEYXRlRmllbGQobmFtZSwgdmFsdWUpIHtcbiAgY29uc3QgdGVzdERhdGUgPSBuYW1lLnNlYXJjaCgnRGF0ZScpO1xuICBpZiAodGVzdERhdGUgIT09IC0xKSB7XG4gICAgcmV0dXJuIGludmVydEZpZWxkRGF0ZSh2YWx1ZSk7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52ZXJ0RmllbGREYXRlKHZhbHVlLCBpbkZvcm1hdCA9ICdERE1NWVlZWScsIG91dEZvcm1hdCA9ICdZWVlZLU1NLUREJykge1xuICBpZiAoIWlzVmFsaWQodmFsdWUpKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IGZvcm1hdEluID0gZ2V0Rm9ybWF0RGF0ZSh2YWx1ZSwgaW5Gb3JtYXQpO1xuICByZXR1cm4gbW9tZW50KHZhbHVlLnJlcGxhY2UoL1teXFxkXSsvZywgJycpLCBmb3JtYXRJbikuZm9ybWF0KG91dEZvcm1hdCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRBZGRXZWVrRGF5c0J1c2luZXNzKHZhbHVlLCBxdWFudGlkYWRlKSB7XG4gIHJldHVybiBidXNpbmVzcy5hZGRXZWVrRGF5cyhnZXRNb21lbnQodmFsdWUpLCBxdWFudGlkYWRlKS5mb3JtYXQoJ0REL01NL1lZWVknKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFdlZWtEYXlzQnVzaW5lc3Moc3RhcnREYXRlLCBlbmREYXRlKSB7XG4gIGNvbnN0IGVuZE1vbWVudCA9IGVuZERhdGUgPyBnZXRNb21lbnQoZW5kRGF0ZSkgOiBnZXRNb21lbnQoc3RhcnREYXRlKS5lbmRPZignbW9udGgnKTtcbiAgcmV0dXJuIGJ1c2luZXNzLndlZWtEYXlzKGdldE1vbWVudChzdGFydERhdGUpLCBlbmRNb21lbnQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9ybWF0RGF0ZSh2YWx1ZSwgaW5Gb3JtYXQpIHtcbiAgaWYgKHZhbHVlLnNlYXJjaCgnLycpICE9PSAtMSkge1xuICAgIHJldHVybiAnRERNTVlZWVknO1xuICB9IGVsc2UgaWYgKHZhbHVlLnNlYXJjaCgnLScpICE9PSAtMSkge1xuICAgIHJldHVybiAnWVlZWU1NREQnO1xuICB9XG4gIHJldHVybiBpbkZvcm1hdDtcbn1cblxuLyoqXG4gKiBGSVhNRSAtIEVzdMOhIGZpeG8gcGFyYSB1c28gZG8gY2FsZW5kw6FyaW8gcG9ydHVndWVzIEJyYXNpbFxuICogQHBhcmFtIHZhbHVlXG4gKiBAcGFyYW0gb3V0Rm9ybWF0XG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gbmdDYWxlbmRhckZvcm1hdCh2YWx1ZSwgb3V0Rm9ybWF0ID0gJ0REL01NL1lZWVknKSB7XG4gIGlmIChpc1ZhbGlkRGF0ZSh2YWx1ZSkpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gX21vbWVudCh2YWx1ZSkuZm9ybWF0KG91dEZvcm1hdCk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXROb3dEYXRlKG91dEZvcm1hdCA9ICdZWVlZLU1NLUREJykge1xuICByZXR1cm4gbW9tZW50KCkuZm9ybWF0KG91dEZvcm1hdCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRNb21lbnQodmFsdWUsIGluRm9ybWF0ID0gJ0RETU1ZWVlZJykge1xuICBjb25zdCBmb3JtYXRJbiA9IGdldEZvcm1hdERhdGUodmFsdWUsIGluRm9ybWF0KTtcbiAgcmV0dXJuIG1vbWVudCh2YWx1ZS5yZXBsYWNlKC9bXlxcZF0rL2csICcnKSwgZm9ybWF0SW4pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX21vbWVudCh2YWx1ZSwgZm9ybWF0Pzogc3RyaW5nKSB7XG4gIGlmIChmb3JtYXQpIHtcbiAgICByZXR1cm4gbW9tZW50KHZhbHVlLCBmb3JtYXQpO1xuICB9XG4gIHJldHVybiBtb21lbnQodmFsdWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0T2JqVmFsaWRzKG9ianMpIHtcbiAgY29uc3QganNvbiA9IE9iamVjdC5hc3NpZ24oe30sIG9ianMpO1xuICBjb25zdCBqc29uUmV0dXJuID0ge307XG4gIE9iamVjdC5rZXlzKGpzb24pLm1hcChrZXkgPT4ge1xuICAgIGlmIChpc1ZhbGlkKGpzb25ba2V5XSkpIHtcbiAgICAgIGpzb25SZXR1cm5ba2V5XSA9IGlzRGF0ZUZpZWxkKGtleSwganNvbltrZXldKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4ganNvblJldHVybjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUVtcHR5KG9iaikge1xuICBPYmplY3Qua2V5cyhvYmopLmZvckVhY2goXG4gICAgayA9PiAob2JqW2tdICYmIHR5cGVvZiBvYmpba10gPT09ICdvYmplY3QnICYmIHJlbW92ZUVtcHR5KG9ialtrXSkpIHx8ICghb2JqW2tdICYmIG9ialtrXSAhPT0gdW5kZWZpbmVkICYmIGRlbGV0ZSBvYmpba10pXG4gICk7XG4gIHJldHVybiBvYmo7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRNb25leSh2YWx1ZSwgaTE4biA9ICdFTicpIHtcbiAgc3dpdGNoIChpMThuKSB7XG4gICAgY2FzZSAnRU4nOlxuICAgICAgcmV0dXJuIGlzVmFsaWQodmFsdWUpXG4gICAgICAgID8gdmFsdWVcbiAgICAgICAgICAgIC50b1N0cmluZygpXG4gICAgICAgICAgICAucmVwbGFjZSgnLicsICcnKVxuICAgICAgICAgICAgLnJlcGxhY2UoJywnLCAnLicpXG4gICAgICAgIDogJyc7XG4gICAgY2FzZSAnQlInOlxuICAgICAgcmV0dXJuIGlzVmFsaWQodmFsdWUpXG4gICAgICAgID8gdmFsdWVcbiAgICAgICAgICAgIC50b1N0cmluZygpXG4gICAgICAgICAgICAucmVwbGFjZSgnLicsICcsJylcbiAgICAgICAgICAgIC5yZXBsYWNlKC8oXFxkKSg/PShcXGR7M30pKyg/IVxcZCkpL2csICckMS4nKVxuICAgICAgICA6ICcnO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gaXNWYWxpZCh2YWx1ZSlcbiAgICAgICAgPyB2YWx1ZVxuICAgICAgICAgICAgLnRvU3RyaW5nKClcbiAgICAgICAgICAgIC5yZXBsYWNlKCcuJywgJycpXG4gICAgICAgICAgICAucmVwbGFjZSgnLCcsICcuJylcbiAgICAgICAgOiAnJztcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdWlpZCgpIHtcbiAgcmV0dXJuIG5ldyBjaGFuY2UoKVxuICAgIC5ndWlkKClcbiAgICAucmVwbGFjZSgvW15hLXpBLVowLTkuXS9nLCAnJylcbiAgICAudG9VcHBlckNhc2UoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1vdW50Q3VzdG9tRm9yU2F2ZShjdXN0b20sIGN1c3RvbUVudGl0eSA9IG51bGwsIGxvY2FsZSA9IG51bGwpIHtcbiAgY29uc3QgY3VzdG9uRmllbGQgPSBbXTtcbiAgaWYgKGN1c3RvbUVudGl0eSAmJiBjdXN0b20ubGVuZ3RoKSB7XG4gICAgY3VzdG9tRW50aXR5Lm1hcCgodmFsLCBrZXkpID0+IHtcbiAgICAgIGNvbnN0IGZpZWxkID0gT2JqZWN0LmtleXMoY3VzdG9tW2tleV0pLnRvU3RyaW5nKCk7XG4gICAgICBjb25zdCB2YWxPcm51bGwgPSBpc1ZhbGlkKGN1c3RvbVtrZXldW2ZpZWxkXSkgPyBjdXN0b21ba2V5XVtmaWVsZF0gOiBudWxsO1xuICAgICAgY29uc3QgdmFsdWUgPVxuICAgICAgICB2YWwudHlwZSA9PT0gJ2RhdGUnICYmIGxvY2FsZSAmJiBpc1ZhbGlkKHZhbE9ybnVsbCkgPyBtb21lbnQodmFsT3JudWxsLCBnZXRGb3JtYXQobG9jYWxlKSkuZm9ybWF0KCdZWVlZLU1NLUREJykgOiB2YWxPcm51bGw7XG4gICAgICBjdXN0b25GaWVsZC5wdXNoKHtcbiAgICAgICAgZmllbGQ6IGZpZWxkLFxuICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gY3VzdG9uRmllbGQubGVuZ3RoID8gY3VzdG9uRmllbGQgOiBudWxsO1xufVxuXG4vKipcbiAqIFByZXBhcmEgbyBvYmpldG8gZGUgY2FtcG9zIGN1c3RvbWl6YWRvcyBwYXJhIHNhbHZhciBhcyBlbnRpZGFkZXMgcXVlXG4gKiBzw6NvIHV0aWxpemFkYXMgYSBwYXJ0aXIgZG8gQ1JVRCBjdXN0b21pemFkby5cbiAqIEBwYXJhbSBvYmplY3RGaWVsZHMgb2JqZXRvIGNvbSBvcyBjYW1wb3MgY3VzdG9taXphZG9zIGRhIGVudGlkYWRlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbW91bnRDdXN0b21Ub1NhdmUob2JqZWN0RmllbGRzKSB7XG4gIGNvbnN0IGN1c3RvbUZpZWxkcyA9IFtdO1xuICBPYmplY3QuZW50cmllcyhvYmplY3RGaWVsZHMpLmZvckVhY2goKFtmaWVsZCwgdmFsdWVdKSA9PiB7XG4gICAgY3VzdG9tRmllbGRzLnB1c2goe1xuICAgICAgZmllbGQ6IGZpZWxkLFxuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIGN1c3RvbUZpZWxkcztcbn1cblxuLyoqXG4gKiBQcmVwYXJhIG8gb2JqZXRvIGRlIGNhbXBvcyBjdXN0b21pemFkb3MgcGFyYSBleGliaXIgYXMgZW50aWRhZGVzIHF1ZVxuICogc8OjbyB1dGlsaXphZGFzIGEgcGFydGlyIGRvIENSVUQgY3VzdG9taXphZG8uXG4gKiBAcGFyYW0gY3VzdG9tRmllbGRzIG9iamV0byBjb20gb3MgY2FtcG9zIGN1c3RvbWl6YWRvcyBkYSBlbnRpZGFkZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1vdW50Q3VzdG9tVG9TaG93KGN1c3RvbUZpZWxkcykge1xuICBjb25zdCBjdXN0b21GaWVsZHNUb1Nob3cgPSB7fTtcbiAgaWYgKGN1c3RvbUZpZWxkcyAmJiBjdXN0b21GaWVsZHMubGVuZ3RoKSB7XG4gICAgY3VzdG9tRmllbGRzLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICBpZiAoaXRlbS50eXBlID09PSAnZGF0ZScgJiYgaXRlbS52YWx1ZSkge1xuICAgICAgICBpdGVtLnZhbHVlID0gX21vbWVudChpdGVtLnZhbHVlKS5mb3JtYXQoJ0wnKTtcbiAgICAgIH1cbiAgICAgIGN1c3RvbUZpZWxkc1RvU2hvd1tpdGVtLmZpZWxkXSA9IGl0ZW0udmFsdWU7XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIGN1c3RvbUZpZWxkc1RvU2hvdztcbn1cblxuLyoqXG4gKiBQcmVwYXJhIG8gb2JqZXRvIGRlIGNhbXBvcyBjdXN0b21pemFkb3MgcGFyYSBzYWx2YXIgYXMgZW50aWRhZGVzIHF1ZVxuICogc8OjbyB1dGlsaXphZGFzIGEgcGFydGlyIGRvIENSVUQgZ2VyYWRvLlxuICogQHBhcmFtIG9iamVjdEZpZWxkcyBvYmpldG8gY29tIG9zIGNhbXBvcyBjdXN0b21pemFkb3MgZGEgZW50aWRhZGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtb3VudEdlbmVyYXRlZEN1c3RvbVRvU2F2ZShvYmplY3RGaWVsZHMpIHtcbiAgT2JqZWN0LmVudHJpZXMob2JqZWN0RmllbGRzKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICBkZWxldGUgb2JqZWN0RmllbGRzW2tleV07XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIG9iamVjdEZpZWxkcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1vdW50Q3VzdG9tRm9yU2hvdyhjdXN0b20pIHtcbiAgY29uc3QgY3VzdG9tRmllbGQgPSBbXTtcbiAgT2JqZWN0LmtleXMoY3VzdG9tIHx8IHt9KS5mb3JFYWNoKHZhbCA9PiB7XG4gICAgaWYgKGN1c3RvbVt2YWxdLnR5cGUgPT09ICdkYXRlJyAmJiBjdXN0b21bdmFsXS52YWx1ZSkge1xuICAgICAgY3VzdG9tW3ZhbF0udmFsdWUgPSBfbW9tZW50KGN1c3RvbVt2YWxdLnZhbHVlKS5mb3JtYXQoJ0wnKTtcbiAgICB9XG4gICAgY3VzdG9tRmllbGQucHVzaChjdXN0b21bdmFsXSk7XG4gIH0pO1xuICByZXR1cm4gY3VzdG9tRmllbGQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRWYWx1ZUN1c3RvbShjdXN0b25GaWVsZHMsIGN1c3RvbSkge1xuICBjb25zdCBpc0N1c3RvbnMgPSBjdXN0b20gPyBPYmplY3Qua2V5cyhjdXN0b20pLmxlbmd0aCA6IDA7XG4gIGN1c3RvbkZpZWxkcy5tYXAodmFsID0+IHtcbiAgICB2YWwudmFsdWUgPSBpc0N1c3RvbnMgPiAwID8gY3VzdG9tW3ZhbC5maWVsZF0gOiBudWxsO1xuICB9KTtcbiAgcmV0dXJuIGN1c3RvbkZpZWxkcztcbn1cblxuLyoqXG4gKiAgQWRpY2lvbmEgdW0gZXJybyBubyBjb250cm9sZSBkbyBmb3JtdWzDoXJpby4gRGV2ZSBzZXIgY2hhbWFkbyBjb20gLmNhbGwgcGFzc2FuZG8gbyBjb250ZXh0byBkYSBjbGFzcy5cbiAqICBFeC46IHNldEVycm9ycy5jYWxsKHRoaXMuY29udHJhY3RHcm91cCwgJ3JlZ2lzdGVyRW1wbG95ZWVOdW1iZXInLCAnZXhpc3QnLCAhcGF5bG9hZClcbiAqXG4gKiBAcGFyYW0gZm9ybUNvbnRyb2xOYW1lIE5vbWUgZG8gY29udHJvbGUgZG8gZm9ybXVsw6FyaW8uXG4gKiBAcGFyYW0ga2V5RXJyb3IgTm9tZSBkbyBlcnJvciBhIHNlciBleGliaWRvIGVtIHRlbGEuXG4gKiBAcGFyYW0gaXNJbnZhbGlkIFNlIGhvdXZlciBhbGd1bSBlcnJvIGRlIHZhbGlkYcOnw6NvIG5vIGNhbXBvLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0RXJyb3JzKGZvcm1Db250cm9sTmFtZTogc3RyaW5nLCBrZXlFcnJvcjogc3RyaW5nLCBpc0ludmFsaWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgaWYgKGlzSW52YWxpZCkge1xuICAgICAgY29uc3QgZXJyb3JzID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5nZXQoZm9ybUNvbnRyb2xOYW1lKS5lcnJvcnMpO1xuICAgICAgZXJyb3JzW2tleUVycm9yXSA9IGlzSW52YWxpZDtcbiAgICAgIHRoaXMuZ2V0KGZvcm1Db250cm9sTmFtZSkuc2V0RXJyb3JzKGVycm9ycyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGVycm9ycyA9IHRoaXMuZ2V0KGZvcm1Db250cm9sTmFtZSkuZXJyb3JzO1xuXG4gICAgICBpZiAoZXJyb3JzICYmIE9iamVjdC5rZXlzKGVycm9ycykubGVuZ3RoKSB7XG4gICAgICAgIGRlbGV0ZSBlcnJvcnNba2V5RXJyb3JdO1xuXG4gICAgICAgIGlmICghT2JqZWN0LmtleXMoZXJyb3JzKS5sZW5ndGgpIHtcbiAgICAgICAgICB0aGlzLmdldChmb3JtQ29udHJvbE5hbWUpLnNldEVycm9ycyhudWxsKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSwgMCk7XG59XG5cbi8qKlxuICogRmF6IGxvb3AgZG8gbm9zIGNvbnRyb2xzIGRvIGZvcm11bMOhcmlvIGUgc3ViQXJyYXkgY2FzbyBleGlzdGlyXG4gKiBzZXRhbmRvIG9zIGludsOhbGlkb3NcbiAqIEV4LjogdmVyaWZ5VmFsaWRhdGlvbnNGb3JtLmNhbGwodGhpcy5pbml0aWFsR3JvdXApO1xuICovXG5leHBvcnQgZnVuY3Rpb24gdmVyaWZ5VmFsaWRhdGlvbnNGb3JtKCkge1xuICBPYmplY3Qua2V5cyh0aGlzLmNvbnRyb2xzKS5tYXAoZmllbGQgPT4ge1xuICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmdldChmaWVsZCk7XG4gICAgY29udHJvbC5tYXJrQXNEaXJ0eSgpO1xuICAgIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUdyb3VwIHx8IGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcbiAgICAgIHZlcmlmeVZhbGlkYXRpb25zRm9ybS5jYWxsKGNvbnRyb2wpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogUmV0b3JuYSBhIGlkYWRlIGRlIGFjb3JkbyBjb20gYSBkYXRhIGRlIG5hc2NpbWVudG8uXG4gKlxuICogQHBhcmFtIGJpcnRoZGF5RGF0ZSBEYXRhIGRlIG5hc2NpbWVudG8uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRZZWFycyhiaXJ0aGRheSkge1xuICBjb25zdCBjdXJyZW50RGF0ZSA9IG1vbWVudCgpO1xuICBjb25zdCB5ZWFycyA9IGN1cnJlbnREYXRlLmRpZmYoYmlydGhkYXksICd5ZWFycycsIGZhbHNlKTtcbiAgcmV0dXJuIHllYXJzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0Q3VzdG9uRmllbGRzKGN1c3RvbUZpZWxkcykge1xuICBjdXN0b21GaWVsZHMubWFwKHZhbCA9PiB7XG4gICAgY29uc3QgYWRkQ3VzdG9uID0ge307XG4gICAgbGV0IHZhbHVlID0gdmFsLnZhbHVlIHx8IG51bGw7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlID8gJ3RydWUnIDogJ2ZhbHNlJztcbiAgICB9XG4gICAgYWRkQ3VzdG9uW3ZhbC5maWVsZF0gPSBuZXcgRm9ybUNvbnRyb2wodmFsdWUpO1xuICAgIHRoaXMucHVzaChuZXcgRm9ybUdyb3VwKGFkZEN1c3RvbikpO1xuICB9KTtcbiAgcmV0dXJuIGN1c3RvbUZpZWxkcztcbn1cblxuICAgIGV4cG9ydCBmdW5jdGlvbiBzZXRSZXF1aXJlZChmb3JtR3JvdXA6IEZvcm1Hcm91cCwgbmFtZTogc3RyaW5nLCByZXF1aXJlZDogYm9vbGVhbiwgdmFsaWRhdG9ycz86IFZhbGlkYXRvckZuW10pIHtcbiAgaWYgKHJlcXVpcmVkKSB7XG4gICAgZm9ybUdyb3VwLmNvbnRyb2xzW25hbWVdLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5jb21wb3NlKHZhbGlkYXRvcnMgJiYgdmFsaWRhdG9ycy5sZW5ndGggPyB2YWxpZGF0b3JzIDogW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSk7XG4gICAgZm9ybUdyb3VwLmNvbnRyb2xzW25hbWVdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgfSBlbHNlIHtcbiAgICBmb3JtR3JvdXAuY29udHJvbHNbbmFtZV0uc2V0VmFsaWRhdG9ycyhudWxsKTtcbiAgICBmb3JtR3JvdXAuY29udHJvbHNbbmFtZV0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICB9XG59XG5cbi8qKlxuICogRXNzZSBtw6l0b2RvIHRlbSBjb21vIGZ1bsOnw6NvIHNldGFyIG9zIGNhbXBvcyBlbmFibGUgb3UgZGlzYWJsZS5cbiAqIEBwYXJhbSBmb3JtR3JvdXAgRm9ybUdyb3VwIG9uZGUgc2UgZW5jb250cmEgb3MgY2FtcG9zIGEgc2VyZW0gYWx0ZXJhZG9zLlxuICogQHBhcmFtIGNvbmRpdGlvbiBDb25kacOnw6NvIHBhcmEgdmFsaWRhw6fDo28uIFRydWUgPSBlbmFibGVkLCBGYWxzZSA9IGRpc2FibGVkLlxuICogQHBhcmFtIGZpZWxkcyBDYW1wb3MgYSBzZXJlbSBtYW5pcHVsYWRvcy5cbiAqIEBwYXJhbSBmaWVsZHNUb0NsZWFyIENhbXBvcyBhIHNlcmVtIGxpbXBvcy4gw4kgb3BpY2lvbmFsIGUgc2UgbsOjbyBmb2kgcGFzc2FkbyBvIG3DqXRvZG8gbGltcGFyw6Egb3MgbWVzbW9zIGNhbXBvcyBkb3MgZmllbGRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29uZmlnRW5hYmxlZEZpZWxkcyhmb3JtR3JvdXA6IEZvcm1Hcm91cCwgY29uZGl0aW9uOiBib29sZWFuLCBmaWVsZHM6IEFycmF5PHN0cmluZz4sIGZpZWxkc1RvQ2xlYXI/OiBBcnJheTxzdHJpbmc+KSB7XG4gIGlmIChjb25kaXRpb24pIHtcbiAgICBmaWVsZHMuZm9yRWFjaChmaWVsZCA9PiBmb3JtR3JvdXAuZ2V0KGZpZWxkKS5lbmFibGUoKSk7XG4gIH0gZWxzZSB7XG4gICAgZmllbGRzLmZvckVhY2goZmllbGQgPT4gZm9ybUdyb3VwLmdldChmaWVsZCkuZGlzYWJsZSgpKTtcbiAgICBjbGVhclZhbHVlcyhmb3JtR3JvdXAsIGZpZWxkc1RvQ2xlYXIgPyBmaWVsZHNUb0NsZWFyIDogZmllbGRzKTtcbiAgfVxufVxuXG4vKipcbiAqIEVzc2UgbcOpdG9kbyB0ZW0gY29tbyBmdW7Dp8OjbyBzZXRhciBvcyBjYW1wb3MgY29tbyByZXF1ZXJpZG9zIG91IG7Do28uXG4gKlxuICogQHBhcmFtIGZvcm1Hcm91cCBGb3JtR3JvdXAgb25kZSBzZSBlbmNvbnRyYSBvcyBjYW1wb3MgYSBzZXJlbSBhbHRlcmFkb3MuXG4gKiBAcGFyYW0gY29uZGl0aW9uIFNlIHNlcsOhIG91IG7Do28gcmVxdWVyaWRvcy5cbiAqIEBwYXJhbSBmaWVsZHMgTGlzdGEgZGUgY2FtcG9zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0UmVxdWlyZWRGaWVsZHMoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGNvbmRpdGlvbjogYm9vbGVhbiwgZmllbGRzOiBBcnJheTxzdHJpbmc+KSB7XG4gIGlmIChjb25kaXRpb24pIHtcbiAgICBmaWVsZHMuZm9yRWFjaChmaWVsZCA9PiBzZXRSZXF1aXJlZChmb3JtR3JvdXAsIGZpZWxkLCB0cnVlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pKTtcbiAgfSBlbHNlIHtcbiAgICBmaWVsZHMuZm9yRWFjaChmaWVsZCA9PiBzZXRSZXF1aXJlZChmb3JtR3JvdXAsIGZpZWxkLCBmYWxzZSkpO1xuICB9XG59XG5cblxuLyoqXG4gKiBFc3NlIG3DqXRvZG8gdGVtIGNvbW8gZnVuw6fDo28gc2V0YXIgdmFsaWRhw6fDtWVzIGRpbsOibWljYXMgbm9zIGNhbXBvcy5cbiAqXG4gKiBAcGFyYW0gZm9ybUdyb3VwIEZvcm1Hcm91cCBvbmRlIHNlIGVuY29udHJhIG9zIGNhbXBvcyBhIHNlcmVtIGFsdGVyYWRvcy5cbiAqIEBwYXJhbSBmaWVsZHMgTGlzdGEgZGUgb2JqZXRvcyBbe2ZpZWxkOiBjYW1wbywgdmFsaWRhdG9yczogdmFsaWRhw6fDtWVzLCBkaXNhYmxlOiBib29sZWFufV0uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRWYWxpZGF0b3JzQW5kRGlzYWJsZUZpZWxkcyhmb3JtR3JvdXA6IEZvcm1Hcm91cCwgZmllbGRzOiBBcnJheTxGaWVsZFZhbGlkYXRvcnNPYmplY3Q+KSB7XG4gICAgZmllbGRzLmZvckVhY2goKGN1cnJlbnRGaWVsZDogRmllbGRWYWxpZGF0b3JzT2JqZWN0KSA9PiB7XG4gICAgICAgIHNldFZhbGlkYXRvcihmb3JtR3JvdXAsIGN1cnJlbnRGaWVsZC5maWVsZCwgIGN1cnJlbnRGaWVsZC52YWxpZGF0b3JzKTtcbiAgICAgICAgc2V0RGlzYWJsZUZpZWxkKGZvcm1Hcm91cCwgY3VycmVudEZpZWxkLmRpc2FibGVkLCAgY3VycmVudEZpZWxkLmZpZWxkLCBjdXJyZW50RmllbGQuY2xlYXJWYWx1ZSk7XG4gICAgfSk7XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIHNldFZhbGlkYXRvcihmb3JtR3JvdXA6IEZvcm1Hcm91cCwgbmFtZTogc3RyaW5nLCB2YWxpZGF0b3JzPzogVmFsaWRhdG9yRm5bXSkge1xuICAgIGlmICh2YWxpZGF0b3JzICYmIHZhbGlkYXRvcnMubGVuZ3RoKSB7XG4gICAgICAgIGZvcm1Hcm91cC5jb250cm9sc1tuYW1lXS5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMuY29tcG9zZSh2YWxpZGF0b3JzKSk7XG4gICAgICAgIGZvcm1Hcm91cC5jb250cm9sc1tuYW1lXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgZm9ybUdyb3VwLmNvbnRyb2xzW25hbWVdLnNldFZhbGlkYXRvcnMobnVsbCk7XG4gICAgICAgIGZvcm1Hcm91cC5jb250cm9sc1tuYW1lXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgfVxufVxuXG5cbi8qKlxuICogRXNzZSBtw6l0b2RvIHRlbSBjb21vIGZ1bsOnw6NvIHNldGFyIG9zIGNhbXBvcyBlbmFibGUgb3UgZGlzYWJsZS5cbiAqIEBwYXJhbSBmb3JtR3JvdXAgRm9ybUdyb3VwIG9uZGUgc2UgZW5jb250cmEgb3MgY2FtcG9zIGEgc2VyZW0gYWx0ZXJhZG9zLlxuICogQHBhcmFtIGNvbmRpdGlvbiBDb25kacOnw6NvIHBhcmEgdmFsaWRhw6fDo28uIFRydWUgPSBkaXNhYmxlZCwgRmFsc2UgPSBlbmFibGVkLlxuICogQHBhcmFtIGZpZWxkIENhbXBvIGEgc2VyIG1hbmlwdWxhZG9zLlxuICogQHBhcmFtIGNsZWFyVmFsdWUgQ2FtcG9zIGEgc2VyIGxpbXBvcy4gw4kgb3BpY2lvbmFsIGUgc2UgbsOjbyBmb2kgcGFzc2FkbyBvIG3DqXRvZG8gbGltcGFyw6EgbyBjYW1wbyBkbyBmaWVsZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldERpc2FibGVGaWVsZChmb3JtR3JvdXA6IEZvcm1Hcm91cCwgY29uZGl0aW9uOiBib29sZWFuLCBmaWVsZDogc3RyaW5nLCBjbGVhclZhbHVlOiBib29sZWFuID0gdHJ1ZSkge1xuICAgIGlmIChjb25kaXRpb24pIHtcbiAgICAgICAgZm9ybUdyb3VwLmdldChmaWVsZCkuZGlzYWJsZSgpO1xuICAgICAgICBpZiAoY2xlYXJWYWx1ZSkgZm9ybUdyb3VwLmdldChmaWVsZCkucmVzZXQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBmb3JtR3JvdXAuZ2V0KGZpZWxkKS5lbmFibGUoKTtcbiAgICB9XG59XG5cbi8qKlxuICogT3JkZW5hIGFycmF5IGRlIG9iamV0b3NcbiAqIEBwYXJhbSBrZXkgbyBjYW1wbyBxdWUgZGVzZWphIG9yZGVuYXJcbiAqIEBwYXJhbSBvcmRlciBhIG9yZGVtIHF1ZSBkZXNlamEgb3JkZW5hciBvIGNhbXBvXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21wYXJlVmFsdWVzKGtleTogc3RyaW5nLCBvcmRlcjogc3RyaW5nID0gXCJBU0NcIikge1xuICAgIHJldHVybiBmdW5jdGlvbiBpbm5lclNvcnQoYTogYW55LCBiOiBhbnkpIHtcbiAgICAgICAgaWYgKCFhLmhhc093blByb3BlcnR5KGtleSkgfHwgIWIuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB2YXJBID0gKHR5cGVvZiBhW2tleV0gPT09IFwic3RyaW5nXCIpXG4gICAgICAgICAgICA/IGFba2V5XS50b1VwcGVyQ2FzZSgpIDogYVtrZXldO1xuICAgICAgICBjb25zdCB2YXJCID0gKHR5cGVvZiBiW2tleV0gPT09IFwic3RyaW5nXCIpXG4gICAgICAgICAgICA/IGJba2V5XS50b1VwcGVyQ2FzZSgpIDogYltrZXldO1xuXG4gICAgICAgIGxldCBjb21wYXJpc29uID0gMDtcbiAgICAgICAgaWYgKHZhckEgPiB2YXJCKSB7XG4gICAgICAgICAgICBjb21wYXJpc29uID0gMTtcbiAgICAgICAgfSBlbHNlIGlmICh2YXJBIDwgdmFyQikge1xuICAgICAgICAgICAgY29tcGFyaXNvbiA9IC0xO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAob3JkZXIgPT09IFwiREVTQ1wiKSA/IChjb21wYXJpc29uICogLTEpIDogY29tcGFyaXNvblxuICAgICAgICApO1xuICAgIH07XG59XG5cbi8qKlxuICogRXNzZSBtw6l0b2RvIHRlbSBjb21vIGZ1bsOnw6NvIGxpbXBhciBvIHZhbG9yIGRvcyBjYW1wb3MuXG4gKlxuICogQHBhcmFtIGZvcm1Hcm91cCBGb3JtR3JvdXAgb25kZSBzZSBlbmNvbnRyYSBvcyBjYW1wb3MgYSBzZXJlbSBsaW1wb3MuXG4gKiBAcGFyYW0gZmllbGRzIENhbXBvcyBhIHNlcmVtIGxpbXBvcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsZWFyVmFsdWVzKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBmaWVsZHM6IEFycmF5PHN0cmluZz4pIHtcbiAgZmllbGRzLmZvckVhY2goZmllbGQgPT4gZm9ybUdyb3VwLmdldChmaWVsZCkucmVzZXQoKSk7XG59XG5cbi8qKlxuICpcbiAqIEBwYXJhbSBxcyA9IHdpbmRvdy5sb2NhdGlvbi5zZWFyY2hcbiAqIEByZXR1cm5zIE9iamVjdCBjb20gcGFyYW1ldHJvcyBxdWVyeSBzdHJpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFF1ZXJ5UGFyYW1zKHFzKSB7XG4gIHFzID0gcXMuc3BsaXQoJysnKS5qb2luKCcgJyk7XG5cbiAgY29uc3QgcGFyYW1zID0ge307XG4gIGxldCB0b2tlbnM7XG4gIGNvbnN0IHJlID0gL1s/Jl0/KFtePV0rKT0oW14mXSopL2c7XG5cbiAgd2hpbGUgKCh0b2tlbnMgPSByZS5leGVjKHFzKSkpIHtcbiAgICBwYXJhbXNbZGVjb2RlVVJJQ29tcG9uZW50KHRva2Vuc1sxXSldID0gZGVjb2RlVVJJQ29tcG9uZW50KHRva2Vuc1syXSk7XG4gIH1cblxuICByZXR1cm4gcGFyYW1zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9ybWF0KGxvY2FsZSkge1xuICBpZiAobG9jYWxlKSB7XG4gICAgbGV0IGRhdGVGb3JtYXQgPSBsb2NhbGUuY2FsZW5kYXIuZGF0ZUZvcm1hdC50b1N0cmluZygpO1xuICAgIGRhdGVGb3JtYXQgPSBkYXRlRm9ybWF0LnJlcGxhY2UoL1t5XS9nLCAnWVknKTtcbiAgICBkYXRlRm9ybWF0ID0gZGF0ZUZvcm1hdC5yZXBsYWNlKC9bL10vZywgJycpO1xuICAgIHJldHVybiBkYXRlRm9ybWF0LnRvVXBwZXJDYXNlKCk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZW1vdmUgb3MgY2FyYWN0ZXJlcyBxdWUgbsOjbyBzZWphbSBuw7ptZXJvcyBkbyB2YWxvclxuICogQHBhcmFtIHZhbHVlIHZhbG9yIGEgc2VyIHRyYXRhZG9cbiAqIEByZXR1cm5zIHN0cmluZyBPIHZhbG9yIHNlbSBjYXJhY3RlcmVzIGVzcGVjaWFpc1xuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlQ2hhcmFjdGVyZXNTcGVjaWFscyh2YWx1ZTogYW55KTogc3RyaW5nIHtcbiAgICByZXR1cm4gdmFsdWUgPyB2YWx1ZS50b1N0cmluZygpLnJlcGxhY2UoL1smXFwvXFxcXCMsKygpJH4lLidcIjoqPzw+e30tXS9nLCBcIlwiKSA6IG51bGw7XG59XG4iXX0=
|