@lumeer/pivot 0.0.6 → 0.0.8
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/esm2022/lib/lmr-pivot-table.component.mjs +70 -10
- package/esm2022/lib/lmr-pivot-table.module.mjs +16 -4
- package/esm2022/lib/lmr-simple-pivot-table.component.mjs +6 -3
- package/esm2022/lib/pipes/cell-has-value.pipe.mjs +35 -0
- package/esm2022/lib/pipes/filter-visible-cells.pipe.mjs +35 -0
- package/esm2022/lib/pipes/is-cell-expandable.pipe.mjs +35 -0
- package/esm2022/lib/pipes/is-cell-expanded.pipe.mjs +37 -0
- package/esm2022/lib/pipes/is-cell-rows-expandable.pipe.mjs +35 -0
- package/esm2022/lib/util/lmr-pivot-state.mjs +153 -0
- package/esm2022/lib/util/lmr-pivot-table.mjs +1 -1
- package/esm2022/lib/util/pivot-table-converter.mjs +68 -46
- package/esm2022/lib/util/pivot-util.mjs +7 -4
- package/fesm2022/lumeer-pivot.mjs +437 -64
- package/fesm2022/lumeer-pivot.mjs.map +1 -1
- package/lib/lmr-pivot-table.component.d.ts +20 -4
- package/lib/lmr-pivot-table.module.d.ts +10 -6
- package/lib/lmr-simple-pivot-table.component.d.ts +8 -2
- package/lib/pipes/cell-has-value.pipe.d.ts +8 -0
- package/lib/pipes/filter-visible-cells.pipe.d.ts +9 -0
- package/lib/pipes/is-cell-expandable.pipe.d.ts +8 -0
- package/lib/pipes/is-cell-expanded.pipe.d.ts +9 -0
- package/lib/pipes/is-cell-rows-expandable.pipe.d.ts +8 -0
- package/lib/util/lmr-pivot-state.d.ts +14 -0
- package/lib/util/lmr-pivot-table.d.ts +7 -1
- package/lib/util/pivot-table-converter.d.ts +1 -0
- package/lumeer-pivot-0.0.8.tgz +0 -0
- package/package.json +1 -1
- package/esm2022/lib/pipes/pivot-table-value.pipe.mjs +0 -35
- package/lib/pipes/pivot-table-value.pipe.d.ts +0 -8
- package/lumeer-pivot-0.0.6.tgz +0 -0
|
@@ -24,10 +24,10 @@ export function pivotAttributesAreSame(a1, a2) {
|
|
|
24
24
|
return deepObjectsEquals(cleanQueryAttribute(a1), cleanQueryAttribute(a2));
|
|
25
25
|
}
|
|
26
26
|
export function isPivotConfigChanged(viewConfig, currentConfig) {
|
|
27
|
-
if (!!viewConfig
|
|
27
|
+
if (!!viewConfig?.mergeTables !== !!currentConfig?.mergeTables && (currentConfig?.stemsConfigs || []).length > 1) {
|
|
28
28
|
return true;
|
|
29
29
|
}
|
|
30
|
-
return pivotStemConfigsHasChanged(viewConfig
|
|
30
|
+
return pivotStemConfigsHasChanged(viewConfig?.stemsConfigs || [], currentConfig?.stemsConfigs || []);
|
|
31
31
|
}
|
|
32
32
|
function pivotStemConfigsHasChanged(s1, s2) {
|
|
33
33
|
if (s1.length !== s2.length) {
|
|
@@ -36,10 +36,13 @@ function pivotStemConfigsHasChanged(s1, s2) {
|
|
|
36
36
|
return s1.some((stemConfig, index) => pivotStemConfigHasChanged(stemConfig, s2[index]));
|
|
37
37
|
}
|
|
38
38
|
function pivotStemConfigHasChanged(s1, s2) {
|
|
39
|
-
return (!deepObjectsEquals(s1.rowAttributes
|
|
39
|
+
return (!deepObjectsEquals(cleanRowAttributes(s1.rowAttributes), cleanRowAttributes(s2.rowAttributes)) ||
|
|
40
40
|
!deepObjectsEquals(s1.columnAttributes || [], s2.columnAttributes || []) ||
|
|
41
41
|
!deepObjectsEquals(s1.valueAttributes || [], s2.valueAttributes || []));
|
|
42
42
|
}
|
|
43
|
+
function cleanRowAttributes(attrs) {
|
|
44
|
+
return (attrs || []).map(attr => ({ ...attr, showHeader: undefined }));
|
|
45
|
+
}
|
|
43
46
|
export function createDefaultPivotConfig(query) {
|
|
44
47
|
const stems = (query && query.stems) || [];
|
|
45
48
|
const stemsConfigs = stems.map(stem => createDefaultPivotStemConfig(stem));
|
|
@@ -69,4 +72,4 @@ export function contrastColor(color, returnCodes, opacity) {
|
|
|
69
72
|
return returnCodes ? returnCodes.light : hex2rgba(COLOR_LIGHT, opacity || 1);
|
|
70
73
|
}
|
|
71
74
|
}
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGl2b3QtdXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xtci1waXZvdC10YWJsZS9zcmMvbGliL3V0aWwvcGl2b3QtdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFFSCxPQUFPLEVBQUMsbUJBQW1CLEVBQW1CLE1BQU0sc0JBQXNCLENBQUM7QUFDM0UsT0FBTyxFQUFDLGlCQUFpQixFQUFFLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQW9DLHFCQUFxQixFQUEyQyxNQUFNLG9CQUFvQixDQUFDO0FBQ3RJLE9BQU8sRUFBQyxXQUFXLEVBQUUsYUFBYSxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFFakUsTUFBTSxVQUFVLHNCQUFzQixDQUFDLEVBQXFCLEVBQUUsRUFBcUI7SUFDakYsT0FBTyxpQkFBaUIsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUMsRUFBRSxtQkFBbUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzdFLENBQUM7QUFFRCxNQUFNLFVBQVUsb0JBQW9CLENBQUMsVUFBMEIsRUFBRSxhQUE2QjtJQUM1RixJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUUsV0FBVyxLQUFLLENBQUMsQ0FBQyxhQUFhLEVBQUUsV0FBVyxJQUFJLENBQUMsYUFBYSxFQUFFLFlBQVksSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQ2hILE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFFRCxPQUFPLDBCQUEwQixDQUFDLFVBQVUsRUFBRSxZQUFZLElBQUksRUFBRSxFQUFFLGFBQWEsRUFBRSxZQUFZLElBQUksRUFBRSxDQUFDLENBQUM7QUFDdkcsQ0FBQztBQUVELFNBQVMsMEJBQTBCLENBQUMsRUFBd0IsRUFBRSxFQUF3QjtJQUNwRixJQUFJLEVBQUUsQ0FBQyxNQUFNLEtBQUssRUFBRSxDQUFDLE1BQU0sRUFBRTtRQUMzQixPQUFPLElBQUksQ0FBQztLQUNiO0lBRUQsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMseUJBQXlCLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUYsQ0FBQztBQUVELFNBQVMseUJBQXlCLENBQUMsRUFBc0IsRUFBRSxFQUFzQjtJQUMvRSxPQUFPLENBQ0wsQ0FBQyxpQkFBaUIsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEVBQUUsa0JBQWtCLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzlGLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLGdCQUFnQixJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsZ0JBQWdCLElBQUksRUFBRSxDQUFDO1FBQ3hFLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLGVBQWUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLGVBQWUsSUFBSSxFQUFFLENBQUMsQ0FDdkUsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLGtCQUFrQixDQUFDLEtBQTZCO0lBQ3ZELE9BQU8sQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLEdBQUcsSUFBSSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUMsQ0FBQyxDQUFDLENBQUE7QUFDdEUsQ0FBQztBQUVELE1BQU0sVUFBVSx3QkFBd0IsQ0FBQyxLQUFZO0lBQ25ELE1BQU0sS0FBSyxHQUFHLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDM0MsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLDRCQUE0QixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDM0UsT0FBTyxFQUFDLE9BQU8sRUFBRSxxQkFBcUIsQ0FBQyxFQUFFLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFDLENBQUM7QUFDNUYsQ0FBQztBQUVELE1BQU0sVUFBVSw0QkFBNEIsQ0FBQyxJQUFnQjtJQUMzRCxPQUFPLEVBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUUsZ0JBQWdCLEVBQUUsRUFBRSxFQUFFLGVBQWUsRUFBRSxFQUFFLEVBQUMsQ0FBQztBQUM5RSxDQUFDO0FBRUQsTUFBTSxVQUFVLGtCQUFrQixDQUFDLE1BQXNCO0lBQ3ZELE9BQU8sQ0FBQyxNQUFNLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLHNCQUFzQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7QUFDN0YsQ0FBQztBQUVELE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxNQUEwQjtJQUMvRCxPQUFPLENBQ0wsQ0FBQyxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUM7UUFDckQsQ0FBQyxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQztRQUN4RCxDQUFDLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUN4RCxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxhQUFhLENBQUMsS0FBYSxFQUFFLFdBQTJDLEVBQUUsT0FBZ0I7SUFDeEcsSUFBSSxDQUFDLEtBQUssRUFBRTtRQUNWLE9BQU8sV0FBVyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUM7S0FDdkQ7SUFFRCxNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsRUFDdkUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQ1gsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLE1BQU0sRUFDckIsQ0FBQyxHQUFHLENBQUMsR0FBRyxRQUFRLENBQUM7SUFFbkIsTUFBTSxTQUFTLEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUU1RCxJQUFJLFNBQVMsR0FBRyxHQUFHLEVBQUU7UUFDbkIsT0FBTyxXQUFXLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDO0tBQy9FO1NBQU07UUFDTCxPQUFPLFdBQVcsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUM7S0FDOUU7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIEx1bWVlcjogTW9kZXJuIERhdGEgRGVmaW5pdGlvbiBhbmQgUHJvY2Vzc2luZyBQbGF0Zm9ybVxuICpcbiAqIENvcHlyaWdodCAoQykgc2luY2UgMjAxNyBMdW1lZXIuaW8sIHMuci5vLiBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAqL1xuXG5pbXBvcnQge2NsZWFuUXVlcnlBdHRyaWJ1dGUsIFF1ZXJ5LCBRdWVyeVN0ZW19IGZyb20gJ0BsdW1lZXIvZGF0YS1maWx0ZXJzJztcbmltcG9ydCB7ZGVlcE9iamVjdHNFcXVhbHMsIGhleDJyZ2JhfSBmcm9tICdAbHVtZWVyL3V0aWxzJztcbmltcG9ydCB7TG1yUGl2b3RBdHRyaWJ1dGUsIExtclBpdm90Q29uZmlnLCBMbXJQaXZvdENvbmZpZ1ZlcnNpb24sIExtclBpdm90Um93QXR0cmlidXRlLCBMbXJQaXZvdFN0ZW1Db25maWd9IGZyb20gJy4vbG1yLXBpdm90LWNvbmZpZyc7XG5pbXBvcnQge0NPTE9SX0xJR0hULCBDT0xPUl9QUklNQVJZfSBmcm9tICcuL2xtci1waXZvdC1jb25zdGFudHMnO1xuXG5leHBvcnQgZnVuY3Rpb24gcGl2b3RBdHRyaWJ1dGVzQXJlU2FtZShhMTogTG1yUGl2b3RBdHRyaWJ1dGUsIGEyOiBMbXJQaXZvdEF0dHJpYnV0ZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gZGVlcE9iamVjdHNFcXVhbHMoY2xlYW5RdWVyeUF0dHJpYnV0ZShhMSksIGNsZWFuUXVlcnlBdHRyaWJ1dGUoYTIpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUGl2b3RDb25maWdDaGFuZ2VkKHZpZXdDb25maWc6IExtclBpdm90Q29uZmlnLCBjdXJyZW50Q29uZmlnOiBMbXJQaXZvdENvbmZpZyk6IGJvb2xlYW4ge1xuICBpZiAoISF2aWV3Q29uZmlnPy5tZXJnZVRhYmxlcyAhPT0gISFjdXJyZW50Q29uZmlnPy5tZXJnZVRhYmxlcyAmJiAoY3VycmVudENvbmZpZz8uc3RlbXNDb25maWdzIHx8IFtdKS5sZW5ndGggPiAxKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZXR1cm4gcGl2b3RTdGVtQ29uZmlnc0hhc0NoYW5nZWQodmlld0NvbmZpZz8uc3RlbXNDb25maWdzIHx8IFtdLCBjdXJyZW50Q29uZmlnPy5zdGVtc0NvbmZpZ3MgfHwgW10pO1xufVxuXG5mdW5jdGlvbiBwaXZvdFN0ZW1Db25maWdzSGFzQ2hhbmdlZChzMTogTG1yUGl2b3RTdGVtQ29uZmlnW10sIHMyOiBMbXJQaXZvdFN0ZW1Db25maWdbXSk6IGJvb2xlYW4ge1xuICBpZiAoczEubGVuZ3RoICE9PSBzMi5sZW5ndGgpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBzMS5zb21lKChzdGVtQ29uZmlnLCBpbmRleCkgPT4gcGl2b3RTdGVtQ29uZmlnSGFzQ2hhbmdlZChzdGVtQ29uZmlnLCBzMltpbmRleF0pKTtcbn1cblxuZnVuY3Rpb24gcGl2b3RTdGVtQ29uZmlnSGFzQ2hhbmdlZChzMTogTG1yUGl2b3RTdGVtQ29uZmlnLCBzMjogTG1yUGl2b3RTdGVtQ29uZmlnKTogYm9vbGVhbiB7XG4gIHJldHVybiAoXG4gICAgIWRlZXBPYmplY3RzRXF1YWxzKGNsZWFuUm93QXR0cmlidXRlcyhzMS5yb3dBdHRyaWJ1dGVzKSwgY2xlYW5Sb3dBdHRyaWJ1dGVzKHMyLnJvd0F0dHJpYnV0ZXMpKSB8fFxuICAgICFkZWVwT2JqZWN0c0VxdWFscyhzMS5jb2x1bW5BdHRyaWJ1dGVzIHx8IFtdLCBzMi5jb2x1bW5BdHRyaWJ1dGVzIHx8IFtdKSB8fFxuICAgICFkZWVwT2JqZWN0c0VxdWFscyhzMS52YWx1ZUF0dHJpYnV0ZXMgfHwgW10sIHMyLnZhbHVlQXR0cmlidXRlcyB8fCBbXSlcbiAgKTtcbn1cblxuZnVuY3Rpb24gY2xlYW5Sb3dBdHRyaWJ1dGVzKGF0dHJzOiBMbXJQaXZvdFJvd0F0dHJpYnV0ZVtdKTogTG1yUGl2b3RSb3dBdHRyaWJ1dGVbXSB7XG4gIHJldHVybiAoYXR0cnMgfHwgW10pLm1hcChhdHRyID0+ICh7Li4uYXR0ciwgc2hvd0hlYWRlcjogdW5kZWZpbmVkfSkpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEZWZhdWx0UGl2b3RDb25maWcocXVlcnk6IFF1ZXJ5KTogTG1yUGl2b3RDb25maWcge1xuICBjb25zdCBzdGVtcyA9IChxdWVyeSAmJiBxdWVyeS5zdGVtcykgfHwgW107XG4gIGNvbnN0IHN0ZW1zQ29uZmlncyA9IHN0ZW1zLm1hcChzdGVtID0+IGNyZWF0ZURlZmF1bHRQaXZvdFN0ZW1Db25maWcoc3RlbSkpO1xuICByZXR1cm4ge3ZlcnNpb246IExtclBpdm90Q29uZmlnVmVyc2lvbi5WMSwgc3RlbXNDb25maWdzOiBzdGVtc0NvbmZpZ3MsIG1lcmdlVGFibGVzOiB0cnVlfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURlZmF1bHRQaXZvdFN0ZW1Db25maWcoc3RlbT86IFF1ZXJ5U3RlbSk6IExtclBpdm90U3RlbUNvbmZpZyB7XG4gIHJldHVybiB7c3RlbSwgcm93QXR0cmlidXRlczogW10sIGNvbHVtbkF0dHJpYnV0ZXM6IFtdLCB2YWx1ZUF0dHJpYnV0ZXM6IFtdfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBpdm90Q29uZmlnSXNFbXB0eShjb25maWc6IExtclBpdm90Q29uZmlnKTogYm9vbGVhbiB7XG4gIHJldHVybiAoY29uZmlnLnN0ZW1zQ29uZmlncyB8fCBbXSkuZXZlcnkoc3RlbUNvbmZpZyA9PiBwaXZvdFN0ZW1Db25maWdJc0VtcHR5KHN0ZW1Db25maWcpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBpdm90U3RlbUNvbmZpZ0lzRW1wdHkoY29uZmlnOiBMbXJQaXZvdFN0ZW1Db25maWcpOiBib29sZWFuIHtcbiAgcmV0dXJuIChcbiAgICAoKGNvbmZpZyAmJiBjb25maWcucm93QXR0cmlidXRlcykgfHwgW10pLmxlbmd0aCA9PT0gMCAmJlxuICAgICgoY29uZmlnICYmIGNvbmZpZy5jb2x1bW5BdHRyaWJ1dGVzKSB8fCBbXSkubGVuZ3RoID09PSAwICYmXG4gICAgKChjb25maWcgJiYgY29uZmlnLnZhbHVlQXR0cmlidXRlcykgfHwgW10pLmxlbmd0aCA9PT0gMFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29udHJhc3RDb2xvcihjb2xvcjogc3RyaW5nLCByZXR1cm5Db2Rlcz86IHtkYXJrOiBzdHJpbmc7IGxpZ2h0OiBzdHJpbmd9LCBvcGFjaXR5PzogbnVtYmVyKTogc3RyaW5nIHtcbiAgaWYgKCFjb2xvcikge1xuICAgIHJldHVybiByZXR1cm5Db2RlcyA/IHJldHVybkNvZGVzLmRhcmsgOiBDT0xPUl9QUklNQVJZO1xuICB9XG5cbiAgY29uc3QgZiA9IHBhcnNlSW50KGNvbG9yLmluZGV4T2YoJyMnKSA9PT0gMCA/IGNvbG9yLnNsaWNlKDEpIDogY29sb3IsIDE2KSxcbiAgICBSID0gZiA+PiAxNixcbiAgICBHID0gKGYgPj4gOCkgJiAweDAwZmYsXG4gICAgQiA9IGYgJiAweDAwMDBmZjtcblxuICBjb25zdCBsdW1pbmFuY2UgPSAoMC4yOTkgKiBSICsgMC41ODcgKiBHICsgMC4xMTQgKiBCKSAvIDI1NTtcblxuICBpZiAobHVtaW5hbmNlID4gMC41KSB7XG4gICAgcmV0dXJuIHJldHVybkNvZGVzID8gcmV0dXJuQ29kZXMuZGFyayA6IGhleDJyZ2JhKENPTE9SX1BSSU1BUlksIG9wYWNpdHkgfHwgMSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJldHVybkNvZGVzID8gcmV0dXJuQ29kZXMubGlnaHQgOiBoZXgycmdiYShDT0xPUl9MSUdIVCwgb3BhY2l0eSB8fCAxKTtcbiAgfVxufVxuIl19
|