@aquera/ngx-smart-table 0.0.17-patch-0.3 → 0.0.17-patch-0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,21 @@
1
+ import { OUFormatter } from './ou-formatter';
2
+ const BUILTIN_FORMATTERS = {
3
+ ouFormatter: () => new OUFormatter(),
4
+ };
5
+ const customFormatters = {};
6
+ /**
7
+ * Resolve a formatter by name. Looks up custom formatters first, then built-in.
8
+ * Returns undefined if the name is not registered.
9
+ */
10
+ export function resolveFormatter(name) {
11
+ const factory = customFormatters[name] ?? BUILTIN_FORMATTERS[name];
12
+ return factory ? factory() : undefined;
13
+ }
14
+ /**
15
+ * Register a custom formatter so it can be referenced by string name
16
+ * in column configs (e.g. `formatter: 'myFormatter'`).
17
+ */
18
+ export function registerFormatter(name, factory) {
19
+ customFormatters[name] = factory;
20
+ }
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0dGVyLXJlZ2lzdHJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtdGFibGUvc3JjL2xpYi9mb3JtYXR0ZXJzL2Zvcm1hdHRlci1yZWdpc3RyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJN0MsTUFBTSxrQkFBa0IsR0FBcUM7SUFDM0QsV0FBVyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksV0FBVyxFQUFFO0NBQ3JDLENBQUM7QUFFRixNQUFNLGdCQUFnQixHQUFxQyxFQUFFLENBQUM7QUFFOUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUFDLElBQVk7SUFDM0MsTUFBTSxPQUFPLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkUsT0FBTyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDekMsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxJQUFZLEVBQUUsT0FBeUI7SUFDdkUsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDO0FBQ25DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZWxsRm9ybWF0dGVyIH0gZnJvbSAnLi4vbW9kZWxzL2NlbGwtc3RyYXRlZ2llcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgT1VGb3JtYXR0ZXIgfSBmcm9tICcuL291LWZvcm1hdHRlcic7XG5cbnR5cGUgRm9ybWF0dGVyRmFjdG9yeSA9ICgpID0+IENlbGxGb3JtYXR0ZXI8YW55PjtcblxuY29uc3QgQlVJTFRJTl9GT1JNQVRURVJTOiBSZWNvcmQ8c3RyaW5nLCBGb3JtYXR0ZXJGYWN0b3J5PiA9IHtcbiAgb3VGb3JtYXR0ZXI6ICgpID0+IG5ldyBPVUZvcm1hdHRlcigpLFxufTtcblxuY29uc3QgY3VzdG9tRm9ybWF0dGVyczogUmVjb3JkPHN0cmluZywgRm9ybWF0dGVyRmFjdG9yeT4gPSB7fTtcblxuLyoqXG4gKiBSZXNvbHZlIGEgZm9ybWF0dGVyIGJ5IG5hbWUuIExvb2tzIHVwIGN1c3RvbSBmb3JtYXR0ZXJzIGZpcnN0LCB0aGVuIGJ1aWx0LWluLlxuICogUmV0dXJucyB1bmRlZmluZWQgaWYgdGhlIG5hbWUgaXMgbm90IHJlZ2lzdGVyZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlRm9ybWF0dGVyKG5hbWU6IHN0cmluZyk6IENlbGxGb3JtYXR0ZXI8YW55PiB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGZhY3RvcnkgPSBjdXN0b21Gb3JtYXR0ZXJzW25hbWVdID8/IEJVSUxUSU5fRk9STUFUVEVSU1tuYW1lXTtcbiAgcmV0dXJuIGZhY3RvcnkgPyBmYWN0b3J5KCkgOiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogUmVnaXN0ZXIgYSBjdXN0b20gZm9ybWF0dGVyIHNvIGl0IGNhbiBiZSByZWZlcmVuY2VkIGJ5IHN0cmluZyBuYW1lXG4gKiBpbiBjb2x1bW4gY29uZmlncyAoZS5nLiBgZm9ybWF0dGVyOiAnbXlGb3JtYXR0ZXInYCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckZvcm1hdHRlcihuYW1lOiBzdHJpbmcsIGZhY3Rvcnk6IEZvcm1hdHRlckZhY3RvcnkpOiB2b2lkIHtcbiAgY3VzdG9tRm9ybWF0dGVyc1tuYW1lXSA9IGZhY3Rvcnk7XG59XG4iXX0=
@@ -0,0 +1,3 @@
1
+ export * from './ou-formatter';
2
+ export * from './formatter-registry';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC10YWJsZS9zcmMvbGliL2Zvcm1hdHRlcnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9vdS1mb3JtYXR0ZXInO1xuZXhwb3J0ICogZnJvbSAnLi9mb3JtYXR0ZXItcmVnaXN0cnknO1xuIl19
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Convert an LDAP Distinguished Name (DN) string to a human-readable path.
3
+ *
4
+ * @example
5
+ * "OU=Engineering,OU=India,DC=company,DC=com"
6
+ * → "Engineering / India (company.com)"
7
+ *
8
+ * "CN=John Smith,OU=Admins,OU=Engineering,DC=company,DC=com"
9
+ * → "John Smith / Admins / Engineering (company.com)"
10
+ *
11
+ * "OU=R\\,D,OU=Teams,DC=example,DC=org"
12
+ * → "R,D / Teams (example.org)"
13
+ */
14
+ export function dnToHumanReadable(dn) {
15
+ if (!/^\s*\S/.test(dn)) {
16
+ return '';
17
+ }
18
+ const pathParts = [];
19
+ const domainParts = [];
20
+ for (const match of dn.matchAll(/(?:^|(?<!\\),)\s*(CN|OU|DC)=((?:\\.|[^,])+)/g)) {
21
+ const key = match[1];
22
+ const value = match[2]
23
+ .trim()
24
+ .replace(/\\([,\\#+<>;"=])/g, '$1');
25
+ if (/^(?:CN|OU)$/.test(key)) {
26
+ pathParts.push(value);
27
+ }
28
+ else if (/^DC$/.test(key)) {
29
+ domainParts.push(value);
30
+ }
31
+ }
32
+ const path = pathParts.join(' / ');
33
+ const domain = domainParts.join('.');
34
+ return path && domain
35
+ ? `${path} (${domain})`
36
+ : path || domain || dn;
37
+ }
38
+ /**
39
+ * Cell formatter that converts LDAP Distinguished Name (DN) strings
40
+ * into human-readable OU paths with optional domain suffix.
41
+ *
42
+ * @example
43
+ * // In column config:
44
+ * formatter: new OUFormatter()
45
+ *
46
+ * // With options:
47
+ * formatter: new OUFormatter({ separator: ' > ', showDomain: false })
48
+ *
49
+ * // Handles arrays from multiselect:
50
+ * // ['OU=Eng,DC=co,DC=com', 'OU=HR,DC=co,DC=com'] → "Eng (co.com), HR (co.com)"
51
+ */
52
+ export class OUFormatter {
53
+ constructor(options) {
54
+ this.options = options;
55
+ }
56
+ format(value) {
57
+ if (Array.isArray(value)) {
58
+ return value
59
+ .map(v => this.formatSingle(v))
60
+ .filter(v => !!v)
61
+ .join(this.options?.arraySeparator ?? ', ');
62
+ }
63
+ return this.formatSingle(value);
64
+ }
65
+ formatSingle(value) {
66
+ if (value === null || value === undefined || typeof value !== 'string' || !/^\s*\S/.test(value)) {
67
+ return this.options?.emptyText ?? '';
68
+ }
69
+ const separator = this.options?.separator ?? ' / ';
70
+ const showDomain = this.options?.showDomain !== false;
71
+ const pathParts = [];
72
+ const domainParts = [];
73
+ for (const match of value.matchAll(/(?:^|(?<!\\),)\s*(CN|OU|DC)=((?:\\.|[^,])+)/g)) {
74
+ const key = match[1];
75
+ const val = match[2]
76
+ .trim()
77
+ .replace(/\\([,\\#+<>;"=])/g, '$1');
78
+ if (/^(?:CN|OU)$/.test(key)) {
79
+ pathParts.push(val);
80
+ }
81
+ else if (/^DC$/.test(key)) {
82
+ domainParts.push(val);
83
+ }
84
+ }
85
+ const path = pathParts.join(separator);
86
+ const domain = domainParts.join('.');
87
+ if (path && domain && showDomain)
88
+ return `${path} (${domain})`;
89
+ if (path)
90
+ return path;
91
+ if (domain && showDomain)
92
+ return domain;
93
+ return value;
94
+ }
95
+ }
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3UtZm9ybWF0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtdGFibGUvc3JjL2xpYi9mb3JtYXR0ZXJzL291LWZvcm1hdHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsRUFBVTtJQUMxQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRTtRQUN0QixPQUFPLEVBQUUsQ0FBQztLQUNYO0lBRUQsTUFBTSxTQUFTLEdBQWEsRUFBRSxDQUFDO0lBQy9CLE1BQU0sV0FBVyxHQUFhLEVBQUUsQ0FBQztJQUVqQyxLQUFLLE1BQU0sS0FBSyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsOENBQThDLENBQUMsRUFBRTtRQUMvRSxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUNuQixJQUFJLEVBQUU7YUFDTixPQUFPLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFdEMsSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzNCLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDdkI7YUFBTSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDM0IsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN6QjtLQUNGO0lBRUQsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQyxNQUFNLE1BQU0sR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRXJDLE9BQU8sSUFBSSxJQUFJLE1BQU07UUFDbkIsQ0FBQyxDQUFDLEdBQUcsSUFBSSxLQUFLLE1BQU0sR0FBRztRQUN2QixDQUFDLENBQUMsSUFBSSxJQUFJLE1BQU0sSUFBSSxFQUFFLENBQUM7QUFDM0IsQ0FBQztBQWFEOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFNLE9BQU8sV0FBVztJQUN0QixZQUE2QixPQUE0QjtRQUE1QixZQUFPLEdBQVAsT0FBTyxDQUFxQjtJQUFHLENBQUM7SUFFN0QsTUFBTSxDQUFDLEtBQXdCO1FBQzdCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN4QixPQUFPLEtBQUs7aUJBQ1QsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDOUIsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsY0FBYyxJQUFJLElBQUksQ0FBQyxDQUFDO1NBQy9DO1FBQ0QsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFTyxZQUFZLENBQUMsS0FBYTtRQUNoQyxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQy9GLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxTQUFTLElBQUksRUFBRSxDQUFDO1NBQ3RDO1FBRUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxTQUFTLElBQUksS0FBSyxDQUFDO1FBQ25ELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxLQUFLLEtBQUssQ0FBQztRQUV0RCxNQUFNLFNBQVMsR0FBYSxFQUFFLENBQUM7UUFDL0IsTUFBTSxXQUFXLEdBQWEsRUFBRSxDQUFDO1FBRWpDLEtBQUssTUFBTSxLQUFLLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyw4Q0FBOEMsQ0FBQyxFQUFFO1lBQ2xGLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyQixNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO2lCQUNqQixJQUFJLEVBQUU7aUJBQ04sT0FBTyxDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxDQUFDO1lBRXRDLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDM0IsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUNyQjtpQkFBTSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQzNCLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDdkI7U0FDRjtRQUVELE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkMsTUFBTSxNQUFNLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVyQyxJQUFJLElBQUksSUFBSSxNQUFNLElBQUksVUFBVTtZQUFFLE9BQU8sR0FBRyxJQUFJLEtBQUssTUFBTSxHQUFHLENBQUM7UUFDL0QsSUFBSSxJQUFJO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDdEIsSUFBSSxNQUFNLElBQUksVUFBVTtZQUFFLE9BQU8sTUFBTSxDQUFDO1FBQ3hDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2VsbEZvcm1hdHRlciB9IGZyb20gJy4uL21vZGVscy9jZWxsLXN0cmF0ZWdpZXMuaW50ZXJmYWNlJztcblxuLyoqXG4gKiBDb252ZXJ0IGFuIExEQVAgRGlzdGluZ3Vpc2hlZCBOYW1lIChETikgc3RyaW5nIHRvIGEgaHVtYW4tcmVhZGFibGUgcGF0aC5cbiAqXG4gKiBAZXhhbXBsZVxuICogXCJPVT1FbmdpbmVlcmluZyxPVT1JbmRpYSxEQz1jb21wYW55LERDPWNvbVwiXG4gKiAgIOKGkiBcIkVuZ2luZWVyaW5nIC8gSW5kaWEgKGNvbXBhbnkuY29tKVwiXG4gKlxuICogXCJDTj1Kb2huIFNtaXRoLE9VPUFkbWlucyxPVT1FbmdpbmVlcmluZyxEQz1jb21wYW55LERDPWNvbVwiXG4gKiAgIOKGkiBcIkpvaG4gU21pdGggLyBBZG1pbnMgLyBFbmdpbmVlcmluZyAoY29tcGFueS5jb20pXCJcbiAqXG4gKiBcIk9VPVJcXFxcLEQsT1U9VGVhbXMsREM9ZXhhbXBsZSxEQz1vcmdcIlxuICogICDihpIgXCJSLEQgLyBUZWFtcyAoZXhhbXBsZS5vcmcpXCJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRuVG9IdW1hblJlYWRhYmxlKGRuOiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoIS9eXFxzKlxcUy8udGVzdChkbikpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBjb25zdCBwYXRoUGFydHM6IHN0cmluZ1tdID0gW107XG4gIGNvbnN0IGRvbWFpblBhcnRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgbWF0Y2ggb2YgZG4ubWF0Y2hBbGwoLyg/Ol58KD88IVxcXFwpLClcXHMqKENOfE9VfERDKT0oKD86XFxcXC58W14sXSkrKS9nKSkge1xuICAgIGNvbnN0IGtleSA9IG1hdGNoWzFdO1xuICAgIGNvbnN0IHZhbHVlID0gbWF0Y2hbMl1cbiAgICAgIC50cmltKClcbiAgICAgIC5yZXBsYWNlKC9cXFxcKFssXFxcXCMrPD47XCI9XSkvZywgJyQxJyk7XG5cbiAgICBpZiAoL14oPzpDTnxPVSkkLy50ZXN0KGtleSkpIHtcbiAgICAgIHBhdGhQYXJ0cy5wdXNoKHZhbHVlKTtcbiAgICB9IGVsc2UgaWYgKC9eREMkLy50ZXN0KGtleSkpIHtcbiAgICAgIGRvbWFpblBhcnRzLnB1c2godmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHBhdGggPSBwYXRoUGFydHMuam9pbignIC8gJyk7XG4gIGNvbnN0IGRvbWFpbiA9IGRvbWFpblBhcnRzLmpvaW4oJy4nKTtcblxuICByZXR1cm4gcGF0aCAmJiBkb21haW5cbiAgICA/IGAke3BhdGh9ICgke2RvbWFpbn0pYFxuICAgIDogcGF0aCB8fCBkb21haW4gfHwgZG47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT1VGb3JtYXR0ZXJPcHRpb25zIHtcbiAgLyoqIFNlcGFyYXRvciBiZXR3ZWVuIE9VIGNvbXBvbmVudHMgKGRlZmF1bHQ6ICcgLyAnKSAqL1xuICBzZXBhcmF0b3I/OiBzdHJpbmc7XG4gIC8qKiBXaGV0aGVyIHRvIHNob3cgdGhlIGRvbWFpbiBzdWZmaXggZnJvbSBEQyBjb21wb25lbnRzIChkZWZhdWx0OiB0cnVlKSAqL1xuICBzaG93RG9tYWluPzogYm9vbGVhbjtcbiAgLyoqIEZhbGxiYWNrIHRleHQgd2hlbiB2YWx1ZSBpcyBlbXB0eSBvciBub3QgYSB2YWxpZCBETiAoZGVmYXVsdDogJycpICovXG4gIGVtcHR5VGV4dD86IHN0cmluZztcbiAgLyoqIFNlcGFyYXRvciBiZXR3ZWVuIG11bHRpcGxlIGZvcm1hdHRlZCBETnMgd2hlbiB2YWx1ZSBpcyBhbiBhcnJheSAoZGVmYXVsdDogJywgJykgKi9cbiAgYXJyYXlTZXBhcmF0b3I/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ2VsbCBmb3JtYXR0ZXIgdGhhdCBjb252ZXJ0cyBMREFQIERpc3Rpbmd1aXNoZWQgTmFtZSAoRE4pIHN0cmluZ3NcbiAqIGludG8gaHVtYW4tcmVhZGFibGUgT1UgcGF0aHMgd2l0aCBvcHRpb25hbCBkb21haW4gc3VmZml4LlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJbiBjb2x1bW4gY29uZmlnOlxuICogZm9ybWF0dGVyOiBuZXcgT1VGb3JtYXR0ZXIoKVxuICpcbiAqIC8vIFdpdGggb3B0aW9uczpcbiAqIGZvcm1hdHRlcjogbmV3IE9VRm9ybWF0dGVyKHsgc2VwYXJhdG9yOiAnID4gJywgc2hvd0RvbWFpbjogZmFsc2UgfSlcbiAqXG4gKiAvLyBIYW5kbGVzIGFycmF5cyBmcm9tIG11bHRpc2VsZWN0OlxuICogLy8gWydPVT1FbmcsREM9Y28sREM9Y29tJywgJ09VPUhSLERDPWNvLERDPWNvbSddIOKGkiBcIkVuZyAoY28uY29tKSwgSFIgKGNvLmNvbSlcIlxuICovXG5leHBvcnQgY2xhc3MgT1VGb3JtYXR0ZXIgaW1wbGVtZW50cyBDZWxsRm9ybWF0dGVyPHN0cmluZyB8IHN0cmluZ1tdPiB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgb3B0aW9ucz86IE9VRm9ybWF0dGVyT3B0aW9ucykge31cblxuICBmb3JtYXQodmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB2YWx1ZVxuICAgICAgICAubWFwKHYgPT4gdGhpcy5mb3JtYXRTaW5nbGUodikpXG4gICAgICAgIC5maWx0ZXIodiA9PiAhIXYpXG4gICAgICAgIC5qb2luKHRoaXMub3B0aW9ucz8uYXJyYXlTZXBhcmF0b3IgPz8gJywgJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmZvcm1hdFNpbmdsZSh2YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdFNpbmdsZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnIHx8ICEvXlxccypcXFMvLnRlc3QodmFsdWUpKSB7XG4gICAgICByZXR1cm4gdGhpcy5vcHRpb25zPy5lbXB0eVRleHQgPz8gJyc7XG4gICAgfVxuXG4gICAgY29uc3Qgc2VwYXJhdG9yID0gdGhpcy5vcHRpb25zPy5zZXBhcmF0b3IgPz8gJyAvICc7XG4gICAgY29uc3Qgc2hvd0RvbWFpbiA9IHRoaXMub3B0aW9ucz8uc2hvd0RvbWFpbiAhPT0gZmFsc2U7XG5cbiAgICBjb25zdCBwYXRoUGFydHM6IHN0cmluZ1tdID0gW107XG4gICAgY29uc3QgZG9tYWluUGFydHM6IHN0cmluZ1tdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IG1hdGNoIG9mIHZhbHVlLm1hdGNoQWxsKC8oPzpefCg/PCFcXFxcKSwpXFxzKihDTnxPVXxEQyk9KCg/OlxcXFwufFteLF0pKykvZykpIHtcbiAgICAgIGNvbnN0IGtleSA9IG1hdGNoWzFdO1xuICAgICAgY29uc3QgdmFsID0gbWF0Y2hbMl1cbiAgICAgICAgLnRyaW0oKVxuICAgICAgICAucmVwbGFjZSgvXFxcXChbLFxcXFwjKzw+O1wiPV0pL2csICckMScpO1xuXG4gICAgICBpZiAoL14oPzpDTnxPVSkkLy50ZXN0KGtleSkpIHtcbiAgICAgICAgcGF0aFBhcnRzLnB1c2godmFsKTtcbiAgICAgIH0gZWxzZSBpZiAoL15EQyQvLnRlc3Qoa2V5KSkge1xuICAgICAgICBkb21haW5QYXJ0cy5wdXNoKHZhbCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgcGF0aCA9IHBhdGhQYXJ0cy5qb2luKHNlcGFyYXRvcik7XG4gICAgY29uc3QgZG9tYWluID0gZG9tYWluUGFydHMuam9pbignLicpO1xuXG4gICAgaWYgKHBhdGggJiYgZG9tYWluICYmIHNob3dEb21haW4pIHJldHVybiBgJHtwYXRofSAoJHtkb21haW59KWA7XG4gICAgaWYgKHBhdGgpIHJldHVybiBwYXRoO1xuICAgIGlmIChkb21haW4gJiYgc2hvd0RvbWFpbikgcmV0dXJuIGRvbWFpbjtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cbiJdfQ==
@@ -4,6 +4,7 @@
4
4
  import { DEFAULT_COLUMN_CONFIG } from './column-config.interface';
5
5
  import { Cell } from '../renderer/models/cell.class';
6
6
  import { deepMergeColumnConfig } from './column-config.utils';
7
+ import { resolveFormatter } from '../formatters/formatter-registry';
7
8
  /**
8
9
  * Abstract base class for column configurations
9
10
  * Implements Template Method pattern for cell operations
@@ -14,7 +15,9 @@ export class BaseColumnConfig {
14
15
  this.key = merged.key;
15
16
  this.header = merged.header;
16
17
  this.dataType = merged.dataType;
17
- this.formatter = merged.formatter;
18
+ this.formatter = typeof merged.formatter === 'string'
19
+ ? resolveFormatter(merged.formatter)
20
+ : merged.formatter;
18
21
  this.validator = merged.validator;
19
22
  this.editor = merged.editor;
20
23
  this.parser = merged.parser;
@@ -175,11 +178,15 @@ export class BaseColumnConfig {
175
178
  * Format value for display (can be overridden)
176
179
  */
177
180
  formatValue(value, rowData) {
178
- if (this.formatter) {
179
- if (this.formatter.formatWithContext && rowData) {
180
- return this.formatter.formatWithContext(value, rowData, this.key);
181
+ let formatter = this.formatter;
182
+ if (typeof formatter === 'string') {
183
+ formatter = resolveFormatter(formatter);
184
+ }
185
+ if (formatter) {
186
+ if (formatter.formatWithContext && rowData) {
187
+ return formatter.formatWithContext(value, rowData, this.key);
181
188
  }
182
- return this.formatter.format(value);
189
+ return formatter.format(value);
183
190
  }
184
191
  return String(value ?? '');
185
192
  }
@@ -250,4 +257,4 @@ export class SimpleColumnConfig extends BaseColumnConfig {
250
257
  super(config);
251
258
  }
252
259
  }
253
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jb2x1bW4tY29uZmlnLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtdGFibGUvc3JjL2xpYi9tb2RlbHMvYmFzZS1jb2x1bW4tY29uZmlnLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsT0FBTyxFQUFnQixxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUlyRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUU5RDs7O0dBR0c7QUFDSCxNQUFNLE9BQWdCLGdCQUFnQjtJQWtDcEMsWUFBWSxNQUFrRDtRQUM1RCxNQUFNLE1BQU0sR0FBRyxxQkFBcUIsQ0FBQyxxQkFBcUIsRUFBRSxNQUFNLENBQW9CLENBQUM7UUFFdkYsSUFBSSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUM1QixJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7UUFDaEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQztRQUNsQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDNUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQzVCLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUNoQyxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7UUFDaEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFD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QUFDLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLEVBQUU7WUFDMUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQ2xDO1FBRUQsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVDLENBQUM7Q0FDRjtBQUVEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGtCQUE0QixTQUFRLGdCQUFtQjtJQUNsRSxZQUFZLE1BQWtEO1FBQzVELEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEJhc2UgY29sdW1uIGNvbmZpZ3VyYXRpb24gY2xhc3MgaW1wbGVtZW50aW5nIFRlbXBsYXRlIE1ldGhvZCBwYXR0ZXJuXG4gKi9cblxuaW1wb3J0IHsgQ29sdW1uQ29uZmlnLCBERUZBVUxUX0NPTFVNTl9DT05GSUcgfSBmcm9tICcuL2NvbHVtbi1jb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7IENlbGwgfSBmcm9tICcuLi9yZW5kZXJlci9tb2RlbHMvY2VsbC5jbGFzcyc7XG5pbXBvcnQgeyBDZWxsRm9ybWF0dGVyLCBDZWxsVmFsaWRhdG9yLCBDZWxsRWRpdG9yLCBDZWxsUGFyc2VyLCBDZWxsTGlmZWN5Y2xlSG9va3MgfSBmcm9tICcuL2NlbGwtc3RyYXRlZ2llcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ2VsbEFsaWdubWVudCwgQ2VsbFZlcnRpY2FsQWxpZ25tZW50LCBFZGl0TW9kZSwgQ2VsbERhdGFUeXBlLCBWYWxpZGF0aW9uUmVzdWx0IH0gZnJvbSAnLi9jZWxsLXR5cGVzJztcbmltcG9ydCB7IFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBkZWVwTWVyZ2VDb2x1bW5Db25maWcgfSBmcm9tICcuL2NvbHVtbi1jb25maWcudXRpbHMnO1xuXG4vKipcbiAqIEFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIGNvbHVtbiBjb25maWd1cmF0aW9uc1xuICogSW1wbGVtZW50cyBUZW1wbGF0ZSBNZXRob2QgcGF0dGVybiBmb3IgY2VsbCBvcGVyYXRpb25zXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlQ29sdW1uQ29uZmlnPFQgPSBhbnk+IGltcGxlbWVudHMgQ29sdW1uQ29uZmlnPFQ+IHtcbiAgcmVhZG9ubHkga2V5OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGhlYWRlcj86IHN0cmluZztcbiAgcmVhZG9ubHkgZGF0YVR5cGU/OiBDZWxsRGF0YVR5cGU7XG4gIHJlYWRvbmx5IGZvcm1hdHRlcj86IENlbGxGb3JtYXR0ZXI8VD47XG4gIHJlYWRvbmx5IHZhbGlkYXRvcj86IENlbGxWYWxpZGF0b3I8VD47XG4gIHJlYWRvbmx5IGVkaXRvcj86IENlbGxFZGl0b3I8VD47XG4gIHJlYWRvbmx5IHBhcnNlcj86IENlbGxQYXJzZXI8VD47XG4gIHJlYWRvbmx5IGVkaXRhYmxlPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgZWRpdE1vZGU/OiBFZGl0TW9kZTtcbiAgcmVhZG9ubHkgc29ydGFibGU/OiBib29sZWFuO1xuICByZWFkb25seSBmaWx0ZXJhYmxlPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgcmVzaXphYmxlPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgd2lkdGg/OiBudW1iZXIgfCBzdHJpbmc7XG4gIHJlYWRvbmx5IG1pbldpZHRoPzogbnVtYmVyO1xuICByZWFkb25seSBtYXhXaWR0aD86IG51bWJlcjtcbiAgcmVhZG9ubHkgYWxpZ25tZW50PzogQ2VsbEFsaWdubWVudDtcbiAgcmVhZG9ubHkgdmVydGljYWxBbGlnbm1lbnQ/OiBDZWxsVmVydGljYWxBbGlnbm1lbnQ7XG4gIHJlYWRvbmx5IHRydW5jYXRlPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgdG9vbHRpcD86IHN0cmluZyB8ICgodmFsdWU6IFQsIHJvd0RhdGE6IGFueSkgPT4gc3RyaW5nKTtcbiAgcmVhZG9ubHkgY2xhc3NOYW1lPzogc3RyaW5nIHwgc3RyaW5nW10gfCAoKHZhbHVlOiBULCByb3dEYXRhOiBhbnkpID0+IHN0cmluZyB8IHN0cmluZ1tdKTtcbiAgcmVhZG9ubHkgc3R5bGU/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgKCh2YWx1ZTogVCwgcm93RGF0YTogYW55KSA9PiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTtcbiAgcmVhZG9ubHkgY2VsbFRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PjtcbiAgcmVhZG9ubHkgaGVhZGVyVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xuICByZWFkb25seSB2aXNpYmxlPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgcGlubmVkPzogJ2xlZnQnIHwgJ3JpZ2h0JyB8IGZhbHNlO1xuICByZWFkb25seSBzb3J0UHJpb3JpdHk/OiBudW1iZXI7XG4gIHJlYWRvbmx5IGNvbXBhcmF0b3I/OiAoYTogVCwgYjogVCkgPT4gbnVtYmVyO1xuICByZWFkb25seSB2YWx1ZUdldHRlcj86IChyb3dEYXRhOiBhbnkpID0+IFQ7XG4gIHJlYWRvbmx5IHZhbHVlU2V0dGVyPzogKHJvd0RhdGE6IGFueSwgdmFsdWU6IFQpID0+IHZvaWQ7XG4gIHJlYWRvbmx5IGhvb2tzPzogQ2VsbExpZmVjeWNsZUhvb2tzPFQ+O1xuICByZWFkb25seSBzaG93TG9hZGluZ0luZGljYXRvcj86IGJvb2xlYW47XG4gIHJlYWRvbmx5IG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgYW55PjtcblxuICBjb25zdHJ1Y3Rvcihjb25maWc6IFBhcnRpYWw8Q29sdW1uQ29uZmlnPFQ+PiAmIHsga2V5OiBzdHJpbmcgfSkge1xuICAgIGNvbnN0IG1lcmdlZCA9IGRlZXBNZXJnZUNvbHVtbkNvbmZpZyhERUZBVUxUX0NPTFVNTl9DT05GSUcsIGNvbmZpZykgYXMgQ29sdW1uQ29uZmlnPFQ+O1xuICAgIFxuICAgIHRoaXMua2V5ID0gbWVyZ2VkLmtleTtcbiAgICB0aGlzLmhlYWRlciA9IG1lcmdlZC5oZWFkZXI7XG4gICAgdGhpcy5kYXRhVHlwZSA9IG1lcmdlZC5kYXRhVHlwZTtcbiAgICB0aGlzLmZvcm1hdHRlciA9IG1lcmdlZC5mb3JtYXR0ZXI7XG4gICAgdGhpcy52YWxpZGF0b3IgPSBtZXJnZWQudmFsaWRhdG9yO1xuICAgIHRoaXMuZWRpdG9yID0gbWVyZ2VkLmVkaXRvcjtcbiAgICB0aGlzLnBhcnNlciA9IG1lcmdlZC5wYXJzZXI7XG4gICAgdGhpcy5lZGl0YWJsZSA9IG1lcmdlZC5lZGl0YWJsZTtcbiAgICB0aGlzLmVkaXRNb2RlID0gbWVyZ2VkLmVkaXRNb2RlO1xuICAgIHRoaXMuc29ydGFibGUgPSBtZXJnZWQuc29ydGFibGU7XG4gICAgdGhpcy5maWx0ZXJhYmxlID0gbWVyZ2VkLmZpbHRlcmFibGU7XG4gICAgdGhpcy5yZXNpemFibGUgPSBtZXJnZWQucmVzaXphYmxlO1xuICAgIHRoaXMud2lkdGggPSBtZXJnZWQud2lkdGg7XG4gICAgdGhpcy5taW5XaWR0aCA9IG1lcmdlZC5taW5XaWR0aDtcbiAgICB0aGlzLm1heFdpZHRoID0gbWVyZ2VkLm1heFdpZHRoO1xuICAgIHRoaXMuYWxpZ25tZW50ID0gbWVyZ2VkLmFsaWdubWVudDtcbiAgICB0aGlzLnZlcnRpY2FsQWxpZ25tZW50ID0gbWVyZ2VkLnZlcnRpY2FsQWxpZ25tZW50O1xuICAgIHRoaXMudHJ1bmNhdGUgPSBtZXJnZWQudHJ1bmNhdGU7XG4gICAgdGhpcy50b29sdGlwID0gbWVyZ2VkLnRvb2x0aXA7XG4gICAgdGhpcy5jbGFzc05hbWUgPSBtZXJnZWQuY2xhc3NOYW1lO1xuICAgIHRoaXMuc3R5bGUgPSBtZXJnZWQuc3R5bGU7XG4gICAgdGhpcy5jZWxsVGVtcGxhdGUgPSBtZXJnZWQuY2VsbFRlbXBsYXRlO1xuICAgIHRoaXMuaGVhZGVyVGVtcGxhdGUgPSBtZXJnZWQuaGVhZGVyVGVtcGxhdGU7XG4gICAgdGhpcy52aXNpYmxlID0gbWVyZ2VkLnZpc2libGU7XG4gICAgdGhpcy5waW5uZWQgPSBtZXJnZWQucGlubmVkO1xuICAgIHRoaXMuc29ydFByaW9yaXR5ID0gbWVyZ2VkLnNvcnRQcmlvcml0eTtcbiAgICB0aGlzLmNvbXBhcmF0b3IgPSBtZXJnZWQuY29tcGFyYXRvcjtcbiAgICB0aGlzLnZhbHVlR2V0dGVyID0gbWVyZ2VkLnZhbHVlR2V0dGVyO1xuICAgIHRoaXMudmFsdWVTZXR0ZXIgPSBtZXJnZWQudmFsdWVTZXR0ZXI7XG4gICAgdGhpcy5ob29rcyA9IG1lcmdlZC5ob29rcztcbiAgICB0aGlzLnNob3dMb2FkaW5nSW5kaWNhdG9yID0gbWVyZ2VkLnNob3dMb2FkaW5nSW5kaWNhdG9yO1xuICAgIHRoaXMubWV0YWRhdGEgPSBtZXJnZWQubWV0YWRhdGE7XG4gIH1cblxuICAvKipcbiAgICogRmFjdG9yeSBtZXRob2QgdG8gY3JlYXRlIGEgY2VsbCAoRmFjdG9yeSBQYXR0ZXJuKVxuICAgKiBDYW4gYmUgb3ZlcnJpZGRlbiBieSBzdWJjbGFzc2VzIGZvciBjdXN0b20gY2VsbCBjcmVhdGlvblxuICAgKi9cbiAgY3JlYXRlQ2VsbChyb3dEYXRhOiBhbnksIHJvd0luZGV4PzogbnVtYmVyKTogQ2VsbDxUPiB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmV4dHJhY3RWYWx1ZShyb3dEYXRhKTtcbiAgICBjb25zdCBjZWxsID0gbmV3IENlbGw8VD4odGhpcywgdmFsdWUsIHJvd0RhdGEsIHJvd0luZGV4KTtcbiAgICBcbiAgICAvLyBBcHBseSBhbnkgcG9zdC1jcmVhdGlvbiBob29rc1xuICAgIHRoaXMuYWZ0ZXJDZWxsQ3JlYXRlZChjZWxsLCByb3dEYXRhLCByb3dJbmRleCk7XG4gICAgXG4gICAgcmV0dXJuIGNlbGw7XG4gIH1cblxuICAvKipcbiAgICogVGVtcGxhdGUgbWV0aG9kIGZvciBwcm9jZXNzaW5nIGNlbGwgZWRpdCB3b3JrZmxvd1xuICAgKiBEZWZpbmVzIHRoZSBhbGdvcml0aG0gc3RlcHMgdGhhdCBzdWJjbGFzc2VzIGNhbiBjdXN0b21pemVcbiAgICovXG4gIHByb2Nlc3NFZGl0KGNlbGw6IENlbGw8VD4sIG5ld1ZhbHVlOiBUKTogYm9vbGVhbiB7XG4gICAgLy8gU3RlcCAxOiBCZWZvcmUgZWRpdCBob29rXG4gICAgaWYgKCF0aGlzLmJlZm9yZUVkaXQoY2VsbCwgbmV3VmFsdWUpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gU3RlcCAyOiBQYXJzZSB0aGUgdmFsdWVcbiAgICBjb25zdCBwYXJzZWRWYWx1ZSA9IHRoaXMucGFyc2VWYWx1ZShuZXdWYWx1ZSk7XG4gICAgaWYgKHBhcnNlZFZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBTdGVwIDM6IFZhbGlkYXRlIHRoZSBwYXJzZWQgdmFsdWVcbiAgICBjb25zdCB2YWxpZGF0aW9uUmVzdWx0ID0gdGhpcy52YWxpZGF0ZVZhbHVlKHBhcnNlZFZhbHVlLCBjZWxsLmdldFJvd0RhdGEoKSk7XG4gICAgaWYgKCF2YWxpZGF0aW9uUmVzdWx0LnZhbGlkKSB7XG4gICAgICB0aGlzLm9uVmFsaWRhdGlvbkZhaWxlZChjZWxsLCB2YWxpZGF0aW9uUmVzdWx0KTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBTdGVwIDQ6IEFwcGx5IHRoZSB2YWx1ZVxuICAgIGNvbnN0IHN1Y2Nlc3MgPSBjZWxsLnNhdmVFZGl0KHBhcnNlZFZhbHVlKTtcbiAgICBcbiAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgLy8gU3RlcCA1OiBBZnRlciBlZGl0IGhvb2tcbiAgICAgIHRoaXMuYWZ0ZXJFZGl0KGNlbGwsIHBhcnNlZFZhbHVlKTtcbiAgICAgIFxuICAgICAgLy8gU3RlcCA2OiBVcGRhdGUgcm93IGRhdGEgaWYgdmFsdWVTZXR0ZXIgaXMgcHJvdmlkZWRcbiAgICAgIGlmICh0aGlzLnZhbHVlU2V0dGVyKSB7XG4gICAgICAgIHRoaXMudmFsdWVTZXR0ZXIoY2VsbC5nZXRSb3dEYXRhKCksIHBhcnNlZFZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc3VjY2VzcztcbiAgfVxuXG4gIC8qKlxuICAgKiBIb29rOiBCZWZvcmUgZWRpdCB2YWxpZGF0aW9uIChjYW4gYmUgb3ZlcnJpZGRlbilcbiAgICovXG4gIHByb3RlY3RlZCBiZWZvcmVFZGl0KGNlbGw6IENlbGw8VD4sIG5ld1ZhbHVlOiBUKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuaG9va3M/LmJlZm9yZUVkaXQpIHtcbiAgICAgIHRoaXMuaG9va3MuYmVmb3JlRWRpdCh7XG4gICAgICAgIHZhbHVlOiBuZXdWYWx1ZSxcbiAgICAgICAgcHJldmlvdXNWYWx1ZTogY2VsbC5nZXRWYWx1ZSgpLFxuICAgICAgICByb3dEYXRhOiBjZWxsLmdldFJvd0RhdGEoKSxcbiAgICAgICAgY29sdW1uS2V5OiB0aGlzLmtleSxcbiAgICAgICAgcm93SW5kZXg6IGNlbGwuZ2V0Um93SW5kZXgoKVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEhvb2s6IEFmdGVyIGVkaXQgY29tcGxldGlvbiAoY2FuIGJlIG92ZXJyaWRkZW4pXG4gICAqL1xuICBwcm90ZWN0ZWQgYWZ0ZXJFZGl0KGNlbGw6IENlbGw8VD4sIG5ld1ZhbHVlOiBUKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaG9va3M/LmFmdGVyRWRpdCkge1xuICAgICAgdGhpcy5ob29rcy5hZnRlckVkaXQoe1xuICAgICAgICB2YWx1ZTogbmV3VmFsdWUsXG4gICAgICAgIHByZXZpb3VzVmFsdWU6IGNlbGwuZ2V0VmFsdWUoKSxcbiAgICAgICAgcm93RGF0YTogY2VsbC5nZXRSb3dEYXRhKCksXG4gICAgICAgIGNvbHVtbktleTogdGhpcy5rZXksXG4gICAgICAgIHJvd0luZGV4OiBjZWxsLmdldFJvd0luZGV4KClcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBIb29rOiBBZnRlciBjZWxsIGlzIGNyZWF0ZWQgKGNhbiBiZSBvdmVycmlkZGVuKVxuICAgKi9cbiAgcHJvdGVjdGVkIGFmdGVyQ2VsbENyZWF0ZWQoY2VsbDogQ2VsbDxUPiwgcm93RGF0YTogYW55LCByb3dJbmRleD86IG51bWJlcik6IHZvaWQge1xuICAgIC8vIFN1YmNsYXNzZXMgY2FuIG92ZXJyaWRlIHRvIHBlcmZvcm0gcG9zdC1jcmVhdGlvbiBzZXR1cFxuICB9XG5cbiAgLyoqXG4gICAqIEhvb2s6IFdoZW4gdmFsaWRhdGlvbiBmYWlscyAoY2FuIGJlIG92ZXJyaWRkZW4pXG4gICAqL1xuICBwcm90ZWN0ZWQgb25WYWxpZGF0aW9uRmFpbGVkKGNlbGw6IENlbGw8VD4sIHZhbGlkYXRpb25SZXN1bHQ6IFZhbGlkYXRpb25SZXN1bHQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5ob29rcz8ub25WYWxpZGF0aW9uRXJyb3IpIHtcbiAgICAgIHRoaXMuaG9va3Mub25WYWxpZGF0aW9uRXJyb3Ioe1xuICAgICAgICB2YWx1ZTogY2VsbC5nZXRWYWx1ZSgpLFxuICAgICAgICByb3dEYXRhOiBjZWxsLmdldFJvd0RhdGEoKSxcbiAgICAgICAgY29sdW1uS2V5OiB0aGlzLmtleSxcbiAgICAgICAgcm93SW5kZXg6IGNlbGwuZ2V0Um93SW5kZXgoKVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEV4dHJhY3QgdmFsdWUgZnJvbSByb3cgZGF0YSAoY2FuIGJlIG92ZXJyaWRkZW4pXG4gICAqL1xuICBwcm90ZWN0ZWQgZXh0cmFjdFZhbHVlKHJvd0RhdGE6IGFueSk6IFQge1xuICAgIGlmICh0aGlzLnZhbHVlR2V0dGVyKSB7XG4gICAgICByZXR1cm4gdGhpcy52YWx1ZUdldHRlcihyb3dEYXRhKTtcbiAgICB9XG4gICAgcmV0dXJuIHJvd0RhdGFbdGhpcy5rZXldO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhcnNlIHZhbHVlIHVzaW5nIHBhcnNlciBpZiBhdmFpbGFibGUgKGNhbiBiZSBvdmVycmlkZGVuKVxuICAgKi9cbiAgcHJvdGVjdGVkIHBhcnNlVmFsdWUodmFsdWU6IGFueSk6IFQgfCB1bmRlZmluZWQge1xuICAgIGlmICh0aGlzLnBhcnNlcikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VyLnBhcnNlKHZhbHVlKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBwYXJzZSB2YWx1ZSBmb3IgY29sdW1uICR7dGhpcy5rZXl9OmAsIGVycm9yKTtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIHZhbHVlIHVzaW5nIHZhbGlkYXRvciBpZiBhdmFpbGFibGUgKGNhbiBiZSBvdmVycmlkZGVuKVxuICAgKi9cbiAgcHJvdGVjdGVkIHZhbGlkYXRlVmFsdWUodmFsdWU6IFQsIHJvd0RhdGE6IGFueSk6IFZhbGlkYXRpb25SZXN1bHQge1xuICAgIGlmICh0aGlzLnZhbGlkYXRvcikge1xuICAgICAgaWYgKHRoaXMudmFsaWRhdG9yLnZhbGlkYXRlV2l0aENvbnRleHQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdG9yLnZhbGlkYXRlV2l0aENvbnRleHQodmFsdWUsIHJvd0RhdGEsIHRoaXMua2V5KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRvci52YWxpZGF0ZSh2YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiB7IHZhbGlkOiB0cnVlIH07XG4gIH1cblxuICAvKipcbiAgICogRm9ybWF0IHZhbHVlIGZvciBkaXNwbGF5IChjYW4gYmUgb3ZlcnJpZGRlbilcbiAgICovXG4gIGZvcm1hdFZhbHVlKHZhbHVlOiBULCByb3dEYXRhPzogYW55KTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5mb3JtYXR0ZXIpIHtcbiAgICAgIGlmICh0aGlzLmZvcm1hdHRlci5mb3JtYXRXaXRoQ29udGV4dCAmJiByb3dEYXRhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1hdHRlci5mb3JtYXRXaXRoQ29udGV4dCh2YWx1ZSwgcm93RGF0YSwgdGhpcy5rZXkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0dGVyLmZvcm1hdCh2YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiBTdHJpbmcodmFsdWUgPz8gJycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBjZWxsIHRvb2x0aXAgKGNhbiBiZSBvdmVycmlkZGVuKVxuICAgKi9cbiAgZ2V0VG9vbHRpcCh2YWx1ZTogVCwgcm93RGF0YTogYW55KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIXRoaXMudG9vbHRpcCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgXG4gICAgaWYgKHR5cGVvZiB0aGlzLnRvb2x0aXAgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiB0aGlzLnRvb2x0aXAodmFsdWUsIHJvd0RhdGEpO1xuICAgIH1cbiAgICBcbiAgICByZXR1cm4gdGhpcy50b29sdGlwO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBjZWxsIGNsYXNzIG5hbWVzIChjYW4gYmUgb3ZlcnJpZGRlbilcbiAgICovXG4gIGdldENsYXNzTmFtZSh2YWx1ZTogVCwgcm93RGF0YTogYW55KTogc3RyaW5nIHwgc3RyaW5nW10gfCB1bmRlZmluZWQge1xuICAgIGlmICghdGhpcy5jbGFzc05hbWUpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIFxuICAgIGlmICh0eXBlb2YgdGhpcy5jbGFzc05hbWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiB0aGlzLmNsYXNzTmFtZSh2YWx1ZSwgcm93RGF0YSk7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiB0aGlzLmNsYXNzTmFtZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgY2VsbCBzdHlsZXMgKGNhbiBiZSBvdmVycmlkZGVuKVxuICAgKi9cbiAgZ2V0U3R5bGUodmFsdWU6IFQsIHJvd0RhdGE6IGFueSk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICAgIGlmICghdGhpcy5zdHlsZSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgXG4gICAgaWYgKHR5cGVvZiB0aGlzLnN0eWxlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gdGhpcy5zdHlsZSh2YWx1ZSwgcm93RGF0YSk7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiB0aGlzLnN0eWxlO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXBhcmUgdHdvIHZhbHVlcyBmb3Igc29ydGluZyAoY2FuIGJlIG92ZXJyaWRkZW4pXG4gICAqL1xuICBjb21wYXJlKGE6IFQsIGI6IFQpOiBudW1iZXIge1xuICAgIGlmICh0aGlzLmNvbXBhcmF0b3IpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbXBhcmF0b3IoYSwgYik7XG4gICAgfVxuICAgIFxuICAgIC8vIERlZmF1bHQgY29tcGFyaXNvblxuICAgIGlmIChhID09PSBiKSByZXR1cm4gMDtcbiAgICBpZiAoYSA9PSBudWxsKSByZXR1cm4gLTE7XG4gICAgaWYgKGIgPT0gbnVsbCkgcmV0dXJuIDE7XG4gICAgXG4gICAgaWYgKHR5cGVvZiBhID09PSAnbnVtYmVyJyAmJiB0eXBlb2YgYiA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiBhIC0gYjtcbiAgICB9XG4gICAgXG4gICAgaWYgKGEgaW5zdGFuY2VvZiBEYXRlICYmIGIgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICByZXR1cm4gYS5nZXRUaW1lKCkgLSBiLmdldFRpbWUoKTtcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIFN0cmluZyhhKS5sb2NhbGVDb21wYXJlKFN0cmluZyhiKSk7XG4gIH1cbn1cblxuLyoqXG4gKiBDb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBmb3Igc2ltcGxlIHVzZSBjYXNlc1xuICovXG5leHBvcnQgY2xhc3MgU2ltcGxlQ29sdW1uQ29uZmlnPFQgPSBhbnk+IGV4dGVuZHMgQmFzZUNvbHVtbkNvbmZpZzxUPiB7XG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogUGFydGlhbDxDb2x1bW5Db25maWc8VD4+ICYgeyBrZXk6IHN0cmluZyB9KSB7XG4gICAgc3VwZXIoY29uZmlnKTtcbiAgfVxufVxuXG4iXX0=
260
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jb2x1bW4tY29uZmlnLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtdGFibGUvc3JjL2xpYi9tb2RlbHMvYmFzZS1jb2x1bW4tY29uZmlnLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsT0FBTyxFQUFnQixxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUlyRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUVwRTs7O0dBR0c7QUFDSCxNQUFNLE9BQWdCLGdCQUFnQjtJQWtDcEMsWUFBWSxNQUFrRDtRQUM1RCxNQUFNLE1BQU0sR0FBRyxxQkFBcUIsQ0FBQyxxQkFBcUIsRUFBRSxNQUFNLENBQW9CLENBQUM7UUFFdkYsSUFBSSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUM1QixJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7UUFDaEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLE1BQU0sQ0FBQyxTQUFTLEtBQUssUUFBUTtZQUNuRCxDQUFDLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztZQUNwQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztRQUNyQixJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUM7UUFDbEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQzVCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUM1QixJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7UUFDaEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUNoQyxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUM7UUFDcEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUMxQixJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7UUFDaEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQztRQUNsQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDO1FBQ2xELElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUNoQyxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUM7UUFDOUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUMxQixJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUM7UUFDeEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDO1FBQzVDLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQztRQUM5QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDNUIsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztRQUNwQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUM7UUFDdEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUMxQixJQUFJLENBQUMsb0JBQW9CLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDO1FBQ3hELElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsVUFBVSxDQUFDLE9BQVksRUFBRSxRQUFpQjtRQUN4QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFJLElBQUksRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBRXpELGdDQUFnQztRQUNoQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztRQUUvQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7O09BR0c7SUFDSCxXQUFXLENBQUMsSUFBYSxFQUFFLFFBQVc7UUFDcEMsMkJBQTJCO1FBQzNCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsRUFBRTtZQUNwQyxPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsMEJBQTBCO1FBQzFCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDOUMsSUFBSSxXQUFXLEtBQUssU0FBUyxFQUFFO1lBQzdCLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxvQ0FBb0M7UUFDcEMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUM1RSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFO1lBQzNCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztZQUNoRCxPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsMEJBQTBCO1FBQzFCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFM0MsSUFBSSxPQUFPLEVBQUU7WUFDWCwwQkFBMEI7WUFDMUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFFbEMscURBQXFEO1lBQ3JELElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDcEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUM7YUFDbEQ7U0FDRjtRQUVELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7T0FFRztJQUNPLFVBQVUsQ0FBQyxJQUFhLEVBQUUsUUFBVztRQUM3QyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFO1lBQzFCLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO2dCQUNwQixLQUFLLEVBQUUsUUFBUTtnQkFDZixhQUFhLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDOUIsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQzFCLFNBQVMsRUFBRSxJQUFJLENBQUMsR0FBRztnQkFDbkIsUUFBUSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUU7YUFDN0IsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7T0FFRztJQUNPLFNBQVMsQ0FBQyxJQUFhLEVBQUUsUUFBVztRQUM1QyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFO1lBQ3pCLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO2dCQUNuQixLQUFLLEVBQUUsUUFBUTtnQkFDZixhQUFhLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDOUIsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQzFCLFNBQVMsRUFBRSxJQUFJLENBQUMsR0FBRztnQkFDbkIsUUFBUSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUU7YUFDN0IsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDTyxnQkFBZ0IsQ0FBQyxJQUFhLEVBQUUsT0FBWSxFQUFFLFFBQWlCO1FBQ3ZFLHlEQUF5RDtJQUMzRCxDQUFDO0lBRUQ7O09BRUc7SUFDTyxrQkFBa0IsQ0FBQyxJQUFhLEVBQUUsZ0JBQWtDO1FBQzVFLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxpQkFBaUIsRUFBRTtZQUNqQyxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDO2dCQUMzQixLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDdEIsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQzFCLFNBQVMsRUFBRSxJQUFJLENBQUMsR0FBRztnQkFDbkIsUUFBUSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUU7YUFDN0IsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDTyxZQUFZLENBQUMsT0FBWTtRQUNqQyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDcEIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ2xDO1FBQ0QsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRDs7T0FFRztJQUNPLFVBQVUsQ0FBQyxLQUFVO1FBQzdCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNmLElBQUk7Z0JBQ0YsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUNqQztZQUFDLE9BQU8sS0FBSyxFQUFFO2dCQUNkLE9BQU8sQ0FBQyxLQUFLLENBQUMsb0NBQW9DLElBQUksQ0FBQyxHQUFHLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDdEUsT0FBTyxTQUFTLENBQUM7YUFDbEI7U0FDRjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVEOztPQUVHO0lBQ08sYUFBYSxDQUFDLEtBQVEsRUFBRSxPQUFZO1FBQzVDLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNsQixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsbUJBQW1CLEVBQUU7Z0JBQ3RDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUNyRTtZQUNELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDdkM7UUFDRCxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVcsQ0FBQyxLQUFRLEVBQUUsT0FBYTtRQUNqQyxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQy9CLElBQUksT0FBTyxTQUFTLEtBQUssUUFBUSxFQUFFO1lBQ2pDLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUN6QztRQUNELElBQUksU0FBUyxFQUFFO1lBQ2IsSUFBSSxTQUFTLENBQUMsaUJBQWlCLElBQUksT0FBTyxFQUFFO2dCQUMxQyxPQUFPLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUM5RDtZQUNELE9BQU8sU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNoQztRQUNELE9BQU8sTUFBTSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxVQUFVLENBQUMsS0FBUSxFQUFFLE9BQVk7UUFDL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDakIsT0FBTyxTQUFTLENBQUM7U0FDbEI7UUFFRCxJQUFJLE9BQU8sSUFBSSxDQUFDLE9BQU8sS0FBSyxVQUFVLEVBQUU7WUFDdEMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztTQUNyQztRQUVELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxZQUFZLENBQUMsS0FBUSxFQUFFLE9BQVk7UUFDakMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbkIsT0FBTyxTQUFTLENBQUM7U0FDbEI7UUFFRCxJQUFJLE9BQU8sSUFBSSxDQUFDLFNBQVMsS0FBSyxVQUFVLEVBQUU7WUFDeEMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztTQUN2QztRQUVELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxRQUFRLENBQUMsS0FBUSxFQUFFLE9BQVk7UUFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZixPQUFPLFNBQVMsQ0FBQztTQUNsQjtRQUVELElBQUksT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLFVBQVUsRUFBRTtZQUNwQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQ25DO1FBRUQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7T0FFRztJQUNILE9BQU8sQ0FBQyxDQUFJLEVBQUUsQ0FBSTtRQUNoQixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDbkIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUM5QjtRQUVELHFCQUFxQjtRQUNyQixJQUFJLENBQUMsS0FBSyxDQUFDO1lBQUUsT0FBTyxDQUFDLENBQUM7UUFDdEIsSUFBSSxDQUFDLElBQUksSUFBSTtZQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLElBQUksSUFBSTtZQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRXhCLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsRUFBRTtZQUNsRCxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDZDtRQUVELElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxFQUFFO1lBQzFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUNsQztRQUVELE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QyxDQUFDO0NBQ0Y7QUFFRDs7R0FFRztBQUNILE1BQU0sT0FBTyxrQkFBNEIsU0FBUSxnQkFBbUI7SUFDbEUsWUFBWSxNQUFrRDtRQUM1RCxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBCYXNlIGNvbHVtbiBjb25maWd1cmF0aW9uIGNsYXNzIGltcGxlbWVudGluZyBUZW1wbGF0ZSBNZXRob2QgcGF0dGVyblxuICovXG5cbmltcG9ydCB7IENvbHVtbkNvbmZpZywgREVGQVVMVF9DT0xVTU5fQ09ORklHIH0gZnJvbSAnLi9jb2x1bW4tY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDZWxsIH0gZnJvbSAnLi4vcmVuZGVyZXIvbW9kZWxzL2NlbGwuY2xhc3MnO1xuaW1wb3J0IHsgQ2VsbEZvcm1hdHRlciwgQ2VsbFZhbGlkYXRvciwgQ2VsbEVkaXRvciwgQ2VsbFBhcnNlciwgQ2VsbExpZmVjeWNsZUhvb2tzIH0gZnJvbSAnLi9jZWxsLXN0cmF0ZWdpZXMuaW50ZXJmYWNlJztcbmltcG9ydCB7IENlbGxBbGlnbm1lbnQsIENlbGxWZXJ0aWNhbEFsaWdubWVudCwgRWRpdE1vZGUsIENlbGxEYXRhVHlwZSwgVmFsaWRhdGlvblJlc3VsdCB9IGZyb20gJy4vY2VsbC10eXBlcyc7XG5pbXBvcnQgeyBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZGVlcE1lcmdlQ29sdW1uQ29uZmlnIH0gZnJvbSAnLi9jb2x1bW4tY29uZmlnLnV0aWxzJztcbmltcG9ydCB7IHJlc29sdmVGb3JtYXR0ZXIgfSBmcm9tICcuLi9mb3JtYXR0ZXJzL2Zvcm1hdHRlci1yZWdpc3RyeSc7XG5cbi8qKlxuICogQWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgY29sdW1uIGNvbmZpZ3VyYXRpb25zXG4gKiBJbXBsZW1lbnRzIFRlbXBsYXRlIE1ldGhvZCBwYXR0ZXJuIGZvciBjZWxsIG9wZXJhdGlvbnNcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VDb2x1bW5Db25maWc8VCA9IGFueT4gaW1wbGVtZW50cyBDb2x1bW5Db25maWc8VD4ge1xuICByZWFkb25seSBrZXk6IHN0cmluZztcbiAgcmVhZG9ubHkgaGVhZGVyPzogc3RyaW5nO1xuICByZWFkb25seSBkYXRhVHlwZT86IENlbGxEYXRhVHlwZTtcbiAgcmVhZG9ubHkgZm9ybWF0dGVyPzogQ2VsbEZvcm1hdHRlcjxUPiB8IHN0cmluZztcbiAgcmVhZG9ubHkgdmFsaWRhdG9yPzogQ2VsbFZhbGlkYXRvcjxUPjtcbiAgcmVhZG9ubHkgZWRpdG9yPzogQ2VsbEVkaXRvcjxUPjtcbiAgcmVhZG9ubHkgcGFyc2VyPzogQ2VsbFBhcnNlcjxUPjtcbiAgcmVhZG9ubHkgZWRpdGFibGU/OiBib29sZWFuO1xuICByZWFkb25seSBlZGl0TW9kZT86IEVkaXRNb2RlO1xuICByZWFkb25seSBzb3J0YWJsZT86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGZpbHRlcmFibGU/OiBib29sZWFuO1xuICByZWFkb25seSByZXNpemFibGU/OiBib29sZWFuO1xuICByZWFkb25seSB3aWR0aD86IG51bWJlciB8IHN0cmluZztcbiAgcmVhZG9ubHkgbWluV2lkdGg/OiBudW1iZXI7XG4gIHJlYWRvbmx5IG1heFdpZHRoPzogbnVtYmVyO1xuICByZWFkb25seSBhbGlnbm1lbnQ/OiBDZWxsQWxpZ25tZW50O1xuICByZWFkb25seSB2ZXJ0aWNhbEFsaWdubWVudD86IENlbGxWZXJ0aWNhbEFsaWdubWVudDtcbiAgcmVhZG9ubHkgdHJ1bmNhdGU/OiBib29sZWFuO1xuICByZWFkb25seSB0b29sdGlwPzogc3RyaW5nIHwgKCh2YWx1ZTogVCwgcm93RGF0YTogYW55KSA9PiBzdHJpbmcpO1xuICByZWFkb25seSBjbGFzc05hbWU/OiBzdHJpbmcgfCBzdHJpbmdbXSB8ICgodmFsdWU6IFQsIHJvd0RhdGE6IGFueSkgPT4gc3RyaW5nIHwgc3RyaW5nW10pO1xuICByZWFkb25seSBzdHlsZT86IFJlY29yZDxzdHJpbmcsIGFueT4gfCAoKHZhbHVlOiBULCByb3dEYXRhOiBhbnkpID0+IFJlY29yZDxzdHJpbmcsIGFueT4pO1xuICByZWFkb25seSBjZWxsVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xuICByZWFkb25seSBoZWFkZXJUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT47XG4gIHJlYWRvbmx5IHZpc2libGU/OiBib29sZWFuO1xuICByZWFkb25seSBwaW5uZWQ/OiAnbGVmdCcgfCAncmlnaHQnIHwgZmFsc2U7XG4gIHJlYWRvbmx5IHNvcnRQcmlvcml0eT86IG51bWJlcjtcbiAgcmVhZG9ubHkgY29tcGFyYXRvcj86IChhOiBULCBiOiBUKSA9PiBudW1iZXI7XG4gIHJlYWRvbmx5IHZhbHVlR2V0dGVyPzogKHJvd0RhdGE6IGFueSkgPT4gVDtcbiAgcmVhZG9ubHkgdmFsdWVTZXR0ZXI/OiAocm93RGF0YTogYW55LCB2YWx1ZTogVCkgPT4gdm9pZDtcbiAgcmVhZG9ubHkgaG9va3M/OiBDZWxsTGlmZWN5Y2xlSG9va3M8VD47XG4gIHJlYWRvbmx5IHNob3dMb2FkaW5nSW5kaWNhdG9yPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogUGFydGlhbDxDb2x1bW5Db25maWc8VD4+ICYgeyBrZXk6IHN0cmluZyB9KSB7XG4gICAgY29uc3QgbWVyZ2VkID0gZGVlcE1lcmdlQ29sdW1uQ29uZmlnKERFRkFVTFRfQ09MVU1OX0NPTkZJRywgY29uZmlnKSBhcyBDb2x1bW5Db25maWc8VD47XG4gICAgXG4gICAgdGhpcy5rZXkgPSBtZXJnZWQua2V5O1xuICAgIHRoaXMuaGVhZGVyID0gbWVyZ2VkLmhlYWRlcjtcbiAgICB0aGlzLmRhdGFUeXBlID0gbWVyZ2VkLmRhdGFUeXBlO1xuICAgIHRoaXMuZm9ybWF0dGVyID0gdHlwZW9mIG1lcmdlZC5mb3JtYXR0ZXIgPT09ICdzdHJpbmcnXG4gICAgICA/IHJlc29sdmVGb3JtYXR0ZXIobWVyZ2VkLmZvcm1hdHRlcilcbiAgICAgIDogbWVyZ2VkLmZvcm1hdHRlcjtcbiAgICB0aGlzLnZhbGlkYXRvciA9IG1lcmdlZC52YWxpZGF0b3I7XG4gICAgdGhpcy5lZGl0b3IgPSBtZXJnZWQuZWRpdG9yO1xuICAgIHRoaXMucGFyc2VyID0gbWVyZ2VkLnBhcnNlcjtcbiAgICB0aGlzLmVkaXRhYmxlID0gbWVyZ2VkLmVkaXRhYmxlO1xuICAgIHRoaXMuZWRpdE1vZGUgPSBtZXJnZWQuZWRpdE1vZGU7XG4gICAgdGhpcy5zb3J0YWJsZSA9IG1lcmdlZC5zb3J0YWJsZTtcbiAgICB0aGlzLmZpbHRlcmFibGUgPSBtZXJnZWQuZmlsdGVyYWJsZTtcbiAgICB0aGlzLnJlc2l6YWJsZSA9IG1lcmdlZC5yZXNpemFibGU7XG4gICAgdGhpcy53aWR0aCA9IG1lcmdlZC53aWR0aDtcbiAgICB0aGlzLm1pbldpZHRoID0gbWVyZ2VkLm1pbldpZHRoO1xuICAgIHRoaXMubWF4V2lkdGggPSBtZXJnZWQubWF4V2lkdGg7XG4gICAgdGhpcy5hbGlnbm1lbnQgPSBtZXJnZWQuYWxpZ25tZW50O1xuICAgIHRoaXMudmVydGljYWxBbGlnbm1lbnQgPSBtZXJnZWQudmVydGljYWxBbGlnbm1lbnQ7XG4gICAgdGhpcy50cnVuY2F0ZSA9IG1lcmdlZC50cnVuY2F0ZTtcbiAgICB0aGlzLnRvb2x0aXAgPSBtZXJnZWQudG9vbHRpcDtcbiAgICB0aGlzLmNsYXNzTmFtZSA9IG1lcmdlZC5jbGFzc05hbWU7XG4gICAgdGhpcy5zdHlsZSA9IG1lcmdlZC5zdHlsZTtcbiAgICB0aGlzLmNlbGxUZW1wbGF0ZSA9IG1lcmdlZC5jZWxsVGVtcGxhdGU7XG4gICAgdGhpcy5oZWFkZXJUZW1wbGF0ZSA9IG1lcmdlZC5oZWFkZXJUZW1wbGF0ZTtcbiAgICB0aGlzLnZpc2libGUgPSBtZXJnZWQudmlzaWJsZTtcbiAgICB0aGlzLnBpbm5lZCA9IG1lcmdlZC5waW5uZWQ7XG4gICAgdGhpcy5zb3J0UHJpb3JpdHkgPSBtZXJnZWQuc29ydFByaW9yaXR5O1xuICAgIHRoaXMuY29tcGFyYXRvciA9IG1lcmdlZC5jb21wYXJhdG9yO1xuICAgIHRoaXMudmFsdWVHZXR0ZXIgPSBtZXJnZWQudmFsdWVHZXR0ZXI7XG4gICAgdGhpcy52YWx1ZVNldHRlciA9IG1lcmdlZC52YWx1ZVNldHRlcjtcbiAgICB0aGlzLmhvb2tzID0gbWVyZ2VkLmhvb2tzO1xuICAgIHRoaXMuc2hvd0xvYWRpbmdJbmRpY2F0b3IgPSBtZXJnZWQuc2hvd0xvYWRpbmdJbmRpY2F0b3I7XG4gICAgdGhpcy5tZXRhZGF0YSA9IG1lcmdlZC5tZXRhZGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGYWN0b3J5IG1ldGhvZCB0byBjcmVhdGUgYSBjZWxsIChGYWN0b3J5IFBhdHRlcm4pXG4gICAqIENhbiBiZSBvdmVycmlkZGVuIGJ5IHN1YmNsYXNzZXMgZm9yIGN1c3RvbSBjZWxsIGNyZWF0aW9uXG4gICAqL1xuICBjcmVhdGVDZWxsKHJvd0RhdGE6IGFueSwgcm93SW5kZXg/OiBudW1iZXIpOiBDZWxsPFQ+IHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZXh0cmFjdFZhbHVlKHJvd0RhdGEpO1xuICAgIGNvbnN0IGNlbGwgPSBuZXcgQ2VsbDxUPih0aGlzLCB2YWx1ZSwgcm93RGF0YSwgcm93SW5kZXgpO1xuICAgIFxuICAgIC8vIEFwcGx5IGFueSBwb3N0LWNyZWF0aW9uIGhvb2tzXG4gICAgdGhpcy5hZnRlckNlbGxDcmVhdGVkKGNlbGwsIHJvd0RhdGEsIHJvd0luZGV4KTtcbiAgICBcbiAgICByZXR1cm4gY2VsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUZW1wbGF0ZSBtZXRob2QgZm9yIHByb2Nlc3NpbmcgY2VsbCBlZGl0IHdvcmtmbG93XG4gICAqIERlZmluZXMgdGhlIGFsZ29yaXRobSBzdGVwcyB0aGF0IHN1YmNsYXNzZXMgY2FuIGN1c3RvbWl6ZVxuICAgKi9cbiAgcHJvY2Vzc0VkaXQoY2VsbDogQ2VsbDxUPiwgbmV3VmFsdWU6IFQpOiBib29sZWFuIHtcbiAgICAvLyBTdGVwIDE6IEJlZm9yZSBlZGl0IGhvb2tcbiAgICBpZiAoIXRoaXMuYmVmb3JlRWRpdChjZWxsLCBuZXdWYWx1ZSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBTdGVwIDI6IFBhcnNlIHRoZSB2YWx1ZVxuICAgIGNvbnN0IHBhcnNlZFZhbHVlID0gdGhpcy5wYXJzZVZhbHVlKG5ld1ZhbHVlKTtcbiAgICBpZiAocGFyc2VkVmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIFN0ZXAgMzogVmFsaWRhdGUgdGhlIHBhcnNlZCB2YWx1ZVxuICAgIGNvbnN0IHZhbGlkYXRpb25SZXN1bHQgPSB0aGlzLnZhbGlkYXRlVmFsdWUocGFyc2VkVmFsdWUsIGNlbGwuZ2V0Um93RGF0YSgpKTtcbiAgICBpZiAoIXZhbGlkYXRpb25SZXN1bHQudmFsaWQpIHtcbiAgICAgIHRoaXMub25WYWxpZGF0aW9uRmFpbGVkKGNlbGwsIHZhbGlkYXRpb25SZXN1bHQpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIFN0ZXAgNDogQXBwbHkgdGhlIHZhbHVlXG4gICAgY29uc3Qgc3VjY2VzcyA9IGNlbGwuc2F2ZUVkaXQocGFyc2VkVmFsdWUpO1xuICAgIFxuICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICAvLyBTdGVwIDU6IEFmdGVyIGVkaXQgaG9va1xuICAgICAgdGhpcy5hZnRlckVkaXQoY2VsbCwgcGFyc2VkVmFsdWUpO1xuICAgICAgXG4gICAgICAvLyBTdGVwIDY6IFVwZGF0ZSByb3cgZGF0YSBpZiB2YWx1ZVNldHRlciBpcyBwcm92aWRlZFxuICAgICAgaWYgKHRoaXMudmFsdWVTZXR0ZXIpIHtcbiAgICAgICAgdGhpcy52YWx1ZVNldHRlcihjZWxsLmdldFJvd0RhdGEoKSwgcGFyc2VkVmFsdWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzdWNjZXNzO1xuICB9XG5cbiAgLyoqXG4gICAqIEhvb2s6IEJlZm9yZSBlZGl0IHZhbGlkYXRpb24gKGNhbiBiZSBvdmVycmlkZGVuKVxuICAgKi9cbiAgcHJvdGVjdGVkIGJlZm9yZUVkaXQoY2VsbDogQ2VsbDxUPiwgbmV3VmFsdWU6IFQpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5ob29rcz8uYmVmb3JlRWRpdCkge1xuICAgICAgdGhpcy5ob29rcy5iZWZvcmVFZGl0KHtcbiAgICAgICAgdmFsdWU6IG5ld1ZhbHVlLFxuICAgICAgICBwcmV2aW91c1ZhbHVlOiBjZWxsLmdldFZhbHVlKCksXG4gICAgICAgIHJvd0RhdGE6IGNlbGwuZ2V0Um93RGF0YSgpLFxuICAgICAgICBjb2x1bW5LZXk6IHRoaXMua2V5LFxuICAgICAgICByb3dJbmRleDogY2VsbC5nZXRSb3dJbmRleCgpXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogSG9vazogQWZ0ZXIgZWRpdCBjb21wbGV0aW9uIChjYW4gYmUgb3ZlcnJpZGRlbilcbiAgICovXG4gIHByb3RlY3RlZCBhZnRlckVkaXQoY2VsbDogQ2VsbDxUPiwgbmV3VmFsdWU6IFQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5ob29rcz8uYWZ0ZXJFZGl0KSB7XG4gICAgICB0aGlzLmhvb2tzLmFmdGVyRWRpdCh7XG4gICAgICAgIHZhbHVlOiBuZXdWYWx1ZSxcbiAgICAgICAgcHJldmlvdXNWYWx1ZTogY2VsbC5nZXRWYWx1ZSgpLFxuICAgICAgICByb3dEYXRhOiBjZWxsLmdldFJvd0RhdGEoKSxcbiAgICAgICAgY29sdW1uS2V5OiB0aGlzLmtleSxcbiAgICAgICAgcm93SW5kZXg6IGNlbGwuZ2V0Um93SW5kZXgoKVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEhvb2s6IEFmdGVyIGNlbGwgaXMgY3JlYXRlZCAoY2FuIGJlIG92ZXJyaWRkZW4pXG4gICAqL1xuICBwcm90ZWN0ZWQgYWZ0ZXJDZWxsQ3JlYXRlZChjZWxsOiBDZWxsPFQ+LCByb3dEYXRhOiBhbnksIHJvd0luZGV4PzogbnVtYmVyKTogdm9pZCB7XG4gICAgLy8gU3ViY2xhc3NlcyBjYW4gb3ZlcnJpZGUgdG8gcGVyZm9ybSBwb3N0LWNyZWF0aW9uIHNldHVwXG4gIH1cblxuICAvKipcbiAgICogSG9vazogV2hlbiB2YWxpZGF0aW9uIGZhaWxzIChjYW4gYmUgb3ZlcnJpZGRlbilcbiAgICovXG4gIHByb3RlY3RlZCBvblZhbGlkYXRpb25GYWlsZWQoY2VsbDogQ2VsbDxUPiwgdmFsaWRhdGlvblJlc3VsdDogVmFsaWRhdGlvblJlc3VsdCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhvb2tzPy5vblZhbGlkYXRpb25FcnJvcikge1xuICAgICAgdGhpcy5ob29rcy5vblZhbGlkYXRpb25FcnJvcih7XG4gICAgICAgIHZhbHVlOiBjZWxsLmdldFZhbHVlKCksXG4gICAgICAgIHJvd0RhdGE6IGNlbGwuZ2V0Um93RGF0YSgpLFxuICAgICAgICBjb2x1bW5LZXk6IHRoaXMua2V5LFxuICAgICAgICByb3dJbmRleDogY2VsbC5nZXRSb3dJbmRleCgpXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRXh0cmFjdCB2YWx1ZSBmcm9tIHJvdyBkYXRhIChjYW4gYmUgb3ZlcnJpZGRlbilcbiAgICovXG4gIHByb3RlY3RlZCBleHRyYWN0VmFsdWUocm93RGF0YTogYW55KTogVCB7XG4gICAgaWYgKHRoaXMudmFsdWVHZXR0ZXIpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlR2V0dGVyKHJvd0RhdGEpO1xuICAgIH1cbiAgICByZXR1cm4gcm93RGF0YVt0aGlzLmtleV07XG4gIH1cblxuICAvKipcbiAgICogUGFyc2UgdmFsdWUgdXNpbmcgcGFyc2VyIGlmIGF2YWlsYWJsZSAoY2FuIGJlIG92ZXJyaWRkZW4pXG4gICAqL1xuICBwcm90ZWN0ZWQgcGFyc2VWYWx1ZSh2YWx1ZTogYW55KTogVCB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRoaXMucGFyc2VyKSB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gdGhpcy5wYXJzZXIucGFyc2UodmFsdWUpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIHBhcnNlIHZhbHVlIGZvciBjb2x1bW4gJHt0aGlzLmtleX06YCwgZXJyb3IpO1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgdmFsdWUgdXNpbmcgdmFsaWRhdG9yIGlmIGF2YWlsYWJsZSAoY2FuIGJlIG92ZXJyaWRkZW4pXG4gICAqL1xuICBwcm90ZWN0ZWQgdmFsaWRhdGVWYWx1ZSh2YWx1ZTogVCwgcm93RGF0YTogYW55KTogVmFsaWRhdGlvblJlc3VsdCB7XG4gICAgaWYgKHRoaXMudmFsaWRhdG9yKSB7XG4gICAgICBpZiAodGhpcy52YWxpZGF0b3IudmFsaWRhdGVXaXRoQ29udGV4dCkge1xuICAgICAgICByZXR1cm4gdGhpcy52YWxpZGF0b3IudmFsaWRhdGVXaXRoQ29udGV4dCh2YWx1ZSwgcm93RGF0YSwgdGhpcy5rZXkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdG9yLnZhbGlkYXRlKHZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHsgdmFsaWQ6IHRydWUgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3JtYXQgdmFsdWUgZm9yIGRpc3BsYXkgKGNhbiBiZSBvdmVycmlkZGVuKVxuICAgKi9cbiAgZm9ybWF0VmFsdWUodmFsdWU6IFQsIHJvd0RhdGE/OiBhbnkpOiBzdHJpbmcge1xuICAgIGxldCBmb3JtYXR0ZXIgPSB0aGlzLmZvcm1hdHRlcjtcbiAgICBpZiAodHlwZW9mIGZvcm1hdHRlciA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGZvcm1hdHRlciA9IHJlc29sdmVGb3JtYXR0ZXIoZm9ybWF0dGVyKTtcbiAgICB9XG4gICAgaWYgKGZvcm1hdHRlcikge1xuICAgICAgaWYgKGZvcm1hdHRlci5mb3JtYXRXaXRoQ29udGV4dCAmJiByb3dEYXRhKSB7XG4gICAgICAgIHJldHVybiBmb3JtYXR0ZXIuZm9ybWF0V2l0aENvbnRleHQodmFsdWUsIHJvd0RhdGEsIHRoaXMua2V5KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmb3JtYXR0ZXIuZm9ybWF0KHZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIFN0cmluZyh2YWx1ZSA/PyAnJyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGNlbGwgdG9vbHRpcCAoY2FuIGJlIG92ZXJyaWRkZW4pXG4gICAqL1xuICBnZXRUb29sdGlwKHZhbHVlOiBULCByb3dEYXRhOiBhbnkpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGlmICghdGhpcy50b29sdGlwKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBcbiAgICBpZiAodHlwZW9mIHRoaXMudG9vbHRpcCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHRoaXMudG9vbHRpcCh2YWx1ZSwgcm93RGF0YSk7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiB0aGlzLnRvb2x0aXA7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGNlbGwgY2xhc3MgbmFtZXMgKGNhbiBiZSBvdmVycmlkZGVuKVxuICAgKi9cbiAgZ2V0Q2xhc3NOYW1lKHZhbHVlOiBULCByb3dEYXRhOiBhbnkpOiBzdHJpbmcgfCBzdHJpbmdbXSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCF0aGlzLmNsYXNzTmFtZSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgXG4gICAgaWYgKHR5cGVvZiB0aGlzLmNsYXNzTmFtZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHRoaXMuY2xhc3NOYW1lKHZhbHVlLCByb3dEYXRhKTtcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIHRoaXMuY2xhc3NOYW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBjZWxsIHN0eWxlcyAoY2FuIGJlIG92ZXJyaWRkZW4pXG4gICAqL1xuICBnZXRTdHlsZSh2YWx1ZTogVCwgcm93RGF0YTogYW55KTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCF0aGlzLnN0eWxlKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBcbiAgICBpZiAodHlwZW9mIHRoaXMuc3R5bGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiB0aGlzLnN0eWxlKHZhbHVlLCByb3dEYXRhKTtcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIHRoaXMuc3R5bGU7XG4gIH1cblxuICAvKipcbiAgICogQ29tcGFyZSB0d28gdmFsdWVzIGZvciBzb3J0aW5nIChjYW4gYmUgb3ZlcnJpZGRlbilcbiAgICovXG4gIGNvbXBhcmUoYTogVCwgYjogVCk6IG51bWJlciB7XG4gICAgaWYgKHRoaXMuY29tcGFyYXRvcikge1xuICAgICAgcmV0dXJuIHRoaXMuY29tcGFyYXRvcihhLCBiKTtcbiAgICB9XG4gICAgXG4gICAgLy8gRGVmYXVsdCBjb21wYXJpc29uXG4gICAgaWYgKGEgPT09IGIpIHJldHVybiAwO1xuICAgIGlmIChhID09IG51bGwpIHJldHVybiAtMTtcbiAgICBpZiAoYiA9PSBudWxsKSByZXR1cm4gMTtcbiAgICBcbiAgICBpZiAodHlwZW9mIGEgPT09ICdudW1iZXInICYmIHR5cGVvZiBiID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIGEgLSBiO1xuICAgIH1cbiAgICBcbiAgICBpZiAoYSBpbnN0YW5jZW9mIERhdGUgJiYgYiBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIHJldHVybiBhLmdldFRpbWUoKSAtIGIuZ2V0VGltZSgpO1xuICAgIH1cbiAgICBcbiAgICByZXR1cm4gU3RyaW5nKGEpLmxvY2FsZUNvbXBhcmUoU3RyaW5nKGIpKTtcbiAgfVxufVxuXG4vKipcbiAqIENvbmNyZXRlIGltcGxlbWVudGF0aW9uIGZvciBzaW1wbGUgdXNlIGNhc2VzXG4gKi9cbmV4cG9ydCBjbGFzcyBTaW1wbGVDb2x1bW5Db25maWc8VCA9IGFueT4gZXh0ZW5kcyBCYXNlQ29sdW1uQ29uZmlnPFQ+IHtcbiAgY29uc3RydWN0b3IoY29uZmlnOiBQYXJ0aWFsPENvbHVtbkNvbmZpZzxUPj4gJiB7IGtleTogc3RyaW5nIH0pIHtcbiAgICBzdXBlcihjb25maWcpO1xuICB9XG59XG5cbiJdfQ==
@@ -40,4 +40,4 @@ export const DEFAULT_COLUMN_CONFIG = {
40
40
  enabled: false
41
41
  }
42
42
  };
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLWNvbmZpZy5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC10YWJsZS9zcmMvbGliL21vZGVscy9jb2x1bW4tY29uZmlnLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFHSCxPQUFPLEVBQUUsYUFBYSxFQUFFLHFCQUFxQixFQUFFLFFBQVEsRUFBZ0IsTUFBTSxjQUFjLENBQUM7QUFDNUYsT0FBTyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUcvRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUEwVDNEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQStCO0lBQy9ELFFBQVEsRUFBRSxJQUFJO0lBQ2QsUUFBUSxFQUFFLFFBQVEsQ0FBQyxLQUFLO0lBQ3hCLFFBQVEsRUFBRSxJQUFJO0lBQ2QsVUFBVSxFQUFFLElBQUk7SUFDaEIsU0FBUyxFQUFFLElBQUk7SUFDZixRQUFRLEVBQUUsSUFBSTtJQUNkLE9BQU8sRUFBRSxJQUFJO0lBQ2IsUUFBUSxFQUFFLElBQUk7SUFDZCxVQUFVLEVBQUUsSUFBSTtJQUNoQixhQUFhLEVBQUUsRUFBRTtJQUNqQixxQkFBcUIsRUFBRSxJQUFJO0lBQzNCLFFBQVEsRUFBRSxFQUFFO0lBQ1osUUFBUSxFQUFFLElBQUk7SUFDZCxPQUFPLEVBQUUsSUFBSTtJQUNiLFNBQVMsRUFBRSxhQUFhLENBQUMsSUFBSTtJQUM3QixpQkFBaUIsRUFBRSxxQkFBcUIsQ0FBQyxNQUFNO0lBQy9DLFFBQVEsRUFBRSxLQUFLO0lBQ2YsTUFBTSxFQUFFLEtBQUs7SUFDYixNQUFNLEVBQUUsS0FBSztJQUNiLGdCQUFnQixFQUFFLElBQUk7SUFDdEIsb0JBQW9CLEVBQUUsSUFBSTtJQUMxQixhQUFhLEVBQUUsYUFBYSxDQUFDLElBQUk7SUFDakMsV0FBVyxFQUFFLEtBQUs7SUFDbEIsTUFBTSxFQUFFLElBQUksVUFBVSxFQUFFO0lBQ3hCLFNBQVMsRUFBRSxJQUFJLGdCQUFnQixFQUFFO0lBQ2pDLFlBQVksRUFBRTtRQUNaLFFBQVEsRUFBRSxjQUFjLENBQUMsUUFBUTtRQUNqQyxPQUFPLEVBQUUsS0FBSztLQUNmO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29sdW1uIGNvbmZpZ3VyYXRpb24gaW50ZXJmYWNlIC0gRmx5d2VpZ2h0IHBhdHRlcm5cbiAqIFRoaXMgY29uZmlndXJhdGlvbiBpcyBzaGFyZWQgYWNyb3NzIGFsbCBjZWxscyBpbiBhIGNvbHVtblxuICovXG5cbmltcG9ydCB7IENlbGxGb3JtYXR0ZXIsIENlbGxWYWxpZGF0b3IsIENlbGxFZGl0b3IsIENlbGxQYXJzZXIsIENlbGxMaWZlY3ljbGVIb29rcyB9IGZyb20gJy4vY2VsbC1zdHJhdGVnaWVzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDZWxsQWxpZ25tZW50LCBDZWxsVmVydGljYWxBbGlnbm1lbnQsIEVkaXRNb2RlLCBDZWxsRGF0YVR5cGUgfSBmcm9tICcuL2NlbGwtdHlwZXMnO1xuaW1wb3J0IHsgU29ydERpcmVjdGlvbiwgRmlsdGVyT3BlcmF0b3IgfSBmcm9tICcuLi9yZW5kZXJlci9tb2RlbHMvdGFibGUtdHlwZXMnO1xuaW1wb3J0IHsgQ2VsbCB9IGZyb20gJy4uL3JlbmRlcmVyL21vZGVscy9jZWxsLmNsYXNzJztcbmltcG9ydCB7IFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEZWZhdWx0Rm9ybWF0dGVyIH0gZnJvbSAnLi4vc3RyYXRlZ2llcy9kZWZhdWx0LWZvcm1hdHRlcnMnO1xuaW1wb3J0IHsgVGV4dEVkaXRvciB9IGZyb20gJy4uL3N0cmF0ZWdpZXMvZGVmYXVsdC1lZGl0b3JzJztcbmltcG9ydCB7IENvbHVtbkFjdGlvbiB9IGZyb20gJy4vY29sdW1uLWFjdGlvbi5pbnRlcmZhY2UnO1xuXG5cbi8qKlxuICogRmlsdGVyIG9wdGlvbnMgY29uZmlndXJhdGlvbiBmb3IgY3VzdG9tIGRyb3Bkb3duIGZpbHRlcnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIEFycmF5IG9mIGRhdGEgaXRlbXMgdG8gZGlzcGxheSBpbiB0aGUgZHJvcGRvd25cbiAgICovXG4gIGRhdGE6IGFueVtdO1xuICBcbiAgLyoqXG4gICAqIEhhbmRsZXIgZnVuY3Rpb24gdG8gdHJhbnNmb3JtIGRhdGEgaXRlbXMgaW50byB7bGFiZWwsIHZhbHVlfSBwYWlyc1xuICAgKiBAcGFyYW0gaXRlbSBUaGUgZGF0YSBpdGVtIHRvIHRyYW5zZm9ybVxuICAgKiBAcmV0dXJucyBPYmplY3Qgd2l0aCBsYWJlbCAoZGlzcGxheWVkIHRleHQpIGFuZCB2YWx1ZSAoc3RvcmVkIHZhbHVlKVxuICAgKi9cbiAgaGFuZGxlcjogKGl0ZW06IGFueSkgPT4geyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogYW55IH07XG4gIFxuICAvKipcbiAgICogV2hldGhlciB0byBhbGxvdyBtdWx0aXBsZSBzZWxlY3Rpb25zXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBtdWx0aXNlbGVjdD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ29sdW1uIGNvbmZpZ3VyYXRpb24gLSBzaGFyZWQgaW1tdXRhYmxlIGNvbmZpZyBmb3IgYWxsIGNlbGxzIGluIGEgY29sdW1uIChGbHl3ZWlnaHQpXG4gKiBDb250YWlucyBiZWhhdmlvciwgbWV0YWRhdGEsIGFuZCBzdHJhdGVnaWVzIGJ1dCBOTyBzdGF0ZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbHVtbkNvbmZpZzxUID0gYW55PiB7XG4gIC8qKlxuICAgKiBVbmlxdWUga2V5IGZvciB0aGUgY29sdW1uIChtYXBzIHRvIHJvdyBkYXRhIHByb3BlcnR5KVxuICAgKi9cbiAgcmVhZG9ubHkga2V5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERpc3BsYXkgaGVhZGVyIHRleHQgZm9yIHRoZSBjb2x1bW5cbiAgICovXG4gIHJlYWRvbmx5IGhlYWRlcj86IHN0cmluZztcblxuICAvKipcbiAgICogRGF0YSB0eXBlIG9mIHRoZSBjb2x1bW4gdmFsdWVzXG4gICAqL1xuICByZWFkb25seSBkYXRhVHlwZT86IENlbGxEYXRhVHlwZTtcblxuICAvKipcbiAgICogRm9ybWF0dGVyIHN0cmF0ZWd5IGZvciBkaXNwbGF5aW5nIGNlbGwgdmFsdWVzXG4gICAqL1xuICByZWFkb25seSBmb3JtYXR0ZXI/OiBDZWxsRm9ybWF0dGVyPFQ+O1xuXG4gIC8qKlxuICAgKiBWYWxpZGF0b3Igc3RyYXRlZ3kgZm9yIHZhbGlkYXRpbmcgY2VsbCB2YWx1ZXNcbiAgICovXG4gIHJlYWRvbmx5IHZhbGlkYXRvcj86IENlbGxWYWxpZGF0b3I8VD47XG5cbiAgLyoqXG4gICAqIEVkaXRvciBzdHJhdGVneSBmb3IgaW5saW5lIGVkaXRpbmdcbiAgICovXG4gIHJlYWRvbmx5IGVkaXRvcj86IENlbGxFZGl0b3I8VD47XG5cbiAgLyoqXG4gICAqIFBhcnNlciBzdHJhdGVneSBmb3IgY29udmVydGluZyB1c2VyIGlucHV0IHRvIHR5cGVkIHZhbHVlc1xuICAgKi9cbiAgcmVhZG9ubHkgcGFyc2VyPzogQ2VsbFBhcnNlcjxUPjtcblxuICAvKipcbiAgICogV2hldGhlciBjZWxscyBpbiB0aGlzIGNvbHVtbiBhcmUgZWRpdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IGVkaXRhYmxlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRWRpdCBtb2RlIHRyaWdnZXJcbiAgICovXG4gIHJlYWRvbmx5IGVkaXRNb2RlPzogRWRpdE1vZGU7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBjb2x1bW4gaXMgc29ydGFibGVcbiAgICovXG4gIHJlYWRvbmx5IHNvcnRhYmxlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIGNvbHVtbiBpcyBmaWx0ZXJhYmxlXG4gICAqL1xuICByZWFkb25seSBmaWx0ZXJhYmxlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIGNvbHVtbidzIHZpc2liaWxpdHkgY2FuIGJlIHRvZ2dsZWQgYnkgdXNlcnNcbiAgICovXG4gIHJlYWRvbmx5IGhpZGVhYmxlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIGNvbHVtbiBjYW4gYmUgbW92ZWQgbGVmdC9yaWdodCBieSB1c2Vyc1xuICAgKiBOb3RlOiBQaW5uZWQvc3RpY2t5IGNvbHVtbnMgY2Fubm90IGJlIG1vdmVkXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IG1vdmFibGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgY29sdW1uIGNhbiBiZSBwaW5uZWQvdW5waW5uZWQgYnkgdXNlcnNcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgcGlubmFibGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHNob3cgdGhlIGNvbHVtbiBtZW51IGRyb3Bkb3duIGZvciB0aGlzIGNvbHVtblxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVNZW51PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ3VzdG9tIGFjdGlvbnMgZm9yIHRoaXMgY29sdW1uIChzaG93biBpbiBjb2x1bW4gbWVudSBkcm9wZG93bilcbiAgICogU2ltaWxhciB0byByb3cgYWN0aW9ucyBidXQgZm9yIGNvbHVtbi1sZXZlbCBvcGVyYXRpb25zXG4gICAqIEBkZWZhdWx0IFtdXG4gICAqL1xuICByZWFkb25seSBjb2x1bW5BY3Rpb25zPzogQ29sdW1uQWN0aW9uW107XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gaW5jbHVkZSBidWlsdC1pbiBhY3Rpb25zIChzb3J0LCBmaWx0ZXIsIHBpbiwgbW92ZSkgaW4gdGhlIGNvbHVtbiBtZW51XG4gICAqIFNldCB0byBmYWxzZSB0byBzaG93IG9ubHkgY3VzdG9tIGFjdGlvbnNcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgaW5jbHVkZUJ1aWx0SW5BY3Rpb25zPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ3VycmVudCBzb3J0IGRpcmVjdGlvbiBmb3IgdGhpcyBjb2x1bW5cbiAgICogQGRlZmF1bHQgJ25vbmUnXG4gICAqL1xuICBzb3J0RGlyZWN0aW9uPzogU29ydERpcmVjdGlvbjtcblxuICAvKipcbiAgICogV2hldGhlciBzb3J0aW5nIGlzIGN1cnJlbnRseSBhY3RpdmUvZW5hYmxlZCBvbiB0aGlzIGNvbHVtblxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgc29ydEVuYWJsZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBGaWx0ZXIgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBjb2x1bW5cbiAgICogQ29udGFpbnMgb3BlcmF0b3IsIHZhbHVlLCBlbmFibGVkIHN0YXRlLCBhbmQgY3VzdG9tIGRyb3Bkb3duIG9wdGlvbnNcbiAgICovXG4gIGZpbHRlckNvbmZpZz86IHtcbiAgICAvKipcbiAgICAgKiBGaWx0ZXIgb3BlcmF0b3JcbiAgICAgKiBAZGVmYXVsdCAnY29udGFpbnMnXG4gICAgICovXG4gICAgb3BlcmF0b3I/OiBGaWx0ZXJPcGVyYXRvcjtcbiAgICBcbiAgICAvKipcbiAgICAgKiBDdXJyZW50IGZpbHRlciB2YWx1ZVxuICAgICAqL1xuICAgIHZhbHVlPzogYW55O1xuICAgIFxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgZmlsdGVyaW5nIGlzIGN1cnJlbnRseSBhY3RpdmUvZW5hYmxlZCBvbiB0aGlzIGNvbHVtblxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgZW5hYmxlZD86IGJvb2xlYW47XG4gICAgXG4gICAgLyoqXG4gICAgICogQ3VzdG9tIGZpbHRlciBvcHRpb25zIGZvciBkcm9wZG93bi1iYXNlZCBmaWx0ZXJpbmdcbiAgICAgKiBCb3RoIGRhdGEgYW5kIGhhbmRsZXIgbXVzdCBiZSBwcm92aWRlZCB0b2dldGhlciwgb3RoZXJ3aXNlIGZhbGxzIGJhY2sgdG8gdGV4dCBpbnB1dFxuICAgICAqL1xuICAgIG9wdGlvbnM/OiBGaWx0ZXJPcHRpb25zO1xuICB9O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgY29sdW1uIGlzIHJlc2l6YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVzaXphYmxlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ29sdW1uIHdpZHRoIChweCwgJSwgb3IgJ2F1dG8nKVxuICAgKi9cbiAgcmVhZG9ubHkgd2lkdGg/OiBudW1iZXIgfCBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE1pbmltdW0gY29sdW1uIHdpZHRoIChweClcbiAgICovXG4gIHJlYWRvbmx5IG1pbldpZHRoPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBNYXhpbXVtIGNvbHVtbiB3aWR0aCAocHgpXG4gICAqL1xuICByZWFkb25seSBtYXhXaWR0aD86IG51bWJlcjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIGNvbHVtbiBpcyBzdGlja3kgKGxlZnQgb3IgcmlnaHQpXG4gICAqL1xuICByZWFkb25seSBzdGlja3k/OiAnbGVmdCcgfCAncmlnaHQnIHwgZmFsc2U7XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZWQgb2Zmc2V0IGZvciBzdGlja3kgcG9zaXRpb25pbmcgKHB4KVxuICAgKiBBdXRvLWNhbGN1bGF0ZWQgYnkgdGFibGUgY29tcG9uZW50IGJhc2VkIG9uIGNvbHVtbiBvcmRlclxuICAgKi9cbiAgc3RpY2t5T2Zmc2V0PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHNob3cgc2hhZG93IGluZGljYXRvciBvbiBzdGlja3kgY29sdW1uc1xuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBzaG93U3RpY2t5U2hhZG93PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ2VsbCBjb250ZW50IGFsaWdubWVudFxuICAgKi9cbiAgcmVhZG9ubHkgYWxpZ25tZW50PzogQ2VsbEFsaWdubWVudDtcblxuICAvKipcbiAgICogQ2VsbCB2ZXJ0aWNhbCBhbGlnbm1lbnRcbiAgICovXG4gIHJlYWRvbmx5IHZlcnRpY2FsQWxpZ25tZW50PzogQ2VsbFZlcnRpY2FsQWxpZ25tZW50O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHRydW5jYXRlIG92ZXJmbG93aW5nIHRleHRcbiAgICovXG4gIHJlYWRvbmx5IHRydW5jYXRlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVG9vbHRpcCBjb25maWd1cmF0aW9uXG4gICAqL1xuICByZWFkb25seSB0b29sdGlwPzogc3RyaW5nIHwgKCh2YWx1ZTogVCwgcm93RGF0YTogYW55KSA9PiBzdHJpbmcpO1xuXG4gIC8qKlxuICAgKiBDU1MgY2xhc3MgbmFtZShzKSBmb3IgY2VsbHMgaW4gdGhpcyBjb2x1bW5cbiAgICovXG4gIHJlYWRvbmx5IGNsYXNzTmFtZT86IHN0cmluZyB8IHN0cmluZ1tdIHwgKCh2YWx1ZTogVCwgcm93RGF0YTogYW55KSA9PiBzdHJpbmcgfCBzdHJpbmdbXSk7XG5cbiAgLyoqXG4gICAqIElubGluZSBzdHlsZXMgZm9yIGNlbGxzIGluIHRoaXMgY29sdW1uXG4gICAqL1xuICByZWFkb25seSBzdHlsZT86IFJlY29yZDxzdHJpbmcsIGFueT4gfCAoKHZhbHVlOiBULCByb3dEYXRhOiBhbnkpID0+IFJlY29yZDxzdHJpbmcsIGFueT4pO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gY2VsbCB0ZW1wbGF0ZSAoQW5ndWxhciBUZW1wbGF0ZVJlZilcbiAgICovXG4gIHJlYWRvbmx5IGNlbGxUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBoZWFkZXIgdGVtcGxhdGVcbiAgICovXG4gIHJlYWRvbmx5IGhlYWRlclRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PjtcblxuICAvKipcbiAgICogV2hldGhlciBjb2x1bW4gaXMgdmlzaWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgdmlzaWJsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgY29sdW1uIGlzIHBpbm5lZCAobGVmdCwgcmlnaHQsIG9yIG5vbmUpXG4gICAqL1xuICByZWFkb25seSBwaW5uZWQ/OiAnbGVmdCcgfCAncmlnaHQnIHwgZmFsc2U7XG5cbiAgLyoqXG4gICAqIFNvcnQgb3JkZXIgcHJpb3JpdHkgKGZvciBtdWx0aS1jb2x1bW4gc29ydClcbiAgICovXG4gIHJlYWRvbmx5IHNvcnRQcmlvcml0eT86IG51bWJlcjtcblxuICAvKipcbiAgICogQ3VzdG9tIGNvbXBhcmF0b3IgZm9yIHNvcnRpbmdcbiAgICovXG4gIHJlYWRvbmx5IGNvbXBhcmF0b3I/OiAoYTogVCwgYjogVCkgPT4gbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBGdW5jdGlvbiB0byBleHRyYWN0IHZhbHVlIGZyb20gcm93IGRhdGEgKGZvciBuZXN0ZWQgcHJvcGVydGllcylcbiAgICovXG4gIHJlYWRvbmx5IHZhbHVlR2V0dGVyPzogKHJvd0RhdGE6IGFueSkgPT4gVDtcblxuICAvKipcbiAgICogRnVuY3Rpb24gdG8gc2V0IHZhbHVlIGluIHJvdyBkYXRhIChmb3IgbmVzdGVkIHByb3BlcnRpZXMpXG4gICAqL1xuICByZWFkb25seSB2YWx1ZVNldHRlcj86IChyb3dEYXRhOiBhbnksIHZhbHVlOiBUKSA9PiB2b2lkO1xuXG4gIC8qKlxuICAgKiBMaWZlY3ljbGUgaG9va3MgZm9yIGNlbGxzIGluIHRoaXMgY29sdW1uXG4gICAqL1xuICByZWFkb25seSBob29rcz86IENlbGxMaWZlY3ljbGVIb29rczxUPjtcblxuICAvKipcbiAgICogV2hldGhlciBjZWxscyBzaG91bGQgc2hvdyBsb2FkaW5nIGluZGljYXRvciBkdXJpbmcgYXN5bmMgb3BlcmF0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgc2hvd0xvYWRpbmdJbmRpY2F0b3I/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gbWV0YWRhdGEgZm9yIGNvbHVtblxuICAgKi9cbiAgcmVhZG9ubHkgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuXG4gIC8qKlxuICAgKiBGYWN0b3J5IG1ldGhvZCB0byBjcmVhdGUgYSBjZWxsIGluc3RhbmNlIGZvciB0aGlzIGNvbHVtbiAoRmFjdG9yeSBQYXR0ZXJuKVxuICAgKiBAcGFyYW0gcm93RGF0YSBUaGUgcm93IGRhdGEgb2JqZWN0XG4gICAqIEBwYXJhbSByb3dJbmRleCBPcHRpb25hbCByb3cgaW5kZXhcbiAgICogQHJldHVybnMgQSBuZXcgQ2VsbCBpbnN0YW5jZVxuICAgKi9cbiAgY3JlYXRlQ2VsbChyb3dEYXRhOiBhbnksIHJvd0luZGV4PzogbnVtYmVyKTogQ2VsbDxUPjtcbn1cblxuLyoqXG4gKiBQYXJ0aWFsIGNvbHVtbiBjb25maWcgZm9yIGV4dGVuZGluZyBleGlzdGluZyBjb25maWdzXG4gKi9cbmV4cG9ydCB0eXBlIFBhcnRpYWxDb2x1bW5Db25maWc8VCA9IGFueT4gPSBQYXJ0aWFsPENvbHVtbkNvbmZpZzxUPj47XG5cbi8qKlxuICogQ29sdW1uIGNvbmZpZyBidWlsZGVyIG9wdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb2x1bW5Db25maWdPcHRpb25zPFQgPSBhbnk+IGV4dGVuZHMgT21pdDxDb2x1bW5Db25maWc8VD4sICdrZXknIHwgJ2NyZWF0ZUNlbGwnPiB7XG4gIC8vIEFsbCBwcm9wZXJ0aWVzIGZyb20gQ29sdW1uQ29uZmlnIGV4Y2VwdCBrZXkgYW5kIGNyZWF0ZUNlbGxcbn1cblxuLyoqXG4gKiBIZWxwZXIgdHlwZSBmb3IgY29sdW1uIGNvbmZpZyB3aXRoIHJlcXVpcmVkIGtleVxuICovXG5leHBvcnQgdHlwZSBDb2x1bW5Db25maWdXaXRoS2V5PFQgPSBhbnk+ID0gUmVxdWlyZWQ8UGljazxDb2x1bW5Db25maWc8VD4sICdrZXknPj4gJiBQYXJ0aWFsPE9taXQ8Q29sdW1uQ29uZmlnPFQ+LCAna2V5Jz4+O1xuXG4vKipcbiAqIERlZmF1bHQgY29sdW1uIGNvbmZpZ3VyYXRpb24gdmFsdWVzXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0NPTFVNTl9DT05GSUc6IFBhcnRpYWw8Q29sdW1uQ29uZmlnPGFueT4+ID0ge1xuICBlZGl0YWJsZTogdHJ1ZSxcbiAgZWRpdE1vZGU6IEVkaXRNb2RlLkNMSUNLLFxuICBzb3J0YWJsZTogdHJ1ZSxcbiAgZmlsdGVyYWJsZTogdHJ1ZSxcbiAgcmVzaXphYmxlOiB0cnVlLFxuICBoaWRlYWJsZTogdHJ1ZSxcbiAgbW92YWJsZTogdHJ1ZSxcbiAgcGlubmFibGU6IHRydWUsXG4gIGVuYWJsZU1lbnU6IHRydWUsXG4gIGNvbHVtbkFjdGlvbnM6IFtdLFxuICBpbmNsdWRlQnVpbHRJbkFjdGlvbnM6IHRydWUsXG4gIG1pbldpZHRoOiA1MCxcbiAgbWF4V2lkdGg6IDEwMDAsXG4gIHZpc2libGU6IHRydWUsXG4gIGFsaWdubWVudDogQ2VsbEFsaWdubWVudC5MRUZULFxuICB2ZXJ0aWNhbEFsaWdubWVudDogQ2VsbFZlcnRpY2FsQWxpZ25tZW50Lk1JRERMRSxcbiAgdHJ1bmNhdGU6IGZhbHNlLFxuICBwaW5uZWQ6IGZhbHNlLFxuICBzdGlja3k6IGZhbHNlLFxuICBzaG93U3RpY2t5U2hhZG93OiB0cnVlLFxuICBzaG93TG9hZGluZ0luZGljYXRvcjogdHJ1ZSxcbiAgc29ydERpcmVjdGlvbjogU29ydERpcmVjdGlvbi5OT05FLFxuICBzb3J0RW5hYmxlZDogZmFsc2UsXG4gIGVkaXRvcjogbmV3IFRleHRFZGl0b3IoKSwgLy8gQWRkIGRlZmF1bHQgZWRpdG9yIHRvIHByZXZlbnQgcnVudGltZSBlcnJvcnNcbiAgZm9ybWF0dGVyOiBuZXcgRGVmYXVsdEZvcm1hdHRlcigpLCAvLyBBZGQgZGVmYXVsdCBmb3JtYXR0ZXIgdG8gcHJldmVudCBydW50aW1lIGVycm9yc1xuICBmaWx0ZXJDb25maWc6IHtcbiAgICBvcGVyYXRvcjogRmlsdGVyT3BlcmF0b3IuQ09OVEFJTlMsXG4gICAgZW5hYmxlZDogZmFsc2VcbiAgfVxufTtcblxuXG5cbiJdfQ==
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLWNvbmZpZy5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC10YWJsZS9zcmMvbGliL21vZGVscy9jb2x1bW4tY29uZmlnLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFHSCxPQUFPLEVBQUUsYUFBYSxFQUFFLHFCQUFxQixFQUFFLFFBQVEsRUFBZ0IsTUFBTSxjQUFjLENBQUM7QUFDNUYsT0FBTyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUcvRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUE0VDNEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQStCO0lBQy9ELFFBQVEsRUFBRSxJQUFJO0lBQ2QsUUFBUSxFQUFFLFFBQVEsQ0FBQyxLQUFLO0lBQ3hCLFFBQVEsRUFBRSxJQUFJO0lBQ2QsVUFBVSxFQUFFLElBQUk7SUFDaEIsU0FBUyxFQUFFLElBQUk7SUFDZixRQUFRLEVBQUUsSUFBSTtJQUNkLE9BQU8sRUFBRSxJQUFJO0lBQ2IsUUFBUSxFQUFFLElBQUk7SUFDZCxVQUFVLEVBQUUsSUFBSTtJQUNoQixhQUFhLEVBQUUsRUFBRTtJQUNqQixxQkFBcUIsRUFBRSxJQUFJO0lBQzNCLFFBQVEsRUFBRSxFQUFFO0lBQ1osUUFBUSxFQUFFLElBQUk7SUFDZCxPQUFPLEVBQUUsSUFBSTtJQUNiLFNBQVMsRUFBRSxhQUFhLENBQUMsSUFBSTtJQUM3QixpQkFBaUIsRUFBRSxxQkFBcUIsQ0FBQyxNQUFNO0lBQy9DLFFBQVEsRUFBRSxLQUFLO0lBQ2YsTUFBTSxFQUFFLEtBQUs7SUFDYixNQUFNLEVBQUUsS0FBSztJQUNiLGdCQUFnQixFQUFFLElBQUk7SUFDdEIsb0JBQW9CLEVBQUUsSUFBSTtJQUMxQixhQUFhLEVBQUUsYUFBYSxDQUFDLElBQUk7SUFDakMsV0FBVyxFQUFFLEtBQUs7SUFDbEIsTUFBTSxFQUFFLElBQUksVUFBVSxFQUFFO0lBQ3hCLFNBQVMsRUFBRSxJQUFJLGdCQUFnQixFQUFFO0lBQ2pDLFlBQVksRUFBRTtRQUNaLFFBQVEsRUFBRSxjQUFjLENBQUMsUUFBUTtRQUNqQyxPQUFPLEVBQUUsS0FBSztLQUNmO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29sdW1uIGNvbmZpZ3VyYXRpb24gaW50ZXJmYWNlIC0gRmx5d2VpZ2h0IHBhdHRlcm5cbiAqIFRoaXMgY29uZmlndXJhdGlvbiBpcyBzaGFyZWQgYWNyb3NzIGFsbCBjZWxscyBpbiBhIGNvbHVtblxuICovXG5cbmltcG9ydCB7IENlbGxGb3JtYXR0ZXIsIENlbGxWYWxpZGF0b3IsIENlbGxFZGl0b3IsIENlbGxQYXJzZXIsIENlbGxMaWZlY3ljbGVIb29rcyB9IGZyb20gJy4vY2VsbC1zdHJhdGVnaWVzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDZWxsQWxpZ25tZW50LCBDZWxsVmVydGljYWxBbGlnbm1lbnQsIEVkaXRNb2RlLCBDZWxsRGF0YVR5cGUgfSBmcm9tICcuL2NlbGwtdHlwZXMnO1xuaW1wb3J0IHsgU29ydERpcmVjdGlvbiwgRmlsdGVyT3BlcmF0b3IgfSBmcm9tICcuLi9yZW5kZXJlci9tb2RlbHMvdGFibGUtdHlwZXMnO1xuaW1wb3J0IHsgQ2VsbCB9IGZyb20gJy4uL3JlbmRlcmVyL21vZGVscy9jZWxsLmNsYXNzJztcbmltcG9ydCB7IFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEZWZhdWx0Rm9ybWF0dGVyIH0gZnJvbSAnLi4vc3RyYXRlZ2llcy9kZWZhdWx0LWZvcm1hdHRlcnMnO1xuaW1wb3J0IHsgVGV4dEVkaXRvciB9IGZyb20gJy4uL3N0cmF0ZWdpZXMvZGVmYXVsdC1lZGl0b3JzJztcbmltcG9ydCB7IENvbHVtbkFjdGlvbiB9IGZyb20gJy4vY29sdW1uLWFjdGlvbi5pbnRlcmZhY2UnO1xuXG5cbi8qKlxuICogRmlsdGVyIG9wdGlvbnMgY29uZmlndXJhdGlvbiBmb3IgY3VzdG9tIGRyb3Bkb3duIGZpbHRlcnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIEFycmF5IG9mIGRhdGEgaXRlbXMgdG8gZGlzcGxheSBpbiB0aGUgZHJvcGRvd25cbiAgICovXG4gIGRhdGE6IGFueVtdO1xuICBcbiAgLyoqXG4gICAqIEhhbmRsZXIgZnVuY3Rpb24gdG8gdHJhbnNmb3JtIGRhdGEgaXRlbXMgaW50byB7bGFiZWwsIHZhbHVlfSBwYWlyc1xuICAgKiBAcGFyYW0gaXRlbSBUaGUgZGF0YSBpdGVtIHRvIHRyYW5zZm9ybVxuICAgKiBAcmV0dXJucyBPYmplY3Qgd2l0aCBsYWJlbCAoZGlzcGxheWVkIHRleHQpIGFuZCB2YWx1ZSAoc3RvcmVkIHZhbHVlKVxuICAgKi9cbiAgaGFuZGxlcjogKGl0ZW06IGFueSkgPT4geyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogYW55IH07XG4gIFxuICAvKipcbiAgICogV2hldGhlciB0byBhbGxvdyBtdWx0aXBsZSBzZWxlY3Rpb25zXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBtdWx0aXNlbGVjdD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ29sdW1uIGNvbmZpZ3VyYXRpb24gLSBzaGFyZWQgaW1tdXRhYmxlIGNvbmZpZyBmb3IgYWxsIGNlbGxzIGluIGEgY29sdW1uIChGbHl3ZWlnaHQpXG4gKiBDb250YWlucyBiZWhhdmlvciwgbWV0YWRhdGEsIGFuZCBzdHJhdGVnaWVzIGJ1dCBOTyBzdGF0ZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbHVtbkNvbmZpZzxUID0gYW55PiB7XG4gIC8qKlxuICAgKiBVbmlxdWUga2V5IGZvciB0aGUgY29sdW1uIChtYXBzIHRvIHJvdyBkYXRhIHByb3BlcnR5KVxuICAgKi9cbiAgcmVhZG9ubHkga2V5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERpc3BsYXkgaGVhZGVyIHRleHQgZm9yIHRoZSBjb2x1bW5cbiAgICovXG4gIHJlYWRvbmx5IGhlYWRlcj86IHN0cmluZztcblxuICAvKipcbiAgICogRGF0YSB0eXBlIG9mIHRoZSBjb2x1bW4gdmFsdWVzXG4gICAqL1xuICByZWFkb25seSBkYXRhVHlwZT86IENlbGxEYXRhVHlwZTtcblxuICAvKipcbiAgICogRm9ybWF0dGVyIHN0cmF0ZWd5IGZvciBkaXNwbGF5aW5nIGNlbGwgdmFsdWVzLlxuICAgKiBDYW4gYmUgYSBDZWxsRm9ybWF0dGVyIGluc3RhbmNlIG9yIGEgcHJlZGVmaW5lZCBmb3JtYXR0ZXIgbmFtZSBzdHJpbmdcbiAgICogKGUuZy4gJ291Rm9ybWF0dGVyJykuIFVzZSByZWdpc3RlckZvcm1hdHRlcigpIHRvIGFkZCBjdXN0b20gbmFtZWQgZm9ybWF0dGVycy5cbiAgICovXG4gIHJlYWRvbmx5IGZvcm1hdHRlcj86IENlbGxGb3JtYXR0ZXI8VD4gfCBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRvciBzdHJhdGVneSBmb3IgdmFsaWRhdGluZyBjZWxsIHZhbHVlc1xuICAgKi9cbiAgcmVhZG9ubHkgdmFsaWRhdG9yPzogQ2VsbFZhbGlkYXRvcjxUPjtcblxuICAvKipcbiAgICogRWRpdG9yIHN0cmF0ZWd5IGZvciBpbmxpbmUgZWRpdGluZ1xuICAgKi9cbiAgcmVhZG9ubHkgZWRpdG9yPzogQ2VsbEVkaXRvcjxUPjtcblxuICAvKipcbiAgICogUGFyc2VyIHN0cmF0ZWd5IGZvciBjb252ZXJ0aW5nIHVzZXIgaW5wdXQgdG8gdHlwZWQgdmFsdWVzXG4gICAqL1xuICByZWFkb25seSBwYXJzZXI/OiBDZWxsUGFyc2VyPFQ+O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGNlbGxzIGluIHRoaXMgY29sdW1uIGFyZSBlZGl0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgZWRpdGFibGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBFZGl0IG1vZGUgdHJpZ2dlclxuICAgKi9cbiAgcmVhZG9ubHkgZWRpdE1vZGU/OiBFZGl0TW9kZTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIGNvbHVtbiBpcyBzb3J0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgc29ydGFibGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgY29sdW1uIGlzIGZpbHRlcmFibGVcbiAgICovXG4gIHJlYWRvbmx5IGZpbHRlcmFibGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgY29sdW1uJ3MgdmlzaWJpbGl0eSBjYW4gYmUgdG9nZ2xlZCBieSB1c2Vyc1xuICAgKi9cbiAgcmVhZG9ubHkgaGlkZWFibGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgY29sdW1uIGNhbiBiZSBtb3ZlZCBsZWZ0L3JpZ2h0IGJ5IHVzZXJzXG4gICAqIE5vdGU6IFBpbm5lZC9zdGlja3kgY29sdW1ucyBjYW5ub3QgYmUgbW92ZWRcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgbW92YWJsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBjb2x1bW4gY2FuIGJlIHBpbm5lZC91bnBpbm5lZCBieSB1c2Vyc1xuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBwaW5uYWJsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc2hvdyB0aGUgY29sdW1uIG1lbnUgZHJvcGRvd24gZm9yIHRoaXMgY29sdW1uXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZU1lbnU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gYWN0aW9ucyBmb3IgdGhpcyBjb2x1bW4gKHNob3duIGluIGNvbHVtbiBtZW51IGRyb3Bkb3duKVxuICAgKiBTaW1pbGFyIHRvIHJvdyBhY3Rpb25zIGJ1dCBmb3IgY29sdW1uLWxldmVsIG9wZXJhdGlvbnNcbiAgICogQGRlZmF1bHQgW11cbiAgICovXG4gIHJlYWRvbmx5IGNvbHVtbkFjdGlvbnM/OiBDb2x1bW5BY3Rpb25bXTtcblxuICAvKipcbiAgICogV2hldGhlciB0byBpbmNsdWRlIGJ1aWx0LWluIGFjdGlvbnMgKHNvcnQsIGZpbHRlciwgcGluLCBtb3ZlKSBpbiB0aGUgY29sdW1uIG1lbnVcbiAgICogU2V0IHRvIGZhbHNlIHRvIHNob3cgb25seSBjdXN0b20gYWN0aW9uc1xuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBpbmNsdWRlQnVpbHRJbkFjdGlvbnM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDdXJyZW50IHNvcnQgZGlyZWN0aW9uIGZvciB0aGlzIGNvbHVtblxuICAgKiBAZGVmYXVsdCAnbm9uZSdcbiAgICovXG4gIHNvcnREaXJlY3Rpb24/OiBTb3J0RGlyZWN0aW9uO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHNvcnRpbmcgaXMgY3VycmVudGx5IGFjdGl2ZS9lbmFibGVkIG9uIHRoaXMgY29sdW1uXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBzb3J0RW5hYmxlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEZpbHRlciBjb25maWd1cmF0aW9uIGZvciB0aGlzIGNvbHVtblxuICAgKiBDb250YWlucyBvcGVyYXRvciwgdmFsdWUsIGVuYWJsZWQgc3RhdGUsIGFuZCBjdXN0b20gZHJvcGRvd24gb3B0aW9uc1xuICAgKi9cbiAgZmlsdGVyQ29uZmlnPzoge1xuICAgIC8qKlxuICAgICAqIEZpbHRlciBvcGVyYXRvclxuICAgICAqIEBkZWZhdWx0ICdjb250YWlucydcbiAgICAgKi9cbiAgICBvcGVyYXRvcj86IEZpbHRlck9wZXJhdG9yO1xuICAgIFxuICAgIC8qKlxuICAgICAqIEN1cnJlbnQgZmlsdGVyIHZhbHVlXG4gICAgICovXG4gICAgdmFsdWU/OiBhbnk7XG4gICAgXG4gICAgLyoqXG4gICAgICogV2hldGhlciBmaWx0ZXJpbmcgaXMgY3VycmVudGx5IGFjdGl2ZS9lbmFibGVkIG9uIHRoaXMgY29sdW1uXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBlbmFibGVkPzogYm9vbGVhbjtcbiAgICBcbiAgICAvKipcbiAgICAgKiBDdXN0b20gZmlsdGVyIG9wdGlvbnMgZm9yIGRyb3Bkb3duLWJhc2VkIGZpbHRlcmluZ1xuICAgICAqIEJvdGggZGF0YSBhbmQgaGFuZGxlciBtdXN0IGJlIHByb3ZpZGVkIHRvZ2V0aGVyLCBvdGhlcndpc2UgZmFsbHMgYmFjayB0byB0ZXh0IGlucHV0XG4gICAgICovXG4gICAgb3B0aW9ucz86IEZpbHRlck9wdGlvbnM7XG4gIH07XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBjb2x1bW4gaXMgcmVzaXphYmxlXG4gICAqL1xuICByZWFkb25seSByZXNpemFibGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDb2x1bW4gd2lkdGggKHB4LCAlLCBvciAnYXV0bycpXG4gICAqL1xuICByZWFkb25seSB3aWR0aD86IG51bWJlciB8IHN0cmluZztcblxuICAvKipcbiAgICogTWluaW11bSBjb2x1bW4gd2lkdGggKHB4KVxuICAgKi9cbiAgcmVhZG9ubHkgbWluV2lkdGg/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE1heGltdW0gY29sdW1uIHdpZHRoIChweClcbiAgICovXG4gIHJlYWRvbmx5IG1heFdpZHRoPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgY29sdW1uIGlzIHN0aWNreSAobGVmdCBvciByaWdodClcbiAgICovXG4gIHJlYWRvbmx5IHN0aWNreT86ICdsZWZ0JyB8ICdyaWdodCcgfCBmYWxzZTtcblxuICAvKipcbiAgICogQ2FsY3VsYXRlZCBvZmZzZXQgZm9yIHN0aWNreSBwb3NpdGlvbmluZyAocHgpXG4gICAqIEF1dG8tY2FsY3VsYXRlZCBieSB0YWJsZSBjb21wb25lbnQgYmFzZWQgb24gY29sdW1uIG9yZGVyXG4gICAqL1xuICBzdGlja3lPZmZzZXQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc2hvdyBzaGFkb3cgaW5kaWNhdG9yIG9uIHN0aWNreSBjb2x1bW5zXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHNob3dTdGlja3lTaGFkb3c/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDZWxsIGNvbnRlbnQgYWxpZ25tZW50XG4gICAqL1xuICByZWFkb25seSBhbGlnbm1lbnQ/OiBDZWxsQWxpZ25tZW50O1xuXG4gIC8qKlxuICAgKiBDZWxsIHZlcnRpY2FsIGFsaWdubWVudFxuICAgKi9cbiAgcmVhZG9ubHkgdmVydGljYWxBbGlnbm1lbnQ/OiBDZWxsVmVydGljYWxBbGlnbm1lbnQ7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gdHJ1bmNhdGUgb3ZlcmZsb3dpbmcgdGV4dFxuICAgKi9cbiAgcmVhZG9ubHkgdHJ1bmNhdGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUb29sdGlwIGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IHRvb2x0aXA/OiBzdHJpbmcgfCAoKHZhbHVlOiBULCByb3dEYXRhOiBhbnkpID0+IHN0cmluZyk7XG5cbiAgLyoqXG4gICAqIENTUyBjbGFzcyBuYW1lKHMpIGZvciBjZWxscyBpbiB0aGlzIGNvbHVtblxuICAgKi9cbiAgcmVhZG9ubHkgY2xhc3NOYW1lPzogc3RyaW5nIHwgc3RyaW5nW10gfCAoKHZhbHVlOiBULCByb3dEYXRhOiBhbnkpID0+IHN0cmluZyB8IHN0cmluZ1tdKTtcblxuICAvKipcbiAgICogSW5saW5lIHN0eWxlcyBmb3IgY2VsbHMgaW4gdGhpcyBjb2x1bW5cbiAgICovXG4gIHJlYWRvbmx5IHN0eWxlPzogUmVjb3JkPHN0cmluZywgYW55PiB8ICgodmFsdWU6IFQsIHJvd0RhdGE6IGFueSkgPT4gUmVjb3JkPHN0cmluZywgYW55Pik7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBjZWxsIHRlbXBsYXRlIChBbmd1bGFyIFRlbXBsYXRlUmVmKVxuICAgKi9cbiAgcmVhZG9ubHkgY2VsbFRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PjtcblxuICAvKipcbiAgICogQ3VzdG9tIGhlYWRlciB0ZW1wbGF0ZVxuICAgKi9cbiAgcmVhZG9ubHkgaGVhZGVyVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGNvbHVtbiBpcyB2aXNpYmxlXG4gICAqL1xuICByZWFkb25seSB2aXNpYmxlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciBjb2x1bW4gaXMgcGlubmVkIChsZWZ0LCByaWdodCwgb3Igbm9uZSlcbiAgICovXG4gIHJlYWRvbmx5IHBpbm5lZD86ICdsZWZ0JyB8ICdyaWdodCcgfCBmYWxzZTtcblxuICAvKipcbiAgICogU29ydCBvcmRlciBwcmlvcml0eSAoZm9yIG11bHRpLWNvbHVtbiBzb3J0KVxuICAgKi9cbiAgcmVhZG9ubHkgc29ydFByaW9yaXR5PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gY29tcGFyYXRvciBmb3Igc29ydGluZ1xuICAgKi9cbiAgcmVhZG9ubHkgY29tcGFyYXRvcj86IChhOiBULCBiOiBUKSA9PiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEZ1bmN0aW9uIHRvIGV4dHJhY3QgdmFsdWUgZnJvbSByb3cgZGF0YSAoZm9yIG5lc3RlZCBwcm9wZXJ0aWVzKVxuICAgKi9cbiAgcmVhZG9ubHkgdmFsdWVHZXR0ZXI/OiAocm93RGF0YTogYW55KSA9PiBUO1xuXG4gIC8qKlxuICAgKiBGdW5jdGlvbiB0byBzZXQgdmFsdWUgaW4gcm93IGRhdGEgKGZvciBuZXN0ZWQgcHJvcGVydGllcylcbiAgICovXG4gIHJlYWRvbmx5IHZhbHVlU2V0dGVyPzogKHJvd0RhdGE6IGFueSwgdmFsdWU6IFQpID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIExpZmVjeWNsZSBob29rcyBmb3IgY2VsbHMgaW4gdGhpcyBjb2x1bW5cbiAgICovXG4gIHJlYWRvbmx5IGhvb2tzPzogQ2VsbExpZmVjeWNsZUhvb2tzPFQ+O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGNlbGxzIHNob3VsZCBzaG93IGxvYWRpbmcgaW5kaWNhdG9yIGR1cmluZyBhc3luYyBvcGVyYXRpb25zXG4gICAqL1xuICByZWFkb25seSBzaG93TG9hZGluZ0luZGljYXRvcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBtZXRhZGF0YSBmb3IgY29sdW1uXG4gICAqL1xuICByZWFkb25seSBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIGFueT47XG5cbiAgLyoqXG4gICAqIEZhY3RvcnkgbWV0aG9kIHRvIGNyZWF0ZSBhIGNlbGwgaW5zdGFuY2UgZm9yIHRoaXMgY29sdW1uIChGYWN0b3J5IFBhdHRlcm4pXG4gICAqIEBwYXJhbSByb3dEYXRhIFRoZSByb3cgZGF0YSBvYmplY3RcbiAgICogQHBhcmFtIHJvd0luZGV4IE9wdGlvbmFsIHJvdyBpbmRleFxuICAgKiBAcmV0dXJucyBBIG5ldyBDZWxsIGluc3RhbmNlXG4gICAqL1xuICBjcmVhdGVDZWxsKHJvd0RhdGE6IGFueSwgcm93SW5kZXg/OiBudW1iZXIpOiBDZWxsPFQ+O1xufVxuXG4vKipcbiAqIFBhcnRpYWwgY29sdW1uIGNvbmZpZyBmb3IgZXh0ZW5kaW5nIGV4aXN0aW5nIGNvbmZpZ3NcbiAqL1xuZXhwb3J0IHR5cGUgUGFydGlhbENvbHVtbkNvbmZpZzxUID0gYW55PiA9IFBhcnRpYWw8Q29sdW1uQ29uZmlnPFQ+PjtcblxuLyoqXG4gKiBDb2x1bW4gY29uZmlnIGJ1aWxkZXIgb3B0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbHVtbkNvbmZpZ09wdGlvbnM8VCA9IGFueT4gZXh0ZW5kcyBPbWl0PENvbHVtbkNvbmZpZzxUPiwgJ2tleScgfCAnY3JlYXRlQ2VsbCc+IHtcbiAgLy8gQWxsIHByb3BlcnRpZXMgZnJvbSBDb2x1bW5Db25maWcgZXhjZXB0IGtleSBhbmQgY3JlYXRlQ2VsbFxufVxuXG4vKipcbiAqIEhlbHBlciB0eXBlIGZvciBjb2x1bW4gY29uZmlnIHdpdGggcmVxdWlyZWQga2V5XG4gKi9cbmV4cG9ydCB0eXBlIENvbHVtbkNvbmZpZ1dpdGhLZXk8VCA9IGFueT4gPSBSZXF1aXJlZDxQaWNrPENvbHVtbkNvbmZpZzxUPiwgJ2tleSc+PiAmIFBhcnRpYWw8T21pdDxDb2x1bW5Db25maWc8VD4sICdrZXknPj47XG5cbi8qKlxuICogRGVmYXVsdCBjb2x1bW4gY29uZmlndXJhdGlvbiB2YWx1ZXNcbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfQ09MVU1OX0NPTkZJRzogUGFydGlhbDxDb2x1bW5Db25maWc8YW55Pj4gPSB7XG4gIGVkaXRhYmxlOiB0cnVlLFxuICBlZGl0TW9kZTogRWRpdE1vZGUuQ0xJQ0ssXG4gIHNvcnRhYmxlOiB0cnVlLFxuICBmaWx0ZXJhYmxlOiB0cnVlLFxuICByZXNpemFibGU6IHRydWUsXG4gIGhpZGVhYmxlOiB0cnVlLFxuICBtb3ZhYmxlOiB0cnVlLFxuICBwaW5uYWJsZTogdHJ1ZSxcbiAgZW5hYmxlTWVudTogdHJ1ZSxcbiAgY29sdW1uQWN0aW9uczogW10sXG4gIGluY2x1ZGVCdWlsdEluQWN0aW9uczogdHJ1ZSxcbiAgbWluV2lkdGg6IDUwLFxuICBtYXhXaWR0aDogMTAwMCxcbiAgdmlzaWJsZTogdHJ1ZSxcbiAgYWxpZ25tZW50OiBDZWxsQWxpZ25tZW50LkxFRlQsXG4gIHZlcnRpY2FsQWxpZ25tZW50OiBDZWxsVmVydGljYWxBbGlnbm1lbnQuTUlERExFLFxuICB0cnVuY2F0ZTogZmFsc2UsXG4gIHBpbm5lZDogZmFsc2UsXG4gIHN0aWNreTogZmFsc2UsXG4gIHNob3dTdGlja3lTaGFkb3c6IHRydWUsXG4gIHNob3dMb2FkaW5nSW5kaWNhdG9yOiB0cnVlLFxuICBzb3J0RGlyZWN0aW9uOiBTb3J0RGlyZWN0aW9uLk5PTkUsXG4gIHNvcnRFbmFibGVkOiBmYWxzZSxcbiAgZWRpdG9yOiBuZXcgVGV4dEVkaXRvcigpLCAvLyBBZGQgZGVmYXVsdCBlZGl0b3IgdG8gcHJldmVudCBydW50aW1lIGVycm9yc1xuICBmb3JtYXR0ZXI6IG5ldyBEZWZhdWx0Rm9ybWF0dGVyKCksIC8vIEFkZCBkZWZhdWx0IGZvcm1hdHRlciB0byBwcmV2ZW50IHJ1bnRpbWUgZXJyb3JzXG4gIGZpbHRlckNvbmZpZzoge1xuICAgIG9wZXJhdG9yOiBGaWx0ZXJPcGVyYXRvci5DT05UQUlOUyxcbiAgICBlbmFibGVkOiBmYWxzZVxuICB9XG59O1xuXG5cblxuIl19