@novha/calc-engines 7.0.0 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (196) hide show
  1. package/dist/capital-gains/brazil/BrazilCapitalGainsService.js +3 -0
  2. package/dist/capital-gains/brazil/BrazilCapitalGainsServiceImpl.js +56 -0
  3. package/dist/capital-gains/brazil/domain/types.js +3 -0
  4. package/dist/capital-gains/index.js +14 -2
  5. package/dist/capital-gains/india/IndiaCapitalGainsService.js +3 -0
  6. package/dist/capital-gains/india/IndiaCapitalGainsServiceImpl.js +58 -0
  7. package/dist/capital-gains/india/domain/types.js +3 -0
  8. package/dist/capital-gains/japan/JapanCapitalGainsService.js +3 -0
  9. package/dist/capital-gains/japan/JapanCapitalGainsServiceImpl.js +41 -0
  10. package/dist/capital-gains/japan/domain/types.js +3 -0
  11. package/dist/capital-gains/spain/SpainCapitalGainsService.js +3 -0
  12. package/dist/capital-gains/spain/SpainCapitalGainsServiceImpl.js +56 -0
  13. package/dist/capital-gains/spain/domain/types.js +3 -0
  14. package/dist/corporate/brazil/BrazilCorporateTaxService.js +3 -0
  15. package/dist/corporate/brazil/BrazilCorporateTaxServiceImpl.js +33 -0
  16. package/dist/corporate/brazil/domain/types.js +3 -0
  17. package/dist/corporate/index.js +10 -2
  18. package/dist/corporate/india/IndiaCorporateTaxService.js +3 -0
  19. package/dist/corporate/india/IndiaCorporateTaxServiceImpl.js +29 -0
  20. package/dist/corporate/india/domain/types.js +3 -0
  21. package/dist/corporate/japan/JapanCorporateTaxService.js +3 -0
  22. package/dist/corporate/japan/JapanCorporateTaxServiceImpl.js +29 -0
  23. package/dist/corporate/japan/domain/types.js +3 -0
  24. package/dist/corporate/spain/SpainCorporateTaxService.js +3 -0
  25. package/dist/corporate/spain/SpainCorporateTaxServiceImpl.js +29 -0
  26. package/dist/corporate/spain/domain/types.js +3 -0
  27. package/dist/income-tax/brazil/BrazilIncomeTaxService.js +3 -0
  28. package/dist/income-tax/brazil/BrazilIncomeTaxServiceImpl.js +78 -0
  29. package/dist/income-tax/brazil/domain/types.js +3 -0
  30. package/dist/income-tax/index.js +14 -2
  31. package/dist/income-tax/india/IndiaIncomeTaxService.js +3 -0
  32. package/dist/income-tax/india/IndiaIncomeTaxServiceImpl.js +75 -0
  33. package/dist/income-tax/india/domain/types.js +3 -0
  34. package/dist/income-tax/japan/JapanIncomeTaxService.js +3 -0
  35. package/dist/income-tax/japan/JapanIncomeTaxServiceImpl.js +75 -0
  36. package/dist/income-tax/japan/domain/types.js +3 -0
  37. package/dist/income-tax/spain/SpainIncomeTaxService.js +3 -0
  38. package/dist/income-tax/spain/SpainIncomeTaxServiceImpl.js +62 -0
  39. package/dist/income-tax/spain/domain/types.js +3 -0
  40. package/dist/inheritance-tax/index.js +8 -2
  41. package/dist/inheritance-tax/japan/JapanInheritanceTaxService.js +3 -0
  42. package/dist/inheritance-tax/japan/JapanInheritanceTaxServiceImpl.js +53 -0
  43. package/dist/inheritance-tax/japan/domain/types.js +3 -0
  44. package/dist/inheritance-tax/spain/SpainInheritanceTaxService.js +3 -0
  45. package/dist/inheritance-tax/spain/SpainInheritanceTaxServiceImpl.js +51 -0
  46. package/dist/inheritance-tax/spain/domain/types.js +3 -0
  47. package/dist/mortgage/brazil/BrazilMortgageService.js +3 -0
  48. package/dist/mortgage/brazil/BrazilMortgageServiceImpl.js +76 -0
  49. package/dist/mortgage/brazil/domain/types.js +3 -0
  50. package/dist/mortgage/index.js +14 -2
  51. package/dist/mortgage/india/IndiaMortgageService.js +3 -0
  52. package/dist/mortgage/india/IndiaMortgageServiceImpl.js +76 -0
  53. package/dist/mortgage/india/domain/types.js +3 -0
  54. package/dist/mortgage/japan/JapanMortgageService.js +3 -0
  55. package/dist/mortgage/japan/JapanMortgageServiceImpl.js +76 -0
  56. package/dist/mortgage/japan/domain/types.js +3 -0
  57. package/dist/mortgage/spain/SpainMortgageService.js +3 -0
  58. package/dist/mortgage/spain/SpainMortgageServiceImpl.js +96 -0
  59. package/dist/mortgage/spain/domain/types.js +3 -0
  60. package/dist/types/capital-gains/brazil/BrazilCapitalGainsService.d.ts +4 -0
  61. package/dist/types/capital-gains/brazil/BrazilCapitalGainsServiceImpl.d.ts +10 -0
  62. package/dist/types/capital-gains/brazil/domain/types.d.ts +11 -0
  63. package/dist/types/capital-gains/index.d.ts +9 -1
  64. package/dist/types/capital-gains/india/IndiaCapitalGainsService.d.ts +4 -0
  65. package/dist/types/capital-gains/india/IndiaCapitalGainsServiceImpl.d.ts +9 -0
  66. package/dist/types/capital-gains/india/domain/types.d.ts +9 -0
  67. package/dist/types/capital-gains/japan/JapanCapitalGainsService.d.ts +4 -0
  68. package/dist/types/capital-gains/japan/JapanCapitalGainsServiceImpl.d.ts +9 -0
  69. package/dist/types/capital-gains/japan/domain/types.d.ts +6 -0
  70. package/dist/types/capital-gains/spain/SpainCapitalGainsService.d.ts +4 -0
  71. package/dist/types/capital-gains/spain/SpainCapitalGainsServiceImpl.d.ts +10 -0
  72. package/dist/types/capital-gains/spain/domain/types.d.ts +11 -0
  73. package/dist/types/corporate/brazil/BrazilCorporateTaxService.d.ts +4 -0
  74. package/dist/types/corporate/brazil/BrazilCorporateTaxServiceImpl.d.ts +8 -0
  75. package/dist/types/corporate/brazil/domain/types.d.ts +19 -0
  76. package/dist/types/corporate/index.d.ts +9 -1
  77. package/dist/types/corporate/india/IndiaCorporateTaxService.d.ts +4 -0
  78. package/dist/types/corporate/india/IndiaCorporateTaxServiceImpl.d.ts +8 -0
  79. package/dist/types/corporate/india/domain/types.d.ts +15 -0
  80. package/dist/types/corporate/japan/JapanCorporateTaxService.d.ts +4 -0
  81. package/dist/types/corporate/japan/JapanCorporateTaxServiceImpl.d.ts +8 -0
  82. package/dist/types/corporate/japan/domain/types.d.ts +15 -0
  83. package/dist/types/corporate/spain/SpainCorporateTaxService.d.ts +4 -0
  84. package/dist/types/corporate/spain/SpainCorporateTaxServiceImpl.d.ts +8 -0
  85. package/dist/types/corporate/spain/domain/types.d.ts +15 -0
  86. package/dist/types/income-tax/brazil/BrazilIncomeTaxService.d.ts +4 -0
  87. package/dist/types/income-tax/brazil/BrazilIncomeTaxServiceImpl.d.ts +11 -0
  88. package/dist/types/income-tax/brazil/domain/types.d.ts +18 -0
  89. package/dist/types/income-tax/index.d.ts +9 -1
  90. package/dist/types/income-tax/india/IndiaIncomeTaxService.d.ts +4 -0
  91. package/dist/types/income-tax/india/IndiaIncomeTaxServiceImpl.d.ts +10 -0
  92. package/dist/types/income-tax/india/domain/types.d.ts +16 -0
  93. package/dist/types/income-tax/japan/JapanIncomeTaxService.d.ts +4 -0
  94. package/dist/types/income-tax/japan/JapanIncomeTaxServiceImpl.d.ts +10 -0
  95. package/dist/types/income-tax/japan/domain/types.d.ts +16 -0
  96. package/dist/types/income-tax/spain/SpainIncomeTaxService.d.ts +4 -0
  97. package/dist/types/income-tax/spain/SpainIncomeTaxServiceImpl.d.ts +10 -0
  98. package/dist/types/income-tax/spain/domain/types.d.ts +16 -0
  99. package/dist/types/inheritance-tax/index.d.ts +5 -1
  100. package/dist/types/inheritance-tax/japan/JapanInheritanceTaxService.d.ts +4 -0
  101. package/dist/types/inheritance-tax/japan/JapanInheritanceTaxServiceImpl.d.ts +9 -0
  102. package/dist/types/inheritance-tax/japan/domain/types.d.ts +21 -0
  103. package/dist/types/inheritance-tax/spain/SpainInheritanceTaxService.d.ts +4 -0
  104. package/dist/types/inheritance-tax/spain/SpainInheritanceTaxServiceImpl.d.ts +9 -0
  105. package/dist/types/inheritance-tax/spain/domain/types.d.ts +19 -0
  106. package/dist/types/mortgage/brazil/BrazilMortgageService.d.ts +4 -0
  107. package/dist/types/mortgage/brazil/BrazilMortgageServiceImpl.d.ts +7 -0
  108. package/dist/types/mortgage/brazil/domain/types.d.ts +39 -0
  109. package/dist/types/mortgage/index.d.ts +9 -1
  110. package/dist/types/mortgage/india/IndiaMortgageService.d.ts +4 -0
  111. package/dist/types/mortgage/india/IndiaMortgageServiceImpl.d.ts +7 -0
  112. package/dist/types/mortgage/india/domain/types.d.ts +39 -0
  113. package/dist/types/mortgage/japan/JapanMortgageService.d.ts +4 -0
  114. package/dist/types/mortgage/japan/JapanMortgageServiceImpl.d.ts +7 -0
  115. package/dist/types/mortgage/japan/domain/types.d.ts +39 -0
  116. package/dist/types/mortgage/spain/SpainMortgageService.d.ts +4 -0
  117. package/dist/types/mortgage/spain/SpainMortgageServiceImpl.d.ts +8 -0
  118. package/dist/types/mortgage/spain/domain/types.d.ts +44 -0
  119. package/package.json +1 -1
  120. package/src/capital-gains/brazil/BrazilCapitalGainsService.ts +5 -0
  121. package/src/capital-gains/brazil/BrazilCapitalGainsServiceImpl.ts +69 -0
  122. package/src/capital-gains/brazil/domain/types.ts +15 -0
  123. package/src/capital-gains/index.ts +40 -0
  124. package/src/capital-gains/india/IndiaCapitalGainsService.ts +5 -0
  125. package/src/capital-gains/india/IndiaCapitalGainsServiceImpl.ts +64 -0
  126. package/src/capital-gains/india/domain/types.ts +12 -0
  127. package/src/capital-gains/japan/JapanCapitalGainsService.ts +5 -0
  128. package/src/capital-gains/japan/JapanCapitalGainsServiceImpl.ts +47 -0
  129. package/src/capital-gains/japan/domain/types.ts +9 -0
  130. package/src/capital-gains/spain/SpainCapitalGainsService.ts +5 -0
  131. package/src/capital-gains/spain/SpainCapitalGainsServiceImpl.ts +69 -0
  132. package/src/capital-gains/spain/domain/types.ts +15 -0
  133. package/src/corporate/brazil/BrazilCorporateTaxService.ts +5 -0
  134. package/src/corporate/brazil/BrazilCorporateTaxServiceImpl.ts +40 -0
  135. package/src/corporate/brazil/domain/types.ts +16 -0
  136. package/src/corporate/index.ts +45 -1
  137. package/src/corporate/india/IndiaCorporateTaxService.ts +5 -0
  138. package/src/corporate/india/IndiaCorporateTaxServiceImpl.ts +35 -0
  139. package/src/corporate/india/domain/types.ts +15 -0
  140. package/src/corporate/japan/JapanCorporateTaxService.ts +5 -0
  141. package/src/corporate/japan/JapanCorporateTaxServiceImpl.ts +35 -0
  142. package/src/corporate/japan/domain/types.ts +15 -0
  143. package/src/corporate/spain/SpainCorporateTaxService.ts +5 -0
  144. package/src/corporate/spain/SpainCorporateTaxServiceImpl.ts +35 -0
  145. package/src/corporate/spain/domain/types.ts +15 -0
  146. package/src/income-tax/brazil/BrazilIncomeTaxService.ts +5 -0
  147. package/src/income-tax/brazil/BrazilIncomeTaxServiceImpl.ts +91 -0
  148. package/src/income-tax/brazil/domain/types.ts +21 -0
  149. package/src/income-tax/index.ts +40 -0
  150. package/src/income-tax/india/IndiaIncomeTaxService.ts +5 -0
  151. package/src/income-tax/india/IndiaIncomeTaxServiceImpl.ts +87 -0
  152. package/src/income-tax/india/domain/types.ts +16 -0
  153. package/src/income-tax/japan/JapanIncomeTaxService.ts +5 -0
  154. package/src/income-tax/japan/JapanIncomeTaxServiceImpl.ts +87 -0
  155. package/src/income-tax/japan/domain/types.ts +16 -0
  156. package/src/income-tax/spain/SpainIncomeTaxService.ts +5 -0
  157. package/src/income-tax/spain/SpainIncomeTaxServiceImpl.ts +75 -0
  158. package/src/income-tax/spain/domain/types.ts +16 -0
  159. package/src/inheritance-tax/index.ts +24 -0
  160. package/src/inheritance-tax/japan/JapanInheritanceTaxService.ts +5 -0
  161. package/src/inheritance-tax/japan/JapanInheritanceTaxServiceImpl.ts +67 -0
  162. package/src/inheritance-tax/japan/domain/types.ts +25 -0
  163. package/src/inheritance-tax/spain/SpainInheritanceTaxService.ts +5 -0
  164. package/src/inheritance-tax/spain/SpainInheritanceTaxServiceImpl.ts +65 -0
  165. package/src/inheritance-tax/spain/domain/types.ts +23 -0
  166. package/src/mortgage/brazil/BrazilMortgageService.ts +5 -0
  167. package/src/mortgage/brazil/BrazilMortgageServiceImpl.ts +101 -0
  168. package/src/mortgage/brazil/domain/types.ts +46 -0
  169. package/src/mortgage/index.ts +49 -1
  170. package/src/mortgage/india/IndiaMortgageService.ts +5 -0
  171. package/src/mortgage/india/IndiaMortgageServiceImpl.ts +101 -0
  172. package/src/mortgage/india/domain/types.ts +46 -0
  173. package/src/mortgage/japan/JapanMortgageService.ts +5 -0
  174. package/src/mortgage/japan/JapanMortgageServiceImpl.ts +101 -0
  175. package/src/mortgage/japan/domain/types.ts +46 -0
  176. package/src/mortgage/spain/SpainMortgageService.ts +5 -0
  177. package/src/mortgage/spain/SpainMortgageServiceImpl.ts +130 -0
  178. package/src/mortgage/spain/domain/types.ts +52 -0
  179. package/test/brazil-capital-gains.test.ts +65 -0
  180. package/test/brazil-corporate-tax.test.ts +63 -0
  181. package/test/brazil-income-tax.test.ts +85 -0
  182. package/test/brazil-mortgage.test.ts +70 -0
  183. package/test/india-capital-gains.test.ts +71 -0
  184. package/test/india-corporate-tax.test.ts +54 -0
  185. package/test/india-income-tax.test.ts +78 -0
  186. package/test/india-mortgage.test.ts +70 -0
  187. package/test/japan-capital-gains.test.ts +55 -0
  188. package/test/japan-corporate-tax.test.ts +54 -0
  189. package/test/japan-income-tax.test.ts +76 -0
  190. package/test/japan-inheritance-tax.test.ts +74 -0
  191. package/test/japan-mortgage.test.ts +69 -0
  192. package/test/spain-capital-gains.test.ts +66 -0
  193. package/test/spain-corporate-tax.test.ts +54 -0
  194. package/test/spain-income-tax.test.ts +84 -0
  195. package/test/spain-inheritance-tax.test.ts +78 -0
  196. package/test/spain-mortgage.test.ts +70 -0
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BrazilIncomeTaxServiceImpl = void 0;
4
+ class BrazilIncomeTaxServiceImpl {
5
+ constructor(income, rules) {
6
+ this._income = income;
7
+ this._rules = rules;
8
+ }
9
+ calculateNetIncome() {
10
+ const { grossTax, bracketBreakdown } = this.computeTaxBrackets(this._income);
11
+ const inss = this.computeINSS(this._income, this._rules.inss);
12
+ const totalDeductions = grossTax + inss;
13
+ const netIncome = this._income - totalDeductions;
14
+ return {
15
+ grossIncome: this._income,
16
+ incomeTax: this.round(grossTax),
17
+ inss: this.round(inss),
18
+ totalDeductions: this.round(totalDeductions),
19
+ netIncome: this.round(netIncome),
20
+ effectiveTaxRate: this._income > 0 ? this.round(grossTax / this._income, 4) : 0,
21
+ taxBracketBreakdown: bracketBreakdown,
22
+ };
23
+ }
24
+ computeTaxBrackets(income) {
25
+ let tax = 0;
26
+ const bracketBreakdown = [];
27
+ for (let index = 0; index < this._rules.taxBrackets.length; index++) {
28
+ const bracket = this._rules.taxBrackets[index];
29
+ if (income <= bracket.from) {
30
+ bracketBreakdown.push({
31
+ bracketIndex: index,
32
+ bracketName: `Bracket ${index + 1}`,
33
+ from: bracket.from,
34
+ to: bracket.to ?? null,
35
+ rate: bracket.rate,
36
+ amountInBracket: 0,
37
+ taxOnAmount: 0,
38
+ });
39
+ break;
40
+ }
41
+ const upper = bracket.to ?? income;
42
+ const taxableAmount = Math.min(upper, income) - bracket.from;
43
+ if (taxableAmount > 0) {
44
+ const taxOnAmount = taxableAmount * bracket.rate;
45
+ tax += taxOnAmount;
46
+ bracketBreakdown.push({
47
+ bracketIndex: index,
48
+ bracketName: `Bracket ${index + 1}`,
49
+ from: bracket.from,
50
+ to: bracket.to ?? null,
51
+ rate: bracket.rate,
52
+ amountInBracket: taxableAmount,
53
+ taxOnAmount,
54
+ });
55
+ }
56
+ else {
57
+ bracketBreakdown.push({
58
+ bracketIndex: index,
59
+ bracketName: `Bracket ${index + 1}`,
60
+ from: bracket.from,
61
+ to: bracket.to ?? null,
62
+ rate: bracket.rate,
63
+ amountInBracket: 0,
64
+ taxOnAmount: 0,
65
+ });
66
+ }
67
+ }
68
+ return { grossTax: tax, bracketBreakdown };
69
+ }
70
+ computeINSS(income, rules) {
71
+ return Math.min(income, rules.cap) * rules.rate;
72
+ }
73
+ round(value, decimals = 2) {
74
+ return Number(value.toFixed(decimals));
75
+ }
76
+ }
77
+ exports.BrazilIncomeTaxServiceImpl = BrazilIncomeTaxServiceImpl;
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQnJhemlsSW5jb21lVGF4U2VydmljZUltcGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW5jb21lLXRheC9icmF6aWwvQnJhemlsSW5jb21lVGF4U2VydmljZUltcGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBSUEsTUFBYSwwQkFBMEI7SUFJbkMsWUFBWSxNQUFjLEVBQUUsS0FBcUI7UUFDN0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDeEIsQ0FBQztJQUVNLGtCQUFrQjtRQUNyQixNQUFNLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM3RSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5RCxNQUFNLGVBQWUsR0FBRyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3hDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsZUFBZSxDQUFDO1FBRWpELE9BQU87WUFDSCxXQUFXLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDekIsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO1lBQy9CLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztZQUN0QixlQUFlLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUM7WUFDNUMsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO1lBQ2hDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQy9FLG1CQUFtQixFQUFFLGdCQUFnQjtTQUN4QyxDQUFDO0lBQ04sQ0FBQztJQUVPLGtCQUFrQixDQUN0QixNQUFjO1FBRWQsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ1osTUFBTSxnQkFBZ0IsR0FBd0IsRUFBRSxDQUFDO1FBRWpELEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUNsRSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUUvQyxJQUFJLE1BQU0sSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3pCLGdCQUFnQixDQUFDLElBQUksQ0FBQztvQkFDbEIsWUFBWSxFQUFFLEtBQUs7b0JBQ25CLFdBQVcsRUFBRSxXQUFXLEtBQUssR0FBRyxDQUFDLEVBQUU7b0JBQ25DLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtvQkFDbEIsRUFBRSxFQUFFLE9BQU8sQ0FBQyxFQUFFLElBQUksSUFBSTtvQkFDdEIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO29CQUNsQixlQUFlLEVBQUUsQ0FBQztvQkFDbEIsV0FBVyxFQUFFLENBQUM7aUJBQ2pCLENBQUMsQ0FBQztnQkFDSCxNQUFNO1lBQ1YsQ0FBQztZQUVELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxFQUFFLElBQUksTUFBTSxDQUFDO1lBQ25DLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7WUFFN0QsSUFBSSxhQUFhLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3BCLE1BQU0sV0FBVyxHQUFHLGFBQWEsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO2dCQUNqRCxHQUFHLElBQUksV0FBVyxDQUFDO2dCQUNuQixnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7b0JBQ2xCLFlBQVksRUFBRSxLQUFLO29CQUNuQixXQUFXLEVBQUUsV0FBVyxLQUFLLEdBQUcsQ0FBQyxFQUFFO29CQUNuQyxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7b0JBQ2xCLEVBQUUsRUFBRSxPQUFPLENBQUMsRUFBRSxJQUFJLElBQUk7b0JBQ3RCLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtvQkFDbEIsZUFBZSxFQUFFLGFBQWE7b0JBQzlCLFdBQVc7aUJBQ2QsQ0FBQyxDQUFDO1lBQ1AsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLGdCQUFnQixDQUFDLElBQUksQ0FBQztvQkFDbEIsWUFBWSxFQUFFLEtBQUs7b0JBQ25CLFdBQVcsRUFBRSxXQUFXLEtBQUssR0FBRyxDQUFDLEVBQUU7b0JBQ25DLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtvQkFDbEIsRUFBRSxFQUFFLE9BQU8sQ0FBQyxFQUFFLElBQUksSUFBSTtvQkFDdEIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO29CQUNsQixlQUFlLEVBQUUsQ0FBQztvQkFDbEIsV0FBVyxFQUFFLENBQUM7aUJBQ2pCLENBQUMsQ0FBQztZQUNQLENBQUM7UUFDTCxDQUFDO1FBRUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQztJQUMvQyxDQUFDO0lBRU8sV0FBVyxDQUFDLE1BQWMsRUFBRSxLQUFnQjtRQUNoRCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO0lBQ3BELENBQUM7SUFFTyxLQUFLLENBQUMsS0FBYSxFQUFFLFFBQVEsR0FBRyxDQUFDO1FBQ3JDLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUMzQyxDQUFDO0NBQ0o7QUF0RkQsZ0VBc0ZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnJhY2tldEFsbG9jYXRpb24gfSBmcm9tIFwiLi4vZG9tYWluL3R5cGVzXCI7XG5pbXBvcnQgeyBCcmF6aWxJbmNvbWVUYXhTZXJ2aWNlIH0gZnJvbSBcIi4vQnJhemlsSW5jb21lVGF4U2VydmljZVwiO1xuaW1wb3J0IHsgQ29tcHV0ZWRJbmNvbWVUYXhWYWx1ZXMsIElOU1NSdWxlcywgSW5jb21lVGF4UnVsZXMgfSBmcm9tIFwiLi9kb21haW4vdHlwZXNcIjtcblxuZXhwb3J0IGNsYXNzIEJyYXppbEluY29tZVRheFNlcnZpY2VJbXBsIGltcGxlbWVudHMgQnJhemlsSW5jb21lVGF4U2VydmljZSB7XG4gICAgcHJpdmF0ZSBfaW5jb21lOiBudW1iZXI7XG4gICAgcHJpdmF0ZSBfcnVsZXM6IEluY29tZVRheFJ1bGVzO1xuXG4gICAgY29uc3RydWN0b3IoaW5jb21lOiBudW1iZXIsIHJ1bGVzOiBJbmNvbWVUYXhSdWxlcykge1xuICAgICAgICB0aGlzLl9pbmNvbWUgPSBpbmNvbWU7XG4gICAgICAgIHRoaXMuX3J1bGVzID0gcnVsZXM7XG4gICAgfVxuXG4gICAgcHVibGljIGNhbGN1bGF0ZU5ldEluY29tZSgpOiBDb21wdXRlZEluY29tZVRheFZhbHVlcyB7XG4gICAgICAgIGNvbnN0IHsgZ3Jvc3NUYXgsIGJyYWNrZXRCcmVha2Rvd24gfSA9IHRoaXMuY29tcHV0ZVRheEJyYWNrZXRzKHRoaXMuX2luY29tZSk7XG4gICAgICAgIGNvbnN0IGluc3MgPSB0aGlzLmNvbXB1dGVJTlNTKHRoaXMuX2luY29tZSwgdGhpcy5fcnVsZXMuaW5zcyk7XG4gICAgICAgIGNvbnN0IHRvdGFsRGVkdWN0aW9ucyA9IGdyb3NzVGF4ICsgaW5zcztcbiAgICAgICAgY29uc3QgbmV0SW5jb21lID0gdGhpcy5faW5jb21lIC0gdG90YWxEZWR1Y3Rpb25zO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBncm9zc0luY29tZTogdGhpcy5faW5jb21lLFxuICAgICAgICAgICAgaW5jb21lVGF4OiB0aGlzLnJvdW5kKGdyb3NzVGF4KSxcbiAgICAgICAgICAgIGluc3M6IHRoaXMucm91bmQoaW5zcyksXG4gICAgICAgICAgICB0b3RhbERlZHVjdGlvbnM6IHRoaXMucm91bmQodG90YWxEZWR1Y3Rpb25zKSxcbiAgICAgICAgICAgIG5ldEluY29tZTogdGhpcy5yb3VuZChuZXRJbmNvbWUpLFxuICAgICAgICAgICAgZWZmZWN0aXZlVGF4UmF0ZTogdGhpcy5faW5jb21lID4gMCA/IHRoaXMucm91bmQoZ3Jvc3NUYXggLyB0aGlzLl9pbmNvbWUsIDQpIDogMCxcbiAgICAgICAgICAgIHRheEJyYWNrZXRCcmVha2Rvd246IGJyYWNrZXRCcmVha2Rvd24sXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb21wdXRlVGF4QnJhY2tldHMoXG4gICAgICAgIGluY29tZTogbnVtYmVyLFxuICAgICk6IHsgZ3Jvc3NUYXg6IG51bWJlcjsgYnJhY2tldEJyZWFrZG93bjogQnJhY2tldEFsbG9jYXRpb25bXSB9IHtcbiAgICAgICAgbGV0IHRheCA9IDA7XG4gICAgICAgIGNvbnN0IGJyYWNrZXRCcmVha2Rvd246IEJyYWNrZXRBbGxvY2F0aW9uW10gPSBbXTtcblxuICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5fcnVsZXMudGF4QnJhY2tldHMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgICBjb25zdCBicmFja2V0ID0gdGhpcy5fcnVsZXMudGF4QnJhY2tldHNbaW5kZXhdO1xuXG4gICAgICAgICAgICBpZiAoaW5jb21lIDw9IGJyYWNrZXQuZnJvbSkge1xuICAgICAgICAgICAgICAgIGJyYWNrZXRCcmVha2Rvd24ucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGJyYWNrZXRJbmRleDogaW5kZXgsXG4gICAgICAgICAgICAgICAgICAgIGJyYWNrZXROYW1lOiBgQnJhY2tldCAke2luZGV4ICsgMX1gLFxuICAgICAgICAgICAgICAgICAgICBmcm9tOiBicmFja2V0LmZyb20sXG4gICAgICAgICAgICAgICAgICAgIHRvOiBicmFja2V0LnRvID8/IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIHJhdGU6IGJyYWNrZXQucmF0ZSxcbiAgICAgICAgICAgICAgICAgICAgYW1vdW50SW5CcmFja2V0OiAwLFxuICAgICAgICAgICAgICAgICAgICB0YXhPbkFtb3VudDogMCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgdXBwZXIgPSBicmFja2V0LnRvID8/IGluY29tZTtcbiAgICAgICAgICAgIGNvbnN0IHRheGFibGVBbW91bnQgPSBNYXRoLm1pbih1cHBlciwgaW5jb21lKSAtIGJyYWNrZXQuZnJvbTtcblxuICAgICAgICAgICAgaWYgKHRheGFibGVBbW91bnQgPiAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGF4T25BbW91bnQgPSB0YXhhYmxlQW1vdW50ICogYnJhY2tldC5yYXRlO1xuICAgICAgICAgICAgICAgIHRheCArPSB0YXhPbkFtb3VudDtcbiAgICAgICAgICAgICAgICBicmFja2V0QnJlYWtkb3duLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBicmFja2V0SW5kZXg6IGluZGV4LFxuICAgICAgICAgICAgICAgICAgICBicmFja2V0TmFtZTogYEJyYWNrZXQgJHtpbmRleCArIDF9YCxcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYnJhY2tldC5mcm9tLFxuICAgICAgICAgICAgICAgICAgICB0bzogYnJhY2tldC50byA/PyBudWxsLFxuICAgICAgICAgICAgICAgICAgICByYXRlOiBicmFja2V0LnJhdGUsXG4gICAgICAgICAgICAgICAgICAgIGFtb3VudEluQnJhY2tldDogdGF4YWJsZUFtb3VudCxcbiAgICAgICAgICAgICAgICAgICAgdGF4T25BbW91bnQsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGJyYWNrZXRCcmVha2Rvd24ucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGJyYWNrZXRJbmRleDogaW5kZXgsXG4gICAgICAgICAgICAgICAgICAgIGJyYWNrZXROYW1lOiBgQnJhY2tldCAke2luZGV4ICsgMX1gLFxuICAgICAgICAgICAgICAgICAgICBmcm9tOiBicmFja2V0LmZyb20sXG4gICAgICAgICAgICAgICAgICAgIHRvOiBicmFja2V0LnRvID8/IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIHJhdGU6IGJyYWNrZXQucmF0ZSxcbiAgICAgICAgICAgICAgICAgICAgYW1vdW50SW5CcmFja2V0OiAwLFxuICAgICAgICAgICAgICAgICAgICB0YXhPbkFtb3VudDogMCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7IGdyb3NzVGF4OiB0YXgsIGJyYWNrZXRCcmVha2Rvd24gfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbXB1dGVJTlNTKGluY29tZTogbnVtYmVyLCBydWxlczogSU5TU1J1bGVzKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIE1hdGgubWluKGluY29tZSwgcnVsZXMuY2FwKSAqIHJ1bGVzLnJhdGU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByb3VuZCh2YWx1ZTogbnVtYmVyLCBkZWNpbWFscyA9IDIpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gTnVtYmVyKHZhbHVlLnRvRml4ZWQoZGVjaW1hbHMpKTtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaW5jb21lLXRheC9icmF6aWwvZG9tYWluL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCcmFja2V0QWxsb2NhdGlvbiwgVGF4QnJhY2tldCB9IGZyb20gXCIuLi8uLi9kb21haW4vdHlwZXNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBJbmNvbWVUYXhSdWxlcyB7XG4gICAgdGF4QnJhY2tldHM6IFRheEJyYWNrZXRbXTtcbiAgICBpbnNzOiBJTlNTUnVsZXM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU5TU1J1bGVzIHtcbiAgICByYXRlOiBudW1iZXI7XG4gICAgY2FwOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcHV0ZWRJbmNvbWVUYXhWYWx1ZXMge1xuICAgIGdyb3NzSW5jb21lOiBudW1iZXI7XG4gICAgaW5jb21lVGF4OiBudW1iZXI7XG4gICAgaW5zczogbnVtYmVyO1xuICAgIHRvdGFsRGVkdWN0aW9uczogbnVtYmVyO1xuICAgIG5ldEluY29tZTogbnVtYmVyO1xuICAgIGVmZmVjdGl2ZVRheFJhdGU6IG51bWJlcjtcbiAgICB0YXhCcmFja2V0QnJlYWtkb3duOiBCcmFja2V0QWxsb2NhdGlvbltdO1xufVxuIl19
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GermanyIncomeTaxService = exports.USAIncomeTaxService = exports.UKIncomeTaxService = exports.AustraliaIncomeTaxService = exports.SouthAfricaIncomeTaxService = exports.FranceIncomeTaxService = exports.CanadaIncomeTaxService = void 0;
3
+ exports.JapanIncomeTaxService = exports.IndiaIncomeTaxService = exports.SpainIncomeTaxService = exports.BrazilIncomeTaxService = exports.GermanyIncomeTaxService = exports.USAIncomeTaxService = exports.UKIncomeTaxService = exports.AustraliaIncomeTaxService = exports.SouthAfricaIncomeTaxService = exports.FranceIncomeTaxService = exports.CanadaIncomeTaxService = void 0;
4
4
  // Canada
