keevo-components 1.8.31 → 1.8.33

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29uZmlnLmNvbHVtbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9hcGkvY29tcG9uZW50cy90YWJsZS90YWJsZS5jb25maWcuY29sdW1uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRmllbGREcm9wRG93bkNvbnRyb2wgZnJvbSBcIi4vdGFibGUtZHJvcGRvd24tY29udHJvbFwiO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBUYWJsZUNvbmZpZ0NvbHVtbiB7XHJcbiAgcG9zaXRpb24/OiBudW1iZXI7XHJcbiAgZmllbGQ6IHN0cmluZztcclxuICBoZWFkZXI6IHN0cmluZztcclxuICBoZWFkZXJUb29sdGlwPzogc3RyaW5nO1xyXG4gIGZpZWxkVHlwZT86IHN0cmluZztcclxuICBvbmx5UmVhZEZpZWxkPzogYm9vbGVhbjtcclxuICB3aWR0aD86IHN0cmluZztcclxuICBwaXBlPzogJ2RhdGUnIHwgJ2RlY2ltYWwnIHwgJ2NwZmNucGonIHwgJ3RlbGVmb25lJyB8ICdjb2RpZ29maXBlJyB8ICdtb25leScgfCAncGVyY2VudGFnZSc7XHJcbiAgc29ydGFibGU6IGJvb2xlYW47XHJcbiAgZ3JvdXBlZD86IGJvb2xlYW47XHJcbiAgY2VudHJhbGl6ZT86IGJvb2xlYW47XHJcbiAgZXhwaXJlZERhdGU/OiBib29sZWFuO1xyXG4gIGljb24/OiBzdHJpbmc7XHJcbiAgaWNvbkZpZWxkPzogYm9vbGVhbjtcclxuICBpbmRJY29uTWF0ZXJpYWw/OiBib29sZWFuO1xyXG4gIGNoZWNrZWQ/OiBib29sZWFuO1xyXG4gIGhpZGVDb2x1bW4/OiBib29sZWFuO1xyXG4gIGZpeGVkQ29sdW1uPzogYm9vbGVhbjtcclxuICB0ZW1wbGF0ZT86IGFueTtcclxuICBhbGlnbj86IHN0cmluZztcclxuICBzdWJ0aXRsZT86IHN0cmluZztcclxuICBib29sZWFuPzogYm9vbGVhbjtcclxufVxyXG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29uZmlnLmNvbHVtbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9hcGkvY29tcG9uZW50cy90YWJsZS90YWJsZS5jb25maWcuY29sdW1uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRmllbGREcm9wRG93bkNvbnRyb2wgZnJvbSBcIi4vdGFibGUtZHJvcGRvd24tY29udHJvbFwiO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBUYWJsZUNvbmZpZ0NvbHVtbiB7XHJcbiAgcG9zaXRpb24/OiBudW1iZXI7XHJcbiAgZmllbGQ6IHN0cmluZztcclxuICBoZWFkZXI6IHN0cmluZztcclxuICBoZWFkZXJUb29sdGlwPzogc3RyaW5nO1xyXG4gIGZpZWxkVHlwZT86IHN0cmluZztcclxuICBvbmx5UmVhZEZpZWxkPzogYm9vbGVhbjtcclxuICB3aWR0aD86IHN0cmluZztcclxuICBwaXBlPzogJ2RhdGUnIHwgJ2RlY2ltYWwnIHwgJ2NwZmNucGonIHwgJ3RlbGVmb25lJyB8ICdjb2RpZ29maXBlJyB8ICdtb25leScgfCAncGVyY2VudGFnZSc7XHJcbiAgc29ydGFibGU6IGJvb2xlYW47XHJcbiAgZ3JvdXBlZD86IGJvb2xlYW47XHJcbiAgY2VudHJhbGl6ZT86IGJvb2xlYW47XHJcbiAgZXhwaXJlZERhdGU/OiBib29sZWFuO1xyXG4gIGljb24/OiBzdHJpbmc7XHJcbiAgaWNvbkZpZWxkPzogYm9vbGVhbjtcclxuICBpbmRJY29uTWF0ZXJpYWw/OiBib29sZWFuO1xyXG4gIGNoZWNrZWQ/OiBib29sZWFuO1xyXG4gIGhpZGVDb2x1bW4/OiBib29sZWFuO1xyXG4gIGZpeGVkQ29sdW1uPzogYm9vbGVhbjtcclxuICB0ZW1wbGF0ZT86IGFueTtcclxuICBhbGlnbj86IHN0cmluZztcclxuICBzdWJ0aXRsZT86IHN0cmluZztcclxuICBib29sZWFuPzogYm9vbGVhbjtcclxuICB0ZW1wbGF0ZU9ubHk/OiAncGFpJyB8ICdmaWxobydcclxufVxyXG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2FwaS9jb21wb25lbnRzL3RhYmxlL3RhYmxlLmNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWVudUl0ZW0gfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IFRhYmxlQ29uZmlnQ29sdW1uIH0gZnJvbSAnLi90YWJsZS5jb25maWcuY29sdW1uJztcclxuaW1wb3J0IHsgS3ZNZW51SXRlbSB9IGZyb20gJy4va3YtbWVudWl0ZW0nO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBUYWJsZUNvbmZpZyB7XHJcbiAgYWN0aW9uczogS3ZNZW51SXRlbVtdO1xyXG4gIGFjdGlvbnNMb3RlPzogS3ZNZW51SXRlbVtdO1xyXG4gIGFjdGlvbnNQYWk/OiBLdk1lbnVJdGVtW107XHJcbiAgY29sdW1uczogVGFibGVDb25maWdDb2x1bW5bXTtcclxuICBkYXRhS2V5Pzogc3RyaW5nO1xyXG4gIHJvd3M/OiBhbnk7XHJcbiAgdGl0bGU/OiBzdHJpbmc7XHJcbiAgc3VidGl0bGU/OiBzdHJpbmc7XHJcbiAgbGF6eTogYm9vbGVhbjtcclxuICBmaWVsZEdyb3VwPzogc3RyaW5nO1xyXG4gIGVuYWJsZUNhdGlvbj86IGJvb2xlYW47XHJcbiAgZW5hYmxlRmlsdGVyPzogYm9vbGVhbjtcclxuICBlbmFibGVTZWxlY3Q/OiBib29sZWFuO1xyXG4gIGVuYWJsZVRvZ2dsZU5vZGVzPzogYm9vbGVhbjtcclxuICB0ZW1wbGF0ZU9ubHk/OiAncGFpJyB8ICdmaWxobydcclxuICAvLyB2aXNpYmxlQ29udHJvbENoZWNrYm94RnVuY3Rpb24/OiAocm93RGF0YTogYW55KSA9PiBib29sZWFuOyAvLyBBIGZ1bsOnw6NvIHF1ZSBjb250cm9sYSBhIGVkacOnw6NvXHJcbiAgZGlzYWJsZUNvbnRyb2xDaGVja2JveEZ1bmN0aW9uPzogKHJvd0RhdGE6IGFueSwgcm93Tm9kZT86IGFueSkgPT4gYm9vbGVhbjsgLy8gQSBmdW7Dp8OjbyBxdWUgY29udHJvbGEgYSBlZGnDp8Ojb1xyXG59XHJcbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2FwaS9jb21wb25lbnRzL3RhYmxlL3RhYmxlLmNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWVudUl0ZW0gfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IFRhYmxlQ29uZmlnQ29sdW1uIH0gZnJvbSAnLi90YWJsZS5jb25maWcuY29sdW1uJztcclxuaW1wb3J0IHsgS3ZNZW51SXRlbSB9IGZyb20gJy4va3YtbWVudWl0ZW0nO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBUYWJsZUNvbmZpZyB7XHJcbiAgYWN0aW9uczogS3ZNZW51SXRlbVtdO1xyXG4gIGFjdGlvbnNMb3RlPzogS3ZNZW51SXRlbVtdO1xyXG4gIGFjdGlvbnNQYWk/OiBLdk1lbnVJdGVtW107XHJcbiAgY29sdW1uczogVGFibGVDb25maWdDb2x1bW5bXTtcclxuICBkYXRhS2V5Pzogc3RyaW5nO1xyXG4gIHJvd3M/OiBhbnk7XHJcbiAgdGl0bGU/OiBzdHJpbmc7XHJcbiAgc3VidGl0bGU/OiBzdHJpbmc7XHJcbiAgbGF6eTogYm9vbGVhbjtcclxuICBmaWVsZEdyb3VwPzogc3RyaW5nO1xyXG4gIGVuYWJsZUNhdGlvbj86IGJvb2xlYW47XHJcbiAgZW5hYmxlRmlsdGVyPzogYm9vbGVhbjtcclxuICBlbmFibGVTZWxlY3Q/OiBib29sZWFuO1xyXG4gIGVuYWJsZVRvZ2dsZU5vZGVzPzogYm9vbGVhbjtcclxuICAvLyB2aXNpYmxlQ29udHJvbENoZWNrYm94RnVuY3Rpb24/OiAocm93RGF0YTogYW55KSA9PiBib29sZWFuOyAvLyBBIGZ1bsOnw6NvIHF1ZSBjb250cm9sYSBhIGVkacOnw6NvXHJcbiAgZGlzYWJsZUNvbnRyb2xDaGVja2JveEZ1bmN0aW9uPzogKHJvd0RhdGE6IGFueSwgcm93Tm9kZT86IGFueSkgPT4gYm9vbGVhbjsgLy8gQSBmdW7Dp8OjbyBxdWUgY29udHJvbGEgYSBlZGnDp8Ojb1xyXG59XHJcbiJdfQ==
@@ -60,5 +60,13 @@ export class KeevoValidators {
60
60
  return null;
61
61
  };
62
62
  }
