@senior-gestao-pessoas/payroll-core 9.7.0-master-72d34bea → 9.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/senior-gestao-pessoas-payroll-core.umd.js +177 -19
- package/bundles/senior-gestao-pessoas-payroll-core.umd.js.map +1 -1
- package/bundles/senior-gestao-pessoas-payroll-core.umd.min.js +1 -1
- package/bundles/senior-gestao-pessoas-payroll-core.umd.min.js.map +1 -1
- package/components/historical-pix-account/historical-pix-account-form/historical-pix-account-form.component.d.ts +9 -1
- package/components/historical-pix-account/historical-pix-account.component.d.ts +1 -0
- package/components/utils/cnpj-validator.d.ts +3 -0
- package/components/utils/format-utils/format-utils.service.d.ts +3 -2
- package/components/utils/generic-validators.d.ts +6 -0
- package/esm2015/components/historical-pix-account/historical-pix-account-form/historical-pix-account-form.component.js +37 -9
- package/esm2015/components/historical-pix-account/historical-pix-account.component.js +7 -3
- package/esm2015/components/utils/cnpj-validator.js +54 -1
- package/esm2015/components/utils/format-utils/format-utils.service.js +23 -10
- package/esm2015/components/utils/generic-validators.js +57 -1
- package/esm5/components/historical-pix-account/historical-pix-account-form/historical-pix-account-form.component.js +41 -9
- package/esm5/components/historical-pix-account/historical-pix-account.component.js +7 -3
- package/esm5/components/utils/cnpj-validator.js +54 -1
- package/esm5/components/utils/format-utils/format-utils.service.js +23 -10
- package/esm5/components/utils/generic-validators.js +57 -1
- package/fesm2015/senior-gestao-pessoas-payroll-core.js +173 -19
- package/fesm2015/senior-gestao-pessoas-payroll-core.js.map +1 -1
- package/fesm5/senior-gestao-pessoas-payroll-core.js +177 -19
- package/fesm5/senior-gestao-pessoas-payroll-core.js.map +1 -1
- package/package.json +1 -1
- package/senior-gestao-pessoas-payroll-core.metadata.json +1 -1
|
@@ -59,8 +59,61 @@ var CNPJValidator = /** @class */ (function () {
|
|
|
59
59
|
}
|
|
60
60
|
return true;
|
|
61
61
|
};
|
|
62
|
+
CNPJValidator.prototype.checkCNPJAlphanumeric = function (value) {
|
|
63
|
+
var cnpj = value;
|
|
64
|
+
if (cnpj) {
|
|
65
|
+
cnpj = cnpj.replace(/[^\dA-Za-z]/g, '').toUpperCase();
|
|
66
|
+
if (cnpj.length !== 14) {
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
// Valida que dígitos verificadores são numéricos
|
|
70
|
+
if (!/^\d$/.test(cnpj.charAt(12)) || !/^\d$/.test(cnpj.charAt(13))) {
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
// Elimina CNPJs invalidos conhecidos
|
|
74
|
+
if (cnpj === '00000000000000' ||
|
|
75
|
+
cnpj === '11111111111111' ||
|
|
76
|
+
cnpj === '22222222222222' ||
|
|
77
|
+
cnpj === '33333333333333' ||
|
|
78
|
+
cnpj === '44444444444444' ||
|
|
79
|
+
cnpj === '55555555555555' ||
|
|
80
|
+
cnpj === '66666666666666' ||
|
|
81
|
+
cnpj === '77777777777777' ||
|
|
82
|
+
cnpj === '88888888888888' ||
|
|
83
|
+
cnpj === '99999999999999') {
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
// Valida DVs
|
|
87
|
+
var size = cnpj.length - 2;
|
|
88
|
+
var digits = cnpj.substring(size);
|
|
89
|
+
if (!this.validateCnpjDigit(cnpj, size, Number(digits.charAt(0)))) {
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
if (!this.validateCnpjDigit(cnpj, size + 1, Number(digits.charAt(1)))) {
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
return true;
|
|
96
|
+
}
|
|
97
|
+
return true;
|
|
98
|
+
};
|
|
99
|
+
CNPJValidator.prototype.validateCnpjDigit = function (cnpj, size, digit) {
|
|
100
|
+
var numbers = cnpj.substring(0, size);
|
|
101
|
+
var sum = 0;
|
|
102
|
+
var pos = size - 7;
|
|
103
|
+
for (var i = size; i >= 1; i--) {
|
|
104
|
+
sum += this.convertToAsciiMinus48(numbers.charAt(size - i)) * pos--;
|
|
105
|
+
if (pos < 2) {
|
|
106
|
+
pos = 9;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
var result = sum % 11 < 2 ? 0 : 11 - (sum % 11);
|
|
110
|
+
return result === digit;
|
|
111
|
+
};
|
|
112
|
+
CNPJValidator.prototype.convertToAsciiMinus48 = function (input) {
|
|
113
|
+
return input.charCodeAt(0) - 48;
|
|
114
|
+
};
|
|
62
115
|
return CNPJValidator;
|
|
63
116
|
}());
|
|
64
117
|
export { CNPJValidator };
|
|
65
118
|
export var cnpjValidator = new CNPJValidator();
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY25wai12YWxpZGF0b3IuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yLWdlc3Rhby1wZXNzb2FzL3BheXJvbGwtY29yZS8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvdXRpbHMvY25wai12YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7SUFBQTtJQW9FQSxDQUFDO0lBbEVHOztLQUVDO0lBQ0QsaUNBQVMsR0FBVCxVQUFVLEtBQUs7UUFDWCxJQUFJLElBQUksR0FBRyxLQUFLLENBQUM7UUFFakIsSUFBSSxJQUFJLEVBQUU7WUFDTixJQUFJLElBQUksU0FBQSxFQUFFLE9BQU8sU0FBQSxFQUFFLE1BQU0sU0FBQSxFQUFFLEdBQUcsU0FBQSxFQUFFLEdBQUcsU0FBQSxFQUFFLE1BQU0sU0FBQSxDQUFDO1lBQzVDLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUVuQyxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssRUFBRSxFQUFFO2dCQUNwQixPQUFPLElBQUksQ0FBQzthQUNmO1lBRUQscUNBQXFDO1lBQ3JDLElBQ0ksSUFBSSxLQUFLLGdCQUFnQjtnQkFDekIsSUFBSSxLQUFLLGdCQUFnQjtnQkFDekIsSUFBSSxLQUFLLGdCQUFnQjtnQkFDekIsSUFBSSxLQUFLLGdCQUFnQjtnQkFDekIsSUFBSSxLQUFLLGdCQUFnQjtnQkFDekIsSUFBSSxLQUFLLGdCQUFnQjtnQkFDekIsSUFBSSxLQUFLLGdCQUFnQjtnQkFDekIsSUFBSSxLQUFLLGdCQUFnQjtnQkFDekIsSUFBSSxLQUFLLGdCQUFnQjtnQkFDekIsSUFBSSxLQUFLLGdCQUFnQixFQUMzQjtnQkFDRSxPQUFPLEtBQUssQ0FBQzthQUNoQjtZQUVELGFBQWE7WUFDYixJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDdkIsT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ2xDLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzlCLEdBQUcsR0FBRyxDQUFDLENBQUM7WUFDUixHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQztZQUNmLEtBQUssSUFBSSxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQzVCLEdBQUcsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQztnQkFDeEMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFO29CQUNULEdBQUcsR0FBRyxDQUFDLENBQUM7aUJBQ1g7YUFDSjtZQUNELE1BQU0sR0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDNUMsSUFBSSxNQUFNLEtBQUssTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDckMsT0FBTyxLQUFLLENBQUU7YUFDakI7WUFFRCxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQztZQUNoQixPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDbEMsR0FBRyxHQUFHLENBQUMsQ0FBQztZQUNSLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1lBQ2YsS0FBSyxJQUFJLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDNUIsR0FBRyxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDO2dCQUN4QyxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUU7b0JBQ1QsR0FBRyxHQUFHLENBQUMsQ0FBQztpQkFDWDthQUNKO1lBQ0QsTUFBTSxHQUFHLEdBQUcsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUM1QyxJQUFJLE1BQU0sS0FBSyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNyQyxPQUFPLEtBQUssQ0FBQzthQUNoQjtZQUVELE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBQ0wsb0JBQUM7QUFBRCxDQUFDLEFBcEVELElBb0VDOztBQUVELE1BQU0sQ0FBQyxJQUFNLGFBQWEsR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5leHBvcnQgY2xhc3MgQ05QSlZhbGlkYXRvciB7XG5cbiAgICAvKipcbiAgICogVmFsaWRhIHNlIG8gQ05QSiDDqSB2YWxpZG8uIERldmUtc2Ugc2VyIGluZm9ybWFkbyBvIGNucGogc2VtIG3DoXNjYXJhLlxuICAgKi9cbiAgICBjaGVja0NOUEoodmFsdWUpIHtcbiAgICAgICAgbGV0IGNucGogPSB2YWx1ZTtcblxuICAgICAgICBpZiAoY25waikge1xuICAgICAgICAgICAgbGV0IHNpemUsIG51bWJlcnMsIGRpZ2l0cywgc3VtLCBwb3MsIHJlc3VsdDtcbiAgICAgICAgICAgIGNucGogPSBjbnBqLnJlcGxhY2UoL1teXFxkXSsvZywgJycpO1xuXG4gICAgICAgICAgICBpZiAoY25wai5sZW5ndGggIT09IDE0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEVsaW1pbmEgQ05QSnMgaW52YWxpZG9zIGNvbmhlY2lkb3NcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBjbnBqID09PSAnMDAwMDAwMDAwMDAwMDAnIHx8XG4gICAgICAgICAgICAgICAgY25waiA9PT0gJzExMTExMTExMTExMTExJyB8fFxuICAgICAgICAgICAgICAgIGNucGogPT09ICcyMjIyMjIyMjIyMjIyMicgfHxcbiAgICAgICAgICAgICAgICBjbnBqID09PSAnMzMzMzMzMzMzMzMzMzMnIHx8XG4gICAgICAgICAgICAgICAgY25waiA9PT0gJzQ0NDQ0NDQ0NDQ0NDQ0JyB8fFxuICAgICAgICAgICAgICAgIGNucGogPT09ICc1NTU1NTU1NTU1NTU1NScgfHxcbiAgICAgICAgICAgICAgICBjbnBqID09PSAnNjY2NjY2NjY2NjY2NjYnIHx8XG4gICAgICAgICAgICAgICAgY25waiA9PT0gJzc3Nzc3Nzc3Nzc3Nzc3JyB8fFxuICAgICAgICAgICAgICAgIGNucGogPT09ICc4ODg4ODg4ODg4ODg4OCcgfHxcbiAgICAgICAgICAgICAgICBjbnBqID09PSAnOTk5OTk5OTk5OTk5OTknXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFZhbGlkYSBEVnNcbiAgICAgICAgICAgIHNpemUgPSBjbnBqLmxlbmd0aCAtIDI7XG4gICAgICAgICAgICBudW1iZXJzID0gY25wai5zdWJzdHJpbmcoMCwgc2l6ZSk7XG4gICAgICAgICAgICBkaWdpdHMgPSBjbnBqLnN1YnN0cmluZyhzaXplKTtcbiAgICAgICAgICAgIHN1bSA9IDA7XG4gICAgICAgICAgICBwb3MgPSBzaXplIC0gNztcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSBzaXplOyBpID49IDE7IGktLSkge1xuICAgICAgICAgICAgICAgIHN1bSArPSBudW1iZXJzLmNoYXJBdChzaXplIC0gaSkgKiBwb3MtLTtcbiAgICAgICAgICAgICAgICBpZiAocG9zIDwgMikge1xuICAgICAgICAgICAgICAgICAgICBwb3MgPSA5O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdCA9IHN1bSAlIDExIDwgMiA/IDAgOiAxMSAtIChzdW0gJSAxMSk7XG4gICAgICAgICAgICBpZiAocmVzdWx0ICE9PSBOdW1iZXIoZGlnaXRzLmNoYXJBdCgwKSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2UgO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzaXplID0gc2l6ZSArIDE7XG4gICAgICAgICAgICBudW1iZXJzID0gY25wai5zdWJzdHJpbmcoMCwgc2l6ZSk7XG4gICAgICAgICAgICBzdW0gPSAwO1xuICAgICAgICAgICAgcG9zID0gc2l6ZSAtIDc7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gc2l6ZTsgaSA+PSAxOyBpLS0pIHtcbiAgICAgICAgICAgICAgICBzdW0gKz0gbnVtYmVycy5jaGFyQXQoc2l6ZSAtIGkpICogcG9zLS07XG4gICAgICAgICAgICAgICAgaWYgKHBvcyA8IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgcG9zID0gOTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQgPSBzdW0gJSAxMSA8IDIgPyAwIDogMTEgLSAoc3VtICUgMTEpO1xuICAgICAgICAgICAgaWYgKHJlc3VsdCAhPT0gTnVtYmVyKGRpZ2l0cy5jaGFyQXQoMSkpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG59XG5cbmV4cG9ydCBjb25zdCBjbnBqVmFsaWRhdG9yID0gbmV3IENOUEpWYWxpZGF0b3IoKTtcbiJdfQ==
|
|
119
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY25wai12YWxpZGF0b3IuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yLWdlc3Rhby1wZXNzb2FzL3BheXJvbGwtY29yZS8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvdXRpbHMvY25wai12YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7SUFBQTtJQXFJQSxDQUFDO0lBbklHOztLQUVDO0lBQ0QsaUNBQVMsR0FBVCxVQUFVLEtBQUs7UUFDWCxJQUFJLElBQUksR0FBRyxLQUFLLENBQUM7UUFFakIsSUFBSSxJQUFJLEVBQUU7WUFDTixJQUFJLElBQUksU0FBQSxFQUFFLE9BQU8sU0FBQSxFQUFFLE1BQU0sU0FBQSxFQUFFLEdBQUcsU0FBQSxFQUFFLEdBQUcsU0FBQSxFQUFFLE1BQU0sU0FBQSxDQUFDO1lBQzVDLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUVuQyxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssRUFBRSxFQUFFO2dCQUNwQixPQUFPLElBQUksQ0FBQzthQUNmO1lBRUQscUNBQXFDO1lBQ3JDLElBQ0ksSUFBSSxLQUFLLGdCQUFnQjtnQkFDekIsSUFBSSxLQUFLLGdCQUFnQjtnQkFDekIsSUFBSSxLQUFLLGdCQUFnQjtnQkFDekIsSUFBSSxLQUFLLGdCQUFnQjtnQkFDekIsSUFBSSxLQUFLLGdCQUFnQjtnQkFDekIsSUFBSSxLQUFLLGdCQUFnQjtnQkFDekIsSUFBSSxLQUFLLGdCQUFnQjtnQkFDekIsSUFBSSxLQUFLLGdCQUFnQjtnQkFDekIsSUFBSSxLQUFLLGdCQUFnQjtnQkFDekIsSUFBSSxLQUFLLGdCQUFnQixFQUMzQjtnQkFDRSxPQUFPLEtBQUssQ0FBQzthQUNoQjtZQUVELGFBQWE7WUFDYixJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDdkIsT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLElB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R0FBRyxFQUFFLENBQUM7WUFDcEUsSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFO2dCQUNULEdBQUcsR0FBRyxDQUFDLENBQUM7YUFDWDtTQUNKO1FBQ0QsSUFBTSxNQUFNLEdBQUcsR0FBRyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ2xELE9BQU8sTUFBTSxLQUFLLEtBQUssQ0FBQztJQUM1QixDQUFDO0lBRU8sNkNBQXFCLEdBQTdCLFVBQThCLEtBQWE7UUFDdkMsT0FBTyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBQ0wsb0JBQUM7QUFBRCxDQUFDLEFBcklELElBcUlDOztBQUVELE1BQU0sQ0FBQyxJQUFNLGFBQWEsR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5leHBvcnQgY2xhc3MgQ05QSlZhbGlkYXRvciB7XG5cbiAgICAvKipcbiAgICogVmFsaWRhIHNlIG8gQ05QSiDDqSB2YWxpZG8uIERldmUtc2Ugc2VyIGluZm9ybWFkbyBvIGNucGogc2VtIG3DoXNjYXJhLlxuICAgKi9cbiAgICBjaGVja0NOUEoodmFsdWUpIHtcbiAgICAgICAgbGV0IGNucGogPSB2YWx1ZTtcblxuICAgICAgICBpZiAoY25waikge1xuICAgICAgICAgICAgbGV0IHNpemUsIG51bWJlcnMsIGRpZ2l0cywgc3VtLCBwb3MsIHJlc3VsdDtcbiAgICAgICAgICAgIGNucGogPSBjbnBqLnJlcGxhY2UoL1teXFxkXSsvZywgJycpO1xuXG4gICAgICAgICAgICBpZiAoY25wai5sZW5ndGggIT09IDE0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEVsaW1pbmEgQ05QSnMgaW52YWxpZG9zIGNvbmhlY2lkb3NcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBjbnBqID09PSAnMDAwMDAwMDAwMDAwMDAnIHx8XG4gICAgICAgICAgICAgICAgY25waiA9PT0gJzExMTExMTExMTExMTExJyB8fFxuICAgICAgICAgICAgICAgIGNucGogPT09ICcyMjIyMjIyMjIyMjIyMicgfHxcbiAgICAgICAgICAgICAgICBjbnBqID09PSAnMzMzMzMzMzMzMzMzMzMnIHx8XG4gICAgICAgICAgICAgICAgY25waiA9PT0gJzQ0NDQ0NDQ0NDQ0NDQ0JyB8fFxuICAgICAgICAgICAgICAgIGNucGogPT09ICc1NTU1NTU1NTU1NTU1NScgfHxcbiAgICAgICAgICAgICAgICBjbnBqID09PSAnNjY2NjY2NjY2NjY2NjYnIHx8XG4gICAgICAgICAgICAgICAgY25waiA9PT0gJzc3Nzc3Nzc3Nzc3Nzc3JyB8fFxuICAgICAgICAgICAgICAgIGNucGogPT09ICc4ODg4ODg4ODg4ODg4OCcgfHxcbiAgICAgICAgICAgICAgICBjbnBqID09PSAnOTk5OTk5OTk5OTk5OTknXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFZhbGlkYSBEVnNcbiAgICAgICAgICAgIHNpemUgPSBjbnBqLmxlbmd0aCAtIDI7XG4gICAgICAgICAgICBudW1iZXJzID0gY25wai5zdWJzdHJpbmcoMCwgc2l6ZSk7XG4gICAgICAgICAgICBkaWdpdHMgPSBjbnBqLnN1YnN0cmluZyhzaXplKTtcbiAgICAgICAgICAgIHN1bSA9IDA7XG4gICAgICAgICAgICBwb3MgPSBzaXplIC0gNztcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSBzaXplOyBpID49IDE7IGktLSkge1xuICAgICAgICAgICAgICAgIHN1bSArPSBudW1iZXJzLmNoYXJBdChzaXplIC0gaSkgKiBwb3MtLTtcbiAgICAgICAgICAgICAgICBpZiAocG9zIDwgMikge1xuICAgICAgICAgICAgICAgICAgICBwb3MgPSA5O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdCA9IHN1bSAlIDExIDwgMiA/IDAgOiAxMSAtIChzdW0gJSAxMSk7XG4gICAgICAgICAgICBpZiAocmVzdWx0ICE9PSBOdW1iZXIoZGlnaXRzLmNoYXJBdCgwKSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2UgO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzaXplID0gc2l6ZSArIDE7XG4gICAgICAgICAgICBudW1iZXJzID0gY25wai5zdWJzdHJpbmcoMCwgc2l6ZSk7XG4gICAgICAgICAgICBzdW0gPSAwO1xuICAgICAgICAgICAgcG9zID0gc2l6ZSAtIDc7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gc2l6ZTsgaSA+PSAxOyBpLS0pIHtcbiAgICAgICAgICAgICAgICBzdW0gKz0gbnVtYmVycy5jaGFyQXQoc2l6ZSAtIGkpICogcG9zLS07XG4gICAgICAgICAgICAgICAgaWYgKHBvcyA8IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgcG9zID0gOTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQgPSBzdW0gJSAxMSA8IDIgPyAwIDogMTEgLSAoc3VtICUgMTEpO1xuICAgICAgICAgICAgaWYgKHJlc3VsdCAhPT0gTnVtYmVyKGRpZ2l0cy5jaGFyQXQoMSkpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBjaGVja0NOUEpBbHBoYW51bWVyaWModmFsdWUpIHtcbiAgICAgICAgbGV0IGNucGogPSB2YWx1ZTtcblxuICAgICAgICBpZiAoY25waikge1xuICAgICAgICAgICAgY25waiA9IGNucGoucmVwbGFjZSgvW15cXGRBLVphLXpdL2csICcnKS50b1VwcGVyQ2FzZSgpO1xuXG4gICAgICAgICAgICBpZiAoY25wai5sZW5ndGggIT09IDE0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFZhbGlkYSBxdWUgZMOtZ2l0b3MgdmVyaWZpY2Fkb3JlcyBzw6NvIG51bcOpcmljb3NcbiAgICAgICAgICAgIGlmICghL15cXGQkLy50ZXN0KGNucGouY2hhckF0KDEyKSkgfHwgIS9eXFxkJC8udGVzdChjbnBqLmNoYXJBdCgxMykpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBFbGltaW5hIENOUEpzIGludmFsaWRvcyBjb25oZWNpZG9zXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgY25waiA9PT0gJzAwMDAwMDAwMDAwMDAwJyB8fFxuICAgICAgICAgICAgICAgIGNucGogPT09ICcxMTExMTExMTExMTExMScgfHxcbiAgICAgICAgICAgICAgICBjbnBqID09PSAnMjIyMjIyMjIyMjIyMjInIHx8XG4gICAgICAgICAgICAgICAgY25waiA9PT0gJzMzMzMzMzMzMzMzMzMzJyB8fFxuICAgICAgICAgICAgICAgIGNucGogPT09ICc0NDQ0NDQ0NDQ0NDQ0NCcgfHxcbiAgICAgICAgICAgICAgICBjbnBqID09PSAnNTU1NTU1NTU1NTU1NTUnIHx8XG4gICAgICAgICAgICAgICAgY25waiA9PT0gJzY2NjY2NjY2NjY2NjY2JyB8fFxuICAgICAgICAgICAgICAgIGNucGogPT09ICc3Nzc3Nzc3Nzc3Nzc3NycgfHxcbiAgICAgICAgICAgICAgICBjbnBqID09PSAnODg4ODg4ODg4ODg4ODgnIHx8XG4gICAgICAgICAgICAgICAgY25waiA9PT0gJzk5OTk5OTk5OTk5OTk5J1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBWYWxpZGEgRFZzXG4gICAgICAgICAgICBjb25zdCBzaXplID0gY25wai5sZW5ndGggLSAyO1xuICAgICAgICAgICAgY29uc3QgZGlnaXRzID0gY25wai5zdWJzdHJpbmcoc2l6ZSk7XG4gICAgICAgICAgICBpZiAoIXRoaXMudmFsaWRhdGVDbnBqRGlnaXQoY25waiwgc2l6ZSwgTnVtYmVyKGRpZ2l0cy5jaGFyQXQoMCkpKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCF0aGlzLnZhbGlkYXRlQ25wakRpZ2l0KGNucGosIHNpemUgKyAxLCBOdW1iZXIoZGlnaXRzLmNoYXJBdCgxKSkpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHZhbGlkYXRlQ25wakRpZ2l0KGNucGo6IHN0cmluZywgc2l6ZTogbnVtYmVyLCBkaWdpdDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIGxldCBudW1iZXJzID0gY25wai5zdWJzdHJpbmcoMCwgc2l6ZSk7XG4gICAgICAgIGxldCBzdW0gPSAwO1xuICAgICAgICBsZXQgcG9zID0gc2l6ZSAtIDc7XG4gICAgICAgIGZvciAobGV0IGkgPSBzaXplOyBpID49IDE7IGktLSkge1xuICAgICAgICAgICAgc3VtICs9IHRoaXMuY29udmVydFRvQXNjaWlNaW51czQ4KG51bWJlcnMuY2hhckF0KHNpemUgLSBpKSkgKiBwb3MtLTtcbiAgICAgICAgICAgIGlmIChwb3MgPCAyKSB7XG4gICAgICAgICAgICAgICAgcG9zID0gOTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXN1bHQgPSBzdW0gJSAxMSA8IDIgPyAwIDogMTEgLSAoc3VtICUgMTEpO1xuICAgICAgICByZXR1cm4gcmVzdWx0ID09PSBkaWdpdDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbnZlcnRUb0FzY2lpTWludXM0OChpbnB1dDogc3RyaW5nKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIGlucHV0LmNoYXJDb2RlQXQoMCkgLSA0ODtcbiAgICB9XG59XG5cbmV4cG9ydCBjb25zdCBjbnBqVmFsaWRhdG9yID0gbmV3IENOUEpWYWxpZGF0b3IoKTtcbiJdfQ==
|
|
@@ -19,27 +19,40 @@ var FormatUtilsService = /** @class */ (function () {
|
|
|
19
19
|
* Retorna o CNPJ formatado
|
|
20
20
|
* @param cnpj CNPJ
|
|
21
21
|
*/
|
|
22
|
-
FormatUtilsService.getFormattedCnpj = function (cnpj) {
|
|
22
|
+
FormatUtilsService.getFormattedCnpj = function (cnpj, isAlphanumericCNPJ) {
|
|
23
23
|
if (cnpj) {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
.replace(/
|
|
27
|
-
.
|
|
28
|
-
|
|
29
|
-
|
|
24
|
+
if (isAlphanumericCNPJ) {
|
|
25
|
+
// Remove caracteres especiais mantendo letras e números, e converte para maiúsculas
|
|
26
|
+
var cleanCnpj = cnpj.replace(/[^a-zA-Z0-9]/g, '').toUpperCase();
|
|
27
|
+
// Aplica formatação: AA.BBB.CCC/DDDD-EE
|
|
28
|
+
return cleanCnpj
|
|
29
|
+
.replace(/^([A-Z0-9]{2})([A-Z0-9])/, '$1.$2')
|
|
30
|
+
.replace(/^([A-Z0-9]{2}\.)([A-Z0-9]{3})([A-Z0-9])/, '$1$2.$3')
|
|
31
|
+
.replace(/^([A-Z0-9]{2}\.[A-Z0-9]{3}\.)([A-Z0-9]{3})([A-Z0-9])/, '$1$2/$3')
|
|
32
|
+
.replace(/^([A-Z0-9]{2}\.[A-Z0-9]{3}\.[A-Z0-9]{3}\/)([A-Z0-9]{4})([0-9])/, '$1$2-$3');
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
return cnpj
|
|
36
|
+
.replace(/\D/g, "")
|
|
37
|
+
.replace(/(\d{2})(\d)/, "$1.$2")
|
|
38
|
+
.replace(/(\d{3})(\d)/, "$1.$2")
|
|
39
|
+
.replace(/(\d{3})(\d)/, "$1/$2")
|
|
40
|
+
.replace(/(\d{4})(\d)/, "$1-$2");
|
|
41
|
+
}
|
|
30
42
|
}
|
|
31
43
|
return null;
|
|
32
44
|
};
|
|
33
45
|
/**
|
|
34
46
|
* Retorna a mascara do CPF/CNPJ
|
|
35
47
|
* @param key Valores possíveis são CPF ou CNPJ
|
|
48
|
+
* @param isAlphanumericCNPJ Define se o CNPJ pode ser alfanumérico.
|
|
36
49
|
*/
|
|
37
|
-
FormatUtilsService.getCpfCnpjMask = function (key) {
|
|
50
|
+
FormatUtilsService.getCpfCnpjMask = function (key, isAlphanumericCNPJ) {
|
|
38
51
|
switch (key) {
|
|
39
52
|
case "CPF":
|
|
40
53
|
return "999.999.999-99";
|
|
41
54
|
case "CNPJ":
|
|
42
|
-
return "99.999.999/9999-99";
|
|
55
|
+
return isAlphanumericCNPJ ? "**.***.***/****-99" : "99.999.999/9999-99";
|
|
43
56
|
default:
|
|
44
57
|
return "";
|
|
45
58
|
}
|
|
@@ -97,4 +110,4 @@ var FormatUtilsService = /** @class */ (function () {
|
|
|
97
110
|
return FormatUtilsService;
|
|
98
111
|
}());
|
|
99
112
|
export { FormatUtilsService };
|
|
100
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
113
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LXV0aWxzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yLWdlc3Rhby1wZXNzb2FzL3BheXJvbGwtY29yZS8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvdXRpbHMvZm9ybWF0LXV0aWxzL2Zvcm1hdC11dGlscy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0lBQUE7SUE4R0EsQ0FBQztJQTVHRzs7O09BR0c7SUFDSSxrQ0FBZSxHQUF0QixVQUF1QixHQUFXO1FBQzlCLElBQUksR0FBRyxFQUFFO1lBQ0wsT0FBTyxHQUFHO2lCQUNMLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDO2lCQUNsQixPQUFPLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQztpQkFDL0IsT0FBTyxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUM7aUJBQy9CLE9BQU8sQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUM7U0FDeEM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksbUNBQWdCLEdBQXZCLFVBQXdCLElBQVksRUFBRSxrQkFBNEI7UUFDOUQsSUFBSSxJQUFJLEVBQUU7WUFDTixJQUFJLGtCQUFrQixFQUFFO2dCQUNwQixvRkFBb0Y7Z0JBQ3BGLElBQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUVsRSx3Q0FBd0M7Z0JBQ3hDLE9BQU8sU0FBUztxQkFDWCxPQUFPLENBQUMsMEJBQTBCLEVBQUUsT0FBTyxDQUFDO3FCQUM1QyxPQUFPLENBQUMseUNBQXlDLEVBQUUsU0FBUyxDQUFDO3FCQUM3RCxPQUFPLENBQUMsc0RBQXNELEVBQUUsU0FBUyxDQUFDO3FCQUMxRSxPQUFPLENBQUMsZ0VBQWdFLEVBQUUsU0FBUyxDQUFDLENBQUM7YUFDN0Y7aUJBQU07Z0JBQ0gsT0FBTyxJQUFJO3FCQUNOLE9B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cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIEZvcm1hdFV0aWxzU2VydmljZSB7XG5cbiAgICAvKipcbiAgICAgKiBSZXRvcm5hIG8gQ1BGIGZvcm1hdGFkb1xuICAgICAqIEBwYXJhbSBjcGYgQ1BGXG4gICAgICovXG4gICAgc3RhdGljIGdldEZvcm1hdHRlZENwZihjcGY6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGlmIChjcGYpIHtcbiAgICAgICAgICAgIHJldHVybiBjcGZcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxEL2csIFwiXCIpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoLyhcXGR7M30pKFxcZCkvLCBcIiQxLiQyXCIpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoLyhcXGR7M30pKFxcZCkvLCBcIiQxLiQyXCIpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoLyhcXGR7M30pKFxcZCkvLCBcIiQxLSQyXCIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldG9ybmEgbyBDTlBKIGZvcm1hdGFkb1xuICAgICAqIEBwYXJhbSBjbnBqIENOUEpcbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0Rm9ybWF0dGVkQ25waihjbnBqOiBzdHJpbmcsIGlzQWxwaGFudW1lcmljQ05QSj86IGJvb2xlYW4pOiBzdHJpbmcge1xuICAgICAgICBpZiAoY25waikge1xuICAgICAgICAgICAgaWYgKGlzQWxwaGFudW1lcmljQ05QSikge1xuICAgICAgICAgICAgICAgIC8vIFJlbW92ZSBjYXJhY3RlcmVzIGVzcGVjaWFpcyBtYW50ZW5kbyBsZXRyYXMgZSBuw7ptZXJvcywgZSBjb252ZXJ0ZSBwYXJhIG1hacO6c2N1bGFzXG4gICAgICAgICAgICAgICAgY29uc3QgY2xlYW5DbnBqID0gY25wai5yZXBsYWNlKC9bXmEtekEtWjAtOV0vZywgJycpLnRvVXBwZXJDYXNlKCk7XG5cbiAgICAgICAgICAgICAgICAvLyBBcGxpY2EgZm9ybWF0YcOnw6NvOiBBQS5CQkIuQ0NDL0REREQtRUVcbiAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5DbnBqXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9eKFtBLVowLTldezJ9KShbQS1aMC05XSkvLCAnJDEuJDInKVxuICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvXihbQS1aMC05XXsyfVxcLikoW0EtWjAtOV17M30pKFtBLVowLTldKS8sICckMSQyLiQzJylcbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL14oW0EtWjAtOV17Mn1cXC5bQS1aMC05XXszfVxcLikoW0EtWjAtOV17M30pKFtBLVowLTldKS8sICckMSQyLyQzJylcbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL14oW0EtWjAtOV17Mn1cXC5bQS1aMC05XXszfVxcLltBLVowLTldezN9XFwvKShbQS1aMC05XXs0fSkoWzAtOV0pLywgJyQxJDItJDMnKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNucGpcbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcRC9nLCBcIlwiKVxuICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvKFxcZHsyfSkoXFxkKS8sIFwiJDEuJDJcIilcbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoLyhcXGR7M30pKFxcZCkvLCBcIiQxLiQyXCIpXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC8oXFxkezN9KShcXGQpLywgXCIkMS8kMlwiKVxuICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvKFxcZHs0fSkoXFxkKS8sIFwiJDEtJDJcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0b3JuYSBhIG1hc2NhcmEgZG8gQ1BGL0NOUEpcbiAgICAgKiBAcGFyYW0ga2V5IFZhbG9yZXMgcG9zc8OtdmVpcyBzw6NvIENQRiBvdSBDTlBKXG4gICAgICogQHBhcmFtIGlzQWxwaGFudW1lcmljQ05QSiBEZWZpbmUgc2UgbyBDTlBKIHBvZGUgc2VyIGFsZmFudW3DqXJpY28uXG4gICAgICovXG4gICAgc3RhdGljIGdldENwZkNucGpNYXNrKGtleTogc3RyaW5nLCBpc0FscGhhbnVtZXJpY0NOUEo/OiBib29sZWFuKSB7XG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgICBjYXNlIFwiQ1BGXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiOTk5Ljk5OS45OTktOTlcIjtcbiAgICAgICAgICAgIGNhc2UgXCJDTlBKXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzQWxwaGFudW1lcmljQ05QSiA/IFwiKiouKioqLioqKi8qKioqLTk5XCIgOiBcIjk5Ljk5OS45OTkvOTk5OS05OVwiO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICAvKipcbiAgICAgKiBNZXTDs2RvIHBhcmEgZm9ybWF0YXIgbyBuw7ptZXJvIGRlIHRlbGVmb25lLlxuICAgICAqIEBwYXJhbSB0ZWxlcGhvbmVOdW1iZXIgU3RyaW5nIGNvbnRlbmRvIG8gbsO6bWVybyBkZSB0ZWxlZm9uZS5cbiAgICAgKiBAcmV0dXJucyBTdHJpbmcgZm9ybWF0YWRhIGNvbSBvIG7Dum1lcm8gZGUgdGVsZWZvbmUuXG4gICAgICovXG4gICAgc3RhdGljIGdldEZvcm1hdHRlZFRlbGVwaG9uZU51bWJlcih0ZWxlcGhvbmVOdW1iZXI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGxldCB0ZWwgPSB0ZWxlcGhvbmVOdW1iZXIucmVwbGFjZSgvXFxEL2csICcnKTtcbiAgICAgICAgdGVsID0gdGVsLnJlcGxhY2UoL14wLywgJycpO1xuICAgICAgICBpZiAodGVsLmxlbmd0aCA+IDEwKSB7XG4gICAgICAgICAgLy8gIyMjIyMjIyMjIyAtPiAoIyMpICMjIyMjLSMjIyNcbiAgICAgICAgICB0ZWwgPSB0ZWwucmVwbGFjZSgvXihcXGR7Mn0pPyhcXGR7NX0pPyhcXGR7NH0pLiovLCAnKCQxKSAkMi0kMycpO1xuICAgICAgICB9IGVsc2UgaWYgKHRlbC5sZW5ndGggPiA5KSB7XG4gICAgICAgICAgLy8gQUEjIyMjIyMjIyMgLT4gKEFBKSAjIyMjLSMjIyNcbiAgICAgICAgICB0ZWwgPSB0ZWwucmVwbGFjZSgvXihcXGR7Mn0pPyhcXGR7NH0pPyhcXGR7NH0pLiovLCAnKCQxKSAkMi0kMycpO1xuICAgICAgICB9IGVsc2UgaWYgKHRlbC5sZW5ndGggPiA1KSB7XG4gICAgICAgICAgLy8gIyMjIyMjIyAtPiAoIyMpICMjIyMtI1xuICAgICAgICAgIHRlbCA9IHRlbC5yZXBsYWNlKC9eKFxcZHsyfSk/KFxcZHs0fSk/KFxcZHswLDR9KS4qLywgJygkMSkgJDItJDMnKTtcbiAgICAgICAgfSBlbHNlIGlmICh0ZWwubGVuZ3RoID4gMSkge1xuICAgICAgICAgIC8vICMjIyMgLT4gKCMjKSAjI1xuICAgICAgICAgIHRlbCA9IHRlbC5yZXBsYWNlKC9eKFxcZHsyfSk/KFxcZHswLDV9KS4qLywgJygkMSkgJDInKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAodGVsICE9PSAnJykgeyB0ZWwgPSB0ZWwucmVwbGFjZSgvXihcXGQqKS8sICcoJDEnKTsgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRlbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXTDs2RvIHBhcmEgZm9ybWF0YXIgbyBuw7ptZXJvIGRlIHRlbGVmb25lIGRlIHVtIGNhbXBvIElucHV0LlxuICAgICAqIEBwYXJhbSBldmVudCBFdmVudG8gZG8gSW5wdXQgZG8gY2FtcG8gZGUgdGVsZWZvbmUuXG4gICAgICovXG4gICAgc3RhdGljIGZvcm1hdFRlbGVwaG9uZUlucHV0RXZlbnQoZXZlbnQ6IGFueSkge1xuICAgICAgICBsZXQgdGVsZXBob25lTnVtYmVyID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuXG4gICAgICAgIC8vIFBlcm1pdGUgQmFja3NwYWNlIHBhcmEgdXN1w6FyaW8gcmVtb3ZlciBcIilcIiBlIFwiLVwiXG4gICAgICAgIGlmIChldmVudC5rZXlDb2RlID09PSA4ICYmICh0ZWxlcGhvbmVOdW1iZXIubGVuZ3RoID09PSA5IHx8IHRlbGVwaG9uZU51bWJlci5sZW5ndGggPT09IDQgfHwgdGVsZXBob25lTnVtYmVyLmxlbmd0aCA9PT0gMykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50LnRhcmdldC52YWx1ZSA9IEZvcm1hdFV0aWxzU2VydmljZS5nZXRGb3JtYXR0ZWRUZWxlcGhvbmVOdW1iZXIodGVsZXBob25lTnVtYmVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXTDs2RvIHBhcmEgZm9ybWF0YXIgYSBwb3JjZW50YWdlbSBwYXJhIDIgY2FzYXMgZGVjaW1haXMuXG4gICAgICogQHBhcmFtIHZhbHVlIE7Dum1lcm8gYSBzZXIgZm9ybWF0YWRvLlxuICAgICAqL1xuICAgIHN0YXRpYyBnZXRGb3JtYXR0ZWRQZXJjZW50YWdlKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gcGFyc2VGbG9hdCh2YWx1ZSkudG9GaXhlZCgyKS5yZXBsYWNlKCcuJywgJywnKSArICclJztcbiAgICB9XG59XG4iXX0=
|
|
@@ -142,6 +142,62 @@ var GenericValidator = /** @class */ (function () {
|
|
|
142
142
|
}
|
|
143
143
|
return null;
|
|
144
144
|
};
|
|
145
|
+
/**
|
|
146
|
+
* Valida se o CNPJ Alfanumérico é valido. Deve-se ser informado o cpf sem máscara.
|
|
147
|
+
*/
|
|
148
|
+
GenericValidator.isValidCnpjAlphanumeric = function (control) {
|
|
149
|
+
var cnpj = control.value;
|
|
150
|
+
if (cnpj) {
|
|
151
|
+
cnpj = cnpj.replace(/[^\dA-Za-z]/g, '').toUpperCase();
|
|
152
|
+
if (cnpj.length !== 14) {
|
|
153
|
+
return null;
|
|
154
|
+
}
|
|
155
|
+
// Valida que dígitos verificadores são numéricos
|
|
156
|
+
if (!/^\d$/.test(cnpj.charAt(12)) || !/^\d$/.test(cnpj.charAt(13))) {
|
|
157
|
+
return { cnpjNotValid: true };
|
|
158
|
+
}
|
|
159
|
+
// Elimina CNPJs invalidos conhecidos
|
|
160
|
+
if (cnpj === '00000000000000' ||
|
|
161
|
+
cnpj === '11111111111111' ||
|
|
162
|
+
cnpj === '22222222222222' ||
|
|
163
|
+
cnpj === '33333333333333' ||
|
|
164
|
+
cnpj === '44444444444444' ||
|
|
165
|
+
cnpj === '55555555555555' ||
|
|
166
|
+
cnpj === '66666666666666' ||
|
|
167
|
+
cnpj === '77777777777777' ||
|
|
168
|
+
cnpj === '88888888888888' ||
|
|
169
|
+
cnpj === '99999999999999') {
|
|
170
|
+
return { cnpjNotValid: true };
|
|
171
|
+
}
|
|
172
|
+
// Valida DVs
|
|
173
|
+
var size = cnpj.length - 2;
|
|
174
|
+
var digits = cnpj.substring(size);
|
|
175
|
+
if (!GenericValidator.validateCnpjDigit(cnpj, size, Number(digits.charAt(0)))) {
|
|
176
|
+
return { cnpjNotValid: true };
|
|
177
|
+
}
|
|
178
|
+
if (!GenericValidator.validateCnpjDigit(cnpj, size + 1, Number(digits.charAt(1)))) {
|
|
179
|
+
return { cnpjNotValid: true };
|
|
180
|
+
}
|
|
181
|
+
return null;
|
|
182
|
+
}
|
|
183
|
+
return null;
|
|
184
|
+
};
|
|
185
|
+
GenericValidator.validateCnpjDigit = function (cnpj, size, digit) {
|
|
186
|
+
var numbers = cnpj.substring(0, size);
|
|
187
|
+
var sum = 0;
|
|
188
|
+
var pos = size - 7;
|
|
189
|
+
for (var i = size; i >= 1; i--) {
|
|
190
|
+
sum += this.convertToAsciiMinus48(numbers.charAt(size - i)) * pos--;
|
|
191
|
+
if (pos < 2) {
|
|
192
|
+
pos = 9;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
var result = sum % 11 < 2 ? 0 : 11 - (sum % 11);
|
|
196
|
+
return result === digit;
|
|
197
|
+
};
|
|
198
|
+
GenericValidator.convertToAsciiMinus48 = function (input) {
|
|
199
|
+
return input.charCodeAt(0) - 48;
|
|
200
|
+
};
|
|
145
201
|
/**
|
|
146
202
|
* Válida o número de telefone da chave PIX.
|
|
147
203
|
*/
|
|
@@ -164,4 +220,4 @@ var GenericValidator = /** @class */ (function () {
|
|
|
164
220
|
return GenericValidator;
|
|
165
221
|
}());
|
|
166
222
|
export { GenericValidator };
|
|
167
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy12YWxpZGF0b3JzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvci1nZXN0YW8tcGVzc29hcy9wYXlyb2xsLWNvcmUvIiwic291cmNlcyI6WyJjb21wb25lbnRzL3V0aWxzL2dlbmVyaWMtdmFsaWRhdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTtJQUNJO0lBQWdCLENBQUM7SUFFakI7O09BRUc7SUFDSSwyQkFBVSxHQUFqQixVQUFrQixPQUF3QjtRQUN0QyxJQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBRTFCLElBQUksQ0FBQyxHQUFHO1lBQUUsT0FBTyxJQUFJLENBQUM7YUFDakIsSUFBSSxHQUFHLENBQUMsTUFBTSxJQUFJLEVBQUU7WUFBRSxPQUFPLElBQUksQ0FBQztRQUV2QyxJQUFNLGlCQUFpQixHQUFHLFlBQVksQ0FBQztRQUN2QyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZCxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZCxJQUFJLGFBQWEsR0FBRyxDQUFDLENBQUM7UUFDdEIsSUFBSSxhQUFhLEdBQUcsQ0FBQyxDQUFDO1FBRXRCLElBQ0ksR0FBRyxDQUFDLE1BQU0sS0FBSyxFQUFFO1lBQ2pCLEdBQUcsS0FBSyxhQUFhO1lBQ3JCLEdBQUcsS0FBSyxhQUFhO1lBQ3JCLEdBQUcsS0FBSyxhQUFhO1lBQ3JCLEdBQUcsS0FBSyxhQUFhO1lBQ3JCLEdBQUcsS0FBSyxhQUFhO1lBQ3JCLEdBQUcsS0FBSyxhQUFhO1lBQ3JCLEdBQUcsS0FBSyxhQUFhO1lBQ3JCLEdBQUcsS0FBSyxhQUFhO1lBQ3JCLEdBQUcsS0FBSyxhQUFhO1lBQ3JCLEdBQUcsS0FBSyxhQUFhO1lBRXJCLE9BQU8sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUM7YUFDM0I7WUFDRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUN6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SUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLGtCQUFrQixFQUFFLElBQUksRUFBRSxDQUFDO0lBQ3hFLENBQUM7SUFFRDs7T0FFRztJQUNJLDZCQUFZLEdBQW5CLFVBQW9CLE9BQXdCO1FBQ3hDLElBQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDL0IsSUFBTSxlQUFlLEdBQUcsc0NBQXNDLENBQUM7UUFFL0QsSUFBTSxZQUFZLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVwRCxPQUFPLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUN4RCxDQUFDO0lBQ0wsdUJBQUM7QUFBRCxDQUFDLEFBeExELElBd0xDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmFsaWRhdG9ycywgQWJzdHJhY3RDb250cm9sIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5cbmV4cG9ydCBjbGFzcyBHZW5lcmljVmFsaWRhdG9yIHtcbiAgICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gICAgLyoqXG4gICAgICogVmFsaWRhIG8gQ0VJIChDYWRhc3RybyBlc3BlY8OtZmljbyBkZSBJTlNTKSBkaWdpdGFkby5cbiAgICAgKi9cbiAgICBzdGF0aWMgaXNWYWxpZENlaShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0b3JzIHtcbiAgICAgICAgY29uc3QgY2VpID0gY29udHJvbC52YWx1ZTtcblxuICAgICAgICBpZiAoIWNlaSkgcmV0dXJuIG51bGw7XG4gICAgICAgIGVsc2UgaWYgKGNlaS5sZW5ndGggIT0gMTEpIHJldHVybiBudWxsO1xuXG4gICAgICAgIGNvbnN0IG11bHRpcGxpY2Fkb3JCYXNlID0gXCIzMjk4NzY1NDMyXCI7XG4gICAgICAgIGxldCB0b3RhbCA9IDA7XG4gICAgICAgIGxldCByZXN0byA9IDA7XG4gICAgICAgIGxldCBtdWx0aXBsaWNhbmRvID0gMDtcbiAgICAgICAgbGV0IG11bHRpcGxpY2Fkb3IgPSAwO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGNlaS5sZW5ndGggIT09IDExIHx8XG4gICAgICAgICAgICBjZWkgPT09IFwiMDAwMDAwMDAwMDBcIiB8fFxuICAgICAgICAgICAgY2VpID09PSBcIjExMTExMTExMTExXCIgfHxcbiAgICAgICAgICAgIGNlaSA9PT0gXCIyMjIyMjIyMjIyMlwiIHx8XG4gICAgICAgICAgICBjZWkgPT09IFwiMzMzMzMzMzMzMzNcIiB8fFxuICAgICAgICAgICAgY2VpID09PSBcIjQ0NDQ0NDQ0NDQ0XCIgfHxcbiAgICAgICAgICAgIGNlaSA9PT0gXCI1NTU1NTU1NTU1NVwiIHx8XG4gICAgICAgICAgICBjZWkgPT09IFwiNjY2NjY2NjY2NjZcIiB8fFxuICAgICAgICAgICAgY2VpID09PSBcIjc3Nzc3Nzc3Nzc3XCIgfHxcbiAgICAgICAgICAgIGNlaSA9PT0gXCI4ODg4ODg4ODg4OFwiIHx8XG4gICAgICAgICAgICBjZWkgPT09IFwiOTk5OTk5OTk5OTlcIlxuICAgICAgICApXG4gICAgICAgICAgICByZXR1cm4geyBpbnZhbGlkQ2VpOiB0cnVlIH07XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgbXVsdGlwbGljYW5kbyA9IHBhcnNlSW50KGNlaS5zdWJzdHJpbmcoaSwgaSArIDEpLCAxMCk7XG4gICAgICAgICAgICAgICAgbXVsdGlwbGljYWRvciA9IHBhcnNlSW50KG11bHRpcGxpY2Fkb3JCYXNlLnN1YnN0cmluZyhpLCBpICsgMSksIDEwKTtcbiAgICAgICAgICAgICAgICB0b3RhbCArPSBtdWx0aXBsaWNhbmRvICogbXVsdGlwbGljYWRvcjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVzdG8gPSAxMSAtICh0b3RhbCAlIDExKTtcbiAgICAgICAgICAgIHJlc3RvID0gcmVzdG8gPT09IDEwIHx8IHJlc3RvID09PSAxMSA/IDAgOiByZXN0bztcblxuICAgICAgICAgICAgY29uc3QgZGlnaXRvID0gcGFyc2VJbnQoXCJcIiArIGNlaS5jaGFyQXQoMTApLCAxMCk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdG8gPT09IGRpZ2l0byA/IG51bGwgOiB7IGludmFsaWRDZWk6IHRydWUgfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFZhbGlkYSBzZSBvIENQRiDDqSB2YWxpZG8uIERldmUtc2Ugc2VyIGluZm9ybWFkbyBvIGNwZiBzZW0gbcOhc2NhcmEuXG4gICAgICovXG4gICAgc3RhdGljIGlzVmFsaWRDcGYoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdG9ycyB7XG4gICAgICAgIGNvbnN0IGNwZiA9IGNvbnRyb2wudmFsdWU7XG4gICAgICAgIGlmIChjcGYpIHtcbiAgICAgICAgICAgIGxldCBudW1iZXJzLCBkaWdpdHMsIHN1bSwgaSwgcmVzdWx0LCBlcXVhbERpZ2l0cztcbiAgICAgICAgICAgIGVxdWFsRGlnaXRzID0gMTtcbiAgICAgICAgICAgIGlmIChjcGYubGVuZ3RoIDwgMTEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGNwZi5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoY3BmLmNoYXJBdChpKSAhPT0gY3BmLmNoYXJBdChpICsgMSkpIHtcbiAgICAgICAgICAgICAgICAgICAgZXF1YWxEaWdpdHMgPSAwO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWVxdWFsRGlnaXRzKSB7XG4gICAgICAgICAgICAgICAgbnVtYmVycyA9IGNwZi5zdWJzdHJpbmcoMCwgOSk7XG4gICAgICAgICAgICAgICAgZGlnaXRzID0gY3BmLnN1YnN0cmluZyg5KTtcbiAgICAgICAgICAgICAgICBzdW0gPSAwO1xuICAgICAgICAgICAgICAgIGZvciAoaSA9IDEwOyBpID4gMTsgaS0tKSB7XG4gICAgICAgICAgICAgICAgICAgIHN1bSArPSBudW1iZXJzLmNoYXJBdCgxMCAtIGkpICogaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gc3VtICUgMTEgPCAyID8gMCA6IDExIC0gKHN1bSAlIDExKTtcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9PSBOdW1iZXIoZGlnaXRzLmNoYXJBdCgwKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgY3BmTm90VmFsaWQ6IHRydWUgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbnVtYmVycyA9IGNwZi5zdWJzdHJpbmcoMCwgMTApO1xuICAgICAgICAgICAgICAgIHN1bSA9IDA7XG4gICAgICAgICAgICAgICAgZm9yIChpID0gMTE7IGkgPiAxOyBpLS0pIHtcbiAgICAgICAgICAgICAgICAgICAgc3VtICs9IG51bWJlcnMuY2hhckF0KDExIC0gaSkgKiBpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXN1bHQgPSBzdW0gJSAxMSA8IDIgPyAwIDogMTEgLSAoc3VtICUgMTEpO1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT09IE51bWJlcihkaWdpdHMuY2hhckF0KDEpKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBjcGZOb3RWYWxpZDogdHJ1ZSB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgY3BmTm90VmFsaWQ6IHRydWUgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBWYWxpZGEgc2UgbyBDTlBKIMOpIHZhbGlkby4gRGV2ZS1zZSBzZXIgaW5mb3JtYWRvIG8gY3BmIHNlbSBtw6FzY2FyYS5cbiAgICAgKi9cbiAgICBzdGF0aWMgaXNWYWxpZENucGooY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdG9ycyB7XG4gICAgICAgIGxldCBjbnBqID0gY29udHJvbC52YWx1ZTtcblxuICAgICAgICBpZiAoY25waikge1xuICAgICAgICAgICAgbGV0IHNpemUsIG51bWJlcnMsIGRpZ2l0cywgc3VtLCBwb3MsIHJlc3VsdDtcbiAgICAgICAgICAgIGNucGogPSBjbnBqLnJlcGxhY2UoL1teXFxkXSsvZywgJycpO1xuXG4gICAgICAgICAgICBpZiAoY25wai5sZW5ndGggIT09IDE0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEVsaW1pbmEgQ05QSnMgaW52YWxpZG9zIGNvbmhlY2lkb3NcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBjbnBqID09PSAnMDAwMDAwMDAwMDAwMDAnIHx8XG4gICAgICAgICAgICAgICAgY25waiA9PT0gJzExMTExMTExMTExMTExJyB8fFxuICAgICAgICAgICAgICAgIGNucGogPT09ICcyMjIyMjIyMjIyMjIyMicgfHxcbiAgICAgICAgICAgICAgICBjbnBqID09PSAnMzMzMzMzMzMzMzMzMzMnIHx8XG4gICAgICAgICAgICAgICAgY25waiA9PT0gJzQ0NDQ0NDQ0NDQ0NDQ0JyB8fFxuICAgICAgICAgICAgICAgIGNucGogPT09ICc1NTU1NTU1NTU1NTU1NScgfHxcbiAgICAgICAgICAgICAgICBjbnBqID09PSAnNjY2NjY2NjY2NjY2NjYnIHx8XG4gICAgICAgICAgICAgICAgY25waiA9PT0gJzc3Nzc3Nzc3Nzc3Nzc3JyB8fFxuICAgICAgICAgICAgICAgIGNucGogPT09ICc4ODg4ODg4ODg4ODg4OCcgfHxcbiAgICAgICAgICAgICAgICBjbnBqID09PSAnOTk5OTk5OTk5OTk5OTknXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBjbnBqTm90VmFsaWQ6IHRydWUgfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gVmFsaWRhIERWc1xuICAgICAgICAgICAgc2l6ZSA9IGNucGoubGVuZ3RoIC0gMjtcbiAgICAgICAgICAgIG51bWJlcnMgPSBjbnBqLnN1YnN0cmluZygwLCBzaXplKTtcbiAgICAgICAgICAgIGRpZ2l0cyA9IGNucGouc3Vic3RyaW5nKHNpemUpO1xuICAgICAgICAgICAgc3VtID0gMDtcbiAgICAgICAgICAgIHBvcyA9IHNpemUgLSA3O1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IHNpemU7IGkgPj0gMTsgaS0tKSB7XG4gICAgICAgICAgICAgICAgc3VtICs9IG51bWJlcnMuY2hhckF0KHNpemUgLSBpKSAqIHBvcy0tO1xuICAgICAgICAgICAgICAgIGlmIChwb3MgPCAyKSB7XG4gICAgICAgICAgICAgICAgICAgIHBvcyA9IDk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0ID0gc3VtICUgMTEgPCAyID8gMCA6IDExIC0gKHN1bSAlIDExKTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgIT09IE51bWJlcihkaWdpdHMuY2hhckF0KDApKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IGNucGpOb3RWYWxpZDogdHJ1ZSB9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzaXplID0gc2l6ZSArIDE7XG4gICAgICAgICAgICBudW1iZXJzID0gY25wai5zdWJzdHJpbmcoMCwgc2l6ZSk7XG4gICAgICAgICAgICBzdW0gPSAwO1xuICAgICAgICAgICAgcG9zID0gc2l6ZSAtIDc7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gc2l6ZTsgaSA+PSAxOyBpLS0pIHtcbiAgICAgICAgICAgICAgICBzdW0gKz0gbnVtYmVycy5jaGFyQXQoc2l6ZSAtIGkpICogcG9zLS07XG4gICAgICAgICAgICAgICAgaWYgKHBvcyA8IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgcG9zID0gOTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQgPSBzdW0gJSAxMSA8IDIgPyAwIDogMTEgLSAoc3VtICUgMTEpO1xuICAgICAgICAgICAgaWYgKHJlc3VsdCAhPT0gTnVtYmVyKGRpZ2l0cy5jaGFyQXQoMSkpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgY25wak5vdFZhbGlkOiB0cnVlIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFbDoWxpZGEgbyBuw7ptZXJvIGRlIHRlbGVmb25lIGRhIGNoYXZlIFBJWC5cbiAgICAgKi9cbiAgICBzdGF0aWMgaXNWYWxpZFBob25lTnVtYmVyKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRvcnMge1xuICAgICAgICBsZXQgY2VsbFBob25lS2V5ID0gY29udHJvbC52YWx1ZSB8fCAnJztcbiAgICAgICAgY2VsbFBob25lS2V5ID0gY2VsbFBob25lS2V5LnJlcGxhY2UoL1tcXHMoKS1dL2csICcnKTtcbiAgICAgICAgY29uc3QgcmVnZXhOdW1iZXJUZWxlcGhvbmUgPSAvXlsxLTldW1xcZF17MSwyfVxcZHs4LDEwfSQvO1xuXG4gICAgICAgIGNvbnN0IGlzVmFsaWROdW1iZXJUZWxlcGhvbmUgPSByZWdleE51bWJlclRlbGVwaG9uZS50ZXN0KGNlbGxQaG9uZUtleSk7XG5cbiAgICAgICAgcmV0dXJuIGlzVmFsaWROdW1iZXJUZWxlcGhvbmUgPyBudWxsIDogeyBpbnZhbGlkUGhvbmVOdW1iZXI6IHRydWUgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBWYWxpZGEgbyBlbWFpbCBkYSBjaGF2ZSBQSVguXG4gICAgICovXG4gICAgc3RhdGljIGlzVmFsaWRFbWFpbChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0b3JzIHtcbiAgICAgICAgY29uc3QgZW1haWxLZXkgPSBjb250cm9sLnZhbHVlO1xuICAgICAgICBjb25zdCByZWdleFZhbGlkRW1haWwgPSAvXltcXHctXFwuXStAW1xcdy1dKyhcXC5bXFx3LV17Miw0fSl7MSwyfSQvO1xuXG4gICAgICAgIGNvbnN0IGlzVmFsaWRFbWFpbCA9IHJlZ2V4VmFsaWRFbWFpbC50ZXN0KGVtYWlsS2V5KTtcblxuICAgICAgICByZXR1cm4gaXNWYWxpZEVtYWlsID8gbnVsbCA6IHsgaW52YWxpZEVtYWlsOiB0cnVlIH07XG4gICAgfVxufVxuIl19
|
|
223
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy12YWxpZGF0b3JzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvci1nZXN0YW8tcGVzc29hcy9wYXlyb2xsLWNvcmUvIiwic291cmNlcyI6WyJjb21wb25lbnRzL3V0aWxzL2dlbmVyaWMtdmFsaWRhdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTtJQUNJO0lBQWdCLENBQUM7SUFFakI7O09BRUc7SUFDSSwyQkFBVSxHQUFqQixVQUFrQixPQUF3QjtRQUN0QyxJQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBRTFCLElBQUksQ0FBQyxHQUFHO1lBQUUsT0FBTyxJQUFJLENBQUM7YUFDakIsSUFBSSxHQUFHLENBQUMsTUFBTSxJQUFJLEVBQUU7WUFBRSxPQUFPLElBQUksQ0FBQztRQUV2QyxJQUFNLGlCQUFpQixHQUFHLFlBQVksQ0FBQztRQUN2QyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZCxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZCxJQUFJLGFBQWEsR0FBRyxDQUFDLENBQUM7UUFDdEIsSUFBSSxhQUFhLEdBQUcsQ0FBQyxDQUFDO1FBRXRCLElBQ0ksR0FBRyxDQUFDLE1BQU0sS0FBSyxFQUFFO1lBQ2pCLEdBQUcsS0FBSyxhQUFhO1lBQ3JCLEdBQUcsS0FBSyxhQUFhO1lBQ3JCLEdBQUcsS0FBSyxhQUFhO1lBQ3JCLEdBQUcsS0FBSyxhQUFhO1lBQ3JCLEdBQUcsS0FBSyxhQUFhO1lBQ3JCLEdBQUcsS0FBSyxhQUFhO1lBQ3JCLEdBQUcsS0FBSyxhQUFhO1lBQ3JCLEdBQUcsS0FBSyxhQUFhO1lBQ3JCLEdBQUcsS0FBSyxhQUFhO1lBQ3JCLEdBQUcsS0FBSyxhQUFhO1lBRXJCLE9BQU8sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUM7YUFDM0I7WUFDRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUN6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RUFBRSxFQUFFLENBQUMsQ0FBQztRQUNwRCxJQUFNLG9CQUFvQixHQUFHLDBCQUEwQixDQUFDO1FBRXhELElBQU0sc0JBQXNCLEdBQUcsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRXZFLE9BQU8sc0JBQXNCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxrQkFBa0IsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUN4RSxDQUFDO0lBRUQ7O09BRUc7SUFDSSw2QkFBWSxHQUFuQixVQUFvQixPQUF3QjtRQUN4QyxJQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQy9CLElBQU0sZUFBZSxHQUFHLHNDQUFzQyxDQUFDO1FBRS9ELElBQU0sWUFBWSxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFcEQsT0FBTyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDeEQsQ0FBQztJQUNMLHVCQUFDO0FBQUQsQ0FBQyxBQTdQRCxJQTZQQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZhbGlkYXRvcnMsIEFic3RyYWN0Q29udHJvbCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuXG5leHBvcnQgY2xhc3MgR2VuZXJpY1ZhbGlkYXRvciB7XG4gICAgY29uc3RydWN0b3IoKSB7IH1cblxuICAgIC8qKlxuICAgICAqIFZhbGlkYSBvIENFSSAoQ2FkYXN0cm8gZXNwZWPDrWZpY28gZGUgSU5TUykgZGlnaXRhZG8uXG4gICAgICovXG4gICAgc3RhdGljIGlzVmFsaWRDZWkoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdG9ycyB7XG4gICAgICAgIGNvbnN0IGNlaSA9IGNvbnRyb2wudmFsdWU7XG5cbiAgICAgICAgaWYgKCFjZWkpIHJldHVybiBudWxsO1xuICAgICAgICBlbHNlIGlmIChjZWkubGVuZ3RoICE9IDExKSByZXR1cm4gbnVsbDtcblxuICAgICAgICBjb25zdCBtdWx0aXBsaWNhZG9yQmFzZSA9IFwiMzI5ODc2NTQzMlwiO1xuICAgICAgICBsZXQgdG90YWwgPSAwO1xuICAgICAgICBsZXQgcmVzdG8gPSAwO1xuICAgICAgICBsZXQgbXVsdGlwbGljYW5kbyA9IDA7XG4gICAgICAgIGxldCBtdWx0aXBsaWNhZG9yID0gMDtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBjZWkubGVuZ3RoICE9PSAxMSB8fFxuICAgICAgICAgICAgY2VpID09PSBcIjAwMDAwMDAwMDAwXCIgfHxcbiAgICAgICAgICAgIGNlaSA9PT0gXCIxMTExMTExMTExMVwiIHx8XG4gICAgICAgICAgICBjZWkgPT09IFwiMjIyMjIyMjIyMjJcIiB8fFxuICAgICAgICAgICAgY2VpID09PSBcIjMzMzMzMzMzMzMzXCIgfHxcbiAgICAgICAgICAgIGNlaSA9PT0gXCI0NDQ0NDQ0NDQ0NFwiIHx8XG4gICAgICAgICAgICBjZWkgPT09IFwiNTU1NTU1NTU1NTVcIiB8fFxuICAgICAgICAgICAgY2VpID09PSBcIjY2NjY2NjY2NjY2XCIgfHxcbiAgICAgICAgICAgIGNlaSA9PT0gXCI3Nzc3Nzc3Nzc3N1wiIHx8XG4gICAgICAgICAgICBjZWkgPT09IFwiODg4ODg4ODg4ODhcIiB8fFxuICAgICAgICAgICAgY2VpID09PSBcIjk5OTk5OTk5OTk5XCJcbiAgICAgICAgKVxuICAgICAgICAgICAgcmV0dXJuIHsgaW52YWxpZENlaTogdHJ1ZSB9O1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTA7IGkrKykge1xuICAgICAgICAgICAgICAgIG11bHRpcGxpY2FuZG8gPSBwYXJzZUludChjZWkuc3Vic3RyaW5nKGksIGkgKyAxKSwgMTApO1xuICAgICAgICAgICAgICAgIG11bHRpcGxpY2Fkb3IgPSBwYXJzZUludChtdWx0aXBsaWNhZG9yQmFzZS5zdWJzdHJpbmcoaSwgaSArIDEpLCAxMCk7XG4gICAgICAgICAgICAgICAgdG90YWwgKz0gbXVsdGlwbGljYW5kbyAqIG11bHRpcGxpY2Fkb3I7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJlc3RvID0gMTEgLSAodG90YWwgJSAxMSk7XG4gICAgICAgICAgICByZXN0byA9IHJlc3RvID09PSAxMCB8fCByZXN0byA9PT0gMTEgPyAwIDogcmVzdG87XG5cbiAgICAgICAgICAgIGNvbnN0IGRpZ2l0byA9IHBhcnNlSW50KFwiXCIgKyBjZWkuY2hhckF0KDEwKSwgMTApO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3RvID09PSBkaWdpdG8gPyBudWxsIDogeyBpbnZhbGlkQ2VpOiB0cnVlIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBWYWxpZGEgc2UgbyBDUEYgw6kgdmFsaWRvLiBEZXZlLXNlIHNlciBpbmZvcm1hZG8gbyBjcGYgc2VtIG3DoXNjYXJhLlxuICAgICAqL1xuICAgIHN0YXRpYyBpc1ZhbGlkQ3BmKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRvcnMge1xuICAgICAgICBjb25zdCBjcGYgPSBjb250cm9sLnZhbHVlO1xuICAgICAgICBpZiAoY3BmKSB7XG4gICAgICAgICAgICBsZXQgbnVtYmVycywgZGlnaXRzLCBzdW0sIGksIHJlc3VsdCwgZXF1YWxEaWdpdHM7XG4gICAgICAgICAgICBlcXVhbERpZ2l0cyA9IDE7XG4gICAgICAgICAgICBpZiAoY3BmLmxlbmd0aCA8IDExKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBjcGYubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGNwZi5jaGFyQXQoaSkgIT09IGNwZi5jaGFyQXQoaSArIDEpKSB7XG4gICAgICAgICAgICAgICAgICAgIGVxdWFsRGlnaXRzID0gMDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFlcXVhbERpZ2l0cykge1xuICAgICAgICAgICAgICAgIG51bWJlcnMgPSBjcGYuc3Vic3RyaW5nKDAsIDkpO1xuICAgICAgICAgICAgICAgIGRpZ2l0cyA9IGNwZi5zdWJzdHJpbmcoOSk7XG4gICAgICAgICAgICAgICAgc3VtID0gMDtcbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAxMDsgaSA+IDE7IGktLSkge1xuICAgICAgICAgICAgICAgICAgICBzdW0gKz0gbnVtYmVycy5jaGFyQXQoMTAgLSBpKSAqIGk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHN1bSAlIDExIDwgMiA/IDAgOiAxMSAtIChzdW0gJSAxMSk7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAhPT0gTnVtYmVyKGRpZ2l0cy5jaGFyQXQoMCkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGNwZk5vdFZhbGlkOiB0cnVlIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG51bWJlcnMgPSBjcGYuc3Vic3RyaW5nKDAsIDEwKTtcbiAgICAgICAgICAgICAgICBzdW0gPSAwO1xuICAgICAgICAgICAgICAgIGZvciAoaSA9IDExOyBpID4gMTsgaS0tKSB7XG4gICAgICAgICAgICAgICAgICAgIHN1bSArPSBudW1iZXJzLmNoYXJBdCgxMSAtIGkpICogaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gc3VtICUgMTEgPCAyID8gMCA6IDExIC0gKHN1bSAlIDExKTtcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9PSBOdW1iZXIoZGlnaXRzLmNoYXJBdCgxKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgY3BmTm90VmFsaWQ6IHRydWUgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IGNwZk5vdFZhbGlkOiB0cnVlIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVmFsaWRhIHNlIG8gQ05QSiDDqSB2YWxpZG8uIERldmUtc2Ugc2VyIGluZm9ybWFkbyBvIGNwZiBzZW0gbcOhc2NhcmEuXG4gICAgICovXG4gICAgc3RhdGljIGlzVmFsaWRDbnBqKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRvcnMge1xuICAgICAgICBsZXQgY25waiA9IGNvbnRyb2wudmFsdWU7XG5cbiAgICAgICAgaWYgKGNucGopIHtcbiAgICAgICAgICAgIGxldCBzaXplLCBudW1iZXJzLCBkaWdpdHMsIHN1bSwgcG9zLCByZXN1bHQ7XG4gICAgICAgICAgICBjbnBqID0gY25wai5yZXBsYWNlKC9bXlxcZF0rL2csICcnKTtcblxuICAgICAgICAgICAgaWYgKGNucGoubGVuZ3RoICE9PSAxNCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBFbGltaW5hIENOUEpzIGludmFsaWRvcyBjb25oZWNpZG9zXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgY25waiA9PT0gJzAwMDAwMDAwMDAwMDAwJyB8fFxuICAgICAgICAgICAgICAgIGNucGogPT09ICcxMTExMTExMTExMTExMScgfHxcbiAgICAgICAgICAgICAgICBjbnBqID09PSAnMjIyMjIyMjIyMjIyMjInIHx8XG4gICAgICAgICAgICAgICAgY25waiA9PT0gJzMzMzMzMzMzMzMzMzMzJyB8fFxuICAgICAgICAgICAgICAgIGNucGogPT09ICc0NDQ0NDQ0NDQ0NDQ0NCcgfHxcbiAgICAgICAgICAgICAgICBjbnBqID09PSAnNTU1NTU1NTU1NTU1NTUnIHx8XG4gICAgICAgICAgICAgICAgY25waiA9PT0gJzY2NjY2NjY2NjY2NjY2JyB8fFxuICAgICAgICAgICAgICAgIGNucGogPT09ICc3Nzc3Nzc3Nzc3Nzc3NycgfHxcbiAgICAgICAgICAgICAgICBjbnBqID09PSAnODg4ODg4ODg4ODg4ODgnIHx8XG4gICAgICAgICAgICAgICAgY25waiA9PT0gJzk5OTk5OTk5OTk5OTk5J1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgY25wak5vdFZhbGlkOiB0cnVlIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFZhbGlkYSBEVnNcbiAgICAgICAgICAgIHNpemUgPSBjbnBqLmxlbmd0aCAtIDI7XG4gICAgICAgICAgICBudW1iZXJzID0gY25wai5zdWJzdHJpbmcoMCwgc2l6ZSk7XG4gICAgICAgICAgICBkaWdpdHMgPSBjbnBqLnN1YnN0cmluZyhzaXplKTtcbiAgICAgICAgICAgIHN1bSA9IDA7XG4gICAgICAgICAgICBwb3MgPSBzaXplIC0gNztcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSBzaXplOyBpID49IDE7IGktLSkge1xuICAgICAgICAgICAgICAgIHN1bSArPSBudW1iZXJzLmNoYXJBdChzaXplIC0gaSkgKiBwb3MtLTtcbiAgICAgICAgICAgICAgICBpZiAocG9zIDwgMikge1xuICAgICAgICAgICAgICAgICAgICBwb3MgPSA5O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdCA9IHN1bSAlIDExIDwgMiA/IDAgOiAxMSAtIChzdW0gJSAxMSk7XG4gICAgICAgICAgICBpZiAocmVzdWx0ICE9PSBOdW1iZXIoZGlnaXRzLmNoYXJBdCgwKSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBjbnBqTm90VmFsaWQ6IHRydWUgfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc2l6ZSA9IHNpemUgKyAxO1xuICAgICAgICAgICAgbnVtYmVycyA9IGNucGouc3Vic3RyaW5nKDAsIHNpemUpO1xuICAgICAgICAgICAgc3VtID0gMDtcbiAgICAgICAgICAgIHBvcyA9IHNpemUgLSA3O1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IHNpemU7IGkgPj0gMTsgaS0tKSB7XG4gICAgICAgICAgICAgICAgc3VtICs9IG51bWJlcnMuY2hhckF0KHNpemUgLSBpKSAqIHBvcy0tO1xuICAgICAgICAgICAgICAgIGlmIChwb3MgPCAyKSB7XG4gICAgICAgICAgICAgICAgICAgIHBvcyA9IDk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0ID0gc3VtICUgMTEgPCAyID8gMCA6IDExIC0gKHN1bSAlIDExKTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgIT09IE51bWJlcihkaWdpdHMuY2hhckF0KDEpKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IGNucGpOb3RWYWxpZDogdHJ1ZSB9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAqIFZhbGlkYSBzZSBvIENOUEogQWxmYW51bcOpcmljbyDDqSB2YWxpZG8uIERldmUtc2Ugc2VyIGluZm9ybWFkbyBvIGNwZiBzZW0gbcOhc2NhcmEuXG4gICAgKi9cbiAgICBzdGF0aWMgaXNWYWxpZENucGpBbHBoYW51bWVyaWMoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdG9ycyB7XG4gICAgICAgIGxldCBjbnBqID0gY29udHJvbC52YWx1ZTtcblxuICAgICAgICBpZiAoY25waikge1xuICAgICAgICAgICAgY25waiA9IGNucGoucmVwbGFjZSgvW15cXGRBLVphLXpdL2csICcnKS50b1VwcGVyQ2FzZSgpO1xuXG4gICAgICAgICAgICBpZiAoY25wai5sZW5ndGggIT09IDE0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFZhbGlkYSBxdWUgZMOtZ2l0b3MgdmVyaWZpY2Fkb3JlcyBzw6NvIG51bcOpcmljb3NcbiAgICAgICAgICAgIGlmICghL15cXGQkLy50ZXN0KGNucGouY2hhckF0KDEyKSkgfHwgIS9eXFxkJC8udGVzdChjbnBqLmNoYXJBdCgxMykpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgY25wak5vdFZhbGlkOiB0cnVlIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEVsaW1pbmEgQ05QSnMgaW52YWxpZG9zIGNvbmhlY2lkb3NcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBjbnBqID09PSAnMDAwMDAwMDAwMDAwMDAnIHx8XG4gICAgICAgICAgICAgICAgY25waiA9PT0gJzExMTExMTExMTExMTExJyB8fFxuICAgICAgICAgICAgICAgIGNucGogPT09ICcyMjIyMjIyMjIyMjIyMicgfHxcbiAgICAgICAgICAgICAgICBjbnBqID09PSAnMzMzMzMzMzMzMzMzMzMnIHx8XG4gICAgICAgICAgICAgICAgY25waiA9PT0gJzQ0NDQ0NDQ0NDQ0NDQ0JyB8fFxuICAgICAgICAgICAgICAgIGNucGogPT09ICc1NTU1NTU1NTU1NTU1NScgfHxcbiAgICAgICAgICAgICAgICBjbnBqID09PSAnNjY2NjY2NjY2NjY2NjYnIHx8XG4gICAgICAgICAgICAgICAgY25waiA9PT0gJzc3Nzc3Nzc3Nzc3Nzc3JyB8fFxuICAgICAgICAgICAgICAgIGNucGogPT09ICc4ODg4ODg4ODg4ODg4OCcgfHxcbiAgICAgICAgICAgICAgICBjbnBqID09PSAnOTk5OTk5OTk5OTk5OTknXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBjbnBqTm90VmFsaWQ6IHRydWUgfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gVmFsaWRhIERWc1xuICAgICAgICAgICAgY29uc3Qgc2l6ZSA9IGNucGoubGVuZ3RoIC0gMjtcbiAgICAgICAgICAgIGNvbnN0IGRpZ2l0cyA9IGNucGouc3Vic3RyaW5nKHNpemUpO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBpZiAoIUdlbmVyaWNWYWxpZGF0b3IudmFsaWRhdGVDbnBqRGlnaXQoY25waiwgc2l6ZSwgTnVtYmVyKGRpZ2l0cy5jaGFyQXQoMCkpKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IGNucGpOb3RWYWxpZDogdHJ1ZSB9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIUdlbmVyaWNWYWxpZGF0b3IudmFsaWRhdGVDbnBqRGlnaXQoY25waiwgc2l6ZSArIDEsIE51bWJlcihkaWdpdHMuY2hhckF0KDEpKSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBjbnBqTm90VmFsaWQ6IHRydWUgfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgdmFsaWRhdGVDbnBqRGlnaXQoY25wajogc3RyaW5nLCBzaXplOiBudW1iZXIsIGRpZ2l0OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgbnVtYmVycyA9IGNucGouc3Vic3RyaW5nKDAsIHNpemUpO1xuICAgICAgICBsZXQgc3VtID0gMDtcbiAgICAgICAgbGV0IHBvcyA9IHNpemUgLSA3O1xuICAgICAgICBmb3IgKGxldCBpID0gc2l6ZTsgaSA+PSAxOyBpLS0pIHtcbiAgICAgICAgICAgIHN1bSArPSB0aGlzLmNvbnZlcnRUb0FzY2lpTWludXM0OChudW1iZXJzLmNoYXJBdChzaXplIC0gaSkpICogcG9zLS07XG4gICAgICAgICAgICBpZiAocG9zIDwgMikge1xuICAgICAgICAgICAgICAgIHBvcyA9IDk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gc3VtICUgMTEgPCAyID8gMCA6IDExIC0gKHN1bSAlIDExKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdCA9PT0gZGlnaXQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgY29udmVydFRvQXNjaWlNaW51czQ4KGlucHV0OiBzdHJpbmcpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gaW5wdXQuY2hhckNvZGVBdCgwKSAtIDQ4O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFbDoWxpZGEgbyBuw7ptZXJvIGRlIHRlbGVmb25lIGRhIGNoYXZlIFBJWC5cbiAgICAgKi9cbiAgICBzdGF0aWMgaXNWYWxpZFBob25lTnVtYmVyKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRvcnMge1xuICAgICAgICBsZXQgY2VsbFBob25lS2V5ID0gY29udHJvbC52YWx1ZSB8fCAnJztcbiAgICAgICAgY2VsbFBob25lS2V5ID0gY2VsbFBob25lS2V5LnJlcGxhY2UoL1tcXHMoKS1dL2csICcnKTtcbiAgICAgICAgY29uc3QgcmVnZXhOdW1iZXJUZWxlcGhvbmUgPSAvXlsxLTldW1xcZF17MSwyfVxcZHs4LDEwfSQvO1xuXG4gICAgICAgIGNvbnN0IGlzVmFsaWROdW1iZXJUZWxlcGhvbmUgPSByZWdleE51bWJlclRlbGVwaG9uZS50ZXN0KGNlbGxQaG9uZUtleSk7XG5cbiAgICAgICAgcmV0dXJuIGlzVmFsaWROdW1iZXJUZWxlcGhvbmUgPyBudWxsIDogeyBpbnZhbGlkUGhvbmVOdW1iZXI6IHRydWUgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBWYWxpZGEgbyBlbWFpbCBkYSBjaGF2ZSBQSVguXG4gICAgICovXG4gICAgc3RhdGljIGlzVmFsaWRFbWFpbChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0b3JzIHtcbiAgICAgICAgY29uc3QgZW1haWxLZXkgPSBjb250cm9sLnZhbHVlO1xuICAgICAgICBjb25zdCByZWdleFZhbGlkRW1haWwgPSAvXltcXHctXFwuXStAW1xcdy1dKyhcXC5bXFx3LV17Miw0fSl7MSwyfSQvO1xuXG4gICAgICAgIGNvbnN0IGlzVmFsaWRFbWFpbCA9IHJlZ2V4VmFsaWRFbWFpbC50ZXN0KGVtYWlsS2V5KTtcblxuICAgICAgICByZXR1cm4gaXNWYWxpZEVtYWlsID8gbnVsbCA6IHsgaW52YWxpZEVtYWlsOiB0cnVlIH07XG4gICAgfVxufVxuIl19
|