5
5
  const CanadaIncomeTaxServiceImpl_1 = require("./canada/CanadaIncomeTaxServiceImpl");
6
6
  Object.defineProperty(exports, "CanadaIncomeTaxService", { enumerable: true, get: function () { return CanadaIncomeTaxServiceImpl_1.CanadaIncomeTaxServiceImpl; } });
@@ -21,4 +21,16 @@ Object.defineProperty(exports, "USAIncomeTaxService", { enumerable: true, get: f
21
21
  // Germany
22
22
  const GermanyIncomeTaxServiceImpl_1 = require("./germany/GermanyIncomeTaxServiceImpl");
23
23
  Object.defineProperty(exports, "GermanyIncomeTaxService", { enumerable: true, get: function () { return GermanyIncomeTaxServiceImpl_1.GermanyIncomeTaxServiceImpl; } });
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5jb21lLXRheC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxTQUFTO0FBQ1Qsb0ZBQTJHO0FBaUR2Ryx1R0FqRG1DLHVEQUFzQixPQWlEbkM7QUE1QzFCLG9GQUEyRztBQStDdkcsdUdBL0NtQyx1REFBc0IsT0ErQ25DO0FBdkMxQixlQUFlO0FBQ2Ysb0dBQWdJO0FBeUM1SCw0R0F6Q3dDLGlFQUEyQixPQXlDeEM7QUFuQy9CLFlBQVk7QUFDWiw2RkFBdUg7QUFxQ25ILDBHQXJDc0MsNkRBQXlCLE9BcUN0QztBQS9CN0IsS0FBSztBQUNMLHdFQUEyRjtBQWlDdkYsbUdBakMrQiwrQ0FBa0IsT0FpQy9CO0FBM0J0QixNQUFNO0FBQ04sMkVBQStGO0FBNkIzRixvR0E3QmdDLGlEQUFtQixPQTZCaEM7QUF2QnZCLFVBQVU7QUFDVix1RkFBK0c7QUF5QjNHLHdHQXpCb0MseURBQXVCLE9BeUJwQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENhbmFkYVxuaW1wb3J0IHsgQ2FuYWRhSW5jb21lVGF4U2VydmljZUltcGwgYXMgQ2FuYWRhSW5jb21lVGF4U2VydmljZSB9IGZyb20gJy4vY2FuYWRhL0NhbmFkYUluY29tZVRheFNlcnZpY2VJbXBsJztcbmltcG9ydCB7XG4gICAgQ29tcHV0ZWRJbmNvbWVUYXhWYWx1ZXMgYXMgQ2FuYWRhQ29tcHV0ZWRJbmNvbWVUYXhWYWx1ZXMsXG4gICAgSW5jb21lVGF4UnVsZXMgYXMgQ2FuYWRhSW5jb21lVGF4UnVsZXMsXG59IGZyb20gJy4vY2FuYWRhL2RvbWFpbi90eXBlcyc7XG5pbXBvcnQgeyBGcmFuY2VJbmNvbWVUYXhTZXJ2aWNlSW1wbCBhcyBGcmFuY2VJbmNvbWVUYXhTZXJ2aWNlIH0gZnJvbSAnLi9mcmFuY2UvRnJhbmNlSW5jb21lVGF4U2VydmljZUltcGwnO1xuXG4vLyBGcmFuY2VcbmltcG9ydCB7IFxuICAgIENvbXB1dGVkSW5jb21lVGF4VmFsdWVzIGFzIEZyYW5jZUNvbXB1dGVkSW5jb21lVGF4VmFsdWVzLFxuICAgIEluY29tZVRheFJ1bGVzIGFzIEZyYW5jZUluY29tZVRheFJ1bGVzLFxufSBmcm9tICcuL2ZyYW5jZS9kb21haW4vdHlwZXMnO1xuXG4vLyBTb3V0aCBBZnJpY2FcbmltcG9ydCB7IFNvdXRoQWZyaWNhSW5jb21lVGF4U2VydmljZUltcGwgYXMgU291dGhBZnJpY2FJbmNvbWVUYXhTZXJ2aWNlIH0gZnJvbSAnLi9zb3V0aC1hZnJpY2EvU291dGhBZnJpY2FJbmNvbWVUYXhTZXJ2aWNlSW1wbCc7XG5pbXBvcnQge1xuICAgIENvbXB1dGVkSW5jb21lVGF4VmFsdWVzIGFzIFNvdXRoQWZyaWNhQ29tcHV0ZWRJbmNvbWVUYXhWYWx1ZXMsXG4gICAgSW5jb21lVGF4UnVsZXMgYXMgU291dGhBZnJpY2FJbmNvbWVUYXhSdWxlcyxcbn0gZnJvbSAnLi9zb3V0aC1hZnJpY2EvZG9tYWluL3R5cGVzJztcblxuLy8gQXVzdHJhbGlhXG5pbXBvcnQgeyBBdXN0cmFsaWFJbmNvbWVUYXhTZXJ2aWNlSW1wbCBhcyBBdXN0cmFsaWFJbmNvbWVUYXhTZXJ2aWNlIH0gZnJvbSAnLi9hdXN0cmFsaWEvQXVzdHJhbGlhSW5jb21lVGF4U2VydmljZUltcGwnO1xuaW1wb3J0IHtcbiAgICBDb21wdXRlZEluY29tZVRheFZhbHVlcyBhcyBBdXN0cmFsaWFDb21wdXRlZEluY29tZVRheFZhbHVlcyxcbiAgICBJbmNvbWVUYXhSdWxlcyBhcyBBdXN0cmFsaWFJbmNvbWVUYXhSdWxlcyxcbn0gZnJvbSAnLi9hdXN0cmFsaWEvZG9tYWluL3R5cGVzJztcblxuLy8gVUtcbmltcG9ydCB7IFVLSW5jb21lVGF4U2VydmljZUltcGwgYXMgVUtJbmNvbWVUYXhTZXJ2aWNlIH0gZnJvbSAnLi91ay9VS0luY29tZVRheFNlcnZpY2VJbXBsJztcbmltcG9ydCB7XG4gICAgQ29tcHV0ZWRJbmNvbWVUYXhWYWx1ZXMgYXMgVUtDb21wdXRlZEluY29tZVRheFZhbHVlcyxcbiAgICBJbmNvbWVUYXhSdWxlcyBhcyBVS0luY29tZVRheFJ1bGVzLFxufSBmcm9tICcuL3VrL2RvbWFpbi90eXBlcyc7XG5cbi8vIFVTQVxuaW1wb3J0IHsgVVNBSW5jb21lVGF4U2VydmljZUltcGwgYXMgVVNBSW5jb21lVGF4U2VydmljZSB9IGZyb20gJy4vdXNhL1VTQUluY29tZVRheFNlcnZpY2VJbXBsJztcbmltcG9ydCB7XG4gICAgQ29tcHV0ZWRJbmNvbWVUYXhWYWx1ZXMgYXMgVVNBQ29tcHV0ZWRJbmNvbWVUYXhWYWx1ZXMsXG4gICAgSW5jb21lVGF4UnVsZXMgYXMgVVNBSW5jb21lVGF4UnVsZXMsXG59IGZyb20gJy4vdXNhL2RvbWFpbi90eXBlcyc7XG5cbi8vIEdlcm1hbnlcbmltcG9ydCB7IEdlcm1hbnlJbmNvbWVUYXhTZXJ2aWNlSW1wbCBhcyBHZXJtYW55SW5jb21lVGF4U2VydmljZSB9IGZyb20gJy4vZ2VybWFueS9HZXJtYW55SW5jb21lVGF4U2VydmljZUltcGwnO1xuaW1wb3J0IHtcbiAgICBDb21wdXRlZEluY29tZVRheFZhbHVlcyBhcyBHZXJtYW55Q29tcHV0ZWRJbmNvbWVUYXhWYWx1ZXMsXG4gICAgSW5jb21lVGF4UnVsZXMgYXMgR2VybWFueUluY29tZVRheFJ1bGVzLFxufSBmcm9tICcuL2dlcm1hbnkvZG9tYWluL3R5cGVzJztcblxuZXhwb3J0IHtcbiAgICBDYW5hZGFJbmNvbWVUYXhTZXJ2aWNlLFxuICAgIENhbmFkYUNvbXB1dGVkSW5jb21lVGF4VmFsdWVzLFxuICAgIENhbmFkYUluY29tZVRheFJ1bGVzLFxuICAgIEZyYW5jZUluY29tZVRheFNlcnZpY2UsXG4gICAgRnJhbmNlQ29tcHV0ZWRJbmNvbWVUYXhWYWx1ZXMsXG4gICAgRnJhbmNlSW5jb21lVGF4UnVsZXMsXG4gICAgU291dGhBZnJpY2FJbmNvbWVUYXhTZXJ2aWNlLFxuICAgIFNvdXRoQWZyaWNhQ29tcHV0ZWRJbmNvbWVUYXhWYWx1ZXMsXG4gICAgU291dGhBZnJpY2FJbmNvbWVUYXhSdWxlcyxcbiAgICBBdXN0cmFsaWFJbmNvbWVUYXhTZXJ2aWNlLFxuICAgIEF1c3RyYWxpYUNvbXB1dGVkSW5jb21lVGF4VmFsdWVzLFxuICAgIEF1c3RyYWxpYUluY29tZVRheFJ1bGVzLFxuICAgIFVLSW5jb21lVGF4U2VydmljZSxcbiAgICBVS0NvbXB1dGVkSW5jb21lVGF4VmFsdWVzLFxuICAgIFVLSW5jb21lVGF4UnVsZXMsXG4gICAgVVNBSW5jb21lVGF4U2VydmljZSxcbiAgICBVU0FDb21wdXRlZEluY29tZVRheFZhbHVlcyxcbiAgICBVU0FJbmNvbWVUYXhSdWxlcyxcbiAgICBHZXJtYW55SW5jb21lVGF4U2VydmljZSxcbiAgICBHZXJtYW55Q29tcHV0ZWRJbmNvbWVUYXhWYWx1ZXMsXG4gICAgR2VybWFueUluY29tZVRheFJ1bGVzLFxufTsiXX0=
24
+ // Brazil
25
+ const BrazilIncomeTaxServiceImpl_1 = require("./brazil/BrazilIncomeTaxServiceImpl");
26
+ Object.defineProperty(exports, "BrazilIncomeTaxService", { enumerable: true, get: function () { return BrazilIncomeTaxServiceImpl_1.BrazilIncomeTaxServiceImpl; } });
27
+ // Spain
28
+ const SpainIncomeTaxServiceImpl_1 = require("./spain/SpainIncomeTaxServiceImpl");
29
+ Object.defineProperty(exports, "SpainIncomeTaxService", { enumerable: true, get: function () { return SpainIncomeTaxServiceImpl_1.SpainIncomeTaxServiceImpl; } });
30
+ // India
31
+ const IndiaIncomeTaxServiceImpl_1 = require("./india/IndiaIncomeTaxServiceImpl");
32
+ Object.defineProperty(exports, "IndiaIncomeTaxService", { enumerable: true, get: function () { return IndiaIncomeTaxServiceImpl_1.IndiaIncomeTaxServiceImpl; } });
33
+ // Japan
34
+ const JapanIncomeTaxServiceImpl_1 = require("./japan/JapanIncomeTaxServiceImpl");
35
+ Object.defineProperty(exports, "JapanIncomeTaxService", { enumerable: true, get: function () { return JapanIncomeTaxServiceImpl_1.JapanIncomeTaxServiceImpl; } });
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5jb21lLXRheC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxTQUFTO0FBQ1Qsb0ZBQTJHO0FBNkV2Ryx1R0E3RW1DLHVEQUFzQixPQTZFbkM7QUF4RTFCLG9GQUEyRztBQTJFdkcsdUdBM0VtQyx1REFBc0IsT0EyRW5DO0FBbkUxQixlQUFlO0FBQ2Ysb0dBQWdJO0FBcUU1SCw0R0FyRXdDLGlFQUEyQixPQXFFeEM7QUEvRC9CLFlBQVk7QUFDWiw2RkFBdUg7QUFpRW5ILDBHQWpFc0MsNkRBQXlCLE9BaUV0QztBQTNEN0IsS0FBSztBQUNMLHdFQUEyRjtBQTZEdkYsbUdBN0QrQiwrQ0FBa0IsT0E2RC9CO0FBdkR0QixNQUFNO0FBQ04sMkVBQStGO0FBeUQzRixvR0F6RGdDLGlEQUFtQixPQXlEaEM7QUFuRHZCLFVBQVU7QUFDVix1RkFBK0c7QUFxRDNHLHdHQXJEb0MseURBQXVCLE9BcURwQztBQS9DM0IsU0FBUztBQUNULG9GQUEyRztBQWlEdkcsdUdBakRtQyx1REFBc0IsT0FpRG5DO0FBM0MxQixRQUFRO0FBQ1IsaUZBQXVHO0FBNkNuRyxzR0E3Q2tDLHFEQUFxQixPQTZDbEM7QUF2Q3pCLFFBQVE7QUFDUixpRkFBdUc7QUF5Q25HLHNHQXpDa0MscURBQXFCLE9BeUNsQztBQW5DekIsUUFBUTtBQUNSLGlGQUF1RztBQXFDbkcsc0dBckNrQyxxREFBcUIsT0FxQ2xDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ2FuYWRhXG5pbXBvcnQgeyBDYW5hZGFJbmNvbWVUYXhTZXJ2aWNlSW1wbCBhcyBDYW5hZGFJbmNvbWVUYXhTZXJ2aWNlIH0gZnJvbSAnLi9jYW5hZGEvQ2FuYWRhSW5jb21lVGF4U2VydmljZUltcGwnO1xuaW1wb3J0IHtcbiAgICBDb21wdXRlZEluY29tZVRheFZhbHVlcyBhcyBDYW5hZGFDb21wdXRlZEluY29tZVRheFZhbHVlcyxcbiAgICBJbmNvbWVUYXhSdWxlcyBhcyBDYW5hZGFJbmNvbWVUYXhSdWxlcyxcbn0gZnJvbSAnLi9jYW5hZGEvZG9tYWluL3R5cGVzJztcbmltcG9ydCB7IEZyYW5jZUluY29tZVRheFNlcnZpY2VJbXBsIGFzIEZyYW5jZUluY29tZVRheFNlcnZpY2UgfSBmcm9tICcuL2ZyYW5jZS9GcmFuY2VJbmNvbWVUYXhTZXJ2aWNlSW1wbCc7XG5cbi8vIEZyYW5jZVxuaW1wb3J0IHsgXG4gICAgQ29tcHV0ZWRJbmNvbWVUYXhWYWx1ZXMgYXMgRnJhbmNlQ29tcHV0ZWRJbmNvbWVUYXhWYWx1ZXMsXG4gICAgSW5jb21lVGF4UnVsZXMgYXMgRnJhbmNlSW5jb21lVGF4UnVsZXMsXG59IGZyb20gJy4vZnJhbmNlL2RvbWFpbi90eXBlcyc7XG5cbi8vIFNvdXRoIEFmcmljYVxuaW1wb3J0IHsgU291dGhBZnJpY2FJbmNvbWVUYXhTZXJ2aWNlSW1wbCBhcyBTb3V0aEFmcmljYUluY29tZVRheFNlcnZpY2UgfSBmcm9tICcuL3NvdXRoLWFmcmljYS9Tb3V0aEFmcmljYUluY29tZVRheFNlcnZpY2VJbXBsJztcbmltcG9ydCB7XG4gICAgQ29tcHV0ZWRJbmNvbWVUYXhWYWx1ZXMgYXMgU291dGhBZnJpY2FDb21wdXRlZEluY29tZVRheFZhbHVlcyxcbiAgICBJbmNvbWVUYXhSdWxlcyBhcyBTb3V0aEFmcmljYUluY29tZVRheFJ1bGVzLFxufSBmcm9tICcuL3NvdXRoLWFmcmljYS9kb21haW4vdHlwZXMnO1xuXG4vLyBBdXN0cmFsaWFcbmltcG9ydCB7IEF1c3RyYWxpYUluY29tZVRheFNlcnZpY2VJbXBsIGFzIEF1c3RyYWxpYUluY29tZVRheFNlcnZpY2UgfSBmcm9tICcuL2F1c3RyYWxpYS9BdXN0cmFsaWFJbmNvbWVUYXhTZXJ2aWNlSW1wbCc7XG5pbXBvcnQge1xuICAgIENvbXB1dGVkSW5jb21lVGF4VmFsdWVzIGFzIEF1c3RyYWxpYUNvbXB1dGVkSW5jb21lVGF4VmFsdWVzLFxuICAgIEluY29tZVRheFJ1bGVzIGFzIEF1c3RyYWxpYUluY29tZVRheFJ1bGVzLFxufSBmcm9tICcuL2F1c3RyYWxpYS9kb21haW4vdHlwZXMnO1xuXG4vLyBVS1xuaW1wb3J0IHsgVUtJbmNvbWVUYXhTZXJ2aWNlSW1wbCBhcyBVS0luY29tZVRheFNlcnZpY2UgfSBmcm9tICcuL3VrL1VLSW5jb21lVGF4U2VydmljZUltcGwnO1xuaW1wb3J0IHtcbiAgICBDb21wdXRlZEluY29tZVRheFZhbHVlcyBhcyBVS0NvbXB1dGVkSW5jb21lVGF4VmFsdWVzLFxuICAgIEluY29tZVRheFJ1bGVzIGFzIFVLSW5jb21lVGF4UnVsZXMsXG59IGZyb20gJy4vdWsvZG9tYWluL3R5cGVzJztcblxuLy8gVVNBXG5pbXBvcnQgeyBVU0FJbmNvbWVUYXhTZXJ2aWNlSW1wbCBhcyBVU0FJbmNvbWVUYXhTZXJ2aWNlIH0gZnJvbSAnLi91c2EvVVNBSW5jb21lVGF4U2VydmljZUltcGwnO1xuaW1wb3J0IHtcbiAgICBDb21wdXRlZEluY29tZVRheFZhbHVlcyBhcyBVU0FDb21wdXRlZEluY29tZVRheFZhbHVlcyxcbiAgICBJbmNvbWVUYXhSdWxlcyBhcyBVU0FJbmNvbWVUYXhSdWxlcyxcbn0gZnJvbSAnLi91c2EvZG9tYWluL3R5cGVzJztcblxuLy8gR2VybWFueVxuaW1wb3J0IHsgR2VybWFueUluY29tZVRheFNlcnZpY2VJbXBsIGFzIEdlcm1hbnlJbmNvbWVUYXhTZXJ2aWNlIH0gZnJvbSAnLi9nZXJtYW55L0dlcm1hbnlJbmNvbWVUYXhTZXJ2aWNlSW1wbCc7XG5pbXBvcnQge1xuICAgIENvbXB1dGVkSW5jb21lVGF4VmFsdWVzIGFzIEdlcm1hbnlDb21wdXRlZEluY29tZVRheFZhbHVlcyxcbiAgICBJbmNvbWVUYXhSdWxlcyBhcyBHZXJtYW55SW5jb21lVGF4UnVsZXMsXG59IGZyb20gJy4vZ2VybWFueS9kb21haW4vdHlwZXMnO1xuXG4vLyBCcmF6aWxcbmltcG9ydCB7IEJyYXppbEluY29tZVRheFNlcnZpY2VJbXBsIGFzIEJyYXppbEluY29tZVRheFNlcnZpY2UgfSBmcm9tICcuL2JyYXppbC9CcmF6aWxJbmNvbWVUYXhTZXJ2aWNlSW1wbCc7XG5pbXBvcnQge1xuICAgIENvbXB1dGVkSW5jb21lVGF4VmFsdWVzIGFzIEJyYXppbENvbXB1dGVkSW5jb21lVGF4VmFsdWVzLFxuICAgIEluY29tZVRheFJ1bGVzIGFzIEJyYXppbEluY29tZVRheFJ1bGVzLFxufSBmcm9tICcuL2JyYXppbC9kb21haW4vdHlwZXMnO1xuXG4vLyBTcGFpblxuaW1wb3J0IHsgU3BhaW5JbmNvbWVUYXhTZXJ2aWNlSW1wbCBhcyBTcGFpbkluY29tZVRheFNlcnZpY2UgfSBmcm9tICcuL3NwYWluL1NwYWluSW5jb21lVGF4U2VydmljZUltcGwnO1xuaW1wb3J0IHtcbiAgICBDb21wdXRlZEluY29tZVRheFZhbHVlcyBhcyBTcGFpbkNvbXB1dGVkSW5jb21lVGF4VmFsdWVzLFxuICAgIEluY29tZVRheFJ1bGVzIGFzIFNwYWluSW5jb21lVGF4UnVsZXMsXG59IGZyb20gJy4vc3BhaW4vZG9tYWluL3R5cGVzJztcblxuLy8gSW5kaWFcbmltcG9ydCB7IEluZGlhSW5jb21lVGF4U2VydmljZUltcGwgYXMgSW5kaWFJbmNvbWVUYXhTZXJ2aWNlIH0gZnJvbSAnLi9pbmRpYS9JbmRpYUluY29tZVRheFNlcnZpY2VJbXBsJztcbmltcG9ydCB7XG4gICAgQ29tcHV0ZWRJbmNvbWVUYXhWYWx1ZXMgYXMgSW5kaWFDb21wdXRlZEluY29tZVRheFZhbHVlcyxcbiAgICBJbmNvbWVUYXhSdWxlcyBhcyBJbmRpYUluY29tZVRheFJ1bGVzLFxufSBmcm9tICcuL2luZGlhL2RvbWFpbi90eXBlcyc7XG5cbi8vIEphcGFuXG5pbXBvcnQgeyBKYXBhbkluY29tZVRheFNlcnZpY2VJbXBsIGFzIEphcGFuSW5jb21lVGF4U2VydmljZSB9IGZyb20gJy4vamFwYW4vSmFwYW5JbmNvbWVUYXhTZXJ2aWNlSW1wbCc7XG5pbXBvcnQge1xuICAgIENvbXB1dGVkSW5jb21lVGF4VmFsdWVzIGFzIEphcGFuQ29tcHV0ZWRJbmNvbWVUYXhWYWx1ZXMsXG4gICAgSW5jb21lVGF4UnVsZXMgYXMgSmFwYW5JbmNvbWVUYXhSdWxlcyxcbn0gZnJvbSAnLi9qYXBhbi9kb21haW4vdHlwZXMnO1xuXG5leHBvcnQge1xuICAgIENhbmFkYUluY29tZVRheFNlcnZpY2UsXG4gICAgQ2FuYWRhQ29tcHV0ZWRJbmNvbWVUYXhWYWx1ZXMsXG4gICAgQ2FuYWRhSW5jb21lVGF4UnVsZXMsXG4gICAgRnJhbmNlSW5jb21lVGF4U2VydmljZSxcbiAgICBGcmFuY2VDb21wdXRlZEluY29tZVRheFZhbHVlcyxcbiAgICBGcmFuY2VJbmNvbWVUYXhSdWxlcyxcbiAgICBTb3V0aEFmcmljYUluY29tZVRheFNlcnZpY2UsXG4gICAgU291dGhBZnJpY2FDb21wdXRlZEluY29tZVRheFZhbHVlcyxcbiAgICBTb3V0aEFmcmljYUluY29tZVRheFJ1bGVzLFxuICAgIEF1c3RyYWxpYUluY29tZVRheFNlcnZpY2UsXG4gICAgQXVzdHJhbGlhQ29tcHV0ZWRJbmNvbWVUYXhWYWx1ZXMsXG4gICAgQXVzdHJhbGlhSW5jb21lVGF4UnVsZXMsXG4gICAgVUtJbmNvbWVUYXhTZXJ2aWNlLFxuICAgIFVLQ29tcHV0ZWRJbmNvbWVUYXhWYWx1ZXMsXG4gICAgVUtJbmNvbWVUYXhSdWxlcyxcbiAgICBVU0FJbmNvbWVUYXhTZXJ2aWNlLFxuICAgIFVTQUNvbXB1dGVkSW5jb21lVGF4VmFsdWVzLFxuICAgIFVTQUluY29tZVRheFJ1bGVzLFxuICAgIEdlcm1hbnlJbmNvbWVUYXhTZXJ2aWNlLFxuICAgIEdlcm1hbnlDb21wdXRlZEluY29tZVRheFZhbHVlcyxcbiAgICBHZXJtYW55SW5jb21lVGF4UnVsZXMsXG4gICAgQnJhemlsSW5jb21lVGF4U2VydmljZSxcbiAgICBCcmF6aWxDb21wdXRlZEluY29tZVRheFZhbHVlcyxcbiAgICBCcmF6aWxJbmNvbWVUYXhSdWxlcyxcbiAgICBTcGFpbkluY29tZVRheFNlcnZpY2UsXG4gICAgU3BhaW5Db21wdXRlZEluY29tZVRheFZhbHVlcyxcbiAgICBTcGFpbkluY29tZVRheFJ1bGVzLFxuICAgIEluZGlhSW5jb21lVGF4U2VydmljZSxcbiAgICBJbmRpYUNvbXB1dGVkSW5jb21lVGF4VmFsdWVzLFxuICAgIEluZGlhSW5jb21lVGF4UnVsZXMsXG4gICAgSmFwYW5JbmNvbWVUYXhTZXJ2aWNlLFxuICAgIEphcGFuQ29tcHV0ZWRJbmNvbWVUYXhWYWx1ZXMsXG4gICAgSmFwYW5JbmNvbWVUYXhSdWxlcyxcbn07Il19
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW5kaWFJbmNvbWVUYXhTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2luY29tZS10YXgvaW5kaWEvSW5kaWFJbmNvbWVUYXhTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wdXRlZEluY29tZVRheFZhbHVlcyB9IGZyb20gXCIuL2RvbWFpbi90eXBlc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEluZGlhSW5jb21lVGF4U2VydmljZSB7XG4gICAgY2FsY3VsYXRlTmV0SW5jb21lKCk6IENvbXB1dGVkSW5jb21lVGF4VmFsdWVzO1xufVxuIl19
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IndiaIncomeTaxServiceImpl = void 0;
4
+ class IndiaIncomeTaxServiceImpl {
5
+ constructor(income, rules) {
6
+ this._income = income;
7
+ this._rules = rules;
8
+ }
9
+ calculateNetIncome() {
10
+ const { grossTax, bracketBreakdown } = this.computeTaxBrackets(this._income);
11
+ const cess = grossTax * this._rules.cess.rate;
12
+ const totalDeductions = grossTax + cess;
13
+ const netIncome = this._income - totalDeductions;
14
+ return {
15
+ grossIncome: this._income,
16
+ incomeTax: this.round(grossTax),
17
+ cess: this.round(cess),
18
+ totalDeductions: this.round(totalDeductions),
19
+ netIncome: this.round(netIncome),
20
+ effectiveTaxRate: this._income > 0 ? this.round(grossTax / this._income, 4) : 0,
21
+ taxBracketBreakdown: bracketBreakdown,
22
+ };
23
+ }
24
+ computeTaxBrackets(income) {
25
+ let tax = 0;
26
+ const bracketBreakdown = [];
27
+ for (let index = 0; index < this._rules.taxBrackets.length; index++) {
28
+ const bracket = this._rules.taxBrackets[index];
29
+ if (income <= bracket.from) {
30
+ bracketBreakdown.push({
31
+ bracketIndex: index,
32
+ bracketName: `Bracket ${index + 1}`,
33
+ from: bracket.from,
34
+ to: bracket.to ?? null,
35
+ rate: bracket.rate,
36
+ amountInBracket: 0,
37
+ taxOnAmount: 0,
38
+ });
39
+ break;
40
+ }
41
+ const upper = bracket.to ?? income;
42
+ const taxableAmount = Math.min(upper, income) - bracket.from;
43
+ if (taxableAmount > 0) {
44
+ const taxOnAmount = taxableAmount * bracket.rate;
45
+ tax += taxOnAmount;
46
+ bracketBreakdown.push({
47
+ bracketIndex: index,
48
+ bracketName: `Bracket ${index + 1}`,
49
+ from: bracket.from,
50
+ to: bracket.to ?? null,
51
+ rate: bracket.rate,
52
+ amountInBracket: taxableAmount,
53
+ taxOnAmount,
54
+ });
55
+ }
56
+ else {
57
+ bracketBreakdown.push({
58
+ bracketIndex: index,
59
+ bracketName: `Bracket ${index + 1}`,
60
+ from: bracket.from,
61
+ to: bracket.to ?? null,
62
+ rate: bracket.rate,
63
+ amountInBracket: 0,
64
+ taxOnAmount: 0,
65
+ });
66
+ }
67
+ }
68
+ return { grossTax: tax, bracketBreakdown };
69
+ }
70
+ round(value, decimals = 2) {
71
+ return Number(value.toFixed(decimals));
72
+ }
73
+ }
74
+ exports.IndiaIncomeTaxServiceImpl = IndiaIncomeTaxServiceImpl;
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW5kaWFJbmNvbWVUYXhTZXJ2aWNlSW1wbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pbmNvbWUtdGF4L2luZGlhL0luZGlhSW5jb21lVGF4U2VydmljZUltcGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBSUEsTUFBYSx5QkFBeUI7SUFJbEMsWUFBWSxNQUFjLEVBQUUsS0FBcUI7UUFDN0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDeEIsQ0FBQztJQUVNLGtCQUFrQjtRQUNyQixNQUFNLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM3RSxNQUFNLElBQUksR0FBRyxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQzlDLE1BQU0sZUFBZSxHQUFHLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDeEMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sR0FBRyxlQUFlLENBQUM7UUFFakQsT0FBTztZQUNILFdBQVcsRUFBRSxJQUFJLENBQUMsT0FBTztZQUN6QixTQUFTLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7WUFDL0IsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBQ3RCLGVBQWUsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQztZQUM1QyxTQUFTLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7WUFDaEMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0UsbUJBQW1CLEVBQUUsZ0JBQWdCO1NBQ3hDLENBQUM7SUFDTixDQUFDO0lBRU8sa0JBQWtCLENBQ3RCLE1BQWM7UUFFZCxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDWixNQUFNLGdCQUFnQixHQUF3QixFQUFFLENBQUM7UUFFakQsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ2xFLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRS9DLElBQUksTUFBTSxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDekIsZ0JBQWdCLENBQUMsSUFBSSxDQUFDO29CQUNsQixZQUFZLEVBQUUsS0FBSztvQkFDbkIsV0FBVyxFQUFFLFdBQVcsS0FBSyxHQUFHLENBQUMsRUFBRTtvQkFDbkMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO29CQUNsQixFQUFFLEVBQUUsT0FBTyxDQUFDLEVBQUUsSUFBSSxJQUFJO29CQUN0QixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7b0JBQ2xCLGVBQWUsRUFBRSxDQUFDO29CQUNsQixXQUFXLEVBQUUsQ0FBQztpQkFDakIsQ0FBQyxDQUFDO2dCQUNILE1BQU07WUFDVixDQUFDO1lBRUQsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEVBQUUsSUFBSSxNQUFNLENBQUM7WUFDbkMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztZQUU3RCxJQUFJLGFBQWEsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDcEIsTUFBTSxXQUFXLEdBQUcsYUFBYSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0JBQ2pELEdBQUcsSUFBSSxXQUFXLENBQUM7Z0JBQ25CLGdCQUFnQixDQUFDLElBQUksQ0FBQztvQkFDbEIsWUFBWSxFQUFFLEtBQUs7b0JBQ25CLFdBQVcsRUFBRSxXQUFXLEtBQUssR0FBRyxDQUFDLEVBQUU7b0JBQ25DLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtvQkFDbEIsRUFBRSxFQUFFLE9BQU8sQ0FBQyxFQUFFLElBQUksSUFBSTtvQkFDdEIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO29CQUNsQixlQUFlLEVBQUUsYUFBYTtvQkFDOUIsV0FBVztpQkFDZCxDQUFDLENBQUM7WUFDUCxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osZ0JBQWdCLENBQUMsSUFBSSxDQUFDO29CQUNsQixZQUFZLEVBQUUsS0FBSztvQkFDbkIsV0FBVyxFQUFFLFdBQVcsS0FBSyxHQUFHLENBQUMsRUFBRTtvQkFDbkMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO29CQUNsQixFQUFFLEVBQUUsT0FBTyxDQUFDLEVBQUUsSUFBSSxJQUFJO29CQUN0QixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7b0JBQ2xCLGVBQWUsRUFBRSxDQUFDO29CQUNsQixXQUFXLEVBQUUsQ0FBQztpQkFDakIsQ0FBQyxDQUFDO1lBQ1AsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDO0lBQy9DLENBQUM7SUFFTyxLQUFLLENBQUMsS0FBYSxFQUFFLFFBQVEsR0FBRyxDQUFDO1FBQ3JDLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUMzQyxDQUFDO0NBQ0o7QUFsRkQsOERBa0ZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnJhY2tldEFsbG9jYXRpb24gfSBmcm9tIFwiLi4vZG9tYWluL3R5cGVzXCI7XG5pbXBvcnQgeyBJbmRpYUluY29tZVRheFNlcnZpY2UgfSBmcm9tIFwiLi9JbmRpYUluY29tZVRheFNlcnZpY2VcIjtcbmltcG9ydCB7IENvbXB1dGVkSW5jb21lVGF4VmFsdWVzLCBJbmNvbWVUYXhSdWxlcyB9IGZyb20gXCIuL2RvbWFpbi90eXBlc1wiO1xuXG5leHBvcnQgY2xhc3MgSW5kaWFJbmNvbWVUYXhTZXJ2aWNlSW1wbCBpbXBsZW1lbnRzIEluZGlhSW5jb21lVGF4U2VydmljZSB7XG4gICAgcHJpdmF0ZSBfaW5jb21lOiBudW1iZXI7XG4gICAgcHJpdmF0ZSBfcnVsZXM6IEluY29tZVRheFJ1bGVzO1xuXG4gICAgY29uc3RydWN0b3IoaW5jb21lOiBudW1iZXIsIHJ1bGVzOiBJbmNvbWVUYXhSdWxlcykge1xuICAgICAgICB0aGlzLl9pbmNvbWUgPSBpbmNvbWU7XG4gICAgICAgIHRoaXMuX3J1bGVzID0gcnVsZXM7XG4gICAgfVxuXG4gICAgcHVibGljIGNhbGN1bGF0ZU5ldEluY29tZSgpOiBDb21wdXRlZEluY29tZVRheFZhbHVlcyB7XG4gICAgICAgIGNvbnN0IHsgZ3Jvc3NUYXgsIGJyYWNrZXRCcmVha2Rvd24gfSA9IHRoaXMuY29tcHV0ZVRheEJyYWNrZXRzKHRoaXMuX2luY29tZSk7XG4gICAgICAgIGNvbnN0IGNlc3MgPSBncm9zc1RheCAqIHRoaXMuX3J1bGVzLmNlc3MucmF0ZTtcbiAgICAgICAgY29uc3QgdG90YWxEZWR1Y3Rpb25zID0gZ3Jvc3NUYXggKyBjZXNzO1xuICAgICAgICBjb25zdCBuZXRJbmNvbWUgPSB0aGlzLl9pbmNvbWUgLSB0b3RhbERlZHVjdGlvbnM7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGdyb3NzSW5jb21lOiB0aGlzLl9pbmNvbWUsXG4gICAgICAgICAgICBpbmNvbWVUYXg6IHRoaXMucm91bmQoZ3Jvc3NUYXgpLFxuICAgICAgICAgICAgY2VzczogdGhpcy5yb3VuZChjZXNzKSxcbiAgICAgICAgICAgIHRvdGFsRGVkdWN0aW9uczogdGhpcy5yb3VuZCh0b3RhbERlZHVjdGlvbnMpLFxuICAgICAgICAgICAgbmV0SW5jb21lOiB0aGlzLnJvdW5kKG5ldEluY29tZSksXG4gICAgICAgICAgICBlZmZlY3RpdmVUYXhSYXRlOiB0aGlzLl9pbmNvbWUgPiAwID8gdGhpcy5yb3VuZChncm9zc1RheCAvIHRoaXMuX2luY29tZSwgNCkgOiAwLFxuICAgICAgICAgICAgdGF4QnJhY2tldEJyZWFrZG93bjogYnJhY2tldEJyZWFrZG93bixcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbXB1dGVUYXhCcmFja2V0cyhcbiAgICAgICAgaW5jb21lOiBudW1iZXIsXG4gICAgKTogeyBncm9zc1RheDogbnVtYmVyOyBicmFja2V0QnJlYWtkb3duOiBCcmFja2V0QWxsb2NhdGlvbltdIH0ge1xuICAgICAgICBsZXQgdGF4ID0gMDtcbiAgICAgICAgY29uc3QgYnJhY2tldEJyZWFrZG93bjogQnJhY2tldEFsbG9jYXRpb25bXSA9IFtdO1xuXG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLl9ydWxlcy50YXhCcmFja2V0cy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICAgIGNvbnN0IGJyYWNrZXQgPSB0aGlzLl9ydWxlcy50YXhCcmFja2V0c1tpbmRleF07XG5cbiAgICAgICAgICAgIGlmIChpbmNvbWUgPD0gYnJhY2tldC5mcm9tKSB7XG4gICAgICAgICAgICAgICAgYnJhY2tldEJyZWFrZG93bi5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgYnJhY2tldEluZGV4OiBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgYnJhY2tldE5hbWU6IGBCcmFja2V0ICR7aW5kZXggKyAxfWAsXG4gICAgICAgICAgICAgICAgICAgIGZyb206IGJyYWNrZXQuZnJvbSxcbiAgICAgICAgICAgICAgICAgICAgdG86IGJyYWNrZXQudG8gPz8gbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgcmF0ZTogYnJhY2tldC5yYXRlLFxuICAgICAgICAgICAgICAgICAgICBhbW91bnRJbkJyYWNrZXQ6IDAsXG4gICAgICAgICAgICAgICAgICAgIHRheE9uQW1vdW50OiAwLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB1cHBlciA9IGJyYWNrZXQudG8gPz8gaW5jb21lO1xuICAgICAgICAgICAgY29uc3QgdGF4YWJsZUFtb3VudCA9IE1hdGgubWluKHVwcGVyLCBpbmNvbWUpIC0gYnJhY2tldC5mcm9tO1xuXG4gICAgICAgICAgICBpZiAodGF4YWJsZUFtb3VudCA+IDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0YXhPbkFtb3VudCA9IHRheGFibGVBbW91bnQgKiBicmFja2V0LnJhdGU7XG4gICAgICAgICAgICAgICAgdGF4ICs9IHRheE9uQW1vdW50O1xuICAgICAgICAgICAgICAgIGJyYWNrZXRCcmVha2Rvd24ucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGJyYWNrZXRJbmRleDogaW5kZXgsXG4gICAgICAgICAgICAgICAgICAgIGJyYWNrZXROYW1lOiBgQnJhY2tldCAke2luZGV4ICsgMX1gLFxuICAgICAgICAgICAgICAgICAgICBmcm9tOiBicmFja2V0LmZyb20sXG4gICAgICAgICAgICAgICAgICAgIHRvOiBicmFja2V0LnRvID8/IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIHJhdGU6IGJyYWNrZXQucmF0ZSxcbiAgICAgICAgICAgICAgICAgICAgYW1vdW50SW5CcmFja2V0OiB0YXhhYmxlQW1vdW50LFxuICAgICAgICAgICAgICAgICAgICB0YXhPbkFtb3VudCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYnJhY2tldEJyZWFrZG93bi5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgYnJhY2tldEluZGV4OiBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgYnJhY2tldE5hbWU6IGBCcmFja2V0ICR7aW5kZXggKyAxfWAsXG4gICAgICAgICAgICAgICAgICAgIGZyb206IGJyYWNrZXQuZnJvbSxcbiAgICAgICAgICAgICAgICAgICAgdG86IGJyYWNrZXQudG8gPz8gbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgcmF0ZTogYnJhY2tldC5yYXRlLFxuICAgICAgICAgICAgICAgICAgICBhbW91bnRJbkJyYWNrZXQ6IDAsXG4gICAgICAgICAgICAgICAgICAgIHRheE9uQW1vdW50OiAwLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHsgZ3Jvc3NUYXg6IHRheCwgYnJhY2tldEJyZWFrZG93biB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgcm91bmQodmFsdWU6IG51bWJlciwgZGVjaW1hbHMgPSAyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIE51bWJlcih2YWx1ZS50b0ZpeGVkKGRlY2ltYWxzKSk7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaW5jb21lLXRheC9pbmRpYS9kb21haW4vdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJyYWNrZXRBbGxvY2F0aW9uLCBUYXhCcmFja2V0IH0gZnJvbSBcIi4uLy4uL2RvbWFpbi90eXBlc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEluY29tZVRheFJ1bGVzIHtcbiAgICB0YXhCcmFja2V0czogVGF4QnJhY2tldFtdO1xuICAgIGNlc3M6IHsgcmF0ZTogbnVtYmVyIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcHV0ZWRJbmNvbWVUYXhWYWx1ZXMge1xuICAgIGdyb3NzSW5jb21lOiBudW1iZXI7XG4gICAgaW5jb21lVGF4OiBudW1iZXI7XG4gICAgY2VzczogbnVtYmVyO1xuICAgIHRvdGFsRGVkdWN0aW9uczogbnVtYmVyO1xuICAgIG5ldEluY29tZTogbnVtYmVyO1xuICAgIGVmZmVjdGl2ZVRheFJhdGU6IG51bWJlcjtcbiAgICB0YXhCcmFja2V0QnJlYWtkb3duOiBCcmFja2V0QWxsb2NhdGlvbltdO1xufVxuIl19
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSmFwYW5JbmNvbWVUYXhTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2luY29tZS10YXgvamFwYW4vSmFwYW5JbmNvbWVUYXhTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wdXRlZEluY29tZVRheFZhbHVlcyB9IGZyb20gXCIuL2RvbWFpbi90eXBlc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEphcGFuSW5jb21lVGF4U2VydmljZSB7XG4gICAgY2FsY3VsYXRlTmV0SW5jb21lKCk6IENvbXB1dGVkSW5jb21lVGF4VmFsdWVzO1xufVxuIl19
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JapanIncomeTaxServiceImpl = void 0;
4
+ class JapanIncomeTaxServiceImpl {
5
+ constructor(income, rules) {
6
+ this._income = income;
7
+ this._rules = rules;
8
+ }
9
+ calculateNetIncome() {
10
+ const { grossTax, bracketBreakdown } = this.computeTaxBrackets(this._income);
11
+ const inhabitantTax = this._income * this._rules.inhabitantTax.rate;
12
+ const totalDeductions = grossTax + inhabitantTax;
13
+ const netIncome = this._income - totalDeductions;
14
+ return {
15
+ grossIncome: this._income,
16
+ nationalIncomeTax: this.round(grossTax),
17
+ inhabitantTax: this.round(inhabitantTax),
18
+ totalDeductions: this.round(totalDeductions),
19
+ netIncome: this.round(netIncome),
20
+ effectiveTaxRate: this._income > 0 ? this.round(grossTax / this._income, 4) : 0,
21
+ taxBracketBreakdown: bracketBreakdown,
22
+ };
23
+ }
24
+ computeTaxBrackets(income) {
25
+ let tax = 0;
26
+ const bracketBreakdown = [];
27
+ for (let index = 0; index < this._rules.taxBrackets.length; index++) {
28
+ const bracket = this._rules.taxBrackets[index];
29
+ if (income <= bracket.from) {
30
+ bracketBreakdown.push({
31
+ bracketIndex: index,
32
+ bracketName: `Bracket ${index + 1}`,
33
+ from: bracket.from,
34
+ to: bracket.to ?? null,
35
+ rate: bracket.rate,
36
+ amountInBracket: 0,
37
+ taxOnAmount: 0,
38
+ });
39
+ break;
40
+ }
41
+ const upper = bracket.to ?? income;
42
+ const taxableAmount = Math.min(upper, income) - bracket.from;
43
+ if (taxableAmount > 0) {
44
+ const taxOnAmount = taxableAmount * bracket.rate;
45
+ tax += taxOnAmount;
46
+ bracketBreakdown.push({
47
+ bracketIndex: index,
48
+ bracketName: `Bracket ${index + 1}`,
49
+ from: bracket.from,
50
+ to: bracket.to ?? null,
51
+ rate: bracket.rate,
52
+ amountInBracket: taxableAmount,
53
+ taxOnAmount,
54
+ });
55
+ }
56
+ else {
57
+ bracketBreakdown.push({
58
+ bracketIndex: index,
59
+ bracketName: `Bracket ${index + 1}`,
60
+ from: bracket.from,
61
+ to: bracket.to ?? null,
62
+ rate: bracket.rate,
63
+ amountInBracket: 0,
64
+ taxOnAmount: 0,
65
+ });
66
+ }
67
+ }
68
+ return { grossTax: tax, bracketBreakdown };
69
+ }
70
+ round(value, decimals = 2) {
71
+ return Number(value.toFixed(decimals));
72
+ }
73
+ }
74
+ exports.JapanIncomeTaxServiceImpl = JapanIncomeTaxServiceImpl;
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSmFwYW5JbmNvbWVUYXhTZXJ2aWNlSW1wbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pbmNvbWUtdGF4L2phcGFuL0phcGFuSW5jb21lVGF4U2VydmljZUltcGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBSUEsTUFBYSx5QkFBeUI7SUFJbEMsWUFBWSxNQUFjLEVBQUUsS0FBcUI7UUFDN0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDeEIsQ0FBQztJQUVNLGtCQUFrQjtRQUNyQixNQUFNLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM3RSxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQztRQUNwRSxNQUFNLGVBQWUsR0FBRyxRQUFRLEdBQUcsYUFBYSxDQUFDO1FBQ2pELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsZUFBZSxDQUFDO1FBRWpELE9BQU87WUFDSCxXQUFXLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDekIsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7WUFDdkMsYUFBYSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDO1lBQ3hDLGVBQWUsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQztZQUM1QyxTQUFTLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7WUFDaEMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0UsbUJBQW1CLEVBQUUsZ0JBQWdCO1NBQ3hDLENBQUM7SUFDTixDQUFDO0lBRU8sa0JBQWtCLENBQ3RCLE1BQWM7UUFFZCxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDWixNQUFNLGdCQUFnQixHQUF3QixFQUFFLENBQUM7UUFFakQsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ2xFLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRS9DLElBQUksTUFBTSxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDekIsZ0JBQWdCLENBQUMsSUFBSSxDQUFDO29CQUNsQixZQUFZLEVBQUUsS0FBSztvQkFDbkIsV0FBVyxFQUFFLFdBQVcsS0FBSyxHQUFHLENBQUMsRUFBRTtvQkFDbkMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO29CQUNsQixFQUFFLEVBQUUsT0FBTyxDQUFDLEVBQUUsSUFBSSxJQUFJO29CQUN0QixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7b0JBQ2xCLGVBQWUsRUFBRSxDQUFDO29CQUNsQixXQUFXLEVBQUUsQ0FBQztpQkFDakIsQ0FBQyxDQUFDO2dCQUNILE1BQU07WUFDVixDQUFDO1lBRUQsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEVBQUUsSUFBSSxNQUFNLENBQUM7WUFDbkMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztZQUU3RCxJQUFJLGFBQWEsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDcEIsTUFBTSxXQUFXLEdBQUcsYUFBYSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0JBQ2pELEdBQUcsSUFBSSxXQUFXLENBQUM7Z0JBQ25CLGdCQUFnQixDQUFDLElBQUksQ0FBQztvQkFDbEIsWUFBWSxFQUFFLEtBQUs7b0JBQ25CLFdBQVcsRUFBRSxXQUFXLEtBQUssR0FBRyxDQUFDLEVBQUU7b0JBQ25DLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtvQkFDbEIsRUFBRSxFQUFFLE9BQU8sQ0FBQyxFQUFFLElBQUksSUFBSTtvQkFDdEIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO29CQUNsQixlQUFlLEVBQUUsYUFBYTtvQkFDOUIsV0FBVztpQkFDZCxDQUFDLENBQUM7WUFDUCxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osZ0JBQWdCLENBQUMsSUFBSSxDQUFDO29CQUNsQixZQUFZLEVBQUUsS0FBSztvQkFDbkIsV0FBVyxFQUFFLFdBQVcsS0FBSyxHQUFHLENBQUMsRUFBRTtvQkFDbkMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO29CQUNsQixFQUFFLEVBQUUsT0FBTyxDQUFDLEVBQUUsSUFBSSxJQUFJO29CQUN0QixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7b0JBQ2xCLGVBQWUsRUFBRSxDQUFDO29CQUNsQixXQUFXLEVBQUUsQ0FBQztpQkFDakIsQ0FBQyxDQUFDO1lBQ1AsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDO0lBQy9DLENBQUM7SUFFTyxLQUFLLENBQUMsS0FBYSxFQUFFLFFBQVEsR0FBRyxDQUFDO1FBQ3JDLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUMzQyxDQUFDO0NBQ0o7QUFsRkQsOERBa0ZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnJhY2tldEFsbG9jYXRpb24gfSBmcm9tIFwiLi4vZG9tYWluL3R5cGVzXCI7XG5pbXBvcnQgeyBKYXBhbkluY29tZVRheFNlcnZpY2UgfSBmcm9tIFwiLi9KYXBhbkluY29tZVRheFNlcnZpY2VcIjtcbmltcG9ydCB7IENvbXB1dGVkSW5jb21lVGF4VmFsdWVzLCBJbmNvbWVUYXhSdWxlcyB9IGZyb20gXCIuL2RvbWFpbi90eXBlc1wiO1xuXG5leHBvcnQgY2xhc3MgSmFwYW5JbmNvbWVUYXhTZXJ2aWNlSW1wbCBpbXBsZW1lbnRzIEphcGFuSW5jb21lVGF4U2VydmljZSB7XG4gICAgcHJpdmF0ZSBfaW5jb21lOiBudW1iZXI7XG4gICAgcHJpdmF0ZSBfcnVsZXM6IEluY29tZVRheFJ1bGVzO1xuXG4gICAgY29uc3RydWN0b3IoaW5jb21lOiBudW1iZXIsIHJ1bGVzOiBJbmNvbWVUYXhSdWxlcykge1xuICAgICAgICB0aGlzLl9pbmNvbWUgPSBpbmNvbWU7XG4gICAgICAgIHRoaXMuX3J1bGVzID0gcnVsZXM7XG4gICAgfVxuXG4gICAgcHVibGljIGNhbGN1bGF0ZU5ldEluY29tZSgpOiBDb21wdXRlZEluY29tZVRheFZhbHVlcyB7XG4gICAgICAgIGNvbnN0IHsgZ3Jvc3NUYXgsIGJyYWNrZXRCcmVha2Rvd24gfSA9IHRoaXMuY29tcHV0ZVRheEJyYWNrZXRzKHRoaXMuX2luY29tZSk7XG4gICAgICAgIGNvbnN0IGluaGFiaXRhbnRUYXggPSB0aGlzLl9pbmNvbWUgKiB0aGlzLl9ydWxlcy5pbmhhYml0YW50VGF4LnJhdGU7XG4gICAgICAgIGNvbnN0IHRvdGFsRGVkdWN0aW9ucyA9IGdyb3NzVGF4ICsgaW5oYWJpdGFudFRheDtcbiAgICAgICAgY29uc3QgbmV0SW5jb21lID0gdGhpcy5faW5jb21lIC0gdG90YWxEZWR1Y3Rpb25zO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBncm9zc0luY29tZTogdGhpcy5faW5jb21lLFxuICAgICAgICAgICAgbmF0aW9uYWxJbmNvbWVUYXg6IHRoaXMucm91bmQoZ3Jvc3NUYXgpLFxuICAgICAgICAgICAgaW5oYWJpdGFudFRheDogdGhpcy5yb3VuZChpbmhhYml0YW50VGF4KSxcbiAgICAgICAgICAgIHRvdGFsRGVkdWN0aW9uczogdGhpcy5yb3VuZCh0b3RhbERlZHVjdGlvbnMpLFxuICAgICAgICAgICAgbmV0SW5jb21lOiB0aGlzLnJvdW5kKG5ldEluY29tZSksXG4gICAgICAgICAgICBlZmZlY3RpdmVUYXhSYXRlOiB0aGlzLl9pbmNvbWUgPiAwID8gdGhpcy5yb3VuZChncm9zc1RheCAvIHRoaXMuX2luY29tZSwgNCkgOiAwLFxuICAgICAgICAgICAgdGF4QnJhY2tldEJyZWFrZG93bjogYnJhY2tldEJyZWFrZG93bixcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbXB1dGVUYXhCcmFja2V0cyhcbiAgICAgICAgaW5jb21lOiBudW1iZXIsXG4gICAgKTogeyBncm9zc1RheDogbnVtYmVyOyBicmFja2V0QnJlYWtkb3duOiBCcmFja2V0QWxsb2NhdGlvbltdIH0ge1xuICAgICAgICBsZXQgdGF4ID0gMDtcbiAgICAgICAgY29uc3QgYnJhY2tldEJyZWFrZG93bjogQnJhY2tldEFsbG9jYXRpb25bXSA9IFtdO1xuXG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLl9ydWxlcy50YXhCcmFja2V0cy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICAgIGNvbnN0IGJyYWNrZXQgPSB0aGlzLl9ydWxlcy50YXhCcmFja2V0c1tpbmRleF07XG5cbiAgICAgICAgICAgIGlmIChpbmNvbWUgPD0gYnJhY2tldC5mcm9tKSB7XG4gICAgICAgICAgICAgICAgYnJhY2tldEJyZWFrZG93bi5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgYnJhY2tldEluZGV4OiBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgYnJhY2tldE5hbWU6IGBCcmFja2V0ICR7aW5kZXggKyAxfWAsXG4gICAgICAgICAgICAgICAgICAgIGZyb206IGJyYWNrZXQuZnJvbSxcbiAgICAgICAgICAgICAgICAgICAgdG86IGJyYWNrZXQudG8gPz8gbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgcmF0ZTogYnJhY2tldC5yYXRlLFxuICAgICAgICAgICAgICAgICAgICBhbW91bnRJbkJyYWNrZXQ6IDAsXG4gICAgICAgICAgICAgICAgICAgIHRheE9uQW1vdW50OiAwLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB1cHBlciA9IGJyYWNrZXQudG8gPz8gaW5jb21lO1xuICAgICAgICAgICAgY29uc3QgdGF4YWJsZUFtb3VudCA9IE1hdGgubWluKHVwcGVyLCBpbmNvbWUpIC0gYnJhY2tldC5mcm9tO1xuXG4gICAgICAgICAgICBpZiAodGF4YWJsZUFtb3VudCA+IDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0YXhPbkFtb3VudCA9IHRheGFibGVBbW91bnQgKiBicmFja2V0LnJhdGU7XG4gICAgICAgICAgICAgICAgdGF4ICs9IHRheE9uQW1vdW50O1xuICAgICAgICAgICAgICAgIGJyYWNrZXRCcmVha2Rvd24ucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGJyYWNrZXRJbmRleDogaW5kZXgsXG4gICAgICAgICAgICAgICAgICAgIGJyYWNrZXROYW1lOiBgQnJhY2tldCAke2luZGV4ICsgMX1gLFxuICAgICAgICAgICAgICAgICAgICBmcm9tOiBicmFja2V0LmZyb20sXG4gICAgICAgICAgICAgICAgICAgIHRvOiBicmFja2V0LnRvID8/IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIHJhdGU6IGJyYWNrZXQucmF0ZSxcbiAgICAgICAgICAgICAgICAgICAgYW1vdW50SW5CcmFja2V0OiB0YXhhYmxlQW1vdW50LFxuICAgICAgICAgICAgICAgICAgICB0YXhPbkFtb3VudCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYnJhY2tldEJyZWFrZG93bi5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgYnJhY2tldEluZGV4OiBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgYnJhY2tldE5hbWU6IGBCcmFja2V0ICR7aW5kZXggKyAxfWAsXG4gICAgICAgICAgICAgICAgICAgIGZyb206IGJyYWNrZXQuZnJvbSxcbiAgICAgICAgICAgICAgICAgICAgdG86IGJyYWNrZXQudG8gPz8gbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgcmF0ZTogYnJhY2tldC5yYXRlLFxuICAgICAgICAgICAgICAgICAgICBhbW91bnRJbkJyYWNrZXQ6IDAsXG4gICAgICAgICAgICAgICAgICAgIHRheE9uQW1vdW50OiAwLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHsgZ3Jvc3NUYXg6IHRheCwgYnJhY2tldEJyZWFrZG93biB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgcm91bmQodmFsdWU6IG51bWJlciwgZGVjaW1hbHMgPSAyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIE51bWJlcih2YWx1ZS50b0ZpeGVkKGRlY2ltYWxzKSk7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaW5jb21lLXRheC9qYXBhbi9kb21haW4vdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJyYWNrZXRBbGxvY2F0aW9uLCBUYXhCcmFja2V0IH0gZnJvbSBcIi4uLy4uL2RvbWFpbi90eXBlc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEluY29tZVRheFJ1bGVzIHtcbiAgICB0YXhCcmFja2V0czogVGF4QnJhY2tldFtdO1xuICAgIGluaGFiaXRhbnRUYXg6IHsgcmF0ZTogbnVtYmVyIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcHV0ZWRJbmNvbWVUYXhWYWx1ZXMge1xuICAgIGdyb3NzSW5jb21lOiBudW1iZXI7XG4gICAgbmF0aW9uYWxJbmNvbWVUYXg6IG51bWJlcjtcbiAgICBpbmhhYml0YW50VGF4OiBudW1iZXI7XG4gICAgdG90YWxEZWR1Y3Rpb25zOiBudW1iZXI7XG4gICAgbmV0SW5jb21lOiBudW1iZXI7XG4gICAgZWZmZWN0aXZlVGF4UmF0ZTogbnVtYmVyO1xuICAgIHRheEJyYWNrZXRCcmVha2Rvd246IEJyYWNrZXRBbGxvY2F0aW9uW107XG59XG4iXX0=
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3BhaW5JbmNvbWVUYXhTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2luY29tZS10YXgvc3BhaW4vU3BhaW5JbmNvbWVUYXhTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wdXRlZEluY29tZVRheFZhbHVlcyB9IGZyb20gXCIuL2RvbWFpbi90eXBlc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNwYWluSW5jb21lVGF4U2VydmljZSB7XG4gICAgY2FsY3VsYXRlTmV0SW5jb21lKCk6IENvbXB1dGVkSW5jb21lVGF4VmFsdWVzO1xufVxuIl19
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SpainIncomeTaxServiceImpl = void 0;
4
+ class SpainIncomeTaxServiceImpl {
5
+ constructor(income, rules) {
6
+ this._income = income;
7
+ this._rules = rules;
8
+ }
9
+ calculateNetIncome() {
10
+ const { grossTax, bracketBreakdown } = this.computeTaxBrackets(this._income);
11
+ const socialContributions = this._income * this._rules.socialContributions.rate;
12
+ const totalDeductions = grossTax + socialContributions;
13
+ const netIncome = this._income - totalDeductions;
14
+ return {
15
+ grossIncome: this._income,
16
+ incomeTax: this.round(grossTax),
17
+ socialContributions: this.round(socialContributions),
18
+ totalDeductions: this.round(totalDeductions),
19
+ netIncome: this.round(netIncome),
20
+ effectiveTaxRate: this._income > 0 ? this.round(grossTax / this._income, 4) : 0,
21
+ taxBracketBreakdown: bracketBreakdown,
22
+ };
23
+ }
24
+ computeTaxBrackets(income) {
25
+ let tax = 0;
26
+ const bracketBreakdown = [];
27
+ for (let index = 0; index < this._rules.taxBrackets.length; index++) {
28
+ const bracket = this._rules.taxBrackets[index];
29
+ if (income <= bracket.from) {
30
+ bracketBreakdown.push({
31
+ bracketIndex: index,
32
+ bracketName: `Bracket ${index + 1}`,
33
+ from: bracket.from,
34
+ to: bracket.to ?? null,
35
+ rate: bracket.rate,
36
+ amountInBracket: 0,
37
+ taxOnAmount: 0,
38
+ });
39
+ break;
40
+ }
41
+ const upper = bracket.to ?? income;
42
+ const taxableAmount = Math.min(upper, income) - bracket.from;
43
+ const taxOnAmount = taxableAmount * bracket.rate;
44
+ tax += taxOnAmount;
45
+ bracketBreakdown.push({
46
+ bracketIndex: index,
47
+ bracketName: `Bracket ${index + 1}`,
48
+ from: bracket.from,
49
+ to: bracket.to ?? null,
50
+ rate: bracket.rate,
51
+ amountInBracket: taxableAmount,
52
+ taxOnAmount,
53
+ });
54
+ }
55
+ return { grossTax: tax, bracketBreakdown };
56
+ }
57
+ round(value, decimals = 2) {
58
+ return Number(value.toFixed(decimals));
59
+ }
60
+ }
61
+ exports.SpainIncomeTaxServiceImpl = SpainIncomeTaxServiceImpl;
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3BhaW5JbmNvbWVUYXhTZXJ2aWNlSW1wbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pbmNvbWUtdGF4L3NwYWluL1NwYWluSW5jb21lVGF4U2VydmljZUltcGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBSUEsTUFBYSx5QkFBeUI7SUFJbEMsWUFBWSxNQUFjLEVBQUUsS0FBcUI7UUFDN0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDeEIsQ0FBQztJQUVNLGtCQUFrQjtRQUNyQixNQUFNLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM3RSxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUM7UUFDaEYsTUFBTSxlQUFlLEdBQUcsUUFBUSxHQUFHLG1CQUFtQixDQUFDO1FBQ3ZELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsZUFBZSxDQUFDO1FBRWpELE9BQU87WUFDSCxXQUFXLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDekIsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO1lBQy9CLG1CQUFtQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUM7WUFDcEQsZUFBZSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDO1lBQzVDLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQztZQUNoQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMvRSxtQkFBbUIsRUFBRSxnQkFBZ0I7U0FDeEMsQ0FBQztJQUNOLENBQUM7SUFFTyxrQkFBa0IsQ0FDdEIsTUFBYztRQUVkLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztRQUNaLE1BQU0sZ0JBQWdCLEdBQXdCLEVBQUUsQ0FBQztRQUVqRCxLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDbEUsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFL0MsSUFBSSxNQUFNLElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUN6QixnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7b0JBQ2xCLFlBQVksRUFBRSxLQUFLO29CQUNuQixXQUFXLEVBQUUsV0FBVyxLQUFLLEdBQUcsQ0FBQyxFQUFFO29CQUNuQyxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7b0JBQ2xCLEVBQUUsRUFBRSxPQUFPLENBQUMsRUFBRSxJQUFJLElBQUk7b0JBQ3RCLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtvQkFDbEIsZUFBZSxFQUFFLENBQUM7b0JBQ2xCLFdBQVcsRUFBRSxDQUFDO2lCQUNqQixDQUFDLENBQUM7Z0JBQ0gsTUFBTTtZQUNWLENBQUM7WUFFRCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsRUFBRSxJQUFJLE1BQU0sQ0FBQztZQUNuQyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO1lBRTdELE1BQU0sV0FBVyxHQUFHLGFBQWEsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO1lBQ2pELEdBQUcsSUFBSSxXQUFXLENBQUM7WUFDbkIsZ0JBQWdCLENBQUMsSUFBSSxDQUFDO2dCQUNsQixZQUFZLEVBQUUsS0FBSztnQkFDbkIsV0FBVyxFQUFFLFdBQVcsS0FBSyxHQUFHLENBQUMsRUFBRTtnQkFDbkMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO2dCQUNsQixFQUFFLEVBQUUsT0FBTyxDQUFDLEVBQUUsSUFBSSxJQUFJO2dCQUN0QixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7Z0JBQ2xCLGVBQWUsRUFBRSxhQUFhO2dCQUM5QixXQUFXO2FBQ2QsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztRQUVELE9BQU8sRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLGdCQUFnQixFQUFFLENBQUM7SUFDL0MsQ0FBQztJQUVPLEtBQUssQ0FBQyxLQUFhLEVBQUUsUUFBUSxHQUFHLENBQUM7UUFDckMsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQzNDLENBQUM7Q0FDSjtBQXRFRCw4REFzRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCcmFja2V0QWxsb2NhdGlvbiB9IGZyb20gXCIuLi9kb21haW4vdHlwZXNcIjtcbmltcG9ydCB7IFNwYWluSW5jb21lVGF4U2VydmljZSB9IGZyb20gXCIuL1NwYWluSW5jb21lVGF4U2VydmljZVwiO1xuaW1wb3J0IHsgQ29tcHV0ZWRJbmNvbWVUYXhWYWx1ZXMsIEluY29tZVRheFJ1bGVzIH0gZnJvbSBcIi4vZG9tYWluL3R5cGVzXCI7XG5cbmV4cG9ydCBjbGFzcyBTcGFpbkluY29tZVRheFNlcnZpY2VJbXBsIGltcGxlbWVudHMgU3BhaW5JbmNvbWVUYXhTZXJ2aWNlIHtcbiAgICBwcml2YXRlIF9pbmNvbWU6IG51bWJlcjtcbiAgICBwcml2YXRlIF9ydWxlczogSW5jb21lVGF4UnVsZXM7XG5cbiAgICBjb25zdHJ1Y3RvcihpbmNvbWU6IG51bWJlciwgcnVsZXM6IEluY29tZVRheFJ1bGVzKSB7XG4gICAgICAgIHRoaXMuX2luY29tZSA9IGluY29tZTtcbiAgICAgICAgdGhpcy5fcnVsZXMgPSBydWxlcztcbiAgICB9XG5cbiAgICBwdWJsaWMgY2FsY3VsYXRlTmV0SW5jb21lKCk6IENvbXB1dGVkSW5jb21lVGF4VmFsdWVzIHtcbiAgICAgICAgY29uc3QgeyBncm9zc1RheCwgYnJhY2tldEJyZWFrZG93biB9ID0gdGhpcy5jb21wdXRlVGF4QnJhY2tldHModGhpcy5faW5jb21lKTtcbiAgICAgICAgY29uc3Qgc29jaWFsQ29udHJpYnV0aW9ucyA9IHRoaXMuX2luY29tZSAqIHRoaXMuX3J1bGVzLnNvY2lhbENvbnRyaWJ1dGlvbnMucmF0ZTtcbiAgICAgICAgY29uc3QgdG90YWxEZWR1Y3Rpb25zID0gZ3Jvc3NUYXggKyBzb2NpYWxDb250cmlidXRpb25zO1xuICAgICAgICBjb25zdCBuZXRJbmNvbWUgPSB0aGlzLl9pbmNvbWUgLSB0b3RhbERlZHVjdGlvbnM7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGdyb3NzSW5jb21lOiB0aGlzLl9pbmNvbWUsXG4gICAgICAgICAgICBpbmNvbWVUYXg6IHRoaXMucm91bmQoZ3Jvc3NUYXgpLFxuICAgICAgICAgICAgc29jaWFsQ29udHJpYnV0aW9uczogdGhpcy5yb3VuZChzb2NpYWxDb250cmlidXRpb25zKSxcbiAgICAgICAgICAgIHRvdGFsRGVkdWN0aW9uczogdGhpcy5yb3VuZCh0b3RhbERlZHVjdGlvbnMpLFxuICAgICAgICAgICAgbmV0SW5jb21lOiB0aGlzLnJvdW5kKG5ldEluY29tZSksXG4gICAgICAgICAgICBlZmZlY3RpdmVUYXhSYXRlOiB0aGlzLl9pbmNvbWUgPiAwID8gdGhpcy5yb3VuZChncm9zc1RheCAvIHRoaXMuX2luY29tZSwgNCkgOiAwLFxuICAgICAgICAgICAgdGF4QnJhY2tldEJyZWFrZG93bjogYnJhY2tldEJyZWFrZG93bixcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbXB1dGVUYXhCcmFja2V0cyhcbiAgICAgICAgaW5jb21lOiBudW1iZXIsXG4gICAgKTogeyBncm9zc1RheDogbnVtYmVyOyBicmFja2V0QnJlYWtkb3duOiBCcmFja2V0QWxsb2NhdGlvbltdIH0ge1xuICAgICAgICBsZXQgdGF4ID0gMDtcbiAgICAgICAgY29uc3QgYnJhY2tldEJyZWFrZG93bjogQnJhY2tldEFsbG9jYXRpb25bXSA9IFtdO1xuXG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLl9ydWxlcy50YXhCcmFja2V0cy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICAgIGNvbnN0IGJyYWNrZXQgPSB0aGlzLl9ydWxlcy50YXhCcmFja2V0c1tpbmRleF07XG5cbiAgICAgICAgICAgIGlmIChpbmNvbWUgPD0gYnJhY2tldC5mcm9tKSB7XG4gICAgICAgICAgICAgICAgYnJhY2tldEJyZWFrZG93bi5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgYnJhY2tldEluZGV4OiBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgYnJhY2tldE5hbWU6IGBCcmFja2V0ICR7aW5kZXggKyAxfWAsXG4gICAgICAgICAgICAgICAgICAgIGZyb206IGJyYWNrZXQuZnJvbSxcbiAgICAgICAgICAgICAgICAgICAgdG86IGJyYWNrZXQudG8gPz8gbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgcmF0ZTogYnJhY2tldC5yYXRlLFxuICAgICAgICAgICAgICAgICAgICBhbW91bnRJbkJyYWNrZXQ6IDAsXG4gICAgICAgICAgICAgICAgICAgIHRheE9uQW1vdW50OiAwLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB1cHBlciA9IGJyYWNrZXQudG8gPz8gaW5jb21lO1xuICAgICAgICAgICAgY29uc3QgdGF4YWJsZUFtb3VudCA9IE1hdGgubWluKHVwcGVyLCBpbmNvbWUpIC0gYnJhY2tldC5mcm9tO1xuXG4gICAgICAgICAgICBjb25zdCB0YXhPbkFtb3VudCA9IHRheGFibGVBbW91bnQgKiBicmFja2V0LnJhdGU7XG4gICAgICAgICAgICB0YXggKz0gdGF4T25BbW91bnQ7XG4gICAgICAgICAgICBicmFja2V0QnJlYWtkb3duLnB1c2goe1xuICAgICAgICAgICAgICAgIGJyYWNrZXRJbmRleDogaW5kZXgsXG4gICAgICAgICAgICAgICAgYnJhY2tldE5hbWU6IGBCcmFja2V0ICR7aW5kZXggKyAxfWAsXG4gICAgICAgICAgICAgICAgZnJvbTogYnJhY2tldC5mcm9tLFxuICAgICAgICAgICAgICAgIHRvOiBicmFja2V0LnRvID8/IG51bGwsXG4gICAgICAgICAgICAgICAgcmF0ZTogYnJhY2tldC5yYXRlLFxuICAgICAgICAgICAgICAgIGFtb3VudEluQnJhY2tldDogdGF4YWJsZUFtb3VudCxcbiAgICAgICAgICAgICAgICB0YXhPbkFtb3VudCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHsgZ3Jvc3NUYXg6IHRheCwgYnJhY2tldEJyZWFrZG93biB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgcm91bmQodmFsdWU6IG51bWJlciwgZGVjaW1hbHMgPSAyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIE51bWJlcih2YWx1ZS50b0ZpeGVkKGRlY2ltYWxzKSk7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaW5jb21lLXRheC9zcGFpbi9kb21haW4vdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJyYWNrZXRBbGxvY2F0aW9uLCBUYXhCcmFja2V0IH0gZnJvbSBcIi4uLy4uL2RvbWFpbi90eXBlc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEluY29tZVRheFJ1bGVzIHtcbiAgICB0YXhCcmFja2V0czogVGF4QnJhY2tldFtdO1xuICAgIHNvY2lhbENvbnRyaWJ1dGlvbnM6IHsgcmF0ZTogbnVtYmVyIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcHV0ZWRJbmNvbWVUYXhWYWx1ZXMge1xuICAgIGdyb3NzSW5jb21lOiBudW1iZXI7XG4gICAgaW5jb21lVGF4OiBudW1iZXI7XG4gICAgc29jaWFsQ29udHJpYnV0aW9uczogbnVtYmVyO1xuICAgIHRvdGFsRGVkdWN0aW9uczogbnVtYmVyO1xuICAgIG5ldEluY29tZTogbnVtYmVyO1xuICAgIGVmZmVjdGl2ZVRheFJhdGU6IG51bWJlcjtcbiAgICB0YXhCcmFja2V0QnJlYWtkb3duOiBCcmFja2V0QWxsb2NhdGlvbltdO1xufVxuIl19
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GermanyInheritanceTaxService = exports.USAInheritanceTaxService = exports.UKInheritanceTaxService = exports.AustraliaInheritanceTaxService = exports.SouthAfricaInheritanceTaxService = exports.FranceInheritanceTaxService = exports.CanadaInheritanceTaxService = void 0;
3
+ exports.JapanInheritanceTaxService = exports.SpainInheritanceTaxService = exports.GermanyInheritanceTaxService = exports.USAInheritanceTaxService = exports.UKInheritanceTaxService = exports.AustraliaInheritanceTaxService = exports.SouthAfricaInheritanceTaxService = exports.FranceInheritanceTaxService = exports.CanadaInheritanceTaxService = void 0;
4
4
  // Canada
5
5
  const CanadaInheritanceTaxServiceImpl_1 = require("./canada/CanadaInheritanceTaxServiceImpl");
6
6
  Object.defineProperty(exports, "CanadaInheritanceTaxService", { enumerable: true, get: function () { return CanadaInheritanceTaxServiceImpl_1.CanadaInheritanceTaxServiceImpl; } });
@@ -22,4 +22,10 @@ Object.defineProperty(exports, "USAInheritanceTaxService", { enumerable: true, g
22
22
  // Germany
23
23
  const GermanyInheritanceTaxServiceImpl_1 = require("./germany/GermanyInheritanceTaxServiceImpl");
24
24
  Object.defineProperty(exports, "GermanyInheritanceTaxService", { enumerable: true, get: function () { return GermanyInheritanceTaxServiceImpl_1.GermanyInheritanceTaxServiceImpl; } });
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5oZXJpdGFuY2UtdGF4L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLFNBQVM7QUFDVCw4RkFBMEg7QUF3RHRILDRHQXhEd0MsaUVBQTJCLE9Bd0R4QztBQWpEL0IsU0FBUztBQUNULDhGQUEwSDtBQW9EdEgsNEdBcER3QyxpRUFBMkIsT0FvRHhDO0FBN0MvQixlQUFlO0FBQ2YsOEdBQStJO0FBZ0QzSSxpSEFoRDZDLDJFQUFnQyxPQWdEN0M7QUF6Q3BDLFlBQVk7QUFDWix1R0FBc0k7QUE0Q2xJLCtHQTVDMkMsdUVBQThCLE9BNEMzQztBQXJDbEMsS0FBSztBQUNMLGtGQUEwRztBQXdDdEcsd0dBeENvQyx5REFBdUIsT0F3Q3BDO0FBakMzQixNQUFNO0FBQ04scUZBQThHO0FBb0MxRyx5R0FwQ3FDLDJEQUF3QixPQW9DckM7QUE3QjVCLFVBQVU7QUFDVixpR0FBOEg7QUFnQzFILDZHQWhDeUMsbUVBQTRCLE9BZ0N6QyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENhbmFkYVxuaW1wb3J0IHsgQ2FuYWRhSW5oZXJpdGFuY2VUYXhTZXJ2aWNlSW1wbCBhcyBDYW5hZGFJbmhlcml0YW5jZVRheFNlcnZpY2UgfSBmcm9tICcuL2NhbmFkYS9DYW5hZGFJbmhlcml0YW5jZVRheFNlcnZpY2VJbXBsJztcbmltcG9ydCB7XG4gICAgSW5wdXQgYXMgQ2FuYWRhSW5oZXJpdGFuY2VUYXhJbnB1dCxcbiAgICBSdWxlcyBhcyBDYW5hZGFJbmhlcml0YW5jZVRheFJ1bGVzLFxuICAgIFJlc3VsdCBhcyBDYW5hZGFJbmhlcml0YW5jZVRheFJlc3VsdCxcbn0gZnJvbSAnLi9jYW5hZGEvZG9tYWluL3R5cGVzJztcblxuLy8gRnJhbmNlXG5pbXBvcnQgeyBGcmFuY2VJbmhlcml0YW5jZVRheFNlcnZpY2VJbXBsIGFzIEZyYW5jZUluaGVyaXRhbmNlVGF4U2VydmljZSB9IGZyb20gJy4vZnJhbmNlL0ZyYW5jZUluaGVyaXRhbmNlVGF4U2VydmljZUltcGwnO1xuaW1wb3J0IHtcbiAgICBJbnB1dCBhcyBGcmFuY2VJbmhlcml0YW5jZVRheElucHV0LFxuICAgIFJ1bGVzIGFzIEZyYW5jZUluaGVyaXRhbmNlVGF4UnVsZXMsXG4gICAgUmVzdWx0IGFzIEZyYW5jZUluaGVyaXRhbmNlVGF4UmVzdWx0LFxufSBmcm9tICcuL2ZyYW5jZS9kb21haW4vdHlwZXMnO1xuXG4vLyBTb3V0aCBBZnJpY2FcbmltcG9ydCB7IFNvdXRoQWZyaWNhSW5oZXJpdGFuY2VUYXhTZXJ2aWNlSW1wbCBhcyBTb3V0aEFmcmljYUluaGVyaXRhbmNlVGF4U2VydmljZSB9IGZyb20gJy4vc291dGgtYWZyaWNhL1NvdXRoQWZyaWNhSW5oZXJpdGFuY2VUYXhTZXJ2aWNlSW1wbCc7XG5pbXBvcnQge1xuICAgIElucHV0IGFzIFNvdXRoQWZyaWNhSW5oZXJpdGFuY2VUYXhJbnB1dCxcbiAgICBSdWxlcyBhcyBTb3V0aEFmcmljYUluaGVyaXRhbmNlVGF4UnVsZXMsXG4gICAgUmVzdWx0IGFzIFNvdXRoQWZyaWNhSW5oZXJpdGFuY2VUYXhSZXN1bHQsXG59IGZyb20gJy4vc291dGgtYWZyaWNhL2RvbWFpbi90eXBlcyc7XG5cbi8vIEF1c3RyYWxpYVxuaW1wb3J0IHsgQXVzdHJhbGlhSW5oZXJpdGFuY2VUYXhTZXJ2aWNlSW1wbCBhcyBBdXN0cmFsaWFJbmhlcml0YW5jZVRheFNlcnZpY2UgfSBmcm9tICcuL2F1c3RyYWxpYS9BdXN0cmFsaWFJbmhlcml0YW5jZVRheFNlcnZpY2VJbXBsJztcbmltcG9ydCB7XG4gICAgSW5wdXQgYXMgQXVzdHJhbGlhSW5oZXJpdGFuY2VUYXhJbnB1dCxcbiAgICBSdWxlcyBhcyBBdXN0cmFsaWFJbmhlcml0YW5jZVRheFJ1bGVzLFxuICAgIFJlc3VsdCBhcyBBdXN0cmFsaWFJbmhlcml0YW5jZVRheFJlc3VsdCxcbn0gZnJvbSAnLi9hdXN0cmFsaWEvZG9tYWluL3R5cGVzJztcblxuLy8gVUtcbmltcG9ydCB7IFVLSW5oZXJpdGFuY2VUYXhTZXJ2aWNlSW1wbCBhcyBVS0luaGVyaXRhbmNlVGF4U2VydmljZSB9IGZyb20gJy4vdWsvVUtJbmhlcml0YW5jZVRheFNlcnZpY2VJbXBsJztcbmltcG9ydCB7XG4gICAgSW5wdXQgYXMgVUtJbmhlcml0YW5jZVRheElucHV0LFxuICAgIFJ1bGVzIGFzIFVLSW5oZXJpdGFuY2VUYXhSdWxlcyxcbiAgICBSZXN1bHQgYXMgVUtJbmhlcml0YW5jZVRheFJlc3VsdCxcbn0gZnJvbSAnLi91ay9kb21haW4vdHlwZXMnO1xuXG4vLyBVU0FcbmltcG9ydCB7IFVTQUluaGVyaXRhbmNlVGF4U2VydmljZUltcGwgYXMgVVNBSW5oZXJpdGFuY2VUYXhTZXJ2aWNlIH0gZnJvbSAnLi91c2EvVVNBSW5oZXJpdGFuY2VUYXhTZXJ2aWNlSW1wbCc7XG5pbXBvcnQge1xuICAgIElucHV0IGFzIFVTQUluaGVyaXRhbmNlVGF4SW5wdXQsXG4gICAgUnVsZXMgYXMgVVNBSW5oZXJpdGFuY2VUYXhSdWxlcyxcbiAgICBSZXN1bHQgYXMgVVNBSW5oZXJpdGFuY2VUYXhSZXN1bHQsXG59IGZyb20gJy4vdXNhL2RvbWFpbi90eXBlcyc7XG5cbi8vIEdlcm1hbnlcbmltcG9ydCB7IEdlcm1hbnlJbmhlcml0YW5jZVRheFNlcnZpY2VJbXBsIGFzIEdlcm1hbnlJbmhlcml0YW5jZVRheFNlcnZpY2UgfSBmcm9tICcuL2dlcm1hbnkvR2VybWFueUluaGVyaXRhbmNlVGF4U2VydmljZUltcGwnO1xuaW1wb3J0IHtcbiAgICBJbnB1dCBhcyBHZXJtYW55SW5oZXJpdGFuY2VUYXhJbnB1dCxcbiAgICBSdWxlcyBhcyBHZXJtYW55SW5oZXJpdGFuY2VUYXhSdWxlcyxcbiAgICBSZXN1bHQgYXMgR2VybWFueUluaGVyaXRhbmNlVGF4UmVzdWx0LFxufSBmcm9tICcuL2dlcm1hbnkvZG9tYWluL3R5cGVzJztcblxuZXhwb3J0IHtcbiAgICBDYW5hZGFJbmhlcml0YW5jZVRheFNlcnZpY2UsXG4gICAgQ2FuYWRhSW5oZXJpdGFuY2VUYXhJbnB1dCxcbiAgICBDYW5hZGFJbmhlcml0YW5jZVRheFJ1bGVzLFxuICAgIENhbmFkYUluaGVyaXRhbmNlVGF4UmVzdWx0LFxuICAgIEZyYW5jZUluaGVyaXRhbmNlVGF4U2VydmljZSxcbiAgICBGcmFuY2VJbmhlcml0YW5jZVRheElucHV0LFxuICAgIEZyYW5jZUluaGVyaXRhbmNlVGF4UnVsZXMsXG4gICAgRnJhbmNlSW5oZXJpdGFuY2VUYXhSZXN1bHQsXG4gICAgU291dGhBZnJpY2FJbmhlcml0YW5jZVRheFNlcnZpY2UsXG4gICAgU291dGhBZnJpY2FJbmhlcml0YW5jZVRheElucHV0LFxuICAgIFNvdXRoQWZyaWNhSW5oZXJpdGFuY2VUYXhSdWxlcyxcbiAgICBTb3V0aEFmcmljYUluaGVyaXRhbmNlVGF4UmVzdWx0LFxuICAgIEF1c3RyYWxpYUluaGVyaXRhbmNlVGF4U2VydmljZSxcbiAgICBBdXN0cmFsaWFJbmhlcml0YW5jZVRheElucHV0LFxuICAgIEF1c3RyYWxpYUluaGVyaXRhbmNlVGF4UnVsZXMsXG4gICAgQXVzdHJhbGlhSW5oZXJpdGFuY2VUYXhSZXN1bHQsXG4gICAgVUtJbmhlcml0YW5jZVRheFNlcnZpY2UsXG4gICAgVUtJbmhlcml0YW5jZVRheElucHV0LFxuICAgIFVLSW5oZXJpdGFuY2VUYXhSdWxlcyxcbiAgICBVS0luaGVyaXRhbmNlVGF4UmVzdWx0LFxuICAgIFVTQUluaGVyaXRhbmNlVGF4U2VydmljZSxcbiAgICBVU0FJbmhlcml0YW5jZVRheElucHV0LFxuICAgIFVTQUluaGVyaXRhbmNlVGF4UnVsZXMsXG4gICAgVVNBSW5oZXJpdGFuY2VUYXhSZXN1bHQsXG4gICAgR2VybWFueUluaGVyaXRhbmNlVGF4U2VydmljZSxcbiAgICBHZXJtYW55SW5oZXJpdGFuY2VUYXhJbnB1dCxcbiAgICBHZXJtYW55SW5oZXJpdGFuY2VUYXhSdWxlcyxcbiAgICBHZXJtYW55SW5oZXJpdGFuY2VUYXhSZXN1bHQsXG59O1xuIl19
25
+ // Spain
26
+ const SpainInheritanceTaxServiceImpl_1 = require("./spain/SpainInheritanceTaxServiceImpl");
27
+ Object.defineProperty(exports, "SpainInheritanceTaxService", { enumerable: true, get: function () { return SpainInheritanceTaxServiceImpl_1.SpainInheritanceTaxServiceImpl; } });
28
+ // Japan
29
+ const JapanInheritanceTaxServiceImpl_1 = require("./japan/JapanInheritanceTaxServiceImpl");
30
+ Object.defineProperty(exports, "JapanInheritanceTaxService", { enumerable: true, get: function () { return JapanInheritanceTaxServiceImpl_1.JapanInheritanceTaxServiceImpl; } });
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5oZXJpdGFuY2UtdGF4L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLFNBQVM7QUFDVCw4RkFBMEg7QUF3RXRILDRHQXhFd0MsaUVBQTJCLE9Bd0V4QztBQWpFL0IsU0FBUztBQUNULDhGQUEwSDtBQW9FdEgsNEdBcEV3QyxpRUFBMkIsT0FvRXhDO0FBN0QvQixlQUFlO0FBQ2YsOEdBQStJO0FBZ0UzSSxpSEFoRTZDLDJFQUFnQyxPQWdFN0M7QUF6RHBDLFlBQVk7QUFDWix1R0FBc0k7QUE0RGxJLCtHQTVEMkMsdUVBQThCLE9BNEQzQztBQXJEbEMsS0FBSztBQUNMLGtGQUEwRztBQXdEdEcsd0dBeERvQyx5REFBdUIsT0F3RHBDO0FBakQzQixNQUFNO0FBQ04scUZBQThHO0FBb0QxRyx5R0FwRHFDLDJEQUF3QixPQW9EckM7QUE3QzVCLFVBQVU7QUFDVixpR0FBOEg7QUFnRDFILDZHQWhEeUMsbUVBQTRCLE9BZ0R6QztBQXpDaEMsUUFBUTtBQUNSLDJGQUFzSDtBQTRDbEgsMkdBNUN1QywrREFBMEIsT0E0Q3ZDO0FBckM5QixRQUFRO0FBQ1IsMkZBQXNIO0FBd0NsSCwyR0F4Q3VDLCtEQUEwQixPQXdDdkMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDYW5hZGFcbmltcG9ydCB7IENhbmFkYUluaGVyaXRhbmNlVGF4U2VydmljZUltcGwgYXMgQ2FuYWRhSW5oZXJpdGFuY2VUYXhTZXJ2aWNlIH0gZnJvbSAnLi9jYW5hZGEvQ2FuYWRhSW5oZXJpdGFuY2VUYXhTZXJ2aWNlSW1wbCc7XG5pbXBvcnQge1xuICAgIElucHV0IGFzIENhbmFkYUluaGVyaXRhbmNlVGF4SW5wdXQsXG4gICAgUnVsZXMgYXMgQ2FuYWRhSW5oZXJpdGFuY2VUYXhSdWxlcyxcbiAgICBSZXN1bHQgYXMgQ2FuYWRhSW5oZXJpdGFuY2VUYXhSZXN1bHQsXG59IGZyb20gJy4vY2FuYWRhL2RvbWFpbi90eXBlcyc7XG5cbi8vIEZyYW5jZVxuaW1wb3J0IHsgRnJhbmNlSW5oZXJpdGFuY2VUYXhTZXJ2aWNlSW1wbCBhcyBGcmFuY2VJbmhlcml0YW5jZVRheFNlcnZpY2UgfSBmcm9tICcuL2ZyYW5jZS9GcmFuY2VJbmhlcml0YW5jZVRheFNlcnZpY2VJbXBsJztcbmltcG9ydCB7XG4gICAgSW5wdXQgYXMgRnJhbmNlSW5oZXJpdGFuY2VUYXhJbnB1dCxcbiAgICBSdWxlcyBhcyBGcmFuY2VJbmhlcml0YW5jZVRheFJ1bGVzLFxuICAgIFJlc3VsdCBhcyBGcmFuY2VJbmhlcml0YW5jZVRheFJlc3VsdCxcbn0gZnJvbSAnLi9mcmFuY2UvZG9tYWluL3R5cGVzJztcblxuLy8gU291dGggQWZyaWNhXG5pbXBvcnQgeyBTb3V0aEFmcmljYUluaGVyaXRhbmNlVGF4U2VydmljZUltcGwgYXMgU291dGhBZnJpY2FJbmhlcml0YW5jZVRheFNlcnZpY2UgfSBmcm9tICcuL3NvdXRoLWFmcmljYS9Tb3V0aEFmcmljYUluaGVyaXRhbmNlVGF4U2VydmljZUltcGwnO1xuaW1wb3J0IHtcbiAgICBJbnB1dCBhcyBTb3V0aEFmcmljYUluaGVyaXRhbmNlVGF4SW5wdXQsXG4gICAgUnVsZXMgYXMgU291dGhBZnJpY2FJbmhlcml0YW5jZVRheFJ1bGVzLFxuICAgIFJlc3VsdCBhcyBTb3V0aEFmcmljYUluaGVyaXRhbmNlVGF4UmVzdWx0LFxufSBmcm9tICcuL3NvdXRoLWFmcmljYS9kb21haW4vdHlwZXMnO1xuXG4vLyBBdXN0cmFsaWFcbmltcG9ydCB7IEF1c3RyYWxpYUluaGVyaXRhbmNlVGF4U2VydmljZUltcGwgYXMgQXVzdHJhbGlhSW5oZXJpdGFuY2VUYXhTZXJ2aWNlIH0gZnJvbSAnLi9hdXN0cmFsaWEvQXVzdHJhbGlhSW5oZXJpdGFuY2VUYXhTZXJ2aWNlSW1wbCc7XG5pbXBvcnQge1xuICAgIElucHV0IGFzIEF1c3RyYWxpYUluaGVyaXRhbmNlVGF4SW5wdXQsXG4gICAgUnVsZXMgYXMgQXVzdHJhbGlhSW5oZXJpdGFuY2VUYXhSdWxlcyxcbiAgICBSZXN1bHQgYXMgQXVzdHJhbGlhSW5oZXJpdGFuY2VUYXhSZXN1bHQsXG59IGZyb20gJy4vYXVzdHJhbGlhL2RvbWFpbi90eXBlcyc7XG5cbi8vIFVLXG5pbXBvcnQgeyBVS0luaGVyaXRhbmNlVGF4U2VydmljZUltcGwgYXMgVUtJbmhlcml0YW5jZVRheFNlcnZpY2UgfSBmcm9tICcuL3VrL1VLSW5oZXJpdGFuY2VUYXhTZXJ2aWNlSW1wbCc7XG5pbXBvcnQge1xuICAgIElucHV0IGFzIFVLSW5oZXJpdGFuY2VUYXhJbnB1dCxcbiAgICBSdWxlcyBhcyBVS0luaGVyaXRhbmNlVGF4UnVsZXMsXG4gICAgUmVzdWx0IGFzIFVLSW5oZXJpdGFuY2VUYXhSZXN1bHQsXG59IGZyb20gJy4vdWsvZG9tYWluL3R5cGVzJztcblxuLy8gVVNBXG5pbXBvcnQgeyBVU0FJbmhlcml0YW5jZVRheFNlcnZpY2VJbXBsIGFzIFVTQUluaGVyaXRhbmNlVGF4U2VydmljZSB9IGZyb20gJy4vdXNhL1VTQUluaGVyaXRhbmNlVGF4U2VydmljZUltcGwnO1xuaW1wb3J0IHtcbiAgICBJbnB1dCBhcyBVU0FJbmhlcml0YW5jZVRheElucHV0LFxuICAgIFJ1bGVzIGFzIFVTQUluaGVyaXRhbmNlVGF4UnVsZXMsXG4gICAgUmVzdWx0IGFzIFVTQUluaGVyaXRhbmNlVGF4UmVzdWx0LFxufSBmcm9tICcuL3VzYS9kb21haW4vdHlwZXMnO1xuXG4vLyBHZXJtYW55XG5pbXBvcnQgeyBHZXJtYW55SW5oZXJpdGFuY2VUYXhTZXJ2aWNlSW1wbCBhcyBHZXJtYW55SW5oZXJpdGFuY2VUYXhTZXJ2aWNlIH0gZnJvbSAnLi9nZXJtYW55L0dlcm1hbnlJbmhlcml0YW5jZVRheFNlcnZpY2VJbXBsJztcbmltcG9ydCB7XG4gICAgSW5wdXQgYXMgR2VybWFueUluaGVyaXRhbmNlVGF4SW5wdXQsXG4gICAgUnVsZXMgYXMgR2VybWFueUluaGVyaXRhbmNlVGF4UnVsZXMsXG4gICAgUmVzdWx0IGFzIEdlcm1hbnlJbmhlcml0YW5jZVRheFJlc3VsdCxcbn0gZnJvbSAnLi9nZXJtYW55L2RvbWFpbi90eXBlcyc7XG5cbi8vIFNwYWluXG5pbXBvcnQgeyBTcGFpbkluaGVyaXRhbmNlVGF4U2VydmljZUltcGwgYXMgU3BhaW5Jbmhlcml0YW5jZVRheFNlcnZpY2UgfSBmcm9tICcuL3NwYWluL1NwYWluSW5oZXJpdGFuY2VUYXhTZXJ2aWNlSW1wbCc7XG5pbXBvcnQge1xuICAgIElucHV0IGFzIFNwYWluSW5oZXJpdGFuY2VUYXhJbnB1dCxcbiAgICBSdWxlcyBhcyBTcGFpbkluaGVyaXRhbmNlVGF4UnVsZXMsXG4gICAgUmVzdWx0IGFzIFNwYWluSW5oZXJpdGFuY2VUYXhSZXN1bHQsXG59IGZyb20gJy4vc3BhaW4vZG9tYWluL3R5cGVzJztcblxuLy8gSmFwYW5cbmltcG9ydCB7IEphcGFuSW5oZXJpdGFuY2VUYXhTZXJ2aWNlSW1wbCBhcyBKYXBhbkluaGVyaXRhbmNlVGF4U2VydmljZSB9IGZyb20gJy4vamFwYW4vSmFwYW5Jbmhlcml0YW5jZVRheFNlcnZpY2VJbXBsJztcbmltcG9ydCB7XG4gICAgSW5wdXQgYXMgSmFwYW5Jbmhlcml0YW5jZVRheElucHV0LFxuICAgIFJ1bGVzIGFzIEphcGFuSW5oZXJpdGFuY2VUYXhSdWxlcyxcbiAgICBSZXN1bHQgYXMgSmFwYW5Jbmhlcml0YW5jZVRheFJlc3VsdCxcbn0gZnJvbSAnLi9qYXBhbi9kb21haW4vdHlwZXMnO1xuXG5leHBvcnQge1xuICAgIENhbmFkYUluaGVyaXRhbmNlVGF4U2VydmljZSxcbiAgICBDYW5hZGFJbmhlcml0YW5jZVRheElucHV0LFxuICAgIENhbmFkYUluaGVyaXRhbmNlVGF4UnVsZXMsXG4gICAgQ2FuYWRhSW5oZXJpdGFuY2VUYXhSZXN1bHQsXG4gICAgRnJhbmNlSW5oZXJpdGFuY2VUYXhTZXJ2aWNlLFxuICAgIEZyYW5jZUluaGVyaXRhbmNlVGF4SW5wdXQsXG4gICAgRnJhbmNlSW5oZXJpdGFuY2VUYXhSdWxlcyxcbiAgICBGcmFuY2VJbmhlcml0YW5jZVRheFJlc3VsdCxcbiAgICBTb3V0aEFmcmljYUluaGVyaXRhbmNlVGF4U2VydmljZSxcbiAgICBTb3V0aEFmcmljYUluaGVyaXRhbmNlVGF4SW5wdXQsXG4gICAgU291dGhBZnJpY2FJbmhlcml0YW5jZVRheFJ1bGVzLFxuICAgIFNvdXRoQWZyaWNhSW5oZXJpdGFuY2VUYXhSZXN1bHQsXG4gICAgQXVzdHJhbGlhSW5oZXJpdGFuY2VUYXhTZXJ2aWNlLFxuICAgIEF1c3RyYWxpYUluaGVyaXRhbmNlVGF4SW5wdXQsXG4gICAgQXVzdHJhbGlhSW5oZXJpdGFuY2VUYXhSdWxlcyxcbiAgICBBdXN0cmFsaWFJbmhlcml0YW5jZVRheFJlc3VsdCxcbiAgICBVS0luaGVyaXRhbmNlVGF4U2VydmljZSxcbiAgICBVS0luaGVyaXRhbmNlVGF4SW5wdXQsXG4gICAgVUtJbmhlcml0YW5jZVRheFJ1bGVzLFxuICAgIFVLSW5oZXJpdGFuY2VUYXhSZXN1bHQsXG4gICAgVVNBSW5oZXJpdGFuY2VUYXhTZXJ2aWNlLFxuICAgIFVTQUluaGVyaXRhbmNlVGF4SW5wdXQsXG4gICAgVVNBSW5oZXJpdGFuY2VUYXhSdWxlcyxcbiAgICBVU0FJbmhlcml0YW5jZVRheFJlc3VsdCxcbiAgICBHZXJtYW55SW5oZXJpdGFuY2VUYXhTZXJ2aWNlLFxuICAgIEdlcm1hbnlJbmhlcml0YW5jZVRheElucHV0LFxuICAgIEdlcm1hbnlJbmhlcml0YW5jZVRheFJ1bGVzLFxuICAgIEdlcm1hbnlJbmhlcml0YW5jZVRheFJlc3VsdCxcbiAgICBTcGFpbkluaGVyaXRhbmNlVGF4U2VydmljZSxcbiAgICBTcGFpbkluaGVyaXRhbmNlVGF4SW5wdXQsXG4gICAgU3BhaW5Jbmhlcml0YW5jZVRheFJ1bGVzLFxuICAgIFNwYWluSW5oZXJpdGFuY2VUYXhSZXN1bHQsXG4gICAgSmFwYW5Jbmhlcml0YW5jZVRheFNlcnZpY2UsXG4gICAgSmFwYW5Jbmhlcml0YW5jZVRheElucHV0LFxuICAgIEphcGFuSW5oZXJpdGFuY2VUYXhSdWxlcyxcbiAgICBKYXBhbkluaGVyaXRhbmNlVGF4UmVzdWx0LFxufTtcbiJdfQ==
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSmFwYW5Jbmhlcml0YW5jZVRheFNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW5oZXJpdGFuY2UtdGF4L2phcGFuL0phcGFuSW5oZXJpdGFuY2VUYXhTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZXN1bHQgfSBmcm9tIFwiLi9kb21haW4vdHlwZXNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBKYXBhbkluaGVyaXRhbmNlVGF4U2VydmljZSB7XG4gICAgY2FsY3VsYXRlKCk6IFJlc3VsdDtcbn1cbiJdfQ==
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JapanInheritanceTaxServiceImpl = void 0;
4
+ class JapanInheritanceTaxServiceImpl {
5
+ constructor(input, rules) {
6
+ this._input = input;
7
+ this._rules = rules;
8
+ }
9
+ calculate() {
10
+ const estate = this._input.estateValue;
11
+ const heirs = Math.max(1, this._input.numberOfStatutoryHeirs);
12
+ const exemption = this._rules.baseExemption + this._rules.perHeirExemption * heirs;
13
+ if (estate <= 0 || estate <= exemption) {
14
+ return {
15
+ taxableEstate: 0,
16
+ inheritanceTax: 0,
17
+ effectiveRate: 0,
18
+ breakdowns: [],
19
+ };
20
+ }
21
+ const taxableEstate = estate - exemption;
22
+ const { tax, breakdowns } = this.applyBrackets(taxableEstate, this._rules.taxBrackets);
23
+ return {
24
+ taxableEstate,
25
+ inheritanceTax: tax,
26
+ effectiveRate: estate > 0 ? (tax / estate) * 100 : 0,
27
+ breakdowns,
28
+ };
29
+ }
30
+ applyBrackets(taxableAmount, brackets) {
31
+ let tax = 0;
32
+ const breakdowns = [];
33
+ for (const bracket of brackets) {
34
+ if (taxableAmount <= bracket.from)
35
+ break;
36
+ const upper = bracket.to ?? taxableAmount;
37
+ const taxable = Math.min(upper, taxableAmount) - bracket.from;
38
+ if (taxable > 0) {
39
+ const bracketTax = taxable * bracket.rate;
40
+ tax += bracketTax;
41
+ breakdowns.push({
42
+ from: `${bracket.from}`,
43
+ to: `${bracket.to ?? 'Above'}`,
44
+ rate: bracket.rate,
45
+ amount: bracketTax,
46
+ });
47
+ }
48
+ }
49
+ return { tax, breakdowns };
50
+ }
51
+ }
52
+ exports.JapanInheritanceTaxServiceImpl = JapanInheritanceTaxServiceImpl;
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSmFwYW5Jbmhlcml0YW5jZVRheFNlcnZpY2VJbXBsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2luaGVyaXRhbmNlLXRheC9qYXBhbi9KYXBhbkluaGVyaXRhbmNlVGF4U2VydmljZUltcGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBSUEsTUFBYSw4QkFBOEI7SUFJdkMsWUFBWSxLQUFZLEVBQUUsS0FBWTtRQUNsQyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN4QixDQUFDO0lBRUQsU0FBUztRQUNMLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDO1FBQ3ZDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUM5RCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztRQUVuRixJQUFJLE1BQU0sSUFBSSxDQUFDLElBQUksTUFBTSxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ3JDLE9BQU87Z0JBQ0gsYUFBYSxFQUFFLENBQUM7Z0JBQ2hCLGNBQWMsRUFBRSxDQUFDO2dCQUNqQixhQUFhLEVBQUUsQ0FBQztnQkFDaEIsVUFBVSxFQUFFLEVBQUU7YUFDakIsQ0FBQztRQUNOLENBQUM7UUFFRCxNQUFNLGFBQWEsR0FBRyxNQUFNLEdBQUcsU0FBUyxDQUFDO1FBQ3pDLE1BQU0sRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUV2RixPQUFPO1lBQ0gsYUFBYTtZQUNiLGNBQWMsRUFBRSxHQUFHO1lBQ25CLGFBQWEsRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEQsVUFBVTtTQUNiLENBQUM7SUFDTixDQUFDO0lBRU8sYUFBYSxDQUNqQixhQUFxQixFQUNyQixRQUFzQjtRQUV0QixJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDWixNQUFNLFVBQVUsR0FBZ0IsRUFBRSxDQUFDO1FBRW5DLEtBQUssTUFBTSxPQUFPLElBQUksUUFBUSxFQUFFLENBQUM7WUFDN0IsSUFBSSxhQUFhLElBQUksT0FBTyxDQUFDLElBQUk7Z0JBQUUsTUFBTTtZQUV6QyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsRUFBRSxJQUFJLGFBQWEsQ0FBQztZQUMxQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxhQUFhLENBQUMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO1lBRTlELElBQUksT0FBTyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNkLE1BQU0sVUFBVSxHQUFHLE9BQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO2dCQUMxQyxHQUFHLElBQUksVUFBVSxDQUFDO2dCQUVsQixVQUFVLENBQUMsSUFBSSxDQUFDO29CQUNaLElBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLEVBQUU7b0JBQ3ZCLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFLElBQUksT0FBTyxFQUFFO29CQUM5QixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7b0JBQ2xCLE1BQU0sRUFBRSxVQUFVO2lCQUNyQixDQUFDLENBQUM7WUFDUCxDQUFDO1FBQ0wsQ0FBQztRQUVELE9BQU8sRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLENBQUM7SUFDL0IsQ0FBQztDQUNKO0FBOURELHdFQThEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJyZWFrZG93biB9IGZyb20gXCIuLi9kb21haW4vdHlwZXNcIjtcbmltcG9ydCB7IEphcGFuSW5oZXJpdGFuY2VUYXhTZXJ2aWNlIH0gZnJvbSBcIi4vSmFwYW5Jbmhlcml0YW5jZVRheFNlcnZpY2VcIjtcbmltcG9ydCB7IElucHV0LCBSZXN1bHQsIFJ1bGVzLCBUYXhCcmFja2V0IH0gZnJvbSBcIi4vZG9tYWluL3R5cGVzXCI7XG5cbmV4cG9ydCBjbGFzcyBKYXBhbkluaGVyaXRhbmNlVGF4U2VydmljZUltcGwgaW1wbGVtZW50cyBKYXBhbkluaGVyaXRhbmNlVGF4U2VydmljZSB7XG4gICAgcHJpdmF0ZSBfaW5wdXQ6IElucHV0O1xuICAgIHByaXZhdGUgX3J1bGVzOiBSdWxlcztcblxuICAgIGNvbnN0cnVjdG9yKGlucHV0OiBJbnB1dCwgcnVsZXM6IFJ1bGVzKSB7XG4gICAgICAgIHRoaXMuX2lucHV0ID0gaW5wdXQ7XG4gICAgICAgIHRoaXMuX3J1bGVzID0gcnVsZXM7XG4gICAgfVxuXG4gICAgY2FsY3VsYXRlKCk6IFJlc3VsdCB7XG4gICAgICAgIGNvbnN0IGVzdGF0ZSA9IHRoaXMuX2lucHV0LmVzdGF0ZVZhbHVlO1xuICAgICAgICBjb25zdCBoZWlycyA9IE1hdGgubWF4KDEsIHRoaXMuX2lucHV0Lm51bWJlck9mU3RhdHV0b3J5SGVpcnMpO1xuICAgICAgICBjb25zdCBleGVtcHRpb24gPSB0aGlzLl9ydWxlcy5iYXNlRXhlbXB0aW9uICsgdGhpcy5fcnVsZXMucGVySGVpckV4ZW1wdGlvbiAqIGhlaXJzO1xuXG4gICAgICAgIGlmIChlc3RhdGUgPD0gMCB8fCBlc3RhdGUgPD0gZXhlbXB0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHRheGFibGVFc3RhdGU6IDAsXG4gICAgICAgICAgICAgICAgaW5oZXJpdGFuY2VUYXg6IDAsXG4gICAgICAgICAgICAgICAgZWZmZWN0aXZlUmF0ZTogMCxcbiAgICAgICAgICAgICAgICBicmVha2Rvd25zOiBbXSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0YXhhYmxlRXN0YXRlID0gZXN0YXRlIC0gZXhlbXB0aW9uO1xuICAgICAgICBjb25zdCB7IHRheCwgYnJlYWtkb3ducyB9ID0gdGhpcy5hcHBseUJyYWNrZXRzKHRheGFibGVFc3RhdGUsIHRoaXMuX3J1bGVzLnRheEJyYWNrZXRzKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGF4YWJsZUVzdGF0ZSxcbiAgICAgICAgICAgIGluaGVyaXRhbmNlVGF4OiB0YXgsXG4gICAgICAgICAgICBlZmZlY3RpdmVSYXRlOiBlc3RhdGUgPiAwID8gKHRheCAvIGVzdGF0ZSkgKiAxMDAgOiAwLFxuICAgICAgICAgICAgYnJlYWtkb3ducyxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFwcGx5QnJhY2tldHMoXG4gICAgICAgIHRheGFibGVBbW91bnQ6IG51bWJlcixcbiAgICAgICAgYnJhY2tldHM6IFRheEJyYWNrZXRbXSxcbiAgICApOiB7IHRheDogbnVtYmVyOyBicmVha2Rvd25zOiBCcmVha2Rvd25bXSB9IHtcbiAgICAgICAgbGV0IHRheCA9IDA7XG4gICAgICAgIGNvbnN0IGJyZWFrZG93bnM6IEJyZWFrZG93bltdID0gW107XG5cbiAgICAgICAgZm9yIChjb25zdCBicmFja2V0IG9mIGJyYWNrZXRzKSB7XG4gICAgICAgICAgICBpZiAodGF4YWJsZUFtb3VudCA8PSBicmFja2V0LmZyb20pIGJyZWFrO1xuXG4gICAgICAgICAgICBjb25zdCB1cHBlciA9IGJyYWNrZXQudG8gPz8gdGF4YWJsZUFtb3VudDtcbiAgICAgICAgICAgIGNvbnN0IHRheGFibGUgPSBNYXRoLm1pbih1cHBlciwgdGF4YWJsZUFtb3VudCkgLSBicmFja2V0LmZyb207XG5cbiAgICAgICAgICAgIGlmICh0YXhhYmxlID4gMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJyYWNrZXRUYXggPSB0YXhhYmxlICogYnJhY2tldC5yYXRlO1xuICAgICAgICAgICAgICAgIHRheCArPSBicmFja2V0VGF4O1xuXG4gICAgICAgICAgICAgICAgYnJlYWtkb3ducy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYCR7YnJhY2tldC5mcm9tfWAsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBgJHticmFja2V0LnRvID8/ICdBYm92ZSd9YCxcbiAgICAgICAgICAgICAgICAgICAgcmF0ZTogYnJhY2tldC5yYXRlLFxuICAgICAgICAgICAgICAgICAgICBhbW91bnQ6IGJyYWNrZXRUYXgsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4geyB0YXgsIGJyZWFrZG93bnMgfTtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaW5oZXJpdGFuY2UtdGF4L2phcGFuL2RvbWFpbi90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnJlYWtkb3duIH0gZnJvbSBcIi4uLy4uL2RvbWFpbi90eXBlc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRheEJyYWNrZXQge1xuICAgIGZyb206IG51bWJlcjtcbiAgICB0bzogbnVtYmVyIHwgbnVsbDtcbiAgICByYXRlOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUnVsZXMge1xuICAgIGJhc2VFeGVtcHRpb246IG51bWJlcjtcbiAgICBwZXJIZWlyRXhlbXB0aW9uOiBudW1iZXI7XG4gICAgdGF4QnJhY2tldHM6IFRheEJyYWNrZXRbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnB1dCB7XG4gICAgZXN0YXRlVmFsdWU6IG51bWJlcjtcbiAgICBudW1iZXJPZlN0YXR1dG9yeUhlaXJzOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzdWx0IHtcbiAgICB0YXhhYmxlRXN0YXRlOiBudW1iZXI7XG4gICAgaW5oZXJpdGFuY2VUYXg6IG51bWJlcjtcbiAgICBlZmZlY3RpdmVSYXRlOiBudW1iZXI7XG4gICAgYnJlYWtkb3duczogQnJlYWtkb3duW107XG59XG4iXX0=
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3BhaW5Jbmhlcml0YW5jZVRheFNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW5oZXJpdGFuY2UtdGF4L3NwYWluL1NwYWluSW5oZXJpdGFuY2VUYXhTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZXN1bHQgfSBmcm9tIFwiLi9kb21haW4vdHlwZXNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBTcGFpbkluaGVyaXRhbmNlVGF4U2VydmljZSB7XG4gICAgY2FsY3VsYXRlKCk6IFJlc3VsdDtcbn1cbiJdfQ==