63
+ static nome() {
64
+ return (c) => {
65
+ let palavras = c.value.trim().split(' ');
66
+ if (palavras?.length > 1)
67
+ return { nome: true, erroMessage: 'Digite seu nome completo.' };
68
+ return null;
69
+ };
70
+ }
63
71
  }
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2Vldm8tdmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9hcGkvaGVscGVycy9rZWV2by12YWxpZGF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBNkQsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkcsTUFBTSxPQUFPLGVBQWU7SUFDMUIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxXQUFvQjtRQUNsQyxPQUFPLENBQUMsT0FBd0IsRUFBMkIsRUFBRTtZQUMzRCxJQUFJLFVBQVUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO2dCQUM5QixPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxDQUFDO1lBRS9GLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxlQUFlLENBQUMsZ0JBQXdCLEVBQUUsV0FBb0I7UUFDbkUsT0FBTyxDQUFDLFVBQTJCLEVBQTJCLEVBQUU7WUFDOUQsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLE1BQW1CLENBQUM7WUFFOUMsSUFBSSxDQUFDLE1BQU07Z0JBQUUsT0FBTyxJQUFJLENBQUM7WUFFekIsTUFBTSxZQUFZLEdBQW9CLE1BQU0sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQW9CLENBQUM7WUFFdEYsTUFBTSxTQUFTLEdBQVMsWUFBWSxDQUFDLEtBQUssQ0FBQztZQUMzQyxNQUFNLE9BQU8sR0FBUyxVQUFVLENBQUMsS0FBSyxDQUFDO1lBRXZDLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQzFCLE9BQU8sSUFBSSxDQUFDO2FBQ2I7WUFDRCxJQUFJLFNBQVMsR0FBRyxPQUFPLEVBQUU7Z0JBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsQ0FBQzthQUN4RDtZQUNELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBVyxFQUFFLFdBQW9CO1FBQzFDLE9BQU8sQ0FBQyxPQUF3QixFQUEyQixFQUFFO1lBQzNELElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUM7Z0JBQzlCLE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxvQ0FBb0MsR0FBRyxHQUFHLEVBQUUsRUFBRSxDQUFDO1lBRWpILE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBVyxFQUFFLFdBQW9CO1FBQzFDLE9BQU8sQ0FBQyxPQUF3QixFQUEyQixFQUFFO1lBQzNELElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUM7Z0JBQzlCLE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxvQ0FBb0MsR0FBRyxHQUFHLEVBQUUsRUFBRSxDQUFDO1lBRWpILE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsV0FBb0I7UUFDL0IsT0FBTyxDQUFDLE9BQXdCLEVBQTJCLEVBQUU7WUFDM0QsSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUM3QixPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsOEJBQThCLEVBQUUsRUFBRSxDQUFDO2FBQ3RHO1lBQ0QsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxHQUFXO1FBQy9CLE9BQU8sQ0FBQyxDQUFrQixFQUEyQixFQUFFO1lBQ3JELElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsR0FBRztnQkFDdEIsT0FBTyxJQUFJLENBQUM7WUFFZCxPQUFPLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsMEJBQTBCLEVBQUUsQ0FBQztRQUMzRSxDQUFDLENBQUE7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFXLEVBQUUsV0FBb0I7UUFDaEQsT0FBTyxDQUFDLE9BQXdCLEVBQTJCLEVBQUU7WUFDM0QsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQztnQkFDcEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLDhDQUE4QyxFQUFFLEVBQUUsQ0FBQztZQUMzSCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQTtJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmV4cG9ydCBjbGFzcyBLZWV2b1ZhbGlkYXRvcnMge1xyXG4gIHN0YXRpYyByZXF1aXJlZChlcnJvTWVzc2FnZT86IHN0cmluZyk6IFZhbGlkYXRvckZuIHtcclxuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xyXG4gICAgICBpZiAoVmFsaWRhdG9ycy5yZXF1aXJlZChjb250cm9sKSlcclxuICAgICAgICByZXR1cm4geyByZXF1aXJlZDogdHJ1ZSwgZXJyb01lc3NhZ2U6IGAke2Vycm9NZXNzYWdlID8gZXJyb01lc3NhZ2UgOiAnQ2FtcG8gb2JyaWdhdMOzcmlvJ31gIH07XHJcblxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZGF0ZUdyZWF0ZXJUaGFuKHN0YXJ0Q29udHJvbE5hbWU6IHN0cmluZywgZXJyb01lc3NhZ2U/OiBzdHJpbmcpOiBWYWxpZGF0b3JGbiB7XHJcbiAgICByZXR1cm4gKGVuZENvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcclxuICAgICAgY29uc3QgcGFyZW50ID0gZW5kQ29udHJvbC5wYXJlbnQgYXMgRm9ybUdyb3VwO1xyXG5cclxuICAgICAgaWYgKCFwYXJlbnQpIHJldHVybiBudWxsO1xyXG5cclxuICAgICAgY29uc3Qgc3RhcnRDb250cm9sOiBBYnN0cmFjdENvbnRyb2wgPSBwYXJlbnQuZ2V0KHN0YXJ0Q29udHJvbE5hbWUpIGFzIEFic3RyYWN0Q29udHJvbDtcclxuXHJcbiAgICAgIGNvbnN0IHN0YXJ0RGF0ZTogRGF0ZSA9IHN0YXJ0Q29udHJvbC52YWx1ZTtcclxuICAgICAgY29uc3QgZW5kRGF0ZTogRGF0ZSA9IGVuZENvbnRyb2wudmFsdWU7XHJcblxyXG4gICAgICBpZiAoIXN0YXJ0RGF0ZSB8fCAhZW5kRGF0ZSkge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChzdGFydERhdGUgPiBlbmREYXRlKSB7XHJcbiAgICAgICAgcmV0dXJuIHsgZ3JlYXRlclRoYW46IHRydWUsIGVycm9NZXNzYWdlOiBlcnJvTWVzc2FnZSB9O1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBtaW4obWluOiBudW1iZXIsIGVycm9NZXNzYWdlPzogc3RyaW5nKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XHJcbiAgICAgIGlmIChWYWxpZGF0b3JzLm1pbihtaW4pKGNvbnRyb2wpKVxyXG4gICAgICAgIHJldHVybiB7IG1pbjogdHJ1ZSwgZXJyb01lc3NhZ2U6IGAke2Vycm9NZXNzYWdlID8gZXJyb01lc3NhZ2UgOiAnSW5mb3JtZSB1bSB2YWxvciBtYWlvciBvdSBpZ3VhbCDDoCAnfSR7bWlufWAgfTtcclxuXHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBtYXgobWluOiBudW1iZXIsIGVycm9NZXNzYWdlPzogc3RyaW5nKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XHJcbiAgICAgIGlmIChWYWxpZGF0b3JzLm1heChtaW4pKGNvbnRyb2wpKVxyXG4gICAgICAgIHJldHVybiB7IG1pbjogdHJ1ZSwgZXJyb01lc3NhZ2U6IGAke2Vycm9NZXNzYWdlID8gZXJyb01lc3NhZ2UgOiAnSW5mb3JtZSB1bSB2YWxvciBtZW5vciBvdSBpZ3VhbCDDoCAnfSR7bWlufWAgfTtcclxuXHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBlbWFpbChlcnJvTWVzc2FnZT86IHN0cmluZyk6IFZhbGlkYXRvckZuIHtcclxuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xyXG4gICAgICBpZiAoVmFsaWRhdG9ycy5lbWFpbChjb250cm9sKSkge1xyXG4gICAgICAgIHJldHVybiB7IGVtYWlsOiB0cnVlLCBlcnJvTWVzc2FnZTogYCR7ZXJyb01lc3NhZ2UgPyBlcnJvTWVzc2FnZSA6ICdFbmRlcmXDp28gZGUgZS1tYWlsIGludsOhbGlkbyEnfWAgfTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgbWF4TGVuZ3RoQXJyYXkobWF4OiBudW1iZXIpOiBWYWxpZGF0b3JGbiB7XHJcbiAgICByZXR1cm4gKGM6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcclxuICAgICAgaWYgKGMudmFsdWUubGVuZ3RoIDwgbWF4KVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG5cclxuICAgICAgcmV0dXJuIHsgbWF4TGVuZ3RoQXJyYXk6IHRydWUsIGVycm9NZXNzYWdlOiAnVGFtYW5obyBtw6F4aW1vIGV4Y2VkaWRvIScgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXRpYyBtYXhMZW5ndGgobWF4OiBudW1iZXIsIGVycm9NZXNzYWdlPzogc3RyaW5nKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XHJcbiAgICAgIGlmIChWYWxpZGF0b3JzLm1heExlbmd0aChtYXgpKGNvbnRyb2wpKVxyXG4gICAgICAgIHJldHVybiB7IG1heExlbmd0aDogdHJ1ZSwgZXJyb01lc3NhZ2U6IGAke2Vycm9NZXNzYWdlID8gZXJyb01lc3NhZ2UgOiAnTGltaXRlIG3DoXhpbW8gZGUgJHttYXh9IGNhcmFjdGVyZXMgYXRpbmdpZG8hJ31gIH07XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2Vldm8tdmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9hcGkvaGVscGVycy9rZWV2by12YWxpZGF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBNkQsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkcsTUFBTSxPQUFPLGVBQWU7SUFDMUIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxXQUFvQjtRQUNsQyxPQUFPLENBQUMsT0FBd0IsRUFBMkIsRUFBRTtZQUMzRCxJQUFJLFVBQVUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO2dCQUM5QixPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxDQUFDO1lBRS9GLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxlQUFlLENBQUMsZ0JBQXdCLEVBQUUsV0FBb0I7UUFDbkUsT0FBTyxDQUFDLFVBQTJCLEVBQTJCLEVBQUU7WUFDOUQsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLE1BQW1CLENBQUM7WUFFOUMsSUFBSSxDQUFDLE1BQU07Z0JBQUUsT0FBTyxJQUFJLENBQUM7WUFFekIsTUFBTSxZQUFZLEdBQW9CLE1BQU0sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQW9CLENBQUM7WUFFdEYsTUFBTSxTQUFTLEdBQVMsWUFBWSxDQUFDLEtBQUssQ0FBQztZQUMzQyxNQUFNLE9BQU8sR0FBUyxVQUFVLENBQUMsS0FBSyxDQUFDO1lBRXZDLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQzFCLE9BQU8sSUFBSSxDQUFDO2FBQ2I7WUFDRCxJQUFJLFNBQVMsR0FBRyxP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b250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmV4cG9ydCBjbGFzcyBLZWV2b1ZhbGlkYXRvcnMge1xyXG4gIHN0YXRpYyByZXF1aXJlZChlcnJvTWVzc2FnZT86IHN0cmluZyk6IFZhbGlkYXRvckZuIHtcclxuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xyXG4gICAgICBpZiAoVmFsaWRhdG9ycy5yZXF1aXJlZChjb250cm9sKSlcclxuICAgICAgICByZXR1cm4geyByZXF1aXJlZDogdHJ1ZSwgZXJyb01lc3NhZ2U6IGAke2Vycm9NZXNzYWdlID8gZXJyb01lc3NhZ2UgOiAnQ2FtcG8gb2JyaWdhdMOzcmlvJ31gIH07XHJcblxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZGF0ZUdyZWF0ZXJUaGFuKHN0YXJ0Q29udHJvbE5hbWU6IHN0cmluZywgZXJyb01lc3NhZ2U/OiBzdHJpbmcpOiBWYWxpZGF0b3JGbiB7XHJcbiAgICByZXR1cm4gKGVuZENvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcclxuICAgICAgY29uc3QgcGFyZW50ID0gZW5kQ29udHJvbC5wYXJlbnQgYXMgRm9ybUdyb3VwO1xyXG5cclxuICAgICAgaWYgKCFwYXJlbnQpIHJldHVybiBudWxsO1xyXG5cclxuICAgICAgY29uc3Qgc3RhcnRDb250cm9sOiBBYnN0cmFjdENvbnRyb2wgPSBwYXJlbnQuZ2V0KHN0YXJ0Q29udHJvbE5hbWUpIGFzIEFic3RyYWN0Q29udHJvbDtcclxuXHJcbiAgICAgIGNvbnN0IHN0YXJ0RGF0ZTogRGF0ZSA9IHN0YXJ0Q29udHJvbC52YWx1ZTtcclxuICAgICAgY29uc3QgZW5kRGF0ZTogRGF0ZSA9IGVuZENvbnRyb2wudmFsdWU7XHJcblxyXG4gICAgICBpZiAoIXN0YXJ0RGF0ZSB8fCAhZW5kRGF0ZSkge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChzdGFydERhdGUgPiBlbmREYXRlKSB7XHJcbiAgICAgICAgcmV0dXJuIHsgZ3JlYXRlclRoYW46IHRydWUsIGVycm9NZXNzYWdlOiBlcnJvTWVzc2FnZSB9O1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBtaW4obWluOiBudW1iZXIsIGVycm9NZXNzYWdlPzogc3RyaW5nKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XHJcbiAgICAgIGlmIChWYWxpZGF0b3JzLm1pbihtaW4pKGNvbnRyb2wpKVxyXG4gICAgICAgIHJldHVybiB7IG1pbjogdHJ1ZSwgZXJyb01lc3NhZ2U6IGAke2Vycm9NZXNzYWdlID8gZXJyb01lc3NhZ2UgOiAnSW5mb3JtZSB1bSB2YWxvciBtYWlvciBvdSBpZ3VhbCDDoCAnfSR7bWlufWAgfTtcclxuXHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBtYXgobWluOiBudW1iZXIsIGVycm9NZXNzYWdlPzogc3RyaW5nKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XHJcbiAgICAgIGlmIChWYWxpZGF0b3JzLm1heChtaW4pKGNvbnRyb2wpKVxyXG4gICAgICAgIHJldHVybiB7IG1pbjogdHJ1ZSwgZXJyb01lc3NhZ2U6IGAke2Vycm9NZXNzYWdlID8gZXJyb01lc3NhZ2UgOiAnSW5mb3JtZSB1bSB2YWxvciBtZW5vciBvdSBpZ3VhbCDDoCAnfSR7bWlufWAgfTtcclxuXHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBlbWFpbChlcnJvTWVzc2FnZT86IHN0cmluZyk6IFZhbGlkYXRvckZuIHtcclxuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xyXG4gICAgICBpZiAoVmFsaWRhdG9ycy5lbWFpbChjb250cm9sKSkge1xyXG4gICAgICAgIHJldHVybiB7IGVtYWlsOiB0cnVlLCBlcnJvTWVzc2FnZTogYCR7ZXJyb01lc3NhZ2UgPyBlcnJvTWVzc2FnZSA6ICdFbmRlcmXDp28gZGUgZS1tYWlsIGludsOhbGlkbyEnfWAgfTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgbWF4TGVuZ3RoQXJyYXkobWF4OiBudW1iZXIpOiBWYWxpZGF0b3JGbiB7XHJcbiAgICByZXR1cm4gKGM6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcclxuICAgICAgaWYgKGMudmFsdWUubGVuZ3RoIDwgbWF4KVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG5cclxuICAgICAgcmV0dXJuIHsgbWF4TGVuZ3RoQXJyYXk6IHRydWUsIGVycm9NZXNzYWdlOiAnVGFtYW5obyBtw6F4aW1vIGV4Y2VkaWRvIScgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXRpYyBtYXhMZW5ndGgobWF4OiBudW1iZXIsIGVycm9NZXNzYWdlPzogc3RyaW5nKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XHJcbiAgICAgIGlmIChWYWxpZGF0b3JzLm1heExlbmd0aChtYXgpKGNvbnRyb2wpKVxyXG4gICAgICAgIHJldHVybiB7IG1heExlbmd0aDogdHJ1ZSwgZXJyb01lc3NhZ2U6IGAke2Vycm9NZXNzYWdlID8gZXJyb01lc3NhZ2UgOiAnTGltaXRlIG3DoXhpbW8gZGUgJHttYXh9IGNhcmFjdGVyZXMgYXRpbmdpZG8hJ31gIH07XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIG5vbWUoKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIChjOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XHJcbiAgICAgIGxldCBwYWxhdnJhcyA9IGMudmFsdWUudHJpbSgpLnNwbGl0KCcgJyk7XHJcbiAgICAgIGlmIChwYWxhdnJhcz8ubGVuZ3RoID4gMSlcclxuICAgICAgICByZXR1cm4geyBub21lOiB0cnVlLCBlcnJvTWVzc2FnZTogJ0RpZ2l0ZSBzZXUgbm9tZSBjb21wbGV0by4nIH07XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
@@ -167,23 +167,23 @@ export class TreetableComponent {
167
167
  getCustomTemplate(templatename) {
168
168
  return this._templates[templatename];
169
169
  }
170
- validateShowTemplate(rowNode) {
171
- if (this.config.templateOnly) {
172
- if (this.config.templateOnly === 'pai') {
170
+ validateShowTemplate(rowNode, col) {
171
+ if (col.templateOnly) {
172
+ if (col.templateOnly === 'pai') {
173
173
  return rowNode.level === 0;
174
174
  }
175
- if (this.config.templateOnly === 'filho') {
175
+ if (col.templateOnly === 'filho') {
176
176
  return rowNode.level === 1;
177
177
  }
178
178
  }
179
179
  return true;
180
180
  }
181
181
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TreetableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
182
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TreetableComponent, selector: "kv-tree-table", inputs: { config: "config", dataSource: "dataSource", gridLines: "gridLines", acoesLinhaTabela: "acoesLinhaTabela", _templates: ["templates", "_templates"] }, outputs: { onFilter: "onFilter", onPaginate: "onPaginate", onActiveItem: "onActiveItem", onActiveItemLote: "onActiveItemLote", doubleClickEvent: "doubleClickEvent" }, host: { listeners: { "window:resize": "onWindowResize($event)" } }, queries: [{ propertyName: "templates", predicate: TemplateDirective }], ngImport: i0, template: "<div>\r\n <p-treeTable\r\n #tt\r\n [value]=\"dataSource\"\r\n [columns]=\"config.columns\"\r\n [resizableColumns]=\"true\"\r\n [tableStyle]=\"{'min-width': '50rem'}\"\r\n [resizableColumns]=\"true\"\r\n [styleClass]=\"gridLines ? 'p-treetable-gridlines' : ''\"\r\n (onLazyLoad)=\"paginate($event)\"\r\n >\r\n\r\n <ng-template\r\n pTemplate=\"caption\"\r\n *ngIf=\"config.enableCation\"\r\n >\r\n <div\r\n class=\"flex flex-row flex-wrap justify-content-between align-items-center grid formgrid p-fluid col-12\">\r\n <div class=\"col-12 flex flex-column\">\r\n <div\r\n *ngIf=\"config.title\"\r\n class=\"text-md font-bold my-3\"\r\n >\r\n {{ config.title }}\r\n </div>\r\n <div\r\n *ngIf=\"config.subtitle\"\r\n class=\"text-sm mb-4 font-medium\"\r\n >\r\n {{ config.subtitle }}\r\n </div>\r\n </div>\r\n\r\n <div [class]=\"\r\n tamanhoTela < 768\r\n ? 'flex flex-row align-items-center col-10 md:col-6 lg:col-4 justify-content-center'\r\n : 'flex flex-row align-items-center col-12 md:col-6 lg:col-4 justify-content-center input-search'\r\n \">\r\n\r\n <span\r\n *ngIf=\"config.enableFilter\"\r\n class=\"p-input-icon-left\"\r\n >\r\n <i class=\"pi pi-search\"></i>\r\n\r\n <input\r\n pInputText\r\n pAutoFocus\r\n [autofocus]=\"true\"\r\n type=\"text\"\r\n (input)=\"onGlobalFilter(tt, $event)\"\r\n placeholder=\"Pesquisar...\"\r\n class=\"h-2.5rem\"\r\n />\r\n </span>\r\n\r\n </div>\r\n\r\n <div class=\"flex flex-row col-1 justify-content-end p-0\">\r\n <div\r\n *ngFor=\"let action of config.actionsLote\"\r\n class=\"btns-options\"\r\n >\r\n <button\r\n id=\"actionLoteBtns\"\r\n pButton\r\n *ngIf=\"\r\n (selectedItems.length > 0 || action.showAcoesLote) &&\r\n exibirCampo(action, this.action)\r\n \"\r\n class=\"actionLoteBtns p-button-raised p-button-text\"\r\n (click)=\"action?.command(commandEvent); activeItemLote(selectedItems)\"\r\n [pTooltip]=\"retornarCampo(action, selectedItems, 'tooltip')\"\r\n [tooltipPosition]=\"'bottom'\"\r\n [style.backgroundColor]=\"\r\n retornarCampo(action, selectedItems, 'btnColor')\r\n \"\r\n [disabled]=\"retornarCampo(action, selectedItems, 'disabled')\"\r\n >\r\n <span\r\n class=\"material-symbols-outlined md-22\"\r\n [style.color]=\"\r\n retornarCampo(action, selectedItems, 'iconBtnColor')\r\n \"\r\n >\r\n {{ retornarCampo(action, selectedItems, \"icon\") }}\r\n </span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template\r\n pTemplate=\"header\"\r\n let-columns\r\n >\r\n <tr>\r\n <th\r\n *ngFor=\"let col of columns; index as i\"\r\n [ttSortableColumn]=\"col.field\"\r\n [ttSortableColumnDisabled]=\"col.sortable === false\"\r\n class=\"text-sm\"\r\n [style.width]=\"col.width\"\r\n >\r\n <div>\r\n <div [ngClass]=\"{ flex: i == 0, 'gap-3': i == 0 }\">\r\n <div *ngIf=\"i == 0 && config.enableSelect\">\r\n <p-treeTableHeaderCheckbox\r\n (click)=\"activeItemLote(selectedItems)\"></p-treeTableHeaderCheckbox>\r\n </div>\r\n\r\n <div\r\n [class]=\"\r\n centralizarColunas(col) && alignColunasHeader(col) == ''\r\n ? 'flex flex-row justify-content-center'\r\n : 'flex flex-row'\r\n \"\r\n [style]=\"alignColunasHeader(col)\"\r\n >\r\n <span>{{ col.header }}</span>\r\n <p-sortIcon\r\n *ngIf=\"col.sortable === true\"\r\n [field]=\"col.field\"\r\n style=\"font-size: 10px\"\r\n ></p-sortIcon>\r\n\r\n <span\r\n *ngIf=\"col.headerTooltip\"\r\n class=\"material-symbols-outlined flex align-items-center\"\r\n [pTooltip]=\"col.headerTooltip\"\r\n >info</span>\r\n </div>\r\n </div>\r\n </div>\r\n </th>\r\n </tr>\r\n </ng-template>\r\n\r\n <ng-template\r\n pTemplate=\"header\"\r\n let-columns\r\n >\r\n <tr>\r\n <th\r\n *ngFor=\"let col of columns\"\r\n ttResizableColumn\r\n [style.width]=\"col.width\"\r\n [style]=\"col.centralize ? 'text-align: center;' : ''\"\r\n >\r\n {{ col.header }} <br>\r\n </th>\r\n\r\n <th\r\n [style.width]=\"5\"\r\n *ngIf=\"config.actions.length > 0\"\r\n ></th>\r\n </tr>\r\n </ng-template>\r\n <ng-template\r\n pTemplate=\"body\"\r\n let-rowNode\r\n let-rowData=\"rowData\"\r\n let-columns=\"columns\"\r\n >\r\n <tr\r\n [ttRow]=\"rowNode\"\r\n (dblclick)=\"doubleClick($event, rowData)\"\r\n >\r\n <td\r\n *ngFor=\"let col of columns; let i = index\"\r\n [style]=\"returnStyleRow(col, rowNode)\"\r\n [style.position]=\"rowNode.level !== 0 ? 'sticky' : null\"\r\n [style.left.px]=\"rowNode.level !== 0 ? rowNode.level*30 : null\"\r\n >\r\n\r\n <div class=\"flex flex-row {{col.boolean ? 'justify-content-center' : '' }}\">\r\n <div\r\n class=\"w-full-h-full flex align-items-center\"\r\n *ngIf=\"i == 0\"\r\n >\r\n <p-treeTableCheckbox\r\n [disabled]=\"isDisabledCheckbox(rowData, rowNode)\"\r\n (click)=\"activeItemLote(selectedItems)\"\r\n [value]=\"rowNode\"\r\n *ngIf=\"config.enableSelect == true\"\r\n ></p-treeTableCheckbox>\r\n\r\n <p-treeTableToggler\r\n class=\"hiddenVisible\"\r\n [rowNode]=\"rowNode\"\r\n ></p-treeTableToggler>\r\n <!-- \r\n <p-treeTableToggler\r\n [rowNode]=\"rowNode\"\r\n *ngIf=\"!rightCollapse\"\r\n ></p-treeTableToggler>\r\n <p-treeTableToggler\r\n class=\"hiddenVisible\"\r\n [rowNode]=\"rowNode\"\r\n *ngIf=\"rightCollapse\"\r\n ></p-treeTableToggler> -->\r\n </div>\r\n\r\n\r\n <div class=\"flex flex-row align-items-center\">\r\n <div class=\"flex flex-row align-items-center justify-content-center\">\r\n\r\n <i\r\n *ngIf=\"col.boolean\"\r\n class=\"pi {{rowData[col.field] ? 'pi-check text-green-300' : ''}}\"\r\n style=\"font-size: 1.1rem;\"\r\n ></i>\r\n\r\n\r\n <div\r\n class=\"flex flex-column\"\r\n *ngIf=\"!col.boolean\"\r\n >\r\n <span class=\"m-0\">{{ rowData[col.field] }}</span>\r\n\r\n <p\r\n *ngIf=\"col.subtitle\"\r\n class=\"m-0 text-xs font-semibold\"\r\n >{{rowData[col.subtitle]}}</p>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <span *ngIf=\"col.template && validateShowTemplate(rowNode)\">\r\n <ng-container\r\n *ngIf=\"getCustomTemplate(col.template.name)\"\r\n [ngTemplateOutlet]=\"getCustomTemplate(col.template.name)\"\r\n [ngTemplateOutletContext]=\"{ $implicit: rowData }\"\r\n >\r\n </ng-container>\r\n </span>\r\n\r\n </td>\r\n\r\n\r\n <td\r\n style=\"border-left: none;\"\r\n *ngIf=\"config.actions.length > 0 || config.actionsPai\"\r\n >\r\n\r\n <div *ngIf=\"config.actions.length > 0 && validateActionPosition(rowNode)\">\r\n <div\r\n class=\"flex flex-row justify-content-center gap-1\"\r\n *ngIf=\"acoesLinhaTabela\"\r\n >\r\n <p-button\r\n *ngFor=\"let action of config.actions\"\r\n icon=\"pi {{action.icon}}\"\r\n [rounded]=\"true\"\r\n [severity]=\"action.severity ? action.severity : 'secondary'\"\r\n [style]=\"{width: '2rem', height: '2rem'}\"\r\n (onClick)=\"action.command($event)\"\r\n ></p-button>\r\n\r\n </div>\r\n\r\n <span\r\n *ngIf=\"!acoesLinhaTabela\"\r\n class=\"material-symbols-outlined cursor-pointer icon-more-horiz\"\r\n style=\"font-size: 22px\"\r\n (click)=\"menu.toggle($event); activeItem(rowData)\"\r\n >\r\n more_horiz\r\n </span>\r\n\r\n <div *ngFor=\"let action of config.actions\">\r\n {{ criarMenusModal(rowData) }}\r\n </div>\r\n\r\n <p-menu\r\n #menu\r\n [popup]=\"true\"\r\n [model]=\"menuItems\"\r\n appendTo=\"body\"\r\n ></p-menu>\r\n\r\n </div>\r\n\r\n <div *ngIf=\"config.actionsPai?.length > 0 && rowNode.level == 0\">\r\n\r\n <div\r\n *ngFor=\"let actionPai of config.actionsPai\"\r\n class=\"flex justify-content-end\"\r\n >\r\n\r\n <p-button\r\n icon=\"pi {{actionPai.icon}}\"\r\n [rounded]=\"true\"\r\n [severity]=\"actionPai.severity ? actionPai.severity : 'secondary'\"\r\n [style]=\"{width: '2rem', height: '2rem'}\"\r\n (onClick)=\"activeItem(rowData);actionPai.command($event);\"\r\n ></p-button>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </td>\r\n\r\n </tr>\r\n </ng-template>\r\n\r\n </p-treeTable>\r\n</div>", styles: ["@charset \"UTF-8\";:host ::ng-deep .p-treetable table{border-spacing:0 3px}#botaoFiltro:hover{color:#d4d4d4}:host ::ng-deep .p-treetable .p-treetable-header{background-color:#d1d1d1;padding:2px 0 0!important;border-radius:5px!important}:host ::ng-deep .p-treetable .p-treetable-thead>tr>th{background-color:#eaeaea;padding:.5rem!important;margin-bottom:-5px!important}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td{padding:.5rem!important}:host ::ng-deep .p-treetable .p-treetable-thead{border-spacing:0 1px!important}:host ::ng-deep .p-treetable .p-treetable-thead>tr>th:first-of-type{background-color:#eaeaea;padding:.5rem!important;border-radius:5px!important}:host ::ng-deep .p-treetable .p-treetable-thead>tr>th:last-child{background-color:#eaeaea;padding:.5rem!important;border-radius:0 5px 5px 0!important;-webkit-border-radius:0 5px 5px 0!important;-moz-border-radius:0 5px 5px 0!important;-ms-border-radius:0 5px 5px 0!important;-o-border-radius:0 5px 5px 0!important}:host ::ng-deep .p-treetable-scrollable-header-box{padding:0!important}:host ::ng-deep .p-treetable.p-treetable-sm .p-treetable-thead>tr>th{background-color:#f2f2f2}:host ::ng-deep .p-treetable.p-treetable-sm .p-treetable-thead>tr>th:first-of-type{border-radius:5px 0 0 5px}:host ::ng-deep .p-treetable.p-treetable-sm .p-treetable-thead>tr>th:last-child{border-radius:0 5px 5px 0}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td{border-bottom:1px solid #ddd!important;border-top:1px solid #ddd!important}:host ::ng-deep #tr-style{border-left:solid 4px #5289B4!important;border-radius:10px!important;display:block}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td:first-of-type{border-left:solid 4px #5289B4!important;border-right:none!important;border-radius:10px 0 0 10px!important;-webkit-border-radius:10px 0 0 10px!important;-moz-border-radius:10px 0 0 10px!important;-ms-border-radius:10px 0 0 10px!important;-o-border-radius:10px 0 0 10px!important}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td:last-child{border-radius:0 10px 10px 0!important;border-right:1px solid #ddd!important;-webkit-border-radius:0 10px 10px 0!important;-moz-border-radius:0 10px 10px 0!important;-ms-border-radius:0 10px 10px 0!important;-o-border-radius:0 10px 10px 0!important}:host ::ng-deep .actionBtns,:host ::ng-deep .actionLoteBtns{border-radius:50%;box-shadow:#0000003d 0 3px 8px;width:2.5rem!important;height:2.5rem!important;display:flex;align-items:center;justify-content:center}:host ::ng-deep .p-treetable table{border-collapse:separate!important;table-layout:auto!important}.icon-more-horiz:hover,.icon-more-horiz:focus{color:#5e5e5e;transform:scale(1.1);transition:color .3s,transform .3s}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i3.AutoFocus, selector: "[pAutoFocus]", inputs: ["autofocus"] }, { kind: "directive", type: i4.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "component", type: i4.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "size", "style", "styleClass", "badgeClass", "ariaLabel"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "directive", type: i5.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "directive", type: i6.InputText, selector: "[pInputText]" }, { kind: "component", type: i7.Menu, selector: "p-menu", inputs: ["model", "popup", "style", "styleClass", "appendTo", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaLabel", "ariaLabelledBy", "id", "tabindex"], outputs: ["onShow", "onHide", "onBlur", "onFocus"] }, { kind: "component", type: i8.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "component", type: i9.TreeTable, selector: "p-treeTable", inputs: ["columns", "style", "styleClass", "tableStyle", "tableStyleClass", "autoLayout", "lazy", "lazyLoadOnInit", "paginator", "rows", "first", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "customSort", "selectionMode", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "compareSelectionBy", "rowHover", "loading", "loadingIcon", "showLoader", "scrollable", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "frozenColumns", "resizableColumns", "columnResizeMode", "reorderableColumns", "contextMenu", "rowTrackBy", "filters", "globalFilterFields", "filterDelay", "filterMode", "filterLocale", "paginatorLocale", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "value", "virtualRowHeight"], outputs: ["selectionChange", "contextMenuSelectionChange", "onFilter", "onNodeExpand", "onNodeCollapse", "onPage", "onSort", "onLazyLoad", "sortFunction", "onColResize", "onColReorder", "onNodeSelect", "onNodeUnselect", "onContextMenuSelect", "onHeaderCheckboxToggle", "onEditInit", "onEditComplete", "onEditCancel"] }, { kind: "component", type: i9.TreeTableToggler, selector: "p-treeTableToggler", inputs: ["rowNode"] }, { kind: "directive", type: i9.TTSortableColumn, selector: "[ttSortableColumn]", inputs: ["ttSortableColumn", "ttSortableColumnDisabled"] }, { kind: "directive", type: i9.TTResizableColumn, selector: "[ttResizableColumn]", inputs: ["ttResizableColumnDisabled"] }, { kind: "directive", type: i9.TTRow, selector: "[ttRow]", inputs: ["ttRow"] }, { kind: "component", type: i9.TTCheckbox, selector: "p-treeTableCheckbox", inputs: ["disabled", "value"] }, { kind: "component", type: i9.TTHeaderCheckbox, selector: "p-treeTableHeaderCheckbox" }] }); }
182
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TreetableComponent, selector: "kv-tree-table", inputs: { config: "config", dataSource: "dataSource", gridLines: "gridLines", acoesLinhaTabela: "acoesLinhaTabela", _templates: ["templates", "_templates"] }, outputs: { onFilter: "onFilter", onPaginate: "onPaginate", onActiveItem: "onActiveItem", onActiveItemLote: "onActiveItemLote", doubleClickEvent: "doubleClickEvent" }, host: { listeners: { "window:resize": "onWindowResize($event)" } }, queries: [{ propertyName: "templates", predicate: TemplateDirective }], ngImport: i0, template: "<div>\r\n <p-treeTable\r\n #tt\r\n [value]=\"dataSource\"\r\n [columns]=\"config.columns\"\r\n [resizableColumns]=\"true\"\r\n [tableStyle]=\"{'min-width': '50rem'}\"\r\n [resizableColumns]=\"true\"\r\n [styleClass]=\"gridLines ? 'p-treetable-gridlines' : ''\"\r\n (onLazyLoad)=\"paginate($event)\"\r\n >\r\n\r\n <ng-template\r\n pTemplate=\"caption\"\r\n *ngIf=\"config.enableCation\"\r\n >\r\n <div\r\n class=\"flex flex-row flex-wrap justify-content-between align-items-center grid formgrid p-fluid col-12\">\r\n <div class=\"col-12 flex flex-column\">\r\n <div\r\n *ngIf=\"config.title\"\r\n class=\"text-md font-bold my-3\"\r\n >\r\n {{ config.title }}\r\n </div>\r\n <div\r\n *ngIf=\"config.subtitle\"\r\n class=\"text-sm mb-4 font-medium\"\r\n >\r\n {{ config.subtitle }}\r\n </div>\r\n </div>\r\n\r\n <div [class]=\"\r\n tamanhoTela < 768\r\n ? 'flex flex-row align-items-center col-10 md:col-6 lg:col-4 justify-content-center'\r\n : 'flex flex-row align-items-center col-12 md:col-6 lg:col-4 justify-content-center input-search'\r\n \">\r\n\r\n <span\r\n *ngIf=\"config.enableFilter\"\r\n class=\"p-input-icon-left\"\r\n >\r\n <i class=\"pi pi-search\"></i>\r\n\r\n <input\r\n pInputText\r\n pAutoFocus\r\n [autofocus]=\"true\"\r\n type=\"text\"\r\n (input)=\"onGlobalFilter(tt, $event)\"\r\n placeholder=\"Pesquisar...\"\r\n class=\"h-2.5rem\"\r\n />\r\n </span>\r\n\r\n </div>\r\n\r\n <div class=\"flex flex-row col-1 justify-content-end p-0\">\r\n <div\r\n *ngFor=\"let action of config.actionsLote\"\r\n class=\"btns-options\"\r\n >\r\n <button\r\n id=\"actionLoteBtns\"\r\n pButton\r\n *ngIf=\"\r\n (selectedItems.length > 0 || action.showAcoesLote) &&\r\n exibirCampo(action, this.action)\r\n \"\r\n class=\"actionLoteBtns p-button-raised p-button-text\"\r\n (click)=\"action?.command(commandEvent); activeItemLote(selectedItems)\"\r\n [pTooltip]=\"retornarCampo(action, selectedItems, 'tooltip')\"\r\n [tooltipPosition]=\"'bottom'\"\r\n [style.backgroundColor]=\"\r\n retornarCampo(action, selectedItems, 'btnColor')\r\n \"\r\n [disabled]=\"retornarCampo(action, selectedItems, 'disabled')\"\r\n >\r\n <span\r\n class=\"material-symbols-outlined md-22\"\r\n [style.color]=\"\r\n retornarCampo(action, selectedItems, 'iconBtnColor')\r\n \"\r\n >\r\n {{ retornarCampo(action, selectedItems, \"icon\") }}\r\n </span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template\r\n pTemplate=\"header\"\r\n let-columns\r\n >\r\n <tr>\r\n <th\r\n *ngFor=\"let col of columns; index as i\"\r\n [ttSortableColumn]=\"col.field\"\r\n [ttSortableColumnDisabled]=\"col.sortable === false\"\r\n class=\"text-sm\"\r\n [style.width]=\"col.width\"\r\n >\r\n <div>\r\n <div [ngClass]=\"{ flex: i == 0, 'gap-3': i == 0 }\">\r\n <div *ngIf=\"i == 0 && config.enableSelect\">\r\n <p-treeTableHeaderCheckbox\r\n (click)=\"activeItemLote(selectedItems)\"></p-treeTableHeaderCheckbox>\r\n </div>\r\n\r\n <div\r\n [class]=\"\r\n centralizarColunas(col) && alignColunasHeader(col) == ''\r\n ? 'flex flex-row justify-content-center'\r\n : 'flex flex-row'\r\n \"\r\n [style]=\"alignColunasHeader(col)\"\r\n >\r\n <span>{{ col.header }}</span>\r\n <p-sortIcon\r\n *ngIf=\"col.sortable === true\"\r\n [field]=\"col.field\"\r\n style=\"font-size: 10px\"\r\n ></p-sortIcon>\r\n\r\n <span\r\n *ngIf=\"col.headerTooltip\"\r\n class=\"material-symbols-outlined flex align-items-center\"\r\n [pTooltip]=\"col.headerTooltip\"\r\n >info</span>\r\n </div>\r\n </div>\r\n </div>\r\n </th>\r\n </tr>\r\n </ng-template>\r\n\r\n <ng-template\r\n pTemplate=\"header\"\r\n let-columns\r\n >\r\n <tr>\r\n <th\r\n *ngFor=\"let col of columns\"\r\n ttResizableColumn\r\n [style.width]=\"col.width\"\r\n [style]=\"col.centralize ? 'text-align: center;' : ''\"\r\n >\r\n {{ col.header }} <br>\r\n </th>\r\n\r\n <th\r\n [style.width]=\"5\"\r\n *ngIf=\"config.actions.length > 0\"\r\n ></th>\r\n </tr>\r\n </ng-template>\r\n <ng-template\r\n pTemplate=\"body\"\r\n let-rowNode\r\n let-rowData=\"rowData\"\r\n let-columns=\"columns\"\r\n >\r\n <tr\r\n [ttRow]=\"rowNode\"\r\n (dblclick)=\"doubleClick($event, rowData)\"\r\n >\r\n <td\r\n *ngFor=\"let col of columns; let i = index\"\r\n [style]=\"returnStyleRow(col, rowNode)\"\r\n [style.position]=\"rowNode.level !== 0 ? 'sticky' : null\"\r\n [style.left.px]=\"rowNode.level !== 0 ? rowNode.level*30 : null\"\r\n >\r\n\r\n <div class=\"flex flex-row {{col.boolean ? 'justify-content-center' : '' }}\">\r\n <div\r\n class=\"w-full-h-full flex align-items-center\"\r\n *ngIf=\"i == 0\"\r\n >\r\n <p-treeTableCheckbox\r\n [disabled]=\"isDisabledCheckbox(rowData, rowNode)\"\r\n (click)=\"activeItemLote(selectedItems)\"\r\n [value]=\"rowNode\"\r\n *ngIf=\"config.enableSelect == true\"\r\n ></p-treeTableCheckbox>\r\n\r\n <p-treeTableToggler\r\n class=\"hiddenVisible\"\r\n [rowNode]=\"rowNode\"\r\n ></p-treeTableToggler>\r\n <!-- \r\n <p-treeTableToggler\r\n [rowNode]=\"rowNode\"\r\n *ngIf=\"!rightCollapse\"\r\n ></p-treeTableToggler>\r\n <p-treeTableToggler\r\n class=\"hiddenVisible\"\r\n [rowNode]=\"rowNode\"\r\n *ngIf=\"rightCollapse\"\r\n ></p-treeTableToggler> -->\r\n </div>\r\n\r\n\r\n <div class=\"flex flex-row align-items-center\">\r\n <div class=\"flex flex-row align-items-center justify-content-center\">\r\n\r\n <i\r\n *ngIf=\"col.boolean\"\r\n class=\"pi {{rowData[col.field] ? 'pi-check text-green-300' : ''}}\"\r\n style=\"font-size: 1.1rem;\"\r\n ></i>\r\n\r\n\r\n <div\r\n class=\"flex flex-column\"\r\n *ngIf=\"!col.boolean\"\r\n >\r\n <span class=\"m-0\">{{ rowData[col.field] }}</span>\r\n\r\n <p\r\n *ngIf=\"col.subtitle\"\r\n class=\"m-0 text-xs font-semibold\"\r\n >{{rowData[col.subtitle]}}</p>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <span *ngIf=\"col.template && validateShowTemplate(rowNode, col)\">\r\n <ng-container\r\n *ngIf=\"getCustomTemplate(col.template.name)\"\r\n [ngTemplateOutlet]=\"getCustomTemplate(col.template.name)\"\r\n [ngTemplateOutletContext]=\"{ $implicit: rowData }\"\r\n >\r\n </ng-container>\r\n </span>\r\n\r\n </td>\r\n\r\n\r\n <td\r\n style=\"border-left: none;\"\r\n *ngIf=\"config.actions.length > 0 || config.actionsPai\"\r\n >\r\n\r\n <div *ngIf=\"config.actions.length > 0 && validateActionPosition(rowNode)\">\r\n <div\r\n class=\"flex flex-row justify-content-center gap-1\"\r\n *ngIf=\"acoesLinhaTabela\"\r\n >\r\n <p-button\r\n *ngFor=\"let action of config.actions\"\r\n icon=\"pi {{action.icon}}\"\r\n [rounded]=\"true\"\r\n [severity]=\"action.severity ? action.severity : 'secondary'\"\r\n [style]=\"{width: '2rem', height: '2rem'}\"\r\n (onClick)=\"action.command($event)\"\r\n ></p-button>\r\n\r\n </div>\r\n\r\n <span\r\n *ngIf=\"!acoesLinhaTabela\"\r\n class=\"material-symbols-outlined cursor-pointer icon-more-horiz\"\r\n style=\"font-size: 22px\"\r\n (click)=\"menu.toggle($event); activeItem(rowData)\"\r\n >\r\n more_horiz\r\n </span>\r\n\r\n <div *ngFor=\"let action of config.actions\">\r\n {{ criarMenusModal(rowData) }}\r\n </div>\r\n\r\n <p-menu\r\n #menu\r\n [popup]=\"true\"\r\n [model]=\"menuItems\"\r\n appendTo=\"body\"\r\n ></p-menu>\r\n\r\n </div>\r\n\r\n <div *ngIf=\"config.actionsPai?.length > 0 && rowNode.level == 0\">\r\n\r\n <div\r\n *ngFor=\"let actionPai of config.actionsPai\"\r\n class=\"flex justify-content-end\"\r\n >\r\n\r\n <p-button\r\n icon=\"pi {{actionPai.icon}}\"\r\n [rounded]=\"true\"\r\n [severity]=\"actionPai.severity ? actionPai.severity : 'secondary'\"\r\n [style]=\"{width: '2rem', height: '2rem'}\"\r\n (onClick)=\"activeItem(rowData);actionPai.command($event);\"\r\n ></p-button>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </td>\r\n\r\n </tr>\r\n </ng-template>\r\n\r\n </p-treeTable>\r\n</div>", styles: ["@charset \"UTF-8\";:host ::ng-deep .p-treetable table{border-spacing:0 3px}#botaoFiltro:hover{color:#d4d4d4}:host ::ng-deep .p-treetable .p-treetable-header{background-color:#d1d1d1;padding:2px 0 0!important;border-radius:5px!important}:host ::ng-deep .p-treetable .p-treetable-thead>tr>th{background-color:#eaeaea;padding:.5rem!important;margin-bottom:-5px!important}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td{padding:.5rem!important}:host ::ng-deep .p-treetable .p-treetable-thead{border-spacing:0 1px!important}:host ::ng-deep .p-treetable .p-treetable-thead>tr>th:first-of-type{background-color:#eaeaea;padding:.5rem!important;border-radius:5px!important}:host ::ng-deep .p-treetable .p-treetable-thead>tr>th:last-child{background-color:#eaeaea;padding:.5rem!important;border-radius:0 5px 5px 0!important;-webkit-border-radius:0 5px 5px 0!important;-moz-border-radius:0 5px 5px 0!important;-ms-border-radius:0 5px 5px 0!important;-o-border-radius:0 5px 5px 0!important}:host ::ng-deep .p-treetable-scrollable-header-box{padding:0!important}:host ::ng-deep .p-treetable.p-treetable-sm .p-treetable-thead>tr>th{background-color:#f2f2f2}:host ::ng-deep .p-treetable.p-treetable-sm .p-treetable-thead>tr>th:first-of-type{border-radius:5px 0 0 5px}:host ::ng-deep .p-treetable.p-treetable-sm .p-treetable-thead>tr>th:last-child{border-radius:0 5px 5px 0}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td{border-bottom:1px solid #ddd!important;border-top:1px solid #ddd!important}:host ::ng-deep #tr-style{border-left:solid 4px #5289B4!important;border-radius:10px!important;display:block}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td:first-of-type{border-left:solid 4px #5289B4!important;border-right:none!important;border-radius:10px 0 0 10px!important;-webkit-border-radius:10px 0 0 10px!important;-moz-border-radius:10px 0 0 10px!important;-ms-border-radius:10px 0 0 10px!important;-o-border-radius:10px 0 0 10px!important}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td:last-child{border-radius:0 10px 10px 0!important;border-right:1px solid #ddd!important;-webkit-border-radius:0 10px 10px 0!important;-moz-border-radius:0 10px 10px 0!important;-ms-border-radius:0 10px 10px 0!important;-o-border-radius:0 10px 10px 0!important}:host ::ng-deep .actionBtns,:host ::ng-deep .actionLoteBtns{border-radius:50%;box-shadow:#0000003d 0 3px 8px;width:2.5rem!important;height:2.5rem!important;display:flex;align-items:center;justify-content:center}:host ::ng-deep .p-treetable table{border-collapse:separate!important;table-layout:auto!important}.icon-more-horiz:hover,.icon-more-horiz:focus{color:#5e5e5e;transform:scale(1.1);transition:color .3s,transform .3s}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i3.AutoFocus, selector: "[pAutoFocus]", inputs: ["autofocus"] }, { kind: "directive", type: i4.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "component", type: i4.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "size", "style", "styleClass", "badgeClass", "ariaLabel"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "directive", type: i5.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "directive", type: i6.InputText, selector: "[pInputText]" }, { kind: "component", type: i7.Menu, selector: "p-menu", inputs: ["model", "popup", "style", "styleClass", "appendTo", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaLabel", "ariaLabelledBy", "id", "tabindex"], outputs: ["onShow", "onHide", "onBlur", "onFocus"] }, { kind: "component", type: i8.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "component", type: i9.TreeTable, selector: "p-treeTable", inputs: ["columns", "style", "styleClass", "tableStyle", "tableStyleClass", "autoLayout", "lazy", "lazyLoadOnInit", "paginator", "rows", "first", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "customSort", "selectionMode", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "compareSelectionBy", "rowHover", "loading", "loadingIcon", "showLoader", "scrollable", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "frozenColumns", "resizableColumns", "columnResizeMode", "reorderableColumns", "contextMenu", "rowTrackBy", "filters", "globalFilterFields", "filterDelay", "filterMode", "filterLocale", "paginatorLocale", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "value", "virtualRowHeight"], outputs: ["selectionChange", "contextMenuSelectionChange", "onFilter", "onNodeExpand", "onNodeCollapse", "onPage", "onSort", "onLazyLoad", "sortFunction", "onColResize", "onColReorder", "onNodeSelect", "onNodeUnselect", "onContextMenuSelect", "onHeaderCheckboxToggle", "onEditInit", "onEditComplete", "onEditCancel"] }, { kind: "component", type: i9.TreeTableToggler, selector: "p-treeTableToggler", inputs: ["rowNode"] }, { kind: "directive", type: i9.TTSortableColumn, selector: "[ttSortableColumn]", inputs: ["ttSortableColumn", "ttSortableColumnDisabled"] }, { kind: "directive", type: i9.TTResizableColumn, selector: "[ttResizableColumn]", inputs: ["ttResizableColumnDisabled"] }, { kind: "directive", type: i9.TTRow, selector: "[ttRow]", inputs: ["ttRow"] }, { kind: "component", type: i9.TTCheckbox, selector: "p-treeTableCheckbox", inputs: ["disabled", "value"] }, { kind: "component", type: i9.TTHeaderCheckbox, selector: "p-treeTableHeaderCheckbox" }] }); }
183
183
  }
