@apipass/schemas 0.2.1-test.2 → 0.2.1
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/apipass-schemas.d.ts +5 -5
- package/assets/css/buttons.scss +118 -112
- package/assets/css/colors.scss +34 -34
- package/assets/css/fonts.scss +24 -24
- package/assets/css/inputs.scss +197 -197
- package/assets/css/pt_sans.scss +143 -143
- package/assets/css/spacing.scss +28 -28
- package/assets/css/texts.scss +18 -18
- package/base-schema.component.d.ts +12 -11
- package/bundles/apipass-schemas.umd.js +1945 -1973
- package/bundles/apipass-schemas.umd.js.map +1 -1
- package/bundles/apipass-schemas.umd.min.js +2 -2
- package/bundles/apipass-schemas.umd.min.js.map +1 -1
- package/esm2015/apipass-schemas.js +4 -4
- package/esm2015/base-schema.component.js +38 -32
- package/esm2015/public-api.js +17 -17
- package/esm2015/schema-custom-attributes/schema-custom-attributes.js +177 -177
- package/esm2015/schema-fields.service.js +77 -77
- package/esm2015/schema-form/schema-array/array-session/array-session.js +159 -158
- package/esm2015/schema-form/schema-array/schema-array.js +195 -196
- package/esm2015/schema-form/schema-form.js +72 -104
- package/esm2015/schema-form/schema-input/field-render/field-render.js +72 -72
- package/esm2015/schema-form/schema-input/input-render/boolean-input/boolean-input.component.js +50 -45
- package/esm2015/schema-form/schema-input/input-render/input-render.js +128 -124
- package/esm2015/schema-form/schema-input/input-render/number-input/number-input.component.js +48 -43
- package/esm2015/schema-form/schema-input/schema-input.js +98 -100
- package/esm2015/schema-form/schema-object/schema-object.js +94 -95
- package/esm2015/schema-form-render.js +96 -97
- package/esm2015/schema-form-render.module.js +121 -121
- package/esm2015/schema-validation-field.js +15 -15
- package/esm2015/struct.utils.js +9 -9
- package/esm2015/type-script-compile.js +77 -77
- package/fesm2015/apipass-schemas.js +1380 -1399
- package/fesm2015/apipass-schemas.js.map +1 -1
- package/package.json +2 -1
- package/public-api.d.ts +16 -16
- package/schema-custom-attributes/schema-custom-attributes.d.ts +15 -15
- package/schema-fields.service.d.ts +12 -12
- package/schema-form/schema-array/array-session/array-session.d.ts +17 -17
- package/schema-form/schema-array/schema-array.d.ts +18 -18
- package/schema-form/schema-form.d.ts +17 -17
- package/schema-form/schema-input/field-render/field-render.d.ts +15 -15
- package/schema-form/schema-input/input-render/boolean-input/boolean-input.component.d.ts +15 -13
- package/schema-form/schema-input/input-render/input-render.d.ts +20 -19
- package/schema-form/schema-input/input-render/number-input/number-input.component.d.ts +15 -13
- package/schema-form/schema-input/schema-input.d.ts +14 -14
- package/schema-form/schema-object/schema-object.d.ts +20 -20
- package/schema-form-render.d.ts +17 -17
- package/schema-form-render.module.d.ts +22 -22
- package/schema-validation-field.d.ts +17 -17
- package/struct.utils.d.ts +1 -1
- package/type-script-compile.d.ts +10 -10
|
@@ -1,77 +1,77 @@
|
|
|
1
|
-
import { FormControl, Validators } from '@angular/forms';
|
|
2
|
-
export class TypeScriptCompile {
|
|
3
|
-
static addItemToFormProperties(formProperties, item, key) {
|
|
4
|
-
if (item.minLength && item.minLength > 0) {
|
|
5
|
-
formProperties[key] = new FormControl([null, [Validators.required]]);
|
|
6
|
-
}
|
|
7
|
-
else {
|
|
8
|
-
formProperties[key] = new FormControl([null]);
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
static compileProperties(input) {
|
|
12
|
-
const compiledProperties = [];
|
|
13
|
-
const formProperties = {};
|
|
14
|
-
let inputData = {};
|
|
15
|
-
const inputToCompile = JSON.parse(JSON.stringify(input));
|
|
16
|
-
if (inputToCompile.properties) {
|
|
17
|
-
if (inputToCompile.type === 'array') {
|
|
18
|
-
inputData = [];
|
|
19
|
-
}
|
|
20
|
-
if (inputToCompile.type === 'object') {
|
|
21
|
-
inputData = {};
|
|
22
|
-
}
|
|
23
|
-
inputToCompile.id = 'inputData';
|
|
24
|
-
this.proccessProperties(inputToCompile, formProperties, 'inputData');
|
|
25
|
-
compiledProperties.push(inputToCompile);
|
|
26
|
-
}
|
|
27
|
-
else if (inputToCompile.type === 'array') {
|
|
28
|
-
inputToCompile.id = 'inputData';
|
|
29
|
-
inputData = [];
|
|
30
|
-
TypeScriptCompile.addItemToFormProperties(formProperties, inputToCompile, 'inputData');
|
|
31
|
-
compiledProperties.push(inputToCompile);
|
|
32
|
-
}
|
|
33
|
-
else if (!inputToCompile.type) {
|
|
34
|
-
for (let index = 0; index < Object.keys(inputToCompile).length; index++) {
|
|
35
|
-
const key = Object.keys(inputToCompile)[index];
|
|
36
|
-
const item = inputToCompile[key];
|
|
37
|
-
item.id = key;
|
|
38
|
-
if (item.type === 'array') {
|
|
39
|
-
inputData[item.id] = [];
|
|
40
|
-
}
|
|
41
|
-
if (item.type === 'object') {
|
|
42
|
-
inputData[item.id] = {};
|
|
43
|
-
}
|
|
44
|
-
this.proccessProperties(item, formProperties, key);
|
|
45
|
-
compiledProperties.push(item);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
compiledProperties.sort((a, b) => a.propertyOrder - b.propertyOrder);
|
|
49
|
-
return { compiledProperties, formProperties, inputData };
|
|
50
|
-
}
|
|
51
|
-
static proccessProperties(item, formProperties, key) {
|
|
52
|
-
if (this.hasProperties(item)) {
|
|
53
|
-
const arFieldsChild = [];
|
|
54
|
-
for (let indexChild = 0; indexChild < Object.keys(item.properties).length; indexChild++) {
|
|
55
|
-
const keyChild = Object.keys(item.properties)[indexChild];
|
|
56
|
-
const itemChild = item.properties[keyChild];
|
|
57
|
-
itemChild.id = keyChild;
|
|
58
|
-
if (this.hasProperties(itemChild)) {
|
|
59
|
-
this.proccessProperties(itemChild, formProperties, keyChild);
|
|
60
|
-
arFieldsChild.push(itemChild);
|
|
61
|
-
}
|
|
62
|
-
else {
|
|
63
|
-
TypeScriptCompile.addItemToFormProperties(formProperties, itemChild, keyChild);
|
|
64
|
-
arFieldsChild.push(itemChild);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
item.properties = arFieldsChild;
|
|
68
|
-
}
|
|
69
|
-
else {
|
|
70
|
-
TypeScriptCompile.addItemToFormProperties(formProperties, item, key);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
static hasProperties(item) {
|
|
74
|
-
return item.type === 'object' || (item.type === 'array' && item.properties);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { FormControl, Validators } from '@angular/forms';
|
|
2
|
+
export class TypeScriptCompile {
|
|
3
|
+
static addItemToFormProperties(formProperties, item, key) {
|
|
4
|
+
if (item.minLength && item.minLength > 0) {
|
|
5
|
+
formProperties[key] = new FormControl([null, [Validators.required]]);
|
|
6
|
+
}
|
|
7
|
+
else {
|
|
8
|
+
formProperties[key] = new FormControl([null]);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
static compileProperties(input) {
|
|
12
|
+
const compiledProperties = [];
|
|
13
|
+
const formProperties = {};
|
|
14
|
+
let inputData = {};
|
|
15
|
+
const inputToCompile = JSON.parse(JSON.stringify(input));
|
|
16
|
+
if (inputToCompile.properties) {
|
|
17
|
+
if (inputToCompile.type === 'array') {
|
|
18
|
+
inputData = [];
|
|
19
|
+
}
|
|
20
|
+
if (inputToCompile.type === 'object') {
|
|
21
|
+
inputData = {};
|
|
22
|
+
}
|
|
23
|
+
inputToCompile.id = 'inputData';
|
|
24
|
+
this.proccessProperties(inputToCompile, formProperties, 'inputData');
|
|
25
|
+
compiledProperties.push(inputToCompile);
|
|
26
|
+
}
|
|
27
|
+
else if (inputToCompile.type === 'array') {
|
|
28
|
+
inputToCompile.id = 'inputData';
|
|
29
|
+
inputData = [];
|
|
30
|
+
TypeScriptCompile.addItemToFormProperties(formProperties, inputToCompile, 'inputData');
|
|
31
|
+
compiledProperties.push(inputToCompile);
|
|
32
|
+
}
|
|
33
|
+
else if (!inputToCompile.type) {
|
|
34
|
+
for (let index = 0; index < Object.keys(inputToCompile).length; index++) {
|
|
35
|
+
const key = Object.keys(inputToCompile)[index];
|
|
36
|
+
const item = inputToCompile[key];
|
|
37
|
+
item.id = key;
|
|
38
|
+
if (item.type === 'array') {
|
|
39
|
+
inputData[item.id] = [];
|
|
40
|
+
}
|
|
41
|
+
if (item.type === 'object') {
|
|
42
|
+
inputData[item.id] = {};
|
|
43
|
+
}
|
|
44
|
+
this.proccessProperties(item, formProperties, key);
|
|
45
|
+
compiledProperties.push(item);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
compiledProperties.sort((a, b) => a.propertyOrder - b.propertyOrder);
|
|
49
|
+
return { compiledProperties, formProperties, inputData };
|
|
50
|
+
}
|
|
51
|
+
static proccessProperties(item, formProperties, key) {
|
|
52
|
+
if (this.hasProperties(item)) {
|
|
53
|
+
const arFieldsChild = [];
|
|
54
|
+
for (let indexChild = 0; indexChild < Object.keys(item.properties).length; indexChild++) {
|
|
55
|
+
const keyChild = Object.keys(item.properties)[indexChild];
|
|
56
|
+
const itemChild = item.properties[keyChild];
|
|
57
|
+
itemChild.id = keyChild;
|
|
58
|
+
if (this.hasProperties(itemChild)) {
|
|
59
|
+
this.proccessProperties(itemChild, formProperties, keyChild);
|
|
60
|
+
arFieldsChild.push(itemChild);
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
TypeScriptCompile.addItemToFormProperties(formProperties, itemChild, keyChild);
|
|
64
|
+
arFieldsChild.push(itemChild);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
item.properties = arFieldsChild;
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
TypeScriptCompile.addItemToFormProperties(formProperties, item, key);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
static hasProperties(item) {
|
|
74
|
+
return item.type === 'object' || (item.type === 'array' && item.properties);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS1zY3JpcHQtY29tcGlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3NjaGVtYXMvc3JjL3R5cGUtc2NyaXB0LWNvbXBpbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFdBQVcsRUFBRSxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2RCxNQUFNLE9BQU8saUJBQWlCO0lBRXBCLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxjQUFtQixFQUFFLElBQVMsRUFBRSxHQUFXO1FBQ2hGLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsRUFBRTtZQUN4QyxjQUFjLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxXQUFXLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3RFO2FBQU07WUFDTCxjQUFjLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQy9DO0lBQ0gsQ0FBQztJQUVNLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxLQUFVO1FBS3hDLE1BQU0sa0JBQWtCLEdBQUcsRUFBRSxDQUFDO1FBQzlCLE1BQU0sY0FBYyxHQUFHLEVBQUUsQ0FBQztRQUMxQixJQUFJLFNBQVMsR0FBUSxFQUFFLENBQUM7UUFDeEIsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDekQsSUFBSSxjQUFjLENBQUMsVUFBVSxFQUFFO1lBQzdCLElBQUksY0FBYyxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUU7Z0JBQ25DLFNBQVMsR0FBRyxFQUFFLENBQUM7YUFDaEI7WUFDRCxJQUFJLGNBQWMsQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFO2dCQUNwQyxT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LFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztvQkFDL0UsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztpQkFDL0I7YUFDRjtZQUNELElBQUksQ0FBQyxVQUFVLEdBQUcsYUFBYSxDQUFDO1NBQ2pDO2FBQU07WUFDTCxpQkFBaUIsQ0FBQyx1QkFBdUIsQ0FBQyxjQUFjLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ3RFO0lBQ0gsQ0FBQztJQUVPLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBUztRQUNwQyxPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzlFLENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Rm9ybUNvbnRyb2wsIFZhbGlkYXRvcnN9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuZXhwb3J0IGNsYXNzIFR5cGVTY3JpcHRDb21waWxlIHtcblxuICBwcml2YXRlIHN0YXRpYyBhZGRJdGVtVG9Gb3JtUHJvcGVydGllcyhmb3JtUHJvcGVydGllczogYW55LCBpdGVtOiBhbnksIGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKGl0ZW0ubWluTGVuZ3RoICYmIGl0ZW0ubWluTGVuZ3RoID4gMCkge1xuICAgICAgZm9ybVByb3BlcnRpZXNba2V5XSA9IG5ldyBGb3JtQ29udHJvbChbbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvcm1Qcm9wZXJ0aWVzW2tleV0gPSBuZXcgRm9ybUNvbnRyb2woW251bGxdKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGNvbXBpbGVQcm9wZXJ0aWVzKGlucHV0OiBhbnkpOiB7XG4gICAgY29tcGlsZWRQcm9wZXJ0aWVzOiBhbnksXG4gICAgZm9ybVByb3BlcnRpZXM6IGFueSxcbiAgICBpbnB1dERhdGE6IGFueVxuICB9IHtcbiAgICBjb25zdCBjb21waWxlZFByb3BlcnRpZXMgPSBbXTtcbiAgICBjb25zdCBmb3JtUHJvcGVydGllcyA9IHt9O1xuICAgIGxldCBpbnB1dERhdGE6IGFueSA9IHt9O1xuICAgIGNvbnN0IGlucHV0VG9Db21waWxlID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShpbnB1dCkpO1xuICAgIGlmIChpbnB1dFRvQ29tcGlsZS5wcm9wZXJ0aWVzKSB7XG4gICAgICBpZiAoaW5wdXRUb0NvbXBpbGUudHlwZSA9PT0gJ2FycmF5Jykge1xuICAgICAgICBpbnB1dERhdGEgPSBbXTtcbiAgICAgIH1cbiAgICAgIGlmIChpbnB1dFRvQ29tcGlsZS50eXBlID09PSAnb2JqZWN0Jykge1xuICAgICAgICBpbnB1dERhdGEgPSB7fTtcbiAgICAgIH1cbiAgICAgIGlucHV0VG9Db21waWxlLmlkID0gJ2lucHV0RGF0YSc7XG4gICAgICB0aGlzLnByb2NjZXNzUHJvcGVydGllcyhpbnB1dFRvQ29tcGlsZSwgZm9ybVByb3BlcnRpZXMsICdpbnB1dERhdGEnKTtcbiAgICAgIGNvbXBpbGVkUHJvcGVydGllcy5wdXNoKGlucHV0VG9Db21waWxlKTtcbiAgICB9IGVsc2UgaWYgKGlucHV0VG9Db21waWxlLnR5cGUgPT09ICdhcnJheScpIHtcbiAgICAgIGlucHV0VG9Db21waWxlLmlkID0gJ2lucHV0RGF0YSc7XG4gICAgICBpbnB1dERhdGEgPSBbXTtcbiAgICAgIFR5cGVTY3JpcHRDb21waWxlLmFkZEl0ZW1Ub0Zvcm1Qcm9wZXJ0aWVzKGZvcm1Qcm9wZXJ0aWVzLCBpbnB1dFRvQ29tcGlsZSwgJ2lucHV0RGF0YScpO1xuICAgICAgY29tcGlsZWRQcm9wZXJ0aWVzLnB1c2goaW5wdXRUb0NvbXBpbGUpO1xuICAgIH0gZWxzZSBpZiAoIWlucHV0VG9Db21waWxlLnR5cGUpIHtcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBPYmplY3Qua2V5cyhpbnB1dFRvQ29tcGlsZSkubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgIGNvbnN0IGtleSA9IE9iamVjdC5rZXlzKGlucHV0VG9Db21waWxlKVtpbmRleF07XG4gICAgICAgIGNvbnN0IGl0ZW0gPSBpbnB1dFRvQ29tcGlsZVtrZXldO1xuICAgICAgICBpdGVtLmlkID0ga2V5O1xuXG4gICAgICAgIGlmIChpdGVtLnR5cGUgPT09ICdhcnJheScpIHtcbiAgICAgICAgICBpbnB1dERhdGFbaXRlbS5pZF0gPSBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpdGVtLnR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgaW5wdXREYXRhW2l0ZW0uaWRdID0ge307XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wcm9jY2Vzc1Byb3BlcnRpZXMoaXRlbSwgZm9ybVByb3BlcnRpZXMsIGtleSk7XG4gICAgICAgIGNvbXBpbGVkUHJvcGVydGllcy5wdXNoKGl0ZW0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbXBpbGVkUHJvcGVydGllcy5zb3J0KChhLCBiKSA9PiBhLnByb3BlcnR5T3JkZXIgLSBiLnByb3BlcnR5T3JkZXIpO1xuICAgIHJldHVybiB7Y29tcGlsZWRQcm9wZXJ0aWVzLCBmb3JtUHJvcGVydGllcywgaW5wdXREYXRhfTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHByb2NjZXNzUHJvcGVydGllcyhpdGVtOiBhbnksIGZvcm1Qcm9wZXJ0aWVzOiB7fSwga2V5OiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYXNQcm9wZXJ0aWVzKGl0ZW0pKSB7XG4gICAgICBjb25zdCBhckZpZWxkc0NoaWxkID0gW107XG4gICAgICBmb3IgKGxldCBpbmRleENoaWxkID0gMDsgaW5kZXhDaGlsZCA8IE9iamVjdC5rZXlzKGl0ZW0ucHJvcGVydGllcykubGVuZ3RoOyBpbmRleENoaWxkKyspIHtcbiAgICAgICAgY29uc3Qga2V5Q2hpbGQgPSBPYmplY3Qua2V5cyhpdGVtLnByb3BlcnRpZXMpW2luZGV4Q2hpbGRdO1xuICAgICAgICBjb25zdCBpdGVtQ2hpbGQgPSBpdGVtLnByb3BlcnRpZXNba2V5Q2hpbGRdO1xuICAgICAgICBpdGVtQ2hpbGQuaWQgPSBrZXlDaGlsZDtcbiAgICAgICAgaWYgKHRoaXMuaGFzUHJvcGVydGllcyhpdGVtQ2hpbGQpKSB7XG4gICAgICAgICAgdGhpcy5wcm9jY2Vzc1Byb3BlcnRpZXMoaXRlbUNoaWxkLCBmb3JtUHJvcGVydGllcywga2V5Q2hpbGQpO1xuICAgICAgICAgIGFyRmllbGRzQ2hpbGQucHVzaChpdGVtQ2hpbGQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIFR5cGVTY3JpcHRDb21waWxlLmFkZEl0ZW1Ub0Zvcm1Qcm9wZXJ0aWVzKGZvcm1Qcm9wZXJ0aWVzLCBpdGVtQ2hpbGQsIGtleUNoaWxkKTtcbiAgICAgICAgICBhckZpZWxkc0NoaWxkLnB1c2goaXRlbUNoaWxkKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaXRlbS5wcm9wZXJ0aWVzID0gYXJGaWVsZHNDaGlsZDtcbiAgICB9IGVsc2Uge1xuICAgICAgVHlwZVNjcmlwdENvbXBpbGUuYWRkSXRlbVRvRm9ybVByb3BlcnRpZXMoZm9ybVByb3BlcnRpZXMsIGl0ZW0sIGtleSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgaGFzUHJvcGVydGllcyhpdGVtOiBhbnkpOiBhbnkge1xuICAgIHJldHVybiBpdGVtLnR5cGUgPT09ICdvYmplY3QnIHx8IChpdGVtLnR5cGUgPT09ICdhcnJheScgJiYgaXRlbS5wcm9wZXJ0aWVzKTtcbiAgfVxuXG59XG4iXX0=
|