@senior-gestao-empresarial/erpx-components 0.0.0-develop-3bab051d
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-empresarial-erpx-components.umd.js +37665 -0
- package/bundles/senior-gestao-empresarial-erpx-components.umd.js.map +1 -0
- package/bundles/senior-gestao-empresarial-erpx-components.umd.min.js +17 -0
- package/bundles/senior-gestao-empresarial-erpx-components.umd.min.js.map +1 -0
- package/components/breadcrumb/breadcrumb.component.d.ts +21 -0
- package/components/breadcrumb/breadcrumb.module.d.ts +2 -0
- package/components/breadcrumb/index.d.ts +2 -0
- package/components/focus/focus.service.d.ts +4 -0
- package/components/lote-serie/erp-lote-serie.component.d.ts +183 -0
- package/components/lote-serie/erp-lote-serie.module.d.ts +2 -0
- package/components/lote-serie/erp-lote-serie.service.d.ts +137 -0
- package/components/lote-serie/index.d.ts +2 -0
- package/components/rateio-editor/erp-rateio-editor.component.d.ts +202 -0
- package/components/rateio-editor/erp-rateio-editor.converter.d.ts +18 -0
- package/components/rateio-editor/erp-rateio-editor.module.d.ts +2 -0
- package/components/rateio-editor/erp-rateio-editor.service.d.ts +17 -0
- package/components/rateio-editor/erp-rateio-editor.types.d.ts +171 -0
- package/components/rateio-editor/index.d.ts +4 -0
- package/components/resumo/erp-resumo.component.d.ts +17 -0
- package/components/resumo/erp-resumo.module.d.ts +2 -0
- package/components/resumo/erp-resumo.service.d.ts +2 -0
- package/components/resumo/index.d.ts +2 -0
- package/components/tributos/calculators/effective-tax-rate-calculator.d.ts +34 -0
- package/components/tributos/calculators/gross-amount-calculator.d.ts +20 -0
- package/components/tributos/calculators/tax-amount-calculator.d.ts +54 -0
- package/components/tributos/erp-tributos.component.d.ts +215 -0
- package/components/tributos/erp-tributos.module.d.ts +2 -0
- package/components/tributos/erp-tributos.service.d.ts +10 -0
- package/components/tributos/erp-tributos.types.d.ts +286 -0
- package/components/tributos/index.d.ts +12 -0
- package/components/tributos/mappings/enum-tip-imp-cst-mapping.d.ts +2 -0
- package/components/tributos/rules/calculation/registries/calculation-rules-registries/calculation-rules.registry.d.ts +15 -0
- package/components/tributos/rules/calculation/registries/calculation-rules-registries/incoming-invoice-calculation-rules.registry.d.ts +28 -0
- package/components/tributos/rules/calculation/registries/calculation-rules-registries/outgoing-invoice-calculation-rules.registry.d.ts +30 -0
- package/components/tributos/rules/calculation/registries/calculation-rules-registries/purchase-order-calculation-rules.registry.d.ts +22 -0
- package/components/tributos/rules/calculation/registries/calculation-rules-registries/sale-order-calculation-rules.registry.d.ts +22 -0
- package/components/tributos/rules/calculation/rules/apply-net-value-to-document-calculation-rule.d.ts +5 -0
- package/components/tributos/rules/calculation/rules/assessment-period-calculation-rule.d.ts +5 -0
- package/components/tributos/rules/calculation/rules/effective-tax-rate-calculation-rule.d.ts +8 -0
- package/components/tributos/rules/calculation/rules/gross-amount-calculation-rule.d.ts +8 -0
- package/components/tributos/rules/calculation/rules/manual-tax-calculation-rule.d.ts +5 -0
- package/components/tributos/rules/calculation/rules/tax-amount-calculation-rule.d.ts +8 -0
- package/components/tributos/rules/calculation/rules/tax-calculation-type-calculation-rule.d.ts +5 -0
- package/components/tributos/rules/calculation/rules/tax-classification-calculation-rule.d.ts +6 -0
- package/components/tributos/rules/calculation/rules/tax-rate-calculation-rule.d.ts +5 -0
- package/components/tributos/rules/calculation/rules/tax-situation-calculation-rule.d.ts +5 -0
- package/components/tributos/rules/calculation/rules/taxable-base-calculation-rule.d.ts +8 -0
- package/components/tributos/rules/rules.service.d.ts +19 -0
- package/components/tributos/rules/status/registries/incoming-invoice-status-rules.registry.d.ts +16 -0
- package/components/tributos/rules/status/registries/outgoing-invoice-status-rules.registry.d.ts +12 -0
- package/components/tributos/rules/status/registries/purchase-order-status-rules.registry.d.ts +12 -0
- package/components/tributos/rules/status/registries/sale-order-status-rules.registry.d.ts +8 -0
- package/components/tributos/rules/status/registries/status-rules.registry.d.ts +15 -0
- package/components/tributos/rules/status/rules/apply-net-value-to-document-status-rule.d.ts +5 -0
- package/components/tributos/rules/status/rules/tax-classification-status-rule.d.ts +5 -0
- package/components/tributos/rules/status/rules/tax-rate-status-rule.d.ts +5 -0
- package/components/tributos/rules/status/rules/taxable-base-status-rule.d.ts +5 -0
- package/components/tributos/rules/types/available-fields.d.ts +2 -0
- package/components/tributos/rules/types/available-taxes.d.ts +1 -0
- package/components/tributos/rules/types/field-calculation-rule-mapping.d.ts +6 -0
- package/components/tributos/rules/types/field-rule-mapping.d.ts +6 -0
- package/components/tributos/rules/types/field-status-rule-mapping.d.ts +6 -0
- package/components/tributos/rules/types/rule-payload.d.ts +9 -0
- package/components/tributos/rules/types/schemas/incoming-invoice.schema.d.ts +235 -0
- package/components/tributos/rules/types/schemas/outgoing-invoice.schema.d.ts +349 -0
- package/components/tributos/rules/types/schemas/purchase-order.schema.d.ts +26 -0
- package/components/tributos/rules/types/schemas/sale-order.schema.d.ts +131 -0
- package/components/tributos/rules/types/strategies-by-document.d.ts +12 -0
- package/components/tributos/rules/types/strategies.d.ts +4 -0
- package/components/tributos/rules/types/tax-rule.d.ts +4 -0
- package/components/tributos/rules/validation/registries/incoming-invoice-validation-rules.registry.d.ts +20 -0
- package/components/tributos/rules/validation/registries/outgoing-invoice-validation-rules.registry.d.ts +22 -0
- package/components/tributos/rules/validation/registries/purchase-order-validation-rules.registry.d.ts +14 -0
- package/components/tributos/rules/validation/registries/sale-order-validation-rules.registry.d.ts +14 -0
- package/components/tributos/rules/validation/registries/validation-rules.registry.d.ts +15 -0
- package/components/tributos/rules/validation/rules/required/apply-net-value-to-document-required-validation-rule.d.ts +5 -0
- package/components/tributos/rules/validation/rules/required/assessment-period-required-validation-rule.d.ts +5 -0
- package/components/tributos/rules/validation/rules/required/tax-amount-required-validation-rule.d.ts +5 -0
- package/components/tributos/rules/validation/rules/required/tax-classification-required-validation-rule.d.ts +5 -0
- package/components/tributos/rules/validation/rules/required/tax-rate-required-validation-rule.d.ts +6 -0
- package/components/tributos/rules/validation/rules/required/tax-situation-required-validation-rule.d.ts +6 -0
- package/components/tributos/rules/validation/rules/required/taxable-base-required-validation-rule.d.ts +6 -0
- package/components/tributos/services/tax-rounding.service.d.ts +5 -0
- package/components/tributos/stores/tax.store.d.ts +10 -0
- package/components/tributos/tax-reform-utilities.d.ts +36 -0
- package/components/tributos/types/context.d.ts +7 -0
- package/components/tributos/types/controllership-incoming-invoice-context.d.ts +5 -0
- package/components/tributos/types/controllership-incoming-invoice.d.ts +3 -0
- package/components/tributos/types/controllership-outgoing-invoice-context.d.ts +5 -0
- package/components/tributos/types/controllership-outgoing-invoice.d.ts +3 -0
- package/components/tributos/types/credit-invoice-type.d.ts +1 -0
- package/components/tributos/types/debit-invoice-type.d.ts +1 -0
- package/components/tributos/types/group.d.ts +6 -0
- package/components/tributos/types/incoming-invoice-context.d.ts +5 -0
- package/components/tributos/types/incoming-invoice-item.d.ts +4 -0
- package/components/tributos/types/incoming-invoice-type.d.ts +1 -0
- package/components/tributos/types/incoming-invoice.d.ts +11 -0
- package/components/tributos/types/item-type.d.ts +1 -0
- package/components/tributos/types/outgoing-Invoice.d.ts +11 -0
- package/components/tributos/types/outgoing-invoice-context.d.ts +5 -0
- package/components/tributos/types/outgoing-invoice-item.d.ts +4 -0
- package/components/tributos/types/outgoing-invoice-type.d.ts +1 -0
- package/components/tributos/types/purchase-order-context.d.ts +5 -0
- package/components/tributos/types/purchase-order-type.d.ts +1 -0
- package/components/tributos/types/purchase-order.d.ts +8 -0
- package/components/tributos/types/sale-order-context.d.ts +5 -0
- package/components/tributos/types/sale-order-type.d.ts +1 -0
- package/components/tributos/types/sale-order.d.ts +8 -0
- package/components/tributos/types/tax.d.ts +8 -0
- package/components/utils/breakpoints.d.ts +10 -0
- package/components/utils/export-utils.d.ts +6 -0
- package/components/utils/index.d.ts +3 -0
- package/components/utils/loading-context.d.ts +7 -0
- package/components/utils/utils.d.ts +4 -0
- package/core/entities/entity-service.d.ts +32 -0
- package/core/entities/quantidade-disponivel-demanda/quantidade-disponivel-demanda-dto.d.ts +36 -0
- package/core/entities/quantidade-disponivel-demanda/quantidade-disponivel-demanda.d.ts +40 -0
- package/core/entities/quantidade-disponivel-demanda/quantidade-disponivel-demanda.module.d.ts +2 -0
- package/core/entities/quantidade-disponivel-demanda/quantidade-disponivel-demanda.service.d.ts +11 -0
- package/core/enums/enum-classificacao-tributaria.d.ts +4 -0
- package/core/enums/enum-tipo-calculo-imposto.d.ts +5 -0
- package/core/enums/enum-tipo-documento-parametros.d.ts +7 -0
- package/core/enums/enum-tipo-documento.d.ts +10 -0
- package/core/enums/erpx-com-processo-faturamento-backend/enum-indicativo-padrao.d.ts +5 -0
- package/core/enums/erpx-cpl-imp-cadastros-backend/enum-indicativo-padrao.d.ts +8 -0
- package/esm2015/components/breadcrumb/breadcrumb.component.js +86 -0
- package/esm2015/components/breadcrumb/breadcrumb.module.js +17 -0
- package/esm2015/components/breadcrumb/index.js +3 -0
- package/esm2015/components/focus/focus.service.js +32 -0
- package/esm2015/components/lote-serie/erp-lote-serie.component.js +1772 -0
- package/esm2015/components/lote-serie/erp-lote-serie.module.js +47 -0
- package/esm2015/components/lote-serie/erp-lote-serie.service.js +94 -0
- package/esm2015/components/lote-serie/index.js +3 -0
- package/esm2015/components/rateio-editor/erp-rateio-editor.component.js +794 -0
- package/esm2015/components/rateio-editor/erp-rateio-editor.converter.js +52 -0
- package/esm2015/components/rateio-editor/erp-rateio-editor.module.js +40 -0
- package/esm2015/components/rateio-editor/erp-rateio-editor.service.js +49 -0
- package/esm2015/components/rateio-editor/erp-rateio-editor.types.js +5 -0
- package/esm2015/components/rateio-editor/index.js +4 -0
- package/esm2015/components/resumo/erp-resumo.component.js +19 -0
- package/esm2015/components/resumo/erp-resumo.module.js +25 -0
- package/esm2015/components/resumo/erp-resumo.service.js +13 -0
- package/esm2015/components/resumo/index.js +2 -0
- package/esm2015/components/tributos/calculators/effective-tax-rate-calculator.js +53 -0
- package/esm2015/components/tributos/calculators/gross-amount-calculator.js +37 -0
- package/esm2015/components/tributos/calculators/tax-amount-calculator.js +87 -0
- package/esm2015/components/tributos/erp-tributos.component.js +5176 -0
- package/esm2015/components/tributos/erp-tributos.module.js +33 -0
- package/esm2015/components/tributos/erp-tributos.service.js +23 -0
- package/esm2015/components/tributos/erp-tributos.types.js +268 -0
- package/esm2015/components/tributos/index.js +4 -0
- package/esm2015/components/tributos/mappings/enum-tip-imp-cst-mapping.js +33 -0
- package/esm2015/components/tributos/rules/calculation/registries/calculation-rules-registries/calculation-rules.registry.js +45 -0
- package/esm2015/components/tributos/rules/calculation/registries/calculation-rules-registries/incoming-invoice-calculation-rules.registry.js +3102 -0
- package/esm2015/components/tributos/rules/calculation/registries/calculation-rules-registries/outgoing-invoice-calculation-rules.registry.js +4516 -0
- package/esm2015/components/tributos/rules/calculation/registries/calculation-rules-registries/purchase-order-calculation-rules.registry.js +294 -0
- package/esm2015/components/tributos/rules/calculation/registries/calculation-rules-registries/sale-order-calculation-rules.registry.js +1464 -0
- package/esm2015/components/tributos/rules/calculation/rules/apply-net-value-to-document-calculation-rule.js +48 -0
- package/esm2015/components/tributos/rules/calculation/rules/assessment-period-calculation-rule.js +55 -0
- package/esm2015/components/tributos/rules/calculation/rules/effective-tax-rate-calculation-rule.js +83 -0
- package/esm2015/components/tributos/rules/calculation/rules/gross-amount-calculation-rule.js +74 -0
- package/esm2015/components/tributos/rules/calculation/rules/manual-tax-calculation-rule.js +72 -0
- package/esm2015/components/tributos/rules/calculation/rules/tax-amount-calculation-rule.js +244 -0
- package/esm2015/components/tributos/rules/calculation/rules/tax-calculation-type-calculation-rule.js +74 -0
- package/esm2015/components/tributos/rules/calculation/rules/tax-classification-calculation-rule.js +170 -0
- package/esm2015/components/tributos/rules/calculation/rules/tax-rate-calculation-rule.js +100 -0
- package/esm2015/components/tributos/rules/calculation/rules/tax-situation-calculation-rule.js +124 -0
- package/esm2015/components/tributos/rules/calculation/rules/taxable-base-calculation-rule.js +292 -0
- package/esm2015/components/tributos/rules/rules.service.js +61 -0
- package/esm2015/components/tributos/rules/status/registries/incoming-invoice-status-rules.registry.js +1076 -0
- package/esm2015/components/tributos/rules/status/registries/outgoing-invoice-status-rules.registry.js +1317 -0
- package/esm2015/components/tributos/rules/status/registries/purchase-order-status-rules.registry.js +62 -0
- package/esm2015/components/tributos/rules/status/registries/sale-order-status-rules.registry.js +18 -0
- package/esm2015/components/tributos/rules/status/registries/status-rules.registry.js +45 -0
- package/esm2015/components/tributos/rules/status/rules/apply-net-value-to-document-status-rule.js +39 -0
- package/esm2015/components/tributos/rules/status/rules/tax-classification-status-rule.js +94 -0
- package/esm2015/components/tributos/rules/status/rules/tax-rate-status-rule.js +61 -0
- package/esm2015/components/tributos/rules/status/rules/taxable-base-status-rule.js +65 -0
- package/esm2015/components/tributos/rules/types/available-fields.js +1 -0
- package/esm2015/components/tributos/rules/types/available-taxes.js +1 -0
- package/esm2015/components/tributos/rules/types/field-calculation-rule-mapping.js +1 -0
- package/esm2015/components/tributos/rules/types/field-rule-mapping.js +1 -0
- package/esm2015/components/tributos/rules/types/field-status-rule-mapping.js +1 -0
- package/esm2015/components/tributos/rules/types/rule-payload.js +1 -0
- package/esm2015/components/tributos/rules/types/schemas/incoming-invoice.schema.js +1816 -0
- package/esm2015/components/tributos/rules/types/schemas/outgoing-invoice.schema.js +2750 -0
- package/esm2015/components/tributos/rules/types/schemas/purchase-order.schema.js +150 -0
- package/esm2015/components/tributos/rules/types/schemas/sale-order.schema.js +879 -0
- package/esm2015/components/tributos/rules/types/strategies-by-document.js +1 -0
- package/esm2015/components/tributos/rules/types/strategies.js +1 -0
- package/esm2015/components/tributos/rules/types/tax-rule.js +1 -0
- package/esm2015/components/tributos/rules/validation/registries/incoming-invoice-validation-rules.registry.js +3606 -0
- package/esm2015/components/tributos/rules/validation/registries/outgoing-invoice-validation-rules.registry.js +5452 -0
- package/esm2015/components/tributos/rules/validation/registries/purchase-order-validation-rules.registry.js +270 -0
- package/esm2015/components/tributos/rules/validation/registries/sale-order-validation-rules.registry.js +1392 -0
- package/esm2015/components/tributos/rules/validation/registries/validation-rules.registry.js +45 -0
- package/esm2015/components/tributos/rules/validation/rules/required/apply-net-value-to-document-required-validation-rule.js +73 -0
- package/esm2015/components/tributos/rules/validation/rules/required/assessment-period-required-validation-rule.js +78 -0
- package/esm2015/components/tributos/rules/validation/rules/required/tax-amount-required-validation-rule.js +902 -0
- package/esm2015/components/tributos/rules/validation/rules/required/tax-classification-required-validation-rule.js +401 -0
- package/esm2015/components/tributos/rules/validation/rules/required/tax-rate-required-validation-rule.js +719 -0
- package/esm2015/components/tributos/rules/validation/rules/required/tax-situation-required-validation-rule.js +300 -0
- package/esm2015/components/tributos/rules/validation/rules/required/taxable-base-required-validation-rule.js +717 -0
- package/esm2015/components/tributos/services/tax-rounding.service.js +18 -0
- package/esm2015/components/tributos/stores/tax.store.js +19 -0
- package/esm2015/components/tributos/tax-reform-utilities.js +243 -0
- package/esm2015/components/tributos/types/context.js +1 -0
- package/esm2015/components/tributos/types/controllership-incoming-invoice-context.js +1 -0
- package/esm2015/components/tributos/types/controllership-incoming-invoice.js +1 -0
- package/esm2015/components/tributos/types/controllership-outgoing-invoice-context.js +1 -0
- package/esm2015/components/tributos/types/controllership-outgoing-invoice.js +1 -0
- package/esm2015/components/tributos/types/credit-invoice-type.js +1 -0
- package/esm2015/components/tributos/types/debit-invoice-type.js +1 -0
- package/esm2015/components/tributos/types/group.js +1 -0
- package/esm2015/components/tributos/types/incoming-invoice-context.js +1 -0
- package/esm2015/components/tributos/types/incoming-invoice-item.js +1 -0
- package/esm2015/components/tributos/types/incoming-invoice-type.js +1 -0
- package/esm2015/components/tributos/types/incoming-invoice.js +1 -0
- package/esm2015/components/tributos/types/item-type.js +1 -0
- package/esm2015/components/tributos/types/outgoing-Invoice.js +1 -0
- package/esm2015/components/tributos/types/outgoing-invoice-context.js +1 -0
- package/esm2015/components/tributos/types/outgoing-invoice-item.js +1 -0
- package/esm2015/components/tributos/types/outgoing-invoice-type.js +1 -0
- package/esm2015/components/tributos/types/purchase-order-context.js +1 -0
- package/esm2015/components/tributos/types/purchase-order-type.js +1 -0
- package/esm2015/components/tributos/types/purchase-order.js +1 -0
- package/esm2015/components/tributos/types/sale-order-context.js +1 -0
- package/esm2015/components/tributos/types/sale-order-type.js +1 -0
- package/esm2015/components/tributos/types/sale-order.js +1 -0
- package/esm2015/components/tributos/types/tax.js +2 -0
- package/esm2015/components/utils/breakpoints.js +11 -0
- package/esm2015/components/utils/export-utils.js +71 -0
- package/esm2015/components/utils/index.js +4 -0
- package/esm2015/components/utils/loading-context.js +20 -0
- package/esm2015/components/utils/utils.js +18 -0
- package/esm2015/core/entities/entity-service.js +91 -0
- package/esm2015/core/entities/quantidade-disponivel-demanda/quantidade-disponivel-demanda-dto.js +1 -0
- package/esm2015/core/entities/quantidade-disponivel-demanda/quantidade-disponivel-demanda.js +62 -0
- package/esm2015/core/entities/quantidade-disponivel-demanda/quantidade-disponivel-demanda.module.js +24 -0
- package/esm2015/core/entities/quantidade-disponivel-demanda/quantidade-disponivel-demanda.service.js +24 -0
- package/esm2015/core/enums/enum-classificacao-tributaria.js +6 -0
- package/esm2015/core/enums/enum-tipo-calculo-imposto.js +7 -0
- package/esm2015/core/enums/enum-tipo-documento-parametros.js +9 -0
- package/esm2015/core/enums/enum-tipo-documento.js +12 -0
- package/esm2015/core/enums/erpx-com-processo-faturamento-backend/enum-indicativo-padrao.js +7 -0
- package/esm2015/core/enums/erpx-cpl-imp-cadastros-backend/enum-indicativo-padrao.js +10 -0
- package/esm2015/locale/fallback.js +56 -0
- package/esm2015/public-api.js +8 -0
- package/esm2015/senior-gestao-empresarial-erpx-components.js +58 -0
- package/esm5/components/breadcrumb/breadcrumb.component.js +91 -0
- package/esm5/components/breadcrumb/breadcrumb.module.js +20 -0
- package/esm5/components/breadcrumb/index.js +3 -0
- package/esm5/components/focus/focus.service.js +35 -0
- package/esm5/components/lote-serie/erp-lote-serie.component.js +1830 -0
- package/esm5/components/lote-serie/erp-lote-serie.module.js +50 -0
- package/esm5/components/lote-serie/erp-lote-serie.service.js +96 -0
- package/esm5/components/lote-serie/index.js +3 -0
- package/esm5/components/rateio-editor/erp-rateio-editor.component.js +861 -0
- package/esm5/components/rateio-editor/erp-rateio-editor.converter.js +68 -0
- package/esm5/components/rateio-editor/erp-rateio-editor.module.js +43 -0
- package/esm5/components/rateio-editor/erp-rateio-editor.service.js +51 -0
- package/esm5/components/rateio-editor/erp-rateio-editor.types.js +5 -0
- package/esm5/components/rateio-editor/index.js +4 -0
- package/esm5/components/resumo/erp-resumo.component.js +22 -0
- package/esm5/components/resumo/erp-resumo.module.js +28 -0
- package/esm5/components/resumo/erp-resumo.service.js +16 -0
- package/esm5/components/resumo/index.js +2 -0
- package/esm5/components/tributos/calculators/effective-tax-rate-calculator.js +58 -0
- package/esm5/components/tributos/calculators/gross-amount-calculator.js +39 -0
- package/esm5/components/tributos/calculators/tax-amount-calculator.js +91 -0
- package/esm5/components/tributos/erp-tributos.component.js +5296 -0
- package/esm5/components/tributos/erp-tributos.module.js +36 -0
- package/esm5/components/tributos/erp-tributos.service.js +24 -0
- package/esm5/components/tributos/erp-tributos.types.js +268 -0
- package/esm5/components/tributos/index.js +4 -0
- package/esm5/components/tributos/mappings/enum-tip-imp-cst-mapping.js +33 -0
- package/esm5/components/tributos/rules/calculation/registries/calculation-rules-registries/calculation-rules.registry.js +46 -0
- package/esm5/components/tributos/rules/calculation/registries/calculation-rules-registries/incoming-invoice-calculation-rules.registry.js +3104 -0
- package/esm5/components/tributos/rules/calculation/registries/calculation-rules-registries/outgoing-invoice-calculation-rules.registry.js +4518 -0
- package/esm5/components/tributos/rules/calculation/registries/calculation-rules-registries/purchase-order-calculation-rules.registry.js +296 -0
- package/esm5/components/tributos/rules/calculation/registries/calculation-rules-registries/sale-order-calculation-rules.registry.js +1466 -0
- package/esm5/components/tributos/rules/calculation/rules/apply-net-value-to-document-calculation-rule.js +60 -0
- package/esm5/components/tributos/rules/calculation/rules/assessment-period-calculation-rule.js +77 -0
- package/esm5/components/tributos/rules/calculation/rules/effective-tax-rate-calculation-rule.js +92 -0
- package/esm5/components/tributos/rules/calculation/rules/gross-amount-calculation-rule.js +83 -0
- package/esm5/components/tributos/rules/calculation/rules/manual-tax-calculation-rule.js +87 -0
- package/esm5/components/tributos/rules/calculation/rules/tax-amount-calculation-rule.js +286 -0
- package/esm5/components/tributos/rules/calculation/rules/tax-calculation-type-calculation-rule.js +89 -0
- package/esm5/components/tributos/rules/calculation/rules/tax-classification-calculation-rule.js +241 -0
- package/esm5/components/tributos/rules/calculation/rules/tax-rate-calculation-rule.js +118 -0
- package/esm5/components/tributos/rules/calculation/rules/tax-situation-calculation-rule.js +200 -0
- package/esm5/components/tributos/rules/calculation/rules/taxable-base-calculation-rule.js +330 -0
- package/esm5/components/tributos/rules/rules.service.js +139 -0
- package/esm5/components/tributos/rules/status/registries/incoming-invoice-status-rules.registry.js +1078 -0
- package/esm5/components/tributos/rules/status/registries/outgoing-invoice-status-rules.registry.js +1319 -0
- package/esm5/components/tributos/rules/status/registries/purchase-order-status-rules.registry.js +64 -0
- package/esm5/components/tributos/rules/status/registries/sale-order-status-rules.registry.js +19 -0
- package/esm5/components/tributos/rules/status/registries/status-rules.registry.js +46 -0
- package/esm5/components/tributos/rules/status/rules/apply-net-value-to-document-status-rule.js +43 -0
- package/esm5/components/tributos/rules/status/rules/tax-classification-status-rule.js +106 -0
- package/esm5/components/tributos/rules/status/rules/tax-rate-status-rule.js +68 -0
- package/esm5/components/tributos/rules/status/rules/taxable-base-status-rule.js +72 -0
- package/esm5/components/tributos/rules/types/available-fields.js +1 -0
- package/esm5/components/tributos/rules/types/available-taxes.js +1 -0
- package/esm5/components/tributos/rules/types/field-calculation-rule-mapping.js +1 -0
- package/esm5/components/tributos/rules/types/field-rule-mapping.js +1 -0
- package/esm5/components/tributos/rules/types/field-status-rule-mapping.js +1 -0
- package/esm5/components/tributos/rules/types/rule-payload.js +1 -0
- package/esm5/components/tributos/rules/types/schemas/incoming-invoice.schema.js +1817 -0
- package/esm5/components/tributos/rules/types/schemas/outgoing-invoice.schema.js +2751 -0
- package/esm5/components/tributos/rules/types/schemas/purchase-order.schema.js +151 -0
- package/esm5/components/tributos/rules/types/schemas/sale-order.schema.js +880 -0
- package/esm5/components/tributos/rules/types/strategies-by-document.js +1 -0
- package/esm5/components/tributos/rules/types/strategies.js +1 -0
- package/esm5/components/tributos/rules/types/tax-rule.js +1 -0
- package/esm5/components/tributos/rules/validation/registries/incoming-invoice-validation-rules.registry.js +3608 -0
- package/esm5/components/tributos/rules/validation/registries/outgoing-invoice-validation-rules.registry.js +5454 -0
- package/esm5/components/tributos/rules/validation/registries/purchase-order-validation-rules.registry.js +272 -0
- package/esm5/components/tributos/rules/validation/registries/sale-order-validation-rules.registry.js +1394 -0
- package/esm5/components/tributos/rules/validation/registries/validation-rules.registry.js +46 -0
- package/esm5/components/tributos/rules/validation/rules/required/apply-net-value-to-document-required-validation-rule.js +77 -0
- package/esm5/components/tributos/rules/validation/rules/required/assessment-period-required-validation-rule.js +86 -0
- package/esm5/components/tributos/rules/validation/rules/required/tax-amount-required-validation-rule.js +968 -0
- package/esm5/components/tributos/rules/validation/rules/required/tax-classification-required-validation-rule.js +433 -0
- package/esm5/components/tributos/rules/validation/rules/required/tax-rate-required-validation-rule.js +774 -0
- package/esm5/components/tributos/rules/validation/rules/required/tax-situation-required-validation-rule.js +323 -0
- package/esm5/components/tributos/rules/validation/rules/required/taxable-base-required-validation-rule.js +772 -0
- package/esm5/components/tributos/services/tax-rounding.service.js +23 -0
- package/esm5/components/tributos/stores/tax.store.js +26 -0
- package/esm5/components/tributos/tax-reform-utilities.js +249 -0
- package/esm5/components/tributos/types/context.js +1 -0
- package/esm5/components/tributos/types/controllership-incoming-invoice-context.js +1 -0
- package/esm5/components/tributos/types/controllership-incoming-invoice.js +1 -0
- package/esm5/components/tributos/types/controllership-outgoing-invoice-context.js +1 -0
- package/esm5/components/tributos/types/controllership-outgoing-invoice.js +1 -0
- package/esm5/components/tributos/types/credit-invoice-type.js +1 -0
- package/esm5/components/tributos/types/debit-invoice-type.js +1 -0
- package/esm5/components/tributos/types/group.js +1 -0
- package/esm5/components/tributos/types/incoming-invoice-context.js +1 -0
- package/esm5/components/tributos/types/incoming-invoice-item.js +1 -0
- package/esm5/components/tributos/types/incoming-invoice-type.js +1 -0
- package/esm5/components/tributos/types/incoming-invoice.js +1 -0
- package/esm5/components/tributos/types/item-type.js +1 -0
- package/esm5/components/tributos/types/outgoing-Invoice.js +1 -0
- package/esm5/components/tributos/types/outgoing-invoice-context.js +1 -0
- package/esm5/components/tributos/types/outgoing-invoice-item.js +1 -0
- package/esm5/components/tributos/types/outgoing-invoice-type.js +1 -0
- package/esm5/components/tributos/types/purchase-order-context.js +1 -0
- package/esm5/components/tributos/types/purchase-order-type.js +1 -0
- package/esm5/components/tributos/types/purchase-order.js +1 -0
- package/esm5/components/tributos/types/sale-order-context.js +1 -0
- package/esm5/components/tributos/types/sale-order-type.js +1 -0
- package/esm5/components/tributos/types/sale-order.js +1 -0
- package/esm5/components/tributos/types/tax.js +2 -0
- package/esm5/components/utils/breakpoints.js +11 -0
- package/esm5/components/utils/export-utils.js +78 -0
- package/esm5/components/utils/index.js +4 -0
- package/esm5/components/utils/loading-context.js +22 -0
- package/esm5/components/utils/utils.js +20 -0
- package/esm5/core/entities/entity-service.js +98 -0
- package/esm5/core/entities/quantidade-disponivel-demanda/quantidade-disponivel-demanda-dto.js +1 -0
- package/esm5/core/entities/quantidade-disponivel-demanda/quantidade-disponivel-demanda.js +67 -0
- package/esm5/core/entities/quantidade-disponivel-demanda/quantidade-disponivel-demanda.module.js +27 -0
- package/esm5/core/entities/quantidade-disponivel-demanda/quantidade-disponivel-demanda.service.js +27 -0
- package/esm5/core/enums/enum-classificacao-tributaria.js +6 -0
- package/esm5/core/enums/enum-tipo-calculo-imposto.js +7 -0
- package/esm5/core/enums/enum-tipo-documento-parametros.js +9 -0
- package/esm5/core/enums/enum-tipo-documento.js +12 -0
- package/esm5/core/enums/erpx-com-processo-faturamento-backend/enum-indicativo-padrao.js +7 -0
- package/esm5/core/enums/erpx-cpl-imp-cadastros-backend/enum-indicativo-padrao.js +10 -0
- package/esm5/locale/fallback.js +56 -0
- package/esm5/public-api.js +8 -0
- package/esm5/senior-gestao-empresarial-erpx-components.js +58 -0
- package/fesm2015/senior-gestao-empresarial-erpx-components.js +36350 -0
- package/fesm2015/senior-gestao-empresarial-erpx-components.js.map +1 -0
- package/fesm5/senior-gestao-empresarial-erpx-components.js +37396 -0
- package/fesm5/senior-gestao-empresarial-erpx-components.js.map +1 -0
- package/locale/fallback.d.ts +55 -0
- package/package.json +23 -0
- package/public-api.d.ts +7 -0
- package/senior-gestao-empresarial-erpx-components.d.ts +57 -0
- package/senior-gestao-empresarial-erpx-components.metadata.json +1 -0
package/esm2015/components/tributos/rules/calculation/rules/tax-classification-calculation-rule.js
ADDED
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { Injectable } from '@angular/core';
|
|
3
|
+
import { combineLatest, merge } from 'rxjs';
|
|
4
|
+
import { distinctUntilChanged, filter, map, skip, startWith } from 'rxjs/operators';
|
|
5
|
+
import { EnumTipoTributo } from '../../../erp-tributos.types';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
let TaxClassificationCalculationRule = class TaxClassificationCalculationRule {
|
|
8
|
+
constructor() { }
|
|
9
|
+
apply({ context: { document }, group, item: { name: taxType, formGroup, formField } }) {
|
|
10
|
+
switch (taxType) {
|
|
11
|
+
case EnumTipoTributo.CBS:
|
|
12
|
+
case EnumTipoTributo.CBS_TRIBUTACAO_REGULAR:
|
|
13
|
+
case EnumTipoTributo.IBS_ESTADUAL:
|
|
14
|
+
case EnumTipoTributo.IBS_ESTADUAL_TRIBUTACAO_REGULAR:
|
|
15
|
+
case EnumTipoTributo.IBS_MUNICIPAL:
|
|
16
|
+
case EnumTipoTributo.IBS_MUNICIPAL_TRIBUTACAO_REGULAR:
|
|
17
|
+
case EnumTipoTributo.IS:
|
|
18
|
+
{
|
|
19
|
+
switch (document) {
|
|
20
|
+
case 'Incoming Invoice':
|
|
21
|
+
case 'Outgoing Invoice':
|
|
22
|
+
case 'Purchase Order':
|
|
23
|
+
case 'Sale Order':
|
|
24
|
+
{
|
|
25
|
+
const { dataKey } = formField.find((field) => field.name === 'situacaoTributaria');
|
|
26
|
+
combineLatest([
|
|
27
|
+
formGroup
|
|
28
|
+
.get('situacaoTributaria')
|
|
29
|
+
.valueChanges.pipe(startWith(formGroup.get('situacaoTributaria').value), distinctUntilChanged((old, current) => (old === null || old === void 0 ? void 0 : old[dataKey]) === (current === null || current === void 0 ? void 0 : current[dataKey])))
|
|
30
|
+
])
|
|
31
|
+
.pipe(skip(1), map(() => null))
|
|
32
|
+
.subscribe((taxClassification) => {
|
|
33
|
+
formGroup
|
|
34
|
+
.get('classificacaoTributaria')
|
|
35
|
+
.setValue(taxClassification, {
|
|
36
|
+
emitEvent: false
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
break;
|
|
41
|
+
default:
|
|
42
|
+
throw new Error(`Regra TaxClassificationCalculationRule não implementada para o imposto ${taxType}, documento ${document}.`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
break;
|
|
46
|
+
case EnumTipoTributo.CBS_ESTORNO_CREDITO:
|
|
47
|
+
{
|
|
48
|
+
const { formGroup: ibsEstornoCreditoFormGroup, formField: ibsEstornoCreditoFormField } = group.item.find(({ name }) => name === EnumTipoTributo.IBS_ESTORNO_CREDITO);
|
|
49
|
+
const { dataKey: classificacaoTributariaDataKey } = ibsEstornoCreditoFormField.find(({ name }) => name === 'classificacaoTributaria');
|
|
50
|
+
const { dataKey: situacaoTributariaDataKey } = formField.find((field) => field.name === 'situacaoTributaria');
|
|
51
|
+
merge(ibsEstornoCreditoFormGroup
|
|
52
|
+
.get('classificacaoTributaria')
|
|
53
|
+
.valueChanges.pipe(distinctUntilChanged((old, current) => (old === null || old === void 0 ? void 0 : old[classificacaoTributariaDataKey]) === (current === null || current === void 0 ? void 0 : current[classificacaoTributariaDataKey]))), formGroup.get('situacaoTributaria').valueChanges.pipe(distinctUntilChanged((old, current) => (old === null || old === void 0 ? void 0 : old[situacaoTributariaDataKey]) === (current === null || current === void 0 ? void 0 : current[situacaoTributariaDataKey])), map(() => null)))
|
|
54
|
+
.pipe(filter((taxClassification) => {
|
|
55
|
+
var _a;
|
|
56
|
+
return (taxClassification === null || taxClassification === void 0 ? void 0 : taxClassification.id) !== ((_a = formGroup.get('classificacaoTributaria')
|
|
57
|
+
.value) === null || _a === void 0 ? void 0 : _a.id);
|
|
58
|
+
}))
|
|
59
|
+
.subscribe((taxClassification) => {
|
|
60
|
+
formGroup
|
|
61
|
+
.get('classificacaoTributaria')
|
|
62
|
+
.setValue(taxClassification);
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
break;
|
|
66
|
+
case EnumTipoTributo.IBS_ESTORNO_CREDITO:
|
|
67
|
+
{
|
|
68
|
+
const { formGroup: cbsEstornoCreditoFormGroup, formField: cbsEstornoCreditoFormField } = group.item.find(({ name }) => name === EnumTipoTributo.CBS_ESTORNO_CREDITO);
|
|
69
|
+
const { dataKey: classificacaoTributariaDataKey } = cbsEstornoCreditoFormField.find(({ name }) => name === 'classificacaoTributaria');
|
|
70
|
+
const { dataKey: situacaoTributariaDataKey } = formField.find((field) => field.name === 'situacaoTributaria');
|
|
71
|
+
merge(cbsEstornoCreditoFormGroup
|
|
72
|
+
.get('classificacaoTributaria')
|
|
73
|
+
.valueChanges.pipe(distinctUntilChanged((old, current) => (old === null || old === void 0 ? void 0 : old[classificacaoTributariaDataKey]) === (current === null || current === void 0 ? void 0 : current[classificacaoTributariaDataKey]))), formGroup.get('situacaoTributaria').valueChanges.pipe(distinctUntilChanged((old, current) => (old === null || old === void 0 ? void 0 : old[situacaoTributariaDataKey]) === (current === null || current === void 0 ? void 0 : current[situacaoTributariaDataKey])), map(() => null)))
|
|
74
|
+
.pipe(filter((taxClassification) => {
|
|
75
|
+
var _a;
|
|
76
|
+
return (taxClassification === null || taxClassification === void 0 ? void 0 : taxClassification.id) !== ((_a = formGroup.get('classificacaoTributaria')
|
|
77
|
+
.value) === null || _a === void 0 ? void 0 : _a.id);
|
|
78
|
+
}))
|
|
79
|
+
.subscribe((taxClassification) => {
|
|
80
|
+
formGroup
|
|
81
|
+
.get('classificacaoTributaria')
|
|
82
|
+
.setValue(taxClassification);
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
break;
|
|
86
|
+
case EnumTipoTributo.CBS_AJUSTE:
|
|
87
|
+
{
|
|
88
|
+
const { formGroup: ibsAjusteFormGroup, formField: ibsAjusteFormField } = group.item.find(({ name }) => name === EnumTipoTributo.IBS_AJUSTE);
|
|
89
|
+
const { dataKey } = ibsAjusteFormField.find(({ name }) => name === 'classificacaoTributaria');
|
|
90
|
+
combineLatest([
|
|
91
|
+
ibsAjusteFormGroup
|
|
92
|
+
.get('classificacaoTributaria')
|
|
93
|
+
.valueChanges.pipe(startWith(ibsAjusteFormGroup.get('classificacaoTributaria').value), distinctUntilChanged((old, current) => (old === null || old === void 0 ? void 0 : old[dataKey]) === (current === null || current === void 0 ? void 0 : current[dataKey])))
|
|
94
|
+
])
|
|
95
|
+
.pipe(skip(1), map(([taxClassification]) => [taxClassification]))
|
|
96
|
+
.subscribe(([taxClassification]) => {
|
|
97
|
+
formGroup
|
|
98
|
+
.get('classificacaoTributaria')
|
|
99
|
+
.setValue(taxClassification);
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
break;
|
|
103
|
+
case EnumTipoTributo.IBS_AJUSTE:
|
|
104
|
+
{
|
|
105
|
+
const { formGroup: cbsAjusteFormGroup, formField: cbsAjusteFormField } = group.item.find(({ name }) => name === EnumTipoTributo.CBS_AJUSTE);
|
|
106
|
+
const { dataKey } = cbsAjusteFormField.find(({ name }) => name === 'classificacaoTributaria');
|
|
107
|
+
combineLatest([
|
|
108
|
+
cbsAjusteFormGroup
|
|
109
|
+
.get('classificacaoTributaria')
|
|
110
|
+
.valueChanges.pipe(startWith(cbsAjusteFormGroup.get('classificacaoTributaria').value), distinctUntilChanged((old, current) => (old === null || old === void 0 ? void 0 : old[dataKey]) === (current === null || current === void 0 ? void 0 : current[dataKey])))
|
|
111
|
+
])
|
|
112
|
+
.pipe(skip(1), map(([taxClassification]) => [taxClassification]))
|
|
113
|
+
.subscribe(([taxClassification]) => {
|
|
114
|
+
formGroup
|
|
115
|
+
.get('classificacaoTributaria')
|
|
116
|
+
.setValue(taxClassification);
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
break;
|
|
120
|
+
case EnumTipoTributo.CBS_TRANSFERENCIA_CREDITO:
|
|
121
|
+
{
|
|
122
|
+
const { formGroup: ibsTransferenciaCreditoFormGroup, formField: ibsTransferenciaCreditoFormField } = group.item.find(({ name }) => name === EnumTipoTributo.IBS_TRANSFERENCIA_CREDITO);
|
|
123
|
+
const { dataKey: classificacaoTributariaDataKey } = ibsTransferenciaCreditoFormField.find(({ name }) => name === 'classificacaoTributaria');
|
|
124
|
+
const { dataKey: situacaoTributariaDataKey } = formField.find((field) => field.name === 'situacaoTributaria');
|
|
125
|
+
merge(ibsTransferenciaCreditoFormGroup
|
|
126
|
+
.get('classificacaoTributaria')
|
|
127
|
+
.valueChanges.pipe(distinctUntilChanged((old, current) => (old === null || old === void 0 ? void 0 : old[classificacaoTributariaDataKey]) === (current === null || current === void 0 ? void 0 : current[classificacaoTributariaDataKey]))), formGroup.get('situacaoTributaria').valueChanges.pipe(distinctUntilChanged((old, current) => (old === null || old === void 0 ? void 0 : old[situacaoTributariaDataKey]) === (current === null || current === void 0 ? void 0 : current[situacaoTributariaDataKey])), map(() => null)))
|
|
128
|
+
.pipe(filter((taxClassification) => {
|
|
129
|
+
var _a;
|
|
130
|
+
return (taxClassification === null || taxClassification === void 0 ? void 0 : taxClassification.id) !== ((_a = formGroup.get('classificacaoTributaria')
|
|
131
|
+
.value) === null || _a === void 0 ? void 0 : _a.id);
|
|
132
|
+
}))
|
|
133
|
+
.subscribe((taxClassification) => {
|
|
134
|
+
formGroup
|
|
135
|
+
.get('classificacaoTributaria')
|
|
136
|
+
.setValue(taxClassification);
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
break;
|
|
140
|
+
case EnumTipoTributo.IBS_TRANSFERENCIA_CREDITO:
|
|
141
|
+
{
|
|
142
|
+
const { formGroup: cbsTransferenciaCreditoFormGroup, formField: cbsTransferenciaCreditoFormField } = group.item.find(({ name }) => name === EnumTipoTributo.CBS_TRANSFERENCIA_CREDITO);
|
|
143
|
+
const { dataKey: classificacaoTributariaDataKey } = cbsTransferenciaCreditoFormField.find(({ name }) => name === 'classificacaoTributaria');
|
|
144
|
+
const { dataKey: situacaoTributariaDataKey } = formField.find((field) => field.name === 'situacaoTributaria');
|
|
145
|
+
merge(cbsTransferenciaCreditoFormGroup
|
|
146
|
+
.get('classificacaoTributaria')
|
|
147
|
+
.valueChanges.pipe(distinctUntilChanged((old, current) => (old === null || old === void 0 ? void 0 : old[classificacaoTributariaDataKey]) === (current === null || current === void 0 ? void 0 : current[classificacaoTributariaDataKey]))), formGroup.get('situacaoTributaria').valueChanges.pipe(distinctUntilChanged((old, current) => (old === null || old === void 0 ? void 0 : old[situacaoTributariaDataKey]) === (current === null || current === void 0 ? void 0 : current[situacaoTributariaDataKey])), map(() => null)))
|
|
148
|
+
.pipe(filter((taxClassification) => {
|
|
149
|
+
var _a;
|
|
150
|
+
return (taxClassification === null || taxClassification === void 0 ? void 0 : taxClassification.id) !== ((_a = formGroup.get('classificacaoTributaria')
|
|
151
|
+
.value) === null || _a === void 0 ? void 0 : _a.id);
|
|
152
|
+
}))
|
|
153
|
+
.subscribe((taxClassification) => {
|
|
154
|
+
formGroup
|
|
155
|
+
.get('classificacaoTributaria')
|
|
156
|
+
.setValue(taxClassification);
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
break;
|
|
160
|
+
default:
|
|
161
|
+
throw new Error(`Regra TaxClassificationCalculationRule não implementada para o imposto ${taxType}, documento ${document}.`);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
};
|
|
165
|
+
TaxClassificationCalculationRule.ɵprov = i0.ɵɵdefineInjectable({ factory: function TaxClassificationCalculationRule_Factory() { return new TaxClassificationCalculationRule(); }, token: TaxClassificationCalculationRule, providedIn: "root" });
|
|
166
|
+
TaxClassificationCalculationRule = __decorate([
|
|
167
|
+
Injectable({ providedIn: 'root' })
|
|
168
|
+
], TaxClassificationCalculationRule);
|
|
169
|
+
export { TaxClassificationCalculationRule };
|
|
170
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGF4LWNsYXNzaWZpY2F0aW9uLWNhbGN1bGF0aW9uLXJ1bGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yLWdlc3Rhby1lbXByZXNhcmlhbC9lcnB4LWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL3RyaWJ1dG9zL3J1bGVzL2NhbGN1bGF0aW9uL3J1bGVzL3RheC1jbGFzc2lmaWNhdGlvbi1jYWxjdWxhdGlvbi1ydWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVDLE9BQU8sRUFDSCxvQkFBb0IsRUFDcEIsTUFBTSxFQUNOLEdBQUcsRUFDSCxJQUFJLEVBQ0osU0FBUyxFQUNaLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDOztBQUs5RCxJQUFhLGdDQUFnQyxHQUE3QyxNQUFhLGdDQUFnQztJQUN6QyxnQkFBZSxDQUFDO0lBRWhCLEtBQUssQ0FBQyxFQUNGLE9BQU8sRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUNyQixLQUFLLEVBQ0wsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEVBQ25DO1FBQ1YsUUFBUSxPQUFPLEVBQUU7WUFDYixLQUFLLGVBQWUsQ0FBQyxHQUFHLENBQUM7WUFDekIsS0FBSyxlQUFlLENBQUMsc0JBQXNCLENBQUM7WUFDNUMsS0FBSyxlQUFlLENBQUMsWUFBWSxDQUFDO1lBQ2xDLEtBQUssZUFBZSxDQUFDLCtCQUErQixDQUFDO1lBQ3JELEtBQUssZUFBZSxDQUFDLGFBQWEsQ0FBQztZQUNuQyxLQUFLLGVBQWUsQ0FBQyxnQ0FBZ0MsQ0FBQztZQUN0RCxLQUFLLGVBQWUsQ0FBQyxFQUFFO2dCQUNuQjtvQkFDSSxRQUFRLFFB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aW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTG9va3VwRmllbGQgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIG1lcmdlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICAgIGZpbHRlcixcbiAgICBtYXAsXG4gICAgc2tpcCxcbiAgICBzdGFydFdpdGhcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRW51bVRpcG9UcmlidXRvIH0gZnJvbSAnLi4vLi4vLi4vZXJwLXRyaWJ1dG9zLnR5cGVzJztcbmltcG9ydCB7IFJ1bGVQYXlsb2FkIH0gZnJvbSAnLi4vLi4vdHlwZXMvcnVsZS1wYXlsb2FkJztcbmltcG9ydCB7IFRheFJ1bGUgfSBmcm9tICcuLi8uLi90eXBlcy90YXgtcnVsZSc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgVGF4Q2xhc3NpZmljYXRpb25DYWxjdWxhdGlvblJ1bGUgaW1wbGVtZW50cyBUYXhSdWxlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgICBhcHBseSh7XG4gICAgICAgIGNvbnRleHQ6IHsgZG9jdW1lbnQgfSxcbiAgICAgICAgZ3JvdXAsXG4gICAgICAgIGl0ZW06IHsgbmFtZTogdGF4VHlwZSwgZm9ybUdyb3VwLCBmb3JtRmllbGQgfVxuICAgIH06IFJ1bGVQYXlsb2FkKTogdm9pZCB7XG4gICAgICAgIHN3aXRjaCAodGF4VHlwZSkge1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0JTOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0JTX1RSSUJVVEFDQU9fUkVHVUxBUjpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19FU1RBRFVBTDpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19FU1RBRFVBTF9UUklCVVRBQ0FPX1JFR1VMQVI6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUJTX01VTklDSVBBTF9UUklCVVRBQ0FPX1JFR1VMQVI6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUzpcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZG9jdW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ0luY29taW5nIEludm9pY2UnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnT3V0Z29pbmcgSW52b2ljZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdQdXJjaGFzZSBPcmRlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdTYWxlIE9yZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZGF0YUtleSB9ID0gZm9ybUZpZWxkLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmllbGQpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQubmFtZSA9PT0gJ3NpdHVhY2FvVHJpYnV0YXJpYSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBMb29rdXBGaWVsZDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoJ3NpdHVhY2FvVHJpYnV0YXJpYScpIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRXaXRoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwLmdldChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2l0dWFjYW9UcmlidXRhcmlhJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSEudmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob2xkLCBjdXJyZW50KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZD8uW2RhdGFLZXldID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQ/LltkYXRhS2V5XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcCgxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXAoKCkgPT4gbnVsbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHRheENsYXNzaWZpY2F0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoJ2NsYXNzaWZpY2FjYW9UcmlidXRhcmlhJykhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRWYWx1ZSh0YXhDbGFzc2lmaWNhdGlvbiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgUmVncmEgVGF4Q2xhc3NpZmljYXRpb25DYWxjdWxhdGlvblJ1bGUgbsOjbyBpbXBsZW1lbnRhZGEgcGFyYSBvIGltcG9zdG8gJHt0YXhUeXBlfSwgZG9jdW1lbnRvICR7ZG9jdW1lbnR9LmBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0VTVE9STk9fQ1JFRElUTzpcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cDogaWJzRXN0b3Jub0NyZWRpdG9Gb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtRmllbGQ6IGlic0VzdG9ybm9DcmVkaXRvRm9ybUZpZWxkXG4gICAgICAgICAgICAgICAgICAgIH0gPSBncm91cC5pdGVtLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBuYW1lIH0pID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9PT0gRW51bVRpcG9UcmlidXRvLklCU19FU1RPUk5PX0NSRURJVE9cbiAgICAgICAgICAgICAgICAgICAgKSE7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBkYXRhS2V5OiBjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYURhdGFLZXkgfSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBpYnNFc3Rvcm5vQ3JlZGl0b0Zvcm1GaWVsZC5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7IG5hbWUgfSkgPT4gbmFtZSA9PT0gJ2NsYXNzaWZpY2FjYW9UcmlidXRhcmlhJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBMb29rdXBGaWVsZDtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGRhdGFLZXk6IHNpdHVhY2FvVHJpYnV0YXJpYURhdGFLZXkgfSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtRmllbGQuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmllbGQpID0+IGZpZWxkLm5hbWUgPT09ICdzaXR1YWNhb1RyaWJ1dGFyaWEnXG4gICAgICAgICAgICAgICAgICAgICAgICApIGFzIExvb2t1cEZpZWxkO1xuXG4gICAgICAgICAgICAgICAgICAgIG1lcmdlKFxuICAgICAgICAgICAgICAgICAgICAgICAgaWJzRXN0b3Jub0NyZWRpdG9Gb3JtR3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KCdjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYScpIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob2xkLCBjdXJyZW50KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZD8uW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYURhdGFLZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQ/LltcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFEYXRhS2V5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cC5nZXQoJ3NpdHVhY2FvVHJpYnV0YXJpYScpIS52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9sZCwgY3VycmVudCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZD8uW3NpdHVhY2FvVHJpYnV0YXJpYURhdGFLZXldID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudD8uW3NpdHVhY2FvVHJpYnV0YXJpYURhdGFLZXldXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXAoKCkgPT4gbnVsbClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGF4Q2xhc3NpZmljYXRpb24pID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXhDbGFzc2lmaWNhdGlvbj8uaWQgIT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXAuZ2V0KCdjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYScpIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZT8uaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCh0YXhDbGFzc2lmaWNhdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KCdjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYScpIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2V0VmFsdWUodGF4Q2xhc3NpZmljYXRpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUJTX0VTVE9STk9fQ1JFRElUTzpcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cDogY2JzRXN0b3Jub0NyZWRpdG9Gb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtRmllbGQ6IGNic0VzdG9ybm9DcmVkaXRvRm9ybUZpZWxkXG4gICAgICAgICAgICAgICAgICAgIH0gPSBncm91cC5pdGVtLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBuYW1lIH0pID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9PT0gRW51bVRpcG9UcmlidXRvLkNCU19FU1RPUk5PX0NSRURJVE9cbiAgICAgICAgICAgICAgICAgICAgKSE7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBkYXRhS2V5OiBjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYURhdGFLZXkgfSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBjYnNFc3Rvcm5vQ3JlZGl0b0Zvcm1GaWVsZC5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7IG5hbWUgfSkgPT4gbmFtZSA9PT0gJ2NsYXNzaWZpY2FjYW9UcmlidXRhcmlhJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBMb29rdXBGaWVsZDtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGRhdGFLZXk6IHNpdHVhY2FvVHJpYnV0YXJpYURhdGFLZXkgfSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtRmllbGQuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmllbGQpID0+IGZpZWxkLm5hbWUgPT09ICdzaXR1YWNhb1RyaWJ1dGFyaWEnXG4gICAgICAgICAgICAgICAgICAgICAgICApIGFzIExvb2t1cEZpZWxkO1xuXG4gICAgICAgICAgICAgICAgICAgIG1lcmdlKFxuICAgICAgICAgICAgICAgICAgICAgICAgY2JzRXN0b3Jub0NyZWRpdG9Gb3JtR3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KCdjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYScpIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob2xkLCBjdXJyZW50KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZD8uW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYURhdGFLZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQ/LltcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFEYXRhS2V5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cC5nZXQoJ3NpdHVhY2FvVHJpYnV0YXJpYScpIS52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9sZCwgY3VycmVudCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZD8uW3NpdHVhY2FvVHJpYnV0YXJpYURhdGFLZXldID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudD8uW3NpdHVhY2FvVHJpYnV0YXJpYURhdGFLZXldXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXAoKCkgPT4gbnVsbClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGF4Q2xhc3NpZmljYXRpb24pID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXhDbGFzc2lmaWNhdGlvbj8uaWQgIT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXAuZ2V0KCdjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYScpIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZT8uaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCh0YXhDbGFzc2lmaWNhdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KCdjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYScpIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2V0VmFsdWUodGF4Q2xhc3NpZmljYXRpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0FKVVNURTpcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cDogaWJzQWp1c3RlRm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUZpZWxkOiBpYnNBanVzdGVGb3JtRmllbGRcbiAgICAgICAgICAgICAgICAgICAgfSA9IGdyb3VwLml0ZW0uZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICh7IG5hbWUgfSkgPT4gbmFtZSA9PT0gRW51bVRpcG9UcmlidXRvLklCU19BSlVTVEVcbiAgICAgICAgICAgICAgICAgICAgKSE7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBkYXRhS2V5IH0gPSBpYnNBanVzdGVGb3JtRmllbGQuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICh7IG5hbWUgfSkgPT4gbmFtZSA9PT0gJ2NsYXNzaWZpY2FjYW9UcmlidXRhcmlhJ1xuICAgICAgICAgICAgICAgICAgICApIGFzIExvb2t1cEZpZWxkO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgICAgICAgICAgICAgICAgaWJzQWp1c3RlRm9ybUdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldCgnY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEnKSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0V2l0aChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlic0FqdXN0ZUZvcm1Hcm91cC5nZXQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NsYXNzaWZpY2FjYW9UcmlidXRhcmlhJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSEudmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob2xkLCBjdXJyZW50KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZD8uW2RhdGFLZXldID09PSBjdXJyZW50Py5bZGF0YUtleV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNraXAoMSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3RheENsYXNzaWZpY2F0aW9uXSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0YXhDbGFzc2lmaWNhdGlvbl0gYXMgY29uc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChbdGF4Q2xhc3NpZmljYXRpb25dKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoJ2NsYXNzaWZpY2FjYW9UcmlidXRhcmlhJykhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRWYWx1ZSh0YXhDbGFzc2lmaWNhdGlvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfQUpVU1RFOlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwOiBjYnNBanVzdGVGb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtRmllbGQ6IGNic0FqdXN0ZUZvcm1GaWVsZFxuICAgICAgICAgICAgICAgICAgICB9ID0gZ3JvdXAuaXRlbS5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgKHsgbmFtZSB9KSA9PiBuYW1lID09PSBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0FKVVNURVxuICAgICAgICAgICAgICAgICAgICApITtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGRhdGFLZXkgfSA9IGNic0FqdXN0ZUZvcm1GaWVsZC5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgKHsgbmFtZSB9KSA9PiBuYW1lID09PSAnY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEnXG4gICAgICAgICAgICAgICAgICAgICkgYXMgTG9va3VwRmllbGQ7XG5cbiAgICAgICAgICAgICAgICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgICAgICAgICAgICAgICBjYnNBanVzdGVGb3JtR3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KCdjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYScpIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRXaXRoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2JzQWp1c3RlRm9ybUdyb3VwLmdldChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIS52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbGQsIGN1cnJlbnQpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkPy5bZGF0YUtleV0gPT09IGN1cnJlbnQ/LltkYXRhS2V5XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcCgxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbdGF4Q2xhc3NpZmljYXRpb25dKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RheENsYXNzaWZpY2F0aW9uXSBhcyBjb25zdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKFt0YXhDbGFzc2lmaWNhdGlvbl0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldCgnY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEnKSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNldFZhbHVlKHRheENsYXNzaWZpY2F0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNCU19UUkFOU0ZFUkVOQ0lBX0NSRURJVE86XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXA6IGlic1RyYW5zZmVyZW5jaWFDcmVkaXRvRm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUZpZWxkOiBpYnNUcmFuc2ZlcmVuY2lhQ3JlZGl0b0Zvcm1GaWVsZFxuICAgICAgICAgICAgICAgICAgICB9ID0gZ3JvdXAuaXRlbS5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgKHsgbmFtZSB9KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPT09IEVudW1UaXBvVHJpYnV0by5JQlNfVFJBTlNGRVJFTkNJQV9DUkVESVRPXG4gICAgICAgICAgICAgICAgICAgICkhO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZGF0YUtleTogY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFEYXRhS2V5IH0gPVxuICAgICAgICAgICAgICAgICAgICAgICAgaWJzVHJhbnNmZXJlbmNpYUNyZWRpdG9Gb3JtRmllbGQuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeyBuYW1lIH0pID0+IG5hbWUgPT09ICdjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYSdcbiAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgTG9va3VwRmllbGQ7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBkYXRhS2V5OiBzaXR1YWNhb1RyaWJ1dGFyaWFEYXRhS2V5IH0gPVxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUZpZWxkLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpZWxkKSA9PiBmaWVsZC5uYW1lID09PSAnc2l0dWFjYW9UcmlidXRhcmlhJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBMb29rdXBGaWVsZDtcblxuICAgICAgICAgICAgICAgICAgICBtZXJnZShcbiAgICAgICAgICAgICAgICAgICAgICAgIGlic1RyYW5zZmVyZW5jaWFDcmVkaXRvRm9ybUdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldCgnY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEnKSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9sZCwgY3VycmVudCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGQ/LltcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFEYXRhS2V5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50Py5bXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzaWZpY2FjYW9UcmlidXRhcmlhRGF0YUtleVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXAuZ2V0KCdzaXR1YWNhb1RyaWJ1dGFyaWEnKSEudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbGQsIGN1cnJlbnQpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGQ/LltzaXR1YWNhb1RyaWJ1dGFyaWFEYXRhS2V5XSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQ/LltzaXR1YWNhb1RyaWJ1dGFyaWFEYXRhS2V5XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwKCgpID0+IG51bGwpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRheENsYXNzaWZpY2F0aW9uKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF4Q2xhc3NpZmljYXRpb24/LmlkICE9PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwLmdldCgnY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEnKSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU/LmlkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgodGF4Q2xhc3NpZmljYXRpb24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldCgnY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEnKSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNldFZhbHVlKHRheENsYXNzaWZpY2F0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19UUkFOU0ZFUkVOQ0lBX0NSRURJVE86XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXA6IGNic1RyYW5zZmVyZW5jaWFDcmVkaXRvRm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUZpZWxkOiBjYnNUcmFuc2ZlcmVuY2lhQ3JlZGl0b0Zvcm1GaWVsZFxuICAgICAgICAgICAgICAgICAgICB9ID0gZ3JvdXAuaXRlbS5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgKHsgbmFtZSB9KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPT09IEVudW1UaXBvVHJpYnV0by5DQlNfVFJBTlNGRVJFTkNJQV9DUkVESVRPXG4gICAgICAgICAgICAgICAgICAgICkhO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZGF0YUtleTogY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFEYXRhS2V5IH0gPVxuICAgICAgICAgICAgICAgICAgICAgICAgY2JzVHJhbnNmZXJlbmNpYUNyZWRpdG9Gb3JtRmllbGQuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeyBuYW1lIH0pID0+IG5hbWUgPT09ICdjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYSdcbiAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgTG9va3VwRmllbGQ7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBkYXRhS2V5OiBzaXR1YWNhb1RyaWJ1dGFyaWFEYXRhS2V5IH0gPVxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUZpZWxkLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpZWxkKSA9PiBmaWVsZC5uYW1lID09PSAnc2l0dWFjYW9UcmlidXRhcmlhJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBMb29rdXBGaWVsZDtcblxuICAgICAgICAgICAgICAgICAgICBtZXJnZShcbiAgICAgICAgICAgICAgICAgICAgICAgIGNic1RyYW5zZmVyZW5jaWFDcmVkaXRvRm9ybUdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldCgnY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEnKSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9sZCwgY3VycmVudCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGQ/LltcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFEYXRhS2V5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50Py5bXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzaWZpY2FjYW9UcmlidXRhcmlhRGF0YUtleVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXAuZ2V0KCdzaXR1YWNhb1RyaWJ1dGFyaWEnKSEudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbGQsIGN1cnJlbnQpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGQ/LltzaXR1YWNhb1RyaWJ1dGFyaWFEYXRhS2V5XSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQ/LltzaXR1YWNhb1RyaWJ1dGFyaWFEYXRhS2V5XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwKCgpID0+IG51bGwpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRheENsYXNzaWZpY2F0aW9uKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF4Q2xhc3NpZmljYXRpb24/LmlkICE9PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwLmdldCgnY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEnKSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU/LmlkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgodGF4Q2xhc3NpZmljYXRpb24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldCgnY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEnKSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNldFZhbHVlKHRheENsYXNzaWZpY2F0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgICAgICBgUmVncmEgVGF4Q2xhc3NpZmljYXRpb25DYWxjdWxhdGlvblJ1bGUgbsOjbyBpbXBsZW1lbnRhZGEgcGFyYSBvIGltcG9zdG8gJHt0YXhUeXBlfSwgZG9jdW1lbnRvICR7ZG9jdW1lbnR9LmBcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { Injectable } from '@angular/core';
|
|
3
|
+
import BigNumber from 'bignumber.js';
|
|
4
|
+
import { combineLatest } from 'rxjs';
|
|
5
|
+
import { distinctUntilChanged, filter, map, skip, startWith } from 'rxjs/operators';
|
|
6
|
+
import { EnumTipoTributo } from '../../../erp-tributos.types';
|
|
7
|
+
import { getBaseTaxItemFromGroup } from '../../../tax-reform-utilities';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
let TaxRateCalculationRule = class TaxRateCalculationRule {
|
|
10
|
+
apply({ context: { document }, group, item: { name: taxType, formGroup } }) {
|
|
11
|
+
switch (taxType) {
|
|
12
|
+
case EnumTipoTributo.CBS_A_APROPRIAR:
|
|
13
|
+
case EnumTipoTributo.IBS_ESTADUAL_A_APROPRIAR:
|
|
14
|
+
case EnumTipoTributo.IBS_MUNICIPAL_A_APROPRIAR:
|
|
15
|
+
{
|
|
16
|
+
switch (document) {
|
|
17
|
+
case 'Incoming Invoice':
|
|
18
|
+
case 'Purchase Order':
|
|
19
|
+
{
|
|
20
|
+
const { formGroup: baseTaxFormGroup } = getBaseTaxItemFromGroup({ group });
|
|
21
|
+
combineLatest([
|
|
22
|
+
baseTaxFormGroup
|
|
23
|
+
.get('aliquotaEfetiva')
|
|
24
|
+
.valueChanges.pipe(startWith(baseTaxFormGroup.get('aliquotaEfetiva').value), distinctUntilChanged()),
|
|
25
|
+
baseTaxFormGroup
|
|
26
|
+
.get('aliquota')
|
|
27
|
+
.valueChanges.pipe(startWith(baseTaxFormGroup.get('aliquota').value), distinctUntilChanged())
|
|
28
|
+
])
|
|
29
|
+
.pipe(skip(1), map(([effectiveTaxRate, taxRate]) => [
|
|
30
|
+
new BigNumber(effectiveTaxRate),
|
|
31
|
+
new BigNumber(taxRate)
|
|
32
|
+
]), map(([effectiveTaxRate, taxRate]) => effectiveTaxRate.isNaN()
|
|
33
|
+
? taxRate
|
|
34
|
+
: effectiveTaxRate), filter((taxRate) => taxRate !==
|
|
35
|
+
formGroup.get('aliquota').value))
|
|
36
|
+
.subscribe((taxRate) => {
|
|
37
|
+
formGroup
|
|
38
|
+
.get('aliquota')
|
|
39
|
+
.setValue(taxRate);
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
break;
|
|
43
|
+
default:
|
|
44
|
+
throw new Error(`Regra TaxRateCalculationRule não implementada para o imposto ${taxType}, documento ${document}.`);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
break;
|
|
48
|
+
case EnumTipoTributo.CBS_GOVERNAMENTAL:
|
|
49
|
+
case EnumTipoTributo.IBS_ESTADUAL_GOVERNAMENTAL:
|
|
50
|
+
case EnumTipoTributo.IBS_MUNICIPAL_GOVERNAMENTAL:
|
|
51
|
+
{
|
|
52
|
+
switch (document) {
|
|
53
|
+
case 'Incoming Invoice':
|
|
54
|
+
case 'Outgoing Invoice':
|
|
55
|
+
case 'Purchase Order':
|
|
56
|
+
case 'Sale Order':
|
|
57
|
+
{
|
|
58
|
+
const { formGroup: baseTaxFormGroup } = getBaseTaxItemFromGroup({ group });
|
|
59
|
+
combineLatest([
|
|
60
|
+
baseTaxFormGroup
|
|
61
|
+
.get('reducaoAliquotaGovernamental')
|
|
62
|
+
.valueChanges.pipe(startWith(baseTaxFormGroup.get('reducaoAliquotaGovernamental').value), distinctUntilChanged()),
|
|
63
|
+
baseTaxFormGroup
|
|
64
|
+
.get('aliquotaEfetiva')
|
|
65
|
+
.valueChanges.pipe(startWith(baseTaxFormGroup.get('aliquotaEfetiva').value), distinctUntilChanged())
|
|
66
|
+
])
|
|
67
|
+
.pipe(skip(1), map(([governamentalTaxRateReduction, effectiveTaxRate]) => [
|
|
68
|
+
new BigNumber(governamentalTaxRateReduction),
|
|
69
|
+
new BigNumber(effectiveTaxRate)
|
|
70
|
+
]), map(([governamentalTaxRateReduction, effectiveTaxRate]) => {
|
|
71
|
+
if (governamentalTaxRateReduction.isNaN())
|
|
72
|
+
return null;
|
|
73
|
+
return effectiveTaxRate
|
|
74
|
+
.decimalPlaces(4)
|
|
75
|
+
.toNumber();
|
|
76
|
+
}), filter((taxRate) => taxRate !==
|
|
77
|
+
formGroup.get('aliquota').value))
|
|
78
|
+
.subscribe((taxRate) => {
|
|
79
|
+
formGroup
|
|
80
|
+
.get('aliquota')
|
|
81
|
+
.setValue(taxRate);
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
break;
|
|
85
|
+
default:
|
|
86
|
+
throw new Error(`Regra TaxRateCalculationRule não implementada para o imposto ${taxType}, documento ${document}.`);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
break;
|
|
90
|
+
default:
|
|
91
|
+
throw new Error(`Regra TaxRateCalculationRule não implementada para o imposto ${taxType}, documento ${document}.`);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
TaxRateCalculationRule.ɵprov = i0.ɵɵdefineInjectable({ factory: function TaxRateCalculationRule_Factory() { return new TaxRateCalculationRule(); }, token: TaxRateCalculationRule, providedIn: "root" });
|
|
96
|
+
TaxRateCalculationRule = __decorate([
|
|
97
|
+
Injectable({ providedIn: 'root' })
|
|
98
|
+
], TaxRateCalculationRule);
|
|
99
|
+
export { TaxRateCalculationRule };
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGF4LXJhdGUtY2FsY3VsYXRpb24tcnVsZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3ItZ2VzdGFvLWVtcHJlc2FyaWFsL2VycHgtY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvdHJpYnV0b3MvcnVsZXMvY2FsY3VsYXRpb24vcnVsZXMvdGF4LXJhdGUtY2FsY3VsYXRpb24tcnVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLFNBQVMsTUFBTSxjQUFjLENBQUM7QUFDckMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyQyxPQUFPLEVBQ0gsb0JBQW9CLEVBQ3BCLE1BQU0sRUFDTixHQUFHLEVBQ0gsSUFBSSxFQUNKLFNBQVMsRUFDWixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBb0IsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDaEYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBS3hFLElBQWEsc0JBQXNCLEdBQW5DLE1BQWEsc0JBQXNCO0lBQy9CLEtBQUssQ0FBQyxFQUNGLE9BQU8sRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUNyQixLQUFLLEVBQ0wsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsRUFDeEI7UUFDVixRQUFRLE9BQU8sRUFBRTtZQUNiLEtBQUssZUFBZSxDQUFDLGVBQWUsQ0FBQztZQUNyQyxLQUFLLGVBQWUsQ0FBQyx3QkFBd0IsQ0FBQztZQUM5QyxLQUFLLGVBQWUsQ0FBQyx5QkFBeUI7Z0JBQzFDO29CQUNJLFFBQVEsUUFBUSxFQUFFO3dCQUNkLEtBQUssa0JBQWtCLENBQUM7d0JBQ3hCLEtBQUssZ0JBQWdCOzRCQUNqQjtnQ0FDSSxNQUFNLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLEdBQ2pDLHVCQUF1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QWdCLENBQ25CO2lDQUNLLENBQ2pCLEVBQ0QsR0FBRyxDQUNDLENBQUMsQ0FDRyw2QkFBNkIsRUFDN0IsZ0JBQWdCLENBQ25CLEVBQUUsRUFBRTtvQ0FDRCxJQUNJLDZCQUE2QixDQUFDLEtBQUssRUFBRTt3Q0FFckMsT0FBTyxJQUFJLENBQUM7b0NBRWhCLE9BQU8sZ0JBQWdCO3lDQUNsQixhQUFhLENBQUMsQ0FBQyxDQUFDO3lDQUNoQixRQUFRLEVBQUUsQ0FBQztnQ0FDcEIsQ0FBQyxDQUNKLEVBQ0QsTUFBTSxDQUNGLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FDUixPQUFPO29DQUNQLFNBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFFLENBQUMsS0FBSyxDQUN2QyxDQUNKO3FDQUNBLFNBQVMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO29DQUNuQixTQUFTO3lDQUNKLEdBQUcsQ0FBQyxVQUFVLENBQUU7eUNBQ2hCLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQ0FDM0IsQ0FBQyxDQUFDLENBQUM7NkJBQ1Y7NEJBQ0QsTUFBTTt3QkFDVjs0QkFDSSxNQUFNLElBQUksS0FBSyxDQUNYLGdFQUFnRSxPQUFPLGVBQWUsUUFBUSxHQUFHLENBQ3BHLENBQUM7cUJBQ1Q7aUJBQ0o7Z0JBQ0QsTUFBTTtZQUNWO2dCQUNJLE1BQU0sSUFBSSxLQUFLLENBQ1gsZ0VBQWdFLE9BQU8sZUFBZSxRQUFRLEdBQUcsQ0FDcEcsQ0FBQztTQUNUO0lBQ0wsQ0FBQztDQUNKLENBQUE7O0FBeEtZLHNCQUFzQjtJQURsQyxVQUFVLENBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUM7R0FDdEIsc0JBQXNCLENBd0tsQztTQXhLWSxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICAgIGZpbHRlcixcbiAgICBtYXAsXG4gICAgc2tpcCxcbiAgICBzdGFydFdpdGhcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRW51bVRpcG9DYWxjdWxvSW1wb3N0byB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvcmUvZW51bXMvZW51bS10aXBvLWNhbGN1bG8taW1wb3N0byc7XG5pbXBvcnQgeyBFbnVtQ2FtcG9UcmlidXRvLCBFbnVtVGlwb1RyaWJ1dG8gfSBmcm9tICcuLi8uLi8uLi9lcnAtdHJpYnV0b3MudHlwZXMnO1xuaW1wb3J0IHsgZ2V0QmFzZVRheEl0ZW1Gcm9tR3JvdXAgfSBmcm9tICcuLi8uLi8uLi90YXgtcmVmb3JtLXV0aWxpdGllcyc7XG5pbXBvcnQgeyBSdWxlUGF5bG9hZCB9IGZyb20gJy4uLy4uL3R5cGVzL3J1bGUtcGF5bG9hZCc7XG5pbXBvcnQgeyBUYXhSdWxlIH0gZnJvbSAnLi4vLi4vdHlwZXMvdGF4LXJ1bGUnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFRheFJhdGVDYWxjdWxhdGlvblJ1bGUgaW1wbGVtZW50cyBUYXhSdWxlIHtcbiAgICBhcHBseSh7XG4gICAgICAgIGNvbnRleHQ6IHsgZG9jdW1lbnQgfSxcbiAgICAgICAgZ3JvdXAsXG4gICAgICAgIGl0ZW06IHsgbmFtZTogdGF4VHlwZSwgZm9ybUdyb3VwIH1cbiAgICB9OiBSdWxlUGF5bG9hZCk6IHZvaWQge1xuICAgICAgICBzd2l0Y2ggKHRheFR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNCU19BX0FQUk9QUklBUjpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19FU1RBRFVBTF9BX0FQUk9QUklBUjpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19NVU5JQ0lQQUxfQV9BUFJPUFJJQVI6XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGRvY3VtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdJbmNvbWluZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ1B1cmNoYXNlIE9yZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZm9ybUdyb3VwOiBiYXNlVGF4Rm9ybUdyb3VwIH0gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0QmFzZVRheEl0ZW1Gcm9tR3JvdXAoeyBncm91cCB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VUYXhGb3JtR3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KCdhbGlxdW90YUVmZXRpdmEnKSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0V2l0aChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VUYXhGb3JtR3JvdXAuZ2V0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhbGlxdW90YUVmZXRpdmEnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIS52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VUYXhGb3JtR3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KCdhbGlxdW90YScpIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRXaXRoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZVRheEZvcm1Hcm91cC5nZXQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FsaXF1b3RhJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSEudmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNraXAoMSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW2VmZmVjdGl2ZVRheFJhdGUsIHRheFJhdGVdKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBCaWdOdW1iZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVmZmVjdGl2ZVRheFJhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBCaWdOdW1iZXIodGF4UmF0ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0gYXMgY29uc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcCgoW2VmZmVjdGl2ZVRheFJhdGUsIHRheFJhdGVdKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZmZlY3RpdmVUYXhSYXRlLmlzTmFOKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gdGF4UmF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBlZmZlY3RpdmVUYXhSYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0YXhSYXRlKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF4UmF0ZSAhPT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cC5nZXQoJ2FsaXF1b3RhJykhLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgodGF4UmF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KCdhbGlxdW90YScpIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2V0VmFsdWUodGF4UmF0ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYFJlZ3JhIFRheFJhdGVDYWxjdWxhdGlvblJ1bGUgbsOjbyBpbXBsZW1lbnRhZGEgcGFyYSBvIGltcG9zdG8gJHt0YXhUeXBlfSwgZG9jdW1lbnRvICR7ZG9jdW1lbnR9LmBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0dPVkVSTkFNRU5UQUw6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfRVNUQURVQUxfR09WRVJOQU1FTlRBTDpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19NVU5JQ0lQQUxfR09WRVJOQU1FTlRBTDpcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZG9jdW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ0luY29taW5nIEludm9pY2UnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnT3V0Z29pbmcgSW52b2ljZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdQdXJjaGFzZSBPcmRlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdTYWxlIE9yZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZm9ybUdyb3VwOiBiYXNlVGF4Rm9ybUdyb3VwIH0gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0QmFzZVRheEl0ZW1Gcm9tR3JvdXAoeyBncm91cCB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VUYXhGb3JtR3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KCdyZWR1Y2FvQWxpcXVvdGFHb3Zlcm5hbWVudGFsJykhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydFdpdGgoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlVGF4Rm9ybUdyb3VwLmdldChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVkdWNhb0FsaXF1b3RhR292ZXJuYW1lbnRhbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkhLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZVRheEZvcm1Hcm91cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoJ2FsaXF1b3RhRWZldGl2YScpIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRXaXRoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZVRheEZvcm1Hcm91cC5nZXQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FsaXF1b3RhRWZldGl2YSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkhLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2lwKDEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdmVybmFtZW50YWxUYXhSYXRlUmVkdWN0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWZmZWN0aXZlVGF4UmF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBCaWdOdW1iZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdmVybmFtZW50YWxUYXhSYXRlUmVkdWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgQmlnTnVtYmVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZmZlY3RpdmVUYXhSYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSBhcyBjb25zdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ292ZXJuYW1lbnRhbFRheFJhdGVSZWR1Y3Rpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZmZlY3RpdmVUYXhSYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3Zlcm5hbWVudGFsVGF4UmF0ZVJlZHVjdGlvbi5pc05hTigpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlZmZlY3RpdmVUYXhSYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmRlY2ltYWxQbGFjZXMoNClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudG9OdW1iZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGF4UmF0ZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRheFJhdGUgIT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXAuZ2V0KCdhbGlxdW90YScpIS52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHRheFJhdGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldCgnYWxpcXVvdGEnKSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNldFZhbHVlKHRheFJhdGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBSZWdyYSBUYXhSYXRlQ2FsY3VsYXRpb25SdWxlIG7Do28gaW1wbGVtZW50YWRhIHBhcmEgbyBpbXBvc3RvICR7dGF4VHlwZX0sIGRvY3VtZW50byAke2RvY3VtZW50fS5gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgICAgICBgUmVncmEgVGF4UmF0ZUNhbGN1bGF0aW9uUnVsZSBuw6NvIGltcGxlbWVudGFkYSBwYXJhIG8gaW1wb3N0byAke3RheFR5cGV9LCBkb2N1bWVudG8gJHtkb2N1bWVudH0uYFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { Injectable } from '@angular/core';
|
|
3
|
+
import { combineLatest } from 'rxjs';
|
|
4
|
+
import { distinctUntilChanged, map, skip, startWith } from 'rxjs/operators';
|
|
5
|
+
import { EnumTipoTributo } from '../../../erp-tributos.types';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
let TaxSituationCalculationRule = class TaxSituationCalculationRule {
|
|
8
|
+
apply({ context: { document }, group, item: { name: taxType, formGroup } }) {
|
|
9
|
+
switch (taxType) {
|
|
10
|
+
case EnumTipoTributo.CBS_ESTORNO_CREDITO:
|
|
11
|
+
{
|
|
12
|
+
const { formGroup: ibsEstornoCreditoFormGroup, formField: ibsEstornoCreditoFormField } = group.item.find(({ name }) => name === EnumTipoTributo.IBS_ESTORNO_CREDITO);
|
|
13
|
+
const { dataKey } = ibsEstornoCreditoFormField.find(({ name }) => name === 'situacaoTributaria');
|
|
14
|
+
combineLatest([
|
|
15
|
+
ibsEstornoCreditoFormGroup
|
|
16
|
+
.get('situacaoTributaria')
|
|
17
|
+
.valueChanges.pipe(startWith(ibsEstornoCreditoFormGroup.get('situacaoTributaria').value), distinctUntilChanged((old, current) => (old === null || old === void 0 ? void 0 : old[dataKey]) === (current === null || current === void 0 ? void 0 : current[dataKey])))
|
|
18
|
+
])
|
|
19
|
+
.pipe(skip(1), map(([taxSituation]) => [taxSituation]))
|
|
20
|
+
.subscribe(([taxSituation]) => {
|
|
21
|
+
formGroup
|
|
22
|
+
.get('situacaoTributaria')
|
|
23
|
+
.setValue(taxSituation);
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
break;
|
|
27
|
+
case EnumTipoTributo.IBS_ESTORNO_CREDITO:
|
|
28
|
+
{
|
|
29
|
+
const { formGroup: cbsEstornoCreditoFormGroup, formField: cbsEstornoCreditoFormField } = group.item.find(({ name }) => name === EnumTipoTributo.CBS_ESTORNO_CREDITO);
|
|
30
|
+
const { dataKey } = cbsEstornoCreditoFormField.find(({ name }) => name === 'situacaoTributaria');
|
|
31
|
+
combineLatest([
|
|
32
|
+
cbsEstornoCreditoFormGroup
|
|
33
|
+
.get('situacaoTributaria')
|
|
34
|
+
.valueChanges.pipe(startWith(cbsEstornoCreditoFormGroup.get('situacaoTributaria').value), distinctUntilChanged((old, current) => (old === null || old === void 0 ? void 0 : old[dataKey]) === (current === null || current === void 0 ? void 0 : current[dataKey])))
|
|
35
|
+
])
|
|
36
|
+
.pipe(skip(1), map(([taxSituation]) => [taxSituation]))
|
|
37
|
+
.subscribe(([taxSituation]) => {
|
|
38
|
+
formGroup
|
|
39
|
+
.get('situacaoTributaria')
|
|
40
|
+
.setValue(taxSituation);
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
break;
|
|
44
|
+
case EnumTipoTributo.CBS_AJUSTE:
|
|
45
|
+
{
|
|
46
|
+
const { formGroup: ibsAjusteFormGroup, formField: ibsAjusteFormField } = group.item.find(({ name }) => name === EnumTipoTributo.IBS_AJUSTE);
|
|
47
|
+
const { dataKey } = ibsAjusteFormField.find(({ name }) => name === 'situacaoTributaria');
|
|
48
|
+
combineLatest([
|
|
49
|
+
ibsAjusteFormGroup
|
|
50
|
+
.get('situacaoTributaria')
|
|
51
|
+
.valueChanges.pipe(startWith(ibsAjusteFormGroup.get('situacaoTributaria')
|
|
52
|
+
.value), distinctUntilChanged((old, current) => (old === null || old === void 0 ? void 0 : old[dataKey]) === (current === null || current === void 0 ? void 0 : current[dataKey])))
|
|
53
|
+
])
|
|
54
|
+
.pipe(skip(1), map(([taxSituation]) => [taxSituation]))
|
|
55
|
+
.subscribe(([taxSituation]) => {
|
|
56
|
+
formGroup
|
|
57
|
+
.get('situacaoTributaria')
|
|
58
|
+
.setValue(taxSituation);
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
break;
|
|
62
|
+
case EnumTipoTributo.IBS_AJUSTE:
|
|
63
|
+
{
|
|
64
|
+
const { formGroup: cbsAjusteFormGroup, formField: cbsAjusteFormField } = group.item.find(({ name }) => name === EnumTipoTributo.CBS_AJUSTE);
|
|
65
|
+
const { dataKey } = cbsAjusteFormField.find(({ name }) => name === 'situacaoTributaria');
|
|
66
|
+
combineLatest([
|
|
67
|
+
cbsAjusteFormGroup
|
|
68
|
+
.get('situacaoTributaria')
|
|
69
|
+
.valueChanges.pipe(startWith(cbsAjusteFormGroup.get('situacaoTributaria')
|
|
70
|
+
.value), distinctUntilChanged((old, current) => (old === null || old === void 0 ? void 0 : old[dataKey]) === (current === null || current === void 0 ? void 0 : current[dataKey])))
|
|
71
|
+
])
|
|
72
|
+
.pipe(skip(1), map(([taxSituation]) => [taxSituation]))
|
|
73
|
+
.subscribe(([taxSituation]) => {
|
|
74
|
+
formGroup
|
|
75
|
+
.get('situacaoTributaria')
|
|
76
|
+
.setValue(taxSituation);
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
break;
|
|
80
|
+
case EnumTipoTributo.CBS_TRANSFERENCIA_CREDITO:
|
|
81
|
+
{
|
|
82
|
+
const { formGroup: ibsTransferenciaCreditoFormGroup, formField: ibsTransferenciaCreditoFormField } = group.item.find(({ name }) => name === EnumTipoTributo.IBS_TRANSFERENCIA_CREDITO);
|
|
83
|
+
const { dataKey } = ibsTransferenciaCreditoFormField.find(({ name }) => name === 'situacaoTributaria');
|
|
84
|
+
combineLatest([
|
|
85
|
+
ibsTransferenciaCreditoFormGroup
|
|
86
|
+
.get('situacaoTributaria')
|
|
87
|
+
.valueChanges.pipe(startWith(ibsTransferenciaCreditoFormGroup.get('situacaoTributaria').value), distinctUntilChanged((old, current) => (old === null || old === void 0 ? void 0 : old[dataKey]) === (current === null || current === void 0 ? void 0 : current[dataKey])))
|
|
88
|
+
])
|
|
89
|
+
.pipe(skip(1), map(([taxSituation]) => [taxSituation]))
|
|
90
|
+
.subscribe(([taxSituation]) => {
|
|
91
|
+
formGroup
|
|
92
|
+
.get('situacaoTributaria')
|
|
93
|
+
.setValue(taxSituation);
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
break;
|
|
97
|
+
case EnumTipoTributo.IBS_TRANSFERENCIA_CREDITO:
|
|
98
|
+
{
|
|
99
|
+
const { formGroup: cbsTransferenciaCreditoFormGroup, formField: cbsTransferenciaCreditoFormField } = group.item.find(({ name }) => name === EnumTipoTributo.CBS_TRANSFERENCIA_CREDITO);
|
|
100
|
+
const { dataKey } = cbsTransferenciaCreditoFormField.find(({ name }) => name === 'situacaoTributaria');
|
|
101
|
+
combineLatest([
|
|
102
|
+
cbsTransferenciaCreditoFormGroup
|
|
103
|
+
.get('situacaoTributaria')
|
|
104
|
+
.valueChanges.pipe(startWith(cbsTransferenciaCreditoFormGroup.get('situacaoTributaria').value), distinctUntilChanged((old, current) => (old === null || old === void 0 ? void 0 : old[dataKey]) === (current === null || current === void 0 ? void 0 : current[dataKey])))
|
|
105
|
+
])
|
|
106
|
+
.pipe(skip(1), map(([taxSituation]) => [taxSituation]))
|
|
107
|
+
.subscribe(([taxSituation]) => {
|
|
108
|
+
formGroup
|
|
109
|
+
.get('situacaoTributaria')
|
|
110
|
+
.setValue(taxSituation);
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
break;
|
|
114
|
+
default:
|
|
115
|
+
throw new Error(`Regra TaxSituationCalculationRule não implementada para o imposto ${taxType}, documento ${document}.`);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
TaxSituationCalculationRule.ɵprov = i0.ɵɵdefineInjectable({ factory: function TaxSituationCalculationRule_Factory() { return new TaxSituationCalculationRule(); }, token: TaxSituationCalculationRule, providedIn: "root" });
|
|
120
|
+
TaxSituationCalculationRule = __decorate([
|
|
121
|
+
Injectable({ providedIn: 'root' })
|
|
122
|
+
], TaxSituationCalculationRule);
|
|
123
|
+
export { TaxSituationCalculationRule };
|
|
124
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGF4LXNpdHVhdGlvbi1jYWxjdWxhdGlvbi1ydWxlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvci1nZXN0YW8tZW1wcmVzYXJpYWwvZXJweC1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy90cmlidXRvcy9ydWxlcy9jYWxjdWxhdGlvbi9ydWxlcy90YXgtc2l0dWF0aW9uLWNhbGN1bGF0aW9uLXJ1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7O0FBSzlELElBQWEsMkJBQTJCLEdBQXhDLE1BQWEsMkJBQTJCO0lBQ3BDLEtBQUssQ0FBQyxFQUNGLE9BQU8sRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUNyQixLQUFLLEVBQ0wsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsRUFDeEI7UUFDVixRQUFRLE9BQU8sRUFBRTtZQUNiLEtBQUssZUFBZSxDQUFDLG1CQUFtQjtnQkFDcEM7b0JBQ0ksTUFBTSxFQUNGLFNBQVMsRUFBRSwwQkFBMEIsRUFDckMsU0FBUyxFQUFFLDBCQUEwQixFQUN4QyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUNmLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQ1QsSUFBSSxLQUFLLGVBQWUsQ0FBQyxtQkFBbUIsQ0FDbkQsQ0FBQztvQkFFRixNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsMEJBQTBCLENBQUMsSUFBSSxDQUMvQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElB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Q0FDL0IsQ0FBQztvQkFFakIsYUFBYSxDQUFDO3dCQUNWLGdDQUFnQzs2QkFDM0IsR0FBRyxDQUFDLG9CQUFvQixDQUFDOzZCQUN6QixZQUFZLENBQUMsSUFBSSxDQUNkLFNBQVMsQ0FDTCxnQ0FBZ0MsQ0FBQyxHQUFHLENBQ2hDLG9CQUFvQixDQUN2QixDQUFDLEtBQUssQ0FDVixFQUNELG9CQUFvQixDQUNoQixDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUNiLENBQUEsR0FBRyxhQUFILEdBQUcsdUJBQUgsR0FBRyxDQUFHLE9BQU8sUUFBTSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUcsT0FBTyxFQUFDLENBQzVDLENBQ0o7cUJBQ1IsQ0FBQzt5QkFDRyxJQUFJLENBQ0QsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLEdBQUcsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFVLENBQUMsQ0FDbkQ7eUJBQ0EsU0FBUyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFO3dCQUMxQixTQUFTOzZCQUNKLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQzs2QkFDekIsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO29CQUNoQyxDQUFDLENBQUMsQ0FBQztpQkFDVjtnQkFDRCxNQUFNO1lBQ1Y7Z0JBQ0ksTUFBTSxJQUFJLEtBQUssQ0FDWCxxRUFBcUUsT0FBTyxlQUFlLFFBQVEsR0FBRyxDQUN6RyxDQUFDO1NBQ1Q7SUFDTCxDQUFDO0NBQ0osQ0FBQTs7QUF6UFksMkJBQTJCO0lBRHZDLFVBQVUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsQ0FBQztHQUN0QiwyQkFBMkIsQ0F5UHZDO1NBelBZLDJCQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExvb2t1cEZpZWxkIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cyc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBza2lwLCBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBFbnVtVGlwb1RyaWJ1dG8gfSBmcm9tICcuLi8uLi8uLi9lcnAtdHJpYnV0b3MudHlwZXMnO1xuaW1wb3J0IHsgUnVsZVBheWxvYWQgfSBmcm9tICcuLi8uLi90eXBlcy9ydWxlLXBheWxvYWQnO1xuaW1wb3J0IHsgVGF4UnVsZSB9IGZyb20gJy4uLy4uL3R5cGVzL3RheC1ydWxlJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBUYXhTaXR1YXRpb25DYWxjdWxhdGlvblJ1bGUgaW1wbGVtZW50cyBUYXhSdWxlIHtcbiAgICBhcHBseSh7XG4gICAgICAgIGNvbnRleHQ6IHsgZG9jdW1lbnQgfSxcbiAgICAgICAgZ3JvdXAsXG4gICAgICAgIGl0ZW06IHsgbmFtZTogdGF4VHlwZSwgZm9ybUdyb3VwIH1cbiAgICB9OiBSdWxlUGF5bG9hZCk6IHZvaWQge1xuICAgICAgICBzd2l0Y2ggKHRheFR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNCU19FU1RPUk5PX0NSRURJVE86XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXA6IGlic0VzdG9ybm9DcmVkaXRvRm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUZpZWxkOiBpYnNFc3Rvcm5vQ3JlZGl0b0Zvcm1GaWVsZFxuICAgICAgICAgICAgICAgICAgICB9ID0gZ3JvdXAuaXRlbS5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgKHsgbmFtZSB9KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPT09IEVudW1UaXBvVHJpYnV0by5JQlNfRVNUT1JOT19DUkVESVRPXG4gICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBkYXRhS2V5IH0gPSBpYnNFc3Rvcm5vQ3JlZGl0b0Zvcm1GaWVsZC5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgKHsgbmFtZSB9KSA9PiBuYW1lID09PSAnc2l0dWFjYW9UcmlidXRhcmlhJ1xuICAgICAgICAgICAgICAgICAgICApIGFzIExvb2t1cEZpZWxkO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgICAgICAgICAgICAgICAgaWJzRXN0b3Jub0NyZWRpdG9Gb3JtR3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KCdzaXR1YWNhb1RyaWJ1dGFyaWEnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRXaXRoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWJzRXN0b3Jub0NyZWRpdG9Gb3JtR3JvdXAuZ2V0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaXR1YWNhb1RyaWJ1dGFyaWEnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9sZCwgY3VycmVudCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGQ/LltkYXRhS2V5XSA9PT0gY3VycmVudD8uW2RhdGFLZXldXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2lwKDEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcCgoW3RheFNpdHVhdGlvbl0pID0+IFt0YXhTaXR1YXRpb25dIGFzIGNvbnN0KVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoW3RheFNpdHVhdGlvbl0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldCgnc2l0dWFjYW9UcmlidXRhcmlhJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNldFZhbHVlKHRheFNpdHVhdGlvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfRVNUT1JOT19DUkVESVRPOlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwOiBjYnNFc3Rvcm5vQ3JlZGl0b0Zvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1GaWVsZDogY2JzRXN0b3Jub0NyZWRpdG9Gb3JtRmllbGRcbiAgICAgICAgICAgICAgICAgICAgfSA9IGdyb3VwLml0ZW0uZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICh7IG5hbWUgfSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lID09PSBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0VTVE9STk9fQ1JFRElUT1xuICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZGF0YUtleSB9ID0gY2JzRXN0b3Jub0NyZWRpdG9Gb3JtRmllbGQuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICh7IG5hbWUgfSkgPT4gbmFtZSA9PT0gJ3NpdHVhY2FvVHJpYnV0YXJpYSdcbiAgICAgICAgICAgICAgICAgICAgKSBhcyBMb29rdXBGaWVsZDtcblxuICAgICAgICAgICAgICAgICAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNic0VzdG9ybm9DcmVkaXRvRm9ybUdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldCgnc2l0dWFjYW9UcmlidXRhcmlhJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0V2l0aChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNic0VzdG9ybm9DcmVkaXRvRm9ybUdyb3VwLmdldChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2l0dWFjYW9UcmlidXRhcmlhJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKS52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbGQsIGN1cnJlbnQpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkPy5bZGF0YUtleV0gPT09IGN1cnJlbnQ/LltkYXRhS2V5XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcCgxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXAoKFt0YXhTaXR1YXRpb25dKSA9PiBbdGF4U2l0dWF0aW9uXSBhcyBjb25zdClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKFt0YXhTaXR1YXRpb25dKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoJ3NpdHVhY2FvVHJpYnV0YXJpYScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRWYWx1ZSh0YXhTaXR1YXRpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0FKVVNURTpcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cDogaWJzQWp1c3RlRm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUZpZWxkOiBpYnNBanVzdGVGb3JtRmllbGRcbiAgICAgICAgICAgICAgICAgICAgfSA9IGdyb3VwLml0ZW0uZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICh7IG5hbWUgfSkgPT4gbmFtZSA9PT0gRW51bVRpcG9UcmlidXRvLklCU19BSlVTVEVcbiAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGRhdGFLZXkgfSA9IGlic0FqdXN0ZUZvcm1GaWVsZC5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgKHsgbmFtZSB9KSA9PiBuYW1lID09PSAnc2l0dWFjYW9UcmlidXRhcmlhJ1xuICAgICAgICAgICAgICAgICAgICApIGFzIExvb2t1cEZpZWxkO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgICAgICAgICAgICAgICAgaWJzQWp1c3RlRm9ybUdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldCgnc2l0dWFjYW9UcmlidXRhcmlhJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0V2l0aChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlic0FqdXN0ZUZvcm1Hcm91cC5nZXQoJ3NpdHVhY2FvVHJpYnV0YXJpYScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9sZCwgY3VycmVudCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGQ/LltkYXRhS2V5XSA9PT0gY3VycmVudD8uW2RhdGFLZXldXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2lwKDEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcCgoW3RheFNpdHVhdGlvbl0pID0+IFt0YXhTaXR1YXRpb25dIGFzIGNvbnN0KVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoW3RheFNpdHVhdGlvbl0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldCgnc2l0dWFjYW9UcmlidXRhcmlhJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNldFZhbHVlKHRheFNpdHVhdGlvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfQUpVU1RFOlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwOiBjYnNBanVzdGVGb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtRmllbGQ6IGNic0FqdXN0ZUZvcm1GaWVsZFxuICAgICAgICAgICAgICAgICAgICB9ID0gZ3JvdXAuaXRlbS5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgKHsgbmFtZSB9KSA9PiBuYW1lID09PSBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0FKVVNURVxuICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZGF0YUtleSB9ID0gY2JzQWp1c3RlRm9ybUZpZWxkLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBuYW1lIH0pID0+IG5hbWUgPT09ICdzaXR1YWNhb1RyaWJ1dGFyaWEnXG4gICAgICAgICAgICAgICAgICAgICkgYXMgTG9va3VwRmllbGQ7XG5cbiAgICAgICAgICAgICAgICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgICAgICAgICAgICAgICBjYnNBanVzdGVGb3JtR3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KCdzaXR1YWNhb1RyaWJ1dGFyaWEnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRXaXRoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2JzQWp1c3RlRm9ybUdyb3VwLmdldCgnc2l0dWFjYW9UcmlidXRhcmlhJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob2xkLCBjdXJyZW50KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZD8uW2RhdGFLZXldID09PSBjdXJyZW50Py5bZGF0YUtleV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNraXAoMSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwKChbdGF4U2l0dWF0aW9uXSkgPT4gW3RheFNpdHVhdGlvbl0gYXMgY29uc3QpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChbdGF4U2l0dWF0aW9uXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KCdzaXR1YWNhb1RyaWJ1dGFyaWEnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2V0VmFsdWUodGF4U2l0dWF0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNCU19UUkFOU0ZFUkVOQ0lBX0NSRURJVE86XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXA6IGlic1RyYW5zZmVyZW5jaWFDcmVkaXRvRm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUZpZWxkOiBpYnNUcmFuc2ZlcmVuY2lhQ3JlZGl0b0Zvcm1GaWVsZFxuICAgICAgICAgICAgICAgICAgICB9ID0gZ3JvdXAuaXRlbS5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgKHsgbmFtZSB9KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPT09IEVudW1UaXBvVHJpYnV0by5JQlNfVFJBTlNGRVJFTkNJQV9DUkVESVRPXG4gICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBkYXRhS2V5IH0gPSBpYnNUcmFuc2ZlcmVuY2lhQ3JlZGl0b0Zvcm1GaWVsZC5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgKHsgbmFtZSB9KSA9PiBuYW1lID09PSAnc2l0dWFjYW9UcmlidXRhcmlhJ1xuICAgICAgICAgICAgICAgICAgICApIGFzIExvb2t1cEZpZWxkO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgICAgICAgICAgICAgICAgaWJzVHJhbnNmZXJlbmNpYUNyZWRpdG9Gb3JtR3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KCdzaXR1YWNhb1RyaWJ1dGFyaWEnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRXaXRoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWJzVHJhbnNmZXJlbmNpYUNyZWRpdG9Gb3JtR3JvdXAuZ2V0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaXR1YWNhb1RyaWJ1dGFyaWEnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9sZCwgY3VycmVudCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGQ/LltkYXRhS2V5XSA9PT0gY3VycmVudD8uW2RhdGFLZXldXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2lwKDEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcCgoW3RheFNpdHVhdGlvbl0pID0+IFt0YXhTaXR1YXRpb25dIGFzIGNvbnN0KVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoW3RheFNpdHVhdGlvbl0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldCgnc2l0dWFjYW9UcmlidXRhcmlhJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNldFZhbHVlKHRheFNpdHVhdGlvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfVFJBTlNGRVJFTkNJQV9DUkVESVRPOlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwOiBjYnNUcmFuc2ZlcmVuY2lhQ3JlZGl0b0Zvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1GaWVsZDogY2JzVHJhbnNmZXJlbmNpYUNyZWRpdG9Gb3JtRmllbGRcbiAgICAgICAgICAgICAgICAgICAgfSA9IGdyb3VwLml0ZW0uZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICh7IG5hbWUgfSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lID09PSBFbnVtVGlwb1RyaWJ1dG8uQ0JTX1RSQU5TRkVSRU5DSUFfQ1JFRElUT1xuICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZGF0YUtleSB9ID0gY2JzVHJhbnNmZXJlbmNpYUNyZWRpdG9Gb3JtRmllbGQuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICh7IG5hbWUgfSkgPT4gbmFtZSA9PT0gJ3NpdHVhY2FvVHJpYnV0YXJpYSdcbiAgICAgICAgICAgICAgICAgICAgKSBhcyBMb29rdXBGaWVsZDtcblxuICAgICAgICAgICAgICAgICAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNic1RyYW5zZmVyZW5jaWFDcmVkaXRvRm9ybUdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldCgnc2l0dWFjYW9UcmlidXRhcmlhJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0V2l0aChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNic1RyYW5zZmVyZW5jaWFDcmVkaXRvRm9ybUdyb3VwLmdldChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2l0dWFjYW9UcmlidXRhcmlhJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKS52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbGQsIGN1cnJlbnQpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkPy5bZGF0YUtleV0gPT09IGN1cnJlbnQ/LltkYXRhS2V5XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcCgxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXAoKFt0YXhTaXR1YXRpb25dKSA9PiBbdGF4U2l0dWF0aW9uXSBhcyBjb25zdClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKFt0YXhTaXR1YXRpb25dKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoJ3NpdHVhY2FvVHJpYnV0YXJpYScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRWYWx1ZSh0YXhTaXR1YXRpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgIGBSZWdyYSBUYXhTaXR1YXRpb25DYWxjdWxhdGlvblJ1bGUgbsOjbyBpbXBsZW1lbnRhZGEgcGFyYSBvIGltcG9zdG8gJHt0YXhUeXBlfSwgZG9jdW1lbnRvICR7ZG9jdW1lbnR9LmBcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|