184
184
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TreetableComponent, decorators: [{
185
185
  type: Component,
186
- args: [{ selector: 'kv-tree-table', template: "<div>\r\n <p-treeTable\r\n #tt\r\n [value]=\"dataSource\"\r\n [columns]=\"config.columns\"\r\n [resizableColumns]=\"true\"\r\n [tableStyle]=\"{'min-width': '50rem'}\"\r\n [resizableColumns]=\"true\"\r\n [styleClass]=\"gridLines ? 'p-treetable-gridlines' : ''\"\r\n (onLazyLoad)=\"paginate($event)\"\r\n >\r\n\r\n <ng-template\r\n pTemplate=\"caption\"\r\n *ngIf=\"config.enableCation\"\r\n >\r\n <div\r\n class=\"flex flex-row flex-wrap justify-content-between align-items-center grid formgrid p-fluid col-12\">\r\n <div class=\"col-12 flex flex-column\">\r\n <div\r\n *ngIf=\"config.title\"\r\n class=\"text-md font-bold my-3\"\r\n >\r\n {{ config.title }}\r\n </div>\r\n <div\r\n *ngIf=\"config.subtitle\"\r\n class=\"text-sm mb-4 font-medium\"\r\n >\r\n {{ config.subtitle }}\r\n </div>\r\n </div>\r\n\r\n <div [class]=\"\r\n tamanhoTela < 768\r\n ? 'flex flex-row align-items-center col-10 md:col-6 lg:col-4 justify-content-center'\r\n : 'flex flex-row align-items-center col-12 md:col-6 lg:col-4 justify-content-center input-search'\r\n \">\r\n\r\n <span\r\n *ngIf=\"config.enableFilter\"\r\n class=\"p-input-icon-left\"\r\n >\r\n <i class=\"pi pi-search\"></i>\r\n\r\n <input\r\n pInputText\r\n pAutoFocus\r\n [autofocus]=\"true\"\r\n type=\"text\"\r\n (input)=\"onGlobalFilter(tt, $event)\"\r\n placeholder=\"Pesquisar...\"\r\n class=\"h-2.5rem\"\r\n />\r\n </span>\r\n\r\n </div>\r\n\r\n <div class=\"flex flex-row col-1 justify-content-end p-0\">\r\n <div\r\n *ngFor=\"let action of config.actionsLote\"\r\n class=\"btns-options\"\r\n >\r\n <button\r\n id=\"actionLoteBtns\"\r\n pButton\r\n *ngIf=\"\r\n (selectedItems.length > 0 || action.showAcoesLote) &&\r\n exibirCampo(action, this.action)\r\n \"\r\n class=\"actionLoteBtns p-button-raised p-button-text\"\r\n (click)=\"action?.command(commandEvent); activeItemLote(selectedItems)\"\r\n [pTooltip]=\"retornarCampo(action, selectedItems, 'tooltip')\"\r\n [tooltipPosition]=\"'bottom'\"\r\n [style.backgroundColor]=\"\r\n retornarCampo(action, selectedItems, 'btnColor')\r\n \"\r\n [disabled]=\"retornarCampo(action, selectedItems, 'disabled')\"\r\n >\r\n <span\r\n class=\"material-symbols-outlined md-22\"\r\n [style.color]=\"\r\n retornarCampo(action, selectedItems, 'iconBtnColor')\r\n \"\r\n >\r\n {{ retornarCampo(action, selectedItems, \"icon\") }}\r\n </span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template\r\n pTemplate=\"header\"\r\n let-columns\r\n >\r\n <tr>\r\n <th\r\n *ngFor=\"let col of columns; index as i\"\r\n [ttSortableColumn]=\"col.field\"\r\n [ttSortableColumnDisabled]=\"col.sortable === false\"\r\n class=\"text-sm\"\r\n [style.width]=\"col.width\"\r\n >\r\n <div>\r\n <div [ngClass]=\"{ flex: i == 0, 'gap-3': i == 0 }\">\r\n <div *ngIf=\"i == 0 && config.enableSelect\">\r\n <p-treeTableHeaderCheckbox\r\n (click)=\"activeItemLote(selectedItems)\"></p-treeTableHeaderCheckbox>\r\n </div>\r\n\r\n <div\r\n [class]=\"\r\n centralizarColunas(col) && alignColunasHeader(col) == ''\r\n ? 'flex flex-row justify-content-center'\r\n : 'flex flex-row'\r\n \"\r\n [style]=\"alignColunasHeader(col)\"\r\n >\r\n <span>{{ col.header }}</span>\r\n <p-sortIcon\r\n *ngIf=\"col.sortable === true\"\r\n [field]=\"col.field\"\r\n style=\"font-size: 10px\"\r\n ></p-sortIcon>\r\n\r\n <span\r\n *ngIf=\"col.headerTooltip\"\r\n class=\"material-symbols-outlined flex align-items-center\"\r\n [pTooltip]=\"col.headerTooltip\"\r\n >info</span>\r\n </div>\r\n </div>\r\n </div>\r\n </th>\r\n </tr>\r\n </ng-template>\r\n\r\n <ng-template\r\n pTemplate=\"header\"\r\n let-columns\r\n >\r\n <tr>\r\n <th\r\n *ngFor=\"let col of columns\"\r\n ttResizableColumn\r\n [style.width]=\"col.width\"\r\n [style]=\"col.centralize ? 'text-align: center;' : ''\"\r\n >\r\n {{ col.header }} <br>\r\n </th>\r\n\r\n <th\r\n [style.width]=\"5\"\r\n *ngIf=\"config.actions.length > 0\"\r\n ></th>\r\n </tr>\r\n </ng-template>\r\n <ng-template\r\n pTemplate=\"body\"\r\n let-rowNode\r\n let-rowData=\"rowData\"\r\n let-columns=\"columns\"\r\n >\r\n <tr\r\n [ttRow]=\"rowNode\"\r\n (dblclick)=\"doubleClick($event, rowData)\"\r\n >\r\n <td\r\n *ngFor=\"let col of columns; let i = index\"\r\n [style]=\"returnStyleRow(col, rowNode)\"\r\n [style.position]=\"rowNode.level !== 0 ? 'sticky' : null\"\r\n [style.left.px]=\"rowNode.level !== 0 ? rowNode.level*30 : null\"\r\n >\r\n\r\n <div class=\"flex flex-row {{col.boolean ? 'justify-content-center' : '' }}\">\r\n <div\r\n class=\"w-full-h-full flex align-items-center\"\r\n *ngIf=\"i == 0\"\r\n >\r\n <p-treeTableCheckbox\r\n [disabled]=\"isDisabledCheckbox(rowData, rowNode)\"\r\n (click)=\"activeItemLote(selectedItems)\"\r\n [value]=\"rowNode\"\r\n *ngIf=\"config.enableSelect == true\"\r\n ></p-treeTableCheckbox>\r\n\r\n <p-treeTableToggler\r\n class=\"hiddenVisible\"\r\n [rowNode]=\"rowNode\"\r\n ></p-treeTableToggler>\r\n <!-- \r\n <p-treeTableToggler\r\n [rowNode]=\"rowNode\"\r\n *ngIf=\"!rightCollapse\"\r\n ></p-treeTableToggler>\r\n <p-treeTableToggler\r\n class=\"hiddenVisible\"\r\n [rowNode]=\"rowNode\"\r\n *ngIf=\"rightCollapse\"\r\n ></p-treeTableToggler> -->\r\n </div>\r\n\r\n\r\n <div class=\"flex flex-row align-items-center\">\r\n <div class=\"flex flex-row align-items-center justify-content-center\">\r\n\r\n <i\r\n *ngIf=\"col.boolean\"\r\n class=\"pi {{rowData[col.field] ? 'pi-check text-green-300' : ''}}\"\r\n style=\"font-size: 1.1rem;\"\r\n ></i>\r\n\r\n\r\n <div\r\n class=\"flex flex-column\"\r\n *ngIf=\"!col.boolean\"\r\n >\r\n <span class=\"m-0\">{{ rowData[col.field] }}</span>\r\n\r\n <p\r\n *ngIf=\"col.subtitle\"\r\n class=\"m-0 text-xs font-semibold\"\r\n >{{rowData[col.subtitle]}}</p>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <span *ngIf=\"col.template && validateShowTemplate(rowNode)\">\r\n <ng-container\r\n *ngIf=\"getCustomTemplate(col.template.name)\"\r\n [ngTemplateOutlet]=\"getCustomTemplate(col.template.name)\"\r\n [ngTemplateOutletContext]=\"{ $implicit: rowData }\"\r\n >\r\n </ng-container>\r\n </span>\r\n\r\n </td>\r\n\r\n\r\n <td\r\n style=\"border-left: none;\"\r\n *ngIf=\"config.actions.length > 0 || config.actionsPai\"\r\n >\r\n\r\n <div *ngIf=\"config.actions.length > 0 && validateActionPosition(rowNode)\">\r\n <div\r\n class=\"flex flex-row justify-content-center gap-1\"\r\n *ngIf=\"acoesLinhaTabela\"\r\n >\r\n <p-button\r\n *ngFor=\"let action of config.actions\"\r\n icon=\"pi {{action.icon}}\"\r\n [rounded]=\"true\"\r\n [severity]=\"action.severity ? action.severity : 'secondary'\"\r\n [style]=\"{width: '2rem', height: '2rem'}\"\r\n (onClick)=\"action.command($event)\"\r\n ></p-button>\r\n\r\n </div>\r\n\r\n <span\r\n *ngIf=\"!acoesLinhaTabela\"\r\n class=\"material-symbols-outlined cursor-pointer icon-more-horiz\"\r\n style=\"font-size: 22px\"\r\n (click)=\"menu.toggle($event); activeItem(rowData)\"\r\n >\r\n more_horiz\r\n </span>\r\n\r\n <div *ngFor=\"let action of config.actions\">\r\n {{ criarMenusModal(rowData) }}\r\n </div>\r\n\r\n <p-menu\r\n #menu\r\n [popup]=\"true\"\r\n [model]=\"menuItems\"\r\n appendTo=\"body\"\r\n ></p-menu>\r\n\r\n </div>\r\n\r\n <div *ngIf=\"config.actionsPai?.length > 0 && rowNode.level == 0\">\r\n\r\n <div\r\n *ngFor=\"let actionPai of config.actionsPai\"\r\n class=\"flex justify-content-end\"\r\n >\r\n\r\n <p-button\r\n icon=\"pi {{actionPai.icon}}\"\r\n [rounded]=\"true\"\r\n [severity]=\"actionPai.severity ? actionPai.severity : 'secondary'\"\r\n [style]=\"{width: '2rem', height: '2rem'}\"\r\n (onClick)=\"activeItem(rowData);actionPai.command($event);\"\r\n ></p-button>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </td>\r\n\r\n </tr>\r\n </ng-template>\r\n\r\n </p-treeTable>\r\n</div>", styles: ["@charset \"UTF-8\";:host ::ng-deep .p-treetable table{border-spacing:0 3px}#botaoFiltro:hover{color:#d4d4d4}:host ::ng-deep .p-treetable .p-treetable-header{background-color:#d1d1d1;padding:2px 0 0!important;border-radius:5px!important}:host ::ng-deep .p-treetable .p-treetable-thead>tr>th{background-color:#eaeaea;padding:.5rem!important;margin-bottom:-5px!important}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td{padding:.5rem!important}:host ::ng-deep .p-treetable .p-treetable-thead{border-spacing:0 1px!important}:host ::ng-deep .p-treetable .p-treetable-thead>tr>th:first-of-type{background-color:#eaeaea;padding:.5rem!important;border-radius:5px!important}:host ::ng-deep .p-treetable .p-treetable-thead>tr>th:last-child{background-color:#eaeaea;padding:.5rem!important;border-radius:0 5px 5px 0!important;-webkit-border-radius:0 5px 5px 0!important;-moz-border-radius:0 5px 5px 0!important;-ms-border-radius:0 5px 5px 0!important;-o-border-radius:0 5px 5px 0!important}:host ::ng-deep .p-treetable-scrollable-header-box{padding:0!important}:host ::ng-deep .p-treetable.p-treetable-sm .p-treetable-thead>tr>th{background-color:#f2f2f2}:host ::ng-deep .p-treetable.p-treetable-sm .p-treetable-thead>tr>th:first-of-type{border-radius:5px 0 0 5px}:host ::ng-deep .p-treetable.p-treetable-sm .p-treetable-thead>tr>th:last-child{border-radius:0 5px 5px 0}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td{border-bottom:1px solid #ddd!important;border-top:1px solid #ddd!important}:host ::ng-deep #tr-style{border-left:solid 4px #5289B4!important;border-radius:10px!important;display:block}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td:first-of-type{border-left:solid 4px #5289B4!important;border-right:none!important;border-radius:10px 0 0 10px!important;-webkit-border-radius:10px 0 0 10px!important;-moz-border-radius:10px 0 0 10px!important;-ms-border-radius:10px 0 0 10px!important;-o-border-radius:10px 0 0 10px!important}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td:last-child{border-radius:0 10px 10px 0!important;border-right:1px solid #ddd!important;-webkit-border-radius:0 10px 10px 0!important;-moz-border-radius:0 10px 10px 0!important;-ms-border-radius:0 10px 10px 0!important;-o-border-radius:0 10px 10px 0!important}:host ::ng-deep .actionBtns,:host ::ng-deep .actionLoteBtns{border-radius:50%;box-shadow:#0000003d 0 3px 8px;width:2.5rem!important;height:2.5rem!important;display:flex;align-items:center;justify-content:center}:host ::ng-deep .p-treetable table{border-collapse:separate!important;table-layout:auto!important}.icon-more-horiz:hover,.icon-more-horiz:focus{color:#5e5e5e;transform:scale(1.1);transition:color .3s,transform .3s}\n"] }]
186
+ args: [{ selector: 'kv-tree-table', template: "<div>\r\n <p-treeTable\r\n #tt\r\n [value]=\"dataSource\"\r\n [columns]=\"config.columns\"\r\n [resizableColumns]=\"true\"\r\n [tableStyle]=\"{'min-width': '50rem'}\"\r\n [resizableColumns]=\"true\"\r\n [styleClass]=\"gridLines ? 'p-treetable-gridlines' : ''\"\r\n (onLazyLoad)=\"paginate($event)\"\r\n >\r\n\r\n <ng-template\r\n pTemplate=\"caption\"\r\n *ngIf=\"config.enableCation\"\r\n >\r\n <div\r\n class=\"flex flex-row flex-wrap justify-content-between align-items-center grid formgrid p-fluid col-12\">\r\n <div class=\"col-12 flex flex-column\">\r\n <div\r\n *ngIf=\"config.title\"\r\n class=\"text-md font-bold my-3\"\r\n >\r\n {{ config.title }}\r\n </div>\r\n <div\r\n *ngIf=\"config.subtitle\"\r\n class=\"text-sm mb-4 font-medium\"\r\n >\r\n {{ config.subtitle }}\r\n </div>\r\n </div>\r\n\r\n <div [class]=\"\r\n tamanhoTela < 768\r\n ? 'flex flex-row align-items-center col-10 md:col-6 lg:col-4 justify-content-center'\r\n : 'flex flex-row align-items-center col-12 md:col-6 lg:col-4 justify-content-center input-search'\r\n \">\r\n\r\n <span\r\n *ngIf=\"config.enableFilter\"\r\n class=\"p-input-icon-left\"\r\n >\r\n <i class=\"pi pi-search\"></i>\r\n\r\n <input\r\n pInputText\r\n pAutoFocus\r\n [autofocus]=\"true\"\r\n type=\"text\"\r\n (input)=\"onGlobalFilter(tt, $event)\"\r\n placeholder=\"Pesquisar...\"\r\n class=\"h-2.5rem\"\r\n />\r\n </span>\r\n\r\n </div>\r\n\r\n <div class=\"flex flex-row col-1 justify-content-end p-0\">\r\n <div\r\n *ngFor=\"let action of config.actionsLote\"\r\n class=\"btns-options\"\r\n >\r\n <button\r\n id=\"actionLoteBtns\"\r\n pButton\r\n *ngIf=\"\r\n (selectedItems.length > 0 || action.showAcoesLote) &&\r\n exibirCampo(action, this.action)\r\n \"\r\n class=\"actionLoteBtns p-button-raised p-button-text\"\r\n (click)=\"action?.command(commandEvent); activeItemLote(selectedItems)\"\r\n [pTooltip]=\"retornarCampo(action, selectedItems, 'tooltip')\"\r\n [tooltipPosition]=\"'bottom'\"\r\n [style.backgroundColor]=\"\r\n retornarCampo(action, selectedItems, 'btnColor')\r\n \"\r\n [disabled]=\"retornarCampo(action, selectedItems, 'disabled')\"\r\n >\r\n <span\r\n class=\"material-symbols-outlined md-22\"\r\n [style.color]=\"\r\n retornarCampo(action, selectedItems, 'iconBtnColor')\r\n \"\r\n >\r\n {{ retornarCampo(action, selectedItems, \"icon\") }}\r\n </span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template\r\n pTemplate=\"header\"\r\n let-columns\r\n >\r\n <tr>\r\n <th\r\n *ngFor=\"let col of columns; index as i\"\r\n [ttSortableColumn]=\"col.field\"\r\n [ttSortableColumnDisabled]=\"col.sortable === false\"\r\n class=\"text-sm\"\r\n [style.width]=\"col.width\"\r\n >\r\n <div>\r\n <div [ngClass]=\"{ flex: i == 0, 'gap-3': i == 0 }\">\r\n <div *ngIf=\"i == 0 && config.enableSelect\">\r\n <p-treeTableHeaderCheckbox\r\n (click)=\"activeItemLote(selectedItems)\"></p-treeTableHeaderCheckbox>\r\n </div>\r\n\r\n <div\r\n [class]=\"\r\n centralizarColunas(col) && alignColunasHeader(col) == ''\r\n ? 'flex flex-row justify-content-center'\r\n : 'flex flex-row'\r\n \"\r\n [style]=\"alignColunasHeader(col)\"\r\n >\r\n <span>{{ col.header }}</span>\r\n <p-sortIcon\r\n *ngIf=\"col.sortable === true\"\r\n [field]=\"col.field\"\r\n style=\"font-size: 10px\"\r\n ></p-sortIcon>\r\n\r\n <span\r\n *ngIf=\"col.headerTooltip\"\r\n class=\"material-symbols-outlined flex align-items-center\"\r\n [pTooltip]=\"col.headerTooltip\"\r\n >info</span>\r\n </div>\r\n </div>\r\n </div>\r\n </th>\r\n </tr>\r\n </ng-template>\r\n\r\n <ng-template\r\n pTemplate=\"header\"\r\n let-columns\r\n >\r\n <tr>\r\n <th\r\n *ngFor=\"let col of columns\"\r\n ttResizableColumn\r\n [style.width]=\"col.width\"\r\n [style]=\"col.centralize ? 'text-align: center;' : ''\"\r\n >\r\n {{ col.header }} <br>\r\n </th>\r\n\r\n <th\r\n [style.width]=\"5\"\r\n *ngIf=\"config.actions.length > 0\"\r\n ></th>\r\n </tr>\r\n </ng-template>\r\n <ng-template\r\n pTemplate=\"body\"\r\n let-rowNode\r\n let-rowData=\"rowData\"\r\n let-columns=\"columns\"\r\n >\r\n <tr\r\n [ttRow]=\"rowNode\"\r\n (dblclick)=\"doubleClick($event, rowData)\"\r\n >\r\n <td\r\n *ngFor=\"let col of columns; let i = index\"\r\n [style]=\"returnStyleRow(col, rowNode)\"\r\n [style.position]=\"rowNode.level !== 0 ? 'sticky' : null\"\r\n [style.left.px]=\"rowNode.level !== 0 ? rowNode.level*30 : null\"\r\n >\r\n\r\n <div class=\"flex flex-row {{col.boolean ? 'justify-content-center' : '' }}\">\r\n <div\r\n class=\"w-full-h-full flex align-items-center\"\r\n *ngIf=\"i == 0\"\r\n >\r\n <p-treeTableCheckbox\r\n [disabled]=\"isDisabledCheckbox(rowData, rowNode)\"\r\n (click)=\"activeItemLote(selectedItems)\"\r\n [value]=\"rowNode\"\r\n *ngIf=\"config.enableSelect == true\"\r\n ></p-treeTableCheckbox>\r\n\r\n <p-treeTableToggler\r\n class=\"hiddenVisible\"\r\n [rowNode]=\"rowNode\"\r\n ></p-treeTableToggler>\r\n <!-- \r\n <p-treeTableToggler\r\n [rowNode]=\"rowNode\"\r\n *ngIf=\"!rightCollapse\"\r\n ></p-treeTableToggler>\r\n <p-treeTableToggler\r\n class=\"hiddenVisible\"\r\n [rowNode]=\"rowNode\"\r\n *ngIf=\"rightCollapse\"\r\n ></p-treeTableToggler> -->\r\n </div>\r\n\r\n\r\n <div class=\"flex flex-row align-items-center\">\r\n <div class=\"flex flex-row align-items-center justify-content-center\">\r\n\r\n <i\r\n *ngIf=\"col.boolean\"\r\n class=\"pi {{rowData[col.field] ? 'pi-check text-green-300' : ''}}\"\r\n style=\"font-size: 1.1rem;\"\r\n ></i>\r\n\r\n\r\n <div\r\n class=\"flex flex-column\"\r\n *ngIf=\"!col.boolean\"\r\n >\r\n <span class=\"m-0\">{{ rowData[col.field] }}</span>\r\n\r\n <p\r\n *ngIf=\"col.subtitle\"\r\n class=\"m-0 text-xs font-semibold\"\r\n >{{rowData[col.subtitle]}}</p>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <span *ngIf=\"col.template && validateShowTemplate(rowNode, col)\">\r\n <ng-container\r\n *ngIf=\"getCustomTemplate(col.template.name)\"\r\n [ngTemplateOutlet]=\"getCustomTemplate(col.template.name)\"\r\n [ngTemplateOutletContext]=\"{ $implicit: rowData }\"\r\n >\r\n </ng-container>\r\n </span>\r\n\r\n </td>\r\n\r\n\r\n <td\r\n style=\"border-left: none;\"\r\n *ngIf=\"config.actions.length > 0 || config.actionsPai\"\r\n >\r\n\r\n <div *ngIf=\"config.actions.length > 0 && validateActionPosition(rowNode)\">\r\n <div\r\n class=\"flex flex-row justify-content-center gap-1\"\r\n *ngIf=\"acoesLinhaTabela\"\r\n >\r\n <p-button\r\n *ngFor=\"let action of config.actions\"\r\n icon=\"pi {{action.icon}}\"\r\n [rounded]=\"true\"\r\n [severity]=\"action.severity ? action.severity : 'secondary'\"\r\n [style]=\"{width: '2rem', height: '2rem'}\"\r\n (onClick)=\"action.command($event)\"\r\n ></p-button>\r\n\r\n </div>\r\n\r\n <span\r\n *ngIf=\"!acoesLinhaTabela\"\r\n class=\"material-symbols-outlined cursor-pointer icon-more-horiz\"\r\n style=\"font-size: 22px\"\r\n (click)=\"menu.toggle($event); activeItem(rowData)\"\r\n >\r\n more_horiz\r\n </span>\r\n\r\n <div *ngFor=\"let action of config.actions\">\r\n {{ criarMenusModal(rowData) }}\r\n </div>\r\n\r\n <p-menu\r\n #menu\r\n [popup]=\"true\"\r\n [model]=\"menuItems\"\r\n appendTo=\"body\"\r\n ></p-menu>\r\n\r\n </div>\r\n\r\n <div *ngIf=\"config.actionsPai?.length > 0 && rowNode.level == 0\">\r\n\r\n <div\r\n *ngFor=\"let actionPai of config.actionsPai\"\r\n class=\"flex justify-content-end\"\r\n >\r\n\r\n <p-button\r\n icon=\"pi {{actionPai.icon}}\"\r\n [rounded]=\"true\"\r\n [severity]=\"actionPai.severity ? actionPai.severity : 'secondary'\"\r\n [style]=\"{width: '2rem', height: '2rem'}\"\r\n (onClick)=\"activeItem(rowData);actionPai.command($event);\"\r\n ></p-button>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </td>\r\n\r\n </tr>\r\n </ng-template>\r\n\r\n </p-treeTable>\r\n</div>", styles: ["@charset \"UTF-8\";:host ::ng-deep .p-treetable table{border-spacing:0 3px}#botaoFiltro:hover{color:#d4d4d4}:host ::ng-deep .p-treetable .p-treetable-header{background-color:#d1d1d1;padding:2px 0 0!important;border-radius:5px!important}:host ::ng-deep .p-treetable .p-treetable-thead>tr>th{background-color:#eaeaea;padding:.5rem!important;margin-bottom:-5px!important}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td{padding:.5rem!important}:host ::ng-deep .p-treetable .p-treetable-thead{border-spacing:0 1px!important}:host ::ng-deep .p-treetable .p-treetable-thead>tr>th:first-of-type{background-color:#eaeaea;padding:.5rem!important;border-radius:5px!important}:host ::ng-deep .p-treetable .p-treetable-thead>tr>th:last-child{background-color:#eaeaea;padding:.5rem!important;border-radius:0 5px 5px 0!important;-webkit-border-radius:0 5px 5px 0!important;-moz-border-radius:0 5px 5px 0!important;-ms-border-radius:0 5px 5px 0!important;-o-border-radius:0 5px 5px 0!important}:host ::ng-deep .p-treetable-scrollable-header-box{padding:0!important}:host ::ng-deep .p-treetable.p-treetable-sm .p-treetable-thead>tr>th{background-color:#f2f2f2}:host ::ng-deep .p-treetable.p-treetable-sm .p-treetable-thead>tr>th:first-of-type{border-radius:5px 0 0 5px}:host ::ng-deep .p-treetable.p-treetable-sm .p-treetable-thead>tr>th:last-child{border-radius:0 5px 5px 0}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td{border-bottom:1px solid #ddd!important;border-top:1px solid #ddd!important}:host ::ng-deep #tr-style{border-left:solid 4px #5289B4!important;border-radius:10px!important;display:block}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td:first-of-type{border-left:solid 4px #5289B4!important;border-right:none!important;border-radius:10px 0 0 10px!important;-webkit-border-radius:10px 0 0 10px!important;-moz-border-radius:10px 0 0 10px!important;-ms-border-radius:10px 0 0 10px!important;-o-border-radius:10px 0 0 10px!important}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td:last-child{border-radius:0 10px 10px 0!important;border-right:1px solid #ddd!important;-webkit-border-radius:0 10px 10px 0!important;-moz-border-radius:0 10px 10px 0!important;-ms-border-radius:0 10px 10px 0!important;-o-border-radius:0 10px 10px 0!important}:host ::ng-deep .actionBtns,:host ::ng-deep .actionLoteBtns{border-radius:50%;box-shadow:#0000003d 0 3px 8px;width:2.5rem!important;height:2.5rem!important;display:flex;align-items:center;justify-content:center}:host ::ng-deep .p-treetable table{border-collapse:separate!important;table-layout:auto!important}.icon-more-horiz:hover,.icon-more-horiz:focus{color:#5e5e5e;transform:scale(1.1);transition:color .3s,transform .3s}\n"] }]
187
187
  }], propDecorators: { config: [{
188
188
  type: Input
189
189
  }], dataSource: [{
@@ -212,4 +212,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
212
212
  type: HostListener,
213
213
  args: ['window:resize', ['$event']]
214
214
  }] } });
