@novha/calc-engines 5.0.0 → 6.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/capital-gains/australia/AustraliaCapitalGainsService.js +1 -1
- package/dist/capital-gains/australia/AustraliaCapitalGainsServiceImpl.js +14 -3
- package/dist/capital-gains/australia/domain/types.js +1 -1
- package/dist/capital-gains/canada/CanadaCapitalGainsService.js +1 -1
- package/dist/capital-gains/canada/CanadaCapitalGainsServiceImpl.js +14 -3
- package/dist/capital-gains/canada/domain/types.js +1 -1
- package/dist/capital-gains/domain/types.js +1 -1
- package/dist/capital-gains/france/FranceCapitalGainsService.js +1 -1
- package/dist/capital-gains/france/FranceCapitalGainsServiceImpl.js +16 -6
- package/dist/capital-gains/france/domain/types.js +1 -1
- package/dist/capital-gains/germany/GermanyCapitalGainsService.js +1 -1
- package/dist/capital-gains/germany/GermanyCapitalGainsServiceImpl.js +15 -12
- package/dist/capital-gains/germany/domain/types.js +1 -1
- package/dist/capital-gains/index.js +25 -0
- package/dist/capital-gains/south-africa/SouthAfricaCapitalGainsService.js +1 -1
- package/dist/capital-gains/south-africa/SouthAfricaCapitalGainsServiceImpl.js +18 -4
- package/dist/capital-gains/south-africa/domain/types.js +1 -1
- package/dist/capital-gains/uk/UKCapitalGainsService.js +1 -1
- package/dist/capital-gains/uk/UKCapitalGainsServiceImpl.js +18 -4
- package/dist/capital-gains/uk/domain/types.js +1 -1
- package/dist/capital-gains/usa/USACapitalGainsService.js +1 -1
- package/dist/capital-gains/usa/USACapitalGainsServiceImpl.js +13 -3
- package/dist/corporate/index.js +18 -0
- package/dist/income-tax/index.js +24 -0
- package/dist/index.js +18 -72
- package/dist/mortgage/france/FranceMortgageService.js +1 -1
- package/dist/mortgage/france/FranceMortgageServiceImpl.js +1 -1
- package/dist/mortgage/index.js +25 -0
- package/dist/types/capital-gains/australia/AustraliaCapitalGainsService.d.ts +1 -1
- package/dist/types/capital-gains/australia/AustraliaCapitalGainsServiceImpl.d.ts +2 -1
- package/dist/types/capital-gains/australia/domain/types.d.ts +0 -7
- package/dist/types/capital-gains/canada/CanadaCapitalGainsService.d.ts +1 -1
- package/dist/types/capital-gains/canada/CanadaCapitalGainsServiceImpl.d.ts +2 -1
- package/dist/types/capital-gains/canada/domain/types.d.ts +0 -7
- package/dist/types/capital-gains/domain/types.d.ts +9 -0
- package/dist/types/capital-gains/france/FranceCapitalGainsService.d.ts +1 -1
- package/dist/types/capital-gains/france/FranceCapitalGainsServiceImpl.d.ts +2 -1
- package/dist/types/capital-gains/france/domain/types.d.ts +0 -8
- package/dist/types/capital-gains/germany/GermanyCapitalGainsService.d.ts +1 -1
- package/dist/types/capital-gains/germany/GermanyCapitalGainsServiceImpl.d.ts +2 -1
- package/dist/types/capital-gains/germany/domain/types.d.ts +0 -9
- package/dist/types/capital-gains/index.d.ts +15 -0
- package/dist/types/capital-gains/south-africa/SouthAfricaCapitalGainsService.d.ts +1 -1
- package/dist/types/capital-gains/south-africa/SouthAfricaCapitalGainsServiceImpl.d.ts +2 -1
- package/dist/types/capital-gains/south-africa/domain/types.d.ts +0 -7
- package/dist/types/capital-gains/uk/UKCapitalGainsService.d.ts +1 -1
- package/dist/types/capital-gains/uk/UKCapitalGainsServiceImpl.d.ts +2 -1
- package/dist/types/capital-gains/uk/domain/types.d.ts +0 -7
- package/dist/types/capital-gains/usa/USACapitalGainsService.d.ts +1 -1
- package/dist/types/capital-gains/usa/USACapitalGainsServiceImpl.d.ts +2 -1
- package/dist/types/corporate/index.d.ts +15 -0
- package/dist/types/income-tax/index.d.ts +15 -0
- package/dist/types/index.d.ts +4 -56
- package/dist/types/mortgage/france/FranceMortgageService.d.ts +1 -1
- package/dist/types/mortgage/france/FranceMortgageServiceImpl.d.ts +1 -1
- package/dist/types/mortgage/index.d.ts +15 -0
- package/package.json +1 -1
- package/src/capital-gains/australia/AustraliaCapitalGainsService.ts +1 -1
- package/src/capital-gains/australia/AustraliaCapitalGainsServiceImpl.ts +15 -4
- package/src/capital-gains/australia/domain/types.ts +0 -9
- package/src/capital-gains/canada/CanadaCapitalGainsService.ts +1 -1
- package/src/capital-gains/canada/CanadaCapitalGainsServiceImpl.ts +15 -4
- package/src/capital-gains/canada/domain/types.ts +0 -9
- package/src/capital-gains/domain/types.ts +9 -0
- package/src/capital-gains/france/FranceCapitalGainsService.ts +1 -1
- package/src/capital-gains/france/FranceCapitalGainsServiceImpl.ts +17 -7
- package/src/capital-gains/france/domain/types.ts +1 -11
- package/src/capital-gains/germany/GermanyCapitalGainsService.ts +1 -1
- package/src/capital-gains/germany/GermanyCapitalGainsServiceImpl.ts +16 -13
- package/src/capital-gains/germany/domain/types.ts +0 -10
- package/src/capital-gains/index.ts +72 -0
- package/src/capital-gains/south-africa/SouthAfricaCapitalGainsService.ts +1 -1
- package/src/capital-gains/south-africa/SouthAfricaCapitalGainsServiceImpl.ts +19 -5
- package/src/capital-gains/south-africa/domain/types.ts +0 -9
- package/src/capital-gains/uk/UKCapitalGainsService.ts +1 -1
- package/src/capital-gains/uk/UKCapitalGainsServiceImpl.ts +19 -5
- package/src/capital-gains/uk/domain/types.ts +0 -9
- package/src/capital-gains/usa/USACapitalGainsService.ts +1 -1
- package/src/capital-gains/usa/USACapitalGainsServiceImpl.ts +14 -4
- package/src/corporate/index.ts +79 -0
- package/src/income-tax/index.ts +72 -0
- package/src/index.ts +6 -202
- package/src/mortgage/france/FranceMortgageService.ts +1 -1
- package/src/mortgage/france/FranceMortgageServiceImpl.ts +1 -1
- package/src/mortgage/index.ts +87 -0
- package/test/australia-capital-gains.test.ts +5 -5
- package/test/canada-capital-gains.test.ts +5 -5
- package/test/france-capital-gains.test.ts +1 -1
- package/test/germany-capital-gains.test.ts +4 -4
- package/test/south-africa-capital-gains.test.ts +6 -6
- package/test/uk-capital-gains.test.ts +7 -7
- package/test/usa-capital-gains.test.ts +4 -4
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXVzdHJhbGlhQ2FwaXRhbEdhaW5zU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jYXBpdGFsLWdhaW5zL2F1c3RyYWxpYS9BdXN0cmFsaWFDYXBpdGFsR2FpbnNTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZXN1bHQgfSBmcm9tIFwiLi4vZG9tYWluL3R5cGVzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXVzdHJhbGlhQ2FwaXRhbEdhaW5zU2VydmljZSB7XG4gICAgY2FsY3VsYXRlKCk6IFJlc3VsdDtcbn1cbiJdfQ==
|
|
@@ -9,7 +9,15 @@ class AustraliaCapitalGainsServiceImpl {
|
|
|
9
9
|
calculate() {
|
|
10
10
|
const gain = this._input.capitalGain;
|
|
11
11
|
if (gain <= 0) {
|
|
12
|
-
return {
|
|
12
|
+
return {
|
|
13
|
+
taxableGain: 0,
|
|
14
|
+
capitalGainTax: 0,
|
|
15
|
+
socialContributions: 0,
|
|
16
|
+
totalTax: 0,
|
|
17
|
+
effectiveRate: 0,
|
|
18
|
+
netInvestmentIncomeTax: 0,
|
|
19
|
+
breakdowns: []
|
|
20
|
+
};
|
|
13
21
|
}
|
|
14
22
|
const eligible = this._input.holdingPeriodMonths >= this._rules.cgtDiscountMinMonths;
|
|
15
23
|
const taxableGain = eligible ? gain * (1 - this._rules.cgtDiscount) : gain;
|
|
@@ -17,7 +25,10 @@ class AustraliaCapitalGainsServiceImpl {
|
|
|
17
25
|
const { tax, breakdowns } = this.applyBrackets(taxableGain, otherIncome, this._rules.taxBrackets);
|
|
18
26
|
return {
|
|
19
27
|
taxableGain,
|
|
20
|
-
|
|
28
|
+
capitalGainTax: tax,
|
|
29
|
+
socialContributions: 0,
|
|
30
|
+
netInvestmentIncomeTax: 0,
|
|
31
|
+
totalTax: tax,
|
|
21
32
|
effectiveRate: gain > 0 ? (tax / gain) * 100 : 0,
|
|
22
33
|
breakdowns,
|
|
23
34
|
};
|
|
@@ -53,4 +64,4 @@ class AustraliaCapitalGainsServiceImpl {
|
|
|
53
64
|
}
|
|
54
65
|
}
|
|
55
66
|
exports.AustraliaCapitalGainsServiceImpl = AustraliaCapitalGainsServiceImpl;
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXVzdHJhbGlhQ2FwaXRhbEdhaW5zU2VydmljZUltcGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2FwaXRhbC1nYWlucy9hdXN0cmFsaWEvQXVzdHJhbGlhQ2FwaXRhbEdhaW5zU2VydmljZUltcGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBSUEsTUFBYSxnQ0FBZ0M7SUFJekMsWUFBWSxLQUFZLEVBQUUsS0FBWTtRQUNsQyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN4QixDQUFDO0lBRUQsU0FBUztRQUNMLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDO1FBRXJDLElBQUksSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ1osT0FBTztnQkFDSCxXQUFXLEVBQUUsQ0FBQztnQkFDZCxjQUFjLEVBQUUsQ0FBQztnQkFDakIsbUJBQW1CLEVBQUUsQ0FBQztnQkFDdEIsUUFBUSxFQUFFLENBQUM7Z0JBQ1gsYUFBYSxFQUFFLENBQUM7Z0JBQ2hCLHNCQUFzQixFQUFFLENBQUM7Z0JBQ3pCLFVBQVUsRUFBRSxFQUFFO2FBQ2pCLENBQUM7UUFDTixDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLG9CQUFvQixDQUFDO1FBQ3JGLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUUzRSxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztRQUMxRCxNQUFNLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRWxHLE9BQU87WUFDSCxXQUFXO1lBQ1gsY0FBYyxFQUFFLEdBQUc7WUFDbkIsbUJBQW1CLEVBQUUsQ0FBQztZQUN0QixzQkFBc0IsRUFBRSxDQUFDO1lBQ3pCLFFBQVEsRUFBRSxHQUFHO1lBQ2IsYUFBYSxFQUFFLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNoRCxVQUFVO1NBQ2IsQ0FBQztJQUNOLENBQUM7SUFFTyxhQUFhLENBQ2pCLFdBQW1CLEVBQ25CLFdBQW1CLEVBQ25CLFFBQXNCO1FBRXRCLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztRQUNaLE1BQU0sVUFBVSxHQUFnQixFQUFFLENBQUM7UUFDbkMsSUFBSSxTQUFTLEdBQUcsV0FBVyxDQUFDO1FBQzVCLElBQUksVUFBVSxHQUFHLFdBQVcsQ0FBQztRQUU3QixLQUFLLE1BQU0sT0FBTyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQzdCLElBQUksU0FBUyxJQUFJLENBQUM7Z0JBQUUsTUFBTTtZQUUxQixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsRUFBRSxJQUFJLFFBQVEsQ0FBQztZQUVyQyxJQUFJLFVBQVUsSUFBSSxLQUFLO2dCQUFFLFNBQVM7WUFFbEMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQ3hELE1BQU0sWUFBWSxHQUFHLEtBQUssR0FBRyxZQUFZLENBQUM7WUFDMUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFFbEQsSUFBSSxPQUFPLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ2QsTUFBTSxVQUFVLEdBQUcsT0FBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0JBQzFDLEdBQUcsSUFBSSxVQUFVLENBQUM7Z0JBQ2xCLFNBQVMsSUFBSSxPQUFPLENBQUM7Z0JBQ3JCLFVBQVUsSUFBSSxPQUFPLENBQUM7Z0JBRXRCLFVBQVUsQ0FBQyxJQUFJLENBQUM7b0JBQ1osSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRTtvQkFDdkIsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLEVBQUUsSUFBSSxPQUFPLEVBQUU7b0JBQzlCLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtvQkFDbEIsTUFBTSxFQUFFLFVBQVU7aUJBQ3JCLENBQUMsQ0FBQztZQUNQLENBQUM7UUFDTCxDQUFDO1FBRUQsT0FBTyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsQ0FBQztJQUMvQixDQUFDO0NBQ0o7QUEvRUQsNEVBK0VDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnJlYWtkb3duLCBSZXN1bHQgfSBmcm9tIFwiLi4vZG9tYWluL3R5cGVzXCI7XG5pbXBvcnQgeyBBdXN0cmFsaWFDYXBpdGFsR2FpbnNTZXJ2aWNlIH0gZnJvbSBcIi4vQXVzdHJhbGlhQ2FwaXRhbEdhaW5zU2VydmljZVwiO1xuaW1wb3J0IHsgSW5wdXQsIFJ1bGVzLCBUYXhCcmFja2V0IH0gZnJvbSBcIi4vZG9tYWluL3R5cGVzXCI7XG5cbmV4cG9ydCBjbGFzcyBBdXN0cmFsaWFDYXBpdGFsR2FpbnNTZXJ2aWNlSW1wbCBpbXBsZW1lbnRzIEF1c3RyYWxpYUNhcGl0YWxHYWluc1NlcnZpY2Uge1xuICAgIHByaXZhdGUgX2lucHV0OiBJbnB1dDtcbiAgICBwcml2YXRlIF9ydWxlczogUnVsZXM7XG5cbiAgICBjb25zdHJ1Y3RvcihpbnB1dDogSW5wdXQsIHJ1bGVzOiBSdWxlcykge1xuICAgICAgICB0aGlzLl9pbnB1dCA9IGlucHV0O1xuICAgICAgICB0aGlzLl9ydWxlcyA9IHJ1bGVzO1xuICAgIH1cblxuICAgIGNhbGN1bGF0ZSgpOiBSZXN1bHQge1xuICAgICAgICBjb25zdCBnYWluID0gdGhpcy5faW5wdXQuY2FwaXRhbEdhaW47XG5cbiAgICAgICAgaWYgKGdhaW4gPD0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHsgXG4gICAgICAgICAgICAgICAgdGF4YWJsZUdhaW46IDAsXG4gICAgICAgICAgICAgICAgY2FwaXRhbEdhaW5UYXg6IDAsXG4gICAgICAgICAgICAgICAgc29jaWFsQ29udHJpYnV0aW9uczogMCwgXG4gICAgICAgICAgICAgICAgdG90YWxUYXg6IDAsXG4gICAgICAgICAgICAgICAgZWZmZWN0aXZlUmF0ZTogMCxcbiAgICAgICAgICAgICAgICBuZXRJbnZlc3RtZW50SW5jb21lVGF4OiAwLFxuICAgICAgICAgICAgICAgIGJyZWFrZG93bnM6IFtdXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZWxpZ2libGUgPSB0aGlzLl9pbnB1dC5ob2xkaW5nUGVyaW9kTW9udGhzID49IHRoaXMuX3J1bGVzLmNndERpc2NvdW50TWluTW9udGhzO1xuICAgICAgICBjb25zdCB0YXhhYmxlR2FpbiA9IGVsaWdpYmxlID8gZ2FpbiAqICgxIC0gdGhpcy5fcnVsZXMuY2d0RGlzY291bnQpIDogZ2FpbjtcblxuICAgICAgICBjb25zdCBvdGhlckluY29tZSA9IHRoaXMuX2lucHV0LnRvdGFsVGF4YWJsZUluY29tZSAtIGdhaW47XG4gICAgICAgIGNvbnN0IHsgdGF4LCBicmVha2Rvd25zIH0gPSB0aGlzLmFwcGx5QnJhY2tldHModGF4YWJsZUdhaW4sIG90aGVySW5jb21lLCB0aGlzLl9ydWxlcy50YXhCcmFja2V0cyk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRheGFibGVHYWluLFxuICAgICAgICAgICAgY2FwaXRhbEdhaW5UYXg6IHRheCxcbiAgICAgICAgICAgIHNvY2lhbENvbnRyaWJ1dGlvbnM6IDAsXG4gICAgICAgICAgICBuZXRJbnZlc3RtZW50SW5jb21lVGF4OiAwLFxuICAgICAgICAgICAgdG90YWxUYXg6IHRheCxcbiAgICAgICAgICAgIGVmZmVjdGl2ZVJhdGU6IGdhaW4gPiAwID8gKHRheCAvIGdhaW4pICogMTAwIDogMCxcbiAgICAgICAgICAgIGJyZWFrZG93bnMsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhcHBseUJyYWNrZXRzKFxuICAgICAgICB0YXhhYmxlR2FpbjogbnVtYmVyLFxuICAgICAgICBvdGhlckluY29tZTogbnVtYmVyLFxuICAgICAgICBicmFja2V0czogVGF4QnJhY2tldFtdLFxuICAgICk6IHsgdGF4OiBudW1iZXI7IGJyZWFrZG93bnM6IEJyZWFrZG93bltdIH0ge1xuICAgICAgICBsZXQgdGF4ID0gMDtcbiAgICAgICAgY29uc3QgYnJlYWtkb3duczogQnJlYWtkb3duW10gPSBbXTtcbiAgICAgICAgbGV0IHJlbWFpbmluZyA9IHRheGFibGVHYWluO1xuICAgICAgICBsZXQgaW5jb21lVXNlZCA9IG90aGVySW5jb21lO1xuXG4gICAgICAgIGZvciAoY29uc3QgYnJhY2tldCBvZiBicmFja2V0cykge1xuICAgICAgICAgICAgaWYgKHJlbWFpbmluZyA8PSAwKSBicmVhaztcblxuICAgICAgICAgICAgY29uc3QgdXBwZXIgPSBicmFja2V0LnRvID8/IEluZmluaXR5O1xuXG4gICAgICAgICAgICBpZiAoaW5jb21lVXNlZCA+PSB1cHBlcikgY29udGludWU7XG5cbiAgICAgICAgICAgIGNvbnN0IGJyYWNrZXRTdGFydCA9IE1hdGgubWF4KGJyYWNrZXQuZnJvbSwgaW5jb21lVXNlZCk7XG4gICAgICAgICAgICBjb25zdCBicmFja2V0U3BhY2UgPSB1cHBlciAtIGJyYWNrZXRTdGFydDtcbiAgICAgICAgICAgIGNvbnN0IHRheGFibGUgPSBNYXRoLm1pbihicmFja2V0U3BhY2UsIHJlbWFpbmluZyk7XG5cbiAgICAgICAgICAgIGlmICh0YXhhYmxlID4gMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJyYWNrZXRUYXggPSB0YXhhYmxlICogYnJhY2tldC5yYXRlO1xuICAgICAgICAgICAgICAgIHRheCArPSBicmFja2V0VGF4O1xuICAgICAgICAgICAgICAgIHJlbWFpbmluZyAtPSB0YXhhYmxlO1xuICAgICAgICAgICAgICAgIGluY29tZVVzZWQgKz0gdGF4YWJsZTtcblxuICAgICAgICAgICAgICAgIGJyZWFrZG93bnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGZyb206IGAke2JyYWNrZXQuZnJvbX1gLFxuICAgICAgICAgICAgICAgICAgICB0bzogYCR7YnJhY2tldC50byA/PyAnQWJvdmUnfWAsXG4gICAgICAgICAgICAgICAgICAgIHJhdGU6IGJyYWNrZXQucmF0ZSxcbiAgICAgICAgICAgICAgICAgICAgYW1vdW50OiBicmFja2V0VGF4LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHsgdGF4LCBicmVha2Rvd25zIH07XG4gICAgfVxufVxuIl19
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY2FwaXRhbC1nYWlucy9hdXN0cmFsaWEvZG9tYWluL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFRheEJyYWNrZXQge1xuICAgIGZyb206IG51bWJlcjtcbiAgICB0bzogbnVtYmVyIHwgbnVsbDtcbiAgICByYXRlOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUnVsZXMge1xuICAgIGNndERpc2NvdW50OiBudW1iZXI7XG4gICAgY2d0RGlzY291bnRNaW5Nb250aHM6IG51bWJlcjtcbiAgICB0YXhCcmFja2V0czogVGF4QnJhY2tldFtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElucHV0IHtcbiAgICBjYXBpdGFsR2FpbjogbnVtYmVyO1xuICAgIHRvdGFsVGF4YWJsZUluY29tZTogbnVtYmVyO1xuICAgIGhvbGRpbmdQZXJpb2RNb250aHM6IG51bWJlcjtcbn1cbiJdfQ==
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FuYWRhQ2FwaXRhbEdhaW5zU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jYXBpdGFsLWdhaW5zL2NhbmFkYS9DYW5hZGFDYXBpdGFsR2FpbnNTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZXN1bHQgfSBmcm9tIFwiLi4vZG9tYWluL3R5cGVzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2FuYWRhQ2FwaXRhbEdhaW5zU2VydmljZSB7XG4gICAgY2FsY3VsYXRlKCk6IFJlc3VsdDtcbn1cbiJdfQ==
|
|
@@ -9,14 +9,25 @@ class CanadaCapitalGainsServiceImpl {
|
|
|
9
9
|
calculate() {
|
|
10
10
|
const gain = this._input.capitalGain;
|
|
11
11
|
if (gain <= 0) {
|
|
12
|
-
return {
|
|
12
|
+
return {
|
|
13
|
+
taxableGain: 0,
|
|
14
|
+
capitalGainTax: 0,
|
|
15
|
+
socialContributions: 0,
|
|
16
|
+
netInvestmentIncomeTax: 0,
|
|
17
|
+
totalTax: 0,
|
|
18
|
+
effectiveRate: 0,
|
|
19
|
+
breakdowns: []
|
|
20
|
+
};
|
|
13
21
|
}
|
|
14
22
|
const taxableGain = gain * this._rules.inclusionRate;
|
|
15
23
|
const otherIncome = this._input.totalTaxableIncome - gain;
|
|
16
24
|
const { tax, breakdowns } = this.applyBrackets(taxableGain, otherIncome, this._rules.taxBrackets);
|
|
17
25
|
return {
|
|
18
26
|
taxableGain,
|
|
19
|
-
|
|
27
|
+
capitalGainTax: tax,
|
|
28
|
+
socialContributions: 0,
|
|
29
|
+
netInvestmentIncomeTax: 0,
|
|
30
|
+
totalTax: tax,
|
|
20
31
|
effectiveRate: gain > 0 ? (tax / gain) * 100 : 0,
|
|
21
32
|
breakdowns,
|
|
22
33
|
};
|
|
@@ -52,4 +63,4 @@ class CanadaCapitalGainsServiceImpl {
|
|
|
52
63
|
}
|
|
53
64
|
}
|
|
54
65
|
exports.CanadaCapitalGainsServiceImpl = CanadaCapitalGainsServiceImpl;
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FuYWRhQ2FwaXRhbEdhaW5zU2VydmljZUltcGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2FwaXRhbC1nYWlucy9jYW5hZGEvQ2FuYWRhQ2FwaXRhbEdhaW5zU2VydmljZUltcGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBSUEsTUFBYSw2QkFBNkI7SUFJdEMsWUFBWSxLQUFZLEVBQUUsS0FBWTtRQUNsQyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN4QixDQUFDO0lBRUQsU0FBUztRQUNMLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDO1FBRXJDLElBQUksSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ1osT0FBTztnQkFDSCxXQUFXLEVBQUUsQ0FBQztnQkFDZCxjQUFjLEVBQUUsQ0FBQztnQkFDakIsbUJBQW1CLEVBQUUsQ0FBQztnQkFDdEIsc0JBQXNCLEVBQUUsQ0FBQztnQkFDekIsUUFBUSxFQUFFLENBQUM7Z0JBQ1gsYUFBYSxFQUFFLENBQUM7Z0JBQ2hCLFVBQVUsRUFBRSxFQUFFO2FBQ2pCLENBQUM7UUFDTixDQUFDO1FBRUQsTUFBTSxXQUFXLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDO1FBQ3JELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO1FBQzFELE1BQU0sRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFbEcsT0FBTztZQUNILFdBQVc7WUFDWCxjQUFjLEVBQUUsR0FBRztZQUNuQixtQkFBbUIsRUFBRSxDQUFDO1lBQ3RCLHNCQUFzQixFQUFFLENBQUM7WUFDekIsUUFBUSxFQUFFLEdBQUc7WUFDYixhQUFhLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hELFVBQVU7U0FDYixDQUFDO0lBQ04sQ0FBQztJQUVPLGFBQWEsQ0FDakIsV0FBbUIsRUFDbkIsV0FBbUIsRUFDbkIsUUFBc0I7UUFFdEIsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ1osTUFBTSxVQUFVLEdBQWdCLEVBQUUsQ0FBQztRQUNuQyxJQUFJLFNBQVMsR0FBRyxXQUFXLENBQUM7UUFDNUIsSUFBSSxVQUFVLEdBQUcsV0FBVyxDQUFDO1FBRTdCLEtBQUssTUFBTSxPQUFPLElBQUksUUFBUSxFQUFFLENBQUM7WUFDN0IsSUFBSSxTQUFTLElBQUksQ0FBQztnQkFBRSxNQUFNO1lBRTFCLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxFQUFFLElBQUksUUFBUSxDQUFDO1lBRXJDLElBQUksVUFBVSxJQUFJLEtBQUs7Z0JBQUUsU0FBUztZQUVsQyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDeEQsTUFBTSxZQUFZLEdBQUcsS0FBSyxHQUFHLFlBQVksQ0FBQztZQUMxQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxTQUFTLENBQUMsQ0FBQztZQUVsRCxJQUFJLE9BQU8sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDZCxNQUFNLFVBQVUsR0FBRyxPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztnQkFDMUMsR0FBRyxJQUFJLFVBQVUsQ0FBQztnQkFDbEIsU0FBUyxJQUFJLE9BQU8sQ0FBQztnQkFDckIsVUFBVSxJQUFJLE9BQU8sQ0FBQztnQkFFdEIsVUFBVSxDQUFDLElBQUksQ0FBQztvQkFDWixJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxFQUFFO29CQUN2QixFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxJQUFJLE9BQU8sRUFBRTtvQkFDOUIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO29CQUNsQixNQUFNLEVBQUUsVUFBVTtpQkFDckIsQ0FBQyxDQUFDO1lBQ1AsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxDQUFDO0lBQy9CLENBQUM7Q0FDSjtBQTdFRCxzRUE2RUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCcmVha2Rvd24sIFJlc3VsdCB9IGZyb20gXCIuLi9kb21haW4vdHlwZXNcIjtcbmltcG9ydCB7IENhbmFkYUNhcGl0YWxHYWluc1NlcnZpY2UgfSBmcm9tIFwiLi9DYW5hZGFDYXBpdGFsR2FpbnNTZXJ2aWNlXCI7XG5pbXBvcnQgeyBJbnB1dCwgUnVsZXMsIFRheEJyYWNrZXQgfSBmcm9tIFwiLi9kb21haW4vdHlwZXNcIjtcblxuZXhwb3J0IGNsYXNzIENhbmFkYUNhcGl0YWxHYWluc1NlcnZpY2VJbXBsIGltcGxlbWVudHMgQ2FuYWRhQ2FwaXRhbEdhaW5zU2VydmljZSB7XG4gICAgcHJpdmF0ZSBfaW5wdXQ6IElucHV0O1xuICAgIHByaXZhdGUgX3J1bGVzOiBSdWxlcztcblxuICAgIGNvbnN0cnVjdG9yKGlucHV0OiBJbnB1dCwgcnVsZXM6IFJ1bGVzKSB7XG4gICAgICAgIHRoaXMuX2lucHV0ID0gaW5wdXQ7XG4gICAgICAgIHRoaXMuX3J1bGVzID0gcnVsZXM7XG4gICAgfVxuXG4gICAgY2FsY3VsYXRlKCk6IFJlc3VsdCB7XG4gICAgICAgIGNvbnN0IGdhaW4gPSB0aGlzLl9pbnB1dC5jYXBpdGFsR2FpbjtcblxuICAgICAgICBpZiAoZ2FpbiA8PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHRheGFibGVHYWluOiAwLFxuICAgICAgICAgICAgICAgIGNhcGl0YWxHYWluVGF4OiAwLFxuICAgICAgICAgICAgICAgIHNvY2lhbENvbnRyaWJ1dGlvbnM6IDAsXG4gICAgICAgICAgICAgICAgbmV0SW52ZXN0bWVudEluY29tZVRheDogMCxcbiAgICAgICAgICAgICAgICB0b3RhbFRheDogMCxcbiAgICAgICAgICAgICAgICBlZmZlY3RpdmVSYXRlOiAwLFxuICAgICAgICAgICAgICAgIGJyZWFrZG93bnM6IFtdXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdGF4YWJsZUdhaW4gPSBnYWluICogdGhpcy5fcnVsZXMuaW5jbHVzaW9uUmF0ZTtcbiAgICAgICAgY29uc3Qgb3RoZXJJbmNvbWUgPSB0aGlzLl9pbnB1dC50b3RhbFRheGFibGVJbmNvbWUgLSBnYWluO1xuICAgICAgICBjb25zdCB7IHRheCwgYnJlYWtkb3ducyB9ID0gdGhpcy5hcHBseUJyYWNrZXRzKHRheGFibGVHYWluLCBvdGhlckluY29tZSwgdGhpcy5fcnVsZXMudGF4QnJhY2tldHMpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0YXhhYmxlR2FpbixcbiAgICAgICAgICAgIGNhcGl0YWxHYWluVGF4OiB0YXgsXG4gICAgICAgICAgICBzb2NpYWxDb250cmlidXRpb25zOiAwLFxuICAgICAgICAgICAgbmV0SW52ZXN0bWVudEluY29tZVRheDogMCxcbiAgICAgICAgICAgIHRvdGFsVGF4OiB0YXgsXG4gICAgICAgICAgICBlZmZlY3RpdmVSYXRlOiBnYWluID4gMCA/ICh0YXggLyBnYWluKSAqIDEwMCA6IDAsXG4gICAgICAgICAgICBicmVha2Rvd25zLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgYXBwbHlCcmFja2V0cyhcbiAgICAgICAgdGF4YWJsZUdhaW46IG51bWJlcixcbiAgICAgICAgb3RoZXJJbmNvbWU6IG51bWJlcixcbiAgICAgICAgYnJhY2tldHM6IFRheEJyYWNrZXRbXSxcbiAgICApOiB7IHRheDogbnVtYmVyOyBicmVha2Rvd25zOiBCcmVha2Rvd25bXSB9IHtcbiAgICAgICAgbGV0IHRheCA9IDA7XG4gICAgICAgIGNvbnN0IGJyZWFrZG93bnM6IEJyZWFrZG93bltdID0gW107XG4gICAgICAgIGxldCByZW1haW5pbmcgPSB0YXhhYmxlR2FpbjtcbiAgICAgICAgbGV0IGluY29tZVVzZWQgPSBvdGhlckluY29tZTtcblxuICAgICAgICBmb3IgKGNvbnN0IGJyYWNrZXQgb2YgYnJhY2tldHMpIHtcbiAgICAgICAgICAgIGlmIChyZW1haW5pbmcgPD0gMCkgYnJlYWs7XG5cbiAgICAgICAgICAgIGNvbnN0IHVwcGVyID0gYnJhY2tldC50byA/PyBJbmZpbml0eTtcblxuICAgICAgICAgICAgaWYgKGluY29tZVVzZWQgPj0gdXBwZXIpIGNvbnRpbnVlO1xuXG4gICAgICAgICAgICBjb25zdCBicmFja2V0U3RhcnQgPSBNYXRoLm1heChicmFja2V0LmZyb20sIGluY29tZVVzZWQpO1xuICAgICAgICAgICAgY29uc3QgYnJhY2tldFNwYWNlID0gdXBwZXIgLSBicmFja2V0U3RhcnQ7XG4gICAgICAgICAgICBjb25zdCB0YXhhYmxlID0gTWF0aC5taW4oYnJhY2tldFNwYWNlLCByZW1haW5pbmcpO1xuXG4gICAgICAgICAgICBpZiAodGF4YWJsZSA+IDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBicmFja2V0VGF4ID0gdGF4YWJsZSAqIGJyYWNrZXQucmF0ZTtcbiAgICAgICAgICAgICAgICB0YXggKz0gYnJhY2tldFRheDtcbiAgICAgICAgICAgICAgICByZW1haW5pbmcgLT0gdGF4YWJsZTtcbiAgICAgICAgICAgICAgICBpbmNvbWVVc2VkICs9IHRheGFibGU7XG5cbiAgICAgICAgICAgICAgICBicmVha2Rvd25zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBmcm9tOiBgJHticmFja2V0LmZyb219YCxcbiAgICAgICAgICAgICAgICAgICAgdG86IGAke2JyYWNrZXQudG8gPz8gJ0Fib3ZlJ31gLFxuICAgICAgICAgICAgICAgICAgICByYXRlOiBicmFja2V0LnJhdGUsXG4gICAgICAgICAgICAgICAgICAgIGFtb3VudDogYnJhY2tldFRheCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7IHRheCwgYnJlYWtkb3ducyB9O1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY2FwaXRhbC1nYWlucy9jYW5hZGEvZG9tYWluL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFJ1bGVzIHtcbiAgICBpbmNsdXNpb25SYXRlOiBudW1iZXI7XG4gICAgdGF4QnJhY2tldHM6IFRheEJyYWNrZXRbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUYXhCcmFja2V0IHtcbiAgICBmcm9tOiBudW1iZXI7XG4gICAgdG86IG51bWJlciB8IG51bGw7XG4gICAgcmF0ZTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElucHV0IHtcbiAgICBjYXBpdGFsR2FpbjogbnVtYmVyO1xuICAgIHRvdGFsVGF4YWJsZUluY29tZTogbnVtYmVyO1xufVxuIl19
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2FwaXRhbC1nYWlucy9kb21haW4vdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgQnJlYWtkb3duIHtcbiAgICBmcm9tOiBzdHJpbmc7XG4gICAgdG86IHN0cmluZztcbiAgICByYXRlOiBudW1iZXI7XG4gICAgYW1vdW50OiBudW1iZXI7XG59XG5leHBvcnQgaW50ZXJmYWNlIFJlc3VsdCB7XG4gICAgdGF4YWJsZUdhaW46IG51bWJlcjtcbiAgICBjYXBpdGFsR2FpblRheDogbnVtYmVyO1xuICAgIHNvY2lhbENvbnRyaWJ1dGlvbnM6IG51bWJlcjtcbiAgICB0b3RhbFRheDogbnVtYmVyO1xuICAgIG5ldEludmVzdG1lbnRJbmNvbWVUYXg6IG51bWJlcjtcbiAgICBlZmZlY3RpdmVSYXRlOiBudW1iZXI7XG4gICAgYnJlYWtkb3duczogQnJlYWtkb3duW107XG59XG4iXX0=
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRnJhbmNlQ2FwaXRhbEdhaW5zU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jYXBpdGFsLWdhaW5zL2ZyYW5jZS9GcmFuY2VDYXBpdGFsR2FpbnNTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZXN1bHQgfSBmcm9tIFwiLi4vZG9tYWluL3R5cGVzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRnJhbmNlQ2FwaXRhbEdhaW5zU2VydmljZSB7XG4gICAgY2FsY3VsYXRlKCk6IFJlc3VsdDtcbn1cbiJdfQ==
|
|
@@ -9,17 +9,25 @@ class FranceCapitalGainsServiceImpl {
|
|
|
9
9
|
calculate() {
|
|
10
10
|
const gain = this._input.capitalGain;
|
|
11
11
|
if (gain <= 0) {
|
|
12
|
-
return {
|
|
12
|
+
return {
|
|
13
|
+
taxableGain: gain,
|
|
14
|
+
capitalGainTax: 0,
|
|
15
|
+
socialContributions: 0,
|
|
16
|
+
netInvestmentIncomeTax: 0,
|
|
17
|
+
totalTax: 0,
|
|
18
|
+
effectiveRate: 0,
|
|
19
|
+
breakdowns: []
|
|
20
|
+
};
|
|
13
21
|
}
|
|
14
|
-
const
|
|
22
|
+
const capitalGainTax = gain * this._rules.flatTaxRate;
|
|
15
23
|
const socialContributions = gain * this._rules.socialContributionsRate;
|
|
16
|
-
const totalTax =
|
|
24
|
+
const totalTax = capitalGainTax + socialContributions;
|
|
17
25
|
const breakdowns = [
|
|
18
26
|
{
|
|
19
27
|
from: '0',
|
|
20
28
|
to: 'All',
|
|
21
29
|
rate: this._rules.flatTaxRate,
|
|
22
|
-
amount:
|
|
30
|
+
amount: capitalGainTax,
|
|
23
31
|
},
|
|
24
32
|
{
|
|
25
33
|
from: '0',
|
|
@@ -29,8 +37,10 @@ class FranceCapitalGainsServiceImpl {
|
|
|
29
37
|
},
|
|
30
38
|
];
|
|
31
39
|
return {
|
|
32
|
-
|
|
40
|
+
taxableGain: gain,
|
|
41
|
+
capitalGainTax,
|
|
33
42
|
socialContributions,
|
|
43
|
+
netInvestmentIncomeTax: 0,
|
|
34
44
|
totalTax,
|
|
35
45
|
effectiveRate: (totalTax / gain) * 100,
|
|
36
46
|
breakdowns,
|
|
@@ -38,4 +48,4 @@ class FranceCapitalGainsServiceImpl {
|
|
|
38
48
|
}
|
|
39
49
|
}
|
|
40
50
|
exports.FranceCapitalGainsServiceImpl = FranceCapitalGainsServiceImpl;
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRnJhbmNlQ2FwaXRhbEdhaW5zU2VydmljZUltcGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2FwaXRhbC1nYWlucy9mcmFuY2UvRnJhbmNlQ2FwaXRhbEdhaW5zU2VydmljZUltcGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBSUEsTUFBYSw2QkFBNkI7SUFJdEMsWUFBWSxLQUFZLEVBQUUsS0FBWTtRQUNsQyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN4QixDQUFDO0lBRUQsU0FBUztRQUNMLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDO1FBRXJDLElBQUksSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ1osT0FBTztnQkFDSCxXQUFXLEVBQUUsSUFBSTtnQkFDakIsY0FBYyxFQUFFLENBQUM7Z0JBQ2pCLG1CQUFtQixFQUFFLENBQUM7Z0JBQ3RCLHNCQUFzQixFQUFFLENBQUM7Z0JBQ3pCLFFBQVEsRUFBRSxDQUFDO2dCQUNYLGFBQWEsRUFBRSxDQUFDO2dCQUNoQixVQUFVLEVBQUUsRUFBRTthQUNqQixDQUFDO1FBQ04sQ0FBQztRQUVELE1BQU0sY0FBYyxHQUFHLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQztRQUN0RCxNQUFNLG1CQUFtQixHQUFHLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLHVCQUF1QixDQUFDO1FBQ3ZFLE1BQU0sUUFBUSxHQUFHLGNBQWMsR0FBRyxtQkFBbUIsQ0FBQztRQUV0RCxNQUFNLFVBQVUsR0FBZ0I7WUFDNUI7Z0JBQ0ksSUFBSSxFQUFFLEdBQUc7Z0JBQ1QsRUFBRSxFQUFFLEtBQUs7Z0JBQ1QsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVztnQkFDN0IsTUFBTSxFQUFFLGNBQWM7YUFDekI7WUFDRDtnQkFDSSxJQUFJLEVBQUUsR0FBRztnQkFDVCxFQUFFLEVBQUUsUUFBUTtnQkFDWixJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyx1QkFBdUI7Z0JBQ3pDLE1BQU0sRUFBRSxtQkFBbUI7YUFDOUI7U0FDSixDQUFDO1FBRUYsT0FBTztZQUNILFdBQVcsRUFBRSxJQUFJO1lBQ2pCLGNBQWM7WUFDZCxtQkFBbUI7WUFDbkIsc0JBQXNCLEVBQUUsQ0FBQztZQUN6QixRQUFRO1lBQ1IsYUFBYSxFQUFFLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUc7WUFDdEMsVUFBVTtTQUNiLENBQUM7SUFDTixDQUFDO0NBQ0o7QUFyREQsc0VBcURDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnJlYWtkb3duLCBSZXN1bHQgfSBmcm9tIFwiLi4vZG9tYWluL3R5cGVzXCI7XG5pbXBvcnQgeyBGcmFuY2VDYXBpdGFsR2FpbnNTZXJ2aWNlIH0gZnJvbSBcIi4vRnJhbmNlQ2FwaXRhbEdhaW5zU2VydmljZVwiO1xuaW1wb3J0IHsgSW5wdXQsIFJ1bGVzIH0gZnJvbSBcIi4vZG9tYWluL3R5cGVzXCI7XG5cbmV4cG9ydCBjbGFzcyBGcmFuY2VDYXBpdGFsR2FpbnNTZXJ2aWNlSW1wbCBpbXBsZW1lbnRzIEZyYW5jZUNhcGl0YWxHYWluc1NlcnZpY2Uge1xuICAgIHByaXZhdGUgX2lucHV0OiBJbnB1dDtcbiAgICBwcml2YXRlIF9ydWxlczogUnVsZXM7XG5cbiAgICBjb25zdHJ1Y3RvcihpbnB1dDogSW5wdXQsIHJ1bGVzOiBSdWxlcykge1xuICAgICAgICB0aGlzLl9pbnB1dCA9IGlucHV0O1xuICAgICAgICB0aGlzLl9ydWxlcyA9IHJ1bGVzO1xuICAgIH1cblxuICAgIGNhbGN1bGF0ZSgpOiBSZXN1bHQge1xuICAgICAgICBjb25zdCBnYWluID0gdGhpcy5faW5wdXQuY2FwaXRhbEdhaW47XG5cbiAgICAgICAgaWYgKGdhaW4gPD0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0YXhhYmxlR2FpbjogZ2FpbixcbiAgICAgICAgICAgICAgICBjYXBpdGFsR2FpblRheDogMCxcbiAgICAgICAgICAgICAgICBzb2NpYWxDb250cmlidXRpb25zOiAwLFxuICAgICAgICAgICAgICAgIG5ldEludmVzdG1lbnRJbmNvbWVUYXg6IDAsXG4gICAgICAgICAgICAgICAgdG90YWxUYXg6IDAsXG4gICAgICAgICAgICAgICAgZWZmZWN0aXZlUmF0ZTogMCxcbiAgICAgICAgICAgICAgICBicmVha2Rvd25zOiBbXVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNhcGl0YWxHYWluVGF4ID0gZ2FpbiAqIHRoaXMuX3J1bGVzLmZsYXRUYXhSYXRlO1xuICAgICAgICBjb25zdCBzb2NpYWxDb250cmlidXRpb25zID0gZ2FpbiAqIHRoaXMuX3J1bGVzLnNvY2lhbENvbnRyaWJ1dGlvbnNSYXRlO1xuICAgICAgICBjb25zdCB0b3RhbFRheCA9IGNhcGl0YWxHYWluVGF4ICsgc29jaWFsQ29udHJpYnV0aW9ucztcblxuICAgICAgICBjb25zdCBicmVha2Rvd25zOiBCcmVha2Rvd25bXSA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBmcm9tOiAnMCcsXG4gICAgICAgICAgICAgICAgdG86ICdBbGwnLFxuICAgICAgICAgICAgICAgIHJhdGU6IHRoaXMuX3J1bGVzLmZsYXRUYXhSYXRlLFxuICAgICAgICAgICAgICAgIGFtb3VudDogY2FwaXRhbEdhaW5UYXgsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGZyb206ICcwJyxcbiAgICAgICAgICAgICAgICB0bzogJ1NvY2lhbCcsXG4gICAgICAgICAgICAgICAgcmF0ZTogdGhpcy5fcnVsZXMuc29jaWFsQ29udHJpYnV0aW9uc1JhdGUsXG4gICAgICAgICAgICAgICAgYW1vdW50OiBzb2NpYWxDb250cmlidXRpb25zLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGF4YWJsZUdhaW46IGdhaW4sXG4gICAgICAgICAgICBjYXBpdGFsR2FpblRheCxcbiAgICAgICAgICAgIHNvY2lhbENvbnRyaWJ1dGlvbnMsXG4gICAgICAgICAgICBuZXRJbnZlc3RtZW50SW5jb21lVGF4OiAwLFxuICAgICAgICAgICAgdG90YWxUYXgsXG4gICAgICAgICAgICBlZmZlY3RpdmVSYXRlOiAodG90YWxUYXggLyBnYWluKSAqIDEwMCxcbiAgICAgICAgICAgIGJyZWFrZG93bnMsXG4gICAgICAgIH07XG4gICAgfVxufVxuIl19
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY2FwaXRhbC1nYWlucy9mcmFuY2UvZG9tYWluL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFJ1bGVzIHtcbiAgICBmbGF0VGF4UmF0ZTogbnVtYmVyO1xuICAgIHNvY2lhbENvbnRyaWJ1dGlvbnNSYXRlOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5wdXQge1xuICAgIGNhcGl0YWxHYWluOiBudW1iZXI7XG59Il19
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR2VybWFueUNhcGl0YWxHYWluc1NlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2FwaXRhbC1nYWlucy9nZXJtYW55L0dlcm1hbnlDYXBpdGFsR2FpbnNTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZXN1bHQgfSBmcm9tIFwiLi4vZG9tYWluL3R5cGVzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2VybWFueUNhcGl0YWxHYWluc1NlcnZpY2Uge1xuICAgIGNhbGN1bGF0ZSgpOiBSZXN1bHQ7XG59XG4iXX0=
|
|
@@ -11,8 +11,9 @@ class GermanyCapitalGainsServiceImpl {
|
|
|
11
11
|
if (gain <= 0) {
|
|
12
12
|
return {
|
|
13
13
|
taxableGain: 0,
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
capitalGainTax: 0,
|
|
15
|
+
socialContributions: 0,
|
|
16
|
+
netInvestmentIncomeTax: 0,
|
|
16
17
|
totalTax: 0,
|
|
17
18
|
effectiveRate: 0,
|
|
18
19
|
breakdowns: [],
|
|
@@ -22,8 +23,9 @@ class GermanyCapitalGainsServiceImpl {
|
|
|
22
23
|
if (taxableGain <= 0) {
|
|
23
24
|
return {
|
|
24
25
|
taxableGain: 0,
|
|
25
|
-
|
|
26
|
-
|
|
26
|
+
capitalGainTax: 0,
|
|
27
|
+
socialContributions: 0,
|
|
28
|
+
netInvestmentIncomeTax: 0,
|
|
27
29
|
totalTax: 0,
|
|
28
30
|
effectiveRate: 0,
|
|
29
31
|
breakdowns: [{
|
|
@@ -34,27 +36,28 @@ class GermanyCapitalGainsServiceImpl {
|
|
|
34
36
|
}],
|
|
35
37
|
};
|
|
36
38
|
}
|
|
37
|
-
const
|
|
38
|
-
const
|
|
39
|
-
const totalTax =
|
|
39
|
+
const capitalGainTax = taxableGain * this._rules.flatTaxRate;
|
|
40
|
+
const socialContributions = capitalGainTax * this._rules.solidaritySurchargeRate;
|
|
41
|
+
const totalTax = capitalGainTax + socialContributions;
|
|
40
42
|
const breakdowns = [
|
|
41
43
|
{
|
|
42
44
|
from: '0',
|
|
43
45
|
to: 'All',
|
|
44
46
|
rate: this._rules.flatTaxRate,
|
|
45
|
-
amount:
|
|
47
|
+
amount: capitalGainTax,
|
|
46
48
|
},
|
|
47
49
|
{
|
|
48
50
|
from: 'CGT',
|
|
49
51
|
to: 'Solidarity',
|
|
50
52
|
rate: this._rules.solidaritySurchargeRate,
|
|
51
|
-
amount:
|
|
53
|
+
amount: socialContributions,
|
|
52
54
|
},
|
|
53
55
|
];
|
|
54
56
|
return {
|
|
55
57
|
taxableGain,
|
|
56
|
-
|
|
57
|
-
|
|
58
|
+
capitalGainTax,
|
|
59
|
+
socialContributions,
|
|
60
|
+
netInvestmentIncomeTax: 0,
|
|
58
61
|
totalTax,
|
|
59
62
|
effectiveRate: gain > 0 ? (totalTax / gain) * 100 : 0,
|
|
60
63
|
breakdowns,
|
|
@@ -62,4 +65,4 @@ class GermanyCapitalGainsServiceImpl {
|
|
|
62
65
|
}
|
|
63
66
|
}
|
|
64
67
|
exports.GermanyCapitalGainsServiceImpl = GermanyCapitalGainsServiceImpl;
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR2VybWFueUNhcGl0YWxHYWluc1NlcnZpY2VJbXBsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NhcGl0YWwtZ2FpbnMvZ2VybWFueS9HZXJtYW55Q2FwaXRhbEdhaW5zU2VydmljZUltcGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBSUEsTUFBYSw4QkFBOEI7SUFJdkMsWUFBWSxLQUFZLEVBQUUsS0FBWTtRQUNsQyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN4QixDQUFDO0lBRUQsU0FBUztRQUNMLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDO1FBRXJDLElBQUksSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ1osT0FBTztnQkFDSCxXQUFXLEVBQUUsQ0FBQztnQkFDZCxjQUFjLEVBQUUsQ0FBQztnQkFDakIsbUJBQW1CLEVBQUUsQ0FBQztnQkFDdEIsc0JBQXNCLEVBQUUsQ0FBQztnQkFDekIsUUFBUSxFQUFFLENBQUM7Z0JBQ1gsYUFBYSxFQUFFLENBQUM7Z0JBQ2hCLFVBQVUsRUFBRSxFQUFFO2FBQ2pCLENBQUM7UUFDTixDQUFDO1FBRUQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFcEUsSUFBSSxXQUFXLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDbkIsT0FBTztnQkFDSCxXQUFXLEVBQUUsQ0FBQztnQkFDZCxjQUFjLEVBQUUsQ0FBQztnQkFDakIsbUJBQW1CLEVBQUUsQ0FBQztnQkFDdEIsc0JBQXNCLEVBQUUsQ0FBQztnQkFDekIsUUFBUSxFQUFFLENBQUM7Z0JBQ1gsYUFBYSxFQUFFLENBQUM7Z0JBQ2hCLFVBQVUsRUFBRSxDQUFDO3dCQUNULElBQUksRUFBRSxHQUFHO3dCQUNULEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFO3dCQUNwQyxJQUFJLEVBQUUsQ0FBQzt3QkFDUCxNQUFNLEVBQUUsQ0FBQztxQkFDWixDQUFDO2FBQ0wsQ0FBQztRQUNOLENBQUM7UUFFRCxNQUFNLGNBQWMsR0FBRyxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUM7UUFDN0QsTUFBTSxtQkFBbUIsR0FBRyxjQUFjLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQztRQUNqRixNQUFNLFFBQVEsR0FBRyxjQUFjLEdBQUcsbUJBQW1CLENBQUM7UUFFdEQsTUFBTSxVQUFVLEdBQWdCO1lBQzVCO2dCQUNJLElBQUksRUFBRSxHQUFHO2dCQUNULEVBQUUsRUFBRSxLQUFLO2dCQUNULElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVc7Z0JBQzdCLE1BQU0sRUFBRSxjQUFjO2FBQ3pCO1lBQ0Q7Z0JBQ0ksSUFBSSxFQUFFLEtBQUs7Z0JBQ1gsRUFBRSxFQUFFLFlBQVk7Z0JBQ2hCLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLHVCQUF1QjtnQkFDekMsTUFBTSxFQUFFLG1CQUFtQjthQUM5QjtTQUNKLENBQUM7UUFFRixPQUFPO1lBQ0gsV0FBVztZQUNYLGNBQWM7WUFDZCxtQkFBbUI7WUFDbkIsc0JBQXNCLEVBQUUsQ0FBQztZQUN6QixRQUFRO1lBQ1IsYUFBYSxFQUFFLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyRCxVQUFVO1NBQ2IsQ0FBQztJQUNOLENBQUM7Q0FDSjtBQXhFRCx3RUF3RUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCcmVha2Rvd24sIFJlc3VsdCB9IGZyb20gXCIuLi9kb21haW4vdHlwZXNcIjtcbmltcG9ydCB7IEdlcm1hbnlDYXBpdGFsR2FpbnNTZXJ2aWNlIH0gZnJvbSBcIi4vR2VybWFueUNhcGl0YWxHYWluc1NlcnZpY2VcIjtcbmltcG9ydCB7IElucHV0LCBSdWxlcyB9IGZyb20gXCIuL2RvbWFpbi90eXBlc1wiO1xuXG5leHBvcnQgY2xhc3MgR2VybWFueUNhcGl0YWxHYWluc1NlcnZpY2VJbXBsIGltcGxlbWVudHMgR2VybWFueUNhcGl0YWxHYWluc1NlcnZpY2Uge1xuICAgIHByaXZhdGUgX2lucHV0OiBJbnB1dDtcbiAgICBwcml2YXRlIF9ydWxlczogUnVsZXM7XG5cbiAgICBjb25zdHJ1Y3RvcihpbnB1dDogSW5wdXQsIHJ1bGVzOiBSdWxlcykge1xuICAgICAgICB0aGlzLl9pbnB1dCA9IGlucHV0O1xuICAgICAgICB0aGlzLl9ydWxlcyA9IHJ1bGVzO1xuICAgIH1cblxuICAgIGNhbGN1bGF0ZSgpOiBSZXN1bHQge1xuICAgICAgICBjb25zdCBnYWluID0gdGhpcy5faW5wdXQuY2FwaXRhbEdhaW47XG5cbiAgICAgICAgaWYgKGdhaW4gPD0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0YXhhYmxlR2FpbjogMCxcbiAgICAgICAgICAgICAgICBjYXBpdGFsR2FpblRheDogMCxcbiAgICAgICAgICAgICAgICBzb2NpYWxDb250cmlidXRpb25zOiAwLFxuICAgICAgICAgICAgICAgIG5ldEludmVzdG1lbnRJbmNvbWVUYXg6IDAsXG4gICAgICAgICAgICAgICAgdG90YWxUYXg6IDAsXG4gICAgICAgICAgICAgICAgZWZmZWN0aXZlUmF0ZTogMCxcbiAgICAgICAgICAgICAgICBicmVha2Rvd25zOiBbXSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0YXhhYmxlR2FpbiA9IE1hdGgubWF4KDAsIGdhaW4gLSB0aGlzLl9ydWxlcy5hbm51YWxFeGVtcHRpb24pO1xuXG4gICAgICAgIGlmICh0YXhhYmxlR2FpbiA8PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHRheGFibGVHYWluOiAwLFxuICAgICAgICAgICAgICAgIGNhcGl0YWxHYWluVGF4OiAwLFxuICAgICAgICAgICAgICAgIHNvY2lhbENvbnRyaWJ1dGlvbnM6IDAsXG4gICAgICAgICAgICAgICAgbmV0SW52ZXN0bWVudEluY29tZVRheDogMCxcbiAgICAgICAgICAgICAgICB0b3RhbFRheDogMCxcbiAgICAgICAgICAgICAgICBlZmZlY3RpdmVSYXRlOiAwLFxuICAgICAgICAgICAgICAgIGJyZWFrZG93bnM6IFt7XG4gICAgICAgICAgICAgICAgICAgIGZyb206ICcwJyxcbiAgICAgICAgICAgICAgICAgICAgdG86IGAke3RoaXMuX3J1bGVzLmFubnVhbEV4ZW1wdGlvbn1gLFxuICAgICAgICAgICAgICAgICAgICByYXRlOiAwLFxuICAgICAgICAgICAgICAgICAgICBhbW91bnQ6IDAsXG4gICAgICAgICAgICAgICAgfV0sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY2FwaXRhbEdhaW5UYXggPSB0YXhhYmxlR2FpbiAqIHRoaXMuX3J1bGVzLmZsYXRUYXhSYXRlO1xuICAgICAgICBjb25zdCBzb2NpYWxDb250cmlidXRpb25zID0gY2FwaXRhbEdhaW5UYXggKiB0aGlzLl9ydWxlcy5zb2xpZGFyaXR5U3VyY2hhcmdlUmF0ZTtcbiAgICAgICAgY29uc3QgdG90YWxUYXggPSBjYXBpdGFsR2FpblRheCArIHNvY2lhbENvbnRyaWJ1dGlvbnM7XG5cbiAgICAgICAgY29uc3QgYnJlYWtkb3duczogQnJlYWtkb3duW10gPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZnJvbTogJzAnLFxuICAgICAgICAgICAgICAgIHRvOiAnQWxsJyxcbiAgICAgICAgICAgICAgICByYXRlOiB0aGlzLl9ydWxlcy5mbGF0VGF4UmF0ZSxcbiAgICAgICAgICAgICAgICBhbW91bnQ6IGNhcGl0YWxHYWluVGF4LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBmcm9tOiAnQ0dUJyxcbiAgICAgICAgICAgICAgICB0bzogJ1NvbGlkYXJpdHknLFxuICAgICAgICAgICAgICAgIHJhdGU6IHRoaXMuX3J1bGVzLnNvbGlkYXJpdHlTdXJjaGFyZ2VSYXRlLFxuICAgICAgICAgICAgICAgIGFtb3VudDogc29jaWFsQ29udHJpYnV0aW9ucyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF07XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRheGFibGVHYWluLFxuICAgICAgICAgICAgY2FwaXRhbEdhaW5UYXgsXG4gICAgICAgICAgICBzb2NpYWxDb250cmlidXRpb25zLFxuICAgICAgICAgICAgbmV0SW52ZXN0bWVudEluY29tZVRheDogMCxcbiAgICAgICAgICAgIHRvdGFsVGF4LFxuICAgICAgICAgICAgZWZmZWN0aXZlUmF0ZTogZ2FpbiA+IDAgPyAodG90YWxUYXggLyBnYWluKSAqIDEwMCA6IDAsXG4gICAgICAgICAgICBicmVha2Rvd25zLFxuICAgICAgICB9O1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY2FwaXRhbC1nYWlucy9nZXJtYW55L2RvbWFpbi90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiXG5leHBvcnQgaW50ZXJmYWNlIFJ1bGVzIHtcbiAgICBmbGF0VGF4UmF0ZTogbnVtYmVyO1xuICAgIHNvbGlkYXJpdHlTdXJjaGFyZ2VSYXRlOiBudW1iZXI7XG4gICAgYW5udWFsRXhlbXB0aW9uOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5wdXQge1xuICAgIGNhcGl0YWxHYWluOiBudW1iZXI7XG59XG4iXX0=
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GermanyCapitalGainsService = exports.USACapitalGainsService = exports.UKCapitalGainsService = exports.AustraliaCapitalGainsService = exports.SouthAfricaCapitalGainsService = exports.FranceCapitalGainsService = exports.CanadaCapitalGainsService = void 0;
|
|
4
|
+
// Capital Gains - Canada
|
|
5
|
+
const CanadaCapitalGainsServiceImpl_1 = require("./canada/CanadaCapitalGainsServiceImpl");
|
|
6
|
+
Object.defineProperty(exports, "CanadaCapitalGainsService", { enumerable: true, get: function () { return CanadaCapitalGainsServiceImpl_1.CanadaCapitalGainsServiceImpl; } });
|
|
7
|
+
// Capital Gains - France
|
|
8
|
+
const FranceCapitalGainsServiceImpl_1 = require("./france/FranceCapitalGainsServiceImpl");
|
|
9
|
+
Object.defineProperty(exports, "FranceCapitalGainsService", { enumerable: true, get: function () { return FranceCapitalGainsServiceImpl_1.FranceCapitalGainsServiceImpl; } });
|
|
10
|
+
// Capital Gains - South Africa
|
|
11
|
+
const SouthAfricaCapitalGainsServiceImpl_1 = require("./south-africa/SouthAfricaCapitalGainsServiceImpl");
|
|
12
|
+
Object.defineProperty(exports, "SouthAfricaCapitalGainsService", { enumerable: true, get: function () { return SouthAfricaCapitalGainsServiceImpl_1.SouthAfricaCapitalGainsServiceImpl; } });
|
|
13
|
+
// Capital Gains - Australia
|
|
14
|
+
const AustraliaCapitalGainsServiceImpl_1 = require("./australia/AustraliaCapitalGainsServiceImpl");
|
|
15
|
+
Object.defineProperty(exports, "AustraliaCapitalGainsService", { enumerable: true, get: function () { return AustraliaCapitalGainsServiceImpl_1.AustraliaCapitalGainsServiceImpl; } });
|
|
16
|
+
// Capital Gains - UK
|
|
17
|
+
const UKCapitalGainsServiceImpl_1 = require("./uk/UKCapitalGainsServiceImpl");
|
|
18
|
+
Object.defineProperty(exports, "UKCapitalGainsService", { enumerable: true, get: function () { return UKCapitalGainsServiceImpl_1.UKCapitalGainsServiceImpl; } });
|
|
19
|
+
// Capital Gains - USA
|
|
20
|
+
const USACapitalGainsServiceImpl_1 = require("./usa/USACapitalGainsServiceImpl");
|
|
21
|
+
Object.defineProperty(exports, "USACapitalGainsService", { enumerable: true, get: function () { return USACapitalGainsServiceImpl_1.USACapitalGainsServiceImpl; } });
|
|
22
|
+
// Capital Gains - Germany
|
|
23
|
+
const GermanyCapitalGainsServiceImpl_1 = require("./germany/GermanyCapitalGainsServiceImpl");
|
|
24
|
+
Object.defineProperty(exports, "GermanyCapitalGainsService", { enumerable: true, get: function () { return GermanyCapitalGainsServiceImpl_1.GermanyCapitalGainsServiceImpl; } });
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2FwaXRhbC1nYWlucy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5QkFBeUI7QUFDekIsMEZBQW9IO0FBaURoSCwwR0FqRHNDLDZEQUF5QixPQWlEdEM7QUEzQzdCLHlCQUF5QjtBQUN6QiwwRkFBb0g7QUE2Q2hILDBHQTdDc0MsNkRBQXlCLE9BNkN0QztBQXZDN0IsK0JBQStCO0FBQy9CLDBHQUF5STtBQXlDckksK0dBekMyQyx1RUFBOEIsT0F5QzNDO0FBbkNsQyw0QkFBNEI7QUFDNUIsbUdBQWdJO0FBcUM1SCw2R0FyQ3lDLG1FQUE0QixPQXFDekM7QUEvQmhDLHFCQUFxQjtBQUNyQiw4RUFBb0c7QUFpQ2hHLHNHQWpDa0MscURBQXFCLE9BaUNsQztBQTNCekIsc0JBQXNCO0FBQ3RCLGlGQUF3RztBQTZCcEcsdUdBN0JtQyx1REFBc0IsT0E2Qm5DO0FBdkIxQiwwQkFBMEI7QUFDMUIsNkZBQXdIO0FBeUJwSCwyR0F6QnVDLCtEQUEwQixPQXlCdkMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDYXBpdGFsIEdhaW5zIC0gQ2FuYWRhXG5pbXBvcnQgeyBDYW5hZGFDYXBpdGFsR2FpbnNTZXJ2aWNlSW1wbCBhcyBDYW5hZGFDYXBpdGFsR2FpbnNTZXJ2aWNlIH0gZnJvbSAnLi9jYW5hZGEvQ2FuYWRhQ2FwaXRhbEdhaW5zU2VydmljZUltcGwnO1xuaW1wb3J0IHtcbiAgICBJbnB1dCBhcyBDYW5hZGFDYXBpdGFsR2FpbnNJbnB1dCxcbiAgICBSdWxlcyBhcyBDYW5hZGFDYXBpdGFsR2FpbnNSdWxlc1xufSBmcm9tICcuL2NhbmFkYS9kb21haW4vdHlwZXMnO1xuXG4vLyBDYXBpdGFsIEdhaW5zIC0gRnJhbmNlXG5pbXBvcnQgeyBGcmFuY2VDYXBpdGFsR2FpbnNTZXJ2aWNlSW1wbCBhcyBGcmFuY2VDYXBpdGFsR2FpbnNTZXJ2aWNlIH0gZnJvbSAnLi9mcmFuY2UvRnJhbmNlQ2FwaXRhbEdhaW5zU2VydmljZUltcGwnO1xuaW1wb3J0IHtcbiAgICBJbnB1dCBhcyBGcmFuY2VDYXBpdGFsR2FpbnNJbnB1dCxcbiAgICBSdWxlcyBhcyBGcmFuY2VDYXBpdGFsR2FpbnNSdWxlc1xufSBmcm9tICcuL2ZyYW5jZS9kb21haW4vdHlwZXMnO1xuXG4vLyBDYXBpdGFsIEdhaW5zIC0gU291dGggQWZyaWNhXG5pbXBvcnQgeyBTb3V0aEFmcmljYUNhcGl0YWxHYWluc1NlcnZpY2VJbXBsIGFzIFNvdXRoQWZyaWNhQ2FwaXRhbEdhaW5zU2VydmljZSB9IGZyb20gJy4vc291dGgtYWZyaWNhL1NvdXRoQWZyaWNhQ2FwaXRhbEdhaW5zU2VydmljZUltcGwnO1xuaW1wb3J0IHtcbiAgICBJbnB1dCBhcyBTb3V0aEFmcmljYUNhcGl0YWxHYWluc0lucHV0LFxuICAgIFJ1bGVzIGFzIFNvdXRoQWZyaWNhQ2FwaXRhbEdhaW5zUnVsZXNcbn0gZnJvbSAnLi9zb3V0aC1hZnJpY2EvZG9tYWluL3R5cGVzJztcblxuLy8gQ2FwaXRhbCBHYWlucyAtIEF1c3RyYWxpYVxuaW1wb3J0IHsgQXVzdHJhbGlhQ2FwaXRhbEdhaW5zU2VydmljZUltcGwgYXMgQXVzdHJhbGlhQ2FwaXRhbEdhaW5zU2VydmljZSB9IGZyb20gJy4vYXVzdHJhbGlhL0F1c3RyYWxpYUNhcGl0YWxHYWluc1NlcnZpY2VJbXBsJztcbmltcG9ydCB7XG4gICAgSW5wdXQgYXMgQXVzdHJhbGlhQ2FwaXRhbEdhaW5zSW5wdXQsXG4gICAgUnVsZXMgYXMgQXVzdHJhbGlhQ2FwaXRhbEdhaW5zUnVsZXNcbn0gZnJvbSAnLi9hdXN0cmFsaWEvZG9tYWluL3R5cGVzJztcblxuLy8gQ2FwaXRhbCBHYWlucyAtIFVLXG5pbXBvcnQgeyBVS0NhcGl0YWxHYWluc1NlcnZpY2VJbXBsIGFzIFVLQ2FwaXRhbEdhaW5zU2VydmljZSB9IGZyb20gJy4vdWsvVUtDYXBpdGFsR2FpbnNTZXJ2aWNlSW1wbCc7XG5pbXBvcnQge1xuICAgIElucHV0IGFzIFVLQ2FwaXRhbEdhaW5zSW5wdXQsXG4gICAgUnVsZXMgYXMgVUtDYXBpdGFsR2FpbnNSdWxlc1xufSBmcm9tICcuL3VrL2RvbWFpbi90eXBlcyc7XG5cbi8vIENhcGl0YWwgR2FpbnMgLSBVU0FcbmltcG9ydCB7IFVTQUNhcGl0YWxHYWluc1NlcnZpY2VJbXBsIGFzIFVTQUNhcGl0YWxHYWluc1NlcnZpY2UgfSBmcm9tICcuL3VzYS9VU0FDYXBpdGFsR2FpbnNTZXJ2aWNlSW1wbCc7XG5pbXBvcnQge1xuICAgIElucHV0IGFzIFVTQUNhcGl0YWxHYWluc0lucHV0LFxuICAgIFJ1bGVzIGFzIFVTQUNhcGl0YWxHYWluc1J1bGVzXG59IGZyb20gJy4vdXNhL2RvbWFpbi90eXBlcyc7XG5cbi8vIENhcGl0YWwgR2FpbnMgLSBHZXJtYW55XG5pbXBvcnQgeyBHZXJtYW55Q2FwaXRhbEdhaW5zU2VydmljZUltcGwgYXMgR2VybWFueUNhcGl0YWxHYWluc1NlcnZpY2UgfSBmcm9tICcuL2dlcm1hbnkvR2VybWFueUNhcGl0YWxHYWluc1NlcnZpY2VJbXBsJztcbmltcG9ydCB7XG4gICAgSW5wdXQgYXMgR2VybWFueUNhcGl0YWxHYWluc0lucHV0LFxuICAgIFJ1bGVzIGFzIEdlcm1hbnlDYXBpdGFsR2FpbnNSdWxlc1xufSBmcm9tICcuL2dlcm1hbnkvZG9tYWluL3R5cGVzJztcblxuZXhwb3J0IHtcbiAgICBDYW5hZGFDYXBpdGFsR2FpbnNTZXJ2aWNlLFxuICAgIENhbmFkYUNhcGl0YWxHYWluc0lucHV0LFxuICAgIENhbmFkYUNhcGl0YWxHYWluc1J1bGVzLFxuICAgIEZyYW5jZUNhcGl0YWxHYWluc1NlcnZpY2UsXG4gICAgRnJhbmNlQ2FwaXRhbEdhaW5zSW5wdXQsXG4gICAgRnJhbmNlQ2FwaXRhbEdhaW5zUnVsZXMsXG4gICAgU291dGhBZnJpY2FDYXBpdGFsR2FpbnNTZXJ2aWNlLFxuICAgIFNvdXRoQWZyaWNhQ2FwaXRhbEdhaW5zSW5wdXQsXG4gICAgU291dGhBZnJpY2FDYXBpdGFsR2FpbnNSdWxlcyxcbiAgICBBdXN0cmFsaWFDYXBpdGFsR2FpbnNTZXJ2aWNlLFxuICAgIEF1c3RyYWxpYUNhcGl0YWxHYWluc0lucHV0LFxuICAgIEF1c3RyYWxpYUNhcGl0YWxHYWluc1J1bGVzLFxuICAgIFVLQ2FwaXRhbEdhaW5zU2VydmljZSxcbiAgICBVS0NhcGl0YWxHYWluc0lucHV0LFxuICAgIFVLQ2FwaXRhbEdhaW5zUnVsZXMsXG4gICAgVVNBQ2FwaXRhbEdhaW5zU2VydmljZSxcbiAgICBVU0FDYXBpdGFsR2FpbnNJbnB1dCxcbiAgICBVU0FDYXBpdGFsR2FpbnNSdWxlcyxcbiAgICBHZXJtYW55Q2FwaXRhbEdhaW5zU2VydmljZSxcbiAgICBHZXJtYW55Q2FwaXRhbEdhaW5zSW5wdXQsXG4gICAgR2VybWFueUNhcGl0YWxHYWluc1J1bGVzXG59OyJdfQ==
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU291dGhBZnJpY2FDYXBpdGFsR2FpbnNTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NhcGl0YWwtZ2FpbnMvc291dGgtYWZyaWNhL1NvdXRoQWZyaWNhQ2FwaXRhbEdhaW5zU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVzdWx0IH0gZnJvbSBcIi4uL2RvbWFpbi90eXBlc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNvdXRoQWZyaWNhQ2FwaXRhbEdhaW5zU2VydmljZSB7XG4gICAgY2FsY3VsYXRlKCk6IFJlc3VsdDtcbn1cbiJdfQ==
|
|
@@ -9,14 +9,25 @@ class SouthAfricaCapitalGainsServiceImpl {
|
|
|
9
9
|
calculate() {
|
|
10
10
|
const gain = this._input.capitalGain;
|
|
11
11
|
if (gain <= 0) {
|
|
12
|
-
return {
|
|
12
|
+
return {
|
|
13
|
+
taxableGain: 0,
|
|
14
|
+
capitalGainTax: 0,
|
|
15
|
+
socialContributions: 0,
|
|
16
|
+
netInvestmentIncomeTax: 0,
|
|
17
|
+
totalTax: 0,
|
|
18
|
+
effectiveRate: 0,
|
|
19
|
+
breakdowns: []
|
|
20
|
+
};
|
|
13
21
|
}
|
|
14
22
|
const netGain = Math.max(0, gain - this._rules.annualExclusion);
|
|
15
23
|
const taxableGain = netGain * this._rules.inclusionRate;
|
|
16
24
|
if (taxableGain <= 0) {
|
|
17
25
|
return {
|
|
18
26
|
taxableGain: 0,
|
|
19
|
-
|
|
27
|
+
capitalGainTax: 0,
|
|
28
|
+
socialContributions: 0,
|
|
29
|
+
netInvestmentIncomeTax: 0,
|
|
30
|
+
totalTax: 0,
|
|
20
31
|
effectiveRate: 0,
|
|
21
32
|
breakdowns: [{
|
|
22
33
|
from: '0',
|
|
@@ -30,7 +41,10 @@ class SouthAfricaCapitalGainsServiceImpl {
|
|
|
30
41
|
const { tax, breakdowns } = this.applyBrackets(taxableGain, otherIncome, this._rules.taxBrackets);
|
|
31
42
|
return {
|
|
32
43
|
taxableGain,
|
|
33
|
-
|
|
44
|
+
capitalGainTax: tax,
|
|
45
|
+
socialContributions: 0,
|
|
46
|
+
netInvestmentIncomeTax: 0,
|
|
47
|
+
totalTax: tax,
|
|
34
48
|
effectiveRate: gain > 0 ? (tax / gain) * 100 : 0,
|
|
35
49
|
breakdowns,
|
|
36
50
|
};
|
|
@@ -66,4 +80,4 @@ class SouthAfricaCapitalGainsServiceImpl {
|
|
|
66
80
|
}
|
|
67
81
|
}
|
|
68
82
|
exports.SouthAfricaCapitalGainsServiceImpl = SouthAfricaCapitalGainsServiceImpl;
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU291dGhBZnJpY2FDYXBpdGFsR2FpbnNTZXJ2aWNlSW1wbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jYXBpdGFsLWdhaW5zL3NvdXRoLWFmcmljYS9Tb3V0aEFmcmljYUNhcGl0YWxHYWluc1NlcnZpY2VJbXBsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBLE1BQWEsa0NBQWtDO0lBSTNDLFlBQVksS0FBWSxFQUFFLEtBQVk7UUFDbEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDeEIsQ0FBQztJQUVELFNBQVM7UUFDTCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQztRQUVyQyxJQUFJLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNaLE9BQU87Z0JBQ0gsV0FBVyxFQUFFLENBQUM7Z0JBQ2QsY0FBYyxFQUFFLENBQUM7Z0JBQ2pCLG1CQUFtQixFQUFFLENBQUM7Z0JBQ3RCLHNCQUFzQixFQUFFLENBQUM7Z0JBQ3pCLFFBQVEsRUFBRSxDQUFDO2dCQUNYLGFBQWEsRUFBRSxDQUFDO2dCQUNoQixVQUFVLEVBQUUsRUFBRTthQUNqQixDQUFDO1FBQ04sQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2hFLE1BQU0sV0FBVyxHQUFHLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQztRQUV4RCxJQUFJLFdBQVcsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNuQixPQUFPO2dCQUNILFdBQVcsRUFBRSxDQUFDO2dCQUNkLGNBQWMsRUFBRSxDQUFDO2dCQUNqQixtQkFBbUIsRUFBRSxDQUFDO2dCQUN0QixzQkFBc0IsRUFBRSxDQUFDO2dCQUN6QixRQUFRLEVBQUUsQ0FBQztnQkFDWCxhQUFhLEVBQUUsQ0FBQztnQkFDaEIsVUFBVSxFQUFFLENBQUM7d0JBQ1QsSUFBSSxFQUFFLEdBQUc7d0JBQ1QsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUU7d0JBQ3BDLElBQUksRUFBRSxDQUFDO3dCQUNQLE1BQU0sRUFBRSxDQUFDO3FCQUNaLENBQUM7YUFDTCxDQUFDO1FBQ04sQ0FBQztRQUVELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO1FBQzFELE1BQU0sRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFbEcsT0FBTztZQUNILFdBQVc7WUFDWCxjQUFjLEVBQUUsR0FBRztZQUNuQixtQkFBbUIsRUFBRSxDQUFDO1lBQ3RCLHNCQUFzQixFQUFFLENBQUM7WUFDekIsUUFBUSxFQUFFLEdBQUc7WUFDYixhQUFhLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hELFVBQVU7U0FDYixDQUFDO0lBQ04sQ0FBQztJQUVPLGFBQWEsQ0FDakIsV0FBbUIsRUFDbkIsV0FBbUIsRUFDbkIsUUFBc0I7UUFFdEIsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ1osTUFBTSxVQUFVLEdBQWdCLEVBQUUsQ0FBQztRQUNuQyxJQUFJLFNBQVMsR0FBRyxXQUFXLENBQUM7UUFDNUIsSUFBSSxVQUFVLEdBQUcsV0FBVyxDQUFDO1FBRTdCLEtBQUssTUFBTSxPQUFPLElBQUksUUFBUSxFQUFFLENBQUM7WUFDN0IsSUFBSSxTQUFTLElBQUksQ0FBQztnQkFBRSxNQUFNO1lBRTFCLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxFQUFFLElBQUksUUFBUSxDQUFDO1lBRXJDLElBQUksVUFBVSxJQUFJLEtBQUs7Z0JBQUUsU0FBUztZQUVsQyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDeEQsTUFBTSxZQUFZLEdBQUcsS0FBSyxHQUFHLFlBQVksQ0FBQztZQUMxQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxTQUFTLENBQUMsQ0FBQztZQUVsRCxJQUFJLE9BQU8sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDZCxNQUFNLFVBQVUsR0FBRyxPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztnQkFDMUMsR0FBRyxJQUFJLFVBQVUsQ0FBQztnQkFDbEIsU0FBUyxJQUFJLE9BQU8sQ0FBQztnQkFDckIsVUFBVSxJQUFJLE9BQU8sQ0FBQztnQkFFdEIsVUFBVSxDQUFDLElBQUksQ0FBQztvQkFDWixJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxFQUFFO29CQUN2QixFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxJQUFJLE9BQU8sRUFBRTtvQkFDOUIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO29CQUNsQixNQUFNLEVBQUUsVUFBVTtpQkFDckIsQ0FBQyxDQUFDO1lBQ1AsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxDQUFDO0lBQy9CLENBQUM7Q0FDSjtBQWhHRCxnRkFnR0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCcmVha2Rvd24sIFJlc3VsdCB9IGZyb20gXCIuLi9kb21haW4vdHlwZXNcIjtcbmltcG9ydCB7IFNvdXRoQWZyaWNhQ2FwaXRhbEdhaW5zU2VydmljZSB9IGZyb20gXCIuL1NvdXRoQWZyaWNhQ2FwaXRhbEdhaW5zU2VydmljZVwiO1xuaW1wb3J0IHsgSW5wdXQsIFJ1bGVzLCBUYXhCcmFja2V0IH0gZnJvbSBcIi4vZG9tYWluL3R5cGVzXCI7XG5cbmV4cG9ydCBjbGFzcyBTb3V0aEFmcmljYUNhcGl0YWxHYWluc1NlcnZpY2VJbXBsIGltcGxlbWVudHMgU291dGhBZnJpY2FDYXBpdGFsR2FpbnNTZXJ2aWNlIHtcbiAgICBwcml2YXRlIF9pbnB1dDogSW5wdXQ7XG4gICAgcHJpdmF0ZSBfcnVsZXM6IFJ1bGVzO1xuXG4gICAgY29uc3RydWN0b3IoaW5wdXQ6IElucHV0LCBydWxlczogUnVsZXMpIHtcbiAgICAgICAgdGhpcy5faW5wdXQgPSBpbnB1dDtcbiAgICAgICAgdGhpcy5fcnVsZXMgPSBydWxlcztcbiAgICB9XG5cbiAgICBjYWxjdWxhdGUoKTogUmVzdWx0IHtcbiAgICAgICAgY29uc3QgZ2FpbiA9IHRoaXMuX2lucHV0LmNhcGl0YWxHYWluO1xuXG4gICAgICAgIGlmIChnYWluIDw9IDApIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdGF4YWJsZUdhaW46IDAsXG4gICAgICAgICAgICAgICAgY2FwaXRhbEdhaW5UYXg6IDAsXG4gICAgICAgICAgICAgICAgc29jaWFsQ29udHJpYnV0aW9uczogMCxcbiAgICAgICAgICAgICAgICBuZXRJbnZlc3RtZW50SW5jb21lVGF4OiAwLFxuICAgICAgICAgICAgICAgIHRvdGFsVGF4OiAwLFxuICAgICAgICAgICAgICAgIGVmZmVjdGl2ZVJhdGU6IDAsXG4gICAgICAgICAgICAgICAgYnJlYWtkb3duczogW11cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuZXRHYWluID0gTWF0aC5tYXgoMCwgZ2FpbiAtIHRoaXMuX3J1bGVzLmFubnVhbEV4Y2x1c2lvbik7XG4gICAgICAgIGNvbnN0IHRheGFibGVHYWluID0gbmV0R2FpbiAqIHRoaXMuX3J1bGVzLmluY2x1c2lvblJhdGU7XG5cbiAgICAgICAgaWYgKHRheGFibGVHYWluIDw9IDApIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdGF4YWJsZUdhaW46IDAsXG4gICAgICAgICAgICAgICAgY2FwaXRhbEdhaW5UYXg6IDAsXG4gICAgICAgICAgICAgICAgc29jaWFsQ29udHJpYnV0aW9uczogMCxcbiAgICAgICAgICAgICAgICBuZXRJbnZlc3RtZW50SW5jb21lVGF4OiAwLFxuICAgICAgICAgICAgICAgIHRvdGFsVGF4OiAwLFxuICAgICAgICAgICAgICAgIGVmZmVjdGl2ZVJhdGU6IDAsXG4gICAgICAgICAgICAgICAgYnJlYWtkb3duczogW3tcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogJzAnLFxuICAgICAgICAgICAgICAgICAgICB0bzogYCR7dGhpcy5fcnVsZXMuYW5udWFsRXhjbHVzaW9ufWAsXG4gICAgICAgICAgICAgICAgICAgIHJhdGU6IDAsXG4gICAgICAgICAgICAgICAgICAgIGFtb3VudDogMCxcbiAgICAgICAgICAgICAgICB9XSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBvdGhlckluY29tZSA9IHRoaXMuX2lucHV0LnRvdGFsVGF4YWJsZUluY29tZSAtIGdhaW47XG4gICAgICAgIGNvbnN0IHsgdGF4LCBicmVha2Rvd25zIH0gPSB0aGlzLmFwcGx5QnJhY2tldHModGF4YWJsZUdhaW4sIG90aGVySW5jb21lLCB0aGlzLl9ydWxlcy50YXhCcmFja2V0cyk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRheGFibGVHYWluLFxuICAgICAgICAgICAgY2FwaXRhbEdhaW5UYXg6IHRheCxcbiAgICAgICAgICAgIHNvY2lhbENvbnRyaWJ1dGlvbnM6IDAsXG4gICAgICAgICAgICBuZXRJbnZlc3RtZW50SW5jb21lVGF4OiAwLFxuICAgICAgICAgICAgdG90YWxUYXg6IHRheCxcbiAgICAgICAgICAgIGVmZmVjdGl2ZVJhdGU6IGdhaW4gPiAwID8gKHRheCAvIGdhaW4pICogMTAwIDogMCxcbiAgICAgICAgICAgIGJyZWFrZG93bnMsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhcHBseUJyYWNrZXRzKFxuICAgICAgICB0YXhhYmxlR2FpbjogbnVtYmVyLFxuICAgICAgICBvdGhlckluY29tZTogbnVtYmVyLFxuICAgICAgICBicmFja2V0czogVGF4QnJhY2tldFtdLFxuICAgICk6IHsgdGF4OiBudW1iZXI7IGJyZWFrZG93bnM6IEJyZWFrZG93bltdIH0ge1xuICAgICAgICBsZXQgdGF4ID0gMDtcbiAgICAgICAgY29uc3QgYnJlYWtkb3duczogQnJlYWtkb3duW10gPSBbXTtcbiAgICAgICAgbGV0IHJlbWFpbmluZyA9IHRheGFibGVHYWluO1xuICAgICAgICBsZXQgaW5jb21lVXNlZCA9IG90aGVySW5jb21lO1xuXG4gICAgICAgIGZvciAoY29uc3QgYnJhY2tldCBvZiBicmFja2V0cykge1xuICAgICAgICAgICAgaWYgKHJlbWFpbmluZyA8PSAwKSBicmVhaztcblxuICAgICAgICAgICAgY29uc3QgdXBwZXIgPSBicmFja2V0LnRvID8/IEluZmluaXR5O1xuXG4gICAgICAgICAgICBpZiAoaW5jb21lVXNlZCA+PSB1cHBlcikgY29udGludWU7XG5cbiAgICAgICAgICAgIGNvbnN0IGJyYWNrZXRTdGFydCA9IE1hdGgubWF4KGJyYWNrZXQuZnJvbSwgaW5jb21lVXNlZCk7XG4gICAgICAgICAgICBjb25zdCBicmFja2V0U3BhY2UgPSB1cHBlciAtIGJyYWNrZXRTdGFydDtcbiAgICAgICAgICAgIGNvbnN0IHRheGFibGUgPSBNYXRoLm1pbihicmFja2V0U3BhY2UsIHJlbWFpbmluZyk7XG5cbiAgICAgICAgICAgIGlmICh0YXhhYmxlID4gMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJyYWNrZXRUYXggPSB0YXhhYmxlICogYnJhY2tldC5yYXRlO1xuICAgICAgICAgICAgICAgIHRheCArPSBicmFja2V0VGF4O1xuICAgICAgICAgICAgICAgIHJlbWFpbmluZyAtPSB0YXhhYmxlO1xuICAgICAgICAgICAgICAgIGluY29tZVVzZWQgKz0gdGF4YWJsZTtcblxuICAgICAgICAgICAgICAgIGJyZWFrZG93bnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGZyb206IGAke2JyYWNrZXQuZnJvbX1gLFxuICAgICAgICAgICAgICAgICAgICB0bzogYCR7YnJhY2tldC50byA/PyAnQWJvdmUnfWAsXG4gICAgICAgICAgICAgICAgICAgIHJhdGU6IGJyYWNrZXQucmF0ZSxcbiAgICAgICAgICAgICAgICAgICAgYW1vdW50OiBicmFja2V0VGF4LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHsgdGF4LCBicmVha2Rvd25zIH07XG4gICAgfVxufVxuIl19
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY2FwaXRhbC1nYWlucy9zb3V0aC1hZnJpY2EvZG9tYWluL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFRheEJyYWNrZXQge1xuICAgIGZyb206IG51bWJlcjtcbiAgICB0bzogbnVtYmVyIHwgbnVsbDtcbiAgICByYXRlOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUnVsZXMge1xuICAgIGluY2x1c2lvblJhdGU6IG51bWJlcjtcbiAgICBhbm51YWxFeGNsdXNpb246IG51bWJlcjtcbiAgICB0YXhCcmFja2V0czogVGF4QnJhY2tldFtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElucHV0IHtcbiAgICBjYXBpdGFsR2FpbjogbnVtYmVyO1xuICAgIHRvdGFsVGF4YWJsZUluY29tZTogbnVtYmVyO1xufVxuIl19
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVUtDYXBpdGFsR2FpbnNTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NhcGl0YWwtZ2FpbnMvdWsvVUtDYXBpdGFsR2FpbnNTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZXN1bHQgfSBmcm9tIFwiLi4vZG9tYWluL3R5cGVzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVUtDYXBpdGFsR2FpbnNTZXJ2aWNlIHtcbiAgICBjYWxjdWxhdGUoKTogUmVzdWx0O1xufVxuIl19
|
|
@@ -9,13 +9,24 @@ class UKCapitalGainsServiceImpl {
|
|
|
9
9
|
calculate() {
|
|
10
10
|
const gain = this._input.capitalGain;
|
|
11
11
|
if (gain <= 0) {
|
|
12
|
-
return {
|
|
12
|
+
return {
|
|
13
|
+
taxableGain: 0,
|
|
14
|
+
capitalGainTax: 0,
|
|
15
|
+
socialContributions: 0,
|
|
16
|
+
netInvestmentIncomeTax: 0,
|
|
17
|
+
totalTax: 0,
|
|
18
|
+
effectiveRate: 0,
|
|
19
|
+
breakdowns: []
|
|
20
|
+
};
|
|
13
21
|
}
|
|
14
22
|
const taxableGain = Math.max(0, gain - this._rules.annualExemption);
|
|
15
23
|
if (taxableGain <= 0) {
|
|
16
24
|
return {
|
|
17
25
|
taxableGain: 0,
|
|
18
|
-
|
|
26
|
+
capitalGainTax: 0,
|
|
27
|
+
socialContributions: 0,
|
|
28
|
+
netInvestmentIncomeTax: 0,
|
|
29
|
+
totalTax: 0,
|
|
19
30
|
effectiveRate: 0,
|
|
20
31
|
breakdowns: [{
|
|
21
32
|
from: '0',
|
|
@@ -62,11 +73,14 @@ class UKCapitalGainsServiceImpl {
|
|
|
62
73
|
}
|
|
63
74
|
return {
|
|
64
75
|
taxableGain,
|
|
65
|
-
|
|
76
|
+
capitalGainTax: tax,
|
|
77
|
+
socialContributions: 0,
|
|
78
|
+
netInvestmentIncomeTax: 0,
|
|
79
|
+
totalTax: tax,
|
|
66
80
|
effectiveRate: gain > 0 ? (tax / gain) * 100 : 0,
|
|
67
81
|
breakdowns,
|
|
68
82
|
};
|
|
69
83
|
}
|
|
70
84
|
}
|
|
71
85
|
exports.UKCapitalGainsServiceImpl = UKCapitalGainsServiceImpl;
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVUtDYXBpdGFsR2FpbnNTZXJ2aWNlSW1wbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jYXBpdGFsLWdhaW5zL3VrL1VLQ2FwaXRhbEdhaW5zU2VydmljZUltcGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBSUEsTUFBYSx5QkFBeUI7SUFJbEMsWUFBWSxLQUFZLEVBQUUsS0FBWTtRQUNsQyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN4QixDQUFDO0lBRUQsU0FBUztRQUNMLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDO1FBRXJDLElBQUksSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ1osT0FBTztnQkFDSCxXQUFXLEVBQUUsQ0FBQztnQkFDZCxjQUFjLEVBQUUsQ0FBQztnQkFDakIsbUJBQW1CLEVBQUUsQ0FBQztnQkFDdEIsc0JBQXNCLEVBQUUsQ0FBQztnQkFDekIsUUFBUSxFQUFFLENBQUM7Z0JBQ1gsYUFBYSxFQUFFLENBQUM7Z0JBQ2hCLFVBQVUsRUFBRSxFQUFFO2FBQ2pCLENBQUM7UUFDTixDQUFDO1FBRUQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFcEUsSUFBSSxXQUFXLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDbkIsT0FBTztnQkFDSCxXQUFXLEVBQUUsQ0FBQztnQkFDZCxjQUFjLEVBQUUsQ0FBQztnQkFDakIsbUJBQW1CLEVBQUUsQ0FBQztnQkFDdEIsc0JBQXNCLEVBQUUsQ0FBQztnQkFDekIsUUFBUSxFQUFFLENBQUM7Z0JBQ1gsYUFBYSxFQUFFLENBQUM7Z0JBQ2hCLFVBQVUsRUFBRSxDQUFDO3dCQUNULElBQUksRUFBRSxHQUFHO3dCQUNULEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFO3dCQUNwQyxJQUFJLEVBQUUsQ0FBQzt3QkFDUCxNQUFNLEVBQUUsQ0FBQztxQkFDWixDQUFDO2FBQ0wsQ0FBQztRQUNOLENBQUM7UUFFRCxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNwRyxNQUFNLFVBQVUsR0FBZ0IsRUFBRSxDQUFDO1FBQ25DLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztRQUVaLElBQUksa0JBQWtCLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDekIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztZQUNoRSxNQUFNLFFBQVEsR0FBRyxhQUFhLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7WUFDdkQsR0FBRyxJQUFJLFFBQVEsQ0FBQztZQUVoQixVQUFVLENBQUMsSUFBSSxDQUFDO2dCQUNaLElBQUksRUFBRSxHQUFHO2dCQUNULEVBQUUsRUFBRSxHQUFHLGtCQUFrQixFQUFFO2dCQUMzQixJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTO2dCQUMzQixNQUFNLEVBQUUsUUFBUTthQUNuQixDQUFDLENBQUM7WUFFSCxNQUFNLGNBQWMsR0FBRyxXQUFXLEdBQUcsYUFBYSxDQUFDO1lBQ25ELElBQUksY0FBYyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNyQixNQUFNLFNBQVMsR0FBRyxjQUFjLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7Z0JBQzFELEdBQUcsSUFBSSxTQUFTLENBQUM7Z0JBRWpCLFVBQVUsQ0FBQyxJQUFJLENBQUM7b0JBQ1osSUFBSSxFQUFFLEdBQUcsa0JBQWtCLEVBQUU7b0JBQzdCLEVBQUUsRUFBRSxPQUFPO29CQUNYLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVU7b0JBQzVCLE1BQU0sRUFBRSxTQUFTO2lCQUNwQixDQUFDLENBQUM7WUFDUCxDQUFDO1FBQ0wsQ0FBQzthQUFNLENBQUM7WUFDSixNQUFNLFNBQVMsR0FBRyxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7WUFDdkQsR0FBRyxJQUFJLFNBQVMsQ0FBQztZQUVqQixVQUFVLENBQUMsSUFBSSxDQUFDO2dCQUNaLElBQUksRUFBRSxHQUFHO2dCQUNULEVBQUUsRUFBRSxPQUFPO2dCQUNYLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVU7Z0JBQzVCLE1BQU0sRUFBRSxTQUFTO2FBQ3BCLENBQUMsQ0FBQztRQUNQLENBQUM7UUFFRCxPQUFPO1lBQ0gsV0FBVztZQUNYLGNBQWMsRUFBRSxHQUFHO1lBQ25CLG1CQUFtQixFQUFFLENBQUM7WUFDdEIsc0JBQXNCLEVBQUUsQ0FBQztZQUN6QixRQUFRLEVBQUUsR0FBRztZQUNiLGFBQWEsRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEQsVUFBVTtTQUNiLENBQUM7SUFDTixDQUFDO0NBQ0o7QUE3RkQsOERBNkZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnJlYWtkb3duLCBSZXN1bHQgfSBmcm9tIFwiLi4vZG9tYWluL3R5cGVzXCI7XG5pbXBvcnQgeyBVS0NhcGl0YWxHYWluc1NlcnZpY2UgfSBmcm9tIFwiLi9VS0NhcGl0YWxHYWluc1NlcnZpY2VcIjtcbmltcG9ydCB7IElucHV0LCBSdWxlcyB9IGZyb20gXCIuL2RvbWFpbi90eXBlc1wiO1xuXG5leHBvcnQgY2xhc3MgVUtDYXBpdGFsR2FpbnNTZXJ2aWNlSW1wbCBpbXBsZW1lbnRzIFVLQ2FwaXRhbEdhaW5zU2VydmljZSB7XG4gICAgcHJpdmF0ZSBfaW5wdXQ6IElucHV0O1xuICAgIHByaXZhdGUgX3J1bGVzOiBSdWxlcztcblxuICAgIGNvbnN0cnVjdG9yKGlucHV0OiBJbnB1dCwgcnVsZXM6IFJ1bGVzKSB7XG4gICAgICAgIHRoaXMuX2lucHV0ID0gaW5wdXQ7XG4gICAgICAgIHRoaXMuX3J1bGVzID0gcnVsZXM7XG4gICAgfVxuXG4gICAgY2FsY3VsYXRlKCk6IFJlc3VsdCB7XG4gICAgICAgIGNvbnN0IGdhaW4gPSB0aGlzLl9pbnB1dC5jYXBpdGFsR2FpbjtcblxuICAgICAgICBpZiAoZ2FpbiA8PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHRheGFibGVHYWluOiAwLFxuICAgICAgICAgICAgICAgIGNhcGl0YWxHYWluVGF4OiAwLFxuICAgICAgICAgICAgICAgIHNvY2lhbENvbnRyaWJ1dGlvbnM6IDAsXG4gICAgICAgICAgICAgICAgbmV0SW52ZXN0bWVudEluY29tZVRheDogMCxcbiAgICAgICAgICAgICAgICB0b3RhbFRheDogMCxcbiAgICAgICAgICAgICAgICBlZmZlY3RpdmVSYXRlOiAwLFxuICAgICAgICAgICAgICAgIGJyZWFrZG93bnM6IFtdXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdGF4YWJsZUdhaW4gPSBNYXRoLm1heCgwLCBnYWluIC0gdGhpcy5fcnVsZXMuYW5udWFsRXhlbXB0aW9uKTtcblxuICAgICAgICBpZiAodGF4YWJsZUdhaW4gPD0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0YXhhYmxlR2FpbjogMCxcbiAgICAgICAgICAgICAgICBjYXBpdGFsR2FpblRheDogMCxcbiAgICAgICAgICAgICAgICBzb2NpYWxDb250cmlidXRpb25zOiAwLFxuICAgICAgICAgICAgICAgIG5ldEludmVzdG1lbnRJbmNvbWVUYXg6IDAsXG4gICAgICAgICAgICAgICAgdG90YWxUYXg6IDAsXG4gICAgICAgICAgICAgICAgZWZmZWN0aXZlUmF0ZTogMCxcbiAgICAgICAgICAgICAgICBicmVha2Rvd25zOiBbe1xuICAgICAgICAgICAgICAgICAgICBmcm9tOiAnMCcsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBgJHt0aGlzLl9ydWxlcy5hbm51YWxFeGVtcHRpb259YCxcbiAgICAgICAgICAgICAgICAgICAgcmF0ZTogMCxcbiAgICAgICAgICAgICAgICAgICAgYW1vdW50OiAwLFxuICAgICAgICAgICAgICAgIH1dLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGJhc2ljUmF0ZVJlbWFpbmluZyA9IE1hdGgubWF4KDAsIHRoaXMuX3J1bGVzLmJhc2ljUmF0ZUxpbWl0IC0gdGhpcy5faW5wdXQudG90YWxUYXhhYmxlSW5jb21lKTtcbiAgICAgICAgY29uc3QgYnJlYWtkb3duczogQnJlYWtkb3duW10gPSBbXTtcbiAgICAgICAgbGV0IHRheCA9IDA7XG5cbiAgICAgICAgaWYgKGJhc2ljUmF0ZVJlbWFpbmluZyA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGJhc2ljUmF0ZUdhaW4gPSBNYXRoLm1pbih0YXhhYmxlR2FpbiwgYmFzaWNSYXRlUmVtYWluaW5nKTtcbiAgICAgICAgICAgIGNvbnN0IGJhc2ljVGF4ID0gYmFzaWNSYXRlR2FpbiAqIHRoaXMuX3J1bGVzLmJhc2ljUmF0ZTtcbiAgICAgICAgICAgIHRheCArPSBiYXNpY1RheDtcblxuICAgICAgICAgICAgYnJlYWtkb3ducy5wdXNoKHtcbiAgICAgICAgICAgICAgICBmcm9tOiAnMCcsXG4gICAgICAgICAgICAgICAgdG86IGAke2Jhc2ljUmF0ZVJlbWFpbmluZ31gLFxuICAgICAgICAgICAgICAgIHJhdGU6IHRoaXMuX3J1bGVzLmJhc2ljUmF0ZSxcbiAgICAgICAgICAgICAgICBhbW91bnQ6IGJhc2ljVGF4LFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNvbnN0IGhpZ2hlclJhdGVHYWluID0gdGF4YWJsZUdhaW4gLSBiYXNpY1JhdGVHYWluO1xuICAgICAgICAgICAgaWYgKGhpZ2hlclJhdGVHYWluID4gMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGhpZ2hlclRheCA9IGhpZ2hlclJhdGVHYWluICogdGhpcy5fcnVsZXMuaGlnaGVyUmF0ZTtcbiAgICAgICAgICAgICAgICB0YXggKz0gaGlnaGVyVGF4O1xuXG4gICAgICAgICAgICAgICAgYnJlYWtkb3ducy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYCR7YmFzaWNSYXRlUmVtYWluaW5nfWAsXG4gICAgICAgICAgICAgICAgICAgIHRvOiAnQWJvdmUnLFxuICAgICAgICAgICAgICAgICAgICByYXRlOiB0aGlzLl9ydWxlcy5oaWdoZXJSYXRlLFxuICAgICAgICAgICAgICAgICAgICBhbW91bnQ6IGhpZ2hlclRheCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGhpZ2hlclRheCA9IHRheGFibGVHYWluICogdGhpcy5fcnVsZXMuaGlnaGVyUmF0ZTtcbiAgICAgICAgICAgIHRheCArPSBoaWdoZXJUYXg7XG5cbiAgICAgICAgICAgIGJyZWFrZG93bnMucHVzaCh7XG4gICAgICAgICAgICAgICAgZnJvbTogJzAnLFxuICAgICAgICAgICAgICAgIHRvOiAnQWJvdmUnLFxuICAgICAgICAgICAgICAgIHJhdGU6IHRoaXMuX3J1bGVzLmhpZ2hlclJhdGUsXG4gICAgICAgICAgICAgICAgYW1vdW50OiBoaWdoZXJUYXgsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0YXhhYmxlR2FpbixcbiAgICAgICAgICAgIGNhcGl0YWxHYWluVGF4OiB0YXgsXG4gICAgICAgICAgICBzb2NpYWxDb250cmlidXRpb25zOiAwLFxuICAgICAgICAgICAgbmV0SW52ZXN0bWVudEluY29tZVRheDogMCxcbiAgICAgICAgICAgIHRvdGFsVGF4OiB0YXgsXG4gICAgICAgICAgICBlZmZlY3RpdmVSYXRlOiBnYWluID4gMCA/ICh0YXggLyBnYWluKSAqIDEwMCA6IDAsXG4gICAgICAgICAgICBicmVha2Rvd25zLFxuICAgICAgICB9O1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY2FwaXRhbC1nYWlucy91ay9kb21haW4vdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgUnVsZXMge1xuICAgIGFubnVhbEV4ZW1wdGlvbjogbnVtYmVyO1xuICAgIGJhc2ljUmF0ZTogbnVtYmVyO1xuICAgIGhpZ2hlclJhdGU6IG51bWJlcjtcbiAgICBiYXNpY1JhdGVMaW1pdDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElucHV0IHtcbiAgICBjYXBpdGFsR2FpbjogbnVtYmVyO1xuICAgIHRvdGFsVGF4YWJsZUluY29tZTogbnVtYmVyO1xufVxuIl19
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVVNBQ2FwaXRhbEdhaW5zU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jYXBpdGFsLWdhaW5zL3VzYS9VU0FDYXBpdGFsR2FpbnNTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZXN1bHQgfSBmcm9tIFwiLi4vZG9tYWluL3R5cGVzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVVNBQ2FwaXRhbEdhaW5zU2VydmljZSB7XG4gICAgY2FsY3VsYXRlKCk6IFJlc3VsdDtcbn1cbiJdfQ==
|