@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
|
@@ -1,737 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview added by tsickle
|
|
3
|
-
* Generated from: lib/components/utils/helpers.ts
|
|
4
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
5
|
-
*/
|
|
6
|
-
import { FormArray, FormControl, FormGroup, Validators } from '@angular/forms';
|
|
7
|
-
import * as chance from 'chance';
|
|
8
|
-
import * as momentImported from 'moment';
|
|
9
|
-
import business from 'moment-business';
|
|
10
|
-
/** @type {?} */
|
|
11
|
-
const moment = momentImported;
|
|
12
|
-
/**
|
|
13
|
-
* @param {?} item
|
|
14
|
-
* @return {?}
|
|
15
|
-
*/
|
|
16
|
-
export function isObject(item) {
|
|
17
|
-
return item && typeof item === 'object' && !Array.isArray(item);
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* @param {?} item
|
|
21
|
-
* @return {?}
|
|
22
|
-
*/
|
|
23
|
-
export function isShallow(item) {
|
|
24
|
-
return Array.isArray(item) && item.find((/**
|
|
25
|
-
* @param {?} value
|
|
26
|
-
* @return {?}
|
|
27
|
-
*/
|
|
28
|
-
value => typeof value === 'object')) ? false : true;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* @param {?} value
|
|
32
|
-
* @return {?}
|
|
33
|
-
*/
|
|
34
|
-
export function convertBooleanString(value) {
|
|
35
|
-
if (typeof value === 'boolean') {
|
|
36
|
-
return value === true ? 'true' : 'false';
|
|
37
|
-
}
|
|
38
|
-
return value;
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* @param {?} value
|
|
42
|
-
* @return {?}
|
|
43
|
-
*/
|
|
44
|
-
export function convertStringToBoolean(value) {
|
|
45
|
-
return value === true || value.toLowerCase() === 'true';
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* @param {?} target
|
|
49
|
-
* @param {...?} sources
|
|
50
|
-
* @return {?}
|
|
51
|
-
*/
|
|
52
|
-
export function assign(target, ...sources) {
|
|
53
|
-
if (!sources.length) {
|
|
54
|
-
return target;
|
|
55
|
-
}
|
|
56
|
-
/** @type {?} */
|
|
57
|
-
const source = sources.shift();
|
|
58
|
-
if (isObject(target) && isObject(source)) {
|
|
59
|
-
for (const key in source) {
|
|
60
|
-
if (isObject(source[key])) {
|
|
61
|
-
if (!target[key]) {
|
|
62
|
-
Object.assign(target, { [key]: {} });
|
|
63
|
-
}
|
|
64
|
-
assign(target[key], source[key]);
|
|
65
|
-
}
|
|
66
|
-
else {
|
|
67
|
-
if (isShallow(source[key])) {
|
|
68
|
-
Object.assign(target, { [key]: source[key] });
|
|
69
|
-
}
|
|
70
|
-
else {
|
|
71
|
-
if (!target[key]) {
|
|
72
|
-
Object.assign(target, { [key]: [] });
|
|
73
|
-
}
|
|
74
|
-
Object.assign(target, { [key]: source[key].map((/**
|
|
75
|
-
* @param {?} item
|
|
76
|
-
* @param {?} index
|
|
77
|
-
* @return {?}
|
|
78
|
-
*/
|
|
79
|
-
(item, index) => assign(target[key][index] || {}, item))) });
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
return assign(target, ...sources);
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* @param {?} value
|
|
88
|
-
* @return {?}
|
|
89
|
-
*/
|
|
90
|
-
export function isValid(value) {
|
|
91
|
-
return value === 0 || typeof value === 'boolean' ? true : value !== undefined && value !== null && value !== '';
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* @param {?} value
|
|
95
|
-
* @param {?=} withDays
|
|
96
|
-
* @return {?}
|
|
97
|
-
*/
|
|
98
|
-
export function isValidDate(value, withDays = true) {
|
|
99
|
-
if (value && isFullDate(value, withDays)) {
|
|
100
|
-
if (withDays) {
|
|
101
|
-
return moment(value.replace(/[^\d]+/g, ''), 'DDMMYYYY').isValid();
|
|
102
|
-
}
|
|
103
|
-
else {
|
|
104
|
-
return moment(value.replace(/[^\d]+/g, ''), 'MMYYYY').isValid();
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
return true;
|
|
108
|
-
}
|
|
109
|
-
/**
|
|
110
|
-
* @param {?} value
|
|
111
|
-
* @param {?=} withDays
|
|
112
|
-
* @return {?}
|
|
113
|
-
*/
|
|
114
|
-
export function isFullDate(value, withDays = true) {
|
|
115
|
-
if (value) {
|
|
116
|
-
/** @type {?} */
|
|
117
|
-
let totalLength;
|
|
118
|
-
if (withDays) {
|
|
119
|
-
totalLength = 8;
|
|
120
|
-
}
|
|
121
|
-
else {
|
|
122
|
-
totalLength = 6;
|
|
123
|
-
}
|
|
124
|
-
return value.replace(/[^\d]+/g, '').length === totalLength;
|
|
125
|
-
}
|
|
126
|
-
return true;
|
|
127
|
-
}
|
|
128
|
-
/**
|
|
129
|
-
* @param {?} tableIdObject
|
|
130
|
-
* @return {?}
|
|
131
|
-
*/
|
|
132
|
-
export function autoCompleteObjectForIdObject(tableIdObject) {
|
|
133
|
-
if (!isObject(tableIdObject)) {
|
|
134
|
-
console.error('Paramentro não é um objeto');
|
|
135
|
-
return false;
|
|
136
|
-
}
|
|
137
|
-
if (tableIdObject.hasOwnProperty('tableId')) {
|
|
138
|
-
console.error('Paramentro não é um objeto Auto Complete válido, falta tableId');
|
|
139
|
-
}
|
|
140
|
-
if (!isValid(tableIdObject.tableId)) {
|
|
141
|
-
console.error('tableId esta vazio');
|
|
142
|
-
}
|
|
143
|
-
return { id: tableIdObject.tableId };
|
|
144
|
-
}
|
|
145
|
-
/**
|
|
146
|
-
* @param {?} name
|
|
147
|
-
* @param {?} value
|
|
148
|
-
* @return {?}
|
|
149
|
-
*/
|
|
150
|
-
export function isDateField(name, value) {
|
|
151
|
-
/** @type {?} */
|
|
152
|
-
const testDate = name.search('Date');
|
|
153
|
-
if (testDate !== -1) {
|
|
154
|
-
return invertFieldDate(value);
|
|
155
|
-
}
|
|
156
|
-
return value;
|
|
157
|
-
}
|
|
158
|
-
/**
|
|
159
|
-
* @param {?} value
|
|
160
|
-
* @param {?=} inFormat
|
|
161
|
-
* @param {?=} outFormat
|
|
162
|
-
* @return {?}
|
|
163
|
-
*/
|
|
164
|
-
export function invertFieldDate(value, inFormat = 'DDMMYYYY', outFormat = 'YYYY-MM-DD') {
|
|
165
|
-
if (!isValid(value)) {
|
|
166
|
-
return;
|
|
167
|
-
}
|
|
168
|
-
/** @type {?} */
|
|
169
|
-
const formatIn = getFormatDate(value, inFormat);
|
|
170
|
-
return moment(value.replace(/[^\d]+/g, ''), formatIn).format(outFormat);
|
|
171
|
-
}
|
|
172
|
-
/**
|
|
173
|
-
* @param {?} value
|
|
174
|
-
* @param {?} quantidade
|
|
175
|
-
* @return {?}
|
|
176
|
-
*/
|
|
177
|
-
export function getAddWeekDaysBusiness(value, quantidade) {
|
|
178
|
-
return business.addWeekDays(getMoment(value), quantidade).format('DD/MM/YYYY');
|
|
179
|
-
}
|
|
180
|
-
/**
|
|
181
|
-
* @param {?} startDate
|
|
182
|
-
* @param {?} endDate
|
|
183
|
-
* @return {?}
|
|
184
|
-
*/
|
|
185
|
-
export function getWeekDaysBusiness(startDate, endDate) {
|
|
186
|
-
/** @type {?} */
|
|
187
|
-
const endMoment = endDate ? getMoment(endDate) : getMoment(startDate).endOf('month');
|
|
188
|
-
return business.weekDays(getMoment(startDate), endMoment);
|
|
189
|
-
}
|
|
190
|
-
/**
|
|
191
|
-
* @param {?} value
|
|
192
|
-
* @param {?} inFormat
|
|
193
|
-
* @return {?}
|
|
194
|
-
*/
|
|
195
|
-
export function getFormatDate(value, inFormat) {
|
|
196
|
-
if (value.search('/') !== -1) {
|
|
197
|
-
return 'DDMMYYYY';
|
|
198
|
-
}
|
|
199
|
-
else if (value.search('-') !== -1) {
|
|
200
|
-
return 'YYYYMMDD';
|
|
201
|
-
}
|
|
202
|
-
return inFormat;
|
|
203
|
-
}
|
|
204
|
-
/**
|
|
205
|
-
* FIXME - Está fixo para uso do calendário portugues Brasil
|
|
206
|
-
* @param {?} value
|
|
207
|
-
* @param {?=} outFormat
|
|
208
|
-
* @return {?}
|
|
209
|
-
*/
|
|
210
|
-
export function ngCalendarFormat(value, outFormat = 'DD/MM/YYYY') {
|
|
211
|
-
if (isValidDate(value)) {
|
|
212
|
-
if (typeof value === 'string') {
|
|
213
|
-
return value;
|
|
214
|
-
}
|
|
215
|
-
else {
|
|
216
|
-
return _moment(value).format(outFormat);
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
/**
|
|
221
|
-
* @param {?=} outFormat
|
|
222
|
-
* @return {?}
|
|
223
|
-
*/
|
|
224
|
-
export function getNowDate(outFormat = 'YYYY-MM-DD') {
|
|
225
|
-
return moment().format(outFormat);
|
|
226
|
-
}
|
|
227
|
-
/**
|
|
228
|
-
* @param {?} value
|
|
229
|
-
* @param {?=} inFormat
|
|
230
|
-
* @return {?}
|
|
231
|
-
*/
|
|
232
|
-
export function getMoment(value, inFormat = 'DDMMYYYY') {
|
|
233
|
-
/** @type {?} */
|
|
234
|
-
const formatIn = getFormatDate(value, inFormat);
|
|
235
|
-
return moment(value.replace(/[^\d]+/g, ''), formatIn);
|
|
236
|
-
}
|
|
237
|
-
/**
|
|
238
|
-
* @param {?} value
|
|
239
|
-
* @param {?=} format
|
|
240
|
-
* @return {?}
|
|
241
|
-
*/
|
|
242
|
-
export function _moment(value, format) {
|
|
243
|
-
if (format) {
|
|
244
|
-
return moment(value, format);
|
|
245
|
-
}
|
|
246
|
-
return moment(value);
|
|
247
|
-
}
|
|
248
|
-
/**
|
|
249
|
-
* @param {?} objs
|
|
250
|
-
* @return {?}
|
|
251
|
-
*/
|
|
252
|
-
export function getObjValids(objs) {
|
|
253
|
-
/** @type {?} */
|
|
254
|
-
const json = Object.assign({}, objs);
|
|
255
|
-
/** @type {?} */
|
|
256
|
-
const jsonReturn = {};
|
|
257
|
-
Object.keys(json).map((/**
|
|
258
|
-
* @param {?} key
|
|
259
|
-
* @return {?}
|
|
260
|
-
*/
|
|
261
|
-
key => {
|
|
262
|
-
if (isValid(json[key])) {
|
|
263
|
-
jsonReturn[key] = isDateField(key, json[key]);
|
|
264
|
-
}
|
|
265
|
-
}));
|
|
266
|
-
return jsonReturn;
|
|
267
|
-
}
|
|
268
|
-
/**
|
|
269
|
-
* @param {?} obj
|
|
270
|
-
* @return {?}
|
|
271
|
-
*/
|
|
272
|
-
export function removeEmpty(obj) {
|
|
273
|
-
Object.keys(obj).forEach((/**
|
|
274
|
-
* @param {?} k
|
|
275
|
-
* @return {?}
|
|
276
|
-
*/
|
|
277
|
-
k => (obj[k] && typeof obj[k] === 'object' && removeEmpty(obj[k])) || (!obj[k] && obj[k] !== undefined && delete obj[k])));
|
|
278
|
-
return obj;
|
|
279
|
-
}
|
|
280
|
-
/**
|
|
281
|
-
* @param {?} value
|
|
282
|
-
* @param {?=} i18n
|
|
283
|
-
* @return {?}
|
|
284
|
-
*/
|
|
285
|
-
export function formatMoney(value, i18n = 'EN') {
|
|
286
|
-
switch (i18n) {
|
|
287
|
-
case 'EN':
|
|
288
|
-
return isValid(value)
|
|
289
|
-
? value
|
|
290
|
-
.toString()
|
|
291
|
-
.replace('.', '')
|
|
292
|
-
.replace(',', '.')
|
|
293
|
-
: '';
|
|
294
|
-
case 'BR':
|
|
295
|
-
return isValid(value)
|
|
296
|
-
? value
|
|
297
|
-
.toString()
|
|
298
|
-
.replace('.', ',')
|
|
299
|
-
.replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1.')
|
|
300
|
-
: '';
|
|
301
|
-
default:
|
|
302
|
-
return isValid(value)
|
|
303
|
-
? value
|
|
304
|
-
.toString()
|
|
305
|
-
.replace('.', '')
|
|
306
|
-
.replace(',', '.')
|
|
307
|
-
: '';
|
|
308
|
-
}
|
|
309
|
-
}
|
|
310
|
-
/**
|
|
311
|
-
* @return {?}
|
|
312
|
-
*/
|
|
313
|
-
export function uiid() {
|
|
314
|
-
return new chance()
|
|
315
|
-
.guid()
|
|
316
|
-
.replace(/[^a-zA-Z0-9.]/g, '')
|
|
317
|
-
.toUpperCase();
|
|
318
|
-
}
|
|
319
|
-
/**
|
|
320
|
-
* @param {?} custom
|
|
321
|
-
* @param {?=} customEntity
|
|
322
|
-
* @param {?=} locale
|
|
323
|
-
* @return {?}
|
|
324
|
-
*/
|
|
325
|
-
export function mountCustomForSave(custom, customEntity = null, locale = null) {
|
|
326
|
-
/** @type {?} */
|
|
327
|
-
const custonField = [];
|
|
328
|
-
if (customEntity && custom.length) {
|
|
329
|
-
customEntity.map((/**
|
|
330
|
-
* @param {?} val
|
|
331
|
-
* @param {?} key
|
|
332
|
-
* @return {?}
|
|
333
|
-
*/
|
|
334
|
-
(val, key) => {
|
|
335
|
-
/** @type {?} */
|
|
336
|
-
const field = Object.keys(custom[key]).toString();
|
|
337
|
-
/** @type {?} */
|
|
338
|
-
const valOrnull = isValid(custom[key][field]) ? custom[key][field] : null;
|
|
339
|
-
/** @type {?} */
|
|
340
|
-
const value = val.type === 'date' && locale && isValid(valOrnull) ? moment(valOrnull, getFormat(locale)).format('YYYY-MM-DD') : valOrnull;
|
|
341
|
-
custonField.push({
|
|
342
|
-
field: field,
|
|
343
|
-
value: value,
|
|
344
|
-
});
|
|
345
|
-
}));
|
|
346
|
-
}
|
|
347
|
-
return custonField.length ? custonField : null;
|
|
348
|
-
}
|
|
349
|
-
/**
|
|
350
|
-
* Prepara o objeto de campos customizados para salvar as entidades que
|
|
351
|
-
* são utilizadas a partir do CRUD customizado.
|
|
352
|
-
* @param {?} objectFields objeto com os campos customizados da entidade.
|
|
353
|
-
* @return {?}
|
|
354
|
-
*/
|
|
355
|
-
export function mountCustomToSave(objectFields) {
|
|
356
|
-
/** @type {?} */
|
|
357
|
-
const customFields = [];
|
|
358
|
-
Object.entries(objectFields).forEach((/**
|
|
359
|
-
* @param {?} __0
|
|
360
|
-
* @return {?}
|
|
361
|
-
*/
|
|
362
|
-
([field, value]) => {
|
|
363
|
-
customFields.push({
|
|
364
|
-
field: field,
|
|
365
|
-
value: value,
|
|
366
|
-
});
|
|
367
|
-
}));
|
|
368
|
-
return customFields;
|
|
369
|
-
}
|
|
370
|
-
/**
|
|
371
|
-
* Prepara o objeto de campos customizados para exibir as entidades que
|
|
372
|
-
* são utilizadas a partir do CRUD customizado.
|
|
373
|
-
* @param {?} customFields objeto com os campos customizados da entidade.
|
|
374
|
-
* @return {?}
|
|
375
|
-
*/
|
|
376
|
-
export function mountCustomToShow(customFields) {
|
|
377
|
-
/** @type {?} */
|
|
378
|
-
const customFieldsToShow = {};
|
|
379
|
-
if (customFields && customFields.length) {
|
|
380
|
-
customFields.forEach((/**
|
|
381
|
-
* @param {?} item
|
|
382
|
-
* @return {?}
|
|
383
|
-
*/
|
|
384
|
-
item => {
|
|
385
|
-
if (item.type === 'date' && item.value) {
|
|
386
|
-
item.value = _moment(item.value).format('L');
|
|
387
|
-
}
|
|
388
|
-
customFieldsToShow[item.field] = item.value;
|
|
389
|
-
}));
|
|
390
|
-
}
|
|
391
|
-
return customFieldsToShow;
|
|
392
|
-
}
|
|
393
|
-
/**
|
|
394
|
-
* Prepara o objeto de campos customizados para salvar as entidades que
|
|
395
|
-
* são utilizadas a partir do CRUD gerado.
|
|
396
|
-
* @param {?} objectFields objeto com os campos customizados da entidade.
|
|
397
|
-
* @return {?}
|
|
398
|
-
*/
|
|
399
|
-
export function mountGeneratedCustomToSave(objectFields) {
|
|
400
|
-
Object.entries(objectFields).forEach((/**
|
|
401
|
-
* @param {?} __0
|
|
402
|
-
* @return {?}
|
|
403
|
-
*/
|
|
404
|
-
([key, value]) => {
|
|
405
|
-
if (!value) {
|
|
406
|
-
delete objectFields[key];
|
|
407
|
-
}
|
|
408
|
-
}));
|
|
409
|
-
return objectFields;
|
|
410
|
-
}
|
|
411
|
-
/**
|
|
412
|
-
* @param {?} custom
|
|
413
|
-
* @return {?}
|
|
414
|
-
*/
|
|
415
|
-
export function mountCustomForShow(custom) {
|
|
416
|
-
/** @type {?} */
|
|
417
|
-
const customField = [];
|
|
418
|
-
Object.keys(custom || {}).forEach((/**
|
|
419
|
-
* @param {?} val
|
|
420
|
-
* @return {?}
|
|
421
|
-
*/
|
|
422
|
-
val => {
|
|
423
|
-
if (custom[val].type === 'date' && custom[val].value) {
|
|
424
|
-
custom[val].value = _moment(custom[val].value).format('L');
|
|
425
|
-
}
|
|
426
|
-
customField.push(custom[val]);
|
|
427
|
-
}));
|
|
428
|
-
return customField;
|
|
429
|
-
}
|
|
430
|
-
/**
|
|
431
|
-
* @param {?} custonFields
|
|
432
|
-
* @param {?} custom
|
|
433
|
-
* @return {?}
|
|
434
|
-
*/
|
|
435
|
-
export function setValueCustom(custonFields, custom) {
|
|
436
|
-
/** @type {?} */
|
|
437
|
-
const isCustons = custom ? Object.keys(custom).length : 0;
|
|
438
|
-
custonFields.map((/**
|
|
439
|
-
* @param {?} val
|
|
440
|
-
* @return {?}
|
|
441
|
-
*/
|
|
442
|
-
val => {
|
|
443
|
-
val.value = isCustons > 0 ? custom[val.field] : null;
|
|
444
|
-
}));
|
|
445
|
-
return custonFields;
|
|
446
|
-
}
|
|
447
|
-
/**
|
|
448
|
-
* Adiciona um erro no controle do formulário. Deve ser chamado com .call passando o contexto da class.
|
|
449
|
-
* Ex.: setErrors.call(this.contractGroup, 'registerEmployeeNumber', 'exist', !payload)
|
|
450
|
-
*
|
|
451
|
-
* @param {?} formControlName Nome do controle do formulário.
|
|
452
|
-
* @param {?} keyError Nome do error a ser exibido em tela.
|
|
453
|
-
* @param {?} isInvalid Se houver algum erro de validação no campo.
|
|
454
|
-
* @return {?}
|
|
455
|
-
*/
|
|
456
|
-
export function setErrors(formControlName, keyError, isInvalid) {
|
|
457
|
-
setTimeout((/**
|
|
458
|
-
* @return {?}
|
|
459
|
-
*/
|
|
460
|
-
() => {
|
|
461
|
-
if (isInvalid) {
|
|
462
|
-
/** @type {?} */
|
|
463
|
-
const errors = Object.assign({}, this.get(formControlName).errors);
|
|
464
|
-
errors[keyError] = isInvalid;
|
|
465
|
-
this.get(formControlName).setErrors(errors);
|
|
466
|
-
}
|
|
467
|
-
else {
|
|
468
|
-
/** @type {?} */
|
|
469
|
-
const errors = this.get(formControlName).errors;
|
|
470
|
-
if (errors && Object.keys(errors).length) {
|
|
471
|
-
delete errors[keyError];
|
|
472
|
-
if (!Object.keys(errors).length) {
|
|
473
|
-
this.get(formControlName).setErrors(null);
|
|
474
|
-
}
|
|
475
|
-
}
|
|
476
|
-
}
|
|
477
|
-
}), 0);
|
|
478
|
-
}
|
|
479
|
-
/**
|
|
480
|
-
* Faz loop do nos controls do formulário e subArray caso existir
|
|
481
|
-
* setando os inválidos
|
|
482
|
-
* Ex.: verifyValidationsForm.call(this.initialGroup);
|
|
483
|
-
* @return {?}
|
|
484
|
-
*/
|
|
485
|
-
export function verifyValidationsForm() {
|
|
486
|
-
Object.keys(this.controls).map((/**
|
|
487
|
-
* @param {?} field
|
|
488
|
-
* @return {?}
|
|
489
|
-
*/
|
|
490
|
-
field => {
|
|
491
|
-
/** @type {?} */
|
|
492
|
-
const control = this.get(field);
|
|
493
|
-
control.markAsDirty();
|
|
494
|
-
if (control instanceof FormGroup || control instanceof FormArray) {
|
|
495
|
-
verifyValidationsForm.call(control);
|
|
496
|
-
}
|
|
497
|
-
}));
|
|
498
|
-
}
|
|
499
|
-
/**
|
|
500
|
-
* Retorna a idade de acordo com a data de nascimento.
|
|
501
|
-
*
|
|
502
|
-
* @param {?} birthday
|
|
503
|
-
* @return {?}
|
|
504
|
-
*/
|
|
505
|
-
export function getYears(birthday) {
|
|
506
|
-
/** @type {?} */
|
|
507
|
-
const currentDate = moment();
|
|
508
|
-
/** @type {?} */
|
|
509
|
-
const years = currentDate.diff(birthday, 'years', false);
|
|
510
|
-
return years;
|
|
511
|
-
}
|
|
512
|
-
/**
|
|
513
|
-
* @param {?} customFields
|
|
514
|
-
* @return {?}
|
|
515
|
-
*/
|
|
516
|
-
export function setCustonFields(customFields) {
|
|
517
|
-
customFields.map((/**
|
|
518
|
-
* @param {?} val
|
|
519
|
-
* @return {?}
|
|
520
|
-
*/
|
|
521
|
-
val => {
|
|
522
|
-
/** @type {?} */
|
|
523
|
-
const addCuston = {};
|
|
524
|
-
/** @type {?} */
|
|
525
|
-
let value = val.value || null;
|
|
526
|
-
if (typeof value === 'boolean') {
|
|
527
|
-
value = value ? 'true' : 'false';
|
|
528
|
-
}
|
|
529
|
-
addCuston[val.field] = new FormControl(value);
|
|
530
|
-
this.push(new FormGroup(addCuston));
|
|
531
|
-
}));
|
|
532
|
-
return customFields;
|
|
533
|
-
}
|
|
534
|
-
/**
|
|
535
|
-
* @param {?} formGroup
|
|
536
|
-
* @param {?} name
|
|
537
|
-
* @param {?} required
|
|
538
|
-
* @param {?=} validators
|
|
539
|
-
* @return {?}
|
|
540
|
-
*/
|
|
541
|
-
export function setRequired(formGroup, name, required, validators) {
|
|
542
|
-
if (required) {
|
|
543
|
-
formGroup.controls[name].setValidators(Validators.compose(validators && validators.length ? validators : [Validators.required]));
|
|
544
|
-
formGroup.controls[name].updateValueAndValidity();
|
|
545
|
-
}
|
|
546
|
-
else {
|
|
547
|
-
formGroup.controls[name].setValidators(null);
|
|
548
|
-
formGroup.controls[name].updateValueAndValidity();
|
|
549
|
-
}
|
|
550
|
-
}
|
|
551
|
-
/**
|
|
552
|
-
* Esse método tem como função setar os campos enable ou disable.
|
|
553
|
-
* @param {?} formGroup FormGroup onde se encontra os campos a serem alterados.
|
|
554
|
-
* @param {?} condition Condição para validação. True = enabled, False = disabled.
|
|
555
|
-
* @param {?} fields Campos a serem manipulados.
|
|
556
|
-
* @param {?=} fieldsToClear Campos a serem limpos. É opicional e se não foi passado o método limpará os mesmos campos dos fields.
|
|
557
|
-
* @return {?}
|
|
558
|
-
*/
|
|
559
|
-
export function configEnabledFields(formGroup, condition, fields, fieldsToClear) {
|
|
560
|
-
if (condition) {
|
|
561
|
-
fields.forEach((/**
|
|
562
|
-
* @param {?} field
|
|
563
|
-
* @return {?}
|
|
564
|
-
*/
|
|
565
|
-
field => formGroup.get(field).enable()));
|
|
566
|
-
}
|
|
567
|
-
else {
|
|
568
|
-
fields.forEach((/**
|
|
569
|
-
* @param {?} field
|
|
570
|
-
* @return {?}
|
|
571
|
-
*/
|
|
572
|
-
field => formGroup.get(field).disable()));
|
|
573
|
-
clearValues(formGroup, fieldsToClear ? fieldsToClear : fields);
|
|
574
|
-
}
|
|
575
|
-
}
|
|
576
|
-
/**
|
|
577
|
-
* Esse método tem como função setar os campos como requeridos ou não.
|
|
578
|
-
*
|
|
579
|
-
* @param {?} formGroup FormGroup onde se encontra os campos a serem alterados.
|
|
580
|
-
* @param {?} condition Se será ou não requeridos.
|
|
581
|
-
* @param {?} fields Lista de campos.
|
|
582
|
-
* @return {?}
|
|
583
|
-
*/
|
|
584
|
-
export function setRequiredFields(formGroup, condition, fields) {
|
|
585
|
-
if (condition) {
|
|
586
|
-
fields.forEach((/**
|
|
587
|
-
* @param {?} field
|
|
588
|
-
* @return {?}
|
|
589
|
-
*/
|
|
590
|
-
field => setRequired(formGroup, field, true, [Validators.required])));
|
|
591
|
-
}
|
|
592
|
-
else {
|
|
593
|
-
fields.forEach((/**
|
|
594
|
-
* @param {?} field
|
|
595
|
-
* @return {?}
|
|
596
|
-
*/
|
|
597
|
-
field => setRequired(formGroup, field, false)));
|
|
598
|
-
}
|
|
599
|
-
}
|
|
600
|
-
/**
|
|
601
|
-
* Esse método tem como função setar validações dinâmicas nos campos.
|
|
602
|
-
*
|
|
603
|
-
* @param {?} formGroup FormGroup onde se encontra os campos a serem alterados.
|
|
604
|
-
* @param {?} fields Lista de objetos [{field: campo, validators: validações, disable: boolean}].
|
|
605
|
-
* @return {?}
|
|
606
|
-
*/
|
|
607
|
-
export function setValidatorsAndDisableFields(formGroup, fields) {
|
|
608
|
-
fields.forEach((/**
|
|
609
|
-
* @param {?} currentField
|
|
610
|
-
* @return {?}
|
|
611
|
-
*/
|
|
612
|
-
(currentField) => {
|
|
613
|
-
setValidator(formGroup, currentField.field, currentField.validators);
|
|
614
|
-
setDisableField(formGroup, currentField.disabled, currentField.field, currentField.clearValue);
|
|
615
|
-
}));
|
|
616
|
-
}
|
|
617
|
-
/**
|
|
618
|
-
* @param {?} formGroup
|
|
619
|
-
* @param {?} name
|
|
620
|
-
* @param {?=} validators
|
|
621
|
-
* @return {?}
|
|
622
|
-
*/
|
|
623
|
-
export function setValidator(formGroup, name, validators) {
|
|
624
|
-
if (validators && validators.length) {
|
|
625
|
-
formGroup.controls[name].setValidators(Validators.compose(validators));
|
|
626
|
-
formGroup.controls[name].updateValueAndValidity();
|
|
627
|
-
}
|
|
628
|
-
else {
|
|
629
|
-
formGroup.controls[name].setValidators(null);
|
|
630
|
-
formGroup.controls[name].updateValueAndValidity();
|
|
631
|
-
}
|
|
632
|
-
}
|
|
633
|
-
/**
|
|
634
|
-
* Esse método tem como função setar os campos enable ou disable.
|
|
635
|
-
* @param {?} formGroup FormGroup onde se encontra os campos a serem alterados.
|
|
636
|
-
* @param {?} condition Condição para validação. True = disabled, False = enabled.
|
|
637
|
-
* @param {?} field Campo a ser manipulados.
|
|
638
|
-
* @param {?=} clearValue Campos a ser limpos. É opicional e se não foi passado o método limpará o campo do field.
|
|
639
|
-
* @return {?}
|
|
640
|
-
*/
|
|
641
|
-
export function setDisableField(formGroup, condition, field, clearValue = true) {
|
|
642
|
-
if (condition) {
|
|
643
|
-
formGroup.get(field).disable();
|
|
644
|
-
if (clearValue)
|
|
645
|
-
formGroup.get(field).reset();
|
|
646
|
-
}
|
|
647
|
-
else {
|
|
648
|
-
formGroup.get(field).enable();
|
|
649
|
-
}
|
|
650
|
-
}
|
|
651
|
-
/**
|
|
652
|
-
* Ordena array de objetos
|
|
653
|
-
* @param {?} key o campo que deseja ordenar
|
|
654
|
-
* @param {?=} order a ordem que deseja ordenar o campo
|
|
655
|
-
* @return {?}
|
|
656
|
-
*/
|
|
657
|
-
export function compareValues(key, order = "ASC") {
|
|
658
|
-
return (/**
|
|
659
|
-
* @param {?} a
|
|
660
|
-
* @param {?} b
|
|
661
|
-
* @return {?}
|
|
662
|
-
*/
|
|
663
|
-
function innerSort(a, b) {
|
|
664
|
-
if (!a.hasOwnProperty(key) || !b.hasOwnProperty(key)) {
|
|
665
|
-
return 0;
|
|
666
|
-
}
|
|
667
|
-
/** @type {?} */
|
|
668
|
-
const varA = (typeof a[key] === "string")
|
|
669
|
-
? a[key].toUpperCase() : a[key];
|
|
670
|
-
/** @type {?} */
|
|
671
|
-
const varB = (typeof b[key] === "string")
|
|
672
|
-
? b[key].toUpperCase() : b[key];
|
|
673
|
-
/** @type {?} */
|
|
674
|
-
let comparison = 0;
|
|
675
|
-
if (varA > varB) {
|
|
676
|
-
comparison = 1;
|
|
677
|
-
}
|
|
678
|
-
else if (varA < varB) {
|
|
679
|
-
comparison = -1;
|
|
680
|
-
}
|
|
681
|
-
return ((order === "DESC") ? (comparison * -1) : comparison);
|
|
682
|
-
});
|
|
683
|
-
}
|
|
684
|
-
/**
|
|
685
|
-
* Esse método tem como função limpar o valor dos campos.
|
|
686
|
-
*
|
|
687
|
-
* @param {?} formGroup FormGroup onde se encontra os campos a serem limpos.
|
|
688
|
-
* @param {?} fields Campos a serem limpos.
|
|
689
|
-
* @return {?}
|
|
690
|
-
*/
|
|
691
|
-
export function clearValues(formGroup, fields) {
|
|
692
|
-
fields.forEach((/**
|
|
693
|
-
* @param {?} field
|
|
694
|
-
* @return {?}
|
|
695
|
-
*/
|
|
696
|
-
field => formGroup.get(field).reset()));
|
|
697
|
-
}
|
|
698
|
-
/**
|
|
699
|
-
*
|
|
700
|
-
* @param {?} qs = window.location.search
|
|
701
|
-
* @return {?} Object com parametros query string
|
|
702
|
-
*/
|
|
703
|
-
export function getQueryParams(qs) {
|
|
704
|
-
qs = qs.split('+').join(' ');
|
|
705
|
-
/** @type {?} */
|
|
706
|
-
const params = {};
|
|
707
|
-
/** @type {?} */
|
|
708
|
-
let tokens;
|
|
709
|
-
/** @type {?} */
|
|
710
|
-
const re = /[?&]?([^=]+)=([^&]*)/g;
|
|
711
|
-
while ((tokens = re.exec(qs))) {
|
|
712
|
-
params[decodeURIComponent(tokens[1])] = decodeURIComponent(tokens[2]);
|
|
713
|
-
}
|
|
714
|
-
return params;
|
|
715
|
-
}
|
|
716
|
-
/**
|
|
717
|
-
* @param {?} locale
|
|
718
|
-
* @return {?}
|
|
719
|
-
*/
|
|
720
|
-
export function getFormat(locale) {
|
|
721
|
-
if (locale) {
|
|
722
|
-
/** @type {?} */
|
|
723
|
-
let dateFormat = locale.calendar.dateFormat.toString();
|
|
724
|
-
dateFormat = dateFormat.replace(/[y]/g, 'YY');
|
|
725
|
-
dateFormat = dateFormat.replace(/[/]/g, '');
|
|
726
|
-
return dateFormat.toUpperCase();
|
|
727
|
-
}
|
|
728
|
-
}
|
|
729
|
-
/**
|
|
730
|
-
* Remove os caracteres que não sejam números do valor
|
|
731
|
-
* @param {?} value valor a ser tratado
|
|
732
|
-
* @return {?} string O valor sem caracteres especiais
|
|
733
|
-
*/
|
|
734
|
-
export function removeCharacteresSpecials(value) {
|
|
735
|
-
return value ? value.toString().replace(/[&\/\\#,+()$~%.'":*?<>{}-]/g, "") : null;
|
|
736
|
-
}
|
|
737
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3ItZ2VzdGFvLXBlc3NvYXMvcGF5cm9sbC1jb3JlLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvdXRpbHMvaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUvRSxPQUFPLEtBQUssTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUNqQyxPQUFPLEtBQUssY0FBYyxNQUFNLFFBQVEsQ0FBQztBQUN6QyxPQUFPLFFBQVEsTUFBTSxpQkFBaUIsQ0FBQzs7TUFJakMsTUFBTSxHQUFHLGNBQWM7Ozs7O0FBRTdCLE1BQU0sVUFBVSxRQUFRLENBQUMsSUFBSTtJQUMzQixPQUFPLElBQUksSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2xFLENBQUM7Ozs7O0FBRUQsTUFBTSxVQUFVLFNBQVMsQ0FBQyxJQUFJO0lBQzVCLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSTs7OztJQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQzdGLENBQUM7Ozs7O0FBRUQsTUFBTSxVQUFVLG9CQUFvQixDQUFDLEtBQUs7SUFDeEMsSUFBSSxPQUFPLEtBQUssS0FBSyxTQUFTLEVBQUU7UUFDOUIsT0FBTyxLQUFLLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztLQUMxQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQzs7Ozs7QUFFRCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsS0FBSztJQUMxQyxPQUFPLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxDQUFDLFdBQVcsRUFBRSxLQUFLLE1BQU0sQ0FBQztBQUMxRCxDQUFDOzs7Ozs7QUFFRCxNQUFNLFVBQVUsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLE9BQU87SUFDdkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUU7UUFDbkIsT0FBTyxNQUFNLENBQUM7S0FDZjs7VUFFSyxNQUFNLEdBQUcsT0FBTyxDQUFDLEtBQUssRUFBRTtJQUM5QixJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDeEMsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLEVBQUU7WUFDeEIsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3pCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQ2hCLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2lCQUN0QztnQkFDRCxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2FBQ2xDO2lCQUFNO2dCQUNMLElBQUksU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO29CQUMxQixNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztpQkFDL0M7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRTt3QkFDaEIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7cUJBQ3RDO29CQUNELE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRzs7Ozs7d0JBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBQyxFQUFFLENBQUMsQ0FBQztpQkFDNUc7YUFDRjtTQUNGO0tBQ0Y7SUFDRCxPQUFPLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQztBQUNwQyxDQUFDOzs7OztBQUVELE1BQU0sVUFBVSxPQUFPLENBQUMsS0FBSztJQUMzQixPQUFPLEtBQUssS0FBSyxDQUFDLElBQUksT0FBTyxLQUFLLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxTQUFTLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssRUFBRSxDQUFDO0FBQ2xILENBQUM7Ozs7OztBQUVELE1BQU0sVUFBVSxXQUFXLENBQUMsS0FBSyxFQUFFLFFBQVEsR0FBRyxJQUFJO0lBQ2hELElBQUksS0FBSyxJQUFJLFVBQVUsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLEVBQUU7UUFDeEMsSUFBSSxRQUFRLEVBQUU7WUFDWixPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUNuRTthQUFNO1lBQ0wsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDakU7S0FDRjtJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQzs7Ozs7O0FBRUQsTUFBTSxVQUFVLFVBQVUsQ0FBQyxLQUFLLEVBQUUsUUFBUSxHQUFHLElBQUk7SUFDL0MsSUFBSSxLQUFLLEVBQUU7O1lBQ0wsV0FBVztRQUNmLElBQUksUUFBUSxFQUFFO1lBQ1osV0FBVyxHQUFHLENBQUMsQ0FBQztTQUNqQjthQUFNO1lBQ0wsV0FBVyxHQUFHLENBQUMsQ0FBQztTQUNqQjtRQUNELE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxLQUFLLFdBQVcsQ0FBQztLQUM1RDtJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQzs7Ozs7QUFFRCxNQUFNLFVBQVUsNkJBQTZCLENBQUMsYUFBYTtJQUN6RCxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxFQUFFO1FBQzVCLE9BQU8sQ0FBQyxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztRQUM1QyxPQUFPLEtBQUssQ0FBQztLQUNkO0lBRUQsSUFBSSxhQUFhLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1FBQzNDLE9BQU8sQ0FBQyxLQUFLLENBQUMsZ0VBQWdFLENBQUMsQ0FBQztLQUNqRjtJQUVELElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ25DLE9BQU8sQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztLQUNyQztJQUVELE9BQU8sRUFBRSxFQUFFLEVBQUUsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBQ3ZDLENBQUM7Ozs7OztBQUVELE1BQU0sVUFBVSxXQUFXLENBQUMsSUFBSSxFQUFFLEtBQUs7O1VBQy9CLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUNwQyxJQUFJLFFBQVEsS0FBSyxDQUFDLENBQUMsRUFBRTtRQUNuQixPQUFPLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUMvQjtJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQzs7Ozs7OztBQUVELE1BQU0sVUFBVSxlQUFlLENBQUMsS0FBSyxFQUFFLFFBQVEsR0FBRyxVQUFVLEVBQUUsU0FBUyxHQUFHLFlBQVk7SUFDcEYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUNuQixPQUFPO0tBQ1I7O1VBQ0ssUUFBUSxHQUFHLGFBQWEsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDO0lBQy9DLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUMxRSxDQUFDOzs7Ozs7QUFFRCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsS0FBSyxFQUFFLFVBQVU7SUFDdEQsT0FBTyxRQUFRLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDakYsQ0FBQzs7Ozs7O0FBRUQsTUFBTSxVQUFVLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxPQUFPOztVQUM5QyxTQUFTLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO0lBQ3BGLE9BQU8sUUFBUSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDNUQsQ0FBQzs7Ozs7O0FBRUQsTUFBTSxVQUFVLGFBQWEsQ0FBQyxLQUFLLEVBQUUsUUFBUTtJQUMzQyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7UUFDNUIsT0FBTyxVQUFVLENBQUM7S0FDbkI7U0FBTSxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7UUFDbkMsT0FBTyxVQUFVLENBQUM7S0FDbkI7SUFDRCxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDOzs7Ozs7O0FBUUQsTUFBTSxVQUFVLGdCQUFnQixDQUFDLEtBQUssRUFBRSxTQUFTLEdBQUcsWUFBWTtJQUM5RCxJQUFJLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUN0QixJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtZQUM3QixPQUFPLEtBQUssQ0FBQztTQUNkO2FBQU07WUFDTCxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDekM7S0FDRjtBQUNILENBQUM7Ozs7O0FBRUQsTUFBTSxVQUFVLFVBQVUsQ0FBQyxTQUFTLEdBQUcsWUFBWTtJQUNqRCxPQUFPLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUNwQyxDQUFDOzs7Ozs7QUFFRCxNQUFNLFVBQVUsU0FBUyxDQUFDLEtBQUssRUFBRSxRQUFRLEdBQUcsVUFBVTs7VUFDOUMsUUFBUSxHQUFHLGFBQWEsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDO0lBQy9DLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ3hELENBQUM7Ozs7OztBQUVELE1BQU0sVUFBVSxPQUFPLENBQUMsS0FBSyxFQUFFLE1BQWU7SUFDNUMsSUFBSSxNQUFNLEVBQUU7UUFDVixPQUFPLE1BQU0sQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7S0FDOUI7SUFDRCxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN2QixDQUFDOzs7OztBQUVELE1BQU0sVUFBVSxZQUFZLENBQUMsSUFBSTs7VUFDekIsSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQzs7VUFDOUIsVUFBVSxHQUFHLEVBQUU7SUFDckIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHOzs7O0lBQUMsR0FBRyxDQUFDLEVBQUU7UUFDMUIsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7WUFDdEIsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDL0M7SUFDSCxDQUFDLEVBQUMsQ0FBQztJQUNILE9BQU8sVUFBVSxDQUFDO0FBQ3BCLENBQUM7Ozs7O0FBRUQsTUFBTSxVQUFVLFdBQVcsQ0FBQyxHQUFHO0lBQzdCLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTzs7OztJQUN0QixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsSUFBSSxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDekgsQ0FBQztJQUNGLE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQzs7Ozs7O0FBRUQsTUFBTSxVQUFVLFdBQVcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxHQUFHLElBQUk7SUFDNUMsUUFBUSxJQUFJLEVBQUU7UUFDWixLQUFLLElBQUk7WUFDUCxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUM7Z0JBQ25CLENBQUMsQ0FBQyxLQUFLO3FCQUNGLFFBQVEsRUFBRTtxQkFDVixPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQztxQkFDaEIsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUM7Z0JBQ3RCLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDVCxLQUFLLElBQUk7WUFDUCxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUM7Z0JBQ25CLENBQUMsQ0FBQyxLQUFLO3FCQUNGLFFBQVEsRUFBRTtxQkFDVixPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQztxQkFDakIsT0FBTyxDQUFDLHlCQUF5QixFQUFFLEtBQUssQ0FBQztnQkFDOUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNUO1lBQ0UsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDO2dCQUNuQixDQUFDLENBQUMsS0FBSztxQkFDRixRQUFRLEVBQUU7cUJBQ1YsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUM7cUJBQ2hCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDO2dCQUN0QixDQUFDLENBQUMsRUFBRSxDQUFDO0tBQ1Y7QUFDSCxDQUFDOzs7O0FBRUQsTUFBTSxVQUFVLElBQUk7SUFDbEIsT0FBTyxJQUFJLE1BQU0sRUFBRTtTQUNoQixJQUFJLEVBQUU7U0FDTixPQUFPLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxDQUFDO1NBQzdCLFdBQVcsRUFBRSxDQUFDO0FBQ25CLENBQUM7Ozs7Ozs7QUFFRCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsTUFBTSxFQUFFLFlBQVksR0FBRyxJQUFJLEVBQUUsTUFBTSxHQUFHLElBQUk7O1VBQ3JFLFdBQVcsR0FBRyxFQUFFO0lBQ3RCLElBQUksWUFBWSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUU7UUFDakMsWUFBWSxDQUFDLEdBQUc7Ozs7O1FBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUU7O2tCQUN0QixLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUU7O2tCQUMzQyxTQUFTLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUk7O2tCQUNuRSxLQUFLLEdBQ1QsR0FBRyxDQUFDLElBQUksS0FBSyxNQUFNLElBQUksTUFBTSxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDN0gsV0FBVyxDQUFDLElBQUksQ0FBQztnQkFDZixLQUFLLEVBQUUsS0FBSztnQkFDWixLQUFLLEVBQUUsS0FBSzthQUNiLENBQUMsQ0FBQztRQUNMLENBQUMsRUFBQyxDQUFDO0tBQ0o7SUFDRCxPQUFPLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQ2pELENBQUM7Ozs7Ozs7QUFPRCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsWUFBWTs7VUFDdEMsWUFBWSxHQUFHLEVBQUU7SUFDdkIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxPQUFPOzs7O0lBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO1FBQ3RELFlBQVksQ0FBQyxJQUFJLENBQUM7WUFDaEIsS0FBSyxFQUFFLEtBQUs7WUFDWixLQUFLLEVBQUUsS0FBSztTQUNiLENBQUMsQ0FBQztJQUNMLENBQUMsRUFBQyxDQUFDO0lBQ0gsT0FBTyxZQUFZLENBQUM7QUFDdEIsQ0FBQzs7Ozs7OztBQU9ELE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxZQUFZOztVQUN0QyxrQkFBa0IsR0FBRyxFQUFFO0lBQzdCLElBQUksWUFBWSxJQUFJLFlBQVksQ0FBQyxNQUFNLEVBQUU7UUFDdkMsWUFBWSxDQUFDLE9BQU87Ozs7UUFBQyxJQUFJLENBQUMsRUFBRTtZQUMxQixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ3RDLElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDOUM7WUFDRCxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUM5QyxDQUFDLEVBQUMsQ0FBQztLQUNKO0lBQ0QsT0FBTyxrQkFBa0IsQ0FBQztBQUM1QixDQUFDOzs7Ozs7O0FBT0QsTUFBTSxVQUFVLDBCQUEwQixDQUFDLFlBQVk7SUFDckQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxPQUFPOzs7O0lBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO1FBQ3BELElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDVixPQUFPLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUMxQjtJQUNILENBQUMsRUFBQyxDQUFDO0lBQ0gsT0FBTyxZQUFZLENBQUM7QUFDdEIsQ0FBQzs7Ozs7QUFFRCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsTUFBTTs7VUFDakMsV0FBVyxHQUFHLEVBQUU7SUFDdEIsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTzs7OztJQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ3RDLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksS0FBSyxNQUFNLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRTtZQUNwRCxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQzVEO1FBQ0QsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNoQyxDQUFDLEVBQUMsQ0FBQztJQUNILE9BQU8sV0FBVyxDQUFDO0FBQ3JCLENBQUM7Ozs7OztBQUVELE1BQU0sVUFBVSxjQUFjLENBQUMsWUFBWSxFQUFFLE1BQU07O1VBQzNDLFNBQVMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pELFlBQVksQ0FBQyxHQUFHOzs7O0lBQUMsR0FBRyxDQUFDLEVBQUU7UUFDckIsR0FBRyxDQUFDLEtBQUssR0FBRyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDdkQsQ0FBQyxFQUFDLENBQUM7SUFDSCxPQUFPLFlBQVksQ0FBQztBQUN0QixDQUFDOzs7Ozs7Ozs7O0FBVUQsTUFBTSxVQUFVLFNBQVMsQ0FBQyxlQUF1QixFQUFFLFFBQWdCLEVBQUUsU0FBa0I7SUFDckYsVUFBVTs7O0lBQUMsR0FBRyxFQUFFO1FBQ2QsSUFBSSxTQUFTLEVBQUU7O2tCQUNQLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDLE1BQU0sQ0FBQztZQUNsRSxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsU0FBUyxDQUFDO1lBQzdCLElBQUksQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzdDO2FBQU07O2tCQUNDLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDLE1BQU07WUFFL0MsSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUU7Z0JBQ3hDLE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUV4QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUU7b0JBQy9CLElBQUksQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUMzQzthQUNGO1NBQ0Y7SUFDSCxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUM7QUFDUixDQUFDOzs7Ozs7O0FBT0QsTUFBTSxVQUFVLHFCQUFxQjtJQUNuQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHOzs7O0lBQUMsS0FBSyxDQUFDLEVBQUU7O2NBQy9CLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztRQUMvQixPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDdEIsSUFBSSxPQUFPLFlBQVksU0FBUyxJQUFJLE9BQU8sWUFBWSxTQUFTLEVBQUU7WUFDaEUscUJBQXFCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3JDO0lBQ0gsQ0FBQyxFQUFDLENBQUM7QUFDTCxDQUFDOzs7Ozs7O0FBT0QsTUFBTSxVQUFVLFFBQVEsQ0FBQyxRQUFROztVQUN6QixXQUFXLEdBQUcsTUFBTSxFQUFFOztVQUN0QixLQUFLLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQztJQUN4RCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7Ozs7O0FBRUQsTUFBTSxVQUFVLGVBQWUsQ0FBQyxZQUFZO0lBQzFDLFlBQVksQ0FBQyxHQUFHOzs7O0lBQUMsR0FBRyxDQUFDLEVBQUU7O2NBQ2YsU0FBUyxHQUFHLEVBQUU7O1lBQ2hCLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxJQUFJLElBQUk7UUFDN0IsSUFBSSxPQUFPLEtBQUssS0FBSyxTQUFTLEVBQUU7WUFDOUIsS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7U0FDbEM7UUFDRCxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUN0QyxDQUFDLEVBQUMsQ0FBQztJQUNILE9BQU8sWUFBWSxDQUFDO0FBQ3RCLENBQUM7Ozs7Ozs7O0FBRUcsTUFBTSxVQUFVLFdBQVcsQ0FBQyxTQUFvQixFQUFFLElBQVksRUFBRSxRQUFpQixFQUFFLFVBQTBCO0lBQy9HLElBQUksUUFBUSxFQUFFO1FBQ1osU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxVQUFVLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakksU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0tBQ25EO1NBQU07UUFDTCxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLHNCQUFzQixFQUFFLENBQUM7S0FDbkQ7QUFDSCxDQUFDOzs7Ozs7Ozs7QUFTRCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsU0FBb0IsRUFBRSxTQUFrQixFQUFFLE1BQXFCLEVBQUUsYUFBNkI7SUFDaEksSUFBSSxTQUFTLEVBQUU7UUFDYixNQUFNLENBQUMsT0FBTzs7OztRQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBQyxDQUFDO0tBQ3hEO1NBQU07UUFDTCxNQUFNLENBQUMsT0FBTzs7OztRQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBQyxDQUFDO1FBQ3hELFdBQVcsQ0FBQyxTQUFTLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBQ2hFO0FBQ0gsQ0FBQzs7Ozs7Ozs7O0FBU0QsTUFBTSxVQUFVLGlCQUFpQixDQUFDLFNBQW9CLEVBQUUsU0FBa0IsRUFBRSxNQUFxQjtJQUMvRixJQUFJLFNBQVMsRUFBRTtRQUNiLE1BQU0sQ0FBQyxPQUFPOzs7O1FBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBQyxDQUFDO0tBQ3JGO1NBQU07UUFDTCxNQUFNLENBQUMsT0FBTzs7OztRQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUMsQ0FBQztLQUMvRDtBQUNILENBQUM7Ozs7Ozs7O0FBU0QsTUFBTSxVQUFVLDZCQUE2QixDQUFDLFNBQW9CLEVBQUUsTUFBb0M7SUFDcEcsTUFBTSxDQUFDLE9BQU87Ozs7SUFBQyxDQUFDLFlBQW1DLEVBQUUsRUFBRTtRQUNuRCxZQUFZLENBQUMsU0FBUyxFQUFFLFlBQVksQ0FBQyxLQUFLLEVBQUcsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3RFLGVBQWUsQ0FBQyxTQUFTLEVBQUUsWUFBWSxDQUFDLFFBQVEsRUFBRyxZQUFZLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNwRyxDQUFDLEVBQUMsQ0FBQztBQUNQLENBQUM7Ozs7Ozs7QUFHRCxNQUFNLFVBQVUsWUFBWSxDQUFDLFNBQW9CLEVBQUUsSUFBWSxFQUFFLFVBQTBCO0lBQ3ZGLElBQUksVUFBVSxJQUFJLFVBQVUsQ0FBQyxNQUFNLEVBQUU7UUFDakMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ3ZFLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztLQUNyRDtTQUFNO1FBQ0gsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0MsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0tBQ3JEO0FBQ0wsQ0FBQzs7Ozs7Ozs7O0FBVUQsTUFBTSxVQUFVLGVBQWUsQ0FBQyxTQUFvQixFQUFFLFNBQWtCLEVBQUUsS0FBYSxFQUFFLGFBQXNCLElBQUk7SUFDL0csSUFBSSxTQUFTLEVBQUU7UUFDWCxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQy9CLElBQUksVUFBVTtZQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7S0FDaEQ7U0FBTTtRQUNILFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7S0FDakM7QUFDTCxDQUFDOzs7Ozs7O0FBT0QsTUFBTSxVQUFVLGFBQWEsQ0FBQyxHQUFXLEVBQUUsUUFBZ0IsS0FBSztJQUM1RDs7Ozs7SUFBTyxTQUFTLFNBQVMsQ0FBQyxDQUFNLEVBQUUsQ0FBTTtRQUNwQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDbEQsT0FBTyxDQUFDLENBQUM7U0FDWjs7Y0FFSyxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxRQUFRLENBQUM7WUFDckMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQzs7Y0FDN0IsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssUUFBUSxDQUFDO1lBQ3JDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7O1lBRS9CLFVBQVUsR0FBRyxDQUFDO1FBQ2xCLElBQUksSUFBSSxHQUFHLElBQUksRUFBRTtZQUNiLFVBQVUsR0FBRyxDQUFDLENBQUM7U0FDbEI7YUFBTSxJQUFJLElBQUksR0FBRyxJQUFJLEVBQUU7WUFDcEIsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ25CO1FBQ0QsT0FBTyxDQUNILENBQUMsS0FBSyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQ3RELENBQUM7SUFDTixDQUFDLEVBQUM7QUFDTixDQUFDOzs7Ozs7OztBQVFELE1BQU0sVUFBVSxXQUFXLENBQUMsU0FBb0IsRUFBRSxNQUFxQjtJQUNyRSxNQUFNLENBQUMsT0FBTzs7OztJQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBQyxDQUFDO0FBQ3hELENBQUM7Ozs7OztBQU9ELE1BQU0sVUFBVSxjQUFjLENBQUMsRUFBRTtJQUMvQixFQUFFLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7O1VBRXZCLE1BQU0sR0FBRyxFQUFFOztRQUNiLE1BQU07O1VBQ0osRUFBRSxHQUFHLHVCQUF1QjtJQUVsQyxPQUFPLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRTtRQUM3QixNQUFNLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUN2RTtJQUVELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7Ozs7O0FBRUQsTUFBTSxVQUFVLFNBQVMsQ0FBQyxNQUFNO0lBQzlCLElBQUksTUFBTSxFQUFFOztZQUNOLFVBQVUsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUU7UUFDdEQsVUFBVSxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzlDLFVBQVUsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM1QyxPQUFPLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztLQUNqQztBQUNILENBQUM7Ozs7OztBQU9ELE1BQU0sVUFBVSx5QkFBeUIsQ0FBQyxLQUFVO0lBQ2hELE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLDZCQUE2QixFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDdEYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvcm1BcnJheSwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMvJztcbmltcG9ydCAqIGFzIGNoYW5jZSBmcm9tICdjaGFuY2UnO1xuaW1wb3J0ICogYXMgbW9tZW50SW1wb3J0ZWQgZnJvbSAnbW9tZW50JztcbmltcG9ydCBidXNpbmVzcyBmcm9tICdtb21lbnQtYnVzaW5lc3MnO1xuaW1wb3J0IHsgTG9jYWxlT3B0aW9ucyB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgRmllbGRWYWxpZGF0b3JzT2JqZWN0IH0gZnJvbSAnLi4vLi4vY29yZS9pbnRlcmZhY2VzL2ZpZWxkLXZhbGlkYXRvcnMtb2JqZWN0JztcblxuY29uc3QgbW9tZW50ID0gbW9tZW50SW1wb3J0ZWQ7XG5cbmV4cG9ydCBmdW5jdGlvbiBpc09iamVjdChpdGVtKSB7XG4gIHJldHVybiBpdGVtICYmIHR5cGVvZiBpdGVtID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShpdGVtKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU2hhbGxvdyhpdGVtKSB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KGl0ZW0pICYmIGl0ZW0uZmluZCh2YWx1ZSA9PiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSA/IGZhbHNlIDogdHJ1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRCb29sZWFuU3RyaW5nKHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJykge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gdHJ1ZSA/ICd0cnVlJyA6ICdmYWxzZSc7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29udmVydFN0cmluZ1RvQm9vbGVhbih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPT09IHRydWUgfHwgdmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gJ3RydWUnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzaWduKHRhcmdldCwgLi4uc291cmNlcykge1xuICBpZiAoIXNvdXJjZXMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfVxuXG4gIGNvbnN0IHNvdXJjZSA9IHNvdXJjZXMuc2hpZnQoKTtcbiAgaWYgKGlzT2JqZWN0KHRhcmdldCkgJiYgaXNPYmplY3Qoc291cmNlKSkge1xuICAgIGZvciAoY29uc3Qga2V5IGluIHNvdXJjZSkge1xuICAgICAgaWYgKGlzT2JqZWN0KHNvdXJjZVtrZXldKSkge1xuICAgICAgICBpZiAoIXRhcmdldFtrZXldKSB7XG4gICAgICAgICAgT2JqZWN0LmFzc2lnbih0YXJnZXQsIHsgW2tleV06IHt9IH0pO1xuICAgICAgICB9XG4gICAgICAgIGFzc2lnbih0YXJnZXRba2V5XSwgc291cmNlW2tleV0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGlzU2hhbGxvdyhzb3VyY2Vba2V5XSkpIHtcbiAgICAgICAgICBPYmplY3QuYXNzaWduKHRhcmdldCwgeyBba2V5XTogc291cmNlW2tleV0gfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKCF0YXJnZXRba2V5XSkge1xuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih0YXJnZXQsIHsgW2tleV06IFtdIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBPYmplY3QuYXNzaWduKHRhcmdldCwgeyBba2V5XTogc291cmNlW2tleV0ubWFwKChpdGVtLCBpbmRleCkgPT4gYXNzaWduKHRhcmdldFtrZXldW2luZGV4XSB8fCB7fSwgaXRlbSkpIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBhc3NpZ24odGFyZ2V0LCAuLi5zb3VyY2VzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWQodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID09PSAwIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nID8gdHJ1ZSA6IHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09ICcnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZERhdGUodmFsdWUsIHdpdGhEYXlzID0gdHJ1ZSkge1xuICBpZiAodmFsdWUgJiYgaXNGdWxsRGF0ZSh2YWx1ZSwgd2l0aERheXMpKSB7XG4gICAgaWYgKHdpdGhEYXlzKSB7XG4gICAgICByZXR1cm4gbW9tZW50KHZhbHVlLnJlcGxhY2UoL1teXFxkXSsvZywgJycpLCAnRERNTVlZWVknKS5pc1ZhbGlkKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBtb21lbnQodmFsdWUucmVwbGFjZSgvW15cXGRdKy9nLCAnJyksICdNTVlZWVknKS5pc1ZhbGlkKCk7XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNGdWxsRGF0ZSh2YWx1ZSwgd2l0aERheXMgPSB0cnVlKSB7XG4gIGlmICh2YWx1ZSkge1xuICAgIGxldCB0b3RhbExlbmd0aDtcbiAgICBpZiAod2l0aERheXMpIHtcbiAgICAgIHRvdGFsTGVuZ3RoID0gODtcbiAgICB9IGVsc2Uge1xuICAgICAgdG90YWxMZW5ndGggPSA2O1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWUucmVwbGFjZSgvW15cXGRdKy9nLCAnJykubGVuZ3RoID09PSB0b3RhbExlbmd0aDtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGF1dG9Db21wbGV0ZU9iamVjdEZvcklkT2JqZWN0KHRhYmxlSWRPYmplY3QpIHtcbiAgaWYgKCFpc09iamVjdCh0YWJsZUlkT2JqZWN0KSkge1xuICAgIGNvbnNvbGUuZXJyb3IoJ1BhcmFtZW50cm8gbsOjbyDDqSB1bSBvYmpldG8nKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAodGFibGVJZE9iamVjdC5oYXNPd25Qcm9wZXJ0eSgndGFibGVJZCcpKSB7XG4gICAgY29uc29sZS5lcnJvcignUGFyYW1lbnRybyBuw6NvIMOpIHVtIG9iamV0byBBdXRvIENvbXBsZXRlIHbDoWxpZG8sIGZhbHRhIHRhYmxlSWQnKTtcbiAgfVxuXG4gIGlmICghaXNWYWxpZCh0YWJsZUlkT2JqZWN0LnRhYmxlSWQpKSB7XG4gICAgY29uc29sZS5lcnJvcigndGFibGVJZCBlc3RhIHZhemlvJyk7XG4gIH1cblxuICByZXR1cm4geyBpZDogdGFibGVJZE9iamVjdC50YWJsZUlkIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0RhdGVGaWVsZChuYW1lLCB2YWx1ZSkge1xuICBjb25zdCB0ZXN0RGF0ZSA9IG5hbWUuc2VhcmNoKCdEYXRlJyk7XG4gIGlmICh0ZXN0RGF0ZSAhPT0gLTEpIHtcbiAgICByZXR1cm4gaW52ZXJ0RmllbGREYXRlKHZhbHVlKTtcbiAgfVxuICByZXR1cm4gdmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZlcnRGaWVsZERhdGUodmFsdWUsIGluRm9ybWF0ID0gJ0RETU1ZWVlZJywgb3V0Rm9ybWF0ID0gJ1lZWVktTU0tREQnKSB7XG4gIGlmICghaXNWYWxpZCh2YWx1ZSkpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3QgZm9ybWF0SW4gPSBnZXRGb3JtYXREYXRlKHZhbHVlLCBpbkZvcm1hdCk7XG4gIHJldHVybiBtb21lbnQodmFsdWUucmVwbGFjZSgvW15cXGRdKy9nLCAnJyksIGZvcm1hdEluKS5mb3JtYXQob3V0Rm9ybWF0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEFkZFdlZWtEYXlzQnVzaW5lc3ModmFsdWUsIHF1YW50aWRhZGUpIHtcbiAgcmV0dXJuIGJ1c2luZXNzLmFkZFdlZWtEYXlzKGdldE1vbWVudCh2YWx1ZSksIHF1YW50aWRhZGUpLmZvcm1hdCgnREQvTU0vWVlZWScpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0V2Vla0RheXNCdXNpbmVzcyhzdGFydERhdGUsIGVuZERhdGUpIHtcbiAgY29uc3QgZW5kTW9tZW50ID0gZW5kRGF0ZSA/IGdldE1vbWVudChlbmREYXRlKSA6IGdldE1vbWVudChzdGFydERhdGUpLmVuZE9mKCdtb250aCcpO1xuICByZXR1cm4gYnVzaW5lc3Mud2Vla0RheXMoZ2V0TW9tZW50KHN0YXJ0RGF0ZSksIGVuZE1vbWVudCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGb3JtYXREYXRlKHZhbHVlLCBpbkZvcm1hdCkge1xuICBpZiAodmFsdWUuc2VhcmNoKCcvJykgIT09IC0xKSB7XG4gICAgcmV0dXJuICdERE1NWVlZWSc7XG4gIH0gZWxzZSBpZiAodmFsdWUuc2VhcmNoKCctJykgIT09IC0xKSB7XG4gICAgcmV0dXJuICdZWVlZTU1ERCc7XG4gIH1cbiAgcmV0dXJuIGluRm9ybWF0O1xufVxuXG4vKipcbiAqIEZJWE1FIC0gRXN0w6EgZml4byBwYXJhIHVzbyBkbyBjYWxlbmTDoXJpbyBwb3J0dWd1ZXMgQnJhc2lsXG4gKiBAcGFyYW0gdmFsdWVcbiAqIEBwYXJhbSBvdXRGb3JtYXRcbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBuZ0NhbGVuZGFyRm9ybWF0KHZhbHVlLCBvdXRGb3JtYXQgPSAnREQvTU0vWVlZWScpIHtcbiAgaWYgKGlzVmFsaWREYXRlKHZhbHVlKSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBfbW9tZW50KHZhbHVlKS5mb3JtYXQob3V0Rm9ybWF0KTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE5vd0RhdGUob3V0Rm9ybWF0ID0gJ1lZWVktTU0tREQnKSB7XG4gIHJldHVybiBtb21lbnQoKS5mb3JtYXQob3V0Rm9ybWF0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1vbWVudCh2YWx1ZSwgaW5Gb3JtYXQgPSAnRERNTVlZWVknKSB7XG4gIGNvbnN0IGZvcm1hdEluID0gZ2V0Rm9ybWF0RGF0ZSh2YWx1ZSwgaW5Gb3JtYXQpO1xuICByZXR1cm4gbW9tZW50KHZhbHVlLnJlcGxhY2UoL1teXFxkXSsvZywgJycpLCBmb3JtYXRJbik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfbW9tZW50KHZhbHVlLCBmb3JtYXQ/OiBzdHJpbmcpIHtcbiAgaWYgKGZvcm1hdCkge1xuICAgIHJldHVybiBtb21lbnQodmFsdWUsIGZvcm1hdCk7XG4gIH1cbiAgcmV0dXJuIG1vbWVudCh2YWx1ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRPYmpWYWxpZHMob2Jqcykge1xuICBjb25zdCBqc29uID0gT2JqZWN0LmFzc2lnbih7fSwgb2Jqcyk7XG4gIGNvbnN0IGpzb25SZXR1cm4gPSB7fTtcbiAgT2JqZWN0LmtleXMoanNvbikubWFwKGtleSA9PiB7XG4gICAgaWYgKGlzVmFsaWQoanNvbltrZXldKSkge1xuICAgICAganNvblJldHVybltrZXldID0gaXNEYXRlRmllbGQoa2V5LCBqc29uW2tleV0pO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBqc29uUmV0dXJuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlRW1wdHkob2JqKSB7XG4gIE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaChcbiAgICBrID0+IChvYmpba10gJiYgdHlwZW9mIG9ialtrXSA9PT0gJ29iamVjdCcgJiYgcmVtb3ZlRW1wdHkob2JqW2tdKSkgfHwgKCFvYmpba10gJiYgb2JqW2tdICE9PSB1bmRlZmluZWQgJiYgZGVsZXRlIG9ialtrXSlcbiAgKTtcbiAgcmV0dXJuIG9iajtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdE1vbmV5KHZhbHVlLCBpMThuID0gJ0VOJykge1xuICBzd2l0Y2ggKGkxOG4pIHtcbiAgICBjYXNlICdFTic6XG4gICAgICByZXR1cm4gaXNWYWxpZCh2YWx1ZSlcbiAgICAgICAgPyB2YWx1ZVxuICAgICAgICAgICAgLnRvU3RyaW5nKClcbiAgICAgICAgICAgIC5yZXBsYWNlKCcuJywgJycpXG4gICAgICAgICAgICAucmVwbGFjZSgnLCcsICcuJylcbiAgICAgICAgOiAnJztcbiAgICBjYXNlICdCUic6XG4gICAgICByZXR1cm4gaXNWYWxpZCh2YWx1ZSlcbiAgICAgICAgPyB2YWx1ZVxuICAgICAgICAgICAgLnRvU3RyaW5nKClcbiAgICAgICAgICAgIC5yZXBsYWNlKCcuJywgJywnKVxuICAgICAgICAgICAgLnJlcGxhY2UoLyhcXGQpKD89KFxcZHszfSkrKD8hXFxkKSkvZywgJyQxLicpXG4gICAgICAgIDogJyc7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBpc1ZhbGlkKHZhbHVlKVxuICAgICAgICA/IHZhbHVlXG4gICAgICAgICAgICAudG9TdHJpbmcoKVxuICAgICAgICAgICAgLnJlcGxhY2UoJy4nLCAnJylcbiAgICAgICAgICAgIC5yZXBsYWNlKCcsJywgJy4nKVxuICAgICAgICA6ICcnO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1aWlkKCkge1xuICByZXR1cm4gbmV3IGNoYW5jZSgpXG4gICAgLmd1aWQoKVxuICAgIC5yZXBsYWNlKC9bXmEtekEtWjAtOS5dL2csICcnKVxuICAgIC50b1VwcGVyQ2FzZSgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbW91bnRDdXN0b21Gb3JTYXZlKGN1c3RvbSwgY3VzdG9tRW50aXR5ID0gbnVsbCwgbG9jYWxlID0gbnVsbCkge1xuICBjb25zdCBjdXN0b25GaWVsZCA9IFtdO1xuICBpZiAoY3VzdG9tRW50aXR5ICYmIGN1c3RvbS5sZW5ndGgpIHtcbiAgICBjdXN0b21FbnRpdHkubWFwKCh2YWwsIGtleSkgPT4ge1xuICAgICAgY29uc3QgZmllbGQgPSBPYmplY3Qua2V5cyhjdXN0b21ba2V5XSkudG9TdHJpbmcoKTtcbiAgICAgIGNvbnN0IHZhbE9ybnVsbCA9IGlzVmFsaWQoY3VzdG9tW2tleV1bZmllbGRdKSA/IGN1c3RvbVtrZXldW2ZpZWxkXSA6IG51bGw7XG4gICAgICBjb25zdCB2YWx1ZSA9XG4gICAgICAgIHZhbC50eXBlID09PSAnZGF0ZScgJiYgbG9jYWxlICYmIGlzVmFsaWQodmFsT3JudWxsKSA/IG1vbWVudCh2YWxPcm51bGwsIGdldEZvcm1hdChsb2NhbGUpKS5mb3JtYXQoJ1lZWVktTU0tREQnKSA6IHZhbE9ybnVsbDtcbiAgICAgIGN1c3RvbkZpZWxkLnB1c2goe1xuICAgICAgICBmaWVsZDogZmllbGQsXG4gICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG4gIHJldHVybiBjdXN0b25GaWVsZC5sZW5ndGggPyBjdXN0b25GaWVsZCA6IG51bGw7XG59XG5cbi8qKlxuICogUHJlcGFyYSBvIG9iamV0byBkZSBjYW1wb3MgY3VzdG9taXphZG9zIHBhcmEgc2FsdmFyIGFzIGVudGlkYWRlcyBxdWVcbiAqIHPDo28gdXRpbGl6YWRhcyBhIHBhcnRpciBkbyBDUlVEIGN1c3RvbWl6YWRvLlxuICogQHBhcmFtIG9iamVjdEZpZWxkcyBvYmpldG8gY29tIG9zIGNhbXBvcyBjdXN0b21pemFkb3MgZGEgZW50aWRhZGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtb3VudEN1c3RvbVRvU2F2ZShvYmplY3RGaWVsZHMpIHtcbiAgY29uc3QgY3VzdG9tRmllbGRzID0gW107XG4gIE9iamVjdC5lbnRyaWVzKG9iamVjdEZpZWxkcykuZm9yRWFjaCgoW2ZpZWxkLCB2YWx1ZV0pID0+IHtcbiAgICBjdXN0b21GaWVsZHMucHVzaCh7XG4gICAgICBmaWVsZDogZmllbGQsXG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4gY3VzdG9tRmllbGRzO1xufVxuXG4vKipcbiAqIFByZXBhcmEgbyBvYmpldG8gZGUgY2FtcG9zIGN1c3RvbWl6YWRvcyBwYXJhIGV4aWJpciBhcyBlbnRpZGFkZXMgcXVlXG4gKiBzw6NvIHV0aWxpemFkYXMgYSBwYXJ0aXIgZG8gQ1JVRCBjdXN0b21pemFkby5cbiAqIEBwYXJhbSBjdXN0b21GaWVsZHMgb2JqZXRvIGNvbSBvcyBjYW1wb3MgY3VzdG9taXphZG9zIGRhIGVudGlkYWRlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbW91bnRDdXN0b21Ub1Nob3coY3VzdG9tRmllbGRzKSB7XG4gIGNvbnN0IGN1c3RvbUZpZWxkc1RvU2hvdyA9IHt9O1xuICBpZiAoY3VzdG9tRmllbGRzICYmIGN1c3RvbUZpZWxkcy5sZW5ndGgpIHtcbiAgICBjdXN0b21GaWVsZHMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGlmIChpdGVtLnR5cGUgPT09ICdkYXRlJyAmJiBpdGVtLnZhbHVlKSB7XG4gICAgICAgIGl0ZW0udmFsdWUgPSBfbW9tZW50KGl0ZW0udmFsdWUpLmZvcm1hdCgnTCcpO1xuICAgICAgfVxuICAgICAgY3VzdG9tRmllbGRzVG9TaG93W2l0ZW0uZmllbGRdID0gaXRlbS52YWx1ZTtcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gY3VzdG9tRmllbGRzVG9TaG93O1xufVxuXG4vKipcbiAqIFByZXBhcmEgbyBvYmpldG8gZGUgY2FtcG9zIGN1c3RvbWl6YWRvcyBwYXJhIHNhbHZhciBhcyBlbnRpZGFkZXMgcXVlXG4gKiBzw6NvIHV0aWxpemFkYXMgYSBwYXJ0aXIgZG8gQ1JVRCBnZXJhZG8uXG4gKiBAcGFyYW0gb2JqZWN0RmllbGRzIG9iamV0byBjb20gb3MgY2FtcG9zIGN1c3RvbWl6YWRvcyBkYSBlbnRpZGFkZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1vdW50R2VuZXJhdGVkQ3VzdG9tVG9TYXZlKG9iamVjdEZpZWxkcykge1xuICBPYmplY3QuZW50cmllcyhvYmplY3RGaWVsZHMpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIGRlbGV0ZSBvYmplY3RGaWVsZHNba2V5XTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gb2JqZWN0RmllbGRzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbW91bnRDdXN0b21Gb3JTaG93KGN1c3RvbSkge1xuICBjb25zdCBjdXN0b21GaWVsZCA9IFtdO1xuICBPYmplY3Qua2V5cyhjdXN0b20gfHwge30pLmZvckVhY2godmFsID0+IHtcbiAgICBpZiAoY3VzdG9tW3ZhbF0udHlwZSA9PT0gJ2RhdGUnICYmIGN1c3RvbVt2YWxdLnZhbHVlKSB7XG4gICAgICBjdXN0b21bdmFsXS52YWx1ZSA9IF9tb21lbnQoY3VzdG9tW3ZhbF0udmFsdWUpLmZvcm1hdCgnTCcpO1xuICAgIH1cbiAgICBjdXN0b21GaWVsZC5wdXNoKGN1c3RvbVt2YWxdKTtcbiAgfSk7XG4gIHJldHVybiBjdXN0b21GaWVsZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldFZhbHVlQ3VzdG9tKGN1c3RvbkZpZWxkcywgY3VzdG9tKSB7XG4gIGNvbnN0IGlzQ3VzdG9ucyA9IGN1c3RvbSA/IE9iamVjdC5rZXlzKGN1c3RvbSkubGVuZ3RoIDogMDtcbiAgY3VzdG9uRmllbGRzLm1hcCh2YWwgPT4ge1xuICAgIHZhbC52YWx1ZSA9IGlzQ3VzdG9ucyA+IDAgPyBjdXN0b21bdmFsLmZpZWxkXSA6IG51bGw7XG4gIH0pO1xuICByZXR1cm4gY3VzdG9uRmllbGRzO1xufVxuXG4vKipcbiAqICBBZGljaW9uYSB1bSBlcnJvIG5vIGNvbnRyb2xlIGRvIGZvcm11bMOhcmlvLiBEZXZlIHNlciBjaGFtYWRvIGNvbSAuY2FsbCBwYXNzYW5kbyBvIGNvbnRleHRvIGRhIGNsYXNzLlxuICogIEV4Ljogc2V0RXJyb3JzLmNhbGwodGhpcy5jb250cmFjdEdyb3VwLCAncmVnaXN0ZXJFbXBsb3llZU51bWJlcicsICdleGlzdCcsICFwYXlsb2FkKVxuICpcbiAqIEBwYXJhbSBmb3JtQ29udHJvbE5hbWUgTm9tZSBkbyBjb250cm9sZSBkbyBmb3JtdWzDoXJpby5cbiAqIEBwYXJhbSBrZXlFcnJvciBOb21lIGRvIGVycm9yIGEgc2VyIGV4aWJpZG8gZW0gdGVsYS5cbiAqIEBwYXJhbSBpc0ludmFsaWQgU2UgaG91dmVyIGFsZ3VtIGVycm8gZGUgdmFsaWRhw6fDo28gbm8gY2FtcG8uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRFcnJvcnMoZm9ybUNvbnRyb2xOYW1lOiBzdHJpbmcsIGtleUVycm9yOiBzdHJpbmcsIGlzSW52YWxpZDogYm9vbGVhbik6IHZvaWQge1xuICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICBpZiAoaXNJbnZhbGlkKSB7XG4gICAgICBjb25zdCBlcnJvcnMgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmdldChmb3JtQ29udHJvbE5hbWUpLmVycm9ycyk7XG4gICAgICBlcnJvcnNba2V5RXJyb3JdID0gaXNJbnZhbGlkO1xuICAgICAgdGhpcy5nZXQoZm9ybUNvbnRyb2xOYW1lKS5zZXRFcnJvcnMoZXJyb3JzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZXJyb3JzID0gdGhpcy5nZXQoZm9ybUNvbnRyb2xOYW1lKS5lcnJvcnM7XG5cbiAgICAgIGlmIChlcnJvcnMgJiYgT2JqZWN0LmtleXMoZXJyb3JzKS5sZW5ndGgpIHtcbiAgICAgICAgZGVsZXRlIGVycm9yc1trZXlFcnJvcl07XG5cbiAgICAgICAgaWYgKCFPYmplY3Qua2V5cyhlcnJvcnMpLmxlbmd0aCkge1xuICAgICAgICAgIHRoaXMuZ2V0KGZvcm1Db250cm9sTmFtZSkuc2V0RXJyb3JzKG51bGwpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LCAwKTtcbn1cblxuLyoqXG4gKiBGYXogbG9vcCBkbyBub3MgY29udHJvbHMgZG8gZm9ybXVsw6FyaW8gZSBzdWJBcnJheSBjYXNvIGV4aXN0aXJcbiAqIHNldGFuZG8gb3MgaW52w6FsaWRvc1xuICogRXguOiB2ZXJpZnlWYWxpZGF0aW9uc0Zvcm0uY2FsbCh0aGlzLmluaXRpYWxHcm91cCk7XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2ZXJpZnlWYWxpZGF0aW9uc0Zvcm0oKSB7XG4gIE9iamVjdC5rZXlzKHRoaXMuY29udHJvbHMpLm1hcChmaWVsZCA9PiB7XG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuZ2V0KGZpZWxkKTtcbiAgICBjb250cm9sLm1hcmtBc0RpcnR5KCk7XG4gICAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtR3JvdXAgfHwgY29udHJvbCBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xuICAgICAgdmVyaWZ5VmFsaWRhdGlvbnNGb3JtLmNhbGwoY29udHJvbCk7XG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBSZXRvcm5hIGEgaWRhZGUgZGUgYWNvcmRvIGNvbSBhIGRhdGEgZGUgbmFzY2ltZW50by5cbiAqXG4gKiBAcGFyYW0gYmlydGhkYXlEYXRlIERhdGEgZGUgbmFzY2ltZW50by5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFllYXJzKGJpcnRoZGF5KSB7XG4gIGNvbnN0IGN1cnJlbnREYXRlID0gbW9tZW50KCk7XG4gIGNvbnN0IHllYXJzID0gY3VycmVudERhdGUuZGlmZihiaXJ0aGRheSwgJ3llYXJzJywgZmFsc2UpO1xuICByZXR1cm4geWVhcnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRDdXN0b25GaWVsZHMoY3VzdG9tRmllbGRzKSB7XG4gIGN1c3RvbUZpZWxkcy5tYXAodmFsID0+IHtcbiAgICBjb25zdCBhZGRDdXN0b24gPSB7fTtcbiAgICBsZXQgdmFsdWUgPSB2YWwudmFsdWUgfHwgbnVsbDtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpIHtcbiAgICAgIHZhbHVlID0gdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnO1xuICAgIH1cbiAgICBhZGRDdXN0b25bdmFsLmZpZWxkXSA9IG5ldyBGb3JtQ29udHJvbCh2YWx1ZSk7XG4gICAgdGhpcy5wdXNoKG5ldyBGb3JtR3JvdXAoYWRkQ3VzdG9uKSk7XG4gIH0pO1xuICByZXR1cm4gY3VzdG9tRmllbGRzO1xufVxuXG4gICAgZXhwb3J0IGZ1bmN0aW9uIHNldFJlcXVpcmVkKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBuYW1lOiBzdHJpbmcsIHJlcXVpcmVkOiBib29sZWFuLCB2YWxpZGF0b3JzPzogVmFsaWRhdG9yRm5bXSkge1xuICBpZiAocmVxdWlyZWQpIHtcbiAgICBmb3JtR3JvdXAuY29udHJvbHNbbmFtZV0uc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLmNvbXBvc2UodmFsaWRhdG9ycyAmJiB2YWxpZGF0b3JzLmxlbmd0aCA/IHZhbGlkYXRvcnMgOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pKTtcbiAgICBmb3JtR3JvdXAuY29udHJvbHNbbmFtZV0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICB9IGVsc2Uge1xuICAgIGZvcm1Hcm91cC5jb250cm9sc1tuYW1lXS5zZXRWYWxpZGF0b3JzKG51bGwpO1xuICAgIGZvcm1Hcm91cC5jb250cm9sc1tuYW1lXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gIH1cbn1cblxuLyoqXG4gKiBFc3NlIG3DqXRvZG8gdGVtIGNvbW8gZnVuw6fDo28gc2V0YXIgb3MgY2FtcG9zIGVuYWJsZSBvdSBkaXNhYmxlLlxuICogQHBhcmFtIGZvcm1Hcm91cCBGb3JtR3JvdXAgb25kZSBzZSBlbmNvbnRyYSBvcyBjYW1wb3MgYSBzZXJlbSBhbHRlcmFkb3MuXG4gKiBAcGFyYW0gY29uZGl0aW9uIENvbmRpw6fDo28gcGFyYSB2YWxpZGHDp8Ojby4gVHJ1ZSA9IGVuYWJsZWQsIEZhbHNlID0gZGlzYWJsZWQuXG4gKiBAcGFyYW0gZmllbGRzIENhbXBvcyBhIHNlcmVtIG1hbmlwdWxhZG9zLlxuICogQHBhcmFtIGZpZWxkc1RvQ2xlYXIgQ2FtcG9zIGEgc2VyZW0gbGltcG9zLiDDiSBvcGljaW9uYWwgZSBzZSBuw6NvIGZvaSBwYXNzYWRvIG8gbcOpdG9kbyBsaW1wYXLDoSBvcyBtZXNtb3MgY2FtcG9zIGRvcyBmaWVsZHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb25maWdFbmFibGVkRmllbGRzKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBjb25kaXRpb246IGJvb2xlYW4sIGZpZWxkczogQXJyYXk8c3RyaW5nPiwgZmllbGRzVG9DbGVhcj86IEFycmF5PHN0cmluZz4pIHtcbiAgaWYgKGNvbmRpdGlvbikge1xuICAgIGZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IGZvcm1Hcm91cC5nZXQoZmllbGQpLmVuYWJsZSgpKTtcbiAgfSBlbHNlIHtcbiAgICBmaWVsZHMuZm9yRWFjaChmaWVsZCA9PiBmb3JtR3JvdXAuZ2V0KGZpZWxkKS5kaXNhYmxlKCkpO1xuICAgIGNsZWFyVmFsdWVzKGZvcm1Hcm91cCwgZmllbGRzVG9DbGVhciA/IGZpZWxkc1RvQ2xlYXIgOiBmaWVsZHMpO1xuICB9XG59XG5cbi8qKlxuICogRXNzZSBtw6l0b2RvIHRlbSBjb21vIGZ1bsOnw6NvIHNldGFyIG9zIGNhbXBvcyBjb21vIHJlcXVlcmlkb3Mgb3UgbsOjby5cbiAqXG4gKiBAcGFyYW0gZm9ybUdyb3VwIEZvcm1Hcm91cCBvbmRlIHNlIGVuY29udHJhIG9zIGNhbXBvcyBhIHNlcmVtIGFsdGVyYWRvcy5cbiAqIEBwYXJhbSBjb25kaXRpb24gU2Ugc2Vyw6Egb3UgbsOjbyByZXF1ZXJpZG9zLlxuICogQHBhcmFtIGZpZWxkcyBMaXN0YSBkZSBjYW1wb3MuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRSZXF1aXJlZEZpZWxkcyhmb3JtR3JvdXA6IEZvcm1Hcm91cCwgY29uZGl0aW9uOiBib29sZWFuLCBmaWVsZHM6IEFycmF5PHN0cmluZz4pIHtcbiAgaWYgKGNvbmRpdGlvbikge1xuICAgIGZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHNldFJlcXVpcmVkKGZvcm1Hcm91cCwgZmllbGQsIHRydWUsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSkpO1xuICB9IGVsc2Uge1xuICAgIGZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHNldFJlcXVpcmVkKGZvcm1Hcm91cCwgZmllbGQsIGZhbHNlKSk7XG4gIH1cbn1cblxuXG4vKipcbiAqIEVzc2UgbcOpdG9kbyB0ZW0gY29tbyBmdW7Dp8OjbyBzZXRhciB2YWxpZGHDp8O1ZXMgZGluw6JtaWNhcyBub3MgY2FtcG9zLlxuICpcbiAqIEBwYXJhbSBmb3JtR3JvdXAgRm9ybUdyb3VwIG9uZGUgc2UgZW5jb250cmEgb3MgY2FtcG9zIGEgc2VyZW0gYWx0ZXJhZG9zLlxuICogQHBhcmFtIGZpZWxkcyBMaXN0YSBkZSBvYmpldG9zIFt7ZmllbGQ6IGNhbXBvLCB2YWxpZGF0b3JzOiB2YWxpZGHDp8O1ZXMsIGRpc2FibGU6IGJvb2xlYW59XS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldFZhbGlkYXRvcnNBbmREaXNhYmxlRmllbGRzKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBmaWVsZHM6IEFycmF5PEZpZWxkVmFsaWRhdG9yc09iamVjdD4pIHtcbiAgICBmaWVsZHMuZm9yRWFjaCgoY3VycmVudEZpZWxkOiBGaWVsZFZhbGlkYXRvcnNPYmplY3QpID0+IHtcbiAgICAgICAgc2V0VmFsaWRhdG9yKGZvcm1Hcm91cCwgY3VycmVudEZpZWxkLmZpZWxkLCAgY3VycmVudEZpZWxkLnZhbGlkYXRvcnMpO1xuICAgICAgICBzZXREaXNhYmxlRmllbGQoZm9ybUdyb3VwLCBjdXJyZW50RmllbGQuZGlzYWJsZWQsICBjdXJyZW50RmllbGQuZmllbGQsIGN1cnJlbnRGaWVsZC5jbGVhclZhbHVlKTtcbiAgICB9KTtcbn1cblxuXG5leHBvcnQgZnVuY3Rpb24gc2V0VmFsaWRhdG9yKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBuYW1lOiBzdHJpbmcsIHZhbGlkYXRvcnM/OiBWYWxpZGF0b3JGbltdKSB7XG4gICAgaWYgKHZhbGlkYXRvcnMgJiYgdmFsaWRhdG9ycy5sZW5ndGgpIHtcbiAgICAgICAgZm9ybUdyb3VwLmNvbnRyb2xzW25hbWVdLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5jb21wb3NlKHZhbGlkYXRvcnMpKTtcbiAgICAgICAgZm9ybUdyb3VwLmNvbnRyb2xzW25hbWVdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBmb3JtR3JvdXAuY29udHJvbHNbbmFtZV0uc2V0VmFsaWRhdG9ycyhudWxsKTtcbiAgICAgICAgZm9ybUdyb3VwLmNvbnRyb2xzW25hbWVdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICB9XG59XG5cblxuLyoqXG4gKiBFc3NlIG3DqXRvZG8gdGVtIGNvbW8gZnVuw6fDo28gc2V0YXIgb3MgY2FtcG9zIGVuYWJsZSBvdSBkaXNhYmxlLlxuICogQHBhcmFtIGZvcm1Hcm91cCBGb3JtR3JvdXAgb25kZSBzZSBlbmNvbnRyYSBvcyBjYW1wb3MgYSBzZXJlbSBhbHRlcmFkb3MuXG4gKiBAcGFyYW0gY29uZGl0aW9uIENvbmRpw6fDo28gcGFyYSB2YWxpZGHDp8Ojby4gVHJ1ZSA9IGRpc2FibGVkLCBGYWxzZSA9IGVuYWJsZWQuXG4gKiBAcGFyYW0gZmllbGQgQ2FtcG8gYSBzZXIgbWFuaXB1bGFkb3MuXG4gKiBAcGFyYW0gY2xlYXJWYWx1ZSBDYW1wb3MgYSBzZXIgbGltcG9zLiDDiSBvcGljaW9uYWwgZSBzZSBuw6NvIGZvaSBwYXNzYWRvIG8gbcOpdG9kbyBsaW1wYXLDoSBvIGNhbXBvIGRvIGZpZWxkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0RGlzYWJsZUZpZWxkKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBjb25kaXRpb246IGJvb2xlYW4sIGZpZWxkOiBzdHJpbmcsIGNsZWFyVmFsdWU6IGJvb2xlYW4gPSB0cnVlKSB7XG4gICAgaWYgKGNvbmRpdGlvbikge1xuICAgICAgICBmb3JtR3JvdXAuZ2V0KGZpZWxkKS5kaXNhYmxlKCk7XG4gICAgICAgIGlmIChjbGVhclZhbHVlKSBmb3JtR3JvdXAuZ2V0KGZpZWxkKS5yZXNldCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGZvcm1Hcm91cC5nZXQoZmllbGQpLmVuYWJsZSgpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBPcmRlbmEgYXJyYXkgZGUgb2JqZXRvc1xuICogQHBhcmFtIGtleSBvIGNhbXBvIHF1ZSBkZXNlamEgb3JkZW5hclxuICogQHBhcmFtIG9yZGVyIGEgb3JkZW0gcXVlIGRlc2VqYSBvcmRlbmFyIG8gY2FtcG9cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXBhcmVWYWx1ZXMoa2V5OiBzdHJpbmcsIG9yZGVyOiBzdHJpbmcgPSBcIkFTQ1wiKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGlubmVyU29ydChhOiBhbnksIGI6IGFueSkge1xuICAgICAgICBpZiAoIWEuaGFzT3duUHJvcGVydHkoa2V5KSB8fCAhYi5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZhckEgPSAodHlwZW9mIGFba2V5XSA9PT0gXCJzdHJpbmdcIilcbiAgICAgICAgICAgID8gYVtrZXldLnRvVXBwZXJDYXNlKCkgOiBhW2tleV07XG4gICAgICAgIGNvbnN0IHZhckIgPSAodHlwZW9mIGJba2V5XSA9PT0gXCJzdHJpbmdcIilcbiAgICAgICAgICAgID8gYltrZXldLnRvVXBwZXJDYXNlKCkgOiBiW2tleV07XG5cbiAgICAgICAgbGV0IGNvbXBhcmlzb24gPSAwO1xuICAgICAgICBpZiAodmFyQSA+IHZhckIpIHtcbiAgICAgICAgICAgIGNvbXBhcmlzb24gPSAxO1xuICAgICAgICB9IGVsc2UgaWYgKHZhckEgPCB2YXJCKSB7XG4gICAgICAgICAgICBjb21wYXJpc29uID0gLTE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIChvcmRlciA9PT0gXCJERVNDXCIpID8gKGNvbXBhcmlzb24gKiAtMSkgOiBjb21wYXJpc29uXG4gICAgICAgICk7XG4gICAgfTtcbn1cblxuLyoqXG4gKiBFc3NlIG3DqXRvZG8gdGVtIGNvbW8gZnVuw6fDo28gbGltcGFyIG8gdmFsb3IgZG9zIGNhbXBvcy5cbiAqXG4gKiBAcGFyYW0gZm9ybUdyb3VwIEZvcm1Hcm91cCBvbmRlIHNlIGVuY29udHJhIG9zIGNhbXBvcyBhIHNlcmVtIGxpbXBvcy5cbiAqIEBwYXJhbSBmaWVsZHMgQ2FtcG9zIGEgc2VyZW0gbGltcG9zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2xlYXJWYWx1ZXMoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGZpZWxkczogQXJyYXk8c3RyaW5nPikge1xuICBmaWVsZHMuZm9yRWFjaChmaWVsZCA9PiBmb3JtR3JvdXAuZ2V0KGZpZWxkKS5yZXNldCgpKTtcbn1cblxuLyoqXG4gKlxuICogQHBhcmFtIHFzID0gd2luZG93LmxvY2F0aW9uLnNlYXJjaFxuICogQHJldHVybnMgT2JqZWN0IGNvbSBwYXJhbWV0cm9zIHF1ZXJ5IHN0cmluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UXVlcnlQYXJhbXMocXMpIHtcbiAgcXMgPSBxcy5zcGxpdCgnKycpLmpvaW4oJyAnKTtcblxuICBjb25zdCBwYXJhbXMgPSB7fTtcbiAgbGV0IHRva2VucztcbiAgY29uc3QgcmUgPSAvWz8mXT8oW149XSspPShbXiZdKikvZztcblxuICB3aGlsZSAoKHRva2VucyA9IHJlLmV4ZWMocXMpKSkge1xuICAgIHBhcmFtc1tkZWNvZGVVUklDb21wb25lbnQodG9rZW5zWzFdKV0gPSBkZWNvZGVVUklDb21wb25lbnQodG9rZW5zWzJdKTtcbiAgfVxuXG4gIHJldHVybiBwYXJhbXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGb3JtYXQobG9jYWxlKSB7XG4gIGlmIChsb2NhbGUpIHtcbiAgICBsZXQgZGF0ZUZvcm1hdCA9IGxvY2FsZS5jYWxlbmRhci5kYXRlRm9ybWF0LnRvU3RyaW5nKCk7XG4gICAgZGF0ZUZvcm1hdCA9IGRhdGVGb3JtYXQucmVwbGFjZSgvW3ldL2csICdZWScpO1xuICAgIGRhdGVGb3JtYXQgPSBkYXRlRm9ybWF0LnJlcGxhY2UoL1svXS9nLCAnJyk7XG4gICAgcmV0dXJuIGRhdGVGb3JtYXQudG9VcHBlckNhc2UoKTtcbiAgfVxufVxuXG4vKipcbiAqIFJlbW92ZSBvcyBjYXJhY3RlcmVzIHF1ZSBuw6NvIHNlamFtIG7Dum1lcm9zIGRvIHZhbG9yXG4gKiBAcGFyYW0gdmFsdWUgdmFsb3IgYSBzZXIgdHJhdGFkb1xuICogQHJldHVybnMgc3RyaW5nIE8gdmFsb3Igc2VtIGNhcmFjdGVyZXMgZXNwZWNpYWlzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVDaGFyYWN0ZXJlc1NwZWNpYWxzKHZhbHVlOiBhbnkpOiBzdHJpbmcge1xuICAgIHJldHVybiB2YWx1ZSA/IHZhbHVlLnRvU3RyaW5nKCkucmVwbGFjZSgvWyZcXC9cXFxcIywrKCkkfiUuJ1wiOio/PD57fS1dL2csIFwiXCIpIDogbnVsbDtcbn1cbiJdfQ==
|