215
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi90cmVldGFibGUvdHJlZXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi90cmVldGFibGUvdHJlZXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBMEIsTUFBTSxlQUFlLENBQUM7QUFLOUgsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7Ozs7Ozs7Ozs7O0FBTzlFLE1BQU0sT0FBTyxrQkFBa0I7SUFML0I7UUFPRSxjQUFTLEdBQWlCLEVBQUUsQ0FBQztRQUU3QixrQkFBYSxHQUFRLEVBQUUsQ0FBQztRQUtmLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFDM0IscUJBQWdCLEdBQVksS0FBSyxDQUFDO1FBRWpDLGFBQVEsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNqRCxlQUFVLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbkQsaUJBQVksR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNyRCxxQkFBZ0IsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN6RCxxQkFBZ0IsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztLQThMcEU7SUE1TEMsUUFBUTtRQUNOLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztJQUN2QyxDQUFDO0lBTUQsY0FBYztRQUNaLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztJQUN2QyxDQUFDO0lBRU0sVUFBVSxDQUFDLE9BQVk7UUFD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QkFBZ0I7c0JBQXpCLE1BQU07Z0JBTTZCLFNBQVM7c0JBQTVDLGVBQWU7dUJBQUMsaUJBQWlCO2dCQUNkLFVBQVU7c0JBQTdCLEtBQUs7dUJBQUMsV0FBVztnQkFHbEIsY0FBYztzQkFEYixZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ29udGVudENoaWxkcmVuLCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE91dHB1dCwgUXVlcnlMaXN0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBLdk1lbnVJdGVtIH0gZnJvbSAnLi4vYXBpL2NvbXBvbmVudHMvdGFibGUva3YtbWVudWl0ZW0nO1xyXG5pbXBvcnQgeyBUcmVlVGFibGUgfSBmcm9tICdwcmltZW5nL3RyZWV0YWJsZSc7XHJcbmltcG9ydCB7IFRhYmxlUGFnaW5hdGUgfSBmcm9tICcuLi9hcGkvY29tcG9uZW50cy90YWJsZS90YWJsZS5wYWdpbmF0ZSc7XHJcbmltcG9ydCB7IE1lbnVJdGVtQ29tbWFuZEV2ZW50IH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgeyBUZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvdGVtcGxhdGUvdGVtcGxhdGUuZGlyZWN0aXZlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAna3YtdHJlZS10YWJsZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RyZWV0YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdHJlZXRhYmxlLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFRyZWV0YWJsZUNvbXBvbmVudCB7XHJcblxyXG4gIG1lbnVJdGVtczogS3ZNZW51SXRlbVtdID0gW107XHJcbiAgdGFtYW5ob1RlbGEhOiBudW1iZXI7XHJcbiAgc2VsZWN0ZWRJdGVtczogYW55ID0gW107XHJcbiAgY29tbWFuZEV2ZW50ITogTWVudUl0ZW1Db21tYW5kRXZlbnQ7XHJcblxyXG4gIEBJbnB1dCgpIGNvbmZpZyE6IGFueTtcclxuICBASW5wdXQoKSBkYXRhU291cmNlITogYW55O1xyXG4gIEBJbnB1dCgpIGdyaWRMaW5lczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGFjb2VzTGluaGFUYWJlbGE6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQE91dHB1dCgpIG9uRmlsdGVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25QYWdpbmF0ZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uQWN0aXZlSXRlbTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uQWN0aXZlSXRlbUxvdGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBkb3VibGVDbGlja0V2ZW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnRhbWFuaG9UZWxhID0gd2luZG93LmlubmVyV2lkdGg7XHJcbiAgfVxyXG5cclxuICBAQ29udGVudENoaWxkcmVuKFRlbXBsYXRlRGlyZWN0aXZlKSB0ZW1wbGF0ZXMhOiBRdWVyeUxpc3Q8YW55PjtcclxuICBASW5wdXQoJ3RlbXBsYXRlcycpIF90ZW1wbGF0ZXMhOiBhbnk7XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbJyRldmVudCddKVxyXG4gIG9uV2luZG93UmVzaXplKCkge1xyXG4gICAgdGhpcy50YW1hbmhvVGVsYSA9IHdpbmRvdy5pbm5lcldpZHRoO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFjdGl2ZUl0ZW0ocm93RGF0YTogYW55KSB7XHJcbiAgICB0aGlzLm9uQWN0aXZlSXRlbS5lbWl0KHJvd0RhdGEpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFjdGl2ZUl0ZW1Mb3RlKHJvd0RhdGE6IGFueSkge1xyXG4gICAgdGhpcy5vbkFjdGl2ZUl0ZW1Mb3RlLmVtaXQocm93RGF0YSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25HbG9iYWxGaWx0ZXIodGFibGU6IFRyZWVUYWJsZSwgZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICB0aGlzLm9uRmlsdGVyLmVtaXQoKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZSk7XHJcbiAgICB0YWJsZS5maWx0ZXJHbG9iYWwoKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZSwgJ2NvbnRhaW5zJyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcGFnaW5hdGUoJGV2ZW50OiBhbnkpIHtcclxuICAgIGlmICgkZXZlbnQpIHtcclxuICAgICAgbGV0IHBhZ2luYUluaWNpYWwgPVxyXG4gICAgICAgICgkZXZlbnQ/LmZpcnN0ID4gMCA/ICRldmVudC5maXJzdCAvICRldmVudC5yb3dzIDogJGV2ZW50LmZpcnN0KSArIDE7XHJcbiAgICAgIGxldCB0ZXJtb1Blc3F1aXNhID0gJyc7XHJcbiAgICAgIGxldCBvcmRlbmFjYW8gPSAnJztcclxuXHJcbiAgICAgIGlmICgkZXZlbnQuZ2xvYmFsRmlsdGVyKSB0ZXJtb1Blc3F1aXNhID0gJGV2ZW50Lmdsb2JhbEZpbHRlcjtcclxuXHJcbiAgICAgIGlmICgkZXZlbnQuc29ydEZpZWxkKVxyXG4gICAgICAgIG9yZGVuYWNhbyA9IGAkeyRldmVudC5zb3J0RmllbGR9ICR7JGV2ZW50LnNvcnRPcmRlciA9PT0gMSA/ICdBU0MnIDogJ0RFU0MnXHJcbiAgICAgICAgICB9YDtcclxuXHJcbiAgICAgIGNvbnN0IG9iamV0bzogVGFibGVQYWdpbmF0ZSA9IHtcclxuICAgICAgICBwYWdpbmFJbmljaWFsOiBwYWdpbmFJbmljaWFsLFxyXG4gICAgICAgIHRhbWFuaG9QYWdpbmE6ICRldmVudC5yb3dzLFxyXG4gICAgICAgIHRlcm1vUGVzcXVpc2E6IHRlcm1vUGVzcXVpc2EsXHJcbiAgICAgICAgb3JkZW5hY2FvOiBvcmRlbmFjYW8sXHJcbiAgICAgIH07XHJcblxyXG4gICAgICB0aGlzLm9uUGFnaW5hdGUuZW1pdChvYmpldG8pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmV0dXJuU3R5bGVSb3coY29sOiBhbnksIHJvd05vZGU6IGFueSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBpc0ZpcnN0Q29sdW1uID0gY29sLmZpZWxkID09PSB0aGlzLmNvbmZpZy5jb2x1bW5zWzBdLmZpZWxkO1xyXG4gICAgY29uc3QgYmFzZU9wYWNpdHkgPSAxO1xyXG4gICAgY29uc3QgbWF4TGV2ZWxzID0gNDtcclxuXHJcbiAgICBpZiAoaXNGaXJzdENvbHVtbiAmJiByb3dOb2RlLmxldmVsID49IDApIHtcclxuICAgICAgY29uc3Qgb3BhY2l0eSA9IGJhc2VPcGFjaXR5IC0gKHJvd05vZGUubGV2ZWwgLyBtYXhMZXZlbHMpO1xyXG5cclxuICAgICAgcmV0dXJuIGBib3JkZXItbGVmdDogc29saWQgNHB4IHJnYmEoNTksIDExMCwgMTU4LCAke29wYWNpdHl9KSAhaW1wb3J0YW50O2A7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHJvd05vZGUubGV2ZWwgPT0gMClcclxuICAgICAgcmV0dXJuICdib3JkZXItbGVmdDogbm9uZSAhaW1wb3J0YW50OyBib3JkZXItcmlnaHQ6IG5vbmUgIWltcG9ydGFudCdcclxuXHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG5cclxuICBhbGlnbkNvbHVuYXNIZWFkZXIoY29sOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgaWYgKGNvbC5hbGlnbikge1xyXG4gICAgICBpZiAoY29sLmFsaWduID09ICdyaWdodCcpIHJldHVybiAnanVzdGlmeS1jb250ZW50OiBlbmQnO1xyXG4gICAgICBlbHNlIHJldHVybiAnJztcclxuICAgIH0gZWxzZSByZXR1cm4gJyc7XHJcbiAgfVxyXG4gIGNlbnRyYWxpemFyQ29sdW5hcyhjb2w6IGFueSk6IHN0cmluZyB7XHJcbiAgICBpZiAoY29sLmNlbnRyYWxpemUpIHtcclxuICAgICAgcmV0dXJuICd0ZXh0LWFsaWduOiBjZW50ZXI7ICc7XHJcbiAgICB9IGVsc2UgcmV0dXJuICcnO1xyXG4gIH1cclxuICBhbGlnbkNvbHVuYXMoY29sOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgaWYgKGNvbC5hbGlnbikge1xyXG4gICAgICByZXR1cm4gYHRleHQtYWxpZ246ICR7Y29sLmFsaWdufWA7XHJcbiAgICB9IGVsc2UgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcbiAgY3JpYXJNZW51c01vZGFsKGRhdGE6IGFueSkge1xyXG4gICAgaWYgKHRoaXMuY29uZmlnLmFjdGlvbnMgJiYgZGF0YSkge1xyXG4gICAgICBjb25zdCBpdGVtcyA9IHRoaXMuY29uZmlnLmFjdGlvbnMubWFwKChhY3Rpb246IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGljb24gPSB0aGlzLnJldG9ybmFyQ2FtcG8oYWN0aW9uLCBkYXRhLCAnaWNvbicpO1xyXG4gICAgICAgIGNvbnN0IHRvb2x0aXAgPSB0aGlzLnJldG9ybmFyQ2FtcG8oYWN0aW9uLCBkYXRhLCAndG9vbHRpcCcpO1xyXG4gICAgICAgIGNvbnN0IHRvb2x0aXBQb3NpdGlvbiA9IHRoaXMucmV0b3JuYXJDYW1wbyhcclxuICAgICAgICAgIGFjdGlvbixcclxuICAgICAgICAgIGRhdGEsXHJcbiAgICAgICAgICAndG9vbHRpcFBvc2l0aW9uJ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgY29uc3QgbGFiZWwgPSB0aGlzLnJldG9ybmFyQ2FtcG8oYWN0aW9uLCBkYXRhLCAnbGFiZWwnKTtcclxuICAgICAgICBjb25zdCBjb21tYW5kOiBhbnkgPSB0aGlzLnJldG9ybmFyQ2FtcG8oYWN0aW9uLCBkYXRhLCAnY29tbWFuZCcpO1xyXG4gICAgICAgIGNvbnN0IHZpc2libGU6IGJvb2xlYW4gPSBhY3Rpb24udmlzaWJsZSA/IGFjdGlvbi52aXNpYmxlKGRhdGEpIDogdHJ1ZTtcclxuICAgICAgICBjb25zdCBkaXNhYmxlZDogYm9vbGVhbiA9IGFjdGlvbi5kaXNhYmxlZFxyXG4gICAgICAgICAgPyBhY3Rpb24uZGlzYWJsZWQoZGF0YSlcclxuICAgICAgICAgIDogZmFsc2U7XHJcblxyXG4gICAgICAgIGNvbnN0IG1lbnVJbnNlcnQ6IEt2TWVudUl0ZW0gPSB7XHJcbiAgICAgICAgICBsYWJlbCxcclxuICAgICAgICAgIGljb24sXHJcbiAgICAgICAgICB0b29sdGlwLFxyXG4gICAgICAgICAgdG9vbHRpcFBvc2l0aW9uLFxyXG4gICAgICAgICAgY29tbWFuZCxcclxuICAgICAgICAgIGRpc2FibGVkLFxyXG4gICAgICAgICAgdmlzaWJsZSxcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBsZXQgaXRlbSA9IHRoaXMubWVudUl0ZW1zLmZpbHRlcihcclxuICAgICAgICAgICh4KSA9PiB4LmNvbW1hbmQgPT0gbWVudUluc2VydC5jb21tYW5kXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgaWYgKGl0ZW0ubGVuZ3RoID09IDApIHRoaXMubWVudUl0ZW1zLnB1c2gobWVudUluc2VydCk7XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBpZiAobWVudUluc2VydC5sYWJlbCAhPSBpdGVtWzBdLmxhYmVsKSB7XHJcbiAgICAgICAgICAgIGxldCBpbmRleCA9IHRoaXMubWVudUl0ZW1zLmluZGV4T2YoaXRlbVswXSk7XHJcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1zLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKG1lbnVJbnNlcnQudmlzaWJsZSAhPSBpdGVtWzBdLnZpc2libGUpIHtcclxuICAgICAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5tZW51SXRlbXMuaW5kZXhPZihpdGVtWzBdKTtcclxuICAgICAgICAgICAgdGhpcy5tZW51SXRlbXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAobWVudUluc2VydC5kaXNhYmxlZCAhPSBpdGVtWzBdLmRpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIGxldCBpbmRleCA9IHRoaXMubWVudUl0ZW1zLmluZGV4T2YoaXRlbVswXSk7XHJcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1zLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJldG9ybmFyQ2FtcG8oYWN0aW9uOiBLdk1lbnVJdGVtLCByb3dEYXRhOiBhbnksIGZpZWxkOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgX2Z1bmN0aW9uID0gYWN0aW9uLmR5bmFtaWNmaWVsZHNcclxuICAgICAgPyAoYWN0aW9uLmR5bmFtaWNmaWVsZHNbZmllbGRdIGFzIEZ1bmN0aW9uKVxyXG4gICAgICA6IG51bGw7XHJcbiAgICBjb25zdCBfZmllbGQ6IHN0cmluZyA9IF9mdW5jdGlvblxyXG4gICAgICA/IF9mdW5jdGlvbi5hcHBseShhY3Rpb24sIFtyb3dEYXRhXSlcclxuICAgICAgOiBhY3Rpb25bZmllbGRdO1xyXG4gICAgcmV0dXJuIF9maWVsZDtcclxuICB9XHJcblxyXG4gIGV4aWJpckNhbXBvKGZpZWxkOiBhbnksIHJvd0RhdGE6IGFueSkge1xyXG4gICAgbGV0IHZpc2libGUgPSBmaWVsZC52aXNpYmxlID8gZmllbGQudmlzaWJsZShyb3dEYXRhKSA6IHRydWU7XHJcbiAgICByZXR1cm4gdmlzaWJsZTtcclxuICB9XHJcblxyXG4gIHZhbGlkYXRlQWN0aW9uUG9zaXRpb24ocm93Tm9kZTogYW55KTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5jb25maWcuYWN0aW9uc1BhaSAmJiByb3dOb2RlLmxldmVsID09IDApIHJldHVybiBmYWxzZTtcclxuICAgIGVsc2UgcmV0dXJuIHRydWVcclxuICB9XHJcblxyXG5cclxuICBkb3VibGVDbGljayhlOiBhbnksIHJvd0RhdGE6IGFueSkge1xyXG5cclxuICAgIGxldCBldmVudERvdWJsZUNsaWNrID0geyBldmVudDogZSwgcm93RGF0YTogcm93RGF0YSB9O1xyXG5cclxuICAgIGxldCBhcnJheTogc3RyaW5nW10gPSBbXTtcclxuICAgIGUudGFyZ2V0LmNsYXNzTGlzdC5mb3JFYWNoKCh4OiBhbnkpID0+IGFycmF5LnB1c2goeCkpO1xyXG5cclxuICAgIC8vIGlmIChhcnJheS5maW5kKCh4OiBhbnkpID0+IHggPT0gJ25nLXN0YXItaW5zZXJ0ZWQnKSAhPSB1bmRlZmluZWQpXHJcbiAgICB0aGlzLmRvdWJsZUNsaWNrRXZlbnQuZW1pdChldmVudERvdWJsZUNsaWNrKTtcclxuICB9XHJcblxyXG4gIGlzRGlzYWJsZWRDaGVja2JveChyb3dEYXRhOiBhbnksIHJvd05vZGU6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmRpc2FibGVDb250cm9sQ2hlY2tib3hGdW5jdGlvblxyXG4gICAgICA/IHRoaXMuY29uZmlnLmRpc2FibGVDb250cm9sQ2hlY2tib3hGdW5jdGlvbihyb3dEYXRhLCByb3dOb2RlKVxyXG4gICAgICA6IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q3VzdG9tVGVtcGxhdGUodGVtcGxhdGVuYW1lOiBzdHJpbmcpOiBUZW1wbGF0ZVJlZjxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl90ZW1wbGF0ZXNbdGVtcGxhdGVuYW1lXTtcclxuICB9XHJcblxyXG4gIHZhbGlkYXRlU2hvd1RlbXBsYXRlKHJvd05vZGU6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuY29uZmlnLnRlbXBsYXRlT25seSkge1xyXG4gICAgICBpZiAodGhpcy5jb25maWcudGVtcGxhdGVPbmx5ID09PSAncGFpJykge1xyXG4gICAgICAgIHJldHVybiByb3dOb2RlLmxldmVsID09PSAwO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmNvbmZpZy50ZW1wbGF0ZU9ubHkgPT09ICdmaWxobycpIHtcclxuICAgICAgICByZXR1cm4gcm93Tm9kZS5sZXZlbCA9PT0gMTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXY+XHJcbiAgICA8cC10cmVlVGFibGVcclxuICAgICAgICAjdHRcclxuICAgICAgICBbdmFsdWVdPVwiZGF0YVNvdXJjZVwiXHJcbiAgICAgICAgW2NvbHVtbnNdPVwiY29uZmlnLmNvbHVtbnNcIlxyXG4gICAgICAgIFtyZXNpemFibGVDb2x1bW5zXT1cInRydWVcIlxyXG4gICAgICAgIFt0YWJsZVN0eWxlXT1cInsnbWluLXdpZHRoJzogJzUwcmVtJ31cIlxyXG4gICAgICAgIFtyZXNpemFibGVDb2x1bW5zXT1cInRydWVcIlxyXG4gICAgICAgIFtzdHlsZUNsYXNzXT1cImdyaWRMaW5lcyA/ICdwLXRyZWV0YWJsZS1ncmlkbGluZXMnIDogJydcIlxyXG4gICAgICAgIChvbkxhenlMb2FkKT1cInBhZ2luYXRlKCRldmVudClcIlxyXG4gICAgPlxyXG5cclxuICAgICAgICA8bmctdGVtcGxhdGVcclxuICAgICAgICAgICAgcFRlbXBsYXRlPVwiY2FwdGlvblwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiY29uZmlnLmVuYWJsZUNhdGlvblwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXggZmxleC1yb3cgZmxleC13cmFwIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBncmlkIGZvcm1ncmlkIHAtZmx1aWQgY29sLTEyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGZsZXggZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29uZmlnLnRpdGxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LW1kIGZvbnQtYm9sZCBteS0zXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbmZpZy50aXRsZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb25maWcuc3VidGl0bGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtc20gbWItNCBmb250LW1lZGl1bVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBjb25maWcuc3VidGl0bGUgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgW2NsYXNzXT1cIlxyXG4gICAgICAgICAgICB0YW1hbmhvVGVsYSA8IDc2OFxyXG4gICAgICAgICAgICAgID8gJ2ZsZXggZmxleC1yb3cgYWxpZ24taXRlbXMtY2VudGVyIGNvbC0xMCBtZDpjb2wtNiBsZzpjb2wtNCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyJ1xyXG4gICAgICAgICAgICAgIDogJ2ZsZXggZmxleC1yb3cgYWxpZ24taXRlbXMtY2VudGVyIGNvbC0xMiBtZDpjb2wtNiBsZzpjb2wtNCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGlucHV0LXNlYXJjaCdcclxuICAgICAgICAgIFwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbmZpZy5lbmFibGVGaWx0ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtaW5wdXQtaWNvbi1sZWZ0XCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktc2VhcmNoXCI+PC9pPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwSW5wdXRUZXh0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwQXV0b0ZvY3VzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXV0b2ZvY3VzXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlucHV0KT1cIm9uR2xvYmFsRmlsdGVyKHR0LCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiUGVzcXVpc2FyLi4uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaC0yLjVyZW1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBjb2wtMSBqdXN0aWZ5LWNvbnRlbnQtZW5kIHAtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBjb25maWcuYWN0aW9uc0xvdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0bnMtb3B0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImFjdGlvbkxvdGVCdG5zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBCdXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAoc2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAwIHx8IGFjdGlvbi5zaG93QWNvZXNMb3RlKSAmJlxyXG4gICAgICAgICAgICAgICAgZXhpYmlyQ2FtcG8oYWN0aW9uLCB0aGlzLmFjdGlvbilcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb25Mb3RlQnRucyBwLWJ1dHRvbi1yYWlzZWQgcC1idXR0b24tdGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aW9uPy5jb21tYW5kKGNvbW1hbmRFdmVudCk7IGFjdGl2ZUl0ZW1Mb3RlKHNlbGVjdGVkSXRlbXMpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJyZXRvcm5hckNhbXBvKGFjdGlvbiwgc2VsZWN0ZWRJdGVtcywgJ3Rvb2x0aXAnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cIidib3R0b20nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiXHJcbiAgICAgICAgICAgICAgICByZXRvcm5hckNhbXBvKGFjdGlvbiwgc2VsZWN0ZWRJdGVtcywgJ2J0bkNvbG9yJylcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInJldG9ybmFyQ2FtcG8oYWN0aW9uLCBzZWxlY3RlZEl0ZW1zLCAnZGlzYWJsZWQnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIG1kLTIyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiXHJcbiAgICAgICAgICAgICAgICAgIHJldG9ybmFyQ2FtcG8oYWN0aW9uLCBzZWxlY3RlZEl0ZW1zLCAnaWNvbkJ0bkNvbG9yJylcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcmV0b3JuYXJDYW1wbyhhY3Rpb24sIHNlbGVjdGVkSXRlbXMsIFwiaWNvblwiKSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICA8bmctdGVtcGxhdGVcclxuICAgICAgICAgICAgcFRlbXBsYXRlPVwiaGVhZGVyXCJcclxuICAgICAgICAgICAgbGV0LWNvbHVtbnNcclxuICAgICAgICA+XHJcbiAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgIDx0aFxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uczsgaW5kZXggYXMgaVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3R0U29ydGFibGVDb2x1bW5dPVwiY29sLmZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICBbdHRTb3J0YWJsZUNvbHVtbkRpc2FibGVkXT1cImNvbC5zb3J0YWJsZSA9PT0gZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1zbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImNvbC53aWR0aFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJ7IGZsZXg6IGkgPT0gMCwgJ2dhcC0zJzogaSA9PSAwIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpID09IDAgJiYgY29uZmlnLmVuYWJsZVNlbGVjdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLXRyZWVUYWJsZUhlYWRlckNoZWNrYm94XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmVJdGVtTG90ZShzZWxlY3RlZEl0ZW1zKVwiPjwvcC10cmVlVGFibGVIZWFkZXJDaGVja2JveD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2VudHJhbGl6YXJDb2x1bmFzKGNvbCkgJiYgYWxpZ25Db2x1bmFzSGVhZGVyKGNvbCkgPT0gJydcclxuICAgICAgICAgICAgICAgICAgICAgID8gJ2ZsZXggZmxleC1yb3cganVzdGlmeS1jb250ZW50LWNlbnRlcidcclxuICAgICAgICAgICAgICAgICAgICAgIDogJ2ZsZXggZmxleC1yb3cnXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cImFsaWduQ29sdW5hc0hlYWRlcihjb2wpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBjb2wuaGVhZGVyIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLXNvcnRJY29uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29sLnNvcnRhYmxlID09PSB0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZpZWxkXT1cImNvbC5maWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiZm9udC1zaXplOiAxMHB4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9wLXNvcnRJY29uPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbC5oZWFkZXJUb29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BUb29sdGlwXT1cImNvbC5oZWFkZXJUb29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+aW5mbzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgPG5nLXRlbXBsYXRlXHJcbiAgICAgICAgICAgIHBUZW1wbGF0ZT1cImhlYWRlclwiXHJcbiAgICAgICAgICAgIGxldC1jb2x1bW5zXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICA8dGhcclxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgIHR0UmVzaXphYmxlQ29sdW1uXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImNvbC53aWR0aFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cImNvbC5jZW50cmFsaXplID8gJ3RleHQtYWxpZ246IGNlbnRlcjsnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGNvbC5oZWFkZXIgfX0gPGJyPlxyXG4gICAgICAgICAgICAgICAgPC90aD5cclxuXHJcbiAgICAgICAgICAgICAgICA8dGhcclxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb25maWcuYWN0aW9ucy5sZW5ndGggPiAwXCJcclxuICAgICAgICAgICAgICAgID48L3RoPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlXHJcbiAgICAgICAgICAgIHBUZW1wbGF0ZT1cImJvZHlcIlxyXG4gICAgICAgICAgICBsZXQtcm93Tm9kZVxyXG4gICAgICAgICAgICBsZXQtcm93RGF0YT1cInJvd0RhdGFcIlxyXG4gICAgICAgICAgICBsZXQtY29sdW1ucz1cImNvbHVtbnNcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgICAgPHRyXHJcbiAgICAgICAgICAgICAgICBbdHRSb3ddPVwicm93Tm9kZVwiXHJcbiAgICAgICAgICAgICAgICAoZGJsY2xpY2spPVwiZG91YmxlQ2xpY2soJGV2ZW50LCByb3dEYXRhKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDx0ZFxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uczsgIGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCJyZXR1cm5TdHlsZVJvdyhjb2wsIHJvd05vZGUpXCJcclxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUucG9zaXRpb25dPVwicm93Tm9kZS5sZXZlbCAhPT0gMCA/ICdzdGlja3knIDogbnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmxlZnQucHhdPVwicm93Tm9kZS5sZXZlbCAhPT0gMCA/IHJvd05vZGUubGV2ZWwqMzAgOiBudWxsXCJcclxuICAgICAgICAgICAgICAgID5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgIHt7Y29sLmJvb2xlYW4gPyAnanVzdGlmeS1jb250ZW50LWNlbnRlcicgOiAnJyB9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInctZnVsbC1oLWZ1bGwgZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpID09IDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC10cmVlVGFibGVDaGVja2JveFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkQ2hlY2tib3gocm93RGF0YSwgcm93Tm9kZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmVJdGVtTG90ZShzZWxlY3RlZEl0ZW1zKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInJvd05vZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29uZmlnLmVuYWJsZVNlbGVjdCA9PSB0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3AtdHJlZVRhYmxlQ2hlY2tib3g+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtdHJlZVRhYmxlVG9nZ2xlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaGlkZGVuVmlzaWJsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Jvd05vZGVdPVwicm93Tm9kZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9wLXRyZWVUYWJsZVRvZ2dsZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtdHJlZVRhYmxlVG9nZ2xlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyb3dOb2RlXT1cInJvd05vZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIXJpZ2h0Q29sbGFwc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvcC10cmVlVGFibGVUb2dnbGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtdHJlZVRhYmxlVG9nZ2xlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaGlkZGVuVmlzaWJsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Jvd05vZGVdPVwicm93Tm9kZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJyaWdodENvbGxhcHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3AtdHJlZVRhYmxlVG9nZ2xlcj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2wuYm9vbGVhblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicGkge3tyb3dEYXRhW2NvbC5maWVsZF0gPyAncGktY2hlY2sgdGV4dC1ncmVlbi0zMDAnIDogJyd9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiZm9udC1zaXplOiAxLjFyZW07XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9pPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXggZmxleC1jb2x1bW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFjb2wuYm9vbGVhblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm0tMFwiPnt7IHJvd0RhdGFbY29sLmZpZWxkXSB9fTwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbC5zdWJ0aXRsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm0tMCB0ZXh0LXhzIGZvbnQtc2VtaWJvbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3tyb3dEYXRhW2NvbC5zdWJ0aXRsZV19fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb2wudGVtcGxhdGUgJiYgdmFsaWRhdGVTaG93VGVtcGxhdGUocm93Tm9kZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJnZXRDdXN0b21UZW1wbGF0ZShjb2wudGVtcGxhdGUubmFtZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZ2V0Q3VzdG9tVGVtcGxhdGUoY29sLnRlbXBsYXRlLm5hbWUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogcm93RGF0YSB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgPHRkXHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJib3JkZXItbGVmdDogbm9uZTtcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29uZmlnLmFjdGlvbnMubGVuZ3RoID4gMCB8fCBjb25maWcuYWN0aW9uc1BhaVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjb25maWcuYWN0aW9ucy5sZW5ndGggPiAwICYmIHZhbGlkYXRlQWN0aW9uUG9zaXRpb24ocm93Tm9kZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGp1c3RpZnktY29udGVudC1jZW50ZXIgZ2FwLTFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhY29lc0xpbmhhVGFiZWxhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBjb25maWcuYWN0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cInBpIHt7YWN0aW9uLmljb259fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JvdW5kZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NldmVyaXR5XT1cImFjdGlvbi5zZXZlcml0eSA/IGFjdGlvbi5zZXZlcml0eSA6ICdzZWNvbmRhcnknXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGVdPVwie3dpZHRoOiAnMnJlbScsIGhlaWdodDogJzJyZW0nfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiYWN0aW9uLmNvbW1hbmQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9wLWJ1dHRvbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWFjb2VzTGluaGFUYWJlbGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGN1cnNvci1wb2ludGVyIGljb24tbW9yZS1ob3JpelwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImZvbnQtc2l6ZTogMjJweFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwibWVudS50b2dnbGUoJGV2ZW50KTsgYWN0aXZlSXRlbShyb3dEYXRhKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vcmVfaG9yaXpcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIGNvbmZpZy5hY3Rpb25zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjcmlhck1lbnVzTW9kYWwocm93RGF0YSkgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cC1tZW51XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjbWVudVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BvcHVwXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW21vZGVsXT1cIm1lbnVJdGVtc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRUbz1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9wLW1lbnU+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY29uZmlnLmFjdGlvbnNQYWk/Lmxlbmd0aCA+IDAgJiYgcm93Tm9kZS5sZXZlbCA9PSAwXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgYWN0aW9uUGFpIG9mIGNvbmZpZy5hY3Rpb25zUGFpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJwaSB7e2FjdGlvblBhaS5pY29ufX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyb3VuZGVkXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZXZlcml0eV09XCJhY3Rpb25QYWkuc2V2ZXJpdHkgPyBhY3Rpb25QYWkuc2V2ZXJpdHkgOiAnc2Vjb25kYXJ5J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cInt3aWR0aDogJzJyZW0nLCBoZWlnaHQ6ICcycmVtJ31cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cImFjdGl2ZUl0ZW0ocm93RGF0YSk7YWN0aW9uUGFpLmNvbW1hbmQoJGV2ZW50KTtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvcC1idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8L3AtdHJlZVRhYmxlPlxyXG48L2Rpdj4iXX0=
215
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi90cmVldGFibGUvdHJlZXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi90cmVldGFibGUvdHJlZXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBMEIsTUFBTSxlQUFlLENBQUM7QUFLOUgsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7Ozs7Ozs7Ozs7O0FBTzlFLE1BQU0sT0FBTyxrQkFBa0I7SUFML0I7UUFPRSxjQUFTLEdBQWlCLEVBQUUsQ0FBQztRQUU3QixrQkFBYSxHQUFRLEVBQUUsQ0FBQztRQUtmLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFDM0IscUJBQWdCLEdBQVksS0FBSyxDQUFDO1FBRWpDLGFBQVEsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNqRCxlQUFVLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbkQsaUJBQVksR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNyRCxxQkFBZ0IsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN6RCxxQkFBZ0IsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztLQThMcEU7SUE1TEMsUUFBUTtRQUNOLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztJQUN2QyxDQUFDO0lBTUQsY0FBYztRQUNaLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztJQUN2QyxDQUFDO0lBRU0sVUFBVSxDQUFDLE9BQVk7UUFD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QU02QixTQUFTO3NCQUE1QyxlQUFlO3VCQUFDLGlCQUFpQjtnQkFDZCxVQUFVO3NCQUE3QixLQUFLO3VCQUFDLFdBQVc7Z0JBR2xCLGNBQWM7c0JBRGIsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENvbnRlbnRDaGlsZHJlbiwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPdXRwdXQsIFF1ZXJ5TGlzdCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgS3ZNZW51SXRlbSB9IGZyb20gJy4uL2FwaS9jb21wb25lbnRzL3RhYmxlL2t2LW1lbnVpdGVtJztcclxuaW1wb3J0IHsgVHJlZVRhYmxlIH0gZnJvbSAncHJpbWVuZy90cmVldGFibGUnO1xyXG5pbXBvcnQgeyBUYWJsZVBhZ2luYXRlIH0gZnJvbSAnLi4vYXBpL2NvbXBvbmVudHMvdGFibGUvdGFibGUucGFnaW5hdGUnO1xyXG5pbXBvcnQgeyBNZW51SXRlbUNvbW1hbmRFdmVudCB9IGZyb20gJ3ByaW1lbmcvYXBpJztcclxuaW1wb3J0IHsgVGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL3RlbXBsYXRlL3RlbXBsYXRlLmRpcmVjdGl2ZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2t2LXRyZWUtdGFibGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90cmVldGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RyZWV0YWJsZS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcmVldGFibGVDb21wb25lbnQge1xyXG5cclxuICBtZW51SXRlbXM6IEt2TWVudUl0ZW1bXSA9IFtdO1xyXG4gIHRhbWFuaG9UZWxhITogbnVtYmVyO1xyXG4gIHNlbGVjdGVkSXRlbXM6IGFueSA9IFtdO1xyXG4gIGNvbW1hbmRFdmVudCE6IE1lbnVJdGVtQ29tbWFuZEV2ZW50O1xyXG5cclxuICBASW5wdXQoKSBjb25maWchOiBhbnk7XHJcbiAgQElucHV0KCkgZGF0YVNvdXJjZSE6IGFueTtcclxuICBASW5wdXQoKSBncmlkTGluZXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBhY29lc0xpbmhhVGFiZWxhOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBPdXRwdXQoKSBvbkZpbHRlcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uUGFnaW5hdGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvbkFjdGl2ZUl0ZW06IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvbkFjdGl2ZUl0ZW1Mb3RlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZG91YmxlQ2xpY2tFdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy50YW1hbmhvVGVsYSA9IHdpbmRvdy5pbm5lcldpZHRoO1xyXG4gIH1cclxuXHJcbiAgQENvbnRlbnRDaGlsZHJlbihUZW1wbGF0ZURpcmVjdGl2ZSkgdGVtcGxhdGVzITogUXVlcnlMaXN0PGFueT47XHJcbiAgQElucHV0KCd0ZW1wbGF0ZXMnKSBfdGVtcGxhdGVzITogYW55O1xyXG5cclxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcclxuICBvbldpbmRvd1Jlc2l6ZSgpIHtcclxuICAgIHRoaXMudGFtYW5ob1RlbGEgPSB3aW5kb3cuaW5uZXJXaWR0aDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhY3RpdmVJdGVtKHJvd0RhdGE6IGFueSkge1xyXG4gICAgdGhpcy5vbkFjdGl2ZUl0ZW0uZW1pdChyb3dEYXRhKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhY3RpdmVJdGVtTG90ZShyb3dEYXRhOiBhbnkpIHtcclxuICAgIHRoaXMub25BY3RpdmVJdGVtTG90ZS5lbWl0KHJvd0RhdGEpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uR2xvYmFsRmlsdGVyKHRhYmxlOiBUcmVlVGFibGUsIGV2ZW50OiBFdmVudCkge1xyXG4gICAgdGhpcy5vbkZpbHRlci5lbWl0KChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWUpO1xyXG4gICAgdGFibGUuZmlsdGVyR2xvYmFsKChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWUsICdjb250YWlucycpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHBhZ2luYXRlKCRldmVudDogYW55KSB7XHJcbiAgICBpZiAoJGV2ZW50KSB7XHJcbiAgICAgIGxldCBwYWdpbmFJbmljaWFsID1cclxuICAgICAgICAoJGV2ZW50Py5maXJzdCA+IDAgPyAkZXZlbnQuZmlyc3QgLyAkZXZlbnQucm93cyA6ICRldmVudC5maXJzdCkgKyAxO1xyXG4gICAgICBsZXQgdGVybW9QZXNxdWlzYSA9ICcnO1xyXG4gICAgICBsZXQgb3JkZW5hY2FvID0gJyc7XHJcblxyXG4gICAgICBpZiAoJGV2ZW50Lmdsb2JhbEZpbHRlcikgdGVybW9QZXNxdWlzYSA9ICRldmVudC5nbG9iYWxGaWx0ZXI7XHJcblxyXG4gICAgICBpZiAoJGV2ZW50LnNvcnRGaWVsZClcclxuICAgICAgICBvcmRlbmFjYW8gPSBgJHskZXZlbnQuc29ydEZpZWxkfSAkeyRldmVudC5zb3J0T3JkZXIgPT09IDEgPyAnQVNDJyA6ICdERVNDJ1xyXG4gICAgICAgICAgfWA7XHJcblxyXG4gICAgICBjb25zdCBvYmpldG86IFRhYmxlUGFnaW5hdGUgPSB7XHJcbiAgICAgICAgcGFnaW5hSW5pY2lhbDogcGFnaW5hSW5pY2lhbCxcclxuICAgICAgICB0YW1hbmhvUGFnaW5hOiAkZXZlbnQucm93cyxcclxuICAgICAgICB0ZXJtb1Blc3F1aXNhOiB0ZXJtb1Blc3F1aXNhLFxyXG4gICAgICAgIG9yZGVuYWNhbzogb3JkZW5hY2FvLFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgdGhpcy5vblBhZ2luYXRlLmVtaXQob2JqZXRvKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJldHVyblN0eWxlUm93KGNvbDogYW55LCByb3dOb2RlOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgaXNGaXJzdENvbHVtbiA9IGNvbC5maWVsZCA9PT0gdGhpcy5jb25maWcuY29sdW1uc1swXS5maWVsZDtcclxuICAgIGNvbnN0IGJhc2VPcGFjaXR5ID0gMTtcclxuICAgIGNvbnN0IG1heExldmVscyA9IDQ7XHJcblxyXG4gICAgaWYgKGlzRmlyc3RDb2x1bW4gJiYgcm93Tm9kZS5sZXZlbCA+PSAwKSB7XHJcbiAgICAgIGNvbnN0IG9wYWNpdHkgPSBiYXNlT3BhY2l0eSAtIChyb3dOb2RlLmxldmVsIC8gbWF4TGV2ZWxzKTtcclxuXHJcbiAgICAgIHJldHVybiBgYm9yZGVyLWxlZnQ6IHNvbGlkIDRweCByZ2JhKDU5LCAxMTAsIDE1OCwgJHtvcGFjaXR5fSkgIWltcG9ydGFudDtgO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChyb3dOb2RlLmxldmVsID09IDApXHJcbiAgICAgIHJldHVybiAnYm9yZGVyLWxlZnQ6IG5vbmUgIWltcG9ydGFudDsgYm9yZGVyLXJpZ2h0OiBub25lICFpbXBvcnRhbnQnXHJcblxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcbiAgYWxpZ25Db2x1bmFzSGVhZGVyKGNvbDogYW55KTogc3RyaW5nIHtcclxuICAgIGlmIChjb2wuYWxpZ24pIHtcclxuICAgICAgaWYgKGNvbC5hbGlnbiA9PSAncmlnaHQnKSByZXR1cm4gJ2p1c3RpZnktY29udGVudDogZW5kJztcclxuICAgICAgZWxzZSByZXR1cm4gJyc7XHJcbiAgICB9IGVsc2UgcmV0dXJuICcnO1xyXG4gIH1cclxuICBjZW50cmFsaXphckNvbHVuYXMoY29sOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgaWYgKGNvbC5jZW50cmFsaXplKSB7XHJcbiAgICAgIHJldHVybiAndGV4dC1hbGlnbjogY2VudGVyOyAnO1xyXG4gICAgfSBlbHNlIHJldHVybiAnJztcclxuICB9XHJcbiAgYWxpZ25Db2x1bmFzKGNvbDogYW55KTogc3RyaW5nIHtcclxuICAgIGlmIChjb2wuYWxpZ24pIHtcclxuICAgICAgcmV0dXJuIGB0ZXh0LWFsaWduOiAke2NvbC5hbGlnbn1gO1xyXG4gICAgfSBlbHNlIHJldHVybiAnJztcclxuICB9XHJcblxyXG4gIGNyaWFyTWVudXNNb2RhbChkYXRhOiBhbnkpIHtcclxuICAgIGlmICh0aGlzLmNvbmZpZy5hY3Rpb25zICYmIGRhdGEpIHtcclxuICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLmNvbmZpZy5hY3Rpb25zLm1hcCgoYWN0aW9uOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCBpY29uID0gdGhpcy5yZXRvcm5hckNhbXBvKGFjdGlvbiwgZGF0YSwgJ2ljb24nKTtcclxuICAgICAgICBjb25zdCB0b29sdGlwID0gdGhpcy5yZXRvcm5hckNhbXBvKGFjdGlvbiwgZGF0YSwgJ3Rvb2x0aXAnKTtcclxuICAgICAgICBjb25zdCB0b29sdGlwUG9zaXRpb24gPSB0aGlzLnJldG9ybmFyQ2FtcG8oXHJcbiAgICAgICAgICBhY3Rpb24sXHJcbiAgICAgICAgICBkYXRhLFxyXG4gICAgICAgICAgJ3Rvb2x0aXBQb3NpdGlvbidcclxuICAgICAgICApO1xyXG4gICAgICAgIGNvbnN0IGxhYmVsID0gdGhpcy5yZXRvcm5hckNhbXBvKGFjdGlvbiwgZGF0YSwgJ2xhYmVsJyk7XHJcbiAgICAgICAgY29uc3QgY29tbWFuZDogYW55ID0gdGhpcy5yZXRvcm5hckNhbXBvKGFjdGlvbiwgZGF0YSwgJ2NvbW1hbmQnKTtcclxuICAgICAgICBjb25zdCB2aXNpYmxlOiBib29sZWFuID0gYWN0aW9uLnZpc2libGUgPyBhY3Rpb24udmlzaWJsZShkYXRhKSA6IHRydWU7XHJcbiAgICAgICAgY29uc3QgZGlzYWJsZWQ6IGJvb2xlYW4gPSBhY3Rpb24uZGlzYWJsZWRcclxuICAgICAgICAgID8gYWN0aW9uLmRpc2FibGVkKGRhdGEpXHJcbiAgICAgICAgICA6IGZhbHNlO1xyXG5cclxuICAgICAgICBjb25zdCBtZW51SW5zZXJ0OiBLdk1lbnVJdGVtID0ge1xyXG4gICAgICAgICAgbGFiZWwsXHJcbiAgICAgICAgICBpY29uLFxyXG4gICAgICAgICAgdG9vbHRpcCxcclxuICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbixcclxuICAgICAgICAgIGNvbW1hbmQsXHJcbiAgICAgICAgICBkaXNhYmxlZCxcclxuICAgICAgICAgIHZpc2libGUsXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgbGV0IGl0ZW0gPSB0aGlzLm1lbnVJdGVtcy5maWx0ZXIoXHJcbiAgICAgICAgICAoeCkgPT4geC5jb21tYW5kID09IG1lbnVJbnNlcnQuY29tbWFuZFxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIGlmIChpdGVtLmxlbmd0aCA9PSAwKSB0aGlzLm1lbnVJdGVtcy5wdXNoKG1lbnVJbnNlcnQpO1xyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgaWYgKG1lbnVJbnNlcnQubGFiZWwgIT0gaXRlbVswXS5sYWJlbCkge1xyXG4gICAgICAgICAgICBsZXQgaW5kZXggPSB0aGlzLm1lbnVJdGVtcy5pbmRleE9mKGl0ZW1bMF0pO1xyXG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmIChtZW51SW5zZXJ0LnZpc2libGUgIT0gaXRlbVswXS52aXNpYmxlKSB7XHJcbiAgICAgICAgICAgIGxldCBpbmRleCA9IHRoaXMubWVudUl0ZW1zLmluZGV4T2YoaXRlbVswXSk7XHJcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1zLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKG1lbnVJbnNlcnQuZGlzYWJsZWQgIT0gaXRlbVswXS5kaXNhYmxlZCkge1xyXG4gICAgICAgICAgICBsZXQgaW5kZXggPSB0aGlzLm1lbnVJdGVtcy5pbmRleE9mKGl0ZW1bMF0pO1xyXG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXRvcm5hckNhbXBvKGFjdGlvbjogS3ZNZW51SXRlbSwgcm93RGF0YTogYW55LCBmaWVsZDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IF9mdW5jdGlvbiA9IGFjdGlvbi5keW5hbWljZmllbGRzXHJcbiAgICAgID8gKGFjdGlvbi5keW5hbWljZmllbGRzW2ZpZWxkXSBhcyBGdW5jdGlvbilcclxuICAgICAgOiBudWxsO1xyXG4gICAgY29uc3QgX2ZpZWxkOiBzdHJpbmcgPSBfZnVuY3Rpb25cclxuICAgICAgPyBfZnVuY3Rpb24uYXBwbHkoYWN0aW9uLCBbcm93RGF0YV0pXHJcbiAgICAgIDogYWN0aW9uW2ZpZWxkXTtcclxuICAgIHJldHVybiBfZmllbGQ7XHJcbiAgfVxyXG5cclxuICBleGliaXJDYW1wbyhmaWVsZDogYW55LCByb3dEYXRhOiBhbnkpIHtcclxuICAgIGxldCB2aXNpYmxlID0gZmllbGQudmlzaWJsZSA/IGZpZWxkLnZpc2libGUocm93RGF0YSkgOiB0cnVlO1xyXG4gICAgcmV0dXJuIHZpc2libGU7XHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZUFjdGlvblBvc2l0aW9uKHJvd05vZGU6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuY29uZmlnLmFjdGlvbnNQYWkgJiYgcm93Tm9kZS5sZXZlbCA9PSAwKSByZXR1cm4gZmFsc2U7XHJcbiAgICBlbHNlIHJldHVybiB0cnVlXHJcbiAgfVxyXG5cclxuXHJcbiAgZG91YmxlQ2xpY2soZTogYW55LCByb3dEYXRhOiBhbnkpIHtcclxuXHJcbiAgICBsZXQgZXZlbnREb3VibGVDbGljayA9IHsgZXZlbnQ6IGUsIHJvd0RhdGE6IHJvd0RhdGEgfTtcclxuXHJcbiAgICBsZXQgYXJyYXk6IHN0cmluZ1tdID0gW107XHJcbiAgICBlLnRhcmdldC5jbGFzc0xpc3QuZm9yRWFjaCgoeDogYW55KSA9PiBhcnJheS5wdXNoKHgpKTtcclxuXHJcbiAgICAvLyBpZiAoYXJyYXkuZmluZCgoeDogYW55KSA9PiB4ID09ICduZy1zdGFyLWluc2VydGVkJykgIT0gdW5kZWZpbmVkKVxyXG4gICAgdGhpcy5kb3VibGVDbGlja0V2ZW50LmVtaXQoZXZlbnREb3VibGVDbGljayk7XHJcbiAgfVxyXG5cclxuICBpc0Rpc2FibGVkQ2hlY2tib3gocm93RGF0YTogYW55LCByb3dOb2RlOiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmNvbmZpZy5kaXNhYmxlQ29udHJvbENoZWNrYm94RnVuY3Rpb25cclxuICAgICAgPyB0aGlzLmNvbmZpZy5kaXNhYmxlQ29udHJvbENoZWNrYm94RnVuY3Rpb24ocm93RGF0YSwgcm93Tm9kZSlcclxuICAgICAgOiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGdldEN1c3RvbVRlbXBsYXRlKHRlbXBsYXRlbmFtZTogc3RyaW5nKTogVGVtcGxhdGVSZWY8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5fdGVtcGxhdGVzW3RlbXBsYXRlbmFtZV07XHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZVNob3dUZW1wbGF0ZShyb3dOb2RlOiBhbnksIGNvbDogYW55KTogYm9vbGVhbiB7XHJcbiAgICBpZiAoY29sLnRlbXBsYXRlT25seSkge1xyXG4gICAgICBpZiAoY29sLnRlbXBsYXRlT25seSA9PT0gJ3BhaScpIHtcclxuICAgICAgICByZXR1cm4gcm93Tm9kZS5sZXZlbCA9PT0gMDtcclxuICAgICAgfVxyXG4gICAgICBpZiAoY29sLnRlbXBsYXRlT25seSA9PT0gJ2ZpbGhvJykge1xyXG4gICAgICAgIHJldHVybiByb3dOb2RlLmxldmVsID09PSAxO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcbn1cclxuIiwiPGRpdj5cclxuICAgIDxwLXRyZWVUYWJsZVxyXG4gICAgICAgICN0dFxyXG4gICAgICAgIFt2YWx1ZV09XCJkYXRhU291cmNlXCJcclxuICAgICAgICBbY29sdW1uc109XCJjb25maWcuY29sdW1uc1wiXHJcbiAgICAgICAgW3Jlc2l6YWJsZUNvbHVtbnNdPVwidHJ1ZVwiXHJcbiAgICAgICAgW3RhYmxlU3R5bGVdPVwieydtaW4td2lkdGgnOiAnNTByZW0nfVwiXHJcbiAgICAgICAgW3Jlc2l6YWJsZUNvbHVtbnNdPVwidHJ1ZVwiXHJcbiAgICAgICAgW3N0eWxlQ2xhc3NdPVwiZ3JpZExpbmVzID8gJ3AtdHJlZXRhYmxlLWdyaWRsaW5lcycgOiAnJ1wiXHJcbiAgICAgICAgKG9uTGF6eUxvYWQpPVwicGFnaW5hdGUoJGV2ZW50KVwiXHJcbiAgICA+XHJcblxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZVxyXG4gICAgICAgICAgICBwVGVtcGxhdGU9XCJjYXB0aW9uXCJcclxuICAgICAgICAgICAgKm5nSWY9XCJjb25maWcuZW5hYmxlQ2F0aW9uXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleCBmbGV4LXJvdyBmbGV4LXdyYXAganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGdyaWQgZm9ybWdyaWQgcC1mbHVpZCBjb2wtMTJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgZmxleCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb25maWcudGl0bGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtbWQgZm9udC1ib2xkIG15LTNcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgY29uZmlnLnRpdGxlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbmZpZy5zdWJ0aXRsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1zbSBtYi00IGZvbnQtbWVkaXVtXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbmZpZy5zdWJ0aXRsZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBbY2xhc3NdPVwiXHJcbiAgICAgICAgICAgIHRhbWFuaG9UZWxhIDwgNzY4XHJcbiAgICAgICAgICAgICAgPyAnZmxleCBmbGV4LXJvdyBhbGlnbi1pdGVtcy1jZW50ZXIgY29sLTEwIG1kOmNvbC02IGxnOmNvbC00IGp1c3RpZnktY29udGVudC1jZW50ZXInXHJcbiAgICAgICAgICAgICAgOiAnZmxleCBmbGV4LXJvdyBhbGlnbi1pdGVtcy1jZW50ZXIgY29sLTEyIG1kOmNvbC02IGxnOmNvbC00IGp1c3RpZnktY29udGVudC1jZW50ZXIgaW5wdXQtc2VhcmNoJ1xyXG4gICAgICAgICAgXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29uZmlnLmVuYWJsZUZpbHRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1pbnB1dC1pY29uLWxlZnRcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1zZWFyY2hcIj48L2k+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBJbnB1dFRleHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBBdXRvRm9jdXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdXRvZm9jdXNdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5wdXQpPVwib25HbG9iYWxGaWx0ZXIodHQsICRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJQZXNxdWlzYXIuLi5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoLTIuNXJlbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGNvbC0xIGp1c3RpZnktY29udGVudC1lbmQgcC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIGNvbmZpZy5hY3Rpb25zTG90ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRucy1vcHRpb25zXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiYWN0aW9uTG90ZUJ0bnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcEJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgIChzZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDAgfHwgYWN0aW9uLnNob3dBY29lc0xvdGUpICYmXHJcbiAgICAgICAgICAgICAgICBleGliaXJDYW1wbyhhY3Rpb24sIHRoaXMuYWN0aW9uKVxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFjdGlvbkxvdGVCdG5zIHAtYnV0dG9uLXJhaXNlZCBwLWJ1dHRvbi10ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhY3Rpb24/LmNvbW1hbmQoY29tbWFuZEV2ZW50KTsgYWN0aXZlSXRlbUxvdGUoc2VsZWN0ZWRJdGVtcylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BUb29sdGlwXT1cInJldG9ybmFyQ2FtcG8oYWN0aW9uLCBzZWxlY3RlZEl0ZW1zLCAndG9vbHRpcCcpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwiJ2JvdHRvbSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJcclxuICAgICAgICAgICAgICAgIHJldG9ybmFyQ2FtcG8oYWN0aW9uLCBzZWxlY3RlZEl0ZW1zLCAnYnRuQ29sb3InKVxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicmV0b3JuYXJDYW1wbyhhY3Rpb24sIHNlbGVjdGVkSXRlbXMsICdkaXNhYmxlZCcpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgbWQtMjJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJcclxuICAgICAgICAgICAgICAgICAgcmV0b3JuYXJDYW1wbyhhY3Rpb24sIHNlbGVjdGVkSXRlbXMsICdpY29uQnRuQ29sb3InKVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyByZXRvcm5hckNhbXBvKGFjdGlvbiwgc2VsZWN0ZWRJdGVtcywgXCJpY29uXCIpIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZVxyXG4gICAgICAgICAgICBwVGVtcGxhdGU9XCJoZWFkZXJcIlxyXG4gICAgICAgICAgICBsZXQtY29sdW1uc1xyXG4gICAgICAgID5cclxuICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgPHRoXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zOyBpbmRleCBhcyBpXCJcclxuICAgICAgICAgICAgICAgICAgICBbdHRTb3J0YWJsZUNvbHVtbl09XCJjb2wuZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFt0dFNvcnRhYmxlQ29sdW1uRGlzYWJsZWRdPVwiY29sLnNvcnRhYmxlID09PSBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXNtXCJcclxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiY29sLndpZHRoXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsgZmxleDogaSA9PSAwLCAnZ2FwLTMnOiBpID09IDAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImkgPT0gMCAmJiBjb25maWcuZW5hYmxlU2VsZWN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtdHJlZVRhYmxlSGVhZGVyQ2hlY2tib3hcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2ZUl0ZW1Mb3RlKHNlbGVjdGVkSXRlbXMpXCI+PC9wLXRyZWVUYWJsZUhlYWRlckNoZWNrYm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJcclxuICAgICAgICAgICAgICAgICAgICBjZW50cmFsaXphckNvbHVuYXMoY29sKSAmJiBhbGlnbkNvbHVuYXNIZWFkZXIoY29sKSA9PSAnJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgPyAnZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgOiAnZmxleCBmbGV4LXJvdydcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGVdPVwiYWxpZ25Db2x1bmFzSGVhZGVyKGNvbClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGNvbC5oZWFkZXIgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtc29ydEljb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2wuc29ydGFibGUgPT09IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmllbGRdPVwiY29sLmZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJmb250LXNpemU6IDEwcHhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3Atc29ydEljb24+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29sLmhlYWRlclRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwiY29sLmhlYWRlclRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5pbmZvPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICA8bmctdGVtcGxhdGVcclxuICAgICAgICAgICAgcFRlbXBsYXRlPVwiaGVhZGVyXCJcclxuICAgICAgICAgICAgbGV0LWNvbHVtbnNcclxuICAgICAgICA+XHJcbiAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgIDx0aFxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgdHRSZXNpemFibGVDb2x1bW5cclxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiY29sLndpZHRoXCJcclxuICAgICAgICAgICAgICAgICAgICBbc3R5bGVdPVwiY29sLmNlbnRyYWxpemUgPyAndGV4dC1hbGlnbjogY2VudGVyOycgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgY29sLmhlYWRlciB9fSA8YnI+XHJcbiAgICAgICAgICAgICAgICA8L3RoPlxyXG5cclxuICAgICAgICAgICAgICAgIDx0aFxyXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCI1XCJcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbmZpZy5hY3Rpb25zLmxlbmd0aCA+IDBcIlxyXG4gICAgICAgICAgICAgICAgPjwvdGg+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8bmctdGVtcGxhdGVcclxuICAgICAgICAgICAgcFRlbXBsYXRlPVwiYm9keVwiXHJcbiAgICAgICAgICAgIGxldC1yb3dOb2RlXHJcbiAgICAgICAgICAgIGxldC1yb3dEYXRhPVwicm93RGF0YVwiXHJcbiAgICAgICAgICAgIGxldC1jb2x1bW5zPVwiY29sdW1uc1wiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgICA8dHJcclxuICAgICAgICAgICAgICAgIFt0dFJvd109XCJyb3dOb2RlXCJcclxuICAgICAgICAgICAgICAgIChkYmxjbGljayk9XCJkb3VibGVDbGljaygkZXZlbnQsIHJvd0RhdGEpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPHRkXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zOyAgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cInJldHVyblN0eWxlUm93KGNvbCwgcm93Tm9kZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5wb3NpdGlvbl09XCJyb3dOb2RlLmxldmVsICE9PSAwID8gJ3N0aWNreScgOiBudWxsXCJcclxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUubGVmdC5weF09XCJyb3dOb2RlLmxldmVsICE9PSAwID8gcm93Tm9kZS5sZXZlbCozMCA6IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyAge3tjb2wuYm9vbGVhbiA/ICdqdXN0aWZ5LWNvbnRlbnQtY2VudGVyJyA6ICcnIH19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidy1mdWxsLWgtZnVsbCBmbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImkgPT0gMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLXRyZWVUYWJsZUNoZWNrYm94XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRDaGVja2JveChyb3dEYXRhLCByb3dOb2RlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2ZUl0ZW1Mb3RlKHNlbGVjdGVkSXRlbXMpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwicm93Tm9kZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb25maWcuZW5hYmxlU2VsZWN0ID09IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvcC10cmVlVGFibGVDaGVja2JveD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC10cmVlVGFibGVUb2dnbGVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoaWRkZW5WaXNpYmxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcm93Tm9kZV09XCJyb3dOb2RlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3AtdHJlZVRhYmxlVG9nZ2xlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC10cmVlVGFibGVUb2dnbGVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Jvd05vZGVdPVwicm93Tm9kZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhcmlnaHRDb2xsYXBzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9wLXRyZWVUYWJsZVRvZ2dsZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC10cmVlVGFibGVUb2dnbGVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoaWRkZW5WaXNpYmxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcm93Tm9kZV09XCJyb3dOb2RlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInJpZ2h0Q29sbGFwc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvcC10cmVlVGFibGVUb2dnbGVyPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbC5ib29sZWFuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwaSB7e3Jvd0RhdGFbY29sLmZpZWxkXSA/ICdwaS1jaGVjayB0ZXh0LWdyZWVuLTMwMCcgOiAnJ319XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJmb250LXNpemU6IDEuMXJlbTtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2k+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleCBmbGV4LWNvbHVtblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWNvbC5ib29sZWFuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibS0wXCI+e3sgcm93RGF0YVtjb2wuZmllbGRdIH19PC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29sLnN1YnRpdGxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibS0wIHRleHQteHMgZm9udC1zZW1pYm9sZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID57e3Jvd0RhdGFbY29sLnN1YnRpdGxlXX19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNvbC50ZW1wbGF0ZSAmJiB2YWxpZGF0ZVNob3dUZW1wbGF0ZShyb3dOb2RlLCBjb2wpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZ2V0Q3VzdG9tVGVtcGxhdGUoY29sLnRlbXBsYXRlLm5hbWUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImdldEN1c3RvbVRlbXBsYXRlKGNvbC50ZW1wbGF0ZS5uYW1lKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHJvd0RhdGEgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgIDx0ZFxyXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiYm9yZGVyLWxlZnQ6IG5vbmU7XCJcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbmZpZy5hY3Rpb25zLmxlbmd0aCA+IDAgfHwgY29uZmlnLmFjdGlvbnNQYWlcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY29uZmlnLmFjdGlvbnMubGVuZ3RoID4gMCAmJiB2YWxpZGF0ZUFjdGlvblBvc2l0aW9uKHJvd05vZGUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGdhcC0xXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYWNvZXNMaW5oYVRhYmVsYVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgY29uZmlnLmFjdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJwaSB7e2FjdGlvbi5pY29ufX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyb3VuZGVkXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZXZlcml0eV09XCJhY3Rpb24uc2V2ZXJpdHkgPyBhY3Rpb24uc2V2ZXJpdHkgOiAnc2Vjb25kYXJ5J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cInt3aWR0aDogJzJyZW0nLCBoZWlnaHQ6ICcycmVtJ31cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cImFjdGlvbi5jb21tYW5kKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvcC1idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFhY29lc0xpbmhhVGFiZWxhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBjdXJzb3ItcG9pbnRlciBpY29uLW1vcmUtaG9yaXpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJmb250LXNpemU6IDIycHhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1lbnUudG9nZ2xlKCRldmVudCk7IGFjdGl2ZUl0ZW0ocm93RGF0YSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3JlX2hvcml6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBjb25maWcuYWN0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY3JpYXJNZW51c01vZGFsKHJvd0RhdGEpIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAtbWVudVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgI21lbnVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwb3B1cF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttb2RlbF09XCJtZW51SXRlbXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG89XCJib2R5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvcC1tZW51PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNvbmZpZy5hY3Rpb25zUGFpPy5sZW5ndGggPiAwICYmIHJvd05vZGUubGV2ZWwgPT0gMFwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGFjdGlvblBhaSBvZiBjb25maWcuYWN0aW9uc1BhaVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1idXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwicGkge3thY3Rpb25QYWkuaWNvbn19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcm91bmRlZF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2V2ZXJpdHldPVwiYWN0aW9uUGFpLnNldmVyaXR5ID8gYWN0aW9uUGFpLnNldmVyaXR5IDogJ3NlY29uZGFyeSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCJ7d2lkdGg6ICcycmVtJywgaGVpZ2h0OiAnMnJlbSd9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DbGljayk9XCJhY3RpdmVJdGVtKHJvd0RhdGEpO2FjdGlvblBhaS5jb21tYW5kKCRldmVudCk7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3AtYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPC9wLXRyZWVUYWJsZT5cclxuPC9kaXY+Il19